Class: Ace::LLM::Providers::CLI::AgyClient

Inherits:
Organisms::BaseClient
  • Object
show all
Includes:
CliArgsSupport
Defined in:
lib/ace/llm/providers/cli/agy_client.rb

Overview

Client for interacting with Antigravity CLI

Constant Summary collapse

API_BASE_URL =
"https://antigravity.google"
DEFAULT_GENERATION_CONFIG =
{}.freeze
DEFAULT_MODEL =
"gemini-3.5-flash-medium"
DEFAULT_MAX_PROMPT_LENGTH =
100_000

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model: nil, **options) ⇒ AgyClient

Returns a new instance of AgyClient.



21
22
23
24
25
# File 'lib/ace/llm/providers/cli/agy_client.rb', line 21

def initialize(model: nil, **options)
  @model = model || DEFAULT_MODEL
  @options = options
  @generation_config = options[:generation_config] || {}
end

Class Method Details

.provider_nameObject



27
28
29
# File 'lib/ace/llm/providers/cli/agy_client.rb', line 27

def self.provider_name
  "agy"
end

Instance Method Details

#generate(messages, **options) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ace/llm/providers/cli/agy_client.rb', line 47

def generate(messages, **options)
  validate_agy_availability!
  validate_supported_options!(options)

  prompt = format_messages_as_prompt(prepare_messages(messages, options))
  prompt = build_full_prompt(prompt, options)
  subprocess_env = options[:subprocess_env]
  working_dir = Atoms::ExecutionContext.resolve_working_dir(
    working_dir: options[:working_dir],
    subprocess_env: subprocess_env
  )

  cmd = build_agy_command(prompt, options)
  stdout, stderr, status = execute_agy_command(cmd, working_dir: working_dir, options: options)

  parse_agy_response(stdout, stderr, status, prompt)
rescue => e
  handle_agy_error(e)
end

#list_modelsObject



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ace/llm/providers/cli/agy_client.rb', line 35

def list_models
  [
    {id: "gemini-3.7-flash-high", name: "Gemini 3.7 Flash (High)", context_size: 1_000_000},
    {id: "gemini-3.7-flash-medium", name: "Gemini 3.7 Flash (Medium)", context_size: 1_000_000},
    {id: "gemini-3.6-flash-high", name: "Gemini 3.6 Flash (High)", context_size: 1_000_000},
    {id: "gemini-3.6-flash-medium", name: "Gemini 3.6 Flash (Medium)", context_size: 1_000_000},
    {id: "gemini-3.5-flash-medium", name: "Gemini 3.5 Flash (Medium)", context_size: 1_000_000},
    {id: "gemini-3.1-pro-high", name: "Gemini 3.1 Pro (High)", context_size: 1_000_000},
    {id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (Thinking)", context_size: 200_000}
  ]
end

#needs_credentials?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/ace/llm/providers/cli/agy_client.rb', line 31

def needs_credentials?
  false
end