gsd-pi 2.75.0 → 2.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +186 -149
- package/dist/claude-cli-check.d.ts +10 -0
- package/dist/claude-cli-check.js +13 -3
- package/dist/headless-events.d.ts +1 -1
- package/dist/headless-events.js +5 -2
- package/dist/headless.js +5 -6
- package/dist/onboarding.d.ts +20 -1
- package/dist/onboarding.js +99 -39
- package/dist/resources/extensions/ask-user-questions.js +17 -5
- package/dist/resources/extensions/claude-code-cli/models.js +9 -0
- package/dist/resources/extensions/claude-code-cli/readiness.js +12 -2
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +76 -4
- package/dist/resources/extensions/gsd/auto/detect-stuck.js +9 -0
- package/dist/resources/extensions/gsd/auto/loop.js +67 -4
- package/dist/resources/extensions/gsd/auto/phases.js +72 -47
- package/dist/resources/extensions/gsd/auto/resolve.js +1 -1
- package/dist/resources/extensions/gsd/auto/run-unit.js +10 -1
- package/dist/resources/extensions/gsd/auto/session.js +5 -0
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +20 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +37 -8
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +8 -2
- package/dist/resources/extensions/gsd/auto-dispatch.js +120 -14
- package/dist/resources/extensions/gsd/auto-loop.js +1 -1
- package/dist/resources/extensions/gsd/auto-model-selection.js +14 -4
- package/dist/resources/extensions/gsd/auto-post-unit.js +10 -8
- package/dist/resources/extensions/gsd/auto-prompts.js +190 -46
- package/dist/resources/extensions/gsd/auto-recovery.js +57 -0
- package/dist/resources/extensions/gsd/auto-start.js +5 -3
- package/dist/resources/extensions/gsd/auto-verification.js +3 -3
- package/dist/resources/extensions/gsd/auto-worktree.js +71 -2
- package/dist/resources/extensions/gsd/auto.js +57 -25
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +8 -21
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +45 -23
- package/dist/resources/extensions/gsd/bootstrap/memory-tools.js +128 -0
- package/dist/resources/extensions/gsd/bootstrap/query-tools.js +29 -0
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +2 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +22 -0
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +17 -4
- package/dist/resources/extensions/gsd/commands/catalog.js +81 -9
- package/dist/resources/extensions/gsd/commands/handlers/core.js +64 -24
- package/dist/resources/extensions/gsd/commands/handlers/escalate.js +171 -0
- package/dist/resources/extensions/gsd/commands/handlers/onboarding.js +159 -0
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +21 -0
- package/dist/resources/extensions/gsd/commands/handlers/workflow.js +228 -29
- package/dist/resources/extensions/gsd/commands-cmux.js +5 -2
- package/dist/resources/extensions/gsd/commands-config.js +5 -0
- package/dist/resources/extensions/gsd/commands-debug.js +388 -0
- package/dist/resources/extensions/gsd/commands-do.js +1 -0
- package/dist/resources/extensions/gsd/commands-extract-learnings.js +233 -75
- package/dist/resources/extensions/gsd/commands-handlers.js +21 -2
- package/dist/resources/extensions/gsd/commands-memory.js +462 -0
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +40 -12
- package/dist/resources/extensions/gsd/commands-scan.js +94 -0
- package/dist/resources/extensions/gsd/commands-workflow-templates.js +101 -2
- package/dist/resources/extensions/gsd/custom-workflow-engine.js +74 -54
- package/dist/resources/extensions/gsd/db-writer.js +1 -0
- package/dist/resources/extensions/gsd/debug-session-store.js +238 -0
- package/dist/resources/extensions/gsd/definition-loader.js +7 -0
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +9 -9
- package/dist/resources/extensions/gsd/doctor-environment.js +2 -1
- package/dist/resources/extensions/gsd/doctor-git-checks.js +27 -3
- package/dist/resources/extensions/gsd/doctor-proactive.js +4 -1
- package/dist/resources/extensions/gsd/doctor-providers.js +48 -20
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +22 -4
- package/dist/resources/extensions/gsd/doctor.js +7 -1
- package/dist/resources/extensions/gsd/error-classifier.js +6 -3
- package/dist/resources/extensions/gsd/escalation.js +321 -0
- package/dist/resources/extensions/gsd/forensics.js +26 -29
- package/dist/resources/extensions/gsd/git-service.js +0 -1
- package/dist/resources/extensions/gsd/graph.js +26 -2
- package/dist/resources/extensions/gsd/gsd-db.js +490 -32
- package/dist/resources/extensions/gsd/health-widget-core.js +42 -14
- package/dist/resources/extensions/gsd/health-widget.js +7 -4
- package/dist/resources/extensions/gsd/init-wizard.js +86 -45
- package/dist/resources/extensions/gsd/markdown-renderer.js +5 -5
- package/dist/resources/extensions/gsd/memory-embeddings.js +219 -0
- package/dist/resources/extensions/gsd/memory-extractor.js +78 -27
- package/dist/resources/extensions/gsd/memory-ingest.js +218 -0
- package/dist/resources/extensions/gsd/memory-relations.js +189 -0
- package/dist/resources/extensions/gsd/memory-source-store.js +113 -0
- package/dist/resources/extensions/gsd/memory-store.js +299 -6
- package/dist/resources/extensions/gsd/metrics.js +1 -0
- package/dist/resources/extensions/gsd/model-cost-table.js +3 -1
- package/dist/resources/extensions/gsd/model-router.js +16 -6
- package/dist/resources/extensions/gsd/native-git-bridge.js +137 -5
- package/dist/resources/extensions/gsd/notification-overlay.js +7 -22
- package/dist/resources/extensions/gsd/notification-widget.js +24 -39
- package/dist/resources/extensions/gsd/notifications.js +4 -0
- package/dist/resources/extensions/gsd/onboarding-state.js +133 -0
- package/dist/resources/extensions/gsd/post-execution-checks.js +27 -11
- package/dist/resources/extensions/gsd/pre-execution-checks.js +105 -8
- package/dist/resources/extensions/gsd/preferences-models.js +1 -0
- package/dist/resources/extensions/gsd/preferences-types.js +2 -1
- package/dist/resources/extensions/gsd/preferences-validation.js +42 -8
- package/dist/resources/extensions/gsd/preferences.js +10 -10
- package/dist/resources/extensions/gsd/prompts/add-tests.md +1 -0
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
- package/dist/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
- package/dist/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
- package/dist/resources/extensions/gsd/prompts/execute-task.md +13 -1
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -0
- package/dist/resources/extensions/gsd/prompts/refine-slice.md +69 -0
- package/dist/resources/extensions/gsd/prompts/scan.md +79 -0
- package/dist/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
- package/dist/resources/extensions/gsd/python-resolver.js +70 -0
- package/dist/resources/extensions/gsd/run-manager.js +37 -17
- package/dist/resources/extensions/gsd/setup-catalog.js +75 -0
- package/dist/resources/extensions/gsd/state.js +47 -3
- package/dist/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
- package/dist/resources/extensions/gsd/tools/complete-task.js +80 -0
- package/dist/resources/extensions/gsd/tools/memory-tools.js +306 -0
- package/dist/resources/extensions/gsd/tools/plan-milestone.js +37 -12
- package/dist/resources/extensions/gsd/tools/plan-slice.js +5 -2
- package/dist/resources/extensions/gsd/tools/skip-slice.js +78 -0
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +14 -0
- package/dist/resources/extensions/gsd/uok/flags.js +7 -7
- package/dist/resources/extensions/gsd/uok/kernel.js +8 -3
- package/dist/resources/extensions/gsd/verification-gate.js +2 -1
- package/dist/resources/extensions/gsd/workflow-dispatch.js +64 -0
- package/dist/resources/extensions/gsd/workflow-install.js +327 -0
- package/dist/resources/extensions/gsd/workflow-manifest.js +8 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +1 -6
- package/dist/resources/extensions/gsd/workflow-plugins.js +346 -0
- package/dist/resources/extensions/gsd/workflow-projections.js +17 -15
- package/dist/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
- package/dist/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
- package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
- package/dist/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
- package/dist/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
- package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
- package/dist/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
- package/dist/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
- package/dist/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
- package/dist/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
- package/dist/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
- package/dist/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
- package/dist/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
- package/dist/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/registry.json +184 -0
- package/dist/resources/extensions/gsd/workflow-templates/release.md +118 -0
- package/dist/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
- package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/spike.md +1 -0
- package/dist/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
- package/dist/resources/extensions/gsd/worktree-resolver.js +42 -1
- package/dist/resources/extensions/remote-questions/commands.js +380 -0
- package/dist/resources/extensions/remote-questions/manager.js +39 -5
- package/dist/resources/extensions/remote-questions/telegram-adapter.js +79 -4
- package/dist/resources/extensions/search-the-web/command-search-provider.js +4 -1
- package/dist/resources/extensions/search-the-web/native-search.js +13 -2
- package/dist/resources/extensions/shared/interview-ui.js +189 -1
- package/dist/resources/extensions/shared/layout-utils.js +17 -0
- package/dist/resources/extensions/shared/rtk-shared.js +47 -0
- package/dist/resources/extensions/shared/rtk.js +3 -46
- package/dist/resources/skills/create-workflow/SKILL.md +33 -6
- package/dist/rtk-shared.d.ts +10 -0
- package/dist/rtk-shared.js +47 -0
- package/dist/rtk.d.ts +2 -6
- package/dist/rtk.js +3 -48
- package/dist/shared/workspace-types.d.ts +52 -0
- package/dist/shared/workspace-types.js +1 -0
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/update-check.d.ts +10 -0
- package/dist/update-check.js +24 -3
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +13 -13
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
- package/dist/web/standalone/.next/required-server-files.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +2 -2
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- 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 +2 -2
- 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 +2 -2
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- 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 +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +13 -13
- package/dist/web/standalone/.next/server/chunks/6897.js +2 -2
- package/dist/web/standalone/.next/server/chunks/7461.js +1 -0
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-manifest.json +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/static/chunks/2826.e59e8578e2e28639.js +9 -0
- package/dist/web/standalone/.next/static/chunks/{2008.71ee9230ad78df21.js → 3621.fc7480022c972438.js} +2 -2
- package/dist/web/standalone/.next/static/chunks/app/{page-7115e62689b5fd84.js → page-151349214571e2b6.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/{webpack-b868033a5834586d.js → webpack-5fc74f13a25fa1bb.js} +1 -1
- package/dist/web/standalone/.next/static/css/632cd626b1731d88.css +1 -0
- package/dist/web/standalone/server.js +1 -1
- package/dist/welcome-screen.js +48 -24
- package/dist/wizard.js +2 -2
- package/dist/worktree-cli.d.ts +6 -5
- package/dist/worktree-cli.js +23 -7
- package/package.json +3 -3
- package/packages/daemon/package.json +2 -2
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +12 -10
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/session-manager.d.ts.map +1 -1
- package/packages/mcp-server/dist/session-manager.js +8 -1
- package/packages/mcp-server/dist/session-manager.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts +1 -0
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +207 -71
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +2 -2
- package/packages/mcp-server/src/mcp-server.test.ts +40 -4
- package/packages/mcp-server/src/server.ts +12 -10
- package/packages/mcp-server/src/session-manager.ts +10 -3
- package/packages/mcp-server/src/workflow-tools.test.ts +346 -1
- package/packages/mcp-server/src/workflow-tools.ts +228 -75
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/native/package.json +1 -1
- package/packages/native/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-ai/dist/index.d.ts +1 -0
- package/packages/pi-ai/dist/index.d.ts.map +1 -1
- package/packages/pi-ai/dist/index.js +1 -0
- package/packages/pi-ai/dist/index.js.map +1 -1
- package/packages/pi-ai/dist/models/capability-patches.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/capability-patches.js +3 -2
- package/packages/pi-ai/dist/models/capability-patches.js.map +1 -1
- package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts +68 -0
- package/packages/pi-ai/dist/models/generated/amazon-bedrock.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/generated/amazon-bedrock.js +68 -0
- package/packages/pi-ai/dist/models/generated/amazon-bedrock.js.map +1 -1
- package/packages/pi-ai/dist/models/generated/anthropic.d.ts +17 -0
- package/packages/pi-ai/dist/models/generated/anthropic.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/generated/anthropic.js +17 -0
- package/packages/pi-ai/dist/models/generated/anthropic.js.map +1 -1
- package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts +17 -0
- package/packages/pi-ai/dist/models/generated/google-antigravity.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/generated/google-antigravity.js +17 -0
- package/packages/pi-ai/dist/models/generated/google-antigravity.js.map +1 -1
- package/packages/pi-ai/dist/models/generated/groq.d.ts +0 -153
- package/packages/pi-ai/dist/models/generated/groq.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/generated/groq.js +0 -153
- package/packages/pi-ai/dist/models/generated/groq.js.map +1 -1
- package/packages/pi-ai/dist/models/generated/index.d.ts +136 -153
- package/packages/pi-ai/dist/models/generated/index.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/generated/openai-codex.d.ts +17 -0
- package/packages/pi-ai/dist/models/generated/openai-codex.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/generated/openai-codex.js +17 -0
- package/packages/pi-ai/dist/models/generated/openai-codex.js.map +1 -1
- package/packages/pi-ai/dist/models/generated/openrouter.d.ts +17 -0
- package/packages/pi-ai/dist/models/generated/openrouter.d.ts.map +1 -1
- package/packages/pi-ai/dist/models/generated/openrouter.js +17 -0
- package/packages/pi-ai/dist/models/generated/openrouter.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.test.js +17 -0
- package/packages/pi-ai/dist/models.generated.test.js.map +1 -1
- package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts +22 -1
- package/packages/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/amazon-bedrock.js +40 -6
- package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/amazon-bedrock.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/amazon-bedrock.test.js +106 -0
- package/packages/pi-ai/dist/providers/amazon-bedrock.test.js.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-auth.test.js +42 -1
- package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +20 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.js +32 -2
- package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.test.js +12 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.d.ts +11 -0
- package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.js +18 -1
- package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/packages/pi-ai/dist/providers/api-family.d.ts +27 -0
- package/packages/pi-ai/dist/providers/api-family.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/api-family.js +47 -0
- package/packages/pi-ai/dist/providers/api-family.js.map +1 -0
- package/packages/pi-ai/dist/providers/api-family.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/api-family.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/api-family.test.js +101 -0
- package/packages/pi-ai/dist/providers/api-family.test.js.map +1 -0
- package/packages/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/oauth/openai-codex.js +12 -0
- package/packages/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
- package/packages/pi-ai/package.json +2 -2
- package/packages/pi-ai/scripts/generate-models.ts +50 -0
- package/packages/pi-ai/src/index.ts +1 -0
- package/packages/pi-ai/src/models/capability-patches.ts +5 -2
- package/packages/pi-ai/src/models/generated/amazon-bedrock.ts +68 -0
- package/packages/pi-ai/src/models/generated/anthropic.ts +17 -0
- package/packages/pi-ai/src/models/generated/google-antigravity.ts +17 -0
- package/packages/pi-ai/src/models/generated/groq.ts +0 -153
- package/packages/pi-ai/src/models/generated/openai-codex.ts +17 -0
- package/packages/pi-ai/src/models/generated/openrouter.ts +17 -0
- package/packages/pi-ai/src/models.generated.test.ts +17 -0
- package/packages/pi-ai/src/providers/amazon-bedrock.test.ts +164 -0
- package/packages/pi-ai/src/providers/amazon-bedrock.ts +41 -7
- package/packages/pi-ai/src/providers/anthropic-auth.test.ts +47 -1
- package/packages/pi-ai/src/providers/anthropic-shared.test.ts +15 -1
- package/packages/pi-ai/src/providers/anthropic-shared.ts +36 -3
- package/packages/pi-ai/src/providers/anthropic.ts +19 -1
- package/packages/pi-ai/src/providers/api-family.test.ts +129 -0
- package/packages/pi-ai/src/providers/api-family.ts +57 -0
- package/packages/pi-ai/src/utils/oauth/openai-codex.ts +15 -0
- package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-coding-agent/dist/cli/args.d.ts +6 -0
- package/packages/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/cli/args.js +14 -4
- package/packages/pi-coding-agent/dist/cli/args.js.map +1 -1
- package/packages/pi-coding-agent/dist/cli/args.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/cli/args.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/cli/args.test.js +38 -0
- package/packages/pi-coding-agent/dist/cli/args.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +38 -0
- package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +14 -0
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js +34 -0
- package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js +74 -0
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +4 -1
- package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +2 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +32 -0
- package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js +4 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.d.ts +10 -0
- package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.js +39 -1
- package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/skill-tool.test.js +2 -2
- package/packages/pi-coding-agent/dist/core/skill-tool.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/main.js +3 -0
- package/packages/pi-coding-agent/dist/main.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js +17 -7
- package/packages/pi-coding-agent/dist/modes/interactive/components/chat-frame.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +48 -34
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts +4 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +83 -33
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js +77 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -66
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +1 -75
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +192 -24
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/cli/args.test.ts +44 -0
- package/packages/pi-coding-agent/src/cli/args.ts +21 -6
- package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +56 -0
- package/packages/pi-coding-agent/src/core/auth-storage.test.ts +83 -0
- package/packages/pi-coding-agent/src/core/auth-storage.ts +35 -0
- package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +4 -1
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +4 -1
- package/packages/pi-coding-agent/src/core/extensions/types.ts +2 -2
- package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +37 -1
- package/packages/pi-coding-agent/src/core/retry-handler.ts +4 -1
- package/packages/pi-coding-agent/src/core/sdk.ts +58 -1
- package/packages/pi-coding-agent/src/core/skill-tool.test.ts +2 -2
- package/packages/pi-coding-agent/src/main.ts +4 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/chat-frame.ts +19 -7
- package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +53 -31
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +88 -36
- package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.ts +83 -0
- package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +2 -83
- package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +208 -27
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
- package/packages/rpc-client/package.json +1 -1
- package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
- package/pkg/dist/modes/interactive/theme/theme-schema.d.ts +70 -0
- package/pkg/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
- package/pkg/dist/modes/interactive/theme/theme-schema.js +77 -0
- package/pkg/dist/modes/interactive/theme/theme-schema.js.map +1 -0
- package/pkg/dist/modes/interactive/theme/theme.d.ts +1 -66
- package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/theme.js +1 -75
- package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
- package/pkg/dist/modes/interactive/theme/themes.d.ts +1 -1
- package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/themes.js +192 -24
- package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/ask-user-questions.ts +24 -6
- package/src/resources/extensions/claude-code-cli/models.ts +9 -0
- package/src/resources/extensions/claude-code-cli/readiness.ts +13 -2
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +94 -4
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +84 -0
- package/src/resources/extensions/gsd/auto/detect-stuck.ts +10 -0
- package/src/resources/extensions/gsd/auto/loop-deps.ts +2 -9
- package/src/resources/extensions/gsd/auto/loop.ts +109 -3
- package/src/resources/extensions/gsd/auto/phases.ts +97 -60
- package/src/resources/extensions/gsd/auto/resolve.ts +1 -1
- package/src/resources/extensions/gsd/auto/run-unit.ts +11 -1
- package/src/resources/extensions/gsd/auto/session.ts +7 -0
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +20 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +46 -5
- package/src/resources/extensions/gsd/auto-direct-dispatch.ts +15 -2
- package/src/resources/extensions/gsd/auto-dispatch.ts +141 -9
- package/src/resources/extensions/gsd/auto-loop.ts +1 -1
- package/src/resources/extensions/gsd/auto-model-selection.ts +17 -4
- package/src/resources/extensions/gsd/auto-post-unit.ts +10 -8
- package/src/resources/extensions/gsd/auto-prompts.ts +232 -47
- package/src/resources/extensions/gsd/auto-recovery.ts +63 -1
- package/src/resources/extensions/gsd/auto-start.ts +8 -6
- package/src/resources/extensions/gsd/auto-verification.ts +3 -3
- package/src/resources/extensions/gsd/auto-worktree.ts +81 -1
- package/src/resources/extensions/gsd/auto.ts +61 -28
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +8 -21
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +46 -24
- package/src/resources/extensions/gsd/bootstrap/memory-tools.ts +158 -0
- package/src/resources/extensions/gsd/bootstrap/query-tools.ts +31 -0
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +2 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +22 -0
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +20 -4
- package/src/resources/extensions/gsd/commands/catalog.ts +74 -9
- package/src/resources/extensions/gsd/commands/handlers/core.ts +69 -27
- package/src/resources/extensions/gsd/commands/handlers/escalate.ts +216 -0
- package/src/resources/extensions/gsd/commands/handlers/onboarding.ts +196 -0
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +21 -0
- package/src/resources/extensions/gsd/commands/handlers/workflow.ts +279 -29
- package/src/resources/extensions/gsd/commands-cmux.ts +6 -2
- package/src/resources/extensions/gsd/commands-config.ts +10 -0
- package/src/resources/extensions/gsd/commands-debug.ts +484 -0
- package/src/resources/extensions/gsd/commands-do.ts +1 -0
- package/src/resources/extensions/gsd/commands-extract-learnings.ts +295 -76
- package/src/resources/extensions/gsd/commands-handlers.ts +19 -2
- package/src/resources/extensions/gsd/commands-memory.ts +551 -0
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +49 -12
- package/src/resources/extensions/gsd/commands-scan.ts +125 -0
- package/src/resources/extensions/gsd/commands-workflow-templates.ts +129 -2
- package/src/resources/extensions/gsd/custom-workflow-engine.ts +85 -60
- package/src/resources/extensions/gsd/db-writer.ts +3 -0
- package/src/resources/extensions/gsd/debug-session-store.ts +377 -0
- package/src/resources/extensions/gsd/definition-loader.ts +7 -0
- package/src/resources/extensions/gsd/docs/preferences-reference.md +9 -9
- package/src/resources/extensions/gsd/doctor-environment.ts +2 -1
- package/src/resources/extensions/gsd/doctor-git-checks.ts +28 -3
- package/src/resources/extensions/gsd/doctor-proactive.ts +4 -1
- package/src/resources/extensions/gsd/doctor-providers.ts +52 -22
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +23 -4
- package/src/resources/extensions/gsd/doctor-types.ts +1 -0
- package/src/resources/extensions/gsd/doctor.ts +7 -1
- package/src/resources/extensions/gsd/error-classifier.ts +6 -3
- package/src/resources/extensions/gsd/escalation.ts +367 -0
- package/src/resources/extensions/gsd/forensics.ts +25 -29
- package/src/resources/extensions/gsd/git-service.ts +0 -1
- package/src/resources/extensions/gsd/graph.ts +33 -3
- package/src/resources/extensions/gsd/gsd-db.ts +578 -32
- package/src/resources/extensions/gsd/health-widget-core.ts +43 -14
- package/src/resources/extensions/gsd/health-widget.ts +7 -3
- package/src/resources/extensions/gsd/init-wizard.ts +87 -54
- package/src/resources/extensions/gsd/markdown-renderer.ts +5 -5
- package/src/resources/extensions/gsd/memory-embeddings.ts +235 -0
- package/src/resources/extensions/gsd/memory-extractor.ts +100 -34
- package/src/resources/extensions/gsd/memory-ingest.ts +286 -0
- package/src/resources/extensions/gsd/memory-relations.ts +240 -0
- package/src/resources/extensions/gsd/memory-source-store.ts +138 -0
- package/src/resources/extensions/gsd/memory-store.ts +351 -7
- package/src/resources/extensions/gsd/metrics.ts +1 -0
- package/src/resources/extensions/gsd/model-cost-table.ts +3 -1
- package/src/resources/extensions/gsd/model-router.ts +25 -6
- package/src/resources/extensions/gsd/native-git-bridge.ts +134 -6
- package/src/resources/extensions/gsd/notification-overlay.ts +9 -19
- package/src/resources/extensions/gsd/notification-widget.ts +25 -43
- package/src/resources/extensions/gsd/notifications.ts +6 -0
- package/src/resources/extensions/gsd/onboarding-state.ts +146 -0
- package/src/resources/extensions/gsd/post-execution-checks.ts +37 -14
- package/src/resources/extensions/gsd/pre-execution-checks.ts +106 -12
- package/src/resources/extensions/gsd/preferences-models.ts +1 -0
- package/src/resources/extensions/gsd/preferences-types.ts +10 -2
- package/src/resources/extensions/gsd/preferences-validation.ts +33 -7
- package/src/resources/extensions/gsd/preferences.ts +10 -10
- package/src/resources/extensions/gsd/prompts/add-tests.md +1 -0
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +4 -1
- package/src/resources/extensions/gsd/prompts/debug-diagnose.md +25 -0
- package/src/resources/extensions/gsd/prompts/debug-session-manager.md +80 -0
- package/src/resources/extensions/gsd/prompts/execute-task.md +13 -1
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +12 -0
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/refine-slice.md +69 -0
- package/src/resources/extensions/gsd/prompts/scan.md +79 -0
- package/src/resources/extensions/gsd/prompts/workflow-oneshot.md +26 -0
- package/src/resources/extensions/gsd/python-resolver.ts +76 -0
- package/src/resources/extensions/gsd/run-manager.ts +53 -19
- package/src/resources/extensions/gsd/setup-catalog.ts +105 -0
- package/src/resources/extensions/gsd/state.ts +50 -2
- package/src/resources/extensions/gsd/templates/PREFERENCES.md +7 -7
- package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +1 -34
- package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +7 -0
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +49 -0
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +45 -31
- package/src/resources/extensions/gsd/tests/auto-migrating-recovery.test.ts +63 -0
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +12 -0
- package/src/resources/extensions/gsd/tests/auto-prompts-fallback.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +123 -1
- package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/autocomplete-regressions-1675.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/commands-do.test.ts +48 -0
- package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +333 -21
- package/src/resources/extensions/gsd/tests/commands-scan.test.ts +351 -0
- package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +8 -6
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +6 -8
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +63 -0
- package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +905 -0
- package/src/resources/extensions/gsd/tests/debug-command-lifecycle.integration.test.ts +1229 -0
- package/src/resources/extensions/gsd/tests/debug-session-store.test.ts +565 -0
- package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +64 -0
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +62 -18
- package/src/resources/extensions/gsd/tests/enhanced-verification-integration.test.ts +5 -0
- package/src/resources/extensions/gsd/tests/escalation.test.ts +818 -0
- package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +29 -12
- package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +106 -0
- package/src/resources/extensions/gsd/tests/forensics-hook-key-parse.test.ts +74 -0
- package/src/resources/extensions/gsd/tests/graph-operations.test.ts +0 -4
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +44 -1
- package/src/resources/extensions/gsd/tests/health-widget.test.ts +8 -2
- package/src/resources/extensions/gsd/tests/init-prefs-routing.test.ts +190 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-git-symlink-cwd.test.ts +79 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +68 -1
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +109 -11
- package/src/resources/extensions/gsd/tests/integration/idle-recovery.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/integration/test-isolation.ts +53 -0
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +171 -1
- package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/memory-embeddings.test.ts +213 -0
- package/src/resources/extensions/gsd/tests/memory-ingest.test.ts +153 -0
- package/src/resources/extensions/gsd/tests/memory-maintenance.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/memory-relations.test.ts +175 -0
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/memory-tools.test.ts +295 -0
- package/src/resources/extensions/gsd/tests/milestone-status-tool.test.ts +3 -2
- package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/model-router.test.ts +51 -1
- package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +59 -0
- package/src/resources/extensions/gsd/tests/notification-overlay.test.ts +56 -37
- package/src/resources/extensions/gsd/tests/notification-widget.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/onboarding-state.test.ts +105 -0
- package/src/resources/extensions/gsd/tests/plan-milestone-boundary-map-preservation.test.ts +114 -0
- package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +4 -5
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +17 -0
- package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +105 -1
- package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +341 -6
- package/src/resources/extensions/gsd/tests/preferences.test.ts +69 -1
- package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +539 -0
- package/src/resources/extensions/gsd/tests/projection-no-plan-overwrite.test.ts +11 -2
- package/src/resources/extensions/gsd/tests/projection-regression.test.ts +7 -0
- package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +159 -8
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +24 -0
- package/src/resources/extensions/gsd/tests/prompt-db.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/prompts-no-gitignored-test-refs.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/python-resolver.test.ts +131 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/remote-notification-from-desktop.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/requirements.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +153 -0
- package/src/resources/extensions/gsd/tests/skip-slice-cascades-tasks.test.ts +125 -0
- package/src/resources/extensions/gsd/tests/slice-context-injection.test.ts +16 -4
- package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +54 -0
- package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +5 -0
- package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/uok-flags.test.ts +31 -1
- package/src/resources/extensions/gsd/tests/uok-kernel-path.test.ts +166 -0
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/workflow-install.test.ts +113 -0
- package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +15 -6
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/workflow-plugins.test.ts +310 -0
- package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +7 -0
- package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +8 -2
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +97 -0
- package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +2 -1
- package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +77 -2
- package/src/resources/extensions/gsd/tools/complete-task.ts +87 -0
- package/src/resources/extensions/gsd/tools/memory-tools.ts +380 -0
- package/src/resources/extensions/gsd/tools/plan-milestone.ts +42 -8
- package/src/resources/extensions/gsd/tools/plan-slice.ts +6 -1
- package/src/resources/extensions/gsd/tools/skip-slice.ts +133 -0
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +14 -0
- package/src/resources/extensions/gsd/types.ts +62 -0
- package/src/resources/extensions/gsd/unit-runtime.ts +1 -0
- package/src/resources/extensions/gsd/uok/contracts.ts +2 -1
- package/src/resources/extensions/gsd/uok/flags.ts +7 -7
- package/src/resources/extensions/gsd/uok/kernel.ts +16 -4
- package/src/resources/extensions/gsd/verification-gate.ts +2 -1
- package/src/resources/extensions/gsd/workflow-dispatch.ts +106 -0
- package/src/resources/extensions/gsd/workflow-install.ts +423 -0
- package/src/resources/extensions/gsd/workflow-logger.ts +3 -1
- package/src/resources/extensions/gsd/workflow-manifest.ts +8 -0
- package/src/resources/extensions/gsd/workflow-mcp.ts +1 -6
- package/src/resources/extensions/gsd/workflow-plugins.ts +403 -0
- package/src/resources/extensions/gsd/workflow-projections.ts +18 -16
- package/src/resources/extensions/gsd/workflow-templates/accessibility-audit.md +88 -0
- package/src/resources/extensions/gsd/workflow-templates/api-breaking-change.md +117 -0
- package/src/resources/extensions/gsd/workflow-templates/bugfix.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/changelog-gen.md +82 -0
- package/src/resources/extensions/gsd/workflow-templates/ci-bootstrap.md +144 -0
- package/src/resources/extensions/gsd/workflow-templates/dead-code.md +81 -0
- package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/docs-sync.yaml +76 -0
- package/src/resources/extensions/gsd/workflow-templates/env-audit.yaml +88 -0
- package/src/resources/extensions/gsd/workflow-templates/full-project.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/hotfix.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/issue-triage.md +84 -0
- package/src/resources/extensions/gsd/workflow-templates/observability-setup.md +133 -0
- package/src/resources/extensions/gsd/workflow-templates/onboarding-check.md +74 -0
- package/src/resources/extensions/gsd/workflow-templates/performance-audit.md +125 -0
- package/src/resources/extensions/gsd/workflow-templates/pr-review.md +67 -0
- package/src/resources/extensions/gsd/workflow-templates/pr-triage.md +83 -0
- package/src/resources/extensions/gsd/workflow-templates/refactor.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/registry.json +184 -0
- package/src/resources/extensions/gsd/workflow-templates/release.md +118 -0
- package/src/resources/extensions/gsd/workflow-templates/rename-symbol.yaml +99 -0
- package/src/resources/extensions/gsd/workflow-templates/security-audit.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/small-feature.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/spike.md +1 -0
- package/src/resources/extensions/gsd/workflow-templates/test-backfill.yaml +73 -0
- package/src/resources/extensions/gsd/workflow-templates.ts +7 -0
- package/src/resources/extensions/gsd/workspace-index.ts +9 -4
- package/src/resources/extensions/gsd/worktree-resolver.ts +47 -1
- package/src/resources/extensions/remote-questions/commands.ts +480 -0
- package/src/resources/extensions/remote-questions/manager.ts +49 -4
- package/src/resources/extensions/remote-questions/telegram-adapter.ts +86 -4
- package/src/resources/extensions/remote-questions/tests/command-polling.test.ts +246 -0
- package/src/resources/extensions/remote-questions/tests/remote-answer-normalization.test.ts +92 -0
- package/src/resources/extensions/remote-questions/tests/telegram-commands.test.ts +267 -0
- package/src/resources/extensions/search-the-web/command-search-provider.ts +4 -1
- package/src/resources/extensions/search-the-web/native-search.ts +13 -3
- package/src/resources/extensions/shared/interview-ui.ts +195 -1
- package/src/resources/extensions/shared/layout-utils.ts +26 -0
- package/src/resources/extensions/shared/rtk-shared.ts +58 -0
- package/src/resources/extensions/shared/rtk.ts +12 -52
- package/src/resources/extensions/shared/tests/interview-preview.test.ts +177 -0
- package/src/resources/extensions/shared/tests/preview-layout.test.ts +120 -0
- package/src/resources/skills/create-workflow/SKILL.md +33 -6
- package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +0 -9
- package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
- package/packages/native/dist/ps/types.d.ts +0 -5
- package/packages/native/dist/ps/types.js +0 -2
- package/packages/native/src/ps/types.ts +0 -5
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/LICENSE +0 -201
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/README.md +0 -9
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-cjs/index.js +0 -762
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +0 -19
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/constants.js +0 -1
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js +0 -9
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/index.js +0 -3
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +0 -230
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +0 -87
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +0 -32
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +0 -169
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js +0 -21
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +0 -88
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +0 -36
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js +0 -21
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +0 -22
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +0 -23
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js +0 -21
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/timing.js +0 -4
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +0 -63
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +0 -10
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts +0 -5
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts +0 -4
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +0 -3
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts +0 -46
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +0 -24
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +0 -12
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +0 -63
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts +0 -13
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts +0 -12
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts +0 -2
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts +0 -6
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts +0 -6
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts +0 -2
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -6
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts +0 -13
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +0 -8
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +0 -10
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts +0 -5
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts +0 -4
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts +0 -3
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts +0 -46
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts +0 -24
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts +0 -12
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts +0 -63
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts +0 -13
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts +0 -12
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts +0 -2
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts +0 -6
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts +0 -6
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts +0 -2
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts +0 -5
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts +0 -6
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts +0 -13
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +0 -8
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts +0 -12
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts +0 -12
- package/packages/pi-ai/node_modules/@smithy/node-http-handler/package.json +0 -68
- package/packages/pi-ai/oauth.d.ts +0 -1
- package/packages/pi-ai/oauth.js +0 -1
- /package/dist/web/standalone/.next/static/{prkokVQFxWtUVIku57_0z → ssX7BLv3Dw9Fb4CtrCGeR}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{prkokVQFxWtUVIku57_0z → ssX7BLv3Dw9Fb4CtrCGeR}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// GSD2 — Memory tool registration
|
|
2
|
+
//
|
|
3
|
+
// Exposes the memory-layer tools (capture_thought, memory_query, gsd_graph)
|
|
4
|
+
// to the LLM over MCP. All three degrade gracefully when the GSD database
|
|
5
|
+
// is unavailable.
|
|
6
|
+
|
|
7
|
+
import { Type } from "@sinclair/typebox";
|
|
8
|
+
import type { ExtensionAPI } from "@gsd/pi-coding-agent";
|
|
9
|
+
|
|
10
|
+
import { ensureDbOpen } from "./dynamic-tools.js";
|
|
11
|
+
import {
|
|
12
|
+
executeGsdGraph,
|
|
13
|
+
executeMemoryCapture,
|
|
14
|
+
executeMemoryQuery,
|
|
15
|
+
} from "../tools/memory-tools.js";
|
|
16
|
+
|
|
17
|
+
export function registerMemoryTools(pi: ExtensionAPI): void {
|
|
18
|
+
// ─── capture_thought ────────────────────────────────────────────────────
|
|
19
|
+
|
|
20
|
+
pi.registerTool({
|
|
21
|
+
name: "capture_thought",
|
|
22
|
+
label: "Capture Thought",
|
|
23
|
+
description:
|
|
24
|
+
"Record a durable piece of project knowledge (decision, convention, gotcha, pattern, " +
|
|
25
|
+
"preference, or environment detail) into the GSD memory store. Use sparingly — one memory " +
|
|
26
|
+
"per genuinely reusable insight, not per task.",
|
|
27
|
+
promptSnippet:
|
|
28
|
+
"Capture a durable project insight into the GSD memory store (categories: architecture, convention, gotcha, pattern, preference, environment)",
|
|
29
|
+
promptGuidelines: [
|
|
30
|
+
"Use capture_thought for insights that will remain useful across future sessions.",
|
|
31
|
+
"Do NOT capture one-off bug fixes, temporary state, secrets, or task-specific details.",
|
|
32
|
+
"Keep content to 1–3 sentences.",
|
|
33
|
+
"Set confidence: 0.6 tentative, 0.8 solid, 0.95 well-confirmed (default 0.8).",
|
|
34
|
+
],
|
|
35
|
+
parameters: Type.Object({
|
|
36
|
+
category: Type.Union(
|
|
37
|
+
[
|
|
38
|
+
Type.Literal("architecture"),
|
|
39
|
+
Type.Literal("convention"),
|
|
40
|
+
Type.Literal("gotcha"),
|
|
41
|
+
Type.Literal("preference"),
|
|
42
|
+
Type.Literal("environment"),
|
|
43
|
+
Type.Literal("pattern"),
|
|
44
|
+
],
|
|
45
|
+
{ description: "Memory category" },
|
|
46
|
+
),
|
|
47
|
+
content: Type.String({ description: "The memory text (1–3 sentences, no secrets)" }),
|
|
48
|
+
confidence: Type.Optional(
|
|
49
|
+
Type.Number({ description: "0.1–0.99, default 0.8", minimum: 0.1, maximum: 0.99 }),
|
|
50
|
+
),
|
|
51
|
+
tags: Type.Optional(Type.Array(Type.String(), { description: "Free-form tags (reserved for future use)" })),
|
|
52
|
+
scope: Type.Optional(Type.String({ description: "Scope name (reserved for future use; defaults to project)" })),
|
|
53
|
+
}),
|
|
54
|
+
async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
|
|
55
|
+
const ok = await ensureDbOpen();
|
|
56
|
+
if (!ok) {
|
|
57
|
+
return {
|
|
58
|
+
content: [{ type: "text" as const, text: "Error: GSD database is not available. Cannot capture memory." }],
|
|
59
|
+
details: { operation: "memory_capture", error: "db_unavailable" },
|
|
60
|
+
isError: true,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return executeMemoryCapture(params as Parameters<typeof executeMemoryCapture>[0]);
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// ─── memory_query ───────────────────────────────────────────────────────
|
|
68
|
+
|
|
69
|
+
pi.registerTool({
|
|
70
|
+
name: "memory_query",
|
|
71
|
+
label: "Query Memory",
|
|
72
|
+
description:
|
|
73
|
+
"Search the GSD memory store for relevant memories. Phase 1 uses keyword matching ranked " +
|
|
74
|
+
"by confidence and reinforcement; future phases add semantic (embedding) retrieval.",
|
|
75
|
+
promptSnippet:
|
|
76
|
+
"Search the GSD memory store by keyword; returns ranked memories with id, category, and content",
|
|
77
|
+
promptGuidelines: [
|
|
78
|
+
"Use memory_query when you need durable project context that may not be in the current prompt.",
|
|
79
|
+
"Provide a short keyword-style query — not a full question.",
|
|
80
|
+
"Use category to narrow results to gotchas, conventions, architecture notes, etc.",
|
|
81
|
+
],
|
|
82
|
+
parameters: Type.Object({
|
|
83
|
+
query: Type.String({ description: "Keyword query (2+ char terms)" }),
|
|
84
|
+
k: Type.Optional(Type.Number({ description: "Max results (default 10, max 50)", minimum: 1, maximum: 50 })),
|
|
85
|
+
category: Type.Optional(
|
|
86
|
+
Type.Union(
|
|
87
|
+
[
|
|
88
|
+
Type.Literal("architecture"),
|
|
89
|
+
Type.Literal("convention"),
|
|
90
|
+
Type.Literal("gotcha"),
|
|
91
|
+
Type.Literal("preference"),
|
|
92
|
+
Type.Literal("environment"),
|
|
93
|
+
Type.Literal("pattern"),
|
|
94
|
+
],
|
|
95
|
+
{ description: "Restrict results to a single category" },
|
|
96
|
+
),
|
|
97
|
+
),
|
|
98
|
+
scope: Type.Optional(Type.String({ description: "Only include memories with this scope (e.g. 'project', 'global')" })),
|
|
99
|
+
tag: Type.Optional(Type.String({ description: "Only include memories tagged with this value" })),
|
|
100
|
+
include_superseded: Type.Optional(Type.Boolean({ description: "Include superseded memories (default false)" })),
|
|
101
|
+
reinforce_hits: Type.Optional(
|
|
102
|
+
Type.Boolean({ description: "Increment hit_count on returned memories (default false)" }),
|
|
103
|
+
),
|
|
104
|
+
}),
|
|
105
|
+
async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
|
|
106
|
+
const ok = await ensureDbOpen();
|
|
107
|
+
if (!ok) {
|
|
108
|
+
return {
|
|
109
|
+
content: [{ type: "text" as const, text: "Error: GSD database is not available. Cannot query memory." }],
|
|
110
|
+
details: { operation: "memory_query", error: "db_unavailable" },
|
|
111
|
+
isError: true,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return executeMemoryQuery(params as Parameters<typeof executeMemoryQuery>[0]);
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// ─── gsd_graph ──────────────────────────────────────────────────────────
|
|
119
|
+
|
|
120
|
+
pi.registerTool({
|
|
121
|
+
name: "gsd_graph",
|
|
122
|
+
label: "GSD Knowledge Graph",
|
|
123
|
+
description:
|
|
124
|
+
"Inspect the relationship graph between memories. mode=query walks supersedes edges from a " +
|
|
125
|
+
"given memoryId; mode=build is a placeholder that future phases will use to rebuild graph " +
|
|
126
|
+
"edges from milestone LEARNINGS artifacts.",
|
|
127
|
+
promptSnippet: "Query the memory relationship graph or trigger a rebuild",
|
|
128
|
+
promptGuidelines: [
|
|
129
|
+
"Use mode=query with a memoryId when you want to see how a memory relates to others.",
|
|
130
|
+
"Phase 1 only exposes supersedes edges; additional relation types arrive in later phases.",
|
|
131
|
+
],
|
|
132
|
+
parameters: Type.Object({
|
|
133
|
+
mode: Type.Union([Type.Literal("build"), Type.Literal("query")], {
|
|
134
|
+
description: "build = recompute graph (placeholder), query = inspect edges",
|
|
135
|
+
}),
|
|
136
|
+
memoryId: Type.Optional(Type.String({ description: "Memory ID (required when mode=query)" })),
|
|
137
|
+
depth: Type.Optional(Type.Number({ description: "Hops to traverse (0–5, default 1)", minimum: 0, maximum: 5 })),
|
|
138
|
+
rel: Type.Optional(Type.Union([
|
|
139
|
+
Type.Literal("related_to"),
|
|
140
|
+
Type.Literal("depends_on"),
|
|
141
|
+
Type.Literal("contradicts"),
|
|
142
|
+
Type.Literal("elaborates"),
|
|
143
|
+
Type.Literal("supersedes"),
|
|
144
|
+
], { description: "Only include edges with this relation type" })),
|
|
145
|
+
}),
|
|
146
|
+
async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
|
|
147
|
+
const ok = await ensureDbOpen();
|
|
148
|
+
if (!ok) {
|
|
149
|
+
return {
|
|
150
|
+
content: [{ type: "text" as const, text: "Error: GSD database is not available." }],
|
|
151
|
+
details: { operation: "gsd_graph", error: "db_unavailable" },
|
|
152
|
+
isError: true,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return executeGsdGraph(params as Parameters<typeof executeGsdGraph>[0]);
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
@@ -4,6 +4,7 @@ import { Type } from "@sinclair/typebox";
|
|
|
4
4
|
import type { ExtensionAPI } from "@gsd/pi-coding-agent";
|
|
5
5
|
import { ensureDbOpen } from "./dynamic-tools.js";
|
|
6
6
|
import { executeMilestoneStatus } from "../tools/workflow-tool-executors.js";
|
|
7
|
+
import { checkpointDatabase } from "../gsd-db.js";
|
|
7
8
|
|
|
8
9
|
export function registerQueryTools(pi: ExtensionAPI): void {
|
|
9
10
|
pi.registerTool({
|
|
@@ -31,4 +32,34 @@ export function registerQueryTools(pi: ExtensionAPI): void {
|
|
|
31
32
|
return executeMilestoneStatus(params);
|
|
32
33
|
},
|
|
33
34
|
});
|
|
35
|
+
|
|
36
|
+
pi.registerTool({
|
|
37
|
+
name: "gsd_checkpoint_db",
|
|
38
|
+
label: "Checkpoint GSD Database",
|
|
39
|
+
description:
|
|
40
|
+
"Flush the SQLite WAL (Write-Ahead Log) into the base gsd.db file. " +
|
|
41
|
+
"Call this before `git add .gsd/gsd.db` to ensure the committed database " +
|
|
42
|
+
"contains current milestone/slice/task state rather than stale pre-session content. " +
|
|
43
|
+
"Safe to call at any time while GSD is running.",
|
|
44
|
+
promptSnippet: "Flush WAL into gsd.db so git add stages current state",
|
|
45
|
+
promptGuidelines: [
|
|
46
|
+
"Call gsd_checkpoint_db immediately before staging .gsd/gsd.db with git add.",
|
|
47
|
+
"Do not use sqlite3 or shell commands to checkpoint — they are blocked. Use this tool instead.",
|
|
48
|
+
],
|
|
49
|
+
parameters: Type.Object({}),
|
|
50
|
+
async execute(_toolCallId, _params, _signal, _onUpdate, _ctx) {
|
|
51
|
+
const dbAvailable = await ensureDbOpen();
|
|
52
|
+
if (!dbAvailable) {
|
|
53
|
+
return {
|
|
54
|
+
content: [{ type: "text", text: "Error: GSD database is not available. Cannot checkpoint." }],
|
|
55
|
+
details: { operation: "checkpoint_db", error: "db_unavailable" },
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
checkpointDatabase();
|
|
59
|
+
return {
|
|
60
|
+
content: [{ type: "text", text: "WAL checkpoint complete. gsd.db is now up to date and safe to stage with git add." }],
|
|
61
|
+
details: { operation: "checkpoint_db", status: "ok" },
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
});
|
|
34
65
|
}
|
|
@@ -9,6 +9,7 @@ import { loadEcosystemExtensions } from "../ecosystem/loader.js";
|
|
|
9
9
|
import { registerDbTools } from "./db-tools.js";
|
|
10
10
|
import { registerDynamicTools } from "./dynamic-tools.js";
|
|
11
11
|
import { registerJournalTools } from "./journal-tools.js";
|
|
12
|
+
import { registerMemoryTools } from "./memory-tools.js";
|
|
12
13
|
import { registerQueryTools } from "./query-tools.js";
|
|
13
14
|
import { registerHooks } from "./register-hooks.js";
|
|
14
15
|
import { registerShortcuts } from "./register-shortcuts.js";
|
|
@@ -85,6 +86,7 @@ export function registerGsdExtension(pi: ExtensionAPI): void {
|
|
|
85
86
|
["db-tools", () => registerDbTools(pi)],
|
|
86
87
|
["journal-tools", () => registerJournalTools(pi)],
|
|
87
88
|
["query-tools", () => registerQueryTools(pi)],
|
|
89
|
+
["memory-tools", () => registerMemoryTools(pi)],
|
|
88
90
|
["shortcuts", () => registerShortcuts(pi)],
|
|
89
91
|
["hooks", () => registerHooks(pi, ecosystemHandlers)],
|
|
90
92
|
["ecosystem", () => {
|
|
@@ -18,6 +18,7 @@ import { loadToolApiKeys } from "../commands-config.js";
|
|
|
18
18
|
import { loadFile, saveFile, formatContinue } from "../files.js";
|
|
19
19
|
import { deriveState } from "../state.js";
|
|
20
20
|
import { getAutoDashboardData, isAutoActive, isAutoPaused, markToolEnd, markToolStart, recordToolInvocationError } from "../auto.js";
|
|
21
|
+
import { hideFooter } from "../auto-dashboard.js";
|
|
21
22
|
import { isParallelActive, shutdownParallel } from "../parallel-orchestrator.js";
|
|
22
23
|
import { checkToolCallLoop, resetToolCallLoopGuard } from "./tool-call-loop-guard.js";
|
|
23
24
|
import { saveActivityLog } from "../activity-log.js";
|
|
@@ -88,6 +89,9 @@ export function registerHooks(
|
|
|
88
89
|
} catch { /* non-fatal */ }
|
|
89
90
|
}
|
|
90
91
|
loadToolApiKeys();
|
|
92
|
+
if (isAutoActive()) {
|
|
93
|
+
ctx.ui.setFooter(hideFooter);
|
|
94
|
+
}
|
|
91
95
|
});
|
|
92
96
|
|
|
93
97
|
pi.on("session_switch", async (_event, ctx) => {
|
|
@@ -108,6 +112,9 @@ export function registerHooks(
|
|
|
108
112
|
prepareWorkflowMcpForProject(ctx, process.cwd());
|
|
109
113
|
}
|
|
110
114
|
loadToolApiKeys();
|
|
115
|
+
if (isAutoActive()) {
|
|
116
|
+
ctx.ui.setFooter(hideFooter);
|
|
117
|
+
}
|
|
111
118
|
});
|
|
112
119
|
|
|
113
120
|
pi.on("before_agent_start", async (event, ctx: ExtensionContext) => {
|
|
@@ -325,6 +332,7 @@ export function registerHooks(
|
|
|
325
332
|
// ── Safety harness: evidence collection + destructive command warnings ──
|
|
326
333
|
pi.on("tool_call", async (event, ctx) => {
|
|
327
334
|
if (!isAutoActive()) return;
|
|
335
|
+
markToolStart(event.toolCallId, event.toolName);
|
|
328
336
|
safetyRecordToolCall(event.toolCallId, event.toolName, event.input as Record<string, unknown>);
|
|
329
337
|
|
|
330
338
|
// Destructive command classification (warn only, never block)
|
|
@@ -343,6 +351,20 @@ export function registerHooks(
|
|
|
343
351
|
});
|
|
344
352
|
|
|
345
353
|
pi.on("tool_result", async (event) => {
|
|
354
|
+
if (isAutoActive() && typeof event.toolCallId === "string") {
|
|
355
|
+
markToolEnd(event.toolCallId);
|
|
356
|
+
}
|
|
357
|
+
if (isAutoActive() && event.isError && event.toolName.startsWith("gsd_")) {
|
|
358
|
+
const resultPayload = ("result" in event ? event.result : undefined) as any;
|
|
359
|
+
const errorText = typeof resultPayload === "string"
|
|
360
|
+
? resultPayload
|
|
361
|
+
: (typeof resultPayload?.content?.[0]?.text === "string"
|
|
362
|
+
? resultPayload.content[0].text
|
|
363
|
+
: (typeof (event as any).content === "string"
|
|
364
|
+
? (event as any).content
|
|
365
|
+
: String(resultPayload ?? "")));
|
|
366
|
+
recordToolInvocationError(event.toolName, errorText);
|
|
367
|
+
}
|
|
346
368
|
if (event.toolName !== "ask_user_questions") return;
|
|
347
369
|
const milestoneId = getDiscussionMilestoneId(process.cwd());
|
|
348
370
|
const queueActive = isQueuePhaseActive();
|
|
@@ -113,10 +113,26 @@ export async function buildBeforeAgentStartResult(
|
|
|
113
113
|
|
|
114
114
|
let memoryBlock = "";
|
|
115
115
|
try {
|
|
116
|
-
const { formatMemoriesForPrompt, getActiveMemoriesRanked } = await import("../memory-store.js");
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
const { formatMemoriesForPrompt, getActiveMemoriesRanked, queryMemoriesRanked } = await import("../memory-store.js");
|
|
117
|
+
|
|
118
|
+
// Always-on "critical" set — small, stable memories that belong in every
|
|
119
|
+
// turn (gotchas, environment, conventions). Ranked by the existing score.
|
|
120
|
+
const CRITICAL_CATEGORIES = new Set(["gotcha", "environment", "convention"]);
|
|
121
|
+
const allRanked = getActiveMemoriesRanked(60);
|
|
122
|
+
const critical = allRanked.filter((m) => CRITICAL_CATEGORIES.has(m.category)).slice(0, 5);
|
|
123
|
+
const criticalIds = new Set(critical.map((m) => m.id));
|
|
124
|
+
|
|
125
|
+
// Prompt-relevance set — hybrid FTS5 + (future) semantic retrieval.
|
|
126
|
+
let relevant: typeof allRanked = [];
|
|
127
|
+
const userPrompt = (event.prompt ?? "").trim();
|
|
128
|
+
if (userPrompt) {
|
|
129
|
+
const hits = queryMemoriesRanked({ query: userPrompt, k: 10 });
|
|
130
|
+
relevant = hits.map((h) => h.memory).filter((m) => !criticalIds.has(m.id));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const merged = [...critical, ...relevant];
|
|
134
|
+
if (merged.length > 0) {
|
|
135
|
+
const formatted = formatMemoriesForPrompt(merged, 2000);
|
|
120
136
|
if (formatted) {
|
|
121
137
|
memoryBlock = `\n\n${formatted}`;
|
|
122
138
|
}
|
|
@@ -15,7 +15,7 @@ export interface GsdCommandDefinition {
|
|
|
15
15
|
type CompletionMap = Record<string, readonly GsdCommandDefinition[]>;
|
|
16
16
|
|
|
17
17
|
export const GSD_COMMAND_DESCRIPTION =
|
|
18
|
-
"GSD — Get Shit Done: /gsd help|start|templates|next|auto|stop|pause|status|widget|visualize|queue|quick|discuss|capture|triage|dispatch|history|undo|undo-task|reset-slice|rate|skip|export|cleanup|model|mode|prefs|config|keys|hooks|run-hook|skill-health|doctor|logs|forensics|changelog|migrate|remote|steer|knowledge|new-milestone|parallel|cmux|park|unpark|init|setup|inspect|extensions|update|fast|mcp|rethink|codebase|notifications|ship|do|session-report|backlog|pr-branch|add-tests|language";
|
|
18
|
+
"GSD — Get Shit Done: /gsd help|start|templates|next|auto|stop|pause|status|widget|visualize|queue|quick|discuss|capture|triage|dispatch|history|undo|undo-task|reset-slice|rate|skip|export|cleanup|model|mode|prefs|config|keys|hooks|run-hook|skill-health|doctor|debug|logs|forensics|changelog|migrate|remote|steer|knowledge|new-milestone|parallel|cmux|park|unpark|init|setup|onboarding|inspect|extensions|update|fast|mcp|rethink|codebase|notifications|ship|do|session-report|backlog|pr-branch|add-tests|scan|language";
|
|
19
19
|
|
|
20
20
|
export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
|
|
21
21
|
{ cmd: "help", desc: "Categorized command reference with descriptions" },
|
|
@@ -44,7 +44,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
|
|
|
44
44
|
{ cmd: "model", desc: "Switch the active session model or open a picker" },
|
|
45
45
|
{ cmd: "mode", desc: "Switch workflow mode (solo/team)" },
|
|
46
46
|
{ cmd: "prefs", desc: "Manage preferences (model selection, timeouts, etc.)" },
|
|
47
|
-
{ cmd: "config", desc: "Set API keys
|
|
47
|
+
{ cmd: "config", desc: "(deprecated) Set tool API keys — use /gsd keys instead" },
|
|
48
48
|
{ cmd: "keys", desc: "API key manager — list, add, remove, test, rotate, doctor" },
|
|
49
49
|
{ cmd: "hooks", desc: "Show configured post-unit and pre-dispatch hooks" },
|
|
50
50
|
{ cmd: "run-hook", desc: "Manually trigger a specific hook" },
|
|
@@ -52,9 +52,11 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
|
|
|
52
52
|
{ cmd: "notifications", desc: "View, filter, and clear persistent notification history" },
|
|
53
53
|
{ cmd: "doctor", desc: "Runtime health checks with auto-fix" },
|
|
54
54
|
{ cmd: "logs", desc: "Browse activity logs, debug logs, and metrics" },
|
|
55
|
+
{ cmd: "debug", desc: "Create and inspect persistent /gsd debug sessions" },
|
|
55
56
|
{ cmd: "forensics", desc: "Examine execution logs" },
|
|
56
57
|
{ cmd: "init", desc: "Project init wizard — detect, configure, bootstrap .gsd/" },
|
|
57
|
-
{ cmd: "setup", desc: "
|
|
58
|
+
{ cmd: "setup", desc: "Configuration hub: status + sub-routes (llm, model, search, remote, keys, prefs, onboarding)" },
|
|
59
|
+
{ cmd: "onboarding", desc: "Re-run the setup wizard [--resume|--reset|--step <name>]" },
|
|
58
60
|
{ cmd: "migrate", desc: "Migrate a v1 .planning directory to .gsd format" },
|
|
59
61
|
{ cmd: "remote", desc: "Control remote auto-mode" },
|
|
60
62
|
{ cmd: "steer", desc: "Hard-steer plan documents during execution" },
|
|
@@ -72,7 +74,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
|
|
|
72
74
|
{ cmd: "fast", desc: "Toggle OpenAI service tier (on/off/flex/status)" },
|
|
73
75
|
{ cmd: "mcp", desc: "MCP server status, connectivity, and local config bootstrap (status, check, init)" },
|
|
74
76
|
{ cmd: "rethink", desc: "Conversational project reorganization — reorder, park, discard, add milestones" },
|
|
75
|
-
{ cmd: "workflow", desc: "Custom workflow lifecycle (new, run, list, validate, pause, resume)" },
|
|
77
|
+
{ cmd: "workflow", desc: "Custom workflow lifecycle (new, run, list, info, install, uninstall, validate, pause, resume) or run <name> directly" },
|
|
76
78
|
{ cmd: "codebase", desc: "Generate, refresh, and inspect the codebase map cache (.gsd/CODEBASE.md)" },
|
|
77
79
|
{ cmd: "ship", desc: "Create PR from milestone artifacts and open for review" },
|
|
78
80
|
{ cmd: "do", desc: "Route freeform text to the right GSD command" },
|
|
@@ -80,6 +82,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
|
|
|
80
82
|
{ cmd: "backlog", desc: "Manage backlog items (add, promote, remove, list)" },
|
|
81
83
|
{ cmd: "pr-branch", desc: "Create clean PR branch filtering .gsd/ commits" },
|
|
82
84
|
{ cmd: "add-tests", desc: "Generate tests for completed slices" },
|
|
85
|
+
{ cmd: "scan", desc: "Rapid codebase assessment — lightweight alternative to full map (--focus tech|arch|quality|concerns|tech+arch)" },
|
|
83
86
|
{ cmd: "language", desc: "Set or clear the global response language (e.g. /gsd language Chinese)" },
|
|
84
87
|
];
|
|
85
88
|
|
|
@@ -113,11 +116,18 @@ const NESTED_COMPLETIONS: CompletionMap = {
|
|
|
113
116
|
{ cmd: "watch", desc: "Live TUI dashboard monitoring all workers" },
|
|
114
117
|
],
|
|
115
118
|
setup: [
|
|
116
|
-
{ cmd: "llm", desc: "Configure LLM provider
|
|
119
|
+
{ cmd: "llm", desc: "Configure LLM provider & auth" },
|
|
120
|
+
{ cmd: "model", desc: "Pick default model for the active provider" },
|
|
117
121
|
{ cmd: "search", desc: "Configure web search provider" },
|
|
118
|
-
{ cmd: "remote", desc: "Configure remote integrations" },
|
|
119
|
-
{ cmd: "keys", desc: "Manage API keys" },
|
|
120
|
-
{ cmd: "prefs", desc: "
|
|
122
|
+
{ cmd: "remote", desc: "Configure remote integrations (Discord/Slack/Telegram)" },
|
|
123
|
+
{ cmd: "keys", desc: "Manage API keys (alias for /gsd keys)" },
|
|
124
|
+
{ cmd: "prefs", desc: "Global preferences wizard (alias for /gsd prefs)" },
|
|
125
|
+
{ cmd: "onboarding", desc: "Run the full onboarding wizard (alias for /gsd onboarding)" },
|
|
126
|
+
],
|
|
127
|
+
onboarding: [
|
|
128
|
+
{ cmd: "--resume", desc: "Resume from the last completed step" },
|
|
129
|
+
{ cmd: "--reset", desc: "Reset onboarding state and start over (does not clear API keys)" },
|
|
130
|
+
{ cmd: "--step", desc: "Run a single step: llm|model|search|remote|tool-keys|prefs|skills|doctor|project" },
|
|
121
131
|
],
|
|
122
132
|
notifications: [
|
|
123
133
|
{ cmd: "clear", desc: "Clear all notifications" },
|
|
@@ -129,6 +139,12 @@ const NESTED_COMPLETIONS: CompletionMap = {
|
|
|
129
139
|
{ cmd: "tail", desc: "Show last N activity log summaries" },
|
|
130
140
|
{ cmd: "clear", desc: "Remove old activity and debug logs" },
|
|
131
141
|
],
|
|
142
|
+
debug: [
|
|
143
|
+
{ cmd: "list", desc: "List persisted debug sessions" },
|
|
144
|
+
{ cmd: "status", desc: "Show status for one debug session slug" },
|
|
145
|
+
{ cmd: "continue", desc: "Resume an existing debug session slug" },
|
|
146
|
+
{ cmd: "--diagnose", desc: "Inspect malformed artifacts and session health" },
|
|
147
|
+
],
|
|
132
148
|
keys: [
|
|
133
149
|
{ cmd: "list", desc: "Show key status dashboard" },
|
|
134
150
|
{ cmd: "add", desc: "Add a key for a provider" },
|
|
@@ -235,8 +251,11 @@ const NESTED_COMPLETIONS: CompletionMap = {
|
|
|
235
251
|
],
|
|
236
252
|
workflow: [
|
|
237
253
|
{ cmd: "new", desc: "Create a new workflow definition (via skill)" },
|
|
238
|
-
{ cmd: "run", desc: "Create a run and start auto-mode" },
|
|
254
|
+
{ cmd: "run", desc: "Create a YAML run and start auto-mode" },
|
|
239
255
|
{ cmd: "list", desc: "List workflow runs" },
|
|
256
|
+
{ cmd: "info", desc: "Show plugin details (source, mode, phases)" },
|
|
257
|
+
{ cmd: "install", desc: "Install a plugin from a URL / gist: / gh:" },
|
|
258
|
+
{ cmd: "uninstall", desc: "Remove an installed plugin" },
|
|
240
259
|
{ cmd: "validate", desc: "Validate a workflow definition YAML" },
|
|
241
260
|
{ cmd: "pause", desc: "Pause custom workflow auto-mode" },
|
|
242
261
|
{ cmd: "resume", desc: "Resume paused custom workflow auto-mode" },
|
|
@@ -270,6 +289,13 @@ const NESTED_COMPLETIONS: CompletionMap = {
|
|
|
270
289
|
{ cmd: "--dry-run", desc: "Preview what would be filtered" },
|
|
271
290
|
{ cmd: "--name", desc: "Custom branch name" },
|
|
272
291
|
],
|
|
292
|
+
scan: [
|
|
293
|
+
{ cmd: "--focus tech", desc: "Technology stack and external integrations" },
|
|
294
|
+
{ cmd: "--focus arch", desc: "Architecture patterns and directory structure" },
|
|
295
|
+
{ cmd: "--focus quality", desc: "Coding conventions and testing patterns" },
|
|
296
|
+
{ cmd: "--focus concerns", desc: "Technical debt and risk areas" },
|
|
297
|
+
{ cmd: "--focus tech+arch", desc: "Tech + Architecture (default)" },
|
|
298
|
+
],
|
|
273
299
|
language: [
|
|
274
300
|
{ cmd: "off", desc: "Clear the language preference (revert to default)" },
|
|
275
301
|
{ cmd: "clear", desc: "Alias for off — clear the language preference" },
|
|
@@ -399,6 +425,45 @@ export function getGsdArgumentCompletions(prefix: string) {
|
|
|
399
425
|
return [];
|
|
400
426
|
}
|
|
401
427
|
|
|
428
|
+
// Completion for `/gsd workflow info <name>` — list all discoverable plugins (project + global).
|
|
429
|
+
if (command === "workflow" && subcommand === "info" && parts.length <= 3) {
|
|
430
|
+
const results: GsdCommandDefinition[] = [];
|
|
431
|
+
const seen = new Set<string>();
|
|
432
|
+
const scanDir = (dir: string, source: string) => {
|
|
433
|
+
if (!existsSync(dir)) return;
|
|
434
|
+
try {
|
|
435
|
+
for (const f of readdirSync(dir)) {
|
|
436
|
+
if (!/\.(ya?ml|md)$/i.test(f)) continue;
|
|
437
|
+
const name = f.replace(/\.(ya?ml|md)$/i, "");
|
|
438
|
+
if (!name.startsWith(third)) continue;
|
|
439
|
+
if (seen.has(name)) continue;
|
|
440
|
+
seen.add(name);
|
|
441
|
+
results.push({ cmd: name, desc: `Workflow plugin (${source})` });
|
|
442
|
+
}
|
|
443
|
+
} catch { /* ignore */ }
|
|
444
|
+
};
|
|
445
|
+
try {
|
|
446
|
+
const base = resolveProjectRoot(process.cwd());
|
|
447
|
+
scanDir(join(base, ".gsd", "workflows"), "project");
|
|
448
|
+
scanDir(join(base, ".gsd", "workflow-defs"), "project-legacy");
|
|
449
|
+
scanDir(join(gsdHome, "workflows"), "global");
|
|
450
|
+
} catch { /* ignore */ }
|
|
451
|
+
// Also include bundled template names.
|
|
452
|
+
try {
|
|
453
|
+
const registry = loadRegistry();
|
|
454
|
+
for (const id of Object.keys(registry.templates)) {
|
|
455
|
+
if (seen.has(id) || !id.startsWith(third)) continue;
|
|
456
|
+
seen.add(id);
|
|
457
|
+
results.push({ cmd: id, desc: "Workflow plugin (bundled)" });
|
|
458
|
+
}
|
|
459
|
+
} catch { /* ignore */ }
|
|
460
|
+
return results.map((r) => ({
|
|
461
|
+
value: `workflow info ${r.cmd}`,
|
|
462
|
+
label: r.cmd,
|
|
463
|
+
description: r.desc,
|
|
464
|
+
}));
|
|
465
|
+
}
|
|
466
|
+
|
|
402
467
|
const nested = NESTED_COMPLETIONS[command];
|
|
403
468
|
if (nested && parts.length <= 2) {
|
|
404
469
|
return filterOptions(subcommand, nested, command);
|
|
@@ -36,11 +36,17 @@ export function showHelp(ctx: ExtensionCommandContext, args = ""): void {
|
|
|
36
36
|
" /gsd undo Revert last completed unit [--force]",
|
|
37
37
|
" /gsd rethink Conversational project reorganization",
|
|
38
38
|
"",
|
|
39
|
+
"OBSERVABILITY",
|
|
40
|
+
" /gsd logs Browse activity and debug logs",
|
|
41
|
+
" /gsd debug Create/list/continue persistent debug sessions",
|
|
42
|
+
"",
|
|
39
43
|
"SETUP",
|
|
44
|
+
" /gsd onboarding Re-run setup wizard [--resume|--reset|--step <name>]",
|
|
45
|
+
" /gsd setup Configuration hub [llm|model|search|remote|keys|prefs|onboarding]",
|
|
40
46
|
" /gsd init Project init wizard",
|
|
41
|
-
" /gsd setup Global setup status [llm|search|remote|keys|prefs]",
|
|
42
47
|
" /gsd model Switch active session model",
|
|
43
|
-
" /gsd prefs Manage preferences",
|
|
48
|
+
" /gsd prefs Manage preferences (alias for /gsd setup prefs)",
|
|
49
|
+
" /gsd keys API key manager (LLM + tool keys)",
|
|
44
50
|
" /gsd doctor Diagnose and repair .gsd/ state",
|
|
45
51
|
"",
|
|
46
52
|
"Use /gsd help full for the complete command reference.",
|
|
@@ -67,6 +73,8 @@ export function showHelp(ctx: ExtensionCommandContext, args = ""): void {
|
|
|
67
73
|
" /gsd history View execution history [--cost] [--phase] [--model] [N]",
|
|
68
74
|
" /gsd changelog Show categorized release notes [version]",
|
|
69
75
|
` /gsd notifications View persistent notification history [clear|tail|filter] (${formattedShortcutPair("notifications")})`,
|
|
76
|
+
" /gsd logs Browse activity logs, debug logs, and metrics",
|
|
77
|
+
" /gsd debug Create/list/continue persistent debug sessions",
|
|
70
78
|
"",
|
|
71
79
|
"COURSE CORRECTION",
|
|
72
80
|
" /gsd steer <desc> Apply user override to active work",
|
|
@@ -83,14 +91,15 @@ export function showHelp(ctx: ExtensionCommandContext, args = ""): void {
|
|
|
83
91
|
" /gsd codebase [generate|update|stats] Manage the CODEBASE.md cache used in prompt context",
|
|
84
92
|
"",
|
|
85
93
|
"SETUP & CONFIGURATION",
|
|
94
|
+
" /gsd onboarding Re-run setup wizard [--resume|--reset|--step <name>]",
|
|
95
|
+
" /gsd setup Configuration hub [llm|model|search|remote|keys|prefs|onboarding]",
|
|
86
96
|
" /gsd init Project init wizard — detect, configure, bootstrap .gsd/",
|
|
87
|
-
" /gsd setup Global setup status [llm|search|remote|keys|prefs]",
|
|
88
97
|
" /gsd model Switch active session model [provider/model|model-id]",
|
|
89
98
|
" /gsd mode Set workflow mode (solo/team) [global|project]",
|
|
90
|
-
" /gsd prefs Manage preferences [global|project|status|wizard|setup|import-claude]",
|
|
99
|
+
" /gsd prefs Manage preferences [global|project|status|wizard|setup|import-claude] (alias for /gsd setup prefs)",
|
|
91
100
|
" /gsd cmux Manage cmux integration [status|on|off|notifications|sidebar|splits|browser]",
|
|
92
|
-
" /gsd
|
|
93
|
-
" /gsd
|
|
101
|
+
" /gsd keys API key manager (LLM + tool keys) [list|add|remove|test|rotate|doctor]",
|
|
102
|
+
" /gsd config (deprecated) Set tool API keys — use /gsd keys instead",
|
|
94
103
|
" /gsd show-config Show effective configuration (models, routing, toggles)",
|
|
95
104
|
" /gsd hooks Show post-unit hook configuration",
|
|
96
105
|
" /gsd extensions Manage extensions [list|enable|disable|info]",
|
|
@@ -170,32 +179,39 @@ export async function handleVisualize(ctx: ExtensionCommandContext): Promise<voi
|
|
|
170
179
|
}
|
|
171
180
|
}
|
|
172
181
|
|
|
173
|
-
export async function handleSetup(args: string, ctx: ExtensionCommandContext): Promise<void> {
|
|
182
|
+
export async function handleSetup(args: string, ctx: ExtensionCommandContext, pi?: ExtensionAPI): Promise<void> {
|
|
174
183
|
const { detectProjectState, hasGlobalSetup } = await import("../../detection.js");
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
+
const { isOnboardingComplete, readOnboardingRecord } = await import("../../onboarding-state.js");
|
|
185
|
+
|
|
186
|
+
// Sub-route dispatch — keep redirects but route the canonical work to /gsd
|
|
187
|
+
// onboarding (single source for wizard steps) and /gsd keys (single source
|
|
188
|
+
// for credentials).
|
|
189
|
+
if (args === "onboarding" || args === "wizard") {
|
|
190
|
+
const { handleOnboarding } = await import("./onboarding.js");
|
|
191
|
+
await handleOnboarding("", ctx);
|
|
192
|
+
return;
|
|
184
193
|
}
|
|
185
|
-
|
|
186
194
|
if (args === "llm" || args === "auth") {
|
|
187
|
-
|
|
195
|
+
const { handleOnboarding } = await import("./onboarding.js");
|
|
196
|
+
await handleOnboarding("--step llm", ctx);
|
|
188
197
|
return;
|
|
189
198
|
}
|
|
190
199
|
if (args === "search") {
|
|
191
|
-
|
|
200
|
+
const { handleOnboarding } = await import("./onboarding.js");
|
|
201
|
+
await handleOnboarding("--step search", ctx);
|
|
192
202
|
return;
|
|
193
203
|
}
|
|
194
204
|
if (args === "remote") {
|
|
195
|
-
|
|
205
|
+
const { handleOnboarding } = await import("./onboarding.js");
|
|
206
|
+
await handleOnboarding("--step remote", ctx);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (args === "model") {
|
|
210
|
+
await handleModel("", ctx, pi);
|
|
196
211
|
return;
|
|
197
212
|
}
|
|
198
213
|
if (args === "keys") {
|
|
214
|
+
ctx.ui.notify("Tip: /gsd keys is the canonical command for API key management.", "info");
|
|
199
215
|
const { handleKeys } = await import("../../key-manager.js");
|
|
200
216
|
await handleKeys("", ctx);
|
|
201
217
|
return;
|
|
@@ -206,14 +222,35 @@ export async function handleSetup(args: string, ctx: ExtensionCommandContext): P
|
|
|
206
222
|
return;
|
|
207
223
|
}
|
|
208
224
|
|
|
225
|
+
// Bare /gsd setup — render the hub: status + actions
|
|
226
|
+
const globalConfigured = hasGlobalSetup();
|
|
227
|
+
const detection = detectProjectState(projectRoot());
|
|
228
|
+
const onboardingDone = isOnboardingComplete();
|
|
229
|
+
const record = readOnboardingRecord();
|
|
230
|
+
|
|
231
|
+
const statusLines: string[] = ["GSD Setup\n"];
|
|
232
|
+
statusLines.push(
|
|
233
|
+
onboardingDone
|
|
234
|
+
? ` Onboarding: ✓ complete${record.completedAt ? ` (${record.completedAt.slice(0, 10)})` : ""}`
|
|
235
|
+
: ` Onboarding: ○ not complete — /gsd onboarding to start`,
|
|
236
|
+
);
|
|
237
|
+
statusLines.push(` Global preferences: ${globalConfigured ? "configured" : "not set"}`);
|
|
238
|
+
statusLines.push(` Project state: ${detection.state}`);
|
|
239
|
+
if (detection.projectSignals.primaryLanguage) {
|
|
240
|
+
statusLines.push(` Detected: ${detection.projectSignals.primaryLanguage}`);
|
|
241
|
+
}
|
|
242
|
+
|
|
209
243
|
ctx.ui.notify(statusLines.join("\n"), "info");
|
|
210
244
|
ctx.ui.notify(
|
|
211
|
-
"
|
|
212
|
-
" /gsd setup llm
|
|
213
|
-
" /gsd setup
|
|
214
|
-
" /gsd setup
|
|
215
|
-
" /gsd setup
|
|
216
|
-
" /gsd setup
|
|
245
|
+
"Configuration hub:\n" +
|
|
246
|
+
" /gsd setup llm — LLM provider & auth\n" +
|
|
247
|
+
" /gsd setup model — Default model picker\n" +
|
|
248
|
+
" /gsd setup search — Web search provider\n" +
|
|
249
|
+
" /gsd setup remote — Remote questions (Discord/Slack/Telegram)\n" +
|
|
250
|
+
" /gsd setup keys — API keys (alias for /gsd keys)\n" +
|
|
251
|
+
" /gsd setup prefs — Global preferences (alias for /gsd prefs)\n" +
|
|
252
|
+
" /gsd setup onboarding — Full wizard (alias for /gsd onboarding)\n\n" +
|
|
253
|
+
"Tip: /gsd onboarding --resume to continue an incomplete setup.",
|
|
217
254
|
"info",
|
|
218
255
|
);
|
|
219
256
|
}
|
|
@@ -423,7 +460,12 @@ export async function handleCoreCommand(
|
|
|
423
460
|
return true;
|
|
424
461
|
}
|
|
425
462
|
if (trimmed === "setup" || trimmed.startsWith("setup ")) {
|
|
426
|
-
await handleSetup(trimmed.replace(/^setup\s*/, "").trim(), ctx);
|
|
463
|
+
await handleSetup(trimmed.replace(/^setup\s*/, "").trim(), ctx, pi);
|
|
464
|
+
return true;
|
|
465
|
+
}
|
|
466
|
+
if (trimmed === "onboarding" || trimmed.startsWith("onboarding ")) {
|
|
467
|
+
const { handleOnboarding } = await import("./onboarding.js");
|
|
468
|
+
await handleOnboarding(trimmed.replace(/^onboarding\s*/, "").trim(), ctx);
|
|
427
469
|
return true;
|
|
428
470
|
}
|
|
429
471
|
return false;
|