gsd-pi 2.50.0-dev.d210a87 → 2.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/cli.js +0 -26
- package/dist/loader.js +0 -4
- package/dist/resource-loader.d.ts +1 -4
- package/dist/resource-loader.js +3 -138
- package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -3
- package/dist/resources/extensions/bg-shell/interaction.js +1 -3
- package/dist/resources/extensions/bg-shell/process-manager.js +1 -4
- package/dist/resources/extensions/claude-code-cli/partial-builder.js +0 -5
- package/dist/resources/extensions/gsd/auto/phases.js +1 -16
- package/dist/resources/extensions/gsd/auto/session.js +0 -5
- package/dist/resources/extensions/gsd/auto-dashboard.js +3 -22
- package/dist/resources/extensions/gsd/auto-dispatch.js +54 -81
- package/dist/resources/extensions/gsd/auto-post-unit.js +76 -37
- package/dist/resources/extensions/gsd/auto-prompts.js +0 -57
- package/dist/resources/extensions/gsd/auto-recovery.js +25 -21
- package/dist/resources/extensions/gsd/auto.js +5 -15
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +0 -16
- package/dist/resources/extensions/gsd/crash-recovery.js +2 -6
- package/dist/resources/extensions/gsd/custom-execution-policy.js +2 -3
- package/dist/resources/extensions/gsd/custom-verification.js +1 -3
- package/dist/resources/extensions/gsd/custom-workflow-engine.js +2 -3
- package/dist/resources/extensions/gsd/dashboard-overlay.js +0 -4
- package/dist/resources/extensions/gsd/detection.js +3 -589
- package/dist/resources/extensions/gsd/dispatch-guard.js +1 -2
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +0 -15
- package/dist/resources/extensions/gsd/files.js +1 -5
- package/dist/resources/extensions/gsd/guided-flow.js +0 -10
- package/dist/resources/extensions/gsd/init-wizard.js +1 -9
- package/dist/resources/extensions/gsd/model-router.js +0 -25
- package/dist/resources/extensions/gsd/notifications.js +0 -23
- package/dist/resources/extensions/gsd/preferences-skills.js +5 -11
- package/dist/resources/extensions/gsd/preferences-types.js +0 -1
- package/dist/resources/extensions/gsd/preferences-validation.js +0 -25
- package/dist/resources/extensions/gsd/preferences.js +0 -3
- package/dist/resources/extensions/gsd/prompts/forensics.md +7 -11
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +1 -6
- package/dist/resources/extensions/gsd/provider-error-pause.js +0 -8
- package/dist/resources/extensions/gsd/rule-registry.js +11 -10
- package/dist/resources/extensions/gsd/session-forensics.js +3 -7
- package/dist/resources/extensions/gsd/skill-discovery.js +2 -3
- package/dist/resources/extensions/gsd/skill-health.js +2 -2
- package/dist/resources/extensions/gsd/skill-telemetry.js +5 -15
- package/dist/resources/extensions/gsd/state.js +5 -17
- package/dist/resources/extensions/gsd/templates/milestone-validation.md +0 -12
- package/dist/resources/extensions/gsd/templates/preferences.md +0 -2
- package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +9 -28
- package/dist/resources/extensions/gsd/undo.js +7 -8
- package/dist/resources/extensions/gsd/unit-runtime.js +1 -2
- package/dist/resources/extensions/gsd/verification-gate.js +1 -3
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +16 -17
- 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/routes-manifest.json +0 -6
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +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.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +4 -4
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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 +26 -2
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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.js.nft.json +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 +4 -4
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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 +5 -5
- 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 +5 -5
- 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.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +16 -17
- package/dist/web/standalone/.next/server/chunks/229.js +12 -0
- package/dist/web/standalone/.next/server/chunks/441.js +2 -0
- package/dist/web/standalone/.next/server/chunks/471.js +13 -0
- package/dist/web/standalone/.next/server/chunks/{4741.js → 741.js} +1 -1
- package/dist/web/standalone/.next/server/functions-config-manifest.json +0 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +3 -3
- 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/server/webpack-runtime.js +1 -1
- package/dist/web/standalone/.next/static/MQOhBnkC_TLtNn_JvZWDj/_buildManifest.js +1 -0
- package/dist/web/standalone/.next/static/chunks/4024.7c75ac378de0f2b5.js +9 -0
- package/dist/web/standalone/.next/static/chunks/{2008.817d0885545aaea9.js → 485.243af25f0cdf50d6.js} +6 -6
- package/dist/web/standalone/.next/static/chunks/app/_global-error/page-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-f2a7482d42a5614b.js → page-2f24283c162b6ab3.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/api/boot/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/input/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/resize/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/stream/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/browse-directories/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/captures/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/cleanup/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/dev-mode/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/doctor/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/export-data/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/files/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/forensics/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/git/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/history/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/hooks/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/inspect/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/knowledge/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/live-state/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/onboarding/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/preferences/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/projects/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/recovery/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/remote-questions/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/session/browser/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/session/command/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/session/events/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/session/manage/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/settings-data/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/shutdown/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/skill-health/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/steer/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/switch-root/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/input/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/resize/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/sessions/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/stream/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/upload/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/undo/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/update/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/api/visualizer/route-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/app/{layout-a16c7a7ecdf0c2cf.js → layout-9ecfd95f343793f0.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-12dd5ece0df4badc.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d83ba70a25a85472.js +1 -0
- package/dist/web/standalone/.next/static/chunks/webpack-2473ce2c3879fff4.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/pi-ai/dist/types.d.ts +0 -1
- package/packages/pi-ai/dist/types.d.ts.map +1 -1
- package/packages/pi-ai/dist/types.js.map +1 -1
- package/packages/pi-ai/pnpm-lock.yaml +2022 -0
- package/packages/pi-ai/src/types.ts +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts +0 -1
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +0 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/bash-executor.d.ts +1 -3
- package/packages/pi-coding-agent/dist/core/bash-executor.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/bash-executor.js +1 -10
- package/packages/pi-coding-agent/dist/core/bash-executor.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +0 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +0 -13
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +1 -19
- 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/extensions/wrapper.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/wrapper.js +0 -8
- package/packages/pi-coding-agent/dist/core/extensions/wrapper.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/package-manager.js +1 -8
- package/packages/pi-coding-agent/dist/core/package-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/skills.d.ts +1 -11
- package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/skills.js +8 -30
- package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/slash-commands.js +0 -1
- package/packages/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +2 -2
- 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/footer.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +2 -3
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.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 -6
- 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.d.ts +0 -5
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +0 -12
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +1 -2
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
- package/packages/pi-coding-agent/pnpm-lock.yaml +454 -0
- package/packages/pi-coding-agent/src/core/agent-session.ts +1 -2
- package/packages/pi-coding-agent/src/core/bash-executor.ts +2 -10
- package/packages/pi-coding-agent/src/core/extensions/index.ts +0 -2
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +0 -18
- package/packages/pi-coding-agent/src/core/extensions/types.ts +0 -21
- package/packages/pi-coding-agent/src/core/extensions/wrapper.ts +0 -9
- package/packages/pi-coding-agent/src/core/package-manager.ts +1 -10
- package/packages/pi-coding-agent/src/core/skills.ts +10 -35
- package/packages/pi-coding-agent/src/core/slash-commands.ts +0 -1
- package/packages/pi-coding-agent/src/index.ts +0 -4
- package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +2 -3
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +4 -6
- package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +0 -15
- package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +1 -2
- package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/themes.js +1 -2
- package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
- package/scripts/postinstall.js +6 -163
- package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -3
- package/src/resources/extensions/bg-shell/interaction.ts +1 -3
- package/src/resources/extensions/bg-shell/process-manager.ts +1 -4
- package/src/resources/extensions/claude-code-cli/partial-builder.ts +0 -5
- package/src/resources/extensions/gsd/auto/phases.ts +1 -15
- package/src/resources/extensions/gsd/auto/session.ts +0 -6
- package/src/resources/extensions/gsd/auto-dashboard.ts +3 -31
- package/src/resources/extensions/gsd/auto-dispatch.ts +51 -84
- package/src/resources/extensions/gsd/auto-post-unit.ts +83 -56
- package/src/resources/extensions/gsd/auto-prompts.ts +0 -48
- package/src/resources/extensions/gsd/auto-recovery.ts +26 -19
- package/src/resources/extensions/gsd/auto.ts +5 -15
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +0 -17
- package/src/resources/extensions/gsd/crash-recovery.ts +2 -6
- package/src/resources/extensions/gsd/custom-execution-policy.ts +2 -3
- package/src/resources/extensions/gsd/custom-verification.ts +1 -3
- package/src/resources/extensions/gsd/custom-workflow-engine.ts +2 -3
- package/src/resources/extensions/gsd/dashboard-overlay.ts +0 -7
- package/src/resources/extensions/gsd/detection.ts +3 -662
- package/src/resources/extensions/gsd/dispatch-guard.ts +1 -2
- package/src/resources/extensions/gsd/docs/preferences-reference.md +0 -15
- package/src/resources/extensions/gsd/files.ts +1 -6
- package/src/resources/extensions/gsd/guided-flow.ts +0 -11
- package/src/resources/extensions/gsd/init-wizard.ts +1 -9
- package/src/resources/extensions/gsd/model-router.ts +0 -25
- package/src/resources/extensions/gsd/notifications.ts +0 -23
- package/src/resources/extensions/gsd/preferences-skills.ts +5 -11
- package/src/resources/extensions/gsd/preferences-types.ts +0 -20
- package/src/resources/extensions/gsd/preferences-validation.ts +0 -26
- package/src/resources/extensions/gsd/preferences.ts +0 -3
- package/src/resources/extensions/gsd/prompts/forensics.md +7 -11
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +1 -6
- package/src/resources/extensions/gsd/provider-error-pause.ts +0 -9
- package/src/resources/extensions/gsd/rule-registry.ts +11 -10
- package/src/resources/extensions/gsd/session-forensics.ts +3 -7
- package/src/resources/extensions/gsd/skill-discovery.ts +2 -3
- package/src/resources/extensions/gsd/skill-health.ts +2 -2
- package/src/resources/extensions/gsd/skill-telemetry.ts +5 -15
- package/src/resources/extensions/gsd/state.ts +5 -16
- package/src/resources/extensions/gsd/templates/milestone-validation.md +0 -12
- package/src/resources/extensions/gsd/templates/preferences.md +0 -2
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +0 -16
- package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +0 -68
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +3 -5
- package/src/resources/extensions/gsd/tests/custom-verification.test.ts +0 -33
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +3 -4
- package/src/resources/extensions/gsd/tests/detection.test.ts +0 -838
- package/src/resources/extensions/gsd/tests/dist-redirect.mjs +9 -28
- package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +0 -63
- package/src/resources/extensions/gsd/tests/model-router.test.ts +0 -40
- package/src/resources/extensions/gsd/tests/notifications.test.ts +6 -28
- package/src/resources/extensions/gsd/tests/preferences.test.ts +0 -50
- package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +0 -40
- package/src/resources/extensions/gsd/tests/reactive-executor.test.ts +6 -6
- package/src/resources/extensions/gsd/tests/retry-state-reset.test.ts +5 -4
- package/src/resources/extensions/gsd/tests/run-uat.test.ts +0 -146
- package/src/resources/extensions/gsd/tests/sidecar-queue.test.ts +12 -12
- package/src/resources/extensions/gsd/tests/terminated-transient.test.ts +0 -24
- package/src/resources/extensions/gsd/tests/triage-dispatch.test.ts +2 -2
- package/src/resources/extensions/gsd/types.ts +0 -2
- package/src/resources/extensions/gsd/undo.ts +7 -8
- package/src/resources/extensions/gsd/unit-runtime.ts +1 -2
- package/src/resources/extensions/gsd/verification-gate.ts +1 -3
- package/dist/resources/extensions/gsd/auto-observability.js +0 -54
- package/dist/resources/extensions/gsd/auto-utils.js +0 -20
- package/dist/resources/extensions/gsd/observability-validator.js +0 -422
- package/dist/resources/extensions/gsd/roadmap-mutations.js +0 -110
- package/dist/resources/extensions/gsd/rtk-status.js +0 -43
- package/dist/resources/extensions/gsd/skill-catalog.js +0 -1026
- package/dist/resources/extensions/shared/rtk-session-stats.js +0 -189
- package/dist/resources/extensions/shared/rtk.js +0 -100
- package/dist/rtk.d.ts +0 -52
- package/dist/rtk.js +0 -332
- package/dist/web/standalone/.next/server/app/api/experimental/route.js +0 -3
- package/dist/web/standalone/.next/server/app/api/experimental/route.js.nft.json +0 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +0 -1
- package/dist/web/standalone/.next/server/chunks/2229.js +0 -12
- package/dist/web/standalone/.next/server/chunks/2331.js +0 -25
- package/dist/web/standalone/.next/server/chunks/5822.js +0 -2
- package/dist/web/standalone/.next/server/chunks/7471.js +0 -13
- package/dist/web/standalone/.next/static/chunks/4024.9ad5def014d90ce4.js +0 -9
- package/dist/web/standalone/.next/static/chunks/app/_global-error/page-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/boot/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/input/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/resize/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/bridge-terminal/stream/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/browse-directories/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/captures/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/cleanup/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/dev-mode/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/doctor/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/experimental/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/export-data/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/files/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/forensics/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/git/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/history/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/hooks/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/inspect/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/knowledge/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/live-state/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/onboarding/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/preferences/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/projects/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/recovery/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/remote-questions/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/session/browser/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/session/command/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/session/events/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/session/manage/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/settings-data/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/shutdown/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/skill-health/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/steer/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/switch-root/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/input/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/resize/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/sessions/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/stream/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/terminal/upload/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/undo/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/update/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/api/visualizer/route-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/app/page-b950e4e384cc62b3.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c4cc189e7b117ea2.js +0 -1
- package/dist/web/standalone/.next/static/chunks/webpack-cfc9a116e6450a6b.js +0 -1
- package/dist/web/standalone/.next/static/css/de141508b083f922.css +0 -1
- package/dist/web/standalone/.next/static/yJIyd5cXPNpmXTv18ZlyC/_buildManifest.js +0 -1
- package/src/resources/extensions/claude-code-cli/tests/partial-builder.test.ts +0 -105
- package/src/resources/extensions/gsd/auto-observability.ts +0 -72
- package/src/resources/extensions/gsd/auto-utils.ts +0 -25
- package/src/resources/extensions/gsd/observability-validator.ts +0 -456
- package/src/resources/extensions/gsd/roadmap-mutations.ts +0 -134
- package/src/resources/extensions/gsd/rtk-status.ts +0 -53
- package/src/resources/extensions/gsd/skill-catalog.ts +0 -1085
- package/src/resources/extensions/gsd/tests/double-merge-guard.test.ts +0 -97
- package/src/resources/extensions/gsd/tests/plan-quality-validator.test.ts +0 -474
- package/src/resources/extensions/gsd/tests/retry-diagnostic-reasoning.test.ts +0 -161
- package/src/resources/extensions/gsd/tests/rewrite-count-persist.test.ts +0 -82
- package/src/resources/extensions/gsd/tests/skill-catalog.test.ts +0 -193
- package/src/resources/extensions/shared/rtk-session-stats.ts +0 -249
- package/src/resources/extensions/shared/rtk.ts +0 -120
- /package/dist/web/standalone/.next/static/{yJIyd5cXPNpmXTv18ZlyC → MQOhBnkC_TLtNn_JvZWDj}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -19,8 +19,6 @@ One command. Walk away. Come back to a built project with clean git history.
|
|
|
19
19
|
|
|
20
20
|
<pre><code>npm install -g gsd-pi@latest</code></pre>
|
|
21
21
|
|
|
22
|
-
> GSD now provisions a managed [RTK](https://github.com/rtk-ai/rtk) binary on supported macOS, Linux, and Windows installs to compress shell-command output in `bash`, `async_bash`, `bg_shell`, and verification flows. GSD forces `RTK_TELEMETRY_DISABLED=1` for all managed invocations. Set `GSD_RTK_DISABLED=1` to disable the integration.
|
|
23
|
-
|
|
24
22
|
> **📋 NOTICE: New to Node on Mac?** If you installed Node.js via Homebrew, you may be running a development release instead of LTS. **[Read this guide](./docs/node-lts-macos.md)** to pin Node 24 LTS and avoid compatibility issues.
|
|
25
23
|
|
|
26
24
|
</div>
|
package/dist/cli.js
CHANGED
|
@@ -14,8 +14,6 @@ import { parseCliArgs as parseWebCliArgs, runWebCliBranch, migrateLegacyFlatSess
|
|
|
14
14
|
import { stopWebMode } from './web-mode.js';
|
|
15
15
|
import { getProjectSessionsDir } from './project-sessions.js';
|
|
16
16
|
import { markStartup, printStartupTimings } from './startup-timings.js';
|
|
17
|
-
import { bootstrapRtk, GSD_RTK_DISABLED_ENV } from './rtk.js';
|
|
18
|
-
import { loadEffectiveGSDPreferences } from './resources/extensions/gsd/preferences.js';
|
|
19
17
|
// ---------------------------------------------------------------------------
|
|
20
18
|
// V8 compile cache — Node 22+ can cache compiled bytecode across runs,
|
|
21
19
|
// eliminating repeated parse/compile overhead for unchanged modules.
|
|
@@ -116,26 +114,6 @@ if (!process.stdin.isTTY && !isPrintMode && !hasSubcommand && !cliFlags.listMode
|
|
|
116
114
|
process.stderr.write('[gsd] gsd --mode text "message" Text output mode\n');
|
|
117
115
|
process.exit(1);
|
|
118
116
|
}
|
|
119
|
-
async function ensureRtkBootstrap() {
|
|
120
|
-
if (ensureRtkBootstrap._done)
|
|
121
|
-
return;
|
|
122
|
-
// RTK is opt-in via experimental.rtk preference. Default: disabled.
|
|
123
|
-
// Honor GSD_RTK_DISABLED if already explicitly set in the environment
|
|
124
|
-
// (env var takes precedence over preferences for manual override).
|
|
125
|
-
if (!process.env[GSD_RTK_DISABLED_ENV]) {
|
|
126
|
-
const prefs = loadEffectiveGSDPreferences();
|
|
127
|
-
const rtkEnabled = prefs?.preferences.experimental?.rtk === true;
|
|
128
|
-
if (!rtkEnabled) {
|
|
129
|
-
process.env[GSD_RTK_DISABLED_ENV] = "1";
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
const rtkStatus = await bootstrapRtk();
|
|
133
|
-
ensureRtkBootstrap._done = true;
|
|
134
|
-
markStartup('bootstrapRtk');
|
|
135
|
-
if (!rtkStatus.available && rtkStatus.supported && rtkStatus.enabled && rtkStatus.reason) {
|
|
136
|
-
process.stderr.write(`[gsd] Warning: RTK unavailable — continuing without shell-command compression (${rtkStatus.reason}).\n`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
117
|
// `gsd <subcommand> --help` — show subcommand-specific help
|
|
140
118
|
const subcommand = cliFlags.messages[0];
|
|
141
119
|
if (subcommand && process.argv.includes('--help')) {
|
|
@@ -183,7 +161,6 @@ if (cliFlags.messages[0] === 'web' && cliFlags.messages[1] === 'stop') {
|
|
|
183
161
|
}
|
|
184
162
|
// `gsd --web [path]` or `gsd web [start] [path]` — launch browser-only web mode
|
|
185
163
|
if (cliFlags.web || (cliFlags.messages[0] === 'web' && cliFlags.messages[1] !== 'stop')) {
|
|
186
|
-
await ensureRtkBootstrap();
|
|
187
164
|
const webFlags = parseWebCliArgs(process.argv);
|
|
188
165
|
const webBranch = await runWebCliBranch(webFlags, {
|
|
189
166
|
stderr: process.stderr,
|
|
@@ -243,7 +220,6 @@ if (cliFlags.messages[0] === 'sessions') {
|
|
|
243
220
|
}
|
|
244
221
|
// `gsd headless` — run auto-mode without TUI
|
|
245
222
|
if (cliFlags.messages[0] === 'headless') {
|
|
246
|
-
await ensureRtkBootstrap();
|
|
247
223
|
const { runHeadless, parseHeadlessArgs } = await import('./headless.js');
|
|
248
224
|
await runHeadless(parseHeadlessArgs(process.argv));
|
|
249
225
|
process.exit(0);
|
|
@@ -372,7 +348,6 @@ if (!settingsManager.getCollapseChangelog()) {
|
|
|
372
348
|
// Print / subagent mode — single-shot execution, no TTY required
|
|
373
349
|
// ---------------------------------------------------------------------------
|
|
374
350
|
if (isPrintMode) {
|
|
375
|
-
await ensureRtkBootstrap();
|
|
376
351
|
const sessionManager = cliFlags.noSession
|
|
377
352
|
? SessionManager.inMemory()
|
|
378
353
|
: SessionManager.create(process.cwd());
|
|
@@ -490,7 +465,6 @@ if (!cliFlags.worktree && !isPrintMode) {
|
|
|
490
465
|
// ---------------------------------------------------------------------------
|
|
491
466
|
// Interactive mode — normal TTY session
|
|
492
467
|
// ---------------------------------------------------------------------------
|
|
493
|
-
await ensureRtkBootstrap();
|
|
494
468
|
// Per-directory session storage — same encoding as the upstream SDK so that
|
|
495
469
|
// /resume only shows sessions from the current working directory.
|
|
496
470
|
const cwd = process.cwd();
|
package/dist/loader.js
CHANGED
|
@@ -61,7 +61,6 @@ if (firstArg === '--help' || firstArg === '-h') {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
import { agentDir, appRoot } from './app-paths.js';
|
|
64
|
-
import { applyRtkProcessEnv } from './rtk.js';
|
|
65
64
|
import { serializeBundledExtensionPaths } from './bundled-extension-paths.js';
|
|
66
65
|
import { discoverExtensionEntryPaths } from './extension-discovery.js';
|
|
67
66
|
import { loadRegistry, readManifestFromEntryPath, isExtensionEnabled } from './extension-registry.js';
|
|
@@ -93,9 +92,6 @@ if (!existsSync(appRoot)) {
|
|
|
93
92
|
}
|
|
94
93
|
// GSD_CODING_AGENT_DIR — tells pi's getAgentDir() to return ~/.gsd/agent/ instead of ~/.gsd/agent/
|
|
95
94
|
process.env.GSD_CODING_AGENT_DIR = agentDir;
|
|
96
|
-
// RTK environment — make ~/.gsd/agent/bin visible to all child-process paths,
|
|
97
|
-
// not just the bash tool, and force-disable RTK telemetry for GSD-managed use.
|
|
98
|
-
applyRtkProcessEnv(process.env);
|
|
99
95
|
// NODE_PATH — make gsd's own node_modules available to extensions loaded via jiti.
|
|
100
96
|
// Without this, extensions (e.g. browser-tools) can't resolve dependencies like
|
|
101
97
|
// `playwright` because jiti resolves modules from pi-coding-agent's location, not gsd's.
|
|
@@ -8,12 +8,9 @@ export declare function getNewerManagedResourceVersion(agentDir: string, current
|
|
|
8
8
|
*
|
|
9
9
|
* - extensions/ → ~/.gsd/agent/extensions/ (overwrite when version changes)
|
|
10
10
|
* - agents/ → ~/.gsd/agent/agents/ (overwrite when version changes)
|
|
11
|
+
* - skills/ → ~/.gsd/agent/skills/ (overwrite when version changes)
|
|
11
12
|
* - GSD-WORKFLOW.md → ~/.gsd/agent/GSD-WORKFLOW.md (fallback for env var miss)
|
|
12
13
|
*
|
|
13
|
-
* Skills are NOT synced here. They are installed by the user via the
|
|
14
|
-
* skills.sh CLI (`npx skills add <repo>`) into ~/.agents/skills/ — the
|
|
15
|
-
* industry-standard Agent Skills ecosystem directory.
|
|
16
|
-
*
|
|
17
14
|
* Skips the copy when the managed-resources.json version matches the current
|
|
18
15
|
* GSD version, avoiding ~128ms of synchronous cpSync on every startup.
|
|
19
16
|
* After `npm update -g @glittercowboy/gsd`, versions will differ and the
|
package/dist/resource-loader.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DefaultResourceLoader } from '@gsd/pi-coding-agent';
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
|
-
import { chmodSync, copyFileSync, cpSync, existsSync, lstatSync, mkdirSync,
|
|
4
|
+
import { chmodSync, copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readlinkSync, readdirSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
5
5
|
import { dirname, join, relative, resolve } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import { compareSemver } from './update-check.js';
|
|
@@ -352,12 +352,9 @@ function pruneRemovedBundledExtensions(manifest, agentDir) {
|
|
|
352
352
|
*
|
|
353
353
|
* - extensions/ → ~/.gsd/agent/extensions/ (overwrite when version changes)
|
|
354
354
|
* - agents/ → ~/.gsd/agent/agents/ (overwrite when version changes)
|
|
355
|
+
* - skills/ → ~/.gsd/agent/skills/ (overwrite when version changes)
|
|
355
356
|
* - GSD-WORKFLOW.md → ~/.gsd/agent/GSD-WORKFLOW.md (fallback for env var miss)
|
|
356
357
|
*
|
|
357
|
-
* Skills are NOT synced here. They are installed by the user via the
|
|
358
|
-
* skills.sh CLI (`npx skills add <repo>`) into ~/.agents/skills/ — the
|
|
359
|
-
* industry-standard Agent Skills ecosystem directory.
|
|
360
|
-
*
|
|
361
358
|
* Skips the copy when the managed-resources.json version matches the current
|
|
362
359
|
* GSD version, avoiding ~128ms of synchronous cpSync on every startup.
|
|
363
360
|
* After `npm update -g @glittercowboy/gsd`, versions will differ and the
|
|
@@ -378,9 +375,6 @@ export function initResources(agentDir) {
|
|
|
378
375
|
// launch, not just during resource syncs. A stale/broken symlink makes ALL
|
|
379
376
|
// extensions fail to resolve @gsd/* packages, rendering GSD non-functional.
|
|
380
377
|
ensureNodeModulesSymlink(agentDir);
|
|
381
|
-
// Migrate legacy skills on every launch (not gated by manifest) so that
|
|
382
|
-
// partial-failure retries don't wait for a version bump.
|
|
383
|
-
migrateSkillsToEcosystemDir(agentDir);
|
|
384
378
|
// Skip the full copy when both version AND content fingerprint match.
|
|
385
379
|
// Version-only checks miss same-version content changes (npm link dev workflow,
|
|
386
380
|
// hotfixes within a release). The content hash catches those at ~1ms cost.
|
|
@@ -395,13 +389,7 @@ export function initResources(agentDir) {
|
|
|
395
389
|
// Sync bundled resources — overwrite so updates land on next launch.
|
|
396
390
|
syncResourceDir(bundledExtensionsDir, join(agentDir, 'extensions'));
|
|
397
391
|
syncResourceDir(join(resourcesDir, 'agents'), join(agentDir, 'agents'));
|
|
398
|
-
|
|
399
|
-
// skills.sh CLI (`npx skills add <repo>`) into ~/.agents/skills/ which
|
|
400
|
-
// is the industry-standard Agent Skills ecosystem directory.
|
|
401
|
-
//
|
|
402
|
-
// Migration from the legacy ~/.gsd/agent/skills/ directory is handled
|
|
403
|
-
// above the manifest check so it runs on every launch (including retries
|
|
404
|
-
// after partial copy failures).
|
|
392
|
+
syncResourceDir(join(resourcesDir, 'skills'), join(agentDir, 'skills'));
|
|
405
393
|
// Sync GSD-WORKFLOW.md to agentDir as a fallback for when GSD_WORKFLOW_PATH
|
|
406
394
|
// env var is not set (e.g. fork/dev builds, alternative entry points).
|
|
407
395
|
const workflowSrc = join(resourcesDir, 'GSD-WORKFLOW.md');
|
|
@@ -417,129 +405,6 @@ export function initResources(agentDir) {
|
|
|
417
405
|
writeManagedResourceManifest(agentDir);
|
|
418
406
|
ensureRegistryEntries(join(agentDir, 'extensions'));
|
|
419
407
|
}
|
|
420
|
-
// ─── Legacy Skill Migration ──────────────────────────────────────────────────────
|
|
421
|
-
/**
|
|
422
|
-
* One-time migration: copy user-customized skills from the old
|
|
423
|
-
* ~/.gsd/agent/skills/ directory into ~/.agents/skills/.
|
|
424
|
-
*
|
|
425
|
-
* The migration is conservative:
|
|
426
|
-
* - Only skill directories containing a SKILL.md are considered.
|
|
427
|
-
* - Copies, does not move — the old directory stays intact so downgrading
|
|
428
|
-
* to a pre-migration GSD version still works.
|
|
429
|
-
* - Collision-safe — if a skill name already exists in the target, the
|
|
430
|
-
* existing ecosystem skill wins (user may have already installed a newer
|
|
431
|
-
* version via skills.sh).
|
|
432
|
-
* - Writes a `.migrated-to-agents` marker inside the legacy directory so
|
|
433
|
-
* the migration runs at most once.
|
|
434
|
-
*/
|
|
435
|
-
function migrateSkillsToEcosystemDir(agentDir) {
|
|
436
|
-
const legacyDir = join(agentDir, 'skills');
|
|
437
|
-
const markerPath = join(legacyDir, '.migrated-to-agents');
|
|
438
|
-
// Already migrated or no legacy dir — nothing to do
|
|
439
|
-
if (!existsSync(legacyDir))
|
|
440
|
-
return;
|
|
441
|
-
// Atomic marker check — 'wx' fails if file already exists, preventing races
|
|
442
|
-
// when two GSD processes start simultaneously.
|
|
443
|
-
let markerFd;
|
|
444
|
-
try {
|
|
445
|
-
markerFd = openSync(markerPath, 'wx');
|
|
446
|
-
}
|
|
447
|
-
catch {
|
|
448
|
-
return; // marker already exists (another process won the race, or already migrated)
|
|
449
|
-
}
|
|
450
|
-
try {
|
|
451
|
-
const ecosystemDir = join(homedir(), '.agents', 'skills');
|
|
452
|
-
mkdirSync(ecosystemDir, { recursive: true });
|
|
453
|
-
const entries = readdirSync(legacyDir, { withFileTypes: true });
|
|
454
|
-
let migrated = 0;
|
|
455
|
-
let candidates = 0;
|
|
456
|
-
for (const entry of entries) {
|
|
457
|
-
// Handle both real directories and symlinks pointing to directories
|
|
458
|
-
const isDir = entry.isDirectory();
|
|
459
|
-
const isSymlink = entry.isSymbolicLink();
|
|
460
|
-
if (!isDir && !isSymlink)
|
|
461
|
-
continue;
|
|
462
|
-
const sourcePath = join(legacyDir, entry.name);
|
|
463
|
-
// For symlinks, verify the target is a directory
|
|
464
|
-
if (isSymlink) {
|
|
465
|
-
try {
|
|
466
|
-
const stat = statSync(sourcePath);
|
|
467
|
-
if (!stat.isDirectory())
|
|
468
|
-
continue;
|
|
469
|
-
}
|
|
470
|
-
catch {
|
|
471
|
-
continue; // broken symlink — skip
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
const skillMd = join(sourcePath, 'SKILL.md');
|
|
475
|
-
if (!existsSync(skillMd))
|
|
476
|
-
continue;
|
|
477
|
-
const target = join(ecosystemDir, entry.name);
|
|
478
|
-
if (existsSync(target))
|
|
479
|
-
continue; // ecosystem version wins
|
|
480
|
-
candidates++;
|
|
481
|
-
try {
|
|
482
|
-
if (isSymlink) {
|
|
483
|
-
// Recreate the symlink in the ecosystem directory using an absolute
|
|
484
|
-
// target. Relative symlinks would resolve from the new parent dir
|
|
485
|
-
// (~/.agents/skills/) instead of the original (~/.gsd/agent/skills/),
|
|
486
|
-
// pointing to the wrong location.
|
|
487
|
-
const rawTarget = readlinkSync(sourcePath);
|
|
488
|
-
const absTarget = resolve(dirname(sourcePath), rawTarget);
|
|
489
|
-
symlinkSync(absTarget, target);
|
|
490
|
-
}
|
|
491
|
-
else {
|
|
492
|
-
cpSync(sourcePath, target, { recursive: true });
|
|
493
|
-
}
|
|
494
|
-
migrated++;
|
|
495
|
-
}
|
|
496
|
-
catch {
|
|
497
|
-
// non-fatal — skip this skill
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
// If any skills failed to copy, remove the marker so migration retries
|
|
501
|
-
// on the next launch. This keeps the legacy dir as fallback until every
|
|
502
|
-
// skill has been successfully migrated.
|
|
503
|
-
if (migrated < candidates) {
|
|
504
|
-
try {
|
|
505
|
-
closeSync(markerFd);
|
|
506
|
-
markerFd = -1;
|
|
507
|
-
}
|
|
508
|
-
catch { /* non-fatal */ }
|
|
509
|
-
try {
|
|
510
|
-
unlinkSync(markerPath);
|
|
511
|
-
}
|
|
512
|
-
catch { /* non-fatal */ }
|
|
513
|
-
return;
|
|
514
|
-
}
|
|
515
|
-
// Write migration info to the marker
|
|
516
|
-
try {
|
|
517
|
-
writeFileSync(markerFd, `Migrated ${migrated} skill(s) to ${ecosystemDir} on ${new Date().toISOString()}\n`);
|
|
518
|
-
}
|
|
519
|
-
catch { /* non-fatal */ }
|
|
520
|
-
}
|
|
521
|
-
catch {
|
|
522
|
-
// can't create ecosystem dir or read legacy dir — close fd first (required on Windows
|
|
523
|
-
// where unlinkSync fails on open handles), then remove marker so we retry next launch
|
|
524
|
-
try {
|
|
525
|
-
closeSync(markerFd);
|
|
526
|
-
markerFd = -1;
|
|
527
|
-
}
|
|
528
|
-
catch { /* non-fatal */ }
|
|
529
|
-
try {
|
|
530
|
-
unlinkSync(markerPath);
|
|
531
|
-
}
|
|
532
|
-
catch { /* non-fatal */ }
|
|
533
|
-
}
|
|
534
|
-
finally {
|
|
535
|
-
if (markerFd !== -1) {
|
|
536
|
-
try {
|
|
537
|
-
closeSync(markerFd);
|
|
538
|
-
}
|
|
539
|
-
catch { /* non-fatal */ }
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
408
|
export function hasStaleCompiledExtensionSiblings(extensionsDir) {
|
|
544
409
|
if (!existsSync(extensionsDir))
|
|
545
410
|
return false;
|
|
@@ -12,7 +12,6 @@ import { createWriteStream } from "node:fs";
|
|
|
12
12
|
import { tmpdir } from "node:os";
|
|
13
13
|
import { join } from "node:path";
|
|
14
14
|
import { randomBytes } from "node:crypto";
|
|
15
|
-
import { rewriteCommandWithRtk } from "../shared/rtk.js";
|
|
16
15
|
const schema = Type.Object({
|
|
17
16
|
command: Type.String({ description: "Bash command to execute in the background" }),
|
|
18
17
|
timeout: Type.Optional(Type.Number({ description: "Timeout in seconds (optional)" })),
|
|
@@ -94,8 +93,7 @@ function executeBashInBackground(command, cwd, signal, timeout) {
|
|
|
94
93
|
reject(err);
|
|
95
94
|
} };
|
|
96
95
|
const { shell, args } = getShellConfig();
|
|
97
|
-
const
|
|
98
|
-
const resolvedCommand = sanitizeCommand(rewrittenCommand);
|
|
96
|
+
const resolvedCommand = sanitizeCommand(command);
|
|
99
97
|
const child = spawn(shell, [...args, resolvedCommand], {
|
|
100
98
|
cwd,
|
|
101
99
|
detached: true,
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Expect-style interactions: send_and_wait, run on session, query shell environment.
|
|
3
3
|
*/
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
|
-
import { rewriteCommandWithRtk } from "../shared/rtk.js";
|
|
6
5
|
// ── Query Shell Environment ────────────────────────────────────────────────
|
|
7
6
|
export async function queryShellEnv(bg, timeout, signal) {
|
|
8
7
|
const sentinel = `__GSD_ENV_${randomUUID().slice(0, 8)}__`;
|
|
@@ -98,10 +97,9 @@ export async function runOnSession(bg, command, timeout, signal) {
|
|
|
98
97
|
// Snapshot current output buffer position
|
|
99
98
|
const startIndex = bg.output.length;
|
|
100
99
|
// Write the sentinel-wrapped command to stdin
|
|
101
|
-
const rewrittenCommand = rewriteCommandWithRtk(command);
|
|
102
100
|
const wrappedCommand = [
|
|
103
101
|
`echo ${startMarker}`,
|
|
104
|
-
|
|
102
|
+
command,
|
|
105
103
|
`${exitVar}=$?`,
|
|
106
104
|
`echo ${endMarker} $${exitVar}`,
|
|
107
105
|
].join("\n");
|
|
@@ -7,7 +7,6 @@ import { randomUUID } from "node:crypto";
|
|
|
7
7
|
import { writeFileSync, readFileSync, existsSync, mkdirSync } from "node:fs";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { getShellConfig, sanitizeCommand } from "@gsd/pi-coding-agent";
|
|
10
|
-
import { rewriteCommandWithRtk } from "../shared/rtk.js";
|
|
11
10
|
import { MAX_BUFFER_LINES, MAX_EVENTS, DEAD_PROCESS_TTL, } from "./types.js";
|
|
12
11
|
import { restoreWindowsVTInput, formatUptime } from "./utilities.js";
|
|
13
12
|
import { analyzeLine } from "./output-formatter.js";
|
|
@@ -102,9 +101,7 @@ export function startProcess(opts) {
|
|
|
102
101
|
const env = { ...process.env, ...(opts.env || {}) };
|
|
103
102
|
const { shell, args: shellArgs } = getShellConfig();
|
|
104
103
|
// Shell sessions default to the user's shell if no command specified
|
|
105
|
-
const command = processType === "shell" && !opts.command
|
|
106
|
-
? shell
|
|
107
|
-
: rewriteCommandWithRtk(opts.command);
|
|
104
|
+
const command = processType === "shell" && !opts.command ? shell : opts.command;
|
|
108
105
|
const proc = spawn(shell, [...shellArgs, sanitizeCommand(command)], {
|
|
109
106
|
cwd: opts.cwd,
|
|
110
107
|
stdio: ["pipe", "pipe", "pipe"],
|
|
@@ -210,12 +210,7 @@ export class PartialMessageBuilder {
|
|
|
210
210
|
block.arguments = JSON.parse(jsonStr);
|
|
211
211
|
}
|
|
212
212
|
catch {
|
|
213
|
-
// Stream was truncated mid-tool-call — JSON is garbage.
|
|
214
|
-
// Preserve the raw string for diagnostics but signal the
|
|
215
|
-
// malformation explicitly so downstream consumers can
|
|
216
|
-
// distinguish this from a healthy tool completion (#2574).
|
|
217
213
|
block.arguments = { _raw: jsonStr };
|
|
218
|
-
return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true };
|
|
219
214
|
}
|
|
220
215
|
return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial };
|
|
221
216
|
}
|
|
@@ -219,8 +219,6 @@ export async function runPreDispatch(ic, loopState) {
|
|
|
219
219
|
if (s.currentMilestoneId) {
|
|
220
220
|
try {
|
|
221
221
|
deps.resolver.mergeAndExit(s.currentMilestoneId, ctx.ui);
|
|
222
|
-
// Prevent stopAuto from attempting the same merge (#2645)
|
|
223
|
-
s.milestoneMergedInPhases = true;
|
|
224
222
|
}
|
|
225
223
|
catch (mergeErr) {
|
|
226
224
|
if (mergeErr instanceof MergeConflictError) {
|
|
@@ -286,8 +284,6 @@ export async function runPreDispatch(ic, loopState) {
|
|
|
286
284
|
if (s.currentMilestoneId) {
|
|
287
285
|
try {
|
|
288
286
|
deps.resolver.mergeAndExit(s.currentMilestoneId, ctx.ui);
|
|
289
|
-
// Prevent stopAuto from attempting the same merge (#2645)
|
|
290
|
-
s.milestoneMergedInPhases = true;
|
|
291
287
|
}
|
|
292
288
|
catch (mergeErr) {
|
|
293
289
|
if (mergeErr instanceof MergeConflictError) {
|
|
@@ -338,18 +334,7 @@ export async function runDispatch(ic, preData, loopState) {
|
|
|
338
334
|
});
|
|
339
335
|
if (dispatchResult.action === "stop") {
|
|
340
336
|
deps.emitJournalEvent({ ts: new Date().toISOString(), flowId: ic.flowId, seq: ic.nextSeq(), eventType: "dispatch-stop", rule: dispatchResult.matchedRule, data: { reason: dispatchResult.reason } });
|
|
341
|
-
|
|
342
|
-
// gate) — pause instead of hard-stopping so the session is resumable with
|
|
343
|
-
// `/gsd auto`. Error/info-level stops remain hard stops for infrastructure
|
|
344
|
-
// failures and terminal conditions respectively.
|
|
345
|
-
// See: https://github.com/gsd-build/gsd-2/issues/2474
|
|
346
|
-
if (dispatchResult.level === "warning") {
|
|
347
|
-
ctx.ui.notify(dispatchResult.reason, "warning");
|
|
348
|
-
await deps.pauseAuto(ctx, pi);
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
await closeoutAndStop(ctx, pi, s, deps, dispatchResult.reason);
|
|
352
|
-
}
|
|
337
|
+
await closeoutAndStop(ctx, pi, s, deps, dispatchResult.reason);
|
|
353
338
|
debugLog("autoLoop", { phase: "exit", reason: "dispatch-stop" });
|
|
354
339
|
return { action: "break", reason: "dispatch-stop" };
|
|
355
340
|
}
|
|
@@ -64,10 +64,6 @@ export class AutoSession {
|
|
|
64
64
|
// ── Isolation degradation ────────────────────────────────────────────
|
|
65
65
|
/** Set to true when worktree creation fails; prevents merge of nonexistent branch. */
|
|
66
66
|
isolationDegraded = false;
|
|
67
|
-
// ── Merge guard ──────────────────────────────────────────────────────
|
|
68
|
-
/** Set to true after phases.ts successfully calls mergeAndExit, so that
|
|
69
|
-
* stopAuto does not attempt the same merge a second time (#2645). */
|
|
70
|
-
milestoneMergedInPhases = false;
|
|
71
67
|
// ── Dispatch circuit breakers ──────────────────────────────────────
|
|
72
68
|
rewriteAttemptCount = 0;
|
|
73
69
|
// ── Metrics ──────────────────────────────────────────────────────────────
|
|
@@ -148,7 +144,6 @@ export class AutoSession {
|
|
|
148
144
|
this.sidecarQueue = [];
|
|
149
145
|
this.rewriteAttemptCount = 0;
|
|
150
146
|
this.isolationDegraded = false;
|
|
151
|
-
this.milestoneMergedInPhases = false;
|
|
152
147
|
// Signal handler
|
|
153
148
|
this.sigtermHandler = null;
|
|
154
149
|
// Loop promise state lives in auto-loop.ts module scope
|
|
@@ -19,7 +19,6 @@ import { getActiveWorktreeName } from "./worktree-command.js";
|
|
|
19
19
|
import { loadEffectiveGSDPreferences, getGlobalGSDPreferencesPath } from "./preferences.js";
|
|
20
20
|
import { resolveServiceTierIcon, getEffectiveServiceTier } from "./service-tier.js";
|
|
21
21
|
import { parseUnitId } from "./unit-id.js";
|
|
22
|
-
import { formatRtkSavingsLabel, getRtkSessionSavings, } from "../shared/rtk-session-stats.js";
|
|
23
22
|
// ─── UAT Slice Extraction ─────────────────────────────────────────────────────
|
|
24
23
|
/**
|
|
25
24
|
* Extract the target slice ID from a run-uat unit ID (e.g. "M001/S01" → "S01").
|
|
@@ -384,18 +383,6 @@ export function updateProgressWidget(ctx, unitType, unitId, state, accessors, ti
|
|
|
384
383
|
let pulseBright = true;
|
|
385
384
|
let cachedLines;
|
|
386
385
|
let cachedWidth;
|
|
387
|
-
let cachedRtkLabel;
|
|
388
|
-
const refreshRtkLabel = () => {
|
|
389
|
-
try {
|
|
390
|
-
const sessionId = ctx.sessionManager.getSessionId();
|
|
391
|
-
const savings = sessionId ? getRtkSessionSavings(accessors.getBasePath(), sessionId) : null;
|
|
392
|
-
cachedRtkLabel = formatRtkSavingsLabel(savings);
|
|
393
|
-
}
|
|
394
|
-
catch {
|
|
395
|
-
cachedRtkLabel = null;
|
|
396
|
-
}
|
|
397
|
-
};
|
|
398
|
-
refreshRtkLabel();
|
|
399
386
|
const pulseTimer = setInterval(() => {
|
|
400
387
|
pulseBright = !pulseBright;
|
|
401
388
|
cachedLines = undefined;
|
|
@@ -405,16 +392,13 @@ export function updateProgressWidget(ctx, unitType, unitId, state, accessors, ti
|
|
|
405
392
|
// task/slice completion mid-unit. Without this, the progress bar only
|
|
406
393
|
// updates at dispatch time, appearing frozen during long-running units.
|
|
407
394
|
// 15s (vs 5s) reduces synchronous file I/O on the hot path.
|
|
408
|
-
const progressRefreshTimer = setInterval(() => {
|
|
395
|
+
const progressRefreshTimer = mid ? setInterval(() => {
|
|
409
396
|
try {
|
|
410
|
-
|
|
411
|
-
updateSliceProgressCache(accessors.getBasePath(), mid.id, slice?.id);
|
|
412
|
-
}
|
|
413
|
-
refreshRtkLabel();
|
|
397
|
+
updateSliceProgressCache(accessors.getBasePath(), mid.id, slice?.id);
|
|
414
398
|
cachedLines = undefined;
|
|
415
399
|
}
|
|
416
400
|
catch { /* non-fatal */ }
|
|
417
|
-
}, 15_000);
|
|
401
|
+
}, 15_000) : null;
|
|
418
402
|
return {
|
|
419
403
|
render(width) {
|
|
420
404
|
if (cachedLines && cachedWidth === width)
|
|
@@ -675,9 +659,6 @@ export function updateProgressWidget(ctx, unitType, unitId, state, accessors, ti
|
|
|
675
659
|
if (statsLine) {
|
|
676
660
|
lines.push(rightAlign("", statsLine, width));
|
|
677
661
|
}
|
|
678
|
-
if (cachedRtkLabel) {
|
|
679
|
-
lines.push(rightAlign("", theme.fg("dim", cachedRtkLabel), width));
|
|
680
|
-
}
|
|
681
662
|
}
|
|
682
663
|
// PWD line with last commit info right-aligned
|
|
683
664
|
const lastCommit = getLastCommit(accessors.getBasePath());
|