@kontextmind/kxm 0.7.183 → 0.7.185
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-plugin/marketplace.json +1 -1
- package/.kxm/roles/reviewer-cli.yaml +5 -2
- package/.kxm/roles/writer.yaml +8 -1
- package/CHANGELOG.md +22 -0
- package/docs/contributing/assignment-runner.md +2 -2
- package/docs/contributing/harness-routing-internals.md +26 -16
- package/docs/reference/cli-reference.md +11 -5
- package/docs/reference/config-reference.md +12 -4
- package/docs/reference/harness-routing.md +20 -10
- package/docs/templates/review.md +1 -1
- package/package.json +1 -1
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/dist/cli.js +3 -2
- package/plugins/kxm/dist/mcp-server.js +1 -1
- package/plugins/kxm/dist/runtime-supervisor.js +2 -1
- package/plugins/kxm/dist/runtime.js +2 -1
- package/plugins/kxm/dist/server.js +2 -1
- package/plugins/kxm/package.json +1 -1
- package/plugins/kxm/src/mcp-server.ts +1 -1
- package/plugins/kxm/src/model-inventory.ts +1 -1
- package/plugins/kxm/src/workforce-names.mjs +2 -1
- package/scripts/assignment-run.mjs +1 -1
- package/scripts/harness-run.mjs +4 -1
|
@@ -3,9 +3,12 @@ id: reviewer-cli
|
|
|
3
3
|
purpose: reviewer-cli
|
|
4
4
|
permission: read-only
|
|
5
5
|
description: Independent CLI and docs critic.
|
|
6
|
-
# codex-gpt-
|
|
6
|
+
# codex-gpt-6-1-sol is the required cli critic. The Pi fallback is a different vendor.
|
|
7
|
+
# codex-gpt-5-6-sol stays admitted as the last fallback.
|
|
7
8
|
roster:
|
|
8
|
-
- route: codex-gpt-
|
|
9
|
+
- route: codex-gpt-6-1-sol
|
|
9
10
|
effort: low
|
|
10
11
|
- route: pi-qwen3-8-flash-openrouter
|
|
11
12
|
effort: low
|
|
13
|
+
- route: codex-gpt-5-6-sol
|
|
14
|
+
effort: low
|
package/.kxm/roles/writer.yaml
CHANGED
|
@@ -4,12 +4,19 @@ purpose: writer
|
|
|
4
4
|
permission: edit
|
|
5
5
|
description: Primary implementation agent.
|
|
6
6
|
# Rotation priority = order. Effort default: medium for implementation.
|
|
7
|
+
# Argon needs a paid Google AI Pro, Ultra, or Enterprise plan. agy -p exits
|
|
8
|
+
# when a pinned model is unavailable, so Flash medium stays as the safety net.
|
|
9
|
+
# Flash high stays last so that admitted model file remains on a roster.
|
|
7
10
|
roster:
|
|
8
11
|
- route: grok-grok-4-7
|
|
9
12
|
effort: medium
|
|
10
13
|
- route: pi-qwen3-coder-plus-openrouter
|
|
11
14
|
effort: medium
|
|
12
|
-
- route: agy-gemini-
|
|
15
|
+
- route: agy-gemini-4-argon-high
|
|
16
|
+
effort: medium
|
|
17
|
+
- route: agy-gemini-4-argon-medium
|
|
13
18
|
effort: medium
|
|
14
19
|
- route: agy-gemini-3-8-flash-medium
|
|
15
20
|
effort: medium
|
|
21
|
+
- route: agy-gemini-3-8-flash-high
|
|
22
|
+
effort: medium
|
package/CHANGELOG.md
CHANGED
|
@@ -216,6 +216,28 @@ All notable user-facing changes are documented here. The project follows [Semant
|
|
|
216
216
|
|
|
217
217
|
### Changed
|
|
218
218
|
|
|
219
|
+
- **The CLI critic is Codex GPT-6.1 Sol.** `codex-gpt-6-1-sol` is the
|
|
220
|
+
`reviewer-cli` primary (`codex` / `gpt-6.1-sol`, effort `low`).
|
|
221
|
+
`pi-qwen3-8-flash-openrouter` stays the other-vendor fallback, and
|
|
222
|
+
`codex-gpt-5-6-sol` stays admitted as the last fallback. Architecture
|
|
223
|
+
review stays `claude-fable`, then `pi-glm-5-3-flash-openrouter`. Pro is
|
|
224
|
+
the same model with reasoning mode `pro`, not a separate route. List
|
|
225
|
+
price is $2 / $10 per 1M tokens through 272,000 prompt tokens ($0.10
|
|
226
|
+
cached input, $2.50 cache write), then $4 / $15.
|
|
227
|
+
|
|
228
|
+
- **The writer rotation's agy routes are Gemini 4 Argon.** `agy-gemini-4-argon-high`
|
|
229
|
+
(alias `gemini-agy`) and `agy-gemini-4-argon-medium` are writer #3 and #4.
|
|
230
|
+
`agy-gemini-3-8-flash-medium` stays #5 because Argon needs a paid Google AI
|
|
231
|
+
Pro, Ultra, or Enterprise plan and `agy -p` exits when the pinned model is
|
|
232
|
+
missing. `agy-gemini-3-8-flash-high` stays #6 so that admitted model file
|
|
233
|
+
remains on a roster. `.kxm/routes.yaml` admits `google/gemini-4-argon-high`
|
|
234
|
+
and `google/gemini-4-argon-medium`. `.kxm/prices.yaml` is dated 2026-10-17
|
|
235
|
+
and follows the live OpenRouter list, including Argon at $2 / $10 per 1M
|
|
236
|
+
tokens through 2026-11-30 ($4 / $20 after that). `.kxm/models/inventory.yaml`
|
|
237
|
+
was refreshed from OpenRouter and Nous. Pi, Grok, and agy were not installed,
|
|
238
|
+
so CLI-only rows stay, and the new agy Argon and Claude 5.5 rows were added
|
|
239
|
+
by hand.
|
|
240
|
+
|
|
219
241
|
- **`kxm update --kxm` defaults to npm.** Missing or source-less `update.yaml` now
|
|
220
242
|
uses the public `@kontextmind/kxm` package instead of the GitHub release tarball.
|
|
221
243
|
`source: github` still selects the digest-checked tarball. When the working
|
|
@@ -34,10 +34,10 @@ admits each route for specific roles and permissions:
|
|
|
34
34
|
|
|
35
35
|
| Role | Admitted route (harness / model) | Vendor | Permission |
|
|
36
36
|
|---|---|---|---|
|
|
37
|
-
| `writer` | `grok` / `grok-4.7`; relief: `pi` / `openrouter/qwen/qwen3-coder-plus`; `agy` / `gemini-3.8-flash-high` | `xai`; `alibaba`; `google` | `edit` |
|
|
37
|
+
| `writer` | `grok` / `grok-4.7`; relief: `pi` / `openrouter/qwen/qwen3-coder-plus`; `agy` / `gemini-4-argon-high`, then `gemini-4-argon-medium`, then `gemini-3.8-flash-medium`, then `gemini-3.8-flash-high` | `xai`; `alibaba`; `google` | `edit` |
|
|
38
38
|
| `planner` | `claude` / `fable` | `anthropic` | `read-only` |
|
|
39
39
|
| `reviewer-arch` | `claude` / `fable` | `anthropic` | `read-only` |
|
|
40
|
-
| `reviewer-cli` | `codex` / `gpt-5.6-sol` | `openai` | `read-only` |
|
|
40
|
+
| `reviewer-cli` | `codex` / `gpt-6.1-sol`; fallback `pi` / `openrouter/qwen/qwen3.8-flash`, then `codex` / `gpt-5.6-sol` | `openai`; `alibaba`; `openai` | `read-only` |
|
|
41
41
|
|
|
42
42
|
The policy itself enforces three rules. Critics are read-only. The two
|
|
43
43
|
designated critics have different vendors. No admitted writer shares a vendor
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Harness routing internals
|
|
2
2
|
|
|
3
|
-
This page records how the KXM repository applies [harness routing](../reference/harness-routing.md) to its own work: the routes this checkout admits, its writer roster, its price catalog, and the developer roster policy that `just assign` and the dev helper enforce. It is maintainer material. The route and roster transcripts below were regenerated on 2026-
|
|
3
|
+
This page records how the KXM repository applies [harness routing](../reference/harness-routing.md) to its own work: the routes this checkout admits, its writer roster, its price catalog, and the developer roster policy that `just assign` and the dev helper enforce. It is maintainer material. The route and roster transcripts below were regenerated on 2026-10-17 from this checkout, where `node scripts/kxm.mjs` is the same program as `kxm`. Readiness notes that name a capture machine are from 2026-09-23 and were not re-probed. The transcripts change whenever an admission changes.
|
|
4
4
|
|
|
5
5
|
> [!IMPORTANT]
|
|
6
6
|
> The files are the authority, not this page: `.kxm/routes.yaml`, `.kxm/roles/*.yaml`, `.kxm/models/*.yaml`, and `.kxm/prices.yaml`. Product routing decisions are recorded under Tracking → Decided in `plans/implementation-plan.md`.
|
|
@@ -9,7 +9,7 @@ This page records how the KXM repository applies [harness routing](../reference/
|
|
|
9
9
|
|
|
10
10
|
The files use one id shape per kind. A route id is `<harness>-<model-slug>[-<provider>]`, with `.` written as `-`. An agent id equals its role. A workflow id is `default`, `land`, or `<role>-only`. An agent step id equals that role.
|
|
11
11
|
|
|
12
|
-
This checkout's routes are `grok-grok-4-7`, `pi-qwen3-coder-plus-openrouter`, `agy-gemini-3-8-flash-
|
|
12
|
+
This checkout's routes are `grok-grok-4-7`, `pi-qwen3-coder-plus-openrouter`, `agy-gemini-4-argon-high`, `agy-gemini-4-argon-medium`, `agy-gemini-3-8-flash-medium`, `agy-gemini-3-8-flash-high`, `claude-fable`, `codex-gpt-6-1-sol`, `codex-gpt-5-6-sol`, `pi-qwen3-8-flash-openrouter`, and `pi-glm-5-3-flash-openrouter`. Agents are `planner`, `writer`, `reviewer-arch`, and `reviewer-cli`. `opus-claude` was removed because `opus` is not an admitted selector. `qwen-token-plan/*` and `zai-coding-cn/*` left the admitted list because those harnesses are not allowlisted; their `prices.yaml` rows stay. Old ids resolve as aliases. Every roster entry names an effort. `reviewer-arch` dispatches `claude-fable`. #343's architecture critic ran on opus because the justfile recipe review-arch hardcoded that model; the role file on that commit listed only `fable-claude`. The helper now refuses `opus`.
|
|
13
13
|
|
|
14
14
|
## This checkout's routes and roster
|
|
15
15
|
|
|
@@ -27,13 +27,17 @@ roster:
|
|
|
27
27
|
effort: medium
|
|
28
28
|
- route: pi-qwen3-coder-plus-openrouter
|
|
29
29
|
effort: medium
|
|
30
|
-
- route: agy-gemini-
|
|
30
|
+
- route: agy-gemini-4-argon-high
|
|
31
|
+
effort: medium
|
|
32
|
+
- route: agy-gemini-4-argon-medium
|
|
31
33
|
effort: medium
|
|
32
34
|
- route: agy-gemini-3-8-flash-medium
|
|
33
35
|
effort: medium
|
|
36
|
+
- route: agy-gemini-3-8-flash-high
|
|
37
|
+
effort: medium
|
|
34
38
|
```
|
|
35
39
|
|
|
36
|
-
The writer role lists route ids, in order: `grok-grok-4-7`, then `pi-qwen3-coder-plus-openrouter`, then `agy-gemini-3-8-flash-
|
|
40
|
+
The writer role lists route ids, in order: `grok-grok-4-7`, then `pi-qwen3-coder-plus-openrouter`, then `agy-gemini-4-argon-high`, `agy-gemini-4-argon-medium`, `agy-gemini-3-8-flash-medium`, and `agy-gemini-3-8-flash-high`. `grok-grok-4-7` is harness `grok`, model `grok-4.7`, vendor `xai`. An agent file does not declare `harness:`. Argon is writer #3 and #4. Flash medium is the safety net because Argon needs a paid Google AI Pro, Ultra, or Enterprise plan and `agy -p` exits when the pinned model is missing. Flash high stays on the roster so that admitted model file is still used. The planner primary stays `claude-fable`. The CLI critic primary is `codex-gpt-6-1-sol`, then `pi-qwen3-8-flash-openrouter`, then `codex-gpt-5-6-sol`. The architecture critic primary stays `claude-fable`, then `pi-glm-5-3-flash-openrouter`. Argon can serve as a planner or architecture-review fallback; it is not on those rosters. GPT-6.1 Sol Pro is the same model with reasoning mode `pro`. The route id does not carry a reasoning mode, role effort has no `pro` value, and codex is limited to `reviewer-cli`, so that mode is not an architecture fallback.
|
|
37
41
|
|
|
38
42
|
`node scripts/kxm.mjs routes list`:
|
|
39
43
|
|
|
@@ -41,7 +45,10 @@ The writer role lists route ids, in order: `grok-grok-4-7`, then `pi-qwen3-coder
|
|
|
41
45
|
admitted anthropic/fable
|
|
42
46
|
admitted google/gemini-3.8-flash-high
|
|
43
47
|
admitted google/gemini-3.8-flash-medium
|
|
48
|
+
admitted google/gemini-4-argon-high
|
|
49
|
+
admitted google/gemini-4-argon-medium
|
|
44
50
|
admitted openai/gpt-5.6-sol
|
|
51
|
+
admitted openai/gpt-6.1-sol
|
|
45
52
|
admitted openrouter/qwen/qwen3-coder-plus
|
|
46
53
|
admitted openrouter/qwen/qwen3.8-flash
|
|
47
54
|
admitted openrouter/z-ai/glm-5.3-flash
|
|
@@ -50,12 +57,15 @@ planner claude-fable
|
|
|
50
57
|
planner pi-qwen3-8-flash-openrouter
|
|
51
58
|
reviewer-arch claude-fable
|
|
52
59
|
reviewer-arch pi-glm-5-3-flash-openrouter
|
|
53
|
-
reviewer-cli codex-gpt-
|
|
60
|
+
reviewer-cli codex-gpt-6-1-sol
|
|
54
61
|
reviewer-cli pi-qwen3-8-flash-openrouter
|
|
62
|
+
reviewer-cli codex-gpt-5-6-sol
|
|
55
63
|
writer grok-grok-4-7
|
|
56
64
|
writer pi-qwen3-coder-plus-openrouter
|
|
57
|
-
writer agy-gemini-
|
|
65
|
+
writer agy-gemini-4-argon-high
|
|
66
|
+
writer agy-gemini-4-argon-medium
|
|
58
67
|
writer agy-gemini-3-8-flash-medium
|
|
68
|
+
writer agy-gemini-3-8-flash-high
|
|
59
69
|
```
|
|
60
70
|
|
|
61
71
|
`routes admit --model openrouter/qwen/qwen3-coder-plus --dry-run` exits 2 with `select a model from the refreshed inventory` even though that selector is already admitted, because the inventory never carries `openrouter/…` selectors. Selectors like these are admitted by a Git-reviewed edit of `.kxm/routes.yaml`.
|
|
@@ -64,7 +74,7 @@ On the capture machine, `kxm harness list` showed `claude` detected but logged o
|
|
|
64
74
|
|
|
65
75
|
### Price catalog and inventory
|
|
66
76
|
|
|
67
|
-
`.kxm/prices.yaml` is dated `2026-
|
|
77
|
+
`.kxm/prices.yaml` is dated `2026-10-17`. A run on that date can record a list estimate. Any other day records `providerMetadata.priceCatalogStale: true` and no list estimate. The list prices below come from `.kxm/models/inventory.yaml`. OpenRouter and Nous were fetched at `2026-10-17T13:45:00.000Z`. `pi`, `grok`, and `agy` were not installed for that refresh, so models that exist only in those CLIs stay, including the previous `agy` rows, and the Gemini 4 Argon and Claude 5.5 `agy` rows were added by hand from `agy models`. Prices are USD per 1M tokens. The checkout has no routing records yet, so none of the examples has recorded latency; for latency, run a bounded side-by-side experiment and compare p50 and p95 in `kxm routing report`.
|
|
68
78
|
|
|
69
79
|
## The developer roster
|
|
70
80
|
|
|
@@ -116,21 +126,21 @@ These extend the generic examples on the reference page with this checkout's adm
|
|
|
116
126
|
| Selector | `xai/grok-4.7`: admitted, and first in the writer roster | `openrouter/x-ai/grok-4.7`: not admitted |
|
|
117
127
|
| Developer roster | `grok-grok-4-7`, the writer route with `edit` | Refused: `native vendor cannot use Pi` |
|
|
118
128
|
| Readiness | `grok` showed auth `yes` on the 2026-09-23 capture machine | `pi auth check --provider openrouter` returned `not_ready` on that capture |
|
|
119
|
-
| Billing | grok.com subscription (OAuth) | $
|
|
129
|
+
| Billing | grok.com subscription (OAuth) | $2.00 input, $6.00 output, $0.50 cached input |
|
|
120
130
|
| Context | 500,000 (`x-ai/grok-4.7` in the refreshed inventory) | 500,000 |
|
|
121
131
|
|
|
122
132
|
Pi's own `xai` provider reported `ready` (OAuth) on the capture machine. When the grok quota runs out, the next writer in the lineup is `pi-qwen3-coder-plus-openrouter`, a different vendor.
|
|
123
133
|
|
|
124
|
-
### GPT-
|
|
134
|
+
### GPT-6.1 Sol
|
|
125
135
|
|
|
126
136
|
| | Native `codex` | Pi + OpenRouter |
|
|
127
137
|
|---|---|---|
|
|
128
|
-
| Selector | `openai/gpt-
|
|
129
|
-
| Developer roster | `codex-gpt-
|
|
130
|
-
| Billing | ChatGPT subscription
|
|
131
|
-
| Context |
|
|
138
|
+
| Selector | `openai/gpt-6.1-sol`: admitted, the CLI critic | `openrouter/openai/gpt-6.1-sol`: not admitted |
|
|
139
|
+
| Developer roster | `codex-gpt-6-1-sol`: `reviewer-cli` primary, `read-only`, effort `low` | Refused |
|
|
140
|
+
| Billing | ChatGPT subscription. List price $2.00 input, $10.00 output, $0.10 cached input, $2.50 cache write through 272,000 prompt tokens, then $4.00 / $15.00 | Same per-token list price. OpenRouter's `openai/gpt-6.1-sol-pro` row is reasoning mode `pro`, not a second model |
|
|
141
|
+
| Context | 1,050,000 (922,000 max input, 128,000 max output). Reasoning is mandatory | 1,050,000 |
|
|
132
142
|
|
|
133
|
-
|
|
143
|
+
`codex-gpt-5-6-sol` stays on the `reviewer-cli` roster after the Qwen fallback. Its selector `openai/gpt-5.6-sol` stays admitted. OpenRouter lists that model at $4.00 input, $20.00 output, and $0.40 cached input. `pi auth check --provider openai-codex` reported `ready` on the capture machine. That readiness is not permission to bill OpenAI through Pi.
|
|
134
144
|
|
|
135
145
|
### Claude Fable
|
|
136
146
|
|
|
@@ -148,8 +158,8 @@ In the inventory, `openai/gpt-5.6-sol` has sources `openrouter+nous` and carries
|
|
|
148
158
|
|
|
149
159
|
| | Native `agy` | `antigravity` Pi provider | Pi + OpenRouter |
|
|
150
160
|
|---|---|---|---|
|
|
151
|
-
| Selector | `google/gemini-3.8-flash-
|
|
152
|
-
| Billing | Google subscription | Google subscription | $0.
|
|
161
|
+
| Selector | `google/gemini-3.8-flash-medium` and `google/gemini-3.8-flash-high`: admitted, writer #5 and #6. Writer #3 and #4 are `google/gemini-4-argon-high` and `google/gemini-4-argon-medium` | `antigravity/gemini-3.8-flash`: not admitted | `openrouter/google/gemini-3.8-flash`: not admitted |
|
|
162
|
+
| Billing | Google subscription | Google subscription | $0.825 input, $4.125 output, $0.0825 cached input |
|
|
153
163
|
| Context | `agy` does not print it; the vendored catalog lists 1,048,576 | 1,048,576 | 1,048,576 |
|
|
154
164
|
|
|
155
165
|
The admitted runtime route today is the `agy` selector.
|
|
@@ -1153,7 +1153,10 @@ kxm routes list
|
|
|
1153
1153
|
admitted anthropic/fable
|
|
1154
1154
|
admitted google/gemini-3.8-flash-high
|
|
1155
1155
|
admitted google/gemini-3.8-flash-medium
|
|
1156
|
+
admitted google/gemini-4-argon-high
|
|
1157
|
+
admitted google/gemini-4-argon-medium
|
|
1156
1158
|
admitted openai/gpt-5.6-sol
|
|
1159
|
+
admitted openai/gpt-6.1-sol
|
|
1157
1160
|
admitted openrouter/qwen/qwen3-coder-plus
|
|
1158
1161
|
admitted openrouter/qwen/qwen3.8-flash
|
|
1159
1162
|
admitted openrouter/z-ai/glm-5.3-flash
|
|
@@ -1162,12 +1165,15 @@ planner claude-fable
|
|
|
1162
1165
|
planner pi-qwen3-8-flash-openrouter
|
|
1163
1166
|
reviewer-arch claude-fable
|
|
1164
1167
|
reviewer-arch pi-glm-5-3-flash-openrouter
|
|
1165
|
-
reviewer-cli codex-gpt-
|
|
1168
|
+
reviewer-cli codex-gpt-6-1-sol
|
|
1166
1169
|
reviewer-cli pi-qwen3-8-flash-openrouter
|
|
1170
|
+
reviewer-cli codex-gpt-5-6-sol
|
|
1167
1171
|
writer grok-grok-4-7
|
|
1168
1172
|
writer pi-qwen3-coder-plus-openrouter
|
|
1169
|
-
writer agy-gemini-
|
|
1173
|
+
writer agy-gemini-4-argon-high
|
|
1174
|
+
writer agy-gemini-4-argon-medium
|
|
1170
1175
|
writer agy-gemini-3-8-flash-medium
|
|
1176
|
+
writer agy-gemini-3-8-flash-high
|
|
1171
1177
|
```
|
|
1172
1178
|
|
|
1173
1179
|
```bash
|
|
@@ -1175,7 +1181,7 @@ kxm routes list --json
|
|
|
1175
1181
|
```
|
|
1176
1182
|
|
|
1177
1183
|
```text
|
|
1178
|
-
{"schema":"kxm.cli-result.v1","ok":true,"command":"routes list","policy":{"schema":"kxm.routes.v2","updatedAt":"2026-
|
|
1184
|
+
{"schema":"kxm.cli-result.v1","ok":true,"command":"routes list","policy":{"schema":"kxm.routes.v2","updatedAt":"2026-10-17T14:30:00.000Z","admitted":["anthropic/fable","google/gemini-3.8-flash-high","google/gemini-3.8-flash-medium","google/gemini-4-argon-high","google/gemini-4-argon-medium","openai/gpt-5.6-sol","openai/gpt-6.1-sol","openrouter/qwen/qwen3-coder-plus","openrouter/qwen/qwen3.8-flash","openrouter/z-ai/glm-5.3-flash","xai/grok-4.7"],"disabled":[]},"membership":["planner claude-fable","planner pi-qwen3-8-flash-openrouter","reviewer-arch claude-fable","reviewer-arch pi-glm-5-3-flash-openrouter","reviewer-cli codex-gpt-6-1-sol","reviewer-cli pi-qwen3-8-flash-openrouter","reviewer-cli codex-gpt-5-6-sol","writer grok-grok-4-7","writer pi-qwen3-coder-plus-openrouter","writer agy-gemini-4-argon-high","writer agy-gemini-4-argon-medium","writer agy-gemini-3-8-flash-medium","writer agy-gemini-3-8-flash-high"]}
|
|
1179
1185
|
```
|
|
1180
1186
|
|
|
1181
1187
|
### `kxm routes count`
|
|
@@ -1380,7 +1386,7 @@ kxm role get writer --json
|
|
|
1380
1386
|
```
|
|
1381
1387
|
|
|
1382
1388
|
```text
|
|
1383
|
-
{"schema":"kxm.cli-result.v1","ok":true,"command":"role get","roleId":"writer","scope":"local","filePath":"/work/kxm/.kxm/roles/writer.yaml","role":{"schema":"kxm.role.v2","id":"writer","purpose":"writer","permission":"edit","description":"Primary implementation agent.","skills":[],"roster":[{"route":"grok-grok-4-7","effort":"medium"},{"route":"pi-qwen3-coder-plus-openrouter","effort":"medium"},{"route":"agy-gemini-3-8-flash-
|
|
1389
|
+
{"schema":"kxm.cli-result.v1","ok":true,"command":"role get","roleId":"writer","scope":"local","filePath":"/work/kxm/.kxm/roles/writer.yaml","role":{"schema":"kxm.role.v2","id":"writer","purpose":"writer","permission":"edit","description":"Primary implementation agent.","skills":[],"roster":[{"route":"grok-grok-4-7","effort":"medium"},{"route":"pi-qwen3-coder-plus-openrouter","effort":"medium"},{"route":"agy-gemini-4-argon-high","effort":"medium"},{"route":"agy-gemini-4-argon-medium","effort":"medium"},{"route":"agy-gemini-3-8-flash-medium","effort":"medium"},{"route":"agy-gemini-3-8-flash-high","effort":"medium"}]}}
|
|
1384
1390
|
```
|
|
1385
1391
|
|
|
1386
1392
|
Captured from this checkout with `node scripts/kxm.mjs role get writer --json`. The path is shortened to `/work/kxm`.
|
|
@@ -1390,7 +1396,7 @@ kxm role modify writer --add-skill kxm --dry-run --json
|
|
|
1390
1396
|
```
|
|
1391
1397
|
|
|
1392
1398
|
```text
|
|
1393
|
-
{"schema":"kxm.cli-result.v1","ok":true,"command":"role modify","roleId":"writer","id":"writer","role":{"schema":"kxm.role.v2","id":"writer","purpose":"writer","permission":"edit","description":"Primary implementation agent.","skills":["kxm"],"roster":[{"route":"grok-grok-4-7","effort":"medium"},{"route":"pi-qwen3-coder-plus-openrouter","effort":"medium"},{"route":"agy-gemini-3-8-flash-
|
|
1399
|
+
{"schema":"kxm.cli-result.v1","ok":true,"command":"role modify","roleId":"writer","id":"writer","role":{"schema":"kxm.role.v2","id":"writer","purpose":"writer","permission":"edit","description":"Primary implementation agent.","skills":["kxm"],"roster":[{"route":"grok-grok-4-7","effort":"medium"},{"route":"pi-qwen3-coder-plus-openrouter","effort":"medium"},{"route":"agy-gemini-4-argon-high","effort":"medium"},{"route":"agy-gemini-4-argon-medium","effort":"medium"},{"route":"agy-gemini-3-8-flash-medium","effort":"medium"},{"route":"agy-gemini-3-8-flash-high","effort":"medium"}]},"filePath":"/work/kxm/.kxm/roles/writer.yaml","scope":"local","dryRun":true,"planned":[{"action":"write","target":"/work/kxm/.kxm/roles/writer.yaml"}]}
|
|
1394
1400
|
```
|
|
1395
1401
|
|
|
1396
1402
|
Add an existing route to a role's roster (Not run):
|
|
@@ -686,7 +686,7 @@ Example (validated with `kxm init --json` and compiled with
|
|
|
686
686
|
the `critic-claude` profile shown above, it needs a `planner` agent (the
|
|
687
687
|
workflow coordinator; `coordinator` still resolves as an alias), a
|
|
688
688
|
`reviewer-cli` agent, and a second profile tagged `critic`, `critic-sol`
|
|
689
|
-
(`openai/gpt-
|
|
689
|
+
(`openai/gpt-6.1-sol`). Routes, not agent files, name the harness and model.
|
|
690
690
|
The two providers among the `critic` candidates satisfy
|
|
691
691
|
`distinctBy: [provider]` with `target: 2`.
|
|
692
692
|
|
|
@@ -1011,6 +1011,7 @@ updatedAt: '2026-09-23T00:00:00.000Z'
|
|
|
1011
1011
|
admitted:
|
|
1012
1012
|
- anthropic/fable
|
|
1013
1013
|
- openai/gpt-5.6-sol
|
|
1014
|
+
- openai/gpt-6.1-sol
|
|
1014
1015
|
- xai/grok-4.6
|
|
1015
1016
|
- openrouter/qwen/qwen3-coder-plus
|
|
1016
1017
|
disabled: []
|
|
@@ -1081,6 +1082,13 @@ routes:
|
|
|
1081
1082
|
roles: [planner, reviewer-arch]
|
|
1082
1083
|
permissions: [read-only]
|
|
1083
1084
|
status: admitted
|
|
1085
|
+
codex-gpt-6-1-sol:
|
|
1086
|
+
harness: codex
|
|
1087
|
+
model: gpt-6.1-sol
|
|
1088
|
+
vendor: openai
|
|
1089
|
+
roles: [reviewer-cli]
|
|
1090
|
+
permissions: [read-only]
|
|
1091
|
+
status: admitted
|
|
1084
1092
|
codex-gpt-5-6-sol:
|
|
1085
1093
|
harness: codex
|
|
1086
1094
|
model: gpt-5.6-sol
|
|
@@ -1089,13 +1097,13 @@ routes:
|
|
|
1089
1097
|
permissions: [read-only]
|
|
1090
1098
|
status: admitted
|
|
1091
1099
|
lineup: # routes admitted for each role, preference order
|
|
1092
|
-
writer: [grok-grok-4-7, pi-qwen3-coder-plus-openrouter, agy-gemini-3-8-flash-
|
|
1100
|
+
writer: [grok-grok-4-7, pi-qwen3-coder-plus-openrouter, agy-gemini-4-argon-high, agy-gemini-4-argon-medium, agy-gemini-3-8-flash-medium, agy-gemini-3-8-flash-high]
|
|
1093
1101
|
planner: [claude-fable, pi-qwen3-8-flash-openrouter]
|
|
1094
1102
|
reviewer-arch: [claude-fable, pi-glm-5-3-flash-openrouter]
|
|
1095
|
-
reviewer-cli: [codex-gpt-
|
|
1103
|
+
reviewer-cli: [codex-gpt-6-1-sol, pi-qwen3-8-flash-openrouter, codex-gpt-5-6-sol]
|
|
1096
1104
|
required_critics:
|
|
1097
1105
|
review-arch: claude-fable
|
|
1098
|
-
review-cli: codex-gpt-
|
|
1106
|
+
review-cli: codex-gpt-6-1-sol
|
|
1099
1107
|
model_origins: # required for every Pi route model
|
|
1100
1108
|
openrouter/qwen/qwen3-coder-plus:
|
|
1101
1109
|
vendor: alibaba
|
|
@@ -155,13 +155,17 @@ roster:
|
|
|
155
155
|
effort: medium
|
|
156
156
|
- route: pi-qwen3-coder-plus-openrouter
|
|
157
157
|
effort: medium
|
|
158
|
-
- route: agy-gemini-
|
|
158
|
+
- route: agy-gemini-4-argon-high
|
|
159
|
+
effort: medium
|
|
160
|
+
- route: agy-gemini-4-argon-medium
|
|
159
161
|
effort: medium
|
|
160
162
|
- route: agy-gemini-3-8-flash-medium
|
|
161
163
|
effort: medium
|
|
164
|
+
- route: agy-gemini-3-8-flash-high
|
|
165
|
+
effort: medium
|
|
162
166
|
```
|
|
163
167
|
|
|
164
|
-
`grok-grok-4-7` resolves to `.kxm/models/grok-grok-4-7.yaml`: harness `grok`, model `grok-4.7`, vendor `xai`, status `admitted`, permission `edit`. `pi-qwen3-coder-plus-openrouter` is harness `pi`, model `openrouter/qwen/qwen3-coder-plus`, vendor `alibaba`. `agy-gemini-
|
|
168
|
+
`grok-grok-4-7` resolves to `.kxm/models/grok-grok-4-7.yaml`: harness `grok`, model `grok-4.7`, vendor `xai`, status `admitted`, permission `edit`. `pi-qwen3-coder-plus-openrouter` is harness `pi`, model `openrouter/qwen/qwen3-coder-plus`, vendor `alibaba`. `agy-gemini-4-argon-high` is harness `agy`, model `gemini-4-argon-high`, vendor `google`. `kxm role list` prints the first route id as the primary, for example `(grok-grok-4-7)`. The previous ids (`grok-native`, `qwen-openrouter-pi`, `gemini-agy`) are aliases. `gemini-agy` resolves to `agy-gemini-4-argon-high`.
|
|
165
169
|
|
|
166
170
|
Dispatch resolves a step from the agent `role`, then `.kxm/roles/<role>.yaml`, then the selected `.kxm/models/<route>.yaml`. That model file carries `harness`, `model`, `vendor`, `status`, and `permissions`. The engine walks the roster in order and uses the first admitted route whose model file is readable. A missing or unreadable model file is a refusal (`roster_model_unreadable` at load, `producer_route_unsupported` at dispatch), not a skip to the next entry. A route file that names a harness the model cannot run on still fails closed with `harness_unhosted_model`.
|
|
167
171
|
|
|
@@ -228,7 +232,7 @@ The same model shows up under different ids depending on the file:
|
|
|
228
232
|
| `.kxm/models/inventory.yaml`, source `openrouter` | `x-ai/grok-4.7` | The OpenRouter catalog slug. The inventory stores OpenRouter ids without an `openrouter/` prefix. |
|
|
229
233
|
| `.kxm/prices.yaml` | `id: xai/grok-4.7`, `provider: xai`, alias `x-ai/grok-4.7` | A list price that applies only to provider `xai`, because price lookup filters by provider. `xai/grok-4.6` remains a separate row. |
|
|
230
234
|
|
|
231
|
-
An inventory id can also mean something else in `.kxm/routes.yaml`. For example, the inventory can list `openai/gpt-
|
|
235
|
+
An inventory id can also mean something else in `.kxm/routes.yaml`. For example, the inventory can list `openai/gpt-6.1-sol` from the OpenRouter feed with OpenRouter prices, while in `.kxm/routes.yaml` the same string means provider `openai` through native `codex`. `openai/gpt-5.6-sol` is the same kind of selector and stays admitted.
|
|
232
236
|
|
|
233
237
|
### What the brake refuses
|
|
234
238
|
|
|
@@ -245,7 +249,7 @@ The brake runs wherever KXM starts Pi on a model: in the dispatch probe that eac
|
|
|
245
249
|
| How the id names the vendor | Refused examples | Message |
|
|
246
250
|
|---|---|---|
|
|
247
251
|
| The provider is the vendor | `anthropic/…`, `openai/…`, `xai/…`, `moonshot/…`, `google/…`, `deepseek/…` | `pi must not impersonate native provider xai; use the native harness` |
|
|
248
|
-
| A Pi provider that belongs to the vendor | `openai-codex/…`, `moonshotai/…`, `moonshotai-cn/…`, `kimi-coding/…`, `google-vertex/…`, `claude-bridge/…`, and `antigravity/…` except Gemini ids | `pi provider openai-codex bills native vendor openai for gpt-
|
|
252
|
+
| A Pi provider that belongs to the vendor | `openai-codex/…`, `moonshotai/…`, `moonshotai-cn/…`, `kimi-coding/…`, `google-vertex/…`, `claude-bridge/…`, and `antigravity/…` except Gemini ids | `pi provider openai-codex bills native vendor openai for gpt-6.1-sol; use the native harness` |
|
|
249
253
|
| The vendor segment of an aggregator id, including the aliases `x-ai`, `moonshotai` and `google-ai` | `openrouter/x-ai/grok-4.6`, `openrouter/anthropic/claude-fable-5.1`, `nous-portal/google/…` | `pi must not bill native vendor xai through openrouter; use the native harness` |
|
|
250
254
|
|
|
251
255
|
The brake accepts `antigravity/gemini-…` and any id whose vendor has no native harness, such as `openrouter/qwen/qwen3-coder-plus`, `zai-coding-cn/glm-5.3` or `qwen-token-plan/qwen3.8-flash`. Passing the brake is not admission: the route must still be admitted. The hosting refusal at dispatch reads `grok_not_authenticated: grok harness not detected (harness_unhosted_model)`.
|
|
@@ -363,18 +367,22 @@ pi auth check --provider xai --json --no-refresh
|
|
|
363
367
|
{"status":"ready","provider":"xai","authType":"oauth"}
|
|
364
368
|
```
|
|
365
369
|
|
|
366
|
-
### GPT-
|
|
370
|
+
### GPT-6.1 Sol
|
|
367
371
|
|
|
368
372
|
| | Native `codex` | Pi + OpenRouter |
|
|
369
373
|
|---|---|---|
|
|
370
|
-
| Model file | `harness: codex`, `model: gpt-
|
|
371
|
-
| Selector | `openai/gpt-
|
|
374
|
+
| Model file | `harness: codex`, `model: gpt-6.1-sol`, `vendor: openai` | `harness: pi`, `model: openrouter/openai/gpt-6.1-sol`, `vendor: openai` |
|
|
375
|
+
| Selector | `openai/gpt-6.1-sol`: admitted, the CLI critic | `openrouter/openai/gpt-6.1-sol` |
|
|
372
376
|
| Readiness | Needs `codex` auth `yes` with `authMethod: ChatGPT` | Never reached: the brake refuses it first |
|
|
373
|
-
| Billing | ChatGPT subscription | OpenRouter credit |
|
|
377
|
+
| Billing | ChatGPT subscription. List price $2 / $10 per 1M tokens through 272,000 prompt tokens ($0.10 cached input, $2.50 cache write), then $4 / $15 | OpenRouter credit, same per-token list price |
|
|
374
378
|
| Recorded `costBasis` | `unmetered`, `priceRef: subscription:codex` | None: refused before dispatch |
|
|
375
|
-
| Mode | One-shot `codex exec --json
|
|
379
|
+
| Mode | One-shot `codex exec --json -`. Reasoning is mandatory (`low`, `medium`, `high`, `xhigh`, `max`) | Refused |
|
|
376
380
|
|
|
377
|
-
|
|
381
|
+
`codex-gpt-6-1-sol` is the `reviewer-cli` primary at effort `low`. `pi-qwen3-8-flash-openrouter` is the other-vendor fallback. `codex-gpt-5-6-sol` stays admitted as the last fallback. Architecture review stays `claude-fable`, then `pi-glm-5-3-flash-openrouter`.
|
|
382
|
+
|
|
383
|
+
Pro is not a separate model. It is `gpt-6.1-sol` with reasoning mode `pro`. OpenRouter lists that mode as `openai/gpt-6.1-sol-pro` at the same per-token price. A route id is `<harness>-<model-slug>`, role `effort` has no `pro` value, and the codex harness ceiling is `reviewer-cli` only. There is no pro architecture-review fallback.
|
|
384
|
+
|
|
385
|
+
**KXM picks the native route.** Two traps apply here. The first is `openai-codex/gpt-6.1-sol`, which is the same ChatGPT subscription driven through Pi. `pi auth check --provider openai-codex` can report `ready`, but readiness is not permission: the brake refuses `openai-codex` as OpenAI's own Pi provider. The second is a codex login made with an API key: the row shows `API key`, and the run records `unknown`. `openai/gpt-5.6-sol` is the same shape of selector and stays admitted. On OpenRouter it now lists at $4 / $20 per 1M tokens.
|
|
378
386
|
|
|
379
387
|
```bash
|
|
380
388
|
pi auth check --provider openai-codex --json --no-refresh
|
|
@@ -411,6 +419,8 @@ A larger context window on the OpenRouter route does not make OpenRouter an allo
|
|
|
411
419
|
|
|
412
420
|
**Never OpenRouter for Gemini**, and the brake refuses it. The Runtime can run the `agy` selector today; section 4 explains why it cannot reach `antigravity/…`.
|
|
413
421
|
|
|
422
|
+
The writer rotation's `agy` routes are `agy-gemini-4-argon-high` (alias `gemini-agy`), `agy-gemini-4-argon-medium`, then `agy-gemini-3-8-flash-medium` as the safety net, then `agy-gemini-3-8-flash-high`. Argon is the only Gemini 4 model. `agy` pins it as `gemini-4-argon-high`, `-medium`, or `-low` (base `gemini-4-argon` with `--effort low|medium|high`). `agy -p` exits when a pinned model is not available. It does not fall through on its own, so Flash stays on the roster: Argon requires a paid Google AI Pro, Ultra, or Enterprise plan. The list price is $2 input and $10 output per 1M tokens through 2026-11-30, then $4 and $20. Batch is $1 and $5. Context is 1,048,576. Argon can also stand in as a planner or architecture-review fallback; those primaries stay `claude-fable`.
|
|
423
|
+
|
|
414
424
|
```bash
|
|
415
425
|
pi auth check --provider antigravity --json --no-refresh
|
|
416
426
|
```
|
package/docs/templates/review.md
CHANGED
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "kxm",
|
|
4
4
|
"displayName": "KXM",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.185",
|
|
6
6
|
"description": "Headless multi-agent orchestration, durable workflows, and a live operator dashboard for Pi and Claude Code",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "KontextMind",
|
package/plugins/kxm/dist/cli.js
CHANGED
|
@@ -18615,8 +18615,9 @@ var init_workforce_names = __esm({
|
|
|
18615
18615
|
ROUTE_RENAMES = Object.freeze([
|
|
18616
18616
|
["grok-native", "grok-grok-4-7"],
|
|
18617
18617
|
["qwen-openrouter-pi", "pi-qwen3-coder-plus-openrouter"],
|
|
18618
|
-
["gemini-agy", "agy-gemini-
|
|
18618
|
+
["gemini-agy", "agy-gemini-4-argon-high"],
|
|
18619
18619
|
["fable-claude", "claude-fable"],
|
|
18620
|
+
// sol-codex stays the GPT-5.6 route. codex-gpt-6-1-sol is a separate route.
|
|
18620
18621
|
["sol-codex", "codex-gpt-5-6-sol"],
|
|
18621
18622
|
["grok-default", "grok-grok-4-6"],
|
|
18622
18623
|
["fable-default", "claude-fable"]
|
|
@@ -28834,7 +28835,7 @@ async function refreshModelInventory(options) {
|
|
|
28834
28835
|
const parts = line.trim().split(/\s+/);
|
|
28835
28836
|
const id = source === "pi" && parts.length >= 2 && parts[0] !== "provider" ? `${parts[0]}/${parts[1]}` : parts[0];
|
|
28836
28837
|
if (id && /^[a-z0-9][a-z0-9._/-]+$/i.test(id) && id !== "Available") {
|
|
28837
|
-
const effortMatch = source === "agy" ? id.match(/-(low|medium|high)$/i) : null;
|
|
28838
|
+
const effortMatch = source === "agy" ? id.match(/-(low|medium|high|max)$/i) : null;
|
|
28838
28839
|
add({ id, ...effortMatch?.[1] ? { thinkingLevels: [effortMatch[1].toLowerCase()] } : {} }, source, "standard");
|
|
28839
28840
|
}
|
|
28840
28841
|
}
|
|
@@ -25462,7 +25462,7 @@ function sessionTokenFixHint(policy) {
|
|
|
25462
25462
|
}
|
|
25463
25463
|
|
|
25464
25464
|
// plugins/kxm/src/mcp-server.ts
|
|
25465
|
-
var VERSION = "0.7.
|
|
25465
|
+
var VERSION = "0.7.185";
|
|
25466
25466
|
var CONFIGURE_PLUGIN = "/plugin configure kxm@kxm";
|
|
25467
25467
|
var inbox = /* @__PURE__ */ new Map();
|
|
25468
25468
|
var notifiedInbox = /* @__PURE__ */ new Set();
|
|
@@ -15544,8 +15544,9 @@ var ROLE_IDS = Object.freeze([
|
|
|
15544
15544
|
var ROUTE_RENAMES = Object.freeze([
|
|
15545
15545
|
["grok-native", "grok-grok-4-7"],
|
|
15546
15546
|
["qwen-openrouter-pi", "pi-qwen3-coder-plus-openrouter"],
|
|
15547
|
-
["gemini-agy", "agy-gemini-
|
|
15547
|
+
["gemini-agy", "agy-gemini-4-argon-high"],
|
|
15548
15548
|
["fable-claude", "claude-fable"],
|
|
15549
|
+
// sol-codex stays the GPT-5.6 route. codex-gpt-6-1-sol is a separate route.
|
|
15549
15550
|
["sol-codex", "codex-gpt-5-6-sol"],
|
|
15550
15551
|
["grok-default", "grok-grok-4-6"],
|
|
15551
15552
|
["fable-default", "claude-fable"]
|
|
@@ -15517,8 +15517,9 @@ var ROLE_IDS = Object.freeze([
|
|
|
15517
15517
|
var ROUTE_RENAMES = Object.freeze([
|
|
15518
15518
|
["grok-native", "grok-grok-4-7"],
|
|
15519
15519
|
["qwen-openrouter-pi", "pi-qwen3-coder-plus-openrouter"],
|
|
15520
|
-
["gemini-agy", "agy-gemini-
|
|
15520
|
+
["gemini-agy", "agy-gemini-4-argon-high"],
|
|
15521
15521
|
["fable-claude", "claude-fable"],
|
|
15522
|
+
// sol-codex stays the GPT-5.6 route. codex-gpt-6-1-sol is a separate route.
|
|
15522
15523
|
["sol-codex", "codex-gpt-5-6-sol"],
|
|
15523
15524
|
["grok-default", "grok-grok-4-6"],
|
|
15524
15525
|
["fable-default", "claude-fable"]
|
|
@@ -15009,8 +15009,9 @@ var ROLE_IDS = Object.freeze([
|
|
|
15009
15009
|
var ROUTE_RENAMES = Object.freeze([
|
|
15010
15010
|
["grok-native", "grok-grok-4-7"],
|
|
15011
15011
|
["qwen-openrouter-pi", "pi-qwen3-coder-plus-openrouter"],
|
|
15012
|
-
["gemini-agy", "agy-gemini-
|
|
15012
|
+
["gemini-agy", "agy-gemini-4-argon-high"],
|
|
15013
15013
|
["fable-claude", "claude-fable"],
|
|
15014
|
+
// sol-codex stays the GPT-5.6 route. codex-gpt-6-1-sol is a separate route.
|
|
15014
15015
|
["sol-codex", "codex-gpt-5-6-sol"],
|
|
15015
15016
|
["grok-default", "grok-grok-4-6"],
|
|
15016
15017
|
["fable-default", "claude-fable"]
|
package/plugins/kxm/package.json
CHANGED
|
@@ -11,7 +11,7 @@ import { deliverInboxNotification } from "./inbox.ts";
|
|
|
11
11
|
import type { HubEvent, MessageRecord } from "./protocol.ts";
|
|
12
12
|
import { sessionTokenFixHint } from "./session-token-hint.ts";
|
|
13
13
|
|
|
14
|
-
const VERSION = "0.7.
|
|
14
|
+
const VERSION = "0.7.185";
|
|
15
15
|
const CONFIGURE_PLUGIN = "/plugin configure kxm@kxm";
|
|
16
16
|
const inbox = new Map<string, MessageRecord>();
|
|
17
17
|
const notifiedInbox = new Set<string>();
|
|
@@ -104,7 +104,7 @@ export async function refreshModelInventory(options: { outputRoot: string; env?:
|
|
|
104
104
|
const parts = line.trim().split(/\s+/);
|
|
105
105
|
const id = source === "pi" && parts.length >= 2 && parts[0] !== "provider" ? `${parts[0]}/${parts[1]}` : parts[0];
|
|
106
106
|
if (id && /^[a-z0-9][a-z0-9._/-]+$/i.test(id) && id !== "Available") {
|
|
107
|
-
const effortMatch = source === "agy" ? id.match(/-(low|medium|high)$/i) : null;
|
|
107
|
+
const effortMatch = source === "agy" ? id.match(/-(low|medium|high|max)$/i) : null;
|
|
108
108
|
add({ id, ...(effortMatch?.[1] ? { thinkingLevels: [effortMatch[1].toLowerCase()] } : {}) }, source, "standard");
|
|
109
109
|
}
|
|
110
110
|
}
|
|
@@ -33,8 +33,9 @@ export const ROLE_IDS = Object.freeze([
|
|
|
33
33
|
export const ROUTE_RENAMES = Object.freeze([
|
|
34
34
|
["grok-native", "grok-grok-4-7"],
|
|
35
35
|
["qwen-openrouter-pi", "pi-qwen3-coder-plus-openrouter"],
|
|
36
|
-
["gemini-agy", "agy-gemini-
|
|
36
|
+
["gemini-agy", "agy-gemini-4-argon-high"],
|
|
37
37
|
["fable-claude", "claude-fable"],
|
|
38
|
+
// sol-codex stays the GPT-5.6 route. codex-gpt-6-1-sol is a separate route.
|
|
38
39
|
["sol-codex", "codex-gpt-5-6-sol"],
|
|
39
40
|
["grok-default", "grok-grok-4-6"],
|
|
40
41
|
["fable-default", "claude-fable"],
|
|
@@ -141,7 +141,7 @@ export const ATTRIBUTION_CLASSES = Object.freeze(["orchestration", "model", "env
|
|
|
141
141
|
export const ACCEPTED_NOTE = "developer record; not human approval, hub peer evidence, CI success, or merged/released status";
|
|
142
142
|
export const REQUIRED_ACCEPT_CRITICS = Object.freeze({
|
|
143
143
|
"review-arch": Object.freeze({ harness: "claude", model: "fable", role: "reviewer-arch" }),
|
|
144
|
-
"review-cli": Object.freeze({ harness: "codex", model: "gpt-
|
|
144
|
+
"review-cli": Object.freeze({ harness: "codex", model: "gpt-6.1-sol", role: "reviewer-cli" }),
|
|
145
145
|
});
|
|
146
146
|
export const ASSIGNMENT_KINDS = Object.freeze([
|
|
147
147
|
"plan",
|
package/scripts/harness-run.mjs
CHANGED
|
@@ -111,6 +111,9 @@ const REQUEST_KEYS = Object.freeze([
|
|
|
111
111
|
const UNSUPPORTED_LAUNCHER = /\.(cmd|bat|ps1)$/i;
|
|
112
112
|
|
|
113
113
|
const AGY_MODELS = Object.freeze([
|
|
114
|
+
"gemini-4-argon-high",
|
|
115
|
+
"gemini-4-argon-medium",
|
|
116
|
+
"gemini-4-argon-low",
|
|
114
117
|
"gemini-3.8-flash-high",
|
|
115
118
|
"gemini-3.8-flash-medium",
|
|
116
119
|
"gemini-3.8-flash-low",
|
|
@@ -161,7 +164,7 @@ export const ROUTES = Object.freeze({
|
|
|
161
164
|
provider: "openai",
|
|
162
165
|
roles: Object.freeze(["reviewer-cli"]),
|
|
163
166
|
permissions: Object.freeze(["read-only"]),
|
|
164
|
-
models: Object.freeze(["gpt-5.6-sol"]),
|
|
167
|
+
models: Object.freeze(["gpt-6.1-sol", "gpt-5.6-sol"]),
|
|
165
168
|
efforts: Object.freeze(["low", "medium", "high"]),
|
|
166
169
|
auth: Object.freeze({ args: ["login", "status"], loginHint: "codex login" }),
|
|
167
170
|
},
|