@opengsd/gsd-pi 1.2.0-dev.955e4da0 → 1.2.0-dev.a6376d75
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-model-override.d.ts +15 -0
- package/dist/cli-model-override.js +21 -0
- package/dist/cli-style.d.ts +17 -0
- package/dist/cli-style.js +28 -0
- package/dist/cli.js +2 -19
- package/dist/headless-events.d.ts +4 -2
- package/dist/headless-events.js +14 -34
- package/dist/loader.js +6 -4
- package/dist/mcp-server.js +2 -1
- package/dist/models-resolver.d.ts +3 -13
- package/dist/models-resolver.js +3 -22
- package/dist/register-agent-bundles.d.ts +11 -2
- package/dist/register-agent-bundles.js +18 -4
- package/dist/resource-loader.d.ts +10 -5
- package/dist/resource-loader.js +123 -20
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/GSD-WORKFLOW.md +5 -4
- package/dist/resources/extensions/ask-user-questions.js +3 -2
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +30 -64
- package/dist/resources/extensions/async-jobs/await-tool.js +80 -12
- package/dist/resources/extensions/async-jobs/index.js +65 -0
- package/dist/resources/extensions/async-jobs/job-manager.js +12 -1
- package/dist/resources/extensions/bg-shell/bg-shell-command.js +6 -6
- package/dist/resources/extensions/bg-shell/bg-shell-tool.js +10 -7
- package/dist/resources/extensions/bg-shell/overlay.js +9 -6
- package/dist/resources/extensions/bg-shell/process-manager.js +54 -25
- package/dist/resources/extensions/bg-shell/readiness-detector.js +11 -0
- package/dist/resources/extensions/bg-shell/utilities.js +3 -0
- package/dist/resources/extensions/browser-tools/engine/managed-gsd-browser.js +209 -88
- package/dist/resources/extensions/browser-tools/engine/selection.js +73 -5
- package/dist/resources/extensions/browser-tools/index.js +69 -12
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +456 -198
- package/dist/resources/extensions/claude-code-cli/turn-assembler.js +33 -1
- package/dist/resources/extensions/gsd/auto/closeout.js +215 -0
- package/dist/resources/extensions/gsd/auto/custom-verify-retry-store.js +17 -2
- package/dist/resources/extensions/gsd/auto/detect-stuck.js +33 -13
- package/dist/resources/extensions/gsd/auto/dispatch-history.js +120 -0
- package/dist/resources/extensions/gsd/auto/dispatch-key.js +37 -0
- package/dist/resources/extensions/gsd/auto/dispatch.js +365 -0
- package/dist/resources/extensions/gsd/auto/finalize.js +347 -0
- package/dist/resources/extensions/gsd/auto/loop.js +7 -1
- package/dist/resources/extensions/gsd/auto/milestone-lease-reclaim.js +56 -0
- package/dist/resources/extensions/gsd/auto/orchestrator.js +174 -69
- package/dist/resources/extensions/gsd/auto/phase-helpers.js +146 -0
- package/dist/resources/extensions/gsd/auto/phases.js +17 -2329
- package/dist/resources/extensions/gsd/auto/pre-dispatch.js +534 -0
- package/dist/resources/extensions/gsd/auto/session.js +3 -0
- package/dist/resources/extensions/gsd/auto/unit-phase.js +694 -0
- package/dist/resources/extensions/gsd/auto/workflow-unit-dispatch.js +1 -1
- package/dist/resources/extensions/gsd/auto/worktree-safety-phase.js +125 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +11 -34
- package/dist/resources/extensions/gsd/auto-dispatch.js +50 -58
- package/dist/resources/extensions/gsd/auto-model-selection.js +36 -13
- package/dist/resources/extensions/gsd/auto-post-unit.js +35 -8
- package/dist/resources/extensions/gsd/auto-prompts.js +81 -19
- package/dist/resources/extensions/gsd/auto-start.js +41 -18
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +18 -0
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +45 -21
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +12 -20
- package/dist/resources/extensions/gsd/auto-verification.js +23 -30
- package/dist/resources/extensions/gsd/auto-worktree.js +45 -92
- package/dist/resources/extensions/gsd/auto.js +56 -15
- package/dist/resources/extensions/gsd/blocked-models.js +28 -0
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +29 -8
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +60 -13
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -2
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +19 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +212 -48
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +303 -77
- package/dist/resources/extensions/gsd/branch-patterns.js +2 -0
- package/dist/resources/extensions/gsd/browser-daemon-auto-prep.js +83 -0
- package/dist/resources/extensions/gsd/browser-evidence.js +8 -2
- package/dist/resources/extensions/gsd/captures.js +4 -6
- package/dist/resources/extensions/gsd/closeout-wizard.js +92 -0
- package/dist/resources/extensions/gsd/commands/context.js +16 -2
- package/dist/resources/extensions/gsd/commands-handlers.js +46 -3
- package/dist/resources/extensions/gsd/commands-mcp-status.js +2 -2
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +9 -2
- package/dist/resources/extensions/gsd/consent-question.js +353 -0
- package/dist/resources/extensions/gsd/consent-verdict.js +63 -0
- package/dist/resources/extensions/gsd/constants.js +0 -2
- package/dist/resources/extensions/gsd/crash-recovery.js +12 -15
- package/dist/resources/extensions/gsd/db/queries.js +56 -0
- package/dist/resources/extensions/gsd/db-writer.js +8 -17
- package/dist/resources/extensions/gsd/dispatch-guard.js +10 -35
- package/dist/resources/extensions/gsd/doctor-engine-checks.js +5 -5
- package/dist/resources/extensions/gsd/doctor-environment.js +258 -131
- package/dist/resources/extensions/gsd/doctor-format.js +9 -6
- package/dist/resources/extensions/gsd/doctor-git-checks.js +2 -18
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +13 -15
- package/dist/resources/extensions/gsd/engine-hook-contract.js +70 -0
- package/dist/resources/extensions/gsd/error-classifier.js +9 -0
- package/dist/resources/extensions/gsd/exec-sandbox.js +30 -10
- package/dist/resources/extensions/gsd/files.js +33 -19
- package/dist/resources/extensions/gsd/gsd-command-home.js +22 -12
- package/dist/resources/extensions/gsd/gsd-db.js +2 -1
- package/dist/resources/extensions/gsd/guidance.js +158 -0
- package/dist/resources/extensions/gsd/guided-flow.js +110 -6
- package/dist/resources/extensions/gsd/health-widget.js +87 -28
- package/dist/resources/extensions/gsd/markdown-renderer.js +10 -0
- package/dist/resources/extensions/gsd/mcp-bridge.js +10 -0
- package/dist/resources/extensions/gsd/mcp-filter.js +2 -19
- package/dist/resources/extensions/gsd/mcp-tool-name.js +5 -13
- package/dist/resources/extensions/gsd/memory-consolidation-scanner.js +1 -1
- package/dist/resources/extensions/gsd/migrate/safety.js +4 -1
- package/dist/resources/extensions/gsd/milestone-closeout.js +85 -24
- package/dist/resources/extensions/gsd/milestone-planning-persistence.js +2 -2
- package/dist/resources/extensions/gsd/milestone-reopen-events.js +3 -5
- package/dist/resources/extensions/gsd/milestone-settlement.js +2 -2
- package/dist/resources/extensions/gsd/notification-store.js +11 -4
- package/dist/resources/extensions/gsd/notifications.js +12 -7
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +6 -4
- package/dist/resources/extensions/gsd/parsers-legacy.js +16 -4
- package/dist/resources/extensions/gsd/paths.js +27 -0
- package/dist/resources/extensions/gsd/pre-execution-checks.js +91 -3
- package/dist/resources/extensions/gsd/preferences-models.js +14 -48
- package/dist/resources/extensions/gsd/projection-flush.js +7 -0
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +4 -4
- package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -2
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +2 -2
- package/dist/resources/extensions/gsd/prompts/quick-task.md +1 -1
- package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
- package/dist/resources/extensions/gsd/prompts/refine-slice.md +2 -2
- package/dist/resources/extensions/gsd/prompts/replan-slice.md +2 -2
- package/dist/resources/extensions/gsd/prompts/research-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/research-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/rewrite-docs.md +1 -1
- package/dist/resources/extensions/gsd/prompts/run-uat.md +9 -5
- package/dist/resources/extensions/gsd/prompts/system.md +5 -2
- package/dist/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/workflow-start.md +2 -1
- package/dist/resources/extensions/gsd/provider-error-guidance.js +1 -5
- package/dist/resources/extensions/gsd/provider-switch-observer.js +1 -1
- package/dist/resources/extensions/gsd/publication.js +87 -0
- package/dist/resources/extensions/gsd/reactive-graph.js +8 -1
- package/dist/resources/extensions/gsd/recovery-classification.js +37 -94
- package/dist/resources/extensions/gsd/roadmap-slices.js +25 -3
- package/dist/resources/extensions/gsd/safety/destructive-confirmation.js +108 -0
- package/dist/resources/extensions/gsd/session-lock.js +1 -1
- package/dist/resources/extensions/gsd/skill-activation.js +3 -6
- package/dist/resources/extensions/gsd/state.js +12 -22
- package/dist/resources/extensions/gsd/stop-notice.js +57 -0
- package/dist/resources/extensions/gsd/tool-contract.js +14 -3
- package/dist/resources/extensions/gsd/tool-presentation-plan.js +4 -4
- package/dist/resources/extensions/gsd/tool-surface-readiness.js +108 -0
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +3 -2
- package/dist/resources/extensions/gsd/tools/complete-slice.js +22 -12
- package/dist/resources/extensions/gsd/tools/complete-task.js +65 -2
- package/dist/resources/extensions/gsd/tools/exec-tool.js +9 -7
- package/dist/resources/extensions/gsd/tools/plan-slice.js +14 -8
- package/dist/resources/extensions/gsd/tools/plan-task.js +2 -2
- package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +2 -2
- package/dist/resources/extensions/gsd/tools/reopen-milestone.js +2 -2
- package/dist/resources/extensions/gsd/tools/reopen-slice.js +2 -2
- package/dist/resources/extensions/gsd/tools/reopen-task.js +2 -2
- package/dist/resources/extensions/gsd/tools/replan-slice.js +2 -2
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +67 -2
- package/dist/resources/extensions/gsd/uat-policy.js +42 -16
- package/dist/resources/extensions/gsd/unit-closeout.js +138 -0
- package/dist/resources/extensions/gsd/unit-context-composer.js +74 -1
- package/dist/resources/extensions/gsd/unit-context-manifest.js +4 -27
- package/dist/resources/extensions/gsd/unit-registry.js +367 -0
- package/dist/resources/extensions/gsd/unit-tool-contracts.js +9 -182
- package/dist/resources/extensions/gsd/verdict-parser.js +1 -1
- package/dist/resources/extensions/gsd/verification-verdict.js +2 -1
- package/dist/resources/extensions/gsd/web-app-uat.js +45 -8
- package/dist/resources/extensions/gsd/workflow-event-ledger.js +91 -0
- package/dist/resources/extensions/gsd/workflow-event-vocabulary.js +46 -0
- package/dist/resources/extensions/gsd/workflow-events.js +6 -18
- package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +2 -0
- package/dist/resources/extensions/gsd/workflow-mcp-readiness-cache.js +105 -0
- package/dist/resources/extensions/gsd/workflow-reconcile.js +21 -56
- package/dist/resources/extensions/gsd/workflow-tool-surface.js +1 -1
- package/dist/resources/extensions/gsd/worktree-git-recovery.js +15 -9
- package/dist/resources/extensions/gsd/worktree-lifecycle.js +3 -2
- package/dist/resources/extensions/gsd/worktree-manager.js +7 -1
- package/dist/resources/extensions/gsd/worktree-root.js +11 -0
- package/dist/resources/extensions/gsd/worktree-safety.js +28 -26
- package/dist/resources/extensions/gsd/worktree-session-state.js +4 -5
- package/dist/resources/extensions/gsd/worktree.js +8 -1
- package/dist/resources/extensions/mcp-client/manager.js +6 -1
- package/dist/resources/extensions/search-the-web/native-search.js +5 -3
- package/dist/resources/extensions/shared/browser-contract.js +59 -0
- package/dist/resources/extensions/shared/gsd-browser-cli.js +116 -6
- package/dist/resources/shared/gsd-browser-path-sync.js +214 -0
- package/dist/resources/shared/package-manager-detection.js +1 -1
- package/dist/resources/shared/package.json +3 -0
- package/dist/resources/skills/create-skill/SKILL.md +3 -0
- package/dist/resources/skills/create-skill/references/executable-code.md +1 -1
- package/dist/resources/skills/create-skill/references/skill-structure.md +1 -0
- package/dist/resources/skills/create-skill/workflows/add-reference.md +8 -3
- package/dist/resources/skills/create-skill/workflows/add-script.md +4 -2
- package/dist/resources/skills/create-skill/workflows/add-template.md +3 -1
- package/dist/resources/skills/create-skill/workflows/add-workflow.md +8 -3
- package/dist/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
- package/dist/resources/skills/create-skill/workflows/verify-skill.md +9 -4
- package/dist/resources/skills/spike-wrap-up/SKILL.md +9 -9
- package/dist/runtime-checks.d.ts +10 -0
- package/dist/runtime-checks.js +27 -0
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/update-check.d.ts +2 -0
- package/dist/update-check.js +24 -1
- package/dist/update-cmd.js +20 -3
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +13 -13
- 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 +1 -1
- 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/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js.nft.json +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 +13 -13
- package/dist/web/standalone/.next/server/chunks/5124.js +1 -1
- package/dist/web/standalone/.next/server/chunks/8357.js +2 -2
- 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/{796.cf859a427a2cb2ac.js → 796.e0bdc932325d7e03.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{webpack-fbea77b5f9953368.js → webpack-f0285ce91d4ec9ef.js} +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
- package/dist/web/standalone/package.json +1 -1
- package/dist/worktree-cli.js +3 -6
- package/dist/worktree-status-banner.js +7 -15
- package/package.json +3 -3
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/dist/rpc.d.ts +1 -0
- package/packages/contracts/dist/rpc.d.ts.map +1 -1
- package/packages/contracts/dist/rpc.js.map +1 -1
- package/packages/contracts/dist/workflow.d.ts +4 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js.map +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/dist/sdk.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/sdk.js +6 -4
- package/packages/gsd-agent-core/dist/sdk.js.map +1 -1
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +10 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +13 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +55 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +34 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
- 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 +7 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +8 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js +11 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +12 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js +4 -4
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +3 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/README.md +12 -3
- package/packages/mcp-server/dist/cli-runner.d.ts +40 -0
- package/packages/mcp-server/dist/cli-runner.d.ts.map +1 -0
- package/packages/mcp-server/dist/cli-runner.js +137 -0
- package/packages/mcp-server/dist/cli-runner.js.map +1 -0
- package/packages/mcp-server/dist/cli.js +2 -50
- package/packages/mcp-server/dist/cli.js.map +1 -1
- package/packages/mcp-server/dist/moonshot-tool-schema.d.ts +29 -0
- package/packages/mcp-server/dist/moonshot-tool-schema.d.ts.map +1 -0
- package/packages/mcp-server/dist/moonshot-tool-schema.js +50 -0
- package/packages/mcp-server/dist/moonshot-tool-schema.js.map +1 -0
- package/packages/mcp-server/dist/pid-registry.d.ts +46 -0
- package/packages/mcp-server/dist/pid-registry.d.ts.map +1 -0
- package/packages/mcp-server/dist/pid-registry.js +452 -0
- package/packages/mcp-server/dist/pid-registry.js.map +1 -0
- package/packages/mcp-server/dist/probe-mode.d.ts +4 -0
- package/packages/mcp-server/dist/probe-mode.d.ts.map +1 -0
- package/packages/mcp-server/dist/probe-mode.js +10 -0
- package/packages/mcp-server/dist/probe-mode.js.map +1 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +4 -0
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/stdio-watchdog.d.ts +8 -0
- package/packages/mcp-server/dist/stdio-watchdog.d.ts.map +1 -0
- package/packages/mcp-server/dist/stdio-watchdog.js +40 -0
- package/packages/mcp-server/dist/stdio-watchdog.js.map +1 -0
- package/packages/mcp-server/dist/workflow-tools.d.ts +26 -18
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +178 -82
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +5 -4
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +43 -2
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/dist/harness/env/nodejs.d.ts +1 -0
- package/packages/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/harness/env/nodejs.js +34 -3
- package/packages/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
- package/packages/pi-agent-core/dist/index.d.ts +1 -0
- package/packages/pi-agent-core/dist/index.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/index.js +3 -0
- package/packages/pi-agent-core/dist/index.js.map +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/README.md +1 -0
- package/packages/pi-ai/dist/image-models.generated.d.ts +2 -2
- package/packages/pi-ai/dist/image-models.generated.js +6 -6
- package/packages/pi-ai/dist/image-models.generated.js.map +1 -1
- package/packages/pi-ai/dist/index.d.ts +2 -0
- package/packages/pi-ai/dist/index.d.ts.map +1 -1
- package/packages/pi-ai/dist/index.js +2 -0
- package/packages/pi-ai/dist/index.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +35 -125
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +46 -120
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.js +12 -7
- package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/packages/pi-ai/dist/providers/google-shared.d.ts +5 -0
- package/packages/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/google-shared.js +12 -3
- package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/openai-completions.js +7 -3
- package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/packages/pi-ai/dist/utils/moonshot-tool-schema.d.ts +9 -0
- package/packages/pi-ai/dist/utils/moonshot-tool-schema.d.ts.map +1 -0
- package/packages/pi-ai/dist/utils/moonshot-tool-schema.js +34 -0
- package/packages/pi-ai/dist/utils/moonshot-tool-schema.js.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/github-copilot.js +6 -2
- package/packages/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
- package/packages/pi-ai/package.json +3 -2
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +2 -2
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js +19 -13
- package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/provider-readiness.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/provider-readiness.js +13 -6
- package/packages/pi-coding-agent/dist/core/provider-readiness.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +11 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/bash.d.ts +11 -0
- package/packages/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/bash.js +53 -11
- package/packages/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/theme/theme.js +45 -17
- package/packages/pi-coding-agent/dist/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/dist/utils/shell.d.ts +28 -2
- package/packages/pi-coding-agent/dist/utils/shell.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/utils/shell.js +56 -10
- package/packages/pi-coding-agent/dist/utils/shell.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/dist/index.d.ts +1 -1
- package/packages/pi-tui/dist/index.d.ts.map +1 -1
- package/packages/pi-tui/dist/index.js +1 -1
- package/packages/pi-tui/dist/index.js.map +1 -1
- package/packages/pi-tui/dist/terminal-image.d.ts +33 -0
- package/packages/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/packages/pi-tui/dist/terminal-image.js +54 -2
- package/packages/pi-tui/dist/terminal-image.js.map +1 -1
- package/packages/pi-tui/dist/tui.d.ts +8 -0
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +72 -18
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/dist/utils.d.ts.map +1 -1
- package/packages/pi-tui/dist/utils.js +110 -36
- package/packages/pi-tui/dist/utils.js.map +1 -1
- package/packages/pi-tui/package.json +2 -2
- package/packages/rpc-client/package.json +2 -2
- package/pkg/dist/theme/theme.d.ts.map +1 -1
- package/pkg/dist/theme/theme.js +45 -17
- package/pkg/dist/theme/theme.js.map +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/GSD-WORKFLOW.md +5 -4
- package/src/resources/extensions/ask-user-questions.ts +7 -2
- package/src/resources/extensions/async-jobs/async-bash-cancel.test.ts +360 -0
- package/src/resources/extensions/async-jobs/async-bash-tool.ts +33 -56
- package/src/resources/extensions/async-jobs/await-tool.test.ts +139 -0
- package/src/resources/extensions/async-jobs/await-tool.ts +82 -12
- package/src/resources/extensions/async-jobs/index.ts +79 -0
- package/src/resources/extensions/async-jobs/job-manager.ts +21 -1
- package/src/resources/extensions/bg-shell/bg-shell-command.ts +6 -6
- package/src/resources/extensions/bg-shell/bg-shell-tool.ts +10 -6
- package/src/resources/extensions/bg-shell/overlay.ts +9 -5
- package/src/resources/extensions/bg-shell/process-manager.ts +50 -25
- package/src/resources/extensions/bg-shell/readiness-detector.ts +12 -0
- package/src/resources/extensions/bg-shell/tests/lifecycle-and-utilities.test.ts +48 -1
- package/src/resources/extensions/bg-shell/utilities.ts +3 -0
- package/src/resources/extensions/browser-tools/engine/managed-gsd-browser.ts +265 -98
- package/src/resources/extensions/browser-tools/engine/selection.ts +90 -4
- package/src/resources/extensions/browser-tools/index.ts +71 -13
- package/src/resources/extensions/browser-tools/tests/browser-engine-selection.test.mjs +83 -13
- package/src/resources/extensions/browser-tools/tests/gsd-browser-launch-config.test.mjs +40 -1
- package/src/resources/extensions/browser-tools/tests/managed-gsd-browser-tools.test.mjs +136 -0
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +537 -202
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +672 -7
- package/src/resources/extensions/claude-code-cli/turn-assembler.ts +38 -1
- package/src/resources/extensions/gsd/auto/closeout.ts +309 -0
- package/src/resources/extensions/gsd/auto/custom-verify-retry-store.ts +21 -3
- package/src/resources/extensions/gsd/auto/detect-stuck.ts +32 -9
- package/src/resources/extensions/gsd/auto/dispatch-history.ts +168 -0
- package/src/resources/extensions/gsd/auto/dispatch-key.ts +39 -0
- package/src/resources/extensions/gsd/auto/dispatch.ts +449 -0
- package/src/resources/extensions/gsd/auto/finalize.ts +445 -0
- package/src/resources/extensions/gsd/auto/loop.ts +7 -1
- package/src/resources/extensions/gsd/auto/milestone-lease-reclaim.ts +74 -0
- package/src/resources/extensions/gsd/auto/orchestrator.ts +193 -71
- package/src/resources/extensions/gsd/auto/phase-helpers.ts +199 -0
- package/src/resources/extensions/gsd/auto/phases.ts +58 -3022
- package/src/resources/extensions/gsd/auto/pre-dispatch.ts +704 -0
- package/src/resources/extensions/gsd/auto/session.ts +3 -0
- package/src/resources/extensions/gsd/auto/unit-phase.ts +910 -0
- package/src/resources/extensions/gsd/auto/workflow-unit-dispatch.ts +1 -1
- package/src/resources/extensions/gsd/auto/worktree-safety-phase.ts +149 -0
- package/src/resources/extensions/gsd/auto-direct-dispatch.ts +18 -48
- package/src/resources/extensions/gsd/auto-dispatch.ts +48 -61
- package/src/resources/extensions/gsd/auto-model-selection.ts +41 -12
- package/src/resources/extensions/gsd/auto-post-unit.ts +40 -8
- package/src/resources/extensions/gsd/auto-prompts.ts +118 -35
- package/src/resources/extensions/gsd/auto-start.ts +42 -21
- package/src/resources/extensions/gsd/auto-tool-tracking.ts +19 -0
- package/src/resources/extensions/gsd/auto-unit-closeout.ts +83 -28
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +14 -21
- package/src/resources/extensions/gsd/auto-verification.ts +26 -28
- package/src/resources/extensions/gsd/auto-worktree.ts +45 -95
- package/src/resources/extensions/gsd/auto.ts +72 -17
- package/src/resources/extensions/gsd/blocked-models.ts +49 -0
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +37 -10
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +79 -12
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -2
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +24 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +251 -47
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +352 -84
- package/src/resources/extensions/gsd/branch-patterns.ts +3 -0
- package/src/resources/extensions/gsd/browser-daemon-auto-prep.ts +108 -0
- package/src/resources/extensions/gsd/browser-evidence.ts +18 -2
- package/src/resources/extensions/gsd/captures.ts +4 -6
- package/src/resources/extensions/gsd/closeout-wizard.ts +102 -0
- package/src/resources/extensions/gsd/commands/context.ts +16 -2
- package/src/resources/extensions/gsd/commands-handlers.ts +46 -3
- package/src/resources/extensions/gsd/commands-mcp-status.ts +2 -2
- package/src/resources/extensions/gsd/commands-workflow-templates.ts +11 -4
- package/src/resources/extensions/gsd/consent-question.ts +431 -0
- package/src/resources/extensions/gsd/consent-verdict.ts +86 -0
- package/src/resources/extensions/gsd/constants.ts +0 -3
- package/src/resources/extensions/gsd/crash-recovery.ts +13 -11
- package/src/resources/extensions/gsd/db/queries.ts +66 -0
- package/src/resources/extensions/gsd/db-writer.ts +11 -19
- package/src/resources/extensions/gsd/dispatch-guard.ts +8 -31
- package/src/resources/extensions/gsd/doctor-engine-checks.ts +5 -4
- package/src/resources/extensions/gsd/doctor-environment.ts +269 -149
- package/src/resources/extensions/gsd/doctor-format.ts +12 -7
- package/src/resources/extensions/gsd/doctor-git-checks.ts +2 -19
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +13 -15
- package/src/resources/extensions/gsd/engine-hook-contract.ts +79 -0
- package/src/resources/extensions/gsd/error-classifier.ts +11 -0
- package/src/resources/extensions/gsd/exec-sandbox.ts +49 -9
- package/src/resources/extensions/gsd/files.ts +33 -12
- package/src/resources/extensions/gsd/gsd-command-home.ts +13 -3
- package/src/resources/extensions/gsd/gsd-db.ts +4 -3
- package/src/resources/extensions/gsd/guidance.ts +217 -0
- package/src/resources/extensions/gsd/guided-flow.ts +161 -26
- package/src/resources/extensions/gsd/health-widget.ts +91 -27
- package/src/resources/extensions/gsd/markdown-renderer.ts +11 -0
- package/src/resources/extensions/gsd/mcp-bridge.ts +39 -0
- package/src/resources/extensions/gsd/mcp-filter.ts +2 -23
- package/src/resources/extensions/gsd/mcp-tool-name.ts +6 -11
- package/src/resources/extensions/gsd/memory-consolidation-scanner.ts +1 -1
- package/src/resources/extensions/gsd/migrate/safety.ts +4 -1
- package/src/resources/extensions/gsd/milestone-closeout.ts +109 -24
- package/src/resources/extensions/gsd/milestone-planning-persistence.ts +2 -2
- package/src/resources/extensions/gsd/milestone-reopen-events.ts +3 -6
- package/src/resources/extensions/gsd/milestone-settlement.ts +2 -2
- package/src/resources/extensions/gsd/notification-store.ts +26 -3
- package/src/resources/extensions/gsd/notifications.ts +13 -6
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +6 -4
- package/src/resources/extensions/gsd/parsers-legacy.ts +16 -4
- package/src/resources/extensions/gsd/paths.ts +33 -0
- package/src/resources/extensions/gsd/pre-execution-checks.ts +109 -3
- package/src/resources/extensions/gsd/preferences-models.ts +12 -47
- package/src/resources/extensions/gsd/projection-flush.ts +20 -0
- package/src/resources/extensions/gsd/prompts/complete-slice.md +4 -4
- package/src/resources/extensions/gsd/prompts/execute-task.md +3 -2
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/plan-slice.md +2 -2
- package/src/resources/extensions/gsd/prompts/quick-task.md +1 -1
- package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
- package/src/resources/extensions/gsd/prompts/refine-slice.md +2 -2
- package/src/resources/extensions/gsd/prompts/replan-slice.md +2 -2
- package/src/resources/extensions/gsd/prompts/research-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/research-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/rewrite-docs.md +1 -1
- package/src/resources/extensions/gsd/prompts/run-uat.md +9 -5
- package/src/resources/extensions/gsd/prompts/system.md +5 -2
- package/src/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/workflow-start.md +2 -1
- package/src/resources/extensions/gsd/provider-error-guidance.ts +4 -9
- package/src/resources/extensions/gsd/provider-switch-observer.ts +1 -1
- package/src/resources/extensions/gsd/publication.ts +122 -0
- package/src/resources/extensions/gsd/reactive-graph.ts +11 -1
- package/src/resources/extensions/gsd/recovery-classification.ts +42 -96
- package/src/resources/extensions/gsd/roadmap-slices.ts +28 -3
- package/src/resources/extensions/gsd/safety/destructive-confirmation.ts +134 -0
- package/src/resources/extensions/gsd/session-lock.ts +1 -1
- package/src/resources/extensions/gsd/skill-activation.ts +3 -6
- package/src/resources/extensions/gsd/state.ts +16 -22
- package/src/resources/extensions/gsd/stop-notice.ts +75 -0
- package/src/resources/extensions/gsd/tests/auto-abort-pause-regression.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-blocked-remediation-message.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +206 -22
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +97 -1
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +273 -37
- package/src/resources/extensions/gsd/tests/auto-pause-double-entry-guard.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +77 -1
- package/src/resources/extensions/gsd/tests/auto-phases-lifecycle.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/auto-remote-session-lock-cleanup.test.ts +65 -3
- package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +236 -0
- package/src/resources/extensions/gsd/tests/auto-unit-closeout.test.ts +169 -1
- package/src/resources/extensions/gsd/tests/blocked-models.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/browser-automation-contract-fixture.ts +39 -0
- package/src/resources/extensions/gsd/tests/browser-contract.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/browser-daemon-auto-prep.test.ts +144 -0
- package/src/resources/extensions/gsd/tests/checkout-branch-stash-guard.test.ts +66 -1
- package/src/resources/extensions/gsd/tests/clear-stale-autostart.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +8 -7
- package/src/resources/extensions/gsd/tests/complete-slice-verification-gate.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +141 -5
- package/src/resources/extensions/gsd/tests/consent-question.test.ts +351 -0
- package/src/resources/extensions/gsd/tests/custom-verify-retry-store.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +15 -4
- package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +12 -11
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/destructive-confirmation.test.ts +303 -0
- package/src/resources/extensions/gsd/tests/discuss-routing-fixes.test.ts +12 -2
- package/src/resources/extensions/gsd/tests/dispatch-history.test.ts +328 -0
- package/src/resources/extensions/gsd/tests/dispatch-run-uat-browser-tools.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/dist-redirect.mjs +8 -0
- package/src/resources/extensions/gsd/tests/doctor-git-checks-terminal.test.ts +73 -0
- package/src/resources/extensions/gsd/tests/dynamic-bash-no-cap.test.ts +132 -0
- package/src/resources/extensions/gsd/tests/engine-hook-contract.test.ts +148 -0
- package/src/resources/extensions/gsd/tests/engine-interfaces-contract.test.ts +117 -91
- package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +113 -0
- package/src/resources/extensions/gsd/tests/exec-graceful-kill.test.ts +193 -0
- package/src/resources/extensions/gsd/tests/exec-tool.test.ts +29 -1
- package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +35 -1
- package/src/resources/extensions/gsd/tests/gsd-command-home.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/guidance.test.ts +148 -0
- package/src/resources/extensions/gsd/tests/guided-dispatch-root.test.ts +18 -6
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +53 -11
- package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +88 -58
- package/src/resources/extensions/gsd/tests/integration/doctor-environment-async.test.ts +104 -0
- package/src/resources/extensions/gsd/tests/integration/gsd-integration-fixture.ts +80 -0
- package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +217 -0
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +47 -16
- package/src/resources/extensions/gsd/tests/mcp-project-config.test.ts +3 -1
- package/src/resources/extensions/gsd/tests/mcp-readiness-preflight.test.ts +205 -0
- package/src/resources/extensions/gsd/tests/mcp-status.test.ts +6 -5
- package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +95 -4
- package/src/resources/extensions/gsd/tests/milestone-merge-stash-restore.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/milestone-report-path.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/milestone-settlement.test.ts +92 -0
- package/src/resources/extensions/gsd/tests/milestone-transition-state-rebuild.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +32 -1
- package/src/resources/extensions/gsd/tests/notification-store.test.ts +32 -0
- package/src/resources/extensions/gsd/tests/notifications.test.ts +64 -9
- package/src/resources/extensions/gsd/tests/oauth-api-model-routing.test.ts +167 -0
- package/src/resources/extensions/gsd/tests/parallel-research-dispatch.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/parsers-legacy-importers.test.ts +143 -0
- package/src/resources/extensions/gsd/tests/phases-merge-error-stops-auto.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/phases-terminal-complete-idempotent.test.ts +242 -0
- package/src/resources/extensions/gsd/tests/plan-gate-failed-doctor-heal-hint.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/post-exec-retry-bypass.test.ts +63 -2
- package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +193 -1
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +10 -2
- package/src/resources/extensions/gsd/tests/prompt-db.test.ts +124 -6
- package/src/resources/extensions/gsd/tests/provider-error-guidance.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +2 -4
- package/src/resources/extensions/gsd/tests/publication.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +157 -0
- package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +31 -81
- package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +68 -0
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +27 -2
- package/src/resources/extensions/gsd/tests/skill-activation.test.ts +20 -17
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +7 -3
- package/src/resources/extensions/gsd/tests/stop-auto-race-null-unit.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/stop-notice.test.ts +70 -0
- package/src/resources/extensions/gsd/tests/teardown-chdir-failure-clears-registry.test.ts +17 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +80 -2
- package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/tool-surface-readiness.test.ts +329 -0
- package/src/resources/extensions/gsd/tests/tool-unavailable-retry.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/transport-gate-double-complete.test.ts +139 -0
- package/src/resources/extensions/gsd/tests/uat-policy.test.ts +112 -29
- package/src/resources/extensions/gsd/tests/unit-closeout.test.ts +209 -0
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +67 -2
- package/src/resources/extensions/gsd/tests/unit-registry.test.ts +163 -0
- package/src/resources/extensions/gsd/tests/uok-audit-unified.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/verification-verdict.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/web-app-uat.test.ts +44 -1
- package/src/resources/extensions/gsd/tests/workflow-events.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp-readiness-cache.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +67 -4
- package/src/resources/extensions/gsd/tests/workflow-phase-contract-matrix.test.ts +332 -0
- package/src/resources/extensions/gsd/tests/workflow-reconcile.test.ts +20 -0
- package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +92 -0
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +275 -40
- package/src/resources/extensions/gsd/tests/worktree-health-dispatch.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-project-root-degrade.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/worktree-safety-phase.test.ts +100 -0
- package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +72 -0
- package/src/resources/extensions/gsd/tests/worktree-teardown-safety.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/worktree.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/write-gate-seam.test.ts +358 -0
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +67 -1
- package/src/resources/extensions/gsd/tool-contract.ts +38 -3
- package/src/resources/extensions/gsd/tool-presentation-plan.ts +4 -4
- package/src/resources/extensions/gsd/tool-surface-readiness.ts +183 -0
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +3 -2
- package/src/resources/extensions/gsd/tools/complete-slice.ts +22 -12
- package/src/resources/extensions/gsd/tools/complete-task.ts +90 -2
- package/src/resources/extensions/gsd/tools/exec-tool.ts +8 -7
- package/src/resources/extensions/gsd/tools/plan-slice.ts +14 -8
- package/src/resources/extensions/gsd/tools/plan-task.ts +2 -2
- package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +2 -2
- package/src/resources/extensions/gsd/tools/reopen-milestone.ts +2 -2
- package/src/resources/extensions/gsd/tools/reopen-slice.ts +2 -2
- package/src/resources/extensions/gsd/tools/reopen-task.ts +2 -2
- package/src/resources/extensions/gsd/tools/replan-slice.ts +2 -2
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +81 -2
- package/src/resources/extensions/gsd/uat-policy.ts +62 -16
- package/src/resources/extensions/gsd/unit-closeout.ts +201 -0
- package/src/resources/extensions/gsd/unit-context-composer.ts +111 -1
- package/src/resources/extensions/gsd/unit-context-manifest.ts +4 -28
- package/src/resources/extensions/gsd/unit-registry.ts +442 -0
- package/src/resources/extensions/gsd/unit-tool-contracts.ts +27 -192
- package/src/resources/extensions/gsd/verdict-parser.ts +1 -1
- package/src/resources/extensions/gsd/verification-verdict.ts +4 -2
- package/src/resources/extensions/gsd/web-app-uat.ts +51 -8
- package/src/resources/extensions/gsd/workflow-event-ledger.ts +131 -0
- package/src/resources/extensions/gsd/workflow-event-vocabulary.ts +59 -0
- package/src/resources/extensions/gsd/workflow-events.ts +12 -20
- package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +2 -0
- package/src/resources/extensions/gsd/workflow-mcp-readiness-cache.ts +150 -0
- package/src/resources/extensions/gsd/workflow-reconcile.ts +29 -62
- package/src/resources/extensions/gsd/workflow-tool-surface.ts +4 -1
- package/src/resources/extensions/gsd/worktree-git-recovery.ts +15 -9
- package/src/resources/extensions/gsd/worktree-lifecycle.ts +3 -8
- package/src/resources/extensions/gsd/worktree-manager.ts +6 -1
- package/src/resources/extensions/gsd/worktree-root.ts +12 -0
- package/src/resources/extensions/gsd/worktree-safety.ts +41 -39
- package/src/resources/extensions/gsd/worktree-session-state.ts +3 -5
- package/src/resources/extensions/gsd/worktree.ts +7 -1
- package/src/resources/extensions/mcp-client/manager.ts +7 -1
- package/src/resources/extensions/search-the-web/native-search.ts +5 -3
- package/src/resources/extensions/shared/browser-contract.ts +66 -0
- package/src/resources/extensions/shared/gsd-browser-cli.ts +141 -6
- package/src/resources/shared/gsd-browser-path-sync.ts +273 -0
- package/src/resources/shared/package-manager-detection.ts +1 -1
- package/src/resources/shared/package.json +3 -0
- package/src/resources/skills/create-skill/SKILL.md +3 -0
- package/src/resources/skills/create-skill/references/executable-code.md +1 -1
- package/src/resources/skills/create-skill/references/skill-structure.md +1 -0
- package/src/resources/skills/create-skill/workflows/add-reference.md +8 -3
- package/src/resources/skills/create-skill/workflows/add-script.md +4 -2
- package/src/resources/skills/create-skill/workflows/add-template.md +3 -1
- package/src/resources/skills/create-skill/workflows/add-workflow.md +8 -3
- package/src/resources/skills/create-skill/workflows/upgrade-to-router.md +10 -5
- package/src/resources/skills/create-skill/workflows/verify-skill.md +9 -4
- package/src/resources/skills/spike-wrap-up/SKILL.md +9 -9
- package/dist/resources/extensions/gsd/user-input-boundary.js +0 -218
- package/dist/resources/skills/gsd-browser/SKILL.md +0 -41
- package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +0 -173
- package/src/resources/extensions/gsd/user-input-boundary.ts +0 -216
- package/src/resources/skills/gsd-browser/SKILL.md +0 -41
- /package/dist/web/standalone/.next/static/{C24pqUd-aru-l0Dp0gLZP → xyMkEaICFHJoa98VgJyzY}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{C24pqUd-aru-l0Dp0gLZP → xyMkEaICFHJoa98VgJyzY}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuXxB,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CA+BnG;AA+GD,wBAAgB,yBAAyB,CAAC,CAAC,SAAS;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACzE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,CAAC,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAE5B;AA6JD,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrE;AAED,4CAA4C;AAC5C,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3E;AA6FD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7D;AAgCD,UAAU,aAAa;IACrB,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3D,OAAO,CAAC;CACZ;AAED,eAAO,MAAM,mBAAmB,mBAA+B,CAAC;AAChE,eAAO,MAAM,6BAA6B,mBAAyC,CAAC;AACpF,eAAO,MAAM,yBAAyB,mBAAqC,CAAC;AA60B5E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAsB,CAAC;AAwT/D,MAAM,WAAW,4BAA4B;IAC3C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,aAAa,EACzB,OAAO,GAAE,4BAAiC,GACzC,IAAI,CAqyBN"}
|
|
@@ -10,6 +10,9 @@ import { pathToFileURL } from "node:url";
|
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
import { WORKFLOW_TOOL_NAMES as CONTRACT_WORKFLOW_TOOL_NAMES, CANONICAL_WORKFLOW_TOOL_NAMES as CONTRACT_CANONICAL_WORKFLOW_TOOL_NAMES, WORKFLOW_TOOL_ALIAS_NAMES as CONTRACT_WORKFLOW_TOOL_ALIAS_NAMES, } from "@opengsd/contracts";
|
|
12
12
|
import { logAliasUsage } from "./alias-telemetry.js";
|
|
13
|
+
async function importBridgeModule() {
|
|
14
|
+
return importLocalModule("../../../src/resources/extensions/gsd/mcp-bridge.js");
|
|
15
|
+
}
|
|
13
16
|
let workflowToolExecutorsPromise = null;
|
|
14
17
|
let workflowExecutionQueue = Promise.resolve();
|
|
15
18
|
let workflowWriteGatePromise = null;
|
|
@@ -106,7 +109,12 @@ function extractMilestoneId(parsed) {
|
|
|
106
109
|
* the shared project `.gsd/` and auto-mode's verifyExpectedArtifact (which
|
|
107
110
|
* uses the worktree `.gsd/`) fails, triggering a guaranteed retry per unit.
|
|
108
111
|
*/
|
|
109
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Containers a GSD worktree may live in: canonical .gsd-worktrees/ first,
|
|
114
|
+
* legacy .gsd/worktrees/ second. Boundary copy of `worktreesDirs` in
|
|
115
|
+
* src/resources/extensions/gsd/worktree-placement.ts — the MCP server cannot
|
|
116
|
+
* statically import the extension tree. Keep the two lists synchronized.
|
|
117
|
+
*/
|
|
110
118
|
function worktreeContainers(projectRoot) {
|
|
111
119
|
return [join(projectRoot, ".gsd-worktrees"), join(projectRoot, ".gsd", "worktrees")];
|
|
112
120
|
}
|
|
@@ -278,7 +286,7 @@ function getWriteGateModuleCandidates() {
|
|
|
278
286
|
warnCustomWorkflowModule("GSD_WORKFLOW_WRITE_GATE_MODULE", explicitModule);
|
|
279
287
|
candidates.push(explicitModule.startsWith("file:") ? explicitModule : toFileUrl(explicitModule));
|
|
280
288
|
}
|
|
281
|
-
candidates.push(...buildBridgeImportCandidates("../../../src/resources/extensions/gsd/
|
|
289
|
+
candidates.push(...buildBridgeImportCandidates("../../../src/resources/extensions/gsd/mcp-bridge.js")
|
|
282
290
|
.map((p) => new URL(p, import.meta.url).href));
|
|
283
291
|
return [...new Set(candidates)];
|
|
284
292
|
}
|
|
@@ -328,10 +336,27 @@ async function importLocalModule(relativePath) {
|
|
|
328
336
|
}
|
|
329
337
|
throw lastErr;
|
|
330
338
|
}
|
|
339
|
+
async function importWorkflowRuntimeModule(relativePath) {
|
|
340
|
+
const rawCandidates = import.meta.url.includes("/src/") || import.meta.url.includes("\\src\\")
|
|
341
|
+
? _buildImportCandidates(relativePath)
|
|
342
|
+
: buildBridgeImportCandidates(relativePath);
|
|
343
|
+
const candidates = rawCandidates
|
|
344
|
+
.map((p) => new URL(p, import.meta.url).href);
|
|
345
|
+
let lastErr;
|
|
346
|
+
for (const candidate of candidates) {
|
|
347
|
+
try {
|
|
348
|
+
return await import(candidate);
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
lastErr = err;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
throw lastErr;
|
|
355
|
+
}
|
|
331
356
|
async function loadProjectPreferences(projectDir) {
|
|
332
|
-
const
|
|
357
|
+
const bridge = await importBridgeModule();
|
|
333
358
|
try {
|
|
334
|
-
return loadEffectiveGSDPreferences(projectDir).preferences;
|
|
359
|
+
return bridge.loadEffectiveGSDPreferences(projectDir).preferences;
|
|
335
360
|
}
|
|
336
361
|
catch {
|
|
337
362
|
return null;
|
|
@@ -375,6 +400,17 @@ async function getWorkflowToolExecutors() {
|
|
|
375
400
|
}
|
|
376
401
|
return workflowToolExecutorsPromise;
|
|
377
402
|
}
|
|
403
|
+
/**
|
|
404
|
+
* Eagerly load and shape-check the workflow executor and write-gate bridges.
|
|
405
|
+
* The stdio CLI awaits this at startup so a broken bridge fails the spawn
|
|
406
|
+
* with an actionable error instead of presenting an available-looking tool
|
|
407
|
+
* surface that errors on the first call. Shares the cached promises the tool
|
|
408
|
+
* handlers use, so a successful warm-up also removes first-call import latency.
|
|
409
|
+
*/
|
|
410
|
+
export async function warmWorkflowToolBridges() {
|
|
411
|
+
await getWorkflowToolExecutors();
|
|
412
|
+
await getWorkflowWriteGateModule();
|
|
413
|
+
}
|
|
378
414
|
async function getWorkflowWriteGateModule() {
|
|
379
415
|
if (!workflowWriteGatePromise) {
|
|
380
416
|
workflowWriteGatePromise = (async () => {
|
|
@@ -507,8 +543,8 @@ async function runSerializedWorkflowOperation(fn) {
|
|
|
507
543
|
}
|
|
508
544
|
async function runSerializedWorkflowDbOperation(projectDir, fn) {
|
|
509
545
|
return runSerializedWorkflowOperation(async () => {
|
|
510
|
-
const
|
|
511
|
-
const dbAvailable = await ensureDbOpen(projectDir);
|
|
546
|
+
const bridge = await importBridgeModule();
|
|
547
|
+
const dbAvailable = await bridge.ensureDbOpen(projectDir);
|
|
512
548
|
if (!dbAvailable) {
|
|
513
549
|
throw new Error("GSD database is not available");
|
|
514
550
|
}
|
|
@@ -604,23 +640,22 @@ async function inferSaveGateResultScope(projectDir, prepared) {
|
|
|
604
640
|
return out;
|
|
605
641
|
if (!gateId)
|
|
606
642
|
return out;
|
|
607
|
-
const
|
|
608
|
-
if (!(await ensureDbOpen(projectDir)))
|
|
643
|
+
const bridge = await importBridgeModule();
|
|
644
|
+
if (!(await bridge.ensureDbOpen(projectDir)))
|
|
609
645
|
return out;
|
|
610
|
-
|
|
611
|
-
if (!db.getMilestoneSlices || !db.getPendingGates || !db.getGateResults)
|
|
646
|
+
if (!bridge.getMilestoneSlices || !bridge.getPendingGates || !bridge.getGateResults)
|
|
612
647
|
return out;
|
|
613
648
|
const milestoneFilter = stringValue(out.milestoneId);
|
|
614
649
|
const sliceFilter = stringValue(out.sliceId);
|
|
615
650
|
const milestones = milestoneFilter
|
|
616
651
|
? [{ id: milestoneFilter }]
|
|
617
|
-
: (
|
|
652
|
+
: (bridge.getAllMilestones?.() ?? []).filter((milestone) => stringValue(milestone.id));
|
|
618
653
|
const candidates = [];
|
|
619
654
|
for (const milestone of milestones) {
|
|
620
655
|
const milestoneId = stringValue(milestone.id);
|
|
621
656
|
if (!milestoneId)
|
|
622
657
|
continue;
|
|
623
|
-
const slices =
|
|
658
|
+
const slices = bridge.getMilestoneSlices(milestoneId)
|
|
624
659
|
.filter((slice) => {
|
|
625
660
|
const sliceId = stringValue(slice.id);
|
|
626
661
|
return sliceId && (!sliceFilter || sliceId === sliceFilter);
|
|
@@ -630,8 +665,8 @@ async function inferSaveGateResultScope(projectDir, prepared) {
|
|
|
630
665
|
if (!sliceId)
|
|
631
666
|
continue;
|
|
632
667
|
const rows = [
|
|
633
|
-
...
|
|
634
|
-
...
|
|
668
|
+
...bridge.getPendingGates(milestoneId, sliceId),
|
|
669
|
+
...bridge.getGateResults(milestoneId, sliceId),
|
|
635
670
|
];
|
|
636
671
|
for (const row of rows) {
|
|
637
672
|
if (stringValue(row.gate_id)?.toUpperCase() !== gateId)
|
|
@@ -666,8 +701,8 @@ async function handleSaveGateResult(projectDir, args) {
|
|
|
666
701
|
}
|
|
667
702
|
async function ensureMilestoneDbRow(milestoneId) {
|
|
668
703
|
try {
|
|
669
|
-
const
|
|
670
|
-
insertMilestone({ id: milestoneId, status: "queued" });
|
|
704
|
+
const bridge = await importBridgeModule();
|
|
705
|
+
bridge.insertMilestone({ id: milestoneId, status: "queued" });
|
|
671
706
|
}
|
|
672
707
|
catch {
|
|
673
708
|
// Ignore pre-existing rows or transient DB availability issues.
|
|
@@ -675,8 +710,8 @@ async function ensureMilestoneDbRow(milestoneId) {
|
|
|
675
710
|
}
|
|
676
711
|
async function findDatabaseMilestoneIds() {
|
|
677
712
|
try {
|
|
678
|
-
const
|
|
679
|
-
return (getAllMilestones?.() ?? [])
|
|
713
|
+
const bridge = await importBridgeModule();
|
|
714
|
+
return (bridge.getAllMilestones?.() ?? [])
|
|
680
715
|
.map((milestone) => {
|
|
681
716
|
const id = milestone?.id;
|
|
682
717
|
return typeof id === "string" ? id : null;
|
|
@@ -696,7 +731,8 @@ async function findDatabaseMilestoneIds() {
|
|
|
696
731
|
* from an earlier call to this same tool.
|
|
697
732
|
*/
|
|
698
733
|
async function generateOrReuseMilestoneId(projectDir) {
|
|
699
|
-
const
|
|
734
|
+
const bridge = await importBridgeModule();
|
|
735
|
+
const { claimReservedId, findMilestoneIds, getReservedMilestoneIds, nextMilestoneId, milestoneIdSort, } = bridge;
|
|
700
736
|
const reserved = claimReservedId();
|
|
701
737
|
if (reserved) {
|
|
702
738
|
await ensureMilestoneDbRow(reserved);
|
|
@@ -710,7 +746,7 @@ async function generateOrReuseMilestoneId(projectDir) {
|
|
|
710
746
|
]),
|
|
711
747
|
];
|
|
712
748
|
// Attempt ghost-ID reuse before falling back to max+1.
|
|
713
|
-
const { isReusableGhostMilestone } =
|
|
749
|
+
const { isReusableGhostMilestone } = bridge;
|
|
714
750
|
const sorted = [...allIds].sort(milestoneIdSort);
|
|
715
751
|
for (const candidate of sorted) {
|
|
716
752
|
if (isReusableGhostMilestone(projectDir, candidate)) {
|
|
@@ -718,7 +754,7 @@ async function generateOrReuseMilestoneId(projectDir) {
|
|
|
718
754
|
return candidate;
|
|
719
755
|
}
|
|
720
756
|
}
|
|
721
|
-
const prefsMod = await
|
|
757
|
+
const prefsMod = await importBridgeModule().catch(() => null);
|
|
722
758
|
// Graceful degradation: a corrupt preferences file should not crash
|
|
723
759
|
// milestone-id generation. Fall back to non-unique IDs if anything
|
|
724
760
|
// throws here — matches the pre-fix behavior for missing prefs.
|
|
@@ -742,6 +778,71 @@ const projectDirParam = z
|
|
|
742
778
|
.optional()
|
|
743
779
|
.describe("Optional. Omit this field — the server defaults to its current working directory, which is already the correct project or worktree root.");
|
|
744
780
|
const unknownRecord = z.record(z.string(), z.unknown());
|
|
781
|
+
/** Split "id — detail" / "id - detail" pairs used by legacy string payloads. */
|
|
782
|
+
function splitPair(value) {
|
|
783
|
+
const match = value.match(/^(.+?)\s*(?:—|-)\s+(.+)$/);
|
|
784
|
+
return match ? [match[1].trim(), match[2].trim()] : [value.trim(), ""];
|
|
785
|
+
}
|
|
786
|
+
/** Accept string or string[] at runtime; emit array-only JSON Schema (no anyOf). */
|
|
787
|
+
const optionalStringOrStringArray = () => z.preprocess((value) => (value == null ? value : Array.isArray(value) ? value : [value]), z.array(z.string()).optional());
|
|
788
|
+
function optionalStructuredStringArray(itemSchema, coerceString) {
|
|
789
|
+
return z.preprocess((value) => {
|
|
790
|
+
if (value == null)
|
|
791
|
+
return value;
|
|
792
|
+
if (!Array.isArray(value))
|
|
793
|
+
return value;
|
|
794
|
+
return value.map((item) => (typeof item === "string" ? coerceString(item) : item));
|
|
795
|
+
}, z.array(itemSchema).optional());
|
|
796
|
+
}
|
|
797
|
+
const requirementAdvancedItemSchema = z.preprocess((value) => {
|
|
798
|
+
if (typeof value !== "string")
|
|
799
|
+
return value;
|
|
800
|
+
const [id, how] = splitPair(value);
|
|
801
|
+
return { id, how };
|
|
802
|
+
}, z.object({ id: z.string(), how: z.string() }));
|
|
803
|
+
const requirementValidatedItemSchema = z.preprocess((value) => {
|
|
804
|
+
if (typeof value !== "string")
|
|
805
|
+
return value;
|
|
806
|
+
const [id, proof] = splitPair(value);
|
|
807
|
+
return { id, proof };
|
|
808
|
+
}, z.object({ id: z.string(), proof: z.string() }));
|
|
809
|
+
const requirementInvalidatedItemSchema = z.preprocess((value) => {
|
|
810
|
+
if (typeof value !== "string")
|
|
811
|
+
return value;
|
|
812
|
+
const [id, what] = splitPair(value);
|
|
813
|
+
return { id, what };
|
|
814
|
+
}, z.object({ id: z.string(), what: z.string() }));
|
|
815
|
+
const filesModifiedItemSchema = z.preprocess((value) => {
|
|
816
|
+
if (typeof value !== "string")
|
|
817
|
+
return value;
|
|
818
|
+
const [path, description] = splitPair(value);
|
|
819
|
+
return { path, description };
|
|
820
|
+
}, z.object({ path: z.string(), description: z.string() }));
|
|
821
|
+
const requiresItemSchema = z.preprocess((value) => {
|
|
822
|
+
if (typeof value !== "string")
|
|
823
|
+
return value;
|
|
824
|
+
const [slice, provides] = splitPair(value);
|
|
825
|
+
return { slice, provides };
|
|
826
|
+
}, z.object({ slice: z.string(), provides: z.string() }));
|
|
827
|
+
// Accept either a string (legacy command-only form) or the structured object.
|
|
828
|
+
// Mirrors `normalizeVerificationEvidence` in the executor: strings are coerced
|
|
829
|
+
// into the canonical object shape before Zod validates, so the emitted JSON
|
|
830
|
+
// Schema stays a single object type (no anyOf/oneOf) for Moonshot/Kimi.
|
|
831
|
+
const verificationEvidenceItemSchema = z.preprocess((value) => {
|
|
832
|
+
if (typeof value !== "string")
|
|
833
|
+
return value;
|
|
834
|
+
return {
|
|
835
|
+
command: value,
|
|
836
|
+
exitCode: -1,
|
|
837
|
+
verdict: "unknown (coerced from string)",
|
|
838
|
+
durationMs: 0,
|
|
839
|
+
};
|
|
840
|
+
}, z.object({
|
|
841
|
+
command: z.string(),
|
|
842
|
+
exitCode: z.number(),
|
|
843
|
+
verdict: z.string(),
|
|
844
|
+
durationMs: z.number(),
|
|
845
|
+
}));
|
|
745
846
|
const nonEmptyString = (field) => z.string().trim().min(1, `${field} must be a non-empty string`);
|
|
746
847
|
// Optional non-empty string: accepts omitted/undefined but rejects "" or
|
|
747
848
|
// whitespace. Mirrors executor guards of the form
|
|
@@ -987,34 +1088,34 @@ const sliceCompleteParams = {
|
|
|
987
1088
|
deviations: z.string().optional(),
|
|
988
1089
|
knownLimitations: z.string().optional(),
|
|
989
1090
|
followUps: z.string().optional(),
|
|
990
|
-
keyFiles:
|
|
991
|
-
keyDecisions:
|
|
992
|
-
patternsEstablished:
|
|
993
|
-
observabilitySurfaces:
|
|
994
|
-
provides:
|
|
995
|
-
requirementsSurfaced:
|
|
996
|
-
drillDownPaths:
|
|
997
|
-
affects:
|
|
998
|
-
requirementsAdvanced:
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
requirementsValidated:
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
requirementsInvalidated:
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
filesModified:
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
requires:
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1091
|
+
keyFiles: optionalStringOrStringArray(),
|
|
1092
|
+
keyDecisions: optionalStringOrStringArray(),
|
|
1093
|
+
patternsEstablished: optionalStringOrStringArray(),
|
|
1094
|
+
observabilitySurfaces: optionalStringOrStringArray(),
|
|
1095
|
+
provides: optionalStringOrStringArray(),
|
|
1096
|
+
requirementsSurfaced: optionalStringOrStringArray(),
|
|
1097
|
+
drillDownPaths: optionalStringOrStringArray(),
|
|
1098
|
+
affects: optionalStringOrStringArray(),
|
|
1099
|
+
requirementsAdvanced: optionalStructuredStringArray(requirementAdvancedItemSchema, (value) => {
|
|
1100
|
+
const [id, how] = splitPair(value);
|
|
1101
|
+
return { id, how };
|
|
1102
|
+
}),
|
|
1103
|
+
requirementsValidated: optionalStructuredStringArray(requirementValidatedItemSchema, (value) => {
|
|
1104
|
+
const [id, proof] = splitPair(value);
|
|
1105
|
+
return { id, proof };
|
|
1106
|
+
}),
|
|
1107
|
+
requirementsInvalidated: optionalStructuredStringArray(requirementInvalidatedItemSchema, (value) => {
|
|
1108
|
+
const [id, what] = splitPair(value);
|
|
1109
|
+
return { id, what };
|
|
1110
|
+
}),
|
|
1111
|
+
filesModified: optionalStructuredStringArray(filesModifiedItemSchema, (value) => {
|
|
1112
|
+
const [path, description] = splitPair(value);
|
|
1113
|
+
return { path, description };
|
|
1114
|
+
}),
|
|
1115
|
+
requires: optionalStructuredStringArray(requiresItemSchema, (value) => {
|
|
1116
|
+
const [slice, provides] = splitPair(value);
|
|
1117
|
+
return { slice, provides };
|
|
1118
|
+
}),
|
|
1018
1119
|
};
|
|
1019
1120
|
const sliceCompleteSchema = z.object(sliceCompleteParams);
|
|
1020
1121
|
export const _sliceCompleteSchemaForTest = sliceCompleteSchema;
|
|
@@ -1128,15 +1229,7 @@ const taskCompleteParams = {
|
|
|
1128
1229
|
recommendationRationale: z.string().describe("Why the recommendation — 1-2 sentences."),
|
|
1129
1230
|
continueWithDefault: z.boolean().describe("When true, the recommendation is recorded as the default, but auto-mode still pauses until the user resolves via /gsd escalate resolve."),
|
|
1130
1231
|
}).optional().describe("ADR-011 Phase 2: optional escalation payload. Only honored when phases.mid_execution_escalation is true."),
|
|
1131
|
-
verificationEvidence: z.array(
|
|
1132
|
-
z.object({
|
|
1133
|
-
command: z.string(),
|
|
1134
|
-
exitCode: z.number(),
|
|
1135
|
-
verdict: z.string(),
|
|
1136
|
-
durationMs: z.number(),
|
|
1137
|
-
}),
|
|
1138
|
-
z.string(),
|
|
1139
|
-
])).optional().describe("Verification evidence entries"),
|
|
1232
|
+
verificationEvidence: z.array(verificationEvidenceItemSchema).optional().describe("Verification evidence entries"),
|
|
1140
1233
|
};
|
|
1141
1234
|
const taskCompleteSchema = z.object(taskCompleteParams);
|
|
1142
1235
|
const taskReopenParams = {
|
|
@@ -1261,7 +1354,11 @@ const uatResultSaveParams = {
|
|
|
1261
1354
|
checks: z.array(uatCheckSchema).min(1).describe("Structured check results"),
|
|
1262
1355
|
presentation: uatPresentationSchema.describe("Tool-presentation evidence"),
|
|
1263
1356
|
notes: z.string().optional().describe("Overall verdict rationale"),
|
|
1264
|
-
|
|
1357
|
+
// Accept number (e.g. 1) or string (e.g. "1", "auto") and coerce to string
|
|
1358
|
+
// before validation, so the emitted JSON Schema stays a single primitive type
|
|
1359
|
+
// (no anyOf/oneOf) for Moonshot/Kimi. The executor still treats "auto" and
|
|
1360
|
+
// numeric strings as previously.
|
|
1361
|
+
attempt: z.preprocess((value) => (typeof value === "number" ? String(value) : value), z.string().optional()).describe("Attempt number or auto"),
|
|
1265
1362
|
previousAttemptId: z.string().optional(),
|
|
1266
1363
|
};
|
|
1267
1364
|
const uatResultSaveSchema = z.object(uatResultSaveParams);
|
|
@@ -1328,8 +1425,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1328
1425
|
const { projectDir, ...params } = parsed;
|
|
1329
1426
|
await enforceWorkflowWriteGate("gsd_decision_save", projectDir);
|
|
1330
1427
|
const result = await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1331
|
-
const
|
|
1332
|
-
return saveDecisionToDb(params, projectDir);
|
|
1428
|
+
const bridge = await importBridgeModule();
|
|
1429
|
+
return bridge.saveDecisionToDb(params, projectDir);
|
|
1333
1430
|
});
|
|
1334
1431
|
return { content: [{ type: "text", text: `Saved decision ${result.id}` }] };
|
|
1335
1432
|
});
|
|
@@ -1339,8 +1436,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1339
1436
|
const { projectDir, ...params } = parsed;
|
|
1340
1437
|
await enforceWorkflowWriteGate("gsd_decision_save", projectDir);
|
|
1341
1438
|
const result = await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1342
|
-
const
|
|
1343
|
-
return saveDecisionToDb(params, projectDir);
|
|
1439
|
+
const bridge = await importBridgeModule();
|
|
1440
|
+
return bridge.saveDecisionToDb(params, projectDir);
|
|
1344
1441
|
});
|
|
1345
1442
|
return { content: [{ type: "text", text: `Saved decision ${result.id}` }] };
|
|
1346
1443
|
});
|
|
@@ -1349,8 +1446,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1349
1446
|
const { projectDir, id, ...updates } = parsed;
|
|
1350
1447
|
await enforceWorkflowWriteGate("gsd_requirement_update", projectDir);
|
|
1351
1448
|
await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1352
|
-
const
|
|
1353
|
-
return updateRequirementInDb(id, updates, projectDir);
|
|
1449
|
+
const bridge = await importBridgeModule();
|
|
1450
|
+
return bridge.updateRequirementInDb(id, updates, projectDir);
|
|
1354
1451
|
});
|
|
1355
1452
|
return { content: [{ type: "text", text: `Updated requirement ${id}` }] };
|
|
1356
1453
|
});
|
|
@@ -1360,8 +1457,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1360
1457
|
const { projectDir, id, ...updates } = parsed;
|
|
1361
1458
|
await enforceWorkflowWriteGate("gsd_requirement_update", projectDir);
|
|
1362
1459
|
await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1363
|
-
const
|
|
1364
|
-
return updateRequirementInDb(id, updates, projectDir);
|
|
1460
|
+
const bridge = await importBridgeModule();
|
|
1461
|
+
return bridge.updateRequirementInDb(id, updates, projectDir);
|
|
1365
1462
|
});
|
|
1366
1463
|
return { content: [{ type: "text", text: `Updated requirement ${id}` }] };
|
|
1367
1464
|
});
|
|
@@ -1370,8 +1467,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1370
1467
|
const { projectDir, ...params } = parsed;
|
|
1371
1468
|
await enforceWorkflowWriteGate("gsd_requirement_save", projectDir);
|
|
1372
1469
|
const result = await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1373
|
-
const
|
|
1374
|
-
return saveRequirementToDb(params, projectDir);
|
|
1470
|
+
const bridge = await importBridgeModule();
|
|
1471
|
+
return bridge.saveRequirementToDb(params, projectDir);
|
|
1375
1472
|
});
|
|
1376
1473
|
return { content: [{ type: "text", text: `Saved requirement ${result.id}` }] };
|
|
1377
1474
|
});
|
|
@@ -1381,8 +1478,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1381
1478
|
const { projectDir, ...params } = parsed;
|
|
1382
1479
|
await enforceWorkflowWriteGate("gsd_requirement_save", projectDir);
|
|
1383
1480
|
const result = await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1384
|
-
const
|
|
1385
|
-
return saveRequirementToDb(params, projectDir);
|
|
1481
|
+
const bridge = await importBridgeModule();
|
|
1482
|
+
return bridge.saveRequirementToDb(params, projectDir);
|
|
1386
1483
|
});
|
|
1387
1484
|
return { content: [{ type: "text", text: `Saved requirement ${result.id}` }] };
|
|
1388
1485
|
});
|
|
@@ -1483,14 +1580,13 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1483
1580
|
await enforceWorkflowWriteGate("gsd_skip_slice", projectDir, milestoneId);
|
|
1484
1581
|
await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1485
1582
|
const { handleSkipSlice } = await importLocalModule("../../../src/resources/extensions/gsd/tools/skip-slice.js");
|
|
1486
|
-
const
|
|
1487
|
-
const { rebuildState } = await importLocalModule("../../../src/resources/extensions/gsd/doctor.js");
|
|
1583
|
+
const bridge = await importBridgeModule();
|
|
1488
1584
|
const result = handleSkipSlice({ milestoneId, sliceId, reason });
|
|
1489
1585
|
if (result.error) {
|
|
1490
1586
|
throw new Error(result.error);
|
|
1491
1587
|
}
|
|
1492
|
-
invalidateStateCache();
|
|
1493
|
-
await rebuildState(projectDir);
|
|
1588
|
+
bridge.invalidateStateCache();
|
|
1589
|
+
await bridge.rebuildState(projectDir);
|
|
1494
1590
|
});
|
|
1495
1591
|
return {
|
|
1496
1592
|
content: [{ type: "text", text: `Skipped slice ${sliceId} (${milestoneId}). Reason: ${reason ?? "User-directed skip"}.` }],
|
|
@@ -1618,8 +1714,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1618
1714
|
server.tool("gsd_checkpoint_db", "Flush the SQLite WAL into gsd.db so git add stages the current GSD database state.", checkpointDbParams, async (args) => {
|
|
1619
1715
|
const { projectDir } = parseWorkflowArgs(checkpointDbSchema, args);
|
|
1620
1716
|
await runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1621
|
-
const
|
|
1622
|
-
checkpointDatabase();
|
|
1717
|
+
const bridge = await importBridgeModule();
|
|
1718
|
+
bridge.checkpointDatabase();
|
|
1623
1719
|
});
|
|
1624
1720
|
return {
|
|
1625
1721
|
content: [{
|
|
@@ -1631,8 +1727,8 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1631
1727
|
});
|
|
1632
1728
|
server.tool("gsd_journal_query", "Query the structured event journal for auto-mode iterations.", journalQueryParams, async (args) => {
|
|
1633
1729
|
const { projectDir, limit, ...filters } = parseWorkflowArgs(journalQuerySchema, args);
|
|
1634
|
-
const
|
|
1635
|
-
const entries = queryJournal(projectDir, filters).slice(0, limit ?? 100);
|
|
1730
|
+
const bridge = await importBridgeModule();
|
|
1731
|
+
const entries = bridge.queryJournal(projectDir, filters).slice(0, limit ?? 100);
|
|
1636
1732
|
if (entries.length === 0) {
|
|
1637
1733
|
return { content: [{ type: "text", text: "No matching journal entries found." }] };
|
|
1638
1734
|
}
|
|
@@ -1711,7 +1807,7 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1711
1807
|
const { projectDir, ...params } = parseWorkflowArgs(captureThoughtSchema, args);
|
|
1712
1808
|
await enforceWorkflowWriteGate("gsd_capture_thought", projectDir);
|
|
1713
1809
|
return runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1714
|
-
const { executeMemoryCapture } = await
|
|
1810
|
+
const { executeMemoryCapture } = await importWorkflowRuntimeModule("../../../src/resources/extensions/gsd/tools/memory-tools.js");
|
|
1715
1811
|
return executeMemoryCapture(params);
|
|
1716
1812
|
});
|
|
1717
1813
|
});
|
|
@@ -1740,7 +1836,7 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1740
1836
|
server.tool("gsd_memory_query", "Search the GSD memory store by keyword. Returns ranked memories with id, category, content, confidence, scope, and tags. Mirrors the in-process memory_query tool for external MCP clients.", memoryQueryParams, async (args) => {
|
|
1741
1837
|
const { projectDir, ...params } = parseWorkflowArgs(memoryQuerySchema, args);
|
|
1742
1838
|
return runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1743
|
-
const { executeMemoryQuery } = await
|
|
1839
|
+
const { executeMemoryQuery } = await importWorkflowRuntimeModule("../../../src/resources/extensions/gsd/tools/memory-tools.js");
|
|
1744
1840
|
return executeMemoryQuery(params);
|
|
1745
1841
|
});
|
|
1746
1842
|
});
|
|
@@ -1761,7 +1857,7 @@ export function registerWorkflowTools(realServer, options = {}) {
|
|
|
1761
1857
|
server.tool("gsd_memory_graph", "Inspect the relationship graph between memories. mode=query walks edges from a given memoryId. mode=build is a placeholder reserved for future graph rebuilds. Distinct from gsd_graph (project knowledge graph) — see ADR-013.", memoryGraphParams, async (args) => {
|
|
1762
1858
|
const { projectDir, ...params } = parseWorkflowArgs(memoryGraphSchema, args);
|
|
1763
1859
|
return runSerializedWorkflowDbOperation(projectDir, async () => {
|
|
1764
|
-
const { executeGsdGraph } = await
|
|
1860
|
+
const { executeGsdGraph } = await importWorkflowRuntimeModule("../../../src/resources/extensions/gsd/tools/memory-tools.js");
|
|
1765
1861
|
return executeGsdGraph(params);
|
|
1766
1862
|
});
|
|
1767
1863
|
});
|