ace-llm-providers-cli 0.31.2 → 0.31.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ae114fa300c121e8b2d358ae3ef2ad16e3d53bf981b11e2c2be59eb2c5c29d6
4
- data.tar.gz: e3b9479472b714507dfb0bbb82dd10b19b3e403bfcd9fe0a107fd3194975e65a
3
+ metadata.gz: 6be56a7438a2d8daa7a1081c83ab44733245a52f1028fc1016d920548b69255e
4
+ data.tar.gz: be8ba7f7231136ef005f35b672fd546fa6d29ea9495784a6b41e41848754b29d
5
5
  SHA512:
6
- metadata.gz: 68cf79d47bbdf06e62e8e8d79a72ed5a607d249ff57cbf767696f8580066b5188ac1f3920a3bf8f3b998de290067f75d58379670472cd5b57c61d613499e8de6
7
- data.tar.gz: f3d14332bb1d44bdf0fc8906afd6576e7349bf2ea12ac1ebeedc32d535156bce4ff948bd1323e5ee0691b0d88f365d8a4b1ec9a0b8460849867c899a8af8cc4d
6
+ metadata.gz: 5f624dcdabb360ea555dac5ca0b73a9721cd088ae46e9000a6ae8214000450638be83c258283dd574d4846a27fc9f57ae557e85ec8a0d5ac6a64cbb781402c68
7
+ data.tar.gz: 535009d237c56c4d93e3b0740376879d71f449f4d5fe22539890f704c6c39c78fe8c6b78687b69fa16b31cf24659813daeace393c52af14b54840479ed711adf
@@ -1,10 +1,14 @@
1
1
  name: claude
2
+ last_synced: 2026-04-23
2
3
  class: Ace::LLM::Providers::CLI::ClaudeCodeClient
3
4
  gem: ace-llm-providers-cli
5
+ models_dev_id: anthropic
6
+ context_limit: 1000000
4
7
  models:
5
- - claude-opus-4-1
6
- - claude-sonnet-4-0
7
- - claude-3-5-haiku-latest
8
+ - claude-haiku-4-5
9
+ - claude-opus-4-6
10
+ - claude-opus-4-7
11
+ - claude-sonnet-4-6
8
12
  aliases:
9
13
  global:
10
14
  cc: claude:sonnet
@@ -12,9 +16,9 @@ aliases:
12
16
  cc-sonnet: claude:sonnet
13
17
  cc-haiku: claude:haiku
14
18
  model:
15
- opus: claude-opus-4-1
16
- sonnet: claude-sonnet-4-0
17
- haiku: claude-3-5-haiku-latest
19
+ opus: claude-opus-4-6
20
+ sonnet: claude-sonnet-4-6
21
+ haiku: claude-haiku-4-5
18
22
  capabilities:
19
23
  - text_generation
20
24
  - streaming
@@ -0,0 +1,29 @@
1
+ name: claudeoai
2
+ class: Ace::LLM::Providers::CLI::ClaudeOaiClient
3
+ gem: ace-llm-providers-cli
4
+ context_limit: 128000
5
+ backends:
6
+ zai:
7
+ base_url: "https://api.z.ai/api/anthropic"
8
+ env_key: "ZAI_API_KEY"
9
+ model_tiers:
10
+ opus: glm-5
11
+ sonnet: glm-5
12
+ haiku: glm-4.7
13
+ models: [glm-5, glm-4.7, glm-4.6]
14
+ models:
15
+ - zai/glm-5
16
+ - zai/glm-4.7
17
+ - zai/glm-4.6
18
+ aliases:
19
+ global:
20
+ claude-oai: claudeoai:zai/glm-5
21
+ model:
22
+ glm: zai/glm-5
23
+ glm47: zai/glm-4.7
24
+ capabilities:
25
+ - text_generation
26
+ - code_generation
27
+ - multi_provider
28
+ default_options:
29
+ temperature: 0.7
@@ -1,27 +1,26 @@
1
1
  name: codex
2
+ last_synced: 2026-04-23
2
3
  class: Ace::LLM::Providers::CLI::CodexClient
3
4
  gem: ace-llm-providers-cli
5
+ models_dev_id: openai
6
+ context_limit: 1050000
4
7
  models:
8
+ - gpt-5.3-chat-latest
5
9
  - gpt-5.3-codex
6
10
  - gpt-5.3-codex-spark
7
11
  - gpt-5.4
8
12
  - gpt-5.4-mini
13
+ - gpt-5.4-nano
14
+ - gpt-5.4-pro
9
15
  aliases:
