ai-consultants 3.3.0 → 3.5.0
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.
- package/.env.example +28 -5
- package/CLAUDE.md +46 -14
- package/README.md +40 -23
- package/SKILL.md +10 -4
- package/docs/COST_RATES.md +61 -33
- package/docs/JSON_SCHEMA.md +9 -1
- package/docs/RECIPES.md +20 -9
- package/docs/SETUP.md +4 -0
- package/docs/cost_rates.json +154 -42
- package/docs/releases/v3.4.0.md +102 -0
- package/docs/releases/v3.5.0.md +129 -0
- package/package.json +1 -1
- package/references/configuration.md +23 -3
- package/references/details.md +1 -1
- package/scripts/config.sh +106 -31
- package/scripts/configure.sh +69 -4
- package/scripts/doctor.sh +32 -7
- package/scripts/lib/api.sh +14 -5
- package/scripts/lib/api_query.sh +62 -6
- package/scripts/lib/common.sh +49 -10
- package/scripts/lib/costs.sh +37 -11
- package/scripts/lib/schema.json +10 -1
- package/scripts/query_claude.sh +41 -14
- package/scripts/query_codex.sh +123 -18
- package/scripts/query_cursor.sh +71 -15
- package/scripts/query_gemini.sh +67 -8
- package/scripts/query_glm.sh +1 -1
- package/scripts/query_grok.sh +9 -2
- package/scripts/query_kimi.sh +11 -8
- package/scripts/query_minimax.sh +5 -2
- package/scripts/query_mistral.sh +61 -12
- package/scripts/query_qwen3.sh +17 -8
- package/scripts/update_clis.sh +9 -3
package/.env.example
CHANGED
|
@@ -122,32 +122,54 @@ GEMINI_TIMEOUT=180
|
|
|
122
122
|
GEMINI_CMD=agy
|
|
123
123
|
# API-mode model ID (only used when GEMINI_USE_API=true)
|
|
124
124
|
GEMINI_API_MODEL=gemini-3.1-pro-preview
|
|
125
|
+
# Authenticated opt-ins: use Gemini 3.7 Flash (High/Low) for GEMINI_MODEL or
|
|
126
|
+
# gemini-3.7-flash for GEMINI_API_MODEL.
|
|
127
|
+
# Reasoning effort for the agy CLI. Passed as --effort <value>. Accepts only
|
|
128
|
+
# low|medium|high; anything else is rejected by the provider and surfaces as a
|
|
129
|
+
# diagnosed error (provider owns the enum — same stance as QWEN3_REASONING_EFFORT).
|
|
130
|
+
# GEMINI_REASONING_EFFORT=
|
|
125
131
|
|
|
126
132
|
# Codex - The Pragmatist
|
|
127
|
-
CODEX_MODEL=gpt-5.
|
|
133
|
+
CODEX_MODEL=gpt-5.6-sol
|
|
128
134
|
CODEX_TIMEOUT=180
|
|
129
135
|
CODEX_CMD=codex
|
|
136
|
+
# Reasoning effort for the codex CLI (and API mode). Passed as
|
|
137
|
+
# -c model_reasoning_effort=<value>. The provider owns the accepted enum;
|
|
138
|
+
# an unsupported value is rejected rather than silently ignored.
|
|
139
|
+
# CODEX_REASONING_EFFORT=
|
|
130
140
|
|
|
131
141
|
# Mistral Vibe - The Devil's Advocate
|
|
142
|
+
# API model ID. Vibe uses the separate CLI alias below. Mistral Medium 3.5,
|
|
143
|
+
# Large 3, and Small 4 API IDs are documented opt-ins until an API smoke passes.
|
|
132
144
|
MISTRAL_MODEL=mistral-large-3
|
|
145
|
+
MISTRAL_CLI_MODEL=mistral-medium-3.5
|
|
146
|
+
# Official API opt-ins: use mistral-medium-3-5, mistral-large-2512, or
|
|
147
|
+
# mistral-small-2603 for MISTRAL_MODEL after an authenticated API smoke.
|
|
133
148
|
MISTRAL_TIMEOUT=180
|
|
134
149
|
MISTRAL_CMD=vibe
|
|
135
150
|
|
|
136
151
|
# Cursor - The Integrator
|
|
137
152
|
CURSOR_MODEL=composer-2.5
|
|
138
153
|
CURSOR_TIMEOUT=180
|
|
139
|
-
CURSOR_CMD=agent
|
|
154
|
+
CURSOR_CMD=cursor-agent
|
|
140
155
|
|
|
141
156
|
# Kimi - The Eastern Sage (K3 via Kimi Code CLI)
|
|
142
157
|
KIMI_MODEL=kimi-code/k3
|
|
158
|
+
# max_quality selects the inventory-probed kimi-code/k3-256k target.
|
|
143
159
|
KIMI_TIMEOUT=180
|
|
144
160
|
KIMI_CMD=kimi
|
|
145
161
|
|
|
146
162
|
# Claude - The Synthesizer
|
|
147
163
|
CLAUDE_MODEL=claude-opus-5 # ai-consultants:default
|
|
164
|
+
# Fable 5 is catalogued and priced but remains an explicit CLAUDE_MODEL opt-in
|
|
165
|
+
# after its local smoke timed out.
|
|
148
166
|
CLAUDE_TIMEOUT=240
|
|
149
167
|
CLAUDE_CMD=claude
|
|
150
168
|
CLAUDE_API_MAX_TOKENS=16384
|
|
169
|
+
# Reasoning effort for the claude CLI (and API mode). Passed as --effort <value>.
|
|
170
|
+
# The provider owns the accepted enum; an unsupported value is rejected rather
|
|
171
|
+
# than silently ignored.
|
|
172
|
+
# CLAUDE_REASONING_EFFORT=
|
|
151
173
|
|
|
152
174
|
# Qwen3 - The Analyst (CLI/API switchable v2.7)
|
|
153
175
|
QWEN3_MODEL=qwen3.7-max
|
|
@@ -157,7 +179,7 @@ QWEN3_CMD=qwen
|
|
|
157
179
|
# mode this is ignored (with a warning); set model.reasoningEffort in
|
|
158
180
|
# ~/.qwen/settings.json instead. Accepted: none|minimal|low|medium|high|xhigh|max
|
|
159
181
|
# (the provider's own enum). The valid subset depends on the model:
|
|
160
|
-
# qwen3.8-max
|
|
182
|
+
# qwen3.8-max takes all of them EXCEPT 'none' - thinking cannot be
|
|
161
183
|
# disabled on it - and defaults to xhigh. An unsupported combination is
|
|
162
184
|
# rejected by the provider with a 400, not silently ignored.
|
|
163
185
|
# QWEN3_REASONING_EFFORT=
|
|
@@ -172,13 +194,13 @@ QWEN3_CMD=qwen
|
|
|
172
194
|
# =============================================================================
|
|
173
195
|
|
|
174
196
|
# GLM - The Methodologist
|
|
175
|
-
GLM_MODEL=glm-5.
|
|
197
|
+
GLM_MODEL=glm-5.3
|
|
176
198
|
GLM_TIMEOUT=180
|
|
177
199
|
GLM_API_URL=https://api.z.ai/api/coding/paas/v4/chat/completions
|
|
178
200
|
|
|
179
201
|
# Grok Build CLI + xAI API fallback - The Provocateur
|
|
180
202
|
GROK_CMD=grok
|
|
181
|
-
GROK_MODEL=grok-4.
|
|
203
|
+
GROK_MODEL=grok-4.6
|
|
182
204
|
GROK_TIMEOUT=180
|
|
183
205
|
GROK_API_URL=https://api.x.ai/v1/chat/completions
|
|
184
206
|
|
|
@@ -190,6 +212,7 @@ DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions
|
|
|
190
212
|
# MiniMax - The Pragmatic Optimizer (CLI via mmx by default, v2.21; API opt-in)
|
|
191
213
|
MINIMAX_CMD=mmx
|
|
192
214
|
MINIMAX_MODEL=MiniMax-M2.7
|
|
215
|
+
# max_quality selects the smoke-tested MiniMax-M3 target.
|
|
193
216
|
MINIMAX_TIMEOUT=180
|
|
194
217
|
MINIMAX_API_URL=https://api.minimax.io/v1/chat/completions
|
|
195
218
|
|
package/CLAUDE.md
CHANGED
|
@@ -6,7 +6,7 @@ AI Consultants is a multi-model coverage system that queries up to 11 AI consult
|
|
|
6
6
|
|
|
7
7
|
**Self-Exclusion**: The invoking agent is automatically excluded from the panel to prevent self-consultation. Claude Code won't query Claude, Codex CLI won't query Codex, etc.
|
|
8
8
|
|
|
9
|
-
**Version**: 3.
|
|
9
|
+
**Version**: 3.5.0
|
|
10
10
|
|
|
11
11
|
## Distribution
|
|
12
12
|
|
|
@@ -180,7 +180,7 @@ Functions in `lib/common.sh`:
|
|
|
180
180
|
### Configuration Presets
|
|
181
181
|
```bash
|
|
182
182
|
# Quality Tier Presets (v2.5)
|
|
183
|
-
./scripts/consult_all.sh --preset max_quality "question" # 8 of 11 consultants +
|
|
183
|
+
./scripts/consult_all.sh --preset max_quality "question" # 8 of 11 consultants + maximum tier + peer review
|
|
184
184
|
./scripts/consult_all.sh --preset medium "question" # 4 consultants + standard models
|
|
185
185
|
./scripts/consult_all.sh --preset fast "question" # 2 consultants + economy models
|
|
186
186
|
|
|
@@ -364,13 +364,14 @@ The `doctor.sh` script now shows CLI/API mode status:
|
|
|
364
364
|
## v2.5 Features
|
|
365
365
|
|
|
366
366
|
### Model Quality Tiers
|
|
367
|
-
Three tiers
|
|
367
|
+
Three normal tiers plus a `maximum` tier are configurable via `apply_model_tier()`:
|
|
368
368
|
|
|
369
369
|
| Tier | Description | Example Models |
|
|
370
370
|
|------|-------------|----------------|
|
|
371
|
-
| **premium** | Latest flagship models | claude-opus-5, Gemini 3.1 Pro (High), gpt-5.
|
|
372
|
-
| **
|
|
373
|
-
| **
|
|
371
|
+
| **premium** | Latest flagship models | claude-opus-5, Gemini 3.1 Pro (High), gpt-5.6-sol |
|
|
372
|
+
| **maximum** | Smoke-tested separate-plan targets used by max_quality | K3-256k, Qwen3.8-Max, MiniMax M3 |
|
|
373
|
+
| **standard** | Good quality at reasonable cost | claude-sonnet-5, Gemini 3.6 Flash (High), gpt-5.6-terra |
|
|
374
|
+
| **economy** | Optimized for speed and low cost | claude-haiku-4-5, Gemini 3.6 Flash (Low), gpt-5.6-luna |
|
|
374
375
|
|
|
375
376
|
**Default models are now premium tier** for maximum quality.
|
|
376
377
|
|
|
@@ -378,6 +379,7 @@ Three tiers of models are available for each consultant, configurable via `apply
|
|
|
378
379
|
# Programmatic usage
|
|
379
380
|
source scripts/config.sh
|
|
380
381
|
apply_model_tier "premium" # Set all consultants to premium models
|
|
382
|
+
apply_model_tier "maximum" # max_quality-only / separate-plan models
|
|
381
383
|
apply_model_tier "standard" # Set all consultants to standard models
|
|
382
384
|
apply_model_tier "economy" # Set all consultants to economy models
|
|
383
385
|
|
|
@@ -390,7 +392,7 @@ get_model_for_tier "claude" "economy" # → claude-haiku-4-5
|
|
|
390
392
|
Three new presets leverage the model tiers:
|
|
391
393
|
|
|
392
394
|
```bash
|
|
393
|
-
# Maximum quality -
|
|
395
|
+
# Maximum quality - maximum tier + debate + peer review
|
|
394
396
|
./scripts/consult_all.sh --preset max_quality "critical architecture decision"
|
|
395
397
|
|
|
396
398
|
# Balanced quality - standard models, 4 consultants, light debate
|
|
@@ -407,12 +409,12 @@ All consultants now use premium models by default:
|
|
|
407
409
|
|------------|---------------|
|
|
408
410
|
| Claude | claude-opus-5 |
|
|
409
411
|
| Gemini | Gemini 3.1 Pro (High) (via agy CLI) |
|
|
410
|
-
| Codex | gpt-5.
|
|
411
|
-
| Mistral | mistral-large-3 |
|
|
412
|
+
| Codex | gpt-5.6-sol |
|
|
413
|
+
| Mistral | CLI: mistral-medium-3.5; API: mistral-large-3 |
|
|
412
414
|
| Cursor | composer-2.5 |
|
|
413
415
|
| DeepSeek | deepseek-v4-pro |
|
|
414
|
-
| GLM | glm-5.
|
|
415
|
-
| Grok | grok-4.
|
|
416
|
+
| GLM | glm-5.3 |
|
|
417
|
+
| Grok | grok-4.6 |
|
|
416
418
|
| Qwen3 | qwen3.7-max |
|
|
417
419
|
| Kimi | kimi-code/k3 |
|
|
418
420
|
| MiniMax | MiniMax-M2.7 |
|
|
@@ -420,7 +422,7 @@ All consultants now use premium models by default:
|
|
|
420
422
|
Override with environment variables: `CLAUDE_MODEL`, `GEMINI_MODEL`, `CODEX_MODEL`, `KIMI_MODEL`, etc.
|
|
421
423
|
|
|
422
424
|
Grok is CLI-first through the official Grok Build `grok` command, with
|
|
423
|
-
`grok-4.
|
|
425
|
+
`grok-4.6` passed explicitly in headless mode. The prompt is delivered with
|
|
424
426
|
`--prompt-file`; HOME and CWD are isolated, built-in/MCP tools are denied, and
|
|
425
427
|
the strict sandbox prevents user or project extensions from joining the
|
|
426
428
|
consultation. The xAI Chat Completions path is retained only when the CLI is
|
|
@@ -617,8 +619,9 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
|
|
|
617
619
|
| `CLAUDE_API_MAX_TOKENS` | 16384 | Claude API thinking + visible-output budget |
|
|
618
620
|
| `GEMINI_MODEL` | Gemini 3.1 Pro (High) | Gemini agy CLI model (v2.15) |
|
|
619
621
|
| `GEMINI_API_MODEL` | gemini-3.1-pro-preview | Gemini API-mode model ID (v2.15) |
|
|
620
|
-
| `CODEX_MODEL` | gpt-5.
|
|
622
|
+
| `CODEX_MODEL` | gpt-5.6-sol | Codex model (v2.5) |
|
|
621
623
|
| `MISTRAL_MODEL` | mistral-large-3 | Mistral model (v2.5) |
|
|
624
|
+
| `MISTRAL_CLI_MODEL` | mistral-medium-3.5 | Vibe CLI model alias |
|
|
622
625
|
| `SYNTHESIS_STRATEGY` | coverage | Synthesis strategy (coverage=union of distinct points) |
|
|
623
626
|
| `ENABLE_SEMANTIC_CACHE` | true | Semantic response caching (v2.3) |
|
|
624
627
|
| `CACHE_TTL_HOURS` | 24 | Cache expiration in hours (v2.3) |
|
|
@@ -643,7 +646,7 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
|
|
|
643
646
|
- `agy` CLI - Antigravity CLI (Gemini consultant; successor to the deprecated Gemini CLI, v2.15)
|
|
644
647
|
- `codex` CLI - OpenAI Codex
|
|
645
648
|
- `vibe` CLI - Mistral Vibe
|
|
646
|
-
- `agent` CLI - Cursor
|
|
649
|
+
- `cursor-agent` CLI - Cursor (validated by capability, read-only ask mode)
|
|
647
650
|
- `kimi` CLI - Kimi Code (v2.9)
|
|
648
651
|
- `claude` CLI - Claude (v2.2, also used for synthesis)
|
|
649
652
|
- `qwen` CLI - Qwen via qwen-code (v2.7, optional)
|
|
@@ -787,6 +790,35 @@ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/s
|
|
|
787
790
|
|
|
788
791
|
## Changelog
|
|
789
792
|
|
|
793
|
+
### v3.5.0
|
|
794
|
+
|
|
795
|
+
- **The catalog now distinguishes an advisory panel's normal premium tier from subscription-only maximum targets.** `get_model_for_tier()` accepts an explicit transport, while `apply_model_tier maximum` selects K3-256k and MiniMax M3 and promotes Qwen3.8-Max only when `QWEN3_USE_API=true`, the wire is OpenAI-compatible, the endpoint is a Token Plan `/chat/completions` URL, and a key is present (`scripts/config.sh:581-737`). The Qwen effort is marked tier-managed, cleared when leaving maximum, and never overwrites a user pin. Gemini 3.7, Fable 5, and the new Mistral API IDs remain catalogued opt-ins after their exact transports failed authentication or timed out; normal runs do not inherit delegation-kit's routing gates.
|
|
796
|
+
- **Mistral CLI and API names are no longer conflated.** `MISTRAL_CLI_MODEL=mistral-medium-3.5` reaches Vibe through `VIBE_ACTIVE_MODEL`; `MISTRAL_MODEL` remains API-only. Vibe verifies its bounded read-only interface, runs `plan` for one turn in a mode-700 temporary workspace, and treats empty or post-launch failures as failures (`scripts/query_mistral.sh:47-143`). The current machine passed the exact Vibe smoke; no Mistral API key was available, so the new API IDs were not promoted.
|
|
797
|
+
- **Cursor now means Cursor.** The old `CURSOR_CMD=agent` resolved to Grok on this machine. Runtime, configure, and doctor now default to `cursor-agent`, validate the Cursor help surface, bound model-inventory calls, require Composer 2.5, and invoke `--mode ask --trust` only against an ephemeral workspace (`scripts/query_cursor.sh:33-132`, `scripts/configure.sh:322-363`). The local Cursor account is not logged in, so runtime authentication remains a user gate rather than something this release works around.
|
|
798
|
+
- **Model identity evidence is additive and honest.** Every envelope carries the requested ID and one of `provider-reported`, `capability-probed`, or `requested-only`; API model strings are syntax-validated before adoption (`scripts/lib/common.sh:935-1068`, `scripts/lib/api_query.sh:162-194`). `modelUsage` remains billing participation, not content identity. The shared billing resolver prefers a known effective ID, then the explicit requested ID, and uses consultant fallback only for legacy responses that lack the new metadata (`scripts/lib/costs.sh:311-430`).
|
|
799
|
+
- **The reliability boundary is finite.** Cursor/Gemini/Mistral capability probes and Cursor configure/doctor probes have explicit time limits. An HTTP 200 with an empty body increments the retry counter, including at the shipped `MAX_RETRIES=2`, instead of spinning indefinitely (`scripts/lib/api.sh`, `scripts/test_api_transport.sh`). Google `thinkingConfig` is emitted only for Gemini 3.7; the proven 3.1 API body remains byte-compatible.
|
|
800
|
+
- **Managed migrations are exact and pins survive.** `configure` upgrades only the historical managed Cursor command, GLM 5.2, and Grok 4.5 values. Environment/`--set` model values and any `# ai-consultants:pin` entry remain user-owned. The new catalog-parity gate checks all 44 consultant/tier cells and all 16 Gemini/Mistral transport cells against `docs/cost_rates.json`, requiring every automatic target to be priced or explicitly unpriced.
|
|
801
|
+
- **Promotion evidence is recorded without overstating it.** Exact ai-consultants smokes passed for Mistral Vibe Medium 3.5, GLM 5.3, Grok 4.6, K3-256k, Qwen3.8-Max Token Plan, and MiniMax M3. Gemini 3.7 lacked agy/API auth, Mistral API lacked a key, Fable 5 timed out, and Cursor lacked login; those stay opt-in/unverified. Cross-family Opus 5/max review first returned `NO-SHIP` with four blockers, then `SHIP` after the hermeticity, trust, probe, thinking, billing, retry, and parity findings were fixed. Final gate: 22/22 suites, 443/443 core checks, ShellCheck and npm tarball green.
|
|
802
|
+
|
|
803
|
+
Deliberate residuals: Cursor and Vibe isolate the workspace but retain ambient HOME for their authenticated CLI state; unpriced credit/subscription models are disclosed but cannot be enforced by a dollar budget; provider/requested model substitutions are available in raw JSON but not yet summarized in the human report.
|
|
804
|
+
|
|
805
|
+
### v3.4.0
|
|
806
|
+
- **Gemini was unreachable from an SSH session, and no amount of re-authenticating helped.** `agy` picks its credential store from the environment: seeing `SSH_CLIENT`, `SSH_CONNECTION`, or `SSH_TTY` it switches to a file-based token store and never consults the macOS Keychain. A user who signed in locally therefore lost Gemini entirely over SSH, and signing in again landed the new credential in the Keychain the CLI had already decided to ignore. Reproduced live before fixing (`agy models` → "Please sign in"; the same command under `env -u SSH_CLIENT -u SSH_CONNECTION -u SSH_TTY` → full inventory), and confirmed again end to end after. Found by reading delegation-kit's 0.13.1 fix and checking whether the same failure applied here — it did, in the very session doing the work.
|
|
807
|
+
- **The fix ships in two shapes on purpose** (`lib/common.sh:163-164`). `AGY_ENV_PREFIX` is an array of `env -u …` for anything that reaches `agy` through `run_with_timeout`, because GNU `timeout` execs a binary and **cannot invoke a shell function**; `agy_env` is the same-shell wrapper, defined *from* that array so the two cannot drift. Applied at every executing call site — `query_gemini.sh`, `doctor.sh`, `update_clis.sh`, and `build_synthesis_args` (which is executed directly by `synthesize.sh:304`, not through timeout, so either shape would work there — it uses the array for consistency). The remaining `${GEMINI_CMD:-agy}` hits are `command -v` probes and config-dump strings, which execute nothing.
|
|
808
|
+
- **The Codex adapter was the least isolated in the panel, contradicting our own v3.1.0 policy.** That release isolated Grok specifically so "local plugins, hooks, skills, memories, and project instructions stay outside the consultation", then left Codex running `codex exec --skip-git-repo-check -m … "$FULL_QUERY"` in the ambient environment: the user's `~/.codex/config.toml`, the repo's `AGENTS.md`, their hooks, MCP servers, and execpolicy rules all reached an advisory consultation, the sandbox was unpinned, and the prompt rode in argv — the same `ARG_MAX` and process-list exposure v3.1.0 had already fixed once. CLI mode now uses an ephemeral mode-700 HOME/CWD with `--ephemeral --ignore-user-config --ignore-rules -s read-only`, prompt on stdin, answer from a private `-o` payload (`query_codex.sh:86-160`).
|
|
809
|
+
- **`CODEX_HOME` is resolved before HOME is overridden** (`query_codex.sh:89`) and passed through unchanged: `--ignore-user-config` skips `config.toml` but auth still resolves through `CODEX_HOME`, so repointing it at the isolated home would break authentication outright. Note the coupling recorded at `query_codex.sh:123`: `--ignore-user-config` is safe **only** because `-m` pins the model — it also makes Codex ignore any `-p <profile>`, so a profile must never be added here.
|
|
810
|
+
- **Review caught the `-o` payload rewriting real failures into successes.** The first implementation adopted the payload whenever it was non-empty, *regardless of how `run_query` finished* — so a timeout (124), an auth error, or exhausted retries that left a partial answer on disk all became `exit_code=0` and entered synthesis as a healthy consultation. That is strictly worse than the bug it replaced and defeats the v2.18/v2.19 diagnosed-failure machinery. Adoption is now gated on success; exit 0 with an empty payload remains a failure. Both directions are regression-tested, and both tests were confirmed non-vacuous by reintroducing the defect and watching them fail.
|
|
811
|
+
- **Correction, on the record: the justification for that override was measured and found false.** It was defended as avoiding "false empty-stdout failures", since `run_query` treats an empty stdout as a failure *and retries* — which would have meant every Codex consultation making `MAX_RETRIES` billable calls. Measured against the real CLI, stdout carries the answer (11 bytes), the `-o` file mirrors it, and only token telemetry goes to stderr. There was never a retry storm. `-o` is kept as defence in depth — and the isolation is what makes stdout clean in the first place, since `--ignore-user-config` plus an ephemeral HOME leaves no hooks to emit chatter.
|
|
812
|
+
- **`*_REASONING_EFFORT` had been a documented no-op on the default path.** `warn_effort_ignored_in_cli` announced the setting as API-mode only, but CLI-first transport has been mandatory since v2.21 — so in the shipped configuration the knob did nothing at all, while three CLIs did expose the control. Now wired: Codex `-c model_reasoning_effort=` (`query_codex.sh:148`), Claude `--effort` (`query_claude.sh:78-86`), Gemini `--effort` (`query_gemini.sh:97-105`). This is not cosmetic — cheap models do not degrade gracefully, so a consultant silently inheriting an unknown effort is not a controlled panel member.
|
|
813
|
+
- **Deliberately no per-CLI effort allowlist.** `agy` accepts only `low|medium|high`, but the accepted enum is a provider fact, not ours; an unsupported value comes back as a diagnosed 400 rather than being pre-empted by a table in shell. Same stance v2.25.0 took for Qwen, and for the same reason: hardcoding per-model facts is what produced the stale `MODEL_USED` bugs.
|
|
814
|
+
- **The parameter-contract test did its job on code it knew nothing about.** `test_configure.sh:91-121` scans every non-test `*.sh` for `${VAR:-}` and requires each name to be accepted by `configure --set`; the three new effort reads and then `CODEX_HOME` each failed it in turn. The effort variables are now declared in `.env.example` (commented out, matching the `QWEN3_REASONING_EFFORT` convention). `CODEX_HOME` went to the **exclusion list** instead (`test_configure.sh:105-107`), because it is owned by the Codex CLI: we read it to locate the user's auth store and must never persist it — declaring it would advertise `configure --set CODEX_HOME=…`, writing another tool's private auth path into our config. It joins `HOME`, `TMPDIR`, `XDG_CONFIG_HOME`, and `XAI_API_KEY`, and the distinction is now stated inline so nobody "fixes" it by moving it into `.env.example`.
|
|
815
|
+
- **The model catalog refresh would have been invisible to every existing installation — and only a live smoke test caught it.** The full gate was green (19/19, shellcheck clean, both new regression tests proven non-vacuous) and a real consultation still reported `model=gpt-5.5`. `init` copies `.env.example` verbatim, so the then-current Codex default was persisted as an ordinary unmarked value, and `configure` reads any unmarked value as a deliberate user pin. The proof sits side by side in an installed config: `CODEX_MODEL=gpt-5.5` beside `CLAUDE_MODEL=claude-opus-5 # ai-consultants:default`, where only the marked line can migrate. Fixed with the direct analogue of v3.2.0's Claude migration (`configure.sh:288-295`) — one exact historical value, one target, skipped on the pin marker, rewritten with the default marker. Verified against real config files: unmarked `gpt-5.5` migrates, a pin recorded via `--set` survives, an unrelated `gpt-5.4` is untouched.
|
|
816
|
+
- **Deliberately not generalised.** A table-driven "upgrade anything that looks old" rule would silently rewrite genuine user pins. Two adjacent narrow blocks is the intended shape; a third model needs a third block.
|
|
817
|
+
- **Model ids were verified by querying the installed binaries, never from documentation.** `agy models` (with the SSH markers cleared) returns slugs — `gemini-3.6-flash-high`, `gemini-3.1-pro-high` — but the display names we ship still resolve, checked by round-tripping both forms. Gemini premium stays `Gemini 3.1 Pro (High)` because the inventory has **no 3.6 Pro**; only standard/economy move to 3.6 Flash. Codex `gpt-5.6-sol|terra|luna` and `claude-sonnet-5` each answered a live probe.
|
|
818
|
+
- **Cost rates ship with the ids, not after them.** `calculate_session_cost` never calls `resolve_model_for_cost`, so a model absent from the catalog falls to the `*)` arm of `get_input_cost_per_1k` at 0.005/0.015 and is reported as a confident, wrong number — the trap documented at v2.25.0. Sonnet 5 is entered at its standard $3/$15 rate rather than the introductory $2/$10, which expires 2026-08-31; that slightly overstates for a few weeks and is exactly right afterwards.
|
|
819
|
+
- **Qwen: two ids, two deployments, not a rename.** delegation-kit's snapshot said `GET /models` lists both `qwen3.8-max` and `qwen3.8-max-preview`. Verified live against a real Token Plan account: both are served **and each completion reports its own requested id back in `.model`**, so `-preview` is not an alias and is not silently served by `qwen3.8-max`. Both stay catalogued and both stay in `unpriced_models` — removing the preview entry is precisely what would drop an existing pin onto `default_rate`. Recorded in `docs/RECIPES.md`; the shipped premium Qwen model remains `qwen3.7-max` and the negative assertion in `test_suite.sh` keeps that contract self-documenting.
|
|
820
|
+
- **Process note for the next stacked release.** `ci.yml` triggers on `pull_request: branches: [main]` with the default activity types, and a base-branch change fires `edited`, which is not among them — so a PR stacked on another branch never gets a server-side check until it is retargeted *and* reopened. Separately, `gh pr merge --delete-branch` on a stack base **closes** the child PR rather than retargeting it, and GitHub will neither retarget a closed PR nor reopen one whose base is gone; recovery meant pushing the base ref back from a commit still reachable in `main`. Adding `edited` to the workflow's activity types would close the first hole.
|
|
821
|
+
|
|
790
822
|
### v3.3.0
|
|
791
823
|
- **Grok and Kimi compatibility is now established from capabilities, not inferred from an installed binary or its version string.** `grok_cli_supports_required_interface` validates the complete headless parser surface inside the same isolated HOME/CWD boundary used for dispatch, while `grok_cli_exposes_requested_model` verifies both usable authentication and the exact `GROK_MODEL` in the CLI inventory (`scripts/query_grok.sh:85-154`). Kimi similarly checks prompt mode, `stream-json`, the provider inventory, and `KIMI_MODEL` before any request (`scripts/query_kimi.sh:45-79`). Compatible future and vendor-custom versions therefore continue to work without a release-specific allowlist; an interface that cannot enforce the adapter's contract fails before a model call.
|
|
792
824
|
- **The observed CLI version is provenance only.** Successful Grok and Kimi responses add `metadata.cli_version` and `metadata.cli_compatibility="capability-probed"`; the shared schema documents both fields without making either required for other transports (`scripts/query_grok.sh:319-336`, `scripts/query_kimi.sh:126-138`, `scripts/lib/schema.json:169-180`). This deliberately does not introduce a blessed-version range: the version is useful for diagnosis, while compatibility is decided by the exercised command, output, and model surfaces.
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# AI Consultants v3.
|
|
1
|
+
# AI Consultants v3.5.0
|
|
2
2
|
|
|
3
3
|
> **Coverage, not a single guess.** A panel of up to 11 frontier models from different vendors fans out on your question in parallel and hands you the *union* of what they collectively see — the risks, edge cases, and approaches a single model misses.
|
|
4
4
|
|
|
5
|
-
[](https://github.com/matteoscurati/ai-consultants)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://docs.anthropic.com/en/docs/claude-code/skills)
|
|
8
8
|
[](https://github.com/matteoscurati/ai-consultants)
|
|
@@ -375,20 +375,22 @@ INVOKING_AGENT=codex ./scripts/consult_all.sh "Question" # Codex excluded
|
|
|
375
375
|
| **Google Gemini** | `agy` | The Architect | Design patterns, scalability, enterprise |
|
|
376
376
|
| **OpenAI Codex** | `codex` | The Pragmatist | Simplicity, quick wins, proven solutions |
|
|
377
377
|
| **Mistral Vibe** | `vibe` | The Devil's Advocate | Problems, edge cases, vulnerabilities |
|
|
378
|
-
| **Cursor** | `agent` | The Integrator | Full-stack perspective |
|
|
378
|
+
| **Cursor** | `cursor-agent` | The Integrator | Full-stack perspective |
|
|
379
379
|
| **Kimi K3** | `kimi` | The Eastern Sage | Holistic, balanced perspectives |
|
|
380
380
|
| **Claude** | `claude` | The Synthesizer | Big picture, synthesis, connecting ideas |
|
|
381
381
|
| **Qwen3** | `qwen` | The Analyst | Data-driven analysis |
|
|
382
382
|
| **Grok** | `grok` | The Provocateur | Challenge conventions |
|
|
383
383
|
| **MiniMax** | `mmx` | The Pragmatic Optimizer | Performance, efficiency, pragmatism |
|
|
384
384
|
|
|
385
|
-
Grok uses Grok Build with `grok-4.
|
|
385
|
+
Grok uses Grok Build with `grok-4.6` in an isolated, tool-free sandbox. Prompts
|
|
386
386
|
are passed through a private file rather than process arguments. It falls back
|
|
387
387
|
to the xAI API only when the CLI is missing, cannot launch, or has no usable
|
|
388
388
|
authentication and `GROK_API_KEY` is configured; post-launch request failures
|
|
389
389
|
are surfaced without a silent API charge. Qwen3 and MiniMax can also switch
|
|
390
390
|
from their CLI to API transport. Gemini, Codex, Claude, and Mistral are
|
|
391
|
-
CLI/API switchable. Grok and Kimi
|
|
391
|
+
CLI/API switchable. Gemini, Cursor, Grok, and Kimi verify the requested model
|
|
392
|
+
against the CLI inventory before dispatch when that inventory exists. Grok and
|
|
393
|
+
Kimi compatibility is capability-probed before
|
|
392
394
|
dispatch: the requested model, headless arguments, and structured-output
|
|
393
395
|
surface must be available. Any CLI version is accepted when those checks pass;
|
|
394
396
|
the observed version is response provenance only.
|
|
@@ -397,7 +399,7 @@ the observed version is response provenance only.
|
|
|
397
399
|
|
|
398
400
|
| Consultant | Default Model | Persona | Focus |
|
|
399
401
|
|------------|---------------|---------|-------|
|
|
400
|
-
| **GLM** | glm-5.
|
|
402
|
+
| **GLM** | glm-5.3 | The Methodologist | Structured approaches |
|
|
401
403
|
| **DeepSeek** | deepseek-v4-pro | The Code Specialist | Algorithms, code generation |
|
|
402
404
|
|
|
403
405
|
### Installing Consultant CLIs
|
|
@@ -413,7 +415,7 @@ curl https://cursor.com/install -fsS | bash # Cursor
|
|
|
413
415
|
# Optional CLI-based consultants
|
|
414
416
|
curl -L code.kimi.com/install.sh | bash # Kimi K3
|
|
415
417
|
npm install -g @qwen-code/qwen-code@latest # Qwen (alternative to API)
|
|
416
|
-
curl -fsSL https://x.ai/cli/install.sh | bash # Grok Build (grok-4.
|
|
418
|
+
curl -fsSL https://x.ai/cli/install.sh | bash # Grok Build (grok-4.6)
|
|
417
419
|
npm install -g mmx-cli # MiniMax
|
|
418
420
|
|
|
419
421
|
```
|
|
@@ -436,7 +438,7 @@ Choose the right balance of quality, speed, and cost with model quality tiers.
|
|
|
436
438
|
|
|
437
439
|
| Preset | Tier | Agents | Use Case |
|
|
438
440
|
|--------|------|--------|----------|
|
|
439
|
-
| `max_quality` |
|
|
441
|
+
| `max_quality` | Maximum | 8 of 11 | Critical decisions |
|
|
440
442
|
| `medium` | Standard | 4 | General questions |
|
|
441
443
|
| `fast` | Economy | 2 | Quick checks |
|
|
442
444
|
|
|
@@ -445,19 +447,31 @@ parallel and returns the coverage union.
|
|
|
445
447
|
|
|
446
448
|
### Models by Tier
|
|
447
449
|
|
|
448
|
-
| Consultant | Premium | Standard | Economy |
|
|
449
|
-
|
|
450
|
-
| Claude | claude-opus-5 | claude-sonnet-
|
|
451
|
-
| Gemini | Gemini 3.1 Pro (High) | Gemini 3.
|
|
452
|
-
| Codex | gpt-5.5 | gpt-5.
|
|
453
|
-
| Mistral | mistral-
|
|
454
|
-
|
|
|
455
|
-
|
|
|
456
|
-
|
|
|
457
|
-
|
|
|
458
|
-
|
|
|
459
|
-
|
|
|
460
|
-
|
|
|
450
|
+
| Consultant | `max_quality` | Premium | Standard | Economy |
|
|
451
|
+
|------------|---------------|---------|----------|---------|
|
|
452
|
+
| Claude | claude-opus-5 | claude-opus-5 | claude-sonnet-5 | claude-haiku-4-5 |
|
|
453
|
+
| Gemini | Gemini 3.1 Pro (High) | Gemini 3.1 Pro (High) | Gemini 3.6 Flash (High) | Gemini 3.6 Flash (Low) |
|
|
454
|
+
| Codex | gpt-5.6-sol | gpt-5.6-sol | gpt-5.6-terra | gpt-5.6-luna |
|
|
455
|
+
| Mistral CLI | mistral-medium-3.5 | mistral-medium-3.5 | mistral-medium-3.5 | devstral-small-2 |
|
|
456
|
+
| Mistral API | mistral-large-3 | mistral-large-3 | mistral-large-3 | mistral-large-3 |
|
|
457
|
+
| Cursor | composer-2.5 | composer-2.5 | composer-2.5 | composer-2.5 |
|
|
458
|
+
| DeepSeek | deepseek-v4-pro | deepseek-v4-pro | deepseek-v4-flash | deepseek-v4-flash |
|
|
459
|
+
| GLM | glm-5.3 | glm-5.3 | glm-5.3 | glm-4-flash |
|
|
460
|
+
| Grok | grok-4.6 | grok-4.6 | grok-4.5 | grok-4.5 |
|
|
461
|
+
| Qwen3 | qwen3.8-max when Token Plan is configured; otherwise qwen3.7-max | qwen3.7-max | qwen3.6-35b-a3b | qwen3-32b |
|
|
462
|
+
| Kimi | kimi-code/k3-256k | kimi-code/k3 | kimi-code/k3 | kimi-code/k3 |
|
|
463
|
+
| MiniMax | MiniMax-M3 | MiniMax-M2.7 | MiniMax-M2.7 | MiniMax-M2.5 |
|
|
464
|
+
|
|
465
|
+
Promotion is transport-specific. Gemini 3.7 Flash, the new Mistral API IDs
|
|
466
|
+
(`mistral-medium-3-5`, `mistral-large-2512`, `mistral-small-2603`), and Claude
|
|
467
|
+
Fable 5 are catalogued opt-ins because this release could not complete an exact
|
|
468
|
+
authenticated smoke for those transports. Select them explicitly only after
|
|
469
|
+
your own `doctor --live`/adapter check. They are never promoted automatically;
|
|
470
|
+
selecting a preset later intentionally reapplies that preset's tier and can
|
|
471
|
+
replace an explicit model override for the run.
|
|
472
|
+
Qwen3.8-Max is likewise selected by `max_quality` only when API mode already
|
|
473
|
+
points at an authenticated OpenAI-compatible Token Plan `/chat/completions`
|
|
474
|
+
endpoint; the preset never repoints a DashScope key or CLI installation.
|
|
461
475
|
|
|
462
476
|
### Usage
|
|
463
477
|
|
|
@@ -475,6 +489,7 @@ parallel and returns the coverage union.
|
|
|
475
489
|
# Programmatic tier selection
|
|
476
490
|
source scripts/config.sh
|
|
477
491
|
apply_model_tier "premium" # Set all to premium models
|
|
492
|
+
apply_model_tier "maximum" # max_quality-only / separate-plan models
|
|
478
493
|
apply_model_tier "economy" # Set all to economy models
|
|
479
494
|
```
|
|
480
495
|
|
|
@@ -488,7 +503,7 @@ Choose how many consultants to use:
|
|
|
488
503
|
|
|
489
504
|
| Preset | Consultants | Tier | Use Case |
|
|
490
505
|
|--------|-------------|------|----------|
|
|
491
|
-
| `max_quality` | 8 of 11 |
|
|
506
|
+
| `max_quality` | 8 of 11 | Maximum | Critical decisions |
|
|
492
507
|
| `medium` | 4 | Standard | General questions |
|
|
493
508
|
| `fast` | 2 | Economy | Quick checks |
|
|
494
509
|
| `minimal` | 2 (Gemini + Codex) | Default | Quick questions, low cost |
|
|
@@ -552,7 +567,8 @@ later run to adapt when a CLI or credential changes. Environment variables,
|
|
|
552
567
|
`--set`, and unmarked values remain explicit user choices, except for the exact
|
|
553
568
|
historical generated Claude default described below.
|
|
554
569
|
Managed model defaults use `# ai-consultants:default`; `configure` upgrades the
|
|
555
|
-
historical unmarked `CLAUDE_MODEL=claude-opus-4-8` default to Opus 5
|
|
570
|
+
historical unmarked `CLAUDE_MODEL=claude-opus-4-8` default to Opus 5 and upgrades
|
|
571
|
+
the exact managed Cursor, GLM, and Grok defaults. To keep
|
|
556
572
|
4.8 intentionally, run
|
|
557
573
|
`ai-consultants configure --set CLAUDE_MODEL=claude-opus-4-8`; explicit model
|
|
558
574
|
overrides are stored with `# ai-consultants:pin`.
|
|
@@ -573,6 +589,7 @@ ENABLE_SMART_ROUTING=true # Auto-select consultants by question category
|
|
|
573
589
|
MAX_SESSION_COST=1.00 # USD budget cap (paired with ENABLE_BUDGET_LIMIT=true to enforce)
|
|
574
590
|
KIMI_MODEL=kimi-code/k3 # Pin the Kimi consultant to K3
|
|
575
591
|
CLAUDE_API_MAX_TOKENS=16384 # Shared thinking + visible-output budget in API mode
|
|
592
|
+
MISTRAL_CLI_MODEL=mistral-medium-3.5 # Vibe alias; MISTRAL_MODEL remains API-only
|
|
576
593
|
```
|
|
577
594
|
|
|
578
595
|
Full reference: [`references/configuration.md`](references/configuration.md). Copy-paste workflows: [`docs/RECIPES.md`](docs/RECIPES.md). For category-aware preset suggestions: `ai-consultants doctor --suggest-preset --question "..."`.
|
package/SKILL.md
CHANGED
|
@@ -5,10 +5,10 @@ license: MIT
|
|
|
5
5
|
compatibility: Requires bash, jq, and at least 2 AI CLI tools (agy, codex, vibe, etc.). macOS and Linux.
|
|
6
6
|
metadata:
|
|
7
7
|
author: matteoscurati
|
|
8
|
-
version: 3.
|
|
8
|
+
version: 3.5.0
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# AI Consultants v3.
|
|
11
|
+
# AI Consultants v3.5.0 - AI Expert Panel
|
|
12
12
|
|
|
13
13
|
**Coverage, not a single guess.** Convene a panel of AI "consultants" from different vendors for coding questions: they fan out in parallel and you get the *union* of what they collectively see — the risks, edge cases, and approaches a single model misses. Each consultant has a **configurable persona** that decorrelates its analysis.
|
|
14
14
|
|
|
@@ -34,7 +34,7 @@ Configuration (presets, strategies, features, personas, API keys) can be managed
|
|
|
34
34
|
| **Google Gemini** | `agy` | The Architect | Design patterns, scalability |
|
|
35
35
|
| **OpenAI Codex** | `codex` | The Pragmatist | Simplicity, proven solutions |
|
|
36
36
|
| **Mistral Vibe** | `vibe` | The Devil's Advocate | Edge cases, vulnerabilities |
|
|
37
|
-
| **Cursor** | `agent` | The Integrator | Full-stack perspective |
|
|
37
|
+
| **Cursor** | `cursor-agent` | The Integrator | Full-stack perspective |
|
|
38
38
|
| **Kimi K3** | `kimi` | The Eastern Sage | Holistic, balanced perspectives |
|
|
39
39
|
| **Claude** | `claude` | The Synthesizer | Big picture, synthesis |
|
|
40
40
|
| **Qwen** | `qwen` | The Analyst | Data-driven, metrics |
|
|
@@ -43,13 +43,19 @@ Configuration (presets, strategies, features, personas, API keys) can be managed
|
|
|
43
43
|
|
|
44
44
|
**API-only consultants**: GLM (The Methodologist), DeepSeek (The Code Specialist)
|
|
45
45
|
|
|
46
|
-
**CLI/API Mode**: Gemini, Codex, Claude, Mistral, Qwen, Grok, and MiniMax can switch between CLI and API mode via `*_USE_API` environment variables. Grok is CLI-first on Grok Build with `grok-4.
|
|
46
|
+
**CLI/API Mode**: Gemini, Codex, Claude, Mistral, Qwen, Grok, and MiniMax can switch between CLI and API mode via `*_USE_API` environment variables. Grok is CLI-first on Grok Build with `grok-4.6` and falls back to the xAI API when the CLI cannot run. Gemini auto-selects API mode when `GEMINI_API_KEY` is set (no `agy` install needed) and the CLI otherwise. Mistral keeps separate API (`MISTRAL_MODEL`) and Vibe (`MISTRAL_CLI_MODEL`) identifiers; Cursor uses `cursor-agent --mode ask` in an isolated workspace.
|
|
47
47
|
|
|
48
48
|
Grok and Kimi are compatible by capability rather than by CLI version. Before
|
|
49
49
|
dispatch, their adapters verify the required headless arguments, requested
|
|
50
50
|
model, and structured-output surface. Compatible version changes are accepted;
|
|
51
51
|
the observed version is recorded only as response provenance.
|
|
52
52
|
|
|
53
|
+
The `max_quality` preset uses the separately smoke-tested K3-256k and MiniMax
|
|
54
|
+
M3 targets, plus Qwen3.8-Max when an authenticated Token Plan transport is
|
|
55
|
+
already configured. Gemini 3.7 Flash, Claude Fable 5, and the
|
|
56
|
+
new Mistral API IDs remain explicit opt-ins until their exact local transports
|
|
57
|
+
can authenticate and complete a smoke; no failed target is silently replaced.
|
|
58
|
+
|
|
53
59
|
**Self-Exclusion**: The invoking agent is automatically excluded from the panel. When invoked from Claude Code, Claude is excluded; when invoked from Codex CLI, Codex is excluded, etc.
|
|
54
60
|
|
|
55
61
|
## Requirements
|
package/docs/COST_RATES.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Cost Rates - AI Consultants v3.
|
|
1
|
+
# Cost Rates - AI Consultants v3.5.0
|
|
2
2
|
|
|
3
3
|
This page documents the per-token rates used by the cost tracking system.
|
|
4
4
|
|
|
@@ -6,11 +6,14 @@ This page documents the per-token rates used by the cost tracking system.
|
|
|
6
6
|
|
|
7
7
|
## Model Quality Tiers (v2.5+)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Automatic selection has three normal tiers plus the `maximum` tier used by
|
|
10
|
+
`max_quality`. Use `apply_model_tier()` or `get_model_for_tier()` to select
|
|
11
|
+
models programmatically.
|
|
10
12
|
|
|
11
13
|
| Tier | Description | Cost Level |
|
|
12
14
|
|------|-------------|------------|
|
|
13
15
|
| **Premium** | Latest flagship models (default) | Highest |
|
|
16
|
+
| **Maximum** | Smoke-tested separate-plan or highest-cost targets | Varies / may be unpriced |
|
|
14
17
|
| **Standard** | Good quality at reasonable cost | Medium |
|
|
15
18
|
| **Economy** | Optimized for speed and low cost | Lowest |
|
|
16
19
|
|
|
@@ -21,32 +24,39 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
|
|
|
21
24
|
| Model | Tier | Cost/1K | Consultant |
|
|
22
25
|
|-------|------|---------|------------|
|
|
23
26
|
| Gemini 3.1 Pro (High) | Premium | $0.002 | Gemini (agy CLI) |
|
|
24
|
-
| Gemini 3.
|
|
25
|
-
| Gemini 3.
|
|
26
|
-
|
|
|
27
|
-
| gpt-5.
|
|
28
|
-
| gpt-5.
|
|
27
|
+
| Gemini 3.6 Flash (High) | Standard | $0.0015 | Gemini (agy CLI) |
|
|
28
|
+
| Gemini 3.6 Flash (Low) | Economy | $0.0015 | Gemini (agy CLI) |
|
|
29
|
+
| Gemini 3.7 Flash (High/Low) | Opt-in | $0.00075 | Gemini (CLI/API; promotional through 2026-12-31) |
|
|
30
|
+
| gpt-5.6-sol | Premium | $0.005 | Codex |
|
|
31
|
+
| gpt-5.6-terra | Standard | $0.002 | Codex |
|
|
32
|
+
| gpt-5.6-luna | Economy | $0.0002 | Codex |
|
|
29
33
|
| claude-opus-5 | Premium | $0.005 | Claude |
|
|
30
|
-
| claude-
|
|
34
|
+
| claude-fable-5 | Opt-in | $0.010 | Claude |
|
|
35
|
+
| claude-sonnet-5 | Standard | $0.003 | Claude |
|
|
31
36
|
| claude-haiku-4-5 | Economy | $0.001 | Claude |
|
|
32
37
|
| mistral-large-3 | Premium | $0.002 | Mistral |
|
|
33
|
-
| mistral-medium-
|
|
38
|
+
| mistral-medium-3.5 / mistral-medium-3-5 | Premium CLI / API opt-in | $0.0015 | Mistral |
|
|
39
|
+
| mistral-large-2512 | API opt-in | $0.0005 | Mistral |
|
|
40
|
+
| mistral-small-2603 | API opt-in | $0.00015 | Mistral |
|
|
34
41
|
| devstral-small-2 | Economy | $0.00 | Mistral |
|
|
35
|
-
| composer-2.5 | Premium | $0.0005 | Cursor |
|
|
36
|
-
| composer-2 |
|
|
37
|
-
| gemini-3-flash |
|
|
42
|
+
| composer-2.5 | Maximum/Premium/Standard/Economy | $0.0005 | Cursor |
|
|
43
|
+
| composer-2 | Legacy | $0.0005 | Cursor |
|
|
44
|
+
| gemini-3-flash | Legacy | $0.0005 | Cursor |
|
|
38
45
|
| deepseek-v4-pro | Premium | $0.000435 | DeepSeek |
|
|
39
46
|
| deepseek-v4-flash | Standard/Economy | $0.00014 | DeepSeek |
|
|
40
|
-
| glm-5.
|
|
47
|
+
| glm-5.3 | Maximum/Premium/Standard | Unpriced | GLM coding-plan endpoint |
|
|
41
48
|
| glm-4-flash | Economy | $0.001 | GLM |
|
|
42
|
-
| grok-4.
|
|
43
|
-
| grok-4.
|
|
49
|
+
| grok-4.6 | Maximum/Premium | $0.002 | Grok |
|
|
50
|
+
| grok-4.5 | Standard/Economy | $0.002 | Grok |
|
|
44
51
|
| qwen3.7-max | Premium | $0.0012 | Qwen3 |
|
|
45
52
|
| qwen3.6-35b-a3b | Standard | $0.000163 | Qwen3 |
|
|
46
53
|
| qwen3-32b | Economy | $0.0004 | Qwen3 |
|
|
47
|
-
|
|
|
48
|
-
| MiniMax-
|
|
54
|
+
| qwen3.8-max | Maximum | Unpriced | Qwen3 Token Plan |
|
|
55
|
+
| MiniMax-M3 | Maximum | $0.0003 | MiniMax (≤512k standard input) |
|
|
56
|
+
| MiniMax-M2.7 | Premium/Standard | $0.0003 | MiniMax |
|
|
57
|
+
| MiniMax-M2.5 | Economy | $0.0003 | MiniMax |
|
|
49
58
|
| kimi-code/k3 | Premium/Standard/Economy | $0.0005 | Kimi |
|
|
59
|
+
| kimi-code/k3-256k | Maximum | Unpriced | Kimi subscription |
|
|
50
60
|
| default | - | $0.005 | Fallback |
|
|
51
61
|
|
|
52
62
|
### Output Tokens
|
|
@@ -54,32 +64,39 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
|
|
|
54
64
|
| Model | Tier | Cost/1K | Consultant |
|
|
55
65
|
|-------|------|---------|------------|
|
|
56
66
|
| Gemini 3.1 Pro (High) | Premium | $0.012 | Gemini (agy CLI) |
|
|
57
|
-
| Gemini 3.
|
|
58
|
-
| Gemini 3.
|
|
59
|
-
|
|
|
60
|
-
| gpt-5.
|
|
61
|
-
| gpt-5.
|
|
67
|
+
| Gemini 3.6 Flash (High) | Standard | $0.0075 | Gemini (agy CLI) |
|
|
68
|
+
| Gemini 3.6 Flash (Low) | Economy | $0.0075 | Gemini (agy CLI) |
|
|
69
|
+
| Gemini 3.7 Flash (High/Low) | Opt-in | $0.00375 | Gemini (CLI/API; promotional through 2026-12-31) |
|
|
70
|
+
| gpt-5.6-sol | Premium | $0.030 | Codex |
|
|
71
|
+
| gpt-5.6-terra | Standard | $0.012 | Codex |
|
|
72
|
+
| gpt-5.6-luna | Economy | $0.0012 | Codex |
|
|
62
73
|
| claude-opus-5 | Premium | $0.025 | Claude |
|
|
63
|
-
| claude-
|
|
74
|
+
| claude-fable-5 | Opt-in | $0.050 | Claude |
|
|
75
|
+
| claude-sonnet-5 | Standard | $0.015 | Claude |
|
|
64
76
|
| claude-haiku-4-5 | Economy | $0.005 | Claude |
|
|
65
77
|
| mistral-large-3 | Premium | $0.006 | Mistral |
|
|
66
|
-
| mistral-medium-
|
|
78
|
+
| mistral-medium-3.5 / mistral-medium-3-5 | Premium CLI / API opt-in | $0.0075 | Mistral |
|
|
79
|
+
| mistral-large-2512 | API opt-in | $0.0015 | Mistral |
|
|
80
|
+
| mistral-small-2603 | API opt-in | $0.0006 | Mistral |
|
|
67
81
|
| devstral-small-2 | Economy | $0.00 | Mistral |
|
|
68
|
-
| composer-2.5 | Premium | $0.0025 | Cursor |
|
|
69
|
-
| composer-2 |
|
|
70
|
-
| gemini-3-flash |
|
|
82
|
+
| composer-2.5 | Maximum/Premium/Standard/Economy | $0.0025 | Cursor |
|
|
83
|
+
| composer-2 | Legacy | $0.0025 | Cursor |
|
|
84
|
+
| gemini-3-flash | Legacy | $0.003 | Cursor |
|
|
71
85
|
| deepseek-v4-pro | Premium | $0.00087 | DeepSeek |
|
|
72
86
|
| deepseek-v4-flash | Standard/Economy | $0.00028 | DeepSeek |
|
|
73
|
-
| glm-5.
|
|
87
|
+
| glm-5.3 | Maximum/Premium/Standard | Unpriced | GLM coding-plan endpoint |
|
|
74
88
|
| glm-4-flash | Economy | $0.003 | GLM |
|
|
75
|
-
| grok-4.
|
|
76
|
-
| grok-4.
|
|
89
|
+
| grok-4.6 | Maximum/Premium | $0.006 | Grok |
|
|
90
|
+
| grok-4.5 | Standard/Economy | $0.006 | Grok |
|
|
77
91
|
| qwen3.7-max | Premium | $0.006 | Qwen3 |
|
|
78
92
|
| qwen3.6-35b-a3b | Standard | $0.0009 | Qwen3 |
|
|
79
93
|
| qwen3-32b | Economy | $0.0016 | Qwen3 |
|
|
80
|
-
|
|
|
81
|
-
| MiniMax-
|
|
94
|
+
| qwen3.8-max | Maximum | Unpriced | Qwen3 Token Plan |
|
|
95
|
+
| MiniMax-M3 | Maximum | $0.0012 | MiniMax (≤512k standard input) |
|
|
96
|
+
| MiniMax-M2.7 | Premium/Standard | $0.0012 | MiniMax |
|
|
97
|
+
| MiniMax-M2.5 | Economy | $0.0012 | MiniMax |
|
|
82
98
|
| kimi-code/k3 | Premium/Standard/Economy | $0.002 | Kimi |
|
|
99
|
+
| kimi-code/k3-256k | Maximum | Unpriced | Kimi subscription |
|
|
83
100
|
| default | - | $0.015 | Fallback |
|
|
84
101
|
|
|
85
102
|
## Cost Estimation per Session
|
|
@@ -155,7 +172,18 @@ This is a conservative estimate. Actual costs may vary.
|
|
|
155
172
|
|
|
156
173
|
### Data Source
|
|
157
174
|
|
|
158
|
-
Rates are defined in `
|
|
175
|
+
Rates are defined in `docs/cost_rates.json` and are periodically updated from
|
|
176
|
+
the providers' official pricing pages: [Anthropic](https://platform.claude.com/docs/en/about-claude/models/choosing-a-model),
|
|
177
|
+
[Google](https://ai.google.dev/gemini-api/docs/pricing),
|
|
178
|
+
[Mistral](https://docs.mistral.ai/getting-started/models/models_overview/),
|
|
179
|
+
[xAI](https://docs.x.ai/developers/models), and
|
|
180
|
+
[MiniMax](https://platform.minimax.io/docs/guides/pricing-paygo). Gemini 3.7's
|
|
181
|
+
listed rate is the promotion effective through December 31, 2026.
|
|
182
|
+
|
|
183
|
+
`glm-5.3`, `qwen3.8-max`, and `kimi-code/k3-256k` are explicitly unpriced on
|
|
184
|
+
the transports used here. Their zero catalog entries prevent the estimator from
|
|
185
|
+
inventing a dollar figure; session reports disclose their exclusion rather than
|
|
186
|
+
presenting them as free.
|
|
159
187
|
|
|
160
188
|
### Dependencies
|
|
161
189
|
|
package/docs/JSON_SCHEMA.md
CHANGED
|
@@ -37,6 +37,8 @@ The schema is defined in `scripts/lib/schema.json` following JSON Schema Draft-0
|
|
|
37
37
|
"tokens_output": 300,
|
|
38
38
|
"latency_ms": 2345,
|
|
39
39
|
"model_version": "gemini-3.1-pro-preview",
|
|
40
|
+
"requested_model": "gemini-3.1-pro-preview",
|
|
41
|
+
"model_identity_source": "provider-reported",
|
|
40
42
|
"cli_version": "0.27.0",
|
|
41
43
|
"cli_compatibility": "capability-probed",
|
|
42
44
|
"timestamp": "2024-01-14T12:34:56Z"
|
|
@@ -198,6 +200,8 @@ Present only if Multi-Agent Debate is enabled (round >= 2):
|
|
|
198
200
|
"tokens_output": 300,
|
|
199
201
|
"latency_ms": 2345,
|
|
200
202
|
"model_version": "gemini-3.1-pro-preview",
|
|
203
|
+
"requested_model": "gemini-3.1-pro-preview",
|
|
204
|
+
"model_identity_source": "provider-reported",
|
|
201
205
|
"timestamp": "2024-01-14T12:34:56Z"
|
|
202
206
|
}
|
|
203
207
|
}
|
|
@@ -210,7 +214,9 @@ Present only if Multi-Agent Debate is enabled (round >= 2):
|
|
|
210
214
|
| `tokens_input` | integer | Prompt tokens, when the provider reported them (API mode only) |
|
|
211
215
|
| `tokens_output` | integer | Completion tokens, when the provider reported them (API mode only) |
|
|
212
216
|
| `latency_ms` | integer | Response time in ms |
|
|
213
|
-
| `model_version` | string |
|
|
217
|
+
| `model_version` | string | Best effective model identifier available to the transport |
|
|
218
|
+
| `requested_model` | string | Model identifier requested before provider resolution |
|
|
219
|
+
| `model_identity_source` | string | `provider-reported` \| `capability-probed` \| `requested-only` |
|
|
214
220
|
| `cli_version` | string | Observed CLI version for provenance; never a compatibility gate |
|
|
215
221
|
| `cli_compatibility` | string | Capability-probe result: `capability-probed` or `incompatible` |
|
|
216
222
|
| `timestamp` | string | ISO 8601 timestamp |
|
|
@@ -335,6 +341,8 @@ jq 'has("consultant") and has("response") and has("confidence")' output.json
|
|
|
335
341
|
"tokens_source": "estimated",
|
|
336
342
|
"latency_ms": 1850,
|
|
337
343
|
"model_version": "gemini-3.1-pro-preview",
|
|
344
|
+
"requested_model": "gemini-3.1-pro-preview",
|
|
345
|
+
"model_identity_source": "requested-only",
|
|
338
346
|
"timestamp": "2024-01-14T12:34:56Z"
|
|
339
347
|
}
|
|
340
348
|
}
|