gsd-pi 2.71.0 → 2.72.0-dev.de4c4b3
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 +57 -17
- package/dist/cli.js +29 -3
- package/dist/headless-events.d.ts +2 -0
- package/dist/headless-events.js +7 -0
- package/dist/headless.js +16 -3
- package/dist/mcp-server.js +40 -17
- package/dist/provider-migrations.d.ts +10 -0
- package/dist/provider-migrations.js +12 -0
- package/dist/resource-loader.js +139 -13
- package/dist/resources/GSD-WORKFLOW.md +1 -1
- package/dist/resources/agents/debugger.md +58 -0
- package/dist/resources/agents/doc-writer.md +43 -0
- package/dist/resources/agents/git-ops.md +56 -0
- package/dist/resources/agents/javascript-pro.md +46 -271
- package/dist/resources/agents/planner.md +55 -0
- package/dist/resources/agents/refactorer.md +47 -0
- package/dist/resources/agents/reviewer.md +48 -0
- package/dist/resources/agents/security.md +59 -0
- package/dist/resources/agents/tester.md +50 -0
- package/dist/resources/agents/typescript-pro.md +41 -235
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +113 -10
- package/dist/resources/extensions/gsd/auto/infra-errors.js +34 -0
- package/dist/resources/extensions/gsd/auto/loop.js +32 -1
- package/dist/resources/extensions/gsd/auto/phases.js +5 -1
- package/dist/resources/extensions/gsd/auto/session.js +11 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +22 -16
- package/dist/resources/extensions/gsd/auto-model-selection.js +10 -2
- package/dist/resources/extensions/gsd/auto-prompts.js +88 -33
- package/dist/resources/extensions/gsd/auto-start.js +34 -7
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +1 -1
- package/dist/resources/extensions/gsd/auto-worktree.js +1 -1
- package/dist/resources/extensions/gsd/auto.js +56 -0
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +3 -3
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +2 -0
- package/dist/resources/extensions/gsd/bootstrap/register-shortcuts.js +63 -51
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +6 -0
- package/dist/resources/extensions/gsd/commands/context.js +15 -6
- package/dist/resources/extensions/gsd/commands/dispatcher.js +12 -2
- package/dist/resources/extensions/gsd/commands/handlers/auto.js +10 -33
- package/dist/resources/extensions/gsd/commands/handlers/core.js +56 -11
- package/dist/resources/extensions/gsd/commands/handlers/notifications-handler.js +15 -6
- package/dist/resources/extensions/gsd/commands/handlers/workflow.js +4 -10
- package/dist/resources/extensions/gsd/dashboard-overlay.js +8 -3
- package/dist/resources/extensions/gsd/dispatch-guard.js +18 -1
- package/dist/resources/extensions/gsd/doctor-providers.js +23 -0
- package/dist/resources/extensions/gsd/error-classifier.js +5 -2
- package/dist/resources/extensions/gsd/forensics.js +19 -6
- package/dist/resources/extensions/gsd/gate-registry.js +208 -0
- package/dist/resources/extensions/gsd/gsd-db.js +41 -0
- package/dist/resources/extensions/gsd/guided-flow.js +5 -10
- package/dist/resources/extensions/gsd/metrics.js +1 -0
- package/dist/resources/extensions/gsd/milestone-actions.js +10 -4
- package/dist/resources/extensions/gsd/milestone-validation-gates.js +11 -12
- package/dist/resources/extensions/gsd/notification-overlay.js +42 -13
- package/dist/resources/extensions/gsd/notification-store.js +56 -5
- package/dist/resources/extensions/gsd/notification-widget.js +5 -13
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +8 -3
- package/dist/resources/extensions/gsd/pre-execution-checks.js +35 -2
- package/dist/resources/extensions/gsd/prompt-validation.js +126 -0
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +5 -3
- package/dist/resources/extensions/gsd/prompts/discuss.md +2 -0
- package/dist/resources/extensions/gsd/prompts/execute-task.md +22 -19
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +2 -0
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +2 -0
- package/dist/resources/extensions/gsd/prompts/guided-resume-task.md +1 -1
- package/dist/resources/extensions/gsd/prompts/queue.md +3 -2
- package/dist/resources/extensions/gsd/prompts/system.md +1 -0
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +4 -1
- package/dist/resources/extensions/gsd/session-model-override.js +25 -0
- package/dist/resources/extensions/gsd/shortcut-defs.js +40 -0
- package/dist/resources/extensions/gsd/state.js +9 -2
- package/dist/resources/extensions/gsd/tools/complete-slice.js +52 -1
- package/dist/resources/extensions/gsd/tools/complete-task.js +51 -1
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +4 -1
- package/dist/resources/extensions/ollama/index.js +13 -5
- package/dist/resources/extensions/shared/gsd-phase-state.js +35 -0
- package/dist/resources/extensions/subagent/agents.js +8 -0
- package/dist/resources/extensions/subagent/index.js +17 -0
- package/dist/resources/skills/create-skill/SKILL.md +2 -0
- package/dist/startup-model-validation.d.ts +0 -1
- package/dist/startup-model-validation.js +6 -2
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
- 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/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 +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.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 +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- 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_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/experimental/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/experimental/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/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/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 +2 -2
- 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 +1 -1
- 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 +1 -1
- 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 +2 -2
- 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 +4 -4
- 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 +4 -4
- 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 +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- 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 +10 -10
- package/dist/web/standalone/.next/server/chunks/63.js +3 -3
- package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-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 +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- 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-f1e30ab6bb269149.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/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/mcp-server/dist/server.d.ts +12 -1
- package/packages/mcp-server/dist/server.d.ts.map +1 -1
- package/packages/mcp-server/dist/server.js +90 -42
- package/packages/mcp-server/dist/server.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +22 -12
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/src/server.ts +110 -38
- package/packages/mcp-server/src/workflow-tools.test.ts +110 -0
- package/packages/mcp-server/src/workflow-tools.ts +32 -12
- package/packages/pi-ai/dist/providers/amazon-bedrock.js +11 -2
- package/packages/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-auth.test.d.ts +2 -0
- package/packages/pi-ai/dist/providers/anthropic-auth.test.d.ts.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-auth.test.js +20 -0
- package/packages/pi-ai/dist/providers/anthropic-auth.test.js.map +1 -0
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts +4 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.js +8 -3
- package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.test.js +44 -1
- package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.d.ts +2 -1
- package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.js +7 -4
- package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/openai-completions.js +11 -0
- package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/packages/pi-ai/src/providers/amazon-bedrock.ts +13 -1
- package/packages/pi-ai/src/providers/anthropic-auth.test.ts +32 -0
- package/packages/pi-ai/src/providers/anthropic-shared.test.ts +55 -1
- package/packages/pi-ai/src/providers/anthropic-shared.ts +14 -3
- package/packages/pi-ai/src/providers/anthropic.ts +8 -4
- package/packages/pi-ai/src/providers/openai-completions.ts +14 -0
- package/packages/pi-coding-agent/dist/core/agent-session-renderable-tools.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/agent-session-renderable-tools.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session-renderable-tools.test.js +61 -0
- package/packages/pi-coding-agent/dist/core/agent-session-renderable-tools.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +2 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +10 -0
- package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.js +27 -0
- package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js +85 -0
- package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver-initial-model-auth.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/model-resolver-initial-model-auth.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-resolver-initial-model-auth.test.js +64 -0
- package/packages/pi-coding-agent/dist/core/model-resolver-initial-model-auth.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.js +22 -18
- package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.test.d.ts +8 -0
- package/packages/pi-coding-agent/dist/core/model-resolver.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/model-resolver.test.js +75 -0
- package/packages/pi-coding-agent/dist/core/model-resolver.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +5 -0
- package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js +55 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.test.js +57 -0
- package/packages/pi-coding-agent/dist/core/retry-handler.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.d.ts +11 -0
- package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.js +38 -5
- package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/sdk.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/sdk.test.js +71 -0
- package/packages/pi-coding-agent/dist/core/sdk.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/login-dialog.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/login-dialog.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/login-dialog.test.js +13 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/login-dialog.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts +4 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +24 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -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 +9 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +4 -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 +43 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.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 +7 -2
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/model-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/model-controller.js +6 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/model-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 +4 -3
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +4 -2
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/agent-session-renderable-tools.test.ts +70 -0
- package/packages/pi-coding-agent/src/core/agent-session.ts +2 -1
- package/packages/pi-coding-agent/src/core/auth-storage.test.ts +108 -0
- package/packages/pi-coding-agent/src/core/auth-storage.ts +30 -0
- package/packages/pi-coding-agent/src/core/model-resolver-initial-model-auth.test.ts +78 -0
- package/packages/pi-coding-agent/src/core/model-resolver.test.ts +85 -0
- package/packages/pi-coding-agent/src/core/model-resolver.ts +22 -18
- package/packages/pi-coding-agent/src/core/retry-handler.test.ts +83 -0
- package/packages/pi-coding-agent/src/core/retry-handler.ts +60 -1
- package/packages/pi-coding-agent/src/core/sdk.test.ts +89 -0
- package/packages/pi-coding-agent/src/core/sdk.ts +45 -9
- package/packages/pi-coding-agent/src/index.ts +1 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/login-dialog.test.ts +24 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts +30 -2
- package/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts +15 -6
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +47 -0
- package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +7 -2
- package/packages/pi-coding-agent/src/modes/interactive/controllers/model-controller.ts +6 -1
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +4 -3
- package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +4 -2
- package/pkg/package.json +1 -1
- package/src/resources/GSD-WORKFLOW.md +1 -1
- package/src/resources/agents/debugger.md +58 -0
- package/src/resources/agents/doc-writer.md +43 -0
- package/src/resources/agents/git-ops.md +56 -0
- package/src/resources/agents/javascript-pro.md +46 -271
- package/src/resources/agents/planner.md +55 -0
- package/src/resources/agents/refactorer.md +47 -0
- package/src/resources/agents/reviewer.md +48 -0
- package/src/resources/agents/security.md +59 -0
- package/src/resources/agents/tester.md +50 -0
- package/src/resources/agents/typescript-pro.md +41 -235
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +122 -8
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +189 -6
- package/src/resources/extensions/gsd/auto/infra-errors.ts +38 -0
- package/src/resources/extensions/gsd/auto/loop-deps.ts +2 -0
- package/src/resources/extensions/gsd/auto/loop.ts +45 -1
- package/src/resources/extensions/gsd/auto/phases.ts +6 -0
- package/src/resources/extensions/gsd/auto/session.ts +11 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +29 -18
- package/src/resources/extensions/gsd/auto-model-selection.ts +9 -1
- package/src/resources/extensions/gsd/auto-prompts.ts +111 -33
- package/src/resources/extensions/gsd/auto-start.ts +41 -7
- package/src/resources/extensions/gsd/auto-tool-tracking.ts +1 -1
- package/src/resources/extensions/gsd/auto-worktree.ts +1 -1
- package/src/resources/extensions/gsd/auto.ts +72 -0
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +3 -3
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +2 -0
- package/src/resources/extensions/gsd/bootstrap/register-shortcuts.ts +79 -60
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +7 -0
- package/src/resources/extensions/gsd/commands/context.ts +16 -5
- package/src/resources/extensions/gsd/commands/dispatcher.ts +14 -2
- package/src/resources/extensions/gsd/commands/handlers/auto.ts +10 -36
- package/src/resources/extensions/gsd/commands/handlers/core.ts +58 -11
- package/src/resources/extensions/gsd/commands/handlers/notifications-handler.ts +17 -7
- package/src/resources/extensions/gsd/commands/handlers/workflow.ts +4 -10
- package/src/resources/extensions/gsd/dashboard-overlay.ts +10 -3
- package/src/resources/extensions/gsd/dispatch-guard.ts +18 -1
- package/src/resources/extensions/gsd/doctor-providers.ts +24 -0
- package/src/resources/extensions/gsd/error-classifier.ts +5 -2
- package/src/resources/extensions/gsd/forensics.ts +23 -7
- package/src/resources/extensions/gsd/gate-registry.ts +251 -0
- package/src/resources/extensions/gsd/gsd-db.ts +51 -0
- package/src/resources/extensions/gsd/guided-flow.ts +5 -10
- package/src/resources/extensions/gsd/interrupted-session.ts +1 -0
- package/src/resources/extensions/gsd/metrics.ts +12 -1
- package/src/resources/extensions/gsd/milestone-actions.ts +10 -3
- package/src/resources/extensions/gsd/milestone-validation-gates.ts +11 -13
- package/src/resources/extensions/gsd/notification-overlay.ts +47 -14
- package/src/resources/extensions/gsd/notification-store.ts +54 -5
- package/src/resources/extensions/gsd/notification-widget.ts +5 -14
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +10 -3
- package/src/resources/extensions/gsd/pre-execution-checks.ts +39 -2
- package/src/resources/extensions/gsd/prompt-validation.ts +157 -0
- package/src/resources/extensions/gsd/prompts/complete-slice.md +5 -3
- package/src/resources/extensions/gsd/prompts/discuss.md +2 -0
- package/src/resources/extensions/gsd/prompts/execute-task.md +22 -19
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +2 -0
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +2 -0
- package/src/resources/extensions/gsd/prompts/guided-resume-task.md +1 -1
- package/src/resources/extensions/gsd/prompts/queue.md +3 -2
- package/src/resources/extensions/gsd/prompts/system.md +1 -0
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +4 -1
- package/src/resources/extensions/gsd/session-model-override.ts +36 -0
- package/src/resources/extensions/gsd/shortcut-defs.ts +56 -0
- package/src/resources/extensions/gsd/state.ts +13 -2
- package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +25 -9
- package/src/resources/extensions/gsd/tests/auto-start-worktree-db-path.test.ts +28 -0
- package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +39 -0
- package/src/resources/extensions/gsd/tests/complete-slice-gate-closure.test.ts +167 -0
- package/src/resources/extensions/gsd/tests/complete-slice-prompt-task-summary-layout.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/execute-task-prompt-existing-artifact-guard.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/forensics-stuck-loops.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/format-shortcut.test.ts +31 -0
- package/src/resources/extensions/gsd/tests/gate-dispatch.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/gate-registry.test.ts +140 -0
- package/src/resources/extensions/gsd/tests/gsd-no-project-error.test.ts +73 -0
- package/src/resources/extensions/gsd/tests/infra-errors-cooldown.test.ts +180 -0
- package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +66 -1
- package/src/resources/extensions/gsd/tests/model-isolation.test.ts +36 -51
- package/src/resources/extensions/gsd/tests/notification-store.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/notification-widget.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/notifications-handler.test.ts +90 -0
- package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/park-db-sync.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/pre-execution-checks.test.ts +49 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/prompt-system-gate-coverage.test.ts +208 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +16 -0
- package/src/resources/extensions/gsd/tests/register-shortcuts.test.ts +63 -5
- package/src/resources/extensions/gsd/tests/session-model-override.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +90 -0
- package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +7 -0
- package/src/resources/extensions/gsd/tests/validate-milestone-prompt-verification-classes.test.ts +18 -0
- package/src/resources/extensions/gsd/tools/complete-slice.ts +63 -0
- package/src/resources/extensions/gsd/tools/complete-task.ts +63 -0
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +4 -1
- package/src/resources/extensions/gsd/types.ts +26 -0
- package/src/resources/extensions/ollama/index.ts +13 -3
- package/src/resources/extensions/ollama/ollama-status-indicator.test.ts +28 -0
- package/src/resources/extensions/shared/gsd-phase-state.ts +42 -0
- package/src/resources/extensions/shared/tests/gsd-phase-state.test.ts +48 -0
- package/src/resources/extensions/subagent/agents.ts +10 -0
- package/src/resources/extensions/subagent/index.ts +18 -0
- package/src/resources/extensions/subagent/tests/agents-conflicts.test.ts +33 -0
- package/src/resources/skills/create-skill/SKILL.md +2 -0
- package/dist/web/standalone/.next/static/chunks/app/page-7115e62689b5fd84.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/{nPky_WQC28aBD77eZsRAB → f-Gremw0nLxxFUySaHRPw}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{nPky_WQC28aBD77eZsRAB → f-Gremw0nLxxFUySaHRPw}/_ssgManifest.js +0 -0
|
@@ -18,6 +18,8 @@ All relevant context has been preloaded below — the roadmap, all slice summari
|
|
|
18
18
|
|
|
19
19
|
{{inlinedContext}}
|
|
20
20
|
|
|
21
|
+
{{gatesToEvaluate}}
|
|
22
|
+
|
|
21
23
|
## Execution Protocol
|
|
22
24
|
|
|
23
25
|
### Step 1 — Dispatch Parallel Reviewers
|
|
@@ -31,7 +33,7 @@ Prompt: "Review milestone {{milestoneId}} requirements coverage. Working directo
|
|
|
31
33
|
Prompt: "Review milestone {{milestoneId}} cross-slice integration. Working directory: {{workingDirectory}}. Read `{{roadmapPath}}` and find the boundary map (produces/consumes contracts). For each boundary, check that the producing slice's SUMMARY confirms it produced the artifact, and the consuming slice's SUMMARY confirms it consumed it. Output a markdown table: Boundary | Producer Summary | Consumer Summary | Status. End with a one-line verdict: PASS if all boundaries honored, NEEDS-ATTENTION if any gaps."
|
|
32
34
|
|
|
33
35
|
**Reviewer C — Assessment & Acceptance Criteria**
|
|
34
|
-
Prompt: "Review milestone {{milestoneId}} assessment evidence and acceptance criteria. Working directory: {{workingDirectory}}. Read `.gsd/{{milestoneId}}/CONTEXT.md` for acceptance criteria. Check for ASSESSMENT files in each slice directory. Verify each acceptance criterion maps to either a passing assessment result or clear SUMMARY evidence. Output a checklist
|
|
36
|
+
Prompt: "Review milestone {{milestoneId}} assessment evidence and acceptance criteria. Working directory: {{workingDirectory}}. Read `.gsd/{{milestoneId}}/CONTEXT.md` for acceptance criteria. Check for ASSESSMENT files in each slice directory. Verify each acceptance criterion maps to either a passing assessment result or clear SUMMARY evidence. Then review the inlined milestone verification classes from planning. For each non-empty planned class, output a markdown table: Class | Planned Check | Evidence | Verdict. Use the exact class names `Contract`, `Integration`, `Operational`, and `UAT` whenever those classes are present. If no verification classes were planned, say that explicitly. Output two sections: `Acceptance Criteria` with a checklist `[ ] Criterion | Evidence`, and `Verification Classes` with the table. End with a one-line verdict: PASS if all criteria and verification classes are covered, NEEDS-ATTENTION if gaps exist."
|
|
35
37
|
|
|
36
38
|
### Step 2 — Synthesize Findings
|
|
37
39
|
|
|
@@ -70,6 +72,7 @@ reviewers: 3
|
|
|
70
72
|
```
|
|
71
73
|
|
|
72
74
|
Call `gsd_validate_milestone` with the camelCase fields `milestoneId`, `verdict`, `remediationRound`, `successCriteriaChecklist`, `sliceDeliveryAudit`, `crossSliceIntegration`, `requirementCoverage`, `verdictRationale`, and `remediationPlan` when needed. If you include verification-class analysis, pass it in `verificationClasses`.
|
|
75
|
+
Extract the `Verification Classes` subsection from Reviewer C and pass it verbatim in `verificationClasses` so the persisted validation output uses the canonical class names `Contract`, `Integration`, `Operational`, and `UAT`.
|
|
73
76
|
|
|
74
77
|
**DB access safety:** Do NOT query `.gsd/gsd.db` directly via `sqlite3` or `node -e require('better-sqlite3')` — the engine owns the WAL connection. Use `gsd_milestone_status` to read milestone and slice state. All data you need is already inlined in the context above or accessible via the `gsd_*` tools. Direct DB access corrupts the WAL and bypasses tool-level validation.
|
|
75
78
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const sessionOverrides = new Map();
|
|
2
|
+
function normalizeSessionId(sessionId) {
|
|
3
|
+
return typeof sessionId === "string" ? sessionId.trim() : "";
|
|
4
|
+
}
|
|
5
|
+
export function setSessionModelOverride(sessionId, override) {
|
|
6
|
+
const key = normalizeSessionId(sessionId);
|
|
7
|
+
if (!key)
|
|
8
|
+
return;
|
|
9
|
+
sessionOverrides.set(key, {
|
|
10
|
+
provider: override.provider,
|
|
11
|
+
id: override.id,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function getSessionModelOverride(sessionId) {
|
|
15
|
+
const key = normalizeSessionId(sessionId);
|
|
16
|
+
if (!key)
|
|
17
|
+
return undefined;
|
|
18
|
+
return sessionOverrides.get(key);
|
|
19
|
+
}
|
|
20
|
+
export function clearSessionModelOverride(sessionId) {
|
|
21
|
+
const key = normalizeSessionId(sessionId);
|
|
22
|
+
if (!key)
|
|
23
|
+
return;
|
|
24
|
+
sessionOverrides.delete(key);
|
|
25
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Canonical GSD shortcut definitions used by registration, help text, and overlays.
|
|
2
|
+
import { formatShortcut } from "./files.js";
|
|
3
|
+
export const GSD_SHORTCUTS = {
|
|
4
|
+
dashboard: {
|
|
5
|
+
key: "g",
|
|
6
|
+
action: "Open GSD dashboard",
|
|
7
|
+
command: "/gsd status",
|
|
8
|
+
hasFallback: true,
|
|
9
|
+
},
|
|
10
|
+
notifications: {
|
|
11
|
+
key: "n",
|
|
12
|
+
action: "Open notification history",
|
|
13
|
+
command: "/gsd notifications",
|
|
14
|
+
hasFallback: true,
|
|
15
|
+
},
|
|
16
|
+
parallel: {
|
|
17
|
+
key: "p",
|
|
18
|
+
action: "Open parallel worker monitor",
|
|
19
|
+
command: "/gsd parallel watch",
|
|
20
|
+
hasFallback: false, // Ctrl+Shift+P conflicts with cycleModelBackward
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
function combo(prefix, key) {
|
|
24
|
+
return `${prefix}${key.toUpperCase()}`;
|
|
25
|
+
}
|
|
26
|
+
export function primaryShortcutCombo(id) {
|
|
27
|
+
return combo("Ctrl+Alt+", GSD_SHORTCUTS[id].key);
|
|
28
|
+
}
|
|
29
|
+
export function fallbackShortcutCombo(id) {
|
|
30
|
+
return combo("Ctrl+Shift+", GSD_SHORTCUTS[id].key);
|
|
31
|
+
}
|
|
32
|
+
export function shortcutPair(id, formatter = (combo) => combo) {
|
|
33
|
+
const primary = formatter(primaryShortcutCombo(id));
|
|
34
|
+
if (!GSD_SHORTCUTS[id].hasFallback)
|
|
35
|
+
return primary;
|
|
36
|
+
return `${primary} / ${formatter(fallbackShortcutCombo(id))}`;
|
|
37
|
+
}
|
|
38
|
+
export function formattedShortcutPair(id) {
|
|
39
|
+
return shortcutPair(id, formatShortcut);
|
|
40
|
+
}
|
|
@@ -13,7 +13,7 @@ import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
|
13
13
|
import { debugCount, debugTime } from './debug-logger.js';
|
|
14
14
|
import { logWarning, logError } from './workflow-logger.js';
|
|
15
15
|
import { extractVerdict } from './verdict-parser.js';
|
|
16
|
-
import { isDbAvailable, wasDbOpenAttempted, getAllMilestones, getMilestone, getMilestoneSlices, getSliceTasks, getReplanHistory, getSlice, insertMilestone, insertSlice, insertTask, updateTaskStatus,
|
|
16
|
+
import { isDbAvailable, wasDbOpenAttempted, getAllMilestones, getMilestone, getMilestoneSlices, getSliceTasks, getReplanHistory, getSlice, insertMilestone, insertSlice, insertTask, updateTaskStatus, getPendingGateCountForTurn, } from './gsd-db.js';
|
|
17
17
|
/**
|
|
18
18
|
* A "ghost" milestone directory contains only META.json (and no substantive
|
|
19
19
|
* files like CONTEXT, CONTEXT-DRAFT, ROADMAP, or SUMMARY). These appear when
|
|
@@ -724,7 +724,14 @@ export async function deriveStateFromDb(basePath) {
|
|
|
724
724
|
};
|
|
725
725
|
}
|
|
726
726
|
}
|
|
727
|
-
|
|
727
|
+
// ── Quality gate evaluation check ──────────────────────────────────
|
|
728
|
+
// Pause before execution only when gates owned by the `gate-evaluate`
|
|
729
|
+
// turn (Q3/Q4) are still pending. Q8 is also `scope:"slice"` but is
|
|
730
|
+
// owned by `complete-slice`, so it must NOT block the evaluating-gates
|
|
731
|
+
// phase — otherwise auto-loop stalls forever waiting for a gate that
|
|
732
|
+
// this turn never evaluates. See gate-registry.ts for the ownership map.
|
|
733
|
+
// Slices with zero gate rows (pre-feature or simple) skip straight through.
|
|
734
|
+
const pendingGateCount = getPendingGateCountForTurn(activeMilestone.id, activeSlice.id, "gate-evaluate");
|
|
728
735
|
if (pendingGateCount > 0) {
|
|
729
736
|
return {
|
|
730
737
|
activeMilestone, activeSlice, activeTask: null,
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { mkdirSync } from "node:fs";
|
|
11
11
|
import { isClosedStatus } from "../status-guards.js";
|
|
12
|
-
import { transaction, insertMilestone, insertSlice, getSlice, getSliceTasks, getMilestone, updateSliceStatus, setSliceSummaryMd, } from "../gsd-db.js";
|
|
12
|
+
import { transaction, insertMilestone, insertSlice, getSlice, getSliceTasks, getMilestone, updateSliceStatus, setSliceSummaryMd, saveGateResult, getPendingGatesForTurn, } from "../gsd-db.js";
|
|
13
|
+
import { getGatesForTurn } from "../gate-registry.js";
|
|
13
14
|
import { resolveSlicePath, clearPathCache } from "../paths.js";
|
|
14
15
|
import { checkOwnership, sliceUnitKey } from "../unit-ownership.js";
|
|
15
16
|
import { saveFile, clearParseCache } from "../files.js";
|
|
@@ -19,6 +20,19 @@ import { renderAllProjections } from "../workflow-projections.js";
|
|
|
19
20
|
import { writeManifest } from "../workflow-manifest.js";
|
|
20
21
|
import { appendEvent } from "../workflow-events.js";
|
|
21
22
|
import { logWarning, logError } from "../workflow-logger.js";
|
|
23
|
+
/**
|
|
24
|
+
* Map a complete-slice-owned gate id to the CompleteSliceParams field
|
|
25
|
+
* whose presence drives `pass` vs. `omitted`. Keep this in lockstep with
|
|
26
|
+
* the gates declared in gate-registry.ts under ownerTurn "complete-slice".
|
|
27
|
+
*/
|
|
28
|
+
function sliceGateFieldForId(id, params) {
|
|
29
|
+
switch (id) {
|
|
30
|
+
case "Q8":
|
|
31
|
+
return params.operationalReadiness;
|
|
32
|
+
default:
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
22
36
|
/**
|
|
23
37
|
* Render slice summary markdown matching the template format.
|
|
24
38
|
* YAML frontmatter uses snake_case keys for parseSummary() compatibility.
|
|
@@ -134,6 +148,10 @@ ${reqSurfaced}
|
|
|
134
148
|
|
|
135
149
|
${reqInvalidated}
|
|
136
150
|
|
|
151
|
+
## Operational Readiness
|
|
152
|
+
|
|
153
|
+
${params.operationalReadiness?.trim() || "None."}
|
|
154
|
+
|
|
137
155
|
## Deviations
|
|
138
156
|
|
|
139
157
|
${params.deviations || "None."}
|
|
@@ -271,6 +289,39 @@ export async function handleCompleteSlice(params, basePath) {
|
|
|
271
289
|
}
|
|
272
290
|
// Store rendered markdown in DB for D004 recovery
|
|
273
291
|
setSliceSummaryMd(params.milestoneId, params.sliceId, summaryMd, uatMd);
|
|
292
|
+
// ── Close gates owned by complete-slice (Q8) ───────────────────────────
|
|
293
|
+
// Each owned gate maps to a specific summary section via the registry.
|
|
294
|
+
// If the caller populated the corresponding field, record `pass`; if the
|
|
295
|
+
// field is empty, record `omitted`. Without this loop, Q8 would stay
|
|
296
|
+
// pending forever and block future state derivation (see gate-registry).
|
|
297
|
+
try {
|
|
298
|
+
const pendingGates = getPendingGatesForTurn(params.milestoneId, params.sliceId, "complete-slice");
|
|
299
|
+
if (pendingGates.length > 0) {
|
|
300
|
+
const ownedDefs = new Map(getGatesForTurn("complete-slice").map((g) => [g.id, g]));
|
|
301
|
+
for (const row of pendingGates) {
|
|
302
|
+
const def = ownedDefs.get(row.gate_id);
|
|
303
|
+
if (!def)
|
|
304
|
+
continue;
|
|
305
|
+
// Map gate id → param field it maps to. Keep the map local so
|
|
306
|
+
// adding a new complete-slice gate is a single place change.
|
|
307
|
+
const field = sliceGateFieldForId(def.id, params);
|
|
308
|
+
const hasContent = typeof field === "string" && field.trim().length > 0;
|
|
309
|
+
saveGateResult({
|
|
310
|
+
milestoneId: params.milestoneId,
|
|
311
|
+
sliceId: params.sliceId,
|
|
312
|
+
gateId: def.id,
|
|
313
|
+
verdict: hasContent ? "pass" : "omitted",
|
|
314
|
+
rationale: hasContent
|
|
315
|
+
? `${def.promptSection} section populated in slice summary`
|
|
316
|
+
: `${def.promptSection} section left empty — recorded as omitted`,
|
|
317
|
+
findings: hasContent ? field.trim() : "",
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch (gateErr) {
|
|
323
|
+
logWarning("tool", `complete-slice gate close warning for ${params.milestoneId}/${params.sliceId}: ${gateErr.message}`);
|
|
324
|
+
}
|
|
274
325
|
// Invalidate all caches
|
|
275
326
|
invalidateStateCache();
|
|
276
327
|
clearPathCache();
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { mkdirSync } from "node:fs";
|
|
11
11
|
import { isClosedStatus } from "../status-guards.js";
|
|
12
|
-
import { transaction, insertMilestone, insertSlice, insertTask, insertVerificationEvidence, getMilestone, getSlice, getTask, updateTaskStatus, setTaskSummaryMd, deleteVerificationEvidence, } from "../gsd-db.js";
|
|
12
|
+
import { transaction, insertMilestone, insertSlice, insertTask, insertVerificationEvidence, getMilestone, getSlice, getTask, updateTaskStatus, setTaskSummaryMd, deleteVerificationEvidence, saveGateResult, getPendingGatesForTurn, } from "../gsd-db.js";
|
|
13
|
+
import { getGatesForTurn } from "../gate-registry.js";
|
|
13
14
|
import { resolveSliceFile, resolveTasksDir, clearPathCache } from "../paths.js";
|
|
14
15
|
import { checkOwnership, taskUnitKey } from "../unit-ownership.js";
|
|
15
16
|
import { saveFile, clearParseCache } from "../files.js";
|
|
@@ -19,6 +20,23 @@ import { renderAllProjections, renderSummaryContent } from "../workflow-projecti
|
|
|
19
20
|
import { writeManifest } from "../workflow-manifest.js";
|
|
20
21
|
import { appendEvent } from "../workflow-events.js";
|
|
21
22
|
import { logWarning, logError } from "../workflow-logger.js";
|
|
23
|
+
/**
|
|
24
|
+
* Map an execute-task-owned gate id to the CompleteTaskParams field whose
|
|
25
|
+
* presence drives `pass` vs. `omitted`. Keep in lockstep with the gates
|
|
26
|
+
* declared in gate-registry.ts under ownerTurn "execute-task".
|
|
27
|
+
*/
|
|
28
|
+
function taskGateFieldForId(id, params) {
|
|
29
|
+
switch (id) {
|
|
30
|
+
case "Q5":
|
|
31
|
+
return params.failureModes;
|
|
32
|
+
case "Q6":
|
|
33
|
+
return params.loadProfile;
|
|
34
|
+
case "Q7":
|
|
35
|
+
return params.negativeTests;
|
|
36
|
+
default:
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
22
40
|
/**
|
|
23
41
|
* Normalize a list parameter that may arrive as a string (newline-delimited
|
|
24
42
|
* bullet list from the LLM) into a string array (#3361).
|
|
@@ -189,6 +207,38 @@ export async function handleCompleteTask(params, basePath) {
|
|
|
189
207
|
}
|
|
190
208
|
// Store rendered markdown in DB for D004 recovery
|
|
191
209
|
setTaskSummaryMd(params.milestoneId, params.sliceId, params.taskId, summaryMd);
|
|
210
|
+
// ── Close gates owned by execute-task (Q5/Q6/Q7) for this task ────────
|
|
211
|
+
// Each gate id maps to a specific params field via taskGateFieldForId.
|
|
212
|
+
// When the model populates the field, record `pass`; when it's empty,
|
|
213
|
+
// record `omitted`. Task-scoped rows are filtered by taskId so a single
|
|
214
|
+
// task's completion doesn't touch sibling tasks' gate rows.
|
|
215
|
+
try {
|
|
216
|
+
const pendingGates = getPendingGatesForTurn(params.milestoneId, params.sliceId, "execute-task", params.taskId);
|
|
217
|
+
if (pendingGates.length > 0) {
|
|
218
|
+
const ownedDefs = new Map(getGatesForTurn("execute-task").map((g) => [g.id, g]));
|
|
219
|
+
for (const row of pendingGates) {
|
|
220
|
+
const def = ownedDefs.get(row.gate_id);
|
|
221
|
+
if (!def)
|
|
222
|
+
continue;
|
|
223
|
+
const field = taskGateFieldForId(def.id, params);
|
|
224
|
+
const hasContent = typeof field === "string" && field.trim().length > 0;
|
|
225
|
+
saveGateResult({
|
|
226
|
+
milestoneId: params.milestoneId,
|
|
227
|
+
sliceId: params.sliceId,
|
|
228
|
+
taskId: params.taskId,
|
|
229
|
+
gateId: def.id,
|
|
230
|
+
verdict: hasContent ? "pass" : "omitted",
|
|
231
|
+
rationale: hasContent
|
|
232
|
+
? `${def.promptSection} section populated in task summary`
|
|
233
|
+
: `${def.promptSection} section left empty — recorded as omitted`,
|
|
234
|
+
findings: hasContent ? field.trim() : "",
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (gateErr) {
|
|
240
|
+
logWarning("tool", `complete-task gate close warning for ${params.milestoneId}/${params.sliceId}/${params.taskId}: ${gateErr.message}`);
|
|
241
|
+
}
|
|
192
242
|
// Invalidate all caches
|
|
193
243
|
invalidateStateCache();
|
|
194
244
|
clearPathCache();
|
|
@@ -2,6 +2,7 @@ import { ensureDbOpen } from "../bootstrap/dynamic-tools.js";
|
|
|
2
2
|
import { sanitizeCompleteMilestoneParams } from "../bootstrap/sanitize-complete-milestone.js";
|
|
3
3
|
import { loadWriteGateSnapshot, shouldBlockContextArtifactSaveInSnapshot } from "../bootstrap/write-gate.js";
|
|
4
4
|
import { getMilestone, getSliceStatusSummary, getSliceTaskCounts, _getAdapter, saveGateResult, } from "../gsd-db.js";
|
|
5
|
+
import { GATE_REGISTRY } from "../gate-registry.js";
|
|
5
6
|
import { saveArtifactToDb } from "../db-writer.js";
|
|
6
7
|
import { handleCompleteMilestone } from "./complete-milestone.js";
|
|
7
8
|
import { handleCompleteTask } from "./complete-task.js";
|
|
@@ -323,7 +324,9 @@ export async function executeSaveGateResult(params, basePath = process.cwd()) {
|
|
|
323
324
|
isError: true,
|
|
324
325
|
};
|
|
325
326
|
}
|
|
326
|
-
|
|
327
|
+
// Source of truth: gate-registry.ts. Every declared GateId is accepted,
|
|
328
|
+
// so adding a new gate in one place automatically flows through here.
|
|
329
|
+
const validGates = Object.keys(GATE_REGISTRY);
|
|
327
330
|
if (!validGates.includes(params.gateId)) {
|
|
328
331
|
return {
|
|
329
332
|
content: [{ type: "text", text: `Error: Invalid gateId "${params.gateId}". Must be one of: ${validGates.join(", ")}` }],
|
|
@@ -49,8 +49,15 @@ async function probeAndRegister(pi) {
|
|
|
49
49
|
return false;
|
|
50
50
|
}
|
|
51
51
|
const models = await discoverModels();
|
|
52
|
-
if (models.length === 0)
|
|
53
|
-
|
|
52
|
+
if (models.length === 0) {
|
|
53
|
+
// No local models means there's nothing usable to register in GSD.
|
|
54
|
+
// Keep the footer/status clean instead of advertising Ollama availability.
|
|
55
|
+
if (providerRegistered) {
|
|
56
|
+
pi.unregisterProvider("ollama");
|
|
57
|
+
providerRegistered = false;
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
54
61
|
const baseUrl = client.getOllamaHost();
|
|
55
62
|
// Use authMode "apiKey" with a dummy key (#3440).
|
|
56
63
|
// authMode "none" requires a custom streamSimple handler, but Ollama uses
|
|
@@ -102,10 +109,11 @@ export default function ollama(pi) {
|
|
|
102
109
|
else {
|
|
103
110
|
probeAndRegister(pi)
|
|
104
111
|
.then((found) => {
|
|
105
|
-
|
|
106
|
-
ctx.ui.setStatus("ollama", "Ollama");
|
|
112
|
+
ctx.ui.setStatus("ollama", found ? "Ollama" : undefined);
|
|
107
113
|
})
|
|
108
|
-
.catch(() => {
|
|
114
|
+
.catch(() => {
|
|
115
|
+
ctx.ui.setStatus("ollama", undefined);
|
|
116
|
+
});
|
|
109
117
|
}
|
|
110
118
|
});
|
|
111
119
|
pi.on("session_shutdown", async () => {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GSD Phase State — cross-extension coordination
|
|
3
|
+
* Copyright (c) 2026 Jeremy McSpadden <jeremy@fluxlabs.net>
|
|
4
|
+
*
|
|
5
|
+
* Lightweight module-level state that GSD auto-mode writes to and the
|
|
6
|
+
* subagent tool reads from. Both extensions run in the same process so
|
|
7
|
+
* a module variable is sufficient — no file I/O needed.
|
|
8
|
+
*/
|
|
9
|
+
let _active = false;
|
|
10
|
+
let _currentPhase = null;
|
|
11
|
+
/** Mark GSD auto-mode as active. */
|
|
12
|
+
export function activateGSD() {
|
|
13
|
+
_active = true;
|
|
14
|
+
}
|
|
15
|
+
/** Mark GSD auto-mode as inactive and clear the current phase. */
|
|
16
|
+
export function deactivateGSD() {
|
|
17
|
+
_active = false;
|
|
18
|
+
_currentPhase = null;
|
|
19
|
+
}
|
|
20
|
+
/** Set the currently dispatched GSD phase (e.g. "plan-milestone"). */
|
|
21
|
+
export function setCurrentPhase(phase) {
|
|
22
|
+
_currentPhase = phase;
|
|
23
|
+
}
|
|
24
|
+
/** Clear the current phase (unit completed or aborted). */
|
|
25
|
+
export function clearCurrentPhase() {
|
|
26
|
+
_currentPhase = null;
|
|
27
|
+
}
|
|
28
|
+
/** Returns true if GSD auto-mode is currently active. */
|
|
29
|
+
export function isGSDActive() {
|
|
30
|
+
return _active;
|
|
31
|
+
}
|
|
32
|
+
/** Returns the current GSD phase, or null if none is active. */
|
|
33
|
+
export function getCurrentPhase() {
|
|
34
|
+
return _active ? _currentPhase : null;
|
|
35
|
+
}
|
|
@@ -5,6 +5,12 @@ import * as fs from "node:fs";
|
|
|
5
5
|
import * as path from "node:path";
|
|
6
6
|
import { getAgentDir, parseFrontmatter } from "@gsd/pi-coding-agent";
|
|
7
7
|
const PROJECT_AGENT_DIR_CANDIDATES = [".gsd", ".pi"];
|
|
8
|
+
export function parseConflictsWith(value) {
|
|
9
|
+
if (typeof value !== "string")
|
|
10
|
+
return undefined;
|
|
11
|
+
const conflicts = value.split(",").map((s) => s.trim()).filter(Boolean);
|
|
12
|
+
return conflicts.length > 0 ? conflicts : undefined;
|
|
13
|
+
}
|
|
8
14
|
function parseAgentTools(value) {
|
|
9
15
|
if (typeof value === "string") {
|
|
10
16
|
const tools = value
|
|
@@ -52,11 +58,13 @@ function loadAgentsFromDir(dir, source) {
|
|
|
52
58
|
continue;
|
|
53
59
|
}
|
|
54
60
|
const tools = parseAgentTools(frontmatter.tools);
|
|
61
|
+
const conflictsWith = parseConflictsWith(frontmatter.conflicts_with);
|
|
55
62
|
agents.push({
|
|
56
63
|
name: frontmatter.name,
|
|
57
64
|
description: frontmatter.description,
|
|
58
65
|
tools: tools && tools.length > 0 ? tools : undefined,
|
|
59
66
|
model: frontmatter.model,
|
|
67
|
+
conflictsWith,
|
|
60
68
|
systemPrompt: body,
|
|
61
69
|
source,
|
|
62
70
|
filePath,
|
|
@@ -21,6 +21,7 @@ import { getMarkdownTheme } from "@gsd/pi-coding-agent";
|
|
|
21
21
|
import { Container, Markdown, Spacer, Text } from "@gsd/pi-tui";
|
|
22
22
|
import { Type } from "@sinclair/typebox";
|
|
23
23
|
import { formatTokenCount } from "../shared/mod.js";
|
|
24
|
+
import { getCurrentPhase } from "../shared/gsd-phase-state.js";
|
|
24
25
|
import { discoverAgents } from "./agents.js";
|
|
25
26
|
import { createIsolation, mergeDeltaPatches, readIsolationMode, } from "./isolation.js";
|
|
26
27
|
import { registerWorker, updateWorker } from "./worker-registry.js";
|
|
@@ -268,6 +269,22 @@ async function runSingleAgent(defaultCwd, agents, agentName, task, cwd, step, si
|
|
|
268
269
|
step,
|
|
269
270
|
};
|
|
270
271
|
}
|
|
272
|
+
// GSD phase guard: block agents that conflict with the active GSD phase
|
|
273
|
+
if (agent.conflictsWith && agent.conflictsWith.length > 0) {
|
|
274
|
+
const activePhase = getCurrentPhase();
|
|
275
|
+
if (activePhase && agent.conflictsWith.includes(activePhase)) {
|
|
276
|
+
return {
|
|
277
|
+
agent: agentName,
|
|
278
|
+
agentSource: agent.source,
|
|
279
|
+
task,
|
|
280
|
+
exitCode: 1,
|
|
281
|
+
messages: [],
|
|
282
|
+
stderr: `Agent "${agentName}" is blocked: it conflicts with the active GSD phase "${activePhase}". Use the built-in GSD workflow instead.`,
|
|
283
|
+
usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, contextTokens: 0, turns: 0 },
|
|
284
|
+
step,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
271
288
|
let tmpPromptDir = null;
|
|
272
289
|
let tmpPromptPath = null;
|
|
273
290
|
const currentResult = {
|
|
@@ -78,6 +78,8 @@ Based on the user's message, route directly to the appropriate workflow:
|
|
|
78
78
|
**If user intent is unclear, ask minimal clarifying questions:**
|
|
79
79
|
- "Create a MIDI skill" → "Task-execution skill (does MIDI tasks) or domain expertise (complete MIDI knowledge base)?"
|
|
80
80
|
- "Work on my skill" → "Which skill? What do you want to do with it?"
|
|
81
|
+
- Ask one clarifying question round at a time, then wait for the user's actual response before asking another.
|
|
82
|
+
- Never fabricate or simulate user responses while clarifying (for example, fake `[User]` markers or imagined answers).
|
|
81
83
|
|
|
82
84
|
Then proceed directly to the workflow.
|
|
83
85
|
</routing>
|
|
@@ -23,10 +23,14 @@ import { getPiDefaultModelAndProvider } from './pi-migration.js';
|
|
|
23
23
|
export function validateConfiguredModel(modelRegistry, settingsManager) {
|
|
24
24
|
const configuredProvider = settingsManager.getDefaultProvider();
|
|
25
25
|
const configuredModel = settingsManager.getDefaultModel();
|
|
26
|
-
const allModels = modelRegistry.getAll();
|
|
27
26
|
const availableModels = modelRegistry.getAvailable();
|
|
27
|
+
// Check against availableModels (configured + auth'd) rather than getAll()
|
|
28
|
+
// so a stale default pointing at an unconfigured provider triggers the
|
|
29
|
+
// fallback. Previously a model present in the registry but missing API
|
|
30
|
+
// key / OAuth would satisfy configuredExists and survive startup, ending
|
|
31
|
+
// up as ctx.model even though it couldn't actually be used.
|
|
28
32
|
const configuredExists = configuredProvider && configuredModel &&
|
|
29
|
-
|
|
33
|
+
availableModels.some((m) => m.provider === configuredProvider && m.id === configuredModel);
|
|
30
34
|
if (!configuredModel || !configuredExists) {
|
|
31
35
|
// Model not configured at all, or removed from registry — pick a fallback.
|
|
32
36
|
// Only fires when the model is genuinely unknown (not just temporarily unavailable).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
f-Gremw0nLxxFUySaHRPw
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"/_not-found/page": "/_not-found",
|
|
3
3
|
"/_global-error/page": "/_global-error",
|
|
4
|
-
"/api/boot/route": "/api/boot",
|
|
5
4
|
"/api/bridge-terminal/input/route": "/api/bridge-terminal/input",
|
|
5
|
+
"/api/boot/route": "/api/boot",
|
|
6
6
|
"/api/bridge-terminal/resize/route": "/api/bridge-terminal/resize",
|
|
7
7
|
"/api/bridge-terminal/stream/route": "/api/bridge-terminal/stream",
|
|
8
|
-
"/api/dev-mode/route": "/api/dev-mode",
|
|
9
8
|
"/api/cleanup/route": "/api/cleanup",
|
|
9
|
+
"/api/dev-mode/route": "/api/dev-mode",
|
|
10
10
|
"/api/doctor/route": "/api/doctor",
|
|
11
11
|
"/api/captures/route": "/api/captures",
|
|
12
|
+
"/api/export-data/route": "/api/export-data",
|
|
12
13
|
"/api/browse-directories/route": "/api/browse-directories",
|
|
13
14
|
"/api/forensics/route": "/api/forensics",
|
|
14
15
|
"/api/git/route": "/api/git",
|
|
15
|
-
"/api/export-data/route": "/api/export-data",
|
|
16
16
|
"/api/history/route": "/api/history",
|
|
17
17
|
"/api/hooks/route": "/api/hooks",
|
|
18
|
+
"/api/experimental/route": "/api/experimental",
|
|
18
19
|
"/api/inspect/route": "/api/inspect",
|
|
19
20
|
"/api/knowledge/route": "/api/knowledge",
|
|
20
|
-
"/api/notifications/route": "/api/notifications",
|
|
21
21
|
"/api/live-state/route": "/api/live-state",
|
|
22
|
-
"/api/
|
|
22
|
+
"/api/notifications/route": "/api/notifications",
|
|
23
23
|
"/api/preferences/route": "/api/preferences",
|
|
24
24
|
"/api/recovery/route": "/api/recovery",
|
|
25
|
-
"/api/projects/route": "/api/projects",
|
|
26
25
|
"/api/onboarding/route": "/api/onboarding",
|
|
26
|
+
"/api/projects/route": "/api/projects",
|
|
27
27
|
"/api/session/browser/route": "/api/session/browser",
|
|
28
28
|
"/api/session/command/route": "/api/session/command",
|
|
29
29
|
"/api/session/events/route": "/api/session/events",
|
|
30
|
+
"/api/files/route": "/api/files",
|
|
31
|
+
"/api/settings-data/route": "/api/settings-data",
|
|
30
32
|
"/api/session/manage/route": "/api/session/manage",
|
|
31
33
|
"/api/shutdown/route": "/api/shutdown",
|
|
32
|
-
"/api/settings-data/route": "/api/settings-data",
|
|
33
34
|
"/api/skill-health/route": "/api/skill-health",
|
|
34
35
|
"/api/steer/route": "/api/steer",
|
|
35
|
-
"/api/files/route": "/api/files",
|
|
36
36
|
"/api/terminal/input/route": "/api/terminal/input",
|
|
37
|
-
"/api/switch-root/route": "/api/switch-root",
|
|
38
37
|
"/api/terminal/resize/route": "/api/terminal/resize",
|
|
38
|
+
"/api/switch-root/route": "/api/switch-root",
|
|
39
39
|
"/api/terminal/sessions/route": "/api/terminal/sessions",
|
|
40
|
-
"/api/undo/route": "/api/undo",
|
|
41
40
|
"/api/terminal/stream/route": "/api/terminal/stream",
|
|
41
|
+
"/api/undo/route": "/api/undo",
|
|
42
42
|
"/api/terminal/upload/route": "/api/terminal/upload",
|
|
43
43
|
"/api/visualizer/route": "/api/visualizer",
|
|
44
44
|
"/api/update/route": "/api/update",
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static/
|
|
8
|
-
"static/
|
|
7
|
+
"static/f-Gremw0nLxxFUySaHRPw/_buildManifest.js",
|
|
8
|
+
"static/f-Gremw0nLxxFUySaHRPw/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [
|
|
11
11
|
"static/chunks/webpack-b868033a5834586d.js",
|
|
12
12
|
"static/chunks/4bd1b696-e356ca5ba0218e27.js",
|
|
13
13
|
"static/chunks/3794-42fdce068d44fa4f.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": "515da08b80cf5a7a7ceba10caecab5a1",
|
|
82
|
+
"previewModeSigningKey": "1c7f01388cfd3f6448afe08b93331326e527e281866833a8cc2b1e91e241ecdf",
|
|
83
|
+
"previewModeEncryptionKey": "223a2f68f2cb02ac492bdc7405e0f91dc13bf734f63a0595931822ee0c1637e5"
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"transform": "lodash/{{member}}"
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
|
-
"outputFileTracingRoot": "/
|
|
107
|
+
"outputFileTracingRoot": "/__w/gsd-2/gsd-2",
|
|
108
108
|
"cacheComponents": false,
|
|
109
109
|
"cacheLife": {
|
|
110
110
|
"default": {
|
|
@@ -308,11 +308,11 @@
|
|
|
308
308
|
"node-pty"
|
|
309
309
|
],
|
|
310
310
|
"turbopack": {
|
|
311
|
-
"root": "/
|
|
311
|
+
"root": "/__w/gsd-2/gsd-2"
|
|
312
312
|
},
|
|
313
313
|
"distDirRoot": ".next"
|
|
314
314
|
},
|
|
315
|
-
"appDir": "/
|
|
315
|
+
"appDir": "/__w/gsd-2/gsd-2/web",
|
|
316
316
|
"relativeAppDir": "web",
|
|
317
317
|
"files": [
|
|
318
318
|
".next/routes-manifest.json",
|