ai-consultants 2.10.4 → 2.10.8
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/CLAUDE.md +43 -14
- package/README.md +4 -4
- package/SKILL.md +2 -2
- package/docs/COST_RATES.md +25 -21
- package/docs/cost_rates.json +40 -30
- package/docs/releases/v2.10.5.md +57 -0
- package/docs/releases/v2.10.6.md +59 -0
- package/docs/releases/v2.10.7.md +53 -0
- package/docs/releases/v2.10.8.md +58 -0
- package/package.json +1 -1
- package/references/configuration.md +1 -1
- package/scripts/config.sh +19 -19
- package/scripts/lib/common.sh +4 -4
- package/scripts/lib/costs.sh +6 -17
- package/scripts/lib/routing.sh +4 -2
- package/scripts/query_kilo.sh +7 -5
- package/scripts/query_qwen3.sh +2 -2
- package/scripts/test_suite.sh +5 -5
package/CLAUDE.md
CHANGED
|
@@ -6,7 +6,7 @@ AI Consultants is a multi-model AI deliberation system that queries up to 15 AI
|
|
|
6
6
|
|
|
7
7
|
**Self-Exclusion**: The invoking agent is automatically excluded from the panel to prevent self-consultation. Claude Code won't query Claude, Codex CLI won't query Codex, etc.
|
|
8
8
|
|
|
9
|
-
**Version**: 2.10.
|
|
9
|
+
**Version**: 2.10.8
|
|
10
10
|
|
|
11
11
|
## Distribution
|
|
12
12
|
|
|
@@ -414,9 +414,9 @@ Three tiers of models are available for each consultant, configurable via `apply
|
|
|
414
414
|
|
|
415
415
|
| Tier | Description | Example Models |
|
|
416
416
|
|------|-------------|----------------|
|
|
417
|
-
| **premium** | Latest flagship models | opus-4
|
|
418
|
-
| **standard** | Good quality at reasonable cost | sonnet-4
|
|
419
|
-
| **economy** | Optimized for speed and low cost | haiku-4
|
|
417
|
+
| **premium** | Latest flagship models | claude-opus-4-7, gemini-3.1-pro-preview, gpt-5.5 |
|
|
418
|
+
| **standard** | Good quality at reasonable cost | claude-sonnet-4-6, gemini-3-flash-preview, gpt-5.3 |
|
|
419
|
+
| **economy** | Optimized for speed and low cost | claude-haiku-4-5, gemini-2.0-flash, gpt-4o-mini |
|
|
420
420
|
|
|
421
421
|
**Default models are now premium tier** for maximum quality.
|
|
422
422
|
|
|
@@ -429,7 +429,7 @@ apply_model_tier "economy" # Set all consultants to economy models
|
|
|
429
429
|
|
|
430
430
|
# Get model for a specific consultant and tier (v2.8.1)
|
|
431
431
|
get_model_for_tier "gemini" "premium" # → gemini-3.1-pro-preview
|
|
432
|
-
get_model_for_tier "claude" "economy" # → haiku-4
|
|
432
|
+
get_model_for_tier "claude" "economy" # → claude-haiku-4-5
|
|
433
433
|
```
|
|
434
434
|
|
|
435
435
|
### Quality Tier Presets
|
|
@@ -451,17 +451,17 @@ All consultants now use premium models by default:
|
|
|
451
451
|
|
|
452
452
|
| Consultant | Default Model |
|
|
453
453
|
|------------|---------------|
|
|
454
|
-
| Claude | opus-4
|
|
454
|
+
| Claude | claude-opus-4-7 |
|
|
455
455
|
| Gemini | gemini-3.1-pro-preview |
|
|
456
|
-
| Codex | gpt-5.
|
|
456
|
+
| Codex | gpt-5.5 |
|
|
457
457
|
| Mistral | mistral-large-3 |
|
|
458
|
-
| Cursor | composer-
|
|
459
|
-
| DeepSeek | deepseek-
|
|
458
|
+
| Cursor | composer-2 |
|
|
459
|
+
| DeepSeek | deepseek-v4-pro |
|
|
460
460
|
| GLM | glm-5.1 |
|
|
461
|
-
| Grok | grok-4.
|
|
462
|
-
| Qwen3 | qwen3.
|
|
461
|
+
| Grok | grok-4.3 |
|
|
462
|
+
| Qwen3 | qwen3.6-plus |
|
|
463
463
|
| Kimi | kimi-code/kimi-for-coding |
|
|
464
|
-
| Aider |
|
|
464
|
+
| Aider | nvidia/nemotron-3-super-120b-a12b:free |
|
|
465
465
|
| MiniMax | MiniMax-M2.7 |
|
|
466
466
|
| Kilo | auto |
|
|
467
467
|
| Ollama | qwen2.5-coder:32b |
|
|
@@ -653,9 +653,9 @@ for f in scripts/*.sh scripts/lib/*.sh; do bash -n "$f" && echo "OK: $f"; done
|
|
|
653
653
|
| `PANIC_CONFIDENCE_THRESHOLD` | 5 | Panic threshold (v2.2) |
|
|
654
654
|
| `ENABLE_OLLAMA` | false | Local model support (v2.2) |
|
|
655
655
|
| `OLLAMA_MODEL` | qwen2.5-coder:32b | Ollama model (v2.5 - premium default) |
|
|
656
|
-
| `CLAUDE_MODEL` | opus-4
|
|
656
|
+
| `CLAUDE_MODEL` | claude-opus-4-7 | Claude model (v2.5) |
|
|
657
657
|
| `GEMINI_MODEL` | gemini-3.1-pro-preview | Gemini model (v2.5) |
|
|
658
|
-
| `CODEX_MODEL` | gpt-5.
|
|
658
|
+
| `CODEX_MODEL` | gpt-5.5 | Codex model (v2.5) |
|
|
659
659
|
| `MISTRAL_MODEL` | mistral-large-3 | Mistral model (v2.5) |
|
|
660
660
|
| `SYNTHESIS_STRATEGY` | majority | Synthesis strategy (v2.2) |
|
|
661
661
|
| `ENABLE_SEMANTIC_CACHE` | true | Semantic response caching (v2.3) |
|
|
@@ -802,6 +802,35 @@ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/s
|
|
|
802
802
|
|
|
803
803
|
## Changelog
|
|
804
804
|
|
|
805
|
+
### v2.10.8
|
|
806
|
+
- Fixed `docs/cost_rates.json` drift introduced by v2.10.6: `consultant_fallbacks` (used at runtime by `lib/costs.sh`) and `model_tiers` were still pointing at the old IDs (`opus-4.6`, `gpt-5.3-codex`, `composer-1.5`, `deepseek-reasoner`, `sonnet-4.6`, `haiku-4.5`)
|
|
807
|
+
- Added price entries for the v2.10.6 model IDs: `claude-opus-4-7`, `claude-sonnet-4-6`, `claude-haiku-4-5`, `gpt-5.5`, `composer-2`, `deepseek-v4-pro`, `nvidia/nemotron-3-super-120b-a12b:free`
|
|
808
|
+
- Moved superseded IDs to the legacy section so cost calculation still works for historical responses or pinned overrides
|
|
809
|
+
- Synced `COST_RATES.md` tables to match
|
|
810
|
+
- Pricing for `nvidia/nemotron-3-super-120b-a12b:free` set to $0/$0 (OpenRouter free tier)
|
|
811
|
+
|
|
812
|
+
### v2.10.7
|
|
813
|
+
- Grok premium upgraded from `grok-4.20-0309-reasoning` to `grok-4.3` (released 2026-04-30)
|
|
814
|
+
- ~75% cheaper input ($1.25/M vs $5.00/M) and ~83% cheaper output ($2.50/M vs $15.00/M)
|
|
815
|
+
- 1M-token context window
|
|
816
|
+
- Moved `grok-4.20-0309-reasoning` to legacy section in cost catalog
|
|
817
|
+
- Standard (`grok-3`) and economy (`grok-3-mini`) tiers unchanged
|
|
818
|
+
|
|
819
|
+
### v2.10.6
|
|
820
|
+
- Codex premium upgraded from `gpt-5.3-codex` to `gpt-5.5`
|
|
821
|
+
- Cursor premium upgraded from `composer-1.5` to `composer-2`
|
|
822
|
+
- Aider switched provider: `gpt-5.3-codex` → `nvidia/nemotron-3-super-120b-a12b:free` (free tier)
|
|
823
|
+
- DeepSeek premium upgraded from `deepseek-reasoner` to `deepseek-v4-pro`
|
|
824
|
+
- Claude IDs migrated from short aliases to canonical model IDs across all tiers: `opus-4.6` → `claude-opus-4-7`, `sonnet-4.6` → `claude-sonnet-4-6`, `haiku-4.5` → `claude-haiku-4-5`
|
|
825
|
+
- Fixed Kilo SIGPIPE abort under `set -euo pipefail` (replaced `head -c` with parameter expansion)
|
|
826
|
+
|
|
827
|
+
### v2.10.5
|
|
828
|
+
- Qwen3 premium model upgraded from `qwen3.5-plus` to `qwen3.6-plus` ($0.325/$1.95 per M tokens)
|
|
829
|
+
- Qwen3 standard tier now uses open-weight `qwen3.6-35b-a3b` (MoE, 35B total / 3B active)
|
|
830
|
+
- Refactored `get_economic_model()` to delegate to `get_model_for_tier()`, eliminating stale hardcoded mappings
|
|
831
|
+
- Moved `qwen3.5-plus` to legacy section in cost catalog
|
|
832
|
+
- Fixed `AI_CONSULTANTS_VERSION` in `config.sh` (was stuck at `2.10.0`)
|
|
833
|
+
|
|
805
834
|
### v2.10.4
|
|
806
835
|
- GLM premium/standard model upgraded from `glm-5` to `glm-5.1`
|
|
807
836
|
- Fixed Kilo CLI hanging indefinitely in non-TTY mode (query via stdin instead of CLI argument)
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# AI Consultants v2.10.
|
|
1
|
+
# AI Consultants v2.10.8
|
|
2
2
|
|
|
3
3
|
> Query multiple AI models simultaneously for expert opinions on coding questions. Get diverse perspectives, automatic synthesis, confidence-weighted recommendations, and multi-agent debate.
|
|
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)
|
|
@@ -419,7 +419,7 @@ INVOKING_AGENT=codex ./scripts/consult_all.sh "Question" # Codex excluded
|
|
|
419
419
|
|
|
420
420
|
| Consultant | Default Model | Persona | Focus |
|
|
421
421
|
|------------|---------------|---------|-------|
|
|
422
|
-
| **Qwen3** | qwen3.
|
|
422
|
+
| **Qwen3** | qwen3.6-plus | The Analyst | Data-driven analysis |
|
|
423
423
|
| **GLM** | glm-5.1 | The Methodologist | Structured approaches |
|
|
424
424
|
| **Grok** | grok-4.20-0309-reasoning | The Provocateur | Challenge conventions |
|
|
425
425
|
| **DeepSeek** | deepseek-reasoner | The Code Specialist | Algorithms, code generation |
|
|
@@ -479,7 +479,7 @@ Choose the right balance of quality, speed, and cost with model quality tiers.
|
|
|
479
479
|
| DeepSeek | deepseek-reasoner | deepseek-v3.2 | deepseek-chat |
|
|
480
480
|
| GLM | glm-5.1 | glm-5.1 | glm-4-flash |
|
|
481
481
|
| Grok | grok-4.20-0309-reasoning | grok-3 | grok-3-mini |
|
|
482
|
-
| Qwen3 | qwen3.
|
|
482
|
+
| Qwen3 | qwen3.6-plus | qwen3.6-35b-a3b | qwen3-32b |
|
|
483
483
|
| Aider | gpt-5.3-codex | gpt-5.3 | gpt-4o-mini |
|
|
484
484
|
| MiniMax | MiniMax-M2.7 | MiniMax-M2.7 | MiniMax-M2.5 |
|
|
485
485
|
| Ollama | qwen2.5-coder:32b | llama3.3 | llama3.2 |
|
package/SKILL.md
CHANGED
|
@@ -5,10 +5,10 @@ license: MIT
|
|
|
5
5
|
compatibility: Requires bash, jq, and at least 2 AI CLI tools (gemini, codex, vibe, etc.). macOS and Linux.
|
|
6
6
|
metadata:
|
|
7
7
|
author: matteoscurati
|
|
8
|
-
version: 2.10.
|
|
8
|
+
version: 2.10.8
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# AI Consultants v2.10.
|
|
11
|
+
# AI Consultants v2.10.8 - AI Expert Panel
|
|
12
12
|
|
|
13
13
|
Simultaneously consult multiple AIs as "consultants" for coding questions. Each consultant has a **configurable persona** that influences their response style.
|
|
14
14
|
|
package/docs/COST_RATES.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Cost Rates - AI Consultants v2.10.
|
|
1
|
+
# Cost Rates - AI Consultants v2.10.8
|
|
2
2
|
|
|
3
3
|
This page documents the per-token rates used by the cost tracking system.
|
|
4
4
|
|
|
@@ -21,25 +21,27 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
|
|
|
21
21
|
| gemini-3.1-pro-preview | Premium | $0.00125 | Gemini |
|
|
22
22
|
| gemini-3-flash-preview | Standard | $0.000075 | Gemini |
|
|
23
23
|
| gemini-2.0-flash | Economy | $0.0001 | Gemini |
|
|
24
|
-
| gpt-5.
|
|
25
|
-
| gpt-5.3 | Standard | $0.005 | Codex |
|
|
26
|
-
| gpt-4o-mini | Economy | $0.00015 | Codex |
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
24
|
+
| gpt-5.5 | Premium | $0.01 | Codex |
|
|
25
|
+
| gpt-5.3 | Standard | $0.005 | Codex/Aider |
|
|
26
|
+
| gpt-4o-mini | Economy | $0.00015 | Codex/Aider |
|
|
27
|
+
| nvidia/nemotron-3-super-120b-a12b:free | Premium | $0.00 | Aider |
|
|
28
|
+
| claude-opus-4-7 | Premium | $0.015 | Claude |
|
|
29
|
+
| claude-sonnet-4-6 | Standard | $0.003 | Claude |
|
|
30
|
+
| claude-haiku-4-5 | Economy | $0.00025 | Claude |
|
|
30
31
|
| mistral-large-3 | Premium | $0.004 | Mistral |
|
|
31
32
|
| mistral-medium-latest | Standard | $0.0027 | Mistral |
|
|
32
33
|
| devstral-small-2 | Economy | $0.001 | Mistral |
|
|
33
|
-
| composer-
|
|
34
|
-
| deepseek-
|
|
34
|
+
| composer-2 | Premium/Standard | $0.005 | Cursor |
|
|
35
|
+
| deepseek-v4-pro | Premium | $0.002 | DeepSeek |
|
|
35
36
|
| deepseek-v3.2 | Standard | $0.0014 | DeepSeek |
|
|
36
37
|
| deepseek-chat | Economy | $0.001 | DeepSeek |
|
|
37
38
|
| glm-5.1 | Premium/Standard | $0.002 | GLM |
|
|
38
39
|
| glm-4-flash | Economy | $0.0005 | GLM |
|
|
39
|
-
| grok-4.
|
|
40
|
+
| grok-4.3 | Premium | $0.00125 | Grok |
|
|
40
41
|
| grok-3 | Standard | $0.003 | Grok |
|
|
41
42
|
| grok-3-mini | Economy | $0.001 | Grok |
|
|
42
|
-
| qwen3.
|
|
43
|
+
| qwen3.6-plus | Premium | $0.000325 | Qwen3 |
|
|
44
|
+
| qwen3.6-35b-a3b | Standard | $0.000163 | Qwen3 |
|
|
43
45
|
| qwen3-32b | Economy | $0.0005 | Qwen3 |
|
|
44
46
|
| MiniMax-M2.7 | Premium/Standard | $0.002 | MiniMax |
|
|
45
47
|
| MiniMax-M2.5 | Economy | $0.0015 | MiniMax |
|
|
@@ -54,25 +56,27 @@ Since v2.5, models are organized into three tiers. Use `apply_model_tier()` or `
|
|
|
54
56
|
| gemini-3.1-pro-preview | Premium | $0.005 | Gemini |
|
|
55
57
|
| gemini-3-flash-preview | Standard | $0.0003 | Gemini |
|
|
56
58
|
| gemini-2.0-flash | Economy | $0.0004 | Gemini |
|
|
57
|
-
| gpt-5.
|
|
58
|
-
| gpt-5.3 | Standard | $0.015 | Codex |
|
|
59
|
-
| gpt-4o-mini | Economy | $0.0006 | Codex |
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
59
|
+
| gpt-5.5 | Premium | $0.03 | Codex |
|
|
60
|
+
| gpt-5.3 | Standard | $0.015 | Codex/Aider |
|
|
61
|
+
| gpt-4o-mini | Economy | $0.0006 | Codex/Aider |
|
|
62
|
+
| nvidia/nemotron-3-super-120b-a12b:free | Premium | $0.00 | Aider |
|
|
63
|
+
| claude-opus-4-7 | Premium | $0.075 | Claude |
|
|
64
|
+
| claude-sonnet-4-6 | Standard | $0.015 | Claude |
|
|
65
|
+
| claude-haiku-4-5 | Economy | $0.00125 | Claude |
|
|
63
66
|
| mistral-large-3 | Premium | $0.012 | Mistral |
|
|
64
67
|
| mistral-medium-latest | Standard | $0.0081 | Mistral |
|
|
65
68
|
| devstral-small-2 | Economy | $0.003 | Mistral |
|
|
66
|
-
| composer-
|
|
67
|
-
| deepseek-
|
|
69
|
+
| composer-2 | Premium/Standard | $0.015 | Cursor |
|
|
70
|
+
| deepseek-v4-pro | Premium | $0.006 | DeepSeek |
|
|
68
71
|
| deepseek-v3.2 | Standard | $0.004 | DeepSeek |
|
|
69
72
|
| deepseek-chat | Economy | $0.003 | DeepSeek |
|
|
70
73
|
| glm-5.1 | Premium/Standard | $0.006 | GLM |
|
|
71
74
|
| glm-4-flash | Economy | $0.0015 | GLM |
|
|
72
|
-
| grok-4.
|
|
75
|
+
| grok-4.3 | Premium | $0.0025 | Grok |
|
|
73
76
|
| grok-3 | Standard | $0.009 | Grok |
|
|
74
77
|
| grok-3-mini | Economy | $0.003 | Grok |
|
|
75
|
-
| qwen3.
|
|
78
|
+
| qwen3.6-plus | Premium | $0.00195 | Qwen3 |
|
|
79
|
+
| qwen3.6-35b-a3b | Standard | $0.0009 | Qwen3 |
|
|
76
80
|
| qwen3-32b | Economy | $0.0015 | Qwen3 |
|
|
77
81
|
| MiniMax-M2.7 | Premium/Standard | $0.006 | MiniMax |
|
|
78
82
|
| MiniMax-M2.5 | Economy | $0.004 | MiniMax |
|
package/docs/cost_rates.json
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.10.
|
|
3
|
-
"updated": "2026-03
|
|
2
|
+
"version": "2.10.8",
|
|
3
|
+
"updated": "2026-05-03",
|
|
4
4
|
"models": {
|
|
5
|
-
"_comment_premium": "Premium tier models -
|
|
6
|
-
"opus-4
|
|
5
|
+
"_comment_premium": "Premium tier models - May 2026",
|
|
6
|
+
"claude-opus-4-7": {"input": 5.00, "output": 25.00},
|
|
7
7
|
"gemini-3.1-pro-preview": {"input": 1.25, "output": 5.00},
|
|
8
|
-
"gpt-5.
|
|
8
|
+
"gpt-5.5": {"input": 3.00, "output": 12.00},
|
|
9
9
|
"mistral-large-3": {"input": 2.00, "output": 6.00},
|
|
10
|
-
"deepseek-
|
|
10
|
+
"deepseek-v4-pro": {"input": 0.55, "output": 2.19},
|
|
11
11
|
"glm-5.1": {"input": 0.50, "output": 2.00},
|
|
12
|
-
"grok-4.
|
|
13
|
-
"qwen3.
|
|
14
|
-
"
|
|
12
|
+
"grok-4.3": {"input": 1.25, "output": 2.50},
|
|
13
|
+
"qwen3.6-plus": {"input": 0.325, "output": 1.95},
|
|
14
|
+
"qwen3.6-35b-a3b": {"input": 0.163, "output": 0.90},
|
|
15
|
+
"composer-2": {"input": 0.005, "output": 0.015},
|
|
15
16
|
"minimax-m2.7": {"input": 0.50, "output": 2.00},
|
|
16
17
|
"kimi-code/kimi-for-coding": {"input": 0.50, "output": 2.00},
|
|
17
18
|
"amp": {"input": 0.005, "output": 0.015},
|
|
19
|
+
"nvidia/nemotron-3-super-120b-a12b:free": {"input": 0.00, "output": 0.00},
|
|
18
20
|
|
|
19
21
|
"_comment_standard": "Standard tier models",
|
|
20
|
-
"sonnet-4
|
|
22
|
+
"claude-sonnet-4-6": {"input": 3.00, "output": 15.00},
|
|
21
23
|
"gemini-3-flash-preview": {"input": 0.075, "output": 0.30},
|
|
22
24
|
"gpt-5.3": {"input": 2.50, "output": 10.00},
|
|
23
25
|
"mistral-medium-latest": {"input": 0.0027, "output": 0.0081},
|
|
@@ -25,7 +27,7 @@
|
|
|
25
27
|
"grok-3": {"input": 3.00, "output": 9.00},
|
|
26
28
|
|
|
27
29
|
"_comment_economy": "Economy tier models",
|
|
28
|
-
"haiku-4
|
|
30
|
+
"claude-haiku-4-5": {"input": 0.001, "output": 0.005},
|
|
29
31
|
"gemini-2.0-flash": {"input": 0.0001, "output": 0.0004},
|
|
30
32
|
"gpt-4o-mini": {"input": 0.00015, "output": 0.0006},
|
|
31
33
|
"devstral-small-2": {"input": 0.001, "output": 0.003},
|
|
@@ -36,6 +38,14 @@
|
|
|
36
38
|
"minimax-m2.5": {"input": 0.30, "output": 1.50},
|
|
37
39
|
|
|
38
40
|
"_comment_legacy": "Legacy models for backwards compatibility",
|
|
41
|
+
"opus-4.6": {"input": 5.00, "output": 25.00},
|
|
42
|
+
"sonnet-4.6": {"input": 3.00, "output": 15.00},
|
|
43
|
+
"haiku-4.5": {"input": 0.001, "output": 0.005},
|
|
44
|
+
"gpt-5.3-codex": {"input": 3.00, "output": 12.00},
|
|
45
|
+
"composer-1.5": {"input": 0.005, "output": 0.015},
|
|
46
|
+
"deepseek-reasoner": {"input": 0.55, "output": 2.19},
|
|
47
|
+
"qwen3.5-plus": {"input": 1.60, "output": 6.40},
|
|
48
|
+
"grok-4.20-0309-reasoning": {"input": 5.00, "output": 15.00},
|
|
39
49
|
"claude-opus-4-5-20251124": {"input": 5.00, "output": 25.00},
|
|
40
50
|
"claude-sonnet-4-5-20251124": {"input": 3.00, "output": 15.00},
|
|
41
51
|
"claude-3-5-haiku-20241022": {"input": 0.001, "output": 0.005},
|
|
@@ -67,18 +77,18 @@
|
|
|
67
77
|
"minimax-m2.1": {"input": 0.30, "output": 1.50}
|
|
68
78
|
},
|
|
69
79
|
"consultant_fallbacks": {
|
|
70
|
-
"_comment": "Premium defaults - Updated
|
|
71
|
-
"claude": "opus-4
|
|
80
|
+
"_comment": "Premium defaults - Updated May 2026",
|
|
81
|
+
"claude": "claude-opus-4-7",
|
|
72
82
|
"gemini": "gemini-3.1-pro-preview",
|
|
73
|
-
"codex": "gpt-5.
|
|
83
|
+
"codex": "gpt-5.5",
|
|
74
84
|
"mistral": "mistral-large-3",
|
|
75
|
-
"deepseek": "deepseek-
|
|
85
|
+
"deepseek": "deepseek-v4-pro",
|
|
76
86
|
"glm": "glm-5.1",
|
|
77
|
-
"grok": "grok-4.
|
|
78
|
-
"qwen3": "qwen3.
|
|
79
|
-
"aider": "
|
|
87
|
+
"grok": "grok-4.3",
|
|
88
|
+
"qwen3": "qwen3.6-plus",
|
|
89
|
+
"aider": "nvidia/nemotron-3-super-120b-a12b:free",
|
|
80
90
|
"kilo": "auto",
|
|
81
|
-
"cursor": "composer-
|
|
91
|
+
"cursor": "composer-2",
|
|
82
92
|
"amp": "amp",
|
|
83
93
|
"kimi": "kimi-code/kimi-for-coding",
|
|
84
94
|
"minimax": "minimax-m2.7",
|
|
@@ -87,41 +97,41 @@
|
|
|
87
97
|
"model_tiers": {
|
|
88
98
|
"_comment": "Model tiers for apply_model_tier() function",
|
|
89
99
|
"premium": {
|
|
90
|
-
"claude": "opus-4
|
|
100
|
+
"claude": "claude-opus-4-7",
|
|
91
101
|
"gemini": "gemini-3.1-pro-preview",
|
|
92
|
-
"codex": "gpt-5.
|
|
102
|
+
"codex": "gpt-5.5",
|
|
93
103
|
"mistral": "mistral-large-3",
|
|
94
|
-
"deepseek": "deepseek-
|
|
104
|
+
"deepseek": "deepseek-v4-pro",
|
|
95
105
|
"glm": "glm-5.1",
|
|
96
|
-
"grok": "grok-4.
|
|
97
|
-
"qwen3": "qwen3.
|
|
98
|
-
"aider": "
|
|
106
|
+
"grok": "grok-4.3",
|
|
107
|
+
"qwen3": "qwen3.6-plus",
|
|
108
|
+
"aider": "nvidia/nemotron-3-super-120b-a12b:free",
|
|
99
109
|
"kilo": "auto",
|
|
100
|
-
"cursor": "composer-
|
|
110
|
+
"cursor": "composer-2",
|
|
101
111
|
"amp": "amp",
|
|
102
112
|
"kimi": "kimi-code/kimi-for-coding",
|
|
103
113
|
"minimax": "minimax-m2.7",
|
|
104
114
|
"ollama": "qwen2.5-coder:32b"
|
|
105
115
|
},
|
|
106
116
|
"standard": {
|
|
107
|
-
"claude": "sonnet-4
|
|
117
|
+
"claude": "claude-sonnet-4-6",
|
|
108
118
|
"gemini": "gemini-3-flash-preview",
|
|
109
119
|
"codex": "gpt-5.3",
|
|
110
120
|
"mistral": "mistral-medium-latest",
|
|
111
121
|
"deepseek": "deepseek-v3.2",
|
|
112
122
|
"glm": "glm-5.1",
|
|
113
123
|
"grok": "grok-3",
|
|
114
|
-
"qwen3": "qwen3.
|
|
124
|
+
"qwen3": "qwen3.6-35b-a3b",
|
|
115
125
|
"aider": "gpt-5.3",
|
|
116
126
|
"kilo": "auto",
|
|
117
|
-
"cursor": "composer-
|
|
127
|
+
"cursor": "composer-2",
|
|
118
128
|
"amp": "amp",
|
|
119
129
|
"kimi": "kimi-code/kimi-for-coding",
|
|
120
130
|
"minimax": "minimax-m2.7",
|
|
121
131
|
"ollama": "llama3.3"
|
|
122
132
|
},
|
|
123
133
|
"economy": {
|
|
124
|
-
"claude": "haiku-4
|
|
134
|
+
"claude": "claude-haiku-4-5",
|
|
125
135
|
"gemini": "gemini-2.0-flash",
|
|
126
136
|
"codex": "gpt-4o-mini",
|
|
127
137
|
"mistral": "devstral-small-2",
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Release v2.10.5
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-16
|
|
4
|
+
**Type:** Patch — Qwen3 model upgrade to Qwen3.6
|
|
5
|
+
**Previous:** v2.10.4
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Qwen3 premium default upgraded from `qwen3.5-plus` to `qwen3.6-plus` (80% cheaper)
|
|
10
|
+
- Qwen3 standard tier now uses the open-weight `qwen3.6-35b-a3b` (MoE, 35B total / 3B active, Apache 2.0)
|
|
11
|
+
- Eliminated stale hardcoded model mappings in `get_economic_model()`
|
|
12
|
+
|
|
13
|
+
## What's New
|
|
14
|
+
|
|
15
|
+
### Qwen3.6 Model Upgrade
|
|
16
|
+
|
|
17
|
+
Alibaba released Qwen3.6-35B-A3B on April 16, 2026 — a sparse Mixture-of-Experts model with 35B total parameters but only 3B active during inference. The model scores 51.5 on Terminal-Bench 2.0 and 73.4 on SWE-bench Verified.
|
|
18
|
+
|
|
19
|
+
| Tier | Before (v2.10.4) | After (v2.10.5) |
|
|
20
|
+
|------|-------------------|------------------|
|
|
21
|
+
| Premium | qwen3.5-plus ($1.60/$6.40 per M) | qwen3.6-plus ($0.325/$1.95 per M) |
|
|
22
|
+
| Standard | qwen3.5-plus ($1.60/$6.40 per M) | qwen3.6-35b-a3b ($0.163/$0.90 per M) |
|
|
23
|
+
| Economy | qwen3-32b | qwen3-32b (unchanged) |
|
|
24
|
+
|
|
25
|
+
The premium tier (`qwen3.6-plus`) is Alibaba's hosted API with 1M context window. The standard tier (`qwen3.6-35b-a3b`) is the open-weight variant, also available on Ollama as `qwen3.6:35b-a3b` (24GB).
|
|
26
|
+
|
|
27
|
+
### DRY Refactor: get_economic_model()
|
|
28
|
+
|
|
29
|
+
`get_economic_model()` in `lib/costs.sh` had a hardcoded case statement with stale model names (e.g., `qwen-turbo`, `claude-3-haiku`, `gemini-2.5-flash`). Refactored to delegate to `get_model_for_tier()` in `config.sh`, matching the pattern already used by `get_premium_model()` in `lib/routing.sh`.
|
|
30
|
+
|
|
31
|
+
### Version Fix
|
|
32
|
+
|
|
33
|
+
Fixed `AI_CONSULTANTS_VERSION` in `config.sh` which was stuck at `2.10.0` since the npm packaging release.
|
|
34
|
+
|
|
35
|
+
## Breaking Changes
|
|
36
|
+
|
|
37
|
+
None.
|
|
38
|
+
|
|
39
|
+
## Upgrade Guide
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# If installed via git clone
|
|
43
|
+
cd ~/.claude/skills/ai-consultants && git pull
|
|
44
|
+
|
|
45
|
+
# If installed via curl | bash
|
|
46
|
+
curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
No configuration changes required. Existing `QWEN3_MODEL` overrides continue to work.
|
|
50
|
+
|
|
51
|
+
## Commits
|
|
52
|
+
|
|
53
|
+
- `aaa1d69` feat(qwen3): upgrade to Qwen3.6-Plus and Qwen3.6-35B-A3B
|
|
54
|
+
|
|
55
|
+
## Contributors
|
|
56
|
+
|
|
57
|
+
- @matteoscurati
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Release v2.10.6
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-05-02
|
|
4
|
+
**Type:** Patch — Premium model upgrades across 5 consultants + Kilo SIGPIPE fix
|
|
5
|
+
**Previous:** v2.10.5
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Codex, Cursor, Aider, DeepSeek, and Claude all bumped to newer premium defaults
|
|
10
|
+
- Aider switches provider to NVIDIA Nemotron 3 Super (free tier) via OpenRouter
|
|
11
|
+
- Claude model IDs migrated from short aliases (`opus-4.6`) to canonical IDs (`claude-opus-4-7`)
|
|
12
|
+
- Kilo no longer aborts under `set -euo pipefail` due to SIGPIPE from `head -c`
|
|
13
|
+
|
|
14
|
+
## What's New
|
|
15
|
+
|
|
16
|
+
### Premium Model Upgrades
|
|
17
|
+
|
|
18
|
+
| Consultant | Before (v2.10.5) | After (v2.10.6) |
|
|
19
|
+
|------------|------------------|------------------|
|
|
20
|
+
| Codex | `gpt-5.3-codex` | `gpt-5.5` |
|
|
21
|
+
| Cursor | `composer-1.5` | `composer-2` |
|
|
22
|
+
| Aider | `gpt-5.3-codex` | `nvidia/nemotron-3-super-120b-a12b:free` |
|
|
23
|
+
| DeepSeek | `deepseek-reasoner` | `deepseek-v4-pro` |
|
|
24
|
+
| Claude | `opus-4.6` / `sonnet-4.6` / `haiku-4.5` | `claude-opus-4-7` / `claude-sonnet-4-6` / `claude-haiku-4-5` |
|
|
25
|
+
|
|
26
|
+
The Claude rename also covers standard and economy tiers — all three Claude tiers now use canonical IDs (`claude-<family>-<major>-<minor>`) matching the Anthropic API model identifiers, eliminating the alias indirection that previously required mapping in API mode.
|
|
27
|
+
|
|
28
|
+
Aider moves off OpenAI Codex to NVIDIA's Nemotron 3 Super 120B (A12B-active MoE) on the OpenRouter free tier, lowering cost-per-consultation for collaborative coding workflows.
|
|
29
|
+
|
|
30
|
+
### Kilo SIGPIPE Fix
|
|
31
|
+
|
|
32
|
+
`query_kilo.sh` previously truncated output via `echo "$CONTENT" | head -5 | ... | head -c 200`. Under `set -o pipefail`, `head -c` closing the pipe before the upstream `sed` finished writing produced a SIGPIPE that aborted the entire script. Replaced the trailing `head -c` with bash parameter expansion (`${var:0:N}`), which truncates safely without involving the pipeline.
|
|
33
|
+
|
|
34
|
+
## Breaking Changes
|
|
35
|
+
|
|
36
|
+
None. Existing `CLAUDE_MODEL`, `CODEX_MODEL`, `CURSOR_MODEL`, `AIDER_MODEL`, and `DEEPSEEK_MODEL` overrides continue to work — only the *defaults* changed.
|
|
37
|
+
|
|
38
|
+
If you were relying on the short Claude aliases (`opus-4.6`, etc.) in scripts, those still work as overrides through the CLI; the change only affects what's selected when no override is present.
|
|
39
|
+
|
|
40
|
+
## Upgrade Guide
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# If installed via git clone
|
|
44
|
+
cd ~/.claude/skills/ai-consultants && git pull
|
|
45
|
+
|
|
46
|
+
# If installed via curl | bash
|
|
47
|
+
curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
No configuration changes required.
|
|
51
|
+
|
|
52
|
+
## Commits
|
|
53
|
+
|
|
54
|
+
- `e797d69` fix(kilo): use parameter expansion to avoid SIGPIPE under set -euo pipefail
|
|
55
|
+
- `e52d6d4` feat: upgrade Codex, Cursor, Aider, DeepSeek, Claude premium models
|
|
56
|
+
|
|
57
|
+
## Contributors
|
|
58
|
+
|
|
59
|
+
- @matteoscurati
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Release v2.10.7
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-05-02
|
|
4
|
+
**Type:** Patch — Grok premium model upgrade to grok-4.3
|
|
5
|
+
**Previous:** v2.10.6
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Grok premium upgraded from `grok-4.20-0309-reasoning` to `grok-4.3`
|
|
10
|
+
- ~75% cheaper input, ~83% cheaper output, with a 1M-token context window
|
|
11
|
+
- xAI explicitly recommends migrating all callers to grok-4.3
|
|
12
|
+
|
|
13
|
+
## What's New
|
|
14
|
+
|
|
15
|
+
### Grok 4.3 Upgrade
|
|
16
|
+
|
|
17
|
+
xAI released Grok 4.3 on April 30, 2026 as their flagship model, replacing the previous reasoning-focused `grok-4.20-0309-reasoning`. The new model is positioned as both the most intelligent and the fastest in the lineup, with aggressive pricing.
|
|
18
|
+
|
|
19
|
+
| Tier | Before (v2.10.6) | After (v2.10.7) |
|
|
20
|
+
|------|-------------------|------------------|
|
|
21
|
+
| Premium | grok-4.20-0309-reasoning ($5.00/$15.00 per M) | grok-4.3 ($1.25/$2.50 per M) |
|
|
22
|
+
| Standard | grok-3 ($3.00/$9.00 per M) | grok-3 (unchanged) |
|
|
23
|
+
| Economy | grok-3-mini ($1.00/$3.00 per M) | grok-3-mini (unchanged) |
|
|
24
|
+
|
|
25
|
+
The premium tier moves from $20.00 combined per million tokens (input + output average) to $3.75 — a roughly 5x reduction at typical query shapes. The 1M-token context window is unchanged from the prior reasoning variant.
|
|
26
|
+
|
|
27
|
+
**Note on tiered pricing:** xAI bills requests exceeding 200k input tokens at a higher rate. For very long-context queries, consult the xAI Console for the exact tiered pricing.
|
|
28
|
+
|
|
29
|
+
The standard and economy tiers continue to use `grok-3` and `grok-3-mini` respectively. The previous premium model `grok-4.20-0309-reasoning` was moved to the legacy section of `docs/cost_rates.json` so cost calculation continues to work for any historical responses or pinned overrides.
|
|
30
|
+
|
|
31
|
+
## Breaking Changes
|
|
32
|
+
|
|
33
|
+
None. Existing `GROK_MODEL` overrides continue to work — only the default changed.
|
|
34
|
+
|
|
35
|
+
## Upgrade Guide
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# If installed via git clone
|
|
39
|
+
cd ~/.claude/skills/ai-consultants && git pull
|
|
40
|
+
|
|
41
|
+
# If installed via curl | bash
|
|
42
|
+
curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
No configuration changes required.
|
|
46
|
+
|
|
47
|
+
## Commits
|
|
48
|
+
|
|
49
|
+
- `1d3a53b` feat(grok): upgrade premium to grok-4.3 (released 2026-04-30)
|
|
50
|
+
|
|
51
|
+
## Contributors
|
|
52
|
+
|
|
53
|
+
- @matteoscurati
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Release v2.10.8
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-05-03
|
|
4
|
+
**Type:** Patch — Cost catalog sync (fixes v2.10.6 drift)
|
|
5
|
+
**Previous:** v2.10.7
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Fixes a runtime drift introduced by v2.10.6: `docs/cost_rates.json` was still pointing `consultant_fallbacks` at the old model IDs (`opus-4.6`, `gpt-5.3-codex`, `composer-1.5`, `deepseek-reasoner`)
|
|
10
|
+
- Adds price entries for the v2.10.6 model IDs (Claude canonical IDs, `gpt-5.5`, `composer-2`, `deepseek-v4-pro`, `nvidia/nemotron-3-super-120b-a12b:free`)
|
|
11
|
+
- Old IDs preserved in the legacy section so cost calculation still works for historical responses or pinned overrides
|
|
12
|
+
|
|
13
|
+
## What's New
|
|
14
|
+
|
|
15
|
+
### Cost Catalog Sync
|
|
16
|
+
|
|
17
|
+
In v2.10.6 we updated `scripts/config.sh` to use canonical model IDs for Claude and to switch Codex/Cursor/Aider/DeepSeek to newer models. However, `docs/cost_rates.json` — which is read at runtime by `lib/costs.sh` to resolve fallback prices when a consultant doesn't report its own model — was not updated. Two effects:
|
|
18
|
+
|
|
19
|
+
1. `consultant_fallbacks.claude = "opus-4.6"` would have caused fallback cost lookups to use `opus-4.6` even when the consultant ran on `claude-opus-4-7`. The price for `claude-opus-4-7` was missing from the catalog entirely, which would have triggered the `default_rate` ($0.005/$0.015 per 1k) for any direct lookup of the new ID.
|
|
20
|
+
2. The reference `model_tiers` table in the JSON file (documentation, not used at runtime) was inconsistent with the canonical source in `config.sh::get_model_for_tier()`.
|
|
21
|
+
|
|
22
|
+
Both issues are now fixed. `consultant_fallbacks` and `model_tiers` mirror the active defaults in `config.sh`, and every model ID referenced by the defaults has a corresponding price entry.
|
|
23
|
+
|
|
24
|
+
### Catalog Layout Changes
|
|
25
|
+
|
|
26
|
+
| Section | Added | Moved to legacy |
|
|
27
|
+
|---------|-------|------------------|
|
|
28
|
+
| Premium | `claude-opus-4-7`, `gpt-5.5`, `composer-2`, `deepseek-v4-pro`, `nvidia/nemotron-3-super-120b-a12b:free` | `opus-4.6`, `gpt-5.3-codex`, `composer-1.5`, `deepseek-reasoner` |
|
|
29
|
+
| Standard | `claude-sonnet-4-6` | `sonnet-4.6` |
|
|
30
|
+
| Economy | `claude-haiku-4-5` | `haiku-4.5` |
|
|
31
|
+
|
|
32
|
+
Pricing values mirror the prior entries for direct successors (the model lineage is the same, only the canonical ID changed). `nvidia/nemotron-3-super-120b-a12b:free` is set to $0/$0 to reflect OpenRouter's free tier — this means Aider consultations contribute zero to cost tracking when running on the default model.
|
|
33
|
+
|
|
34
|
+
`COST_RATES.md` was updated to mirror the new active and legacy IDs.
|
|
35
|
+
|
|
36
|
+
## Breaking Changes
|
|
37
|
+
|
|
38
|
+
None.
|
|
39
|
+
|
|
40
|
+
## Upgrade Guide
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# If installed via git clone
|
|
44
|
+
cd ~/.claude/skills/ai-consultants && git pull
|
|
45
|
+
|
|
46
|
+
# If installed via curl | bash
|
|
47
|
+
curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
No configuration changes required.
|
|
51
|
+
|
|
52
|
+
## Commits
|
|
53
|
+
|
|
54
|
+
- `885e2ea` fix(costs): sync cost catalog with v2.10.6 model defaults
|
|
55
|
+
|
|
56
|
+
## Contributors
|
|
57
|
+
|
|
58
|
+
- @matteoscurati
|
package/package.json
CHANGED
|
@@ -79,7 +79,7 @@ CURSOR_MODEL=composer-1.5
|
|
|
79
79
|
AIDER_MODEL=gpt-5.3-codex
|
|
80
80
|
AMP_MODEL=amp
|
|
81
81
|
KIMI_MODEL=kimi-code/kimi-for-coding
|
|
82
|
-
QWEN3_MODEL=qwen3.
|
|
82
|
+
QWEN3_MODEL=qwen3.6-plus
|
|
83
83
|
GLM_MODEL=glm-5.1
|
|
84
84
|
GROK_MODEL=grok-4.20-0309-reasoning
|
|
85
85
|
DEEPSEEK_MODEL=deepseek-reasoner
|
package/scripts/config.sh
CHANGED
|
@@ -63,8 +63,8 @@ GEMINI_CMD="${GEMINI_CMD:-gemini}"
|
|
|
63
63
|
# CODEX CONFIGURATION - The Pragmatist
|
|
64
64
|
# =============================================================================
|
|
65
65
|
|
|
66
|
-
# Model: "gpt-5.
|
|
67
|
-
CODEX_MODEL="${CODEX_MODEL:-gpt-5.
|
|
66
|
+
# Model: "gpt-5.5" (default), "gpt-5.3", "gpt-4o-mini", etc.
|
|
67
|
+
CODEX_MODEL="${CODEX_MODEL:-gpt-5.5}"
|
|
68
68
|
CODEX_TIMEOUT_SECONDS="${CODEX_TIMEOUT:-180}"
|
|
69
69
|
CODEX_CMD="${CODEX_CMD:-codex}"
|
|
70
70
|
|
|
@@ -89,7 +89,7 @@ KILO_CMD="${KILO_CMD:-kilocode}"
|
|
|
89
89
|
# CURSOR CONFIGURATION - The Integrator
|
|
90
90
|
# =============================================================================
|
|
91
91
|
|
|
92
|
-
CURSOR_MODEL="${CURSOR_MODEL:-composer-
|
|
92
|
+
CURSOR_MODEL="${CURSOR_MODEL:-composer-2}"
|
|
93
93
|
CURSOR_TIMEOUT_SECONDS="${CURSOR_TIMEOUT:-180}"
|
|
94
94
|
CURSOR_CMD="${CURSOR_CMD:-agent}"
|
|
95
95
|
|
|
@@ -97,7 +97,7 @@ CURSOR_CMD="${CURSOR_CMD:-agent}"
|
|
|
97
97
|
# AIDER CONFIGURATION - The Pair Programmer
|
|
98
98
|
# =============================================================================
|
|
99
99
|
|
|
100
|
-
AIDER_MODEL="${AIDER_MODEL:-
|
|
100
|
+
AIDER_MODEL="${AIDER_MODEL:-nvidia/nemotron-3-super-120b-a12b:free}"
|
|
101
101
|
AIDER_TIMEOUT_SECONDS="${AIDER_TIMEOUT:-180}"
|
|
102
102
|
AIDER_CMD="${AIDER_CMD:-aider}"
|
|
103
103
|
|
|
@@ -105,7 +105,7 @@ AIDER_CMD="${AIDER_CMD:-aider}"
|
|
|
105
105
|
# QWEN3 CONFIGURATION - The Analyst (CLI/API switchable v2.7)
|
|
106
106
|
# =============================================================================
|
|
107
107
|
|
|
108
|
-
QWEN3_MODEL="${QWEN3_MODEL:-qwen3.
|
|
108
|
+
QWEN3_MODEL="${QWEN3_MODEL:-qwen3.6-plus}"
|
|
109
109
|
QWEN3_TIMEOUT_SECONDS="${QWEN3_TIMEOUT:-180}"
|
|
110
110
|
QWEN3_CMD="${QWEN3_CMD:-qwen}"
|
|
111
111
|
QWEN3_API_URL="${QWEN3_API_URL:-https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation}"
|
|
@@ -127,7 +127,7 @@ GLM_FORMAT="${GLM_FORMAT:-openai}"
|
|
|
127
127
|
# GROK CONFIGURATION - The Provocateur (API-based)
|
|
128
128
|
# =============================================================================
|
|
129
129
|
|
|
130
|
-
GROK_MODEL="${GROK_MODEL:-grok-4.
|
|
130
|
+
GROK_MODEL="${GROK_MODEL:-grok-4.3}"
|
|
131
131
|
GROK_TIMEOUT_SECONDS="${GROK_TIMEOUT:-180}"
|
|
132
132
|
GROK_API_URL="${GROK_API_URL:-https://api.x.ai/v1/chat/completions}"
|
|
133
133
|
GROK_FORMAT="${GROK_FORMAT:-openai}"
|
|
@@ -137,7 +137,7 @@ GROK_FORMAT="${GROK_FORMAT:-openai}"
|
|
|
137
137
|
# DEEPSEEK CONFIGURATION - The Methodologist (API-based)
|
|
138
138
|
# =============================================================================
|
|
139
139
|
|
|
140
|
-
DEEPSEEK_MODEL="${DEEPSEEK_MODEL:-deepseek-
|
|
140
|
+
DEEPSEEK_MODEL="${DEEPSEEK_MODEL:-deepseek-v4-pro}"
|
|
141
141
|
DEEPSEEK_TIMEOUT_SECONDS="${DEEPSEEK_TIMEOUT:-180}"
|
|
142
142
|
DEEPSEEK_API_URL="${DEEPSEEK_API_URL:-https://api.deepseek.com/v1/chat/completions}"
|
|
143
143
|
DEEPSEEK_FORMAT="${DEEPSEEK_FORMAT:-openai}"
|
|
@@ -176,7 +176,7 @@ KIMI_CMD="${KIMI_CMD:-kimi}"
|
|
|
176
176
|
# CLAUDE CONFIGURATION - The Synthesizer (v2.2)
|
|
177
177
|
# =============================================================================
|
|
178
178
|
|
|
179
|
-
CLAUDE_MODEL="${CLAUDE_MODEL:-opus-4
|
|
179
|
+
CLAUDE_MODEL="${CLAUDE_MODEL:-claude-opus-4-7}"
|
|
180
180
|
CLAUDE_TIMEOUT_SECONDS="${CLAUDE_TIMEOUT:-240}"
|
|
181
181
|
CLAUDE_CMD="${CLAUDE_CMD:-claude}"
|
|
182
182
|
|
|
@@ -525,16 +525,16 @@ get_model_for_tier() {
|
|
|
525
525
|
case "$tier" in
|
|
526
526
|
premium|max|best)
|
|
527
527
|
case "$consultant" in
|
|
528
|
-
claude) echo "opus-4
|
|
528
|
+
claude) echo "claude-opus-4-7" ;;
|
|
529
529
|
gemini) echo "gemini-3.1-pro-preview" ;;
|
|
530
|
-
codex) echo "gpt-5.
|
|
530
|
+
codex) echo "gpt-5.5" ;;
|
|
531
531
|
mistral) echo "mistral-large-3" ;;
|
|
532
|
-
cursor) echo "composer-
|
|
533
|
-
deepseek) echo "deepseek-
|
|
532
|
+
cursor) echo "composer-2" ;;
|
|
533
|
+
deepseek) echo "deepseek-v4-pro" ;;
|
|
534
534
|
glm) echo "glm-5.1" ;;
|
|
535
|
-
grok) echo "grok-4.
|
|
536
|
-
qwen3) echo "qwen3.
|
|
537
|
-
aider) echo "
|
|
535
|
+
grok) echo "grok-4.3" ;;
|
|
536
|
+
qwen3) echo "qwen3.6-plus" ;;
|
|
537
|
+
aider) echo "nvidia/nemotron-3-super-120b-a12b:free" ;;
|
|
538
538
|
amp) echo "amp" ;;
|
|
539
539
|
ollama) echo "qwen2.5-coder:32b" ;;
|
|
540
540
|
kimi) echo "kimi-code/kimi-for-coding" ;;
|
|
@@ -545,7 +545,7 @@ get_model_for_tier() {
|
|
|
545
545
|
;;
|
|
546
546
|
standard|medium|balanced)
|
|
547
547
|
case "$consultant" in
|
|
548
|
-
claude) echo "sonnet-4
|
|
548
|
+
claude) echo "claude-sonnet-4-6" ;;
|
|
549
549
|
gemini) echo "gemini-3-flash-preview" ;;
|
|
550
550
|
codex) echo "gpt-5.3" ;;
|
|
551
551
|
mistral) echo "mistral-medium-latest" ;;
|
|
@@ -553,7 +553,7 @@ get_model_for_tier() {
|
|
|
553
553
|
deepseek) echo "deepseek-v3.2" ;;
|
|
554
554
|
glm) echo "glm-5.1" ;; # Same as premium (no mid-tier GLM)
|
|
555
555
|
grok) echo "grok-3" ;;
|
|
556
|
-
qwen3) echo "qwen3.
|
|
556
|
+
qwen3) echo "qwen3.6-35b-a3b" ;; # Open-weight MoE (35B total, 3B active)
|
|
557
557
|
aider) echo "gpt-5.3" ;;
|
|
558
558
|
amp) echo "amp" ;; # Same model (no tiers)
|
|
559
559
|
ollama) echo "llama3.3" ;;
|
|
@@ -565,7 +565,7 @@ get_model_for_tier() {
|
|
|
565
565
|
;;
|
|
566
566
|
economy|fast|quick)
|
|
567
567
|
case "$consultant" in
|
|
568
|
-
claude) echo "haiku-4
|
|
568
|
+
claude) echo "claude-haiku-4-5" ;;
|
|
569
569
|
gemini) echo "gemini-2.0-flash" ;;
|
|
570
570
|
codex) echo "gpt-4o-mini" ;;
|
|
571
571
|
mistral) echo "devstral-small-2" ;;
|
|
@@ -750,4 +750,4 @@ EOF
|
|
|
750
750
|
# VERSION
|
|
751
751
|
# =============================================================================
|
|
752
752
|
|
|
753
|
-
AI_CONSULTANTS_VERSION="2.10.
|
|
753
|
+
AI_CONSULTANTS_VERSION="2.10.8"
|
package/scripts/lib/common.sh
CHANGED
|
@@ -124,12 +124,12 @@ run_with_timeout() {
|
|
|
124
124
|
# =============================================================================
|
|
125
125
|
|
|
126
126
|
check_command() {
|
|
127
|
-
local
|
|
127
|
+
local cmd_name=$1
|
|
128
128
|
local name=$2
|
|
129
129
|
local install_hint=$3
|
|
130
130
|
|
|
131
|
-
if ! command -v "$
|
|
132
|
-
log_error "$name not found (command: $
|
|
131
|
+
if ! command -v "$cmd_name" &> /dev/null; then
|
|
132
|
+
log_error "$name not found (command: $cmd_name)"
|
|
133
133
|
if [[ -n "$install_hint" ]]; then
|
|
134
134
|
log_info "Install with: $install_hint"
|
|
135
135
|
fi
|
|
@@ -612,7 +612,7 @@ map_set() {
|
|
|
612
612
|
local keys_var="_MAP_${map_name}__KEYS__"
|
|
613
613
|
local current_keys
|
|
614
614
|
eval "current_keys=\"\${$keys_var:-}\""
|
|
615
|
-
if [[
|
|
615
|
+
if [[ " $current_keys " != *" $safe_key "* ]]; then
|
|
616
616
|
if [[ -z "$current_keys" ]]; then
|
|
617
617
|
eval "$keys_var=\"\$safe_key\""
|
|
618
618
|
else
|
package/scripts/lib/costs.sh
CHANGED
|
@@ -476,26 +476,15 @@ get_model_tier() {
|
|
|
476
476
|
}
|
|
477
477
|
|
|
478
478
|
# Get economic model for a consultant
|
|
479
|
+
# Delegates to get_model_for_tier() in config.sh (single source of truth)
|
|
479
480
|
# Usage: get_economic_model <consultant>
|
|
480
481
|
get_economic_model() {
|
|
481
482
|
local consultant="$1"
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
mistral) echo "mistral-small" ;;
|
|
488
|
-
kilo) echo "kilo" ;; # No economy variant
|
|
489
|
-
cursor) echo "cursor" ;; # No economy variant
|
|
490
|
-
claude) echo "claude-3-haiku" ;;
|
|
491
|
-
qwen3) echo "qwen-turbo" ;;
|
|
492
|
-
glm) echo "glm-3-turbo" ;;
|
|
493
|
-
grok) echo "grok-3-mini" ;;
|
|
494
|
-
deepseek) echo "deepseek-chat" ;;
|
|
495
|
-
|
|
496
|
-
minimax) echo "MiniMax-M2.5" ;;
|
|
497
|
-
*) echo "" ;;
|
|
498
|
-
esac
|
|
483
|
+
if type get_model_for_tier &>/dev/null; then
|
|
484
|
+
get_model_for_tier "$consultant" "economy"
|
|
485
|
+
else
|
|
486
|
+
echo ""
|
|
487
|
+
fi
|
|
499
488
|
}
|
|
500
489
|
|
|
501
490
|
# Calculate query complexity score (1-10)
|
package/scripts/lib/routing.sh
CHANGED
|
@@ -257,13 +257,15 @@ get_selected_consultants_json() {
|
|
|
257
257
|
local category="$1"
|
|
258
258
|
local min_affinity="${2:-7}"
|
|
259
259
|
|
|
260
|
-
local consultants
|
|
260
|
+
local consultants
|
|
261
|
+
consultants=$(select_consultants "$category" "$min_affinity")
|
|
261
262
|
local json="["
|
|
262
263
|
local first=true
|
|
263
264
|
|
|
264
265
|
while IFS= read -r c; do
|
|
265
266
|
if [[ -n "$c" ]]; then
|
|
266
|
-
local score
|
|
267
|
+
local score
|
|
268
|
+
score=$(get_affinity "$category" "$c")
|
|
267
269
|
if [[ "$first" == "true" ]]; then
|
|
268
270
|
first=false
|
|
269
271
|
else
|
package/scripts/query_kilo.sh
CHANGED
|
@@ -95,13 +95,15 @@ if [[ $exit_code -eq 0 && -n "${CONTENT:-}" ]]; then
|
|
|
95
95
|
"$TEMP_OUTPUT" "$OUTPUT_FILE" "$exit_code" "$LATENCY_MS"
|
|
96
96
|
else
|
|
97
97
|
# Extract structured fields from markdown/text output
|
|
98
|
-
#
|
|
99
|
-
|
|
98
|
+
# Note: truncation via parameter expansion (not `head -c`) to avoid SIGPIPE
|
|
99
|
+
# aborting the script under `set -euo pipefail`.
|
|
100
|
+
local_summary=$(echo "$CONTENT" | head -5 | tr '\n' ' ' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
101
|
+
local_summary="${local_summary:0:200}"
|
|
100
102
|
|
|
101
|
-
# Approach: look for headings or key phrases
|
|
102
103
|
local_approach=$(echo "$CONTENT" | grep -iE '^#+\s|^approach:|^recommendation:|^solution:' | head -1 | \
|
|
103
|
-
sed 's/^[#[:space:]]*//;s/^[Aa]pproach:[[:space:]]*//'
|
|
104
|
-
|
|
104
|
+
sed 's/^[#[:space:]]*//;s/^[Aa]pproach:[[:space:]]*//' || true)
|
|
105
|
+
local_approach="${local_approach:0:100}"
|
|
106
|
+
[[ -z "$local_approach" ]] && local_approach="${local_summary:0:60}"
|
|
105
107
|
|
|
106
108
|
# Confidence: estimate from language strength
|
|
107
109
|
local_confidence=6
|
package/scripts/query_qwen3.sh
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Usage: ./query_qwen3.sh "question" [context_file] [output_file]
|
|
5
5
|
#
|
|
6
6
|
# Environment variables:
|
|
7
|
-
# QWEN3_MODEL - Model to use (default: qwen3.
|
|
7
|
+
# QWEN3_MODEL - Model to use (default: qwen3.6-plus)
|
|
8
8
|
# QWEN3_TIMEOUT - Timeout in seconds (default: 180)
|
|
9
9
|
# QWEN3_USE_API - Use API mode instead of CLI (default: false)
|
|
10
10
|
# QWEN3_API_KEY - API key for DashScope API (required for API mode)
|
|
@@ -82,7 +82,7 @@ END_TIME=$(get_timestamp_ms)
|
|
|
82
82
|
LATENCY_MS=$((END_TIME - START_TIME))
|
|
83
83
|
|
|
84
84
|
# --- Configuration for response building ---
|
|
85
|
-
MODEL_USED="${QWEN3_MODEL:-qwen3.
|
|
85
|
+
MODEL_USED="${QWEN3_MODEL:-qwen3.6-plus}"
|
|
86
86
|
PERSONA_NAME=$(get_persona_name "$CONSULTANT_NAME")
|
|
87
87
|
|
|
88
88
|
# --- Post-processing: use shared helper ---
|
package/scripts/test_suite.sh
CHANGED
|
@@ -1086,9 +1086,9 @@ test_model_tiers() {
|
|
|
1086
1086
|
test_economic_models() {
|
|
1087
1087
|
suite "costs.sh: get_economic_model"
|
|
1088
1088
|
|
|
1089
|
-
assert_equals "gemini-2.
|
|
1089
|
+
assert_equals "gemini-2.0-flash" "$(get_economic_model "gemini")" "gemini economy is gemini-2.0-flash"
|
|
1090
1090
|
assert_equals "gpt-4o-mini" "$(get_economic_model "codex")" "codex economy is gpt-4o-mini"
|
|
1091
|
-
assert_equals "claude-
|
|
1091
|
+
assert_equals "claude-haiku-4-5" "$(get_economic_model "claude")" "claude economy is claude-haiku-4-5"
|
|
1092
1092
|
assert_equals "MiniMax-M2.5" "$(get_economic_model "minimax")" "minimax economy is MiniMax-M2.5"
|
|
1093
1093
|
assert_equals "" "$(get_economic_model "unknown")" "unknown consultant returns empty"
|
|
1094
1094
|
}
|
|
@@ -1424,9 +1424,9 @@ test_escalation() {
|
|
|
1424
1424
|
test_model_for_tier() {
|
|
1425
1425
|
suite "config.sh: get_model_for_tier"
|
|
1426
1426
|
|
|
1427
|
-
assert_equals "opus-4
|
|
1428
|
-
assert_equals "sonnet-4
|
|
1429
|
-
assert_equals "haiku-4
|
|
1427
|
+
assert_equals "claude-opus-4-7" "$(get_model_for_tier "claude" "premium")" "claude premium is claude-opus-4-7"
|
|
1428
|
+
assert_equals "claude-sonnet-4-6" "$(get_model_for_tier "claude" "standard")" "claude standard is claude-sonnet-4-6"
|
|
1429
|
+
assert_equals "claude-haiku-4-5" "$(get_model_for_tier "claude" "economy")" "claude economy is claude-haiku-4-5"
|
|
1430
1430
|
assert_equals "gemini-3.1-pro-preview" "$(get_model_for_tier "gemini" "premium")" "gemini premium is gemini-3.1-pro-preview"
|
|
1431
1431
|
assert_equals "gemini-2.0-flash" "$(get_model_for_tier "gemini" "economy")" "gemini economy is gemini-2.0-flash"
|
|
1432
1432
|
assert_equals "MiniMax-M2.7" "$(get_model_for_tier "minimax" "premium")" "minimax premium is MiniMax-M2.7"
|