gsd-pi 2.59.0 → 2.60.0-dev.2580e65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resources/extensions/ask-user-questions.js +7 -4
- package/dist/resources/extensions/gsd/auto/phases.js +62 -1
- package/dist/resources/extensions/gsd/auto-dashboard.js +21 -8
- package/dist/resources/extensions/gsd/auto-dispatch.js +6 -3
- package/dist/resources/extensions/gsd/auto-model-selection.js +57 -3
- package/dist/resources/extensions/gsd/auto-post-unit.js +43 -3
- package/dist/resources/extensions/gsd/auto-prompts.js +49 -20
- package/dist/resources/extensions/gsd/auto-recovery.js +37 -18
- package/dist/resources/extensions/gsd/auto-start.js +9 -5
- package/dist/resources/extensions/gsd/auto-timers.js +11 -5
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +5 -3
- package/dist/resources/extensions/gsd/auto-verification.js +3 -2
- package/dist/resources/extensions/gsd/auto-worktree.js +120 -55
- package/dist/resources/extensions/gsd/auto.js +39 -17
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +6 -3
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +72 -2
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +4 -10
- package/dist/resources/extensions/gsd/bootstrap/journal-tools.js +2 -1
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +58 -5
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +11 -10
- package/dist/resources/extensions/gsd/captures.js +54 -1
- package/dist/resources/extensions/gsd/commands/catalog.js +2 -0
- package/dist/resources/extensions/gsd/commands-codebase.js +48 -21
- package/dist/resources/extensions/gsd/commands-inspect.js +2 -1
- package/dist/resources/extensions/gsd/commands-maintenance.js +32 -19
- package/dist/resources/extensions/gsd/complexity-classifier.js +9 -5
- package/dist/resources/extensions/gsd/context-masker.js +68 -0
- package/dist/resources/extensions/gsd/custom-verification.js +3 -2
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +7 -0
- package/dist/resources/extensions/gsd/gsd-db.js +35 -15
- package/dist/resources/extensions/gsd/guided-flow.js +19 -9
- package/dist/resources/extensions/gsd/init-wizard.js +12 -0
- package/dist/resources/extensions/gsd/markdown-renderer.js +11 -9
- package/dist/resources/extensions/gsd/md-importer.js +5 -4
- package/dist/resources/extensions/gsd/milestone-actions.js +3 -2
- package/dist/resources/extensions/gsd/milestone-ids.js +2 -1
- package/dist/resources/extensions/gsd/model-router.js +199 -45
- package/dist/resources/extensions/gsd/parallel-merge.js +5 -3
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +26 -14
- package/dist/resources/extensions/gsd/phase-anchor.js +56 -0
- package/dist/resources/extensions/gsd/preferences-types.js +2 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +91 -0
- package/dist/resources/extensions/gsd/preferences.js +15 -3
- package/dist/resources/extensions/gsd/prompt-loader.js +3 -2
- package/dist/resources/extensions/gsd/prompts/execute-task.md +2 -0
- package/dist/resources/extensions/gsd/prompts/rethink.md +7 -0
- package/dist/resources/extensions/gsd/prompts/triage-captures.md +6 -1
- package/dist/resources/extensions/gsd/rethink.js +5 -2
- package/dist/resources/extensions/gsd/rule-registry.js +7 -6
- package/dist/resources/extensions/gsd/safe-fs.js +6 -8
- package/dist/resources/extensions/gsd/state.js +1 -1
- package/dist/resources/extensions/gsd/status-guards.js +4 -3
- package/dist/resources/extensions/gsd/tools/complete-milestone.js +3 -2
- package/dist/resources/extensions/gsd/tools/complete-slice.js +3 -2
- package/dist/resources/extensions/gsd/tools/complete-task.js +3 -2
- package/dist/resources/extensions/gsd/tools/plan-milestone.js +3 -2
- package/dist/resources/extensions/gsd/tools/plan-slice.js +3 -2
- package/dist/resources/extensions/gsd/tools/plan-task.js +2 -1
- package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +4 -4
- package/dist/resources/extensions/gsd/tools/reopen-slice.js +2 -1
- package/dist/resources/extensions/gsd/tools/reopen-task.js +2 -1
- package/dist/resources/extensions/gsd/tools/replan-slice.js +2 -1
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +2 -1
- package/dist/resources/extensions/gsd/triage-resolution.js +135 -1
- package/dist/resources/extensions/gsd/triage-ui.js +12 -3
- package/dist/resources/extensions/gsd/workflow-events.js +2 -1
- package/dist/resources/extensions/gsd/workflow-logger.js +37 -4
- package/dist/resources/extensions/gsd/workflow-migration.js +14 -12
- package/dist/resources/extensions/gsd/workflow-projections.js +2 -2
- package/dist/resources/extensions/gsd/workflow-reconcile.js +2 -2
- package/dist/resources/extensions/gsd/worktree-manager.js +26 -14
- package/dist/resources/extensions/shared/interview-ui.js +3 -1
- package/dist/resources/skills/btw/SKILL.md +42 -0
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
- 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 +2 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +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/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 +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +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 +17 -17
- package/dist/web/standalone/.next/server/chunks/2229.js +1 -1
- package/dist/web/standalone/.next/server/chunks/7471.js +3 -3
- 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 +2 -2
- 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-0c485498795110d6.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/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/loader.js +5 -0
- package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +2 -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 +16 -0
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +26 -0
- package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/config.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/config.js +6 -1
- package/packages/pi-coding-agent/dist/core/lsp/config.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/defaults.json +2 -2
- package/packages/pi-coding-agent/dist/core/lsp/lsp-legacy-alias.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/lsp/lsp-legacy-alias.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/lsp/lsp-legacy-alias.test.js +47 -0
- package/packages/pi-coding-agent/dist/core/lsp/lsp-legacy-alias.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js +6 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +122 -0
- package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +1 -0
- 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 +30 -0
- 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.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +1 -7
- 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/extensions/loader.ts +6 -0
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +19 -0
- package/packages/pi-coding-agent/src/core/extensions/types.ts +26 -0
- package/packages/pi-coding-agent/src/core/lsp/config.ts +7 -1
- package/packages/pi-coding-agent/src/core/lsp/defaults.json +2 -2
- package/packages/pi-coding-agent/src/core/lsp/lsp-legacy-alias.test.ts +70 -0
- package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +156 -0
- package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.ts +7 -0
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +38 -0
- package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +1 -8
- package/pkg/package.json +1 -1
- package/src/resources/extensions/ask-user-questions.ts +7 -3
- package/src/resources/extensions/gsd/auto/phases.ts +70 -1
- package/src/resources/extensions/gsd/auto-dashboard.ts +22 -8
- package/src/resources/extensions/gsd/auto-dispatch.ts +7 -3
- package/src/resources/extensions/gsd/auto-model-selection.ts +77 -6
- package/src/resources/extensions/gsd/auto-post-unit.ts +52 -5
- package/src/resources/extensions/gsd/auto-prompts.ts +54 -20
- package/src/resources/extensions/gsd/auto-recovery.ts +38 -18
- package/src/resources/extensions/gsd/auto-start.ts +10 -9
- package/src/resources/extensions/gsd/auto-timers.ts +12 -5
- package/src/resources/extensions/gsd/auto-unit-closeout.ts +6 -2
- package/src/resources/extensions/gsd/auto-verification.ts +3 -6
- package/src/resources/extensions/gsd/auto-worktree.ts +121 -55
- package/src/resources/extensions/gsd/auto.ts +40 -17
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +4 -3
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +80 -2
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +4 -16
- package/src/resources/extensions/gsd/bootstrap/journal-tools.ts +2 -1
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +61 -4
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +11 -10
- package/src/resources/extensions/gsd/captures.ts +71 -2
- package/src/resources/extensions/gsd/commands/catalog.ts +2 -0
- package/src/resources/extensions/gsd/commands-codebase.ts +52 -20
- package/src/resources/extensions/gsd/commands-inspect.ts +2 -1
- package/src/resources/extensions/gsd/commands-maintenance.ts +28 -19
- package/src/resources/extensions/gsd/complexity-classifier.ts +10 -5
- package/src/resources/extensions/gsd/context-masker.ts +74 -0
- package/src/resources/extensions/gsd/custom-verification.ts +3 -2
- package/src/resources/extensions/gsd/docs/preferences-reference.md +7 -0
- package/src/resources/extensions/gsd/gsd-db.ts +14 -16
- package/src/resources/extensions/gsd/guided-flow.ts +9 -8
- package/src/resources/extensions/gsd/init-wizard.ts +12 -0
- package/src/resources/extensions/gsd/markdown-renderer.ts +11 -17
- package/src/resources/extensions/gsd/md-importer.ts +5 -4
- package/src/resources/extensions/gsd/milestone-actions.ts +3 -2
- package/src/resources/extensions/gsd/milestone-ids.ts +2 -1
- package/src/resources/extensions/gsd/model-router.ts +245 -56
- package/src/resources/extensions/gsd/parallel-merge.ts +5 -3
- package/src/resources/extensions/gsd/parallel-orchestrator.ts +18 -14
- package/src/resources/extensions/gsd/phase-anchor.ts +71 -0
- package/src/resources/extensions/gsd/preferences-types.ts +22 -0
- package/src/resources/extensions/gsd/preferences-validation.ts +83 -0
- package/src/resources/extensions/gsd/preferences.ts +16 -3
- package/src/resources/extensions/gsd/prompt-loader.ts +3 -2
- package/src/resources/extensions/gsd/prompts/execute-task.md +2 -0
- package/src/resources/extensions/gsd/prompts/rethink.md +7 -0
- package/src/resources/extensions/gsd/prompts/triage-captures.md +6 -1
- package/src/resources/extensions/gsd/rethink.ts +5 -2
- package/src/resources/extensions/gsd/rule-registry.ts +7 -6
- package/src/resources/extensions/gsd/safe-fs.ts +6 -5
- package/src/resources/extensions/gsd/state.ts +1 -1
- package/src/resources/extensions/gsd/status-guards.ts +4 -3
- package/src/resources/extensions/gsd/tests/capability-router.test.ts +347 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +63 -0
- package/src/resources/extensions/gsd/tests/complexity-classifier.test.ts +27 -2
- package/src/resources/extensions/gsd/tests/context-masker.test.ts +122 -0
- package/src/resources/extensions/gsd/tests/db-path-worktree-symlink.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/integration/state-machine-edge-cases.test.ts +1188 -0
- package/src/resources/extensions/gsd/tests/integration/state-machine-runtime-failures.test.ts +841 -0
- package/src/resources/extensions/gsd/tests/model-router.test.ts +488 -2
- package/src/resources/extensions/gsd/tests/phase-anchor.test.ts +83 -0
- package/src/resources/extensions/gsd/tests/preferences.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/remote-questions.test.ts +21 -0
- package/src/resources/extensions/gsd/tests/silent-catch-diagnostics.test.ts +284 -0
- package/src/resources/extensions/gsd/tests/status-guards.test.ts +4 -0
- package/src/resources/extensions/gsd/tests/stop-backtrack.test.ts +216 -0
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/workflow-logger-audit.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +6 -6
- package/src/resources/extensions/gsd/tools/complete-milestone.ts +3 -6
- package/src/resources/extensions/gsd/tools/complete-slice.ts +3 -6
- package/src/resources/extensions/gsd/tools/complete-task.ts +3 -6
- package/src/resources/extensions/gsd/tools/plan-milestone.ts +3 -6
- package/src/resources/extensions/gsd/tools/plan-slice.ts +3 -6
- package/src/resources/extensions/gsd/tools/plan-task.ts +2 -3
- package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +4 -6
- package/src/resources/extensions/gsd/tools/reopen-slice.ts +2 -3
- package/src/resources/extensions/gsd/tools/reopen-task.ts +2 -3
- package/src/resources/extensions/gsd/tools/replan-slice.ts +2 -3
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +2 -3
- package/src/resources/extensions/gsd/triage-resolution.ts +151 -1
- package/src/resources/extensions/gsd/triage-ui.ts +12 -3
- package/src/resources/extensions/gsd/types.ts +1 -0
- package/src/resources/extensions/gsd/workflow-events.ts +2 -1
- package/src/resources/extensions/gsd/workflow-logger.ts +52 -5
- package/src/resources/extensions/gsd/workflow-migration.ts +14 -12
- package/src/resources/extensions/gsd/workflow-projections.ts +2 -2
- package/src/resources/extensions/gsd/workflow-reconcile.ts +2 -2
- package/src/resources/extensions/gsd/worktree-manager.ts +16 -14
- package/src/resources/extensions/shared/interview-ui.ts +3 -1
- package/src/resources/extensions/shared/tests/interview-notes-loop.test.ts +144 -0
- package/src/resources/skills/btw/SKILL.md +42 -0
- package/dist/web/standalone/.next/static/chunks/app/page-62be3b5fa91e4c8f.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/{DGvT_c5Vb7Wu3X-fEOVUU → ogyMN7M-3bGGuRY08L5HR}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{DGvT_c5Vb7Wu3X-fEOVUU → ogyMN7M-3bGGuRY08L5HR}/_ssgManifest.js +0 -0
|
@@ -12,6 +12,7 @@ import { parseRoadmap as parseLegacyRoadmap, parsePlan as parseLegacyPlan } from
|
|
|
12
12
|
import { isDbAvailable, getTask, getSlice, getSliceTasks, updateTaskStatus } from "./gsd-db.js";
|
|
13
13
|
import { isValidationTerminal } from "./state.js";
|
|
14
14
|
import { getErrorMessage } from "./error-utils.js";
|
|
15
|
+
import { logWarning, logError } from "./workflow-logger.js";
|
|
15
16
|
import { nativeConflictFiles, nativeCommit, nativeCheckoutTheirs, nativeAddPaths, nativeMergeAbort, nativeResetHard, } from "./native-git-bridge.js";
|
|
16
17
|
import { resolveSlicePath, resolveSliceFile, resolveTasksDir, resolveTaskFiles, relMilestoneFile, relSliceFile, buildSliceFileName, resolveMilestoneFile, clearPathCache, resolveGsdRootFile, } from "./paths.js";
|
|
17
18
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, } from "node:fs";
|
|
@@ -40,7 +41,8 @@ export function hasImplementationArtifacts(basePath) {
|
|
|
40
41
|
encoding: "utf-8",
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
|
-
catch {
|
|
44
|
+
catch (e) {
|
|
45
|
+
logWarning("recovery", `git rev-parse check failed: ${e.message}`);
|
|
44
46
|
return true;
|
|
45
47
|
}
|
|
46
48
|
// Strategy: check `git diff --name-only` against the merge-base with the
|
|
@@ -59,8 +61,9 @@ export function hasImplementationArtifacts(basePath) {
|
|
|
59
61
|
const implFiles = changedFiles.filter(f => !f.startsWith(".gsd/") && !f.startsWith(".gsd\\"));
|
|
60
62
|
return implFiles.length > 0;
|
|
61
63
|
}
|
|
62
|
-
catch {
|
|
64
|
+
catch (e) {
|
|
63
65
|
// Non-fatal — if git operations fail, don't block the pipeline
|
|
66
|
+
logWarning("recovery", `implementation artifact check failed: ${e.message}`);
|
|
64
67
|
return true;
|
|
65
68
|
}
|
|
66
69
|
}
|
|
@@ -77,8 +80,9 @@ function detectMainBranch(basePath) {
|
|
|
77
80
|
if (result.trim())
|
|
78
81
|
return "main";
|
|
79
82
|
}
|
|
80
|
-
catch {
|
|
81
|
-
// main doesn't exist
|
|
83
|
+
catch (_) {
|
|
84
|
+
// Expected — main doesn't exist, try master next
|
|
85
|
+
void _;
|
|
82
86
|
}
|
|
83
87
|
try {
|
|
84
88
|
const result = execFileSync("git", ["rev-parse", "--verify", "master"], {
|
|
@@ -89,10 +93,13 @@ function detectMainBranch(basePath) {
|
|
|
89
93
|
if (result.trim())
|
|
90
94
|
return "master";
|
|
91
95
|
}
|
|
92
|
-
catch {
|
|
93
|
-
// master doesn't exist either
|
|
96
|
+
catch (_) {
|
|
97
|
+
// Expected — master doesn't exist either
|
|
98
|
+
void _;
|
|
94
99
|
}
|
|
95
|
-
|
|
100
|
+
// Neither main nor master found — warn and fall back
|
|
101
|
+
logWarning("recovery", "neither main nor master branch found, defaulting to main");
|
|
102
|
+
return "main";
|
|
96
103
|
}
|
|
97
104
|
/**
|
|
98
105
|
* Get files changed since the branch diverged from the target branch.
|
|
@@ -107,15 +114,17 @@ function getChangedFilesSinceBranch(basePath, targetBranch) {
|
|
|
107
114
|
return result ? result.split("\n").filter(Boolean) : [];
|
|
108
115
|
}
|
|
109
116
|
}
|
|
110
|
-
catch {
|
|
117
|
+
catch (err) {
|
|
111
118
|
// merge-base failed — fall back
|
|
119
|
+
logWarning("recovery", `merge-base detection failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
112
120
|
}
|
|
113
121
|
// Fallback: check last 20 commits
|
|
114
122
|
try {
|
|
115
123
|
const result = execFileSync("git", ["log", "--name-only", "--pretty=format:", "-20", "HEAD"], { cwd: basePath, stdio: ["ignore", "pipe", "pipe"], encoding: "utf-8" }).trim();
|
|
116
124
|
return result ? [...new Set(result.split("\n").filter(Boolean))] : [];
|
|
117
125
|
}
|
|
118
|
-
catch {
|
|
126
|
+
catch (e) {
|
|
127
|
+
logWarning("recovery", `git log fallback failed: ${e.message}`);
|
|
119
128
|
return [];
|
|
120
129
|
}
|
|
121
130
|
}
|
|
@@ -198,8 +207,9 @@ export function verifyExpectedArtifact(unitType, unitId, base) {
|
|
|
198
207
|
return false;
|
|
199
208
|
}
|
|
200
209
|
}
|
|
201
|
-
catch {
|
|
210
|
+
catch (err) {
|
|
202
211
|
// DB unavailable — treat as verified to avoid blocking
|
|
212
|
+
logWarning("recovery", `gate-evaluate DB check failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
203
213
|
}
|
|
204
214
|
return true;
|
|
205
215
|
}
|
|
@@ -291,8 +301,9 @@ export function verifyExpectedArtifact(unitType, unitId, base) {
|
|
|
291
301
|
}
|
|
292
302
|
}
|
|
293
303
|
}
|
|
294
|
-
catch {
|
|
304
|
+
catch (err) {
|
|
295
305
|
// Parse failure — don't block; slice plan may have non-standard format
|
|
306
|
+
logWarning("recovery", `plan-slice task plan verification failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
296
307
|
}
|
|
297
308
|
}
|
|
298
309
|
}
|
|
@@ -325,7 +336,8 @@ export function verifyExpectedArtifact(unitType, unitId, base) {
|
|
|
325
336
|
if (slice && !slice.done)
|
|
326
337
|
return false;
|
|
327
338
|
}
|
|
328
|
-
catch {
|
|
339
|
+
catch (e) {
|
|
340
|
+
logWarning("recovery", `roadmap parse failed: ${e.message}`);
|
|
329
341
|
return false;
|
|
330
342
|
}
|
|
331
343
|
}
|
|
@@ -374,7 +386,9 @@ export function writeBlockerPlaceholder(unitType, unitId, base, reason) {
|
|
|
374
386
|
try {
|
|
375
387
|
updateTaskStatus(mid, sid, tid, "complete", new Date().toISOString());
|
|
376
388
|
}
|
|
377
|
-
catch { /* non-fatal */
|
|
389
|
+
catch (err) { /* non-fatal */
|
|
390
|
+
logError("recovery", `DB status update failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
391
|
+
}
|
|
378
392
|
}
|
|
379
393
|
}
|
|
380
394
|
return diagnoseExpectedArtifact(unitType, unitId, base);
|
|
@@ -389,23 +403,26 @@ function abortAndResetMerge(basePath, hasMergeHead, squashMsgPath) {
|
|
|
389
403
|
try {
|
|
390
404
|
nativeMergeAbort(basePath);
|
|
391
405
|
}
|
|
392
|
-
catch {
|
|
406
|
+
catch (err) {
|
|
393
407
|
/* best-effort */
|
|
408
|
+
logWarning("recovery", `git merge-abort failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
394
409
|
}
|
|
395
410
|
}
|
|
396
411
|
else if (squashMsgPath) {
|
|
397
412
|
try {
|
|
398
413
|
unlinkSync(squashMsgPath);
|
|
399
414
|
}
|
|
400
|
-
catch {
|
|
415
|
+
catch (err) {
|
|
401
416
|
/* best-effort */
|
|
417
|
+
logWarning("recovery", `file unlink failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
402
418
|
}
|
|
403
419
|
}
|
|
404
420
|
try {
|
|
405
421
|
nativeResetHard(basePath);
|
|
406
422
|
}
|
|
407
|
-
catch {
|
|
423
|
+
catch (err) {
|
|
408
424
|
/* best-effort */
|
|
425
|
+
logError("recovery", `git reset failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
409
426
|
}
|
|
410
427
|
}
|
|
411
428
|
/**
|
|
@@ -452,7 +469,8 @@ export function reconcileMergeState(basePath, ctx) {
|
|
|
452
469
|
nativeCheckoutTheirs(basePath, gsdConflicts);
|
|
453
470
|
nativeAddPaths(basePath, gsdConflicts);
|
|
454
471
|
}
|
|
455
|
-
catch {
|
|
472
|
+
catch (e) {
|
|
473
|
+
logError("recovery", `auto-resolve .gsd/ conflicts failed: ${e.message}`);
|
|
456
474
|
resolved = false;
|
|
457
475
|
}
|
|
458
476
|
if (resolved) {
|
|
@@ -460,7 +478,8 @@ export function reconcileMergeState(basePath, ctx) {
|
|
|
460
478
|
nativeCommit(basePath, "chore: auto-resolve .gsd/ state file conflicts");
|
|
461
479
|
ctx.ui.notify(`Auto-resolved ${gsdConflicts.length} .gsd/ state file conflict(s) from prior merge.`, "info");
|
|
462
480
|
}
|
|
463
|
-
catch {
|
|
481
|
+
catch (e) {
|
|
482
|
+
logError("recovery", `auto-commit .gsd/ conflict resolution failed: ${e.message}`);
|
|
464
483
|
resolved = false;
|
|
465
484
|
}
|
|
466
485
|
}
|
|
@@ -33,6 +33,7 @@ import { snapshotSkills } from "./skill-discovery.js";
|
|
|
33
33
|
import { isDbAvailable, getMilestone } from "./gsd-db.js";
|
|
34
34
|
import { hideFooter } from "./auto-dashboard.js";
|
|
35
35
|
import { debugLog, enableDebug, isDebugEnabled, getDebugLogPath, } from "./debug-logger.js";
|
|
36
|
+
import { logWarning, logError } from "./workflow-logger.js";
|
|
36
37
|
import { parseUnitId } from "./unit-id.js";
|
|
37
38
|
import { existsSync, mkdirSync, readdirSync, statSync, unlinkSync, } from "node:fs";
|
|
38
39
|
import { join } from "node:path";
|
|
@@ -63,8 +64,9 @@ async function openProjectDbIfPresent(basePath) {
|
|
|
63
64
|
const { openDatabase } = await import("./gsd-db.js");
|
|
64
65
|
openDatabase(gsdDbPath);
|
|
65
66
|
}
|
|
66
|
-
catch {
|
|
67
|
+
catch (err) {
|
|
67
68
|
/* non-fatal — DB lifecycle block below will retry */
|
|
69
|
+
logWarning("engine", `DB open failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
/** Guard: tracks consecutive bootstrap attempts that found phase === "complete".
|
|
@@ -140,8 +142,9 @@ export async function bootstrapAutoSession(s, ctx, pi, base, verboseMode, reques
|
|
|
140
142
|
nativeAddAll(base);
|
|
141
143
|
nativeCommit(base, "chore: init gsd");
|
|
142
144
|
}
|
|
143
|
-
catch {
|
|
145
|
+
catch (err) {
|
|
144
146
|
/* nothing to commit */
|
|
147
|
+
logWarning("engine", `mkdir failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
145
148
|
}
|
|
146
149
|
}
|
|
147
150
|
// Initialize GitServiceImpl
|
|
@@ -418,7 +421,7 @@ export async function bootstrapAutoSession(s, ctx, pi, base, verboseMode, reques
|
|
|
418
421
|
}
|
|
419
422
|
}
|
|
420
423
|
catch (err) {
|
|
421
|
-
|
|
424
|
+
logError("engine", `auto-migration failed: ${err.message}`);
|
|
422
425
|
}
|
|
423
426
|
}
|
|
424
427
|
if (existsSync(gsdDbPath) && !isDbAvailable()) {
|
|
@@ -427,7 +430,7 @@ export async function bootstrapAutoSession(s, ctx, pi, base, verboseMode, reques
|
|
|
427
430
|
openDb(gsdDbPath);
|
|
428
431
|
}
|
|
429
432
|
catch (err) {
|
|
430
|
-
|
|
433
|
+
logError("engine", `failed to open existing database: ${err.message}`);
|
|
431
434
|
}
|
|
432
435
|
}
|
|
433
436
|
// Gate: abort bootstrap if the DB file exists but the provider is
|
|
@@ -531,8 +534,9 @@ export async function bootstrapAutoSession(s, ctx, pi, base, verboseMode, reques
|
|
|
531
534
|
}
|
|
532
535
|
}
|
|
533
536
|
}
|
|
534
|
-
catch {
|
|
537
|
+
catch (err) {
|
|
535
538
|
/* non-fatal */
|
|
539
|
+
logWarning("engine", `preflight validation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
536
540
|
}
|
|
537
541
|
return true;
|
|
538
542
|
}
|
|
@@ -15,6 +15,7 @@ import { closeoutUnit } from "./auto-unit-closeout.js";
|
|
|
15
15
|
import { saveActivityLog } from "./activity-log.js";
|
|
16
16
|
import { recoverTimedOutUnit } from "./auto-timeout-recovery.js";
|
|
17
17
|
import { resolveAgentEndCancelled } from "./auto/resolve.js";
|
|
18
|
+
import { logWarning, logError } from "./workflow-logger.js";
|
|
18
19
|
/**
|
|
19
20
|
* Set up all four supervision timers for the current unit:
|
|
20
21
|
* 1. Soft timeout warning (wrapup)
|
|
@@ -70,8 +71,9 @@ export function startUnitSupervision(sctx) {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
|
-
catch {
|
|
74
|
+
catch (err) {
|
|
74
75
|
// Non-fatal — fall through with no estimate
|
|
76
|
+
logWarning("timer", `operation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
const estimateMinutes = taskEstimate ? parseEstimateMinutes(taskEstimate) : null;
|
|
@@ -175,13 +177,15 @@ export function startUnitSupervision(sctx) {
|
|
|
175
177
|
}
|
|
176
178
|
catch (err) {
|
|
177
179
|
const message = err instanceof Error ? err.message : String(err);
|
|
178
|
-
|
|
180
|
+
logError("timer", `[idle-watchdog] Unhandled error: ${message}`);
|
|
179
181
|
// Unblock any pending unit promise so the auto-loop is not orphaned.
|
|
180
182
|
resolveAgentEndCancelled({ message: `Idle watchdog error: ${message}`, category: "idle", isTransient: true });
|
|
181
183
|
try {
|
|
182
184
|
ctx.ui.notify(`Idle watchdog error: ${message}`, "warning");
|
|
183
185
|
}
|
|
184
|
-
catch { /* best effort */
|
|
186
|
+
catch (err) { /* best effort */
|
|
187
|
+
logWarning("timer", `notification failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
188
|
+
}
|
|
185
189
|
}
|
|
186
190
|
}, 15000);
|
|
187
191
|
// ── 3. Hard timeout ──
|
|
@@ -208,13 +212,15 @@ export function startUnitSupervision(sctx) {
|
|
|
208
212
|
}
|
|
209
213
|
catch (err) {
|
|
210
214
|
const message = err instanceof Error ? err.message : String(err);
|
|
211
|
-
|
|
215
|
+
logError("timer", `[hard-timeout] Unhandled error: ${message}`);
|
|
212
216
|
// Unblock any pending unit promise so the auto-loop is not orphaned.
|
|
213
217
|
resolveAgentEndCancelled({ message: `Hard timeout error: ${message}`, category: "timeout", isTransient: true });
|
|
214
218
|
try {
|
|
215
219
|
ctx.ui.notify(`Hard timeout error: ${message}`, "warning");
|
|
216
220
|
}
|
|
217
|
-
catch { /* best effort */
|
|
221
|
+
catch (err) { /* best effort */
|
|
222
|
+
logWarning("timer", `notification failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
223
|
+
}
|
|
218
224
|
}
|
|
219
225
|
}, hardTimeoutMs);
|
|
220
226
|
// ── 4. Context-pressure continue-here monitor ──
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { snapshotUnitMetrics } from "./metrics.js";
|
|
7
7
|
import { saveActivityLog } from "./activity-log.js";
|
|
8
|
+
import { logWarning } from "./workflow-logger.js";
|
|
8
9
|
/**
|
|
9
10
|
* Snapshot metrics, save activity log, and fire-and-forget memory extraction
|
|
10
11
|
* for a completed unit. Returns the activity log file path (if any).
|
|
@@ -19,12 +20,13 @@ export async function closeoutUnit(ctx, basePath, unitType, unitId, startedAt, o
|
|
|
19
20
|
const llmCallFn = buildMemoryLLMCall(ctx);
|
|
20
21
|
if (llmCallFn) {
|
|
21
22
|
extractMemoriesFromUnit(activityFile, unitType, unitId, llmCallFn).catch((err) => {
|
|
22
|
-
|
|
23
|
-
console.error(`[gsd] memory extraction failed for ${unitType}/${unitId}:`, err);
|
|
23
|
+
logWarning("engine", `memory extraction failed for ${unitType}/${unitId}: ${err.message}`);
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
catch { /* non-fatal */
|
|
27
|
+
catch (err) { /* non-fatal */
|
|
28
|
+
logWarning("engine", `operation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
29
|
+
}
|
|
28
30
|
}
|
|
29
31
|
return activityFile ?? undefined;
|
|
30
32
|
}
|
|
@@ -15,6 +15,7 @@ import { isDbAvailable, getTask } from "./gsd-db.js";
|
|
|
15
15
|
import { loadEffectiveGSDPreferences } from "./preferences.js";
|
|
16
16
|
import { runVerificationGate, formatFailureContext, captureRuntimeErrors, runDependencyAudit, } from "./verification-gate.js";
|
|
17
17
|
import { writeVerificationJSON } from "./verification-evidence.js";
|
|
18
|
+
import { logWarning } from "./workflow-logger.js";
|
|
18
19
|
import { join } from "node:path";
|
|
19
20
|
function isInfraVerificationFailure(stderr) {
|
|
20
21
|
return /\b(ENOENT|ENOTFOUND|ETIMEDOUT|ECONNRESET|EAI_AGAIN|spawn\s+\S+\s+ENOENT|command not found)\b/i.test(stderr);
|
|
@@ -113,7 +114,7 @@ export async function runPostUnitVerification(vctx, pauseAuto) {
|
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
116
|
catch (evidenceErr) {
|
|
116
|
-
|
|
117
|
+
logWarning("engine", `verification-evidence write error: ${evidenceErr.message}`);
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
const advisoryFailure = !result.passed &&
|
|
@@ -157,7 +158,7 @@ export async function runPostUnitVerification(vctx, pauseAuto) {
|
|
|
157
158
|
}
|
|
158
159
|
catch (err) {
|
|
159
160
|
// Gate errors are non-fatal
|
|
160
|
-
|
|
161
|
+
logWarning("engine", `verification-gate error: ${err.message}`);
|
|
161
162
|
return "continue";
|
|
162
163
|
}
|
|
163
164
|
}
|