@opengsd/gsd-pi 1.2.0-dev.fbdca60b → 1.3.0-dev.65546769
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/README.md +13 -7
- package/dist/cli.js +28 -1
- package/dist/headless-context.js +0 -1
- package/dist/headless-events.d.ts +16 -1
- package/dist/headless-events.js +19 -2
- package/dist/headless.js +8 -1
- package/dist/help-text.js +29 -0
- package/dist/hermes-integration-install.d.ts +17 -0
- package/dist/hermes-integration-install.js +199 -0
- package/dist/jiti-workspace-aliases.d.ts +11 -2
- package/dist/jiti-workspace-aliases.js +19 -3
- package/dist/onboarding.js +9 -4
- package/dist/provider-migrations.d.ts +23 -0
- package/dist/provider-migrations.js +41 -0
- package/dist/read-cli.d.ts +23 -0
- package/dist/read-cli.js +90 -0
- package/dist/resource-loader.d.ts +3 -3
- package/dist/resource-loader.js +4 -13
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/GSD-WORKFLOW.md +22 -22
- package/dist/resources/extensions/claude-code-cli/index.js +7 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +73 -20
- package/dist/resources/extensions/google-cli/stream-adapter.js +16 -1
- package/dist/resources/extensions/gsd/auto/dispatch-history.js +6 -1
- package/dist/resources/extensions/gsd/auto/loop.js +67 -2
- package/dist/resources/extensions/gsd/auto/orchestrator.js +50 -10
- package/dist/resources/extensions/gsd/auto/pre-dispatch.js +8 -0
- package/dist/resources/extensions/gsd/auto/workflow-kernel.js +15 -1
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +81 -19
- package/dist/resources/extensions/gsd/auto-closeout-messaging.js +90 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +255 -431
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +15 -3
- package/dist/resources/extensions/gsd/auto-dispatch.js +47 -8
- package/dist/resources/extensions/gsd/auto-model-selection.js +14 -8
- package/dist/resources/extensions/gsd/auto-post-unit.js +39 -29
- package/dist/resources/extensions/gsd/auto-prompts.js +44 -30
- package/dist/resources/extensions/gsd/auto-recovery.js +118 -40
- package/dist/resources/extensions/gsd/auto-runtime-state.js +13 -0
- package/dist/resources/extensions/gsd/auto-start.js +58 -31
- package/dist/resources/extensions/gsd/auto-verification.js +5 -2
- package/dist/resources/extensions/gsd/auto-worktree.js +149 -91
- package/dist/resources/extensions/gsd/auto.js +97 -31
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +42 -54
- package/dist/resources/extensions/gsd/bootstrap/fallback-continuation.js +25 -0
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +24 -2
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +108 -9
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +164 -44
- package/dist/resources/extensions/gsd/bootstrap/tool-search-shim.js +22 -3
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +113 -27
- package/dist/resources/extensions/gsd/closeout-consistency-gate.js +92 -4
- package/dist/resources/extensions/gsd/closeout-wizard.js +8 -3
- package/dist/resources/extensions/gsd/codebase-generator.js +5 -8
- package/dist/resources/extensions/gsd/commands/catalog.js +6 -0
- package/dist/resources/extensions/gsd/commands/dispatcher.js +3 -0
- package/dist/resources/extensions/gsd/commands/gsd-core-aliases-handler.js +39 -0
- package/dist/resources/extensions/gsd/commands/gsd-core-aliases.js +44 -0
- package/dist/resources/extensions/gsd/commands/handlers/core.js +52 -8
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +227 -3
- package/dist/resources/extensions/gsd/commands-cmux.js +3 -1
- package/dist/resources/extensions/gsd/commands-gsd-core.js +868 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +67 -1
- package/dist/resources/extensions/gsd/commands-maintenance.js +79 -2
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +14 -1
- package/dist/resources/extensions/gsd/commands-verdict.js +17 -11
- package/dist/resources/extensions/gsd/compat/compat-marker.js +172 -0
- package/dist/resources/extensions/gsd/compat/index.js +3 -0
- package/dist/resources/extensions/gsd/compat/planning-compat.js +142 -0
- package/dist/resources/extensions/gsd/config-overlay.js +11 -8
- package/dist/resources/extensions/gsd/consent-question.js +12 -0
- package/dist/resources/extensions/gsd/consent-verdict.js +10 -0
- package/dist/resources/extensions/gsd/dashboard-overlay.js +39 -3
- package/dist/resources/extensions/gsd/db/engine.js +27 -0
- package/dist/resources/extensions/gsd/db/queries.js +54 -0
- package/dist/resources/extensions/gsd/db/unit-dispatches.js +22 -1
- package/dist/resources/extensions/gsd/db/writers/reconcile.js +19 -1
- package/dist/resources/extensions/gsd/db-workspace.js +13 -1
- package/dist/resources/extensions/gsd/discussion-handoff.js +9 -5
- package/dist/resources/extensions/gsd/doctor-git-checks.js +30 -4
- package/dist/resources/extensions/gsd/doctor-providers.js +1 -1
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +13 -24
- package/dist/resources/extensions/gsd/doctor.js +28 -7
- package/dist/resources/extensions/gsd/error-classifier.js +13 -1
- package/dist/resources/extensions/gsd/escalation.js +11 -4
- package/dist/resources/extensions/gsd/export-html.js +10 -3
- package/dist/resources/extensions/gsd/export.js +73 -0
- package/dist/resources/extensions/gsd/file-lock.js +1 -1
- package/dist/resources/extensions/gsd/flat-phase-migration.js +176 -0
- package/dist/resources/extensions/gsd/forensics.js +2 -1
- package/dist/resources/extensions/gsd/git-service.js +7 -4
- package/dist/resources/extensions/gsd/gitignore.js +6 -2
- package/dist/resources/extensions/gsd/guidance.js +7 -7
- package/dist/resources/extensions/gsd/guided-flow.js +11 -6
- package/dist/resources/extensions/gsd/layout-policy.js +75 -0
- package/dist/resources/extensions/gsd/markdown-renderer.js +391 -116
- package/dist/resources/extensions/gsd/mcp-filter.js +44 -10
- package/dist/resources/extensions/gsd/md-importer.js +153 -51
- package/dist/resources/extensions/gsd/metrics.js +19 -11
- package/dist/resources/extensions/gsd/migrate/layout-detect.js +32 -0
- package/dist/resources/extensions/gsd/migrate/planning-writer.js +203 -0
- package/dist/resources/extensions/gsd/migrate-external.js +51 -6
- package/dist/resources/extensions/gsd/migration-auto-check.js +5 -14
- package/dist/resources/extensions/gsd/milestone-actions.js +5 -3
- package/dist/resources/extensions/gsd/milestone-closeout.js +12 -2
- package/dist/resources/extensions/gsd/milestone-ids.js +50 -19
- package/dist/resources/extensions/gsd/milestone-planning-persistence.js +8 -0
- package/dist/resources/extensions/gsd/milestone-validation-verdict.js +7 -4
- package/dist/resources/extensions/gsd/model-router.js +79 -20
- package/dist/resources/extensions/gsd/notification-store.js +22 -29
- package/dist/resources/extensions/gsd/notifications.js +36 -7
- package/dist/resources/extensions/gsd/observability-validator.js +12 -4
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +133 -35
- package/dist/resources/extensions/gsd/parsers-legacy.js +40 -14
- package/dist/resources/extensions/gsd/paths.js +356 -44
- package/dist/resources/extensions/gsd/planning-depth.js +2 -1
- package/dist/resources/extensions/gsd/post-execution-checks.js +26 -3
- package/dist/resources/extensions/gsd/preferences-models.js +34 -14
- package/dist/resources/extensions/gsd/preferences.js +148 -13
- package/dist/resources/extensions/gsd/prompts/ai-integration-phase.md +28 -0
- package/dist/resources/extensions/gsd/prompts/audit-fix.md +39 -0
- package/dist/resources/extensions/gsd/prompts/audit-milestone.md +26 -0
- package/dist/resources/extensions/gsd/prompts/audit-uat.md +24 -0
- package/dist/resources/extensions/gsd/prompts/autonomous.md +31 -0
- package/dist/resources/extensions/gsd/prompts/code-review.md +37 -0
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +24 -15
- package/dist/resources/extensions/gsd/prompts/discuss-phase.md +31 -0
- package/dist/resources/extensions/gsd/prompts/docs-update.md +13 -0
- package/dist/resources/extensions/gsd/prompts/execute-phase.md +33 -0
- package/dist/resources/extensions/gsd/prompts/execute-task.md +5 -1
- package/dist/resources/extensions/gsd/prompts/explore.md +58 -0
- package/dist/resources/extensions/gsd/prompts/graphify.md +27 -0
- package/dist/resources/extensions/gsd/prompts/health.md +37 -0
- package/dist/resources/extensions/gsd/prompts/import.md +30 -0
- package/dist/resources/extensions/gsd/prompts/inbox.md +27 -0
- package/dist/resources/extensions/gsd/prompts/ingest-docs.md +30 -0
- package/dist/resources/extensions/gsd/prompts/manager.md +21 -0
- package/dist/resources/extensions/gsd/prompts/map-codebase.md +42 -0
- package/dist/resources/extensions/gsd/prompts/milestone-summary.md +27 -0
- package/dist/resources/extensions/gsd/prompts/mvp-phase.md +23 -0
- package/dist/resources/extensions/gsd/prompts/pause-work.md +24 -0
- package/dist/resources/extensions/gsd/prompts/phase.md +22 -0
- package/dist/resources/extensions/gsd/prompts/plan-phase.md +34 -0
- package/dist/resources/extensions/gsd/prompts/plan-review-convergence.md +34 -0
- package/dist/resources/extensions/gsd/prompts/profile-user.md +28 -0
- package/dist/resources/extensions/gsd/prompts/progress.md +30 -0
- package/dist/resources/extensions/gsd/prompts/quick-task.md +1 -1
- package/dist/resources/extensions/gsd/prompts/reactive-execute.md +2 -2
- package/dist/resources/extensions/gsd/prompts/resume-work.md +20 -0
- package/dist/resources/extensions/gsd/prompts/review-backlog.md +21 -0
- package/dist/resources/extensions/gsd/prompts/review.md +27 -0
- package/dist/resources/extensions/gsd/prompts/run-uat.md +5 -1
- package/dist/resources/extensions/gsd/prompts/secure-phase.md +24 -0
- package/dist/resources/extensions/gsd/prompts/settings.md +24 -0
- package/dist/resources/extensions/gsd/prompts/sketch.md +59 -0
- package/dist/resources/extensions/gsd/prompts/spec-phase.md +29 -0
- package/dist/resources/extensions/gsd/prompts/spike.md +59 -0
- package/dist/resources/extensions/gsd/prompts/stats.md +43 -0
- package/dist/resources/extensions/gsd/prompts/surface.md +25 -0
- package/dist/resources/extensions/gsd/prompts/thread.md +24 -0
- package/dist/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/dist/resources/extensions/gsd/prompts/ui-phase.md +29 -0
- package/dist/resources/extensions/gsd/prompts/ui-review.md +29 -0
- package/dist/resources/extensions/gsd/prompts/ultraplan-phase.md +24 -0
- package/dist/resources/extensions/gsd/prompts/validate-phase.md +26 -0
- package/dist/resources/extensions/gsd/prompts/verify-work.md +24 -0
- package/dist/resources/extensions/gsd/prompts/workspace.md +22 -0
- package/dist/resources/extensions/gsd/prompts/workstreams.md +24 -0
- package/dist/resources/extensions/gsd/provider-error-guidance.js +24 -0
- package/dist/resources/extensions/gsd/queue-order.js +3 -2
- package/dist/resources/extensions/gsd/recovery-classification.js +8 -0
- package/dist/resources/extensions/gsd/roadmap-slices.js +1 -1
- package/dist/resources/extensions/gsd/safety/content-validator.js +2 -1
- package/dist/resources/extensions/gsd/safety/evidence-cross-ref.js +43 -1
- package/dist/resources/extensions/gsd/service-tier.js +2 -1
- package/dist/resources/extensions/gsd/session-lock.js +11 -9
- package/dist/resources/extensions/gsd/skills/gsd-headless/SKILL.md +3 -0
- package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +51 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +51 -10
- package/dist/resources/extensions/gsd/state-reconciliation/drift/completion.js +24 -3
- package/dist/resources/extensions/gsd/state-reconciliation/drift/external-markdown-edit.js +82 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/external-planning-edit.js +142 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/project-md.js +19 -6
- package/dist/resources/extensions/gsd/state-reconciliation/drift/roadmap.js +2 -2
- package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +95 -19
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +36 -3
- package/dist/resources/extensions/gsd/state-reconciliation/registry.js +12 -0
- package/dist/resources/extensions/gsd/state.js +48 -17
- package/dist/resources/extensions/gsd/sync-lock.js +11 -18
- package/dist/resources/extensions/gsd/tool-surface-readiness.js +205 -16
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +4 -2
- package/dist/resources/extensions/gsd/tools/complete-slice.js +12 -2
- package/dist/resources/extensions/gsd/tools/complete-task.js +15 -1
- package/dist/resources/extensions/gsd/tools/exec-tool.js +2 -109
- package/dist/resources/extensions/gsd/tools/plan-slice.js +1 -3
- package/dist/resources/extensions/gsd/tools/plan-task.js +16 -1
- package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +9 -3
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +8 -3
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +44 -5
- package/dist/resources/extensions/gsd/triage-resolution.js +14 -7
- package/dist/resources/extensions/gsd/tui/render-kit.js +38 -13
- package/dist/resources/extensions/gsd/undo.js +8 -9
- package/dist/resources/extensions/gsd/unit-registry.js +27 -3
- package/dist/resources/extensions/gsd/unmerged-milestone-guard.js +58 -2
- package/dist/resources/extensions/gsd/validation-block-guard.js +45 -0
- package/dist/resources/extensions/gsd/visualizer-data.js +35 -0
- package/dist/resources/extensions/gsd/visualizer-views.js +21 -2
- package/dist/resources/extensions/gsd/workflow-logger.js +4 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +9 -1
- package/dist/resources/extensions/gsd/workflow-projections.js +25 -4
- package/dist/resources/extensions/gsd/worktree-command.js +6 -6
- package/dist/resources/extensions/gsd/worktree-health.js +6 -3
- package/dist/resources/extensions/gsd/worktree-manager.js +109 -16
- package/dist/resources/extensions/gsd/worktree-safety.js +20 -11
- package/dist/resources/extensions/gsd/worktree-shell-guard.js +113 -0
- package/dist/resources/extensions/mcp-client/manager.js +3 -3
- package/dist/resources/extensions/search-the-web/index.js +41 -9
- package/dist/resources/extensions/search-the-web/native-search.js +18 -4
- package/dist/resources/extensions/shared/gsd-browser-cli.js +40 -2
- package/dist/resources/extensions/subagent/index.js +20 -15
- package/dist/resources/extensions/subagent/worktree-cwd.js +31 -0
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/update-check.js +15 -4
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +8 -8
- 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 +3 -3
- 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 +8 -8
- package/dist/web/standalone/.next/server/chunks/1128.js +1 -1
- package/dist/web/standalone/.next/server/chunks/5124.js +1 -1
- 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/{4283.e4873b058df143a1.js → 4283.8e446784528ed9dc.js} +2 -2
- package/dist/web/standalone/.next/static/chunks/8785.481aa5869991b760.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-f0285ce91d4ec9ef.js → webpack-f46ea08200a0227e.js} +1 -1
- package/dist/web/standalone/node_modules/@gsd/native/package.json +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/web-mode.d.ts +3 -1
- package/dist/web-mode.js +7 -5
- package/integrations/hermes/README.md +48 -0
- package/integrations/hermes/docs/setup.md +272 -0
- package/integrations/hermes/docs/upstream-hermes-pr.md +40 -0
- package/integrations/hermes/open_gsd_hermes/__init__.py +105 -0
- package/integrations/hermes/open_gsd_hermes/binding.py +107 -0
- package/integrations/hermes/open_gsd_hermes/commands.py +186 -0
- package/integrations/hermes/open_gsd_hermes/config.py +59 -0
- package/integrations/hermes/open_gsd_hermes/credentials.py +51 -0
- package/integrations/hermes/open_gsd_hermes/cron.py +85 -0
- package/integrations/hermes/open_gsd_hermes/formatting.py +13 -0
- package/integrations/hermes/open_gsd_hermes/gsd_client.py +269 -0
- package/integrations/hermes/open_gsd_hermes/inject.py +31 -0
- package/integrations/hermes/open_gsd_hermes/memory.py +66 -0
- package/integrations/hermes/open_gsd_hermes/notifications.py +71 -0
- package/integrations/hermes/open_gsd_hermes/snapshot.py +42 -0
- package/integrations/hermes/open_gsd_hermes/supervisor.py +180 -0
- package/integrations/hermes/open_gsd_hermes/types.py +100 -0
- package/integrations/hermes/plugin.yaml +38 -0
- package/integrations/hermes/pyproject.toml +32 -0
- package/integrations/hermes/scripts/preflight.sh +92 -0
- package/integrations/hermes/tests/fixtures/minimal-project/.gsd/STATE.md +17 -0
- package/integrations/hermes/tests/golden/memory_prefetch.txt +5 -0
- package/integrations/hermes/tests/golden/snapshot.txt +8 -0
- package/integrations/hermes/tests/test_binding.py +103 -0
- package/integrations/hermes/tests/test_config.py +36 -0
- package/integrations/hermes/tests/test_cron.py +34 -0
- package/integrations/hermes/tests/test_gsd_client_cache.py +120 -0
- package/integrations/hermes/tests/test_memory.py +59 -0
- package/integrations/hermes/tests/test_read_cli_contract.py +50 -0
- package/integrations/hermes/tests/test_register.py +56 -0
- package/integrations/hermes/tests/test_snapshot.py +53 -0
- package/integrations/hermes/tests/test_supervisor_fsm.py +581 -0
- package/package.json +8 -7
- package/packages/cloud-mcp-gateway/dist/runtime-registry.d.ts +8 -0
- package/packages/cloud-mcp-gateway/dist/runtime-registry.d.ts.map +1 -1
- package/packages/cloud-mcp-gateway/dist/runtime-registry.js +19 -2
- package/packages/cloud-mcp-gateway/dist/runtime-registry.js.map +1 -1
- package/packages/cloud-mcp-gateway/dist/runtime-registry.test.js +71 -2
- package/packages/cloud-mcp-gateway/dist/runtime-registry.test.js.map +1 -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/sdk.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/sdk.js +6 -2
- 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/assistant-message.d.ts +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +12 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +20 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.d.ts +4 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.js +5 -54
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-turn-connect.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +2 -4
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +2 -4
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +9 -12
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +100 -166
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.js +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-progress-state.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.d.ts +23 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.js +178 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/gsd-status-widget.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +8 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +21 -9
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +2 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +3 -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 +37 -15
- 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 +69 -3
- 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 +223 -32
- package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +3 -3
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +19 -19
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +3 -0
- 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 +26 -10
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +12 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-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 +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.js +3 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-autocomplete.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 +3 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-chat-render.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js +2 -2
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.d.ts +1 -0
- 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 +25 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.js +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-key-handlers.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.d.ts +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.js +20 -49
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-init.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +4 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +9 -2
- 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 +31 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.js +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-ui-messaging.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 -0
- 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 +10 -0
- package/packages/mcp-server/dist/cli-errors.d.ts +11 -0
- package/packages/mcp-server/dist/cli-errors.d.ts.map +1 -1
- package/packages/mcp-server/dist/cli-errors.js +12 -0
- package/packages/mcp-server/dist/cli-errors.js.map +1 -1
- package/packages/mcp-server/dist/cli-runner.d.ts.map +1 -1
- package/packages/mcp-server/dist/cli-runner.js +33 -0
- package/packages/mcp-server/dist/cli-runner.js.map +1 -1
- package/packages/mcp-server/dist/cli.d.ts +1 -0
- package/packages/mcp-server/dist/cli.d.ts.map +1 -1
- package/packages/mcp-server/dist/cli.js +1 -0
- package/packages/mcp-server/dist/cli.js.map +1 -1
- package/packages/mcp-server/dist/server.d.ts +29 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +82 -3
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/package.json +21 -5
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +9 -0
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts +28 -2
- package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +5 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +3 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.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.map +1 -1
- package/packages/pi-coding-agent/package.json +8 -8
- package/packages/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/packages/pi-tui/dist/autocomplete.js +6 -1
- package/packages/pi-tui/dist/autocomplete.js.map +1 -1
- 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/components/loader.d.ts.map +1 -1
- package/packages/pi-tui/dist/components/loader.js +1 -0
- package/packages/pi-tui/dist/components/loader.js.map +1 -1
- package/packages/pi-tui/dist/components/select-list.d.ts.map +1 -1
- package/packages/pi-tui/dist/components/select-list.js +8 -2
- package/packages/pi-tui/dist/components/select-list.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/GSD-WORKFLOW.md +22 -22
- package/src/resources/extensions/browser-tools/tests/gsd-browser-launch-config.test.mjs +80 -0
- package/src/resources/extensions/claude-code-cli/index.ts +8 -1
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +83 -20
- package/src/resources/extensions/claude-code-cli/tests/index.test.ts +47 -0
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +182 -10
- package/src/resources/extensions/google-cli/stream-adapter.ts +22 -1
- package/src/resources/extensions/gsd/auto/dispatch-history.ts +19 -1
- package/src/resources/extensions/gsd/auto/loop.ts +69 -2
- package/src/resources/extensions/gsd/auto/orchestrator.ts +63 -10
- package/src/resources/extensions/gsd/auto/pre-dispatch.ts +13 -1
- package/src/resources/extensions/gsd/auto/workflow-kernel.ts +25 -3
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +83 -20
- package/src/resources/extensions/gsd/auto-closeout-messaging.ts +90 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +310 -454
- package/src/resources/extensions/gsd/auto-direct-dispatch.ts +15 -2
- package/src/resources/extensions/gsd/auto-dispatch.ts +57 -12
- package/src/resources/extensions/gsd/auto-model-selection.ts +27 -5
- package/src/resources/extensions/gsd/auto-post-unit.ts +52 -31
- package/src/resources/extensions/gsd/auto-prompts.ts +45 -30
- package/src/resources/extensions/gsd/auto-recovery.ts +126 -37
- package/src/resources/extensions/gsd/auto-runtime-state.ts +13 -0
- package/src/resources/extensions/gsd/auto-start.ts +82 -36
- package/src/resources/extensions/gsd/auto-verification.ts +5 -7
- package/src/resources/extensions/gsd/auto-worktree.ts +83 -15
- package/src/resources/extensions/gsd/auto.ts +133 -32
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +45 -61
- package/src/resources/extensions/gsd/bootstrap/fallback-continuation.ts +31 -0
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +23 -2
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +123 -9
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +185 -46
- package/src/resources/extensions/gsd/bootstrap/tool-search-shim.ts +21 -3
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +138 -29
- package/src/resources/extensions/gsd/closeout-consistency-gate.ts +107 -3
- package/src/resources/extensions/gsd/closeout-wizard.ts +11 -2
- package/src/resources/extensions/gsd/codebase-generator.ts +6 -9
- package/src/resources/extensions/gsd/commands/catalog.ts +6 -0
- package/src/resources/extensions/gsd/commands/dispatcher.ts +3 -0
- package/src/resources/extensions/gsd/commands/gsd-core-aliases-handler.ts +48 -0
- package/src/resources/extensions/gsd/commands/gsd-core-aliases.ts +63 -0
- package/src/resources/extensions/gsd/commands/handlers/core.ts +58 -8
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +230 -3
- package/src/resources/extensions/gsd/commands-cmux.ts +3 -0
- package/src/resources/extensions/gsd/commands-gsd-core.ts +1142 -0
- package/src/resources/extensions/gsd/commands-handlers.ts +76 -1
- package/src/resources/extensions/gsd/commands-maintenance.ts +98 -2
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +13 -0
- package/src/resources/extensions/gsd/commands-verdict.ts +16 -15
- package/src/resources/extensions/gsd/compat/compat-marker.ts +210 -0
- package/src/resources/extensions/gsd/compat/index.ts +12 -0
- package/src/resources/extensions/gsd/compat/planning-compat.ts +168 -0
- package/src/resources/extensions/gsd/config-overlay.ts +24 -9
- package/src/resources/extensions/gsd/consent-question.ts +11 -1
- package/src/resources/extensions/gsd/consent-verdict.ts +30 -1
- package/src/resources/extensions/gsd/dashboard-overlay.ts +41 -4
- package/src/resources/extensions/gsd/db/engine.ts +26 -0
- package/src/resources/extensions/gsd/db/queries.ts +78 -0
- package/src/resources/extensions/gsd/db/unit-dispatches.ts +24 -0
- package/src/resources/extensions/gsd/db/writers/reconcile.ts +24 -1
- package/src/resources/extensions/gsd/db-workspace.ts +15 -0
- package/src/resources/extensions/gsd/discussion-handoff.ts +9 -5
- package/src/resources/extensions/gsd/doctor-git-checks.ts +28 -3
- package/src/resources/extensions/gsd/doctor-providers.ts +1 -1
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +12 -25
- package/src/resources/extensions/gsd/doctor-types.ts +1 -0
- package/src/resources/extensions/gsd/doctor.ts +30 -7
- package/src/resources/extensions/gsd/error-classifier.ts +14 -1
- package/src/resources/extensions/gsd/escalation.ts +9 -4
- package/src/resources/extensions/gsd/export-html.ts +11 -4
- package/src/resources/extensions/gsd/export.ts +88 -1
- package/src/resources/extensions/gsd/file-lock.ts +1 -1
- package/src/resources/extensions/gsd/flat-phase-migration.ts +205 -0
- package/src/resources/extensions/gsd/forensics.ts +2 -1
- package/src/resources/extensions/gsd/git-constants.ts +1 -1
- package/src/resources/extensions/gsd/git-service.ts +7 -2
- package/src/resources/extensions/gsd/gitignore.ts +7 -3
- package/src/resources/extensions/gsd/guidance.ts +7 -7
- package/src/resources/extensions/gsd/guided-flow.ts +11 -6
- package/src/resources/extensions/gsd/layout-policy.ts +85 -0
- package/src/resources/extensions/gsd/markdown-renderer.ts +404 -104
- package/src/resources/extensions/gsd/mcp-filter.ts +59 -10
- package/src/resources/extensions/gsd/md-importer.ts +215 -65
- package/src/resources/extensions/gsd/metrics.ts +23 -10
- package/src/resources/extensions/gsd/migrate/layout-detect.ts +38 -0
- package/src/resources/extensions/gsd/migrate/planning-writer.ts +259 -0
- package/src/resources/extensions/gsd/migrate-external.ts +49 -6
- package/src/resources/extensions/gsd/migration-auto-check.ts +4 -13
- package/src/resources/extensions/gsd/milestone-actions.ts +5 -2
- package/src/resources/extensions/gsd/milestone-closeout.ts +13 -2
- package/src/resources/extensions/gsd/milestone-ids.ts +49 -19
- package/src/resources/extensions/gsd/milestone-planning-persistence.ts +8 -0
- package/src/resources/extensions/gsd/milestone-validation-verdict.ts +7 -9
- package/src/resources/extensions/gsd/model-router.ts +98 -18
- package/src/resources/extensions/gsd/notification-store.ts +17 -28
- package/src/resources/extensions/gsd/notifications.ts +37 -6
- package/src/resources/extensions/gsd/observability-validator.ts +12 -4
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +151 -31
- package/src/resources/extensions/gsd/parsers-legacy.ts +42 -15
- package/src/resources/extensions/gsd/paths.ts +348 -39
- package/src/resources/extensions/gsd/planning-depth.ts +2 -1
- package/src/resources/extensions/gsd/post-execution-checks.ts +43 -3
- package/src/resources/extensions/gsd/preferences-models.ts +47 -13
- package/src/resources/extensions/gsd/preferences.ts +188 -14
- package/src/resources/extensions/gsd/prompts/ai-integration-phase.md +28 -0
- package/src/resources/extensions/gsd/prompts/audit-fix.md +39 -0
- package/src/resources/extensions/gsd/prompts/audit-milestone.md +26 -0
- package/src/resources/extensions/gsd/prompts/audit-uat.md +24 -0
- package/src/resources/extensions/gsd/prompts/autonomous.md +31 -0
- package/src/resources/extensions/gsd/prompts/code-review.md +37 -0
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +8 -2
- package/src/resources/extensions/gsd/prompts/complete-slice.md +24 -15
- package/src/resources/extensions/gsd/prompts/discuss-phase.md +31 -0
- package/src/resources/extensions/gsd/prompts/docs-update.md +13 -0
- package/src/resources/extensions/gsd/prompts/execute-phase.md +33 -0
- package/src/resources/extensions/gsd/prompts/execute-task.md +5 -1
- package/src/resources/extensions/gsd/prompts/explore.md +58 -0
- package/src/resources/extensions/gsd/prompts/graphify.md +27 -0
- package/src/resources/extensions/gsd/prompts/health.md +37 -0
- package/src/resources/extensions/gsd/prompts/import.md +30 -0
- package/src/resources/extensions/gsd/prompts/inbox.md +27 -0
- package/src/resources/extensions/gsd/prompts/ingest-docs.md +30 -0
- package/src/resources/extensions/gsd/prompts/manager.md +21 -0
- package/src/resources/extensions/gsd/prompts/map-codebase.md +42 -0
- package/src/resources/extensions/gsd/prompts/milestone-summary.md +27 -0
- package/src/resources/extensions/gsd/prompts/mvp-phase.md +23 -0
- package/src/resources/extensions/gsd/prompts/pause-work.md +24 -0
- package/src/resources/extensions/gsd/prompts/phase.md +22 -0
- package/src/resources/extensions/gsd/prompts/plan-phase.md +34 -0
- package/src/resources/extensions/gsd/prompts/plan-review-convergence.md +34 -0
- package/src/resources/extensions/gsd/prompts/profile-user.md +28 -0
- package/src/resources/extensions/gsd/prompts/progress.md +30 -0
- package/src/resources/extensions/gsd/prompts/quick-task.md +1 -1
- package/src/resources/extensions/gsd/prompts/reactive-execute.md +2 -2
- package/src/resources/extensions/gsd/prompts/resume-work.md +20 -0
- package/src/resources/extensions/gsd/prompts/review-backlog.md +21 -0
- package/src/resources/extensions/gsd/prompts/review.md +27 -0
- package/src/resources/extensions/gsd/prompts/run-uat.md +5 -1
- package/src/resources/extensions/gsd/prompts/secure-phase.md +24 -0
- package/src/resources/extensions/gsd/prompts/settings.md +24 -0
- package/src/resources/extensions/gsd/prompts/sketch.md +59 -0
- package/src/resources/extensions/gsd/prompts/spec-phase.md +29 -0
- package/src/resources/extensions/gsd/prompts/spike.md +59 -0
- package/src/resources/extensions/gsd/prompts/stats.md +43 -0
- package/src/resources/extensions/gsd/prompts/surface.md +25 -0
- package/src/resources/extensions/gsd/prompts/thread.md +24 -0
- package/src/resources/extensions/gsd/prompts/triage-captures.md +1 -1
- package/src/resources/extensions/gsd/prompts/ui-phase.md +29 -0
- package/src/resources/extensions/gsd/prompts/ui-review.md +29 -0
- package/src/resources/extensions/gsd/prompts/ultraplan-phase.md +24 -0
- package/src/resources/extensions/gsd/prompts/validate-phase.md +26 -0
- package/src/resources/extensions/gsd/prompts/verify-work.md +24 -0
- package/src/resources/extensions/gsd/prompts/workspace.md +22 -0
- package/src/resources/extensions/gsd/prompts/workstreams.md +24 -0
- package/src/resources/extensions/gsd/provider-error-guidance.ts +32 -0
- package/src/resources/extensions/gsd/queue-order.ts +3 -2
- package/src/resources/extensions/gsd/recovery-classification.ts +7 -0
- package/src/resources/extensions/gsd/roadmap-slices.ts +1 -1
- package/src/resources/extensions/gsd/safety/content-validator.ts +2 -1
- package/src/resources/extensions/gsd/safety/evidence-cross-ref.ts +45 -1
- package/src/resources/extensions/gsd/service-tier.ts +2 -0
- package/src/resources/extensions/gsd/session-lock.ts +15 -13
- package/src/resources/extensions/gsd/skills/gsd-headless/SKILL.md +3 -0
- package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +51 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +58 -14
- package/src/resources/extensions/gsd/state-reconciliation/drift/completion.ts +22 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/external-markdown-edit.ts +105 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/external-planning-edit.ts +180 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/project-md.ts +19 -6
- package/src/resources/extensions/gsd/state-reconciliation/drift/roadmap.ts +2 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +98 -26
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +36 -3
- package/src/resources/extensions/gsd/state-reconciliation/registry.ts +12 -0
- package/src/resources/extensions/gsd/state-reconciliation/types.ts +19 -0
- package/src/resources/extensions/gsd/state.ts +57 -15
- package/src/resources/extensions/gsd/sync-lock.ts +11 -20
- package/src/resources/extensions/gsd/tests/__fixtures__/flat-phase/.gsd/phases/01-foundation/01-01-PLAN.md +13 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/flat-phase/.gsd/phases/01-foundation/01-ROADMAP.md +8 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/m001-basic/.gsd/milestones/M001/M001-ROADMAP.md +13 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/m001-basic/.gsd/milestones/M001/slices/S01/S01-PLAN.md +5 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/PROJECT.md +1 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/ROADMAP.md +5 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/STATE.md +10 -0
- package/src/resources/extensions/gsd/tests/__fixtures__/round-trip/planning-flat-phases/.planning/phases/01-foundation/01-01-PLAN.md +13 -0
- package/src/resources/extensions/gsd/tests/auto-artifact-paths.test.ts +322 -1
- package/src/resources/extensions/gsd/tests/auto-closeout-messaging.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +68 -116
- package/src/resources/extensions/gsd/tests/auto-direct-dispatch-parse.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +104 -0
- package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +32 -1
- package/src/resources/extensions/gsd/tests/auto-model-selection-tool-poisoning.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +10 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +28 -22
- package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +11 -2
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +19 -2
- package/src/resources/extensions/gsd/tests/auto-verification.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/auto-worktree-auto-resolve.test.ts +17 -0
- package/src/resources/extensions/gsd/tests/blocker-placeholder-logs.test.ts +218 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +15 -11
- package/src/resources/extensions/gsd/tests/commands-dispatcher-unmerged-milestone.test.ts +89 -0
- package/src/resources/extensions/gsd/tests/commands-dispatcher-validation-block.test.ts +37 -1
- package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +31 -30
- package/src/resources/extensions/gsd/tests/commands-gsd-core.test.ts +862 -0
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/compat-health-line.test.ts +102 -0
- package/src/resources/extensions/gsd/tests/compat-marker-invalidation.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/compat-marker.test.ts +105 -0
- package/src/resources/extensions/gsd/tests/complete-milestone-prompt-rendering.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/complete-slice-reopen-handoff.test.ts +82 -0
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +7 -7
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +7 -7
- package/src/resources/extensions/gsd/tests/consent-question.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/core-overlay-fallback.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/db-authority-regression.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/db-engine-logs.test.ts +207 -0
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +63 -1
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +49 -5
- package/src/resources/extensions/gsd/tests/discuss-cold-start-db-open.test.ts +10 -27
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +20 -1
- package/src/resources/extensions/gsd/tests/dispatch-db-degradation-logs.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/dispatch-history.test.ts +102 -0
- package/src/resources/extensions/gsd/tests/dispatch-logs.test.ts +103 -0
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +38 -49
- package/src/resources/extensions/gsd/tests/dispatch-reactive-logs.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/dist-redirect.mjs +7 -0
- package/src/resources/extensions/gsd/tests/doctor-git-checks-autoresolve.test.ts +149 -0
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +6 -4
- package/src/resources/extensions/gsd/tests/ensure-preconditions-guard-4996.test.ts +17 -10
- package/src/resources/extensions/gsd/tests/evidence-cross-ref.test.ts +95 -0
- package/src/resources/extensions/gsd/tests/export-html-enhancements.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/export-memory.test.ts +179 -0
- package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/external-markdown-edit.test.ts +137 -0
- package/src/resources/extensions/gsd/tests/external-planning-edit.test.ts +199 -0
- package/src/resources/extensions/gsd/tests/fallback-continuation.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/file-lock.test.ts +43 -0
- package/src/resources/extensions/gsd/tests/flat-phase-migration.test.ts +114 -0
- package/src/resources/extensions/gsd/tests/flat-phase-renderer.test.ts +83 -0
- package/src/resources/extensions/gsd/tests/flat-phase-round-trip.test.ts +72 -0
- package/src/resources/extensions/gsd/tests/flat-phase-validation-integration.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/flat-phase-validation-path.test.ts +74 -0
- package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/gsd-command-home.test.ts +40 -7
- package/src/resources/extensions/gsd/tests/gsd-core-parity-routing.test.ts +183 -0
- package/src/resources/extensions/gsd/tests/guidance.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +19 -11
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/integration/commands-eval-review.integration.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/integration/gitignore-tracked-gsd.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +4 -3
- package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +11 -7
- package/src/resources/extensions/gsd/tests/interactive-routing-bypass.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/knowledge-cold-start.test.ts +372 -0
- package/src/resources/extensions/gsd/tests/layout-policy.test.ts +59 -0
- package/src/resources/extensions/gsd/tests/loop.test.ts +60 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer-parse-cache.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +214 -82
- package/src/resources/extensions/gsd/tests/mcp-filter.test.ts +74 -1
- package/src/resources/extensions/gsd/tests/metrics-ledger-cap.test.ts +239 -0
- package/src/resources/extensions/gsd/tests/milestone-closeout.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/milestone-settlement.test.ts +6 -1
- package/src/resources/extensions/gsd/tests/model-router.test.ts +343 -7
- package/src/resources/extensions/gsd/tests/notification-store.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/notifications.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/oauth-api-model-routing.test.ts +13 -1
- package/src/resources/extensions/gsd/tests/observability-validator-boundary.test.ts +194 -0
- package/src/resources/extensions/gsd/tests/orchestrator-legacy-parity.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/orchestrator-logs.test.ts +339 -0
- package/src/resources/extensions/gsd/tests/orphaned-worktree-audit.test.ts +52 -1
- package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +91 -0
- package/src/resources/extensions/gsd/tests/plan-milestone-boundary-map-preservation.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/plan-milestone-sketch-render.test.ts +7 -2
- package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +9 -6
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +58 -23
- package/src/resources/extensions/gsd/tests/plan-task.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/planning-crossval.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/planning-layout-detect.test.ts +84 -0
- package/src/resources/extensions/gsd/tests/planning-marker.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/planning-projection-hook.test.ts +123 -0
- package/src/resources/extensions/gsd/tests/planning-round-trip-property.test.ts +164 -0
- package/src/resources/extensions/gsd/tests/planning-writer.test.ts +82 -0
- package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +48 -1
- package/src/resources/extensions/gsd/tests/preferences.test.ts +47 -1
- package/src/resources/extensions/gsd/tests/prefs-missing-models-crash.test.ts +35 -4
- package/src/resources/extensions/gsd/tests/progress-strip-test-helpers.ts +79 -0
- package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +16 -0
- package/src/resources/extensions/gsd/tests/provider-error-guidance.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/ready-phrase-no-files-4573.test.ts +22 -13
- package/src/resources/extensions/gsd/tests/reassess-handler.test.ts +9 -8
- package/src/resources/extensions/gsd/tests/reconcile-logs.test.ts +244 -0
- package/src/resources/extensions/gsd/tests/recovery-finalize-logs.test.ts +119 -0
- package/src/resources/extensions/gsd/tests/recovery-verify-logs.test.ts +428 -0
- package/src/resources/extensions/gsd/tests/register-extension-guard.test.ts +25 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +79 -4
- package/src/resources/extensions/gsd/tests/replan-handler.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/resume-missing-worktree-warning.test.ts +5 -5
- package/src/resources/extensions/gsd/tests/round-trip-property.test.ts +137 -0
- package/src/resources/extensions/gsd/tests/session-lock-transient-read.test.ts +28 -2
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +68 -0
- package/src/resources/extensions/gsd/tests/show-config-command.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/stale-dirlistcache-4648.test.ts +7 -1
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +155 -58
- package/src/resources/extensions/gsd/tests/stop-backtrack.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/stuck-state-via-db.test.ts +85 -0
- package/src/resources/extensions/gsd/tests/sync-lock.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/system-context-message-routing.test.ts +29 -1
- package/src/resources/extensions/gsd/tests/terminal-tool-surface-classification.test.ts +80 -0
- package/src/resources/extensions/gsd/tests/thinking-level-resolution.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/tool-schema-model-fallback.test.ts +64 -0
- package/src/resources/extensions/gsd/tests/tool-search-shim.test.ts +71 -0
- package/src/resources/extensions/gsd/tests/tool-surface-readiness.test.ts +26 -7
- package/src/resources/extensions/gsd/tests/tool-unavailable-retry.test.ts +23 -0
- package/src/resources/extensions/gsd/tests/tui-header-lifecycle.test.ts +40 -86
- package/src/resources/extensions/gsd/tests/tui-render-kit.test.ts +44 -6
- package/src/resources/extensions/gsd/tests/undo.test.ts +39 -37
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +22 -0
- package/src/resources/extensions/gsd/tests/unmerged-milestone-guard.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/uok-audit.test.ts +194 -0
- package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +72 -1
- package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +9 -1
- package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/validation-gate-patterns.test.ts +34 -6
- package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +90 -0
- package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +87 -0
- package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/workflow-kernel.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp-preflight.test.ts +133 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +34 -8
- package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +3 -4
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +64 -8
- package/src/resources/extensions/gsd/tests/worktree-health.test.ts +43 -3
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/worktree-safety.test.ts +39 -18
- package/src/resources/extensions/gsd/tests/worktree-write-gate.test.ts +75 -3
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +4 -1
- package/src/resources/extensions/gsd/tests/write-gate.test.ts +103 -0
- package/src/resources/extensions/gsd/tool-surface-readiness.ts +226 -16
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +4 -7
- package/src/resources/extensions/gsd/tools/complete-slice.ts +12 -9
- package/src/resources/extensions/gsd/tools/complete-task.ts +15 -1
- package/src/resources/extensions/gsd/tools/exec-tool.ts +2 -118
- package/src/resources/extensions/gsd/tools/plan-slice.ts +1 -3
- package/src/resources/extensions/gsd/tools/plan-task.ts +17 -1
- package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +9 -10
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +8 -13
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +43 -4
- package/src/resources/extensions/gsd/triage-resolution.ts +14 -7
- package/src/resources/extensions/gsd/tui/render-kit.ts +56 -13
- package/src/resources/extensions/gsd/undo.ts +8 -9
- package/src/resources/extensions/gsd/unit-registry.ts +27 -3
- package/src/resources/extensions/gsd/unmerged-milestone-guard.ts +60 -1
- package/src/resources/extensions/gsd/validation-block-guard.ts +46 -0
- package/src/resources/extensions/gsd/visualizer-data.ts +55 -0
- package/src/resources/extensions/gsd/visualizer-views.ts +27 -2
- package/src/resources/extensions/gsd/workflow-logger.ts +5 -0
- package/src/resources/extensions/gsd/workflow-mcp.ts +12 -1
- package/src/resources/extensions/gsd/workflow-projections.ts +24 -4
- package/src/resources/extensions/gsd/worktree-command.ts +6 -6
- package/src/resources/extensions/gsd/worktree-health.ts +6 -3
- package/src/resources/extensions/gsd/worktree-manager.ts +122 -16
- package/src/resources/extensions/gsd/worktree-safety.ts +31 -11
- package/src/resources/extensions/gsd/worktree-shell-guard.ts +123 -0
- package/src/resources/extensions/mcp-client/manager.ts +3 -3
- package/src/resources/extensions/search-the-web/index.ts +45 -9
- package/src/resources/extensions/search-the-web/native-search.ts +16 -4
- package/src/resources/extensions/shared/gsd-browser-cli.ts +41 -2
- package/src/resources/extensions/subagent/index.ts +20 -15
- package/src/resources/extensions/subagent/tests/worktree-cwd.test.ts +57 -0
- package/src/resources/extensions/subagent/worktree-cwd.ts +35 -0
- package/dist/web/standalone/.next/static/chunks/8785.2e5a118797fb2dd2.js +0 -1
- /package/dist/web/standalone/.next/static/{2T9IOdiiM3o3gZ4UbPi8E → BTKtGFF1Y-hvVJEGhBRo9}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{2T9IOdiiM3o3gZ4UbPi8E → BTKtGFF1Y-hvVJEGhBRo9}/_ssgManifest.js +0 -0
package/dist/read-cli.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gsd read` — JSON read seam for integrations (Hermes 6c).
|
|
3
|
+
*
|
|
4
|
+
* gsd read progress --json --project /path
|
|
5
|
+
* gsd read roadmap --json --project /path [--milestone M001]
|
|
6
|
+
* gsd read memory --json --project /path --query "auth"
|
|
7
|
+
*/
|
|
8
|
+
import { resolve } from 'node:path';
|
|
9
|
+
import { graphQuery } from '@opengsd/mcp-server/readers/graph';
|
|
10
|
+
import { resolveGsdRoot } from '@opengsd/mcp-server/readers/paths';
|
|
11
|
+
import { readRoadmap } from '@opengsd/mcp-server/readers/roadmap';
|
|
12
|
+
import { readProgress } from '@opengsd/mcp-server/readers/state';
|
|
13
|
+
export const INTEGRATION_VERSION = 1;
|
|
14
|
+
function parseReadArgs(argv) {
|
|
15
|
+
const readIndex = argv.indexOf('read', 2);
|
|
16
|
+
if (readIndex === -1)
|
|
17
|
+
return null;
|
|
18
|
+
const args = argv.slice(readIndex + 1);
|
|
19
|
+
if (args.length < 1)
|
|
20
|
+
return null;
|
|
21
|
+
const kind = args[0];
|
|
22
|
+
if (!['progress', 'roadmap', 'memory'].includes(kind))
|
|
23
|
+
return null;
|
|
24
|
+
let project;
|
|
25
|
+
let milestone;
|
|
26
|
+
let query;
|
|
27
|
+
let json = false;
|
|
28
|
+
for (let i = 1; i < args.length; i++) {
|
|
29
|
+
const a = args[i];
|
|
30
|
+
if (a === '--json')
|
|
31
|
+
json = true;
|
|
32
|
+
else if (a === '--project' && i + 1 < args.length)
|
|
33
|
+
project = args[++i];
|
|
34
|
+
else if (a === '--milestone' && i + 1 < args.length)
|
|
35
|
+
milestone = args[++i];
|
|
36
|
+
else if (a === '--query' && i + 1 < args.length)
|
|
37
|
+
query = args[++i];
|
|
38
|
+
}
|
|
39
|
+
if (!project)
|
|
40
|
+
return null;
|
|
41
|
+
return { kind, project, milestone, query, json };
|
|
42
|
+
}
|
|
43
|
+
export async function runReadCli(argv) {
|
|
44
|
+
const opts = parseReadArgs(argv);
|
|
45
|
+
if (!opts) {
|
|
46
|
+
process.stderr.write('Usage: gsd read <progress|roadmap|memory> --json --project <path> [--milestone M001] [--query text]\n');
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
const projectDir = resolve(opts.project);
|
|
50
|
+
try {
|
|
51
|
+
resolveGsdRoot(projectDir);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
process.stderr.write(`[gsd read] ${err instanceof Error ? err.message : String(err)}\n`);
|
|
55
|
+
return 1;
|
|
56
|
+
}
|
|
57
|
+
let data;
|
|
58
|
+
switch (opts.kind) {
|
|
59
|
+
case 'progress':
|
|
60
|
+
data = readProgress(projectDir);
|
|
61
|
+
break;
|
|
62
|
+
case 'roadmap':
|
|
63
|
+
data = readRoadmap(projectDir, opts.milestone);
|
|
64
|
+
break;
|
|
65
|
+
case 'memory': {
|
|
66
|
+
const term = opts.query?.trim() || '';
|
|
67
|
+
if (term.length < 2) {
|
|
68
|
+
process.stderr.write('[gsd read] memory requires --query with at least 2 characters\n');
|
|
69
|
+
return 1;
|
|
70
|
+
}
|
|
71
|
+
data = await graphQuery(projectDir, term);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
default:
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
const envelope = {
|
|
78
|
+
integration_version: INTEGRATION_VERSION,
|
|
79
|
+
kind: opts.kind,
|
|
80
|
+
projectDir,
|
|
81
|
+
data,
|
|
82
|
+
};
|
|
83
|
+
if (opts.json) {
|
|
84
|
+
process.stdout.write(JSON.stringify(envelope, null, 2) + '\n');
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
process.stdout.write(JSON.stringify(envelope.data, null, 2) + '\n');
|
|
88
|
+
}
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
@@ -61,9 +61,9 @@ export declare function mergedFingerprint(hoisted: string, internal: string): st
|
|
|
61
61
|
* - gsd-browser skill → ~/.gsd/agent/skills/gsd-browser/ from @opengsd/gsd-browser
|
|
62
62
|
* - GSD-WORKFLOW.md → ~/.gsd/agent/GSD-WORKFLOW.md (fallback for env var miss)
|
|
63
63
|
*
|
|
64
|
-
* Skips the full copy
|
|
65
|
-
* fingerprint
|
|
66
|
-
*
|
|
64
|
+
* Skips the full copy when the managed-resources.json version and content
|
|
65
|
+
* fingerprint match the current install, avoiding ~128ms of synchronous cpSync
|
|
66
|
+
* on steady-state startup.
|
|
67
67
|
* After `npm update -g @opengsd/gsd-pi`, versions will differ and the copy
|
|
68
68
|
* runs once to land the new resources.
|
|
69
69
|
*
|
package/dist/resource-loader.js
CHANGED
|
@@ -676,9 +676,9 @@ function pruneRemovedBundledExtensions(manifest, agentDir) {
|
|
|
676
676
|
* - gsd-browser skill → ~/.gsd/agent/skills/gsd-browser/ from @opengsd/gsd-browser
|
|
677
677
|
* - GSD-WORKFLOW.md → ~/.gsd/agent/GSD-WORKFLOW.md (fallback for env var miss)
|
|
678
678
|
*
|
|
679
|
-
* Skips the full copy
|
|
680
|
-
* fingerprint
|
|
681
|
-
*
|
|
679
|
+
* Skips the full copy when the managed-resources.json version and content
|
|
680
|
+
* fingerprint match the current install, avoiding ~128ms of synchronous cpSync
|
|
681
|
+
* on steady-state startup.
|
|
682
682
|
* After `npm update -g @opengsd/gsd-pi`, versions will differ and the copy
|
|
683
683
|
* runs once to land the new resources.
|
|
684
684
|
*
|
|
@@ -712,16 +712,7 @@ export function initResources(agentDir, skillsDir = join(agentDir, 'skills')) {
|
|
|
712
712
|
if (manifest && isCurrentPackageManifest(manifest) && manifest.gsdVersion === currentVersion) {
|
|
713
713
|
// Version matches — check content fingerprint for same-version staleness.
|
|
714
714
|
const currentHash = getCurrentResourceFingerprint();
|
|
715
|
-
|
|
716
|
-
const hasMissingSharedFiles = hasMissingBundledResourceFiles(join(agentDir, 'shared'), join(resourcesDir, 'shared'));
|
|
717
|
-
const hasMissingSkillFiles = hasMissingBundledResourceFiles(skillsDir, join(resourcesDir, 'skills'));
|
|
718
|
-
const hasStaleGsdBrowserSkill = hasStaleGsdBrowserPackageSkill(skillsDir);
|
|
719
|
-
if (manifest.contentHash &&
|
|
720
|
-
manifest.contentHash === currentHash &&
|
|
721
|
-
!hasStaleExtensionFiles &&
|
|
722
|
-
!hasMissingSharedFiles &&
|
|
723
|
-
!hasMissingSkillFiles &&
|
|
724
|
-
!hasStaleGsdBrowserSkill) {
|
|
715
|
+
if (manifest.contentHash && manifest.contentHash === currentHash) {
|
|
725
716
|
return;
|
|
726
717
|
}
|
|
727
718
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
0b507856bc29955a
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
> **When to read this:** At the start of any session working on GSD-managed work, or when loaded by `/gsd`.
|
|
6
6
|
>
|
|
7
7
|
> **After reading this, always read `.gsd/STATE.md` to find out what's next.**
|
|
8
|
-
> If the milestone has a `
|
|
8
|
+
> If the milestone has a `CONTEXT.md`, read that too. If the active slice has an `S##-CONTEXT.md`, read that as well — these files contain project-specific decisions, reference paths, and implementation guidance that this generic methodology doc does not.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
Read these files in order and act on what they say:
|
|
15
15
|
|
|
16
16
|
1. **`.gsd/STATE.md`** — Where are we? What's the next action?
|
|
17
|
-
2. **`.gsd/
|
|
18
|
-
3. **`.gsd/
|
|
17
|
+
2. **`.gsd/phases/<active>/ROADMAP.md`** — What's the plan? Which slices are done? (`STATE.md` tells you which milestone is active)
|
|
18
|
+
3. **`.gsd/phases/<active>/CONTEXT.md`** — Milestone-level project decisions, reference paths, constraints. Read this before doing implementation work.
|
|
19
19
|
4. If a slice is active and has one, read **`S##-CONTEXT.md`** — Slice-specific decisions and constraints.
|
|
20
20
|
5. If a slice is active, read its **`S##-PLAN.md`** — Which tasks exist? Which are done?
|
|
21
21
|
6. If `.gsd/CODEBASE.md` exists, skim it for fast structural orientation before broad code exploration.
|
|
@@ -46,7 +46,7 @@ All artifacts live in `.gsd/` at the project root:
|
|
|
46
46
|
STATE.md # Dashboard — always read first (derived cache; runtime, gitignored)
|
|
47
47
|
DECISIONS.md # Append-only decisions register
|
|
48
48
|
CODEBASE.md # Generated codebase map cache (auto-refreshed by GSD)
|
|
49
|
-
|
|
49
|
+
phases/
|
|
50
50
|
M001/
|
|
51
51
|
M001-ROADMAP.md # Milestone plan (checkboxes = state)
|
|
52
52
|
M001-CONTEXT.md # Optional: user decisions from discuss phase
|
|
@@ -69,7 +69,7 @@ All artifacts live in `.gsd/` at the project root:
|
|
|
69
69
|
|
|
70
70
|
## File Format Reference
|
|
71
71
|
|
|
72
|
-
### `
|
|
72
|
+
### `ROADMAP.md`
|
|
73
73
|
|
|
74
74
|
```markdown
|
|
75
75
|
# M001: Title of the Milestone
|
|
@@ -96,7 +96,7 @@ All artifacts live in `.gsd/` at the project root:
|
|
|
96
96
|
|
|
97
97
|
**Parsing rules:** `- [x]` = done, `- [ ]` = not done. The `risk:` and `depends:[]` tags are inline metadata parsed from the line. `depends:[]` lists slice IDs this slice requires to be complete first.
|
|
98
98
|
|
|
99
|
-
**Boundary Map** (required section in
|
|
99
|
+
**Boundary Map** (required section in ROADMAP.md):
|
|
100
100
|
|
|
101
101
|
After the slices section, include a `## Boundary Map` that shows what each slice produces and consumes:
|
|
102
102
|
|
|
@@ -212,7 +212,7 @@ Critical wiring between artifacts:
|
|
|
212
212
|
Exact next thing to do.
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
### `
|
|
215
|
+
### `CONTEXT.md` / `S##-CONTEXT.md` (from discuss phase)
|
|
216
216
|
|
|
217
217
|
```markdown
|
|
218
218
|
# M001: Milestone or Slice Title — Context
|
|
@@ -268,7 +268,7 @@ Work flows through these phases. Each phase produces a file.
|
|
|
268
268
|
### Phase 1: Discuss (Optional)
|
|
269
269
|
|
|
270
270
|
**Purpose:** Capture user decisions on gray areas before planning.
|
|
271
|
-
**Produces:** `
|
|
271
|
+
**Produces:** `CONTEXT.md` for milestone-level discussion or `S##-CONTEXT.md` for slice-level discussion.
|
|
272
272
|
**When to use:** When the scope has ambiguities the user should weigh in on.
|
|
273
273
|
**When to skip:** When the user already knows exactly what they want, or told you to just go.
|
|
274
274
|
|
|
@@ -276,7 +276,7 @@ Work flows through these phases. Each phase produces a file.
|
|
|
276
276
|
1. Read the roadmap to understand the scope.
|
|
277
277
|
2. Identify 3-5 gray areas — implementation decisions the user cares about.
|
|
278
278
|
3. Use `ask_user_questions` to discuss each area, one round at a time. Never fabricate user input; wait for the user's actual response before the next round.
|
|
279
|
-
4. Write decisions to the appropriate context file (`
|
|
279
|
+
4. Write decisions to the appropriate context file (`CONTEXT.md` or `S##-CONTEXT.md`).
|
|
280
280
|
5. Do NOT discuss how to implement — only what the user wants.
|
|
281
281
|
|
|
282
282
|
### Phase 2: Research (Optional)
|
|
@@ -287,7 +287,7 @@ Work flows through these phases. Each phase produces a file.
|
|
|
287
287
|
**When to skip:** When the codebase is familiar and the work is straightforward.
|
|
288
288
|
|
|
289
289
|
**How to do it manually:**
|
|
290
|
-
1. Read `
|
|
290
|
+
1. Read `CONTEXT.md` and/or `S##-CONTEXT.md` if they exist — know what decisions are locked.
|
|
291
291
|
2. Scout relevant code: `rg`, `find`, read key files.
|
|
292
292
|
3. Use `resolve_library` / `get_library_docs` if needed.
|
|
293
293
|
4. Write findings to `research.md` with these sections:
|
|
@@ -330,15 +330,15 @@ The **Don't Hand-Roll** and **Common Pitfalls** sections prevent the most expens
|
|
|
330
330
|
**Produces:** `S##-PLAN.md` + individual `T01-PLAN.md` files.
|
|
331
331
|
|
|
332
332
|
**For a milestone (roadmap):**
|
|
333
|
-
1. Read `
|
|
333
|
+
1. Read `CONTEXT.md`, `M###-RESEARCH.md`, and `.gsd/DECISIONS.md` if they exist.
|
|
334
334
|
2. Decompose the vision into 1-10 demoable vertical slices. Prefer one slice for tiny, single-file, or static work unless the request clearly spans independent capabilities.
|
|
335
335
|
3. Order by risk (high-risk first to validate feasibility early).
|
|
336
|
-
4. Write `
|
|
336
|
+
4. Write `ROADMAP.md` with checkboxes, risk levels, dependencies, demo sentences.
|
|
337
337
|
5. **Write the boundary map** — for each slice, specify what it produces (functions, types, interfaces, endpoints) and what it consumes from upstream slices. This forces interface thinking before implementation and enables deterministic verification that slices actually connect.
|
|
338
338
|
|
|
339
339
|
**For a slice (task decomposition):**
|
|
340
|
-
1. Read the slice's entry in `
|
|
341
|
-
2. Read `
|
|
340
|
+
1. Read the slice's entry in `ROADMAP.md` **and its boundary map section** — know what interfaces this slice must produce and consume.
|
|
341
|
+
2. Read `CONTEXT.md`, `S##-CONTEXT.md`, `M###-RESEARCH.md`, `S##-RESEARCH.md`, and `.gsd/DECISIONS.md` if they exist for this slice.
|
|
342
342
|
3. Read summaries from dependency slices (check `depends:[]` in roadmap).
|
|
343
343
|
4. Verify that upstream slices' actual outputs match what the boundary map says this slice consumes. If they diverge, update the boundary map.
|
|
344
344
|
5. Decompose into 1-7 tasks, each fitting one context window.
|
|
@@ -424,7 +424,7 @@ key_decisions:
|
|
|
424
424
|
patterns_established:
|
|
425
425
|
- "Pattern name and where it lives"
|
|
426
426
|
drill_down_paths:
|
|
427
|
-
- .gsd/
|
|
427
|
+
- .gsd/phases/M001/slices/S01/tasks/T01-PLAN.md
|
|
428
428
|
duration: 15min
|
|
429
429
|
verification_result: pass
|
|
430
430
|
completed_at: 2026-03-07T16:00:00Z
|
|
@@ -466,12 +466,12 @@ key_decisions: []
|
|
|
466
466
|
**After a task completes:**
|
|
467
467
|
1. Mark the task done in `S##-PLAN.md` (checkbox).
|
|
468
468
|
2. Check if there's a next task in the slice → execute it.
|
|
469
|
-
3. If slice is complete → write slice summary, mark slice done in `
|
|
469
|
+
3. If slice is complete → write slice summary, mark slice done in `ROADMAP.md`.
|
|
470
470
|
|
|
471
471
|
**After a slice completes:**
|
|
472
472
|
1. Write slice `S##-SUMMARY.md` (compresses all task summaries).
|
|
473
473
|
2. Write slice `S##-UAT.md` — a human test script derived from the slice's must-haves and demo sentence.
|
|
474
|
-
3. Mark the slice checkbox in `
|
|
474
|
+
3. Mark the slice checkbox in `ROADMAP.md` as `[x]`.
|
|
475
475
|
4. Update `STATE.md` with new position.
|
|
476
476
|
5. Update milestone `M###-SUMMARY.md` with the completed slice's contributions.
|
|
477
477
|
6. Continue to next slice immediately. UAT can run after slice completion; automatic milestone closure requires each slice assessment to record `PASS`.
|
|
@@ -528,7 +528,7 @@ The EXACT first thing to do when resuming. Not vague. Specific.
|
|
|
528
528
|
It is NOT the source of truth. It's a convenience dashboard.
|
|
529
529
|
|
|
530
530
|
**Sources of truth:**
|
|
531
|
-
- `
|
|
531
|
+
- `ROADMAP.md` → which slices exist and which are done
|
|
532
532
|
- `S##-PLAN.md` → which tasks exist within a slice
|
|
533
533
|
- `T##-SUMMARY.md` → what happened during a task
|
|
534
534
|
- `S##-SUMMARY.md` and `M###-SUMMARY.md` → compressed slice and milestone outcomes
|
|
@@ -614,7 +614,7 @@ Commit types: `feat`, `fix`, `test`, `refactor`, `docs`, `perf`, `chore`
|
|
|
614
614
|
|
|
615
615
|
When planning or executing a task, load relevant prior context:
|
|
616
616
|
|
|
617
|
-
1. Check the current slice's `depends:[]` in `
|
|
617
|
+
1. Check the current slice's `depends:[]` in `ROADMAP.md`.
|
|
618
618
|
2. Load summaries from those dependency slices.
|
|
619
619
|
3. Start with the **highest available level** — milestone `M###-SUMMARY.md` first.
|
|
620
620
|
4. Only drill down to slice/task summaries if you need specific detail.
|
|
@@ -635,10 +635,10 @@ These are soft caps — exceed them when genuinely needed, but don't let summari
|
|
|
635
635
|
|
|
636
636
|
This methodology doc is generic. Project-specific guidance belongs in the milestone and slice context files:
|
|
637
637
|
|
|
638
|
-
- **`.gsd/
|
|
639
|
-
- **`.gsd/
|
|
638
|
+
- **`.gsd/phases/<active>/CONTEXT.md`** — milestone-level architecture decisions, reference file paths, and implementation constraints
|
|
639
|
+
- **`.gsd/phases/<active>/slices/S##/S##-CONTEXT.md`** — slice-level decisions, edge cases, and narrow implementation guidance when present
|
|
640
640
|
|
|
641
|
-
**Always read the active milestone's `
|
|
641
|
+
**Always read the active milestone's `CONTEXT.md` before starting implementation work.** If the active slice also has `S##-CONTEXT.md`, read that too. These files tell you what decisions are locked, what files to reference, and how to verify your work in this specific project.
|
|
642
642
|
|
|
643
643
|
---
|
|
644
644
|
|
|
@@ -12,8 +12,14 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { CLAUDE_CODE_MODELS } from "./models.js";
|
|
14
14
|
import { isClaudeCodeReady } from "./readiness.js";
|
|
15
|
-
import { streamViaClaudeCode } from "./stream-adapter.js";
|
|
15
|
+
import { setClaudeCodeUIContext, streamViaClaudeCode } from "./stream-adapter.js";
|
|
16
16
|
export default function claudeCodeCli(pi) {
|
|
17
|
+
// Core calls `streamSimple` with a plain `SimpleStreamOptions` (no UI
|
|
18
|
+
// context), so the elicitation handler used by `ask_user_questions` is
|
|
19
|
+
// otherwise never wired and self-cancels. Capture the live UI context here.
|
|
20
|
+
pi.on("before_provider_request", (_event, ctx) => {
|
|
21
|
+
setClaudeCodeUIContext(ctx.hasUI ? ctx.ui : undefined);
|
|
22
|
+
});
|
|
17
23
|
pi.registerProvider("claude-code", {
|
|
18
24
|
authMode: "externalCli",
|
|
19
25
|
api: "anthropic-messages",
|
|
@@ -28,6 +28,7 @@ import { getUnitToolSurfaceContract } from "../gsd/unit-tool-contracts.js";
|
|
|
28
28
|
import { awaitWorkflowMcpToolRegistration, getToolSurfaceReadinessError, POST_PREFLIGHT_READINESS_RETRY_DELAYS_MS, POST_PREFLIGHT_SDK_SETTLE_MS, TOOL_SURFACE_NOT_READY, } from "../gsd/tool-surface-readiness.js";
|
|
29
29
|
import { beginWorkflowMcpSdkSession, endWorkflowMcpSdkSession, } from "../gsd/workflow-mcp-readiness-cache.js";
|
|
30
30
|
import { getGuidedUnitContext } from "../gsd/guided-unit-context.js";
|
|
31
|
+
import { getActiveAutoUnitType, isAutoActive } from "../gsd/auto-runtime-state.js";
|
|
31
32
|
import { hasBrowserContractPrefix } from "../shared/browser-contract.js";
|
|
32
33
|
import { showInterviewRound } from "../shared/tui.js";
|
|
33
34
|
export { buildFinalAssistantContent, extractToolResultsFromSdkUserMessage, handleClaudeCodePartialStreamEvent, mergePendingToolCalls, shouldSuppressDuplicateToolUnavailableBlock, } from "./turn-assembler.js";
|
|
@@ -175,30 +176,44 @@ function extractMessageText(msg) {
|
|
|
175
176
|
}
|
|
176
177
|
return "";
|
|
177
178
|
}
|
|
179
|
+
// Patterns are anchored to the `UNIT: <Phase>` dispatch header ONLY. The old
|
|
180
|
+
// patterns also matched bare slugs (`run-uat`, `plan-slice`, `gsd_plan_slice`,
|
|
181
|
+
// …) anywhere in the text, so any incidental occurrence — a branch name like
|
|
182
|
+
// `milestone/M039`, an untracked file `m039-s05-…spec.ts`, a forensic report,
|
|
183
|
+
// or the user literally typing "slice"/"UAT" while describing a problem — would
|
|
184
|
+
// misclassify the turn as a dispatched unit. Only the dispatch header is an
|
|
185
|
+
// authoritative phase signal, so match nothing else.
|
|
178
186
|
const GSD_PHASE_PATTERNS = [
|
|
179
|
-
["run-uat", /\
|
|
180
|
-
["complete-milestone", /\
|
|
181
|
-
["validate-milestone", /\
|
|
182
|
-
["reassess-roadmap", /\
|
|
183
|
-
["complete-slice", /\
|
|
184
|
-
["replan-slice", /\
|
|
185
|
-
["refine-slice", /\
|
|
186
|
-
["plan-slice", /\
|
|
187
|
-
["plan-milestone", /\
|
|
188
|
-
["execute-task", /\
|
|
189
|
-
["gate-evaluate", /\
|
|
190
|
-
["research-milestone", /\
|
|
191
|
-
["research-slice", /\
|
|
192
|
-
["research-decision", /\
|
|
193
|
-
["discuss-milestone", /\
|
|
194
|
-
["discuss-slice", /\
|
|
195
|
-
["discuss-project", /\
|
|
196
|
-
["discuss-requirements", /\
|
|
187
|
+
["run-uat", /\bUNIT:\s*Run UAT\b/i],
|
|
188
|
+
["complete-milestone", /\bUNIT:\s*Complete Milestone\b/i],
|
|
189
|
+
["validate-milestone", /\bUNIT:\s*Validate Milestone\b/i],
|
|
190
|
+
["reassess-roadmap", /\bUNIT:\s*Reassess Roadmap\b/i],
|
|
191
|
+
["complete-slice", /\bUNIT:\s*Complete Slice\b/i],
|
|
192
|
+
["replan-slice", /\bUNIT:\s*Replan Slice\b/i],
|
|
193
|
+
["refine-slice", /\bUNIT:\s*Refine Slice\b/i],
|
|
194
|
+
["plan-slice", /\bUNIT:\s*Plan Slice\b/i],
|
|
195
|
+
["plan-milestone", /\bUNIT:\s*Plan Milestone\b/i],
|
|
196
|
+
["execute-task", /\bUNIT:\s*Execute Task\b/i],
|
|
197
|
+
["gate-evaluate", /\bUNIT:\s*Gate Evaluate\b/i],
|
|
198
|
+
["research-milestone", /\bUNIT:\s*Research Milestone\b/i],
|
|
199
|
+
["research-slice", /\bUNIT:\s*Research Slice\b/i],
|
|
200
|
+
["research-decision", /\bUNIT:\s*Research Decision\b/i],
|
|
201
|
+
["discuss-milestone", /\bUNIT:\s*Discuss Milestone\b/i],
|
|
202
|
+
["discuss-slice", /\bUNIT:\s*Discuss Slice\b/i],
|
|
203
|
+
["discuss-project", /\bUNIT:\s*Discuss Project\b/i],
|
|
204
|
+
["discuss-requirements", /\bUNIT:\s*Discuss Requirements\b/i],
|
|
197
205
|
];
|
|
206
|
+
/** The set of GSD phases this adapter recognises, derived from the patterns above. */
|
|
207
|
+
const KNOWN_GSD_PHASES = new Set(GSD_PHASE_PATTERNS.map(([phase]) => phase));
|
|
198
208
|
export function inferGsdPhaseFromContext(context) {
|
|
209
|
+
// Scan only the system prompt and the most recent user directive. Scanning
|
|
210
|
+
// the entire scrollback let a phase header that merely appeared in history
|
|
211
|
+
// (e.g. a SUMMARY the agent read, or a pasted prior dispatch) re-classify
|
|
212
|
+
// every subsequent turn.
|
|
213
|
+
const lastUser = [...context.messages].reverse().find((m) => m.role === "user");
|
|
199
214
|
const text = [
|
|
200
215
|
context.systemPrompt ?? "",
|
|
201
|
-
|
|
216
|
+
lastUser ? extractMessageText(lastUser) : "",
|
|
202
217
|
].join("\n");
|
|
203
218
|
for (const [phase, pattern] of GSD_PHASE_PATTERNS) {
|
|
204
219
|
if (pattern.test(text))
|
|
@@ -222,6 +237,26 @@ export function resolveGsdPhaseForSdk(context, projectRoot) {
|
|
|
222
237
|
return guided.unitType;
|
|
223
238
|
}
|
|
224
239
|
}
|
|
240
|
+
// Auto-mode records the dispatched unit type before each turn — that is the
|
|
241
|
+
// authoritative phase, so prefer it over any inference. (Guided interactive
|
|
242
|
+
// dispatch is handled above via getGuidedUnitContext.) Ignore `hook/*`
|
|
243
|
+
// pseudo-units and anything not a recognised GSD phase.
|
|
244
|
+
const autoUnit = getActiveAutoUnitType();
|
|
245
|
+
if (autoUnit && KNOWN_GSD_PHASES.has(autoUnit)) {
|
|
246
|
+
return autoUnit;
|
|
247
|
+
}
|
|
248
|
+
// No authoritative guided/auto signal → ad-hoc turn. Do NOT regex-infer a
|
|
249
|
+
// phase from prose: that would fire the workflow MCP preflight and, for
|
|
250
|
+
// run-uat, strip Bash/Write/Edit/gsd_exec for the rest of the session the
|
|
251
|
+
// moment the conversation (or the GSD system prompt itself) happened to
|
|
252
|
+
// mention a phase token. An ad-hoc turn keeps the full tool surface.
|
|
253
|
+
//
|
|
254
|
+
// The header-anchored inference remains only as a last resort while auto is
|
|
255
|
+
// running but the current unit wasn't recorded for some reason; even then it
|
|
256
|
+
// matches the `UNIT:` dispatch header only, never bare slugs in scrollback.
|
|
257
|
+
if (!isAutoActive()) {
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
225
260
|
return inferGsdPhaseFromContext(context);
|
|
226
261
|
}
|
|
227
262
|
/**
|
|
@@ -1384,6 +1419,12 @@ function isRecord(value) {
|
|
|
1384
1419
|
function isStringRecord(value) {
|
|
1385
1420
|
return isRecord(value) && Object.values(value).every((entry) => typeof entry === "string");
|
|
1386
1421
|
}
|
|
1422
|
+
export function resolveWorkflowMcpPreflightServerConfig(mcpServers, workflowServerName) {
|
|
1423
|
+
if (!workflowServerName || !isRecord(mcpServers))
|
|
1424
|
+
return undefined;
|
|
1425
|
+
const workflowServerConfig = mcpServers[workflowServerName];
|
|
1426
|
+
return isRecord(workflowServerConfig) ? workflowServerConfig : undefined;
|
|
1427
|
+
}
|
|
1387
1428
|
function cloneSdkMcpServerConfig(config) {
|
|
1388
1429
|
if (!isRecord(config))
|
|
1389
1430
|
return undefined;
|
|
@@ -1707,6 +1748,17 @@ export function buildSdkOptions(modelId, prompt, overrides, extraOptions = {}) {
|
|
|
1707
1748
|
// ---------------------------------------------------------------------------
|
|
1708
1749
|
// streamSimple implementation
|
|
1709
1750
|
// ---------------------------------------------------------------------------
|
|
1751
|
+
let capturedClaudeCodeUIContext;
|
|
1752
|
+
/**
|
|
1753
|
+
* Capture the active extension UI context from `before_provider_request`. Core
|
|
1754
|
+
* invokes `streamSimple` with a plain `SimpleStreamOptions` (no
|
|
1755
|
+
* `extensionUIContext`), so without this the elicitation handler is never wired
|
|
1756
|
+
* and `ask_user_questions` immediately returns cancelled. See index.ts, which
|
|
1757
|
+
* registers the hook that calls this.
|
|
1758
|
+
*/
|
|
1759
|
+
export function setClaudeCodeUIContext(ui) {
|
|
1760
|
+
capturedClaudeCodeUIContext = ui;
|
|
1761
|
+
}
|
|
1710
1762
|
/**
|
|
1711
1763
|
* GSD streamSimple function that delegates to the Claude Agent SDK.
|
|
1712
1764
|
*
|
|
@@ -1736,7 +1788,7 @@ async function pumpSdkMessages(model, context, options, stream) {
|
|
|
1736
1788
|
try {
|
|
1737
1789
|
const permissionMode = await resolveClaudePermissionMode();
|
|
1738
1790
|
const claudeOptions = options;
|
|
1739
|
-
const uiContext = claudeOptions?.extensionUIContext;
|
|
1791
|
+
const uiContext = claudeOptions?.extensionUIContext ?? capturedClaudeCodeUIContext;
|
|
1740
1792
|
const onExternalToolCall = claudeOptions?.onExternalToolCall;
|
|
1741
1793
|
const onExternalToolResult = claudeOptions?.onExternalToolResult;
|
|
1742
1794
|
const sdkQueryForTest = claudeOptions?._sdkQueryForTest;
|
|
@@ -1808,6 +1860,7 @@ async function pumpSdkMessages(model, context, options, stream) {
|
|
|
1808
1860
|
unitType: gsdPhase,
|
|
1809
1861
|
workflowServerName: workflowMcpServerName,
|
|
1810
1862
|
projectRoot,
|
|
1863
|
+
workflowServerConfig: resolveWorkflowMcpPreflightServerConfig(sdkOpts.mcpServers, workflowMcpServerName),
|
|
1811
1864
|
signal: options?.signal,
|
|
1812
1865
|
});
|
|
1813
1866
|
if (preflightError) {
|
|
@@ -158,6 +158,21 @@ function emitText(stream, message, text) {
|
|
|
158
158
|
stream.push({ type: "done", reason: "stop", message });
|
|
159
159
|
stream.end(message);
|
|
160
160
|
}
|
|
161
|
+
function isGeminiCliDeprecatedCliOutput(text) {
|
|
162
|
+
return (/IneligibleTierError/i.test(text)
|
|
163
|
+
|| /UNSUPPORTED_CLIENT/i.test(text)
|
|
164
|
+
|| /no longer supported for Gemini Code Assist for individuals/i.test(text)
|
|
165
|
+
|| /migrate to the Antigravity suite/i.test(text));
|
|
166
|
+
}
|
|
167
|
+
const GEMINI_CLI_DEPRECATION_HINT = "Gemini CLI is no longer supported for individual users. Install Antigravity CLI " +
|
|
168
|
+
"(curl -fsSL https://antigravity.google/cli/install.sh | bash), run `agy` to authenticate, " +
|
|
169
|
+
"then use /login → Antigravity or restart GSD to auto-migrate.";
|
|
170
|
+
function formatGoogleCliError(detail, provider) {
|
|
171
|
+
if (provider === "google-gemini-cli" && isGeminiCliDeprecatedCliOutput(detail)) {
|
|
172
|
+
return `${detail}\n\n${GEMINI_CLI_DEPRECATION_HINT}`;
|
|
173
|
+
}
|
|
174
|
+
return detail;
|
|
175
|
+
}
|
|
161
176
|
function emitError(stream, model, error) {
|
|
162
177
|
const message = error instanceof Error ? error.message : String(error);
|
|
163
178
|
const output = buildAssistantMessage(model, "", "error", message);
|
|
@@ -175,7 +190,7 @@ export function streamViaGoogleCli(model, context, options) {
|
|
|
175
190
|
const result = await runCli(command, args, options);
|
|
176
191
|
if (result.code !== 0) {
|
|
177
192
|
const detail = (result.stderr || result.stdout || `CLI exited with code ${result.code}`).trim();
|
|
178
|
-
throw new Error(detail);
|
|
193
|
+
throw new Error(formatGoogleCliError(detail, provider));
|
|
179
194
|
}
|
|
180
195
|
const text = provider === "google-gemini-cli"
|
|
181
196
|
? extractGeminiJsonResponse(result.stdout)
|
|
@@ -88,7 +88,12 @@ export function createDispatchHistory(options) {
|
|
|
88
88
|
if (!scopeId)
|
|
89
89
|
return 0;
|
|
90
90
|
try {
|
|
91
|
-
|
|
91
|
+
// Scope to the current session's trace_id when available (#852):
|
|
92
|
+
// a fresh session UUID that has never been written to unit_dispatches
|
|
93
|
+
// returns 0 rows so prior-session failures don't pre-populate the
|
|
94
|
+
// stuck window and immediately block the new session.
|
|
95
|
+
const traceId = options.resolveTraceId?.() ?? undefined;
|
|
96
|
+
const persisted = getRecentUnitKeysForProjectRoot(scopeId, windowSize, traceId);
|
|
92
97
|
if (persisted.length === 0)
|
|
93
98
|
return 0;
|
|
94
99
|
const rebuilt = [];
|
|
@@ -123,6 +123,7 @@ function resolveCompletionStopFromOutcome(outcome, stateSnapshot) {
|
|
|
123
123
|
// tolerates — same behavior as a fresh session.
|
|
124
124
|
const STUCK_RECOVERY_ATTEMPTS_KEY = "stuck_recovery_attempts";
|
|
125
125
|
const MAX_CONSECUTIVE_ALREADY_ACTIVE_SKIPS = 3;
|
|
126
|
+
const MAX_CONSECUTIVE_ORCHESTRATION_SKIPS = 3;
|
|
126
127
|
const ORCHESTRATION_MISSING_REASON = "Auto Orchestration Module is not wired; cannot dispatch built-in GSD Unit.";
|
|
127
128
|
function stableStuckStateScopeId(s) {
|
|
128
129
|
return normalizeRealPath(s.scope?.workspace.projectRoot ?? (s.originalBasePath || s.basePath));
|
|
@@ -132,7 +133,19 @@ function loadStuckState(s) {
|
|
|
132
133
|
if (!scopeId)
|
|
133
134
|
return { recentUnits: [], stuckRecoveryAttempts: 0 };
|
|
134
135
|
try {
|
|
135
|
-
|
|
136
|
+
// Scope the stuck window to the CURRENT session (trace_id) so stale
|
|
137
|
+
// finalize-retry entries from previous sessions don't fire detectStuck
|
|
138
|
+
// Rule 1 on the first iteration — killing auto-mode before any new
|
|
139
|
+
// dispatch runs (#852). A prior session's two consecutive finalize-retry
|
|
140
|
+
// failures would otherwise permanently block every new session.
|
|
141
|
+
//
|
|
142
|
+
// s.currentTraceId is only set inside the first loop iteration (line ~443),
|
|
143
|
+
// so at this call-site it is always null for a fresh session. Return []
|
|
144
|
+
// directly in that case — no prior dispatch has occurred in this session,
|
|
145
|
+
// so the stuck window is trivially empty and the DB query is skipped.
|
|
146
|
+
const recentUnits = s.currentTraceId != null
|
|
147
|
+
? getRecentUnitKeysForProjectRoot(scopeId, STUCK_WINDOW_SIZE, s.currentTraceId)
|
|
148
|
+
: [];
|
|
136
149
|
const stuckRecoveryAttempts = getRuntimeKv("global", scopeId, STUCK_RECOVERY_ATTEMPTS_KEY) ?? 0;
|
|
137
150
|
return { recentUnits, stuckRecoveryAttempts };
|
|
138
151
|
}
|
|
@@ -295,6 +308,8 @@ export async function autoLoop(ctx, pi, s, deps, options) {
|
|
|
295
308
|
let consecutiveErrors = 0;
|
|
296
309
|
let consecutiveCooldowns = 0;
|
|
297
310
|
let consecutiveAlreadyActiveSkips = 0;
|
|
311
|
+
let consecutiveOrchestrationSkips = 0;
|
|
312
|
+
let lastOrchestrationSkipKey = null;
|
|
298
313
|
const recentErrorMessages = [];
|
|
299
314
|
while (s.active) {
|
|
300
315
|
iteration++;
|
|
@@ -777,11 +792,51 @@ export async function autoLoop(ctx, pi, s, deps, options) {
|
|
|
777
792
|
}
|
|
778
793
|
if (orchestrationResult.kind === "skipped") {
|
|
779
794
|
s.pendingOrchestrationDispatch = null;
|
|
795
|
+
// Idempotent re-poll skips are benign (an active unit is still running).
|
|
796
|
+
// The orchestrator's own stuck-window detection handles the truly-stuck case.
|
|
797
|
+
// Do not count these toward the consecutive-skip streak.
|
|
798
|
+
if (orchestrationResult.reason === "idempotent advance: unit already active") {
|
|
799
|
+
emitIterationEnd({ skipped: true });
|
|
800
|
+
completeIteration();
|
|
801
|
+
finishTurn("skipped");
|
|
802
|
+
continue;
|
|
803
|
+
}
|
|
804
|
+
const skipState = orchestrationResult.stateSnapshot;
|
|
805
|
+
const skipKey = [
|
|
806
|
+
orchestrationResult.reason,
|
|
807
|
+
skipState?.phase,
|
|
808
|
+
skipState?.activeMilestone?.id,
|
|
809
|
+
skipState?.activeSlice?.id,
|
|
810
|
+
skipState?.activeTask?.id,
|
|
811
|
+
].join("|");
|
|
812
|
+
consecutiveOrchestrationSkips = skipKey === lastOrchestrationSkipKey
|
|
813
|
+
? consecutiveOrchestrationSkips + 1
|
|
814
|
+
: 1;
|
|
815
|
+
lastOrchestrationSkipKey = skipKey;
|
|
816
|
+
if (consecutiveOrchestrationSkips >= MAX_CONSECUTIVE_ORCHESTRATION_SKIPS) {
|
|
817
|
+
const msg = `Orchestration skipped ${consecutiveOrchestrationSkips} consecutive attempts without progress. Pausing auto-mode for manual recovery.`;
|
|
818
|
+
ctx.ui.notify(msg, "error");
|
|
819
|
+
await deps.pauseAuto(ctx, pi, {
|
|
820
|
+
message: msg,
|
|
821
|
+
category: "unknown",
|
|
822
|
+
}, {
|
|
823
|
+
expectedCurrentUnit: null,
|
|
824
|
+
});
|
|
825
|
+
finishTurn("paused", "manual-attention", orchestrationResult.reason ?? "orchestration-skipped");
|
|
826
|
+
finishIncompleteIteration({
|
|
827
|
+
status: "paused",
|
|
828
|
+
reason: orchestrationResult.reason ?? "orchestration-skipped",
|
|
829
|
+
failureClass: "manual-attention",
|
|
830
|
+
});
|
|
831
|
+
break;
|
|
832
|
+
}
|
|
780
833
|
emitIterationEnd({ skipped: true });
|
|
781
834
|
completeIteration();
|
|
782
835
|
finishTurn("skipped");
|
|
783
836
|
continue;
|
|
784
837
|
}
|
|
838
|
+
consecutiveOrchestrationSkips = 0;
|
|
839
|
+
lastOrchestrationSkipKey = null;
|
|
785
840
|
if (orchestrationResult.kind === "paused") {
|
|
786
841
|
s.pendingOrchestrationDispatch = null;
|
|
787
842
|
finishIncompleteIteration({
|
|
@@ -1148,7 +1203,17 @@ export async function autoLoop(ctx, pi, s, deps, options) {
|
|
|
1148
1203
|
const finalizeDecision = decideFinalizeResult(finalizeResult.action === "break"
|
|
1149
1204
|
? { action: "break", reason: finalizeResult.reason }
|
|
1150
1205
|
: finalizeResult.action === "continue"
|
|
1151
|
-
? {
|
|
1206
|
+
? {
|
|
1207
|
+
action: "continue",
|
|
1208
|
+
// Surface the specific verification failure (e.g. "roadmap has
|
|
1209
|
+
// zero slices") in the ledger/stuck-loop reason instead of the
|
|
1210
|
+
// opaque bare "finalize-retry" token. The retry paths in
|
|
1211
|
+
// runFinalize set s.pendingVerificationRetry.failureContext
|
|
1212
|
+
// from describeArtifactVerificationFailure before returning
|
|
1213
|
+
// continue; it is cleared on the next dispatch, so reading it
|
|
1214
|
+
// here captures the reason for THIS finalize (#852 follow-up).
|
|
1215
|
+
failureDetail: s.pendingVerificationRetry?.failureContext,
|
|
1216
|
+
}
|
|
1152
1217
|
: { action: "next" });
|
|
1153
1218
|
if (finalizeDecision.action === "stop") {
|
|
1154
1219
|
dispatchSettled = settleDispatchFailed(dispatchId, finalizeDecision.ledgerErrorSummary, {
|