ai-consultants 3.3.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +28 -5
- package/CLAUDE.md +46 -14
- package/README.md +40 -23
- package/SKILL.md +10 -4
- package/docs/COST_RATES.md +61 -33
- package/docs/JSON_SCHEMA.md +9 -1
- package/docs/RECIPES.md +20 -9
- package/docs/SETUP.md +4 -0
- package/docs/cost_rates.json +154 -42
- package/docs/releases/v3.4.0.md +102 -0
- package/docs/releases/v3.5.0.md +129 -0
- package/package.json +1 -1
- package/references/configuration.md +23 -3
- package/references/details.md +1 -1
- package/scripts/config.sh +106 -31
- package/scripts/configure.sh +69 -4
- package/scripts/doctor.sh +32 -7
- package/scripts/lib/api.sh +14 -5
- package/scripts/lib/api_query.sh +62 -6
- package/scripts/lib/common.sh +49 -10
- package/scripts/lib/costs.sh +37 -11
- package/scripts/lib/schema.json +10 -1
- package/scripts/query_claude.sh +41 -14
- package/scripts/query_codex.sh +123 -18
- package/scripts/query_cursor.sh +71 -15
- package/scripts/query_gemini.sh +67 -8
- package/scripts/query_glm.sh +1 -1
- package/scripts/query_grok.sh +9 -2
- package/scripts/query_kimi.sh +11 -8
- package/scripts/query_minimax.sh +5 -2
- package/scripts/query_mistral.sh +61 -12
- package/scripts/query_qwen3.sh +17 -8
- package/scripts/update_clis.sh +9 -3
package/docs/RECIPES.md
CHANGED
|
@@ -155,7 +155,7 @@ QWEN3_API_KEY=your-dashscope-key
|
|
|
155
155
|
ENABLE_GROK=true
|
|
156
156
|
GROK_USE_API=false
|
|
157
157
|
GROK_API_KEY=your-xai-key
|
|
158
|
-
GROK_MODEL=grok-4.
|
|
158
|
+
GROK_MODEL=grok-4.6
|
|
159
159
|
|
|
160
160
|
ENABLE_GLM=false
|
|
161
161
|
ENABLE_DEEPSEEK=false
|
|
@@ -190,28 +190,39 @@ For every available variable and its default, see
|
|
|
190
190
|
[`references/configuration.md`](../references/configuration.md). The executable
|
|
191
191
|
source of truth is [`scripts/config.sh`](../scripts/config.sh).
|
|
192
192
|
|
|
193
|
-
## Qwen via Qwen Cloud Token Plan (opt-in
|
|
193
|
+
## Qwen via Qwen Cloud Token Plan (opt-in)
|
|
194
194
|
|
|
195
|
-
`qwen3.8-max
|
|
195
|
+
`qwen3.8-max` is **not** served by DashScope/ModelStudio. It is reachable
|
|
196
196
|
only through a Qwen Cloud **Token Plan** subscription, which has its own base URL
|
|
197
197
|
and its own API key. This is opt-in: nothing below is a default, and the panel's
|
|
198
|
-
premium Qwen model remains `qwen3.7-max
|
|
198
|
+
premium Qwen model remains `qwen3.7-max`; `max_quality` selects the separately
|
|
199
|
+
smoke-tested `qwen3.8-max` Token Plan target.
|
|
199
200
|
|
|
200
201
|
Understand the tradeoffs before enabling it:
|
|
201
202
|
|
|
202
|
-
- **
|
|
203
|
-
|
|
203
|
+
- **Token Plan only.** No open weights, no published benchmarks, no stable
|
|
204
|
+
per-token price.
|
|
204
205
|
- **Billed in prepaid credits**, not per token — and credit consumption varies
|
|
205
206
|
with reasoning depth. Cost reports therefore exclude it and say so explicitly
|
|
206
207
|
rather than estimating a figure.
|
|
207
208
|
|
|
209
|
+
Both `qwen3.8-max` and `qwen3.8-max-preview` are served by Token Plan and are
|
|
210
|
+
**separate deployments**, not an alias or rename: each completion reports its
|
|
211
|
+
own requested id back in `.model`. Verified against the live endpoint on
|
|
212
|
+
2026-08-05. Prefer `qwen3.8-max`; `qwen3.8-max-preview` is the older
|
|
213
|
+
deployment and the natural candidate for eventual retirement. An existing
|
|
214
|
+
`qwen3.8-max-preview` pin keeps working and stays correctly catalogued — both
|
|
215
|
+
ids are listed in `unpriced_models`, so the session report continues to
|
|
216
|
+
disclose them as credit-billed and excluded from the total rather than falling
|
|
217
|
+
through to `default_rate`.
|
|
218
|
+
|
|
208
219
|
### API mode (the effort knob works here)
|
|
209
220
|
|
|
210
221
|
```bash
|
|
211
222
|
QWEN3_USE_API=true
|
|
212
223
|
QWEN3_FORMAT=openai # Token Plan is OpenAI-compatible; DashScope is not
|
|
213
224
|
QWEN3_API_URL=https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
|
|
214
|
-
QWEN3_MODEL=qwen3.8-max
|
|
225
|
+
QWEN3_MODEL=qwen3.8-max
|
|
215
226
|
QWEN3_API_KEY=<your Token Plan key>
|
|
216
227
|
QWEN3_REASONING_EFFORT=high # none|minimal|low|medium|high|xhigh|max; default xhigh
|
|
217
228
|
```
|
|
@@ -240,8 +251,8 @@ ai-consultants cannot deliver it per call and warns if you set
|
|
|
240
251
|
"modelProviders": {
|
|
241
252
|
"openai": [
|
|
242
253
|
{
|
|
243
|
-
"id": "qwen3.8-max
|
|
244
|
-
"name": "[Token Plan] qwen3.8-max
|
|
254
|
+
"id": "qwen3.8-max",
|
|
255
|
+
"name": "[Token Plan] qwen3.8-max",
|
|
245
256
|
"baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
|
|
246
257
|
"envKey": "BAILIAN_TOKEN_PLAN_API_KEY",
|
|
247
258
|
"generationConfig": { "reasoning": { "effort": "high" } }
|
package/docs/SETUP.md
CHANGED
|
@@ -294,6 +294,7 @@ Get API key: [Mistral Console](https://console.mistral.ai/api-keys/)
|
|
|
294
294
|
curl https://cursor.com/install -fsS | bash
|
|
295
295
|
|
|
296
296
|
# Uses Cursor subscription - no additional key needed
|
|
297
|
+
cursor-agent status
|
|
297
298
|
```
|
|
298
299
|
|
|
299
300
|
### Claude CLI (The Synthesizer) - v2.2
|
|
@@ -339,6 +340,9 @@ export KIMI_MODEL=kimi-code/k3
|
|
|
339
340
|
./scripts/query_kimi.sh "Review this API boundary"
|
|
340
341
|
```
|
|
341
342
|
|
|
343
|
+
`max_quality` selects `kimi-code/k3-256k`, whose availability is verified from
|
|
344
|
+
the Kimi provider inventory before the request.
|
|
345
|
+
|
|
342
346
|
### MiniMax (CLI via mmx) - v2.21
|
|
343
347
|
|
|
344
348
|
MiniMax runs via the `mmx` CLI by default (CLI-first, OAuth). Install and sign in:
|
package/docs/cost_rates.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.
|
|
2
|
+
"version": "3.5.0",
|
|
3
3
|
"updated": "2026-07-25",
|
|
4
4
|
"models": {
|
|
5
5
|
"_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.",
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"input": 0.005,
|
|
9
9
|
"output": 0.025
|
|
10
10
|
},
|
|
11
|
+
"claude-fable-5": {
|
|
12
|
+
"input": 0.01,
|
|
13
|
+
"output": 0.05
|
|
14
|
+
},
|
|
11
15
|
"gemini-3.1-pro-preview": {
|
|
12
16
|
"input": 0.00125,
|
|
13
17
|
"output": 0.005
|
|
@@ -17,22 +21,58 @@
|
|
|
17
21
|
"input": 0.002,
|
|
18
22
|
"output": 0.012
|
|
19
23
|
},
|
|
20
|
-
"Gemini 3.
|
|
24
|
+
"Gemini 3.6 Flash (High)": {
|
|
21
25
|
"input": 0.0015,
|
|
22
|
-
"output": 0.
|
|
26
|
+
"output": 0.0075
|
|
23
27
|
},
|
|
24
|
-
"Gemini 3.
|
|
28
|
+
"Gemini 3.6 Flash (Low)": {
|
|
25
29
|
"input": 0.0015,
|
|
26
|
-
"output": 0.
|
|
30
|
+
"output": 0.0075
|
|
27
31
|
},
|
|
28
|
-
"
|
|
32
|
+
"gemini-3.7-flash": {
|
|
33
|
+
"input": 0.00075,
|
|
34
|
+
"output": 0.00375
|
|
35
|
+
},
|
|
36
|
+
"Gemini 3.7 Flash (High)": {
|
|
37
|
+
"input": 0.00075,
|
|
38
|
+
"output": 0.00375
|
|
39
|
+
},
|
|
40
|
+
"Gemini 3.7 Flash (Low)": {
|
|
41
|
+
"input": 0.00075,
|
|
42
|
+
"output": 0.00375
|
|
43
|
+
},
|
|
44
|
+
"gpt-5.6-sol": {
|
|
29
45
|
"input": 0.005,
|
|
30
46
|
"output": 0.030
|
|
31
47
|
},
|
|
48
|
+
"gpt-5.6-terra": {
|
|
49
|
+
"input": 0.002,
|
|
50
|
+
"output": 0.012
|
|
51
|
+
},
|
|
52
|
+
"gpt-5.6-luna": {
|
|
53
|
+
"input": 0.0002,
|
|
54
|
+
"output": 0.0012
|
|
55
|
+
},
|
|
32
56
|
"mistral-large-3": {
|
|
33
57
|
"input": 0.002,
|
|
34
58
|
"output": 0.006
|
|
35
59
|
},
|
|
60
|
+
"mistral-medium-3-5": {
|
|
61
|
+
"input": 0.0015,
|
|
62
|
+
"output": 0.0075
|
|
63
|
+
},
|
|
64
|
+
"mistral-medium-3.5": {
|
|
65
|
+
"input": 0.0015,
|
|
66
|
+
"output": 0.0075
|
|
67
|
+
},
|
|
68
|
+
"mistral-large-2512": {
|
|
69
|
+
"input": 0.0005,
|
|
70
|
+
"output": 0.0015
|
|
71
|
+
},
|
|
72
|
+
"mistral-small-2603": {
|
|
73
|
+
"input": 0.00015,
|
|
74
|
+
"output": 0.0006
|
|
75
|
+
},
|
|
36
76
|
"deepseek-v4-pro": {
|
|
37
77
|
"input": 0.000435,
|
|
38
78
|
"output": 0.00087
|
|
@@ -45,6 +85,10 @@
|
|
|
45
85
|
"input": 0.002,
|
|
46
86
|
"output": 0.006
|
|
47
87
|
},
|
|
88
|
+
"grok-4.6": {
|
|
89
|
+
"input": 0.002,
|
|
90
|
+
"output": 0.006
|
|
91
|
+
},
|
|
48
92
|
"qwen3.6-plus": {
|
|
49
93
|
"input": 0.000325,
|
|
50
94
|
"output": 0.00195
|
|
@@ -58,8 +102,12 @@
|
|
|
58
102
|
"output": 0.0025
|
|
59
103
|
},
|
|
60
104
|
"minimax-m2.7": {
|
|
61
|
-
"input": 0.
|
|
62
|
-
"output": 0.
|
|
105
|
+
"input": 0.0003,
|
|
106
|
+
"output": 0.0012
|
|
107
|
+
},
|
|
108
|
+
"minimax-m3": {
|
|
109
|
+
"input": 0.0003,
|
|
110
|
+
"output": 0.0012
|
|
63
111
|
},
|
|
64
112
|
"kimi-code/k3": {
|
|
65
113
|
"input": 0.0005,
|
|
@@ -75,7 +123,7 @@
|
|
|
75
123
|
"output": 0.00
|
|
76
124
|
},
|
|
77
125
|
"_comment_standard": "Standard tier models",
|
|
78
|
-
"claude-sonnet-
|
|
126
|
+
"claude-sonnet-5": {
|
|
79
127
|
"input": 0.003,
|
|
80
128
|
"output": 0.015
|
|
81
129
|
},
|
|
@@ -133,10 +181,34 @@
|
|
|
133
181
|
"output": 0.0016
|
|
134
182
|
},
|
|
135
183
|
"minimax-m2.5": {
|
|
136
|
-
"input": 0.
|
|
137
|
-
"output": 0.
|
|
184
|
+
"input": 0.0003,
|
|
185
|
+
"output": 0.0012
|
|
138
186
|
},
|
|
139
187
|
"_comment_legacy": "Legacy models for backwards compatibility",
|
|
188
|
+
"Gemini 3.5 Flash (High)": {
|
|
189
|
+
"input": 0.0015,
|
|
190
|
+
"output": 0.009
|
|
191
|
+
},
|
|
192
|
+
"Gemini 3.5 Flash (Low)": {
|
|
193
|
+
"input": 0.0015,
|
|
194
|
+
"output": 0.009
|
|
195
|
+
},
|
|
196
|
+
"gpt-5.5": {
|
|
197
|
+
"input": 0.005,
|
|
198
|
+
"output": 0.030
|
|
199
|
+
},
|
|
200
|
+
"gpt-5.4": {
|
|
201
|
+
"input": 0.0025,
|
|
202
|
+
"output": 0.015
|
|
203
|
+
},
|
|
204
|
+
"gpt-5.4-nano": {
|
|
205
|
+
"input": 0.0002,
|
|
206
|
+
"output": 0.00125
|
|
207
|
+
},
|
|
208
|
+
"claude-sonnet-4-6": {
|
|
209
|
+
"input": 0.003,
|
|
210
|
+
"output": 0.015
|
|
211
|
+
},
|
|
140
212
|
"claude-opus-4-8": {
|
|
141
213
|
"input": 0.005,
|
|
142
214
|
"output": 0.025
|
|
@@ -289,14 +361,6 @@
|
|
|
289
361
|
"input": 0.0003,
|
|
290
362
|
"output": 0.0015
|
|
291
363
|
},
|
|
292
|
-
"gpt-5.4": {
|
|
293
|
-
"input": 0.0025,
|
|
294
|
-
"output": 0.015
|
|
295
|
-
},
|
|
296
|
-
"gpt-5.4-nano": {
|
|
297
|
-
"input": 0.0002,
|
|
298
|
-
"output": 0.00125
|
|
299
|
-
},
|
|
300
364
|
"composer-2.5": {
|
|
301
365
|
"input": 0.0005,
|
|
302
366
|
"output": 0.0025
|
|
@@ -326,23 +390,38 @@
|
|
|
326
390
|
"output": 0.0025
|
|
327
391
|
},
|
|
328
392
|
"_comment_unpriced": "Credit-billed models: drawn from a prepaid subscription pool, with no published per-token price. Rated 0 so the estimator does not fabricate a figure - an absent model would otherwise fall through to default_rate (0.005/0.015) and be reported as a confident, wrong number. Every entry here must also be listed in unpriced_models, which is what makes the session report disclose the exclusion instead of implying the model was free.",
|
|
393
|
+
"qwen3.8-max": {
|
|
394
|
+
"input": 0,
|
|
395
|
+
"output": 0
|
|
396
|
+
},
|
|
329
397
|
"qwen3.8-max-preview": {
|
|
330
398
|
"input": 0,
|
|
331
399
|
"output": 0
|
|
400
|
+
},
|
|
401
|
+
"glm-5.3": {
|
|
402
|
+
"input": 0,
|
|
403
|
+
"output": 0
|
|
404
|
+
},
|
|
405
|
+
"kimi-code/k3-256k": {
|
|
406
|
+
"input": 0,
|
|
407
|
+
"output": 0
|
|
332
408
|
}
|
|
333
409
|
},
|
|
334
410
|
"unpriced_models": [
|
|
335
|
-
"qwen3.8-max
|
|
411
|
+
"qwen3.8-max",
|
|
412
|
+
"qwen3.8-max-preview",
|
|
413
|
+
"glm-5.3",
|
|
414
|
+
"kimi-code/k3-256k"
|
|
336
415
|
],
|
|
337
416
|
"consultant_fallbacks": {
|
|
338
|
-
"_comment": "Premium defaults - Updated
|
|
417
|
+
"_comment": "Premium defaults - Updated Aug 2026",
|
|
339
418
|
"claude": "claude-opus-5",
|
|
340
419
|
"gemini": "Gemini 3.1 Pro (High)",
|
|
341
|
-
"codex": "gpt-5.
|
|
420
|
+
"codex": "gpt-5.6-sol",
|
|
342
421
|
"mistral": "mistral-large-3",
|
|
343
422
|
"deepseek": "deepseek-v4-pro",
|
|
344
|
-
"glm": "glm-5.
|
|
345
|
-
"grok": "grok-4.
|
|
423
|
+
"glm": "glm-5.3",
|
|
424
|
+
"grok": "grok-4.6",
|
|
346
425
|
"qwen3": "qwen3.7-max",
|
|
347
426
|
"cursor": "composer-2.5",
|
|
348
427
|
"kimi": "kimi-code/k3",
|
|
@@ -350,46 +429,79 @@
|
|
|
350
429
|
},
|
|
351
430
|
"model_tiers": {
|
|
352
431
|
"_comment": "Model tiers for apply_model_tier() function",
|
|
432
|
+
"maximum": {
|
|
433
|
+
"claude": "claude-opus-5",
|
|
434
|
+
"gemini": "Gemini 3.1 Pro (High)",
|
|
435
|
+
"codex": "gpt-5.6-sol",
|
|
436
|
+
"mistral": "mistral-medium-3.5",
|
|
437
|
+
"deepseek": "deepseek-v4-pro",
|
|
438
|
+
"glm": "glm-5.3",
|
|
439
|
+
"grok": "grok-4.6",
|
|
440
|
+
"qwen3": "qwen3.8-max",
|
|
441
|
+
"cursor": "composer-2.5",
|
|
442
|
+
"kimi": "kimi-code/k3-256k",
|
|
443
|
+
"minimax": "MiniMax-M3"
|
|
444
|
+
},
|
|
353
445
|
"premium": {
|
|
354
446
|
"claude": "claude-opus-5",
|
|
355
447
|
"gemini": "Gemini 3.1 Pro (High)",
|
|
356
|
-
"codex": "gpt-5.
|
|
357
|
-
"mistral": "mistral-
|
|
448
|
+
"codex": "gpt-5.6-sol",
|
|
449
|
+
"mistral": "mistral-medium-3.5",
|
|
358
450
|
"deepseek": "deepseek-v4-pro",
|
|
359
|
-
"glm": "glm-5.
|
|
360
|
-
"grok": "grok-4.
|
|
451
|
+
"glm": "glm-5.3",
|
|
452
|
+
"grok": "grok-4.6",
|
|
361
453
|
"qwen3": "qwen3.7-max",
|
|
362
454
|
"cursor": "composer-2.5",
|
|
363
455
|
"kimi": "kimi-code/k3",
|
|
364
|
-
"minimax": "
|
|
456
|
+
"minimax": "MiniMax-M2.7"
|
|
365
457
|
},
|
|
366
458
|
"standard": {
|
|
367
|
-
"claude": "claude-sonnet-
|
|
368
|
-
"gemini": "Gemini 3.
|
|
369
|
-
"codex": "gpt-5.
|
|
370
|
-
"mistral": "mistral-medium-
|
|
459
|
+
"claude": "claude-sonnet-5",
|
|
460
|
+
"gemini": "Gemini 3.6 Flash (High)",
|
|
461
|
+
"codex": "gpt-5.6-terra",
|
|
462
|
+
"mistral": "mistral-medium-3.5",
|
|
371
463
|
"deepseek": "deepseek-v4-flash",
|
|
372
|
-
"glm": "glm-5.
|
|
373
|
-
"grok": "grok-4.
|
|
464
|
+
"glm": "glm-5.3",
|
|
465
|
+
"grok": "grok-4.5",
|
|
374
466
|
"qwen3": "qwen3.6-35b-a3b",
|
|
375
|
-
"cursor": "composer-2",
|
|
467
|
+
"cursor": "composer-2.5",
|
|
376
468
|
"kimi": "kimi-code/k3",
|
|
377
|
-
"minimax": "
|
|
469
|
+
"minimax": "MiniMax-M2.7"
|
|
378
470
|
},
|
|
379
471
|
"economy": {
|
|
380
472
|
"claude": "claude-haiku-4-5",
|
|
381
|
-
"gemini": "Gemini 3.
|
|
382
|
-
"codex": "gpt-5.
|
|
473
|
+
"gemini": "Gemini 3.6 Flash (Low)",
|
|
474
|
+
"codex": "gpt-5.6-luna",
|
|
383
475
|
"mistral": "devstral-small-2",
|
|
384
476
|
"deepseek": "deepseek-v4-flash",
|
|
385
477
|
"glm": "glm-4-flash",
|
|
386
|
-
"grok": "grok-4.
|
|
478
|
+
"grok": "grok-4.5",
|
|
387
479
|
"qwen3": "qwen3-32b",
|
|
388
|
-
"cursor": "
|
|
480
|
+
"cursor": "composer-2.5",
|
|
389
481
|
"kimi": "kimi-code/k3",
|
|
390
|
-
"minimax": "
|
|
482
|
+
"minimax": "MiniMax-M2.5"
|
|
391
483
|
}
|
|
392
484
|
},
|
|
485
|
+
"transport_model_tiers": {
|
|
486
|
+
"_comment": "Transport-specific namespaces used by Gemini and Mistral; the legacy model_tiers table reflects their CLI values.",
|
|
487
|
+
"gemini": {
|
|
488
|
+
"maximum": {"cli": "Gemini 3.1 Pro (High)", "api": "gemini-3.1-pro-preview"},
|
|
489
|
+
"premium": {"cli": "Gemini 3.1 Pro (High)", "api": "gemini-3.1-pro-preview"},
|
|
490
|
+
"standard": {"cli": "Gemini 3.6 Flash (High)", "api": "gemini-3.1-pro-preview"},
|
|
491
|
+
"economy": {"cli": "Gemini 3.6 Flash (Low)", "api": "gemini-3.1-pro-preview"}
|
|
492
|
+
},
|
|
493
|
+
"mistral": {
|
|
494
|
+
"maximum": {"cli": "mistral-medium-3.5", "api": "mistral-large-3"},
|
|
495
|
+
"premium": {"cli": "mistral-medium-3.5", "api": "mistral-large-3"},
|
|
496
|
+
"standard": {"cli": "mistral-medium-3.5", "api": "mistral-large-3"},
|
|
497
|
+
"economy": {"cli": "devstral-small-2", "api": "mistral-large-3"}
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
"opt_in_targets": {
|
|
501
|
+
"gemini": ["gemini-3.7-flash", "Gemini 3.7 Flash (High)", "Gemini 3.7 Flash (Low)"],
|
|
502
|
+
"mistral_api": ["mistral-medium-3-5", "mistral-large-2512", "mistral-small-2603"],
|
|
503
|
+
"claude": ["claude-fable-5"]
|
|
504
|
+
},
|
|
393
505
|
"default_rate": {
|
|
394
506
|
"input": 0.005,
|
|
395
507
|
"output": 0.015
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Release v3.4.0
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-08-05
|
|
4
|
+
**Type:** Minor — Gemini works over SSH again, the Codex consultant is isolated, and the model catalog moves to the current generation
|
|
5
|
+
**Previous:** v3.3.0
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- **Gemini consultations from an SSH session were failing authentication, and re-signing-in could not fix it.** Now fixed at every `agy` call site.
|
|
10
|
+
- **The Codex consultant no longer inherits your local Codex environment** — no `config.toml`, no `AGENTS.md`, no hooks, no MCP servers, and a read-only sandbox.
|
|
11
|
+
- **Model catalog refreshed** to `gpt-5.6-sol/terra/luna`, `claude-sonnet-5`, and Gemini 3.6 Flash, every id verified against the installed CLIs rather than documentation.
|
|
12
|
+
- **`*_REASONING_EFFORT` actually works now.** It was honored in API mode only, which meant it did nothing in the default CLI-first configuration.
|
|
13
|
+
- **Existing installations receive the new Codex model.** Without the migration added here, they would have kept querying `gpt-5.5` indefinitely while every doc claimed otherwise.
|
|
14
|
+
|
|
15
|
+
## What's New
|
|
16
|
+
|
|
17
|
+
### Gemini authentication over SSH
|
|
18
|
+
|
|
19
|
+
The Antigravity CLI picks its credential store from the environment. When it sees any of `SSH_CLIENT`, `SSH_CONNECTION`, or `SSH_TTY`, it switches to a file-based token store and never consults the macOS Keychain. If you signed in locally — as almost everyone does — the credential lives in the Keychain, so every Gemini consultation over SSH failed to authenticate. Signing in again did not help: the new login also landed in the store the CLI had already decided to ignore.
|
|
20
|
+
|
|
21
|
+
Those three markers are now stripped for every `agy` invocation: consultations, `doctor`, `update-clis`, and synthesis. On a local session they are already unset, so this changes nothing there. It grants no additional tools and no filesystem access — only which credential store the CLI consults.
|
|
22
|
+
|
|
23
|
+
If you drive ai-consultants over SSH, this is the release that makes Gemini work.
|
|
24
|
+
|
|
25
|
+
### The Codex consultant runs isolated
|
|
26
|
+
|
|
27
|
+
Previously the Codex adapter ran `codex exec` in your ambient environment. That meant your `~/.codex/config.toml`, the repository's `AGENTS.md`, your hooks, your MCP servers, and your execpolicy rules all shaped what is supposed to be an independent second opinion — and the sandbox was unpinned.
|
|
28
|
+
|
|
29
|
+
CLI mode now runs under an ephemeral HOME and working directory with `--ephemeral`, `--ignore-user-config`, `--ignore-rules`, and `-s read-only`. **Authentication is unaffected**: `CODEX_HOME` still resolves to your real Codex auth store.
|
|
30
|
+
|
|
31
|
+
Two side effects worth knowing:
|
|
32
|
+
|
|
33
|
+
- **Large contexts no longer break it.** The prompt is delivered on stdin rather than argv, which removes both the `ARG_MAX` ceiling and the exposure of your prompt in the process list.
|
|
34
|
+
- **Failures are reported as failures.** A timeout, authentication error, or exhausted retry is never rewritten into a success, even when a partial answer reached disk.
|
|
35
|
+
|
|
36
|
+
### Reasoning effort works in CLI mode
|
|
37
|
+
|
|
38
|
+
`*_REASONING_EFFORT` was documented as API-mode only. Since CLI-first transport became mandatory in v2.21, that meant the setting did nothing at all in the default configuration — while three consultant CLIs did expose the control.
|
|
39
|
+
|
|
40
|
+
| Consultant | Variable | Passed as |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| Codex | `CODEX_REASONING_EFFORT` | `-c model_reasoning_effort=<value>` |
|
|
43
|
+
| Claude | `CLAUDE_REASONING_EFFORT` | `--effort <value>` |
|
|
44
|
+
| Gemini | `GEMINI_REASONING_EFFORT` | `--effort <value>` |
|
|
45
|
+
|
|
46
|
+
There is deliberately no local allowlist of accepted values. The enum belongs to the provider — `agy`, for instance, accepts only `low|medium|high` — and an unsupported value comes back as a diagnosed error rather than being silently pre-empted. Consultants whose CLI has no such flag still warn, as before.
|
|
47
|
+
|
|
48
|
+
All three are optional. Leave them unset and each CLI keeps its own default.
|
|
49
|
+
|
|
50
|
+
### Model catalog
|
|
51
|
+
|
|
52
|
+
Every replacement id was verified live against the installed CLIs:
|
|
53
|
+
|
|
54
|
+
| Consultant | Premium | Standard | Economy |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| Codex | `gpt-5.6-sol` | `gpt-5.6-terra` | `gpt-5.6-luna` |
|
|
57
|
+
| Claude | `claude-opus-5` *(unchanged)* | `claude-sonnet-5` | `claude-haiku-4-5` *(unchanged)* |
|
|
58
|
+
| Gemini | `Gemini 3.1 Pro (High)` *(unchanged)* | `Gemini 3.6 Flash (High)` | `Gemini 3.6 Flash (Low)` |
|
|
59
|
+
|
|
60
|
+
Gemini's premium tier stays on 3.1 Pro because the live model inventory has no 3.6 Pro. Cost rates ship alongside the new ids — a model missing from the catalog would otherwise be billed at the fallback rate and reported as a confident, wrong figure. Superseded ids remain catalogued so pinned configurations and historical responses still resolve.
|
|
61
|
+
|
|
62
|
+
The opt-in Qwen Token Plan model is referenced as `qwen3.8-max`. Both it and `qwen3.8-max-preview` are still served by Token Plan, and they are separate deployments rather than aliases — each reports its own id back. Both stay catalogued, so an existing `-preview` pin keeps working and keeps its credit-billed cost disclosure. The shipped premium Qwen model remains `qwen3.7-max`.
|
|
63
|
+
|
|
64
|
+
### Existing installations get the new Codex model
|
|
65
|
+
|
|
66
|
+
`init` copies `.env.example` verbatim, so the then-current Codex default was written into your config as an ordinary value — and `configure` reads any unmarked value as a deliberate pin. A catalog refresh alone would therefore never have reached you: your panel would have kept querying `gpt-5.5` while the docs, tier tables, and cost catalog all said `gpt-5.6-sol`.
|
|
67
|
+
|
|
68
|
+
`configure` now migrates that one exact historical value and marks it as managed, so future refreshes can reach it too. **An explicit pin is preserved** — if you deliberately want `gpt-5.5`, record it with `--set CODEX_MODEL=gpt-5.5` and it will survive.
|
|
69
|
+
|
|
70
|
+
## Breaking Changes
|
|
71
|
+
|
|
72
|
+
None. All new parameters are additive, existing configurations migrate, and no consultant is added or removed.
|
|
73
|
+
|
|
74
|
+
Two behavior changes are worth noting even though nothing breaks:
|
|
75
|
+
|
|
76
|
+
- **Codex answers may differ**, because it no longer sees your local Codex configuration. That is the intent — an advisory consultation shaped by your own hooks and project instructions is not an independent opinion.
|
|
77
|
+
- **Codex and Gemini tier models changed.** Pin `CODEX_MODEL` / `GEMINI_MODEL` explicitly if you need the previous ones.
|
|
78
|
+
|
|
79
|
+
## Upgrade Guide
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# If installed via npx, nothing to do — npx resolves the published version
|
|
83
|
+
npx ai-consultants "your question"
|
|
84
|
+
|
|
85
|
+
# If installed via git clone
|
|
86
|
+
cd ~/.claude/skills/ai-consultants && git pull
|
|
87
|
+
|
|
88
|
+
# If installed via curl | bash
|
|
89
|
+
curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Then, to pick up the new Codex default in an existing configuration:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
ai-consultants configure
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
No other configuration changes are required. Run `ai-consultants doctor --live` afterwards to confirm each consultant actually answers — the static check only verifies that CLIs are installed and keys are present.
|
|
99
|
+
|
|
100
|
+
## Contributors
|
|
101
|
+
|
|
102
|
+
- @matteoscurati
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Release v3.5.0
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-08-21
|
|
4
|
+
**Type:** Minor — transport-aware model catalog and honest model identity
|
|
5
|
+
**Previous:** v3.4.0
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Normal premium runs remain cost-balanced; `max_quality` gains a separate maximum tier for exact-transport-smoked subscription targets.
|
|
10
|
+
- Mistral Vibe uses `mistral-medium-3.5` through a dedicated CLI setting, while API IDs remain separate and opt-in until verified.
|
|
11
|
+
- Cursor now invokes and validates `cursor-agent`, never the unrelated `agent` binary, and runs in read-only ask mode inside an ephemeral workspace.
|
|
12
|
+
- Responses distinguish requested models from provider-reported or capability-probed effective identity.
|
|
13
|
+
- GLM 5.3 and Grok 4.6 become the promoted defaults; new prices, unpriced disclosures, migrations, and 22-suite regression coverage ship with them.
|
|
14
|
+
|
|
15
|
+
## What's New
|
|
16
|
+
|
|
17
|
+
### A maximum tier that fails closed
|
|
18
|
+
|
|
19
|
+
`max_quality` no longer means simply “the normal premium tier with more consultants.” It selects the strongest targets that completed a smoke through ai-consultants' own adapter and output contract:
|
|
20
|
+
|
|
21
|
+
| Consultant | Normal premium | `max_quality` maximum | Promotion evidence |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| Kimi | `kimi-code/k3` | `kimi-code/k3-256k` | CLI inventory + live response |
|
|
24
|
+
| Qwen3 | `qwen3.7-max` | `qwen3.8-max` only on an already-configured Token Plan transport | Provider-reported API model |
|
|
25
|
+
| MiniMax | `MiniMax-M2.7` | `MiniMax-M3` | Explicit CLI model + live response |
|
|
26
|
+
| Claude | `claude-opus-5` | `claude-opus-5` | Fable 5 timed out, so it remains opt-in |
|
|
27
|
+
|
|
28
|
+
Qwen is never silently redirected from DashScope or CLI mode to a different paid endpoint. Without the exact Token Plan configuration, maximum keeps Qwen on `qwen3.7-max`.
|
|
29
|
+
|
|
30
|
+
### Transport-aware Gemini and Mistral configuration
|
|
31
|
+
|
|
32
|
+
Gemini and Mistral no longer pretend that one model string works on both transports:
|
|
33
|
+
|
|
34
|
+
- Gemini keeps separate `GEMINI_MODEL` and `GEMINI_API_MODEL` values. Gemini 3.7 Flash is priced and documented but remains opt-in because neither local transport could authenticate for its smoke.
|
|
35
|
+
- Mistral API continues to use `MISTRAL_MODEL`; Vibe uses the new `MISTRAL_CLI_MODEL`, defaulting to `mistral-medium-3.5` through `VIBE_ACTIVE_MODEL`.
|
|
36
|
+
- The official Mistral API IDs `mistral-medium-3-5`, `mistral-large-2512`, and `mistral-small-2603` remain opt-in because no Mistral API key was available for exact transport verification.
|
|
37
|
+
|
|
38
|
+
### Bounded advisory CLIs
|
|
39
|
+
|
|
40
|
+
Cursor and Mistral now run in temporary workspaces with read-only modes and bounded capability probes:
|
|
41
|
+
|
|
42
|
+
- Cursor defaults to `cursor-agent`, verifies the Cursor interface and requested Composer 2.5 inventory, and uses `--mode ask --trust` only for the newly-created workspace. `-f`/force mode is never used.
|
|
43
|
+
- Mistral verifies prompt/output/agent/workdir/max-turn capabilities and the built-in plan agent before dispatch.
|
|
44
|
+
- A failed or timed-out probe stops before a model request. A timeout, empty reply, or other failure after launch never triggers a silent alternate model or transport.
|
|
45
|
+
|
|
46
|
+
### Requested versus effective model identity
|
|
47
|
+
|
|
48
|
+
Response metadata adds:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"requested_model": "glm-5.3",
|
|
53
|
+
"model_identity_source": "provider-reported"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
`model_identity_source` is one of:
|
|
58
|
+
|
|
59
|
+
- `provider-reported` — the API explicitly named the effective model;
|
|
60
|
+
- `capability-probed` — the requested CLI model was present in an authenticated inventory;
|
|
61
|
+
- `requested-only` — the transport accepted the request but exposed no stronger content-model evidence.
|
|
62
|
+
|
|
63
|
+
The top-level `model` remains the best effective identifier available. Provider billing participants such as Claude CLI `modelUsage` are not misrepresented as content identity.
|
|
64
|
+
|
|
65
|
+
### Prices, unpriced targets, and migrations
|
|
66
|
+
|
|
67
|
+
The catalog now includes current entries for Fable 5, Gemini 3.7 Flash, Mistral Medium 3.5/Large 3/Small 4, Grok 4.6, and MiniMax M3/M2.7/M2.5. GLM 5.3 on the coding-plan endpoint, Qwen3.8-Max Token Plan, and K3-256k remain explicitly unpriced: reports disclose their exclusion instead of inventing a dollar rate or calling them free.
|
|
68
|
+
|
|
69
|
+
`ai-consultants configure` migrates only these exact historical managed values:
|
|
70
|
+
|
|
71
|
+
- `CURSOR_CMD=agent` → `cursor-agent`
|
|
72
|
+
- `GLM_MODEL=glm-5.2` → `glm-5.3`
|
|
73
|
+
- `GROK_MODEL=grok-4.5` → `grok-4.6`
|
|
74
|
+
|
|
75
|
+
Values carrying `# ai-consultants:pin` remain unchanged.
|
|
76
|
+
|
|
77
|
+
## Verification and Provider Status
|
|
78
|
+
|
|
79
|
+
- Full gate: 22/22 suites
|
|
80
|
+
- Core gate: 443/443 checks
|
|
81
|
+
- ShellCheck, Bash syntax, JSON validation, and npm tarball: passed
|
|
82
|
+
- Cross-family material review: Claude Opus 5 at max effort; initial `NO-SHIP`, final `SHIP` after findings were resolved
|
|
83
|
+
- PR CI: full GitHub Actions job executed and passed
|
|
84
|
+
|
|
85
|
+
Not verified locally in this release:
|
|
86
|
+
|
|
87
|
+
- Gemini 3.7 Flash — agy/API authentication unavailable
|
|
88
|
+
- Mistral new API IDs — no API key available
|
|
89
|
+
- Claude Fable 5 — max-effort adapter and direct probes timed out
|
|
90
|
+
- Cursor response — CLI installed, account not logged in
|
|
91
|
+
|
|
92
|
+
These targets are not presented as verified defaults.
|
|
93
|
+
|
|
94
|
+
## Breaking Changes
|
|
95
|
+
|
|
96
|
+
None — this release is backwards-compatible. New metadata and configuration fields are additive. Managed migrations are limited to exact historical defaults and preserve explicit pins.
|
|
97
|
+
|
|
98
|
+
`max_quality` can select subscription/credit-billed targets that have no reliable per-token USD price. They are disclosed in the cost caveat, but a dollar budget cannot cap consumption the estimator cannot price.
|
|
99
|
+
|
|
100
|
+
## Upgrade Guide
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# npx (no install)
|
|
104
|
+
npx ai-consultants "question"
|
|
105
|
+
|
|
106
|
+
# git clone install
|
|
107
|
+
cd ~/.claude/skills/ai-consultants && git pull
|
|
108
|
+
|
|
109
|
+
# curl | bash install
|
|
110
|
+
curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Run the configurator once to migrate managed Cursor, GLM, and Grok defaults:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
ai-consultants configure
|
|
117
|
+
ai-consultants doctor --live
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
No credential or authentication state is modified automatically.
|
|
121
|
+
|
|
122
|
+
## Commits
|
|
123
|
+
|
|
124
|
+
- `97f537c` feat: refresh consultant model catalog and transport contracts
|
|
125
|
+
- `3614949` Merge pull request #12 from `agent/model-catalog-3.5.0`
|
|
126
|
+
|
|
127
|
+
## Contributors
|
|
128
|
+
|
|
129
|
+
- @matteoscurati
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-consultants",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "A harness for every question - a panel of up to 11 AI models that picks its own deliberation strategy per question (convergence, adversarial verification, tournament) and checks its work before answering",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ai-consultants": "bin/ai-consultants"
|