gsd-pi 2.77.0-dev.538325aea → 2.77.0-dev.eaa4973bc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-web-branch.d.ts +1 -0
- package/dist/cli-web-branch.js +3 -0
- package/dist/cli.js +59 -15
- package/dist/extension-discovery.d.ts +6 -0
- package/dist/extension-discovery.js +37 -0
- package/dist/extension-registry.d.ts +3 -0
- package/dist/extension-registry.js +1 -1
- package/dist/extension-sort.d.ts +18 -0
- package/dist/extension-sort.js +114 -0
- package/dist/extension-validator.d.ts +47 -0
- package/dist/extension-validator.js +127 -0
- package/dist/headless-ui.d.ts +1 -1
- package/dist/headless.js +4 -2
- package/dist/loader.js +36 -7
- package/dist/onboarding.js +5 -5
- package/dist/provider-migrations.d.ts +20 -2
- package/dist/provider-migrations.js +15 -2
- package/dist/remote-questions-config.js +1 -1
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -1
- package/dist/resources/extensions/aws-auth/index.js +1 -2
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +9 -6
- package/dist/resources/extensions/bg-shell/process-manager.js +1 -2
- package/dist/resources/extensions/browser-tools/index.js +1 -0
- package/dist/resources/extensions/claude-code-cli/index.js +1 -1
- package/dist/resources/extensions/claude-code-cli/partial-builder.js +17 -106
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +71 -57
- package/dist/resources/extensions/cmux/index.js +20 -0
- package/dist/resources/extensions/google-search/extension-manifest.json +5 -4
- package/dist/resources/extensions/google-search/index.js +2 -375
- package/dist/resources/extensions/gsd/abandon-detect.js +44 -0
- package/dist/resources/extensions/gsd/auto/resolve.js +24 -0
- package/dist/resources/extensions/gsd/auto/run-unit.js +10 -2
- package/dist/resources/extensions/gsd/auto/turn-epoch.js +95 -0
- package/dist/resources/extensions/gsd/auto-dispatch.js +24 -0
- package/dist/resources/extensions/gsd/auto-loop.js +1 -1
- package/dist/resources/extensions/gsd/auto-post-unit.js +31 -0
- package/dist/resources/extensions/gsd/auto-timeout-recovery.js +11 -5
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +11 -2
- package/dist/resources/extensions/gsd/auto-worktree.js +58 -8
- package/dist/resources/extensions/gsd/auto.js +31 -14
- package/dist/resources/extensions/gsd/bootstrap/provider-error-resume.js +4 -2
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +11 -0
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +11 -6
- package/dist/resources/extensions/gsd/commands/handlers/workflow.js +31 -4
- package/dist/resources/extensions/gsd/commands-cmux.js +9 -6
- package/dist/resources/extensions/gsd/commands-extensions.js +634 -43
- package/dist/resources/extensions/gsd/file-lock.js +49 -9
- package/dist/resources/extensions/gsd/git-service.js +1 -0
- package/dist/resources/extensions/gsd/gitignore.js +1 -0
- package/dist/resources/extensions/gsd/guided-flow-queue.js +4 -1
- package/dist/resources/extensions/gsd/guided-flow.js +1 -1
- package/dist/resources/extensions/gsd/journal.js +17 -2
- package/dist/resources/extensions/gsd/milestone-actions.js +15 -0
- package/dist/resources/extensions/gsd/notifications.js +30 -16
- package/dist/resources/extensions/gsd/reports.js +5 -4
- package/dist/resources/extensions/gsd/tools/complete-slice.js +21 -0
- package/dist/resources/extensions/gsd/tools/complete-task.js +31 -0
- package/dist/resources/extensions/gsd/uok/audit.js +18 -2
- package/dist/resources/extensions/gsd/workflow-logger.js +10 -2
- package/dist/resources/extensions/gsd/worktree-manager.js +1 -0
- package/dist/resources/extensions/mcp-client/auth.js +10 -1
- package/dist/resources/extensions/mcp-client/index.js +119 -10
- package/dist/resources/extensions/ollama/index.js +2 -1
- package/dist/resources/extensions/ollama/ollama-chat-provider.js +15 -5
- package/dist/resources/extensions/remote-questions/config.js +1 -12
- package/dist/resources/extensions/shared/cmux-events.js +12 -0
- package/dist/resources/extensions/shared/rtk-session-stats.js +1 -2
- package/dist/resources/extensions/universal-config/index.js +1 -1
- package/dist/resources/skills/create-skill/SKILL.md +2 -2
- package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +4 -4
- package/dist/resources/skills/create-skill/workflows/audit-skill.md +4 -4
- package/dist/resources/skills/create-skill/workflows/create-new-skill.md +5 -5
- package/dist/security-overrides.d.ts +1 -4
- package/dist/security-overrides.js +3 -16
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +11 -11
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
- 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 +1 -1
- 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/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 +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +11 -11
- package/dist/web/standalone/.next/server/chunks/1926.js +1 -0
- package/dist/web/standalone/.next/server/chunks/6897.js +2 -2
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/2826.e9f5195e91f9cad2.js +11 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-1832629448831fdc.js → webpack-2e68521d7c82f7c2.js} +1 -1
- package/dist/web-mode.js +1 -1
- package/dist/welcome-screen.js +20 -19
- package/dist/wizard.js +5 -2
- package/package.json +16 -32
- package/packages/mcp-server/README.md +3 -3
- package/packages/mcp-server/dist/env-writer.d.ts +1 -0
- package/packages/mcp-server/dist/env-writer.d.ts.map +1 -1
- package/packages/mcp-server/dist/env-writer.js +74 -6
- package/packages/mcp-server/dist/env-writer.js.map +1 -1
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +36 -17
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/package.json +5 -0
- package/packages/mcp-server/src/env-writer.test.ts +79 -1
- package/packages/mcp-server/src/env-writer.ts +76 -6
- package/packages/mcp-server/src/readers/readers.test.ts +5 -1
- package/packages/mcp-server/src/server.ts +45 -19
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/native/package.json +5 -0
- package/packages/native/src/__tests__/clipboard.test.mjs +69 -23
- package/packages/native/tsconfig.json +1 -2
- package/packages/native/tsconfig.tsbuildinfo +1 -0
- package/packages/pi-agent-core/package.json +5 -0
- package/packages/pi-agent-core/src/agent-loop.test.ts +220 -15
- package/packages/pi-ai/package.json +5 -0
- package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts +25 -0
- package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/compaction.js +105 -6
- package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js +230 -28
- package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts +30 -2
- package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction/utils.js +113 -12
- package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +29 -18
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.js +130 -0
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/compaction-utils.test.js +56 -1
- package/packages/pi-coding-agent/dist/core/compaction-utils.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/discovery-cache.test.js +8 -15
- package/packages/pi-coding-agent/dist/core/discovery-cache.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts +25 -0
- package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js +109 -0
- package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts +67 -0
- package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js +167 -0
- package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +3 -2
- package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +24 -8
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +7 -0
- 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/lsp/lsp-integration.test.js +11 -0
- package/packages/pi-coding-agent/dist/core/lsp/lsp-integration.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +2 -2
- package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/resource-loader.js +1 -1
- package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.d.ts +1 -0
- package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.js +4 -1
- package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.test.js +19 -1
- package/packages/pi-coding-agent/dist/core/sdk.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/system-prompt.js +3 -3
- package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js +2 -1
- package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/provider-display-name.test.js +15 -6
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/provider-display-name.test.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 +14 -5
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts +7 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.js +31 -9
- package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +14 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
- package/packages/pi-coding-agent/package.json +5 -0
- package/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +368 -28
- package/packages/pi-coding-agent/src/core/compaction/compaction.ts +122 -6
- package/packages/pi-coding-agent/src/core/compaction/utils.ts +111 -13
- package/packages/pi-coding-agent/src/core/compaction-orchestrator.test.ts +154 -0
- package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +32 -18
- package/packages/pi-coding-agent/src/core/compaction-utils.test.ts +68 -1
- package/packages/pi-coding-agent/src/core/discovery-cache.test.ts +9 -18
- package/packages/pi-coding-agent/src/core/extensions/extension-discovery.ts +119 -0
- package/packages/pi-coding-agent/src/core/extensions/extension-registry.ts +222 -0
- package/packages/pi-coding-agent/src/core/extensions/loader.ts +24 -11
- package/packages/pi-coding-agent/src/core/extensions/types.ts +8 -0
- package/packages/pi-coding-agent/src/core/lsp/lsp-integration.test.ts +13 -0
- package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +2 -2
- package/packages/pi-coding-agent/src/core/resource-loader.ts +1 -1
- package/packages/pi-coding-agent/src/core/sdk.test.ts +25 -1
- package/packages/pi-coding-agent/src/core/sdk.ts +10 -3
- package/packages/pi-coding-agent/src/core/system-prompt.ts +3 -3
- package/packages/pi-coding-agent/src/core/tools/path-utils.test.ts +2 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/provider-display-name.test.ts +17 -7
- package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +14 -5
- package/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts +45 -11
- package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +14 -0
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-tui/dist/__tests__/autocomplete.test.js +12 -5
- package/packages/pi-tui/dist/__tests__/autocomplete.test.js.map +1 -1
- package/packages/pi-tui/dist/__tests__/stdin-buffer.test.js +19 -0
- package/packages/pi-tui/dist/__tests__/stdin-buffer.test.js.map +1 -1
- package/packages/pi-tui/dist/stdin-buffer.d.ts +7 -0
- package/packages/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
- package/packages/pi-tui/dist/stdin-buffer.js +20 -0
- package/packages/pi-tui/dist/stdin-buffer.js.map +1 -1
- package/packages/pi-tui/package.json +5 -0
- package/packages/pi-tui/src/__tests__/autocomplete.test.ts +20 -5
- package/packages/pi-tui/src/__tests__/stdin-buffer.test.ts +25 -0
- package/packages/pi-tui/src/stdin-buffer.ts +26 -0
- package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
- package/packages/rpc-client/package.json +5 -0
- package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/pkg/dist/core/export-html/ansi-to-html.js +0 -1
- package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/pkg/dist/core/export-html/index.d.ts +1 -1
- package/pkg/dist/core/export-html/index.d.ts.map +1 -1
- package/pkg/dist/core/export-html/index.js +5 -39
- package/pkg/dist/core/export-html/index.js.map +1 -1
- package/pkg/dist/core/export-html/tool-renderer.d.ts +2 -2
- package/pkg/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/pkg/dist/core/export-html/tool-renderer.js.map +1 -1
- package/scripts/ensure-workspace-builds.cjs +0 -2
- package/scripts/lib/workspace-manifest.cjs +86 -0
- package/scripts/link-workspace-packages.cjs +5 -19
- package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -1
- package/src/resources/extensions/aws-auth/index.ts +1 -2
- package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +7 -4
- package/src/resources/extensions/bg-shell/index.ts +1 -2
- package/src/resources/extensions/bg-shell/process-manager.ts +1 -2
- package/src/resources/extensions/browser-tools/index.ts +1 -2
- package/src/resources/extensions/claude-code-cli/index.ts +1 -1
- package/src/resources/extensions/claude-code-cli/partial-builder.ts +23 -115
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +81 -61
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +91 -22
- package/src/resources/extensions/cmux/index.ts +35 -10
- package/src/resources/extensions/google-search/extension-manifest.json +5 -4
- package/src/resources/extensions/google-search/index.ts +8 -470
- package/src/resources/extensions/gsd/abandon-detect.ts +62 -0
- package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -1
- package/src/resources/extensions/gsd/auto/resolve.ts +29 -0
- package/src/resources/extensions/gsd/auto/run-unit.ts +16 -2
- package/src/resources/extensions/gsd/auto/turn-epoch.ts +108 -0
- package/src/resources/extensions/gsd/auto/types.ts +1 -1
- package/src/resources/extensions/gsd/auto-dispatch.ts +20 -0
- package/src/resources/extensions/gsd/auto-loop.ts +1 -1
- package/src/resources/extensions/gsd/auto-post-unit.ts +30 -0
- package/src/resources/extensions/gsd/auto-timeout-recovery.ts +12 -5
- package/src/resources/extensions/gsd/auto-unit-closeout.ts +14 -3
- package/src/resources/extensions/gsd/auto-worktree.ts +60 -5
- package/src/resources/extensions/gsd/auto.ts +37 -18
- package/src/resources/extensions/gsd/bootstrap/provider-error-resume.ts +6 -2
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +11 -0
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +13 -9
- package/src/resources/extensions/gsd/commands/handlers/workflow.ts +27 -8
- package/src/resources/extensions/gsd/commands-cmux.ts +10 -6
- package/src/resources/extensions/gsd/commands-extensions.ts +747 -41
- package/src/resources/extensions/gsd/file-lock.ts +84 -11
- package/src/resources/extensions/gsd/git-service.ts +1 -0
- package/src/resources/extensions/gsd/gitignore.ts +1 -0
- package/src/resources/extensions/gsd/guided-flow-queue.ts +4 -1
- package/src/resources/extensions/gsd/guided-flow.ts +1 -1
- package/src/resources/extensions/gsd/journal.ts +27 -2
- package/src/resources/extensions/gsd/milestone-actions.ts +18 -0
- package/src/resources/extensions/gsd/notifications.ts +27 -15
- package/src/resources/extensions/gsd/reports.ts +5 -4
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +11 -2
- package/src/resources/extensions/gsd/tests/auto-mode-guards.test.ts +79 -0
- package/src/resources/extensions/gsd/tests/cmux.test.ts +5 -9
- package/src/resources/extensions/gsd/tests/file-lock.test.ts +86 -12
- package/src/resources/extensions/gsd/tests/google-search-stub.test.ts +121 -0
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +3 -2
- package/src/resources/extensions/gsd/tests/mcp-client-security.test.ts +76 -0
- package/src/resources/extensions/gsd/tests/milestone-transition-state-rebuild.test.ts +4 -2
- package/src/resources/extensions/gsd/tests/parallel-commit-scope.test.ts +5 -0
- package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +150 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +39 -25
- package/src/resources/extensions/gsd/tests/queue-auto-guard.test.ts +181 -0
- package/src/resources/extensions/gsd/tests/quick-auto-guard.test.ts +13 -7
- package/src/resources/extensions/gsd/tests/require-slice-discussion-dispatch.test.ts +170 -0
- package/src/resources/extensions/gsd/tests/rewrite-docs-abandon-detect.test.ts +195 -0
- package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/triage-resolution.test.ts +50 -2
- package/src/resources/extensions/gsd/tests/turn-epoch.test.ts +162 -0
- package/src/resources/extensions/gsd/tests/validate-extension-package.test.ts +168 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +25 -2
- package/src/resources/extensions/gsd/tools/complete-slice.ts +38 -0
- package/src/resources/extensions/gsd/tools/complete-task.ts +49 -0
- package/src/resources/extensions/gsd/uok/audit.ts +20 -2
- package/src/resources/extensions/gsd/workflow-logger.ts +22 -3
- package/src/resources/extensions/gsd/worktree-manager.ts +1 -0
- package/src/resources/extensions/mcp-client/auth.ts +12 -1
- package/src/resources/extensions/mcp-client/index.ts +130 -11
- package/src/resources/extensions/ollama/index.ts +3 -3
- package/src/resources/extensions/ollama/ollama-chat-provider.ts +18 -6
- package/src/resources/extensions/remote-questions/config.ts +4 -15
- package/src/resources/extensions/search-the-web/index.ts +1 -2
- package/src/resources/extensions/shared/cmux-events.ts +59 -0
- package/src/resources/extensions/shared/rtk-session-stats.ts +1 -2
- package/src/resources/extensions/shared/tests/format-utils.test.ts +3 -5
- package/src/resources/extensions/universal-config/index.ts +1 -1
- package/src/resources/skills/create-skill/SKILL.md +2 -2
- package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +4 -4
- package/src/resources/skills/create-skill/workflows/audit-skill.md +4 -4
- package/src/resources/skills/create-skill/workflows/create-new-skill.md +5 -5
- package/dist/web/standalone/.next/server/chunks/7461.js +0 -1
- package/dist/web/standalone/.next/static/chunks/2826.d445fb428ef41fa1.js +0 -9
- package/packages/gsd-agent-core/dist/agent-session.d.ts +0 -716
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/agent-session.js +0 -2595
- package/packages/gsd-agent-core/dist/agent-session.js.map +0 -1
- package/packages/gsd-agent-core/dist/artifact-manager.d.ts +0 -52
- package/packages/gsd-agent-core/dist/artifact-manager.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/artifact-manager.js +0 -118
- package/packages/gsd-agent-core/dist/artifact-manager.js.map +0 -1
- package/packages/gsd-agent-core/dist/bash-executor.d.ts +0 -57
- package/packages/gsd-agent-core/dist/bash-executor.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/bash-executor.js +0 -282
- package/packages/gsd-agent-core/dist/bash-executor.js.map +0 -1
- package/packages/gsd-agent-core/dist/blob-store.d.ts +0 -39
- package/packages/gsd-agent-core/dist/blob-store.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/blob-store.js +0 -151
- package/packages/gsd-agent-core/dist/blob-store.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts +0 -90
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.js +0 -207
- package/packages/gsd-agent-core/dist/compaction/branch-summarization.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts +0 -137
- package/packages/gsd-agent-core/dist/compaction/compaction.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/compaction.js +0 -621
- package/packages/gsd-agent-core/dist/compaction/compaction.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/index.d.ts +0 -7
- package/packages/gsd-agent-core/dist/compaction/index.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/index.js +0 -7
- package/packages/gsd-agent-core/dist/compaction/index.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/utils.d.ts +0 -78
- package/packages/gsd-agent-core/dist/compaction/utils.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction/utils.js +0 -263
- package/packages/gsd-agent-core/dist/compaction/utils.js.map +0 -1
- package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts +0 -90
- package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/compaction-orchestrator.js +0 -338
- package/packages/gsd-agent-core/dist/compaction-orchestrator.js.map +0 -1
- package/packages/gsd-agent-core/dist/contextual-tips.d.ts +0 -43
- package/packages/gsd-agent-core/dist/contextual-tips.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/contextual-tips.js +0 -208
- package/packages/gsd-agent-core/dist/contextual-tips.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts +0 -18
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js +0 -250
- package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/index.d.ts +0 -37
- package/packages/gsd-agent-core/dist/export-html/index.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/index.js +0 -257
- package/packages/gsd-agent-core/dist/export-html/index.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/template.css +0 -971
- package/packages/gsd-agent-core/dist/export-html/template.html +0 -54
- package/packages/gsd-agent-core/dist/export-html/template.js +0 -1583
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts +0 -38
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.js +0 -70
- package/packages/gsd-agent-core/dist/export-html/tool-renderer.js.map +0 -1
- package/packages/gsd-agent-core/dist/export-html/vendor/highlight.min.js +0 -1213
- package/packages/gsd-agent-core/dist/export-html/vendor/marked.min.js +0 -6
- package/packages/gsd-agent-core/dist/fallback-resolver.d.ts +0 -75
- package/packages/gsd-agent-core/dist/fallback-resolver.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/fallback-resolver.js +0 -118
- package/packages/gsd-agent-core/dist/fallback-resolver.js.map +0 -1
- package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts +0 -44
- package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/image-overflow-recovery.js +0 -99
- package/packages/gsd-agent-core/dist/image-overflow-recovery.js.map +0 -1
- package/packages/gsd-agent-core/dist/index.d.ts +0 -14
- package/packages/gsd-agent-core/dist/index.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/index.js +0 -19
- package/packages/gsd-agent-core/dist/index.js.map +0 -1
- package/packages/gsd-agent-core/dist/keybindings.d.ts +0 -47
- package/packages/gsd-agent-core/dist/keybindings.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/keybindings.js +0 -156
- package/packages/gsd-agent-core/dist/keybindings.js.map +0 -1
- package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts +0 -42
- package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/lifecycle-hooks.js +0 -204
- package/packages/gsd-agent-core/dist/lifecycle-hooks.js.map +0 -1
- package/packages/gsd-agent-core/dist/retry-handler.d.ts +0 -128
- package/packages/gsd-agent-core/dist/retry-handler.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/retry-handler.js +0 -518
- package/packages/gsd-agent-core/dist/retry-handler.js.map +0 -1
- package/packages/gsd-agent-core/dist/sdk.d.ts +0 -159
- package/packages/gsd-agent-core/dist/sdk.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/sdk.js +0 -375
- package/packages/gsd-agent-core/dist/sdk.js.map +0 -1
- package/packages/gsd-agent-core/dist/system-prompt.d.ts +0 -28
- package/packages/gsd-agent-core/dist/system-prompt.d.ts.map +0 -1
- package/packages/gsd-agent-core/dist/system-prompt.js +0 -201
- package/packages/gsd-agent-core/dist/system-prompt.js.map +0 -1
- package/packages/gsd-agent-core/package.json +0 -25
- package/packages/gsd-agent-core/scripts/copy-assets.cjs +0 -43
- package/packages/gsd-agent-core/src/agent-session.test.ts +0 -169
- package/packages/gsd-agent-core/src/agent-session.ts +0 -3358
- package/packages/gsd-agent-core/src/artifact-manager.ts +0 -126
- package/packages/gsd-agent-core/src/bash-executor.ts +0 -352
- package/packages/gsd-agent-core/src/blob-store.ts +0 -154
- package/packages/gsd-agent-core/src/compaction/branch-summarization.ts +0 -317
- package/packages/gsd-agent-core/src/compaction/compaction.ts +0 -855
- package/packages/gsd-agent-core/src/compaction/index.ts +0 -7
- package/packages/gsd-agent-core/src/compaction/utils.ts +0 -312
- package/packages/gsd-agent-core/src/compaction-orchestrator.ts +0 -449
- package/packages/gsd-agent-core/src/contextual-tips.ts +0 -232
- package/packages/gsd-agent-core/src/export-html/ansi-to-html.ts +0 -259
- package/packages/gsd-agent-core/src/export-html/index.ts +0 -345
- package/packages/gsd-agent-core/src/export-html/template.css +0 -971
- package/packages/gsd-agent-core/src/export-html/template.html +0 -54
- package/packages/gsd-agent-core/src/export-html/template.js +0 -1583
- package/packages/gsd-agent-core/src/export-html/tool-renderer.ts +0 -114
- package/packages/gsd-agent-core/src/export-html/vendor/highlight.min.js +0 -1213
- package/packages/gsd-agent-core/src/export-html/vendor/marked.min.js +0 -6
- package/packages/gsd-agent-core/src/fallback-resolver.ts +0 -193
- package/packages/gsd-agent-core/src/image-overflow-recovery.ts +0 -120
- package/packages/gsd-agent-core/src/index.ts +0 -68
- package/packages/gsd-agent-core/src/keybindings.ts +0 -220
- package/packages/gsd-agent-core/src/lifecycle-hooks.ts +0 -284
- package/packages/gsd-agent-core/src/retry-handler.ts +0 -620
- package/packages/gsd-agent-core/src/sdk.ts +0 -550
- package/packages/gsd-agent-core/src/system-prompt.ts +0 -270
- package/packages/gsd-agent-core/tsconfig.json +0 -28
- package/packages/gsd-agent-core/tsconfig.tsbuildinfo +0 -1
- package/packages/gsd-agent-modes/dist/cli/args.d.ts +0 -58
- package/packages/gsd-agent-modes/dist/cli/args.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/args.js +0 -324
- package/packages/gsd-agent-modes/dist/cli/args.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts +0 -13
- package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/config-selector.js +0 -32
- package/packages/gsd-agent-modes/dist/cli/config-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/file-processor.js +0 -86
- package/packages/gsd-agent-modes/dist/cli/file-processor.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/list-models.d.ts +0 -21
- package/packages/gsd-agent-modes/dist/cli/list-models.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/list-models.js +0 -114
- package/packages/gsd-agent-modes/dist/cli/list-models.js.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts +0 -10
- package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/cli/session-picker.js +0 -37
- package/packages/gsd-agent-modes/dist/cli/session-picker.js.map +0 -1
- package/packages/gsd-agent-modes/dist/index.d.ts +0 -7
- package/packages/gsd-agent-modes/dist/index.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/index.js +0 -7
- package/packages/gsd-agent-modes/dist/index.js.map +0 -1
- package/packages/gsd-agent-modes/dist/main.d.ts +0 -8
- package/packages/gsd-agent-modes/dist/main.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/main.js +0 -491
- package/packages/gsd-agent-modes/dist/main.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts +0 -34
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js +0 -330
- package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +0 -29
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +0 -141
- package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts +0 -36
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +0 -157
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js +0 -48
- package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +0 -43
- package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts +0 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js +0 -47
- package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +0 -44
- package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts +0 -71
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js +0 -474
- package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js +0 -32
- package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +0 -22
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +0 -70
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts +0 -20
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js +0 -75
- package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts +0 -23
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js +0 -140
- package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts +0 -12
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js +0 -133
- package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts +0 -33
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js +0 -82
- package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +0 -20
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +0 -111
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +0 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +0 -63
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +0 -33
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +0 -118
- package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +0 -32
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +0 -230
- package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +0 -34
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +0 -36
- package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts +0 -48
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js +0 -72
- package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +0 -63
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +0 -213
- package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts +0 -86
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js +0 -536
- package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +0 -93
- package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts +0 -30
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js +0 -169
- package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -49
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js +0 -267
- package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts +0 -21
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js +0 -155
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts +0 -97
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js +0 -810
- package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +0 -71
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +0 -320
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js +0 -34
- package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +0 -46
- package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts +0 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js +0 -45
- package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js +0 -46
- package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js +0 -40
- package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +0 -111
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +0 -984
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts +0 -44
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js +0 -61
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts +0 -109
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js +0 -1035
- package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js +0 -112
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +0 -12
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +0 -38
- package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js +0 -33
- package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +0 -27
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +0 -793
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts +0 -4
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +0 -62
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts +0 -22
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +0 -118
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts +0 -7
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js +0 -68
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +0 -50
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +0 -2
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +0 -358
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +0 -3409
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts +0 -77
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js +0 -529
- package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts +0 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js +0 -15
- package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts +0 -28
- package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/print-mode.js +0 -84
- package/packages/gsd-agent-modes/dist/modes/print-mode.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts +0 -17
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js +0 -49
- package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts +0 -37
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js +0 -84
- package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +0 -243
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +0 -464
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts +0 -25
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +0 -750
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts +0 -511
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js +0 -8
- package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts +0 -19
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js +0 -45
- package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts +0 -22
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js +0 -21
- package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts +0 -4
- package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/pi-tui-compat.js +0 -3
- package/packages/gsd-agent-modes/dist/pi-tui-compat.js.map +0 -1
- package/packages/gsd-agent-modes/dist/theme.d.ts +0 -15
- package/packages/gsd-agent-modes/dist/theme.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/theme.js +0 -23
- package/packages/gsd-agent-modes/dist/theme.js.map +0 -1
- package/packages/gsd-agent-modes/dist/utils/theme.d.ts +0 -16
- package/packages/gsd-agent-modes/dist/utils/theme.d.ts.map +0 -1
- package/packages/gsd-agent-modes/dist/utils/theme.js +0 -11
- package/packages/gsd-agent-modes/dist/utils/theme.js.map +0 -1
- package/packages/gsd-agent-modes/package.json +0 -23
- package/packages/gsd-agent-modes/src/cli/args.ts +0 -350
- package/packages/gsd-agent-modes/src/cli/config-selector.ts +0 -54
- package/packages/gsd-agent-modes/src/cli/file-processor.ts +0 -107
- package/packages/gsd-agent-modes/src/cli/list-models.ts +0 -141
- package/packages/gsd-agent-modes/src/cli/session-picker.ts +0 -59
- package/packages/gsd-agent-modes/src/index.ts +0 -6
- package/packages/gsd-agent-modes/src/main.ts +0 -614
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/login-dialog.test.ts +0 -24
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/provider-display-name.test.ts +0 -18
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/timestamp.test.ts +0 -38
- package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/tool-execution.test.ts +0 -171
- package/packages/gsd-agent-modes/src/modes/interactive/components/armin.ts +0 -382
- package/packages/gsd-agent-modes/src/modes/interactive/components/assistant-message.ts +0 -178
- package/packages/gsd-agent-modes/src/modes/interactive/components/bash-execution.ts +0 -212
- package/packages/gsd-agent-modes/src/modes/interactive/components/bordered-loader.ts +0 -66
- package/packages/gsd-agent-modes/src/modes/interactive/components/branch-summary-message.ts +0 -59
- package/packages/gsd-agent-modes/src/modes/interactive/components/chat-frame.ts +0 -67
- package/packages/gsd-agent-modes/src/modes/interactive/components/compaction-summary-message.ts +0 -60
- package/packages/gsd-agent-modes/src/modes/interactive/components/config-selector.ts +0 -597
- package/packages/gsd-agent-modes/src/modes/interactive/components/countdown-timer.ts +0 -41
- package/packages/gsd-agent-modes/src/modes/interactive/components/custom-editor.ts +0 -88
- package/packages/gsd-agent-modes/src/modes/interactive/components/custom-message.ts +0 -100
- package/packages/gsd-agent-modes/src/modes/interactive/components/daxnuts.ts +0 -165
- package/packages/gsd-agent-modes/src/modes/interactive/components/diff.ts +0 -147
- package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.test.ts +0 -73
- package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.ts +0 -89
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-editor.ts +0 -151
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-input.ts +0 -100
- package/packages/gsd-agent-modes/src/modes/interactive/components/extension-selector.ts +0 -156
- package/packages/gsd-agent-modes/src/modes/interactive/components/footer.ts +0 -257
- package/packages/gsd-agent-modes/src/modes/interactive/components/index.ts +0 -35
- package/packages/gsd-agent-modes/src/modes/interactive/components/keybinding-hints.ts +0 -84
- package/packages/gsd-agent-modes/src/modes/interactive/components/login-dialog.ts +0 -257
- package/packages/gsd-agent-modes/src/modes/interactive/components/model-selector.ts +0 -656
- package/packages/gsd-agent-modes/src/modes/interactive/components/oauth-selector.ts +0 -122
- package/packages/gsd-agent-modes/src/modes/interactive/components/provider-manager.ts +0 -210
- package/packages/gsd-agent-modes/src/modes/interactive/components/scoped-models-selector.ts +0 -342
- package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector-search.ts +0 -194
- package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector.ts +0 -1011
- package/packages/gsd-agent-modes/src/modes/interactive/components/settings-selector.ts +0 -452
- package/packages/gsd-agent-modes/src/modes/interactive/components/show-images-selector.ts +0 -45
- package/packages/gsd-agent-modes/src/modes/interactive/components/skill-invocation-message.ts +0 -56
- package/packages/gsd-agent-modes/src/modes/interactive/components/theme-selector.ts +0 -63
- package/packages/gsd-agent-modes/src/modes/interactive/components/thinking-selector.ts +0 -64
- package/packages/gsd-agent-modes/src/modes/interactive/components/timestamp.ts +0 -48
- package/packages/gsd-agent-modes/src/modes/interactive/components/tool-execution.ts +0 -1157
- package/packages/gsd-agent-modes/src/modes/interactive/components/tree-render-utils.ts +0 -81
- package/packages/gsd-agent-modes/src/modes/interactive/components/tree-selector.ts +0 -1208
- package/packages/gsd-agent-modes/src/modes/interactive/components/user-message-selector.ts +0 -145
- package/packages/gsd-agent-modes/src/modes/interactive/components/user-message.ts +0 -44
- package/packages/gsd-agent-modes/src/modes/interactive/components/visual-truncate.ts +0 -50
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller-ordering.test.ts +0 -1430
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.test.ts +0 -71
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.ts +0 -957
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/extension-ui-controller.ts +0 -63
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.test.ts +0 -183
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.ts +0 -140
- package/packages/gsd-agent-modes/src/modes/interactive/controllers/model-controller.ts +0 -77
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-ordering.test.ts +0 -44
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-state.ts +0 -49
- package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode.ts +0 -4195
- package/packages/gsd-agent-modes/src/modes/interactive/slash-command-handlers.ts +0 -670
- package/packages/gsd-agent-modes/src/modes/interactive/utils/shorten-path.ts +0 -14
- package/packages/gsd-agent-modes/src/modes/print-mode.ts +0 -106
- package/packages/gsd-agent-modes/src/modes/rpc/jsonl.ts +0 -58
- package/packages/gsd-agent-modes/src/modes/rpc/remote-terminal.ts +0 -109
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-client.ts +0 -572
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-mode.ts +0 -902
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-protocol-v2.test.ts +0 -971
- package/packages/gsd-agent-modes/src/modes/rpc/rpc-types.ts +0 -335
- package/packages/gsd-agent-modes/src/modes/shared/command-context-actions.ts +0 -53
- package/packages/gsd-agent-modes/src/pi-coding-agent-compat.ts +0 -42
- package/packages/gsd-agent-modes/src/pi-tui-compat.ts +0 -4
- package/packages/gsd-agent-modes/src/theme.ts +0 -25
- package/packages/gsd-agent-modes/src/utils/theme.ts +0 -24
- package/packages/gsd-agent-modes/tsconfig.json +0 -28
- package/packages/gsd-agent-modes/tsconfig.tsbuildinfo +0 -1
- package/packages/gsd-agent-types/dist/index.d.ts +0 -176
- package/packages/gsd-agent-types/dist/index.d.ts.map +0 -1
- package/packages/gsd-agent-types/dist/index.js +0 -24
- package/packages/gsd-agent-types/dist/index.js.map +0 -1
- package/packages/gsd-agent-types/package.json +0 -24
- package/packages/gsd-agent-types/src/index.ts +0 -206
- package/packages/gsd-agent-types/tsconfig.json +0 -25
- package/packages/gsd-agent-types/tsconfig.tsbuildinfo +0 -1
- package/packages/native/dist/tsconfig.tsbuildinfo +0 -1
- package/src/resources/extensions/claude-code-cli/tests/provider-registration.test.ts +0 -27
- /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → 5wbu35_C2_MQ3Jj1lEVDx}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → 5wbu35_C2_MQ3Jj1lEVDx}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auto/turn-epoch.ts — Turn generation counter + AsyncLocalStorage-backed
|
|
3
|
+
* capture for stale-turn write dropping.
|
|
4
|
+
*
|
|
5
|
+
* Problem: when auto-timeout-recovery synthetically resolves a timed-out
|
|
6
|
+
* unit so the loop can advance, the original LLM turn keeps running in the
|
|
7
|
+
* background. Its subsequent writes (journal events, audit events, tool
|
|
8
|
+
* calls that flow through closeout) then race the replacement unit's
|
|
9
|
+
* writes. DB-level guards (complete-task/complete-slice) block double
|
|
10
|
+
* state transitions, but journal/audit/closeout side-effects still fire
|
|
11
|
+
* with fresh identifiers and pollute forensics.
|
|
12
|
+
*
|
|
13
|
+
* Containment: every time we decide a turn is done (timeout recovery,
|
|
14
|
+
* explicit cancellation), bump a module-level generation counter.
|
|
15
|
+
* Turn-aware call sites wrap their body in `runWithTurnGeneration`, which
|
|
16
|
+
* captures the generation into AsyncLocalStorage. Write sites deep in the
|
|
17
|
+
* stack call `isStaleWrite` — if the captured generation is older than
|
|
18
|
+
* current, the turn has been superseded and the write is dropped.
|
|
19
|
+
*
|
|
20
|
+
* Failure mode: if AsyncLocalStorage context is lost across some exotic
|
|
21
|
+
* async boundary (e.g. a native-side worker callback), the write site sees
|
|
22
|
+
* `no-store` and falls through to current behavior — the write proceeds
|
|
23
|
+
* normally. That is a safe default; the correctness regression is only
|
|
24
|
+
* "noisier forensics under rare boundary loss," not duplicated state.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
28
|
+
|
|
29
|
+
import { debugLog } from "../debug-logger.js";
|
|
30
|
+
|
|
31
|
+
let _currentGeneration = 0;
|
|
32
|
+
|
|
33
|
+
const turnContext = new AsyncLocalStorage<{ capturedGen: number }>();
|
|
34
|
+
|
|
35
|
+
/** Current turn generation. Mutated only by bumpTurnGeneration. */
|
|
36
|
+
export function getCurrentTurnGeneration(): number {
|
|
37
|
+
return _currentGeneration;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Bump the turn generation and return the new value. Every caller should
|
|
42
|
+
* pass a short `reason` string so forensics can reconstruct why a given
|
|
43
|
+
* turn was marked stale.
|
|
44
|
+
*/
|
|
45
|
+
export function bumpTurnGeneration(reason: string): number {
|
|
46
|
+
_currentGeneration += 1;
|
|
47
|
+
debugLog("turnEpoch.bump", { reason, newGeneration: _currentGeneration });
|
|
48
|
+
return _currentGeneration;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Run fn() with `capturedGen` attached to AsyncLocalStorage so that any
|
|
53
|
+
* write site reached from within fn() can check for staleness without
|
|
54
|
+
* parameter threading.
|
|
55
|
+
*/
|
|
56
|
+
export function runWithTurnGeneration<T>(capturedGen: number, fn: () => T): T {
|
|
57
|
+
return turnContext.run({ capturedGen }, fn);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* True when the current async context was started at a turn generation
|
|
62
|
+
* older than the current one — meaning the turn has been superseded by
|
|
63
|
+
* recovery/cancellation since it began.
|
|
64
|
+
*
|
|
65
|
+
* Returns false when there is no captured generation (e.g. the write is
|
|
66
|
+
* happening outside any wrapped turn). That is the safe default: writes
|
|
67
|
+
* proceed as they did before this epoch was introduced.
|
|
68
|
+
*/
|
|
69
|
+
export function isStaleWrite(component?: string): boolean {
|
|
70
|
+
const store = turnContext.getStore();
|
|
71
|
+
if (!store) return false;
|
|
72
|
+
const captured = store.capturedGen;
|
|
73
|
+
const current = _currentGeneration;
|
|
74
|
+
if (captured < current) {
|
|
75
|
+
debugLog("turnEpoch.stale", {
|
|
76
|
+
component: component ?? "unknown",
|
|
77
|
+
captured,
|
|
78
|
+
current,
|
|
79
|
+
});
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Snapshot of both the captured turn generation and the current one.
|
|
87
|
+
* Used by closeoutUnit to persist an orphan-marker entry instead of
|
|
88
|
+
* silently skipping the full closeout on a stale turn.
|
|
89
|
+
*/
|
|
90
|
+
export function describeTurnEpoch(): {
|
|
91
|
+
captured: number | null;
|
|
92
|
+
current: number;
|
|
93
|
+
stale: boolean;
|
|
94
|
+
} {
|
|
95
|
+
const store = turnContext.getStore();
|
|
96
|
+
const captured = store?.capturedGen ?? null;
|
|
97
|
+
const current = _currentGeneration;
|
|
98
|
+
return {
|
|
99
|
+
captured,
|
|
100
|
+
current,
|
|
101
|
+
stale: captured !== null && captured < current,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** Test helper — resets module state so tests start from a known baseline. */
|
|
106
|
+
export function _resetTurnEpoch(): void {
|
|
107
|
+
_currentGeneration = 0;
|
|
108
|
+
}
|
|
@@ -9,7 +9,7 @@ import type { ExtensionAPI, ExtensionContext } from "@gsd/pi-coding-agent";
|
|
|
9
9
|
import type { AutoSession } from "./session.js";
|
|
10
10
|
import type { GSDPreferences } from "../preferences.js";
|
|
11
11
|
import type { GSDState } from "../types.js";
|
|
12
|
-
import type { CmuxLogLevel } from "../../cmux
|
|
12
|
+
import type { CmuxLogLevel } from "../../shared/cmux-events.js";
|
|
13
13
|
import type { LoopDeps } from "./loop-deps.js";
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -421,6 +421,26 @@ export const DISPATCH_RULES: DispatchRule[] = [
|
|
|
421
421
|
};
|
|
422
422
|
},
|
|
423
423
|
},
|
|
424
|
+
{
|
|
425
|
+
name: "planning (require_slice_discussion) → pause for discussion (#3454)",
|
|
426
|
+
match: async ({ state, mid, basePath, prefs }) => {
|
|
427
|
+
if (state.phase !== "planning") return null;
|
|
428
|
+
if (!prefs?.phases?.require_slice_discussion) return null;
|
|
429
|
+
if (!state.activeSlice) return null;
|
|
430
|
+
// Only pause if the slice has no context file yet (discussion not done).
|
|
431
|
+
// resolveSliceFile returns null when the file does not exist on disk,
|
|
432
|
+
// but cachedReaddir could return a stale hit — verify with existsSync
|
|
433
|
+
// so the guard is defence-in-depth and the contract is explicit at the
|
|
434
|
+
// call site.
|
|
435
|
+
const sliceContextFile = resolveSliceFile(basePath, mid, state.activeSlice.id, "CONTEXT");
|
|
436
|
+
if (sliceContextFile && existsSync(sliceContextFile)) return null; // discussion already done, proceed
|
|
437
|
+
return {
|
|
438
|
+
action: "stop" as const,
|
|
439
|
+
reason: `Slice ${state.activeSlice.id} requires discussion before planning (require_slice_discussion is enabled). Run /gsd discuss to discuss this slice, then /gsd auto to resume.`,
|
|
440
|
+
level: "info" as const,
|
|
441
|
+
};
|
|
442
|
+
},
|
|
443
|
+
},
|
|
424
444
|
{
|
|
425
445
|
// Keep this rule before the single-slice research rule so the multi-slice
|
|
426
446
|
// path wins whenever 2+ slices are ready.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
export { autoLoop, runUokKernelLoop, runLegacyAutoLoop } from "./auto/loop.js";
|
|
11
11
|
export { isInfrastructureError, INFRA_ERROR_CODES } from "./auto/infra-errors.js";
|
|
12
|
-
export { resolveAgentEnd, resolveAgentEndCancelled, isSessionSwitchInFlight, _resetPendingResolve, _setActiveSession } from "./auto/resolve.js";
|
|
12
|
+
export { resolveAgentEnd, resolveAgentEndCancelled, isSessionSwitchInFlight, _hasPendingResolveForTest, _resetPendingResolve, _setActiveSession } from "./auto/resolve.js";
|
|
13
13
|
export { detectStuck } from "./auto/detect-stuck.js";
|
|
14
14
|
export { runUnit } from "./auto/run-unit.js";
|
|
15
15
|
export type { LoopDeps } from "./auto/loop-deps.js";
|
|
@@ -71,6 +71,7 @@ import { resolveUokFlags } from "./uok/flags.js";
|
|
|
71
71
|
import { UokGateRunner } from "./uok/gate-runner.js";
|
|
72
72
|
import { writeTurnGitTransaction } from "./uok/gitops.js";
|
|
73
73
|
import { isClosedStatus } from "./status-guards.js";
|
|
74
|
+
import { detectAbandonMilestone } from "./abandon-detect.js";
|
|
74
75
|
|
|
75
76
|
/** Maximum verification retry attempts before escalating to blocker placeholder (#2653). */
|
|
76
77
|
const MAX_VERIFICATION_RETRIES = 3;
|
|
@@ -569,6 +570,35 @@ export async function postUnitPreVerification(pctx: PostUnitContext, opts?: PreV
|
|
|
569
570
|
// Rewrite-docs completion
|
|
570
571
|
if (s.currentUnit.type === "rewrite-docs") {
|
|
571
572
|
await runSafely("postUnit", "rewrite-docs-resolve", async () => {
|
|
573
|
+
// Detect abandon/descope overrides BEFORE resolving them (#3490).
|
|
574
|
+
// If an override is about abandoning the milestone, park it so the
|
|
575
|
+
// state engine skips it. Without this, rewrite-docs only edits
|
|
576
|
+
// markdown but the DB still has the milestone as active.
|
|
577
|
+
try {
|
|
578
|
+
const { loadActiveOverrides } = await import("./files.js");
|
|
579
|
+
const overrides = await loadActiveOverrides(s.basePath);
|
|
580
|
+
const decision = detectAbandonMilestone(overrides, s.currentMilestoneId);
|
|
581
|
+
if (decision.shouldPark && s.currentMilestoneId) {
|
|
582
|
+
const { parkMilestone } = await import("./milestone-actions.js");
|
|
583
|
+
const parked = parkMilestone(s.basePath, s.currentMilestoneId, decision.reason);
|
|
584
|
+
if (parked) {
|
|
585
|
+
ctx.ui.notify(`Milestone ${s.currentMilestoneId} parked: "${decision.reason}"`, "info");
|
|
586
|
+
} else {
|
|
587
|
+
// Park refused: milestone directory missing, milestone already
|
|
588
|
+
// completed (SUMMARY present), or PARKED.md already exists.
|
|
589
|
+
// resolveAllOverrides below will still consume the override —
|
|
590
|
+
// surface this loudly so the user notices state drift rather
|
|
591
|
+
// than silently losing the abandon directive.
|
|
592
|
+
const msg = `Abandon detected for ${s.currentMilestoneId} but park refused (milestone is completed, already parked, or missing). Override will be resolved anyway — verify state is correct.`;
|
|
593
|
+
logError("engine", msg);
|
|
594
|
+
ctx.ui.notify(msg, "warning");
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
} catch (err) {
|
|
598
|
+
logError("engine", `abandon-detect failed: ${(err as Error).message}`);
|
|
599
|
+
ctx.ui.notify(`Abandon detection failed — check logs. Overrides will still be resolved.`, "warning");
|
|
600
|
+
}
|
|
601
|
+
|
|
572
602
|
await resolveAllOverrides(s.basePath);
|
|
573
603
|
// Reset both disk and in-memory counters. Disk counter is authoritative
|
|
574
604
|
// (survives restarts); in-memory is kept in sync for the current session.
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./auto-recovery.js";
|
|
19
19
|
import { existsSync } from "node:fs";
|
|
20
20
|
|
|
21
|
-
import {
|
|
21
|
+
import { bumpAndResolveSynthetic } from "./auto/resolve.js";
|
|
22
22
|
|
|
23
23
|
export interface RecoveryContext {
|
|
24
24
|
basePath: string;
|
|
@@ -35,6 +35,13 @@ export async function recoverTimedOutUnit(
|
|
|
35
35
|
reason: "idle" | "hard",
|
|
36
36
|
rctx: RecoveryContext,
|
|
37
37
|
): Promise<"recovered" | "paused"> {
|
|
38
|
+
// Note on turn epoch: the bump is intentionally NOT unconditional at
|
|
39
|
+
// function entry. Two branches below (the "steering retry" paths) keep
|
|
40
|
+
// the same LLM turn alive and let it try again — they must NOT bump,
|
|
41
|
+
// otherwise the retry's legitimate writes get marked stale and drop.
|
|
42
|
+
// Each advance branch calls `bumpAndResolveSynthetic` to bump+resolve
|
|
43
|
+
// atomically. Search for that helper to find all supersede sites.
|
|
44
|
+
|
|
38
45
|
const { basePath, verbose, currentUnitStartedAt, unitRecoveryCount } = rctx;
|
|
39
46
|
|
|
40
47
|
const runtime = readUnitRuntimeRecord(basePath, unitType, unitId);
|
|
@@ -74,7 +81,7 @@ export async function recoverTimedOutUnit(
|
|
|
74
81
|
"info",
|
|
75
82
|
);
|
|
76
83
|
unitRecoveryCount.delete(recoveryKey);
|
|
77
|
-
|
|
84
|
+
bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
|
|
78
85
|
return "recovered";
|
|
79
86
|
}
|
|
80
87
|
|
|
@@ -145,7 +152,7 @@ export async function recoverTimedOutUnit(
|
|
|
145
152
|
"warning",
|
|
146
153
|
);
|
|
147
154
|
unitRecoveryCount.delete(recoveryKey);
|
|
148
|
-
|
|
155
|
+
bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
|
|
149
156
|
return "recovered";
|
|
150
157
|
}
|
|
151
158
|
|
|
@@ -179,7 +186,7 @@ export async function recoverTimedOutUnit(
|
|
|
179
186
|
"info",
|
|
180
187
|
);
|
|
181
188
|
unitRecoveryCount.delete(recoveryKey);
|
|
182
|
-
|
|
189
|
+
bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
|
|
183
190
|
return "recovered";
|
|
184
191
|
}
|
|
185
192
|
|
|
@@ -265,7 +272,7 @@ export async function recoverTimedOutUnit(
|
|
|
265
272
|
"warning",
|
|
266
273
|
);
|
|
267
274
|
unitRecoveryCount.delete(recoveryKey);
|
|
268
|
-
|
|
275
|
+
bumpAndResolveSynthetic(`timeout-recovery:${reason}:${unitType}/${unitId}`);
|
|
269
276
|
return "recovered";
|
|
270
277
|
}
|
|
271
278
|
|
|
@@ -45,9 +45,20 @@ export async function closeoutUnit(
|
|
|
45
45
|
const { buildMemoryLLMCall, extractMemoriesFromUnit } = await import('./memory-extractor.js');
|
|
46
46
|
const llmCallFn = buildMemoryLLMCall(ctx);
|
|
47
47
|
if (llmCallFn) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
// Awaited: a fire-and-forget here lets memory-extractor writes land in
|
|
49
|
+
// .gsd/ after closeoutUnit returns but before the milestone merge
|
|
50
|
+
// runs, which made the working tree appear dirty to `git merge
|
|
51
|
+
// --squash` (root cause class of #4704). Completion latency is now
|
|
52
|
+
// bounded by the extractor's LLM call, which is the acceptable price
|
|
53
|
+
// for not racing the merge boundary.
|
|
54
|
+
try {
|
|
55
|
+
await extractMemoriesFromUnit(activityFile, unitType, unitId, llmCallFn);
|
|
56
|
+
} catch (err) {
|
|
57
|
+
logWarning(
|
|
58
|
+
"engine",
|
|
59
|
+
`memory extraction failed for ${unitType}/${unitId}: ${(err as Error).message}`,
|
|
60
|
+
);
|
|
61
|
+
}
|
|
51
62
|
}
|
|
52
63
|
} catch (err) { /* non-fatal */
|
|
53
64
|
logWarning("engine", `operation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -26,6 +26,9 @@ import {
|
|
|
26
26
|
isDbAvailable,
|
|
27
27
|
getMilestone,
|
|
28
28
|
getMilestoneSlices,
|
|
29
|
+
closeDatabase,
|
|
30
|
+
openDatabase,
|
|
31
|
+
getDbPath,
|
|
29
32
|
} from "./gsd-db.js";
|
|
30
33
|
import { atomicWriteSync } from "./atomic-write.js";
|
|
31
34
|
import { execFileSync } from "node:child_process";
|
|
@@ -1668,22 +1671,51 @@ export function mergeMilestoneToMain(
|
|
|
1668
1671
|
const milestonesDir = join(gsdRoot(originalBasePath_), "milestones");
|
|
1669
1672
|
const shelterDir = join(gsdRoot(originalBasePath_), ".milestone-shelter");
|
|
1670
1673
|
const shelteredDirs: string[] = [];
|
|
1674
|
+
let shelterRestored = false;
|
|
1671
1675
|
|
|
1672
1676
|
// Helper: restore sheltered milestone directories (#2505).
|
|
1673
1677
|
// Called on both success and error paths to ensure queued CONTEXT files
|
|
1674
|
-
// are never permanently lost.
|
|
1678
|
+
// are never permanently lost. Idempotent — the error path may fire after
|
|
1679
|
+
// the success path has already restored and removed the shelter dir; a
|
|
1680
|
+
// second call is a no-op instead of logging a misleading "shelter restore
|
|
1681
|
+
// failed: ENOENT" error for shelter sources that were cleaned up legitimately.
|
|
1675
1682
|
const restoreShelter = (): void => {
|
|
1683
|
+
if (shelterRestored) return;
|
|
1684
|
+
shelterRestored = true;
|
|
1676
1685
|
if (shelteredDirs.length === 0) return;
|
|
1686
|
+
let restoreFailed = false;
|
|
1677
1687
|
for (const dirName of shelteredDirs) {
|
|
1688
|
+
const src = join(shelterDir, dirName);
|
|
1689
|
+
// If the shelter source is missing the restore cannot proceed for this
|
|
1690
|
+
// entry. Distinguish "legitimately missing" (shelter dir removed by a
|
|
1691
|
+
// prior successful restore or never copied) from a surprising ENOENT
|
|
1692
|
+
// inside an otherwise-populated shelter.
|
|
1693
|
+
if (!existsSync(src)) {
|
|
1694
|
+
logWarning(
|
|
1695
|
+
"worktree",
|
|
1696
|
+
`shelter source missing for ${dirName}; skipping restore (shelter already cleaned or entry never staged)`,
|
|
1697
|
+
);
|
|
1698
|
+
continue;
|
|
1699
|
+
}
|
|
1678
1700
|
try {
|
|
1679
1701
|
mkdirSync(milestonesDir, { recursive: true });
|
|
1680
|
-
cpSync(
|
|
1702
|
+
cpSync(src, join(milestonesDir, dirName), { recursive: true, force: true });
|
|
1681
1703
|
} catch (err) { /* best-effort */
|
|
1682
|
-
|
|
1704
|
+
restoreFailed = true;
|
|
1705
|
+
logError("worktree", `shelter restore failed (${dirName}): ${err instanceof Error ? err.message : String(err)}`);
|
|
1683
1706
|
}
|
|
1684
1707
|
}
|
|
1685
|
-
|
|
1686
|
-
|
|
1708
|
+
// Preserve the shelter if any per-entry restore failed — it is the only
|
|
1709
|
+
// surviving copy of the queued milestone dirs (sources were deleted during
|
|
1710
|
+
// shelter). Deleting it here would permanently lose those files (#2505).
|
|
1711
|
+
if (restoreFailed) {
|
|
1712
|
+
logWarning("worktree", `shelter retained at ${shelterDir} — manual recovery required for unrestored entries`);
|
|
1713
|
+
return;
|
|
1714
|
+
}
|
|
1715
|
+
if (existsSync(shelterDir)) {
|
|
1716
|
+
try { rmSync(shelterDir, { recursive: true, force: true }); } catch (err) { /* best-effort */
|
|
1717
|
+
logWarning("worktree", `shelter cleanup failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1718
|
+
}
|
|
1687
1719
|
}
|
|
1688
1720
|
};
|
|
1689
1721
|
|
|
@@ -1720,6 +1752,21 @@ export function mergeMilestoneToMain(
|
|
|
1720
1752
|
// entries (e.g. a gitignored `.gsd` symlink under ADR-002) (#4573).
|
|
1721
1753
|
// Queued CONTEXT files under `.gsd/milestones/*` are already sheltered
|
|
1722
1754
|
// in step 7 above, so they won't be swept into the stash.
|
|
1755
|
+
// On Windows, SQLite holds mandatory file locks on the gsd.db WAL/SHM
|
|
1756
|
+
// sidecars while the connection is open. `git stash --include-untracked`
|
|
1757
|
+
// walks those files and fails with EBUSY (#4704). Close the DB before
|
|
1758
|
+
// stashing so Windows releases the handles; reopen after. No-op on
|
|
1759
|
+
// POSIX, where advisory locks don't block git.
|
|
1760
|
+
const needsDbCycle = process.platform === "win32" && isDbAvailable();
|
|
1761
|
+
const dbPathToReopen = needsDbCycle ? getDbPath() : null;
|
|
1762
|
+
if (needsDbCycle) {
|
|
1763
|
+
try {
|
|
1764
|
+
closeDatabase();
|
|
1765
|
+
} catch (err) {
|
|
1766
|
+
logWarning("worktree", `pre-stash db close failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1723
1770
|
let stashed = false;
|
|
1724
1771
|
try {
|
|
1725
1772
|
const status = execFileSync("git", ["status", "--porcelain"], {
|
|
@@ -1741,6 +1788,14 @@ export function mergeMilestoneToMain(
|
|
|
1741
1788
|
logWarning("worktree", `git stash failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1742
1789
|
}
|
|
1743
1790
|
|
|
1791
|
+
if (needsDbCycle && dbPathToReopen) {
|
|
1792
|
+
try {
|
|
1793
|
+
openDatabase(dbPathToReopen);
|
|
1794
|
+
} catch (err) {
|
|
1795
|
+
logWarning("worktree", `post-stash db reopen failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1798
|
+
|
|
1744
1799
|
// 7b. Clean up stale merge state before attempting squash merge (#2912).
|
|
1745
1800
|
// A leftover MERGE_HEAD (from a previous failed merge, libgit2 native path,
|
|
1746
1801
|
// or interrupted operation) causes `git merge --squash` to refuse with
|
|
@@ -192,7 +192,18 @@ import {
|
|
|
192
192
|
} from "./auto-supervisor.js";
|
|
193
193
|
import { isDbAvailable, getMilestone } from "./gsd-db.js";
|
|
194
194
|
import { countPendingCaptures } from "./captures.js";
|
|
195
|
-
import {
|
|
195
|
+
import { CMUX_CHANNELS, type CmuxLogLevel } from "../shared/cmux-events.js";
|
|
196
|
+
|
|
197
|
+
function makeCmuxEmitters(pi: ExtensionAPI) {
|
|
198
|
+
return {
|
|
199
|
+
syncCmuxSidebar: (preferences: GSDPreferences | undefined, state: GSDState) =>
|
|
200
|
+
pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "sync" as const, preferences, state }),
|
|
201
|
+
logCmuxEvent: (preferences: GSDPreferences | undefined, message: string, level?: CmuxLogLevel) =>
|
|
202
|
+
pi.events.emit(CMUX_CHANNELS.LOG, { preferences, message, level: level ?? "info" }),
|
|
203
|
+
clearCmuxSidebar: (preferences: GSDPreferences | undefined) =>
|
|
204
|
+
pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "clear" as const, preferences }),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
196
207
|
|
|
197
208
|
// ── Extracted modules ──────────────────────────────────────────────────────
|
|
198
209
|
import { startUnitSupervision } from "./auto-timers.js";
|
|
@@ -474,6 +485,11 @@ export function isAutoActive(): boolean {
|
|
|
474
485
|
return s.active;
|
|
475
486
|
}
|
|
476
487
|
|
|
488
|
+
/** Test-only seam for validating auto-mode guards (#4704). Do not use in production code. */
|
|
489
|
+
export function _setAutoActiveForTest(active: boolean): void {
|
|
490
|
+
s.active = active;
|
|
491
|
+
}
|
|
492
|
+
|
|
477
493
|
export function isAutoPaused(): boolean {
|
|
478
494
|
return s.paused;
|
|
479
495
|
}
|
|
@@ -701,7 +717,6 @@ function handleLostSessionLock(
|
|
|
701
717
|
restoreProjectRootEnv();
|
|
702
718
|
restoreMilestoneLockEnv();
|
|
703
719
|
deregisterSigtermHandler();
|
|
704
|
-
clearCmuxSidebar(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences);
|
|
705
720
|
const base = lockBase();
|
|
706
721
|
const lockFilePath = base ? join(gsdRoot(base), "auto.lock") : "unknown";
|
|
707
722
|
const recoverySuggestion = "\nTo recover, run: gsd doctor --fix";
|
|
@@ -942,12 +957,12 @@ export async function stopAuto(
|
|
|
942
957
|
|
|
943
958
|
// ── Step 9: Cmux sidebar / event log ──
|
|
944
959
|
try {
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
loadedPreferences,
|
|
948
|
-
`Auto-mode stopped${reasonSuffix || ""}.`,
|
|
949
|
-
reason?.startsWith("Blocked:") ? "warning" : "info",
|
|
950
|
-
);
|
|
960
|
+
pi?.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "clear" as const, preferences: loadedPreferences });
|
|
961
|
+
pi?.events.emit(CMUX_CHANNELS.LOG, {
|
|
962
|
+
preferences: loadedPreferences,
|
|
963
|
+
message: `Auto-mode stopped${reasonSuffix || ""}.`,
|
|
964
|
+
level: reason?.startsWith("Blocked:") ? "warning" : "info",
|
|
965
|
+
});
|
|
951
966
|
} catch (e) {
|
|
952
967
|
debugLog("stop-cleanup-cmux", { error: e instanceof Error ? e.message : String(e) });
|
|
953
968
|
}
|
|
@@ -1185,12 +1200,14 @@ function buildResolver(): WorktreeResolver {
|
|
|
1185
1200
|
* Build the LoopDeps object from auto.ts private scope.
|
|
1186
1201
|
* This bundles all private functions that autoLoop needs without exporting them.
|
|
1187
1202
|
*/
|
|
1188
|
-
function buildLoopDeps(): LoopDeps {
|
|
1203
|
+
function buildLoopDeps(pi: ExtensionAPI): LoopDeps {
|
|
1189
1204
|
// Initialize the unified rule registry with converted dispatch rules.
|
|
1190
1205
|
// Must happen before LoopDeps is assembled so facade functions
|
|
1191
1206
|
// (resolveDispatch, runPreDispatchHooks, etc.) delegate to the registry.
|
|
1192
1207
|
initRegistry(convertDispatchRules(DISPATCH_RULES));
|
|
1193
1208
|
|
|
1209
|
+
const cmux = makeCmuxEmitters(pi);
|
|
1210
|
+
|
|
1194
1211
|
return {
|
|
1195
1212
|
lockBase,
|
|
1196
1213
|
buildSnapshotOpts,
|
|
@@ -1198,8 +1215,11 @@ function buildLoopDeps(): LoopDeps {
|
|
|
1198
1215
|
pauseAuto,
|
|
1199
1216
|
clearUnitTimeout,
|
|
1200
1217
|
updateProgressWidget,
|
|
1201
|
-
|
|
1202
|
-
|
|
1218
|
+
...cmux,
|
|
1219
|
+
handleLostSessionLock: (ctx: ExtensionContext | undefined, lockStatus: SessionLockStatus | undefined) => {
|
|
1220
|
+
cmux.clearCmuxSidebar(loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences);
|
|
1221
|
+
handleLostSessionLock(ctx, lockStatus);
|
|
1222
|
+
},
|
|
1203
1223
|
|
|
1204
1224
|
// State and cache
|
|
1205
1225
|
invalidateAllCaches,
|
|
@@ -1219,7 +1239,6 @@ function buildLoopDeps(): LoopDeps {
|
|
|
1219
1239
|
// Session lock
|
|
1220
1240
|
validateSessionLock: getSessionLockStatus,
|
|
1221
1241
|
updateSessionLock,
|
|
1222
|
-
handleLostSessionLock,
|
|
1223
1242
|
|
|
1224
1243
|
// Milestone transition
|
|
1225
1244
|
sendDesktopNotification,
|
|
@@ -1576,7 +1595,7 @@ export async function startAuto(
|
|
|
1576
1595
|
await openProjectDbIfPresent(s.basePath);
|
|
1577
1596
|
try {
|
|
1578
1597
|
await rebuildState(s.basePath);
|
|
1579
|
-
|
|
1598
|
+
pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "sync" as const, preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, state: await deriveState(s.basePath) });
|
|
1580
1599
|
} catch (e) {
|
|
1581
1600
|
debugLog("resume-rebuild-state-failed", {
|
|
1582
1601
|
error: e instanceof Error ? e.message : String(e),
|
|
@@ -1626,7 +1645,7 @@ export async function startAuto(
|
|
|
1626
1645
|
"resuming",
|
|
1627
1646
|
s.currentMilestoneId ?? "unknown",
|
|
1628
1647
|
);
|
|
1629
|
-
|
|
1648
|
+
pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: s.stepMode ? "Step-mode resumed." : "Auto-mode resumed.", level: "progress" });
|
|
1630
1649
|
|
|
1631
1650
|
captureProjectRootEnv(s.originalBasePath || s.basePath);
|
|
1632
1651
|
startAutoCommandPolling(s.basePath);
|
|
@@ -1634,7 +1653,7 @@ export async function startAuto(
|
|
|
1634
1653
|
ctx,
|
|
1635
1654
|
pi,
|
|
1636
1655
|
s,
|
|
1637
|
-
deps: buildLoopDeps(),
|
|
1656
|
+
deps: buildLoopDeps(pi),
|
|
1638
1657
|
runKernelLoop: runUokKernelLoop,
|
|
1639
1658
|
runLegacyLoop: runLegacyAutoLoop,
|
|
1640
1659
|
});
|
|
@@ -1664,12 +1683,12 @@ export async function startAuto(
|
|
|
1664
1683
|
|
|
1665
1684
|
captureProjectRootEnv(s.originalBasePath || s.basePath);
|
|
1666
1685
|
try {
|
|
1667
|
-
|
|
1686
|
+
pi.events.emit(CMUX_CHANNELS.SIDEBAR, { action: "sync" as const, preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, state: await deriveState(s.basePath) });
|
|
1668
1687
|
} catch (err) {
|
|
1669
1688
|
// Best-effort only — sidebar sync must never block auto-mode startup
|
|
1670
1689
|
logWarning("engine", `cmux sync failed: ${err instanceof Error ? err.message : String(err)}`, { file: "auto.ts" });
|
|
1671
1690
|
}
|
|
1672
|
-
|
|
1691
|
+
pi.events.emit(CMUX_CHANNELS.LOG, { preferences: loadEffectiveGSDPreferences(s.basePath || undefined)?.preferences, message: requestedStepMode ? "Step-mode started." : "Auto-mode started.", level: "progress" });
|
|
1673
1692
|
|
|
1674
1693
|
startAutoCommandPolling(s.basePath);
|
|
1675
1694
|
|
|
@@ -1678,7 +1697,7 @@ export async function startAuto(
|
|
|
1678
1697
|
ctx,
|
|
1679
1698
|
pi,
|
|
1680
1699
|
s,
|
|
1681
|
-
deps: buildLoopDeps(),
|
|
1700
|
+
deps: buildLoopDeps(pi),
|
|
1682
1701
|
runKernelLoop: runUokKernelLoop,
|
|
1683
1702
|
runLegacyLoop: runLegacyAutoLoop,
|
|
1684
1703
|
});
|
|
@@ -12,6 +12,8 @@ type AutoResumeSnapshot = Pick<AutoDashboardData, "active" | "paused" | "stepMod
|
|
|
12
12
|
|
|
13
13
|
export interface ProviderErrorResumeDeps {
|
|
14
14
|
getSnapshot(): AutoResumeSnapshot;
|
|
15
|
+
resetTransientRetryState(): void;
|
|
16
|
+
resetSessionTimeoutState(): void;
|
|
15
17
|
startAuto(
|
|
16
18
|
ctx: ExtensionCommandContext,
|
|
17
19
|
pi: ExtensionAPI,
|
|
@@ -23,6 +25,8 @@ export interface ProviderErrorResumeDeps {
|
|
|
23
25
|
|
|
24
26
|
const defaultDeps: ProviderErrorResumeDeps = {
|
|
25
27
|
getSnapshot: () => getAutoDashboardData(),
|
|
28
|
+
resetTransientRetryState,
|
|
29
|
+
resetSessionTimeoutState,
|
|
26
30
|
startAuto,
|
|
27
31
|
};
|
|
28
32
|
|
|
@@ -47,8 +51,8 @@ export async function resumeAutoAfterProviderDelay(
|
|
|
47
51
|
// Reset retry counters before restarting — without this, counters
|
|
48
52
|
// accumulate across pause/resume cycles and permanently lock out
|
|
49
53
|
// auto-resume after their respective MAX thresholds.
|
|
50
|
-
resetTransientRetryState();
|
|
51
|
-
resetSessionTimeoutState();
|
|
54
|
+
deps.resetTransientRetryState();
|
|
55
|
+
deps.resetSessionTimeoutState();
|
|
52
56
|
|
|
53
57
|
await deps.startAuto(
|
|
54
58
|
ctx as ExtensionCommandContext,
|
|
@@ -16,6 +16,13 @@ import { registerHooks } from "./register-hooks.js";
|
|
|
16
16
|
import { registerShortcuts } from "./register-shortcuts.js";
|
|
17
17
|
import { writeCrashLog } from "./crash-log.js";
|
|
18
18
|
import { logWarning } from "../workflow-logger.js";
|
|
19
|
+
// Static import so cmux event listeners are registered synchronously during
|
|
20
|
+
// extension bootstrap. Prior implementation used `void import().then()` which
|
|
21
|
+
// queued listener registration as a microtask — any CMUX_CHANNELS emit fired
|
|
22
|
+
// in the same event loop turn as registration (e.g. from a provider-error
|
|
23
|
+
// session hook calling startAuto) would be silently dropped because Node's
|
|
24
|
+
// EventEmitter does not buffer events for late subscribers.
|
|
25
|
+
import { initCmuxEventListeners } from "../../cmux/index.js";
|
|
19
26
|
|
|
20
27
|
export { writeCrashLog } from "./crash-log.js";
|
|
21
28
|
|
|
@@ -103,6 +110,10 @@ export function registerGsdExtension(pi: ExtensionAPI): void {
|
|
|
103
110
|
["memory-tools", () => registerMemoryTools(pi)],
|
|
104
111
|
["exec-tools", () => registerExecTools(pi)],
|
|
105
112
|
["shortcuts", () => registerShortcuts(pi)],
|
|
113
|
+
// cmux is a library (no pi), so gsd sets up the event listeners on its
|
|
114
|
+
// behalf using the shared event channel contract. Registration is
|
|
115
|
+
// synchronous — see the import comment above for the rationale.
|
|
116
|
+
["cmux-events", () => initCmuxEventListeners(pi.events)],
|
|
106
117
|
["hooks", () => registerHooks(pi, ecosystemHandlers)],
|
|
107
118
|
["ecosystem", () => {
|
|
108
119
|
void loadEcosystemExtensions(pi, ecosystemHandlers).catch((err) => {
|
|
@@ -19,7 +19,6 @@ import { getActiveWorktreeName, getWorktreeOriginalCwd } from "../worktree-comma
|
|
|
19
19
|
import { deriveState } from "../state.js";
|
|
20
20
|
import { formatOverridesSection, formatShortcut, loadActiveOverrides, loadFile, parseContinue, parseSummary } from "../files.js";
|
|
21
21
|
import { toPosixPath } from "../../shared/mod.js";
|
|
22
|
-
import { markCmuxPromptShown, shouldPromptToEnableCmux } from "../../cmux/index.js";
|
|
23
22
|
import { autoEnableCmuxPreferences } from "../commands-cmux.js";
|
|
24
23
|
|
|
25
24
|
const gsdHome = process.env.GSD_HOME || join(homedir(), ".gsd");
|
|
@@ -99,15 +98,20 @@ export async function buildBeforeAgentStartResult(
|
|
|
99
98
|
shortcutShell: formatShortcut("Ctrl+Alt+B"),
|
|
100
99
|
});
|
|
101
100
|
let loadedPreferences = loadEffectiveGSDPreferences();
|
|
102
|
-
|
|
103
|
-
markCmuxPromptShown();
|
|
104
|
-
if (
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
101
|
+
try {
|
|
102
|
+
const { markCmuxPromptShown, shouldPromptToEnableCmux } = await import("../../cmux/index.js");
|
|
103
|
+
if (shouldPromptToEnableCmux(loadedPreferences?.preferences)) {
|
|
104
|
+
markCmuxPromptShown();
|
|
105
|
+
if (autoEnableCmuxPreferences()) {
|
|
106
|
+
loadedPreferences = loadEffectiveGSDPreferences();
|
|
107
|
+
ctx.ui.notify(
|
|
108
|
+
"cmux detected — auto-enabled. Run /gsd cmux off to disable.",
|
|
109
|
+
"info",
|
|
110
|
+
);
|
|
111
|
+
}
|
|
110
112
|
}
|
|
113
|
+
} catch (e) {
|
|
114
|
+
logWarning("bootstrap", `cmux prompt setup skipped: ${(e as Error).message}`);
|
|
111
115
|
}
|
|
112
116
|
|
|
113
117
|
let preferenceBlock = "";
|