@opengsd/gsd-core 1.19.0 → 1.20.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 +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/agents/gsd-code-fixer.compact.md +5 -5
- package/agents/gsd-code-fixer.md +9 -4
- package/agents/gsd-code-reviewer.compact.md +49 -8
- package/agents/gsd-code-reviewer.md +53 -14
- package/agents/gsd-executor.md +8 -4
- package/commands/gsd/update.md +5 -2
- package/gsd-core/bin/gsd-tools.cjs +73 -23
- package/gsd-core/bin/lib/capability-lifecycle.cjs +1 -12
- package/gsd-core/bin/lib/capability-registry.cjs +284 -93
- package/gsd-core/bin/lib/capability-validator.cjs +15 -0
- package/gsd-core/bin/lib/commands.cjs +27 -17
- package/gsd-core/bin/lib/config-loader.cjs +3 -3
- package/gsd-core/bin/lib/core-utils.cjs +11 -0
- package/gsd-core/bin/lib/frontmatter.cjs +21 -3
- package/gsd-core/bin/lib/gate-api-coverage-verify-pre.cjs +2 -2
- package/gsd-core/bin/lib/gate-context-drift.cjs +1 -1
- package/gsd-core/bin/lib/gate-phase-context.cjs +7 -8
- package/gsd-core/bin/lib/gate-schema-drift.cjs +1 -1
- package/gsd-core/bin/lib/git-info-exclude.cjs +1 -6
- package/gsd-core/bin/lib/health-diagnostic-rules/phase-structure.cjs +13 -9
- package/gsd-core/bin/lib/health-diagnostic-rules/roadmap-disk-consistency.cjs +9 -7
- package/gsd-core/bin/lib/health-diagnostic-rules/state-consistency.cjs +3 -3
- package/gsd-core/bin/lib/init.cjs +180 -67
- package/gsd-core/bin/lib/io.cjs +6 -0
- package/gsd-core/bin/lib/markdown-sectionizer.cjs +34 -1
- package/gsd-core/bin/lib/markdown-table.cjs +23 -0
- package/gsd-core/bin/lib/mcp-server.cjs +8 -5
- package/gsd-core/bin/lib/milestone.cjs +18 -50
- package/gsd-core/bin/lib/phase-entry-grammar.cjs +119 -0
- package/gsd-core/bin/lib/phase-id-display.cjs +2 -0
- package/gsd-core/bin/lib/phase-id.cjs +609 -35
- package/gsd-core/bin/lib/phase-lifecycle.cjs +9 -74
- package/gsd-core/bin/lib/phase-locator.cjs +328 -19
- package/gsd-core/bin/lib/phase.cjs +2990 -666
- package/gsd-core/bin/lib/planning-document.cjs +26 -5
- package/gsd-core/bin/lib/planning-inspect.cjs +27 -35
- package/gsd-core/bin/lib/planning-snapshot.cjs +12 -7
- package/gsd-core/bin/lib/planning-workspace.cjs +3 -3
- package/gsd-core/bin/lib/read-only-git-env.cjs +23 -2
- package/gsd-core/bin/lib/refactor-trigger-command-router.cjs +2 -2
- package/gsd-core/bin/lib/review-lane-descriptor.cjs +22 -0
- package/gsd-core/bin/lib/review-lane-invocation.cjs +125 -18
- package/gsd-core/bin/lib/reviewer-step-dispatch.cjs +11 -9
- package/gsd-core/bin/lib/roadmap-parser.cjs +730 -144
- package/gsd-core/bin/lib/roadmap-progress.cjs +136 -0
- package/gsd-core/bin/lib/roadmap-upgrade.cjs +8 -5
- package/gsd-core/bin/lib/roadmap.cjs +358 -106
- package/gsd-core/bin/lib/shell-command-projection.cjs +36 -9
- package/gsd-core/bin/lib/smart-entry.cjs +22 -11
- package/gsd-core/bin/lib/state-contract.cjs +11 -7
- package/gsd-core/bin/lib/state-document.cjs +332 -23
- package/gsd-core/bin/lib/state-transition.cjs +39 -10
- package/gsd-core/bin/lib/state.cjs +498 -179
- package/gsd-core/bin/lib/template.cjs +2 -2
- package/gsd-core/bin/lib/validate.cjs +3 -2
- package/gsd-core/bin/lib/vendor/re2js.cjs +863 -577
- package/gsd-core/bin/lib/vendor/re2js.d.cts +284 -219
- package/gsd-core/bin/lib/verify.cjs +2 -2
- package/gsd-core/bin/lib/workstream-inventory.cjs +26 -20
- package/gsd-core/bin/verify-reapply-patches.cjs +411 -10
- package/gsd-core/references/cicd-review-patterns.md +45 -0
- package/gsd-core/references/necessity-review.md +48 -0
- package/gsd-core/workflows/code-review-fix.md +46 -5
- package/gsd-core/workflows/code-review.md +3 -0
- package/gsd-core/workflows/execute-phase.md +1 -1
- package/gsd-core/workflows/execute-plan.md +1 -1
- package/gsd-core/workflows/plan-phase/steps/stall-detection-helpers.md +13 -9
- package/gsd-core/workflows/plan-phase.md +1 -1
- package/gsd-core/workflows/pr-branch.md +2 -0
- package/gsd-core/workflows/reapply-patches.md +104 -0
- package/gsd-core/workflows/review.md +54 -141
- package/gsd-core/workflows/secure-phase.md +1 -1
- package/gsd-core/workflows/settings-advanced.md +57 -9
- package/gsd-core/workflows/ship.md +12 -0
- package/hooks/dist/gsd-graphify-update.sh +6 -0
- package/hooks/dist/gsd-statusline.js +3 -2
- package/hooks/dist/gsd-windsurf-pre-write.js +4 -4
- package/hooks/dist/gsd-workflow-guard.js +2 -1
- package/hooks/dist/gsd-worktree-path-guard.js +4 -4
- package/hooks/dist/lib/git-probe.js +16 -0
- package/hooks/gsd-graphify-update.sh +6 -0
- package/hooks/gsd-statusline.js +3 -2
- package/hooks/gsd-windsurf-pre-write.js +4 -4
- package/hooks/gsd-workflow-guard.js +2 -1
- package/hooks/gsd-worktree-path-guard.js +4 -4
- package/hooks/lib/git-probe.js +16 -0
- package/package.json +3 -3
- package/pi/package-agents/gsd-code-fixer.md +9 -4
- package/pi/package-agents/gsd-code-reviewer.md +53 -14
- package/pi/package-agents/gsd-executor.md +8 -4
- package/pi/package-agents/manifest.json +3 -3
- package/pi/package-skills/gsd-update/SKILL.md +4 -1
- package/scripts/ci-next-health.cjs +246 -23
- package/scripts/docs-guard-registry.cjs +2 -0
- package/scripts/gen-features.cjs +14 -2
- package/scripts/lib/drift-scan.cjs +27 -0
- package/scripts/lib/macos-conformance-tier.generated.cjs +6 -0
- package/scripts/lib/platform-conformance-tier.generated.cjs +11 -0
- package/scripts/lint-phase-enumeration-drift.cjs +8 -4
- package/scripts/lint-roadmap-progress-drift.cjs +421 -0
- package/scripts/mutation-matrix.cjs +23 -1
- package/scripts/sync-next-version.cjs +38 -6
- package/skills/gsd-update/SKILL.md +5 -2
- package/vscode/package.json +1 -1
|
@@ -10,7 +10,7 @@ const capabilities = {
|
|
|
10
10
|
"ai-integration": {
|
|
11
11
|
"id": "ai-integration",
|
|
12
12
|
"role": "feature",
|
|
13
|
-
"version": "1.
|
|
13
|
+
"version": "1.20.0",
|
|
14
14
|
"title": "AI design contract",
|
|
15
15
|
"description": "AI-SPEC design contract workflow for phases that build AI systems; owns the AI integration command, agents, and workflow.ai_integration_phase activation key.",
|
|
16
16
|
"tier": "full",
|
|
@@ -95,7 +95,7 @@ const capabilities = {
|
|
|
95
95
|
"antigravity": {
|
|
96
96
|
"id": "antigravity",
|
|
97
97
|
"role": "runtime",
|
|
98
|
-
"version": "1.
|
|
98
|
+
"version": "1.20.0",
|
|
99
99
|
"title": "Antigravity",
|
|
100
100
|
"description": "Google Antigravity IDE — config/settings home nested under ~/.gemini/antigravity (probed across 1.x and 2.x layouts); global skills/agents install under ~/.gemini/config, the dir AGY scans for global discovery (#3738); Gemini hook event dialect; flat skill layout; tier-1 support.",
|
|
101
101
|
"tier": "core",
|
|
@@ -237,6 +237,8 @@ const capabilities = {
|
|
|
237
237
|
"evidenceClass": "source-grounded",
|
|
238
238
|
"requiresBinaries": [],
|
|
239
239
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.antigravity",
|
|
240
|
+
"contextWindowTokens": null,
|
|
241
|
+
"contextWindowConfigKey": "review.context_window_tokens.antigravity",
|
|
240
242
|
"modelConfigKey": "review.models.agy",
|
|
241
243
|
"effortConfigKey": null,
|
|
242
244
|
"defaultEffort": null,
|
|
@@ -251,7 +253,12 @@ const capabilities = {
|
|
|
251
253
|
"review.max_prompt_tokens_per_reviewer.antigravity": {
|
|
252
254
|
"type": "number",
|
|
253
255
|
"default": -1,
|
|
254
|
-
"description": "Prompt-token budget for the Antigravity reviewer lane. Unset is -1, a sentinel
|
|
256
|
+
"description": "Prompt-token budget for the Antigravity reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\". Keyed on the reviewer slug `antigravity`, not the `agy` binary alias used by review.models.agy."
|
|
257
|
+
},
|
|
258
|
+
"review.context_window_tokens.antigravity": {
|
|
259
|
+
"type": "number",
|
|
260
|
+
"default": -1,
|
|
261
|
+
"description": "Context window in tokens used to derive the default prompt cap for the antigravity reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
255
262
|
},
|
|
256
263
|
"review.timeouts.antigravity": {
|
|
257
264
|
"type": "number",
|
|
@@ -263,7 +270,7 @@ const capabilities = {
|
|
|
263
270
|
"assumption-delta": {
|
|
264
271
|
"id": "assumption-delta",
|
|
265
272
|
"role": "feature",
|
|
266
|
-
"version": "1.
|
|
273
|
+
"version": "1.20.0",
|
|
267
274
|
"title": "Assumption-delta architecture checkpoint",
|
|
268
275
|
"description": "Rarely-firing advisory checkpoint that triggers when a phase makes something plural, optional, or chosen that used to be singular, required, or derived. Surfaces one identity-model question (promote the new general representation to primary, or add it alongside?) so a silent primary-key drift does not accumulate into a later user-facing bug. Non-blocking; fires only on a detected signal.",
|
|
269
276
|
"tier": "full",
|
|
@@ -309,7 +316,7 @@ const capabilities = {
|
|
|
309
316
|
"audit": {
|
|
310
317
|
"id": "audit",
|
|
311
318
|
"role": "feature",
|
|
312
|
-
"version": "1.
|
|
319
|
+
"version": "1.20.0",
|
|
313
320
|
"title": "Audit",
|
|
314
321
|
"description": "Open-artifact audit and UAT-gap audit for milestone close gates; exposes `gsd-tools audit-uat` (cross-phase UAT outstanding items) and `gsd-tools audit-open` (structured open-artifact scan across debug, tasks, threads, todos, seeds, UAT, verification, context-questions).",
|
|
315
322
|
"tier": "full",
|
|
@@ -346,7 +353,7 @@ const capabilities = {
|
|
|
346
353
|
"augment": {
|
|
347
354
|
"id": "augment",
|
|
348
355
|
"role": "runtime",
|
|
349
|
-
"version": "1.
|
|
356
|
+
"version": "1.20.0",
|
|
350
357
|
"title": "Augment Code",
|
|
351
358
|
"description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
352
359
|
"tier": "core",
|
|
@@ -464,7 +471,7 @@ const capabilities = {
|
|
|
464
471
|
"broken-windows": {
|
|
465
472
|
"id": "broken-windows",
|
|
466
473
|
"role": "feature",
|
|
467
|
-
"version": "1.
|
|
474
|
+
"version": "1.20.0",
|
|
468
475
|
"title": "Broken-windows ledger",
|
|
469
476
|
"description": "Cross-phase defect register accumulating stubs, TODOs, skipped tests, unrun verifies, and unmet truths into .planning/WINDOWS.md. When enforcement is enabled, it blocks /gsd-ship while any window is open unless explicitly waived with a recorded reason. Operationalizes GSD's no-defer discipline as a tracked artifact (issue #1950).",
|
|
470
477
|
"tier": "full",
|
|
@@ -510,7 +517,7 @@ const capabilities = {
|
|
|
510
517
|
"claude": {
|
|
511
518
|
"id": "claude",
|
|
512
519
|
"role": "runtime",
|
|
513
|
-
"version": "1.
|
|
520
|
+
"version": "1.20.0",
|
|
514
521
|
"title": "Claude Code",
|
|
515
522
|
"description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
|
|
516
523
|
"tier": "core",
|
|
@@ -667,6 +674,8 @@ const capabilities = {
|
|
|
667
674
|
"evidenceClass": "source-grounded",
|
|
668
675
|
"requiresBinaries": [],
|
|
669
676
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.claude",
|
|
677
|
+
"contextWindowTokens": 200000,
|
|
678
|
+
"contextWindowConfigKey": "review.context_window_tokens.claude",
|
|
670
679
|
"modelConfigKey": "review.models.claude",
|
|
671
680
|
"effortConfigKey": "review.effort.claude",
|
|
672
681
|
"defaultEffort": "high",
|
|
@@ -681,7 +690,12 @@ const capabilities = {
|
|
|
681
690
|
"review.max_prompt_tokens_per_reviewer.claude": {
|
|
682
691
|
"type": "number",
|
|
683
692
|
"default": -1,
|
|
684
|
-
"description": "Prompt-token budget for the Claude reviewer lane. Unset is -1, a sentinel
|
|
693
|
+
"description": "Prompt-token budget for the Claude reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
694
|
+
},
|
|
695
|
+
"review.context_window_tokens.claude": {
|
|
696
|
+
"type": "number",
|
|
697
|
+
"default": -1,
|
|
698
|
+
"description": "Context window in tokens used to derive the default prompt cap for the claude reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 200000 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
685
699
|
},
|
|
686
700
|
"review.timeouts.claude": {
|
|
687
701
|
"type": "number",
|
|
@@ -698,7 +712,7 @@ const capabilities = {
|
|
|
698
712
|
"claude-orchestration": {
|
|
699
713
|
"id": "claude-orchestration",
|
|
700
714
|
"role": "feature",
|
|
701
|
-
"version": "1.
|
|
715
|
+
"version": "1.20.0",
|
|
702
716
|
"title": "Claude orchestration (Workflow backend)",
|
|
703
717
|
"description": "Default-off, BETA, claude-only capability that adopts Claude Code's Workflow tool (the engine behind /effort ultracode) as an optional parallel-execution backend for the GSD loop. When the runtime exposes the Workflow tool and claude_orchestration.execution_backend resolves to 'workflow', execute-phase emits a generated Workflow script (waves -> parallel() barriers, plans -> agent({ agentType: 'gsd-executor', isolation: 'worktree' }), files_modified overlap -> separate sequential stages, resumeFromRunId wired to the phase run id, shared token budget) that composes the SAME gsd-executor agent and worktree isolation the inline path uses, restoring the wave parallelism the #853 backgrounded-agent nesting limitation forces inline on Claude Code. (The plan-checker and verifier remain inline until separately wired — this capability delivers the parallel-execution backend, not those gates.) Also folds the ultraplan plan-offload under one runtime gate (plan:* surface). On any runtime lacking the Workflow tool, or when the capability is disabled, behaviour is byte-identical to today (inline/manual dispatch). Detection + emission live in gsd-core/bin/lib/claude-orchestration.cjs (pure, fail-closed). Mirrors the existing gsd-ultraplan-phase BETA-isolation posture.",
|
|
704
718
|
"tier": "full",
|
|
@@ -772,7 +786,7 @@ const capabilities = {
|
|
|
772
786
|
"cline": {
|
|
773
787
|
"id": "cline",
|
|
774
788
|
"role": "runtime",
|
|
775
|
-
"version": "1.
|
|
789
|
+
"version": "1.20.0",
|
|
776
790
|
"title": "Cline",
|
|
777
791
|
"description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
|
|
778
792
|
"tier": "core",
|
|
@@ -866,7 +880,7 @@ const capabilities = {
|
|
|
866
880
|
"code-review": {
|
|
867
881
|
"id": "code-review",
|
|
868
882
|
"role": "feature",
|
|
869
|
-
"version": "1.
|
|
883
|
+
"version": "1.20.0",
|
|
870
884
|
"title": "Code review",
|
|
871
885
|
"description": "Source-file code review and review-fix workflow support for completed execution work.",
|
|
872
886
|
"tier": "full",
|
|
@@ -952,7 +966,7 @@ const capabilities = {
|
|
|
952
966
|
"codebuddy": {
|
|
953
967
|
"id": "codebuddy",
|
|
954
968
|
"role": "runtime",
|
|
955
|
-
"version": "1.
|
|
969
|
+
"version": "1.20.0",
|
|
956
970
|
"title": "CodeBuddy",
|
|
957
971
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
958
972
|
"tier": "core",
|
|
@@ -1074,7 +1088,7 @@ const capabilities = {
|
|
|
1074
1088
|
"coderabbit": {
|
|
1075
1089
|
"id": "coderabbit",
|
|
1076
1090
|
"role": "reviewer",
|
|
1077
|
-
"version": "1.
|
|
1091
|
+
"version": "1.20.0",
|
|
1078
1092
|
"title": "CodeRabbit",
|
|
1079
1093
|
"description": "CodeRabbit CLI — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). Reviews the working-tree diff (`coderabbit review --prompt-only`), not the source tree, and accepts neither a prompt nor a model flag; findings are down-weighted in consensus (evidenceClass: diff-only).",
|
|
1080
1094
|
"tier": "full",
|
|
@@ -1110,6 +1124,8 @@ const capabilities = {
|
|
|
1110
1124
|
"evidenceClass": "diff-only",
|
|
1111
1125
|
"requiresBinaries": [],
|
|
1112
1126
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.coderabbit",
|
|
1127
|
+
"contextWindowTokens": null,
|
|
1128
|
+
"contextWindowConfigKey": null,
|
|
1113
1129
|
"modelConfigKey": null,
|
|
1114
1130
|
"effortConfigKey": null,
|
|
1115
1131
|
"defaultEffort": null,
|
|
@@ -1119,14 +1135,14 @@ const capabilities = {
|
|
|
1119
1135
|
"review.max_prompt_tokens_per_reviewer.coderabbit": {
|
|
1120
1136
|
"type": "number",
|
|
1121
1137
|
"default": -1,
|
|
1122
|
-
"description": "Prompt-token budget for the CodeRabbit reviewer lane. Unset is -1, a sentinel
|
|
1138
|
+
"description": "Prompt-token budget for the CodeRabbit reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
1123
1139
|
}
|
|
1124
1140
|
}
|
|
1125
1141
|
},
|
|
1126
1142
|
"codex": {
|
|
1127
1143
|
"id": "codex",
|
|
1128
1144
|
"role": "runtime",
|
|
1129
|
-
"version": "1.
|
|
1145
|
+
"version": "1.20.0",
|
|
1130
1146
|
"title": "OpenAI Codex CLI",
|
|
1131
1147
|
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
|
|
1132
1148
|
"tier": "core",
|
|
@@ -1282,6 +1298,8 @@ const capabilities = {
|
|
|
1282
1298
|
"evidenceClass": "source-grounded",
|
|
1283
1299
|
"requiresBinaries": [],
|
|
1284
1300
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.codex",
|
|
1301
|
+
"contextWindowTokens": 272000,
|
|
1302
|
+
"contextWindowConfigKey": "review.context_window_tokens.codex",
|
|
1285
1303
|
"modelConfigKey": "review.models.codex",
|
|
1286
1304
|
"effortConfigKey": "review.effort.codex",
|
|
1287
1305
|
"defaultEffort": "high",
|
|
@@ -1296,7 +1314,12 @@ const capabilities = {
|
|
|
1296
1314
|
"review.max_prompt_tokens_per_reviewer.codex": {
|
|
1297
1315
|
"type": "number",
|
|
1298
1316
|
"default": -1,
|
|
1299
|
-
"description": "Prompt-token budget for the Codex reviewer lane. Unset is -1, a sentinel
|
|
1317
|
+
"description": "Prompt-token budget for the Codex reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
1318
|
+
},
|
|
1319
|
+
"review.context_window_tokens.codex": {
|
|
1320
|
+
"type": "number",
|
|
1321
|
+
"default": -1,
|
|
1322
|
+
"description": "Context window in tokens used to derive the default prompt cap for the codex reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 272000 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
1300
1323
|
},
|
|
1301
1324
|
"review.timeouts.codex": {
|
|
1302
1325
|
"type": "number",
|
|
@@ -1313,7 +1336,7 @@ const capabilities = {
|
|
|
1313
1336
|
"copilot": {
|
|
1314
1337
|
"id": "copilot",
|
|
1315
1338
|
"role": "runtime",
|
|
1316
|
-
"version": "1.
|
|
1339
|
+
"version": "1.20.0",
|
|
1317
1340
|
"title": "GitHub Copilot",
|
|
1318
1341
|
"description": "GitHub Copilot (VS Code) — markdown config format; copilot-inline hook surface; no hook events emitted; flat skill nesting (unconfirmed recursive loader); tier-2 support.",
|
|
1319
1342
|
"tier": "core",
|
|
@@ -1415,7 +1438,7 @@ const capabilities = {
|
|
|
1415
1438
|
"cursor": {
|
|
1416
1439
|
"id": "cursor",
|
|
1417
1440
|
"role": "runtime",
|
|
1418
|
-
"version": "1.
|
|
1441
|
+
"version": "1.20.0",
|
|
1419
1442
|
"title": "Cursor",
|
|
1420
1443
|
"description": "Cursor IDE — skills-only workflow surface; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
|
|
1421
1444
|
"tier": "core",
|
|
@@ -1564,6 +1587,8 @@ const capabilities = {
|
|
|
1564
1587
|
"evidenceClass": "source-grounded",
|
|
1565
1588
|
"requiresBinaries": [],
|
|
1566
1589
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.cursor",
|
|
1590
|
+
"contextWindowTokens": null,
|
|
1591
|
+
"contextWindowConfigKey": "review.context_window_tokens.cursor",
|
|
1567
1592
|
"modelConfigKey": "review.models.cursor",
|
|
1568
1593
|
"effortConfigKey": null,
|
|
1569
1594
|
"defaultEffort": null,
|
|
@@ -1578,14 +1603,19 @@ const capabilities = {
|
|
|
1578
1603
|
"review.max_prompt_tokens_per_reviewer.cursor": {
|
|
1579
1604
|
"type": "number",
|
|
1580
1605
|
"default": -1,
|
|
1581
|
-
"description": "Prompt-token budget for the Cursor reviewer lane. Unset is -1, a sentinel
|
|
1606
|
+
"description": "Prompt-token budget for the Cursor reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
1607
|
+
},
|
|
1608
|
+
"review.context_window_tokens.cursor": {
|
|
1609
|
+
"type": "number",
|
|
1610
|
+
"default": -1,
|
|
1611
|
+
"description": "Context window in tokens used to derive the default prompt cap for the cursor reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
1582
1612
|
}
|
|
1583
1613
|
}
|
|
1584
1614
|
},
|
|
1585
1615
|
"drift": {
|
|
1586
1616
|
"id": "drift",
|
|
1587
1617
|
"role": "feature",
|
|
1588
|
-
"version": "1.
|
|
1618
|
+
"version": "1.20.0",
|
|
1589
1619
|
"title": "Drift detection gates",
|
|
1590
1620
|
"description": "Drift detection gates for the planning loop. At execute:wave:post: a blocking schema drift gate (detects schema files changed without a database push) and a non-blocking codebase drift gate (detects structural additions outside the codebase map and modified or deleted files inside it). At plan:pre: a non-blocking, warn-only codebase drift gate (gated on workflow.plan_drift_precheck) that flags a stale codebase map before planning, so plans are authored against a fresh STRUCTURE.md instead of discovering drift mid-execution.",
|
|
1591
1621
|
"tier": "full",
|
|
@@ -1686,7 +1716,7 @@ const capabilities = {
|
|
|
1686
1716
|
"external-job": {
|
|
1687
1717
|
"id": "external-job",
|
|
1688
1718
|
"role": "feature",
|
|
1689
|
-
"version": "1.
|
|
1719
|
+
"version": "1.20.0",
|
|
1690
1720
|
"title": "Async external-job scheduler adapter",
|
|
1691
1721
|
"description": "Default-off producer of the async external-job manifest (#1164). At execute:wave:post an executor can externalize long-running compute (SLURM first, scheduler-pluggable), commit a .planning/async-jobs/<job>.json manifest, defer SUMMARY.md, and return external_job_waiting. The core loop (#1165) consumes the manifest; this capability is the only thing that writes it. NOTE on contribution point: #1164 specifies classification at execute:wave:pre and recording at execute:wave:post. This capability still contributes executor guidance at wave:post; execute-phase now renders wave:pre entries and dispatches generic step hooks there independently. Moving external-job classification to wave:pre is a separate capability change, not part of #4148. The adapter (scripts/slurm-adapter.cjs) reads external_job.submit_timeout_ms / poll_timeout_ms / artifact_dir through the canonical capability-config seam (env override > config > registry default).",
|
|
1692
1722
|
"tier": "full",
|
|
@@ -1769,7 +1799,7 @@ const capabilities = {
|
|
|
1769
1799
|
"gap-analysis": {
|
|
1770
1800
|
"id": "gap-analysis",
|
|
1771
1801
|
"role": "feature",
|
|
1772
|
-
"version": "1.
|
|
1802
|
+
"version": "1.20.0",
|
|
1773
1803
|
"title": "Post-planning gap analysis",
|
|
1774
1804
|
"description": "Proactive, non-blocking post-planning coverage report. After all PLAN.md files are generated, cross-references every REQ-ID and D-ID from REQUIREMENTS.md and CONTEXT.md against plan bodies. Emits a Source | Item | Status table. Does not block phase advancement.",
|
|
1775
1805
|
"tier": "standard",
|
|
@@ -1810,7 +1840,7 @@ const capabilities = {
|
|
|
1810
1840
|
"graphify": {
|
|
1811
1841
|
"id": "graphify",
|
|
1812
1842
|
"role": "feature",
|
|
1813
|
-
"version": "1.
|
|
1843
|
+
"version": "1.20.0",
|
|
1814
1844
|
"title": "Knowledge graph",
|
|
1815
1845
|
"description": "Build, query, and inspect the project knowledge graph in `.planning/graphs/`; exposes graphify CLI subcommands (build, query, status, diff) and the /gsd-graphify skill.",
|
|
1816
1846
|
"tier": "full",
|
|
@@ -1851,7 +1881,7 @@ const capabilities = {
|
|
|
1851
1881
|
"hermes": {
|
|
1852
1882
|
"id": "hermes",
|
|
1853
1883
|
"role": "runtime",
|
|
1854
|
-
"version": "1.
|
|
1884
|
+
"version": "1.20.0",
|
|
1855
1885
|
"title": "Hermes Agent",
|
|
1856
1886
|
"description": "Hermes Agent (NousResearch) — skills nest under skills/gsd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
1857
1887
|
"tier": "core",
|
|
@@ -1970,7 +2000,7 @@ const capabilities = {
|
|
|
1970
2000
|
"intel": {
|
|
1971
2001
|
"id": "intel",
|
|
1972
2002
|
"role": "feature",
|
|
1973
|
-
"version": "1.
|
|
2003
|
+
"version": "1.20.0",
|
|
1974
2004
|
"title": "Codebase intelligence",
|
|
1975
2005
|
"description": "Code-intelligence store for codebase querying, diff, snapshot, and API-surface extraction; exposes `gsd-tools intel` subcommands (query, status, update, diff, snapshot, patch-meta, validate, extract-exports, api-surface) and backs `/gsd-map-codebase` and `gsd-intel-updater`.",
|
|
1976
2006
|
"tier": "full",
|
|
@@ -2022,7 +2052,7 @@ const capabilities = {
|
|
|
2022
2052
|
"kilo": {
|
|
2023
2053
|
"id": "kilo",
|
|
2024
2054
|
"role": "runtime",
|
|
2025
|
-
"version": "1.
|
|
2055
|
+
"version": "1.20.0",
|
|
2026
2056
|
"title": "Kilo Code",
|
|
2027
2057
|
"description": "Kilo Code — XDG-based config dir; global skills at ~/.kilo/skills (separate from XDG config); flat command/ + skills artifact layout; no lifecycle hook registration; tier-2 support.",
|
|
2028
2058
|
"tier": "core",
|
|
@@ -2156,7 +2186,7 @@ const capabilities = {
|
|
|
2156
2186
|
"kimi": {
|
|
2157
2187
|
"id": "kimi",
|
|
2158
2188
|
"role": "runtime",
|
|
2159
|
-
"version": "1.
|
|
2189
|
+
"version": "1.20.0",
|
|
2160
2190
|
"title": "Kimi CLI",
|
|
2161
2191
|
"description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.",
|
|
2162
2192
|
"tier": "core",
|
|
@@ -2266,7 +2296,7 @@ const capabilities = {
|
|
|
2266
2296
|
"kimi-code": {
|
|
2267
2297
|
"id": "kimi-code",
|
|
2268
2298
|
"role": "runtime",
|
|
2269
|
-
"version": "1.
|
|
2299
|
+
"version": "1.20.0",
|
|
2270
2300
|
"title": "Kimi Code CLI",
|
|
2271
2301
|
"description": "Kimi Code CLI (Moonshot AI, Node) — Agent Skills auto-discovered at ~/.kimi-code/skills; global AGENTS.md at ~/.kimi-code/AGENTS.md; native config.toml + [[hooks]] bus; three built-in subagents (coder/explore/plan), NO custom named subagents; background dispatch; tier-2 support. Distinct from Python kimi-cli (the 'kimi' capability) per ADR-1239 EoS — Kimi Code cannot dispatch named subagents so the kimi-agents YAML layout does NOT apply; persona injection rides the existing ${AGENT_SKILLS_*} workflow fallback. Install-layout, agent-install-check, and install-time decision (kimi vs kimi-code) land in follow-up PRs; this descriptor is the EoS foundation.",
|
|
2272
2302
|
"tier": "core",
|
|
@@ -2411,6 +2441,8 @@ const capabilities = {
|
|
|
2411
2441
|
"evidenceClass": "source-grounded",
|
|
2412
2442
|
"requiresBinaries": [],
|
|
2413
2443
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.kimi-code",
|
|
2444
|
+
"contextWindowTokens": 262144,
|
|
2445
|
+
"contextWindowConfigKey": "review.context_window_tokens.kimi-code",
|
|
2414
2446
|
"modelConfigKey": "review.models.kimi-code",
|
|
2415
2447
|
"effortConfigKey": null,
|
|
2416
2448
|
"defaultEffort": null,
|
|
@@ -2425,7 +2457,12 @@ const capabilities = {
|
|
|
2425
2457
|
"review.max_prompt_tokens_per_reviewer.kimi-code": {
|
|
2426
2458
|
"type": "number",
|
|
2427
2459
|
"default": -1,
|
|
2428
|
-
"description": "Prompt-token budget for the Kimi Code reviewer lane. Unset is -1, a sentinel
|
|
2460
|
+
"description": "Prompt-token budget for the Kimi Code reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
2461
|
+
},
|
|
2462
|
+
"review.context_window_tokens.kimi-code": {
|
|
2463
|
+
"type": "number",
|
|
2464
|
+
"default": -1,
|
|
2465
|
+
"description": "Context window in tokens used to derive the default prompt cap for the kimi-code reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 262144 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
2429
2466
|
},
|
|
2430
2467
|
"review.timeouts.kimi-code": {
|
|
2431
2468
|
"type": "number",
|
|
@@ -2437,7 +2474,7 @@ const capabilities = {
|
|
|
2437
2474
|
"live-dom-uat": {
|
|
2438
2475
|
"id": "live-dom-uat",
|
|
2439
2476
|
"role": "feature",
|
|
2440
|
-
"version": "1.
|
|
2477
|
+
"version": "1.20.0",
|
|
2441
2478
|
"title": "Live-DOM UAT",
|
|
2442
2479
|
"description": "Default-off live-DOM verification (#2856). Confines browser MCP reach to one purpose-built agent (gsd-dom-verifier) that carries the browser globs in its own tools: line, registered as an additive step hook at execute:wave:post. agents/gsd-executor.md is deliberately NOT widened: for a first-party agent the static tool list is the only control that exists, no capability can grant tools to one (ADR-1244 D2), no hook kind grants tool permissions (ADR-857 D4), and there is no per-dispatch tool override. Gated by activationKey workflow.live_dom_uat (default false), so with the key off the capability resolves inactive and the hook does not render at all. NOTE on the browser profile lock: chrome-devtools-mcp holds an exclusive lock on $HOME/.cache/chrome-devtools-mcp/chrome-profile, and --isolated is a flag on the user's own MCP-server registration that GSD cannot pass. Concurrent execution waves sharing one profile will therefore collide; the step tolerates and reports that (onError: skip, never blocking) rather than pretending to coordinate a resource it does not own.",
|
|
2443
2480
|
"tier": "full",
|
|
@@ -2490,7 +2527,7 @@ const capabilities = {
|
|
|
2490
2527
|
"llama-cpp": {
|
|
2491
2528
|
"id": "llama-cpp",
|
|
2492
2529
|
"role": "reviewer",
|
|
2493
|
-
"version": "1.
|
|
2530
|
+
"version": "1.20.0",
|
|
2494
2531
|
"title": "llama.cpp",
|
|
2495
2532
|
"description": "llama.cpp server — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.llama_cpp_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`llama-cpp`, required by KEBAB_RE); `reviewer.slug` stays snake (`llama_cpp`) to match the shipped roster and the `review.llama_cpp_host` config key (ADR-2782's three-namespace trap).",
|
|
2496
2533
|
"tier": "full",
|
|
@@ -2525,6 +2562,8 @@ const capabilities = {
|
|
|
2525
2562
|
"evidenceClass": "source-grounded",
|
|
2526
2563
|
"requiresBinaries": [],
|
|
2527
2564
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.llama_cpp",
|
|
2565
|
+
"contextWindowTokens": null,
|
|
2566
|
+
"contextWindowConfigKey": "review.context_window_tokens.llama_cpp",
|
|
2528
2567
|
"modelConfigKey": "review.models.llama_cpp",
|
|
2529
2568
|
"effortConfigKey": null,
|
|
2530
2569
|
"defaultEffort": null,
|
|
@@ -2544,7 +2583,12 @@ const capabilities = {
|
|
|
2544
2583
|
"review.max_prompt_tokens_per_reviewer.llama_cpp": {
|
|
2545
2584
|
"type": "number",
|
|
2546
2585
|
"default": -1,
|
|
2547
|
-
"description": "Prompt-token budget for the llama.cpp reviewer lane. Unset is -1, a sentinel
|
|
2586
|
+
"description": "Prompt-token budget for the llama.cpp reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
2587
|
+
},
|
|
2588
|
+
"review.context_window_tokens.llama_cpp": {
|
|
2589
|
+
"type": "number",
|
|
2590
|
+
"default": -1,
|
|
2591
|
+
"description": "Context window in tokens used to derive the default prompt cap for the llama_cpp reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
2548
2592
|
},
|
|
2549
2593
|
"review.timeouts.llama_cpp": {
|
|
2550
2594
|
"type": "number",
|
|
@@ -2556,7 +2600,7 @@ const capabilities = {
|
|
|
2556
2600
|
"lm-studio": {
|
|
2557
2601
|
"id": "lm-studio",
|
|
2558
2602
|
"role": "reviewer",
|
|
2559
|
-
"version": "1.
|
|
2603
|
+
"version": "1.20.0",
|
|
2560
2604
|
"title": "LM Studio",
|
|
2561
2605
|
"description": "LM Studio local model server — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.lm_studio_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`lm-studio`, required by KEBAB_RE); `reviewer.slug` stays snake (`lm_studio`) to match the shipped roster and the `review.lm_studio_host` config key (ADR-2782's three-namespace trap).",
|
|
2562
2606
|
"tier": "full",
|
|
@@ -2591,6 +2635,8 @@ const capabilities = {
|
|
|
2591
2635
|
"evidenceClass": "source-grounded",
|
|
2592
2636
|
"requiresBinaries": [],
|
|
2593
2637
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.lm_studio",
|
|
2638
|
+
"contextWindowTokens": null,
|
|
2639
|
+
"contextWindowConfigKey": "review.context_window_tokens.lm_studio",
|
|
2594
2640
|
"modelConfigKey": "review.models.lm_studio",
|
|
2595
2641
|
"effortConfigKey": null,
|
|
2596
2642
|
"defaultEffort": null,
|
|
@@ -2610,7 +2656,12 @@ const capabilities = {
|
|
|
2610
2656
|
"review.max_prompt_tokens_per_reviewer.lm_studio": {
|
|
2611
2657
|
"type": "number",
|
|
2612
2658
|
"default": -1,
|
|
2613
|
-
"description": "Prompt-token budget for the LM Studio reviewer lane. Unset is -1, a sentinel
|
|
2659
|
+
"description": "Prompt-token budget for the LM Studio reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
2660
|
+
},
|
|
2661
|
+
"review.context_window_tokens.lm_studio": {
|
|
2662
|
+
"type": "number",
|
|
2663
|
+
"default": -1,
|
|
2664
|
+
"description": "Context window in tokens used to derive the default prompt cap for the lm_studio reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
2614
2665
|
},
|
|
2615
2666
|
"review.timeouts.lm_studio": {
|
|
2616
2667
|
"type": "number",
|
|
@@ -2622,7 +2673,7 @@ const capabilities = {
|
|
|
2622
2673
|
"mempalace": {
|
|
2623
2674
|
"id": "mempalace",
|
|
2624
2675
|
"role": "feature",
|
|
2625
|
-
"version": "1.
|
|
2676
|
+
"version": "1.20.0",
|
|
2626
2677
|
"title": "MemPalace memory",
|
|
2627
2678
|
"description": "Cross-session, cross-project memory: deliberate recall before discuss/plan and verbatim capture + temporal-KG sync at phase boundaries, via the MemPalace MCP server and CLI.",
|
|
2628
2679
|
"tier": "full",
|
|
@@ -2796,7 +2847,7 @@ const capabilities = {
|
|
|
2796
2847
|
"nyquist": {
|
|
2797
2848
|
"id": "nyquist",
|
|
2798
2849
|
"role": "feature",
|
|
2799
|
-
"version": "1.
|
|
2850
|
+
"version": "1.20.0",
|
|
2800
2851
|
"title": "Nyquist validation",
|
|
2801
2852
|
"description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
|
|
2802
2853
|
"tier": "full",
|
|
@@ -2846,7 +2897,7 @@ const capabilities = {
|
|
|
2846
2897
|
"ollama": {
|
|
2847
2898
|
"id": "ollama",
|
|
2848
2899
|
"role": "reviewer",
|
|
2849
|
-
"version": "1.
|
|
2900
|
+
"version": "1.20.0",
|
|
2850
2901
|
"title": "Ollama",
|
|
2851
2902
|
"description": "Ollama local model server — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.ollama_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq.",
|
|
2852
2903
|
"tier": "full",
|
|
@@ -2881,6 +2932,8 @@ const capabilities = {
|
|
|
2881
2932
|
"evidenceClass": "source-grounded",
|
|
2882
2933
|
"requiresBinaries": [],
|
|
2883
2934
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.ollama",
|
|
2935
|
+
"contextWindowTokens": null,
|
|
2936
|
+
"contextWindowConfigKey": "review.context_window_tokens.ollama",
|
|
2884
2937
|
"modelConfigKey": "review.models.ollama",
|
|
2885
2938
|
"effortConfigKey": null,
|
|
2886
2939
|
"defaultEffort": null,
|
|
@@ -2900,7 +2953,12 @@ const capabilities = {
|
|
|
2900
2953
|
"review.max_prompt_tokens_per_reviewer.ollama": {
|
|
2901
2954
|
"type": "number",
|
|
2902
2955
|
"default": -1,
|
|
2903
|
-
"description": "Prompt-token budget for the Ollama reviewer lane. Unset is -1, a sentinel
|
|
2956
|
+
"description": "Prompt-token budget for the Ollama reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
2957
|
+
},
|
|
2958
|
+
"review.context_window_tokens.ollama": {
|
|
2959
|
+
"type": "number",
|
|
2960
|
+
"default": -1,
|
|
2961
|
+
"description": "Context window in tokens used to derive the default prompt cap for the ollama reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
2904
2962
|
},
|
|
2905
2963
|
"review.timeouts.ollama": {
|
|
2906
2964
|
"type": "number",
|
|
@@ -2912,7 +2970,7 @@ const capabilities = {
|
|
|
2912
2970
|
"opencode": {
|
|
2913
2971
|
"id": "opencode",
|
|
2914
2972
|
"role": "runtime",
|
|
2915
|
-
"version": "1.
|
|
2973
|
+
"version": "1.20.0",
|
|
2916
2974
|
"title": "OpenCode",
|
|
2917
2975
|
"description": "OpenCode — XDG-based config dir; flat commands/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
|
|
2918
2976
|
"tier": "core",
|
|
@@ -3085,6 +3143,8 @@ const capabilities = {
|
|
|
3085
3143
|
"evidenceClass": "source-grounded",
|
|
3086
3144
|
"requiresBinaries": [],
|
|
3087
3145
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.opencode",
|
|
3146
|
+
"contextWindowTokens": null,
|
|
3147
|
+
"contextWindowConfigKey": "review.context_window_tokens.opencode",
|
|
3088
3148
|
"modelConfigKey": "review.models.opencode",
|
|
3089
3149
|
"effortConfigKey": "review.effort.opencode",
|
|
3090
3150
|
"defaultEffort": "high",
|
|
@@ -3099,7 +3159,12 @@ const capabilities = {
|
|
|
3099
3159
|
"review.max_prompt_tokens_per_reviewer.opencode": {
|
|
3100
3160
|
"type": "number",
|
|
3101
3161
|
"default": -1,
|
|
3102
|
-
"description": "Prompt-token budget for the OpenCode reviewer lane. Unset is -1, a sentinel
|
|
3162
|
+
"description": "Prompt-token budget for the OpenCode reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
3163
|
+
},
|
|
3164
|
+
"review.context_window_tokens.opencode": {
|
|
3165
|
+
"type": "number",
|
|
3166
|
+
"default": -1,
|
|
3167
|
+
"description": "Context window in tokens used to derive the default prompt cap for the opencode reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
3103
3168
|
},
|
|
3104
3169
|
"review.timeouts.opencode": {
|
|
3105
3170
|
"type": "number",
|
|
@@ -3116,7 +3181,7 @@ const capabilities = {
|
|
|
3116
3181
|
"pattern-mapper": {
|
|
3117
3182
|
"id": "pattern-mapper",
|
|
3118
3183
|
"role": "feature",
|
|
3119
|
-
"version": "1.
|
|
3184
|
+
"version": "1.20.0",
|
|
3120
3185
|
"title": "Pattern mapping",
|
|
3121
3186
|
"description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
|
|
3122
3187
|
"tier": "full",
|
|
@@ -3170,7 +3235,7 @@ const capabilities = {
|
|
|
3170
3235
|
"pi": {
|
|
3171
3236
|
"id": "pi",
|
|
3172
3237
|
"role": "runtime",
|
|
3173
|
-
"version": "1.
|
|
3238
|
+
"version": "1.20.0",
|
|
3174
3239
|
"title": "pi",
|
|
3175
3240
|
"description": "pi (pi.dev) — node-runtime programmatic-CLI (managed pi 1.3.0 install); TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.",
|
|
3176
3241
|
"tier": "core",
|
|
@@ -3281,7 +3346,7 @@ const capabilities = {
|
|
|
3281
3346
|
"profile-pipeline": {
|
|
3282
3347
|
"id": "profile-pipeline",
|
|
3283
3348
|
"role": "feature",
|
|
3284
|
-
"version": "1.
|
|
3349
|
+
"version": "1.20.0",
|
|
3285
3350
|
"title": "Developer profiling pipeline",
|
|
3286
3351
|
"description": "Developer behavioral profiling from Claude Code session history; scans session JSONL files, extracts and samples user messages, and generates profile artifacts (USER-PROFILE.md, dev-preferences.md, CLAUDE.md sections). Exposes eight `gsd-tools` commands: scan-sessions, extract-messages, profile-sample (pipeline phase) and write-profile, profile-questionnaire, generate-dev-preferences, generate-claude-profile, generate-claude-md (output phase). Backs the /gsd-profile-user skill and gsd-user-profiler agent.",
|
|
3287
3352
|
"tier": "full",
|
|
@@ -3358,7 +3423,7 @@ const capabilities = {
|
|
|
3358
3423
|
"qwen": {
|
|
3359
3424
|
"id": "qwen",
|
|
3360
3425
|
"role": "runtime",
|
|
3361
|
-
"version": "1.
|
|
3426
|
+
"version": "1.20.0",
|
|
3362
3427
|
"title": "Qwen Code",
|
|
3363
3428
|
"description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
3364
3429
|
"tier": "core",
|
|
@@ -3496,6 +3561,8 @@ const capabilities = {
|
|
|
3496
3561
|
"evidenceClass": "source-grounded",
|
|
3497
3562
|
"requiresBinaries": [],
|
|
3498
3563
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.qwen",
|
|
3564
|
+
"contextWindowTokens": 131072,
|
|
3565
|
+
"contextWindowConfigKey": "review.context_window_tokens.qwen",
|
|
3499
3566
|
"modelConfigKey": null,
|
|
3500
3567
|
"effortConfigKey": null,
|
|
3501
3568
|
"defaultEffort": null,
|
|
@@ -3505,14 +3572,19 @@ const capabilities = {
|
|
|
3505
3572
|
"review.max_prompt_tokens_per_reviewer.qwen": {
|
|
3506
3573
|
"type": "number",
|
|
3507
3574
|
"default": -1,
|
|
3508
|
-
"description": "Prompt-token budget for the Qwen Code reviewer lane. Unset is -1, a sentinel
|
|
3575
|
+
"description": "Prompt-token budget for the Qwen Code reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
3576
|
+
},
|
|
3577
|
+
"review.context_window_tokens.qwen": {
|
|
3578
|
+
"type": "number",
|
|
3579
|
+
"default": -1,
|
|
3580
|
+
"description": "Context window in tokens used to derive the default prompt cap for the qwen reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 131072 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
3509
3581
|
}
|
|
3510
3582
|
}
|
|
3511
3583
|
},
|
|
3512
3584
|
"refactor-trigger": {
|
|
3513
3585
|
"id": "refactor-trigger",
|
|
3514
3586
|
"role": "feature",
|
|
3515
|
-
"version": "1.
|
|
3587
|
+
"version": "1.20.0",
|
|
3516
3588
|
"title": "Complexity-triggered refactor",
|
|
3517
3589
|
"description": "Measures the complexity of the code a phase touched and, when a function crosses a configured threshold or jumps past its recorded anchor, surfaces a scoped refactor proposal at .planning/phases/<N>/<NN>-REFACTOR.md. Advisory by default — it never edits code and never blocks. Opt-in strict mode blocks /gsd-ship while a proposal is untriaged; a declined proposal is recorded in the broken-windows ledger when that capability is present. Operationalizes 'refactor early, refactor often' as continuous pressure instead of a thing you have to remember (issue #1953).",
|
|
3518
3590
|
"tier": "full",
|
|
@@ -3579,7 +3651,7 @@ const capabilities = {
|
|
|
3579
3651
|
"research": {
|
|
3580
3652
|
"id": "research",
|
|
3581
3653
|
"role": "feature",
|
|
3582
|
-
"version": "1.
|
|
3654
|
+
"version": "1.20.0",
|
|
3583
3655
|
"title": "Phase research",
|
|
3584
3656
|
"description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
|
|
3585
3657
|
"tier": "standard",
|
|
@@ -3631,7 +3703,7 @@ const capabilities = {
|
|
|
3631
3703
|
"schema-gate": {
|
|
3632
3704
|
"id": "schema-gate",
|
|
3633
3705
|
"role": "feature",
|
|
3634
|
-
"version": "1.
|
|
3706
|
+
"version": "1.20.0",
|
|
3635
3707
|
"title": "Schema push detection gate",
|
|
3636
3708
|
"description": "Detects ORM schema-relevant files in the phase scope during planning and injects a mandatory [BLOCKING] schema push task into the plan. Prevents false-positive verification where build/types pass because TypeScript types come from config, not the live database.",
|
|
3637
3709
|
"tier": "full",
|
|
@@ -3677,7 +3749,7 @@ const capabilities = {
|
|
|
3677
3749
|
"security": {
|
|
3678
3750
|
"id": "security",
|
|
3679
3751
|
"role": "feature",
|
|
3680
|
-
"version": "1.
|
|
3752
|
+
"version": "1.20.0",
|
|
3681
3753
|
"title": "Security enforcement",
|
|
3682
3754
|
"description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
|
|
3683
3755
|
"tier": "full",
|
|
@@ -3776,7 +3848,7 @@ const capabilities = {
|
|
|
3776
3848
|
"tdd": {
|
|
3777
3849
|
"id": "tdd",
|
|
3778
3850
|
"role": "feature",
|
|
3779
|
-
"version": "1.
|
|
3851
|
+
"version": "1.20.0",
|
|
3780
3852
|
"title": "Test-driven development",
|
|
3781
3853
|
"description": "Injects TDD heuristics into the planner and enforces RED/GREEN gate compliance on type:tdd plans after execution. Owns workflow.tdd_mode; the --tdd CLI flag is the ephemeral override.",
|
|
3782
3854
|
"tier": "full",
|
|
@@ -3829,7 +3901,7 @@ const capabilities = {
|
|
|
3829
3901
|
"trae": {
|
|
3830
3902
|
"id": "trae",
|
|
3831
3903
|
"role": "runtime",
|
|
3832
|
-
"version": "1.
|
|
3904
|
+
"version": "1.20.0",
|
|
3833
3905
|
"title": "Trae IDE",
|
|
3834
3906
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
3835
3907
|
"tier": "core",
|
|
@@ -3928,7 +4000,7 @@ const capabilities = {
|
|
|
3928
4000
|
"ui": {
|
|
3929
4001
|
"id": "ui",
|
|
3930
4002
|
"role": "feature",
|
|
3931
|
-
"version": "1.
|
|
4003
|
+
"version": "1.20.0",
|
|
3932
4004
|
"title": "UI design contracts",
|
|
3933
4005
|
"description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
|
|
3934
4006
|
"tier": "full",
|
|
@@ -4028,7 +4100,7 @@ const capabilities = {
|
|
|
4028
4100
|
"vscode": {
|
|
4029
4101
|
"id": "vscode",
|
|
4030
4102
|
"role": "runtime",
|
|
4031
|
-
"version": "1.
|
|
4103
|
+
"version": "1.20.0",
|
|
4032
4104
|
"title": "VS Code",
|
|
4033
4105
|
"description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).",
|
|
4034
4106
|
"tier": "core",
|
|
@@ -4086,7 +4158,7 @@ const capabilities = {
|
|
|
4086
4158
|
"windsurf": {
|
|
4087
4159
|
"id": "windsurf",
|
|
4088
4160
|
"role": "runtime",
|
|
4089
|
-
"version": "1.
|
|
4161
|
+
"version": "1.20.0",
|
|
4090
4162
|
"title": "Windsurf",
|
|
4091
4163
|
"description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.",
|
|
4092
4164
|
"tier": "core",
|
|
@@ -4179,7 +4251,7 @@ const capabilities = {
|
|
|
4179
4251
|
"zcode": {
|
|
4180
4252
|
"id": "zcode",
|
|
4181
4253
|
"role": "runtime",
|
|
4182
|
-
"version": "1.
|
|
4254
|
+
"version": "1.20.0",
|
|
4183
4255
|
"title": "ZCode",
|
|
4184
4256
|
"description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills/<name>/SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.",
|
|
4185
4257
|
"tier": "core",
|
|
@@ -4931,11 +5003,13 @@ const configKeys = {
|
|
|
4931
5003
|
"workflow.api_coverage_gate": "ai-integration",
|
|
4932
5004
|
"review.models.agy": "antigravity",
|
|
4933
5005
|
"review.max_prompt_tokens_per_reviewer.antigravity": "antigravity",
|
|
5006
|
+
"review.context_window_tokens.antigravity": "antigravity",
|
|
4934
5007
|
"review.timeouts.antigravity": "antigravity",
|
|
4935
5008
|
"workflow.assumption_delta": "assumption-delta",
|
|
4936
5009
|
"workflow.windows_enforce": "broken-windows",
|
|
4937
5010
|
"review.models.claude": "claude",
|
|
4938
5011
|
"review.max_prompt_tokens_per_reviewer.claude": "claude",
|
|
5012
|
+
"review.context_window_tokens.claude": "claude",
|
|
4939
5013
|
"review.timeouts.claude": "claude",
|
|
4940
5014
|
"review.effort.claude": "claude",
|
|
4941
5015
|
"claude_orchestration.enabled": "claude-orchestration",
|
|
@@ -4947,10 +5021,12 @@ const configKeys = {
|
|
|
4947
5021
|
"review.max_prompt_tokens_per_reviewer.coderabbit": "coderabbit",
|
|
4948
5022
|
"review.models.codex": "codex",
|
|
4949
5023
|
"review.max_prompt_tokens_per_reviewer.codex": "codex",
|
|
5024
|
+
"review.context_window_tokens.codex": "codex",
|
|
4950
5025
|
"review.timeouts.codex": "codex",
|
|
4951
5026
|
"review.effort.codex": "codex",
|
|
4952
5027
|
"review.models.cursor": "cursor",
|
|
4953
5028
|
"review.max_prompt_tokens_per_reviewer.cursor": "cursor",
|
|
5029
|
+
"review.context_window_tokens.cursor": "cursor",
|
|
4954
5030
|
"workflow.drift_threshold": "drift",
|
|
4955
5031
|
"workflow.drift_action": "drift",
|
|
4956
5032
|
"workflow.schema_drift_gate": "drift",
|
|
@@ -4967,15 +5043,18 @@ const configKeys = {
|
|
|
4967
5043
|
"intel.enabled": "intel",
|
|
4968
5044
|
"review.models.kimi-code": "kimi-code",
|
|
4969
5045
|
"review.max_prompt_tokens_per_reviewer.kimi-code": "kimi-code",
|
|
5046
|
+
"review.context_window_tokens.kimi-code": "kimi-code",
|
|
4970
5047
|
"review.timeouts.kimi-code": "kimi-code",
|
|
4971
5048
|
"workflow.live_dom_uat": "live-dom-uat",
|
|
4972
5049
|
"review.models.llama_cpp": "llama-cpp",
|
|
4973
5050
|
"review.llama_cpp_host": "llama-cpp",
|
|
4974
5051
|
"review.max_prompt_tokens_per_reviewer.llama_cpp": "llama-cpp",
|
|
5052
|
+
"review.context_window_tokens.llama_cpp": "llama-cpp",
|
|
4975
5053
|
"review.timeouts.llama_cpp": "llama-cpp",
|
|
4976
5054
|
"review.models.lm_studio": "lm-studio",
|
|
4977
5055
|
"review.lm_studio_host": "lm-studio",
|
|
4978
5056
|
"review.max_prompt_tokens_per_reviewer.lm_studio": "lm-studio",
|
|
5057
|
+
"review.context_window_tokens.lm_studio": "lm-studio",
|
|
4979
5058
|
"review.timeouts.lm_studio": "lm-studio",
|
|
4980
5059
|
"mempalace.enabled": "mempalace",
|
|
4981
5060
|
"mempalace.memory_mode": "mempalace",
|
|
@@ -4991,14 +5070,17 @@ const configKeys = {
|
|
|
4991
5070
|
"review.models.ollama": "ollama",
|
|
4992
5071
|
"review.ollama_host": "ollama",
|
|
4993
5072
|
"review.max_prompt_tokens_per_reviewer.ollama": "ollama",
|
|
5073
|
+
"review.context_window_tokens.ollama": "ollama",
|
|
4994
5074
|
"review.timeouts.ollama": "ollama",
|
|
4995
5075
|
"review.models.opencode": "opencode",
|
|
4996
5076
|
"review.max_prompt_tokens_per_reviewer.opencode": "opencode",
|
|
5077
|
+
"review.context_window_tokens.opencode": "opencode",
|
|
4997
5078
|
"review.timeouts.opencode": "opencode",
|
|
4998
5079
|
"review.effort.opencode": "opencode",
|
|
4999
5080
|
"workflow.pattern_mapper": "pattern-mapper",
|
|
5000
5081
|
"profile-pipeline.enabled": "profile-pipeline",
|
|
5001
5082
|
"review.max_prompt_tokens_per_reviewer.qwen": "qwen",
|
|
5083
|
+
"review.context_window_tokens.qwen": "qwen",
|
|
5002
5084
|
"refactor.trigger_enabled": "refactor-trigger",
|
|
5003
5085
|
"refactor.complexity_threshold": "refactor-trigger",
|
|
5004
5086
|
"refactor.complexity_jump_delta": "refactor-trigger",
|
|
@@ -5038,7 +5120,13 @@ const configSchema = {
|
|
|
5038
5120
|
"owner": "antigravity",
|
|
5039
5121
|
"type": "number",
|
|
5040
5122
|
"default": -1,
|
|
5041
|
-
"description": "Prompt-token budget for the Antigravity reviewer lane. Unset is -1, a sentinel
|
|
5123
|
+
"description": "Prompt-token budget for the Antigravity reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\". Keyed on the reviewer slug `antigravity`, not the `agy` binary alias used by review.models.agy."
|
|
5124
|
+
},
|
|
5125
|
+
"review.context_window_tokens.antigravity": {
|
|
5126
|
+
"owner": "antigravity",
|
|
5127
|
+
"type": "number",
|
|
5128
|
+
"default": -1,
|
|
5129
|
+
"description": "Context window in tokens used to derive the default prompt cap for the antigravity reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
5042
5130
|
},
|
|
5043
5131
|
"review.timeouts.antigravity": {
|
|
5044
5132
|
"owner": "antigravity",
|
|
@@ -5068,7 +5156,13 @@ const configSchema = {
|
|
|
5068
5156
|
"owner": "claude",
|
|
5069
5157
|
"type": "number",
|
|
5070
5158
|
"default": -1,
|
|
5071
|
-
"description": "Prompt-token budget for the Claude reviewer lane. Unset is -1, a sentinel
|
|
5159
|
+
"description": "Prompt-token budget for the Claude reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5160
|
+
},
|
|
5161
|
+
"review.context_window_tokens.claude": {
|
|
5162
|
+
"owner": "claude",
|
|
5163
|
+
"type": "number",
|
|
5164
|
+
"default": -1,
|
|
5165
|
+
"description": "Context window in tokens used to derive the default prompt cap for the claude reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 200000 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
5072
5166
|
},
|
|
5073
5167
|
"review.timeouts.claude": {
|
|
5074
5168
|
"owner": "claude",
|
|
@@ -5136,7 +5230,7 @@ const configSchema = {
|
|
|
5136
5230
|
"owner": "coderabbit",
|
|
5137
5231
|
"type": "number",
|
|
5138
5232
|
"default": -1,
|
|
5139
|
-
"description": "Prompt-token budget for the CodeRabbit reviewer lane. Unset is -1, a sentinel
|
|
5233
|
+
"description": "Prompt-token budget for the CodeRabbit reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5140
5234
|
},
|
|
5141
5235
|
"review.models.codex": {
|
|
5142
5236
|
"owner": "codex",
|
|
@@ -5148,7 +5242,13 @@ const configSchema = {
|
|
|
5148
5242
|
"owner": "codex",
|
|
5149
5243
|
"type": "number",
|
|
5150
5244
|
"default": -1,
|
|
5151
|
-
"description": "Prompt-token budget for the Codex reviewer lane. Unset is -1, a sentinel
|
|
5245
|
+
"description": "Prompt-token budget for the Codex reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5246
|
+
},
|
|
5247
|
+
"review.context_window_tokens.codex": {
|
|
5248
|
+
"owner": "codex",
|
|
5249
|
+
"type": "number",
|
|
5250
|
+
"default": -1,
|
|
5251
|
+
"description": "Context window in tokens used to derive the default prompt cap for the codex reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 272000 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
5152
5252
|
},
|
|
5153
5253
|
"review.timeouts.codex": {
|
|
5154
5254
|
"owner": "codex",
|
|
@@ -5172,7 +5272,13 @@ const configSchema = {
|
|
|
5172
5272
|
"owner": "cursor",
|
|
5173
5273
|
"type": "number",
|
|
5174
5274
|
"default": -1,
|
|
5175
|
-
"description": "Prompt-token budget for the Cursor reviewer lane. Unset is -1, a sentinel
|
|
5275
|
+
"description": "Prompt-token budget for the Cursor reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5276
|
+
},
|
|
5277
|
+
"review.context_window_tokens.cursor": {
|
|
5278
|
+
"owner": "cursor",
|
|
5279
|
+
"type": "number",
|
|
5280
|
+
"default": -1,
|
|
5281
|
+
"description": "Context window in tokens used to derive the default prompt cap for the cursor reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
5176
5282
|
},
|
|
5177
5283
|
"workflow.drift_threshold": {
|
|
5178
5284
|
"owner": "drift",
|
|
@@ -5279,7 +5385,13 @@ const configSchema = {
|
|
|
5279
5385
|
"owner": "kimi-code",
|
|
5280
5386
|
"type": "number",
|
|
5281
5387
|
"default": -1,
|
|
5282
|
-
"description": "Prompt-token budget for the Kimi Code reviewer lane. Unset is -1, a sentinel
|
|
5388
|
+
"description": "Prompt-token budget for the Kimi Code reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5389
|
+
},
|
|
5390
|
+
"review.context_window_tokens.kimi-code": {
|
|
5391
|
+
"owner": "kimi-code",
|
|
5392
|
+
"type": "number",
|
|
5393
|
+
"default": -1,
|
|
5394
|
+
"description": "Context window in tokens used to derive the default prompt cap for the kimi-code reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 262144 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
5283
5395
|
},
|
|
5284
5396
|
"review.timeouts.kimi-code": {
|
|
5285
5397
|
"owner": "kimi-code",
|
|
@@ -5309,7 +5421,13 @@ const configSchema = {
|
|
|
5309
5421
|
"owner": "llama-cpp",
|
|
5310
5422
|
"type": "number",
|
|
5311
5423
|
"default": -1,
|
|
5312
|
-
"description": "Prompt-token budget for the llama.cpp reviewer lane. Unset is -1, a sentinel
|
|
5424
|
+
"description": "Prompt-token budget for the llama.cpp reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5425
|
+
},
|
|
5426
|
+
"review.context_window_tokens.llama_cpp": {
|
|
5427
|
+
"owner": "llama-cpp",
|
|
5428
|
+
"type": "number",
|
|
5429
|
+
"default": -1,
|
|
5430
|
+
"description": "Context window in tokens used to derive the default prompt cap for the llama_cpp reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
5313
5431
|
},
|
|
5314
5432
|
"review.timeouts.llama_cpp": {
|
|
5315
5433
|
"owner": "llama-cpp",
|
|
@@ -5333,7 +5451,13 @@ const configSchema = {
|
|
|
5333
5451
|
"owner": "lm-studio",
|
|
5334
5452
|
"type": "number",
|
|
5335
5453
|
"default": -1,
|
|
5336
|
-
"description": "Prompt-token budget for the LM Studio reviewer lane. Unset is -1, a sentinel
|
|
5454
|
+
"description": "Prompt-token budget for the LM Studio reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5455
|
+
},
|
|
5456
|
+
"review.context_window_tokens.lm_studio": {
|
|
5457
|
+
"owner": "lm-studio",
|
|
5458
|
+
"type": "number",
|
|
5459
|
+
"default": -1,
|
|
5460
|
+
"description": "Context window in tokens used to derive the default prompt cap for the lm_studio reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
5337
5461
|
},
|
|
5338
5462
|
"review.timeouts.lm_studio": {
|
|
5339
5463
|
"owner": "lm-studio",
|
|
@@ -5428,7 +5552,13 @@ const configSchema = {
|
|
|
5428
5552
|
"owner": "ollama",
|
|
5429
5553
|
"type": "number",
|
|
5430
5554
|
"default": -1,
|
|
5431
|
-
"description": "Prompt-token budget for the Ollama reviewer lane. Unset is -1, a sentinel
|
|
5555
|
+
"description": "Prompt-token budget for the Ollama reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5556
|
+
},
|
|
5557
|
+
"review.context_window_tokens.ollama": {
|
|
5558
|
+
"owner": "ollama",
|
|
5559
|
+
"type": "number",
|
|
5560
|
+
"default": -1,
|
|
5561
|
+
"description": "Context window in tokens used to derive the default prompt cap for the ollama reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
5432
5562
|
},
|
|
5433
5563
|
"review.timeouts.ollama": {
|
|
5434
5564
|
"owner": "ollama",
|
|
@@ -5446,7 +5576,13 @@ const configSchema = {
|
|
|
5446
5576
|
"owner": "opencode",
|
|
5447
5577
|
"type": "number",
|
|
5448
5578
|
"default": -1,
|
|
5449
|
-
"description": "Prompt-token budget for the OpenCode reviewer lane. Unset is -1, a sentinel
|
|
5579
|
+
"description": "Prompt-token budget for the OpenCode reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5580
|
+
},
|
|
5581
|
+
"review.context_window_tokens.opencode": {
|
|
5582
|
+
"owner": "opencode",
|
|
5583
|
+
"type": "number",
|
|
5584
|
+
"default": -1,
|
|
5585
|
+
"description": "Context window in tokens used to derive the default prompt cap for the opencode reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
5450
5586
|
},
|
|
5451
5587
|
"review.timeouts.opencode": {
|
|
5452
5588
|
"owner": "opencode",
|
|
@@ -5476,7 +5612,13 @@ const configSchema = {
|
|
|
5476
5612
|
"owner": "qwen",
|
|
5477
5613
|
"type": "number",
|
|
5478
5614
|
"default": -1,
|
|
5479
|
-
"description": "Prompt-token budget for the Qwen Code reviewer lane. Unset is -1, a sentinel
|
|
5615
|
+
"description": "Prompt-token budget for the Qwen Code reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
5616
|
+
},
|
|
5617
|
+
"review.context_window_tokens.qwen": {
|
|
5618
|
+
"owner": "qwen",
|
|
5619
|
+
"type": "number",
|
|
5620
|
+
"default": -1,
|
|
5621
|
+
"description": "Context window in tokens used to derive the default prompt cap for the qwen reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 131072 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
5480
5622
|
},
|
|
5481
5623
|
"refactor.trigger_enabled": {
|
|
5482
5624
|
"owner": "refactor-trigger",
|
|
@@ -5575,7 +5717,7 @@ const runtimes = {
|
|
|
5575
5717
|
"antigravity": {
|
|
5576
5718
|
"id": "antigravity",
|
|
5577
5719
|
"role": "runtime",
|
|
5578
|
-
"version": "1.
|
|
5720
|
+
"version": "1.20.0",
|
|
5579
5721
|
"title": "Antigravity",
|
|
5580
5722
|
"description": "Google Antigravity IDE — config/settings home nested under ~/.gemini/antigravity (probed across 1.x and 2.x layouts); global skills/agents install under ~/.gemini/config, the dir AGY scans for global discovery (#3738); Gemini hook event dialect; flat skill layout; tier-1 support.",
|
|
5581
5723
|
"tier": "core",
|
|
@@ -5717,6 +5859,8 @@ const runtimes = {
|
|
|
5717
5859
|
"evidenceClass": "source-grounded",
|
|
5718
5860
|
"requiresBinaries": [],
|
|
5719
5861
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.antigravity",
|
|
5862
|
+
"contextWindowTokens": null,
|
|
5863
|
+
"contextWindowConfigKey": "review.context_window_tokens.antigravity",
|
|
5720
5864
|
"modelConfigKey": "review.models.agy",
|
|
5721
5865
|
"effortConfigKey": null,
|
|
5722
5866
|
"defaultEffort": null,
|
|
@@ -5731,7 +5875,12 @@ const runtimes = {
|
|
|
5731
5875
|
"review.max_prompt_tokens_per_reviewer.antigravity": {
|
|
5732
5876
|
"type": "number",
|
|
5733
5877
|
"default": -1,
|
|
5734
|
-
"description": "Prompt-token budget for the Antigravity reviewer lane. Unset is -1, a sentinel
|
|
5878
|
+
"description": "Prompt-token budget for the Antigravity reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\". Keyed on the reviewer slug `antigravity`, not the `agy` binary alias used by review.models.agy."
|
|
5879
|
+
},
|
|
5880
|
+
"review.context_window_tokens.antigravity": {
|
|
5881
|
+
"type": "number",
|
|
5882
|
+
"default": -1,
|
|
5883
|
+
"description": "Context window in tokens used to derive the default prompt cap for the antigravity reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
5735
5884
|
},
|
|
5736
5885
|
"review.timeouts.antigravity": {
|
|
5737
5886
|
"type": "number",
|
|
@@ -5743,7 +5892,7 @@ const runtimes = {
|
|
|
5743
5892
|
"augment": {
|
|
5744
5893
|
"id": "augment",
|
|
5745
5894
|
"role": "runtime",
|
|
5746
|
-
"version": "1.
|
|
5895
|
+
"version": "1.20.0",
|
|
5747
5896
|
"title": "Augment Code",
|
|
5748
5897
|
"description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
5749
5898
|
"tier": "core",
|
|
@@ -5861,7 +6010,7 @@ const runtimes = {
|
|
|
5861
6010
|
"claude": {
|
|
5862
6011
|
"id": "claude",
|
|
5863
6012
|
"role": "runtime",
|
|
5864
|
-
"version": "1.
|
|
6013
|
+
"version": "1.20.0",
|
|
5865
6014
|
"title": "Claude Code",
|
|
5866
6015
|
"description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
|
|
5867
6016
|
"tier": "core",
|
|
@@ -6018,6 +6167,8 @@ const runtimes = {
|
|
|
6018
6167
|
"evidenceClass": "source-grounded",
|
|
6019
6168
|
"requiresBinaries": [],
|
|
6020
6169
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.claude",
|
|
6170
|
+
"contextWindowTokens": 200000,
|
|
6171
|
+
"contextWindowConfigKey": "review.context_window_tokens.claude",
|
|
6021
6172
|
"modelConfigKey": "review.models.claude",
|
|
6022
6173
|
"effortConfigKey": "review.effort.claude",
|
|
6023
6174
|
"defaultEffort": "high",
|
|
@@ -6032,7 +6183,12 @@ const runtimes = {
|
|
|
6032
6183
|
"review.max_prompt_tokens_per_reviewer.claude": {
|
|
6033
6184
|
"type": "number",
|
|
6034
6185
|
"default": -1,
|
|
6035
|
-
"description": "Prompt-token budget for the Claude reviewer lane. Unset is -1, a sentinel
|
|
6186
|
+
"description": "Prompt-token budget for the Claude reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
6187
|
+
},
|
|
6188
|
+
"review.context_window_tokens.claude": {
|
|
6189
|
+
"type": "number",
|
|
6190
|
+
"default": -1,
|
|
6191
|
+
"description": "Context window in tokens used to derive the default prompt cap for the claude reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 200000 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
6036
6192
|
},
|
|
6037
6193
|
"review.timeouts.claude": {
|
|
6038
6194
|
"type": "number",
|
|
@@ -6049,7 +6205,7 @@ const runtimes = {
|
|
|
6049
6205
|
"cline": {
|
|
6050
6206
|
"id": "cline",
|
|
6051
6207
|
"role": "runtime",
|
|
6052
|
-
"version": "1.
|
|
6208
|
+
"version": "1.20.0",
|
|
6053
6209
|
"title": "Cline",
|
|
6054
6210
|
"description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
|
|
6055
6211
|
"tier": "core",
|
|
@@ -6143,7 +6299,7 @@ const runtimes = {
|
|
|
6143
6299
|
"codebuddy": {
|
|
6144
6300
|
"id": "codebuddy",
|
|
6145
6301
|
"role": "runtime",
|
|
6146
|
-
"version": "1.
|
|
6302
|
+
"version": "1.20.0",
|
|
6147
6303
|
"title": "CodeBuddy",
|
|
6148
6304
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
6149
6305
|
"tier": "core",
|
|
@@ -6265,7 +6421,7 @@ const runtimes = {
|
|
|
6265
6421
|
"codex": {
|
|
6266
6422
|
"id": "codex",
|
|
6267
6423
|
"role": "runtime",
|
|
6268
|
-
"version": "1.
|
|
6424
|
+
"version": "1.20.0",
|
|
6269
6425
|
"title": "OpenAI Codex CLI",
|
|
6270
6426
|
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
|
|
6271
6427
|
"tier": "core",
|
|
@@ -6421,6 +6577,8 @@ const runtimes = {
|
|
|
6421
6577
|
"evidenceClass": "source-grounded",
|
|
6422
6578
|
"requiresBinaries": [],
|
|
6423
6579
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.codex",
|
|
6580
|
+
"contextWindowTokens": 272000,
|
|
6581
|
+
"contextWindowConfigKey": "review.context_window_tokens.codex",
|
|
6424
6582
|
"modelConfigKey": "review.models.codex",
|
|
6425
6583
|
"effortConfigKey": "review.effort.codex",
|
|
6426
6584
|
"defaultEffort": "high",
|
|
@@ -6435,7 +6593,12 @@ const runtimes = {
|
|
|
6435
6593
|
"review.max_prompt_tokens_per_reviewer.codex": {
|
|
6436
6594
|
"type": "number",
|
|
6437
6595
|
"default": -1,
|
|
6438
|
-
"description": "Prompt-token budget for the Codex reviewer lane. Unset is -1, a sentinel
|
|
6596
|
+
"description": "Prompt-token budget for the Codex reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
6597
|
+
},
|
|
6598
|
+
"review.context_window_tokens.codex": {
|
|
6599
|
+
"type": "number",
|
|
6600
|
+
"default": -1,
|
|
6601
|
+
"description": "Context window in tokens used to derive the default prompt cap for the codex reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 272000 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
6439
6602
|
},
|
|
6440
6603
|
"review.timeouts.codex": {
|
|
6441
6604
|
"type": "number",
|
|
@@ -6452,7 +6615,7 @@ const runtimes = {
|
|
|
6452
6615
|
"copilot": {
|
|
6453
6616
|
"id": "copilot",
|
|
6454
6617
|
"role": "runtime",
|
|
6455
|
-
"version": "1.
|
|
6618
|
+
"version": "1.20.0",
|
|
6456
6619
|
"title": "GitHub Copilot",
|
|
6457
6620
|
"description": "GitHub Copilot (VS Code) — markdown config format; copilot-inline hook surface; no hook events emitted; flat skill nesting (unconfirmed recursive loader); tier-2 support.",
|
|
6458
6621
|
"tier": "core",
|
|
@@ -6554,7 +6717,7 @@ const runtimes = {
|
|
|
6554
6717
|
"cursor": {
|
|
6555
6718
|
"id": "cursor",
|
|
6556
6719
|
"role": "runtime",
|
|
6557
|
-
"version": "1.
|
|
6720
|
+
"version": "1.20.0",
|
|
6558
6721
|
"title": "Cursor",
|
|
6559
6722
|
"description": "Cursor IDE — skills-only workflow surface; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
|
|
6560
6723
|
"tier": "core",
|
|
@@ -6703,6 +6866,8 @@ const runtimes = {
|
|
|
6703
6866
|
"evidenceClass": "source-grounded",
|
|
6704
6867
|
"requiresBinaries": [],
|
|
6705
6868
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.cursor",
|
|
6869
|
+
"contextWindowTokens": null,
|
|
6870
|
+
"contextWindowConfigKey": "review.context_window_tokens.cursor",
|
|
6706
6871
|
"modelConfigKey": "review.models.cursor",
|
|
6707
6872
|
"effortConfigKey": null,
|
|
6708
6873
|
"defaultEffort": null,
|
|
@@ -6717,14 +6882,19 @@ const runtimes = {
|
|
|
6717
6882
|
"review.max_prompt_tokens_per_reviewer.cursor": {
|
|
6718
6883
|
"type": "number",
|
|
6719
6884
|
"default": -1,
|
|
6720
|
-
"description": "Prompt-token budget for the Cursor reviewer lane. Unset is -1, a sentinel
|
|
6885
|
+
"description": "Prompt-token budget for the Cursor reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
6886
|
+
},
|
|
6887
|
+
"review.context_window_tokens.cursor": {
|
|
6888
|
+
"type": "number",
|
|
6889
|
+
"default": -1,
|
|
6890
|
+
"description": "Context window in tokens used to derive the default prompt cap for the cursor reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
6721
6891
|
}
|
|
6722
6892
|
}
|
|
6723
6893
|
},
|
|
6724
6894
|
"hermes": {
|
|
6725
6895
|
"id": "hermes",
|
|
6726
6896
|
"role": "runtime",
|
|
6727
|
-
"version": "1.
|
|
6897
|
+
"version": "1.20.0",
|
|
6728
6898
|
"title": "Hermes Agent",
|
|
6729
6899
|
"description": "Hermes Agent (NousResearch) — skills nest under skills/gsd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
6730
6900
|
"tier": "core",
|
|
@@ -6843,7 +7013,7 @@ const runtimes = {
|
|
|
6843
7013
|
"kilo": {
|
|
6844
7014
|
"id": "kilo",
|
|
6845
7015
|
"role": "runtime",
|
|
6846
|
-
"version": "1.
|
|
7016
|
+
"version": "1.20.0",
|
|
6847
7017
|
"title": "Kilo Code",
|
|
6848
7018
|
"description": "Kilo Code — XDG-based config dir; global skills at ~/.kilo/skills (separate from XDG config); flat command/ + skills artifact layout; no lifecycle hook registration; tier-2 support.",
|
|
6849
7019
|
"tier": "core",
|
|
@@ -6977,7 +7147,7 @@ const runtimes = {
|
|
|
6977
7147
|
"kimi": {
|
|
6978
7148
|
"id": "kimi",
|
|
6979
7149
|
"role": "runtime",
|
|
6980
|
-
"version": "1.
|
|
7150
|
+
"version": "1.20.0",
|
|
6981
7151
|
"title": "Kimi CLI",
|
|
6982
7152
|
"description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.",
|
|
6983
7153
|
"tier": "core",
|
|
@@ -7087,7 +7257,7 @@ const runtimes = {
|
|
|
7087
7257
|
"kimi-code": {
|
|
7088
7258
|
"id": "kimi-code",
|
|
7089
7259
|
"role": "runtime",
|
|
7090
|
-
"version": "1.
|
|
7260
|
+
"version": "1.20.0",
|
|
7091
7261
|
"title": "Kimi Code CLI",
|
|
7092
7262
|
"description": "Kimi Code CLI (Moonshot AI, Node) — Agent Skills auto-discovered at ~/.kimi-code/skills; global AGENTS.md at ~/.kimi-code/AGENTS.md; native config.toml + [[hooks]] bus; three built-in subagents (coder/explore/plan), NO custom named subagents; background dispatch; tier-2 support. Distinct from Python kimi-cli (the 'kimi' capability) per ADR-1239 EoS — Kimi Code cannot dispatch named subagents so the kimi-agents YAML layout does NOT apply; persona injection rides the existing ${AGENT_SKILLS_*} workflow fallback. Install-layout, agent-install-check, and install-time decision (kimi vs kimi-code) land in follow-up PRs; this descriptor is the EoS foundation.",
|
|
7093
7263
|
"tier": "core",
|
|
@@ -7232,6 +7402,8 @@ const runtimes = {
|
|
|
7232
7402
|
"evidenceClass": "source-grounded",
|
|
7233
7403
|
"requiresBinaries": [],
|
|
7234
7404
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.kimi-code",
|
|
7405
|
+
"contextWindowTokens": 262144,
|
|
7406
|
+
"contextWindowConfigKey": "review.context_window_tokens.kimi-code",
|
|
7235
7407
|
"modelConfigKey": "review.models.kimi-code",
|
|
7236
7408
|
"effortConfigKey": null,
|
|
7237
7409
|
"defaultEffort": null,
|
|
@@ -7246,7 +7418,12 @@ const runtimes = {
|
|
|
7246
7418
|
"review.max_prompt_tokens_per_reviewer.kimi-code": {
|
|
7247
7419
|
"type": "number",
|
|
7248
7420
|
"default": -1,
|
|
7249
|
-
"description": "Prompt-token budget for the Kimi Code reviewer lane. Unset is -1, a sentinel
|
|
7421
|
+
"description": "Prompt-token budget for the Kimi Code reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
7422
|
+
},
|
|
7423
|
+
"review.context_window_tokens.kimi-code": {
|
|
7424
|
+
"type": "number",
|
|
7425
|
+
"default": -1,
|
|
7426
|
+
"description": "Context window in tokens used to derive the default prompt cap for the kimi-code reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 262144 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
7250
7427
|
},
|
|
7251
7428
|
"review.timeouts.kimi-code": {
|
|
7252
7429
|
"type": "number",
|
|
@@ -7258,7 +7435,7 @@ const runtimes = {
|
|
|
7258
7435
|
"opencode": {
|
|
7259
7436
|
"id": "opencode",
|
|
7260
7437
|
"role": "runtime",
|
|
7261
|
-
"version": "1.
|
|
7438
|
+
"version": "1.20.0",
|
|
7262
7439
|
"title": "OpenCode",
|
|
7263
7440
|
"description": "OpenCode — XDG-based config dir; flat commands/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
|
|
7264
7441
|
"tier": "core",
|
|
@@ -7431,6 +7608,8 @@ const runtimes = {
|
|
|
7431
7608
|
"evidenceClass": "source-grounded",
|
|
7432
7609
|
"requiresBinaries": [],
|
|
7433
7610
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.opencode",
|
|
7611
|
+
"contextWindowTokens": null,
|
|
7612
|
+
"contextWindowConfigKey": "review.context_window_tokens.opencode",
|
|
7434
7613
|
"modelConfigKey": "review.models.opencode",
|
|
7435
7614
|
"effortConfigKey": "review.effort.opencode",
|
|
7436
7615
|
"defaultEffort": "high",
|
|
@@ -7445,7 +7624,12 @@ const runtimes = {
|
|
|
7445
7624
|
"review.max_prompt_tokens_per_reviewer.opencode": {
|
|
7446
7625
|
"type": "number",
|
|
7447
7626
|
"default": -1,
|
|
7448
|
-
"description": "Prompt-token budget for the OpenCode reviewer lane. Unset is -1, a sentinel
|
|
7627
|
+
"description": "Prompt-token budget for the OpenCode reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
7628
|
+
},
|
|
7629
|
+
"review.context_window_tokens.opencode": {
|
|
7630
|
+
"type": "number",
|
|
7631
|
+
"default": -1,
|
|
7632
|
+
"description": "Context window in tokens used to derive the default prompt cap for the opencode reviewer lane at 65% of the window. Unset is -1: use none (no declared window, so no derived cap); 0 disables the derived cap; a positive number overrides the window."
|
|
7449
7633
|
},
|
|
7450
7634
|
"review.timeouts.opencode": {
|
|
7451
7635
|
"type": "number",
|
|
@@ -7462,7 +7646,7 @@ const runtimes = {
|
|
|
7462
7646
|
"pi": {
|
|
7463
7647
|
"id": "pi",
|
|
7464
7648
|
"role": "runtime",
|
|
7465
|
-
"version": "1.
|
|
7649
|
+
"version": "1.20.0",
|
|
7466
7650
|
"title": "pi",
|
|
7467
7651
|
"description": "pi (pi.dev) — node-runtime programmatic-CLI (managed pi 1.3.0 install); TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.",
|
|
7468
7652
|
"tier": "core",
|
|
@@ -7573,7 +7757,7 @@ const runtimes = {
|
|
|
7573
7757
|
"qwen": {
|
|
7574
7758
|
"id": "qwen",
|
|
7575
7759
|
"role": "runtime",
|
|
7576
|
-
"version": "1.
|
|
7760
|
+
"version": "1.20.0",
|
|
7577
7761
|
"title": "Qwen Code",
|
|
7578
7762
|
"description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
7579
7763
|
"tier": "core",
|
|
@@ -7711,6 +7895,8 @@ const runtimes = {
|
|
|
7711
7895
|
"evidenceClass": "source-grounded",
|
|
7712
7896
|
"requiresBinaries": [],
|
|
7713
7897
|
"promptBudgetKey": "review.max_prompt_tokens_per_reviewer.qwen",
|
|
7898
|
+
"contextWindowTokens": 131072,
|
|
7899
|
+
"contextWindowConfigKey": "review.context_window_tokens.qwen",
|
|
7714
7900
|
"modelConfigKey": null,
|
|
7715
7901
|
"effortConfigKey": null,
|
|
7716
7902
|
"defaultEffort": null,
|
|
@@ -7720,14 +7906,19 @@ const runtimes = {
|
|
|
7720
7906
|
"review.max_prompt_tokens_per_reviewer.qwen": {
|
|
7721
7907
|
"type": "number",
|
|
7722
7908
|
"default": -1,
|
|
7723
|
-
"description": "Prompt-token budget for the Qwen Code reviewer lane. Unset is -1, a sentinel
|
|
7909
|
+
"description": "Prompt-token budget for the Qwen Code reviewer lane. Unset is -1, a sentinel that inherits the global cap and then the lane's context-window default; 0 is a legitimate value meaning \"no prompt cap for this lane\", so it cannot double as \"not configured\"."
|
|
7910
|
+
},
|
|
7911
|
+
"review.context_window_tokens.qwen": {
|
|
7912
|
+
"type": "number",
|
|
7913
|
+
"default": -1,
|
|
7914
|
+
"description": "Context window in tokens used to derive the default prompt cap for the qwen reviewer lane at 65% of the window. Unset is -1: use the lane's declared window of 131072 tokens; 0 disables the derived cap; a positive number overrides the window."
|
|
7724
7915
|
}
|
|
7725
7916
|
}
|
|
7726
7917
|
},
|
|
7727
7918
|
"trae": {
|
|
7728
7919
|
"id": "trae",
|
|
7729
7920
|
"role": "runtime",
|
|
7730
|
-
"version": "1.
|
|
7921
|
+
"version": "1.20.0",
|
|
7731
7922
|
"title": "Trae IDE",
|
|
7732
7923
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
7733
7924
|
"tier": "core",
|
|
@@ -7826,7 +8017,7 @@ const runtimes = {
|
|
|
7826
8017
|
"vscode": {
|
|
7827
8018
|
"id": "vscode",
|
|
7828
8019
|
"role": "runtime",
|
|
7829
|
-
"version": "1.
|
|
8020
|
+
"version": "1.20.0",
|
|
7830
8021
|
"title": "VS Code",
|
|
7831
8022
|
"description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).",
|
|
7832
8023
|
"tier": "core",
|
|
@@ -7884,7 +8075,7 @@ const runtimes = {
|
|
|
7884
8075
|
"windsurf": {
|
|
7885
8076
|
"id": "windsurf",
|
|
7886
8077
|
"role": "runtime",
|
|
7887
|
-
"version": "1.
|
|
8078
|
+
"version": "1.20.0",
|
|
7888
8079
|
"title": "Windsurf",
|
|
7889
8080
|
"description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.",
|
|
7890
8081
|
"tier": "core",
|
|
@@ -7977,7 +8168,7 @@ const runtimes = {
|
|
|
7977
8168
|
"zcode": {
|
|
7978
8169
|
"id": "zcode",
|
|
7979
8170
|
"role": "runtime",
|
|
7980
|
-
"version": "1.
|
|
8171
|
+
"version": "1.20.0",
|
|
7981
8172
|
"title": "ZCode",
|
|
7982
8173
|
"description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills/<name>/SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.",
|
|
7983
8174
|
"tier": "core",
|