ai-consultants 5.1.0 → 5.1.2
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 +10 -8
- package/CLAUDE.md +25 -10
- package/README.md +16 -16
- package/SKILL.md +7 -7
- package/docs/COST_RATES.md +53 -13
- package/docs/SETUP.md +81 -0
- package/docs/cost_rates.json +66 -24
- package/package.json +1 -1
- package/references/configuration.md +5 -5
- package/scripts/config.sh +18 -18
- package/scripts/configure.sh +37 -12
- package/scripts/lib/api.sh +10 -2
- package/scripts/lib/api_query.sh +4 -4
- package/scripts/lib/costs.sh +43 -1
- package/scripts/query_deepseek.sh +1 -1
- package/scripts/query_gemini.sh +1 -1
- package/scripts/query_grok.sh +1 -1
package/.env.example
CHANGED
|
@@ -116,17 +116,19 @@ ENABLE_DEEPSEEK=false
|
|
|
116
116
|
# =============================================================================
|
|
117
117
|
|
|
118
118
|
# Gemini - The Architect (CLI mode via Antigravity CLI: agy)
|
|
119
|
-
GEMINI_MODEL="Gemini 3.
|
|
119
|
+
GEMINI_MODEL="Gemini 3.8 Flash (High)"
|
|
120
120
|
GEMINI_TIMEOUT=180
|
|
121
121
|
GEMINI_CMD=agy
|
|
122
122
|
# API-mode model ID (only used when GEMINI_USE_API=true)
|
|
123
123
|
GEMINI_API_MODEL=gemini-3.1-pro-preview
|
|
124
124
|
# Gemini 3.1 Pro and 3.6 Flash remain valid CLI pins. API mode stays on the
|
|
125
|
-
# separately verified 3.1 Pro ID; gemini-3.
|
|
125
|
+
# separately verified 3.1 Pro ID; gemini-3.8-flash is an API-only opt-in until
|
|
126
126
|
# that transport completes its own authenticated smoke.
|
|
127
|
-
# Reasoning effort for the agy CLI
|
|
128
|
-
# low|medium|high
|
|
129
|
-
#
|
|
127
|
+
# Reasoning effort for the agy CLI, passed as --effort <value>. Current agy
|
|
128
|
+
# advertises low|medium|high|max globally, but named Gemini 3.8 High/Medium/Low
|
|
129
|
+
# variants reject --effort: leave GEMINI_REASONING_EFFORT unset for those CLI
|
|
130
|
+
# targets and choose the level with GEMINI_MODEL. Native Gemini 3.7/3.8 Flash
|
|
131
|
+
# API thinking supports low|medium|high through this setting.
|
|
130
132
|
# GEMINI_REASONING_EFFORT=
|
|
131
133
|
|
|
132
134
|
# Codex - The Pragmatist
|
|
@@ -160,7 +162,7 @@ KIMI_CMD=kimi
|
|
|
160
162
|
# Claude - The Synthesizer
|
|
161
163
|
CLAUDE_MODEL=claude-fable-5-1 # ai-consultants:default
|
|
162
164
|
# For the lower-cost standard/medium Claude tier, set CLAUDE_MODEL to
|
|
163
|
-
# claude-opus-5 (or apply_model_tier standard for a single run).
|
|
165
|
+
# claude-opus-5-5 (or apply_model_tier standard for a single run).
|
|
164
166
|
CLAUDE_TIMEOUT=240
|
|
165
167
|
CLAUDE_CMD=claude
|
|
166
168
|
CLAUDE_API_MAX_TOKENS=16384
|
|
@@ -206,7 +208,7 @@ GLM_API_URL=https://api.z.ai/api/coding/paas/v4/chat/completions
|
|
|
206
208
|
|
|
207
209
|
# Grok Build CLI + xAI API fallback - The Provocateur
|
|
208
210
|
GROK_CMD=grok
|
|
209
|
-
GROK_MODEL=grok-4.
|
|
211
|
+
GROK_MODEL=grok-4.7
|
|
210
212
|
GROK_TIMEOUT=180
|
|
211
213
|
GROK_MAX_TURNS=4
|
|
212
214
|
GROK_OAUTH_MODE=shared
|
|
@@ -215,7 +217,7 @@ GROK_API_URL=https://api.x.ai/v1/chat/completions
|
|
|
215
217
|
# GROK_REASONING_EFFORT= # max_quality sets xhigh (Grok Build maximum)
|
|
216
218
|
|
|
217
219
|
# DeepSeek - The Code Specialist
|
|
218
|
-
DEEPSEEK_MODEL=deepseek-
|
|
220
|
+
DEEPSEEK_MODEL=deepseek-flash
|
|
219
221
|
DEEPSEEK_TIMEOUT=180
|
|
220
222
|
DEEPSEEK_MAX_QUALITY_TIMEOUT=600
|
|
221
223
|
DEEPSEEK_API_MAX_TOKENS=16384
|
package/CLAUDE.md
CHANGED
|
@@ -6,7 +6,7 @@ AI Consultants is a multi-model coverage system that queries up to 10 AI consult
|
|
|
6
6
|
|
|
7
7
|
**Self-Exclusion**: The invoking agent is automatically excluded from both the panel and synthesis. Claude Code won't query or synthesize with Claude, Codex CLI won't query or synthesize with Codex, etc.
|
|
8
8
|
|
|
9
|
-
**Version**: 5.1.
|
|
9
|
+
**Version**: 5.1.2
|
|
10
10
|
|
|
11
11
|
## Distribution
|
|
12
12
|
|
|
@@ -349,10 +349,10 @@ Three normal tiers plus a `maximum` tier are configurable via `apply_model_tier(
|
|
|
349
349
|
|
|
350
350
|
| Tier | Description | Example Models |
|
|
351
351
|
|------|-------------|----------------|
|
|
352
|
-
| **premium** | Latest flagship models | claude-fable-5-1, Gemini 3.
|
|
352
|
+
| **premium** | Latest flagship models | claude-fable-5-1, Gemini 3.8 Flash (High), gpt-6-astra |
|
|
353
353
|
| **maximum** | All 10 consultants; maximum targets and highest provider effort | claude-fable-5-1, K3-256k, Qwen3.8-Max, MiniMax M3; Grok xhigh, GLM/DeepSeek max |
|
|
354
|
-
| **standard** | Good quality at reasonable cost | claude-opus-5, Gemini 3.
|
|
355
|
-
| **economy** | Optimized for speed and low cost | claude-haiku-4-5, Gemini 3.
|
|
354
|
+
| **standard** | Good quality at reasonable cost | claude-opus-5-5, Gemini 3.8 Flash (High), gpt-5.6-terra |
|
|
355
|
+
| **economy** | Optimized for speed and low cost | claude-haiku-4-5, Gemini 3.8 Flash (Low), gpt-5.6-luna |
|
|
356
356
|
|
|
357
357
|
**Default models are now premium tier** for maximum quality.
|
|
358
358
|
|
|
@@ -365,7 +365,7 @@ apply_model_tier "standard" # Set all consultants to standard models
|
|
|
365
365
|
apply_model_tier "economy" # Set all consultants to economy models
|
|
366
366
|
|
|
367
367
|
# Get model for a specific consultant and tier (v2.8.1)
|
|
368
|
-
get_model_for_tier "gemini" "premium" # → Gemini 3.
|
|
368
|
+
get_model_for_tier "gemini" "premium" # → Gemini 3.8 Flash (High) on agy
|
|
369
369
|
get_model_for_tier "claude" "economy" # → claude-haiku-4-5
|
|
370
370
|
```
|
|
371
371
|
|
|
@@ -389,12 +389,12 @@ All consultants now use premium models by default:
|
|
|
389
389
|
| Consultant | Default Model |
|
|
390
390
|
|------------|---------------|
|
|
391
391
|
| Claude | claude-fable-5-1 |
|
|
392
|
-
| Gemini | Gemini 3.
|
|
392
|
+
| Gemini | Gemini 3.8 Flash (High) (via agy CLI); API: gemini-3.1-pro-preview |
|
|
393
393
|
| Codex | gpt-6-astra |
|
|
394
394
|
| Mistral | CLI: mistral-medium-3.5; API: mistral-large-3 |
|
|
395
|
-
| DeepSeek | deepseek-
|
|
395
|
+
| DeepSeek | deepseek-flash (DeepSeek-V4.1-Flash) |
|
|
396
396
|
| GLM | glm-5.3-flash |
|
|
397
|
-
| Grok | grok-4.
|
|
397
|
+
| Grok | grok-4.7 |
|
|
398
398
|
| Qwen3 | qwen3.7-max |
|
|
399
399
|
| Kimi | kimi-code/k3 |
|
|
400
400
|
| MiniMax | MiniMax-M2.7 |
|
|
@@ -402,7 +402,7 @@ All consultants now use premium models by default:
|
|
|
402
402
|
Override with environment variables: `CLAUDE_MODEL`, `GEMINI_MODEL`, `CODEX_MODEL`, `KIMI_MODEL`, etc.
|
|
403
403
|
|
|
404
404
|
Grok is CLI-first through the official Grok Build `grok` command, with
|
|
405
|
-
`grok-4.
|
|
405
|
+
`grok-4.7` passed explicitly in headless mode. The prompt is delivered with
|
|
406
406
|
`--prompt-file`; HOME and CWD are isolated, built-in/MCP tools are denied, and
|
|
407
407
|
the strict sandbox prevents user or project extensions from joining the
|
|
408
408
|
consultation. The xAI Chat Completions path is retained only when the CLI is
|
|
@@ -588,7 +588,7 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
|
|
|
588
588
|
| `MAX_SESSION_COST` | 1.00 | Max budget ($) |
|
|
589
589
|
| `CLAUDE_MODEL` | claude-fable-5-1 | Claude model (use claude-opus-5 for lower-cost standard) |
|
|
590
590
|
| `CLAUDE_API_MAX_TOKENS` | 16384 | Claude API thinking + visible-output budget |
|
|
591
|
-
| `GEMINI_MODEL` | Gemini 3.
|
|
591
|
+
| `GEMINI_MODEL` | Gemini 3.8 Flash (High) | Gemini agy CLI model |
|
|
592
592
|
| `GEMINI_API_MODEL` | gemini-3.1-pro-preview | Gemini API-mode model ID (v2.15) |
|
|
593
593
|
| `CODEX_MODEL` | gpt-6-astra | Codex model (v2.5) |
|
|
594
594
|
| `MISTRAL_MODEL` | mistral-large-3 | Mistral model (v2.5) |
|
|
@@ -760,6 +760,21 @@ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/s
|
|
|
760
760
|
|
|
761
761
|
## Changelog
|
|
762
762
|
|
|
763
|
+
### v5.1.2 (2026-09-28)
|
|
764
|
+
|
|
765
|
+
- **Model selection remains transport-specific.** Grok 4.7 replaces the premium/maximum default, Opus 5.5 replaces standard Claude, and Gemini 3.8 High/Low replace the respective CLI targets. Fable and API Pro 3.1 remain separate defaults. Native Gemini 3.8 API thinking accepts low/medium/high and rejects incompatible explicit values before dispatch.
|
|
766
|
+
- **Configuration preservation.** Exact historical defaults migrate while explicit choices survive. Quoted values plus inline default/pin markers now round-trip correctly; the previous parser retained quotes after removing the comment and missed the migration.
|
|
767
|
+
- **Accounting.** Google GenerateContent output is candidates plus thoughts; prompt count already includes cached input. New rates remain estimates when no provider cost is available. Grok 4.7 rates double above 200K input; Gemini introductory rates expire on 2026-12-31 and require a catalog refresh.
|
|
768
|
+
- **Validation scope.** Exact implementation-head CI passed 34/34 suites; Grok 4.7, Opus 5.5 and Gemini 3.8 High/Low CLI smokes passed on that code. Gemini named variants select effort through the model name and reject an additional --effort; initial rejected attempts and separately authorized corrected successes are recorded. Frozen P1.6 inputs and saved Grok work remain untouched. No model-quality gain is inferred from smoke checks.
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
### v5.1.1 (2026-09-10)
|
|
772
|
+
|
|
773
|
+
- **DeepSeek V4.1 Flash policy.** `scripts/config.sh` selects `deepseek-flash` for the default and every tier. `scripts/configure.sh` migrates only the two exact historical unpinned defaults; durable pins and explicit overrides remain intact. No credentials are imported or personal configuration rewritten by the upgrade.
|
|
774
|
+
- **Conservative cost accounting.** `docs/cost_rates.json` and the catalog-independent fallbacks use $0.30/M input and $1.20/M output for Flash, including retired Flash aliases now served by the new model. `format_cost_caveats` discloses the peak/cache-miss assumption and excluded discounts; estimates are not provider invoices. Other legacy rates are retained as historical estimates.
|
|
775
|
+
- **Verification and scope.** PR #27 passed all 32 CI suites, plus local API 101, configure 138 and core 451 checks. One authorized API request on `96816b5` returned HTTP 200 and a correct structured expiry-boundary answer, with `deepseek-flash` provider-reported, max effort, 119 input / 602 output measured tokens. The shared transport is unchanged; provider identity is not rewritten into a version label. No frozen P1.6 input or live benchmark claim changes.
|
|
776
|
+
|
|
777
|
+
|
|
763
778
|
### v5.1.0 (2026-09-09)
|
|
764
779
|
|
|
765
780
|
- **Fable and Astra model policy.** `scripts/config.sh` and `scripts/configure.sh` align default/premium/maximum with Fable 5.1 and Astra, retain Opus 5/Terra for standard and Haiku/Luna for economy, and migrate exact historical unpinned Codex defaults while recording their origin. `resolve_codex_effort` applies implicit high per request so a later tier cannot inherit an automatically exported value.
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# AI Consultants v5.1.
|
|
1
|
+
# AI Consultants v5.1.2
|
|
2
2
|
|
|
3
3
|
> **Coverage, not a single guess.** A panel of up to 10 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)
|
|
@@ -385,7 +385,7 @@ INVOKING_AGENT=codex ./scripts/consult_all.sh "Question" # Codex excluded
|
|
|
385
385
|
| **Grok** | `grok` | The Provocateur | Challenge conventions |
|
|
386
386
|
| **MiniMax** | `mmx` | The Pragmatic Optimizer | Performance, efficiency, pragmatism |
|
|
387
387
|
|
|
388
|
-
Grok uses Grok Build with `grok-4.
|
|
388
|
+
Grok uses Grok Build with `grok-4.7` in an isolated, tool-free sandbox. Prompts
|
|
389
389
|
are passed through a private file rather than process arguments. It falls back
|
|
390
390
|
to the xAI API only when the CLI is missing, cannot launch, or has no usable
|
|
391
391
|
authentication and `GROK_API_KEY` is configured; post-launch request failures
|
|
@@ -412,7 +412,7 @@ the observed version is response provenance only.
|
|
|
412
412
|
| Consultant | Default Model | Persona | Focus |
|
|
413
413
|
|------------|---------------|---------|-------|
|
|
414
414
|
| **GLM** | glm-5.3-flash | The Methodologist | Structured approaches |
|
|
415
|
-
| **DeepSeek** | deepseek-
|
|
415
|
+
| **DeepSeek** | deepseek-flash (V4.1 Flash) | The Code Specialist | Algorithms, code generation |
|
|
416
416
|
|
|
417
417
|
### Installing Consultant CLIs
|
|
418
418
|
|
|
@@ -426,7 +426,7 @@ pip install mistral-vibe # Mistral
|
|
|
426
426
|
# Optional CLI-based consultants
|
|
427
427
|
curl -L code.kimi.com/install.sh | bash # Kimi K3
|
|
428
428
|
npm install -g @qwen-code/qwen-code@latest # Qwen (alternative to API)
|
|
429
|
-
curl -fsSL https://x.ai/cli/install.sh | bash # Grok Build (grok-4.
|
|
429
|
+
curl -fsSL https://x.ai/cli/install.sh | bash # Grok Build (grok-4.7)
|
|
430
430
|
npm install -g mmx-cli # MiniMax
|
|
431
431
|
|
|
432
432
|
```
|
|
@@ -483,27 +483,27 @@ and cannot support a comprehensive coverage claim.
|
|
|
483
483
|
|
|
484
484
|
| Consultant | `max_quality` | Premium | Standard | Economy |
|
|
485
485
|
|------------|---------------|---------|----------|---------|
|
|
486
|
-
| Claude | claude-fable-5-1 | claude-fable-5-1 | claude-opus-5 | claude-haiku-4-5 |
|
|
487
|
-
| Gemini CLI | Gemini 3.
|
|
486
|
+
| Claude | claude-fable-5-1 | claude-fable-5-1 | claude-opus-5-5 | claude-haiku-4-5 |
|
|
487
|
+
| Gemini CLI | Gemini 3.8 Flash (High) | Gemini 3.8 Flash (High) | Gemini 3.8 Flash (High) | Gemini 3.8 Flash (Low) |
|
|
488
488
|
| Gemini API | gemini-3.1-pro-preview | gemini-3.1-pro-preview | gemini-3.1-pro-preview | gemini-3.1-pro-preview |
|
|
489
489
|
| Codex | gpt-6-astra | gpt-6-astra | gpt-5.6-terra | gpt-5.6-luna |
|
|
490
490
|
| Mistral CLI | mistral-medium-3.5 | mistral-medium-3.5 | mistral-medium-3.5 | devstral-small-2 |
|
|
491
491
|
| Mistral API | mistral-large-3 | mistral-large-3 | mistral-large-3 | mistral-large-3 |
|
|
492
|
-
| DeepSeek | deepseek-
|
|
492
|
+
| DeepSeek | deepseek-flash | deepseek-flash | deepseek-flash | deepseek-flash |
|
|
493
493
|
| GLM | glm-5.3-flash | glm-5.3-flash | glm-5.3-flash | glm-4-flash |
|
|
494
|
-
| Grok | grok-4.
|
|
494
|
+
| Grok | grok-4.7 | grok-4.7 | grok-4.5 | grok-4.5 |
|
|
495
495
|
| Qwen3 | qwen3.8-max when Token Plan is configured; otherwise qwen3.7-max | qwen3.7-max | qwen3.6-35b-a3b | qwen3-32b |
|
|
496
496
|
| Kimi | kimi-code/k3-256k | kimi-code/k3 | kimi-code/k3 | kimi-code/k3 |
|
|
497
497
|
| MiniMax | MiniMax-M3 | MiniMax-M2.7 | MiniMax-M2.7 | MiniMax-M2.5 |
|
|
498
498
|
|
|
499
|
-
Promotion is transport-specific. Gemini 3.
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
`gemini-3.
|
|
503
|
-
verified. The new Mistral API IDs (`mistral-medium-3-5`,
|
|
499
|
+
Promotion is transport-specific. Gemini 3.8 Flash High is the new CLI target;
|
|
500
|
+
Low serves economy. Both are available in the installed `agy models` inventory;
|
|
501
|
+
High/Low CLI smokes passed on 2026-09-28 with capability-probed identity. Earlier Gemini 3.7 evidence remains historical.
|
|
502
|
+
The Google API default remains `gemini-3.1-pro-preview`; `gemini-3.8-flash` is
|
|
503
|
+
an explicit API opt-in whose live transport is not yet verified. The new Mistral API IDs (`mistral-medium-3-5`,
|
|
504
504
|
`mistral-large-2512`, `mistral-small-2603`) remain catalogued opt-ins. Claude
|
|
505
505
|
Fable 5.1 is the default/premium/maximum target; use
|
|
506
|
-
`CLAUDE_MODEL=claude-opus-5` for the lower-cost standard override. Selecting a preset later intentionally reapplies that
|
|
506
|
+
`CLAUDE_MODEL=claude-opus-5-5` for the lower-cost standard override. Selecting a preset later intentionally reapplies that
|
|
507
507
|
preset's tier and can replace an explicit model override for the run.
|
|
508
508
|
Qwen3.8-Max is likewise selected by `max_quality` only when API mode already
|
|
509
509
|
points at an authenticated OpenAI-compatible Token Plan `/chat/completions`
|
|
@@ -634,7 +634,7 @@ MAX_SESSION_COST=1.00 # USD budget cap (paired with ENABLE_BUDGET_LIMIT=t
|
|
|
634
634
|
KIMI_MODEL=kimi-code/k3 # Pin the Kimi consultant to K3
|
|
635
635
|
CLAUDE_API_MAX_TOKENS=16384 # Shared thinking + visible-output budget in API mode
|
|
636
636
|
MISTRAL_CLI_MODEL=mistral-medium-3.5 # Vibe alias; MISTRAL_MODEL remains API-only
|
|
637
|
-
GEMINI_MODEL="Gemini 3.
|
|
637
|
+
GEMINI_MODEL="Gemini 3.8 Flash (High)" # agy CLI; API uses GEMINI_API_MODEL
|
|
638
638
|
```
|
|
639
639
|
|
|
640
640
|
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: 5.1.
|
|
8
|
+
version: 5.1.2
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# AI Consultants v5.1.
|
|
11
|
+
# AI Consultants v5.1.2 - 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
|
|
|
@@ -86,7 +86,7 @@ Configuration (presets, strategies, features, personas, API keys) can be managed
|
|
|
86
86
|
|
|
87
87
|
**API-only consultants**: GLM (The Methodologist), DeepSeek (The Code Specialist)
|
|
88
88
|
|
|
89
|
-
**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.
|
|
89
|
+
**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.7` 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.
|
|
90
90
|
|
|
91
91
|
Grok CLI OAuth defaults to `GROK_OAUTH_MODE=shared`: concurrent invocations
|
|
92
92
|
share one runner-owned persistent `GROK_HOME` so the vendor auth lock can
|
|
@@ -103,10 +103,10 @@ the observed version is recorded only as response provenance.
|
|
|
103
103
|
|
|
104
104
|
The `max_quality` preset enables all 10 consultants. It uses the separately
|
|
105
105
|
smoke-tested K3-256k and MiniMax M3 targets, plus Qwen3.8-Max when an authenticated Token Plan transport is
|
|
106
|
-
already configured. Gemini 3.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
API
|
|
106
|
+
already configured. Gemini 3.8 Flash High is the new `agy` target for maximum,
|
|
107
|
+
premium, and standard CLI tiers; Low serves economy. The installed model inventory
|
|
108
|
+
lists both; High/Low CLI smokes passed on 2026-09-28 with capability-probed identity.
|
|
109
|
+
The Gemini API default remains 3.1 Pro; `gemini-3.8-flash` is an explicit API opt-in. Claude Fable 5.1 is the default/premium/maximum target; the new
|
|
110
110
|
Mistral API IDs remain explicit opt-ins.
|
|
111
111
|
Grok, GLM, and DeepSeek receive their
|
|
112
112
|
highest accepted reasoning effort in this preset (`xhigh`, `max`, and `max`
|
package/docs/COST_RATES.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Cost Rates - AI Consultants v5.1.
|
|
1
|
+
# Cost Rates - AI Consultants v5.1.2
|
|
2
2
|
|
|
3
3
|
This page documents the per-token rates used by the cost tracking system.
|
|
4
4
|
|
|
@@ -23,8 +23,8 @@ models programmatically.
|
|
|
23
23
|
|
|
24
24
|
| Model | Tier | Cost/1K | Consultant |
|
|
25
25
|
|-------|------|---------|------------|
|
|
26
|
-
| Gemini 3.
|
|
27
|
-
| Gemini 3.
|
|
26
|
+
| Gemini 3.8 Flash (High) | Maximum/Premium/Standard | $0.00075 | Gemini (CLI smoke passed; API-equivalent estimate; promotional through 2026-12-31) |
|
|
27
|
+
| Gemini 3.8 Flash (Low) | Economy | $0.00075 | Gemini (CLI smoke passed; API-equivalent estimate; promotional through 2026-12-31) |
|
|
28
28
|
| Gemini 3.1 Pro (High) | CLI opt-in | $0.002 | Gemini (agy CLI) |
|
|
29
29
|
| gemini-3.1-pro-preview | API default | $0.00125 | Gemini API |
|
|
30
30
|
| Gemini 3.6 Flash (High/Low) | Legacy CLI pins | $0.0015 | Gemini |
|
|
@@ -33,7 +33,8 @@ models programmatically.
|
|
|
33
33
|
| gpt-5.6-terra | Standard | $0.002 | Codex |
|
|
34
34
|
| gpt-5.6-luna | Economy | $0.0002 | Codex |
|
|
35
35
|
| claude-fable-5-1 | Maximum/Premium | $0.010 | Claude |
|
|
36
|
-
| claude-opus-5 | Standard | $0.
|
|
36
|
+
| claude-opus-5-5 | Standard | $0.004 | Claude |
|
|
37
|
+
| claude-opus-5 | Legacy override | $0.005 | Claude |
|
|
37
38
|
| claude-fable-5 | Legacy pins | $0.010 | Claude |
|
|
38
39
|
| claude-sonnet-5 | Legacy pins | $0.003 | Claude |
|
|
39
40
|
| claude-haiku-4-5 | Economy | $0.001 | Claude |
|
|
@@ -45,12 +46,14 @@ models programmatically.
|
|
|
45
46
|
| composer-2.5 | Legacy | $0.0005 | Removed Cursor consultant |
|
|
46
47
|
| composer-2 | Legacy | $0.0005 | Removed Cursor consultant |
|
|
47
48
|
| gemini-3-flash | Legacy | $0.0005 | Removed Cursor consultant |
|
|
48
|
-
| deepseek-v4-pro |
|
|
49
|
-
| deepseek-
|
|
49
|
+
| deepseek-v4-pro | Legacy explicit override | $0.000435 | DeepSeek |
|
|
50
|
+
| deepseek-flash | All tiers | $0.0003 | DeepSeek (peak, cache miss) |
|
|
51
|
+
| deepseek-v4-flash / deepseek-v4-flash-vision-exp | Retired aliases → V4.1 Flash | $0.0003 | DeepSeek (peak, cache miss) |
|
|
50
52
|
| glm-5.3-flash | Maximum/Premium/Standard | Unpriced | GLM coding-plan endpoint |
|
|
51
53
|
| glm-5.3 | Legacy pins | Unpriced | GLM coding-plan endpoint |
|
|
52
54
|
| glm-4-flash | Economy | $0.001 | GLM |
|
|
53
|
-
| grok-4.
|
|
55
|
+
| grok-4.7 | Maximum/Premium | $0.002 | Grok |
|
|
56
|
+
| grok-4.6 | Legacy override | $0.002 | Grok |
|
|
54
57
|
| grok-4.5 | Standard/Economy | $0.002 | Grok |
|
|
55
58
|
| qwen3.7-max | Premium | $0.0012 | Qwen3 |
|
|
56
59
|
| qwen3.6-35b-a3b | Standard | $0.000163 | Qwen3 |
|
|
@@ -67,8 +70,8 @@ models programmatically.
|
|
|
67
70
|
|
|
68
71
|
| Model | Tier | Cost/1K | Consultant |
|
|
69
72
|
|-------|------|---------|------------|
|
|
70
|
-
| Gemini 3.
|
|
71
|
-
| Gemini 3.
|
|
73
|
+
| Gemini 3.8 Flash (High) | Maximum/Premium/Standard | $0.00375 | Gemini (CLI smoke passed; API-equivalent estimate; promotional through 2026-12-31) |
|
|
74
|
+
| Gemini 3.8 Flash (Low) | Economy | $0.00375 | Gemini (CLI smoke passed; API-equivalent estimate; promotional through 2026-12-31) |
|
|
72
75
|
| Gemini 3.1 Pro (High) | CLI opt-in | $0.012 | Gemini (agy CLI) |
|
|
73
76
|
| gemini-3.1-pro-preview | API default | $0.005 | Gemini API |
|
|
74
77
|
| Gemini 3.6 Flash (High/Low) | Legacy CLI pins | $0.0075 | Gemini |
|
|
@@ -77,7 +80,8 @@ models programmatically.
|
|
|
77
80
|
| gpt-5.6-terra | Standard | $0.012 | Codex |
|
|
78
81
|
| gpt-5.6-luna | Economy | $0.0012 | Codex |
|
|
79
82
|
| claude-fable-5-1 | Maximum/Premium | $0.050 | Claude |
|
|
80
|
-
| claude-opus-5 | Standard | $0.
|
|
83
|
+
| claude-opus-5-5 | Standard | $0.020 | Claude |
|
|
84
|
+
| claude-opus-5 | Legacy override | $0.025 | Claude |
|
|
81
85
|
| claude-fable-5 | Legacy pins | $0.050 | Claude |
|
|
82
86
|
| claude-sonnet-5 | Legacy pins | $0.015 | Claude |
|
|
83
87
|
| claude-haiku-4-5 | Economy | $0.005 | Claude |
|
|
@@ -89,12 +93,14 @@ models programmatically.
|
|
|
89
93
|
| composer-2.5 | Legacy | $0.0025 | Removed Cursor consultant |
|
|
90
94
|
| composer-2 | Legacy | $0.0025 | Removed Cursor consultant |
|
|
91
95
|
| gemini-3-flash | Legacy | $0.003 | Removed Cursor consultant |
|
|
92
|
-
| deepseek-v4-pro |
|
|
93
|
-
| deepseek-
|
|
96
|
+
| deepseek-v4-pro | Legacy explicit override | $0.00087 | DeepSeek |
|
|
97
|
+
| deepseek-flash | All tiers | $0.0012 | DeepSeek (peak) |
|
|
98
|
+
| deepseek-v4-flash / deepseek-v4-flash-vision-exp | Retired aliases → V4.1 Flash | $0.0012 | DeepSeek (peak) |
|
|
94
99
|
| glm-5.3-flash | Maximum/Premium/Standard | Unpriced | GLM coding-plan endpoint |
|
|
95
100
|
| glm-5.3 | Legacy pins | Unpriced | GLM coding-plan endpoint |
|
|
96
101
|
| glm-4-flash | Economy | $0.003 | GLM |
|
|
97
|
-
| grok-4.
|
|
102
|
+
| grok-4.7 | Maximum/Premium | $0.006 | Grok |
|
|
103
|
+
| grok-4.6 | Legacy override | $0.006 | Grok |
|
|
98
104
|
| grok-4.5 | Standard/Economy | $0.006 | Grok |
|
|
99
105
|
| qwen3.7-max | Premium | $0.006 | Qwen3 |
|
|
100
106
|
| qwen3.6-35b-a3b | Standard | $0.0009 | Qwen3 |
|
|
@@ -191,3 +197,37 @@ presenting them as free.
|
|
|
191
197
|
Cost tracking requires:
|
|
192
198
|
- `bc` - For floating point calculations
|
|
193
199
|
- `jq` - For JSON parsing
|
|
200
|
+
|
|
201
|
+
## DeepSeek V4.1 Flash pricing
|
|
202
|
+
|
|
203
|
+
As of 2026-09-10, the official API name `deepseek-flash` selects V4.1 Flash.
|
|
204
|
+
The estimator uses peak cache-miss rates: $0.30/M input and $1.20/M output.
|
|
205
|
+
Off-peak rates are $0.15/M input and $0.60/M output; cached input is $0.006/M
|
|
206
|
+
peak or $0.003/M off-peak. Peak hours are weekdays 01:00–04:00 and 06:00–10:00
|
|
207
|
+
UTC. The estimate deliberately excludes these discounts; it is not an invoice.
|
|
208
|
+
Legacy Flash and Flash Vision Exp aliases are now served and billed as V4.1 Flash.
|
|
209
|
+
Other legacy catalog entries remain historical estimates, not newly verified quotes.
|
|
210
|
+
Source: [DeepSeek models and pricing](https://api-docs.deepseek.com/quick_start/pricing/).
|
|
211
|
+
|
|
212
|
+
## Grok 4.7 and Opus 5.5
|
|
213
|
+
|
|
214
|
+
Grok 4.7 uses $2/M input and $6/M output at standard API rates; above 200K
|
|
215
|
+
input tokens the estimator applies $4/M and $12/M to the whole request. It
|
|
216
|
+
excludes cached-input discounts and regional, priority and Grok Build Fast
|
|
217
|
+
adjustments. CLI subscription usage is not an API invoice. Opus 5.5 uses
|
|
218
|
+
$4/M input and $20/M output; measured Claude provider cost takes precedence
|
|
219
|
+
when present. Otherwise cache/service adjustments are excluded from estimates.
|
|
220
|
+
|
|
221
|
+
Sources checked 2026-09-26: [xAI release notes](https://docs.x.ai/developers/release-notes)
|
|
222
|
+
and [Opus 5.5](https://platform.claude.com/docs/en/models/opus-5-5/overview).
|
|
223
|
+
|
|
224
|
+
## Gemini 3.8 Flash
|
|
225
|
+
|
|
226
|
+
CLI High/Medium/Low and API ID `gemini-3.8-flash` are priced at the promotional
|
|
227
|
+
API-equivalent rate: $0.75/M input, $3.75/M output through 2026-12-31. Standard
|
|
228
|
+
rates from 2027-01-01 are $1.50/M input and $7.50/M output; the static catalog
|
|
229
|
+
must be refreshed at expiry. Cache, service-tier and subscription adjustments
|
|
230
|
+
are excluded: a CLI estimate is not a subscription invoice. Legacy model rates
|
|
231
|
+
remain in the catalog. API Pro 3.1 is still the default for API mode.
|
|
232
|
+
Source: [Google latest-model guide](https://ai.google.dev/gemini-api/docs/latest-model),
|
|
233
|
+
checked 2026-09-27.
|
package/docs/SETUP.md
CHANGED
|
@@ -850,3 +850,84 @@ argument list. Hidden flags such as `--no-memory` are still required in the
|
|
|
850
850
|
actual request even when omitted from public help. Unsupported mandatory flags
|
|
851
851
|
block dispatch; the optional `--no-auto-update` guard is used when its parser
|
|
852
852
|
probe succeeds, including on CLIs that hide it from help.
|
|
853
|
+
|
|
854
|
+
### DeepSeek V4.1 Flash
|
|
855
|
+
|
|
856
|
+
DeepSeek uses the HTTP API with `DEEPSEEK_MODEL=deepseek-flash` in every tier.
|
|
857
|
+
This is the official API alias for DeepSeek-V4.1-Flash as of 2026-09-10, not a
|
|
858
|
+
version identity inferred from the requested name. Provider-reported model
|
|
859
|
+
metadata is retained unchanged. `max_quality` continues to request `max` effort;
|
|
860
|
+
other tiers leave effort to the provider unless explicitly configured. The
|
|
861
|
+
provider defaults to thinking mode at high effort. Existing text-only Chat
|
|
862
|
+
Completions requests and the 16,384-token completion budget remain compatible.
|
|
863
|
+
|
|
864
|
+
`configure` migrates exact unpinned `deepseek-v4-pro` and `deepseek-v4-flash`
|
|
865
|
+
values; `# ai-consultants:pin`, environment overrides and `--set` preserve explicit
|
|
866
|
+
choices. Old Flash aliases are still accepted but route to V4.1 Flash upstream.
|
|
867
|
+
An explicit pin preserves the requested ID, not a guarantee against provider
|
|
868
|
+
routing changes. Peak cache-miss costs are estimates, excluding cache/off-peak
|
|
869
|
+
discounts. An authorized one-attempt API smoke on 2026-09-10 passed with a structured
|
|
870
|
+
response and provider-reported `deepseek-flash`; no version identity was invented
|
|
871
|
+
from the alias. No CLI transport is introduced.
|
|
872
|
+
|
|
873
|
+
Sources: [models/pricing](https://api-docs.deepseek.com/quick_start/pricing/) and
|
|
874
|
+
[thinking mode](https://api-docs.deepseek.com/guides/thinking_mode/).
|
|
875
|
+
|
|
876
|
+
### Grok 4.7 and Claude Opus 5.5
|
|
877
|
+
|
|
878
|
+
Grok defaults to `grok-4.7` for premium/maximum; standard/economy stay on
|
|
879
|
+
`grok-4.5`. Configure migrates exact unpinned persisted `grok-4.5`/`grok-4.6`
|
|
880
|
+
defaults. Pins, environment overrides, `--set` and unrelated IDs survive.
|
|
881
|
+
The existing capability/model inventory probes, strict sandbox and OAuth
|
|
882
|
+
isolation still apply; the Grok 4.7 Fast variant is not implicitly selected.
|
|
883
|
+
|
|
884
|
+
Claude standard/medium selects `claude-opus-5-5`; default/premium/maximum
|
|
885
|
+
remain Fable 5.1 and economy remains Haiku 4.5. Select Opus directly with
|
|
886
|
+
`configure --set CLAUDE_MODEL=claude-opus-5-5`. The historical unpinned Claude
|
|
887
|
+
default migration to Fable is unchanged; explicit old Opus pins stay pinned.
|
|
888
|
+
|
|
889
|
+
Opus 5.5 has always-on adaptive thinking, including empty thinking display
|
|
890
|
+
blocks. Our tool-free single-turn API request omits thinking overrides, sampling
|
|
891
|
+
parameters and forced tool choice; parsing selects visible text by block type.
|
|
892
|
+
The API therefore uses the provider's default effort (medium), with the existing
|
|
893
|
+
16384 total-output budget. The CLI retains explicit `CLAUDE_REASONING_EFFORT`
|
|
894
|
+
control. Content identity and terminal success remain separate checks.
|
|
895
|
+
|
|
896
|
+
These additions have offline regression coverage. Grok 4.7 and Opus 5.5 CLI
|
|
897
|
+
smokes passed on 2026-09-28. New API transports remain separately unverified. Frozen
|
|
898
|
+
P1.6 benchmark IDs/efforts/preregistration are not changed by this update.
|
|
899
|
+
See the [Opus migration guide](https://platform.claude.com/docs/en/models/opus-5-5/migration-guide)
|
|
900
|
+
and [Grok 4.7](https://docs.x.ai/developers/grok-4-7).
|
|
901
|
+
|
|
902
|
+
### Gemini 3.8 Flash
|
|
903
|
+
|
|
904
|
+
The installed `agy models` inventory on 2026-09-27 lists Gemini 3.8 Flash
|
|
905
|
+
(High), (Medium) and (Low). CLI default/maximum/premium/standard now select High;
|
|
906
|
+
economy selects Low. Medium remains an explicit `GEMINI_MODEL` choice. Inventory
|
|
907
|
+
evidence is capability-probed, not provider attestation of a generated answer.
|
|
908
|
+
|
|
909
|
+
Configure migrates unpinned historical Pro 3.1 High and Flash 3.7 High/Low
|
|
910
|
+
defaults, preserving the High/Low choice. Pins, environment/--set overrides and
|
|
911
|
+
unrelated models are preserved. API mode remains on `gemini-3.1-pro-preview`.
|
|
912
|
+
Select `GEMINI_API_MODEL=gemini-3.8-flash` explicitly to use Flash via API; its
|
|
913
|
+
native thinking levels are low/medium/high. Other explicit efforts fail before
|
|
914
|
+
dispatch. With no effort setting, the provider's API default is medium.
|
|
915
|
+
|
|
916
|
+
Inventory discovery performed no inference. Separately authorized High/Low CLI
|
|
917
|
+
smokes passed on 2026-09-28, using the named variant without --effort. This is
|
|
918
|
+
capability-probed provenance, not provider content-model attestation. Prices are promotional estimates
|
|
919
|
+
through 2026-12-31; see [Google's model guide](https://ai.google.dev/gemini-api/docs/latest-model).
|
|
920
|
+
The frozen P1.6 inputs remain unchanged.
|
|
921
|
+
|
|
922
|
+
For Google GenerateContent accounting, output tokens include both
|
|
923
|
+
`candidatesTokenCount` and `thoughtsTokenCount`. Input uses `promptTokenCount`,
|
|
924
|
+
which already includes cached content. This avoids dropping billed thinking
|
|
925
|
+
or adding cache tokens twice; it applies to the existing Google API path too.
|
|
926
|
+
See [UsageMetadata](https://ai.google.dev/api/generate-content).
|
|
927
|
+
|
|
928
|
+
For named Gemini 3.8 Flash High/Medium/Low CLI variants, leave
|
|
929
|
+
`GEMINI_REASONING_EFFORT` unset: the level is selected by `GEMINI_MODEL`, and
|
|
930
|
+
`agy` rejects an additional `--effort` for these variants. The CLI's general
|
|
931
|
+
help lists effort values for other supported model selections; it does not
|
|
932
|
+
establish support for every model. Native API thinking remains separately
|
|
933
|
+
configured with low/medium/high.
|
package/docs/cost_rates.json
CHANGED
|
@@ -1,7 +1,49 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "5.1.
|
|
3
|
-
"updated": "2026-
|
|
2
|
+
"version": "5.1.2",
|
|
3
|
+
"updated": "2026-09-28",
|
|
4
4
|
"models": {
|
|
5
|
+
"gemini-3.8-flash": {
|
|
6
|
+
"input": 0.00075,
|
|
7
|
+
"output": 0.00375,
|
|
8
|
+
"notes": "Promotional API-equivalent estimate through 2026-12-31; standard from 2027-01-01: 0.0015/0.0075 per 1K. Cache/service adjustments excluded; not a CLI invoice."
|
|
9
|
+
},
|
|
10
|
+
"Gemini 3.8 Flash (High)": {
|
|
11
|
+
"input": 0.00075,
|
|
12
|
+
"output": 0.00375,
|
|
13
|
+
"notes": "Promotional API-equivalent estimate through 2026-12-31; standard from 2027-01-01: 0.0015/0.0075 per 1K. Cache/service adjustments excluded; not a CLI invoice."
|
|
14
|
+
},
|
|
15
|
+
"Gemini 3.8 Flash (Medium)": {
|
|
16
|
+
"input": 0.00075,
|
|
17
|
+
"output": 0.00375,
|
|
18
|
+
"notes": "Promotional API-equivalent estimate through 2026-12-31; standard from 2027-01-01: 0.0015/0.0075 per 1K. Cache/service adjustments excluded; not a CLI invoice."
|
|
19
|
+
},
|
|
20
|
+
"Gemini 3.8 Flash (Low)": {
|
|
21
|
+
"input": 0.00075,
|
|
22
|
+
"output": 0.00375,
|
|
23
|
+
"notes": "Promotional API-equivalent estimate through 2026-12-31; standard from 2027-01-01: 0.0015/0.0075 per 1K. Cache/service adjustments excluded; not a CLI invoice."
|
|
24
|
+
},
|
|
25
|
+
"claude-opus-5-5": {
|
|
26
|
+
"input": 0.004,
|
|
27
|
+
"output": 0.020,
|
|
28
|
+
"notes": "Standard API list-rate estimate; cache/service adjustments excluded. Verified 2026-09-26."
|
|
29
|
+
},
|
|
30
|
+
"grok-4.7": {
|
|
31
|
+
"input": 0.002,
|
|
32
|
+
"output": 0.006,
|
|
33
|
+
"notes": "Standard API estimate; above 200K input both rates double for the request. Cache, regional, priority and Fast rates excluded. Verified 2026-09-26."
|
|
34
|
+
},
|
|
35
|
+
"deepseek-flash": {
|
|
36
|
+
"input": 0.0003,
|
|
37
|
+
"output": 0.0012,
|
|
38
|
+
"provider": "DeepSeek",
|
|
39
|
+
"notes": "DeepSeek-V4.1-Flash, verified 2026-09-10. Peak cache-miss estimate; off-peak and cache-hit discounts excluded. See https://api-docs.deepseek.com/quick_start/pricing/"
|
|
40
|
+
},
|
|
41
|
+
"deepseek-v4-flash-vision-exp": {
|
|
42
|
+
"input": 0.0003,
|
|
43
|
+
"output": 0.0012,
|
|
44
|
+
"provider": "DeepSeek",
|
|
45
|
+
"notes": "Retired alias served by V4.1 Flash; peak cache-miss estimate."
|
|
46
|
+
},
|
|
5
47
|
"_comment_units": "All rates are USD per 1,000 tokens (per-1K). lib/costs.sh computes cost as (token_count / 1000) * rate, so every value here MUST be a per-1K rate = (provider $/1M price) / 1000. Do NOT paste $/MTok figures directly.",
|
|
6
48
|
"_comment_premium": "Premium tier models - Sep 2026",
|
|
7
49
|
"claude-fable-5-1": {
|
|
@@ -380,8 +422,8 @@
|
|
|
380
422
|
"output": 0.003
|
|
381
423
|
},
|
|
382
424
|
"deepseek-v4-flash": {
|
|
383
|
-
"input": 0.
|
|
384
|
-
"output": 0.
|
|
425
|
+
"input": 0.0003,
|
|
426
|
+
"output": 0.0012
|
|
385
427
|
},
|
|
386
428
|
"glm-5.2": {
|
|
387
429
|
"input": 0.00098,
|
|
@@ -431,12 +473,12 @@
|
|
|
431
473
|
"consultant_fallbacks": {
|
|
432
474
|
"_comment": "Premium defaults - Updated Sep 2026",
|
|
433
475
|
"claude": "claude-fable-5-1",
|
|
434
|
-
"gemini": "Gemini 3.
|
|
476
|
+
"gemini": "Gemini 3.8 Flash (High)",
|
|
435
477
|
"codex": "gpt-6-astra",
|
|
436
478
|
"mistral": "mistral-large-3",
|
|
437
|
-
"deepseek": "deepseek-
|
|
479
|
+
"deepseek": "deepseek-flash",
|
|
438
480
|
"glm": "glm-5.3-flash",
|
|
439
|
-
"grok": "grok-4.
|
|
481
|
+
"grok": "grok-4.7",
|
|
440
482
|
"qwen3": "qwen3.7-max",
|
|
441
483
|
"kimi": "kimi-code/k3",
|
|
442
484
|
"minimax": "minimax-m2.7"
|
|
@@ -445,34 +487,34 @@
|
|
|
445
487
|
"_comment": "Model tiers for apply_model_tier() function",
|
|
446
488
|
"maximum": {
|
|
447
489
|
"claude": "claude-fable-5-1",
|
|
448
|
-
"gemini": "Gemini 3.
|
|
490
|
+
"gemini": "Gemini 3.8 Flash (High)",
|
|
449
491
|
"codex": "gpt-6-astra",
|
|
450
492
|
"mistral": "mistral-medium-3.5",
|
|
451
|
-
"deepseek": "deepseek-
|
|
493
|
+
"deepseek": "deepseek-flash",
|
|
452
494
|
"glm": "glm-5.3-flash",
|
|
453
|
-
"grok": "grok-4.
|
|
495
|
+
"grok": "grok-4.7",
|
|
454
496
|
"qwen3": "qwen3.8-max",
|
|
455
497
|
"kimi": "kimi-code/k3-256k",
|
|
456
498
|
"minimax": "MiniMax-M3"
|
|
457
499
|
},
|
|
458
500
|
"premium": {
|
|
459
501
|
"claude": "claude-fable-5-1",
|
|
460
|
-
"gemini": "Gemini 3.
|
|
502
|
+
"gemini": "Gemini 3.8 Flash (High)",
|
|
461
503
|
"codex": "gpt-6-astra",
|
|
462
504
|
"mistral": "mistral-medium-3.5",
|
|
463
|
-
"deepseek": "deepseek-
|
|
505
|
+
"deepseek": "deepseek-flash",
|
|
464
506
|
"glm": "glm-5.3-flash",
|
|
465
|
-
"grok": "grok-4.
|
|
507
|
+
"grok": "grok-4.7",
|
|
466
508
|
"qwen3": "qwen3.7-max",
|
|
467
509
|
"kimi": "kimi-code/k3",
|
|
468
510
|
"minimax": "MiniMax-M2.7"
|
|
469
511
|
},
|
|
470
512
|
"standard": {
|
|
471
|
-
"claude": "claude-opus-5",
|
|
472
|
-
"gemini": "Gemini 3.
|
|
513
|
+
"claude": "claude-opus-5-5",
|
|
514
|
+
"gemini": "Gemini 3.8 Flash (High)",
|
|
473
515
|
"codex": "gpt-5.6-terra",
|
|
474
516
|
"mistral": "mistral-medium-3.5",
|
|
475
|
-
"deepseek": "deepseek-
|
|
517
|
+
"deepseek": "deepseek-flash",
|
|
476
518
|
"glm": "glm-5.3-flash",
|
|
477
519
|
"grok": "grok-4.5",
|
|
478
520
|
"qwen3": "qwen3.6-35b-a3b",
|
|
@@ -481,10 +523,10 @@
|
|
|
481
523
|
},
|
|
482
524
|
"economy": {
|
|
483
525
|
"claude": "claude-haiku-4-5",
|
|
484
|
-
"gemini": "Gemini 3.
|
|
526
|
+
"gemini": "Gemini 3.8 Flash (Low)",
|
|
485
527
|
"codex": "gpt-5.6-luna",
|
|
486
528
|
"mistral": "devstral-small-2",
|
|
487
|
-
"deepseek": "deepseek-
|
|
529
|
+
"deepseek": "deepseek-flash",
|
|
488
530
|
"glm": "glm-4-flash",
|
|
489
531
|
"grok": "grok-4.5",
|
|
490
532
|
"qwen3": "qwen3-32b",
|
|
@@ -495,10 +537,10 @@
|
|
|
495
537
|
"transport_model_tiers": {
|
|
496
538
|
"_comment": "Transport-specific namespaces used by Gemini and Mistral; the legacy model_tiers table reflects their CLI values.",
|
|
497
539
|
"gemini": {
|
|
498
|
-
"maximum": {"cli": "Gemini 3.
|
|
499
|
-
"premium": {"cli": "Gemini 3.
|
|
500
|
-
"standard": {"cli": "Gemini 3.
|
|
501
|
-
"economy": {"cli": "Gemini 3.
|
|
540
|
+
"maximum": {"cli": "Gemini 3.8 Flash (High)", "api": "gemini-3.1-pro-preview"},
|
|
541
|
+
"premium": {"cli": "Gemini 3.8 Flash (High)", "api": "gemini-3.1-pro-preview"},
|
|
542
|
+
"standard": {"cli": "Gemini 3.8 Flash (High)", "api": "gemini-3.1-pro-preview"},
|
|
543
|
+
"economy": {"cli": "Gemini 3.8 Flash (Low)", "api": "gemini-3.1-pro-preview"}
|
|
502
544
|
},
|
|
503
545
|
"mistral": {
|
|
504
546
|
"maximum": {"cli": "mistral-medium-3.5", "api": "mistral-large-3"},
|
|
@@ -508,8 +550,8 @@
|
|
|
508
550
|
}
|
|
509
551
|
},
|
|
510
552
|
"opt_in_targets": {
|
|
511
|
-
"gemini_cli": ["Gemini 3.1 Pro (High)", "Gemini 3.6 Flash (High)", "Gemini 3.6 Flash (Low)"],
|
|
512
|
-
"gemini_api": ["gemini-3.7-flash"],
|
|
553
|
+
"gemini_cli": ["Gemini 3.8 Flash (Medium)", "Gemini 3.7 Flash (High)", "Gemini 3.7 Flash (Low)", "Gemini 3.1 Pro (High)", "Gemini 3.6 Flash (High)", "Gemini 3.6 Flash (Low)"],
|
|
554
|
+
"gemini_api": ["gemini-3.7-flash", "gemini-3.8-flash"],
|
|
513
555
|
"mistral_api": ["mistral-medium-3-5", "mistral-large-2512", "mistral-small-2603"],
|
|
514
556
|
"claude": []
|
|
515
557
|
},
|
package/package.json
CHANGED
|
@@ -59,7 +59,7 @@ Model defaults carry an `# ai-consultants:default` marker. On rewrite,
|
|
|
59
59
|
`CLAUDE_MODEL=claude-opus-4-8` and `claude-opus-5` generated defaults to
|
|
60
60
|
Fable 5.1. An explicit model override supplied with `--set` is stored with
|
|
61
61
|
`# ai-consultants:pin`, so `--set CLAUDE_MODEL=claude-opus-5` keeps the
|
|
62
|
-
|
|
62
|
+
legacy Opus 5 model intentionally. Standard/medium now select Opus 5.5.
|
|
63
63
|
The exhaustive parameter contract is [`.env.example`](../.env.example); the
|
|
64
64
|
configurator derives its accepted keys from that template, while
|
|
65
65
|
[`scripts/config.sh`](../scripts/config.sh) remains the runtime source of truth.
|
|
@@ -240,11 +240,11 @@ ENABLE_DEEPSEEK=false
|
|
|
240
240
|
### Model Overrides
|
|
241
241
|
|
|
242
242
|
```bash
|
|
243
|
-
GEMINI_MODEL=Gemini 3.
|
|
243
|
+
GEMINI_MODEL="Gemini 3.8 Flash (High)" # CLI smoke passed; capability-probed identity; API uses GEMINI_API_MODEL
|
|
244
244
|
CODEX_MODEL=gpt-6-astra
|
|
245
245
|
CODEX_API_MAX_TOKENS=16384
|
|
246
246
|
CLAUDE_MODEL=claude-fable-5-1
|
|
247
|
-
# Lower-cost standard override: CLAUDE_MODEL=claude-opus-5
|
|
247
|
+
# Lower-cost standard override: CLAUDE_MODEL=claude-opus-5-5
|
|
248
248
|
CLAUDE_API_MAX_TOKENS=16384 # API only: adaptive thinking + visible output
|
|
249
249
|
MISTRAL_MODEL=mistral-large-3
|
|
250
250
|
MISTRAL_CLI_MODEL=mistral-medium-3.5
|
|
@@ -257,12 +257,12 @@ QWEN3_API_MAX_TOKENS=16384
|
|
|
257
257
|
GLM_MODEL=glm-5.3-flash
|
|
258
258
|
GLM_API_MAX_TOKENS=16384
|
|
259
259
|
GLM_REASONING_EFFORT= # max_quality sets max
|
|
260
|
-
GROK_MODEL=grok-4.
|
|
260
|
+
GROK_MODEL=grok-4.7
|
|
261
261
|
GROK_MAX_TURNS=4
|
|
262
262
|
GROK_API_MAX_TOKENS=4096
|
|
263
263
|
GROK_REASONING_EFFORT= # max_quality sets xhigh (Grok Build maximum)
|
|
264
264
|
GROK_OAUTH_MODE=shared # shared (parallel default) | serialized (diagnostic)
|
|
265
|
-
DEEPSEEK_MODEL=deepseek-
|
|
265
|
+
DEEPSEEK_MODEL=deepseek-flash # DeepSeek-V4.1-Flash API alias
|
|
266
266
|
DEEPSEEK_API_MAX_TOKENS=16384
|
|
267
267
|
DEEPSEEK_MAX_QUALITY_TIMEOUT=600
|
|
268
268
|
DEEPSEEK_REASONING_EFFORT= # max_quality sets max
|
package/scripts/config.sh
CHANGED
|
@@ -128,7 +128,7 @@ LAUNCH_STAGGER_MAX_SECONDS="${LAUNCH_STAGGER_MAX_SECONDS:-2}"
|
|
|
128
128
|
|
|
129
129
|
# CLI mode uses the Antigravity CLI (`agy`), successor to the deprecated
|
|
130
130
|
# Gemini CLI (transitioned 2026-06-18). Models are passed by display name.
|
|
131
|
-
GEMINI_MODEL="${GEMINI_MODEL:-Gemini 3.
|
|
131
|
+
GEMINI_MODEL="${GEMINI_MODEL:-Gemini 3.8 Flash (High)}"
|
|
132
132
|
GEMINI_TIMEOUT_SECONDS="${GEMINI_TIMEOUT:-180}"
|
|
133
133
|
GEMINI_CMD="${GEMINI_CMD:-agy}"
|
|
134
134
|
# API mode (GEMINI_USE_API=true) talks to the Google AI generativelanguage
|
|
@@ -213,7 +213,7 @@ GLM_FORMAT="${GLM_FORMAT:-openai}"
|
|
|
213
213
|
# =============================================================================
|
|
214
214
|
|
|
215
215
|
GROK_CMD="${GROK_CMD:-grok}"
|
|
216
|
-
GROK_MODEL="${GROK_MODEL:-grok-4.
|
|
216
|
+
GROK_MODEL="${GROK_MODEL:-grok-4.7}"
|
|
217
217
|
GROK_TIMEOUT_SECONDS="${GROK_TIMEOUT:-180}"
|
|
218
218
|
GROK_API_MAX_TOKENS="${GROK_API_MAX_TOKENS:-4096}"
|
|
219
219
|
GROK_MAX_TURNS="${GROK_MAX_TURNS:-4}"
|
|
@@ -243,7 +243,7 @@ export GROK_USE_API GROK_OAUTH_MODE
|
|
|
243
243
|
# DEEPSEEK CONFIGURATION - The Methodologist (API-based)
|
|
244
244
|
# =============================================================================
|
|
245
245
|
|
|
246
|
-
DEEPSEEK_MODEL="${DEEPSEEK_MODEL:-deepseek-
|
|
246
|
+
DEEPSEEK_MODEL="${DEEPSEEK_MODEL:-deepseek-flash}"
|
|
247
247
|
if [[ -n "${DEEPSEEK_TIMEOUT+x}" ]]; then
|
|
248
248
|
DEEPSEEK_TIMEOUT_SECONDS="$DEEPSEEK_TIMEOUT"
|
|
249
249
|
elif [[ -z "${DEEPSEEK_TIMEOUT_SECONDS+x}" ]]; then
|
|
@@ -619,12 +619,12 @@ get_model_for_tier() {
|
|
|
619
619
|
maximum|max_quality|max-quality)
|
|
620
620
|
case "$consultant" in
|
|
621
621
|
claude) echo "claude-fable-5-1" ;;
|
|
622
|
-
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.
|
|
622
|
+
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.8 Flash (High)" ;;
|
|
623
623
|
codex) echo "gpt-6-astra" ;;
|
|
624
624
|
mistral) [[ "$transport" == "api" ]] && echo "mistral-large-3" || echo "mistral-medium-3.5" ;;
|
|
625
|
-
deepseek) echo "deepseek-
|
|
625
|
+
deepseek) echo "deepseek-flash" ;;
|
|
626
626
|
glm) echo "glm-5.3-flash" ;;
|
|
627
|
-
grok) echo "grok-4.
|
|
627
|
+
grok) echo "grok-4.7" ;;
|
|
628
628
|
qwen3) echo "qwen3.8-max" ;;
|
|
629
629
|
kimi) echo "kimi-code/k3-256k" ;;
|
|
630
630
|
minimax) echo "MiniMax-M3" ;;
|
|
@@ -634,12 +634,12 @@ get_model_for_tier() {
|
|
|
634
634
|
premium|max|best)
|
|
635
635
|
case "$consultant" in
|
|
636
636
|
claude) echo "claude-fable-5-1" ;;
|
|
637
|
-
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.
|
|
637
|
+
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.8 Flash (High)" ;;
|
|
638
638
|
codex) echo "gpt-6-astra" ;;
|
|
639
639
|
mistral) [[ "$transport" == "api" ]] && echo "mistral-large-3" || echo "mistral-medium-3.5" ;;
|
|
640
|
-
deepseek) echo "deepseek-
|
|
640
|
+
deepseek) echo "deepseek-flash" ;;
|
|
641
641
|
glm) echo "glm-5.3-flash" ;;
|
|
642
|
-
grok) echo "grok-4.
|
|
642
|
+
grok) echo "grok-4.7" ;;
|
|
643
643
|
qwen3) echo "qwen3.7-max" ;;
|
|
644
644
|
kimi) echo "kimi-code/k3" ;;
|
|
645
645
|
minimax) echo "MiniMax-M2.7" ;;
|
|
@@ -648,11 +648,11 @@ get_model_for_tier() {
|
|
|
648
648
|
;;
|
|
649
649
|
standard|medium|balanced)
|
|
650
650
|
case "$consultant" in
|
|
651
|
-
claude) echo "claude-opus-5" ;;
|
|
652
|
-
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.
|
|
651
|
+
claude) echo "claude-opus-5-5" ;;
|
|
652
|
+
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.8 Flash (High)" ;;
|
|
653
653
|
codex) echo "gpt-5.6-terra" ;;
|
|
654
654
|
mistral) [[ "$transport" == "api" ]] && echo "mistral-large-3" || echo "mistral-medium-3.5" ;;
|
|
655
|
-
deepseek) echo "deepseek-
|
|
655
|
+
deepseek) echo "deepseek-flash" ;;
|
|
656
656
|
glm) echo "glm-5.3-flash" ;; # Same as premium (no mid-tier GLM)
|
|
657
657
|
grok) echo "grok-4.5" ;;
|
|
658
658
|
qwen3) echo "qwen3.6-35b-a3b" ;; # Open-weight MoE (35B total, 3B active)
|
|
@@ -664,10 +664,10 @@ get_model_for_tier() {
|
|
|
664
664
|
economy|fast|quick)
|
|
665
665
|
case "$consultant" in
|
|
666
666
|
claude) echo "claude-haiku-4-5" ;;
|
|
667
|
-
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.
|
|
667
|
+
gemini) [[ "$transport" == "api" ]] && echo "gemini-3.1-pro-preview" || echo "Gemini 3.8 Flash (Low)" ;;
|
|
668
668
|
codex) echo "gpt-5.6-luna" ;;
|
|
669
669
|
mistral) [[ "$transport" == "api" ]] && echo "mistral-large-3" || echo "devstral-small-2" ;;
|
|
670
|
-
deepseek) echo "deepseek-
|
|
670
|
+
deepseek) echo "deepseek-flash" ;;
|
|
671
671
|
glm) echo "glm-4-flash" ;;
|
|
672
672
|
grok) echo "grok-4.5" ;;
|
|
673
673
|
qwen3) echo "qwen3-32b" ;;
|
|
@@ -715,7 +715,7 @@ apply_model_tier() {
|
|
|
715
715
|
|
|
716
716
|
# Gemini and Mistral intentionally carry both transport-specific IDs so a
|
|
717
717
|
# later transport choice cannot send a CLI display name to an HTTP API (or
|
|
718
|
-
# an API slug to a CLI). Gemini 3.7
|
|
718
|
+
# an API slug to a CLI). Gemini 3.7/3.8 Flash use one API ID plus a thinking level.
|
|
719
719
|
export GEMINI_MODEL="$(get_model_for_tier gemini "$tier" cli)"
|
|
720
720
|
export GEMINI_API_MODEL="$(get_model_for_tier gemini "$tier" api)"
|
|
721
721
|
export MISTRAL_CLI_MODEL="$(get_model_for_tier mistral "$tier" cli)"
|
|
@@ -839,8 +839,8 @@ apply_model_tier() {
|
|
|
839
839
|
;;
|
|
840
840
|
esac
|
|
841
841
|
|
|
842
|
-
# Gemini 3.
|
|
843
|
-
#
|
|
842
|
+
# Gemini 3.8 CLI availability is inventory-probed; new live smokes are
|
|
843
|
+
# required separately. API tiers remain on the proven 3.1 Pro ID;
|
|
844
844
|
# neither transport silently substitutes the other's model namespace.
|
|
845
845
|
|
|
846
846
|
case "$tier" in
|
|
@@ -1035,4 +1035,4 @@ list_presets() {
|
|
|
1035
1035
|
# VERSION
|
|
1036
1036
|
# =============================================================================
|
|
1037
1037
|
|
|
1038
|
-
AI_CONSULTANTS_VERSION="5.1.
|
|
1038
|
+
AI_CONSULTANTS_VERSION="5.1.2"
|
package/scripts/configure.sh
CHANGED
|
@@ -133,6 +133,8 @@ chmod 600 "$WORK_FILE"
|
|
|
133
133
|
|
|
134
134
|
read_value() {
|
|
135
135
|
local file="$1" wanted="$2" line key value found="" seen=false
|
|
136
|
+
local double_quoted='^"(([^"\\]|\\.)*)"[[:space:]]*(#.*)?$'
|
|
137
|
+
local single_quoted="^'([^']*)'[[:space:]]*(#.*)?$"
|
|
136
138
|
[[ -r "$file" ]] || return 1
|
|
137
139
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
|
138
140
|
line="${line%$'\r'}"
|
|
@@ -147,8 +149,8 @@ read_value() {
|
|
|
147
149
|
key="${key//[[:space:]]/}"
|
|
148
150
|
[[ "$key" == "$wanted" ]] || continue
|
|
149
151
|
value="${line#*=}"
|
|
150
|
-
if [[ "$value" =~
|
|
151
|
-
value="${
|
|
152
|
+
if [[ "$value" =~ $double_quoted ]] || [[ "$value" =~ $single_quoted ]]; then
|
|
153
|
+
value="${BASH_REMATCH[1]}"
|
|
152
154
|
else
|
|
153
155
|
value=$(printf '%s' "$value" | sed -E 's/[[:space:]]+#.*$//; s/[[:space:]]+$//')
|
|
154
156
|
fi
|
|
@@ -314,11 +316,20 @@ esac
|
|
|
314
316
|
# Migrate only the exact catalog defaults previously generated by this tool.
|
|
315
317
|
# A # ai-consultants:pin marker is the durable escape hatch for users who want
|
|
316
318
|
# to keep an older target or a nonstandard binary name.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
319
|
+
case "$(read_value "$WORK_FILE" GEMINI_MODEL 2>/dev/null || true)" in
|
|
320
|
+
'Gemini 3.1 Pro (High)'|'Gemini 3.7 Flash (High)')
|
|
321
|
+
if ! has_value_marker "$WORK_FILE" GEMINI_MODEL "$PIN_MARKER"; then
|
|
322
|
+
set_value GEMINI_MODEL "Gemini 3.8 Flash (High) $DEFAULT_MARKER"
|
|
323
|
+
echo "Migrated managed Gemini CLI default to Gemini 3.8 Flash (High)" >&2
|
|
324
|
+
fi
|
|
325
|
+
;;
|
|
326
|
+
'Gemini 3.7 Flash (Low)')
|
|
327
|
+
if ! has_value_marker "$WORK_FILE" GEMINI_MODEL "$PIN_MARKER"; then
|
|
328
|
+
set_value GEMINI_MODEL "Gemini 3.8 Flash (Low) $DEFAULT_MARKER"
|
|
329
|
+
echo "Migrated managed Gemini CLI economy default to Gemini 3.8 Flash (Low)" >&2
|
|
330
|
+
fi
|
|
331
|
+
;;
|
|
332
|
+
esac
|
|
322
333
|
|
|
323
334
|
case "$(read_value "$WORK_FILE" GLM_MODEL 2>/dev/null || true)" in
|
|
324
335
|
glm-5.2|glm-5.3)
|
|
@@ -329,11 +340,25 @@ case "$(read_value "$WORK_FILE" GLM_MODEL 2>/dev/null || true)" in
|
|
|
329
340
|
;;
|
|
330
341
|
esac
|
|
331
342
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
343
|
+
case "$(read_value "$WORK_FILE" GROK_MODEL 2>/dev/null || true)" in
|
|
344
|
+
grok-4.5|grok-4.6)
|
|
345
|
+
if ! has_value_marker "$WORK_FILE" GROK_MODEL "$PIN_MARKER"; then
|
|
346
|
+
set_value GROK_MODEL "grok-4.7 $DEFAULT_MARKER"
|
|
347
|
+
echo "Migrated managed Grok default to grok-4.7" >&2
|
|
348
|
+
fi
|
|
349
|
+
;;
|
|
350
|
+
esac
|
|
351
|
+
|
|
352
|
+
# Refresh only exact unpinned historical DeepSeek defaults. Environment and
|
|
353
|
+
# --set selections carry pin markers and remain user-owned.
|
|
354
|
+
case "$(read_value "$WORK_FILE" DEEPSEEK_MODEL 2>/dev/null || true)" in
|
|
355
|
+
deepseek-v4-pro|deepseek-v4-flash)
|
|
356
|
+
if ! has_value_marker "$WORK_FILE" DEEPSEEK_MODEL "$PIN_MARKER"; then
|
|
357
|
+
set_value DEEPSEEK_MODEL "deepseek-flash $DEFAULT_MARKER"
|
|
358
|
+
echo "Migrated managed DeepSeek default to deepseek-flash (V4.1 Flash)" >&2
|
|
359
|
+
fi
|
|
360
|
+
;;
|
|
361
|
+
esac
|
|
337
362
|
|
|
338
363
|
configure_cli_only() {
|
|
339
364
|
local enable_key="$1" cmd_key="$2" cmd enabled=false
|
package/scripts/lib/api.sh
CHANGED
|
@@ -345,7 +345,11 @@ extract_token_usage() {
|
|
|
345
345
|
;;
|
|
346
346
|
google_ai)
|
|
347
347
|
input_tokens=$(echo "$response" | jq -r '.usageMetadata.promptTokenCount // 0' 2>/dev/null)
|
|
348
|
-
|
|
348
|
+
# Google bills candidates plus thoughts as output. Cached input is
|
|
349
|
+
# already included in promptTokenCount and must not be added again.
|
|
350
|
+
output_tokens=$(echo "$response" | jq -r '
|
|
351
|
+
def token: if type == "number" and . >= 0 and floor == . then . else 0 end;
|
|
352
|
+
.usageMetadata | ((.candidatesTokenCount | token) + (.thoughtsTokenCount | token))' 2>/dev/null)
|
|
349
353
|
;;
|
|
350
354
|
*) # openai format (default)
|
|
351
355
|
input_tokens=$(echo "$response" | jq -r '.usage.prompt_tokens // 0' 2>/dev/null)
|
|
@@ -381,7 +385,11 @@ extract_token_split() {
|
|
|
381
385
|
;;
|
|
382
386
|
google_ai)
|
|
383
387
|
input_tokens=$(echo "$response" | jq -r '.usageMetadata.promptTokenCount // 0' 2>/dev/null)
|
|
384
|
-
|
|
388
|
+
# Google bills candidates plus thoughts as output. Cached input is
|
|
389
|
+
# already included in promptTokenCount and must not be added again.
|
|
390
|
+
output_tokens=$(echo "$response" | jq -r '
|
|
391
|
+
def token: if type == "number" and . >= 0 and floor == . then . else 0 end;
|
|
392
|
+
.usageMetadata | ((.candidatesTokenCount | token) + (.thoughtsTokenCount | token))' 2>/dev/null)
|
|
385
393
|
;;
|
|
386
394
|
*) # openai format (default)
|
|
387
395
|
input_tokens=$(echo "$response" | jq -r '.usage.prompt_tokens // 0' 2>/dev/null)
|
package/scripts/lib/api_query.sh
CHANGED
|
@@ -88,24 +88,24 @@ run_api_mode_query() {
|
|
|
88
88
|
|
|
89
89
|
case "$api_format" in
|
|
90
90
|
google_ai)
|
|
91
|
-
# Gemini 3.7
|
|
91
|
+
# Gemini 3.7/3.8 Flash expose low|medium|high thinking levels on the native
|
|
92
92
|
# Google AI wire. The shared syntax validator is intentionally
|
|
93
93
|
# broader for OpenAI-compatible providers, so fail before spending
|
|
94
94
|
# a request when Google receives an unsupported level.
|
|
95
95
|
local google_thinking_level=""
|
|
96
96
|
if [[ -n "$effort" ]]; then
|
|
97
97
|
case "$model" in
|
|
98
|
-
gemini-3.7-flash
|
|
98
|
+
gemini-3.7-flash*|gemini-3.8-flash)
|
|
99
99
|
case "$effort" in
|
|
100
100
|
low|medium|high) google_thinking_level="$effort" ;;
|
|
101
101
|
*)
|
|
102
|
-
log_error "[$consultant_name] $effort_var=$effort is unsupported for
|
|
102
|
+
log_error "[$consultant_name] $effort_var=$effort is unsupported for $model on the 'google_ai' wire format (expected low|medium|high)"
|
|
103
103
|
return 1
|
|
104
104
|
;;
|
|
105
105
|
esac
|
|
106
106
|
;;
|
|
107
107
|
*)
|
|
108
|
-
log_warn "[$consultant_name] $effort_var is only transported to Gemini 3.7 on the 'google_ai' wire format and is ignored for $model."
|
|
108
|
+
log_warn "[$consultant_name] $effort_var is only transported to Gemini 3.7/3.8 Flash on the 'google_ai' wire format and is ignored for $model."
|
|
109
109
|
;;
|
|
110
110
|
esac
|
|
111
111
|
fi
|
package/scripts/lib/costs.sh
CHANGED
|
@@ -133,9 +133,13 @@ get_input_cost_per_1k() {
|
|
|
133
133
|
|
|
134
134
|
# Fallback to hardcoded rates for backwards compatibility
|
|
135
135
|
case "$model" in
|
|
136
|
+
gemini-3.8-flash|"gemini 3.8 flash (high)"|"gemini 3.8 flash (medium)"|"gemini 3.8 flash (low)") echo "0.00075" ;;
|
|
136
137
|
gemini-2.5-pro) echo "0.00125" ;;
|
|
137
138
|
gemini-2.5-flash) echo "0.000075" ;;
|
|
138
139
|
gemini-2.0-flash) echo "0.0001" ;;
|
|
140
|
+
deepseek-flash|deepseek-v4-flash|deepseek-v4-flash-vision-exp) echo "0.0003" ;;
|
|
141
|
+
claude-opus-5-5) echo "0.004" ;;
|
|
142
|
+
grok-4.7) echo "0.002" ;;
|
|
139
143
|
gpt-6-astra|claude-fable-5-1) echo "0.01" ;;
|
|
140
144
|
gpt-4) echo "0.03" ;;
|
|
141
145
|
gpt-4-turbo) echo "0.01" ;;
|
|
@@ -180,9 +184,13 @@ get_output_cost_per_1k() {
|
|
|
180
184
|
|
|
181
185
|
# Fallback to hardcoded rates for backwards compatibility
|
|
182
186
|
case "$model" in
|
|
187
|
+
gemini-3.8-flash|"gemini 3.8 flash (high)"|"gemini 3.8 flash (medium)"|"gemini 3.8 flash (low)") echo "0.00375" ;;
|
|
183
188
|
gemini-2.5-pro) echo "0.005" ;;
|
|
184
189
|
gemini-2.5-flash) echo "0.0003" ;;
|
|
185
190
|
gemini-2.0-flash) echo "0.0004" ;;
|
|
191
|
+
deepseek-flash|deepseek-v4-flash|deepseek-v4-flash-vision-exp) echo "0.0012" ;;
|
|
192
|
+
claude-opus-5-5) echo "0.020" ;;
|
|
193
|
+
grok-4.7) echo "0.006" ;;
|
|
186
194
|
gpt-6-astra|claude-fable-5-1) echo "0.05" ;;
|
|
187
195
|
gpt-4) echo "0.06" ;;
|
|
188
196
|
gpt-4-turbo) echo "0.03" ;;
|
|
@@ -236,6 +244,10 @@ estimate_query_cost() {
|
|
|
236
244
|
input_rate=$(echo "scale=6; $input_rate * 2" | bc)
|
|
237
245
|
output_rate=$(echo "scale=6; $output_rate * 1.5" | bc)
|
|
238
246
|
fi
|
|
247
|
+
if [[ "$model" == grok-4.7 && "$input_tokens" -gt 200000 ]]; then
|
|
248
|
+
input_rate=$(echo "scale=6; $input_rate * 2" | bc)
|
|
249
|
+
output_rate=$(echo "scale=6; $output_rate * 2" | bc)
|
|
250
|
+
fi
|
|
239
251
|
# Calculate cost
|
|
240
252
|
local input_cost output_cost total_cost
|
|
241
253
|
input_cost=$(echo "scale=6; $input_tokens / 1000 * $input_rate" | bc)
|
|
@@ -401,7 +413,7 @@ format_cost_caveats() {
|
|
|
401
413
|
local responses_dir="${1:-}"
|
|
402
414
|
[[ -d "$responses_dir" ]] || return 0
|
|
403
415
|
|
|
404
|
-
local estimated=0 unknown=0 priced=0 f astra_estimate=0
|
|
416
|
+
local estimated=0 unknown=0 priced=0 f astra_estimate=0 deepseek_flash_estimate=0 grok_47_estimate=0 opus_55_estimate=0 gemini_38_estimate=0
|
|
405
417
|
local unpriced_models=()
|
|
406
418
|
while IFS= read -r f; do
|
|
407
419
|
[[ -n "$f" ]] || continue
|
|
@@ -423,6 +435,24 @@ format_cost_caveats() {
|
|
|
423
435
|
if [[ "$model" == gpt-6-astra ]] && ! jq -e '.metadata.provider_cost_usd | numbers' "$f" >/dev/null 2>&1; then
|
|
424
436
|
astra_estimate=1
|
|
425
437
|
fi
|
|
438
|
+
case "$model" in
|
|
439
|
+
deepseek-flash|deepseek-v4-flash|deepseek-v4-flash-vision-exp)
|
|
440
|
+
if ! jq -e '.metadata.provider_cost_usd | numbers' "$f" >/dev/null 2>&1; then
|
|
441
|
+
deepseek_flash_estimate=1
|
|
442
|
+
fi
|
|
443
|
+
;;
|
|
444
|
+
esac
|
|
445
|
+
if ! jq -e '.metadata.provider_cost_usd | numbers' "$f" >/dev/null 2>&1; then
|
|
446
|
+
[[ "$model" != grok-4.7 ]] || grok_47_estimate=1
|
|
447
|
+
[[ "$model" != claude-opus-5-5 ]] || opus_55_estimate=1
|
|
448
|
+
fi
|
|
449
|
+
case "$model" in
|
|
450
|
+
gemini-3.8-flash|'Gemini 3.8 Flash (High)'|'Gemini 3.8 Flash (Medium)'|'Gemini 3.8 Flash (Low)')
|
|
451
|
+
if ! jq -e '.metadata.provider_cost_usd | numbers' "$f" >/dev/null 2>&1; then
|
|
452
|
+
gemini_38_estimate=1
|
|
453
|
+
fi
|
|
454
|
+
;;
|
|
455
|
+
esac
|
|
426
456
|
is_unpriced_model "$model" || continue
|
|
427
457
|
seen=false
|
|
428
458
|
for item in "${unpriced_models[@]+"${unpriced_models[@]}"}"; do
|
|
@@ -441,6 +471,18 @@ format_cost_caveats() {
|
|
|
441
471
|
if [[ $astra_estimate -eq 1 ]]; then
|
|
442
472
|
parts="${parts:+$parts; }cost estimated using Astra Standard rates; cache/service adjustments excluded, not an invoice"
|
|
443
473
|
fi
|
|
474
|
+
if [[ $deepseek_flash_estimate -eq 1 ]]; then
|
|
475
|
+
parts="${parts:+$parts; }DeepSeek Flash cost estimated at peak cache-miss rates; off-peak/cache discounts excluded, not an invoice"
|
|
476
|
+
fi
|
|
477
|
+
if [[ $grok_47_estimate -eq 1 ]]; then
|
|
478
|
+
parts="${parts:+$parts; }Grok 4.7 API list-rate estimate includes long-context pricing; cache/regional/priority/Fast adjustments excluded, not an invoice"
|
|
479
|
+
fi
|
|
480
|
+
if [[ $opus_55_estimate -eq 1 ]]; then
|
|
481
|
+
parts="${parts:+$parts; }Opus 5.5 Standard API estimate excludes cache/service adjustments, not an invoice"
|
|
482
|
+
fi
|
|
483
|
+
if [[ $gemini_38_estimate -eq 1 ]]; then
|
|
484
|
+
parts="${parts:+$parts; }Gemini 3.8 promotional API estimate through 2026-12-31; cache/service adjustments excluded, not a CLI invoice"
|
|
485
|
+
fi
|
|
444
486
|
local unpriced=""
|
|
445
487
|
if (( ${#unpriced_models[@]} > 0 )); then
|
|
446
488
|
unpriced=$(IFS=,; printf '%s' "${unpriced_models[*]}")
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
#
|
|
6
6
|
# Environment variables:
|
|
7
7
|
# DEEPSEEK_API_KEY - API key for DeepSeek (required)
|
|
8
|
-
# DEEPSEEK_MODEL - Model to use (default: deepseek-
|
|
8
|
+
# DEEPSEEK_MODEL - Model to use (default: deepseek-flash (DeepSeek-V4.1-Flash))
|
|
9
9
|
# DEEPSEEK_TIMEOUT - Timeout in seconds (default: 180)
|
|
10
10
|
# ENABLE_PERSONA - Enable "The Code Specialist" persona (default: true)
|
|
11
11
|
|
package/scripts/query_gemini.sh
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# Usage: ./query_gemini.sh "question" [context_file] [output_file]
|
|
9
9
|
#
|
|
10
10
|
# Environment variables:
|
|
11
|
-
# GEMINI_MODEL - agy model display name (default: "Gemini 3.
|
|
11
|
+
# GEMINI_MODEL - agy model display name (default: "Gemini 3.8 Flash (High)")
|
|
12
12
|
# GEMINI_TIMEOUT - Timeout in seconds (default: 180)
|
|
13
13
|
# GEMINI_USE_API - Use Google AI API mode instead of the agy CLI (default: false)
|
|
14
14
|
# GEMINI_API_MODEL - API model ID for API mode (default: gemini-3.1-pro-preview)
|
package/scripts/query_grok.sh
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
#
|
|
6
6
|
# Environment variables:
|
|
7
7
|
# GROK_CMD - Grok Build command (default: grok)
|
|
8
|
-
# GROK_MODEL - Model to use in both transports (default: grok-4.
|
|
8
|
+
# GROK_MODEL - Model to use in both transports (default: grok-4.7)
|
|
9
9
|
# GROK_TIMEOUT - Timeout in seconds (default: 180)
|
|
10
10
|
# GROK_MAX_TURNS - Bounded advisory turns (default: 4)
|
|
11
11
|
# GROK_USE_API - Force the API path when true (default: CLI-first auto)
|