@opengsd/gsd-core 1.7.0-rc.6 → 1.7.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-executor.md +2 -1
- package/agents/gsd-security-auditor.md +13 -15
- package/bin/install.js +5 -4
- package/commands/gsd/mempalace-capture.md +27 -1
- package/commands/gsd/surface.md +6 -6
- package/gsd-core/bin/gsd-tools.cjs +63 -2
- package/gsd-core/bin/lib/api-coverage.cjs +3 -4
- package/gsd-core/bin/lib/audit.cjs +7 -6
- package/gsd-core/bin/lib/capability-registry.cjs +57 -57
- package/gsd-core/bin/lib/check-command-router.cjs +1 -1
- package/gsd-core/bin/lib/clock.cjs +19 -0
- package/gsd-core/bin/lib/commands.cjs +48 -9
- package/gsd-core/bin/lib/config-loader.cjs +6 -2
- package/gsd-core/bin/lib/config.cjs +12 -0
- package/gsd-core/bin/lib/core-utils.cjs +8 -2
- package/gsd-core/bin/lib/drift.cjs +4 -4
- package/gsd-core/bin/lib/frontmatter.cjs +22 -0
- package/gsd-core/bin/lib/gsd2-import.cjs +2 -1
- package/gsd-core/bin/lib/init.cjs +27 -13
- package/gsd-core/bin/lib/install-engine.cjs +3 -2
- package/gsd-core/bin/lib/installer-migration-authoring.cjs +2 -1
- package/gsd-core/bin/lib/installer-migrations.cjs +1 -1
- package/gsd-core/bin/lib/markdown-sectionizer.cjs +342 -0
- package/gsd-core/bin/lib/markdown-table.cjs +698 -0
- package/gsd-core/bin/lib/milestone.cjs +217 -31
- package/gsd-core/bin/lib/phase-command-router.cjs +50 -2
- package/gsd-core/bin/lib/phase-lifecycle.cjs +62 -36
- package/gsd-core/bin/lib/phase-locator.cjs +23 -2
- package/gsd-core/bin/lib/phase.cjs +436 -61
- package/gsd-core/bin/lib/plan-scan.cjs +3 -0
- package/gsd-core/bin/lib/roadmap-parser.cjs +218 -13
- package/gsd-core/bin/lib/roadmap.cjs +100 -49
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +7 -6
- package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +3 -2
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +2 -1
- package/gsd-core/bin/lib/runtime-hooks-surface.cjs +25 -17
- package/gsd-core/bin/lib/schema-detect.cjs +2 -1
- package/gsd-core/bin/lib/security.cjs +1 -1
- package/gsd-core/bin/lib/shell-command-projection.cjs +61 -25
- package/gsd-core/bin/lib/smart-entry.cjs +4 -3
- package/gsd-core/bin/lib/state-transition.cjs +100 -45
- package/gsd-core/bin/lib/state.cjs +391 -126
- package/gsd-core/bin/lib/surface.cjs +2 -2
- package/gsd-core/bin/lib/template.cjs +2 -1
- package/gsd-core/bin/lib/uat.cjs +54 -8
- package/gsd-core/bin/lib/ui-safety-gate.cjs +23 -1
- package/gsd-core/bin/lib/verify.cjs +4 -3
- package/gsd-core/bin/lib/workstream.cjs +3 -2
- package/gsd-core/bin/lib/worktree-safety.cjs +1 -1
- package/gsd-core/bin/lib/write-set.cjs +38 -0
- package/gsd-core/bin/shared/config-schema.manifest.json +2 -0
- package/gsd-core/references/checkpoints.md +12 -0
- package/gsd-core/workflows/add-tests.md +1 -1
- package/gsd-core/workflows/debug.md +2 -0
- package/gsd-core/workflows/execute-phase.md +5 -3
- package/gsd-core/workflows/fast.md +8 -22
- package/gsd-core/workflows/progress.md +2 -2
- package/gsd-core/workflows/quick.md +2 -0
- package/gsd-core/workflows/review.md +42 -3
- package/gsd-core/workflows/secure-phase.md +1 -1
- package/gsd-core/workflows/ship.md +8 -2
- package/gsd-core/workflows/spec-phase.md +1 -1
- package/gsd-core/workflows/transition.md +1 -1
- package/hooks/dist/gsd-statusline.js +164 -14
- package/hooks/gsd-statusline.js +164 -14
- package/package.json +4 -2
- package/scripts/ci-test-scope.cjs +39 -1
- package/scripts/gen-golden-install-parity-zcode.cjs +35 -45
- package/scripts/gen-install-tree-fixtures.cjs +75 -0
- package/scripts/lint-allow-test-rule-refs.allowlist.json +0 -1
- package/scripts/lint-table-schema-drift.cjs +157 -0
- package/skills/gsd-mempalace-capture/SKILL.md +27 -1
- package/skills/gsd-surface/SKILL.md +6 -6
- 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.7.0
|
|
13
|
+
"version": "1.7.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.7.0
|
|
98
|
+
"version": "1.7.0",
|
|
99
99
|
"title": "Antigravity",
|
|
100
100
|
"description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.",
|
|
101
101
|
"tier": "core",
|
|
@@ -196,7 +196,7 @@ const capabilities = {
|
|
|
196
196
|
"assumption-delta": {
|
|
197
197
|
"id": "assumption-delta",
|
|
198
198
|
"role": "feature",
|
|
199
|
-
"version": "1.7.0
|
|
199
|
+
"version": "1.7.0",
|
|
200
200
|
"title": "Assumption-delta architecture checkpoint",
|
|
201
201
|
"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.",
|
|
202
202
|
"tier": "full",
|
|
@@ -242,7 +242,7 @@ const capabilities = {
|
|
|
242
242
|
"audit": {
|
|
243
243
|
"id": "audit",
|
|
244
244
|
"role": "feature",
|
|
245
|
-
"version": "1.7.0
|
|
245
|
+
"version": "1.7.0",
|
|
246
246
|
"title": "Audit",
|
|
247
247
|
"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).",
|
|
248
248
|
"tier": "full",
|
|
@@ -279,7 +279,7 @@ const capabilities = {
|
|
|
279
279
|
"augment": {
|
|
280
280
|
"id": "augment",
|
|
281
281
|
"role": "runtime",
|
|
282
|
-
"version": "1.7.0
|
|
282
|
+
"version": "1.7.0",
|
|
283
283
|
"title": "Augment Code",
|
|
284
284
|
"description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
285
285
|
"tier": "core",
|
|
@@ -386,7 +386,7 @@ const capabilities = {
|
|
|
386
386
|
"claude": {
|
|
387
387
|
"id": "claude",
|
|
388
388
|
"role": "runtime",
|
|
389
|
-
"version": "1.7.0
|
|
389
|
+
"version": "1.7.0",
|
|
390
390
|
"title": "Claude Code",
|
|
391
391
|
"description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
|
|
392
392
|
"tier": "core",
|
|
@@ -491,7 +491,7 @@ const capabilities = {
|
|
|
491
491
|
"claude-orchestration": {
|
|
492
492
|
"id": "claude-orchestration",
|
|
493
493
|
"role": "feature",
|
|
494
|
-
"version": "1.7.0
|
|
494
|
+
"version": "1.7.0",
|
|
495
495
|
"title": "Claude orchestration (Workflow backend)",
|
|
496
496
|
"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.",
|
|
497
497
|
"tier": "full",
|
|
@@ -578,7 +578,7 @@ const capabilities = {
|
|
|
578
578
|
"cline": {
|
|
579
579
|
"id": "cline",
|
|
580
580
|
"role": "runtime",
|
|
581
|
-
"version": "1.7.0
|
|
581
|
+
"version": "1.7.0",
|
|
582
582
|
"title": "Cline",
|
|
583
583
|
"description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
|
|
584
584
|
"tier": "core",
|
|
@@ -647,7 +647,7 @@ const capabilities = {
|
|
|
647
647
|
"code-review": {
|
|
648
648
|
"id": "code-review",
|
|
649
649
|
"role": "feature",
|
|
650
|
-
"version": "1.7.0
|
|
650
|
+
"version": "1.7.0",
|
|
651
651
|
"title": "Code review",
|
|
652
652
|
"description": "Source-file code review and review-fix workflow support for completed execution work.",
|
|
653
653
|
"tier": "full",
|
|
@@ -708,7 +708,7 @@ const capabilities = {
|
|
|
708
708
|
"codebuddy": {
|
|
709
709
|
"id": "codebuddy",
|
|
710
710
|
"role": "runtime",
|
|
711
|
-
"version": "1.7.0
|
|
711
|
+
"version": "1.7.0",
|
|
712
712
|
"title": "CodeBuddy",
|
|
713
713
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
714
714
|
"tier": "core",
|
|
@@ -819,7 +819,7 @@ const capabilities = {
|
|
|
819
819
|
"codex": {
|
|
820
820
|
"id": "codex",
|
|
821
821
|
"role": "runtime",
|
|
822
|
-
"version": "1.7.0
|
|
822
|
+
"version": "1.7.0",
|
|
823
823
|
"title": "OpenAI Codex CLI",
|
|
824
824
|
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
|
|
825
825
|
"tier": "core",
|
|
@@ -904,7 +904,7 @@ const capabilities = {
|
|
|
904
904
|
"copilot": {
|
|
905
905
|
"id": "copilot",
|
|
906
906
|
"role": "runtime",
|
|
907
|
-
"version": "1.7.0
|
|
907
|
+
"version": "1.7.0",
|
|
908
908
|
"title": "GitHub Copilot",
|
|
909
909
|
"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.",
|
|
910
910
|
"tier": "core",
|
|
@@ -997,7 +997,7 @@ const capabilities = {
|
|
|
997
997
|
"cursor": {
|
|
998
998
|
"id": "cursor",
|
|
999
999
|
"role": "runtime",
|
|
1000
|
-
"version": "1.7.0
|
|
1000
|
+
"version": "1.7.0",
|
|
1001
1001
|
"title": "Cursor",
|
|
1002
1002
|
"description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
|
|
1003
1003
|
"tier": "core",
|
|
@@ -1118,7 +1118,7 @@ const capabilities = {
|
|
|
1118
1118
|
"drift": {
|
|
1119
1119
|
"id": "drift",
|
|
1120
1120
|
"role": "feature",
|
|
1121
|
-
"version": "1.7.0
|
|
1121
|
+
"version": "1.7.0",
|
|
1122
1122
|
"title": "Drift detection gates",
|
|
1123
1123
|
"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 not reflected in STRUCTURE.md). 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.",
|
|
1124
1124
|
"tier": "full",
|
|
@@ -1196,7 +1196,7 @@ const capabilities = {
|
|
|
1196
1196
|
"external-job": {
|
|
1197
1197
|
"id": "external-job",
|
|
1198
1198
|
"role": "feature",
|
|
1199
|
-
"version": "1.7.0
|
|
1199
|
+
"version": "1.7.0",
|
|
1200
1200
|
"title": "Async external-job scheduler adapter",
|
|
1201
1201
|
"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 execute:wave:pre, but execute-phase.md only dispatches execute:wave:post today (wave:pre is declared in the loop host contract but not rendered); wiring wave:pre dispatch is a core-loop change #1164 explicitly puts out of scope, so this capability registers at wave:post and the executor honors the runtime_budget classification guidance before running any tagged task. 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).",
|
|
1202
1202
|
"tier": "full",
|
|
@@ -1279,7 +1279,7 @@ const capabilities = {
|
|
|
1279
1279
|
"gap-analysis": {
|
|
1280
1280
|
"id": "gap-analysis",
|
|
1281
1281
|
"role": "feature",
|
|
1282
|
-
"version": "1.7.0
|
|
1282
|
+
"version": "1.7.0",
|
|
1283
1283
|
"title": "Post-planning gap analysis",
|
|
1284
1284
|
"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.",
|
|
1285
1285
|
"tier": "standard",
|
|
@@ -1320,7 +1320,7 @@ const capabilities = {
|
|
|
1320
1320
|
"graphify": {
|
|
1321
1321
|
"id": "graphify",
|
|
1322
1322
|
"role": "feature",
|
|
1323
|
-
"version": "1.7.0
|
|
1323
|
+
"version": "1.7.0",
|
|
1324
1324
|
"title": "Knowledge graph",
|
|
1325
1325
|
"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.",
|
|
1326
1326
|
"tier": "full",
|
|
@@ -1361,7 +1361,7 @@ const capabilities = {
|
|
|
1361
1361
|
"hermes": {
|
|
1362
1362
|
"id": "hermes",
|
|
1363
1363
|
"role": "runtime",
|
|
1364
|
-
"version": "1.7.0
|
|
1364
|
+
"version": "1.7.0",
|
|
1365
1365
|
"title": "Hermes Agent",
|
|
1366
1366
|
"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.",
|
|
1367
1367
|
"tier": "core",
|
|
@@ -1450,7 +1450,7 @@ const capabilities = {
|
|
|
1450
1450
|
"intel": {
|
|
1451
1451
|
"id": "intel",
|
|
1452
1452
|
"role": "feature",
|
|
1453
|
-
"version": "1.7.0
|
|
1453
|
+
"version": "1.7.0",
|
|
1454
1454
|
"title": "Codebase intelligence",
|
|
1455
1455
|
"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`.",
|
|
1456
1456
|
"tier": "full",
|
|
@@ -1502,7 +1502,7 @@ const capabilities = {
|
|
|
1502
1502
|
"kilo": {
|
|
1503
1503
|
"id": "kilo",
|
|
1504
1504
|
"role": "runtime",
|
|
1505
|
-
"version": "1.7.0
|
|
1505
|
+
"version": "1.7.0",
|
|
1506
1506
|
"title": "Kilo Code",
|
|
1507
1507
|
"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.",
|
|
1508
1508
|
"tier": "core",
|
|
@@ -1610,7 +1610,7 @@ const capabilities = {
|
|
|
1610
1610
|
"kimi": {
|
|
1611
1611
|
"id": "kimi",
|
|
1612
1612
|
"role": "runtime",
|
|
1613
|
-
"version": "1.7.0
|
|
1613
|
+
"version": "1.7.0",
|
|
1614
1614
|
"title": "Kimi CLI",
|
|
1615
1615
|
"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.",
|
|
1616
1616
|
"tier": "core",
|
|
@@ -1698,7 +1698,7 @@ const capabilities = {
|
|
|
1698
1698
|
"mempalace": {
|
|
1699
1699
|
"id": "mempalace",
|
|
1700
1700
|
"role": "feature",
|
|
1701
|
-
"version": "1.7.0
|
|
1701
|
+
"version": "1.7.0",
|
|
1702
1702
|
"title": "MemPalace memory",
|
|
1703
1703
|
"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.",
|
|
1704
1704
|
"tier": "full",
|
|
@@ -1859,7 +1859,7 @@ const capabilities = {
|
|
|
1859
1859
|
"into": "verifier",
|
|
1860
1860
|
"fragment": {
|
|
1861
1861
|
"path": "fragments/capture-problems.md",
|
|
1862
|
-
"inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: `mempalace mine` / `mempalace
|
|
1862
|
+
"inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: stage the artifact under the `problems/` folder and run `mempalace mine` (no `--room` flag — see [CLI reference](https://mempalaceofficial.com/reference/cli.html); room assignment is via `detect_room()` folder-path match per the [mining guide](https://mempalaceofficial.com/guide/mining.html); use the same staging pattern documented in `gsd-mempalace-capture` Step 3). Include provenance (`source_file`, phase id).\n4. **Mirror the KG fact** when `mempalace.mirror_kg` is on: add `(<bug>, fixed_by, <fix>)` with `valid_from` = the phase date via `mempalace_kg_add`.\n5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; GSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.\n\nCaptures are idempotent: deterministic drawer IDs + `check_duplicate` mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.\n"
|
|
1863
1863
|
},
|
|
1864
1864
|
"produces": [],
|
|
1865
1865
|
"consumes": [],
|
|
@@ -1872,7 +1872,7 @@ const capabilities = {
|
|
|
1872
1872
|
"nyquist": {
|
|
1873
1873
|
"id": "nyquist",
|
|
1874
1874
|
"role": "feature",
|
|
1875
|
-
"version": "1.7.0
|
|
1875
|
+
"version": "1.7.0",
|
|
1876
1876
|
"title": "Nyquist validation",
|
|
1877
1877
|
"description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
|
|
1878
1878
|
"tier": "full",
|
|
@@ -1922,7 +1922,7 @@ const capabilities = {
|
|
|
1922
1922
|
"opencode": {
|
|
1923
1923
|
"id": "opencode",
|
|
1924
1924
|
"role": "runtime",
|
|
1925
|
-
"version": "1.7.0
|
|
1925
|
+
"version": "1.7.0",
|
|
1926
1926
|
"title": "OpenCode",
|
|
1927
1927
|
"description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
|
|
1928
1928
|
"tier": "core",
|
|
@@ -2028,7 +2028,7 @@ const capabilities = {
|
|
|
2028
2028
|
"pattern-mapper": {
|
|
2029
2029
|
"id": "pattern-mapper",
|
|
2030
2030
|
"role": "feature",
|
|
2031
|
-
"version": "1.7.0
|
|
2031
|
+
"version": "1.7.0",
|
|
2032
2032
|
"title": "Pattern mapping",
|
|
2033
2033
|
"description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
|
|
2034
2034
|
"tier": "full",
|
|
@@ -2082,7 +2082,7 @@ const capabilities = {
|
|
|
2082
2082
|
"pi": {
|
|
2083
2083
|
"id": "pi",
|
|
2084
2084
|
"role": "runtime",
|
|
2085
|
-
"version": "1.7.0
|
|
2085
|
+
"version": "1.7.0",
|
|
2086
2086
|
"title": "pi",
|
|
2087
2087
|
"description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.cjs; no shared-settings hook surface; tier-2 support.",
|
|
2088
2088
|
"tier": "core",
|
|
@@ -2142,7 +2142,7 @@ const capabilities = {
|
|
|
2142
2142
|
"profile-pipeline": {
|
|
2143
2143
|
"id": "profile-pipeline",
|
|
2144
2144
|
"role": "feature",
|
|
2145
|
-
"version": "1.7.0
|
|
2145
|
+
"version": "1.7.0",
|
|
2146
2146
|
"title": "Developer profiling pipeline",
|
|
2147
2147
|
"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.",
|
|
2148
2148
|
"tier": "full",
|
|
@@ -2219,7 +2219,7 @@ const capabilities = {
|
|
|
2219
2219
|
"qwen": {
|
|
2220
2220
|
"id": "qwen",
|
|
2221
2221
|
"role": "runtime",
|
|
2222
|
-
"version": "1.7.0
|
|
2222
|
+
"version": "1.7.0",
|
|
2223
2223
|
"title": "Qwen Code",
|
|
2224
2224
|
"description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
2225
2225
|
"tier": "core",
|
|
@@ -2324,7 +2324,7 @@ const capabilities = {
|
|
|
2324
2324
|
"research": {
|
|
2325
2325
|
"id": "research",
|
|
2326
2326
|
"role": "feature",
|
|
2327
|
-
"version": "1.7.0
|
|
2327
|
+
"version": "1.7.0",
|
|
2328
2328
|
"title": "Phase research",
|
|
2329
2329
|
"description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
|
|
2330
2330
|
"tier": "standard",
|
|
@@ -2376,7 +2376,7 @@ const capabilities = {
|
|
|
2376
2376
|
"schema-gate": {
|
|
2377
2377
|
"id": "schema-gate",
|
|
2378
2378
|
"role": "feature",
|
|
2379
|
-
"version": "1.7.0
|
|
2379
|
+
"version": "1.7.0",
|
|
2380
2380
|
"title": "Schema push detection gate",
|
|
2381
2381
|
"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.",
|
|
2382
2382
|
"tier": "full",
|
|
@@ -2422,7 +2422,7 @@ const capabilities = {
|
|
|
2422
2422
|
"security": {
|
|
2423
2423
|
"id": "security",
|
|
2424
2424
|
"role": "feature",
|
|
2425
|
-
"version": "1.7.0
|
|
2425
|
+
"version": "1.7.0",
|
|
2426
2426
|
"title": "Security enforcement",
|
|
2427
2427
|
"description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
|
|
2428
2428
|
"tier": "full",
|
|
@@ -2521,7 +2521,7 @@ const capabilities = {
|
|
|
2521
2521
|
"tdd": {
|
|
2522
2522
|
"id": "tdd",
|
|
2523
2523
|
"role": "feature",
|
|
2524
|
-
"version": "1.7.0
|
|
2524
|
+
"version": "1.7.0",
|
|
2525
2525
|
"title": "Test-driven development",
|
|
2526
2526
|
"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.",
|
|
2527
2527
|
"tier": "full",
|
|
@@ -2574,7 +2574,7 @@ const capabilities = {
|
|
|
2574
2574
|
"trae": {
|
|
2575
2575
|
"id": "trae",
|
|
2576
2576
|
"role": "runtime",
|
|
2577
|
-
"version": "1.7.0
|
|
2577
|
+
"version": "1.7.0",
|
|
2578
2578
|
"title": "Trae IDE",
|
|
2579
2579
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
2580
2580
|
"tier": "core",
|
|
@@ -2664,7 +2664,7 @@ const capabilities = {
|
|
|
2664
2664
|
"ui": {
|
|
2665
2665
|
"id": "ui",
|
|
2666
2666
|
"role": "feature",
|
|
2667
|
-
"version": "1.7.0
|
|
2667
|
+
"version": "1.7.0",
|
|
2668
2668
|
"title": "UI design contracts",
|
|
2669
2669
|
"description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
|
|
2670
2670
|
"tier": "full",
|
|
@@ -2759,7 +2759,7 @@ const capabilities = {
|
|
|
2759
2759
|
"vscode": {
|
|
2760
2760
|
"id": "vscode",
|
|
2761
2761
|
"role": "runtime",
|
|
2762
|
-
"version": "1.7.0
|
|
2762
|
+
"version": "1.7.0",
|
|
2763
2763
|
"title": "VS Code",
|
|
2764
2764
|
"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).",
|
|
2765
2765
|
"tier": "core",
|
|
@@ -2810,7 +2810,7 @@ const capabilities = {
|
|
|
2810
2810
|
"windsurf": {
|
|
2811
2811
|
"id": "windsurf",
|
|
2812
2812
|
"role": "runtime",
|
|
2813
|
-
"version": "1.7.0
|
|
2813
|
+
"version": "1.7.0",
|
|
2814
2814
|
"title": "Windsurf",
|
|
2815
2815
|
"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.",
|
|
2816
2816
|
"tier": "core",
|
|
@@ -2895,7 +2895,7 @@ const capabilities = {
|
|
|
2895
2895
|
"zcode": {
|
|
2896
2896
|
"id": "zcode",
|
|
2897
2897
|
"role": "runtime",
|
|
2898
|
-
"version": "1.7.0
|
|
2898
|
+
"version": "1.7.0",
|
|
2899
2899
|
"title": "ZCode",
|
|
2900
2900
|
"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.",
|
|
2901
2901
|
"tier": "core",
|
|
@@ -3378,7 +3378,7 @@ const byLoopPoint = {
|
|
|
3378
3378
|
"into": "verifier",
|
|
3379
3379
|
"fragment": {
|
|
3380
3380
|
"path": "fragments/capture-problems.md",
|
|
3381
|
-
"inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: `mempalace mine` / `mempalace
|
|
3381
|
+
"inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: stage the artifact under the `problems/` folder and run `mempalace mine` (no `--room` flag — see [CLI reference](https://mempalaceofficial.com/reference/cli.html); room assignment is via `detect_room()` folder-path match per the [mining guide](https://mempalaceofficial.com/guide/mining.html); use the same staging pattern documented in `gsd-mempalace-capture` Step 3). Include provenance (`source_file`, phase id).\n4. **Mirror the KG fact** when `mempalace.mirror_kg` is on: add `(<bug>, fixed_by, <fix>)` with `valid_from` = the phase date via `mempalace_kg_add`.\n5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; GSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.\n\nCaptures are idempotent: deterministic drawer IDs + `check_duplicate` mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.\n"
|
|
3382
3382
|
},
|
|
3383
3383
|
"produces": [],
|
|
3384
3384
|
"consumes": [],
|
|
@@ -3906,7 +3906,7 @@ const runtimes = {
|
|
|
3906
3906
|
"antigravity": {
|
|
3907
3907
|
"id": "antigravity",
|
|
3908
3908
|
"role": "runtime",
|
|
3909
|
-
"version": "1.7.0
|
|
3909
|
+
"version": "1.7.0",
|
|
3910
3910
|
"title": "Antigravity",
|
|
3911
3911
|
"description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.",
|
|
3912
3912
|
"tier": "core",
|
|
@@ -4007,7 +4007,7 @@ const runtimes = {
|
|
|
4007
4007
|
"augment": {
|
|
4008
4008
|
"id": "augment",
|
|
4009
4009
|
"role": "runtime",
|
|
4010
|
-
"version": "1.7.0
|
|
4010
|
+
"version": "1.7.0",
|
|
4011
4011
|
"title": "Augment Code",
|
|
4012
4012
|
"description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
4013
4013
|
"tier": "core",
|
|
@@ -4114,7 +4114,7 @@ const runtimes = {
|
|
|
4114
4114
|
"claude": {
|
|
4115
4115
|
"id": "claude",
|
|
4116
4116
|
"role": "runtime",
|
|
4117
|
-
"version": "1.7.0
|
|
4117
|
+
"version": "1.7.0",
|
|
4118
4118
|
"title": "Claude Code",
|
|
4119
4119
|
"description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
|
|
4120
4120
|
"tier": "core",
|
|
@@ -4219,7 +4219,7 @@ const runtimes = {
|
|
|
4219
4219
|
"cline": {
|
|
4220
4220
|
"id": "cline",
|
|
4221
4221
|
"role": "runtime",
|
|
4222
|
-
"version": "1.7.0
|
|
4222
|
+
"version": "1.7.0",
|
|
4223
4223
|
"title": "Cline",
|
|
4224
4224
|
"description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
|
|
4225
4225
|
"tier": "core",
|
|
@@ -4288,7 +4288,7 @@ const runtimes = {
|
|
|
4288
4288
|
"codebuddy": {
|
|
4289
4289
|
"id": "codebuddy",
|
|
4290
4290
|
"role": "runtime",
|
|
4291
|
-
"version": "1.7.0
|
|
4291
|
+
"version": "1.7.0",
|
|
4292
4292
|
"title": "CodeBuddy",
|
|
4293
4293
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
4294
4294
|
"tier": "core",
|
|
@@ -4399,7 +4399,7 @@ const runtimes = {
|
|
|
4399
4399
|
"codex": {
|
|
4400
4400
|
"id": "codex",
|
|
4401
4401
|
"role": "runtime",
|
|
4402
|
-
"version": "1.7.0
|
|
4402
|
+
"version": "1.7.0",
|
|
4403
4403
|
"title": "OpenAI Codex CLI",
|
|
4404
4404
|
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
|
|
4405
4405
|
"tier": "core",
|
|
@@ -4484,7 +4484,7 @@ const runtimes = {
|
|
|
4484
4484
|
"copilot": {
|
|
4485
4485
|
"id": "copilot",
|
|
4486
4486
|
"role": "runtime",
|
|
4487
|
-
"version": "1.7.0
|
|
4487
|
+
"version": "1.7.0",
|
|
4488
4488
|
"title": "GitHub Copilot",
|
|
4489
4489
|
"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.",
|
|
4490
4490
|
"tier": "core",
|
|
@@ -4577,7 +4577,7 @@ const runtimes = {
|
|
|
4577
4577
|
"cursor": {
|
|
4578
4578
|
"id": "cursor",
|
|
4579
4579
|
"role": "runtime",
|
|
4580
|
-
"version": "1.7.0
|
|
4580
|
+
"version": "1.7.0",
|
|
4581
4581
|
"title": "Cursor",
|
|
4582
4582
|
"description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
|
|
4583
4583
|
"tier": "core",
|
|
@@ -4698,7 +4698,7 @@ const runtimes = {
|
|
|
4698
4698
|
"hermes": {
|
|
4699
4699
|
"id": "hermes",
|
|
4700
4700
|
"role": "runtime",
|
|
4701
|
-
"version": "1.7.0
|
|
4701
|
+
"version": "1.7.0",
|
|
4702
4702
|
"title": "Hermes Agent",
|
|
4703
4703
|
"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.",
|
|
4704
4704
|
"tier": "core",
|
|
@@ -4787,7 +4787,7 @@ const runtimes = {
|
|
|
4787
4787
|
"kilo": {
|
|
4788
4788
|
"id": "kilo",
|
|
4789
4789
|
"role": "runtime",
|
|
4790
|
-
"version": "1.7.0
|
|
4790
|
+
"version": "1.7.0",
|
|
4791
4791
|
"title": "Kilo Code",
|
|
4792
4792
|
"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.",
|
|
4793
4793
|
"tier": "core",
|
|
@@ -4895,7 +4895,7 @@ const runtimes = {
|
|
|
4895
4895
|
"kimi": {
|
|
4896
4896
|
"id": "kimi",
|
|
4897
4897
|
"role": "runtime",
|
|
4898
|
-
"version": "1.7.0
|
|
4898
|
+
"version": "1.7.0",
|
|
4899
4899
|
"title": "Kimi CLI",
|
|
4900
4900
|
"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.",
|
|
4901
4901
|
"tier": "core",
|
|
@@ -4983,7 +4983,7 @@ const runtimes = {
|
|
|
4983
4983
|
"opencode": {
|
|
4984
4984
|
"id": "opencode",
|
|
4985
4985
|
"role": "runtime",
|
|
4986
|
-
"version": "1.7.0
|
|
4986
|
+
"version": "1.7.0",
|
|
4987
4987
|
"title": "OpenCode",
|
|
4988
4988
|
"description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
|
|
4989
4989
|
"tier": "core",
|
|
@@ -5089,7 +5089,7 @@ const runtimes = {
|
|
|
5089
5089
|
"pi": {
|
|
5090
5090
|
"id": "pi",
|
|
5091
5091
|
"role": "runtime",
|
|
5092
|
-
"version": "1.7.0
|
|
5092
|
+
"version": "1.7.0",
|
|
5093
5093
|
"title": "pi",
|
|
5094
5094
|
"description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.cjs; no shared-settings hook surface; tier-2 support.",
|
|
5095
5095
|
"tier": "core",
|
|
@@ -5149,7 +5149,7 @@ const runtimes = {
|
|
|
5149
5149
|
"qwen": {
|
|
5150
5150
|
"id": "qwen",
|
|
5151
5151
|
"role": "runtime",
|
|
5152
|
-
"version": "1.7.0
|
|
5152
|
+
"version": "1.7.0",
|
|
5153
5153
|
"title": "Qwen Code",
|
|
5154
5154
|
"description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
5155
5155
|
"tier": "core",
|
|
@@ -5254,7 +5254,7 @@ const runtimes = {
|
|
|
5254
5254
|
"trae": {
|
|
5255
5255
|
"id": "trae",
|
|
5256
5256
|
"role": "runtime",
|
|
5257
|
-
"version": "1.7.0
|
|
5257
|
+
"version": "1.7.0",
|
|
5258
5258
|
"title": "Trae IDE",
|
|
5259
5259
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
5260
5260
|
"tier": "core",
|
|
@@ -5344,7 +5344,7 @@ const runtimes = {
|
|
|
5344
5344
|
"vscode": {
|
|
5345
5345
|
"id": "vscode",
|
|
5346
5346
|
"role": "runtime",
|
|
5347
|
-
"version": "1.7.0
|
|
5347
|
+
"version": "1.7.0",
|
|
5348
5348
|
"title": "VS Code",
|
|
5349
5349
|
"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).",
|
|
5350
5350
|
"tier": "core",
|
|
@@ -5395,7 +5395,7 @@ const runtimes = {
|
|
|
5395
5395
|
"windsurf": {
|
|
5396
5396
|
"id": "windsurf",
|
|
5397
5397
|
"role": "runtime",
|
|
5398
|
-
"version": "1.7.0
|
|
5398
|
+
"version": "1.7.0",
|
|
5399
5399
|
"title": "Windsurf",
|
|
5400
5400
|
"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.",
|
|
5401
5401
|
"tier": "core",
|
|
@@ -5480,7 +5480,7 @@ const runtimes = {
|
|
|
5480
5480
|
"zcode": {
|
|
5481
5481
|
"id": "zcode",
|
|
5482
5482
|
"role": "runtime",
|
|
5483
|
-
"version": "1.7.0
|
|
5483
|
+
"version": "1.7.0",
|
|
5484
5484
|
"title": "ZCode",
|
|
5485
5485
|
"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.",
|
|
5486
5486
|
"tier": "core",
|
|
@@ -919,7 +919,7 @@ function cmdApiCoverageVerifyPre(projectDir, args, raw) {
|
|
|
919
919
|
// .planning/phases/ (or a milestone archive). The raw arg is never used as a
|
|
920
920
|
// path, so `..`, absolute paths, and arbitrary directories cannot reach a
|
|
921
921
|
// file read. Mirrors cmdVerifySchemaDrift's token-match approach.
|
|
922
|
-
let token =
|
|
922
|
+
let token = (0, shell_command_projection_cjs_1.posixNormalize)(phaseArg).split('/').filter(Boolean).pop() || '';
|
|
923
923
|
// A token like ".." or "." carries no phase identity → unresolvable.
|
|
924
924
|
if (token === '.' || token === '..')
|
|
925
925
|
token = '';
|
|
@@ -81,6 +81,25 @@ exports.realClock = {
|
|
|
81
81
|
today() {
|
|
82
82
|
return this.nowIso().split('T')[0];
|
|
83
83
|
},
|
|
84
|
+
/**
|
|
85
|
+
* Return today's date as a YYYY-MM-DD string in the HOST-LOCAL calendar day.
|
|
86
|
+
* Uses this.now() so the subprocess time-pin adapter (GSD_NOW_MS) is honoured
|
|
87
|
+
* exactly as today()/nowIso() are — deterministic when GSD_NOW_MS and TZ are
|
|
88
|
+
* both pinned (#2136).
|
|
89
|
+
*
|
|
90
|
+
* Operator-facing date-only fields (last_activity, "completed <date>", etc.)
|
|
91
|
+
* must use the local calendar day: an operator reads them as "the day I did
|
|
92
|
+
* this", and they must never name a day ahead of `last_updated`'s local date.
|
|
93
|
+
* `today()` (UTC) stays the source for internal/cosmetic stamps.
|
|
94
|
+
*
|
|
95
|
+
* @returns e.g. "2020-06-14" (local), which may differ from today() near UTC midnight
|
|
96
|
+
*/
|
|
97
|
+
localToday() {
|
|
98
|
+
const d = new Date(this.now());
|
|
99
|
+
const mm = String(d.getMonth() + 1).padStart(2, '0');
|
|
100
|
+
const dd = String(d.getDate()).padStart(2, '0');
|
|
101
|
+
return d.getFullYear() + '-' + mm + '-' + dd;
|
|
102
|
+
},
|
|
84
103
|
/**
|
|
85
104
|
* Synchronous sleep via Atomics.wait.
|
|
86
105
|
* This is the identical primitive acquireStateLock and withPlanningLock used
|