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 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.7 Flash (High)"
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.7-flash is an API-only opt-in until
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. 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).
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.6
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-v4-pro
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.0
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.7 Flash (High), gpt-6-astra |
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.7 Flash (High), gpt-5.6-terra |
355
- | **economy** | Optimized for speed and low cost | claude-haiku-4-5, Gemini 3.7 Flash (Low), gpt-5.6-luna |
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.7 Flash (High) on agy
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.7 Flash (High) (via agy CLI); API: gemini-3.1-pro-preview |
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-v4-pro |
395
+ | DeepSeek | deepseek-flash (DeepSeek-V4.1-Flash) |
396
396
  | GLM | glm-5.3-flash |
397
- | Grok | grok-4.6 |
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.6` passed explicitly in headless mode. The prompt is delivered with
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.7 Flash (High) | Gemini agy CLI model |
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.0
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
- [![Version](https://img.shields.io/badge/version-5.1.0-blue.svg)](https://github.com/matteoscurati/ai-consultants)
5
+ [![Version](https://img.shields.io/badge/version-5.1.2-blue.svg)](https://github.com/matteoscurati/ai-consultants)
6
6
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
7
7
  [![Claude Code Skill](https://img.shields.io/badge/Claude%20Code-Skill-orange.svg)](https://docs.anthropic.com/en/docs/claude-code/skills)
8
8
  [![GitHub stars](https://img.shields.io/github/stars/matteoscurati/ai-consultants?style=social)](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.6` in an isolated, tool-free sandbox. Prompts
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-v4-pro | The Code Specialist | Algorithms, code generation |
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.6)
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.7 Flash (High) | Gemini 3.7 Flash (High) | Gemini 3.7 Flash (High) | Gemini 3.7 Flash (Low) |
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-v4-pro | deepseek-v4-pro | deepseek-v4-flash | deepseek-v4-flash |
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.6 | grok-4.6 | grok-4.5 | grok-4.5 |
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.7 Flash High completed an exact live
500
- smoke through the `agy` adapter and is now the CLI default; Low is the CLI
501
- economy target. The Google API model remains `gemini-3.1-pro-preview`, while
502
- `gemini-3.7-flash` stays an API-only opt-in until that separate transport is
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.7 Flash (High)" # agy CLI; API uses GEMINI_API_MODEL
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.0
8
+ version: 5.1.2
9
9
  ---
10
10
 