10
- global:
11
- codex-gpt5: codex:gpt-5.4
12
- codex-mini: codex:gpt-5.4-mini
13
16
  model:
14
- 5: gpt-5.4
15
17
  gpt: gpt-5.4
16
18
  codex: gpt-5.3-codex
17
19
  spark: gpt-5.3-codex-spark
18
20
  mini: gpt-5.4-mini
19
- m: gpt-5.4-mini
20
21
  capabilities:
21
22
  - text_generation
22
23
  - code_generation
23
24
  - function_calling
24
- - skill_rewriting
25
25
  default_options:
26
26
  temperature: 0.7
27
- skills_dir: .codex/skills
@@ -0,0 +1,26 @@
1
+ name: codexoai
2
+ class: Ace::LLM::Providers::CLI::CodexOaiClient
3
+ gem: ace-llm-providers-cli
4
+ context_limit: 128000
5
+ backends:
6
+ zai:
7
+ name: "Z.ai GLM"
8
+ base_url: "https://api.z.ai/api/coding/paas/v4"
9
+ env_key: "ZAI_API_KEY"
10
+ models: [glm-5, glm-4.7, glm-4.6]
11
+ models:
12
+ - zai/glm-5
13
+ - zai/glm-4.7
14
+ - zai/glm-4.6
15
+ aliases:
16
+ global:
17
+ codex-oai: codexoai:zai/glm-5
18
+ model:
19
+ glm: zai/glm-5
20
+ glm47: zai/glm-4.7
21
+ capabilities:
22
+ - text_generation
23
+ - code_generation
24
+ - multi_provider
25
+ default_options:
26
+ temperature: 0.7
@@ -1,34 +1,29 @@
1
1
  name: gemini
2
+ last_synced: 2026-04-23
2
3
  class: Ace::LLM::Providers::CLI::GeminiClient
3
4
  gem: ace-llm-providers-cli
4
5
  models_dev_id: google
6
+ context_limit: 1000000
5
7
  models:
6
8
  - gemini-2.5-flash
7
9
  - gemini-2.5-pro
8
- - gemini-2.0-flash
9
- - gemini-1.5-pro-latest
10
+ - gemini-3-flash-preview
11
+ - gemini-3-pro-preview
12
+ - gemini-3.1-flash-image-preview
13
+ - gemini-3.1-flash-lite-preview
14
+ - gemini-3.1-pro-preview
15
+ - gemini-3.1-pro-preview-customtools
16
+ - gemma-4-26b-a4b-it
17
+ - gemma-4-31b-it
10
18
  aliases:
11
- global:
12
- gemini-flash: gemini:gemini-2.5-flash
13
- gemini-pro: gemini:gemini-2.5-pro
14
- gflash: gemini:gemini-2.5-flash
15
- gpro: gemini:gemini-2.5-pro
16
19
  model:
17
- 2.5-flash: gemini-2.5-flash
18
- 2.5-pro: gemini-2.5-pro
19
- 2.0-flash: gemini-2.0-flash
20
- 1.5-pro: gemini-1.5-pro-latest
21
20
  flash: gemini-2.5-flash
22
- flash-latest: gemini-2.5-flash
23
- pro: gemini-2.5-pro
24
- pro-latest: gemini-2.5-pro
21
+ pro: gemini-2.5
22
+ flash-latest: gemini-3-flash-preview
23
+ pro-latest: gemini-3.1-pro-preview
25
24
  capabilities:
26
25
  - text_generation
27
26
  - code_generation
28
27
  - vision
29
28
  default_options:
30
29
  temperature: 0.7
31
- # Maximum prompt length before switching to file-based prompts (characters)
32
- # Gemini's actual token limit is ~1M, but this provides a safeguard for CLI usage
33
- max_prompt_length: 100000
34
- system_prompt: "Output only the direct answer to stdout. No conversational filler, no acknowledgments, no explanations. Do not attempt to use tools. Be concise and direct."
@@ -1,21 +1,53 @@
1
1
  name: opencode
2
+ last_synced: 2026-04-23
2
3
  class: Ace::LLM::Providers::CLI::OpenCodeClient
3
4
  gem: ace-llm-providers-cli
5
+ context_limit: 128000
4
6
  models:
