gsd-pi 2.44.0 → 2.45.0-dev.e0ee972
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -12
- package/dist/help-text.js +1 -1
- package/dist/loader.js +34 -0
- package/dist/resources/extensions/gsd/activity-log.js +7 -0
- package/dist/resources/extensions/gsd/auto/infra-errors.js +3 -0
- package/dist/resources/extensions/gsd/auto/phases.js +52 -45
- package/dist/resources/extensions/gsd/auto/run-unit.js +6 -3
- package/dist/resources/extensions/gsd/auto-prompts.js +24 -1
- package/dist/resources/extensions/gsd/auto-start.js +31 -2
- package/dist/resources/extensions/gsd/auto-timers.js +57 -3
- package/dist/resources/extensions/gsd/auto-worktree-sync.js +4 -0
- package/dist/resources/extensions/gsd/auto-worktree.js +14 -10
- package/dist/resources/extensions/gsd/auto.js +34 -8
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +168 -11
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +46 -12
- package/dist/resources/extensions/gsd/commands/catalog.js +7 -1
- package/dist/resources/extensions/gsd/commands/handlers/core.js +2 -0
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +10 -0
- package/dist/resources/extensions/gsd/commands/handlers/workflow.js +5 -0
- package/dist/resources/extensions/gsd/commands-mcp-status.js +187 -0
- package/dist/resources/extensions/gsd/db-writer.js +40 -22
- package/dist/resources/extensions/gsd/doctor-checks.js +1 -1
- package/dist/resources/extensions/gsd/doctor.js +10 -2
- package/dist/resources/extensions/gsd/git-service.js +8 -3
- package/dist/resources/extensions/gsd/gsd-db.js +17 -2
- package/dist/resources/extensions/gsd/markdown-renderer.js +1 -1
- package/dist/resources/extensions/gsd/preferences-types.js +2 -2
- package/dist/resources/extensions/gsd/preferences.js +17 -5
- package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -4
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +6 -6
- package/dist/resources/extensions/gsd/prompts/replan-slice.md +3 -14
- package/dist/resources/extensions/gsd/prompts/rethink.md +78 -0
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +7 -37
- package/dist/resources/extensions/gsd/provider-error-pause.js +7 -0
- package/dist/resources/extensions/gsd/repo-identity.js +45 -7
- package/dist/resources/extensions/gsd/rethink.js +115 -0
- package/dist/resources/extensions/gsd/state.js +41 -3
- package/dist/resources/extensions/gsd/tools/plan-slice.js +1 -0
- package/dist/resources/extensions/gsd/tools/plan-task.js +1 -0
- package/dist/resources/extensions/gsd/tools/replan-slice.js +2 -0
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +88 -0
- package/dist/resources/extensions/gsd/workflow-logger.js +138 -0
- package/dist/resources/extensions/gsd/worktree-manager.js +34 -3
- package/dist/resources/extensions/gsd/worktree-resolver.js +43 -0
- package/dist/resources/extensions/mcp-client/index.js +14 -0
- package/dist/resources/extensions/voice/index.js +11 -16
- package/dist/resources/extensions/voice/linux-ready.js +67 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +15 -15
- package/dist/web/standalone/.next/build-manifest.json +4 -4
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
- package/dist/web/standalone/.next/required-server-files.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +5 -5
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
- 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 +4 -4
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +5 -5
- package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +6 -6
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +6 -6
- 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 +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +15 -15
- package/dist/web/standalone/.next/server/chunks/229.js +1 -1
- package/dist/web/standalone/.next/server/chunks/471.js +3 -3
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +2 -2
- package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
- package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +2 -2
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/4024.11ca5c01938e5948.js +9 -0
- package/dist/web/standalone/.next/static/chunks/{3721.bf31263de6d5fa46.js → 485.243af25f0cdf50d6.js} +2 -2
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-6654a8cca61a3d1c.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
- package/dist/web/standalone/.next/static/chunks/webpack-0a4cd455ec4197d2.js +1 -0
- package/dist/web/standalone/.next/static/css/dd4ae3f58ac9b600.css +1 -0
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
- package/dist/web/standalone/server.js +1 -1
- package/package.json +1 -1
- package/packages/native/dist/stream-process/index.js +2 -2
- package/packages/native/src/__tests__/stream-process.test.mjs +34 -0
- package/packages/native/src/stream-process/index.ts +2 -2
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +3 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js +15 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js +6 -8
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +2 -0
- package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +24 -26
- package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +2 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/fs-utils.test.js +29 -48
- package/packages/pi-coding-agent/dist/core/fs-utils.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.d.ts +4 -0
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.js +10 -5
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.test.js +185 -0
- package/packages/pi-coding-agent/dist/core/lifecycle-hooks.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/local-model-check.d.ts +15 -0
- package/packages/pi-coding-agent/dist/core/local-model-check.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/local-model-check.js +41 -0
- package/packages/pi-coding-agent/dist/core/local-model-check.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +239 -10
- package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts +13 -1
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js +40 -3
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/package-commands.test.js +206 -195
- package/packages/pi-coding-agent/dist/core/package-commands.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js +34 -44
- package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.test.js +30 -34
- package/packages/pi-coding-agent/dist/core/session-manager.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +6 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js +10 -12
- package/packages/pi-coding-agent/dist/core/tools/edit-diff.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/main.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/main.js +17 -0
- package/packages/pi-coding-agent/dist/main.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.js +32 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/timestamp.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts +3 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +8 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +12 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.d.ts +15 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.js +40 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/timestamp.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +4 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts +5 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js +13 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +17 -8
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +7 -3
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js +43 -47
- package/packages/pi-coding-agent/dist/resources/extensions/memory/storage.test.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/auth-storage.test.ts +7 -7
- package/packages/pi-coding-agent/src/core/auth-storage.ts +15 -1
- package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +2 -0
- package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +26 -26
- package/packages/pi-coding-agent/src/core/extensions/types.ts +2 -1
- package/packages/pi-coding-agent/src/core/fs-utils.test.ts +31 -43
- package/packages/pi-coding-agent/src/core/lifecycle-hooks.test.ts +227 -0
- package/packages/pi-coding-agent/src/core/lifecycle-hooks.ts +11 -5
- package/packages/pi-coding-agent/src/core/local-model-check.ts +45 -0
- package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +297 -11
- package/packages/pi-coding-agent/src/core/model-registry.ts +51 -4
- package/packages/pi-coding-agent/src/core/package-commands.test.ts +227 -205
- package/packages/pi-coding-agent/src/core/resolve-config-value.test.ts +40 -45
- package/packages/pi-coding-agent/src/core/session-manager.test.ts +33 -33
- package/packages/pi-coding-agent/src/core/settings-manager.ts +9 -0
- package/packages/pi-coding-agent/src/core/tools/edit-diff.test.ts +17 -17
- package/packages/pi-coding-agent/src/main.ts +19 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/timestamp.test.ts +38 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +10 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/timestamp.ts +48 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +3 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts +18 -3
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +16 -7
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +8 -1
- package/packages/pi-coding-agent/src/resources/extensions/memory/storage.test.ts +74 -74
- package/pkg/package.json +1 -1
- package/src/resources/extensions/gsd/activity-log.ts +1 -0
- package/src/resources/extensions/gsd/auto/infra-errors.ts +3 -0
- package/src/resources/extensions/gsd/auto/phases.ts +61 -59
- package/src/resources/extensions/gsd/auto/run-unit.ts +6 -3
- package/src/resources/extensions/gsd/auto-prompts.ts +24 -1
- package/src/resources/extensions/gsd/auto-start.ts +39 -2
- package/src/resources/extensions/gsd/auto-timers.ts +64 -3
- package/src/resources/extensions/gsd/auto-worktree-sync.ts +5 -0
- package/src/resources/extensions/gsd/auto-worktree.ts +17 -11
- package/src/resources/extensions/gsd/auto.ts +40 -6
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +160 -11
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +48 -11
- package/src/resources/extensions/gsd/commands/catalog.ts +7 -1
- package/src/resources/extensions/gsd/commands/handlers/core.ts +2 -0
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +10 -0
- package/src/resources/extensions/gsd/commands/handlers/workflow.ts +8 -0
- package/src/resources/extensions/gsd/commands-mcp-status.ts +247 -0
- package/src/resources/extensions/gsd/db-writer.ts +41 -27
- package/src/resources/extensions/gsd/doctor-checks.ts +1 -1
- package/src/resources/extensions/gsd/doctor.ts +9 -3
- package/src/resources/extensions/gsd/git-service.ts +6 -2
- package/src/resources/extensions/gsd/gsd-db.ts +21 -2
- package/src/resources/extensions/gsd/journal.ts +6 -1
- package/src/resources/extensions/gsd/markdown-renderer.ts +1 -1
- package/src/resources/extensions/gsd/preferences-types.ts +2 -2
- package/src/resources/extensions/gsd/preferences.ts +18 -4
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -4
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +6 -6
- package/src/resources/extensions/gsd/prompts/replan-slice.md +3 -14
- package/src/resources/extensions/gsd/prompts/rethink.md +78 -0
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +7 -37
- package/src/resources/extensions/gsd/provider-error-pause.ts +9 -0
- package/src/resources/extensions/gsd/repo-identity.ts +46 -7
- package/src/resources/extensions/gsd/rethink.ts +154 -0
- package/src/resources/extensions/gsd/state.ts +41 -1
- package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +99 -99
- package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +14 -16
- package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +43 -57
- package/src/resources/extensions/gsd/tests/auto-pr-bugs.test.ts +88 -0
- package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +11 -13
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +465 -523
- package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +73 -75
- package/src/resources/extensions/gsd/tests/auto-start-needs-discussion.test.ts +34 -56
- package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +533 -656
- package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +165 -143
- package/src/resources/extensions/gsd/tests/cache-staleness-regression.test.ts +29 -52
- package/src/resources/extensions/gsd/tests/captures.test.ts +148 -176
- package/src/resources/extensions/gsd/tests/claude-import-tui.test.ts +32 -33
- package/src/resources/extensions/gsd/tests/collect-from-manifest.test.ts +141 -143
- package/src/resources/extensions/gsd/tests/commands-inspect-open-db.test.ts +25 -25
- package/src/resources/extensions/gsd/tests/commands-logs.test.ts +81 -81
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +38 -59
- package/src/resources/extensions/gsd/tests/complete-slice.test.ts +228 -263
- package/src/resources/extensions/gsd/tests/complete-task.test.ts +250 -302
- package/src/resources/extensions/gsd/tests/completed-units-metrics-sync.test.ts +114 -0
- package/src/resources/extensions/gsd/tests/context-store.test.ts +354 -367
- package/src/resources/extensions/gsd/tests/continue-here.test.ts +68 -72
- package/src/resources/extensions/gsd/tests/cost-projection.test.ts +92 -106
- package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +27 -35
- package/src/resources/extensions/gsd/tests/dashboard-budget.test.ts +220 -237
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +465 -416
- package/src/resources/extensions/gsd/tests/definition-loader.test.ts +76 -92
- package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +68 -83
- package/src/resources/extensions/gsd/tests/derive-state-db-disk-reconcile.test.ts +121 -0
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +210 -181
- package/src/resources/extensions/gsd/tests/derive-state-deps.test.ts +78 -101
- package/src/resources/extensions/gsd/tests/derive-state.test.ts +192 -227
- package/src/resources/extensions/gsd/tests/detection.test.ts +232 -278
- package/src/resources/extensions/gsd/tests/dev-engine-wrapper.test.ts +30 -34
- package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +164 -180
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +43 -49
- package/src/resources/extensions/gsd/tests/dispatch-uat-last-completed.test.ts +28 -32
- package/src/resources/extensions/gsd/tests/doctor-completion-deferral.test.ts +27 -29
- package/src/resources/extensions/gsd/tests/doctor-delimiter-fix.test.ts +34 -38
- package/src/resources/extensions/gsd/tests/doctor-enhancements.test.ts +54 -75
- package/src/resources/extensions/gsd/tests/doctor-environment-worktree.test.ts +21 -32
- package/src/resources/extensions/gsd/tests/doctor-environment.test.ts +72 -97
- package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +38 -44
- package/src/resources/extensions/gsd/tests/doctor-git.test.ts +104 -145
- package/src/resources/extensions/gsd/tests/doctor-proactive.test.ts +84 -106
- package/src/resources/extensions/gsd/tests/doctor-roadmap-summary-atomicity.test.ts +54 -60
- package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +72 -93
- package/src/resources/extensions/gsd/tests/doctor.test.ts +104 -134
- package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +123 -131
- package/src/resources/extensions/gsd/tests/est-annotation-timeout.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/exit-command.test.ts +20 -24
- package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +48 -57
- package/src/resources/extensions/gsd/tests/files-loadfile-eisdir.test.ts +5 -7
- package/src/resources/extensions/gsd/tests/flag-file-db.test.ts +30 -42
- package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +198 -206
- package/src/resources/extensions/gsd/tests/git-locale.test.ts +13 -27
- package/src/resources/extensions/gsd/tests/git-service.test.ts +285 -388
- package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +31 -39
- package/src/resources/extensions/gsd/tests/graph-operations.test.ts +63 -69
- package/src/resources/extensions/gsd/tests/gsd-db.test.ts +255 -264
- package/src/resources/extensions/gsd/tests/gsd-inspect.test.ts +108 -119
- package/src/resources/extensions/gsd/tests/gsd-recover.test.ts +81 -103
- package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +229 -262
- package/src/resources/extensions/gsd/tests/headless-answers.test.ts +13 -13
- package/src/resources/extensions/gsd/tests/health-widget.test.ts +29 -37
- package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +81 -102
- package/src/resources/extensions/gsd/tests/infra-error.test.ts +20 -2
- package/src/resources/extensions/gsd/tests/inherited-repo-home-dir.test.ts +121 -0
- package/src/resources/extensions/gsd/tests/init-wizard.test.ts +16 -18
- package/src/resources/extensions/gsd/tests/integration-edge.test.ts +41 -46
- package/src/resources/extensions/gsd/tests/integration-lifecycle.test.ts +42 -53
- package/src/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +75 -91
- package/src/resources/extensions/gsd/tests/integration-proof.test.ts +18 -18
- package/src/resources/extensions/gsd/tests/knowledge.test.ts +89 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +150 -194
- package/src/resources/extensions/gsd/tests/mcp-status.test.ts +103 -0
- package/src/resources/extensions/gsd/tests/md-importer.test.ts +101 -125
- package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +45 -54
- package/src/resources/extensions/gsd/tests/memory-store.test.ts +80 -93
- package/src/resources/extensions/gsd/tests/merge-conflict-stops-loop.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/migrate-command.test.ts +57 -66
- package/src/resources/extensions/gsd/tests/migrate-hierarchy.test.ts +83 -93
- package/src/resources/extensions/gsd/tests/migrate-parser.test.ts +161 -170
- package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +125 -141
- package/src/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +107 -131
- package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +87 -96
- package/src/resources/extensions/gsd/tests/migrate-writer.test.ts +125 -164
- package/src/resources/extensions/gsd/tests/must-have-parser.test.ts +81 -94
- package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +75 -37
- package/src/resources/extensions/gsd/tests/overrides.test.ts +99 -106
- package/src/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +40 -47
- package/src/resources/extensions/gsd/tests/parallel-worker-monitoring.test.ts +25 -28
- package/src/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +66 -83
- package/src/resources/extensions/gsd/tests/park-edge-cases.test.ts +54 -77
- package/src/resources/extensions/gsd/tests/park-milestone.test.ts +68 -115
- package/src/resources/extensions/gsd/tests/parsers.test.ts +546 -611
- package/src/resources/extensions/gsd/tests/paths.test.ts +72 -87
- package/src/resources/extensions/gsd/tests/post-unit-hooks.test.ts +77 -117
- package/src/resources/extensions/gsd/tests/preferences.test.ts +34 -9
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +11 -7
- package/src/resources/extensions/gsd/tests/prompt-db.test.ts +56 -56
- package/src/resources/extensions/gsd/tests/queue-draft-detection.test.ts +93 -119
- package/src/resources/extensions/gsd/tests/queue-order.test.ts +70 -82
- package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +42 -55
- package/src/resources/extensions/gsd/tests/quick-auto-guard.test.ts +100 -0
- package/src/resources/extensions/gsd/tests/quick-branch-lifecycle.test.ts +45 -73
- package/src/resources/extensions/gsd/tests/reassess-prompt.test.ts +28 -38
- package/src/resources/extensions/gsd/tests/recovery-attempts-reset.test.ts +176 -0
- package/src/resources/extensions/gsd/tests/replan-slice.test.ts +73 -80
- package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +71 -74
- package/src/resources/extensions/gsd/tests/requirements.test.ts +70 -75
- package/src/resources/extensions/gsd/tests/retry-state-reset.test.ts +44 -66
- package/src/resources/extensions/gsd/tests/roadmap-parse-regression.test.ts +114 -181
- package/src/resources/extensions/gsd/tests/rule-registry.test.ts +63 -65
- package/src/resources/extensions/gsd/tests/run-uat.test.ts +66 -128
- package/src/resources/extensions/gsd/tests/session-lock-multipath.test.ts +18 -25
- package/src/resources/extensions/gsd/tests/session-lock-regression.test.ts +37 -44
- package/src/resources/extensions/gsd/tests/shared-wal.test.ts +19 -26
- package/src/resources/extensions/gsd/tests/sqlite-unavailable-gate.test.ts +63 -0
- package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +6 -8
- package/src/resources/extensions/gsd/tests/stop-auto-merge-back.test.ts +67 -0
- package/src/resources/extensions/gsd/tests/survivor-branch-complete.test.ts +108 -0
- package/src/resources/extensions/gsd/tests/symlink-numbered-variants.test.ts +22 -28
- package/src/resources/extensions/gsd/tests/terminated-transient.test.ts +49 -0
- package/src/resources/extensions/gsd/tests/token-savings.test.ts +54 -56
- package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +23 -25
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +10 -11
- package/src/resources/extensions/gsd/tests/unique-milestone-ids.test.ts +66 -82
- package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +46 -47
- package/src/resources/extensions/gsd/tests/visualizer-critical-path.test.ts +20 -22
- package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +84 -86
- package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +41 -43
- package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +94 -96
- package/src/resources/extensions/gsd/tests/windows-path-normalization.test.ts +11 -13
- package/src/resources/extensions/gsd/tests/worker-registry.test.ts +27 -29
- package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +275 -0
- package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +50 -52
- package/src/resources/extensions/gsd/tests/worktree-bugfix.test.ts +10 -13
- package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +14 -18
- package/src/resources/extensions/gsd/tests/worktree-db.test.ts +38 -39
- package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +17 -21
- package/src/resources/extensions/gsd/tests/worktree-health.test.ts +25 -30
- package/src/resources/extensions/gsd/tests/worktree-integration.test.ts +30 -37
- package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +220 -0
- package/src/resources/extensions/gsd/tests/worktree-submodule-safety.test.ts +65 -0
- package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +15 -22
- package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +59 -66
- package/src/resources/extensions/gsd/tests/worktree.test.ts +44 -50
- package/src/resources/extensions/gsd/tools/plan-slice.ts +2 -0
- package/src/resources/extensions/gsd/tools/plan-task.ts +2 -0
- package/src/resources/extensions/gsd/tools/replan-slice.ts +3 -0
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +127 -0
- package/src/resources/extensions/gsd/workflow-logger.ts +193 -0
- package/src/resources/extensions/gsd/worktree-manager.ts +41 -5
- package/src/resources/extensions/gsd/worktree-resolver.ts +44 -0
- package/src/resources/extensions/mcp-client/index.ts +20 -0
- package/src/resources/extensions/voice/index.ts +11 -21
- package/src/resources/extensions/voice/linux-ready.ts +87 -0
- package/src/resources/extensions/voice/tests/linux-ready.test.ts +124 -0
- package/dist/web/standalone/.next/static/chunks/4024.0de81b543b28b9fe.js +0 -9
- package/dist/web/standalone/.next/static/chunks/app/page-7e9530a7122506c5.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
- package/dist/web/standalone/.next/static/chunks/webpack-9014b5adb127a98a.js +0 -1
- package/dist/web/standalone/.next/static/css/8a727f372cf53002.css +0 -1
- /package/dist/web/standalone/.next/static/{mgkxN0mGP6gSUmGPEzbk_ → dFMji9G1LZ-Tv36el9pRT}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{mgkxN0mGP6gSUmGPEzbk_ → dFMji9G1LZ-Tv36el9pRT}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// GSD Extension — Workflow Logger
|
|
2
|
+
// Centralized warning/error accumulator for the workflow engine pipeline.
|
|
3
|
+
// Captures structured entries that the auto-loop can drain after each unit
|
|
4
|
+
// to surface root causes for stuck loops, silent degradation, and blocked writes.
|
|
5
|
+
//
|
|
6
|
+
// Stderr policy: every logWarning/logError call writes immediately to stderr
|
|
7
|
+
// for terminal visibility. This is intentional — unlike debug-logger (which is
|
|
8
|
+
// opt-in and zero-overhead when disabled), workflow-logger covers operational
|
|
9
|
+
// warnings/errors that should always be visible. There is no disable flag.
|
|
10
|
+
//
|
|
11
|
+
// Singleton safety: _buffer is module-level and shared across all calls within
|
|
12
|
+
// a process. The auto-loop must call _resetLogs() (or drainAndSummarize()) at
|
|
13
|
+
// the start of each unit to prevent log bleed between units running in the same
|
|
14
|
+
// Node process.
|
|
15
|
+
// ─── Buffer ─────────────────────────────────────────────────────────────
|
|
16
|
+
const MAX_BUFFER = 100;
|
|
17
|
+
let _buffer = [];
|
|
18
|
+
// ─── Public API ─────────────────────────────────────────────────────────
|
|
19
|
+
/**
|
|
20
|
+
* Record a warning. Also writes to stderr for terminal visibility.
|
|
21
|
+
*/
|
|
22
|
+
export function logWarning(component, message, context) {
|
|
23
|
+
_push("warn", component, message, context);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Record an error. Also writes to stderr for terminal visibility.
|
|
27
|
+
*/
|
|
28
|
+
export function logError(component, message, context) {
|
|
29
|
+
_push("error", component, message, context);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Drain all accumulated entries and clear the buffer.
|
|
33
|
+
* Returns entries oldest-first.
|
|
34
|
+
*
|
|
35
|
+
* WARNING: Call summarizeLogs() or drainAndSummarize() BEFORE calling this
|
|
36
|
+
* if you need a summary — drainLogs() clears the buffer immediately.
|
|
37
|
+
*/
|
|
38
|
+
export function drainLogs() {
|
|
39
|
+
const entries = _buffer;
|
|
40
|
+
_buffer = [];
|
|
41
|
+
return entries;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Atomically summarize then drain — the safe way to consume logs.
|
|
45
|
+
* Use this in the auto-loop instead of calling summarizeLogs() + drainLogs()
|
|
46
|
+
* separately to avoid the ordering footgun.
|
|
47
|
+
*/
|
|
48
|
+
export function drainAndSummarize() {
|
|
49
|
+
const summary = summarizeLogs();
|
|
50
|
+
const logs = drainLogs();
|
|
51
|
+
return { logs, summary };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Peek at current entries without clearing.
|
|
55
|
+
*/
|
|
56
|
+
export function peekLogs() {
|
|
57
|
+
return _buffer;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Returns true if the buffer contains any error-severity entries.
|
|
61
|
+
*/
|
|
62
|
+
export function hasErrors() {
|
|
63
|
+
return _buffer.some((e) => e.severity === "error");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Returns true if the buffer contains any warn-severity entries.
|
|
67
|
+
* Use hasAnyIssues() if you want to check for either severity.
|
|
68
|
+
*/
|
|
69
|
+
export function hasWarnings() {
|
|
70
|
+
return _buffer.some((e) => e.severity === "warn");
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns true if the buffer contains any entries (warn or error).
|
|
74
|
+
*/
|
|
75
|
+
export function hasAnyIssues() {
|
|
76
|
+
return _buffer.length > 0;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get a one-line summary of accumulated issues for stuck detection messages.
|
|
80
|
+
* Returns null if no entries.
|
|
81
|
+
*
|
|
82
|
+
* Must be called BEFORE drainLogs() — use drainAndSummarize() for safe ordering.
|
|
83
|
+
*/
|
|
84
|
+
export function summarizeLogs() {
|
|
85
|
+
if (_buffer.length === 0)
|
|
86
|
+
return null;
|
|
87
|
+
const errors = _buffer.filter((e) => e.severity === "error");
|
|
88
|
+
const warns = _buffer.filter((e) => e.severity === "warn");
|
|
89
|
+
const parts = [];
|
|
90
|
+
if (errors.length > 0) {
|
|
91
|
+
parts.push(`${errors.length} error(s): ${errors.map((e) => e.message).join("; ")}`);
|
|
92
|
+
}
|
|
93
|
+
if (warns.length > 0) {
|
|
94
|
+
parts.push(`${warns.length} warning(s): ${warns.map((e) => e.message).join("; ")}`);
|
|
95
|
+
}
|
|
96
|
+
return parts.join(" | ");
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Format entries for display (used by auto-loop post-unit notification).
|
|
100
|
+
* Note: context fields are not included in the formatted output.
|
|
101
|
+
*/
|
|
102
|
+
export function formatForNotification(entries) {
|
|
103
|
+
if (entries.length === 0)
|
|
104
|
+
return "";
|
|
105
|
+
if (entries.length === 1) {
|
|
106
|
+
const e = entries[0];
|
|
107
|
+
return `[${e.component}] ${e.message}`;
|
|
108
|
+
}
|
|
109
|
+
return entries
|
|
110
|
+
.map((e) => `[${e.component}] ${e.message}`)
|
|
111
|
+
.join("\n");
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Reset buffer. Call at the start of each auto-loop unit to prevent log bleed
|
|
115
|
+
* between units running in the same process. Also used in tests via _resetLogs().
|
|
116
|
+
*/
|
|
117
|
+
export function _resetLogs() {
|
|
118
|
+
_buffer = [];
|
|
119
|
+
}
|
|
120
|
+
// ─── Internal ───────────────────────────────────────────────────────────
|
|
121
|
+
function _push(severity, component, message, context) {
|
|
122
|
+
const entry = {
|
|
123
|
+
ts: new Date().toISOString(),
|
|
124
|
+
severity,
|
|
125
|
+
component,
|
|
126
|
+
message,
|
|
127
|
+
...(context ? { context } : {}),
|
|
128
|
+
};
|
|
129
|
+
// Always forward to stderr so terminal watchers see it (see module header for policy)
|
|
130
|
+
const prefix = severity === "error" ? "ERROR" : "WARN";
|
|
131
|
+
const ctxStr = context ? ` ${JSON.stringify(context)}` : "";
|
|
132
|
+
process.stderr.write(`[gsd:${component}] ${prefix}: ${message}${ctxStr}\n`);
|
|
133
|
+
// Buffer for auto-loop to drain
|
|
134
|
+
_buffer.push(entry);
|
|
135
|
+
if (_buffer.length > MAX_BUFFER) {
|
|
136
|
+
_buffer.shift();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
* 4. remove() — git worktree remove + branch cleanup
|
|
16
16
|
*/
|
|
17
17
|
import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync } from "node:fs";
|
|
18
|
+
import { execFileSync } from "node:child_process";
|
|
18
19
|
import { join, resolve, sep } from "node:path";
|
|
19
20
|
import { GSDError, GSD_PARSE_ERROR, GSD_STALE_STATE, GSD_LOCK_HELD, GSD_GIT_ERROR, GSD_MERGE_CONFLICT } from "./errors.js";
|
|
21
|
+
import { logWarning } from "./workflow-logger.js";
|
|
20
22
|
import { nativeBranchDelete, nativeBranchExists, nativeBranchForceReset, nativeCommit, nativeDetectMainBranch, nativeDiffContent, nativeDiffNameStatus, nativeDiffNumstat, nativeGetCurrentBranch, nativeLogOneline, nativeMergeSquash, nativeWorktreeAdd, nativeWorktreeList, nativeWorktreePrune, nativeWorktreeRemove, } from "./native-git-bridge.js";
|
|
21
23
|
// ─── Path Helpers ──────────────────────────────────────────────────────────
|
|
22
24
|
function normalizePathForComparison(path) {
|
|
@@ -84,7 +86,7 @@ export function createWorktree(basePath, name, opts = {}) {
|
|
|
84
86
|
// worktree can be created in its place.
|
|
85
87
|
const gitFilePath = join(wtPath, ".git");
|
|
86
88
|
if (!existsSync(gitFilePath)) {
|
|
87
|
-
|
|
89
|
+
logWarning("reconcile", `Removing stale worktree directory (no .git file): ${wtPath}`, { worktree: name });
|
|
88
90
|
rmSync(wtPath, { recursive: true, force: true });
|
|
89
91
|
}
|
|
90
92
|
else {
|
|
@@ -240,9 +242,38 @@ export function removeWorktree(basePath, name, opts = {}) {
|
|
|
240
242
|
}
|
|
241
243
|
return;
|
|
242
244
|
}
|
|
243
|
-
//
|
|
245
|
+
// Submodule safety (#2337): detect submodules with uncommitted changes
|
|
246
|
+
// before force-removing the worktree. Force removal destroys all uncommitted
|
|
247
|
+
// state, which is especially destructive for submodule directories.
|
|
248
|
+
let hasSubmoduleChanges = false;
|
|
249
|
+
const gitmodulesPath = join(resolvedWtPath, ".gitmodules");
|
|
250
|
+
if (existsSync(gitmodulesPath)) {
|
|
251
|
+
try {
|
|
252
|
+
const submoduleStatus = execFileSync("git", ["submodule", "status"], { cwd: resolvedWtPath, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" }).trim();
|
|
253
|
+
// Lines starting with '+' indicate uncommitted submodule changes
|
|
254
|
+
hasSubmoduleChanges = submoduleStatus.split("\n").some((line) => line.startsWith("+") || line.startsWith("-"));
|
|
255
|
+
if (hasSubmoduleChanges) {
|
|
256
|
+
// Stash submodule changes so they are not lost during force removal.
|
|
257
|
+
// The stash is created in the worktree before it's torn down.
|
|
258
|
+
try {
|
|
259
|
+
execFileSync("git", ["stash", "push", "-m", "gsd: auto-stash submodule changes before worktree teardown"], { cwd: resolvedWtPath, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" });
|
|
260
|
+
logWarning("reconcile", `Stashed uncommitted submodule changes before worktree teardown`, { worktree: name, path: resolvedWtPath });
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
// Stash failed — warn the user that submodule changes may be lost
|
|
264
|
+
logWarning("reconcile", `Submodule changes detected — stash failed, changes may be lost during force removal`, { worktree: name, path: resolvedWtPath });
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// submodule status failed — proceed with normal removal
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Remove worktree: try non-force first when submodules have changes,
|
|
273
|
+
// falling back to force only after submodule state has been preserved.
|
|
274
|
+
const useForce = hasSubmoduleChanges ? false : force;
|
|
244
275
|
try {
|
|
245
|
-
nativeWorktreeRemove(basePath, resolvedWtPath,
|
|
276
|
+
nativeWorktreeRemove(basePath, resolvedWtPath, useForce);
|
|
246
277
|
}
|
|
247
278
|
catch { /* may fail */ }
|
|
248
279
|
// If the directory is still there (e.g. locked), try harder with force
|
|
@@ -13,8 +13,11 @@
|
|
|
13
13
|
* `process.chdir()` internally — this class MUST NOT double-chdir.
|
|
14
14
|
*/
|
|
15
15
|
import { existsSync, unlinkSync } from "node:fs";
|
|
16
|
+
import { randomUUID } from "node:crypto";
|
|
16
17
|
import { join } from "node:path";
|
|
17
18
|
import { debugLog } from "./debug-logger.js";
|
|
19
|
+
import { MergeConflictError } from "./git-service.js";
|
|
20
|
+
import { emitJournalEvent } from "./journal.js";
|
|
18
21
|
// ─── WorktreeResolver ──────────────────────────────────────────────────────
|
|
19
22
|
export class WorktreeResolver {
|
|
20
23
|
s;
|
|
@@ -76,6 +79,13 @@ export class WorktreeResolver {
|
|
|
76
79
|
skipped: true,
|
|
77
80
|
reason: "isolation-disabled",
|
|
78
81
|
});
|
|
82
|
+
emitJournalEvent(this.s.originalBasePath || this.s.basePath, {
|
|
83
|
+
ts: new Date().toISOString(),
|
|
84
|
+
flowId: randomUUID(),
|
|
85
|
+
seq: 0,
|
|
86
|
+
eventType: "worktree-skip",
|
|
87
|
+
data: { milestoneId, reason: "isolation-disabled" },
|
|
88
|
+
});
|
|
79
89
|
return;
|
|
80
90
|
}
|
|
81
91
|
const basePath = this.s.originalBasePath || this.s.basePath;
|
|
@@ -101,6 +111,13 @@ export class WorktreeResolver {
|
|
|
101
111
|
result: "success",
|
|
102
112
|
wtPath,
|
|
103
113
|
});
|
|
114
|
+
emitJournalEvent(this.s.originalBasePath || this.s.basePath, {
|
|
115
|
+
ts: new Date().toISOString(),
|
|
116
|
+
flowId: randomUUID(),
|
|
117
|
+
seq: 0,
|
|
118
|
+
eventType: "worktree-enter",
|
|
119
|
+
data: { milestoneId, wtPath, created: !existingPath },
|
|
120
|
+
});
|
|
104
121
|
ctx.notify(`Entered worktree for ${milestoneId} at ${wtPath}`, "info");
|
|
105
122
|
}
|
|
106
123
|
catch (err) {
|
|
@@ -111,6 +128,13 @@ export class WorktreeResolver {
|
|
|
111
128
|
result: "error",
|
|
112
129
|
error: msg,
|
|
113
130
|
});
|
|
131
|
+
emitJournalEvent(this.s.originalBasePath || this.s.basePath, {
|
|
132
|
+
ts: new Date().toISOString(),
|
|
133
|
+
flowId: randomUUID(),
|
|
134
|
+
seq: 0,
|
|
135
|
+
eventType: "worktree-create-failed",
|
|
136
|
+
data: { milestoneId, error: msg, fallback: "project-root" },
|
|
137
|
+
});
|
|
114
138
|
ctx.notify(`Auto-worktree creation for ${milestoneId} failed: ${msg}. Continuing in project root.`, "warning");
|
|
115
139
|
// Do NOT update s.basePath — stay in project root
|
|
116
140
|
}
|
|
@@ -193,6 +217,13 @@ export class WorktreeResolver {
|
|
|
193
217
|
mode,
|
|
194
218
|
basePath: this.s.basePath,
|
|
195
219
|
});
|
|
220
|
+
emitJournalEvent(this.s.originalBasePath || this.s.basePath, {
|
|
221
|
+
ts: new Date().toISOString(),
|
|
222
|
+
flowId: randomUUID(),
|
|
223
|
+
seq: 0,
|
|
224
|
+
eventType: "worktree-merge-start",
|
|
225
|
+
data: { milestoneId, mode },
|
|
226
|
+
});
|
|
196
227
|
if (mode === "none") {
|
|
197
228
|
debugLog("WorktreeResolver", {
|
|
198
229
|
action: "mergeAndExit",
|
|
@@ -284,6 +315,13 @@ export class WorktreeResolver {
|
|
|
284
315
|
error: msg,
|
|
285
316
|
fallback: "chdir-to-project-root",
|
|
286
317
|
});
|
|
318
|
+
emitJournalEvent(this.s.originalBasePath || this.s.basePath, {
|
|
319
|
+
ts: new Date().toISOString(),
|
|
320
|
+
flowId: randomUUID(),
|
|
321
|
+
seq: 0,
|
|
322
|
+
eventType: "worktree-merge-failed",
|
|
323
|
+
data: { milestoneId, error: msg },
|
|
324
|
+
});
|
|
287
325
|
// Surface a clear, actionable error. The worktree and milestone branch are
|
|
288
326
|
// intentionally preserved — nothing has been deleted. The user can retry
|
|
289
327
|
// /gsd dispatch complete-milestone or merge manually once the underlying issue is fixed
|
|
@@ -308,6 +346,11 @@ export class WorktreeResolver {
|
|
|
308
346
|
/* best-effort */
|
|
309
347
|
}
|
|
310
348
|
}
|
|
349
|
+
// Re-throw MergeConflictError so the auto loop can detect real code
|
|
350
|
+
// conflicts and stop instead of retrying forever (#2330).
|
|
351
|
+
if (err instanceof MergeConflictError) {
|
|
352
|
+
throw err;
|
|
353
|
+
}
|
|
311
354
|
}
|
|
312
355
|
// Always restore basePath and rebuild — whether merge succeeded or failed
|
|
313
356
|
this.restoreToProjectRoot();
|
|
@@ -162,6 +162,20 @@ function formatToolList(serverName, tools) {
|
|
|
162
162
|
lines.push(`Call with: mcp_call(server="${serverName}", tool="<tool_name>", args={...})`);
|
|
163
163
|
return lines.join("\n");
|
|
164
164
|
}
|
|
165
|
+
// ─── Status helper (consumed by /gsd mcp) ─────────────────────────────────────
|
|
166
|
+
/**
|
|
167
|
+
* Return the live connection status for a named MCP server.
|
|
168
|
+
* Safe to call even when the server has never been connected.
|
|
169
|
+
*/
|
|
170
|
+
export function getConnectionStatus(name) {
|
|
171
|
+
const conn = connections.get(name);
|
|
172
|
+
const cached = toolCache.get(name);
|
|
173
|
+
return {
|
|
174
|
+
connected: !!conn,
|
|
175
|
+
tools: cached ? cached.map((t) => t.name) : [],
|
|
176
|
+
error: undefined,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
165
179
|
// ─── Extension ────────────────────────────────────────────────────────────────
|
|
166
180
|
export default function (pi) {
|
|
167
181
|
// ── mcp_servers ──────────────────────────────────────────────────────────
|
|
@@ -2,22 +2,15 @@ import { shortcutDesc } from "../shared/mod.js";
|
|
|
2
2
|
import { isKeyRelease, Key, matchesKey, truncateToWidth, visibleWidth } from "@gsd/pi-tui";
|
|
3
3
|
import { spawn, execFileSync } from "node:child_process";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
|
-
import * as os from "node:os";
|
|
6
5
|
import * as path from "node:path";
|
|
7
6
|
import * as readline from "node:readline";
|
|
7
|
+
import { linuxPython, diagnoseSounddeviceError, ensureVoiceVenv } from "./linux-ready.js";
|
|
8
8
|
const __extensionDir = import.meta.dirname;
|
|
9
9
|
const SWIFT_SRC = path.join(__extensionDir, "speech-recognizer.swift");
|
|
10
10
|
const RECOGNIZER_BIN = path.join(__extensionDir, "speech-recognizer");
|
|
11
11
|
const PYTHON_SCRIPT = path.join(__extensionDir, "speech-recognizer.py");
|
|
12
12
|
const IS_DARWIN = process.platform === "darwin";
|
|
13
13
|
const IS_LINUX = process.platform === "linux";
|
|
14
|
-
const VOICE_VENV_PYTHON = path.join(process.env.HOME || process.env.USERPROFILE || os.homedir(), ".gsd", "voice-venv", "bin", "python3");
|
|
15
|
-
/** Return the python3 binary path — prefer venv if it exists, else system. */
|
|
16
|
-
function linuxPython() {
|
|
17
|
-
if (fs.existsSync(VOICE_VENV_PYTHON))
|
|
18
|
-
return VOICE_VENV_PYTHON;
|
|
19
|
-
return "python3";
|
|
20
|
-
}
|
|
21
14
|
function ensureBinary() {
|
|
22
15
|
if (fs.existsSync(RECOGNIZER_BIN))
|
|
23
16
|
return true;
|
|
@@ -58,19 +51,21 @@ function ensureLinuxReady(ctx) {
|
|
|
58
51
|
}
|
|
59
52
|
catch (err) {
|
|
60
53
|
const stderr = err?.stderr?.toString() ?? "";
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
54
|
+
const diagnosis = diagnoseSounddeviceError(stderr);
|
|
55
|
+
if (diagnosis === "missing-module") {
|
|
56
|
+
// Module not installed — auto-create venv (handles PEP 668 systems
|
|
57
|
+
// where system pip is blocked). See #2403.
|
|
58
|
+
if (!ensureVoiceVenv({ notify: (msg, level) => ctx.ui.notify(msg, level) })) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
68
61
|
linuxReady = true;
|
|
69
62
|
return true;
|
|
70
63
|
}
|
|
64
|
+
else if (diagnosis === "missing-portaudio") {
|
|
65
|
+
ctx.ui.notify("Voice: install libportaudio2 with: sudo apt install libportaudio2", "error");
|
|
66
|
+
}
|
|
71
67
|
else {
|
|
72
68
|
ctx.ui.notify(`Voice: dependency check failed — ${stderr.split("\n")[0] || "unknown error"}`, "error");
|
|
73
|
-
return false;
|
|
74
69
|
}
|
|
75
70
|
return false;
|
|
76
71
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* linux-ready.ts — Linux voice readiness logic (extracted for testability).
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Detecting system vs venv python3
|
|
6
|
+
* - Diagnosing sounddevice import errors (portaudio vs missing module)
|
|
7
|
+
* - Auto-creating venv on PEP 668 systems
|
|
8
|
+
*/
|
|
9
|
+
import { execFileSync } from "node:child_process";
|
|
10
|
+
import * as fs from "node:fs";
|
|
11
|
+
import * as os from "node:os";
|
|
12
|
+
import * as path from "node:path";
|
|
13
|
+
export const VOICE_VENV_DIR = path.join(process.env.HOME || process.env.USERPROFILE || os.homedir(), ".gsd", "voice-venv");
|
|
14
|
+
export const VOICE_VENV_PYTHON = path.join(VOICE_VENV_DIR, "bin", "python3");
|
|
15
|
+
/** Return the python3 binary path — prefer venv if it exists, else system. */
|
|
16
|
+
export function linuxPython() {
|
|
17
|
+
if (fs.existsSync(VOICE_VENV_PYTHON))
|
|
18
|
+
return VOICE_VENV_PYTHON;
|
|
19
|
+
return "python3";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Diagnose a sounddevice import error from its stderr output.
|
|
23
|
+
*
|
|
24
|
+
* Returns:
|
|
25
|
+
* - "missing-module" — sounddevice python package not installed
|
|
26
|
+
* - "missing-portaudio" — libportaudio2 native library not found
|
|
27
|
+
* - "unknown" — unrecognized error
|
|
28
|
+
*
|
|
29
|
+
* IMPORTANT: Check "No module" / "ModuleNotFoundError" BEFORE checking for the
|
|
30
|
+
* word "sounddevice", because `ModuleNotFoundError: No module named 'sounddevice'`
|
|
31
|
+
* contains both strings. The more specific check must come first.
|
|
32
|
+
*/
|
|
33
|
+
export function diagnoseSounddeviceError(stderr) {
|
|
34
|
+
// Check for missing Python module FIRST — the error message
|
|
35
|
+
// "ModuleNotFoundError: No module named 'sounddevice'" contains the word
|
|
36
|
+
// "sounddevice", so the old order (checking "sounddevice" first) was wrong.
|
|
37
|
+
if (stderr.includes("No module") || stderr.includes("ModuleNotFoundError")) {
|
|
38
|
+
return "missing-module";
|
|
39
|
+
}
|
|
40
|
+
// Now check for native portaudio library issues.
|
|
41
|
+
if (stderr.includes("PortAudio") || stderr.includes("portaudio")) {
|
|
42
|
+
return "missing-portaudio";
|
|
43
|
+
}
|
|
44
|
+
return "unknown";
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Auto-create the voice venv if it doesn't exist.
|
|
48
|
+
* Uses execFileSync internally (no shell, safe from injection).
|
|
49
|
+
*
|
|
50
|
+
* Returns true on success, false on failure.
|
|
51
|
+
*/
|
|
52
|
+
export function ensureVoiceVenv(cb) {
|
|
53
|
+
const exists = cb.exists ?? fs.existsSync;
|
|
54
|
+
const execFile = cb.execFile ?? execFileSync;
|
|
55
|
+
if (exists(VOICE_VENV_PYTHON))
|
|
56
|
+
return true;
|
|
57
|
+
cb.notify("Voice: setting up Python environment — one-time setup", "info");
|
|
58
|
+
try {
|
|
59
|
+
execFile("python3", ["-m", "venv", VOICE_VENV_DIR], { timeout: 30000 });
|
|
60
|
+
execFile(path.join(VOICE_VENV_DIR, "bin", "pip"), ["install", "sounddevice", "requests", "--quiet"], { timeout: 120000 });
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
cb.notify("Voice: failed to create Python venv — run: python3 -m venv ~/.gsd/voice-venv", "error");
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
dFMji9G1LZ-Tv36el9pRT
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"/_not-found/page": "/_not-found",
|
|
3
3
|
"/_global-error/page": "/_global-error",
|
|
4
|
-
"/api/bridge-terminal/input/route": "/api/bridge-terminal/input",
|
|
5
4
|
"/api/bridge-terminal/resize/route": "/api/bridge-terminal/resize",
|
|
6
5
|
"/api/boot/route": "/api/boot",
|
|
6
|
+
"/api/bridge-terminal/input/route": "/api/bridge-terminal/input",
|
|
7
7
|
"/api/bridge-terminal/stream/route": "/api/bridge-terminal/stream",
|
|
8
8
|
"/api/cleanup/route": "/api/cleanup",
|
|
9
9
|
"/api/dev-mode/route": "/api/dev-mode",
|
|
10
|
-
"/api/export-data/route": "/api/export-data",
|
|
11
|
-
"/api/browse-directories/route": "/api/browse-directories",
|
|
12
|
-
"/api/captures/route": "/api/captures",
|
|
13
|
-
"/api/doctor/route": "/api/doctor",
|
|
14
10
|
"/api/forensics/route": "/api/forensics",
|
|
11
|
+
"/api/doctor/route": "/api/doctor",
|
|
12
|
+
"/api/export-data/route": "/api/export-data",
|
|
15
13
|
"/api/git/route": "/api/git",
|
|
16
14
|
"/api/history/route": "/api/history",
|
|
17
15
|
"/api/hooks/route": "/api/hooks",
|
|
18
|
-
"/api/
|
|
16
|
+
"/api/browse-directories/route": "/api/browse-directories",
|
|
17
|
+
"/api/captures/route": "/api/captures",
|
|
19
18
|
"/api/inspect/route": "/api/inspect",
|
|
19
|
+
"/api/knowledge/route": "/api/knowledge",
|
|
20
|
+
"/api/recovery/route": "/api/recovery",
|
|
21
|
+
"/api/projects/route": "/api/projects",
|
|
20
22
|
"/api/live-state/route": "/api/live-state",
|
|
21
23
|
"/api/preferences/route": "/api/preferences",
|
|
22
|
-
"/api/recovery/route": "/api/recovery",
|
|
23
24
|
"/api/onboarding/route": "/api/onboarding",
|
|
24
|
-
"/api/projects/route": "/api/projects",
|
|
25
|
-
"/api/session/browser/route": "/api/session/browser",
|
|
26
25
|
"/api/session/command/route": "/api/session/command",
|
|
26
|
+
"/api/session/browser/route": "/api/session/browser",
|
|
27
27
|
"/api/session/events/route": "/api/session/events",
|
|
28
|
-
"/api/session/manage/route": "/api/session/manage",
|
|
29
28
|
"/api/settings-data/route": "/api/settings-data",
|
|
30
29
|
"/api/shutdown/route": "/api/shutdown",
|
|
31
|
-
"/api/
|
|
30
|
+
"/api/session/manage/route": "/api/session/manage",
|
|
32
31
|
"/api/steer/route": "/api/steer",
|
|
33
|
-
"/api/
|
|
32
|
+
"/api/files/route": "/api/files",
|
|
34
33
|
"/api/terminal/resize/route": "/api/terminal/resize",
|
|
35
34
|
"/api/switch-root/route": "/api/switch-root",
|
|
36
|
-
"/api/
|
|
37
|
-
"/api/terminal/stream/route": "/api/terminal/stream",
|
|
35
|
+
"/api/terminal/input/route": "/api/terminal/input",
|
|
38
36
|
"/api/terminal/sessions/route": "/api/terminal/sessions",
|
|
39
|
-
"/api/undo/route": "/api/undo",
|
|
40
37
|
"/api/terminal/upload/route": "/api/terminal/upload",
|
|
38
|
+
"/api/skill-health/route": "/api/skill-health",
|
|
41
39
|
"/api/visualizer/route": "/api/visualizer",
|
|
40
|
+
"/api/undo/route": "/api/undo",
|
|
41
|
+
"/api/terminal/stream/route": "/api/terminal/stream",
|
|
42
42
|
"/api/update/route": "/api/update",
|
|
43
43
|
"/api/remote-questions/route": "/api/remote-questions",
|
|
44
44
|
"/page": "/"
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static/
|
|
8
|
-
"static/
|
|
7
|
+
"static/dFMji9G1LZ-Tv36el9pRT/_buildManifest.js",
|
|
8
|
+
"static/dFMji9G1LZ-Tv36el9pRT/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [
|
|
11
|
-
"static/chunks/webpack-
|
|
11
|
+
"static/chunks/webpack-0a4cd455ec4197d2.js",
|
|
12
12
|
"static/chunks/4bd1b696-e5d7c65570c947b7.js",
|
|
13
13
|
"static/chunks/3794-337d1ca25ad99a89.js",
|
|
14
|
-
"static/chunks/main-app-
|
|
14
|
+
"static/chunks/main-app-fdab67f7802d7832.js"
|
|
15
15
|
],
|
|
16
16
|
"rootMainFilesTree": {},
|
|
17
17
|
"pages": {
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"dynamicRoutes": {},
|
|
79
79
|
"notFoundRoutes": [],
|
|
80
80
|
"preview": {
|
|
81
|
-
"previewModeId": "
|
|
82
|
-
"previewModeSigningKey": "
|
|
83
|
-
"previewModeEncryptionKey": "
|
|
81
|
+
"previewModeId": "67b4a2e3d3223f741935a0c0a5a12b78",
|
|
82
|
+
"previewModeSigningKey": "5993740289b20a3dacec7b48d4dad194b5e597dac00b095837e4b713b3163035",
|
|
83
|
+
"previewModeEncryptionKey": "0083ba5e4f8dd3f3244017c2bedffec984b9e3c5f3a5edbae4d5439c5339ba28"
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"static/css/659eccb5db697b76.css",
|
|
6
6
|
"static/chunks/363642f4.f9053a63f1b97508.js",
|
|
7
7
|
"static/chunks/4986-c2fc8845ce785303.js",
|
|
8
|
-
"static/chunks/
|
|
9
|
-
"static/chunks/4024.
|
|
8
|
+
"static/chunks/485.243af25f0cdf50d6.js",
|
|
9
|
+
"static/chunks/4024.11ca5c01938e5948.js"
|
|
10
10
|
]
|
|
11
11
|
},
|
|
12
12
|
"components/gsd/chat-mode.tsx -> react-markdown": {
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"transform": "lodash/{{member}}"
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
-
"outputFileTracingRoot": "/
|
|
103
|
+
"outputFileTracingRoot": "/__w/gsd-2/gsd-2",
|
|
104
104
|
"cacheComponents": false,
|
|
105
105
|
"cacheLife": {
|
|
106
106
|
"default": {
|
|
@@ -297,11 +297,11 @@
|
|
|
297
297
|
"node-pty"
|
|
298
298
|
],
|
|
299
299
|
"turbopack": {
|
|
300
|
-
"root": "/
|
|
300
|
+
"root": "/__w/gsd-2/gsd-2"
|
|
301
301
|
},
|
|
302
302
|
"distDirRoot": ".next"
|
|
303
303
|
},
|
|
304
|
-
"appDir": "/
|
|
304
|
+
"appDir": "/__w/gsd-2/gsd-2/web",
|
|
305
305
|
"relativeAppDir": "web",
|
|
306
306
|
"files": [
|
|
307
307
|
".next/routes-manifest.json",
|