11
- # AI Consultants v5.1.0 - AI Expert Panel
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.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.
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.7 Flash High is the exact-transport-smoked `agy`
107
- default for maximum, premium, and standard CLI tiers; Low serves economy. The
108
- Gemini API target remains 3.1 Pro until `gemini-3.7-flash` completes a separate
109
- API smoke. Claude Fable 5.1 is the default/premium/maximum target; the new
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`
@@ -1,4 +1,4 @@
1
- # Cost Rates - AI Consultants v5.1.0
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.7 Flash (High) | Maximum/Premium/Standard | $0.00075 | Gemini (verified agy CLI; promotional through 2026-12-31) |
27
- | Gemini 3.7 Flash (Low) | Economy | $0.00075 | Gemini (verified agy CLI; promotional through 2026-12-31) |
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.005 | Claude |
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 | Premium | $0.000435 | DeepSeek |
49
- | deepseek-v4-flash | Standard/Economy | $0.00014 | 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.6 | Maximum/Premium | $0.002 | Grok |
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.7 Flash (High) | Maximum/Premium/Standard | $0.00375 | Gemini (verified agy CLI; promotional through 2026-12-31) |
71
- | Gemini 3.7 Flash (Low) | Economy | $0.00375 | Gemini (verified agy CLI; promotional through 2026-12-31) |
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.025 | Claude |
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 | Premium | $0.00087 | DeepSeek |
93
- | deepseek-v4-flash | Standard/Economy | $0.00028 | 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.6 | Maximum/Premium | $0.006 | Grok |
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.
@@ -1,7 +1,49 @@
1
1
  {
2
- "version": "5.1.0",
3
- "updated": "2026-08-23",
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.00014,
384
- "output": 0.00028
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.7 Flash (High)",
476
+ "gemini": "Gemini 3.8 Flash (High)",
435
477
  "codex": "gpt-6-astra",
436
478
  "mistral": "mistral-large-3",
437
- "deepseek": "deepseek-v4-pro",
479
+ "deepseek": "deepseek-flash",
438
480
  "glm": "glm-5.3-flash",
439
- "grok": "grok-4.6",
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.7 Flash (High)",
490
+ "gemini": "Gemini 3.8 Flash (High)",
449
491
  "codex": "gpt-6-astra",
450
492
  "mistral": "mistral-medium-3.5",
451
- "deepseek": "deepseek-v4-pro",
493
+ "deepseek": "deepseek-flash",
452
494
  "glm": "glm-5.3-flash",
453
- "grok": "grok-4.6",
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.7 Flash (High)",
502
+ "gemini": "Gemini 3.8 Flash (High)",
461
503
  "codex": "gpt-6-astra",
462
504
  "mistral": "mistral-medium-3.5",
463
- "deepseek": "deepseek-v4-pro",
505
+ "deepseek": "deepseek-flash",
464
506
  "glm": "glm-5.3-flash",
465
- "grok": "grok-4.6",
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.7 Flash (High)",
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-v4-flash",
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.7 Flash (Low)",
526
+ "gemini": "Gemini 3.8 Flash (Low)",
485
527
  "codex": "gpt-5.6-luna",
486
528
  "mistral": "devstral-small-2",
487
- "deepseek": "deepseek-v4-flash",
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.7 Flash (High)", "api": "gemini-3.1-pro-preview"},
499
- "premium": {"cli": "Gemini 3.7 Flash (High)", "api": "gemini-3.1-pro-preview"},
500
- "standard": {"cli": "Gemini 3.7 Flash (High)", "api": "gemini-3.1-pro-preview"},
501
- "economy": {"cli": "Gemini 3.7 Flash (Low)", "api": "gemini-3.1-pro-preview"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-consultants",
3
- "version": "5.1.0",
3
+ "version": "5.1.2",
4
4
  "description": "A cross-vendor panel of up to 10 AI models that returns the coverage union of their distinct perspectives",
5
5
  "bin": {
6
6
  "ai-consultants": "bin/ai-consultants"
@@ -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
- lower-cost standard model intentionally.
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.7 Flash (High) # verified agy CLI default; API mode uses GEMINI_API_MODEL
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.6
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-v4-pro
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.7 Flash (High)}"
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.6}"
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-v4-pro}"
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.7 Flash (High)" ;;
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-v4-pro" ;;
625
+ deepseek) echo "deepseek-flash" ;;
626
626
  glm) echo "glm-5.3-flash" ;;
627
- grok) echo "grok-4.6" ;;
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.7 Flash (High)" ;;
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-v4-pro" ;;
640
+ deepseek) echo "deepseek-flash" ;;
641
641
  glm) echo "glm-5.3-flash" ;;
642
- grok) echo "grok-4.6" ;;
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.7 Flash (High)" ;;
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-v4-flash" ;;
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.7 Flash (Low)" ;;
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-v4-flash" ;;
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 uses one API ID plus a thinking level.
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.7 is promoted only on the exact agy transport that completed a
843
- # live adapter smoke. API tiers remain on the separately proven 3.1 Pro ID;
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.0"
1038
+ AI_CONSULTANTS_VERSION="5.1.2"
@@ -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" =~ ^\".*\"$ ]] || [[ "$value" =~ ^\'.*\'$ ]]; then
151
- value="${value:1:${#value}-2}"
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
- if [[ "$(read_value "$WORK_FILE" GEMINI_MODEL 2>/dev/null || true)" == "Gemini 3.1 Pro (High)" ]] \
318
- && ! has_value_marker "$WORK_FILE" GEMINI_MODEL "$PIN_MARKER"; then
319
- set_value GEMINI_MODEL "Gemini 3.7 Flash (High) $DEFAULT_MARKER"
320
- echo "Migrated managed Gemini CLI default: Gemini 3.1 Pro (High) -> Gemini 3.7 Flash (High)" >&2
321
- fi
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
- if [[ "$(read_value "$WORK_FILE" GROK_MODEL 2>/dev/null || true)" == "grok-4.5" ]] \
333
- && ! has_value_marker "$WORK_FILE" GROK_MODEL "$PIN_MARKER"; then
334
- set_value GROK_MODEL "grok-4.6 $DEFAULT_MARKER"
335
- echo "Migrated managed Grok default: grok-4.5 -> grok-4.6" >&2
336
- fi
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
@@ -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
- output_tokens=$(echo "$response" | jq -r '.usageMetadata.candidatesTokenCount // 0' 2>/dev/null)
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
- output_tokens=$(echo "$response" | jq -r '.usageMetadata.candidatesTokenCount // 0' 2>/dev/null)
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)
@@ -88,24 +88,24 @@ run_api_mode_query() {
88
88
 
89
89
  case "$api_format" in
90
90
  google_ai)
91
- # Gemini 3.7 exposes low|medium|high thinking levels on the native
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 Gemini 3.7 on the 'google_ai' wire format (expected low|medium|high)"
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
@@ -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-reasoner)
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
 
@@ -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.7 Flash (High)")
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)
@@ -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.6)
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)