5
- - google/gemini-2.5-flash
6
- - google/gemini-2.0-flash-experimental
7
- - google/gemini-1.5-pro
8
- - anthropic/claude-3-5-sonnet
9
- - anthropic/claude-3-5-haiku
10
- - openai/gpt-4o
11
- - openai/gpt-4o-mini
7
+ - big-pickle
8
+ - claude-haiku-4-5
9
+ - claude-opus-4-5
10
+ - claude-opus-4-6
11
+ - claude-opus-4-7
12
+ - claude-sonnet-4-5
13
+ - claude-sonnet-4-6
14
+ - gemini-3-flash
15
+ - gemini-3-pro
16
+ - gemini-3.1-pro
17
+ - glm-4.6
18
+ - glm-4.7-free
19
+ - glm-5
20
+ - glm-5.1
21
+ - gpt-5.1
22
+ - gpt-5.1-codex
23
+ - gpt-5.1-codex-max
24
+ - gpt-5.2-codex
25
+ - gpt-5.3-codex
26
+ - gpt-5.3-codex-spark
27
+ - gpt-5.4
28
+ - gpt-5.4-mini
29
+ - gpt-5.4-nano
30
+ - gpt-5.4-pro
31
+ - hy3-preview-free
32
+ - kimi-k2
33
+ - kimi-k2-thinking
34
+ - kimi-k2.5
35
+ - kimi-k2.6
36
+ - ling-2.6-flash-free
37
+ - minimax-m2.5
38
+ - minimax-m2.5-free
39
+ - minimax-m2.7
40
+ - nemotron-3-super-free
41
+ - qwen3.5-plus
42
+ - qwen3.6-plus
12
43
  aliases:
13
44
  global:
14
- oc: opencode:google/gemini-2.5-flash
45
+ oc: opencode:glm
15
46
  model:
16
- gemini: google/gemini-2.5-flash
17
- claude: anthropic/claude-3-5-sonnet
18
- gpt4: openai/gpt-4o
47
+ google: google/gemini-3-pro
48
+ claude: anthropic/claude-opus-4-6
49
+ codex: openai/gpt-5.1-codex
50
+ glm: zai-coding-plan/glm-5.1
19
51
  capabilities:
20
52
  - text_generation
21
53
  - streaming
@@ -4,6 +4,10 @@ gem: ace-llm-providers-cli
4
4
  models:
5
5
  # ZAI (default provider)
6
6
  - zai/glm-4.7
7
+ - zai/glm-4.6
8
+ - zai/glm-4.5
9
+ - zai/glm-5.1
10
+ - zai/glm-5-turbo
7
11
  # Anthropic
8
12
  - anthropic/claude-opus-4-6
9
13
  - anthropic/claude-opus-4-5
@@ -22,15 +26,11 @@ models:
22
26
  - openai-codex/gpt-5.1
23
27
  aliases:
24
28
  global:
25
- pi: pi:zai/glm-4.7
29
+ pi: pi:zai/glm-5.1
26
30
  model:
27
- glm: zai/glm-4.7
28
- opus: anthropic/claude-opus-4-6
29
- sonnet: anthropic/claude-sonnet-4-5
30
- haiku: anthropic/claude-haiku-4-5
31
- gemini-pro: google-gemini-cli/gemini-2.5-pro
32
- gemini: google-gemini-cli/gemini-2.5-flash
33
- gpt: openai-codex/gpt-5.2
31
+ glm: zai/glm-5.1
32
+ glmturbo: zai/glm-5-turbo
33
+ gpt: openai-codex/gpt-5.4
34
34
  capabilities:
35
35
  - text_generation
36
36
  - streaming
@@ -40,4 +40,4 @@ capabilities:
40
40
  - skill_rewriting
41
41
  default_options:
42
42
  temperature: 0.7
43
- skills_dir: .pi/skills
43
+ skills_dir: .claude/skills
data/CHANGELOG.md CHANGED
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.31.7] - 2026-08-12
11
+
12
+ ### Technical
13
+ - Aligned gemspec dependency floors with current ACE package minor release lines and safe external minor dependency bumps (no major version jumps).
14
+
15
+ ## [0.31.6] - 2026-04-24
16
+
17
+ ### Fixed
18
+ - Always passed the explicit resolved model name to Codex, Gemini, and Claude Code CLI invocations so runtime execution matches config lookup and limit resolution.
19
+
20
+ ## [0.31.5] - 2026-04-23
21
+
22
+
23
+ ### Changed
24
+ - Refined Codex CLI client startup behavior and startup-policy handling for interactive launches so provider metadata and override paths stay aligned.
25
+ - Updated provider client behavior and tests around interactive policy resolution to keep alias and model mapping stable under tmux launches.
26
+
27
+
28
+ ## [0.31.4] - 2026-04-22
29
+
30
+ ### Fixed
31
+ - Replaced tmux Codex HOME overlays with Codex command-line `-C` and trust config overrides so agent sessions keep the user's normal `HOME` for git, GitHub CLI, and other tool authentication.
32
+
33
+ ## [0.31.3] - 2026-04-22
34
+
35
+ ### Technical
36
+ - Added Codex provider-default regression assertions that explicitly reject stale `gpt-5-mini` model references in shipped model and alias mappings.
37
+
10
38
  ## [0.31.2] - 2026-04-16
