@opengsd/gsd-pi 1.2.0-dev.844675c9 → 1.2.0-dev.b1abb545
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/dist/cli-web-branch.d.ts +2 -0
- package/dist/cli-web-branch.js +9 -2
- package/dist/help-text.js +5 -0
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/ask-user-questions.js +78 -23
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +84 -228
- package/dist/resources/extensions/claude-code-cli/turn-assembler.js +224 -0
- package/dist/resources/extensions/github-sync/templates.js +3 -3
- package/dist/resources/extensions/gsd/artifact-projection.js +14 -0
- package/dist/resources/extensions/gsd/auto/loop.js +74 -56
- package/dist/resources/extensions/gsd/auto/orchestrator.js +109 -11
- package/dist/resources/extensions/gsd/auto/phases.js +28 -3
- package/dist/resources/extensions/gsd/auto/run-unit.js +2 -1
- package/dist/resources/extensions/gsd/auto/session.js +3 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +16 -4
- package/dist/resources/extensions/gsd/auto-dispatch.js +6 -5
- package/dist/resources/extensions/gsd/auto-model-selection.js +8 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +4 -3
- package/dist/resources/extensions/gsd/auto-prompts.js +81 -8
- package/dist/resources/extensions/gsd/auto-recovery.js +48 -49
- package/dist/resources/extensions/gsd/auto-runtime-state.js +14 -0
- package/dist/resources/extensions/gsd/auto-start.js +12 -23
- package/dist/resources/extensions/gsd/auto-timers.js +16 -2
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +32 -0
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +4 -29
- package/dist/resources/extensions/gsd/auto-verification.js +7 -7
- package/dist/resources/extensions/gsd/auto-worktree.js +21 -19
- package/dist/resources/extensions/gsd/auto.js +11 -7
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +28 -37
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +11 -37
- package/dist/resources/extensions/gsd/bootstrap/query-tools.js +2 -2
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +100 -138
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +63 -4
- package/dist/resources/extensions/gsd/closeout-consistency-gate.js +21 -4
- package/dist/resources/extensions/gsd/codebase-generator.js +8 -4
- package/dist/resources/extensions/gsd/commands/handlers/auto.js +3 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +20 -0
- package/dist/resources/extensions/gsd/commands-inspect.js +4 -8
- package/dist/resources/extensions/gsd/commands-maintenance.js +61 -41
- package/dist/resources/extensions/gsd/commands-ship.js +2 -2
- package/dist/resources/extensions/gsd/commands-verdict.js +12 -2
- package/dist/resources/extensions/gsd/db-workspace.js +103 -0
- package/dist/resources/extensions/gsd/delegation-policy.js +2 -10
- package/dist/resources/extensions/gsd/discussion-handoff.js +218 -0
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -0
- package/dist/resources/extensions/gsd/doctor.js +16 -9
- package/dist/resources/extensions/gsd/error-classifier.js +1 -1
- package/dist/resources/extensions/gsd/git-conflict-state.js +16 -1
- package/dist/resources/extensions/gsd/gsd-db.js +12 -0
- package/dist/resources/extensions/gsd/guided-flow.js +34 -468
- package/dist/resources/extensions/gsd/guided-unit-completion.js +225 -0
- package/dist/resources/extensions/gsd/markdown-renderer.js +2 -1
- package/dist/resources/extensions/gsd/mcp-filter.js +2 -1
- package/dist/resources/extensions/gsd/mcp-tool-name.js +26 -0
- package/dist/resources/extensions/gsd/md-importer.js +4 -3
- package/dist/resources/extensions/gsd/migrate/safety.js +2 -2
- package/dist/resources/extensions/gsd/migration-auto-check.js +3 -2
- package/dist/resources/extensions/gsd/milestone-closeout-proof.js +72 -0
- package/dist/resources/extensions/gsd/milestone-closeout.js +12 -4
- package/dist/resources/extensions/gsd/milestone-merge-transaction.js +10 -0
- package/dist/resources/extensions/gsd/milestone-planning-persistence.js +156 -0
- package/dist/resources/extensions/gsd/milestone-readiness.js +77 -0
- package/dist/resources/extensions/gsd/milestone-settlement.js +50 -0
- package/dist/resources/extensions/gsd/milestone-validation-evidence.js +73 -0
- package/dist/resources/extensions/gsd/milestone-validation-verdict.js +57 -0
- package/dist/resources/extensions/gsd/parallel-eligibility.js +3 -6
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +3 -2
- package/dist/resources/extensions/gsd/preferences-diagnostics.js +67 -0
- package/dist/resources/extensions/gsd/preferences.js +147 -29
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +1 -0
- package/dist/resources/extensions/gsd/prompts/execute-task.md +2 -0
- package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -1
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +2 -0
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -0
- package/dist/resources/extensions/gsd/prompts/refine-slice.md +1 -0
- package/dist/resources/extensions/gsd/prompts/system.md +1 -1
- package/dist/resources/extensions/gsd/provider-payload-policy.js +83 -0
- package/dist/resources/extensions/gsd/pull-request-process.js +13 -0
- package/dist/resources/extensions/gsd/quality-gate-closure.js +109 -0
- package/dist/resources/extensions/gsd/question-transport.js +86 -0
- package/dist/resources/extensions/gsd/roadmap-slices.js +8 -2
- package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +3 -2
- package/dist/resources/extensions/gsd/state.js +13 -5
- package/dist/resources/extensions/gsd/templates/plan.md +7 -0
- package/dist/resources/extensions/gsd/templates/project.md +1 -0
- package/dist/resources/extensions/gsd/templates/roadmap.md +1 -1
- package/dist/resources/extensions/gsd/templates/uat.md +5 -1
- package/dist/resources/extensions/gsd/tool-contract.js +52 -8
- package/dist/resources/extensions/gsd/tool-presentation-plan.js +15 -34
- package/dist/resources/extensions/gsd/tool-surface-snapshot.js +17 -0
- package/dist/resources/extensions/gsd/tools/plan-milestone.js +15 -143
- package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +39 -0
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +15 -78
- package/dist/resources/extensions/gsd/uat-policy.js +16 -10
- package/dist/resources/extensions/gsd/uat-run.js +9 -14
- package/dist/resources/extensions/gsd/unit-context-composer.js +40 -20
- package/dist/resources/extensions/gsd/unit-runtime.js +3 -2
- package/dist/resources/extensions/gsd/unit-tool-contracts.js +2 -1
- package/dist/resources/extensions/gsd/user-input-boundary.js +23 -0
- package/dist/resources/extensions/gsd/validation-block-guard.js +2 -0
- package/dist/resources/extensions/gsd/web-app-uat.js +80 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +15 -102
- package/dist/resources/extensions/gsd/workflow-reconcile.js +4 -3
- package/dist/resources/extensions/gsd/workflow-tool-surface.js +46 -0
- package/dist/resources/extensions/gsd/workspace-git-guard.js +2 -0
- package/dist/resources/extensions/gsd/worktree-state-projection.js +33 -4
- package/dist/resources/extensions/gsd/worktree-telemetry.js +12 -0
- package/dist/resources/extensions/shared/interview-ui.js +2 -2
- package/dist/resources/shared/claude-runtime-floor.js +182 -0
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/update-cmd.js +20 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +7 -7
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +8 -8
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +7 -7
- package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/2659.b7b129ee6a769448.js +1 -0
- package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{3616.4113d484a994e411.js → 3616.3c60753b8ffcbd2e.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/4283.e4873b058df143a1.js +2 -0
- package/dist/web/standalone/.next/static/chunks/5826.a46ecdd1cfe8dabc.js +1 -0
- package/dist/web/standalone/.next/static/chunks/796.cf859a427a2cb2ac.js +10 -0
- package/dist/web/standalone/.next/static/chunks/8785.2e5a118797fb2dd2.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-dda80a1ef5587410.js → webpack-fbea77b5f9953368.js} +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
- package/dist/web-mode.d.ts +2 -0
- package/dist/web-mode.js +20 -8
- package/package.json +2 -1
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts +2 -0
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.js +14 -0
- package/packages/gsd-agent-core/dist/session/agent-session-extensions.js.map +1 -1
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +106 -40
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js +6 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/dist/server.d.ts +10 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +8 -0
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +41 -0
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +2 -1
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +3 -3
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +8 -93
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +35 -120
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/dist/components/input.js +1 -1
- package/packages/pi-tui/dist/components/input.js.map +1 -1
- package/packages/pi-tui/dist/keys.d.ts.map +1 -1
- package/packages/pi-tui/dist/keys.js +39 -30
- package/packages/pi-tui/dist/keys.js.map +1 -1
- package/packages/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
- package/packages/pi-tui/dist/stdin-buffer.js +22 -0
- package/packages/pi-tui/dist/stdin-buffer.js.map +1 -1
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/extensions/ask-user-questions.ts +87 -24
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +108 -281
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +240 -0
- package/src/resources/extensions/claude-code-cli/turn-assembler.ts +287 -0
- package/src/resources/extensions/github-sync/templates.ts +3 -3
- package/src/resources/extensions/github-sync/tests/templates.test.ts +2 -2
- package/src/resources/extensions/gsd/artifact-projection.ts +31 -0
- package/src/resources/extensions/gsd/auto/contracts.ts +32 -2
- package/src/resources/extensions/gsd/auto/loop-deps.ts +2 -0
- package/src/resources/extensions/gsd/auto/loop.ts +83 -61
- package/src/resources/extensions/gsd/auto/orchestrator.ts +125 -12
- package/src/resources/extensions/gsd/auto/phases.ts +35 -3
- package/src/resources/extensions/gsd/auto/run-unit.ts +2 -1
- package/src/resources/extensions/gsd/auto/session.ts +4 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +18 -4
- package/src/resources/extensions/gsd/auto-dispatch.ts +20 -7
- package/src/resources/extensions/gsd/auto-model-selection.ts +8 -0
- package/src/resources/extensions/gsd/auto-post-unit.ts +4 -3
- package/src/resources/extensions/gsd/auto-prompts.ts +107 -9
- package/src/resources/extensions/gsd/auto-recovery.ts +50 -50
- package/src/resources/extensions/gsd/auto-runtime-state.ts +26 -0
- package/src/resources/extensions/gsd/auto-start.ts +17 -20
- package/src/resources/extensions/gsd/auto-timers.ts +16 -2
- package/src/resources/extensions/gsd/auto-tool-tracking.ts +35 -0
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +9 -30
- package/src/resources/extensions/gsd/auto-verification.ts +7 -8
- package/src/resources/extensions/gsd/auto-worktree.ts +33 -26
- package/src/resources/extensions/gsd/auto.ts +15 -8
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +29 -37
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +10 -37
- package/src/resources/extensions/gsd/bootstrap/query-tools.ts +2 -2
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +116 -151
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +107 -3
- package/src/resources/extensions/gsd/closeout-consistency-gate.ts +27 -5
- package/src/resources/extensions/gsd/codebase-generator.ts +9 -5
- package/src/resources/extensions/gsd/commands/handlers/auto.ts +3 -0
- package/src/resources/extensions/gsd/commands-handlers.ts +18 -0
- package/src/resources/extensions/gsd/commands-inspect.ts +7 -8
- package/src/resources/extensions/gsd/commands-maintenance.ts +74 -40
- package/src/resources/extensions/gsd/commands-ship.ts +2 -2
- package/src/resources/extensions/gsd/commands-verdict.ts +19 -2
- package/src/resources/extensions/gsd/db-workspace.ts +170 -0
- package/src/resources/extensions/gsd/delegation-policy.ts +3 -11
- package/src/resources/extensions/gsd/discussion-handoff.ts +276 -0
- package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -0
- package/src/resources/extensions/gsd/doctor.ts +15 -5
- package/src/resources/extensions/gsd/error-classifier.ts +1 -1
- package/src/resources/extensions/gsd/git-conflict-state.ts +17 -1
- package/src/resources/extensions/gsd/gsd-db.ts +12 -0
- package/src/resources/extensions/gsd/guided-flow.ts +47 -558
- package/src/resources/extensions/gsd/guided-unit-completion.ts +275 -0
- package/src/resources/extensions/gsd/markdown-renderer.ts +2 -1
- package/src/resources/extensions/gsd/mcp-filter.ts +2 -1
- package/src/resources/extensions/gsd/mcp-tool-name.ts +35 -0
- package/src/resources/extensions/gsd/md-importer.ts +3 -3
- package/src/resources/extensions/gsd/migrate/safety.ts +2 -2
- package/src/resources/extensions/gsd/migration-auto-check.ts +2 -2
- package/src/resources/extensions/gsd/milestone-closeout-proof.ts +131 -0
- package/src/resources/extensions/gsd/milestone-closeout.ts +12 -4
- package/src/resources/extensions/gsd/milestone-merge-transaction.ts +47 -0
- package/src/resources/extensions/gsd/milestone-planning-persistence.ts +224 -0
- package/src/resources/extensions/gsd/milestone-readiness.ts +125 -0
- package/src/resources/extensions/gsd/milestone-settlement.ts +81 -0
- package/src/resources/extensions/gsd/milestone-validation-evidence.ts +95 -0
- package/src/resources/extensions/gsd/milestone-validation-verdict.ts +80 -0
- package/src/resources/extensions/gsd/parallel-eligibility.ts +4 -5
- package/src/resources/extensions/gsd/parallel-orchestrator.ts +6 -2
- package/src/resources/extensions/gsd/preferences-diagnostics.ts +98 -0
- package/src/resources/extensions/gsd/preferences-types.ts +16 -0
- package/src/resources/extensions/gsd/preferences.ts +173 -28
- package/src/resources/extensions/gsd/prompts/complete-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/execute-task.md +2 -0
- package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +3 -1
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +2 -0
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/refine-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/system.md +1 -1
- package/src/resources/extensions/gsd/provider-payload-policy.ts +140 -0
- package/src/resources/extensions/gsd/pull-request-process.ts +41 -0
- package/src/resources/extensions/gsd/quality-gate-closure.ts +140 -0
- package/src/resources/extensions/gsd/question-transport.ts +138 -0
- package/src/resources/extensions/gsd/roadmap-slices.ts +8 -2
- package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +6 -2
- package/src/resources/extensions/gsd/state.ts +15 -5
- package/src/resources/extensions/gsd/templates/plan.md +7 -0
- package/src/resources/extensions/gsd/templates/project.md +1 -0
- package/src/resources/extensions/gsd/templates/roadmap.md +1 -1
- package/src/resources/extensions/gsd/templates/uat.md +5 -1
- package/src/resources/extensions/gsd/tests/ask-user-questions-render.test.ts +92 -0
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +29 -1
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +321 -5
- package/src/resources/extensions/gsd/tests/auto-milestone-target.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/auto-model-selection-tool-poisoning.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +133 -4
- package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +34 -0
- package/src/resources/extensions/gsd/tests/canonical-milestone-root.test.ts +20 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/commands-dispatcher-workspace-git.test.ts +11 -0
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +38 -1
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +34 -3
- package/src/resources/extensions/gsd/tests/dispatch-run-uat-browser-tools.test.ts +88 -0
- package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/execute-task-rendering.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-no-blockers.md +1 -5
- package/src/resources/extensions/gsd/tests/fixtures/pr-body/swarm-lane-with-blockers.md +1 -5
- package/src/resources/extensions/gsd/tests/gate-state-canonicalization.test.ts +48 -1
- package/src/resources/extensions/gsd/tests/mcp-tool-name.test.ts +34 -0
- package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +58 -0
- package/src/resources/extensions/gsd/tests/milestone-closeout-proof.test.ts +99 -0
- package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/milestone-merge-transaction.test.ts +46 -0
- package/src/resources/extensions/gsd/tests/milestone-readiness.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/milestone-validation-evidence.test.ts +41 -0
- package/src/resources/extensions/gsd/tests/milestone-validation-verdict.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/planning-crossval.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/preferences-diagnostics.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/preferences.test.ts +183 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +46 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/provider-payload-policy.test.ts +165 -0
- package/src/resources/extensions/gsd/tests/pull-request-process.test.ts +47 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +94 -0
- package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +25 -1
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +80 -0
- package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +101 -1
- package/src/resources/extensions/gsd/tests/stale-queued-milestone.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/tool-availability-audit.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +35 -42
- package/src/resources/extensions/gsd/tests/uat-policy.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +47 -0
- package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +86 -1
- package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/web-app-uat.test.ts +150 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +126 -9
- package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +21 -0
- package/src/resources/extensions/gsd/tests/worktree-projection-writers.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-telemetry.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +79 -0
- package/src/resources/extensions/gsd/tool-contract.ts +86 -8
- package/src/resources/extensions/gsd/tool-presentation-plan.ts +16 -33
- package/src/resources/extensions/gsd/tool-surface-snapshot.ts +47 -0
- package/src/resources/extensions/gsd/tools/plan-milestone.ts +19 -160
- package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +43 -0
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +25 -84
- package/src/resources/extensions/gsd/uat-policy.ts +19 -10
- package/src/resources/extensions/gsd/uat-run.ts +10 -14
- package/src/resources/extensions/gsd/unit-context-composer.ts +85 -20
- package/src/resources/extensions/gsd/unit-runtime.ts +3 -2
- package/src/resources/extensions/gsd/unit-tool-contracts.ts +2 -1
- package/src/resources/extensions/gsd/user-input-boundary.ts +18 -0
- package/src/resources/extensions/gsd/validation-block-guard.ts +2 -0
- package/src/resources/extensions/gsd/web-app-uat.ts +101 -0
- package/src/resources/extensions/gsd/workflow-mcp.ts +22 -110
- package/src/resources/extensions/gsd/workflow-reconcile.ts +3 -3
- package/src/resources/extensions/gsd/workflow-tool-surface.ts +73 -0
- package/src/resources/extensions/gsd/workspace-git-guard.ts +1 -0
- package/src/resources/extensions/gsd/worktree-lifecycle.ts +7 -16
- package/src/resources/extensions/gsd/worktree-state-projection.ts +55 -7
- package/src/resources/extensions/gsd/worktree-telemetry.ts +16 -0
- package/src/resources/extensions/shared/interview-ui.ts +15 -2
- package/src/resources/shared/claude-runtime-floor.ts +248 -0
- package/dist/web/standalone/.next/static/chunks/2659.feb6499ca863ebfc.js +0 -1
- package/dist/web/standalone/.next/static/chunks/2772.151789db0edea835.js +0 -1
- package/dist/web/standalone/.next/static/chunks/4283.10a065467b5340d8.js +0 -2
- package/dist/web/standalone/.next/static/chunks/5826.960dc4634cc9b0d3.js +0 -1
- package/dist/web/standalone/.next/static/chunks/796.46f811c0fac23aab.js +0 -10
- package/dist/web/standalone/.next/static/chunks/8785.d32f7a61f55c1600.js +0 -1
- /package/dist/web/standalone/.next/static/{Qbr81pQ-pbQXP4bq2VXLv → 3PtrU9qGPEXwNLWkIyiqk}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{Qbr81pQ-pbQXP4bq2VXLv → 3PtrU9qGPEXwNLWkIyiqk}/_ssgManifest.js +0 -0
|
@@ -54,6 +54,7 @@ import { getPriorSliceCompletionBlocker } from "./dispatch-guard.js";
|
|
|
54
54
|
import { createAutoWorktree, teardownAutoWorktree, isInAutoWorktree, getAutoWorktreePath, mergeMilestoneToMain, autoWorktreeBranch, checkResourcesStale, escapeStaleWorktree, } from "./auto-worktree.js";
|
|
55
55
|
import { pruneQueueOrder } from "./queue-order.js";
|
|
56
56
|
import { startCommandPolling as _startCommandPolling, isRemoteConfigured } from "../remote-questions/manager.js";
|
|
57
|
+
import { createMilestoneMergeTransaction } from "./milestone-merge-transaction.js";
|
|
57
58
|
import { debugLog, isDebugEnabled, writeDebugSummary } from "./debug-logger.js";
|
|
58
59
|
import { reconcileMergeState, verifyExpectedArtifact, } from "./auto-recovery.js";
|
|
59
60
|
import { classifyMilestoneSummaryContent } from "./milestone-summary-classifier.js";
|
|
@@ -67,6 +68,7 @@ import { MILESTONE_ID_RE } from "./milestone-ids.js";
|
|
|
67
68
|
import { updateProgressWidget as _updateProgressWidget, setCompletionProgressWidget, setAutoOutcomeWidget, setAutoActiveStatus, updateSliceProgressCache, clearSliceProgressCache, unitVerb, } from "./auto-dashboard.js";
|
|
68
69
|
import { registerSigtermHandler as _registerSigtermHandler, deregisterSigtermHandler as _deregisterSigtermHandler, } from "./auto-supervisor.js";
|
|
69
70
|
import { isDbAvailable, getMilestone, getMilestoneSlices, } from "./gsd-db.js";
|
|
71
|
+
import { closeWorkflowDatabase } from "./db-workspace.js";
|
|
70
72
|
import { markLatestActiveForWorkerCanceled } from "./db/unit-dispatches.js";
|
|
71
73
|
import { writeUnitRuntimeRecord } from "./unit-runtime.js";
|
|
72
74
|
import { countPendingCaptures } from "./captures.js";
|
|
@@ -109,7 +111,7 @@ void initTokenCounter().catch((err) => {
|
|
|
109
111
|
logWarning("engine", `token counter warm-up failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
110
112
|
});
|
|
111
113
|
export { STUB_RECOVERY_THRESHOLD, NEW_SESSION_TIMEOUT_MS, } from "./auto/session.js";
|
|
112
|
-
import { autoSession as s } from "./auto-runtime-state.js";
|
|
114
|
+
import { autoSession as s, getAutoRuntimeSnapshot } from "./auto-runtime-state.js";
|
|
113
115
|
import { gsdHome } from "./gsd-home.js";
|
|
114
116
|
import { createWorkspace, scopeMilestone } from "./workspace.js";
|
|
115
117
|
import { registerAutoWorker, markWorkerStopping, } from "./db/auto-workers.js";
|
|
@@ -463,6 +465,7 @@ function stopAutoCommandPolling() {
|
|
|
463
465
|
}
|
|
464
466
|
export function getAutoDashboardData() {
|
|
465
467
|
const ledger = getLedger();
|
|
468
|
+
const runtimeSnapshot = getAutoRuntimeSnapshot();
|
|
466
469
|
const totals = ledger ? getProjectTotals(ledger.units) : null;
|
|
467
470
|
const sessionId = s.cmdCtx?.sessionManager?.getSessionId?.() ?? null;
|
|
468
471
|
const rtkSavings = sessionId && s.basePath
|
|
@@ -495,6 +498,7 @@ export function getAutoDashboardData() {
|
|
|
495
498
|
pendingCaptureCount,
|
|
496
499
|
rtkSavings,
|
|
497
500
|
rtkEnabled,
|
|
501
|
+
toolSurface: runtimeSnapshot.toolSurface,
|
|
498
502
|
};
|
|
499
503
|
}
|
|
500
504
|
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
@@ -1003,12 +1007,13 @@ export async function stopAuto(ctx, pi, reason, options = {}) {
|
|
|
1003
1007
|
// worktree was active, and whether the current milestone was merged before
|
|
1004
1008
|
// stopAuto. The unmerged-work warning is only meaningful for real worktrees.
|
|
1005
1009
|
try {
|
|
1006
|
-
const { emitAutoExit, normalizeAutoExitReason } = await import("./worktree-telemetry.js");
|
|
1010
|
+
const { autoExitReasonForTerminalOutcome, emitAutoExit, normalizeAutoExitReason, } = await import("./worktree-telemetry.js");
|
|
1007
1011
|
// Normalize the free-form reason to a closed set so the telemetry
|
|
1008
1012
|
// aggregator buckets stably. Raw detail is preserved in the phases.ts
|
|
1009
1013
|
// notification and the notify'd error string.
|
|
1010
1014
|
const rawReason = reason ?? "stop";
|
|
1011
|
-
const normalizedReason =
|
|
1015
|
+
const normalizedReason = autoExitReasonForTerminalOutcome(options.terminalOutcome)
|
|
1016
|
+
?? normalizeAutoExitReason(rawReason);
|
|
1012
1017
|
const telemetryBase = s.originalBasePath || s.basePath;
|
|
1013
1018
|
emitAutoExit(telemetryBase, {
|
|
1014
1019
|
reason: normalizedReason,
|
|
@@ -1184,8 +1189,7 @@ export async function stopAuto(ctx, pi, reason, options = {}) {
|
|
|
1184
1189
|
// ── Step 6: DB cleanup ──
|
|
1185
1190
|
if (isDbAvailable()) {
|
|
1186
1191
|
try {
|
|
1187
|
-
|
|
1188
|
-
closeDatabase();
|
|
1192
|
+
closeWorkflowDatabase();
|
|
1189
1193
|
}
|
|
1190
1194
|
catch (e) {
|
|
1191
1195
|
debugLog("db-close-failed", {
|
|
@@ -1622,7 +1626,7 @@ export function buildWorktreeLifecycleDeps() {
|
|
|
1622
1626
|
// C4 (#5627) — GitServiceImpl constructor → gitServiceFactory
|
|
1623
1627
|
//
|
|
1624
1628
|
// Final WorktreeLifecycleDeps shape: 3 fields (gitServiceFactory,
|
|
1625
|
-
// worktreeProjection, mergeMilestoneToMain). Down from 18 at slice-7
|
|
1629
|
+
// worktreeProjection, mergeMilestoneToMain transaction runner). Down from 18 at slice-7
|
|
1626
1630
|
// closure.
|
|
1627
1631
|
return {
|
|
1628
1632
|
gitServiceFactory: (basePath) => {
|
|
@@ -1630,7 +1634,7 @@ export function buildWorktreeLifecycleDeps() {
|
|
|
1630
1634
|
return new GitServiceImpl(basePath, gitConfig);
|
|
1631
1635
|
},
|
|
1632
1636
|
worktreeProjection: new WorktreeStateProjection(),
|
|
1633
|
-
mergeMilestoneToMain,
|
|
1637
|
+
mergeMilestoneToMain: createMilestoneMergeTransaction(mergeMilestoneToMain),
|
|
1634
1638
|
};
|
|
1635
1639
|
}
|
|
1636
1640
|
function buildLifecycle() {
|
|
@@ -10,6 +10,7 @@ import { logError } from "../workflow-logger.js";
|
|
|
10
10
|
import { getErrorMessage } from "../error-utils.js";
|
|
11
11
|
import { incrementLegacyTelemetry } from "../legacy-telemetry.js";
|
|
12
12
|
import { prepareSaveGateResultArguments } from "../tools/save-gate-result-args.js";
|
|
13
|
+
import { aliasesForWorkflowTool } from "../workflow-tool-surface.js";
|
|
13
14
|
async function loadWorkflowExecutors() {
|
|
14
15
|
return importWorkflowExecutorsModule();
|
|
15
16
|
}
|
|
@@ -41,6 +42,13 @@ function registerAlias(pi, toolDef, aliasName, canonicalName) {
|
|
|
41
42
|
execute,
|
|
42
43
|
});
|
|
43
44
|
}
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- toolDef shape matches ToolDefinition but varies by schema
|
|
46
|
+
function registerWorkflowTool(pi, toolDef) {
|
|
47
|
+
pi.registerTool(toolDef);
|
|
48
|
+
for (const alias of aliasesForWorkflowTool(toolDef.name)) {
|
|
49
|
+
registerAlias(pi, toolDef, alias, toolDef.name);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
44
52
|
function requirementRootWriteGuard(operation, basePath) {
|
|
45
53
|
const guard = shouldBlockRootArtifactSaveInSnapshot(loadWriteGateSnapshot(basePath), "REQUIREMENTS");
|
|
46
54
|
if (!guard.block)
|
|
@@ -155,8 +163,7 @@ export function registerDbTools(pi) {
|
|
|
155
163
|
return new Text(text, 0, 0);
|
|
156
164
|
},
|
|
157
165
|
};
|
|
158
|
-
pi
|
|
159
|
-
registerAlias(pi, decisionSaveTool, "gsd_save_decision", "gsd_decision_save");
|
|
166
|
+
registerWorkflowTool(pi, decisionSaveTool);
|
|
160
167
|
// ─── gsd_requirement_update (formerly gsd_update_requirement) ───────────
|
|
161
168
|
const requirementUpdateExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
162
169
|
const basePath = resolveCtxCwd(_ctx);
|
|
@@ -241,8 +248,7 @@ export function registerDbTools(pi) {
|
|
|
241
248
|
return new Text(text, 0, 0);
|
|
242
249
|
},
|
|
243
250
|
};
|
|
244
|
-
pi
|
|
245
|
-
registerAlias(pi, requirementUpdateTool, "gsd_update_requirement", "gsd_requirement_update");
|
|
251
|
+
registerWorkflowTool(pi, requirementUpdateTool);
|
|
246
252
|
// ─── gsd_requirement_save ─────────────────────────────────────────────
|
|
247
253
|
const requirementSaveExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
248
254
|
const basePath = resolveCtxCwd(_ctx);
|
|
@@ -340,8 +346,7 @@ export function registerDbTools(pi) {
|
|
|
340
346
|
return new Text(text, 0, 0);
|
|
341
347
|
},
|
|
342
348
|
};
|
|
343
|
-
pi
|
|
344
|
-
registerAlias(pi, requirementSaveTool, "gsd_save_requirement", "gsd_requirement_save");
|
|
349
|
+
registerWorkflowTool(pi, requirementSaveTool);
|
|
345
350
|
// ─── gsd_summary_save (formerly gsd_save_summary) ──────────────────────
|
|
346
351
|
const summarySaveExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
347
352
|
try {
|
|
@@ -397,8 +402,7 @@ export function registerDbTools(pi) {
|
|
|
397
402
|
return new Text(text, 0, 0);
|
|
398
403
|
},
|
|
399
404
|
};
|
|
400
|
-
pi
|
|
401
|
-
registerAlias(pi, summarySaveTool, "gsd_save_summary", "gsd_summary_save");
|
|
405
|
+
registerWorkflowTool(pi, summarySaveTool);
|
|
402
406
|
// ─── gsd_uat_result_save ─────────────────────────────────────────────────
|
|
403
407
|
const uatResultSaveExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
404
408
|
const { executeUatResultSave } = await loadWorkflowExecutors();
|
|
@@ -480,7 +484,7 @@ export function registerDbTools(pi) {
|
|
|
480
484
|
return new Text(theme.fg("success", `UAT ${d?.sliceId ?? ""}: ${d?.verdict ?? "saved"}`), 0, 0);
|
|
481
485
|
},
|
|
482
486
|
};
|
|
483
|
-
pi
|
|
487
|
+
registerWorkflowTool(pi, uatResultSaveTool);
|
|
484
488
|
// ─── gsd_milestone_generate_id (formerly gsd_generate_milestone_id) ────
|
|
485
489
|
const milestoneGenerateIdExecute = async (_toolCallId, _params, _signal, _onUpdate, _ctx) => {
|
|
486
490
|
try {
|
|
@@ -566,8 +570,7 @@ export function registerDbTools(pi) {
|
|
|
566
570
|
return new Text(text, 0, 0);
|
|
567
571
|
},
|
|
568
572
|
};
|
|
569
|
-
pi
|
|
570
|
-
registerAlias(pi, milestoneGenerateIdTool, "gsd_generate_milestone_id", "gsd_milestone_generate_id");
|
|
573
|
+
registerWorkflowTool(pi, milestoneGenerateIdTool);
|
|
571
574
|
// ─── gsd_plan_milestone (gsd_milestone_plan alias) ─────────────────────
|
|
572
575
|
const planMilestoneExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
573
576
|
const { executePlanMilestone } = await loadWorkflowExecutors();
|
|
@@ -633,8 +636,7 @@ export function registerDbTools(pi) {
|
|
|
633
636
|
}),
|
|
634
637
|
execute: planMilestoneExecute,
|
|
635
638
|
};
|
|
636
|
-
pi
|
|
637
|
-
registerAlias(pi, planMilestoneTool, "gsd_milestone_plan", "gsd_plan_milestone");
|
|
639
|
+
registerWorkflowTool(pi, planMilestoneTool);
|
|
638
640
|
// ─── gsd_plan_slice (gsd_slice_plan alias) ─────────────────────────────
|
|
639
641
|
const planSliceExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
640
642
|
const { executePlanSlice } = await loadWorkflowExecutors();
|
|
@@ -678,8 +680,7 @@ export function registerDbTools(pi) {
|
|
|
678
680
|
}),
|
|
679
681
|
execute: planSliceExecute,
|
|
680
682
|
};
|
|
681
|
-
pi
|
|
682
|
-
registerAlias(pi, planSliceTool, "gsd_slice_plan", "gsd_plan_slice");
|
|
683
|
+
registerWorkflowTool(pi, planSliceTool);
|
|
683
684
|
// ─── gsd_plan_task (gsd_task_plan alias) ───────────────────────────────
|
|
684
685
|
const planTaskExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
685
686
|
const basePath = resolveCtxCwd(_ctx);
|
|
@@ -748,8 +749,7 @@ export function registerDbTools(pi) {
|
|
|
748
749
|
}),
|
|
749
750
|
execute: planTaskExecute,
|
|
750
751
|
};
|
|
751
|
-
pi
|
|
752
|
-
registerAlias(pi, planTaskTool, "gsd_task_plan", "gsd_plan_task");
|
|
752
|
+
registerWorkflowTool(pi, planTaskTool);
|
|
753
753
|
// ─── gsd_task_complete (gsd_complete_task alias) ────────────────────────
|
|
754
754
|
const taskCompleteExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
755
755
|
const { executeTaskComplete } = await loadWorkflowExecutors();
|
|
@@ -809,8 +809,7 @@ export function registerDbTools(pi) {
|
|
|
809
809
|
}),
|
|
810
810
|
execute: taskCompleteExecute,
|
|
811
811
|
};
|
|
812
|
-
pi
|
|
813
|
-
registerAlias(pi, taskCompleteTool, "gsd_complete_task", "gsd_task_complete");
|
|
812
|
+
registerWorkflowTool(pi, taskCompleteTool);
|
|
814
813
|
// ─── gsd_slice_complete (gsd_complete_slice alias) ─────────────────────
|
|
815
814
|
const sliceCompleteExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
816
815
|
const { executeSliceComplete } = await loadWorkflowExecutors();
|
|
@@ -875,8 +874,7 @@ export function registerDbTools(pi) {
|
|
|
875
874
|
}),
|
|
876
875
|
execute: sliceCompleteExecute,
|
|
877
876
|
};
|
|
878
|
-
pi
|
|
879
|
-
registerAlias(pi, sliceCompleteTool, "gsd_complete_slice", "gsd_slice_complete");
|
|
877
|
+
registerWorkflowTool(pi, sliceCompleteTool);
|
|
880
878
|
// ─── gsd_skip_slice (#3477 / #3487) ───────────────────────────────────
|
|
881
879
|
const skipSliceExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
882
880
|
const basePath = resolveCtxCwd(_ctx);
|
|
@@ -941,7 +939,7 @@ export function registerDbTools(pi) {
|
|
|
941
939
|
};
|
|
942
940
|
}
|
|
943
941
|
};
|
|
944
|
-
pi
|
|
942
|
+
registerWorkflowTool(pi, {
|
|
945
943
|
name: "gsd_skip_slice",
|
|
946
944
|
label: "Skip Slice",
|
|
947
945
|
description: "Mark a slice as skipped so auto-mode advances past it without executing. " +
|
|
@@ -1000,8 +998,7 @@ export function registerDbTools(pi) {
|
|
|
1000
998
|
}),
|
|
1001
999
|
execute: milestoneCompleteExecute,
|
|
1002
1000
|
};
|
|
1003
|
-
pi
|
|
1004
|
-
registerAlias(pi, milestoneCompleteTool, "gsd_milestone_complete", "gsd_complete_milestone");
|
|
1001
|
+
registerWorkflowTool(pi, milestoneCompleteTool);
|
|
1005
1002
|
// ─── gsd_validate_milestone (gsd_milestone_validate alias) ─────────────
|
|
1006
1003
|
const milestoneValidateExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
1007
1004
|
const { executeValidateMilestone } = await loadWorkflowExecutors();
|
|
@@ -1035,8 +1032,7 @@ export function registerDbTools(pi) {
|
|
|
1035
1032
|
}),
|
|
1036
1033
|
execute: milestoneValidateExecute,
|
|
1037
1034
|
};
|
|
1038
|
-
pi
|
|
1039
|
-
registerAlias(pi, milestoneValidateTool, "gsd_milestone_validate", "gsd_validate_milestone");
|
|
1035
|
+
registerWorkflowTool(pi, milestoneValidateTool);
|
|
1040
1036
|
// ─── gsd_replan_slice (gsd_slice_replan alias) ─────────────────────────
|
|
1041
1037
|
const replanSliceExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
1042
1038
|
const { executeReplanSlice } = await loadWorkflowExecutors();
|
|
@@ -1078,8 +1074,7 @@ export function registerDbTools(pi) {
|
|
|
1078
1074
|
}),
|
|
1079
1075
|
execute: replanSliceExecute,
|
|
1080
1076
|
};
|
|
1081
|
-
pi
|
|
1082
|
-
registerAlias(pi, replanSliceTool, "gsd_slice_replan", "gsd_replan_slice");
|
|
1077
|
+
registerWorkflowTool(pi, replanSliceTool);
|
|
1083
1078
|
// ─── gsd_reassess_roadmap (gsd_roadmap_reassess alias) ─────────────────
|
|
1084
1079
|
const reassessRoadmapExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
1085
1080
|
const { executeReassessRoadmap } = await loadWorkflowExecutors();
|
|
@@ -1126,8 +1121,7 @@ export function registerDbTools(pi) {
|
|
|
1126
1121
|
}),
|
|
1127
1122
|
execute: reassessRoadmapExecute,
|
|
1128
1123
|
};
|
|
1129
|
-
pi
|
|
1130
|
-
registerAlias(pi, reassessRoadmapTool, "gsd_roadmap_reassess", "gsd_reassess_roadmap");
|
|
1124
|
+
registerWorkflowTool(pi, reassessRoadmapTool);
|
|
1131
1125
|
// ─── gsd_task_reopen (gsd_reopen_task alias) ───────────────────────────
|
|
1132
1126
|
// Single-writer v3, Stream 3: reversibility tools for closed units.
|
|
1133
1127
|
const reopenTaskExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
@@ -1190,8 +1184,7 @@ export function registerDbTools(pi) {
|
|
|
1190
1184
|
}),
|
|
1191
1185
|
execute: reopenTaskExecute,
|
|
1192
1186
|
};
|
|
1193
|
-
pi
|
|
1194
|
-
registerAlias(pi, reopenTaskTool, "gsd_reopen_task", "gsd_task_reopen");
|
|
1187
|
+
registerWorkflowTool(pi, reopenTaskTool);
|
|
1195
1188
|
// ─── gsd_slice_reopen (gsd_reopen_slice alias) ─────────────────────────
|
|
1196
1189
|
const reopenSliceExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
1197
1190
|
const basePath = resolveCtxCwd(_ctx);
|
|
@@ -1253,8 +1246,7 @@ export function registerDbTools(pi) {
|
|
|
1253
1246
|
}),
|
|
1254
1247
|
execute: reopenSliceExecute,
|
|
1255
1248
|
};
|
|
1256
|
-
pi
|
|
1257
|
-
registerAlias(pi, reopenSliceTool, "gsd_reopen_slice", "gsd_slice_reopen");
|
|
1249
|
+
registerWorkflowTool(pi, reopenSliceTool);
|
|
1258
1250
|
// ─── gsd_milestone_reopen (gsd_reopen_milestone alias) ─────────────────
|
|
1259
1251
|
const reopenMilestoneExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
1260
1252
|
const basePath = resolveCtxCwd(_ctx);
|
|
@@ -1314,8 +1306,7 @@ export function registerDbTools(pi) {
|
|
|
1314
1306
|
}),
|
|
1315
1307
|
execute: reopenMilestoneExecute,
|
|
1316
1308
|
};
|
|
1317
|
-
pi
|
|
1318
|
-
registerAlias(pi, reopenMilestoneTool, "gsd_reopen_milestone", "gsd_milestone_reopen");
|
|
1309
|
+
registerWorkflowTool(pi, reopenMilestoneTool);
|
|
1319
1310
|
// ─── gsd_save_gate_result ──────────────────────────────────────────────
|
|
1320
1311
|
const saveGateResultExecute = async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
|
|
1321
1312
|
const { executeSaveGateResult } = await loadWorkflowExecutors();
|
|
@@ -1378,5 +1369,5 @@ export function registerDbTools(pi) {
|
|
|
1378
1369
|
return new Text(theme.fg(color, `${d.gateId}: ${d.verdict}`), 0, 0);
|
|
1379
1370
|
},
|
|
1380
1371
|
};
|
|
1381
|
-
pi
|
|
1372
|
+
registerWorkflowTool(pi, saveGateResultTool);
|
|
1382
1373
|
}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
// File Purpose: Registers workspace-aware dynamic filesystem and shell tools.
|
|
3
3
|
import { existsSync, readdirSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
|
-
import {
|
|
5
|
+
import { join } from "node:path";
|
|
6
6
|
import { createBashTool, createEditTool, createReadTool, createWriteTool } from "@gsd/pi-coding-agent";
|
|
7
7
|
import { DEFAULT_BASH_TIMEOUT_SECS } from "../constants.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { logWarning } from "../workflow-logger.js";
|
|
9
|
+
import { openWorkflowDatabase } from "../db-workspace.js";
|
|
10
10
|
import { getAutoWorktreePath } from "../auto-worktree.js";
|
|
11
11
|
import { resolveWorktreeProjectRoot } from "../worktree-root.js";
|
|
12
12
|
export function safeWorkspaceCwd() {
|
|
@@ -58,44 +58,18 @@ export function resolveWorkflowToolBasePath(ctx, scope) {
|
|
|
58
58
|
}
|
|
59
59
|
return cwd;
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
* Resolve the correct DB path for the current working directory.
|
|
63
|
-
* If `basePath` is inside a `.gsd/worktrees/<MID>/` directory, returns
|
|
64
|
-
* the project root's `.gsd/gsd.db` (shared WAL — R012). Otherwise
|
|
65
|
-
* returns `<basePath>/.gsd/gsd.db`.
|
|
66
|
-
*/
|
|
67
|
-
export function resolveProjectRootDbPath(basePath) {
|
|
68
|
-
return resolveGsdPathContract(basePath).projectDb;
|
|
69
|
-
}
|
|
61
|
+
export { resolveProjectRootDbPath } from "../db-workspace.js";
|
|
70
62
|
export async function ensureDbOpen(basePath = safeWorkspaceCwd()) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const gsdDir = contract.projectGsd;
|
|
76
|
-
const projectRoot = dirname(dirname(dbPath));
|
|
77
|
-
// Open existing DB file (may be at project root for worktrees)
|
|
78
|
-
if (existsSync(dbPath)) {
|
|
79
|
-
const opened = db.openDatabase(dbPath);
|
|
80
|
-
if (opened)
|
|
81
|
-
setLogBasePath(projectRoot);
|
|
82
|
-
return opened;
|
|
83
|
-
}
|
|
84
|
-
// No DB file — create an empty authoritative DB. Markdown migration is
|
|
85
|
-
// explicit-only; runtime startup must not import projections into state.
|
|
86
|
-
if (existsSync(gsdDir)) {
|
|
87
|
-
const opened = db.openDatabase(dbPath);
|
|
88
|
-
if (opened)
|
|
89
|
-
setLogBasePath(projectRoot);
|
|
90
|
-
return opened;
|
|
91
|
-
}
|
|
63
|
+
const result = openWorkflowDatabase(basePath);
|
|
64
|
+
if (result.ok)
|
|
65
|
+
return true;
|
|
66
|
+
if (result.reason === "missing-gsd-dir") {
|
|
92
67
|
logWarning("bootstrap", "ensureDbOpen failed — no .gsd directory found");
|
|
93
|
-
return false;
|
|
94
68
|
}
|
|
95
|
-
|
|
96
|
-
logWarning("bootstrap", `ensureDbOpen failed: ${
|
|
97
|
-
return false;
|
|
69
|
+
else {
|
|
70
|
+
logWarning("bootstrap", `ensureDbOpen failed: ${result.error?.message ?? "open failed"}`);
|
|
98
71
|
}
|
|
72
|
+
return false;
|
|
99
73
|
}
|
|
100
74
|
export function registerDynamicTools(pi) {
|
|
101
75
|
const fallbackRoot = safeWorkspaceCwd();
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// gsd-pi — Read-only query tools exposing DB state to the LLM via the WAL connection
|
|
4
4
|
import { Type } from "@sinclair/typebox";
|
|
5
5
|
import { ensureDbOpen, resolveCtxCwd } from "./dynamic-tools.js";
|
|
6
|
+
import { checkpointWorkflowDatabase } from "../db-workspace.js";
|
|
6
7
|
export function registerQueryTools(pi) {
|
|
7
8
|
pi.registerTool({
|
|
8
9
|
name: "gsd_milestone_status",
|
|
@@ -50,8 +51,7 @@ export function registerQueryTools(pi) {
|
|
|
50
51
|
details: { operation: "checkpoint_db", error: "db_unavailable" },
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
|
-
|
|
54
|
-
checkpointDatabase();
|
|
54
|
+
checkpointWorkflowDatabase();
|
|
55
55
|
return {
|
|
56
56
|
content: [{ type: "text", text: "WAL checkpoint complete. gsd.db is now up to date and safe to stage with git add." }],
|
|
57
57
|
details: { operation: "checkpoint_db", status: "ok" },
|