@hegemonart/get-design-done 1.24.2 → 1.26.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +87 -0
- package/README.de.md +679 -0
- package/README.fr.md +679 -0
- package/README.it.md +679 -0
- package/README.ja.md +679 -0
- package/README.ko.md +679 -0
- package/README.md +399 -728
- package/README.zh-CN.md +480 -133
- package/SKILL.md +2 -0
- package/agents/README.md +60 -0
- package/agents/design-reflector.md +43 -0
- package/agents/gdd-intel-updater.md +34 -1
- package/agents/prototype-gate.md +122 -0
- package/agents/quality-gate-runner.md +125 -0
- package/hooks/budget-enforcer.ts +275 -11
- package/hooks/gdd-decision-injector.js +183 -3
- package/hooks/gdd-turn-closeout.js +238 -0
- package/hooks/hooks.json +10 -0
- package/package.json +5 -5
- package/reference/STATE-TEMPLATE.md +41 -0
- package/reference/config-schema.md +30 -0
- package/reference/model-prices.md +40 -19
- package/reference/prices/antigravity.md +21 -0
- package/reference/prices/augment.md +21 -0
- package/reference/prices/claude.md +42 -0
- package/reference/prices/cline.md +23 -0
- package/reference/prices/codebuddy.md +21 -0
- package/reference/prices/codex.md +25 -0
- package/reference/prices/copilot.md +21 -0
- package/reference/prices/cursor.md +21 -0
- package/reference/prices/gemini.md +25 -0
- package/reference/prices/kilo.md +21 -0
- package/reference/prices/opencode.md +23 -0
- package/reference/prices/qwen.md +25 -0
- package/reference/prices/trae.md +23 -0
- package/reference/prices/windsurf.md +21 -0
- package/reference/registry.json +107 -1
- package/reference/runtime-models.md +446 -0
- package/reference/schemas/runtime-models.schema.json +123 -0
- package/scripts/install.cjs +8 -0
- package/scripts/lib/budget-enforcer.cjs +446 -0
- package/scripts/lib/cost-arbitrage.cjs +294 -0
- package/scripts/lib/gdd-state/mutator.ts +454 -0
- package/scripts/lib/gdd-state/parser.ts +351 -1
- package/scripts/lib/gdd-state/types.ts +193 -0
- package/scripts/lib/install/installer.cjs +188 -11
- package/scripts/lib/install/parse-runtime-models.cjs +267 -0
- package/scripts/lib/install/runtimes.cjs +43 -0
- package/scripts/lib/quality-gate-detect.cjs +126 -0
- package/scripts/lib/runtime-detect.cjs +96 -0
- package/scripts/lib/tier-resolver.cjs +311 -0
- package/scripts/validate-frontmatter.ts +138 -1
- package/skills/quality-gate/SKILL.md +222 -0
- package/skills/router/SKILL.md +79 -10
- package/skills/sketch-wrap-up/SKILL.md +47 -2
- package/skills/spike-wrap-up/SKILL.md +41 -2
- package/skills/turn-closeout/SKILL.md +115 -0
- package/skills/verify/SKILL.md +22 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
# Runtime Models — Per-Runtime Tier→Model Adapter Map
|
|
2
|
+
|
|
3
|
+
**Phase 26 source-of-truth (D-01).** Single canonical map from canonical Anthropic tier names (`opus|sonnet|haiku`) and runtime-neutral reasoning-class aliases (`high|medium|low`, D-10) to concrete model identifiers for each of the 14 runtimes the multi-runtime installer ships to (Phase 24 D-02).
|
|
4
|
+
|
|
5
|
+
This file is parsed by `scripts/lib/install/parse-runtime-models.cjs` and consumed by:
|
|
6
|
+
|
|
7
|
+
- `scripts/lib/tier-resolver.cjs` (26-02) — runtime tier resolution (`resolve(runtime, tier) → model`).
|
|
8
|
+
- `scripts/lib/install/installer.cjs` (26-03) — emits `models.json` per runtime config-dir at install time.
|
|
9
|
+
- `hooks/budget-enforcer.ts` + `scripts/lib/budget-enforcer.cjs` (26-05) — concrete model name for cost lookup.
|
|
10
|
+
|
|
11
|
+
**Strict schema** (D-03): each runtime block is a fenced ```json ... ``` block validated against `reference/schemas/runtime-models.schema.json`. Schema version is locked at `1` until a breaking change forces a version bump.
|
|
12
|
+
|
|
13
|
+
**Provenance discipline** (D-01): every row carries a `source_url` (runtime-author docs), `retrieved_at` (ISO timestamp), and `last_validated_cycle` (current GDD cycle ID). Placeholder URLs are tagged `<TODO: confirm at <runtime-author-docs-url>>` and validated by Phase 13.2 authority-watcher on later cycles.
|
|
14
|
+
|
|
15
|
+
**Single-tier runtimes** (D-02): if a runtime exposes only one model, that model maps to all three tiers and the entry carries `"single_tier": true`. Downstream consumers (router, budget-enforcer) may render a UI affordance noting tier selection has no cost effect for that runtime.
|
|
16
|
+
|
|
17
|
+
**Cycle ID:** `2026-04-29-v1.26` (rows validated in this cycle carry this string in `last_validated_cycle`).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Schema version
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{ "$schema_version": 1 }
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## claude — Claude Code
|
|
30
|
+
|
|
31
|
+
Anthropic's first-party runtime. Public tier docs at https://docs.anthropic.com/en/docs/about-claude/models. Seed picks per CONTEXT.md D-02.
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"id": "claude",
|
|
36
|
+
"tier_to_model": {
|
|
37
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
38
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
39
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
40
|
+
},
|
|
41
|
+
"reasoning_class_to_model": {
|
|
42
|
+
"high": { "model": "claude-opus-4-7" },
|
|
43
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
44
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
45
|
+
},
|
|
46
|
+
"provenance": [
|
|
47
|
+
{
|
|
48
|
+
"source_url": "https://docs.anthropic.com/en/docs/about-claude/models",
|
|
49
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
50
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
51
|
+
"note": "Anthropic public model catalog — first-party runtime."
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## codex — OpenAI Codex CLI
|
|
60
|
+
|
|
61
|
+
OpenAI's Codex CLI runtime. Public tier docs at https://platform.openai.com/docs/models. Seed picks per CONTEXT.md D-02.
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"id": "codex",
|
|
66
|
+
"tier_to_model": {
|
|
67
|
+
"opus": { "model": "gpt-5" },
|
|
68
|
+
"sonnet": { "model": "gpt-5-mini" },
|
|
69
|
+
"haiku": { "model": "gpt-5-nano" }
|
|
70
|
+
},
|
|
71
|
+
"reasoning_class_to_model": {
|
|
72
|
+
"high": { "model": "gpt-5" },
|
|
73
|
+
"medium": { "model": "gpt-5-mini" },
|
|
74
|
+
"low": { "model": "gpt-5-nano" }
|
|
75
|
+
},
|
|
76
|
+
"provenance": [
|
|
77
|
+
{
|
|
78
|
+
"source_url": "https://platform.openai.com/docs/models",
|
|
79
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
80
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
81
|
+
"note": "OpenAI public model catalog."
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## gemini — Gemini CLI
|
|
90
|
+
|
|
91
|
+
Google's Gemini CLI runtime. Public tier docs at https://ai.google.dev/gemini-api/docs/models. Seed picks per CONTEXT.md D-02.
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"id": "gemini",
|
|
96
|
+
"tier_to_model": {
|
|
97
|
+
"opus": { "model": "gemini-2.5-pro" },
|
|
98
|
+
"sonnet": { "model": "gemini-2.5-flash" },
|
|
99
|
+
"haiku": { "model": "gemini-2.5-flash-lite" }
|
|
100
|
+
},
|
|
101
|
+
"reasoning_class_to_model": {
|
|
102
|
+
"high": { "model": "gemini-2.5-pro" },
|
|
103
|
+
"medium": { "model": "gemini-2.5-flash" },
|
|
104
|
+
"low": { "model": "gemini-2.5-flash-lite" }
|
|
105
|
+
},
|
|
106
|
+
"provenance": [
|
|
107
|
+
{
|
|
108
|
+
"source_url": "https://ai.google.dev/gemini-api/docs/models",
|
|
109
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
110
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
111
|
+
"note": "Google Gemini API public model catalog."
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## qwen — Qwen Code
|
|
120
|
+
|
|
121
|
+
Alibaba's Qwen Code runtime. Public tier docs at https://qwenlm.github.io/qwen-code/. Seed picks per CONTEXT.md D-02.
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"id": "qwen",
|
|
126
|
+
"tier_to_model": {
|
|
127
|
+
"opus": { "model": "qwen3-max" },
|
|
128
|
+
"sonnet": { "model": "qwen3-plus" },
|
|
129
|
+
"haiku": { "model": "qwen3-flash" }
|
|
130
|
+
},
|
|
131
|
+
"reasoning_class_to_model": {
|
|
132
|
+
"high": { "model": "qwen3-max" },
|
|
133
|
+
"medium": { "model": "qwen3-plus" },
|
|
134
|
+
"low": { "model": "qwen3-flash" }
|
|
135
|
+
},
|
|
136
|
+
"provenance": [
|
|
137
|
+
{
|
|
138
|
+
"source_url": "https://qwenlm.github.io/qwen-code/",
|
|
139
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
140
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
141
|
+
"note": "Qwen Code public model catalog."
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## kilo — Kilo Code
|
|
150
|
+
|
|
151
|
+
Kilo Code adapter — multi-provider, Anthropic-default fill until runtime-author docs confirm. Researcher fill needed (CONTEXT.md D-02).
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"id": "kilo",
|
|
156
|
+
"tier_to_model": {
|
|
157
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
158
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
159
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
160
|
+
},
|
|
161
|
+
"reasoning_class_to_model": {
|
|
162
|
+
"high": { "model": "claude-opus-4-7" },
|
|
163
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
164
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
165
|
+
},
|
|
166
|
+
"provenance": [
|
|
167
|
+
{
|
|
168
|
+
"source_url": "<TODO: confirm at https://kilocode.ai/docs/models>",
|
|
169
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
170
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
171
|
+
"note": "TODO: confirm at runtime-author docs. Anthropic-default placeholder fill — Kilo's BYOK model means the user-configured provider may differ; researcher follow-up Phase 26 tail."
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## copilot — GitHub Copilot CLI
|
|
180
|
+
|
|
181
|
+
GitHub Copilot CLI — multi-provider routing under the hood. Researcher fill needed (CONTEXT.md D-02).
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"id": "copilot",
|
|
186
|
+
"tier_to_model": {
|
|
187
|
+
"opus": { "model": "gpt-5" },
|
|
188
|
+
"sonnet": { "model": "gpt-5-mini" },
|
|
189
|
+
"haiku": { "model": "gpt-4o-mini" }
|
|
190
|
+
},
|
|
191
|
+
"reasoning_class_to_model": {
|
|
192
|
+
"high": { "model": "gpt-5" },
|
|
193
|
+
"medium": { "model": "gpt-5-mini" },
|
|
194
|
+
"low": { "model": "gpt-4o-mini" }
|
|
195
|
+
},
|
|
196
|
+
"provenance": [
|
|
197
|
+
{
|
|
198
|
+
"source_url": "<TODO: confirm at https://docs.github.com/en/copilot/github-copilot-in-the-cli>",
|
|
199
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
200
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
201
|
+
"note": "TODO: confirm at runtime-author docs. Copilot CLI routes through GitHub's model gateway; concrete tier names may differ from underlying OpenAI IDs — researcher follow-up Phase 26 tail."
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## cursor — Cursor
|
|
210
|
+
|
|
211
|
+
Cursor IDE/CLI — multi-provider routing. Researcher fill needed (CONTEXT.md D-02).
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"id": "cursor",
|
|
216
|
+
"tier_to_model": {
|
|
217
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
218
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
219
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
220
|
+
},
|
|
221
|
+
"reasoning_class_to_model": {
|
|
222
|
+
"high": { "model": "claude-opus-4-7" },
|
|
223
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
224
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
225
|
+
},
|
|
226
|
+
"provenance": [
|
|
227
|
+
{
|
|
228
|
+
"source_url": "<TODO: confirm at https://docs.cursor.com/models>",
|
|
229
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
230
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
231
|
+
"note": "TODO: confirm at runtime-author docs. Cursor's user-selectable model dropdown means the resolved tier depends on user config; Anthropic-default fill is the closest published equivalent — researcher follow-up Phase 26 tail."
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## windsurf — Windsurf
|
|
240
|
+
|
|
241
|
+
Windsurf (formerly Codeium) — multi-provider Cascade router. Researcher fill needed (CONTEXT.md D-02).
|
|
242
|
+
|
|
243
|
+
```json
|
|
244
|
+
{
|
|
245
|
+
"id": "windsurf",
|
|
246
|
+
"tier_to_model": {
|
|
247
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
248
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
249
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
250
|
+
},
|
|
251
|
+
"reasoning_class_to_model": {
|
|
252
|
+
"high": { "model": "claude-opus-4-7" },
|
|
253
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
254
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
255
|
+
},
|
|
256
|
+
"provenance": [
|
|
257
|
+
{
|
|
258
|
+
"source_url": "<TODO: confirm at https://docs.windsurf.com/cascade/models>",
|
|
259
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
260
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
261
|
+
"note": "TODO: confirm at runtime-author docs. Cascade routes among multiple providers — Anthropic-default fill is the closest published equivalent. Researcher follow-up Phase 26 tail."
|
|
262
|
+
}
|
|
263
|
+
]
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## antigravity — Antigravity
|
|
270
|
+
|
|
271
|
+
Antigravity — Google's agentic coding platform. Researcher fill needed (CONTEXT.md D-02).
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"id": "antigravity",
|
|
276
|
+
"tier_to_model": {
|
|
277
|
+
"opus": { "model": "gemini-2.5-pro" },
|
|
278
|
+
"sonnet": { "model": "gemini-2.5-flash" },
|
|
279
|
+
"haiku": { "model": "gemini-2.5-flash-lite" }
|
|
280
|
+
},
|
|
281
|
+
"reasoning_class_to_model": {
|
|
282
|
+
"high": { "model": "gemini-2.5-pro" },
|
|
283
|
+
"medium": { "model": "gemini-2.5-flash" },
|
|
284
|
+
"low": { "model": "gemini-2.5-flash-lite" }
|
|
285
|
+
},
|
|
286
|
+
"provenance": [
|
|
287
|
+
{
|
|
288
|
+
"source_url": "<TODO: confirm at https://antigravity.google/docs/models>",
|
|
289
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
290
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
291
|
+
"note": "TODO: confirm at runtime-author docs. Antigravity is Gemini-native; gemini-2.5 tier alignment is the closest published equivalent. Researcher follow-up Phase 26 tail."
|
|
292
|
+
}
|
|
293
|
+
]
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## augment — Augment
|
|
300
|
+
|
|
301
|
+
Augment Code — multi-provider agentic IDE. Researcher fill needed (CONTEXT.md D-02).
|
|
302
|
+
|
|
303
|
+
```json
|
|
304
|
+
{
|
|
305
|
+
"id": "augment",
|
|
306
|
+
"tier_to_model": {
|
|
307
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
308
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
309
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
310
|
+
},
|
|
311
|
+
"reasoning_class_to_model": {
|
|
312
|
+
"high": { "model": "claude-opus-4-7" },
|
|
313
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
314
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
315
|
+
},
|
|
316
|
+
"provenance": [
|
|
317
|
+
{
|
|
318
|
+
"source_url": "<TODO: confirm at https://docs.augmentcode.com/models>",
|
|
319
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
320
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
321
|
+
"note": "TODO: confirm at runtime-author docs. Augment routes among providers — Anthropic-default fill. Researcher follow-up Phase 26 tail."
|
|
322
|
+
}
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## trae — Trae
|
|
330
|
+
|
|
331
|
+
Trae — single-model session runtime per CONTEXT.md D-02 example. `single_tier: true` annotates the row. Researcher fill needed.
|
|
332
|
+
|
|
333
|
+
```json
|
|
334
|
+
{
|
|
335
|
+
"id": "trae",
|
|
336
|
+
"single_tier": true,
|
|
337
|
+
"tier_to_model": {
|
|
338
|
+
"opus": { "model": "trae-builder" },
|
|
339
|
+
"sonnet": { "model": "trae-builder" },
|
|
340
|
+
"haiku": { "model": "trae-builder" }
|
|
341
|
+
},
|
|
342
|
+
"reasoning_class_to_model": {
|
|
343
|
+
"high": { "model": "trae-builder" },
|
|
344
|
+
"medium": { "model": "trae-builder" },
|
|
345
|
+
"low": { "model": "trae-builder" }
|
|
346
|
+
},
|
|
347
|
+
"provenance": [
|
|
348
|
+
{
|
|
349
|
+
"source_url": "<TODO: confirm at https://docs.trae.ai/models>",
|
|
350
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
351
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
352
|
+
"note": "TODO: confirm at runtime-author docs. Trae exposes a single managed-model session per CONTEXT.md D-02; tier selection has no cost effect — UI may surface this. Researcher follow-up Phase 26 tail."
|
|
353
|
+
}
|
|
354
|
+
]
|
|
355
|
+
}
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## codebuddy — CodeBuddy
|
|
361
|
+
|
|
362
|
+
CodeBuddy (Tencent) — multi-provider routing. Researcher fill needed (CONTEXT.md D-02).
|
|
363
|
+
|
|
364
|
+
```json
|
|
365
|
+
{
|
|
366
|
+
"id": "codebuddy",
|
|
367
|
+
"tier_to_model": {
|
|
368
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
369
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
370
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
371
|
+
},
|
|
372
|
+
"reasoning_class_to_model": {
|
|
373
|
+
"high": { "model": "claude-opus-4-7" },
|
|
374
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
375
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
376
|
+
},
|
|
377
|
+
"provenance": [
|
|
378
|
+
{
|
|
379
|
+
"source_url": "<TODO: confirm at https://copilot.tencent.com/docs/models>",
|
|
380
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
381
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
382
|
+
"note": "TODO: confirm at runtime-author docs. CodeBuddy routes among providers — Anthropic-default fill. Researcher follow-up Phase 26 tail."
|
|
383
|
+
}
|
|
384
|
+
]
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## cline — Cline
|
|
391
|
+
|
|
392
|
+
Cline (formerly Claude Dev) — multi-provider VS Code agent. Researcher fill needed (CONTEXT.md D-02).
|
|
393
|
+
|
|
394
|
+
```json
|
|
395
|
+
{
|
|
396
|
+
"id": "cline",
|
|
397
|
+
"tier_to_model": {
|
|
398
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
399
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
400
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
401
|
+
},
|
|
402
|
+
"reasoning_class_to_model": {
|
|
403
|
+
"high": { "model": "claude-opus-4-7" },
|
|
404
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
405
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
406
|
+
},
|
|
407
|
+
"provenance": [
|
|
408
|
+
{
|
|
409
|
+
"source_url": "<TODO: confirm at https://docs.cline.bot/models>",
|
|
410
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
411
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
412
|
+
"note": "TODO: confirm at runtime-author docs. Cline is BYOK-multi-provider; Anthropic-default fill is the namesake provider. Researcher follow-up Phase 26 tail."
|
|
413
|
+
}
|
|
414
|
+
]
|
|
415
|
+
}
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## opencode — OpenCode
|
|
421
|
+
|
|
422
|
+
OpenCode — open-source AI coding agent, BYOK multi-provider. Researcher fill needed (CONTEXT.md D-02).
|
|
423
|
+
|
|
424
|
+
```json
|
|
425
|
+
{
|
|
426
|
+
"id": "opencode",
|
|
427
|
+
"tier_to_model": {
|
|
428
|
+
"opus": { "model": "claude-opus-4-7" },
|
|
429
|
+
"sonnet": { "model": "claude-sonnet-4-6" },
|
|
430
|
+
"haiku": { "model": "claude-haiku-4-5" }
|
|
431
|
+
},
|
|
432
|
+
"reasoning_class_to_model": {
|
|
433
|
+
"high": { "model": "claude-opus-4-7" },
|
|
434
|
+
"medium": { "model": "claude-sonnet-4-6" },
|
|
435
|
+
"low": { "model": "claude-haiku-4-5" }
|
|
436
|
+
},
|
|
437
|
+
"provenance": [
|
|
438
|
+
{
|
|
439
|
+
"source_url": "<TODO: confirm at https://opencode.ai/docs/models>",
|
|
440
|
+
"retrieved_at": "2026-04-29T00:00:00.000Z",
|
|
441
|
+
"last_validated_cycle": "2026-04-29-v1.26",
|
|
442
|
+
"note": "TODO: confirm at runtime-author docs. OpenCode is BYOK — user-configured provider may differ. Anthropic-default fill is a sensible baseline. Researcher follow-up Phase 26 tail."
|
|
443
|
+
}
|
|
444
|
+
]
|
|
445
|
+
}
|
|
446
|
+
```
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://get-design-done.example/schemas/runtime-models.schema.json",
|
|
4
|
+
"title": "Runtime Models — Tier-to-Model Map",
|
|
5
|
+
"description": "Parsed shape of reference/runtime-models.md — the per-runtime tier→model adapter source-of-truth shipped in Phase 26 (D-01..D-03). Consumed by scripts/lib/install/parse-runtime-models.cjs at install time and scripts/lib/tier-resolver.cjs at runtime. Strict enums catch typos at install time, not at runtime. Schema versioned via $schema_version for forward-compat (D-03).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["$schema_version", "runtimes"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"$schema_version": {
|
|
11
|
+
"const": 1,
|
|
12
|
+
"description": "Top-level schema version (D-03). Bump on breaking changes; downstream consumers must check before parsing."
|
|
13
|
+
},
|
|
14
|
+
"runtimes": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"minItems": 1,
|
|
17
|
+
"items": { "$ref": "#/definitions/runtimeEntry" }
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"definitions": {
|
|
21
|
+
"runtimeEntry": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"required": ["id", "tier_to_model", "reasoning_class_to_model", "provenance"],
|
|
25
|
+
"properties": {
|
|
26
|
+
"id": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "Runtime ID. MUST match one of the 14 runtime IDs exported from scripts/lib/install/runtimes.cjs (Phase 24 D-02 lock).",
|
|
29
|
+
"enum": [
|
|
30
|
+
"claude",
|
|
31
|
+
"codex",
|
|
32
|
+
"gemini",
|
|
33
|
+
"qwen",
|
|
34
|
+
"kilo",
|
|
35
|
+
"copilot",
|
|
36
|
+
"cursor",
|
|
37
|
+
"windsurf",
|
|
38
|
+
"antigravity",
|
|
39
|
+
"augment",
|
|
40
|
+
"trae",
|
|
41
|
+
"codebuddy",
|
|
42
|
+
"cline",
|
|
43
|
+
"opencode"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"single_tier": {
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"description": "When true, the runtime exposes a single model that maps to all three tiers (D-02). Downstream consumers (router, budget-enforcer) may render a UI affordance noting tier-selection has no cost effect for this runtime."
|
|
49
|
+
},
|
|
50
|
+
"tier_to_model": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"required": ["opus", "sonnet", "haiku"],
|
|
54
|
+
"description": "Map of canonical Anthropic tier names (D-03) to the runtime's concrete model identifier. All three keys are required even when single_tier=true (assign the same model three times).",
|
|
55
|
+
"properties": {
|
|
56
|
+
"opus": { "$ref": "#/definitions/modelRow" },
|
|
57
|
+
"sonnet": { "$ref": "#/definitions/modelRow" },
|
|
58
|
+
"haiku": { "$ref": "#/definitions/modelRow" }
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"reasoning_class_to_model": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"additionalProperties": false,
|
|
64
|
+
"required": ["high", "medium", "low"],
|
|
65
|
+
"description": "Map of runtime-neutral reasoning-class names (D-10 alias) to the runtime's concrete model identifier. Equivalence with tier_to_model is enforced by Phase 26-08 frontmatter validator (high↔opus, medium↔sonnet, low↔haiku).",
|
|
66
|
+
"properties": {
|
|
67
|
+
"high": { "$ref": "#/definitions/modelRow" },
|
|
68
|
+
"medium": { "$ref": "#/definitions/modelRow" },
|
|
69
|
+
"low": { "$ref": "#/definitions/modelRow" }
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"provenance": {
|
|
73
|
+
"type": "array",
|
|
74
|
+
"minItems": 1,
|
|
75
|
+
"description": "Source citations for this runtime's tier map. At minimum one entry pointing at the runtime-author docs URL plus retrieval timestamp + last-validated cycle. Phase 13.2 authority-watcher uses this to flag drift.",
|
|
76
|
+
"items": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"required": ["source_url", "retrieved_at", "last_validated_cycle"],
|
|
80
|
+
"properties": {
|
|
81
|
+
"source_url": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"minLength": 1,
|
|
84
|
+
"description": "URL of the runtime-author documentation that authoritatively names the tier→model mapping. Placeholder URLs prefixed with `<TODO: confirm at ...>` are acceptable for v1.26 ship and flag the row as researcher-fill-needed."
|
|
85
|
+
},
|
|
86
|
+
"retrieved_at": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"format": "date-time",
|
|
89
|
+
"description": "ISO 8601 timestamp when the source URL was retrieved."
|
|
90
|
+
},
|
|
91
|
+
"last_validated_cycle": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"minLength": 1,
|
|
94
|
+
"description": "GDD cycle ID that last validated this row (e.g. '2026-04-29-v1.26')."
|
|
95
|
+
},
|
|
96
|
+
"note": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"description": "Optional inline note (e.g. 'TODO: confirm at runtime-author docs', 'single-tier runtime — same model x3')."
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"modelRow": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"additionalProperties": false,
|
|
108
|
+
"required": ["model"],
|
|
109
|
+
"properties": {
|
|
110
|
+
"model": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"minLength": 1,
|
|
113
|
+
"description": "Public model name as documented by the runtime author."
|
|
114
|
+
},
|
|
115
|
+
"provider_model_id": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"minLength": 1,
|
|
118
|
+
"description": "Optional internal/provider model ID for runtimes whose API identifiers differ from the public name (D-03)."
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
package/scripts/install.cjs
CHANGED
|
@@ -109,6 +109,14 @@ function summariseResults(results) {
|
|
|
109
109
|
const status = r.action;
|
|
110
110
|
lines.push(`${tag}• ${r.runtime.padEnd(12)} ${status.padEnd(16)} ${r.path}`);
|
|
111
111
|
if (r.reason) lines.push(` ${r.reason}`);
|
|
112
|
+
// Phase 26 D-06 — surface the models.json side-effect inline so
|
|
113
|
+
// operators see what was written / would be written / was removed.
|
|
114
|
+
if (r.modelsJson) {
|
|
115
|
+
const m = r.modelsJson;
|
|
116
|
+
const mTag = m.dryRun ? '[dry-run] ' : '';
|
|
117
|
+
lines.push(`${mTag} ↳ models.json ${m.action.padEnd(16)} ${m.path}`);
|
|
118
|
+
if (m.reason) lines.push(` ${m.reason}`);
|
|
119
|
+
}
|
|
112
120
|
}
|
|
113
121
|
return lines.join('\n');
|
|
114
122
|
}
|