11
39
 
12
40
  ### Fixed
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "digest"
4
- require "fileutils"
5
-
6
3
  module Ace
7
4
  module LLM
8
5
  module Providers
@@ -11,87 +8,16 @@ module Ace
11
8
  module InteractiveStartupPolicy
12
9
  module_function
13
10
 
14
- def tmux_context?(subprocess_env = nil)
15
- env = normalized_env(subprocess_env)
16
- !tmux_session_name(env).empty?
17
- end
18
-
19
- def codex_trust_override(working_dir:, subprocess_env: nil)
20
- return nil unless tmux_context?(subprocess_env)
21
-
11
+ def codex_trust_override(working_dir:)
22
12
  path = working_dir.to_s.strip
23
13
  return nil if path.empty?
24
14
 
25
15
  %{projects."#{escape_toml_basic_string(path)}".trust_level="trusted"}
26
16
  end
27
17
 
28
- def codex_overlay_home(working_dir:, subprocess_env: nil)
29
- return nil unless tmux_context?(subprocess_env)
30
-
31
- root = working_dir.to_s.strip
32
- return nil if root.empty?
33
-
34
- overlay_home = File.join(root, ".ace-local", "llm", "codex-home", Digest::SHA256.hexdigest(root)[0, 12])
35
- prepare_codex_overlay_home(overlay_home: overlay_home, working_dir: root)
36
- overlay_home
37
- end
38
-
39
- def normalized_env(subprocess_env)
40
- env = ENV.to_h
41
- return env unless subprocess_env
42
-
43
- subprocess_env.each_with_object(env) do |(key, value), memo|
44
- memo[key.to_s] = value
45
- end
46
- end
47
-
48
- def tmux_session_name(env)
49
- explicit = env["ACE_TMUX_SESSION"].to_s.strip
50
- return explicit unless explicit.empty?
51
-
52
- env["TMUX"].to_s.strip
53
- end
54
-
55
18
  def escape_toml_basic_string(value)
56
19
  value.to_s.gsub("\\", "\\\\\\\\").gsub("\"", "\\\\\"")
57
20
  end
58
-
59
- def prepare_codex_overlay_home(overlay_home:, working_dir:)
60
- codex_dir = File.join(overlay_home, ".codex")
61
- FileUtils.mkdir_p(codex_dir)
62
-
63
- sync_codex_overlay_links(codex_dir)
64
- write_codex_overlay_config(codex_dir: codex_dir, working_dir: working_dir)
65
- end
66
-
67
- def sync_codex_overlay_links(codex_dir)
68
- source_dir = File.expand_path("~/.codex")
69
- return unless Dir.exist?(source_dir)
70
-
71
- %w[auth.json installation_id version.json skills rules memories].each do |entry|
72
- source = File.join(source_dir, entry)
73
- next unless File.exist?(source)
74
-
75
- target = File.join(codex_dir, entry)
76
- next if File.exist?(target) || File.symlink?(target)
77
-
78
- File.symlink(source, target)
79
- end
80
- end
81
-
82
- def write_codex_overlay_config(codex_dir:, working_dir:)
83
- source_config = File.expand_path("~/.codex/config.toml")
84
- base = File.exist?(source_config) ? File.read(source_config) : ""
85
- trust_block = <<~TOML
86
-
87
- [projects."#{escape_toml_basic_string(working_dir)}"]
88
- trust_level = "trusted"
89
- TOML
90
-
91
- target = File.join(codex_dir, "config.toml")
92
- content = base.include?(trust_block.strip) ? base : "#{base.rstrip}#{trust_block}"
93
- File.write(target, content)
94
- end
95
21
  end
96
22
  end
97
23
  end
@@ -169,7 +169,7 @@ module Ace
169
169
  cmd << "--output-format" << "json"
170
170
 
171
171
  # Add model selection if not default
172
- if @model && @model != DEFAULT_MODEL
172
+ if @model
173
173
  cmd << "--model" << @model
