gsd-pi 2.81.0 → 2.82.0-dev.ed17d078d
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 +60 -30
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/browser-tools/tools/screenshot.js +1 -0
- package/dist/resources/extensions/browser-tools/tools/zoom.js +1 -0
- package/dist/resources/extensions/gsd/auto/loop.js +111 -8
- package/dist/resources/extensions/gsd/auto/orchestrator.js +113 -6
- package/dist/resources/extensions/gsd/auto/phases.js +199 -97
- package/dist/resources/extensions/gsd/auto/run-unit.js +66 -3
- package/dist/resources/extensions/gsd/auto/session.js +9 -0
- package/dist/resources/extensions/gsd/auto/verification-retry-policy.js +43 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +182 -178
- package/dist/resources/extensions/gsd/auto-dispatch.js +14 -11
- package/dist/resources/extensions/gsd/auto-post-unit.js +7 -1
- package/dist/resources/extensions/gsd/auto-prompts.js +11 -3
- package/dist/resources/extensions/gsd/auto-recovery.js +6 -181
- package/dist/resources/extensions/gsd/auto-runtime-state.js +5 -0
- package/dist/resources/extensions/gsd/auto-start.js +20 -23
- package/dist/resources/extensions/gsd/auto-unit-closeout.js +33 -5
- package/dist/resources/extensions/gsd/auto-verification.js +12 -6
- package/dist/resources/extensions/gsd/auto-worktree.js +8 -0
- package/dist/resources/extensions/gsd/auto.js +386 -106
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +13 -6
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +13 -2
- package/dist/resources/extensions/gsd/bootstrap/register-shortcuts.js +4 -8
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +55 -12
- package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -1
- package/dist/resources/extensions/gsd/commands/handlers/notifications-handler.js +4 -10
- package/dist/resources/extensions/gsd/commands/handlers/parallel.js +9 -0
- package/dist/resources/extensions/gsd/commands-handlers.js +15 -2
- package/dist/resources/extensions/gsd/context-store.js +112 -0
- package/dist/resources/extensions/gsd/db-writer.js +150 -84
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +1 -1
- package/dist/resources/extensions/gsd/doctor-git-checks.js +41 -6
- package/dist/resources/extensions/gsd/git-service.js +2 -1
- package/dist/resources/extensions/gsd/gsd-db.js +7 -23
- package/dist/resources/extensions/gsd/health-widget-core.js +1 -1
- package/dist/resources/extensions/gsd/health-widget.js +4 -10
- package/dist/resources/extensions/gsd/knowledge-backfill.js +144 -0
- package/dist/resources/extensions/gsd/knowledge-capture.js +136 -0
- package/dist/resources/extensions/gsd/knowledge-parser.js +154 -0
- package/dist/resources/extensions/gsd/knowledge-projection.js +210 -0
- package/dist/resources/extensions/gsd/markdown-renderer.js +6 -96
- package/dist/resources/extensions/gsd/md-importer.js +1 -1
- package/dist/resources/extensions/gsd/memory-backfill.js +73 -17
- package/dist/resources/extensions/gsd/memory-consolidation-scanner.js +222 -0
- package/dist/resources/extensions/gsd/migrate/command.js +5 -0
- package/dist/resources/extensions/gsd/migrate/preview.js +9 -0
- package/dist/resources/extensions/gsd/migrate/transformer.js +51 -4
- package/dist/resources/extensions/gsd/migrate/writer.js +11 -1
- package/dist/resources/extensions/gsd/native-git-bridge.js +14 -14
- package/dist/resources/extensions/gsd/notification-overlay.js +35 -40
- package/dist/resources/extensions/gsd/parallel-merge.js +53 -30
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +25 -33
- package/dist/resources/extensions/gsd/prompts/complete-slice.md +14 -12
- package/dist/resources/extensions/gsd/prompts/discuss-headless.md +20 -2
- package/dist/resources/extensions/gsd/prompts/discuss.md +20 -2
- package/dist/resources/extensions/gsd/prompts/system.md +2 -2
- package/dist/resources/extensions/gsd/provider-switch-observer.js +146 -0
- package/dist/resources/extensions/gsd/recovery-classification.js +15 -1
- package/dist/resources/extensions/gsd/session-lock.js +40 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/completion.js +131 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/merge-state.js +247 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/project-md.js +50 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/roadmap.js +87 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/sketch-flag.js +50 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +124 -0
- package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-worker.js +32 -0
- package/dist/resources/extensions/gsd/state-reconciliation/errors.js +41 -0
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +99 -0
- package/dist/resources/extensions/gsd/state-reconciliation/registry.js +24 -0
- package/dist/resources/extensions/gsd/state-reconciliation/spawn-gate.js +43 -0
- package/dist/resources/extensions/gsd/state-reconciliation/types.js +3 -0
- package/dist/resources/extensions/gsd/state-reconciliation.js +5 -26
- package/dist/resources/extensions/gsd/templates/knowledge.md +2 -2
- package/dist/resources/extensions/gsd/tui/render-kit.js +74 -0
- package/dist/resources/extensions/gsd/watch/header-renderer.js +92 -69
- package/dist/resources/extensions/gsd/watch/splash-palette.js +10 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +2 -2
- package/dist/resources/extensions/gsd/worktree-lifecycle.js +722 -316
- package/dist/resources/extensions/gsd/worktree-telemetry.js +3 -1
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +6 -6
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/required-server-files.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +6 -6
- package/dist/web/standalone/.next/server/chunks/63.js +3 -3
- package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +2 -2
- package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
- package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-752f1e2ebdaa3e45.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/dist/welcome-screen.d.ts +0 -7
- package/dist/welcome-screen.js +60 -69
- package/package.json +3 -2
- package/packages/daemon/package.json +2 -2
- package/packages/mcp-server/README.md +2 -0
- package/packages/mcp-server/package.json +2 -2
- package/packages/mcp-server/src/workflow-tools-parity.test.ts +244 -0
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-ai/dist/index.d.ts +2 -2
- package/packages/pi-ai/dist/index.d.ts.map +1 -1
- package/packages/pi-ai/dist/index.js +1 -1
- package/packages/pi-ai/dist/index.js.map +1 -1
- package/packages/pi-ai/dist/providers/transform-messages.d.ts +11 -0
- package/packages/pi-ai/dist/providers/transform-messages.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/transform-messages.js +20 -0
- package/packages/pi-ai/dist/providers/transform-messages.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-ai/src/index.ts +7 -2
- package/packages/pi-ai/src/providers/transform-messages.ts +24 -0
- package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-coding-agent/dist/core/system-prompt.js +4 -4
- package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/assistant-message-design.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/assistant-message-design.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/assistant-message-design.test.js +47 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/assistant-message-design.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js +76 -9
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/tool-execution.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/user-message-design.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/user-message-design.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/user-message-design.test.js +40 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/user-message-design.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts +0 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js +30 -29
- package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js +10 -3
- package/packages/pi-coding-agent/dist/modes/interactive/components/adaptive-layout.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +13 -13
- package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts +1 -3
- package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.js +58 -3
- package/packages/pi-coding-agent/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/diff.d.ts +2 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js +12 -6
- package/packages/pi-coding-agent/dist/modes/interactive/components/diff.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +14 -41
- package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +0 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +86 -82
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/transcript-design.d.ts +35 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/transcript-design.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/transcript-design.js +152 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/transcript-design.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tui-style-kit.d.ts +16 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tui-style-kit.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tui-style-kit.js +73 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tui-style-kit.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js +12 -8
- package/packages/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-highlight.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-highlight.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-highlight.test.js +17 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-highlight.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +105 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.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 +27 -26
- package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js +9 -6
- package/packages/pi-coding-agent/dist/modes/interactive/tui-mode.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/tests/system-prompt-file-safety.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/tests/system-prompt-file-safety.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/tests/system-prompt-file-safety.test.js +17 -0
- package/packages/pi-coding-agent/dist/tests/system-prompt-file-safety.test.js.map +1 -0
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/system-prompt.ts +4 -4
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/assistant-message-design.test.ts +56 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/tool-execution.test.ts +113 -9
- package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/user-message-design.test.ts +48 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.test.ts +10 -3
- package/packages/pi-coding-agent/src/modes/interactive/components/adaptive-layout.ts +43 -42
- package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +14 -14
- package/packages/pi-coding-agent/src/modes/interactive/components/bash-execution.ts +64 -3
- package/packages/pi-coding-agent/src/modes/interactive/components/diff.ts +13 -7
- package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +15 -42
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +84 -104
- package/packages/pi-coding-agent/src/modes/interactive/components/transcript-design.ts +196 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/tui-style-kit.ts +94 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts +14 -9
- package/packages/pi-coding-agent/src/modes/interactive/theme/theme-highlight.test.ts +23 -0
- package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +106 -1
- package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +27 -26
- package/packages/pi-coding-agent/src/modes/interactive/tui-mode.test.ts +9 -6
- package/packages/pi-coding-agent/src/tests/system-prompt-file-safety.test.ts +22 -0
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-tui/dist/__tests__/overlay-layout.test.js +14 -1
- package/packages/pi-tui/dist/__tests__/overlay-layout.test.js.map +1 -1
- package/packages/pi-tui/dist/overlay-layout.d.ts.map +1 -1
- package/packages/pi-tui/dist/overlay-layout.js +9 -6
- package/packages/pi-tui/dist/overlay-layout.js.map +1 -1
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +5 -0
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/pi-tui/src/__tests__/overlay-layout.test.ts +20 -1
- package/packages/pi-tui/src/overlay-layout.ts +10 -7
- package/packages/pi-tui/src/tui.ts +6 -0
- package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
- package/packages/rpc-client/package.json +1 -1
- package/pkg/dist/modes/interactive/theme/theme-highlight.test.d.ts +2 -0
- package/pkg/dist/modes/interactive/theme/theme-highlight.test.d.ts.map +1 -0
- package/pkg/dist/modes/interactive/theme/theme-highlight.test.js +17 -0
- package/pkg/dist/modes/interactive/theme/theme-highlight.test.js.map +1 -0
- package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/theme.js +105 -1
- package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
- package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/themes.js +27 -26
- package/pkg/dist/modes/interactive/theme/themes.js.map +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/browser-tools/tools/screenshot.ts +1 -0
- package/src/resources/extensions/browser-tools/tools/zoom.ts +1 -0
- package/src/resources/extensions/gsd/auto/contracts.ts +46 -11
- package/src/resources/extensions/gsd/auto/loop-deps.ts +9 -5
- package/src/resources/extensions/gsd/auto/loop.ts +113 -9
- package/src/resources/extensions/gsd/auto/orchestrator.ts +118 -6
- package/src/resources/extensions/gsd/auto/phases.ts +158 -19
- package/src/resources/extensions/gsd/auto/run-unit.ts +69 -4
- package/src/resources/extensions/gsd/auto/session.ts +10 -0
- package/src/resources/extensions/gsd/auto/verification-retry-policy.ts +82 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +230 -183
- package/src/resources/extensions/gsd/auto-dispatch.ts +15 -1
- package/src/resources/extensions/gsd/auto-post-unit.ts +7 -1
- package/src/resources/extensions/gsd/auto-prompts.ts +11 -3
- package/src/resources/extensions/gsd/auto-recovery.ts +7 -209
- package/src/resources/extensions/gsd/auto-runtime-state.ts +5 -0
- package/src/resources/extensions/gsd/auto-start.ts +22 -22
- package/src/resources/extensions/gsd/auto-unit-closeout.ts +51 -0
- package/src/resources/extensions/gsd/auto-verification.ts +12 -6
- package/src/resources/extensions/gsd/auto-worktree.ts +8 -0
- package/src/resources/extensions/gsd/auto.ts +424 -106
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +21 -6
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +12 -2
- package/src/resources/extensions/gsd/bootstrap/register-shortcuts.ts +5 -8
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +58 -15
- package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -1
- package/src/resources/extensions/gsd/commands/handlers/notifications-handler.ts +4 -10
- package/src/resources/extensions/gsd/commands/handlers/parallel.ts +12 -0
- package/src/resources/extensions/gsd/commands-handlers.ts +19 -2
- package/src/resources/extensions/gsd/context-store.ts +120 -1
- package/src/resources/extensions/gsd/db-writer.ts +167 -84
- package/src/resources/extensions/gsd/docs/preferences-reference.md +1 -1
- package/src/resources/extensions/gsd/doctor-git-checks.ts +44 -6
- package/src/resources/extensions/gsd/doctor-types.ts +2 -0
- package/src/resources/extensions/gsd/git-service.ts +2 -0
- package/src/resources/extensions/gsd/gsd-db.ts +7 -23
- package/src/resources/extensions/gsd/health-widget-core.ts +1 -1
- package/src/resources/extensions/gsd/health-widget.ts +6 -10
- package/src/resources/extensions/gsd/journal.ts +2 -0
- package/src/resources/extensions/gsd/knowledge-backfill.ts +164 -0
- package/src/resources/extensions/gsd/knowledge-capture.ts +160 -0
- package/src/resources/extensions/gsd/knowledge-parser.ts +174 -0
- package/src/resources/extensions/gsd/knowledge-projection.ts +241 -0
- package/src/resources/extensions/gsd/markdown-renderer.ts +10 -96
- package/src/resources/extensions/gsd/md-importer.ts +1 -1
- package/src/resources/extensions/gsd/memory-backfill.ts +89 -17
- package/src/resources/extensions/gsd/memory-consolidation-scanner.ts +277 -0
- package/src/resources/extensions/gsd/migrate/command.ts +5 -0
- package/src/resources/extensions/gsd/migrate/preview.ts +10 -0
- package/src/resources/extensions/gsd/migrate/transformer.ts +58 -4
- package/src/resources/extensions/gsd/migrate/writer.ts +14 -1
- package/src/resources/extensions/gsd/native-git-bridge.ts +14 -13
- package/src/resources/extensions/gsd/notification-overlay.ts +50 -46
- package/src/resources/extensions/gsd/parallel-merge.ts +61 -34
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +33 -35
- package/src/resources/extensions/gsd/prompts/complete-slice.md +14 -12
- package/src/resources/extensions/gsd/prompts/discuss-headless.md +20 -2
- package/src/resources/extensions/gsd/prompts/discuss.md +20 -2
- package/src/resources/extensions/gsd/prompts/system.md +2 -2
- package/src/resources/extensions/gsd/provider-switch-observer.ts +185 -0
- package/src/resources/extensions/gsd/recovery-classification.ts +18 -1
- package/src/resources/extensions/gsd/session-lock.ts +41 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/completion.ts +172 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/merge-state.ts +337 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/project-md.ts +69 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/roadmap.ts +109 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/sketch-flag.ts +68 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +185 -0
- package/src/resources/extensions/gsd/state-reconciliation/drift/stale-worker.ts +46 -0
- package/src/resources/extensions/gsd/state-reconciliation/errors.ts +67 -0
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +142 -0
- package/src/resources/extensions/gsd/state-reconciliation/registry.ts +27 -0
- package/src/resources/extensions/gsd/state-reconciliation/spawn-gate.ts +60 -0
- package/src/resources/extensions/gsd/state-reconciliation/types.ts +83 -0
- package/src/resources/extensions/gsd/state-reconciliation.ts +21 -53
- package/src/resources/extensions/gsd/templates/knowledge.md +2 -2
- package/src/resources/extensions/gsd/tests/artifact-retry-cap.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +99 -0
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +729 -176
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +408 -4
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +291 -4
- package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +20 -5
- package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/auto-unit-closeout.test.ts +68 -0
- package/src/resources/extensions/gsd/tests/browser-tools-compatibility-declarations.test.ts +62 -0
- package/src/resources/extensions/gsd/tests/context-store-decisions-from-memories.test.ts +312 -0
- package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +28 -1
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +13 -8
- package/src/resources/extensions/gsd/tests/decisions-projection-from-memories.test.ts +453 -0
- package/src/resources/extensions/gsd/tests/decisions-stop-table-writes.test.ts +348 -0
- package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +20 -2
- package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/freeform-decisions.test.ts +8 -4
- package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +11 -7
- package/src/resources/extensions/gsd/tests/header-renderer.test.ts +40 -0
- package/src/resources/extensions/gsd/tests/headless-milestone-parity.test.ts +10 -0
- package/src/resources/extensions/gsd/tests/health-widget.test.ts +14 -4
- package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +26 -0
- package/src/resources/extensions/gsd/tests/integration/integration-lifecycle.test.ts +13 -5
- package/src/resources/extensions/gsd/tests/integration/integration-proof.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/integration/migrate-command.test.ts +48 -3
- package/src/resources/extensions/gsd/tests/integration/parallel-merge.test.ts +116 -24
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +0 -1
- package/src/resources/extensions/gsd/tests/knowledge-backfill-projection.test.ts +323 -0
- package/src/resources/extensions/gsd/tests/knowledge-capture.test.ts +242 -0
- package/src/resources/extensions/gsd/tests/knowledge.test.ts +47 -2
- package/src/resources/extensions/gsd/tests/load-knowledge-block-rules-only.test.ts +209 -0
- package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/memory-consolidation-scanner.test.ts +316 -0
- package/src/resources/extensions/gsd/tests/merge-conflict-stops-loop.test.ts +46 -11
- package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +5 -1
- package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +6 -1
- package/src/resources/extensions/gsd/tests/notification-overlay.test.ts +78 -41
- package/src/resources/extensions/gsd/tests/notifications-handler.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/originalbase-path-comparison.test.ts +12 -217
- package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +38 -6
- package/src/resources/extensions/gsd/tests/plan-milestone-sketch-render.test.ts +157 -0
- package/src/resources/extensions/gsd/tests/post-exec-retry-bypass.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +32 -1
- package/src/resources/extensions/gsd/tests/provider-switch-observer.test.ts +252 -0
- package/src/resources/extensions/gsd/tests/resume-dispatch-worktree.test.ts +7 -3
- package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +6 -3
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +16 -4
- package/src/resources/extensions/gsd/tests/session-switch-abort-misclassification.test.ts +24 -0
- package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +65 -58
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +952 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +4 -0
- package/src/resources/extensions/gsd/tests/tui-header-lifecycle.test.ts +121 -1
- package/src/resources/extensions/gsd/tests/tui-render-kit.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/verification-retry-policy.test.ts +83 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +6 -0
- package/src/resources/extensions/gsd/tests/worktree-journal-events.test.ts +158 -58
- package/src/resources/extensions/gsd/tests/worktree-lifecycle.test.ts +572 -118
- package/src/resources/extensions/gsd/tests/worktree-telemetry.test.ts +59 -2
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +18 -0
- package/src/resources/extensions/gsd/tui/render-kit.ts +109 -0
- package/src/resources/extensions/gsd/watch/header-renderer.ts +121 -79
- package/src/resources/extensions/gsd/watch/splash-palette.ts +11 -0
- package/src/resources/extensions/gsd/workflow-logger.ts +4 -0
- package/src/resources/extensions/gsd/workflow-mcp.ts +2 -2
- package/src/resources/extensions/gsd/worktree-lifecycle.ts +1151 -524
- package/src/resources/extensions/gsd/worktree-telemetry.ts +7 -2
- package/dist/web/standalone/.next/static/chunks/app/page-200592a7f3baf579.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/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +0 -1544
- /package/dist/web/standalone/.next/static/{drLMkgfHQ8lzS229_HWYR → YEvjuT-fsFfYQhDSWtueS}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{drLMkgfHQ8lzS229_HWYR → YEvjuT-fsFfYQhDSWtueS}/_ssgManifest.js +0 -0
|
@@ -608,6 +608,32 @@ describe('git-service', async () => {
|
|
|
608
608
|
rmSync(repo, { recursive: true, force: true });
|
|
609
609
|
});
|
|
610
610
|
|
|
611
|
+
test('GitServiceImpl: task context keyFiles ignores gitignored build outputs', () => {
|
|
612
|
+
const repo = initTempRepo();
|
|
613
|
+
const svc = new GitServiceImpl(repo);
|
|
614
|
+
|
|
615
|
+
createFile(repo, ".gitignore", "dist/\n");
|
|
616
|
+
runGit(repo, ["add", ".gitignore"]);
|
|
617
|
+
runGit(repo, ["commit", "-F", "-"], { input: "ignore dist" });
|
|
618
|
+
|
|
619
|
+
createFile(repo, "src/task.ts", "export const task = true;");
|
|
620
|
+
createFile(repo, "dist/task.js", "export const task = true;");
|
|
621
|
+
|
|
622
|
+
const msg = svc.autoCommit("execute-task", "M001/S01/T01", [], {
|
|
623
|
+
taskId: "S01/T01",
|
|
624
|
+
taskTitle: "implement scoped task",
|
|
625
|
+
oneLiner: "Added scoped task implementation",
|
|
626
|
+
keyFiles: ["src/task.ts", "dist/task.js"],
|
|
627
|
+
});
|
|
628
|
+
assert.ok(msg !== null, "autoCommit should commit non-ignored key files");
|
|
629
|
+
|
|
630
|
+
const committed = run("git show --name-only --format= HEAD", repo);
|
|
631
|
+
assert.ok(committed.includes("src/task.ts"), "non-ignored key file is committed");
|
|
632
|
+
assert.ok(!committed.includes("dist/task.js"), "ignored build output is not committed");
|
|
633
|
+
|
|
634
|
+
rmSync(repo, { recursive: true, force: true });
|
|
635
|
+
});
|
|
636
|
+
|
|
611
637
|
// ─── GitServiceImpl: empty-after-staging guard ─────────────────────────
|
|
612
638
|
|
|
613
639
|
test('GitServiceImpl: empty-after-staging guard', () => {
|
|
@@ -17,10 +17,12 @@ import { migrateFromMarkdown, parseDecisionsTable } from '../../md-importer.ts';
|
|
|
17
17
|
import {
|
|
18
18
|
queryDecisions,
|
|
19
19
|
queryRequirements,
|
|
20
|
+
getAllDecisionsFromMemories,
|
|
20
21
|
formatDecisionsForPrompt,
|
|
21
22
|
formatRequirementsForPrompt,
|
|
22
23
|
} from '../../context-store.ts';
|
|
23
24
|
import { saveDecisionToDb, generateDecisionsMd } from '../../db-writer.ts';
|
|
25
|
+
import { backfillDecisionsToMemories } from '../../memory-backfill.ts';
|
|
24
26
|
import { describe, test, beforeEach, afterEach } from 'node:test';
|
|
25
27
|
import assert from 'node:assert/strict';
|
|
26
28
|
|
|
@@ -233,8 +235,8 @@ test('integration-lifecycle: full pipeline', async () => {
|
|
|
233
235
|
assert.ok(typeof saved.id === 'string', 'lifecycle: saveDecisionToDb returned an id');
|
|
234
236
|
assert.match(saved.id, /^D\d+$/, 'lifecycle: saved ID matches D### pattern');
|
|
235
237
|
|
|
236
|
-
// Query back from DB
|
|
237
|
-
const allAfterSave =
|
|
238
|
+
// Query back from DB (memories — Stage 3 of ADR-013 stopped legacy decisions-table writes)
|
|
239
|
+
const allAfterSave = getAllDecisionsFromMemories();
|
|
238
240
|
const savedDecision = allAfterSave.find(d => d.id === saved.id);
|
|
239
241
|
assert.ok(savedDecision !== null && savedDecision !== undefined, `lifecycle: saved decision ${saved.id} found in DB`);
|
|
240
242
|
assert.deepStrictEqual(savedDecision?.decision, 'integration test write-back decision', 'lifecycle: saved decision text matches');
|
|
@@ -253,9 +255,15 @@ test('integration-lifecycle: full pipeline', async () => {
|
|
|
253
255
|
assert.deepStrictEqual(reparsedSaved?.rationale, 'proves round-trip fidelity', 'lifecycle: round-trip rationale preserved');
|
|
254
256
|
|
|
255
257
|
// ── Step 8: DB consistency — total count sanity ─────────────────────
|
|
256
|
-
|
|
257
|
-
//
|
|
258
|
-
|
|
258
|
+
// ADR-013 Stage 3 split the write paths: migrateFromMarkdown still
|
|
259
|
+
// populates the legacy decisions table, but saveDecisionToDb now writes
|
|
260
|
+
// only to memories. The unified projection (and the post-#5756 cutover
|
|
261
|
+
// end-state) lives in memories, so simulate what bootstrap does and
|
|
262
|
+
// backfill the table rows into memories before counting.
|
|
263
|
+
backfillDecisionsToMemories();
|
|
264
|
+
const finalCount = getAllDecisionsFromMemories().length;
|
|
265
|
+
// Original 14 + 1 re-import (decisions table → memories via backfill) + 1 saveDecisionToDb = 16
|
|
266
|
+
assert.ok(finalCount === DECISIONS_COUNT + 2, `lifecycle: final memory-store count = ${DECISIONS_COUNT + 2} (got ${finalCount})`);
|
|
259
267
|
|
|
260
268
|
closeDatabase();
|
|
261
269
|
} finally {
|
|
@@ -62,8 +62,8 @@ import {
|
|
|
62
62
|
renderRoadmapCheckboxes,
|
|
63
63
|
renderAllFromDb,
|
|
64
64
|
detectStaleRenders,
|
|
65
|
-
repairStaleRenders,
|
|
66
65
|
} from "../../markdown-renderer.ts";
|
|
66
|
+
import { repairStaleRenders } from "../../state-reconciliation/drift/stale-render.ts";
|
|
67
67
|
|
|
68
68
|
// ── State derivation ──────────────────────────────────────────────────────
|
|
69
69
|
import {
|
|
@@ -14,7 +14,9 @@ import {
|
|
|
14
14
|
generatePreview,
|
|
15
15
|
writeGSDDirectory,
|
|
16
16
|
} from '../../migrate/index.ts';
|
|
17
|
+
import { importWrittenMigrationToDb } from '../../migrate/command.ts';
|
|
17
18
|
import { deriveState } from '../../state.ts';
|
|
19
|
+
import { closeDatabase, getDecisionById, getRequirementCounts } from '../../gsd-db.ts';
|
|
18
20
|
import { describe, test, beforeEach, afterEach } from 'node:test';
|
|
19
21
|
import assert from 'node:assert/strict';
|
|
20
22
|
|
|
@@ -52,6 +54,16 @@ const SAMPLE_REQUIREMENTS = `# Requirements
|
|
|
52
54
|
- Description: Output matches GSD format.
|
|
53
55
|
`;
|
|
54
56
|
|
|
57
|
+
const SAMPLE_REQUIREMENTS_LEGACY_IDS = `# Requirements
|
|
58
|
+
|
|
59
|
+
## Active
|
|
60
|
+
|
|
61
|
+
- [ ] **CORE-PIPELINE**: Pipeline must work end-to-end.
|
|
62
|
+
- [ ] **OUTPUT-FORMAT**: Output matches GSD format.
|
|
63
|
+
- [ ] **IMPORT-DB**: Migration imports requirements into the DB.
|
|
64
|
+
- [ ] **STATUS-WIDGET**: Status can query migrated requirements.
|
|
65
|
+
`;
|
|
66
|
+
|
|
55
67
|
const SAMPLE_STATE = `# State
|
|
56
68
|
|
|
57
69
|
**Current Phase:** 20-features
|
|
@@ -166,14 +178,14 @@ Depends on foundation work.
|
|
|
166
178
|
</context>
|
|
167
179
|
`;
|
|
168
180
|
|
|
169
|
-
function createCompleteFixture(): string {
|
|
181
|
+
function createCompleteFixture(requirementsContent: string = SAMPLE_REQUIREMENTS): string {
|
|
170
182
|
const base = mkdtempSync(join(tmpdir(), 'gsd-cmd-test-'));
|
|
171
183
|
const planning = join(base, '.planning');
|
|
172
184
|
mkdirSync(planning, { recursive: true });
|
|
173
185
|
|
|
174
186
|
writeFileSync(join(planning, 'PROJECT.md'), SAMPLE_PROJECT);
|
|
175
187
|
writeFileSync(join(planning, 'ROADMAP.md'), SAMPLE_ROADMAP);
|
|
176
|
-
writeFileSync(join(planning, 'REQUIREMENTS.md'),
|
|
188
|
+
writeFileSync(join(planning, 'REQUIREMENTS.md'), requirementsContent);
|
|
177
189
|
writeFileSync(join(planning, 'STATE.md'), SAMPLE_STATE);
|
|
178
190
|
writeFileSync(join(planning, 'config.json'), SAMPLE_CONFIG);
|
|
179
191
|
|
|
@@ -303,6 +315,7 @@ test('Full pipeline: parse → transform → preview → write → deriveState',
|
|
|
303
315
|
const expectedTaskPct = totalTasks > 0 ? Math.round((doneTasks / totalTasks) * 100) : 0;
|
|
304
316
|
assert.deepStrictEqual(preview.sliceCompletionPct, expectedSlicePct, 'pipeline: preview sliceCompletionPct');
|
|
305
317
|
assert.deepStrictEqual(preview.taskCompletionPct, expectedTaskPct, 'pipeline: preview taskCompletionPct');
|
|
318
|
+
assert.deepStrictEqual(preview.decisions.total, 1, 'pipeline: preview decisions total');
|
|
306
319
|
|
|
307
320
|
// Requirements in preview
|
|
308
321
|
assert.deepStrictEqual(preview.requirements.active, 1, 'pipeline: preview requirements active');
|
|
@@ -342,6 +355,39 @@ test('Full pipeline: parse → transform → preview → write → deriveState',
|
|
|
342
355
|
}
|
|
343
356
|
});
|
|
344
357
|
|
|
358
|
+
test('Full pipeline: legacy requirement IDs import into DB with canonical IDs', async () => {
|
|
359
|
+
const base = createCompleteFixture(SAMPLE_REQUIREMENTS_LEGACY_IDS);
|
|
360
|
+
const writeTarget = mkdtempSync(join(tmpdir(), 'gsd-cmd-legacy-reqs-'));
|
|
361
|
+
try {
|
|
362
|
+
const parsed = await parsePlanningDirectory(join(base, '.planning'));
|
|
363
|
+
const project = transformToGSD(parsed);
|
|
364
|
+
const preview = generatePreview(project);
|
|
365
|
+
|
|
366
|
+
assert.deepStrictEqual(
|
|
367
|
+
project.requirements.map((req) => req.id),
|
|
368
|
+
['R001', 'R002', 'R003', 'R004'],
|
|
369
|
+
'legacy-reqs: transform assigns canonical R IDs',
|
|
370
|
+
);
|
|
371
|
+
assert.ok(
|
|
372
|
+
project.requirements[0]?.description.includes('Legacy ID: CORE-PIPELINE'),
|
|
373
|
+
'legacy-reqs: original ID survives in migrated requirement content',
|
|
374
|
+
);
|
|
375
|
+
|
|
376
|
+
await writeGSDDirectory(project, writeTarget);
|
|
377
|
+
const imported = await importWrittenMigrationToDb(writeTarget, preview);
|
|
378
|
+
const counts = getRequirementCounts();
|
|
379
|
+
|
|
380
|
+
assert.deepStrictEqual(imported.decisions, 1, 'legacy-reqs: DB import includes migrated decisions');
|
|
381
|
+
assert.deepStrictEqual(imported.requirements, 4, 'legacy-reqs: DB import count matches preview');
|
|
382
|
+
assert.ok(getDecisionById('D001') !== null, 'legacy-reqs: migrated decision is queryable');
|
|
383
|
+
assert.deepStrictEqual(counts.total, 4, 'legacy-reqs: DB stores all migrated requirements');
|
|
384
|
+
} finally {
|
|
385
|
+
closeDatabase();
|
|
386
|
+
rmSync(base, { recursive: true, force: true });
|
|
387
|
+
rmSync(writeTarget, { recursive: true, force: true });
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
|
|
345
391
|
// ─── Test 6: .gsd/ exists detection ────────────────────────────────────
|
|
346
392
|
|
|
347
393
|
test('.gsd/ exists detection', () => {
|
|
@@ -357,4 +403,3 @@ test('.gsd/ exists detection', () => {
|
|
|
357
403
|
rmSync(base, { recursive: true, force: true });
|
|
358
404
|
}
|
|
359
405
|
});
|
|
360
|
-
|
|
@@ -85,7 +85,49 @@ function cleanup(dir: string): void {
|
|
|
85
85
|
try { rmSync(dir, { recursive: true, force: true }); } catch { /* */ }
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Write `.gsd/preferences.md` with `git.isolation: branch` so the merge
|
|
90
|
+
* routes through the standalone Lifecycle merge body in branch mode rather
|
|
91
|
+
* than falling through `getIsolationMode === "none"` to a skipped result.
|
|
92
|
+
*
|
|
93
|
+
* Parallel-merge in production runs with `git.isolation: worktree` and a
|
|
94
|
+
* real auto-worktree on disk; these integration tests use branch mode as a
|
|
95
|
+
* simpler equivalent that exercises the same merge path without requiring
|
|
96
|
+
* `git worktree add` setup. ADR-016 phase 2 / A2 routes parallel-merge
|
|
97
|
+
* through the Module, which performs mode detection — branch mode keeps
|
|
98
|
+
* the test simple while still going through the Module.
|
|
99
|
+
*/
|
|
100
|
+
function setupBranchIsolation(repo: string): void {
|
|
101
|
+
mkdirSync(join(repo, ".gsd"), { recursive: true });
|
|
102
|
+
writeFileSync(
|
|
103
|
+
join(repo, ".gsd", "preferences.md"),
|
|
104
|
+
"## Git\n- isolation: branch\n",
|
|
105
|
+
);
|
|
106
|
+
// Commit on main so subsequent `git checkout main` restores the file.
|
|
107
|
+
// Without this commit, `createMilestoneBranch`'s checkout dance carries
|
|
108
|
+
// the uncommitted file onto the milestone branch and back-checking-out
|
|
109
|
+
// main loses the preference file before `mergeMilestoneStandalone`
|
|
110
|
+
// reads it (ADR-016 phase 2 / A2).
|
|
111
|
+
try {
|
|
112
|
+
run("git add .gsd/preferences.md", repo);
|
|
113
|
+
run('git commit -m "test: add branch-isolation preferences"', repo);
|
|
114
|
+
} catch { /* file may already be committed */ }
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Set up a milestone roadmap file in .gsd/milestones/<MID>/ AND commit it on
|
|
119
|
+
* the current branch.
|
|
120
|
+
*
|
|
121
|
+
* The commit is required after ADR-016 phase 2 / A2 because the standalone
|
|
122
|
+
* Module-level merge (now used by parallel-merge) reads the roadmap _after_
|
|
123
|
+
* its branch checkout. Uncommitted roadmaps on `main` survive a checkout
|
|
124
|
+
* for the first milestone but get committed onto the milestone branch by
|
|
125
|
+
* `autoCommitDirtyState`, which then doesn't reproduce them on the next
|
|
126
|
+
* milestone branch's checkout.
|
|
127
|
+
*
|
|
128
|
+
* Real production runs commit roadmap files on each milestone branch as
|
|
129
|
+
* part of the unit's normal output; tests should mirror that.
|
|
130
|
+
*/
|
|
89
131
|
function setupRoadmap(repo: string, mid: string, title: string, slices: string[]): void {
|
|
90
132
|
const dir = join(repo, ".gsd", "milestones", mid);
|
|
91
133
|
mkdirSync(dir, { recursive: true });
|
|
@@ -94,6 +136,10 @@ function setupRoadmap(repo: string, mid: string, title: string, slices: string[]
|
|
|
94
136
|
join(dir, `${mid}-ROADMAP.md`),
|
|
95
137
|
`# ${mid}: ${title}\n\n## Slices\n${sliceLines}\n`,
|
|
96
138
|
);
|
|
139
|
+
try {
|
|
140
|
+
run(`git add .gsd/milestones/${mid}/${mid}-ROADMAP.md`, repo);
|
|
141
|
+
run(`git commit -m "test: add roadmap for ${mid}"`, repo);
|
|
142
|
+
} catch { /* file may already be committed; not a git repo; etc. */ }
|
|
97
143
|
}
|
|
98
144
|
|
|
99
145
|
/** Create a milestone branch with file changes, then return to main. */
|
|
@@ -234,15 +280,36 @@ test("formatMergeResults — mixed results", () => {
|
|
|
234
280
|
// ═══════════════════════════════════════════════════════════════════════════════
|
|
235
281
|
|
|
236
282
|
test("mergeCompletedMilestone — missing roadmap returns error result", async () => {
|
|
237
|
-
const
|
|
238
|
-
|
|
283
|
+
const savedCwd = process.cwd();
|
|
284
|
+
// Use a real git repo so the standalone's branch-mode merge body can
|
|
285
|
+
// call `getCurrentBranch` without throwing. The roadmap is intentionally
|
|
286
|
+
// omitted so the merge ends in the "no-roadmap" branch.
|
|
287
|
+
const repo = createTempRepo();
|
|
239
288
|
try {
|
|
240
|
-
|
|
289
|
+
setupBranchIsolation(repo);
|
|
290
|
+
// Create a milestone branch but no roadmap file — this is the
|
|
291
|
+
// condition under test.
|
|
292
|
+
run("git checkout -b milestone/M999", repo);
|
|
293
|
+
writeFileSync(join(repo, "feature.ts"), "export {};\n");
|
|
294
|
+
run("git add .", repo);
|
|
295
|
+
run('git commit -m "M999 feature"', repo);
|
|
296
|
+
run("git checkout main", repo);
|
|
297
|
+
|
|
298
|
+
process.chdir(repo);
|
|
299
|
+
const result = await mergeCompletedMilestone(repo, "M999");
|
|
300
|
+
|
|
241
301
|
assert.equal(result.success, false);
|
|
242
|
-
|
|
302
|
+
// A2 widens the error surface vs. the legacy bypass: the standalone
|
|
303
|
+
// routes through the Module, so the no-roadmap path teardowns the
|
|
304
|
+
// (non-existent) worktree branch and surfaces a typed failure.
|
|
305
|
+
// What matters is `success: false`; the exact wording can shift as
|
|
306
|
+
// the standalone evolves.
|
|
307
|
+
assert.ok(result.error, "should report a non-empty error");
|
|
243
308
|
assert.equal(result.milestoneId, "M999");
|
|
244
309
|
} finally {
|
|
245
|
-
|
|
310
|
+
process.chdir(savedCwd);
|
|
311
|
+
try { run("git reset --hard HEAD", repo); } catch { /* */ }
|
|
312
|
+
cleanup(repo);
|
|
246
313
|
}
|
|
247
314
|
});
|
|
248
315
|
|
|
@@ -251,14 +318,24 @@ test("mergeCompletedMilestone — clean merge, session status cleaned up", async
|
|
|
251
318
|
const repo = createTempRepo();
|
|
252
319
|
|
|
253
320
|
try {
|
|
321
|
+
// Route the merge through the Module's branch-mode path. With default
|
|
322
|
+
// `isolation: none`, the standalone returns `{ mode: "skipped" }`
|
|
323
|
+
// (ADR-016 phase 2 / A2). Branch mode exercises the same Module-level
|
|
324
|
+
// merge body without requiring an on-disk auto-worktree.
|
|
325
|
+
setupBranchIsolation(repo);
|
|
326
|
+
|
|
327
|
+
// Set up roadmap on main BEFORE the milestone branch is created so the
|
|
328
|
+
// roadmap is in the milestone branch's history. After A2, the standalone
|
|
329
|
+
// reads the roadmap _inside_ the merge body (after the branch checkout)
|
|
330
|
+
// — the file must therefore exist in the milestone branch's tree, not
|
|
331
|
+
// just as an uncommitted file on main.
|
|
332
|
+
setupRoadmap(repo, "M010", "Auth System", ["S01: JWT module"]);
|
|
333
|
+
|
|
254
334
|
// Create milestone branch with a new file
|
|
255
335
|
createMilestoneBranch(repo, "M010", [
|
|
256
336
|
{ name: "auth.ts", content: "export const auth = true;\n" },
|
|
257
337
|
]);
|
|
258
338
|
|
|
259
|
-
// Set up roadmap
|
|
260
|
-
setupRoadmap(repo, "M010", "Auth System", ["S01: JWT module"]);
|
|
261
|
-
|
|
262
339
|
// Write session status to verify cleanup
|
|
263
340
|
writeSessionStatus(repo, {
|
|
264
341
|
milestoneId: "M010",
|
|
@@ -309,6 +386,11 @@ test("mergeCompletedMilestone — conflict returns structured error with file li
|
|
|
309
386
|
const repo = createTempRepo();
|
|
310
387
|
|
|
311
388
|
try {
|
|
389
|
+
setupBranchIsolation(repo);
|
|
390
|
+
|
|
391
|
+
// Roadmap committed on main BEFORE branching — see "clean merge" test.
|
|
392
|
+
setupRoadmap(repo, "M020", "Conflict Test", ["S01: Conflict scenario"]);
|
|
393
|
+
|
|
312
394
|
// Create milestone branch that modifies README.md
|
|
313
395
|
run("git checkout -b milestone/M020", repo);
|
|
314
396
|
writeFileSync(join(repo, "README.md"), "# M020 version\n");
|
|
@@ -321,9 +403,6 @@ test("mergeCompletedMilestone — conflict returns structured error with file li
|
|
|
321
403
|
run("git add .", repo);
|
|
322
404
|
run('git commit -m "main changes README"', repo);
|
|
323
405
|
|
|
324
|
-
// Set up roadmap
|
|
325
|
-
setupRoadmap(repo, "M020", "Conflict Test", ["S01: Conflict scenario"]);
|
|
326
|
-
|
|
327
406
|
process.chdir(repo);
|
|
328
407
|
const result = await mergeCompletedMilestone(repo, "M020");
|
|
329
408
|
|
|
@@ -350,6 +429,12 @@ test("mergeAllCompleted — merges in sequential order", async () => {
|
|
|
350
429
|
const repo = createTempRepo();
|
|
351
430
|
|
|
352
431
|
try {
|
|
432
|
+
setupBranchIsolation(repo);
|
|
433
|
+
|
|
434
|
+
// Roadmaps committed on main BEFORE branching — see "clean merge" test.
|
|
435
|
+
setupRoadmap(repo, "M001", "Auth", ["S01: Auth module"]);
|
|
436
|
+
setupRoadmap(repo, "M002", "Dashboard", ["S01: Dashboard module"]);
|
|
437
|
+
|
|
353
438
|
// M001: adds auth.ts
|
|
354
439
|
createMilestoneBranch(repo, "M001", [
|
|
355
440
|
{ name: "auth.ts", content: "export const auth = true;\n" },
|
|
@@ -359,9 +444,6 @@ test("mergeAllCompleted — merges in sequential order", async () => {
|
|
|
359
444
|
{ name: "dashboard.ts", content: "export const dash = true;\n" },
|
|
360
445
|
]);
|
|
361
446
|
|
|
362
|
-
setupRoadmap(repo, "M001", "Auth", ["S01: Auth module"]);
|
|
363
|
-
setupRoadmap(repo, "M002", "Dashboard", ["S01: Dashboard module"]);
|
|
364
|
-
|
|
365
447
|
const workers = [
|
|
366
448
|
makeWorker({ milestoneId: "M002", startedAt: 100 }),
|
|
367
449
|
makeWorker({ milestoneId: "M001", startedAt: 200 }),
|
|
@@ -373,9 +455,9 @@ test("mergeAllCompleted — merges in sequential order", async () => {
|
|
|
373
455
|
// Both should succeed
|
|
374
456
|
assert.equal(results.length, 2, "should have two results");
|
|
375
457
|
assert.equal(results[0]!.milestoneId, "M001", "M001 merged first (sequential)");
|
|
376
|
-
assert.equal(results[0]!.success, true,
|
|
458
|
+
assert.equal(results[0]!.success, true, `M001 should succeed: ${results[0]!.error}`);
|
|
377
459
|
assert.equal(results[1]!.milestoneId, "M002", "M002 merged second");
|
|
378
|
-
assert.equal(results[1]!.success, true,
|
|
460
|
+
assert.equal(results[1]!.success, true, `M002 should succeed: ${results[1]!.error}`);
|
|
379
461
|
|
|
380
462
|
// Both files on main
|
|
381
463
|
assert.ok(existsSync(join(repo, "auth.ts")), "auth.ts on main");
|
|
@@ -391,6 +473,12 @@ test("mergeAllCompleted — stops on first conflict, skips later milestones", as
|
|
|
391
473
|
const repo = createTempRepo();
|
|
392
474
|
|
|
393
475
|
try {
|
|
476
|
+
setupBranchIsolation(repo);
|
|
477
|
+
|
|
478
|
+
// Roadmaps committed on main BEFORE branching — see "clean merge" test.
|
|
479
|
+
setupRoadmap(repo, "M001", "Conflict milestone", ["S01: Conflict test"]);
|
|
480
|
+
setupRoadmap(repo, "M002", "Clean milestone", ["S01: Clean test"]);
|
|
481
|
+
|
|
394
482
|
// M001: modifies README.md (will conflict with main)
|
|
395
483
|
run("git checkout -b milestone/M001", repo);
|
|
396
484
|
writeFileSync(join(repo, "README.md"), "# M001 version\n");
|
|
@@ -408,9 +496,6 @@ test("mergeAllCompleted — stops on first conflict, skips later milestones", as
|
|
|
408
496
|
run("git add .", repo);
|
|
409
497
|
run('git commit -m "main diverges README"', repo);
|
|
410
498
|
|
|
411
|
-
setupRoadmap(repo, "M001", "Conflict milestone", ["S01: Conflict test"]);
|
|
412
|
-
setupRoadmap(repo, "M002", "Clean milestone", ["S01: Clean test"]);
|
|
413
|
-
|
|
414
499
|
const workers = [
|
|
415
500
|
makeWorker({ milestoneId: "M001" }),
|
|
416
501
|
makeWorker({ milestoneId: "M002" }),
|
|
@@ -442,6 +527,12 @@ test("mergeAllCompleted — by-completion order respects startedAt", async () =>
|
|
|
442
527
|
const repo = createTempRepo();
|
|
443
528
|
|
|
444
529
|
try {
|
|
530
|
+
setupBranchIsolation(repo);
|
|
531
|
+
|
|
532
|
+
// Roadmaps committed on main BEFORE branching — see "clean merge" test.
|
|
533
|
+
setupRoadmap(repo, "M001", "Auth", ["S01: Auth module"]);
|
|
534
|
+
setupRoadmap(repo, "M002", "Feature", ["S01: Feature module"]);
|
|
535
|
+
|
|
445
536
|
// M001: adds auth.ts (started later)
|
|
446
537
|
createMilestoneBranch(repo, "M001", [
|
|
447
538
|
{ name: "auth.ts", content: "export const auth = true;\n" },
|
|
@@ -451,9 +542,6 @@ test("mergeAllCompleted — by-completion order respects startedAt", async () =>
|
|
|
451
542
|
{ name: "feature.ts", content: "export const feature = true;\n" },
|
|
452
543
|
]);
|
|
453
544
|
|
|
454
|
-
setupRoadmap(repo, "M001", "Auth", ["S01: Auth module"]);
|
|
455
|
-
setupRoadmap(repo, "M002", "Feature", ["S01: Feature module"]);
|
|
456
|
-
|
|
457
545
|
const workers = [
|
|
458
546
|
makeWorker({ milestoneId: "M001", startedAt: 2000 }),
|
|
459
547
|
makeWorker({ milestoneId: "M002", startedAt: 1000 }),
|
|
@@ -549,11 +637,15 @@ test("mergeAllCompleted — discovers DB-complete milestones when workers show e
|
|
|
549
637
|
const repo = createTempRepo();
|
|
550
638
|
|
|
551
639
|
try {
|
|
640
|
+
setupBranchIsolation(repo);
|
|
641
|
+
|
|
642
|
+
// Roadmap committed on main BEFORE branching — see "clean merge" test.
|
|
643
|
+
setupRoadmap(repo, "M011", "Feature System", ["S01: Feature module"]);
|
|
644
|
+
|
|
552
645
|
// Create milestone branch with a file
|
|
553
646
|
createMilestoneBranch(repo, "M011", [
|
|
554
647
|
{ name: "feature.ts", content: "export const feature = true;\n" },
|
|
555
648
|
]);
|
|
556
|
-
setupRoadmap(repo, "M011", "Feature System", ["S01: Feature module"]);
|
|
557
649
|
|
|
558
650
|
// Set up canonical DB showing M011 is complete
|
|
559
651
|
setupCanonicalDbWithWorktree(repo, "M011");
|
|
@@ -75,7 +75,6 @@ function makeMockDeps(
|
|
|
75
75
|
pruneQueueOrder: () => {},
|
|
76
76
|
isInAutoWorktree: () => false,
|
|
77
77
|
shouldUseWorktreeIsolation: () => false,
|
|
78
|
-
mergeMilestoneToMain: () => ({ pushed: false, codeFilesChanged: false }),
|
|
79
78
|
teardownAutoWorktree: () => {},
|
|
80
79
|
createAutoWorktree: () => "/tmp/wt",
|
|
81
80
|
captureIntegrationBranch: () => {},
|