174
174
  end
175
175
 
@@ -196,7 +196,7 @@ module Ace
196
196
  def build_claude_interactive_command(prompt, options)
197
197
  cmd = ["claude"]
198
198
 
199
- if @model && @model != DEFAULT_MODEL
199
+ if @model
200
200
  cmd << "--model" << @model
201
201
  end
202
202
 
@@ -98,11 +98,6 @@ module Ace
98
98
  prompt = rewrite_skill_commands(prompt, working_dir: working_dir)
99
99
 
100
100
  env = subprocess_env ? subprocess_env.to_h.dup : {}
101
- overlay_home = Atoms::InteractiveStartupPolicy.codex_overlay_home(
102
- working_dir: working_dir,
103
- subprocess_env: subprocess_env
104
- )
105
- env["HOME"] = overlay_home if overlay_home
106
101
 
107
102
  cmd = build_codex_interactive_command(
108
103
  prompt,
@@ -197,7 +192,7 @@ module Ace
197
192
  end
198
193
 
199
194
  # Add model selection if not default
200
- if @model && @model != DEFAULT_MODEL
195
+ if @model
201
196
  cmd << "--model" << @model
202
197
  end
203
198
 
@@ -231,7 +226,7 @@ module Ace
231
226
  cmd << "--sandbox" << options[:sandbox].to_s
232
227
  end
233
228
 
234
- if @model && @model != DEFAULT_MODEL
229
+ if @model
235
230
  cmd << "--model" << @model
236
231
  end
237
232
 
@@ -239,10 +234,18 @@ module Ace
239
234
  cmd << "--add-dir" << git_dir
240
235
  end
241
236
 
237
+ cmd << "-C" << working_dir
238
+
239
+ if (trust_override = Atoms::InteractiveStartupPolicy.codex_trust_override(
240
+ working_dir: working_dir
241
+ ))
242
+ cmd << "-c" << trust_override
243
+ end
244
+
242
245
  cmd.concat(
243
246
  normalized_cli_args_without_conflicts(
244
247
  options,
245
- forbidden_flags: ["exec", "review", "--output-last-message"],
248
+ forbidden_flags: ["exec", "review", "-C", "--cd", "--output-last-message"],
246
249
  label: "Codex"
247
250
  )
248
251
  )
@@ -162,7 +162,7 @@ module Ace
162
162
  cmd << "--output-format" << "json"
163
163
 
164
164
  # Add model selection if not default
165
- if @model && @model != DEFAULT_MODEL
165
+ if @model
166
166
  cmd << "--model" << @model
167
167
  end
168
168
 
@@ -188,7 +188,7 @@ module Ace
188
188
  cmd << "--output-format" << "json"
189
189
 
190
190
  # Add model selection if not default
191
- if @model && @model != DEFAULT_MODEL
191
+ if @model
192
192
  cmd << "--model" << @model
193
193
  end
194
194
 
@@ -232,7 +232,7 @@ module Ace
232
232
  cmd << "--output-format" << "json"
233
233
 
234
234
  # Add model selection if not default
235
- if @model && @model != DEFAULT_MODEL
235
+ if @model
236
236
  cmd << "--model" << @model
237
237
  end
238
238
 
@@ -4,7 +4,7 @@ module Ace
4
4
  module LLM
5
5
  module Providers
6
6
  module CLI
7
- VERSION = '0.31.2'
7
+ VERSION = "0.31.7"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-llm-providers-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.2
4
+ version: 0.31.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-04-20 00:00:00.000000000 Z
10
+ date: 2026-08-12 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-llm
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.30'
18
+ version: '0.38'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.30'
25
+ version: '0.38'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.21'
60
+ version: '1.88'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.21'
67
+ version: '1.88'
68
68
  description: Extends ace-llm with CLI-based LLM providers like Claude Code, Codex,
69
69
  Gemini CLI, OpenCode, and pi-agent
70
70
  email:
@@ -75,7 +75,9 @@ extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
77
  - ".ace-defaults/llm/providers/claude.yml"
78
+ - ".ace-defaults/llm/providers/claudeoai.yml"
78
79
  - ".ace-defaults/llm/providers/codex.yml"
80
+ - ".ace-defaults/llm/providers/codexoai.yml"
79
81
  - ".ace-defaults/llm/providers/codexoss.yml"
80
82
  - ".ace-defaults/llm/providers/gemini.yml"
81
83
  - ".ace-defaults/llm/providers/opencode.yml"