gsd-pi 2.78.1 → 2.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1692) hide show
  1. package/README.md +28 -21
  2. package/dist/bundled-resource-path.d.ts +7 -0
  3. package/dist/bundled-resource-path.js +34 -2
  4. package/dist/claude-cli-check.js +18 -6
  5. package/dist/cli-auto-routing.d.ts +1 -0
  6. package/dist/cli-auto-routing.js +5 -0
  7. package/dist/cli-policy.d.ts +13 -0
  8. package/dist/cli-policy.js +17 -0
  9. package/dist/cli.js +100 -69
  10. package/dist/headless-query.d.ts +22 -0
  11. package/dist/headless-query.js +43 -8
  12. package/dist/headless-recover.d.ts +23 -0
  13. package/dist/headless-recover.js +93 -0
  14. package/dist/headless.d.ts +10 -0
  15. package/dist/headless.js +25 -1
  16. package/dist/help-text.js +1 -0
  17. package/dist/loader.js +24 -16
  18. package/dist/onboarding.d.ts +10 -0
  19. package/dist/onboarding.js +2 -2
  20. package/dist/provider-migrations.d.ts +2 -2
  21. package/dist/provider-migrations.js +5 -2
  22. package/dist/resource-loader.d.ts +5 -2
  23. package/dist/resource-loader.js +62 -31
  24. package/dist/resources/.managed-resources-content-hash +1 -0
  25. package/dist/resources/GSD-WORKFLOW.md +29 -42
  26. package/dist/resources/extensions/async-jobs/job-manager.js +4 -0
  27. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +3 -2
  28. package/dist/resources/extensions/bg-shell/utilities.js +2 -1
  29. package/dist/resources/extensions/browser-tools/tools/intent.js +8 -1
  30. package/dist/resources/extensions/claude-code-cli/readiness.js +19 -7
  31. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +22 -8
  32. package/dist/resources/extensions/github-sync/cli.js +3 -0
  33. package/dist/resources/extensions/github-sync/sync.js +86 -58
  34. package/dist/resources/extensions/google-search/index.js +2 -6
  35. package/dist/resources/extensions/gsd/auto/detect-stuck.js +41 -5
  36. package/dist/resources/extensions/gsd/auto/loop.js +258 -36
  37. package/dist/resources/extensions/gsd/auto/phases.js +96 -38
  38. package/dist/resources/extensions/gsd/auto/run-unit.js +26 -12
  39. package/dist/resources/extensions/gsd/auto/session.js +44 -6
  40. package/dist/resources/extensions/gsd/auto-artifact-paths.js +49 -31
  41. package/dist/resources/extensions/gsd/auto-dashboard.js +14 -2
  42. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +57 -21
  43. package/dist/resources/extensions/gsd/auto-dispatch.js +301 -97
  44. package/dist/resources/extensions/gsd/auto-post-unit.js +127 -57
  45. package/dist/resources/extensions/gsd/auto-prompts.js +145 -8
  46. package/dist/resources/extensions/gsd/auto-recovery.js +112 -19
  47. package/dist/resources/extensions/gsd/auto-runtime-state.js +31 -0
  48. package/dist/resources/extensions/gsd/auto-start.js +55 -65
  49. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +18 -0
  50. package/dist/resources/extensions/gsd/auto-timers.js +24 -4
  51. package/dist/resources/extensions/gsd/auto-tool-tracking.js +2 -2
  52. package/dist/resources/extensions/gsd/auto-worktree.js +368 -376
  53. package/dist/resources/extensions/gsd/auto.js +226 -78
  54. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +21 -3
  55. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +54 -9
  56. package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +9 -77
  57. package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +7 -5
  58. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +2 -2
  59. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +5 -4
  60. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +204 -46
  61. package/dist/resources/extensions/gsd/bootstrap/register-shortcuts.js +11 -6
  62. package/dist/resources/extensions/gsd/bootstrap/subagent-input.js +22 -0
  63. package/dist/resources/extensions/gsd/bootstrap/system-context.js +48 -12
  64. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +263 -66
  65. package/dist/resources/extensions/gsd/branch-patterns.js +3 -3
  66. package/dist/resources/extensions/gsd/commands/catalog.js +81 -9
  67. package/dist/resources/extensions/gsd/commands/context.js +41 -5
  68. package/dist/resources/extensions/gsd/commands/dispatcher.js +11 -5
  69. package/dist/resources/extensions/gsd/commands/handlers/auto.js +2 -1
  70. package/dist/resources/extensions/gsd/commands/handlers/core.js +25 -1
  71. package/dist/resources/extensions/gsd/commands/handlers/ops.js +13 -0
  72. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +24 -2
  73. package/dist/resources/extensions/gsd/commands-bootstrap.js +6 -0
  74. package/dist/resources/extensions/gsd/commands-codebase.js +2 -1
  75. package/dist/resources/extensions/gsd/commands-config.js +3 -2
  76. package/dist/resources/extensions/gsd/commands-debug.js +22 -1
  77. package/dist/resources/extensions/gsd/commands-eval-review.js +534 -0
  78. package/dist/resources/extensions/gsd/commands-extensions.js +50 -7
  79. package/dist/resources/extensions/gsd/commands-handlers.js +8 -7
  80. package/dist/resources/extensions/gsd/commands-logs.js +2 -1
  81. package/dist/resources/extensions/gsd/commands-mcp-status.js +3 -1
  82. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +10 -1
  83. package/dist/resources/extensions/gsd/commands-scan.js +2 -1
  84. package/dist/resources/extensions/gsd/commands-ship.js +67 -1
  85. package/dist/resources/extensions/gsd/commands-workflow-templates.js +5 -4
  86. package/dist/resources/extensions/gsd/commands-worktree.js +309 -0
  87. package/dist/resources/extensions/gsd/context-budget.js +11 -3
  88. package/dist/resources/extensions/gsd/crash-recovery.js +160 -47
  89. package/dist/resources/extensions/gsd/dashboard-overlay.js +1 -1
  90. package/dist/resources/extensions/gsd/db/auto-workers.js +227 -0
  91. package/dist/resources/extensions/gsd/db/command-queue.js +105 -0
  92. package/dist/resources/extensions/gsd/db/milestone-leases.js +210 -0
  93. package/dist/resources/extensions/gsd/db/runtime-kv.js +91 -0
  94. package/dist/resources/extensions/gsd/db/unit-dispatches.js +322 -0
  95. package/dist/resources/extensions/gsd/db-writer.js +150 -92
  96. package/dist/resources/extensions/gsd/deep-project-setup-policy.js +212 -0
  97. package/dist/resources/extensions/gsd/delegation-policy.js +155 -0
  98. package/dist/resources/extensions/gsd/detection.js +7 -7
  99. package/dist/resources/extensions/gsd/dispatch-guard.js +6 -10
  100. package/dist/resources/extensions/gsd/docs/COORDINATION.md +42 -0
  101. package/dist/resources/extensions/gsd/docs/preferences-reference.md +16 -4
  102. package/dist/resources/extensions/gsd/doctor-engine-checks.js +2 -2
  103. package/dist/resources/extensions/gsd/doctor-proactive.js +4 -0
  104. package/dist/resources/extensions/gsd/doctor-providers.js +2 -1
  105. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +115 -7
  106. package/dist/resources/extensions/gsd/doctor.js +12 -2
  107. package/dist/resources/extensions/gsd/error-classifier.js +1 -1
  108. package/dist/resources/extensions/gsd/eval-review-schema.js +208 -0
  109. package/dist/resources/extensions/gsd/forensics.js +17 -9
  110. package/dist/resources/extensions/gsd/git-service.js +86 -9
  111. package/dist/resources/extensions/gsd/gsd-db.js +442 -14
  112. package/dist/resources/extensions/gsd/gsd-home.js +29 -0
  113. package/dist/resources/extensions/gsd/guided-flow-queue.js +1 -1
  114. package/dist/resources/extensions/gsd/guided-flow.js +416 -142
  115. package/dist/resources/extensions/gsd/init-wizard.js +16 -23
  116. package/dist/resources/extensions/gsd/interrupted-session.js +45 -7
  117. package/dist/resources/extensions/gsd/key-manager.js +2 -1
  118. package/dist/resources/extensions/gsd/markdown-renderer.js +59 -66
  119. package/dist/resources/extensions/gsd/memory-store.js +66 -31
  120. package/dist/resources/extensions/gsd/metrics.js +287 -1
  121. package/dist/resources/extensions/gsd/migrate/command.js +3 -2
  122. package/dist/resources/extensions/gsd/milestone-id-reservation.js +36 -0
  123. package/dist/resources/extensions/gsd/milestone-scope-classifier.js +10 -8
  124. package/dist/resources/extensions/gsd/model-router.js +114 -9
  125. package/dist/resources/extensions/gsd/native-git-bridge.js +26 -43
  126. package/dist/resources/extensions/gsd/onboarding-state.js +2 -2
  127. package/dist/resources/extensions/gsd/parallel-merge.js +14 -13
  128. package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +5 -2
  129. package/dist/resources/extensions/gsd/paths.js +151 -9
  130. package/dist/resources/extensions/gsd/planning-depth.js +114 -0
  131. package/dist/resources/extensions/gsd/preferences-models.js +109 -16
  132. package/dist/resources/extensions/gsd/preferences-skills.js +2 -1
  133. package/dist/resources/extensions/gsd/preferences-types.js +6 -0
  134. package/dist/resources/extensions/gsd/preferences-validation.js +41 -0
  135. package/dist/resources/extensions/gsd/preferences.js +25 -7
  136. package/dist/resources/extensions/gsd/project-research-policy.js +182 -0
  137. package/dist/resources/extensions/gsd/prompt-loader.js +25 -15
  138. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +10 -0
  139. package/dist/resources/extensions/gsd/prompts/complete-slice.md +14 -4
  140. package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -3
  141. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +10 -1
  142. package/dist/resources/extensions/gsd/prompts/guided-discuss-project.md +148 -0
  143. package/dist/resources/extensions/gsd/prompts/guided-discuss-requirements.md +126 -0
  144. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -1
  145. package/dist/resources/extensions/gsd/prompts/guided-research-decision.md +70 -0
  146. package/dist/resources/extensions/gsd/prompts/guided-research-project.md +120 -0
  147. package/dist/resources/extensions/gsd/prompts/guided-workflow-preferences.md +68 -0
  148. package/dist/resources/extensions/gsd/prompts/parallel-research-slices.md +2 -0
  149. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +8 -2
  150. package/dist/resources/extensions/gsd/prompts/plan-slice.md +18 -6
  151. package/dist/resources/extensions/gsd/prompts/refine-slice.md +10 -0
  152. package/dist/resources/extensions/gsd/prompts/rewrite-docs.md +2 -0
  153. package/dist/resources/extensions/gsd/prompts/system.md +4 -4
  154. package/dist/resources/extensions/gsd/queue-order.js +6 -1
  155. package/dist/resources/extensions/gsd/repo-identity.js +20 -9
  156. package/dist/resources/extensions/gsd/rethink.js +2 -1
  157. package/dist/resources/extensions/gsd/safety/git-checkpoint.js +8 -1
  158. package/dist/resources/extensions/gsd/schemas/__fixtures__/valid-project.md +26 -0
  159. package/dist/resources/extensions/gsd/schemas/__fixtures__/valid-requirements.md +57 -0
  160. package/dist/resources/extensions/gsd/schemas/__fixtures__/valid-roadmap.md +19 -0
  161. package/dist/resources/extensions/gsd/schemas/parsers.js +276 -0
  162. package/dist/resources/extensions/gsd/schemas/validate.js +364 -0
  163. package/dist/resources/extensions/gsd/skill-telemetry.js +3 -2
  164. package/dist/resources/extensions/gsd/slice-cadence.js +56 -7
  165. package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +9 -3
  166. package/dist/resources/extensions/gsd/state.js +153 -377
  167. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +1 -0
  168. package/dist/resources/extensions/gsd/templates/project.md +10 -0
  169. package/dist/resources/extensions/gsd/token-counter.js +1 -0
  170. package/dist/resources/extensions/gsd/tools/complete-milestone.js +6 -5
  171. package/dist/resources/extensions/gsd/tools/complete-slice.js +7 -12
  172. package/dist/resources/extensions/gsd/tools/complete-task.js +19 -31
  173. package/dist/resources/extensions/gsd/tools/memory-tools.js +18 -1
  174. package/dist/resources/extensions/gsd/tools/plan-slice.js +6 -5
  175. package/dist/resources/extensions/gsd/tools/validate-milestone.js +7 -5
  176. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +74 -11
  177. package/dist/resources/extensions/gsd/unit-context-manifest.js +125 -5
  178. package/dist/resources/extensions/gsd/unit-runtime.js +88 -24
  179. package/dist/resources/extensions/gsd/uok/plan-v2.js +14 -1
  180. package/dist/resources/extensions/gsd/user-input-boundary.js +157 -0
  181. package/dist/resources/extensions/gsd/visualizer-overlay.js +1 -1
  182. package/dist/resources/extensions/gsd/watch/header-renderer.js +4 -1
  183. package/dist/resources/extensions/gsd/workflow-install.js +2 -3
  184. package/dist/resources/extensions/gsd/workflow-manifest.js +2 -1
  185. package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +3 -21
  186. package/dist/resources/extensions/gsd/workflow-mcp.js +41 -5
  187. package/dist/resources/extensions/gsd/workflow-migration.js +4 -3
  188. package/dist/resources/extensions/gsd/workflow-plugins.js +3 -5
  189. package/dist/resources/extensions/gsd/workflow-reconcile.js +3 -3
  190. package/dist/resources/extensions/gsd/workflow-templates.js +2 -3
  191. package/dist/resources/extensions/gsd/workspace.js +59 -0
  192. package/dist/resources/extensions/gsd/worktree-command.js +30 -49
  193. package/dist/resources/extensions/gsd/worktree-manager.js +26 -7
  194. package/dist/resources/extensions/gsd/worktree-resolver.js +111 -19
  195. package/dist/resources/extensions/gsd/worktree-root.js +163 -0
  196. package/dist/resources/extensions/gsd/worktree-session-state.js +33 -0
  197. package/dist/resources/extensions/gsd/worktree.js +4 -115
  198. package/dist/resources/extensions/gsd/write-intercept.js +3 -3
  199. package/dist/resources/extensions/mcp-client/index.js +6 -9
  200. package/dist/resources/extensions/ollama/index.js +15 -2
  201. package/dist/resources/extensions/ollama/model-capabilities.js +31 -0
  202. package/dist/resources/extensions/ollama/ollama-client.js +40 -4
  203. package/dist/resources/extensions/remote-questions/remote-command.js +2 -1
  204. package/dist/resources/extensions/remote-questions/status.js +2 -5
  205. package/dist/resources/extensions/remote-questions/store.js +2 -5
  206. package/dist/resources/extensions/search-the-web/provider.js +9 -8
  207. package/dist/resources/extensions/shared/next-action-ui.js +7 -0
  208. package/dist/resources/extensions/slash-commands/create-extension.js +36 -22
  209. package/dist/resources/extensions/subagent/index.js +341 -190
  210. package/dist/resources/extensions/subagent/isolation.js +2 -2
  211. package/dist/resources/extensions/ttsr/rule-loader.js +2 -3
  212. package/dist/resources/extensions/voice/index.js +3 -2
  213. package/dist/resources/extensions/voice/linux-ready.js +2 -2
  214. package/dist/resources/skills/create-gsd-extension/SKILL.md +9 -5
  215. package/dist/resources/skills/create-gsd-extension/references/custom-commands.md +1 -1
  216. package/dist/resources/skills/create-gsd-extension/references/custom-rendering.md +5 -5
  217. package/dist/resources/skills/create-gsd-extension/references/custom-tools.md +4 -4
  218. package/dist/resources/skills/create-gsd-extension/references/custom-ui.md +6 -6
  219. package/dist/resources/skills/create-gsd-extension/references/events-reference.md +3 -3
  220. package/dist/resources/skills/create-gsd-extension/references/packaging-distribution.md +1 -1
  221. package/dist/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +3 -3
  222. package/dist/resources/skills/create-gsd-extension/workflows/create-extension.md +32 -12
  223. package/dist/resources/skills/lint/SKILL.md +4 -0
  224. package/dist/resources/skills/review/SKILL.md +4 -0
  225. package/dist/resources/skills/test/SKILL.md +3 -0
  226. package/dist/resources/skills/verify-before-complete/SKILL.md +1 -1
  227. package/dist/rtk-shared.d.ts +3 -0
  228. package/dist/rtk-shared.js +17 -0
  229. package/dist/rtk.d.ts +2 -5
  230. package/dist/rtk.js +3 -20
  231. package/dist/runtime-checks.d.ts +27 -0
  232. package/dist/runtime-checks.js +38 -0
  233. package/dist/tool-bootstrap.js +7 -0
  234. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  235. package/dist/web/standalone/.next/BUILD_ID +1 -1
  236. package/dist/web/standalone/.next/app-path-routes-manifest.json +16 -16
  237. package/dist/web/standalone/.next/build-manifest.json +4 -4
  238. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  239. package/dist/web/standalone/.next/react-loadable-manifest.json +47 -7
  240. package/dist/web/standalone/.next/required-server-files.json +1 -1
  241. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  242. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  243. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  244. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  245. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  246. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  247. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  248. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  249. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  250. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  251. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  252. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  253. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  254. package/dist/web/standalone/.next/server/app/_not-found.rsc +2 -2
  255. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  256. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  257. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  258. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  259. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  260. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  261. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  262. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  263. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  264. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  265. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  266. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  267. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  268. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  269. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  270. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  271. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  272. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  273. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  274. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  275. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  276. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  277. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  278. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  279. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  280. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  281. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  282. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  283. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  284. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  285. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  286. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  287. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  288. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  289. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  290. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  291. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  292. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  293. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  294. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  295. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  296. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  297. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  298. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  299. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  300. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  301. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  302. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  303. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  304. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  305. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  306. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  307. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  308. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  309. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  310. package/dist/web/standalone/.next/server/app/api/session/events/route.js +4 -2
  311. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  312. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  313. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  314. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  315. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  316. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  317. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  318. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  319. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  320. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  321. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  322. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  323. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
  324. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  325. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  326. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  327. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  328. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  329. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  330. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  331. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  332. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  333. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  334. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  335. package/dist/web/standalone/.next/server/app/index.html +1 -1
  336. package/dist/web/standalone/.next/server/app/index.rsc +3 -3
  337. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  338. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  339. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  340. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  341. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  342. package/dist/web/standalone/.next/server/app/page.js +2 -2
  343. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  344. package/dist/web/standalone/.next/server/app-paths-manifest.json +16 -16
  345. package/dist/web/standalone/.next/server/chunks/2331.js +16 -16
  346. package/dist/web/standalone/.next/server/chunks/4741.js +12 -12
  347. package/dist/web/standalone/.next/server/chunks/5822.js +2 -2
  348. package/dist/web/standalone/.next/server/chunks/63.js +8 -8
  349. package/dist/web/standalone/.next/server/chunks/6336.js +1 -0
  350. package/dist/web/standalone/.next/server/chunks/6897.js +3 -3
  351. package/dist/web/standalone/.next/server/functions-config-manifest.json +9 -0
  352. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  353. package/dist/web/standalone/.next/server/middleware-manifest.json +2 -29
  354. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  355. package/dist/web/standalone/.next/server/middleware.js +12 -4
  356. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  357. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  358. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  359. package/dist/web/standalone/.next/server/webpack-runtime.js +1 -1
  360. package/dist/web/standalone/.next/static/chunks/2059.d6f49d697b624f2b.js +20 -0
  361. package/dist/web/standalone/.next/static/chunks/2556.0527fea66e123b7f.js +1 -0
  362. package/dist/web/standalone/.next/static/chunks/2824.461404167557f2cd.js +1 -0
  363. package/dist/web/standalone/.next/static/chunks/3026.3af53b279375f082.js +1 -0
  364. package/dist/web/standalone/.next/static/chunks/315.6f68ae79b67d25cf.js +1 -0
  365. package/dist/web/standalone/.next/static/chunks/3497.4bfc60a3b3dea717.js +1 -0
  366. package/dist/web/standalone/.next/static/chunks/363642f4.c6481b47ee815ba0.js +1 -0
  367. package/dist/web/standalone/.next/static/chunks/{3794-42fdce068d44fa4f.js → 3794-3fb4e6ee851037bb.js} +1 -1
  368. package/dist/web/standalone/.next/static/chunks/{4447.5bad7871be61ca73.js → 4447.fe6f304888d5ac71.js} +2 -2
  369. package/dist/web/standalone/.next/static/chunks/5326.def6842b53fecd26.js +1 -0
  370. package/dist/web/standalone/.next/static/chunks/5516.4a07c872b5c3a663.js +1 -0
  371. package/dist/web/standalone/.next/static/chunks/8336.6f6f30e410419aff.js +10 -0
  372. package/dist/web/standalone/.next/static/chunks/8845.c9702695e8c5a9c5.js +2 -0
  373. package/dist/web/standalone/.next/static/chunks/9441.1081da1125d1764f.js +1 -0
  374. package/dist/web/standalone/.next/static/chunks/app/{page-151349214571e2b6.js → page-ff639266d978f2a0.js} +1 -1
  375. package/dist/web/standalone/.next/static/chunks/{framework-711ef29bc66f648c.js → framework-34a8c4228d7fd161.js} +1 -1
  376. package/dist/web/standalone/.next/static/chunks/{main-6919d9dd919bd15f.js → main-2b7d1294417bb6bc.js} +1 -1
  377. package/dist/web/standalone/.next/static/chunks/webpack-d82dbee6356c1733.js +1 -0
  378. package/dist/web/standalone/.next/static/css/{632cd626b1731d88.css → 54ec2745c1da488b.css} +1 -1
  379. package/dist/web/standalone/node_modules/@next/env/package.json +1 -1
  380. package/dist/web/standalone/node_modules/baseline-browser-mapping/dist/index.cjs +1 -1
  381. package/dist/web/standalone/node_modules/baseline-browser-mapping/package.json +3 -3
  382. package/dist/web/standalone/node_modules/caniuse-lite/data/agents.js +1 -1
  383. package/dist/web/standalone/node_modules/caniuse-lite/data/browserVersions.js +1 -1
  384. package/dist/web/standalone/node_modules/caniuse-lite/data/features/aac.js +1 -1
  385. package/dist/web/standalone/node_modules/caniuse-lite/data/features/abortcontroller.js +1 -1
  386. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ac3-ec3.js +1 -1
  387. package/dist/web/standalone/node_modules/caniuse-lite/data/features/accelerometer.js +1 -1
  388. package/dist/web/standalone/node_modules/caniuse-lite/data/features/addeventlistener.js +1 -1
  389. package/dist/web/standalone/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +1 -1
  390. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ambient-light.js +1 -1
  391. package/dist/web/standalone/node_modules/caniuse-lite/data/features/apng.js +1 -1
  392. package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-find-index.js +1 -1
  393. package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-find.js +1 -1
  394. package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-flat.js +1 -1
  395. package/dist/web/standalone/node_modules/caniuse-lite/data/features/array-includes.js +1 -1
  396. package/dist/web/standalone/node_modules/caniuse-lite/data/features/arrow-functions.js +1 -1
  397. package/dist/web/standalone/node_modules/caniuse-lite/data/features/asmjs.js +1 -1
  398. package/dist/web/standalone/node_modules/caniuse-lite/data/features/async-clipboard.js +1 -1
  399. package/dist/web/standalone/node_modules/caniuse-lite/data/features/async-functions.js +1 -1
  400. package/dist/web/standalone/node_modules/caniuse-lite/data/features/atob-btoa.js +1 -1
  401. package/dist/web/standalone/node_modules/caniuse-lite/data/features/audio-api.js +1 -1
  402. package/dist/web/standalone/node_modules/caniuse-lite/data/features/audio.js +1 -1
  403. package/dist/web/standalone/node_modules/caniuse-lite/data/features/audiotracks.js +1 -1
  404. package/dist/web/standalone/node_modules/caniuse-lite/data/features/autofocus.js +1 -1
  405. package/dist/web/standalone/node_modules/caniuse-lite/data/features/auxclick.js +1 -1
  406. package/dist/web/standalone/node_modules/caniuse-lite/data/features/av1.js +1 -1
  407. package/dist/web/standalone/node_modules/caniuse-lite/data/features/avif.js +1 -1
  408. package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-attachment.js +1 -1
  409. package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-clip-text.js +1 -1
  410. package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-img-opts.js +1 -1
  411. package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-position-x-y.js +1 -1
  412. package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +1 -1
  413. package/dist/web/standalone/node_modules/caniuse-lite/data/features/background-sync.js +1 -1
  414. package/dist/web/standalone/node_modules/caniuse-lite/data/features/battery-status.js +1 -1
  415. package/dist/web/standalone/node_modules/caniuse-lite/data/features/beacon.js +1 -1
  416. package/dist/web/standalone/node_modules/caniuse-lite/data/features/beforeafterprint.js +1 -1
  417. package/dist/web/standalone/node_modules/caniuse-lite/data/features/bigint.js +1 -1
  418. package/dist/web/standalone/node_modules/caniuse-lite/data/features/blobbuilder.js +1 -1
  419. package/dist/web/standalone/node_modules/caniuse-lite/data/features/bloburls.js +1 -1
  420. package/dist/web/standalone/node_modules/caniuse-lite/data/features/border-image.js +1 -1
  421. package/dist/web/standalone/node_modules/caniuse-lite/data/features/border-radius.js +1 -1
  422. package/dist/web/standalone/node_modules/caniuse-lite/data/features/broadcastchannel.js +1 -1
  423. package/dist/web/standalone/node_modules/caniuse-lite/data/features/brotli.js +1 -1
  424. package/dist/web/standalone/node_modules/caniuse-lite/data/features/calc.js +1 -1
  425. package/dist/web/standalone/node_modules/caniuse-lite/data/features/canvas-blending.js +1 -1
  426. package/dist/web/standalone/node_modules/caniuse-lite/data/features/canvas-text.js +1 -1
  427. package/dist/web/standalone/node_modules/caniuse-lite/data/features/canvas.js +1 -1
  428. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ch-unit.js +1 -1
  429. package/dist/web/standalone/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +1 -1
  430. package/dist/web/standalone/node_modules/caniuse-lite/data/features/channel-messaging.js +1 -1
  431. package/dist/web/standalone/node_modules/caniuse-lite/data/features/childnode-remove.js +1 -1
  432. package/dist/web/standalone/node_modules/caniuse-lite/data/features/classlist.js +1 -1
  433. package/dist/web/standalone/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +1 -1
  434. package/dist/web/standalone/node_modules/caniuse-lite/data/features/clipboard.js +1 -1
  435. package/dist/web/standalone/node_modules/caniuse-lite/data/features/colr-v1.js +1 -1
  436. package/dist/web/standalone/node_modules/caniuse-lite/data/features/colr.js +1 -1
  437. package/dist/web/standalone/node_modules/caniuse-lite/data/features/comparedocumentposition.js +1 -1
  438. package/dist/web/standalone/node_modules/caniuse-lite/data/features/console-basic.js +1 -1
  439. package/dist/web/standalone/node_modules/caniuse-lite/data/features/console-time.js +1 -1
  440. package/dist/web/standalone/node_modules/caniuse-lite/data/features/const.js +1 -1
  441. package/dist/web/standalone/node_modules/caniuse-lite/data/features/constraint-validation.js +1 -1
  442. package/dist/web/standalone/node_modules/caniuse-lite/data/features/contenteditable.js +1 -1
  443. package/dist/web/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +1 -1
  444. package/dist/web/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +1 -1
  445. package/dist/web/standalone/node_modules/caniuse-lite/data/features/cookie-store-api.js +1 -1
  446. package/dist/web/standalone/node_modules/caniuse-lite/data/features/cors.js +1 -1
  447. package/dist/web/standalone/node_modules/caniuse-lite/data/features/createimagebitmap.js +1 -1
  448. package/dist/web/standalone/node_modules/caniuse-lite/data/features/credential-management.js +1 -1
  449. package/dist/web/standalone/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js +1 -1
  450. package/dist/web/standalone/node_modules/caniuse-lite/data/features/cryptography.js +1 -1
  451. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-all.js +1 -1
  452. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-anchor-positioning.js +1 -1
  453. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-animation.js +1 -1
  454. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-any-link.js +1 -1
  455. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-appearance.js +1 -1
  456. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-at-counter-style.js +1 -1
  457. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-autofill.js +1 -1
  458. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +1 -1
  459. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-background-offsets.js +1 -1
  460. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +1 -1
  461. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +1 -1
  462. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-boxshadow.js +1 -1
  463. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-canvas.js +1 -1
  464. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-caret-color.js +1 -1
  465. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-cascade-layers.js +1 -1
  466. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-cascade-scope.js +1 -1
  467. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-case-insensitive.js +1 -1
  468. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-clip-path.js +1 -1
  469. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-color-adjust.js +1 -1
  470. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-color-function.js +1 -1
  471. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-conic-gradients.js +1 -1
  472. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-container-queries-style.js +1 -1
  473. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-container-queries.js +1 -1
  474. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-container-query-units.js +1 -1
  475. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-containment.js +1 -1
  476. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-content-visibility.js +1 -1
  477. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-counters.js +1 -1
  478. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-crisp-edges.js +1 -1
  479. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-cross-fade.js +1 -1
  480. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-default-pseudo.js +1 -1
  481. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +1 -1
  482. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +1 -1
  483. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +1 -1
  484. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-display-contents.js +1 -1
  485. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-element-function.js +1 -1
  486. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-env-function.js +1 -1
  487. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-exclusions.js +1 -1
  488. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-featurequeries.js +1 -1
  489. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-file-selector-button.js +1 -1
  490. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-filter-function.js +1 -1
  491. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-filters.js +1 -1
  492. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-first-letter.js +1 -1
  493. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-first-line.js +1 -1
  494. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-fixed.js +1 -1
  495. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-focus-visible.js +1 -1
  496. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-focus-within.js +1 -1
  497. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-font-palette.js +1 -1
  498. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +1 -1
  499. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-font-stretch.js +1 -1
  500. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-gencontent.js +1 -1
  501. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-gradients.js +1 -1
  502. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-grid-animation.js +1 -1
  503. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-grid-lanes.js +1 -1
  504. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-grid.js +1 -1
  505. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +1 -1
  506. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-has.js +1 -1
  507. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-hyphens.js +1 -1
  508. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-if.js +1 -1
  509. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-image-orientation.js +1 -1
  510. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-image-set.js +1 -1
  511. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +1 -1
  512. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +1 -1
  513. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-initial-letter.js +1 -1
  514. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-initial-value.js +1 -1
  515. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-lch-lab.js +1 -1
  516. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-letter-spacing.js +1 -1
  517. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-line-clamp.js +1 -1
  518. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-logical-props.js +1 -1
  519. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +1 -1
  520. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-masks.js +1 -1
  521. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +1 -1
  522. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-math-functions.js +1 -1
  523. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-interaction.js +1 -1
  524. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-range-syntax.js +1 -1
  525. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-resolution.js +1 -1
  526. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-media-scripting.js +1 -1
  527. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-mediaqueries.js +1 -1
  528. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-mixblendmode.js +1 -1
  529. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-module-scripts.js +1 -1
  530. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-motion-paths.js +1 -1
  531. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-namespaces.js +1 -1
  532. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-nesting.js +1 -1
  533. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-not-sel-list.js +1 -1
  534. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-nth-child-of.js +1 -1
  535. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-opacity.js +1 -1
  536. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +1 -1
  537. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +1 -1
  538. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overflow-overlay.js +1 -1
  539. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overflow.js +1 -1
  540. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +1 -1
  541. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-page-break.js +1 -1
  542. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-paged-media.js +1 -1
  543. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-paint-api.js +1 -1
  544. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +1 -1
  545. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-placeholder.js +1 -1
  546. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-print-color-adjust.js +1 -1
  547. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-read-only-write.js +1 -1
  548. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +1 -1
  549. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-reflections.js +1 -1
  550. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-regions.js +1 -1
  551. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-relative-colors.js +1 -1
  552. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +1 -1
  553. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-resize.js +1 -1
  554. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-revert-value.js +1 -1
  555. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +1 -1
  556. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +1 -1
  557. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-scrollbar.js +1 -1
  558. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-sel2.js +1 -1
  559. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-sel3.js +1 -1
  560. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-selection.js +1 -1
  561. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-shapes.js +1 -1
  562. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-snappoints.js +1 -1
  563. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-sticky.js +1 -1
  564. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-subgrid.js +1 -1
  565. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-supports-api.js +1 -1
  566. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-table.js +1 -1
  567. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-align-last.js +1 -1
  568. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-box-trim.js +1 -1
  569. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-indent.js +1 -1
  570. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-justify.js +1 -1
  571. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-orientation.js +1 -1
  572. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-spacing.js +1 -1
  573. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js +1 -1
  574. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-textshadow.js +1 -1
  575. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-touch-action.js +1 -1
  576. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-transitions.js +1 -1
  577. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +1 -1
  578. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-unset-value.js +1 -1
  579. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-variables.js +1 -1
  580. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-when-else.js +1 -1
  581. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-widows-orphans.js +1 -1
  582. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-width-stretch.js +1 -1
  583. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-writing-mode.js +1 -1
  584. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css-zoom.js +1 -1
  585. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-attr.js +1 -1
  586. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-boxsizing.js +1 -1
  587. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-colors.js +1 -1
  588. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +1 -1
  589. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +1 -1
  590. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-cursors.js +1 -1
  591. package/dist/web/standalone/node_modules/caniuse-lite/data/features/css3-tabsize.js +1 -1
  592. package/dist/web/standalone/node_modules/caniuse-lite/data/features/currentcolor.js +1 -1
  593. package/dist/web/standalone/node_modules/caniuse-lite/data/features/custom-elements.js +1 -1
  594. package/dist/web/standalone/node_modules/caniuse-lite/data/features/custom-elementsv1.js +1 -1
  595. package/dist/web/standalone/node_modules/caniuse-lite/data/features/customevent.js +1 -1
  596. package/dist/web/standalone/node_modules/caniuse-lite/data/features/customizable-select.js +1 -1
  597. package/dist/web/standalone/node_modules/caniuse-lite/data/features/datalist.js +1 -1
  598. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dataset.js +1 -1
  599. package/dist/web/standalone/node_modules/caniuse-lite/data/features/datauri.js +1 -1
  600. package/dist/web/standalone/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +1 -1
  601. package/dist/web/standalone/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js +1 -1
  602. package/dist/web/standalone/node_modules/caniuse-lite/data/features/decorators.js +1 -1
  603. package/dist/web/standalone/node_modules/caniuse-lite/data/features/details.js +1 -1
  604. package/dist/web/standalone/node_modules/caniuse-lite/data/features/deviceorientation.js +1 -1
  605. package/dist/web/standalone/node_modules/caniuse-lite/data/features/devicepixelratio.js +1 -1
  606. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dialog.js +1 -1
  607. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dispatchevent.js +1 -1
  608. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dnssec.js +1 -1
  609. package/dist/web/standalone/node_modules/caniuse-lite/data/features/do-not-track.js +1 -1
  610. package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-currentscript.js +1 -1
  611. package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +1 -1
  612. package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-execcommand.js +1 -1
  613. package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-policy.js +1 -1
  614. package/dist/web/standalone/node_modules/caniuse-lite/data/features/document-scrollingelement.js +1 -1
  615. package/dist/web/standalone/node_modules/caniuse-lite/data/features/documenthead.js +1 -1
  616. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +1 -1
  617. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dom-range.js +1 -1
  618. package/dist/web/standalone/node_modules/caniuse-lite/data/features/domcontentloaded.js +1 -1
  619. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dommatrix.js +1 -1
  620. package/dist/web/standalone/node_modules/caniuse-lite/data/features/download.js +1 -1
  621. package/dist/web/standalone/node_modules/caniuse-lite/data/features/dragndrop.js +1 -1
  622. package/dist/web/standalone/node_modules/caniuse-lite/data/features/element-closest.js +1 -1
  623. package/dist/web/standalone/node_modules/caniuse-lite/data/features/element-from-point.js +1 -1
  624. package/dist/web/standalone/node_modules/caniuse-lite/data/features/element-scroll-methods.js +1 -1
  625. package/dist/web/standalone/node_modules/caniuse-lite/data/features/eme.js +1 -1
  626. package/dist/web/standalone/node_modules/caniuse-lite/data/features/eot.js +1 -1
  627. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es5.js +1 -1
  628. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-class.js +1 -1
  629. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-generators.js +1 -1
  630. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +1 -1
  631. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-module.js +1 -1
  632. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-number.js +1 -1
  633. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6-string-includes.js +1 -1
  634. package/dist/web/standalone/node_modules/caniuse-lite/data/features/es6.js +1 -1
  635. package/dist/web/standalone/node_modules/caniuse-lite/data/features/eventsource.js +1 -1
  636. package/dist/web/standalone/node_modules/caniuse-lite/data/features/extended-system-fonts.js +1 -1
  637. package/dist/web/standalone/node_modules/caniuse-lite/data/features/feature-policy.js +1 -1
  638. package/dist/web/standalone/node_modules/caniuse-lite/data/features/fetch.js +1 -1
  639. package/dist/web/standalone/node_modules/caniuse-lite/data/features/fieldset-disabled.js +1 -1
  640. package/dist/web/standalone/node_modules/caniuse-lite/data/features/fileapi.js +1 -1
  641. package/dist/web/standalone/node_modules/caniuse-lite/data/features/filereader.js +1 -1
  642. package/dist/web/standalone/node_modules/caniuse-lite/data/features/filereadersync.js +1 -1
  643. package/dist/web/standalone/node_modules/caniuse-lite/data/features/filesystem.js +1 -1
  644. package/dist/web/standalone/node_modules/caniuse-lite/data/features/flac.js +1 -1
  645. package/dist/web/standalone/node_modules/caniuse-lite/data/features/flexbox-gap.js +1 -1
  646. package/dist/web/standalone/node_modules/caniuse-lite/data/features/flexbox.js +1 -1
  647. package/dist/web/standalone/node_modules/caniuse-lite/data/features/flow-root.js +1 -1
  648. package/dist/web/standalone/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +1 -1
  649. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-family-system-ui.js +1 -1
  650. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-feature.js +1 -1
  651. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-kerning.js +1 -1
  652. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-loading.js +1 -1
  653. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-size-adjust.js +1 -1
  654. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-smooth.js +1 -1
  655. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-unicode-range.js +1 -1
  656. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-variant-alternates.js +1 -1
  657. package/dist/web/standalone/node_modules/caniuse-lite/data/features/font-variant-numeric.js +1 -1
  658. package/dist/web/standalone/node_modules/caniuse-lite/data/features/fontface.js +1 -1
  659. package/dist/web/standalone/node_modules/caniuse-lite/data/features/form-attribute.js +1 -1
  660. package/dist/web/standalone/node_modules/caniuse-lite/data/features/form-submit-attributes.js +1 -1
  661. package/dist/web/standalone/node_modules/caniuse-lite/data/features/form-validation.js +1 -1
  662. package/dist/web/standalone/node_modules/caniuse-lite/data/features/forms.js +1 -1
  663. package/dist/web/standalone/node_modules/caniuse-lite/data/features/fullscreen.js +1 -1
  664. package/dist/web/standalone/node_modules/caniuse-lite/data/features/gamepad.js +1 -1
  665. package/dist/web/standalone/node_modules/caniuse-lite/data/features/geolocation.js +1 -1
  666. package/dist/web/standalone/node_modules/caniuse-lite/data/features/getboundingclientrect.js +1 -1
  667. package/dist/web/standalone/node_modules/caniuse-lite/data/features/getcomputedstyle.js +1 -1
  668. package/dist/web/standalone/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +1 -1
  669. package/dist/web/standalone/node_modules/caniuse-lite/data/features/getrandomvalues.js +1 -1
  670. package/dist/web/standalone/node_modules/caniuse-lite/data/features/gyroscope.js +1 -1
  671. package/dist/web/standalone/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +1 -1
  672. package/dist/web/standalone/node_modules/caniuse-lite/data/features/hashchange.js +1 -1
  673. package/dist/web/standalone/node_modules/caniuse-lite/data/features/heif.js +1 -1
  674. package/dist/web/standalone/node_modules/caniuse-lite/data/features/hevc.js +1 -1
  675. package/dist/web/standalone/node_modules/caniuse-lite/data/features/hidden.js +1 -1
  676. package/dist/web/standalone/node_modules/caniuse-lite/data/features/high-resolution-time.js +1 -1
  677. package/dist/web/standalone/node_modules/caniuse-lite/data/features/history.js +1 -1
  678. package/dist/web/standalone/node_modules/caniuse-lite/data/features/html-media-capture.js +1 -1
  679. package/dist/web/standalone/node_modules/caniuse-lite/data/features/html5semantic.js +1 -1
  680. package/dist/web/standalone/node_modules/caniuse-lite/data/features/http-live-streaming.js +1 -1
  681. package/dist/web/standalone/node_modules/caniuse-lite/data/features/http2.js +1 -1
  682. package/dist/web/standalone/node_modules/caniuse-lite/data/features/http3.js +1 -1
  683. package/dist/web/standalone/node_modules/caniuse-lite/data/features/iframe-sandbox.js +1 -1
  684. package/dist/web/standalone/node_modules/caniuse-lite/data/features/iframe-seamless.js +1 -1
  685. package/dist/web/standalone/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +1 -1
  686. package/dist/web/standalone/node_modules/caniuse-lite/data/features/imagecapture.js +1 -1
  687. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ime.js +1 -1
  688. package/dist/web/standalone/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +1 -1
  689. package/dist/web/standalone/node_modules/caniuse-lite/data/features/import-maps.js +1 -1
  690. package/dist/web/standalone/node_modules/caniuse-lite/data/features/imports.js +1 -1
  691. package/dist/web/standalone/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +1 -1
  692. package/dist/web/standalone/node_modules/caniuse-lite/data/features/indexeddb.js +1 -1
  693. package/dist/web/standalone/node_modules/caniuse-lite/data/features/indexeddb2.js +1 -1
  694. package/dist/web/standalone/node_modules/caniuse-lite/data/features/inline-block.js +1 -1
  695. package/dist/web/standalone/node_modules/caniuse-lite/data/features/innertext.js +1 -1
  696. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +1 -1
  697. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-color.js +1 -1
  698. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-datetime.js +1 -1
  699. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-email-tel-url.js +1 -1
  700. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-event.js +1 -1
  701. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-file-accept.js +1 -1
  702. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-file-directory.js +1 -1
  703. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-file-multiple.js +1 -1
  704. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-inputmode.js +1 -1
  705. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-minlength.js +1 -1
  706. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-number.js +1 -1
  707. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-pattern.js +1 -1
  708. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-placeholder.js +1 -1
  709. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-range.js +1 -1
  710. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-search.js +1 -1
  711. package/dist/web/standalone/node_modules/caniuse-lite/data/features/input-selection.js +1 -1
  712. package/dist/web/standalone/node_modules/caniuse-lite/data/features/insert-adjacent.js +1 -1
  713. package/dist/web/standalone/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +1 -1
  714. package/dist/web/standalone/node_modules/caniuse-lite/data/features/internationalization.js +1 -1
  715. package/dist/web/standalone/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +1 -1
  716. package/dist/web/standalone/node_modules/caniuse-lite/data/features/intersectionobserver.js +1 -1
  717. package/dist/web/standalone/node_modules/caniuse-lite/data/features/intl-pluralrules.js +1 -1
  718. package/dist/web/standalone/node_modules/caniuse-lite/data/features/intrinsic-width.js +1 -1
  719. package/dist/web/standalone/node_modules/caniuse-lite/data/features/jpeg2000.js +1 -1
  720. package/dist/web/standalone/node_modules/caniuse-lite/data/features/jpegxl.js +1 -1
  721. package/dist/web/standalone/node_modules/caniuse-lite/data/features/jpegxr.js +1 -1
  722. package/dist/web/standalone/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +1 -1
  723. package/dist/web/standalone/node_modules/caniuse-lite/data/features/json.js +1 -1
  724. package/dist/web/standalone/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +1 -1
  725. package/dist/web/standalone/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +1 -1
  726. package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +1 -1
  727. package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-code.js +1 -1
  728. package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +1 -1
  729. package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-key.js +1 -1
  730. package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-location.js +1 -1
  731. package/dist/web/standalone/node_modules/caniuse-lite/data/features/keyboardevent-which.js +1 -1
  732. package/dist/web/standalone/node_modules/caniuse-lite/data/features/lazyload.js +1 -1
  733. package/dist/web/standalone/node_modules/caniuse-lite/data/features/let.js +1 -1
  734. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-icon-png.js +1 -1
  735. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-icon-svg.js +1 -1
  736. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +1 -1
  737. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +1 -1
  738. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +1 -1
  739. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +1 -1
  740. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-preload.js +1 -1
  741. package/dist/web/standalone/node_modules/caniuse-lite/data/features/link-rel-prerender.js +1 -1
  742. package/dist/web/standalone/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +1 -1
  743. package/dist/web/standalone/node_modules/caniuse-lite/data/features/loading-lazy-media.js +1 -1
  744. package/dist/web/standalone/node_modules/caniuse-lite/data/features/localecompare.js +1 -1
  745. package/dist/web/standalone/node_modules/caniuse-lite/data/features/magnetometer.js +1 -1
  746. package/dist/web/standalone/node_modules/caniuse-lite/data/features/matchesselector.js +1 -1
  747. package/dist/web/standalone/node_modules/caniuse-lite/data/features/matchmedia.js +1 -1
  748. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mathml.js +1 -1
  749. package/dist/web/standalone/node_modules/caniuse-lite/data/features/maxlength.js +1 -1
  750. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js +1 -1
  751. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js +1 -1
  752. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js +1 -1
  753. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js +1 -1
  754. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js +1 -1
  755. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js +1 -1
  756. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js +1 -1
  757. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js +1 -1
  758. package/dist/web/standalone/node_modules/caniuse-lite/data/features/media-fragments.js +1 -1
  759. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +1 -1
  760. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mediarecorder.js +1 -1
  761. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mediasource.js +1 -1
  762. package/dist/web/standalone/node_modules/caniuse-lite/data/features/menu.js +1 -1
  763. package/dist/web/standalone/node_modules/caniuse-lite/data/features/meta-theme-color.js +1 -1
  764. package/dist/web/standalone/node_modules/caniuse-lite/data/features/meter.js +1 -1
  765. package/dist/web/standalone/node_modules/caniuse-lite/data/features/midi.js +1 -1
  766. package/dist/web/standalone/node_modules/caniuse-lite/data/features/minmaxwh.js +1 -1
  767. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mp3.js +1 -1
  768. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mpeg-dash.js +1 -1
  769. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mpeg4.js +1 -1
  770. package/dist/web/standalone/node_modules/caniuse-lite/data/features/multibackgrounds.js +1 -1
  771. package/dist/web/standalone/node_modules/caniuse-lite/data/features/multicolumn.js +1 -1
  772. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mutation-events.js +1 -1
  773. package/dist/web/standalone/node_modules/caniuse-lite/data/features/mutationobserver.js +1 -1
  774. package/dist/web/standalone/node_modules/caniuse-lite/data/features/namevalue-storage.js +1 -1
  775. package/dist/web/standalone/node_modules/caniuse-lite/data/features/native-filesystem-api.js +1 -1
  776. package/dist/web/standalone/node_modules/caniuse-lite/data/features/nav-timing.js +1 -1
  777. package/dist/web/standalone/node_modules/caniuse-lite/data/features/netinfo.js +1 -1
  778. package/dist/web/standalone/node_modules/caniuse-lite/data/features/notifications.js +1 -1
  779. package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-entries.js +1 -1
  780. package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-fit.js +1 -1
  781. package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-observe.js +1 -1
  782. package/dist/web/standalone/node_modules/caniuse-lite/data/features/object-values.js +1 -1
  783. package/dist/web/standalone/node_modules/caniuse-lite/data/features/objectrtc.js +1 -1
  784. package/dist/web/standalone/node_modules/caniuse-lite/data/features/offline-apps.js +1 -1
  785. package/dist/web/standalone/node_modules/caniuse-lite/data/features/offscreencanvas.js +1 -1
  786. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ogg-vorbis.js +1 -1
  787. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ogv.js +1 -1
  788. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ol-reversed.js +1 -1
  789. package/dist/web/standalone/node_modules/caniuse-lite/data/features/once-event-listener.js +1 -1
  790. package/dist/web/standalone/node_modules/caniuse-lite/data/features/online-status.js +1 -1
  791. package/dist/web/standalone/node_modules/caniuse-lite/data/features/opus.js +1 -1
  792. package/dist/web/standalone/node_modules/caniuse-lite/data/features/orientation-sensor.js +1 -1
  793. package/dist/web/standalone/node_modules/caniuse-lite/data/features/outline.js +1 -1
  794. package/dist/web/standalone/node_modules/caniuse-lite/data/features/pad-start-end.js +1 -1
  795. package/dist/web/standalone/node_modules/caniuse-lite/data/features/page-transition-events.js +1 -1
  796. package/dist/web/standalone/node_modules/caniuse-lite/data/features/pagevisibility.js +1 -1
  797. package/dist/web/standalone/node_modules/caniuse-lite/data/features/passive-event-listener.js +1 -1
  798. package/dist/web/standalone/node_modules/caniuse-lite/data/features/passkeys.js +1 -1
  799. package/dist/web/standalone/node_modules/caniuse-lite/data/features/passwordrules.js +1 -1
  800. package/dist/web/standalone/node_modules/caniuse-lite/data/features/path2d.js +1 -1
  801. package/dist/web/standalone/node_modules/caniuse-lite/data/features/payment-request.js +1 -1
  802. package/dist/web/standalone/node_modules/caniuse-lite/data/features/pdf-viewer.js +1 -1
  803. package/dist/web/standalone/node_modules/caniuse-lite/data/features/permissions-api.js +1 -1
  804. package/dist/web/standalone/node_modules/caniuse-lite/data/features/permissions-policy.js +1 -1
  805. package/dist/web/standalone/node_modules/caniuse-lite/data/features/picture-in-picture.js +1 -1
  806. package/dist/web/standalone/node_modules/caniuse-lite/data/features/picture.js +1 -1
  807. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ping.js +1 -1
  808. package/dist/web/standalone/node_modules/caniuse-lite/data/features/png-alpha.js +1 -1
  809. package/dist/web/standalone/node_modules/caniuse-lite/data/features/pointer-events.js +1 -1
  810. package/dist/web/standalone/node_modules/caniuse-lite/data/features/pointer.js +1 -1
  811. package/dist/web/standalone/node_modules/caniuse-lite/data/features/pointerlock.js +1 -1
  812. package/dist/web/standalone/node_modules/caniuse-lite/data/features/portals.js +1 -1
  813. package/dist/web/standalone/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +1 -1
  814. package/dist/web/standalone/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +1 -1
  815. package/dist/web/standalone/node_modules/caniuse-lite/data/features/progress.js +1 -1
  816. package/dist/web/standalone/node_modules/caniuse-lite/data/features/promise-finally.js +1 -1
  817. package/dist/web/standalone/node_modules/caniuse-lite/data/features/promises.js +1 -1
  818. package/dist/web/standalone/node_modules/caniuse-lite/data/features/proximity.js +1 -1
  819. package/dist/web/standalone/node_modules/caniuse-lite/data/features/proxy.js +1 -1
  820. package/dist/web/standalone/node_modules/caniuse-lite/data/features/publickeypinning.js +1 -1
  821. package/dist/web/standalone/node_modules/caniuse-lite/data/features/push-api.js +1 -1
  822. package/dist/web/standalone/node_modules/caniuse-lite/data/features/queryselector.js +1 -1
  823. package/dist/web/standalone/node_modules/caniuse-lite/data/features/readonly-attr.js +1 -1
  824. package/dist/web/standalone/node_modules/caniuse-lite/data/features/referrer-policy.js +1 -1
  825. package/dist/web/standalone/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +1 -1
  826. package/dist/web/standalone/node_modules/caniuse-lite/data/features/rel-noopener.js +1 -1
  827. package/dist/web/standalone/node_modules/caniuse-lite/data/features/rel-noreferrer.js +1 -1
  828. package/dist/web/standalone/node_modules/caniuse-lite/data/features/rellist.js +1 -1
  829. package/dist/web/standalone/node_modules/caniuse-lite/data/features/rem.js +1 -1
  830. package/dist/web/standalone/node_modules/caniuse-lite/data/features/requestanimationframe.js +1 -1
  831. package/dist/web/standalone/node_modules/caniuse-lite/data/features/requestidlecallback.js +1 -1
  832. package/dist/web/standalone/node_modules/caniuse-lite/data/features/resizeobserver.js +1 -1
  833. package/dist/web/standalone/node_modules/caniuse-lite/data/features/resource-timing.js +1 -1
  834. package/dist/web/standalone/node_modules/caniuse-lite/data/features/rest-parameters.js +1 -1
  835. package/dist/web/standalone/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +1 -1
  836. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ruby.js +1 -1
  837. package/dist/web/standalone/node_modules/caniuse-lite/data/features/run-in.js +1 -1
  838. package/dist/web/standalone/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +1 -1
  839. package/dist/web/standalone/node_modules/caniuse-lite/data/features/screen-orientation.js +1 -1
  840. package/dist/web/standalone/node_modules/caniuse-lite/data/features/script-async.js +1 -1
  841. package/dist/web/standalone/node_modules/caniuse-lite/data/features/script-defer.js +1 -1
  842. package/dist/web/standalone/node_modules/caniuse-lite/data/features/scrollintoview.js +1 -1
  843. package/dist/web/standalone/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +1 -1
  844. package/dist/web/standalone/node_modules/caniuse-lite/data/features/sdch.js +1 -1
  845. package/dist/web/standalone/node_modules/caniuse-lite/data/features/selection-api.js +1 -1
  846. package/dist/web/standalone/node_modules/caniuse-lite/data/features/server-timing.js +1 -1
  847. package/dist/web/standalone/node_modules/caniuse-lite/data/features/serviceworkers.js +1 -1
  848. package/dist/web/standalone/node_modules/caniuse-lite/data/features/setimmediate.js +1 -1
  849. package/dist/web/standalone/node_modules/caniuse-lite/data/features/shadowdom.js +1 -1
  850. package/dist/web/standalone/node_modules/caniuse-lite/data/features/shadowdomv1.js +1 -1
  851. package/dist/web/standalone/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +1 -1
  852. package/dist/web/standalone/node_modules/caniuse-lite/data/features/sharedworkers.js +1 -1
  853. package/dist/web/standalone/node_modules/caniuse-lite/data/features/sni.js +1 -1
  854. package/dist/web/standalone/node_modules/caniuse-lite/data/features/spdy.js +1 -1
  855. package/dist/web/standalone/node_modules/caniuse-lite/data/features/speech-recognition.js +1 -1
  856. package/dist/web/standalone/node_modules/caniuse-lite/data/features/speech-synthesis.js +1 -1
  857. package/dist/web/standalone/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +1 -1
  858. package/dist/web/standalone/node_modules/caniuse-lite/data/features/sql-storage.js +1 -1
  859. package/dist/web/standalone/node_modules/caniuse-lite/data/features/srcset.js +1 -1
  860. package/dist/web/standalone/node_modules/caniuse-lite/data/features/stream.js +1 -1
  861. package/dist/web/standalone/node_modules/caniuse-lite/data/features/streams.js +1 -1
  862. package/dist/web/standalone/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +1 -1
  863. package/dist/web/standalone/node_modules/caniuse-lite/data/features/style-scoped.js +1 -1
  864. package/dist/web/standalone/node_modules/caniuse-lite/data/features/subresource-bundling.js +1 -1
  865. package/dist/web/standalone/node_modules/caniuse-lite/data/features/subresource-integrity.js +1 -1
  866. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-css.js +1 -1
  867. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-filters.js +1 -1
  868. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-fonts.js +1 -1
  869. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-fragment.js +1 -1
  870. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-html.js +1 -1
  871. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-html5.js +1 -1
  872. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-img.js +1 -1
  873. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg-smil.js +1 -1
  874. package/dist/web/standalone/node_modules/caniuse-lite/data/features/svg.js +1 -1
  875. package/dist/web/standalone/node_modules/caniuse-lite/data/features/sxg.js +1 -1
  876. package/dist/web/standalone/node_modules/caniuse-lite/data/features/tabindex-attr.js +1 -1
  877. package/dist/web/standalone/node_modules/caniuse-lite/data/features/template-literals.js +1 -1
  878. package/dist/web/standalone/node_modules/caniuse-lite/data/features/template.js +1 -1
  879. package/dist/web/standalone/node_modules/caniuse-lite/data/features/temporal.js +1 -1
  880. package/dist/web/standalone/node_modules/caniuse-lite/data/features/testfeat.js +1 -1
  881. package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-decoration.js +1 -1
  882. package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-emphasis.js +1 -1
  883. package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-overflow.js +1 -1
  884. package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-size-adjust.js +1 -1
  885. package/dist/web/standalone/node_modules/caniuse-lite/data/features/text-stroke.js +1 -1
  886. package/dist/web/standalone/node_modules/caniuse-lite/data/features/textcontent.js +1 -1
  887. package/dist/web/standalone/node_modules/caniuse-lite/data/features/textencoder.js +1 -1
  888. package/dist/web/standalone/node_modules/caniuse-lite/data/features/tls1-1.js +1 -1
  889. package/dist/web/standalone/node_modules/caniuse-lite/data/features/tls1-2.js +1 -1
  890. package/dist/web/standalone/node_modules/caniuse-lite/data/features/tls1-3.js +1 -1
  891. package/dist/web/standalone/node_modules/caniuse-lite/data/features/touch.js +1 -1
  892. package/dist/web/standalone/node_modules/caniuse-lite/data/features/transforms2d.js +1 -1
  893. package/dist/web/standalone/node_modules/caniuse-lite/data/features/transforms3d.js +1 -1
  894. package/dist/web/standalone/node_modules/caniuse-lite/data/features/trusted-types.js +1 -1
  895. package/dist/web/standalone/node_modules/caniuse-lite/data/features/ttf.js +1 -1
  896. package/dist/web/standalone/node_modules/caniuse-lite/data/features/typedarrays.js +1 -1
  897. package/dist/web/standalone/node_modules/caniuse-lite/data/features/u2f.js +1 -1
  898. package/dist/web/standalone/node_modules/caniuse-lite/data/features/unhandledrejection.js +1 -1
  899. package/dist/web/standalone/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +1 -1
  900. package/dist/web/standalone/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +1 -1
  901. package/dist/web/standalone/node_modules/caniuse-lite/data/features/url.js +1 -1
  902. package/dist/web/standalone/node_modules/caniuse-lite/data/features/urlsearchparams.js +1 -1
  903. package/dist/web/standalone/node_modules/caniuse-lite/data/features/use-strict.js +1 -1
  904. package/dist/web/standalone/node_modules/caniuse-lite/data/features/user-select-none.js +1 -1
  905. package/dist/web/standalone/node_modules/caniuse-lite/data/features/user-timing.js +1 -1
  906. package/dist/web/standalone/node_modules/caniuse-lite/data/features/variable-fonts.js +1 -1
  907. package/dist/web/standalone/node_modules/caniuse-lite/data/features/vector-effect.js +1 -1
  908. package/dist/web/standalone/node_modules/caniuse-lite/data/features/vibration.js +1 -1
  909. package/dist/web/standalone/node_modules/caniuse-lite/data/features/video.js +1 -1
  910. package/dist/web/standalone/node_modules/caniuse-lite/data/features/videotracks.js +1 -1
  911. package/dist/web/standalone/node_modules/caniuse-lite/data/features/view-transitions.js +1 -1
  912. package/dist/web/standalone/node_modules/caniuse-lite/data/features/viewport-unit-variants.js +1 -1
  913. package/dist/web/standalone/node_modules/caniuse-lite/data/features/viewport-units.js +1 -1
  914. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wai-aria.js +1 -1
  915. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wake-lock.js +1 -1
  916. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-bigint.js +1 -1
  917. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-bulk-memory.js +1 -1
  918. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-extended-const.js +1 -1
  919. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-gc.js +1 -1
  920. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-multi-memory.js +1 -1
  921. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-multi-value.js +1 -1
  922. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-mutable-globals.js +1 -1
  923. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js +1 -1
  924. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-reference-types.js +1 -1
  925. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js +1 -1
  926. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-signext.js +1 -1
  927. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-simd.js +1 -1
  928. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-tail-calls.js +1 -1
  929. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm-threads.js +1 -1
  930. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wasm.js +1 -1
  931. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wav.js +1 -1
  932. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wbr-element.js +1 -1
  933. package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-animation.js +1 -1
  934. package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-app-manifest.js +1 -1
  935. package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-bluetooth.js +1 -1
  936. package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-serial.js +1 -1
  937. package/dist/web/standalone/node_modules/caniuse-lite/data/features/web-share.js +1 -1
  938. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webauthn.js +1 -1
  939. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webcodecs.js +1 -1
  940. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webgl.js +1 -1
  941. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webgl2.js +1 -1
  942. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webgpu.js +1 -1
  943. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webhid.js +1 -1
  944. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webkit-user-drag.js +1 -1
  945. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webm.js +1 -1
  946. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webnfc.js +1 -1
  947. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webp.js +1 -1
  948. package/dist/web/standalone/node_modules/caniuse-lite/data/features/websockets.js +1 -1
  949. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webtransport.js +1 -1
  950. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webusb.js +1 -1
  951. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webvr.js +1 -1
  952. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webvtt.js +1 -1
  953. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webworkers.js +1 -1
  954. package/dist/web/standalone/node_modules/caniuse-lite/data/features/webxr.js +1 -1
  955. package/dist/web/standalone/node_modules/caniuse-lite/data/features/will-change.js +1 -1
  956. package/dist/web/standalone/node_modules/caniuse-lite/data/features/woff.js +1 -1
  957. package/dist/web/standalone/node_modules/caniuse-lite/data/features/woff2.js +1 -1
  958. package/dist/web/standalone/node_modules/caniuse-lite/data/features/word-break.js +1 -1
  959. package/dist/web/standalone/node_modules/caniuse-lite/data/features/wordwrap.js +1 -1
  960. package/dist/web/standalone/node_modules/caniuse-lite/data/features/x-doc-messaging.js +1 -1
  961. package/dist/web/standalone/node_modules/caniuse-lite/data/features/x-frame-options.js +1 -1
  962. package/dist/web/standalone/node_modules/caniuse-lite/data/features/xhr2.js +1 -1
  963. package/dist/web/standalone/node_modules/caniuse-lite/data/features/xhtml.js +1 -1
  964. package/dist/web/standalone/node_modules/caniuse-lite/data/features/xhtmlsmil.js +1 -1
  965. package/dist/web/standalone/node_modules/caniuse-lite/data/features/xml-serializer.js +1 -1
  966. package/dist/web/standalone/node_modules/caniuse-lite/data/features/zstd.js +1 -1
  967. package/dist/web/standalone/node_modules/caniuse-lite/package.json +7 -7
  968. package/dist/web/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  969. package/dist/web/standalone/node_modules/next/dist/build/webpack-config.js +3 -3
  970. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
  971. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +6 -6
  972. package/dist/web/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  973. package/dist/web/standalone/node_modules/next/dist/server/config-schema.js +10 -2
  974. package/dist/web/standalone/node_modules/next/dist/server/config.js +1 -1
  975. package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  976. package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  977. package/dist/web/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  978. package/dist/web/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  979. package/dist/web/standalone/node_modules/next/dist/server/render.js +27 -20
  980. package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  981. package/dist/web/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  982. package/dist/web/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  983. package/dist/web/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  984. package/dist/web/standalone/node_modules/next/package.json +15 -15
  985. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/container.js +26 -18
  986. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/css-syntax-error.js +47 -14
  987. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/input.js +54 -29
  988. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/lazy-result.js +47 -37
  989. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/map-generator.js +26 -9
  990. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/no-work-result.js +57 -55
  991. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/node.js +99 -31
  992. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/parser.js +10 -9
  993. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/previous-map.js +30 -11
  994. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/processor.js +7 -7
  995. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/result.js +5 -5
  996. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/stringifier.js +69 -28
  997. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/tokenize.js +6 -2
  998. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/package.json +48 -48
  999. package/dist/web/standalone/node_modules/react/cjs/react.development.js +1 -1
  1000. package/dist/web/standalone/node_modules/react/cjs/react.production.js +1 -1
  1001. package/dist/web/standalone/node_modules/react/package.json +1 -1
  1002. package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
  1003. package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
  1004. package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +3 -3
  1005. package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +3 -3
  1006. package/dist/web/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +3 -3
  1007. package/dist/web/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
  1008. package/dist/web/standalone/node_modules/react-dom/package.json +2 -2
  1009. package/dist/web/standalone/package.json +14 -8
  1010. package/dist/web/standalone/server.js +1 -1
  1011. package/dist/welcome-screen.js +27 -1
  1012. package/dist/worktree-cli.d.ts +6 -4
  1013. package/dist/worktree-cli.js +26 -20
  1014. package/dist/worktree-status-banner.d.ts +1 -0
  1015. package/dist/worktree-status-banner.js +132 -0
  1016. package/package.json +2 -4
  1017. package/packages/daemon/package.json +2 -2
  1018. package/packages/mcp-server/README.md +13 -11
  1019. package/packages/mcp-server/dist/alias-telemetry.d.ts +8 -0
  1020. package/packages/mcp-server/dist/alias-telemetry.d.ts.map +1 -0
  1021. package/packages/mcp-server/dist/alias-telemetry.js +30 -0
  1022. package/packages/mcp-server/dist/alias-telemetry.js.map +1 -0
  1023. package/packages/mcp-server/dist/env-writer.d.ts +5 -1
  1024. package/packages/mcp-server/dist/env-writer.d.ts.map +1 -1
  1025. package/packages/mcp-server/dist/env-writer.js +41 -8
  1026. package/packages/mcp-server/dist/env-writer.js.map +1 -1
  1027. package/packages/mcp-server/dist/readers/graph.d.ts.map +1 -1
  1028. package/packages/mcp-server/dist/readers/graph.js +7 -6
  1029. package/packages/mcp-server/dist/readers/graph.js.map +1 -1
  1030. package/packages/mcp-server/dist/readers/paths.d.ts +2 -0
  1031. package/packages/mcp-server/dist/readers/paths.d.ts.map +1 -1
  1032. package/packages/mcp-server/dist/readers/paths.js +163 -59
  1033. package/packages/mcp-server/dist/readers/paths.js.map +1 -1
  1034. package/packages/mcp-server/dist/remote-questions.d.ts +27 -0
  1035. package/packages/mcp-server/dist/remote-questions.d.ts.map +1 -1
  1036. package/packages/mcp-server/dist/remote-questions.js +47 -2
  1037. package/packages/mcp-server/dist/remote-questions.js.map +1 -1
  1038. package/packages/mcp-server/dist/server.d.ts +39 -1
  1039. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  1040. package/packages/mcp-server/dist/server.js +228 -52
  1041. package/packages/mcp-server/dist/server.js.map +1 -1
  1042. package/packages/mcp-server/dist/session-manager.d.ts +6 -1
  1043. package/packages/mcp-server/dist/session-manager.d.ts.map +1 -1
  1044. package/packages/mcp-server/dist/session-manager.js +35 -13
  1045. package/packages/mcp-server/dist/session-manager.js.map +1 -1
  1046. package/packages/mcp-server/dist/workflow-tools.d.ts +7 -1
  1047. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  1048. package/packages/mcp-server/dist/workflow-tools.js +234 -76
  1049. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  1050. package/packages/mcp-server/package.json +2 -2
  1051. package/packages/mcp-server/src/alias-telemetry.test.ts +78 -0
  1052. package/packages/mcp-server/src/alias-telemetry.ts +30 -0
  1053. package/packages/mcp-server/src/env-writer.test.ts +76 -1
  1054. package/packages/mcp-server/src/env-writer.ts +48 -9
  1055. package/packages/mcp-server/src/import-candidates.test.ts +9 -4
  1056. package/packages/mcp-server/src/mcp-server.test.ts +422 -2
  1057. package/packages/mcp-server/src/parse-workflow-args.test.ts +80 -0
  1058. package/packages/mcp-server/src/readers/graph.test.ts +5 -2
  1059. package/packages/mcp-server/src/readers/graph.ts +14 -6
  1060. package/packages/mcp-server/src/readers/paths.test.ts +67 -0
  1061. package/packages/mcp-server/src/readers/paths.ts +173 -56
  1062. package/packages/mcp-server/src/remote-questions.test.ts +103 -0
  1063. package/packages/mcp-server/src/remote-questions.ts +53 -2
  1064. package/packages/mcp-server/src/server.ts +284 -59
  1065. package/packages/mcp-server/src/session-manager.ts +33 -12
  1066. package/packages/mcp-server/src/workflow-tools.test.ts +308 -136
  1067. package/packages/mcp-server/src/workflow-tools.ts +265 -92
  1068. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  1069. package/packages/native/dist/stream-process/index.js +207 -6
  1070. package/packages/native/package.json +1 -1
  1071. package/packages/native/src/__tests__/stream-process.test.mjs +51 -18
  1072. package/packages/native/src/stream-process/index.ts +249 -11
  1073. package/packages/native/tsconfig.tsbuildinfo +1 -1
  1074. package/packages/pi-agent-core/package.json +1 -1
  1075. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -1
  1076. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js +8 -2
  1077. package/packages/pi-ai/dist/providers/anthropic-bearer-auth.test.js.map +1 -1
  1078. package/packages/pi-ai/dist/providers/anthropic-shared.cache-breakpoint.test.d.ts +2 -0
  1079. package/packages/pi-ai/dist/providers/anthropic-shared.cache-breakpoint.test.d.ts.map +1 -0
  1080. package/packages/pi-ai/dist/providers/anthropic-shared.cache-breakpoint.test.js +231 -0
  1081. package/packages/pi-ai/dist/providers/anthropic-shared.cache-breakpoint.test.js.map +1 -0
  1082. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  1083. package/packages/pi-ai/dist/providers/anthropic-shared.js +48 -19
  1084. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  1085. package/packages/pi-ai/dist/providers/minimax-tool-name.test.js +8 -2
  1086. package/packages/pi-ai/dist/providers/minimax-tool-name.test.js.map +1 -1
  1087. package/packages/pi-ai/dist/types.d.ts +13 -0
  1088. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  1089. package/packages/pi-ai/dist/types.js.map +1 -1
  1090. package/packages/pi-ai/dist/utils/repair-tool-json.d.ts.map +1 -1
  1091. package/packages/pi-ai/dist/utils/repair-tool-json.js +24 -3
  1092. package/packages/pi-ai/dist/utils/repair-tool-json.js.map +1 -1
  1093. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js +26 -0
  1094. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js.map +1 -1
  1095. package/packages/pi-ai/package.json +1 -1
  1096. package/packages/pi-ai/src/providers/anthropic-bearer-auth.test.ts +8 -2
  1097. package/packages/pi-ai/src/providers/anthropic-shared.cache-breakpoint.test.ts +289 -0
  1098. package/packages/pi-ai/src/providers/anthropic-shared.ts +52 -20
  1099. package/packages/pi-ai/src/providers/minimax-tool-name.test.ts +9 -2
  1100. package/packages/pi-ai/src/types.ts +13 -0
  1101. package/packages/pi-ai/src/utils/repair-tool-json.ts +24 -3
  1102. package/packages/pi-ai/src/utils/tests/repair-tool-json.test.ts +32 -0
  1103. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  1104. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js +278 -0
  1105. package/packages/pi-coding-agent/dist/core/agent-session-abort-order.test.js.map +1 -1
  1106. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +7 -0
  1107. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  1108. package/packages/pi-coding-agent/dist/core/agent-session.js +131 -55
  1109. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  1110. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +1 -0
  1111. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  1112. package/packages/pi-coding-agent/dist/core/extensions/runner.js +43 -2
  1113. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  1114. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js +79 -1
  1115. package/packages/pi-coding-agent/dist/core/extensions/runner.test.js.map +1 -1
  1116. package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
  1117. package/packages/pi-coding-agent/dist/core/messages.js +4 -0
  1118. package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
  1119. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +19 -2
  1120. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  1121. package/packages/pi-coding-agent/dist/core/model-registry.d.ts +10 -0
  1122. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  1123. package/packages/pi-coding-agent/dist/core/model-registry.js +18 -0
  1124. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  1125. package/packages/pi-coding-agent/dist/core/system-prompt.d.ts +13 -0
  1126. package/packages/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  1127. package/packages/pi-coding-agent/dist/core/system-prompt.js +20 -16
  1128. package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  1129. package/packages/pi-coding-agent/dist/core/token-telemetry.d.ts +37 -0
  1130. package/packages/pi-coding-agent/dist/core/token-telemetry.d.ts.map +1 -0
  1131. package/packages/pi-coding-agent/dist/core/token-telemetry.js +49 -0
  1132. package/packages/pi-coding-agent/dist/core/token-telemetry.js.map +1 -0
  1133. package/packages/pi-coding-agent/dist/core/tools/bash-spawn-windows.test.js +24 -6
  1134. package/packages/pi-coding-agent/dist/core/tools/bash-spawn-windows.test.js.map +1 -1
  1135. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.d.ts +2 -0
  1136. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.d.ts.map +1 -0
  1137. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js +133 -0
  1138. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.js.map +1 -0
  1139. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js +1 -1
  1140. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.js.map +1 -1
  1141. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +14 -1
  1142. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  1143. package/packages/pi-coding-agent/dist/tests/system-prompt-cache-stability.test.d.ts +2 -0
  1144. package/packages/pi-coding-agent/dist/tests/system-prompt-cache-stability.test.d.ts.map +1 -0
  1145. package/packages/pi-coding-agent/dist/tests/system-prompt-cache-stability.test.js +78 -0
  1146. package/packages/pi-coding-agent/dist/tests/system-prompt-cache-stability.test.js.map +1 -0
  1147. package/packages/pi-coding-agent/dist/tests/token-telemetry.test.d.ts +2 -0
  1148. package/packages/pi-coding-agent/dist/tests/token-telemetry.test.d.ts.map +1 -0
  1149. package/packages/pi-coding-agent/dist/tests/token-telemetry.test.js +181 -0
  1150. package/packages/pi-coding-agent/dist/tests/token-telemetry.test.js.map +1 -0
  1151. package/packages/pi-coding-agent/package.json +1 -1
  1152. package/packages/pi-coding-agent/src/core/agent-session-abort-order.test.ts +319 -0
  1153. package/packages/pi-coding-agent/src/core/agent-session.ts +135 -59
  1154. package/packages/pi-coding-agent/src/core/extensions/runner.test.ts +89 -1
  1155. package/packages/pi-coding-agent/src/core/extensions/runner.ts +46 -2
  1156. package/packages/pi-coding-agent/src/core/messages.ts +4 -0
  1157. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +32 -2
  1158. package/packages/pi-coding-agent/src/core/model-registry.ts +21 -0
  1159. package/packages/pi-coding-agent/src/core/system-prompt.ts +33 -15
  1160. package/packages/pi-coding-agent/src/core/token-telemetry.ts +77 -0
  1161. package/packages/pi-coding-agent/src/core/tools/bash-spawn-windows.test.ts +26 -6
  1162. package/packages/pi-coding-agent/src/modes/interactive/components/tool-card-cleanup-and-success-runtime.test.ts +212 -0
  1163. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +17 -1
  1164. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.ts +1 -1
  1165. package/packages/pi-coding-agent/src/tests/system-prompt-cache-stability.test.ts +102 -0
  1166. package/packages/pi-coding-agent/src/tests/token-telemetry.test.ts +200 -0
  1167. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  1168. package/packages/pi-tui/dist/__tests__/autocomplete.test.js +17 -3
  1169. package/packages/pi-tui/dist/__tests__/autocomplete.test.js.map +1 -1
  1170. package/packages/pi-tui/dist/components/__tests__/leak-fixes-runtime.test.d.ts +2 -0
  1171. package/packages/pi-tui/dist/components/__tests__/leak-fixes-runtime.test.d.ts.map +1 -0
  1172. package/packages/pi-tui/dist/components/__tests__/leak-fixes-runtime.test.js +161 -0
  1173. package/packages/pi-tui/dist/components/__tests__/leak-fixes-runtime.test.js.map +1 -0
  1174. package/packages/pi-tui/package.json +1 -1
  1175. package/packages/pi-tui/src/__tests__/autocomplete.test.ts +20 -3
  1176. package/packages/pi-tui/src/components/__tests__/leak-fixes-runtime.test.ts +219 -0
  1177. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  1178. package/packages/rpc-client/package.json +1 -1
  1179. package/pkg/package.json +1 -1
  1180. package/src/resources/GSD-WORKFLOW.md +29 -42
  1181. package/src/resources/extensions/async-jobs/job-manager.ts +3 -0
  1182. package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +3 -2
  1183. package/src/resources/extensions/bg-shell/utilities.ts +2 -1
  1184. package/src/resources/extensions/browser-tools/tools/intent.ts +13 -2
  1185. package/src/resources/extensions/claude-code-cli/readiness.ts +20 -7
  1186. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +21 -8
  1187. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +34 -13
  1188. package/src/resources/extensions/github-sync/cli.ts +3 -0
  1189. package/src/resources/extensions/github-sync/sync.ts +88 -58
  1190. package/src/resources/extensions/github-sync/tests/sync-source.test.ts +26 -0
  1191. package/src/resources/extensions/google-search/index.ts +2 -9
  1192. package/src/resources/extensions/gsd/auto/detect-stuck.ts +37 -5
  1193. package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -1
  1194. package/src/resources/extensions/gsd/auto/loop.ts +287 -43
  1195. package/src/resources/extensions/gsd/auto/phases.ts +110 -44
  1196. package/src/resources/extensions/gsd/auto/run-unit.ts +26 -12
  1197. package/src/resources/extensions/gsd/auto/session.ts +48 -6
  1198. package/src/resources/extensions/gsd/auto/types.ts +1 -0
  1199. package/src/resources/extensions/gsd/auto-artifact-paths.ts +60 -30
  1200. package/src/resources/extensions/gsd/auto-dashboard.ts +13 -2
  1201. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +62 -24
  1202. package/src/resources/extensions/gsd/auto-dispatch.ts +327 -100
  1203. package/src/resources/extensions/gsd/auto-post-unit.ts +150 -56
  1204. package/src/resources/extensions/gsd/auto-prompts.ts +170 -9
  1205. package/src/resources/extensions/gsd/auto-recovery.ts +121 -21
  1206. package/src/resources/extensions/gsd/auto-runtime-state.ts +51 -0
  1207. package/src/resources/extensions/gsd/auto-start.ts +73 -73
  1208. package/src/resources/extensions/gsd/auto-timeout-recovery.ts +22 -0
  1209. package/src/resources/extensions/gsd/auto-timers.ts +37 -5
  1210. package/src/resources/extensions/gsd/auto-tool-tracking.ts +2 -4
  1211. package/src/resources/extensions/gsd/auto-worktree.ts +430 -419
  1212. package/src/resources/extensions/gsd/auto.ts +252 -66
  1213. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +21 -2
  1214. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +53 -20
  1215. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +9 -84
  1216. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +8 -7
  1217. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +2 -2
  1218. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +10 -9
  1219. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +217 -47
  1220. package/src/resources/extensions/gsd/bootstrap/register-shortcuts.ts +12 -6
  1221. package/src/resources/extensions/gsd/bootstrap/subagent-input.ts +20 -0
  1222. package/src/resources/extensions/gsd/bootstrap/system-context.ts +53 -12
  1223. package/src/resources/extensions/gsd/bootstrap/tests/write-gate-basepath.test.ts +103 -0
  1224. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +306 -74
  1225. package/src/resources/extensions/gsd/branch-patterns.ts +3 -3
  1226. package/src/resources/extensions/gsd/commands/catalog.ts +87 -9
  1227. package/src/resources/extensions/gsd/commands/context.ts +40 -6
  1228. package/src/resources/extensions/gsd/commands/dispatcher.ts +11 -5
  1229. package/src/resources/extensions/gsd/commands/handlers/auto.ts +2 -1
  1230. package/src/resources/extensions/gsd/commands/handlers/core.ts +25 -1
  1231. package/src/resources/extensions/gsd/commands/handlers/ops.ts +15 -0
  1232. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +23 -2
  1233. package/src/resources/extensions/gsd/commands-bootstrap.ts +7 -0
  1234. package/src/resources/extensions/gsd/commands-codebase.ts +2 -1
  1235. package/src/resources/extensions/gsd/commands-config.ts +3 -2
  1236. package/src/resources/extensions/gsd/commands-debug.ts +27 -1
  1237. package/src/resources/extensions/gsd/commands-eval-review.ts +716 -0
  1238. package/src/resources/extensions/gsd/commands-extensions.ts +47 -7
  1239. package/src/resources/extensions/gsd/commands-handlers.ts +8 -7
  1240. package/src/resources/extensions/gsd/commands-logs.ts +2 -1
  1241. package/src/resources/extensions/gsd/commands-mcp-status.ts +3 -1
  1242. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +15 -1
  1243. package/src/resources/extensions/gsd/commands-scan.ts +2 -1
  1244. package/src/resources/extensions/gsd/commands-ship.ts +101 -1
  1245. package/src/resources/extensions/gsd/commands-workflow-templates.ts +5 -4
  1246. package/src/resources/extensions/gsd/commands-worktree.ts +383 -0
  1247. package/src/resources/extensions/gsd/context-budget.ts +13 -2
  1248. package/src/resources/extensions/gsd/crash-recovery.ts +177 -43
  1249. package/src/resources/extensions/gsd/dashboard-overlay.ts +1 -1
  1250. package/src/resources/extensions/gsd/db/auto-workers.ts +273 -0
  1251. package/src/resources/extensions/gsd/db/command-queue.ts +149 -0
  1252. package/src/resources/extensions/gsd/db/milestone-leases.ts +274 -0
  1253. package/src/resources/extensions/gsd/db/runtime-kv.ts +127 -0
  1254. package/src/resources/extensions/gsd/db/unit-dispatches.ts +446 -0
  1255. package/src/resources/extensions/gsd/db-writer.ts +169 -89
  1256. package/src/resources/extensions/gsd/deep-project-setup-policy.ts +257 -0
  1257. package/src/resources/extensions/gsd/delegation-policy.ts +197 -0
  1258. package/src/resources/extensions/gsd/detection.ts +7 -7
  1259. package/src/resources/extensions/gsd/dispatch-guard.ts +6 -11
  1260. package/src/resources/extensions/gsd/docs/COORDINATION.md +42 -0
  1261. package/src/resources/extensions/gsd/docs/preferences-reference.md +16 -4
  1262. package/src/resources/extensions/gsd/doctor-engine-checks.ts +2 -2
  1263. package/src/resources/extensions/gsd/doctor-proactive.ts +4 -0
  1264. package/src/resources/extensions/gsd/doctor-providers.ts +2 -1
  1265. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +116 -7
  1266. package/src/resources/extensions/gsd/doctor-types.ts +4 -1
  1267. package/src/resources/extensions/gsd/doctor.ts +10 -2
  1268. package/src/resources/extensions/gsd/error-classifier.ts +1 -1
  1269. package/src/resources/extensions/gsd/eval-review-schema.ts +243 -0
  1270. package/src/resources/extensions/gsd/forensics.ts +19 -8
  1271. package/src/resources/extensions/gsd/git-service.ts +94 -8
  1272. package/src/resources/extensions/gsd/gsd-db.ts +453 -14
  1273. package/src/resources/extensions/gsd/gsd-home.ts +30 -0
  1274. package/src/resources/extensions/gsd/guided-flow-queue.ts +1 -1
  1275. package/src/resources/extensions/gsd/guided-flow.ts +525 -143
  1276. package/src/resources/extensions/gsd/init-wizard.ts +17 -20
  1277. package/src/resources/extensions/gsd/interrupted-session.ts +50 -6
  1278. package/src/resources/extensions/gsd/journal.ts +4 -1
  1279. package/src/resources/extensions/gsd/key-manager.ts +2 -1
  1280. package/src/resources/extensions/gsd/markdown-renderer.ts +58 -79
  1281. package/src/resources/extensions/gsd/memory-store.ts +81 -28
  1282. package/src/resources/extensions/gsd/metrics.ts +321 -1
  1283. package/src/resources/extensions/gsd/migrate/command.ts +3 -2
  1284. package/src/resources/extensions/gsd/milestone-id-reservation.ts +47 -0
  1285. package/src/resources/extensions/gsd/milestone-scope-classifier.ts +15 -8
  1286. package/src/resources/extensions/gsd/model-router.ts +172 -9
  1287. package/src/resources/extensions/gsd/native-git-bridge.ts +26 -42
  1288. package/src/resources/extensions/gsd/onboarding-state.ts +2 -2
  1289. package/src/resources/extensions/gsd/parallel-merge.ts +14 -13
  1290. package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +5 -2
  1291. package/src/resources/extensions/gsd/paths.ts +158 -9
  1292. package/src/resources/extensions/gsd/planning-depth.ts +137 -0
  1293. package/src/resources/extensions/gsd/preferences-models.ts +119 -16
  1294. package/src/resources/extensions/gsd/preferences-skills.ts +2 -1
  1295. package/src/resources/extensions/gsd/preferences-types.ts +17 -0
  1296. package/src/resources/extensions/gsd/preferences-validation.ts +44 -0
  1297. package/src/resources/extensions/gsd/preferences.ts +42 -7
  1298. package/src/resources/extensions/gsd/project-research-policy.ts +259 -0
  1299. package/src/resources/extensions/gsd/prompt-loader.ts +28 -15
  1300. package/src/resources/extensions/gsd/prompts/complete-milestone.md +10 -0
  1301. package/src/resources/extensions/gsd/prompts/complete-slice.md +14 -4
  1302. package/src/resources/extensions/gsd/prompts/execute-task.md +3 -3
  1303. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +10 -1
  1304. package/src/resources/extensions/gsd/prompts/guided-discuss-project.md +148 -0
  1305. package/src/resources/extensions/gsd/prompts/guided-discuss-requirements.md +126 -0
  1306. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +8 -1
  1307. package/src/resources/extensions/gsd/prompts/guided-research-decision.md +70 -0
  1308. package/src/resources/extensions/gsd/prompts/guided-research-project.md +120 -0
  1309. package/src/resources/extensions/gsd/prompts/guided-workflow-preferences.md +68 -0
  1310. package/src/resources/extensions/gsd/prompts/parallel-research-slices.md +2 -0
  1311. package/src/resources/extensions/gsd/prompts/plan-milestone.md +8 -2
  1312. package/src/resources/extensions/gsd/prompts/plan-slice.md +18 -6
  1313. package/src/resources/extensions/gsd/prompts/refine-slice.md +10 -0
  1314. package/src/resources/extensions/gsd/prompts/rewrite-docs.md +2 -0
  1315. package/src/resources/extensions/gsd/prompts/system.md +4 -4
  1316. package/src/resources/extensions/gsd/queue-order.ts +6 -1
  1317. package/src/resources/extensions/gsd/repo-identity.ts +15 -9
  1318. package/src/resources/extensions/gsd/rethink.ts +2 -1
  1319. package/src/resources/extensions/gsd/safety/git-checkpoint.ts +10 -1
  1320. package/src/resources/extensions/gsd/schemas/__fixtures__/valid-project.md +26 -0
  1321. package/src/resources/extensions/gsd/schemas/__fixtures__/valid-requirements.md +57 -0
  1322. package/src/resources/extensions/gsd/schemas/__fixtures__/valid-roadmap.md +19 -0
  1323. package/src/resources/extensions/gsd/schemas/parsers.ts +346 -0
  1324. package/src/resources/extensions/gsd/schemas/validate.ts +452 -0
  1325. package/src/resources/extensions/gsd/skill-telemetry.ts +3 -2
  1326. package/src/resources/extensions/gsd/slice-cadence.ts +71 -6
  1327. package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +9 -3
  1328. package/src/resources/extensions/gsd/state.ts +176 -394
  1329. package/src/resources/extensions/gsd/templates/PREFERENCES.md +1 -0
  1330. package/src/resources/extensions/gsd/templates/project.md +10 -0
  1331. package/src/resources/extensions/gsd/tests/artifact-corruption-2630.test.ts +1 -0
  1332. package/src/resources/extensions/gsd/tests/artifact-validators.test.ts +524 -0
  1333. package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +20 -0
  1334. package/src/resources/extensions/gsd/tests/auto-discuss-milestone-deadlock-4973.test.ts +42 -17
  1335. package/src/resources/extensions/gsd/tests/auto-loop-no-copy-artifacts.test.ts +72 -0
  1336. package/src/resources/extensions/gsd/tests/auto-loop-symlink-worktree.test.ts +190 -0
  1337. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +274 -30
  1338. package/src/resources/extensions/gsd/tests/auto-paused-session-validation.test.ts +6 -0
  1339. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +58 -0
  1340. package/src/resources/extensions/gsd/tests/auto-remediate-slice-status.test.ts +21 -34
  1341. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +24 -5
  1342. package/src/resources/extensions/gsd/tests/auto-session-scope.test.ts +331 -0
  1343. package/src/resources/extensions/gsd/tests/auto-start-clean-runtime-db-gated.test.ts +32 -1
  1344. package/src/resources/extensions/gsd/tests/auto-start-index-lock.test.ts +38 -0
  1345. package/src/resources/extensions/gsd/tests/auto-supervisor.test.mjs +21 -4
  1346. package/src/resources/extensions/gsd/tests/auto-workers.test.ts +105 -0
  1347. package/src/resources/extensions/gsd/tests/auto-worktree-registry.test.ts +176 -0
  1348. package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +56 -0
  1349. package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +1 -1
  1350. package/src/resources/extensions/gsd/tests/budget-prediction.test.ts +138 -211
  1351. package/src/resources/extensions/gsd/tests/bundled-skill-triggers.test.ts +50 -27
  1352. package/src/resources/extensions/gsd/tests/command-queue.test.ts +141 -0
  1353. package/src/resources/extensions/gsd/tests/commands-eval-review.test.ts +612 -0
  1354. package/src/resources/extensions/gsd/tests/commands-extensions-version-compare.test.ts +58 -0
  1355. package/src/resources/extensions/gsd/tests/commands-ship-eval-warn.test.ts +155 -0
  1356. package/src/resources/extensions/gsd/tests/commands-worktree-clean.test.ts +48 -0
  1357. package/src/resources/extensions/gsd/tests/complete-slice-verification-gate.test.ts +142 -59
  1358. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +7 -4
  1359. package/src/resources/extensions/gsd/tests/complete-task-rollback-evidence.test.ts +6 -7
  1360. package/src/resources/extensions/gsd/tests/complete-task.test.ts +8 -6
  1361. package/src/resources/extensions/gsd/tests/completed-at-reconcile.test.ts +76 -34
  1362. package/src/resources/extensions/gsd/tests/completed-units-metrics-sync.test.ts +18 -5
  1363. package/src/resources/extensions/gsd/tests/context-budget.test.ts +28 -0
  1364. package/src/resources/extensions/gsd/tests/crash-recovery-via-db.test.ts +203 -0
  1365. package/src/resources/extensions/gsd/tests/crash-recovery.test.ts +191 -31
  1366. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +42 -23
  1367. package/src/resources/extensions/gsd/tests/db-path-worktree-symlink.test.ts +7 -47
  1368. package/src/resources/extensions/gsd/tests/db-writer-path-containment.test.ts +152 -0
  1369. package/src/resources/extensions/gsd/tests/db-writer-root-artifact.test.ts +221 -0
  1370. package/src/resources/extensions/gsd/tests/db-writer-scope.test.ts +230 -0
  1371. package/src/resources/extensions/gsd/tests/db-writer.test.ts +165 -21
  1372. package/src/resources/extensions/gsd/tests/debug-command-handler.test.ts +37 -0
  1373. package/src/resources/extensions/gsd/tests/debug-logger.test.ts +5 -3
  1374. package/src/resources/extensions/gsd/tests/deep-mode-integration.test.ts +406 -0
  1375. package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +881 -0
  1376. package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +1562 -0
  1377. package/src/resources/extensions/gsd/tests/deep-project-setup-policy.test.ts +193 -0
  1378. package/src/resources/extensions/gsd/tests/deferred-milestone-dir-4996.test.ts +116 -0
  1379. package/src/resources/extensions/gsd/tests/delegation-policy.test.ts +151 -0
  1380. package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +6 -5
  1381. package/src/resources/extensions/gsd/tests/derive-state-db-disk-reconcile.test.ts +10 -38
  1382. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +136 -56
  1383. package/src/resources/extensions/gsd/tests/derive-state-draft.test.ts +3 -0
  1384. package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +119 -61
  1385. package/src/resources/extensions/gsd/tests/derive-state.test.ts +4 -0
  1386. package/src/resources/extensions/gsd/tests/detect-stuck-respects-retry.test.ts +173 -0
  1387. package/src/resources/extensions/gsd/tests/discuss-empty-db-fallback.test.ts +22 -87
  1388. package/src/resources/extensions/gsd/tests/discuss-queued-milestones.test.ts +7 -118
  1389. package/src/resources/extensions/gsd/tests/discuss-tool-scope-leak.test.ts +18 -60
  1390. package/src/resources/extensions/gsd/tests/dispatch-backgroundable-annotation.test.ts +55 -0
  1391. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +6 -20
  1392. package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +4 -5
  1393. package/src/resources/extensions/gsd/tests/dispatcher-stuck-planning.test.ts +14 -15
  1394. package/src/resources/extensions/gsd/tests/doctor-orphan-milestone-4996.test.ts +100 -0
  1395. package/src/resources/extensions/gsd/tests/double-merge-guard.test.ts +14 -76
  1396. package/src/resources/extensions/gsd/tests/draft-promotion.test.ts +3 -23
  1397. package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +11 -16
  1398. package/src/resources/extensions/gsd/tests/ensure-preconditions-guard-4996.test.ts +93 -0
  1399. package/src/resources/extensions/gsd/tests/escalation.test.ts +2 -1
  1400. package/src/resources/extensions/gsd/tests/eval-review-schema.test.ts +282 -0
  1401. package/src/resources/extensions/gsd/tests/false-degraded-mode-warning.test.ts +22 -83
  1402. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +1 -63
  1403. package/src/resources/extensions/gsd/tests/find-missing-summaries-closed-runtime.test.ts +47 -0
  1404. package/src/resources/extensions/gsd/tests/forensics-stuck-loops.test.ts +26 -1
  1405. package/src/resources/extensions/gsd/tests/gate-1b-orphan-discrimination.test.ts +193 -0
  1406. package/src/resources/extensions/gsd/tests/gate-1b-recovery-bound-corrections.test.ts +246 -0
  1407. package/src/resources/extensions/gsd/tests/gate-1b-recovery-bound.test.ts +218 -0
  1408. package/src/resources/extensions/gsd/tests/git-checkpoint.test.ts +9 -0
  1409. package/src/resources/extensions/gsd/tests/gitignore-bg-shell-runtime.test.ts +63 -0
  1410. package/src/resources/extensions/gsd/tests/google-search-stub.test.ts +25 -65
  1411. package/src/resources/extensions/gsd/tests/gsd-db-failed-open-restore.test.ts +117 -0
  1412. package/src/resources/extensions/gsd/tests/gsd-db-workspace-scope.test.ts +226 -0
  1413. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +32 -1
  1414. package/src/resources/extensions/gsd/tests/gsd-home.test.ts +43 -0
  1415. package/src/resources/extensions/gsd/tests/gsd-no-project-error-runtime.test.ts +95 -0
  1416. package/src/resources/extensions/gsd/tests/gsd-root-canonical.test.ts +66 -0
  1417. package/src/resources/extensions/gsd/tests/gsd-root-home-guard.test.ts +149 -0
  1418. package/src/resources/extensions/gsd/tests/gsdroot-worktree-detection.test.ts +15 -36
  1419. package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +133 -0
  1420. package/src/resources/extensions/gsd/tests/handler-worktree-write-isolation.test.ts +57 -0
  1421. package/src/resources/extensions/gsd/tests/has-pending-deep-stage.test.ts +98 -0
  1422. package/src/resources/extensions/gsd/tests/headless-answers.test.ts +14 -4
  1423. package/src/resources/extensions/gsd/tests/health-widget.test.ts +22 -12
  1424. package/src/resources/extensions/gsd/tests/help-menu-coverage.test.ts +57 -0
  1425. package/src/resources/extensions/gsd/tests/import-done-milestones-runtime.test.ts +145 -0
  1426. package/src/resources/extensions/gsd/tests/init-prefs-routing.test.ts +64 -1
  1427. package/src/resources/extensions/gsd/tests/init-skip-git.test.ts +19 -0
  1428. package/src/resources/extensions/gsd/tests/init-wizard.test.ts +17 -0
  1429. package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +93 -11
  1430. package/src/resources/extensions/gsd/tests/integration/commands-eval-review.integration.test.ts +254 -0
  1431. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +24 -10
  1432. package/src/resources/extensions/gsd/tests/integration/doctor-runtime.test.ts +75 -23
  1433. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +42 -0
  1434. package/src/resources/extensions/gsd/tests/integration/parallel-merge.test.ts +15 -15
  1435. package/src/resources/extensions/gsd/tests/integration/state-machine-edge-cases.test.ts +15 -5
  1436. package/src/resources/extensions/gsd/tests/integration/token-savings.test.ts +0 -23
  1437. package/src/resources/extensions/gsd/tests/integration/workspace-collapse-integration.test.ts +369 -0
  1438. package/src/resources/extensions/gsd/tests/interrupted-session-auto.test.ts +72 -25
  1439. package/src/resources/extensions/gsd/tests/interrupted-session-ui.test.ts +72 -25
  1440. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +124 -7
  1441. package/src/resources/extensions/gsd/tests/markdown-renderer.test.ts +84 -9
  1442. package/src/resources/extensions/gsd/tests/md-importer.test.ts +2 -1
  1443. package/src/resources/extensions/gsd/tests/memory-pressure-stuck-state.test.ts +9 -6
  1444. package/src/resources/extensions/gsd/tests/memory-store.test.ts +131 -2
  1445. package/src/resources/extensions/gsd/tests/memory-tools.test.ts +33 -1
  1446. package/src/resources/extensions/gsd/tests/merge-self-branch-guard.test.ts +124 -0
  1447. package/src/resources/extensions/gsd/tests/metrics-atomic-merge.test.ts +222 -0
  1448. package/src/resources/extensions/gsd/tests/metrics-lock-hardening.test.ts +400 -0
  1449. package/src/resources/extensions/gsd/tests/metrics-lock-not-acquired.test.ts +141 -0
  1450. package/src/resources/extensions/gsd/tests/metrics-lock-retry-sleep.test.ts +287 -0
  1451. package/src/resources/extensions/gsd/tests/metrics-prune-cache-invalidation.test.ts +149 -0
  1452. package/src/resources/extensions/gsd/tests/metrics-scope.test.ts +378 -0
  1453. package/src/resources/extensions/gsd/tests/milestone-id-gap-reuse-4996.test.ts +152 -0
  1454. package/src/resources/extensions/gsd/tests/milestone-leases.test.ts +152 -0
  1455. package/src/resources/extensions/gsd/tests/milestone-report-path.test.ts +18 -1
  1456. package/src/resources/extensions/gsd/tests/milestone-scope-classifier.test.ts +19 -0
  1457. package/src/resources/extensions/gsd/tests/model-router.test.ts +169 -8
  1458. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +19 -0
  1459. package/src/resources/extensions/gsd/tests/native-git-bridge-exec-fallback.test.ts +22 -2
  1460. package/src/resources/extensions/gsd/tests/native-git-infra-errors.test.ts +50 -0
  1461. package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +51 -3
  1462. package/src/resources/extensions/gsd/tests/originalbase-path-comparison.test.ts +329 -0
  1463. package/src/resources/extensions/gsd/tests/orphaned-worktree-audit.test.ts +8 -0
  1464. package/src/resources/extensions/gsd/tests/parallel-crash-recovery.test.ts +32 -43
  1465. package/src/resources/extensions/gsd/tests/parallel-milestone-isolation.test.ts +106 -0
  1466. package/src/resources/extensions/gsd/tests/park-milestone.test.ts +2 -0
  1467. package/src/resources/extensions/gsd/tests/path-cache-decoupled.test.ts +209 -0
  1468. package/src/resources/extensions/gsd/tests/path-normalization-unified.test.ts +175 -0
  1469. package/src/resources/extensions/gsd/tests/paths-cache.test.ts +170 -0
  1470. package/src/resources/extensions/gsd/tests/paused-session-via-db.test.ts +119 -0
  1471. package/src/resources/extensions/gsd/tests/pending-autostart-scope.test.ts +120 -0
  1472. package/src/resources/extensions/gsd/tests/phases-merge-error-stops-auto.test.ts +4 -10
  1473. package/src/resources/extensions/gsd/tests/pipeline-variant-dispatch.test.ts +58 -0
  1474. package/src/resources/extensions/gsd/tests/plan-milestone-artifact-verification.test.ts +40 -0
  1475. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +0 -43
  1476. package/src/resources/extensions/gsd/tests/plan-slice.test.ts +33 -0
  1477. package/src/resources/extensions/gsd/tests/planning-depth-setter.test.ts +172 -0
  1478. package/src/resources/extensions/gsd/tests/post-unit-git-failure.test.ts +18 -0
  1479. package/src/resources/extensions/gsd/tests/preferences-worktree-sync.test.ts +3 -17
  1480. package/src/resources/extensions/gsd/tests/preferences.test.ts +199 -0
  1481. package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +1 -0
  1482. package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +25 -16
  1483. package/src/resources/extensions/gsd/tests/project-root-cwd-crash.test.ts +4 -4
  1484. package/src/resources/extensions/gsd/tests/projection-regression.test.ts +1 -0
  1485. package/src/resources/extensions/gsd/tests/prompt-budget-enforcement.test.ts +2 -2
  1486. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +232 -28
  1487. package/src/resources/extensions/gsd/tests/prompt-step-ordering.test.ts +16 -0
  1488. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +7 -0
  1489. package/src/resources/extensions/gsd/tests/quality-gates.test.ts +7 -16
  1490. package/src/resources/extensions/gsd/tests/quick-turn-end-cleanup.test.ts +6 -6
  1491. package/src/resources/extensions/gsd/tests/ready-phrase-no-files-4573.test.ts +267 -0
  1492. package/src/resources/extensions/gsd/tests/register-hooks-compaction-checkpoint.test.ts +98 -0
  1493. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +286 -8
  1494. package/src/resources/extensions/gsd/tests/replan-slice.test.ts +3 -0
  1495. package/src/resources/extensions/gsd/tests/resolve-ts.mjs +4 -0
  1496. package/src/resources/extensions/gsd/tests/resume-missing-worktree-warning.test.ts +209 -0
  1497. package/src/resources/extensions/gsd/tests/rogue-file-detection.test.ts +3 -4
  1498. package/src/resources/extensions/gsd/tests/runtime-kv.test.ts +120 -0
  1499. package/src/resources/extensions/gsd/tests/safety-harness-false-positives.test.ts +34 -0
  1500. package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +168 -19
  1501. package/src/resources/extensions/gsd/tests/skipped-validation-completion.test.ts +133 -28
  1502. package/src/resources/extensions/gsd/tests/skipped-validation-db-atomicity.test.ts +17 -0
  1503. package/src/resources/extensions/gsd/tests/slice-cadence.test.ts +36 -0
  1504. package/src/resources/extensions/gsd/tests/slice-disk-reconcile.test.ts +10 -56
  1505. package/src/resources/extensions/gsd/tests/slice-parallel-orchestrator.test.ts +7 -1
  1506. package/src/resources/extensions/gsd/tests/smart-entry-complete.test.ts +23 -1
  1507. package/src/resources/extensions/gsd/tests/stale-slice-rows.test.ts +15 -16
  1508. package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +53 -0
  1509. package/src/resources/extensions/gsd/tests/stash-pop-gsd-conflict.test.ts +8 -2
  1510. package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +12 -6
  1511. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +1 -0
  1512. package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +23 -27
  1513. package/src/resources/extensions/gsd/tests/steer-worktree-path.test.ts +30 -15
  1514. package/src/resources/extensions/gsd/tests/stuck-state-via-db.test.ts +134 -0
  1515. package/src/resources/extensions/gsd/tests/sync-layer-scope.test.ts +434 -0
  1516. package/src/resources/extensions/gsd/tests/sync-worktree-skip-current.test.ts +10 -33
  1517. package/src/resources/extensions/gsd/tests/system-context-message-routing.test.ts +101 -0
  1518. package/src/resources/extensions/gsd/tests/teardown-chdir-failure-clears-registry.test.ts +162 -0
  1519. package/src/resources/extensions/gsd/tests/teardown-cleanup-parity.test.ts +98 -0
  1520. package/src/resources/extensions/gsd/tests/teardown-failure-clears-registry.test.ts +186 -0
  1521. package/src/resources/extensions/gsd/tests/token-counter.test.ts +9 -0
  1522. package/src/resources/extensions/gsd/tests/token-profile.test.ts +51 -4
  1523. package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +1 -1
  1524. package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +34 -0
  1525. package/src/resources/extensions/gsd/tests/turn-epoch.test.ts +7 -16
  1526. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +48 -3
  1527. package/src/resources/extensions/gsd/tests/unit-dispatches.test.ts +247 -0
  1528. package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +41 -0
  1529. package/src/resources/extensions/gsd/tests/unstructured-continue-context-injection.test.ts +5 -7
  1530. package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +15 -1
  1531. package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +48 -0
  1532. package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +7 -8
  1533. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +50 -16
  1534. package/src/resources/extensions/gsd/tests/validator-scope-parity.test.ts +239 -0
  1535. package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +52 -1
  1536. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +6 -6
  1537. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +12 -7
  1538. package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +4 -4
  1539. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +83 -4
  1540. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +241 -4
  1541. package/src/resources/extensions/gsd/tests/workspace.test.ts +196 -0
  1542. package/src/resources/extensions/gsd/tests/worktree-db-same-file.test.ts +13 -0
  1543. package/src/resources/extensions/gsd/tests/worktree-main-branch.test.ts +5 -0
  1544. package/src/resources/extensions/gsd/tests/worktree-path-injection.test.ts +236 -0
  1545. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +103 -0
  1546. package/src/resources/extensions/gsd/tests/worktree-root-resolution.test.ts +50 -0
  1547. package/src/resources/extensions/gsd/tests/worktree-root.test.ts +69 -0
  1548. package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +34 -33
  1549. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +65 -71
  1550. package/src/resources/extensions/gsd/tests/worktree-sync-tasks.test.ts +26 -151
  1551. package/src/resources/extensions/gsd/tests/worktree.test.ts +8 -0
  1552. package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +131 -1
  1553. package/src/resources/extensions/gsd/tests/write-gate-predicates.test.ts +43 -41
  1554. package/src/resources/extensions/gsd/tests/write-gate.test.ts +188 -57
  1555. package/src/resources/extensions/gsd/tests/write-intercept.test.ts +1 -1
  1556. package/src/resources/extensions/gsd/token-counter.ts +2 -1
  1557. package/src/resources/extensions/gsd/tools/complete-milestone.ts +7 -5
  1558. package/src/resources/extensions/gsd/tools/complete-slice.ts +7 -14
  1559. package/src/resources/extensions/gsd/tools/complete-task.ts +19 -34
  1560. package/src/resources/extensions/gsd/tools/memory-tools.ts +17 -1
  1561. package/src/resources/extensions/gsd/tools/plan-slice.ts +10 -9
  1562. package/src/resources/extensions/gsd/tools/validate-milestone.ts +7 -5
  1563. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +81 -14
  1564. package/src/resources/extensions/gsd/unit-context-manifest.ts +141 -13
  1565. package/src/resources/extensions/gsd/unit-runtime.ts +76 -24
  1566. package/src/resources/extensions/gsd/uok/plan-v2.ts +19 -1
  1567. package/src/resources/extensions/gsd/user-input-boundary.ts +166 -0
  1568. package/src/resources/extensions/gsd/visualizer-overlay.ts +1 -1
  1569. package/src/resources/extensions/gsd/watch/header-renderer.ts +4 -1
  1570. package/src/resources/extensions/gsd/workflow-install.ts +2 -3
  1571. package/src/resources/extensions/gsd/workflow-logger.ts +1 -0
  1572. package/src/resources/extensions/gsd/workflow-manifest.ts +4 -1
  1573. package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +2 -18
  1574. package/src/resources/extensions/gsd/workflow-mcp.ts +43 -6
  1575. package/src/resources/extensions/gsd/workflow-migration.ts +4 -3
  1576. package/src/resources/extensions/gsd/workflow-plugins.ts +4 -5
  1577. package/src/resources/extensions/gsd/workflow-reconcile.ts +3 -3
  1578. package/src/resources/extensions/gsd/workflow-templates.ts +2 -3
  1579. package/src/resources/extensions/gsd/workspace.ts +95 -0
  1580. package/src/resources/extensions/gsd/worktree-command.ts +35 -47
  1581. package/src/resources/extensions/gsd/worktree-manager.ts +46 -7
  1582. package/src/resources/extensions/gsd/worktree-resolver.ts +112 -22
  1583. package/src/resources/extensions/gsd/worktree-root.ts +182 -0
  1584. package/src/resources/extensions/gsd/worktree-session-state.ts +35 -0
  1585. package/src/resources/extensions/gsd/worktree.ts +8 -119
  1586. package/src/resources/extensions/gsd/write-intercept.ts +3 -3
  1587. package/src/resources/extensions/mcp-client/index.ts +6 -10
  1588. package/src/resources/extensions/mcp-client/tests/global-config.test.ts +91 -0
  1589. package/src/resources/extensions/ollama/index.ts +16 -2
  1590. package/src/resources/extensions/ollama/model-capabilities.ts +34 -0
  1591. package/src/resources/extensions/ollama/ollama-client.ts +41 -4
  1592. package/src/resources/extensions/ollama/tests/model-capabilities.test.ts +96 -0
  1593. package/src/resources/extensions/ollama/tests/ollama-client-timeout-env.test.ts +147 -0
  1594. package/src/resources/extensions/remote-questions/remote-command.ts +2 -1
  1595. package/src/resources/extensions/remote-questions/status.ts +2 -6
  1596. package/src/resources/extensions/remote-questions/store.ts +2 -6
  1597. package/src/resources/extensions/search-the-web/provider.ts +9 -8
  1598. package/src/resources/extensions/shared/next-action-ui.ts +8 -0
  1599. package/src/resources/extensions/shared/tests/next-action-ui-hasui.test.ts +112 -0
  1600. package/src/resources/extensions/slash-commands/create-extension.ts +38 -24
  1601. package/src/resources/extensions/subagent/index.ts +187 -16
  1602. package/src/resources/extensions/subagent/isolation.ts +2 -2
  1603. package/src/resources/extensions/subagent/tests/model-override.test.ts +55 -0
  1604. package/src/resources/extensions/ttsr/rule-loader.ts +2 -3
  1605. package/src/resources/extensions/voice/index.ts +3 -2
  1606. package/src/resources/extensions/voice/linux-ready.ts +2 -3
  1607. package/src/resources/skills/create-gsd-extension/SKILL.md +9 -5
  1608. package/src/resources/skills/create-gsd-extension/references/custom-commands.md +1 -1
  1609. package/src/resources/skills/create-gsd-extension/references/custom-rendering.md +5 -5
  1610. package/src/resources/skills/create-gsd-extension/references/custom-tools.md +4 -4
  1611. package/src/resources/skills/create-gsd-extension/references/custom-ui.md +6 -6
  1612. package/src/resources/skills/create-gsd-extension/references/events-reference.md +3 -3
  1613. package/src/resources/skills/create-gsd-extension/references/packaging-distribution.md +1 -1
  1614. package/src/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +3 -3
  1615. package/src/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +2 -2
  1616. package/src/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +3 -3
  1617. package/src/resources/skills/create-gsd-extension/templates/templates.test.ts +58 -0
  1618. package/src/resources/skills/create-gsd-extension/workflows/create-extension.md +32 -12
  1619. package/src/resources/skills/lint/SKILL.md +4 -0
  1620. package/src/resources/skills/review/SKILL.md +4 -0
  1621. package/src/resources/skills/test/SKILL.md +3 -0
  1622. package/src/resources/skills/verify-before-complete/SKILL.md +1 -1
  1623. package/dist/resources/extensions/browser-tools/tests/browser-tools-integration.test.mjs +0 -601
  1624. package/dist/resources/extensions/browser-tools/tests/browser-tools-unit.test.cjs +0 -651
  1625. package/dist/resources/extensions/browser-tools/tests/capture-sharp-optional.test.cjs +0 -91
  1626. package/dist/resources/extensions/gsd/auto-loop.js +0 -13
  1627. package/dist/resources/extensions/gsd/prompts/guided-complete-slice.md +0 -3
  1628. package/dist/resources/extensions/gsd/prompts/guided-execute-task.md +0 -3
  1629. package/dist/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -30
  1630. package/dist/resources/extensions/gsd/prompts/guided-plan-slice.md +0 -3
  1631. package/dist/resources/extensions/gsd/tests/auto-supervisor.test.mjs +0 -53
  1632. package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +0 -112
  1633. package/dist/resources/extensions/gsd/tests/resolve-ts-hooks.mjs +0 -23
  1634. package/dist/resources/extensions/gsd/tests/resolve-ts.mjs +0 -5
  1635. package/dist/resources/skills/github-workflows/references/gh/tests/__init__.py +0 -0
  1636. package/dist/resources/skills/github-workflows/references/gh/tests/test_github_project_setup.py +0 -608
  1637. package/dist/web/standalone/.next/server/chunks/1926.js +0 -1
  1638. package/dist/web/standalone/.next/server/edge-runtime-webpack.js +0 -2
  1639. package/dist/web/standalone/.next/static/chunks/2826.e9f5195e91f9cad2.js +0 -11
  1640. package/dist/web/standalone/.next/static/chunks/3621.fc7480022c972438.js +0 -20
  1641. package/dist/web/standalone/.next/static/chunks/363642f4.cf8b455e0d94b478.js +0 -1
  1642. package/dist/web/standalone/.next/static/chunks/5326.adc4bf49a22f4e67.js +0 -1
  1643. package/dist/web/standalone/.next/static/chunks/webpack-2e68521d7c82f7c2.js +0 -1
  1644. package/src/resources/extensions/gsd/auto-loop.ts +0 -16
  1645. package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +0 -3
  1646. package/src/resources/extensions/gsd/prompts/guided-execute-task.md +0 -3
  1647. package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -30
  1648. package/src/resources/extensions/gsd/prompts/guided-plan-slice.md +0 -3
  1649. package/src/resources/extensions/gsd/tests/auto-lock-creation.test.ts +0 -213
  1650. package/src/resources/extensions/gsd/tests/auto-stale-lock-self-kill.test.ts +0 -87
  1651. package/src/resources/extensions/gsd/tests/copy-planning-artifacts-samepath.test.ts +0 -22
  1652. package/src/resources/extensions/gsd/tests/discuss-slice-structured-questions.test.ts +0 -47
  1653. package/src/resources/extensions/gsd/tests/empty-content-abort-loop.test.ts +0 -75
  1654. package/src/resources/extensions/gsd/tests/stop-auto-remote.test.ts +0 -158
  1655. package/dist/web/standalone/.next/static/{7afp7gq8-DVbxum83zRQ- → J-CU-p_sp45CJHT3R9TJS}/_buildManifest.js +0 -0
  1656. package/dist/web/standalone/.next/static/{7afp7gq8-DVbxum83zRQ- → J-CU-p_sp45CJHT3R9TJS}/_ssgManifest.js +0 -0
  1657. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/at-rule.js +0 -0
  1658. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/comment.js +0 -0
  1659. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/declaration.js +4 -4
  1660. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/document.js +0 -0
  1661. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/fromJSON.js +3 -3
  1662. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/list.js +0 -0
  1663. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/parse.js +1 -1
  1664. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/postcss.js +12 -12
  1665. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/root.js +0 -0
  1666. package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/rule.js +6 -6
  1667. /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/stringify.js +0 -0
  1668. /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/symbols.js +0 -0
  1669. /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/terminal-highlight.js +0 -0
  1670. /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/warn-once.js +0 -0
  1671. /package/dist/web/standalone/node_modules/{next/node_modules/postcss → postcss}/lib/warning.js +0 -0
  1672. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/classes/comparator.js +0 -0
  1673. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/classes/range.js +0 -0
  1674. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/classes/semver.js +0 -0
  1675. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/cmp.js +0 -0
  1676. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/coerce.js +0 -0
  1677. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/compare.js +0 -0
  1678. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/eq.js +0 -0
  1679. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/gt.js +0 -0
  1680. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/gte.js +0 -0
  1681. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/lt.js +0 -0
  1682. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/lte.js +0 -0
  1683. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/neq.js +0 -0
  1684. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/parse.js +0 -0
  1685. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/functions/satisfies.js +0 -0
  1686. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/constants.js +0 -0
  1687. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/debug.js +0 -0
  1688. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/identifiers.js +0 -0
  1689. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/lrucache.js +0 -0
  1690. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/parse-options.js +0 -0
  1691. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/internal/re.js +0 -0
  1692. /package/dist/web/standalone/node_modules/{semver → sharp/node_modules/semver}/package.json +0 -0
@@ -19,7 +19,6 @@ import {
19
19
  lstatSync as lstatSyncFn,
20
20
  } from "node:fs";
21
21
  import { isAbsolute, join, sep as pathSep } from "node:path";
22
- import { homedir } from "node:os";
23
22
  import { GSDError, GSD_IO_ERROR, GSD_GIT_ERROR } from "./errors.js";
24
23
  import {
25
24
  reconcileWorktreeDb,
@@ -33,7 +32,7 @@ import {
33
32
  import { atomicWriteSync } from "./atomic-write.js";
34
33
  import { execFileSync } from "node:child_process";
35
34
  import { safeCopy, safeCopyRecursive } from "./safe-fs.js";
36
- import { gsdRoot } from "./paths.js";
35
+ import { gsdRoot, resolveGsdPathContract } from "./paths.js";
37
36
  import {
38
37
  createWorktree,
39
38
  removeWorktree,
@@ -46,10 +45,16 @@ import {
46
45
  resolveGitHeadPath,
47
46
  nudgeGitBranchCache,
48
47
  } from "./worktree.js";
48
+ import {
49
+ isGsdWorktreePath,
50
+ normalizeWorktreePathForCompare,
51
+ resolveWorktreeProjectRoot,
52
+ } from "./worktree-root.js";
49
53
  import { MergeConflictError, readIntegrationBranch, RUNTIME_EXCLUSION_PATHS } from "./git-service.js";
50
54
  import { debugLog } from "./debug-logger.js";
51
55
  import { logWarning, logError } from "./workflow-logger.js";
52
56
  import { loadEffectiveGSDPreferences } from "./preferences.js";
57
+ import { MILESTONE_ID_RE } from "./milestone-ids.js";
53
58
  import {
54
59
  nativeGetCurrentBranch,
55
60
  nativeDetectMainBranch,
@@ -70,17 +75,24 @@ import {
70
75
  nativeIsAncestor,
71
76
  nativeMergeAbort,
72
77
  } from "./native-git-bridge.js";
78
+ import { gsdHome } from "./gsd-home.js";
79
+ import { type MilestoneScope, type GsdWorkspace, createWorkspace } from "./workspace.js";
73
80
 
74
- const gsdHome = process.env.GSD_HOME || join(homedir(), ".gsd");
75
81
  const PROJECT_PREFERENCES_FILE = "PREFERENCES.md";
76
82
  const LEGACY_PROJECT_PREFERENCES_FILE = "preferences.md";
83
+ const LEGACY_DEEP_SETUP_RUNTIME_UNIT_FILES = new Set([
84
+ "workflow-preferences-WORKFLOW-PREFS.json",
85
+ "discuss-project-PROJECT.json",
86
+ "discuss-requirements-REQUIREMENTS.json",
87
+ "research-decision-RESEARCH-DECISION.json",
88
+ "research-project-RESEARCH-PROJECT.json",
89
+ ]);
77
90
 
78
91
  // ─── Shared Constants & Helpers ─────────────────────────────────────────────
79
92
 
80
93
  /**
81
- * Root-level .gsd/ state files synced between worktree and project root.
82
- * Single source of truth used by syncGsdStateToWorktree, syncWorktreeStateBack,
83
- * and the dispatch-level sync functions.
94
+ * Root-level .gsd/ projections copied from project root into worktrees for
95
+ * compatibility. Project root remains the canonical state/projection root.
84
96
  */
85
97
  const ROOT_STATE_FILES = [
86
98
  "DECISIONS.md",
@@ -98,6 +110,11 @@ const ROOT_STATE_FILES = [
98
110
  // because the project root is authoritative for preferences (#2684).
99
111
  ] as const;
100
112
 
113
+ const ROOT_DIAGNOSTIC_FILES = [
114
+ "completed-units.json",
115
+ "metrics.json",
116
+ ] as const;
117
+
101
118
  /**
102
119
  * Pop a stash entry by tracking the unique marker embedded in its message so
103
120
  * concurrent stash operations against the same project root cannot cause us to
@@ -182,7 +199,7 @@ const VERDICT_RE = /verdict:\s*[\w-]+/i;
182
199
  * destination when the source copy contains a `verdict:` field.
183
200
  *
184
201
  * This is the targeted fix for the UAT stuck-loop (#2821): the main
185
- * safeCopyRecursive uses force:false to protect worktree-authoritative
202
+ * safeCopyRecursive uses force:false to protect worktree-local projection
186
203
  * files (#1886), but ASSESSMENT files written by run-uat must be
187
204
  * forward-synced when the project root has a verdict. Without this,
188
205
  * the worktree retains a stale FAIL or missing ASSESSMENT and
@@ -238,14 +255,25 @@ function forceOverwriteAssessmentsWithVerdict(
238
255
 
239
256
  // ─── Module State ──────────────────────────────────────────────────────────
240
257
 
241
- /** Original project root before chdir into auto-worktree. */
242
- let originalBase: string | null = null;
258
+ /** Active workspace registry replaces the legacy `originalBase` singleton. */
259
+ let activeWorkspace: GsdWorkspace | null = null;
260
+
261
+ function setActiveWorkspace(ws: GsdWorkspace | null): void {
262
+ activeWorkspace = ws;
263
+ }
264
+
265
+ function getActiveWorkspace(): GsdWorkspace | null {
266
+ return activeWorkspace;
267
+ }
243
268
 
244
269
  function clearProjectRootStateFiles(basePath: string, milestoneId: string): void {
245
270
  const gsdDir = gsdRoot(basePath);
271
+ // Phase C pt 2: auto.lock removed from this list — the file is gone
272
+ // (migrated to the workers + unit_dispatches + runtime_kv tables). The
273
+ // remaining transient files (STATE.md, {MID}-META.json) are still
274
+ // worth removing on teardown.
246
275
  const transientFiles = [
247
276
  join(gsdDir, "STATE.md"),
248
- join(gsdDir, "auto.lock"),
249
277
  join(gsdDir, "milestones", milestoneId, `${milestoneId}-META.json`),
250
278
  ];
251
279
 
@@ -260,9 +288,9 @@ function clearProjectRootStateFiles(basePath: string, milestoneId: string): void
260
288
  }
261
289
  }
262
290
 
263
- // Clean up entire synced milestone directory and runtime/units.
264
- // syncStateToProjectRoot() copies these into the project root during
265
- // execution. If they remain as untracked files when we attempt
291
+ // Clean up legacy synced milestone directories and runtime/units.
292
+ // Older versions copied these into the project root during execution.
293
+ // If they remain as untracked files when we attempt
266
294
  // `git merge --squash`, git rejects the merge with "local changes would
267
295
  // be overwritten", causing silent data loss (#1738).
268
296
  const syncedDirs = [
@@ -329,6 +357,41 @@ export const isSafeToAutoResolve = (filePath: string): boolean =>
329
357
  * gsd.db in the worktree so it rebuilds from fresh disk state (#853).
330
358
  * Non-fatal — sync failure should never block dispatch.
331
359
  */
360
+ /**
361
+ * Scope-typed variant of syncProjectRootToWorktree.
362
+ *
363
+ * Takes an explicit (rootScope, worktreeScope) pair where rootScope is the
364
+ * project root and worktreeScope is the auto-worktree. Direction is encoded
365
+ * in argument order. Asserts both scopes belong to the same workspace identity
366
+ * to prevent silent mismatch bugs.
367
+ */
368
+ export function syncProjectRootToWorktreeByScope(
369
+ rootScope: MilestoneScope,
370
+ worktreeScope: MilestoneScope,
371
+ ): void {
372
+ if (rootScope.workspace.identityKey !== worktreeScope.workspace.identityKey) {
373
+ throw new Error(
374
+ `syncProjectRootToWorktreeByScope: scope identity mismatch — ` +
375
+ `rootScope.identityKey="${rootScope.workspace.identityKey}" ` +
376
+ `worktreeScope.identityKey="${worktreeScope.workspace.identityKey}"`,
377
+ );
378
+ }
379
+ if (rootScope.milestoneId !== worktreeScope.milestoneId) {
380
+ throw new Error(
381
+ `syncProjectRootToWorktreeByScope: milestoneId mismatch — ` +
382
+ `rootScope.milestoneId="${rootScope.milestoneId}" worktreeScope.milestoneId="${worktreeScope.milestoneId}"`,
383
+ );
384
+ }
385
+ const projectRoot = rootScope.workspace.projectRoot;
386
+ const worktreePath_ = worktreeScope.workspace.worktreeRoot ?? worktreeScope.workspace.projectRoot;
387
+ const milestoneId = rootScope.milestoneId;
388
+ syncProjectRootToWorktree(projectRoot, worktreePath_, milestoneId);
389
+ }
390
+
391
+ /**
392
+ * @deprecated Use syncProjectRootToWorktreeByScope instead.
393
+ * TODO(C-future): remove once all callers migrated.
394
+ */
332
395
  export function syncProjectRootToWorktree(
333
396
  projectRoot: string,
334
397
  worktreePath_: string,
@@ -337,8 +400,9 @@ export function syncProjectRootToWorktree(
337
400
  if (!worktreePath_ || !projectRoot || worktreePath_ === projectRoot) return;
338
401
  if (!milestoneId) return;
339
402
 
340
- const prGsd = join(projectRoot, ".gsd");
341
- const wtGsd = join(worktreePath_, ".gsd");
403
+ const contract = resolveGsdPathContract(worktreePath_, projectRoot);
404
+ const prGsd = contract.projectGsd;
405
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath_, ".gsd");
342
406
 
343
407
  // When .gsd is a symlink to the same external directory in both locations,
344
408
  // cpSync rejects the copy because source === destination (ERR_FS_CP_EINVAL).
@@ -347,7 +411,7 @@ export function syncProjectRootToWorktree(
347
411
 
348
412
  // Copy milestone directory from project root to worktree — additive only.
349
413
  // force:false prevents cpSync from overwriting existing worktree files.
350
- // Without this, worktree-authoritative files (e.g. VALIDATION.md written
414
+ // Without this, worktree-local files (e.g. VALIDATION.md written
351
415
  // by validate-milestone) get clobbered by stale project root copies,
352
416
  // causing an infinite re-validation loop (#1886).
353
417
  safeCopyRecursive(
@@ -357,7 +421,7 @@ export function syncProjectRootToWorktree(
357
421
  );
358
422
 
359
423
  // Force-sync ASSESSMENT files that have a verdict from project root (#2821).
360
- // The additive-only copy above preserves worktree-authoritative files, but
424
+ // The additive-only copy above preserves worktree-local files, but
361
425
  // ASSESSMENT files are special: after run-uat writes a verdict and post-unit
362
426
  // syncs it to the project root, the worktree may retain a stale copy (e.g.
363
427
  // verdict:fail while the project root has verdict:pass from a retry). On
@@ -378,11 +442,9 @@ export function syncProjectRootToWorktree(
378
442
  { force: true },
379
443
  );
380
444
 
381
- // Delete worktree gsd.db ONLY if it is empty (0 bytes).
382
- // An empty DB is stale/corrupt and should be rebuilt (#853).
383
- // A non-empty DB was populated by gsd-migrate on respawn and must be
384
- // preserved — deleting it truncates the file to 0 bytes when
385
- // openDatabase re-creates it, causing "no such table" failures (#2815).
445
+ // Delete a legacy worktree-local gsd.db ONLY if it is empty (0 bytes).
446
+ // Runtime opens contract.projectDb; this cleanup only removes corrupt
447
+ // pre-upgrade local DB projections.
386
448
  try {
387
449
  const wtDb = join(wtGsd, "gsd.db");
388
450
  let deleteSidecars = false;
@@ -416,10 +478,43 @@ export function syncProjectRootToWorktree(
416
478
  }
417
479
 
418
480
  /**
419
- * Sync dispatch-critical .gsd/ state files from worktree to project root.
481
+ * Scope-typed variant of syncStateToProjectRoot.
482
+ *
483
+ * Takes an explicit (worktreeScope, rootScope) pair. Direction is encoded in
484
+ * argument order (worktree → root). Asserts both scopes belong to the same
485
+ * workspace identity to prevent silent mismatch bugs.
486
+ */
487
+ export function syncStateToProjectRootByScope(
488
+ worktreeScope: MilestoneScope,
489
+ rootScope: MilestoneScope,
490
+ ): void {
491
+ if (worktreeScope.workspace.identityKey !== rootScope.workspace.identityKey) {
492
+ throw new Error(
493
+ `syncStateToProjectRootByScope: scope identity mismatch — ` +
494
+ `worktreeScope.identityKey="${worktreeScope.workspace.identityKey}" ` +
495
+ `rootScope.identityKey="${rootScope.workspace.identityKey}"`,
496
+ );
497
+ }
498
+ if (worktreeScope.milestoneId !== rootScope.milestoneId) {
499
+ throw new Error(
500
+ `syncStateToProjectRootByScope: milestoneId mismatch — ` +
501
+ `worktreeScope.milestoneId="${worktreeScope.milestoneId}" rootScope.milestoneId="${rootScope.milestoneId}"`,
502
+ );
503
+ }
504
+ const worktreePath_ = worktreeScope.workspace.worktreeRoot ?? worktreeScope.workspace.projectRoot;
505
+ const projectRoot = rootScope.workspace.projectRoot;
506
+ const milestoneId = worktreeScope.milestoneId;
507
+ syncStateToProjectRoot(worktreePath_, projectRoot, milestoneId);
508
+ }
509
+
510
+ /**
511
+ * Sync worktree diagnostics from worktree to project root.
420
512
  * Only runs when inside an auto-worktree (worktreePath differs from projectRoot).
421
- * Copies: STATE.md + active milestone directory (roadmap, slice plans, task summaries).
513
+ * DB/project-root state remains authoritative; markdown projections are not
514
+ * copied from the worktree back to the project root.
422
515
  * Non-fatal — sync failure should never block dispatch.
516
+ * @deprecated Use syncStateToProjectRootByScope instead.
517
+ * TODO(C-future): remove once all callers migrated.
423
518
  */
424
519
  export function syncStateToProjectRoot(
425
520
  worktreePath_: string,
@@ -429,31 +524,25 @@ export function syncStateToProjectRoot(
429
524
  if (!worktreePath_ || !projectRoot || worktreePath_ === projectRoot) return;
430
525
  if (!milestoneId) return;
431
526
 
432
- const wtGsd = join(worktreePath_, ".gsd");
433
- const prGsd = join(projectRoot, ".gsd");
527
+ const contract = resolveGsdPathContract(worktreePath_, projectRoot);
528
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath_, ".gsd");
529
+ const prGsd = contract.projectGsd;
434
530
 
435
531
  // When .gsd is a symlink to the same external directory in both locations,
436
532
  // cpSync rejects the copy because source === destination (ERR_FS_CP_EINVAL).
437
533
  // Compare realpaths and skip when they resolve to the same physical path (#2184).
438
534
  if (isSamePath(wtGsd, prGsd)) return;
439
535
 
440
- // 1. STATE.md the quick-glance status used by initial deriveState()
441
- safeCopy(join(wtGsd, "STATE.md"), join(prGsd, "STATE.md"), { force: true });
442
-
443
- // 2. Milestone directory — ROADMAP, slice PLANs, task summaries
444
- // Copy the entire milestone .gsd subtree so deriveState reads current checkboxes
445
- safeCopyRecursive(
446
- join(wtGsd, "milestones", milestoneId),
447
- join(prGsd, "milestones", milestoneId),
448
- { force: true },
449
- );
450
-
451
- // 3. metrics.json — session cost/token tracking (#2313).
536
+ // metrics.jsonsession cost/token tracking (#2313).
452
537
  // Without this, metrics accumulated in the worktree are invisible from the
453
538
  // project root and never appear in the dashboard or skill-health reports.
454
539
  safeCopy(join(wtGsd, "metrics.json"), join(prGsd, "metrics.json"), { force: true });
455
540
 
456
- // 4. Runtime records unit dispatch state used by selfHealRuntimeRecords().
541
+ // completed-units.jsonruntime completion diagnostics used to avoid
542
+ // re-dispatching work already completed in an isolated worktree.
543
+ safeCopy(join(wtGsd, "completed-units.json"), join(prGsd, "completed-units.json"), { force: true });
544
+
545
+ // Runtime records — unit dispatch diagnostics used by selfHealRuntimeRecords().
457
546
  // Without this, a crash during a unit leaves the runtime record only in the
458
547
  // worktree. If the next session resolves basePath before worktree re-entry,
459
548
  // selfHeal can't find or clear the stale record (#769).
@@ -473,7 +562,7 @@ export function syncStateToProjectRoot(
473
562
  */
474
563
  export function readResourceVersion(): string | null {
475
564
  const agentDir =
476
- process.env.GSD_CODING_AGENT_DIR || join(gsdHome, "agent");
565
+ process.env.GSD_CODING_AGENT_DIR || join(gsdHome(), "agent");
477
566
  const manifestPath = join(agentDir, "managed-resources.json");
478
567
  try {
479
568
  const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
@@ -536,9 +625,9 @@ export function escapeStaleWorktree(base: string): string {
536
625
  // the string-slice heuristic matched the wrong /.gsd/ boundary. This happens
537
626
  // when .gsd is a symlink into ~/.gsd/projects/<hash> and process.cwd()
538
627
  // resolved through the symlink. Returning ~ would be catastrophic (#1676).
539
- const candidateGsd = join(projectRoot, ".gsd").replaceAll("\\", "/");
540
- const gsdHomePath = gsdHome.replaceAll("\\", "/");
541
- if (candidateGsd === gsdHomePath || candidateGsd.startsWith(gsdHomePath + "/")) {
628
+ const candidateGsd = normalizeWorktreePathForCompare(join(projectRoot, ".gsd"));
629
+ const gsdHomeNorm = normalizeWorktreePathForCompare(gsdHome());
630
+ if (candidateGsd === gsdHomeNorm || candidateGsd.startsWith(gsdHomeNorm + "/")) {
542
631
  // Don't chdir to home — return base unchanged.
543
632
  // resolveProjectRoot() in worktree.ts has the full git-file-based recovery
544
633
  // and will be called by the caller (startAuto → projectRoot()).
@@ -573,6 +662,27 @@ export function cleanStaleRuntimeUnits(
573
662
  try {
574
663
  for (const file of readdirSync(runtimeUnitsDir)) {
575
664
  if (!file.endsWith(".json")) continue;
665
+ if (LEGACY_DEEP_SETUP_RUNTIME_UNIT_FILES.has(file)) {
666
+ try {
667
+ unlinkSync(join(runtimeUnitsDir, file));
668
+ cleaned++;
669
+ } catch (err) {
670
+ /* non-fatal */
671
+ logWarning("worktree", `stale runtime unit unlink failed (${file}): ${err instanceof Error ? err.message : String(err)}`);
672
+ }
673
+ continue;
674
+ }
675
+ const staleDiscussMatch = file.match(/^discuss-milestone-(.+)\.json$/);
676
+ if (staleDiscussMatch && !MILESTONE_ID_RE.test(staleDiscussMatch[1])) {
677
+ try {
678
+ unlinkSync(join(runtimeUnitsDir, file));
679
+ cleaned++;
680
+ } catch (err) {
681
+ /* non-fatal */
682
+ logWarning("worktree", `stale runtime unit unlink failed (${file}): ${err instanceof Error ? err.message : String(err)}`);
683
+ }
684
+ continue;
685
+ }
576
686
  const midMatch = file.match(/(M\d+(?:-[a-z0-9]{6})?)/);
577
687
  if (!midMatch) continue;
578
688
  if (hasMilestoneSummary(midMatch[1])) {
@@ -594,6 +704,30 @@ export function cleanStaleRuntimeUnits(
594
704
 
595
705
  // ─── Worktree ↔ Main Repo Sync (#1311) ──────────────────────────────────────
596
706
 
707
+ /**
708
+ * Scope-typed variant of syncGsdStateToWorktree.
709
+ *
710
+ * Takes an explicit (rootScope, worktreeScope) pair. Note: milestoneId is not
711
+ * used by syncGsdStateToWorktree — this variant only requires workspace
712
+ * identity. Asserts both scopes belong to the same workspace identity to
713
+ * prevent silent mismatch bugs.
714
+ */
715
+ export function syncGsdStateToWorktreeByScope(
716
+ rootScope: MilestoneScope,
717
+ worktreeScope: MilestoneScope,
718
+ ): { synced: string[] } {
719
+ if (rootScope.workspace.identityKey !== worktreeScope.workspace.identityKey) {
720
+ throw new Error(
721
+ `syncGsdStateToWorktreeByScope: scope identity mismatch — ` +
722
+ `rootScope.identityKey="${rootScope.workspace.identityKey}" ` +
723
+ `worktreeScope.identityKey="${worktreeScope.workspace.identityKey}"`,
724
+ );
725
+ }
726
+ const mainBasePath = rootScope.workspace.projectRoot;
727
+ const worktreePath_ = worktreeScope.workspace.worktreeRoot ?? worktreeScope.workspace.projectRoot;
728
+ return syncGsdStateToWorktree(mainBasePath, worktreePath_);
729
+ }
730
+
597
731
  /**
598
732
  * Sync .gsd/ state from the main repo into the worktree.
599
733
  *
@@ -605,15 +739,19 @@ export function cleanStaleRuntimeUnits(
605
739
  * missing milestones, CONTEXT, ROADMAP, DECISIONS, REQUIREMENTS, and
606
740
  * PROJECT files from the main repo's .gsd/ into the worktree's .gsd/.
607
741
  *
608
- * Only adds missing content — never overwrites existing files in the worktree
609
- * (the worktree's execution state is authoritative for in-progress work).
742
+ * Only adds missing content — never overwrites existing files in the worktree.
743
+ * Worktree files are compatibility projections; DB/project root remains
744
+ * authoritative for runtime state.
745
+ * @deprecated Use syncGsdStateToWorktreeByScope instead.
746
+ * TODO(C-future): remove once all callers migrated.
610
747
  */
611
748
  export function syncGsdStateToWorktree(
612
749
  mainBasePath: string,
613
750
  worktreePath_: string,
614
751
  ): { synced: string[] } {
615
- const mainGsd = gsdRoot(mainBasePath);
616
- const wtGsd = gsdRoot(worktreePath_);
752
+ const contract = resolveGsdPathContract(worktreePath_, mainBasePath);
753
+ const mainGsd = contract.projectGsd;
754
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath_, ".gsd");
617
755
  const synced: string[] = [];
618
756
 
619
757
  // If both resolve to the same directory (symlink), no sync needed
@@ -757,32 +895,26 @@ export function syncGsdStateToWorktree(
757
895
  }
758
896
 
759
897
  /**
760
- * Sync milestone artifacts from worktree back to the main external state directory.
761
- * Called before milestone merge to ensure completion artifacts (SUMMARY, VALIDATION,
762
- * updated ROADMAP) are visible from the project root (#1412).
898
+ * Sync compatibility artifacts from worktree back to the main external state
899
+ * directory. Canonical workflow state lives in the project DB; worktree .gsd
900
+ * content is legacy projection/diagnostic data only.
763
901
  *
764
902
  * Syncs:
765
- * 1. Root-level .gsd/ files (REQUIREMENTS, PROJECT, DECISIONS, KNOWLEDGE,
766
- * OVERRIDES) the worktree's versions overwrite main's because the
767
- * worktree is the authoritative execution context.
768
- * 2. ALL milestone directories found in the worktree — not just the
769
- * current milestoneId. The complete-milestone unit may create artifacts
770
- * for the *next* milestone (CONTEXT, ROADMAP, new requirements) which
771
- * must survive worktree teardown.
903
+ * 1. Legacy worktree DBs are reconciled into the canonical project DB.
904
+ * 2. Runtime diagnostic files may be copied for operator visibility.
772
905
  *
773
- * History: Originally only synced milestones/<milestoneId>/ and assumed
774
- * root-level files would be carried by the squash merge. In practice,
775
- * .gsd/ files are often untracked (gitignored or never committed), so the
776
- * squash merge carries nothing. This caused next-milestone artifacts and
777
- * updated REQUIREMENTS/PROJECT to be silently lost on teardown.
906
+ * Markdown milestone directories are projections and are not copied from
907
+ * worktrees into the project root. Current workflow state must arrive through
908
+ * the shared project DB or the pre-upgrade DB reconciliation path above.
778
909
  */
779
910
  export function syncWorktreeStateBack(
780
911
  mainBasePath: string,
781
912
  worktreePath: string,
782
913
  milestoneId: string,
783
914
  ): { synced: string[] } {
784
- const mainGsd = gsdRoot(mainBasePath);
785
- const wtGsd = gsdRoot(worktreePath);
915
+ const contract = resolveGsdPathContract(worktreePath, mainBasePath);
916
+ const mainGsd = contract.projectGsd;
917
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath, ".gsd");
786
918
  const synced: string[] = [];
787
919
 
788
920
  // If both resolve to the same directory (symlink), no sync needed
@@ -796,7 +928,7 @@ export function syncWorktreeStateBack(
796
928
  // files. This handles in-flight worktrees that were created before the
797
929
  // upgrade to shared WAL mode.
798
930
  const wtLocalDb = join(wtGsd, "gsd.db");
799
- const mainDb = join(mainGsd, "gsd.db");
931
+ const mainDb = contract.projectDb;
800
932
  if (existsSync(wtLocalDb) && existsSync(mainDb)) {
801
933
  try {
802
934
  reconcileWorktreeDb(mainDb, wtLocalDb);
@@ -807,13 +939,10 @@ export function syncWorktreeStateBack(
807
939
  }
808
940
  }
809
941
 
810
- // ── 1. Sync root-level .gsd/ files back ──────────────────────────────
811
- // The worktree is authoritative — complete-milestone updates REQUIREMENTS,
812
- // PROJECT, etc. These must overwrite main's copies so they survive teardown.
813
- // Also includes QUEUE.md, completed-units.json, and metrics.json which are
814
- // written during milestone closeout and lost on teardown without explicit sync
815
- // (#1787, #2313).
816
- for (const f of ROOT_STATE_FILES) {
942
+ // ── 1. Sync root-level diagnostic files back ─────────────────────────
943
+ // Markdown/JSON state projections remain project-root/DB authoritative.
944
+ // These diagnostic files are copied for observability only.
945
+ for (const f of ROOT_DIAGNOSTIC_FILES) {
817
946
  const src = join(wtGsd, f);
818
947
  const dst = join(mainGsd, f);
819
948
  if (existsSync(src)) {
@@ -827,105 +956,8 @@ export function syncWorktreeStateBack(
827
956
  }
828
957
  }
829
958
 
830
- // ── 2. Sync ALL milestone directories ────────────────────────────────
831
- // The complete-milestone unit may create next-milestone artifacts (e.g.
832
- // M007 setup while closing M006). We must sync every milestone directory
833
- // in the worktree, not just the current one.
834
- const wtMilestonesDir = join(wtGsd, "milestones");
835
- if (!existsSync(wtMilestonesDir)) return { synced };
836
-
837
- try {
838
- const wtMilestones = readdirSync(wtMilestonesDir, { withFileTypes: true })
839
- .filter((d) => d.isDirectory())
840
- .map((d) => d.name);
841
-
842
- for (const mid of wtMilestones) {
843
- // Skip the current milestone being merged — its files are already in the
844
- // milestone branch and would conflict with the squash merge (#3641).
845
- if (mid === milestoneId) continue;
846
- syncMilestoneDir(wtGsd, mainGsd, mid, synced);
847
- }
848
- } catch (err) {
849
- /* non-fatal */
850
- logWarning("worktree", `milestone sync-back failed: ${err instanceof Error ? err.message : String(err)}`);
851
- }
852
-
853
959
  return { synced };
854
960
  }
855
-
856
- /**
857
- * Sync a single milestone directory from worktree to main.
858
- * Copies milestone-level .md files, slice-level files, and task summaries.
859
- */
860
- /** Copy matching files from srcDir to dstDir (non-fatal per file). */
861
- function syncDirFiles(
862
- srcDir: string,
863
- dstDir: string,
864
- filter: (name: string) => boolean,
865
- synced: string[],
866
- prefix: string,
867
- ): void {
868
- try {
869
- for (const entry of readdirSync(srcDir, { withFileTypes: true })) {
870
- if (!entry.isFile() || !filter(entry.name)) continue;
871
- try {
872
- cpSync(join(srcDir, entry.name), join(dstDir, entry.name), { force: true });
873
- synced.push(`${prefix}${entry.name}`);
874
- } catch (err) {
875
- /* non-fatal */
876
- logWarning("worktree", `file copy failed (${prefix}${entry.name}): ${err instanceof Error ? err.message : String(err)}`);
877
- }
878
- }
879
- } catch (err) {
880
- /* non-fatal — srcDir may not be readable */
881
- logWarning("worktree", `directory read failed: ${err instanceof Error ? err.message : String(err)}`);
882
- }
883
- }
884
-
885
- function syncMilestoneDir(
886
- wtGsd: string,
887
- mainGsd: string,
888
- mid: string,
889
- synced: string[],
890
- ): void {
891
- const wtMilestoneDir = join(wtGsd, "milestones", mid);
892
- const mainMilestoneDir = join(mainGsd, "milestones", mid);
893
-
894
- if (!existsSync(wtMilestoneDir)) return;
895
- mkdirSync(mainMilestoneDir, { recursive: true });
896
-
897
- const isMd = (name: string): boolean => name.endsWith(".md");
898
-
899
- // Sync milestone-level files (SUMMARY, VALIDATION, ROADMAP, CONTEXT)
900
- syncDirFiles(wtMilestoneDir, mainMilestoneDir, isMd, synced, `milestones/${mid}/`);
901
-
902
- // Sync slice-level files (summaries, UATs) and task summaries (#1678)
903
- const wtSlicesDir = join(wtMilestoneDir, "slices");
904
- const mainSlicesDir = join(mainMilestoneDir, "slices");
905
- if (!existsSync(wtSlicesDir)) return;
906
-
907
- try {
908
- for (const sliceEntry of readdirSync(wtSlicesDir, { withFileTypes: true })) {
909
- if (!sliceEntry.isDirectory()) continue;
910
- const sid = sliceEntry.name;
911
- const wtSliceDir = join(wtSlicesDir, sid);
912
- const mainSliceDir = join(mainSlicesDir, sid);
913
- mkdirSync(mainSliceDir, { recursive: true });
914
-
915
- syncDirFiles(wtSliceDir, mainSliceDir, isMd, synced, `milestones/${mid}/slices/${sid}/`);
916
-
917
- const wtTasksDir = join(wtSliceDir, "tasks");
918
- const mainTasksDir = join(mainSliceDir, "tasks");
919
- if (existsSync(wtTasksDir)) {
920
- mkdirSync(mainTasksDir, { recursive: true });
921
- syncDirFiles(wtTasksDir, mainTasksDir, isMd, synced, `milestones/${mid}/slices/${sid}/tasks/`);
922
- }
923
- }
924
- } catch (err) {
925
- /* non-fatal */
926
- logWarning("worktree", `milestone slice sync failed (${mid}): ${err instanceof Error ? err.message : String(err)}`);
927
- }
928
- }
929
961
  // ─── Worktree Post-Create Hook (#597) ────────────────────────────────────────
930
962
 
931
963
  /**
@@ -990,6 +1022,12 @@ export function autoWorktreeBranch(milestoneId: string): string {
990
1022
  return `milestone/${milestoneId}`;
991
1023
  }
992
1024
 
1025
+ function normalizeLocalBranchRef(branch: string): string {
1026
+ return branch.startsWith("refs/heads/")
1027
+ ? branch.slice("refs/heads/".length)
1028
+ : branch;
1029
+ }
1030
+
993
1031
  // ─── Branch-mode Entry ─────────────────────────────────────────────────────
994
1032
 
995
1033
  /**
@@ -1093,109 +1131,30 @@ export function enterBranchModeForMilestone(
1093
1131
  * Forward-merge plan checkbox state from the project root into a freshly
1094
1132
  * re-attached worktree (#778).
1095
1133
  *
1096
- * When auto-mode stops via crash (not graceful stop), the milestone branch
1097
- * HEAD may be behind the filesystem state at the project root because
1098
- * syncStateToProjectRoot() runs after every task completion but the final
1099
- * git commit may not have happened before the crash. On restart the worktree
1100
- * is re-attached to the branch HEAD, which has [ ] for the crashed task,
1101
- * causing verifyExpectedArtifact() to fail and triggering an infinite
1102
- * dispatch/skip loop.
1103
- *
1104
- * Fix: after re-attaching, read every *.md plan file in the milestone
1105
- * directory at the project root and apply any [x] checkbox states that are
1106
- * ahead of the worktree version (forward-only: never downgrade [x] → [ ]).
1107
- *
1108
- * This is safe because syncStateToProjectRoot() is the authoritative source
1109
- * of post-task state at the project root — it writes the same [x] the LLM
1110
- * produced, then the auto-commit follows. If the commit never happened, the
1111
- * filesystem copy is still valid and correct.
1134
+ * Phase C: deleted. Writers in workflow-projections.ts, triage-resolution.ts,
1135
+ * rule-registry.ts, and auto-post-unit.ts now route through
1136
+ * s.canonicalProjectRoot, so non-symlinked worktrees no longer need a local
1137
+ * .gsd/ projection the project-root .gsd/ is the only authoritative source
1138
+ * for both reads and writes. copyPlanningArtifacts and reconcilePlanCheckboxes
1139
+ * (both formerly here) became dead.
1112
1140
  */
1113
- function reconcilePlanCheckboxes(
1114
- projectRoot: string,
1115
- wtPath: string,
1116
- milestoneId: string,
1117
- ): void {
1118
- const srcMilestone = join(projectRoot, ".gsd", "milestones", milestoneId);
1119
- const dstMilestone = join(wtPath, ".gsd", "milestones", milestoneId);
1120
- if (!existsSync(srcMilestone) || !existsSync(dstMilestone)) return;
1121
-
1122
- // Walk all markdown files in the milestone directory (plans, summaries, etc.)
1123
- function walkMd(dir: string): string[] {
1124
- const results: string[] = [];
1125
- try {
1126
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
1127
- const full = join(dir, entry.name);
1128
- if (entry.isDirectory()) {
1129
- results.push(...walkMd(full));
1130
- } else if (entry.isFile() && entry.name.endsWith(".md")) {
1131
- results.push(full);
1132
- }
1133
- }
1134
- } catch (err) {
1135
- /* non-fatal */
1136
- logWarning("worktree", `walkMd directory read failed: ${err instanceof Error ? err.message : String(err)}`);
1137
- }
1138
- return results;
1139
- }
1140
-
1141
- for (const srcFile of walkMd(srcMilestone)) {
1142
- const rel = srcFile.slice(srcMilestone.length);
1143
- const dstFile = dstMilestone + rel;
1144
- if (!existsSync(dstFile)) continue; // only reconcile existing files
1145
-
1146
- let srcContent: string;
1147
- let dstContent: string;
1148
- try {
1149
- srcContent = readFileSync(srcFile, "utf-8");
1150
- dstContent = readFileSync(dstFile, "utf-8");
1151
- } catch (e) {
1152
- logWarning("worktree", `reconcilePlanCheckboxes read failed: ${(e as Error).message}`);
1153
- continue;
1154
- }
1155
-
1156
- if (srcContent === dstContent) continue;
1157
-
1158
- // Extract all checked task IDs from the source (project root)
1159
- // Pattern: - [x] **T<id>: or - [x] **S<id>: (case-insensitive x)
1160
- const checkedRe = /^- \[[xX]\] \*\*([TS]\d+):/gm;
1161
- const srcChecked = new Set<string>();
1162
- for (const m of srcContent.matchAll(checkedRe)) srcChecked.add(m[1]);
1163
-
1164
- if (srcChecked.size === 0) continue;
1165
-
1166
- // Forward-apply: replace [ ] → [x] for any IDs that are checked in src
1167
- let updated = dstContent;
1168
- let changed = false;
1169
- for (const id of srcChecked) {
1170
- const escapedId = id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1171
- const uncheckedRe = new RegExp(
1172
- `^(- )\\[ \\]( \\*\\*${escapedId}:)`,
1173
- "gm",
1174
- );
1175
- if (uncheckedRe.test(updated)) {
1176
- updated = updated.replace(
1177
- new RegExp(`^(- )\\[ \\]( \\*\\*${escapedId}:)`, "gm"),
1178
- "$1[x]$2",
1179
- );
1180
- changed = true;
1181
- }
1182
- }
1183
-
1184
- if (changed) {
1185
- try {
1186
- atomicWriteSync(dstFile, updated, "utf-8");
1187
- } catch (err) {
1188
- /* non-fatal */
1189
- logWarning("worktree", `plan checkbox reconcile write failed: ${err instanceof Error ? err.message : String(err)}`);
1190
- }
1191
- }
1192
- }
1193
- }
1194
1141
 
1195
1142
  export function createAutoWorktree(
1196
1143
  basePath: string,
1197
1144
  milestoneId: string,
1198
1145
  ): string {
1146
+ basePath = resolveWorktreeProjectRoot(basePath);
1147
+
1148
+ // Check if repo has commits — git worktree requires a valid HEAD
1149
+ try {
1150
+ execFileSync("git", ["rev-parse", "--verify", "HEAD"], { cwd: basePath, stdio: "pipe" });
1151
+ } catch {
1152
+ throw new GSDError(
1153
+ GSD_GIT_ERROR,
1154
+ `Cannot create worktree: repository has no commits yet. Worktree isolation requires at least one commit.`,
1155
+ );
1156
+ }
1157
+
1199
1158
  const branch = autoWorktreeBranch(milestoneId);
1200
1159
 
1201
1160
  // Check if the milestone branch already exists — it survives auto-mode
@@ -1222,39 +1181,29 @@ export function createAutoWorktree(
1222
1181
  const integrationBranch =
1223
1182
  readIntegrationBranch(basePath, milestoneId) ?? undefined;
1224
1183
  const gitPrefs = loadEffectiveGSDPreferences()?.preferences?.git;
1225
- const startPoint = integrationBranch ?? gitPrefs?.main_branch ?? undefined;
1184
+ const validatedPrefBranch =
1185
+ gitPrefs?.main_branch &&
1186
+ typeof gitPrefs.main_branch === "string" &&
1187
+ gitPrefs.main_branch.length > 0 &&
1188
+ nativeBranchExists(basePath, gitPrefs.main_branch)
1189
+ ? gitPrefs.main_branch
1190
+ : undefined;
1191
+ const startPoint = integrationBranch ?? validatedPrefBranch ?? undefined;
1226
1192
  info = createWorktree(basePath, milestoneId, {
1227
1193
  branch,
1228
1194
  startPoint,
1229
1195
  });
1230
1196
  }
1231
1197
 
1232
- // Copy .gsd/ planning artifacts from the source repo into the new worktree.
1233
- // Worktrees are fresh git checkouts untracked files don't carry over.
1234
- // Planning artifacts may be untracked if the project's .gitignore had a
1235
- // blanket .gsd/ rule (pre-v2.14.0). Without this copy, auto-mode loops
1236
- // on plan-slice because the plan file doesn't exist in the worktree.
1237
- //
1238
- // IMPORTANT: Skip when re-attaching to an existing branch (#759).
1239
- // The branch checkout already has committed artifacts with correct state
1240
- // (e.g. [x] for completed slices). Copying from the project root would
1241
- // overwrite them with stale data ([ ] checkboxes) because the root is
1242
- // not always fully synced.
1243
- if (!branchExists) {
1244
- copyPlanningArtifacts(basePath, info.path);
1245
- } else {
1246
- // Re-attaching to an existing branch: forward-merge any plan checkpoint
1247
- // state from the project root into the worktree (#778).
1248
- //
1249
- // If auto-mode stopped via crash, the milestone branch HEAD may lag behind
1250
- // the project root filesystem because syncStateToProjectRoot() ran after
1251
- // task completion but the auto-commit never fired. On restart the worktree
1252
- // is re-created from the branch HEAD (which has [ ] for the crashed task),
1253
- // causing verifyExpectedArtifact() to return false → stale-key eviction →
1254
- // infinite dispatch/skip loop. Reconciling here ensures the worktree sees
1255
- // the same [x] state that syncStateToProjectRoot() wrote to the root.
1256
- reconcilePlanCheckboxes(basePath, info.path, milestoneId);
1257
- }
1198
+ // Phase C: copyPlanningArtifacts and reconcilePlanCheckboxes were
1199
+ // deleted. Both addressed the same problem (worktree-local .gsd/
1200
+ // projection lagging behind project-root state) by maintaining a stale
1201
+ // copy. Now that auto-mode writers in workflow-projections.ts,
1202
+ // triage-resolution.ts, rule-registry.ts, and auto-post-unit.ts route
1203
+ // through s.canonicalProjectRoot, the worktree never needs a local
1204
+ // .gsd/ both reads and writes converge on the project-root .gsd/.
1205
+ // The original concerns (#759, #778) no longer apply because there is
1206
+ // no second copy to drift.
1258
1207
 
1259
1208
  // Run user-configured post-create hook (#597) — e.g. copy .env, symlink assets
1260
1209
  const hookError = runWorktreePostCreateHook(basePath, info.path);
@@ -1267,10 +1216,10 @@ export function createAutoWorktree(
1267
1216
 
1268
1217
  try {
1269
1218
  process.chdir(info.path);
1270
- originalBase = basePath;
1219
+ setActiveWorkspace(createWorkspace(basePath));
1271
1220
  } catch (err) {
1272
1221
  // If chdir fails, the worktree was created but we couldn't enter it.
1273
- // Don't store originalBase -- caller can retry or clean up.
1222
+ // Don't set activeWorkspace -- caller can retry or clean up.
1274
1223
  throw new GSDError(
1275
1224
  GSD_IO_ERROR,
1276
1225
  `Auto-worktree created at ${info.path} but chdir failed: ${err instanceof Error ? err.message : String(err)}`,
@@ -1281,60 +1230,13 @@ export function createAutoWorktree(
1281
1230
  return info.path;
1282
1231
  }
1283
1232
 
1284
- /**
1285
- * Copy .gsd/ planning artifacts from source repo to a new worktree.
1286
- * Copies milestones/, DECISIONS.md, REQUIREMENTS.md, PROJECT.md, QUEUE.md,
1287
- * STATE.md, KNOWLEDGE.md, and OVERRIDES.md.
1288
- * Skips runtime files (auto.lock, metrics.json, etc.) and the worktrees/ dir.
1289
- * Best-effort failures are non-fatal since auto-mode can recreate artifacts.
1290
- */
1291
- function copyPlanningArtifacts(srcBase: string, wtPath: string): void {
1292
- const srcGsd = join(srcBase, ".gsd");
1293
- const dstGsd = join(wtPath, ".gsd");
1294
- if (!existsSync(srcGsd)) return;
1295
- if (isSamePath(srcGsd, dstGsd)) return;
1296
-
1297
- // Copy milestones/ directory (planning files, roadmaps, plans, research)
1298
- safeCopyRecursive(join(srcGsd, "milestones"), join(dstGsd, "milestones"), {
1299
- force: true,
1300
- filter: (src) => !src.endsWith("-META.json"),
1301
- });
1302
-
1303
- // Copy top-level planning files
1304
- for (const file of [
1305
- "DECISIONS.md",
1306
- "REQUIREMENTS.md",
1307
- "PROJECT.md",
1308
- "QUEUE.md",
1309
- "STATE.md",
1310
- "KNOWLEDGE.md",
1311
- "OVERRIDES.md",
1312
- "mcp.json",
1313
- ]) {
1314
- safeCopy(join(srcGsd, file), join(dstGsd, file), { force: true });
1315
- }
1316
-
1317
- // Seed canonical PREFERENCES.md when available; fall back to legacy lowercase.
1318
- if (existsSync(join(srcGsd, PROJECT_PREFERENCES_FILE))) {
1319
- safeCopy(
1320
- join(srcGsd, PROJECT_PREFERENCES_FILE),
1321
- join(dstGsd, PROJECT_PREFERENCES_FILE),
1322
- { force: true },
1323
- );
1324
- } else if (existsSync(join(srcGsd, LEGACY_PROJECT_PREFERENCES_FILE))) {
1325
- safeCopy(
1326
- join(srcGsd, LEGACY_PROJECT_PREFERENCES_FILE),
1327
- join(dstGsd, LEGACY_PROJECT_PREFERENCES_FILE),
1328
- { force: true },
1329
- );
1330
- }
1331
-
1332
- // Shared WAL (R012): worktrees use the project root's DB directly.
1333
- // No longer copy gsd.db into the worktree — the DB path resolver in
1334
- // ensureDbOpen() detects the worktree location and opens the root DB.
1335
- // Compat note: reconcileWorktreeDb() in mergeMilestoneToMain handles
1336
- // worktrees that already have a local gsd.db from before this change.
1337
- }
1233
+ // Phase C: copyPlanningArtifacts removed. Planning artifacts now live
1234
+ // only at the project root .gsd/; auto-mode writers (workflow-projections,
1235
+ // triage-resolution, rule-registry, regenerateIfMissing,
1236
+ // resolveHookArtifactPath) all route through s.canonicalProjectRoot.
1237
+ // Worktrees are pure git checkouts they no longer maintain a parallel
1238
+ // .gsd/ projection. The gsd.db has always lived at the project root via
1239
+ // the shared-WAL R012 contract; that is unchanged.
1338
1240
 
1339
1241
  /**
1340
1242
  * Teardown an auto-worktree: chdir back to original base, then remove
@@ -1345,67 +1247,121 @@ export function teardownAutoWorktree(
1345
1247
  milestoneId: string,
1346
1248
  opts: { preserveBranch?: boolean } = {},
1347
1249
  ): void {
1250
+ originalBasePath = resolveWorktreeProjectRoot(originalBasePath);
1251
+
1348
1252
  const branch = autoWorktreeBranch(milestoneId);
1349
1253
  const { preserveBranch = false } = opts;
1350
1254
  const previousCwd = process.cwd();
1351
1255
 
1256
+ // Wrap the entire teardown body in a single try/finally so activeWorkspace
1257
+ // is ALWAYS cleared — even if process.chdir throws (e.g. originalBasePath
1258
+ // was deleted before teardown ran). Previously the finally only covered
1259
+ // removeWorktree, leaving the registry stale on a chdir failure (H3 fix).
1352
1260
  try {
1353
- process.chdir(originalBasePath);
1354
- originalBase = null;
1355
- } catch (err) {
1356
- throw new GSDError(
1357
- GSD_IO_ERROR,
1358
- `Failed to chdir back to ${originalBasePath} during teardown: ${err instanceof Error ? err.message : String(err)}`,
1359
- );
1360
- }
1261
+ try {
1262
+ process.chdir(originalBasePath);
1263
+ } catch (err) {
1264
+ throw new GSDError(
1265
+ GSD_IO_ERROR,
1266
+ `Failed to chdir back to ${originalBasePath} during teardown: ${err instanceof Error ? err.message : String(err)}`,
1267
+ );
1268
+ }
1361
1269
 
1362
- nudgeGitBranchCache(previousCwd);
1363
- removeWorktree(originalBasePath, milestoneId, {
1364
- branch,
1365
- deleteBranch: !preserveBranch,
1366
- });
1367
-
1368
- // Verify cleanup succeeded — warn if the worktree directory is still on disk.
1369
- // On Windows, bash-based cleanup can silently fail when paths contain
1370
- // backslashes (#1436), leaving ~1 GB+ orphaned directories.
1371
- const wtDir = worktreePath(originalBasePath, milestoneId);
1372
- if (existsSync(wtDir)) {
1373
- logWarning(
1374
- "reconcile",
1375
- `Worktree directory still exists after teardown: ${wtDir}. ` +
1376
- `This is likely an orphaned directory consuming disk space. ` +
1377
- `Remove it manually with: rm -rf "${wtDir.replaceAll("\\", "/")}"`,
1378
- { worktree: milestoneId },
1379
- );
1380
- // Attempt a direct filesystem removal as a fallback — but ONLY if the
1381
- // path is safely inside .gsd/worktrees/ to prevent #2365 data loss.
1382
- if (isInsideWorktreesDir(originalBasePath, wtDir)) {
1270
+ // Mirror cleanup steps from mergeMilestoneToMain abort path:
1271
+
1272
+ // 1. Remove transient state files (STATE.md, auto.lock, {MID}-META.json).
1273
+ // Non-fatal — must not block teardown.
1274
+ try {
1275
+ clearProjectRootStateFiles(originalBasePath, milestoneId);
1276
+ } catch (err) {
1277
+ logWarning("worktree", `clearProjectRootStateFiles failed during teardown: ${err instanceof Error ? err.message : String(err)}`);
1278
+ }
1279
+
1280
+ // 2. Reconcile worktree-local gsd.db into project root DB if both exist.
1281
+ // Non-fatal — handles legacy worktrees that have a local copy.
1282
+ if (isDbAvailable()) {
1383
1283
  try {
1384
- rmSync(wtDir, { recursive: true, force: true });
1284
+ const contract = resolveGsdPathContract(previousCwd, originalBasePath);
1285
+ const worktreeDbPath = join(contract.worktreeGsd ?? join(previousCwd, ".gsd"), "gsd.db");
1286
+ const mainDbPath = contract.projectDb;
1287
+ if (existsSync(worktreeDbPath) && !isSamePath(worktreeDbPath, mainDbPath)) {
1288
+ reconcileWorktreeDb(mainDbPath, worktreeDbPath);
1289
+ }
1385
1290
  } catch (err) {
1386
- // Non-fatal — the warning above tells the user how to clean up
1387
- logWarning("worktree", `worktree directory removal failed: ${err instanceof Error ? err.message : String(err)}`);
1291
+ /* non-fatal */
1292
+ logError("worktree", `DB reconciliation failed during teardown: ${err instanceof Error ? err.message : String(err)}`);
1388
1293
  }
1389
- } else {
1390
- console.error(
1391
- `[GSD] REFUSING fallback rmSync — path is outside .gsd/worktrees/: ${wtDir}`,
1294
+ }
1295
+
1296
+ nudgeGitBranchCache(previousCwd);
1297
+
1298
+ // 3. Remove the worktree. Errors propagate naturally — the outer finally
1299
+ // ensures activeWorkspace is cleared regardless.
1300
+ removeWorktree(originalBasePath, milestoneId, {
1301
+ branch,
1302
+ deleteBranch: !preserveBranch,
1303
+ });
1304
+
1305
+ // Verify cleanup succeeded — warn if the worktree directory is still on disk.
1306
+ // On Windows, bash-based cleanup can silently fail when paths contain
1307
+ // backslashes (#1436), leaving ~1 GB+ orphaned directories.
1308
+ const wtDir = worktreePath(originalBasePath, milestoneId);
1309
+ if (existsSync(wtDir)) {
1310
+ logWarning(
1311
+ "reconcile",
1312
+ `Worktree directory still exists after teardown: ${wtDir}. ` +
1313
+ `This is likely an orphaned directory consuming disk space. ` +
1314
+ `Remove it manually with: rm -rf "${wtDir.replaceAll("\\", "/")}"`,
1315
+ { worktree: milestoneId },
1392
1316
  );
1317
+ // Attempt a direct filesystem removal as a fallback — but ONLY if the
1318
+ // path is safely inside .gsd/worktrees/ to prevent #2365 data loss.
1319
+ if (isInsideWorktreesDir(originalBasePath, wtDir)) {
1320
+ try {
1321
+ rmSync(wtDir, { recursive: true, force: true });
1322
+ } catch (err) {
1323
+ // Non-fatal — the warning above tells the user how to clean up
1324
+ logWarning("worktree", `worktree directory removal failed: ${err instanceof Error ? err.message : String(err)}`);
1325
+ }
1326
+ } else {
1327
+ console.error(
1328
+ `[GSD] REFUSING fallback rmSync — path is outside .gsd/worktrees/: ${wtDir}`,
1329
+ );
1330
+ }
1393
1331
  }
1332
+ } finally {
1333
+ // Clear module state unconditionally — regardless of which step above
1334
+ // failed. A stale activeWorkspace causes getActiveAutoWorktreeContext()
1335
+ // to return wrong data for subsequent operations.
1336
+ setActiveWorkspace(null);
1394
1337
  }
1395
1338
  }
1396
1339
 
1397
1340
  /**
1398
1341
  * Detect if the process is currently inside an auto-worktree.
1399
- * Checks both module state and git branch prefix.
1342
+ * Uses the current directory structure plus git branch prefix so detection
1343
+ * still works after process restart when module state has been reset.
1400
1344
  */
1401
1345
  export function isInAutoWorktree(basePath: string): boolean {
1402
- if (!originalBase) return false;
1403
- const cwd = process.cwd();
1404
- const resolvedBase = existsSync(basePath) ? realpathSync(basePath) : basePath;
1405
- const wtDir = join(resolvedBase, ".gsd", "worktrees");
1406
- if (!cwd.startsWith(wtDir)) return false;
1407
- const branch = nativeGetCurrentBranch(cwd);
1408
- return branch.startsWith("milestone/");
1346
+ const targetPath = isGsdWorktreePath(basePath) ? basePath : process.cwd();
1347
+ if (!isGsdWorktreePath(targetPath)) return false;
1348
+
1349
+ const storedBase = getAutoWorktreeOriginalBase();
1350
+ const projectRoot = resolveWorktreeProjectRoot(basePath, storedBase);
1351
+ const targetProjectRoot = resolveWorktreeProjectRoot(targetPath, storedBase);
1352
+ if (
1353
+ normalizeWorktreePathForCompare(projectRoot) !==
1354
+ normalizeWorktreePathForCompare(targetProjectRoot)
1355
+ ) {
1356
+ return false;
1357
+ }
1358
+
1359
+ try {
1360
+ const branch = nativeGetCurrentBranch(targetPath);
1361
+ return branch.startsWith("milestone/");
1362
+ } catch {
1363
+ return false;
1364
+ }
1409
1365
  }
1410
1366
 
1411
1367
  /**
@@ -1420,6 +1376,8 @@ export function getAutoWorktreePath(
1420
1376
  basePath: string,
1421
1377
  milestoneId: string,
1422
1378
  ): string | null {
1379
+ basePath = resolveWorktreeProjectRoot(basePath);
1380
+
1423
1381
  const p = worktreePath(basePath, milestoneId);
1424
1382
  if (!existsSync(p)) return null;
1425
1383
 
@@ -1448,6 +1406,8 @@ export function enterAutoWorktree(
1448
1406
  basePath: string,
1449
1407
  milestoneId: string,
1450
1408
  ): string {
1409
+ basePath = resolveWorktreeProjectRoot(basePath);
1410
+
1451
1411
  const p = worktreePath(basePath, milestoneId);
1452
1412
  if (!existsSync(p)) {
1453
1413
  throw new GSDError(
@@ -1484,7 +1444,7 @@ export function enterAutoWorktree(
1484
1444
 
1485
1445
  try {
1486
1446
  process.chdir(p);
1487
- originalBase = basePath;
1447
+ setActiveWorkspace(createWorkspace(basePath));
1488
1448
  } catch (err) {
1489
1449
  throw new GSDError(
1490
1450
  GSD_IO_ERROR,
@@ -1501,7 +1461,11 @@ export function enterAutoWorktree(
1501
1461
  * Returns null if not currently in an auto-worktree.
1502
1462
  */
1503
1463
  export function getAutoWorktreeOriginalBase(): string | null {
1504
- return originalBase;
1464
+ return getActiveWorkspace()?.projectRoot ?? null;
1465
+ }
1466
+
1467
+ export function _resetAutoWorktreeOriginalBaseForTests(): void {
1468
+ setActiveWorkspace(null);
1505
1469
  }
1506
1470
 
1507
1471
  export function getActiveAutoWorktreeContext(): {
@@ -1509,13 +1473,18 @@ export function getActiveAutoWorktreeContext(): {
1509
1473
  worktreeName: string;
1510
1474
  branch: string;
1511
1475
  } | null {
1512
- if (!originalBase) return null;
1476
+ const ws = getActiveWorkspace();
1477
+ if (!ws) return null;
1478
+ const originalBase = ws.projectRoot;
1513
1479
  const cwd = process.cwd();
1514
- const resolvedBase = existsSync(originalBase)
1515
- ? realpathSync(originalBase)
1516
- : originalBase;
1517
- const wtDir = join(resolvedBase, ".gsd", "worktrees");
1518
- if (!cwd.startsWith(wtDir)) return null;
1480
+ if (!isGsdWorktreePath(cwd)) return null;
1481
+ const cwdProjectRoot = resolveWorktreeProjectRoot(cwd, originalBase);
1482
+ if (
1483
+ normalizeWorktreePathForCompare(cwdProjectRoot) !==
1484
+ normalizeWorktreePathForCompare(originalBase)
1485
+ ) {
1486
+ return null;
1487
+ }
1519
1488
  const worktreeName = detectWorktreeName(cwd);
1520
1489
  if (!worktreeName) return null;
1521
1490
  const branch = nativeGetCurrentBranch(cwd);
@@ -1545,7 +1514,10 @@ function autoCommitDirtyState(cwd: string): boolean {
1545
1514
  return result !== null;
1546
1515
  } catch (e) {
1547
1516
  debugLog("autoCommitDirtyState", { error: String(e) });
1548
- return false;
1517
+ throw new GSDError(
1518
+ GSD_GIT_ERROR,
1519
+ `Failed to auto-commit dirty worktree state before milestone merge: ${e instanceof Error ? e.message : String(e)}`,
1520
+ );
1549
1521
  }
1550
1522
  }
1551
1523
 
@@ -1584,11 +1556,11 @@ export function mergeMilestoneToMain(
1584
1556
  // integration branch captures dirty files from OTHER milestones under a
1585
1557
  // misleading commit message, contaminating the main branch (#2929).
1586
1558
  //
1587
- // When originalBase is null (branch mode, no worktree), autoCommitDirtyState
1559
+ // When activeWorkspace is null (branch mode, no worktree), autoCommitDirtyState
1588
1560
  // runs unconditionally — the caller is responsible for cwd placement.
1589
1561
  {
1590
1562
  let shouldAutoCommit = true;
1591
- if (originalBase !== null) {
1563
+ if (getActiveWorkspace() !== null) {
1592
1564
  try {
1593
1565
  const currentBranch = nativeGetCurrentBranch(worktreeCwd);
1594
1566
  shouldAutoCommit = currentBranch === milestoneBranch;
@@ -1608,9 +1580,10 @@ export function mergeMilestoneToMain(
1608
1580
  // database (#2823).
1609
1581
  if (isDbAvailable()) {
1610
1582
  try {
1611
- const worktreeDbPath = join(worktreeCwd, ".gsd", "gsd.db");
1612
- const mainDbPath = join(originalBasePath_, ".gsd", "gsd.db");
1613
- if (!isSamePath(worktreeDbPath, mainDbPath)) {
1583
+ const contract = resolveGsdPathContract(worktreeCwd, originalBasePath_);
1584
+ const worktreeDbPath = join(contract.worktreeGsd ?? join(worktreeCwd, ".gsd"), "gsd.db");
1585
+ const mainDbPath = contract.projectDb;
1586
+ if (existsSync(worktreeDbPath) && !isSamePath(worktreeDbPath, mainDbPath)) {
1614
1587
  reconcileWorktreeDb(mainDbPath, worktreeDbPath);
1615
1588
  }
1616
1589
  } catch (err) {
@@ -1636,6 +1609,10 @@ export function mergeMilestoneToMain(
1636
1609
  }
1637
1610
 
1638
1611
  // 3. chdir to original base
1612
+ // Note: previousCwd captures the cwd at this point — i.e. the worktree cwd
1613
+ // entering the function. Subsequent throws restore to previousCwd, leaving
1614
+ // the caller in worktree-cwd; callers (worktree-resolver) are responsible
1615
+ // for any further cwd movement on the error path.
1639
1616
  const previousCwd = process.cwd();
1640
1617
  process.chdir(originalBasePath_);
1641
1618
 
@@ -1656,6 +1633,24 @@ export function mergeMilestoneToMain(
1656
1633
  const mainBranch =
1657
1634
  integrationBranch ?? validatedPrefBranch ?? nativeDetectMainBranch(originalBasePath_);
1658
1635
 
1636
+ // Fail closed when the resolved integration branch is the milestone branch
1637
+ // itself (#5024). Stale or corrupt metadata (e.g. integrationBranch recorded
1638
+ // as "milestone/<MID>") would otherwise let the squash merge resolve to a
1639
+ // self-merge: nothing-to-commit + empty self-diff in the post-merge safety
1640
+ // check (#1792) collapse to a false success, and the worktree-resolver
1641
+ // emits worktree-merged for work that never landed on a distinct
1642
+ // integration branch.
1643
+ if (normalizeLocalBranchRef(mainBranch) === milestoneBranch) {
1644
+ process.chdir(previousCwd);
1645
+ throw new GSDError(
1646
+ GSD_GIT_ERROR,
1647
+ `Resolved integration branch "${mainBranch}" is the same ref as milestone branch ` +
1648
+ `"${milestoneBranch}" — refusing to self-merge. Integration branch metadata is invalid; ` +
1649
+ `set a distinct main_branch in GSD preferences or repair the milestone integration record ` +
1650
+ `before retrying milestone completion.`,
1651
+ );
1652
+ }
1653
+
1659
1654
  // Remove transient project-root state files before any branch or merge
1660
1655
  // operation. Untracked milestone metadata can otherwise block squash merges.
1661
1656
  clearProjectRootStateFiles(originalBasePath_, milestoneId);
@@ -2190,7 +2185,7 @@ export function mergeMilestoneToMain(
2190
2185
 
2191
2186
  // 10. Auto-push if enabled
2192
2187
  let pushed = false;
2193
- if (prefs.auto_push === true && !nothingToCommit) {
2188
+ if (prefs.auto_push === true && prefs.auto_pr !== true && !nothingToCommit) {
2194
2189
  const remote = prefs.remote ?? "origin";
2195
2190
  try {
2196
2191
  execFileSync("git", ["push", remote, mainBranch], {
@@ -2241,9 +2236,10 @@ export function mergeMilestoneToMain(
2241
2236
  // through when the code is genuinely already on the integration branch.
2242
2237
 
2243
2238
  // 11a. Pre-teardown safety net (#1853): if the worktree still has uncommitted
2244
- // changes (e.g. nativeHasChanges cache returned stale false, or auto-commit
2245
- // silently failed), force one final commit so code is not destroyed by
2246
- // `git worktree remove --force`.
2239
+ // changes (e.g. nativeHasChanges cache returned stale false), abort teardown.
2240
+ // Committing here would be too late: the squash merge to the integration
2241
+ // branch already happened, so a new milestone-branch commit would not be
2242
+ // included and branch deletion could drop the only ref to that work.
2247
2243
  //
2248
2244
  // Guard: only run when worktreeCwd is on the milestone branch (#2929).
2249
2245
  // In parallel mode or branch-mode merges, worktreeCwd may be the project
@@ -2262,17 +2258,17 @@ export function mergeMilestoneToMain(
2262
2258
  try {
2263
2259
  const dirtyCheck = nativeWorkingTreeStatus(worktreeCwd);
2264
2260
  if (dirtyCheck) {
2265
- debugLog("mergeMilestoneToMain", {
2266
- phase: "pre-teardown-dirty",
2267
- worktreeCwd,
2268
- status: dirtyCheck.slice(0, 200),
2269
- });
2270
- nativeAddAllWithExclusions(worktreeCwd, RUNTIME_EXCLUSION_PATHS);
2271
- nativeCommit(worktreeCwd, "chore: pre-teardown auto-commit of uncommitted worktree changes");
2261
+ process.chdir(previousCwd);
2262
+ throw new GSDError(
2263
+ GSD_GIT_ERROR,
2264
+ `Milestone worktree still has uncommitted changes after squash merge. ` +
2265
+ `Aborting teardown to preserve ${milestoneBranch}. Status:\n${dirtyCheck}`,
2266
+ );
2272
2267
  }
2273
2268
  } catch (e) {
2269
+ if (e instanceof GSDError) throw e;
2274
2270
  debugLog("mergeMilestoneToMain", {
2275
- phase: "pre-teardown-commit-error",
2271
+ phase: "pre-teardown-dirty-check-error",
2276
2272
  error: String(e),
2277
2273
  });
2278
2274
  }
@@ -2299,8 +2295,23 @@ export function mergeMilestoneToMain(
2299
2295
  }
2300
2296
 
2301
2297
  // 14. Clear module state
2302
- originalBase = null;
2298
+ setActiveWorkspace(null);
2303
2299
  nudgeGitBranchCache(previousCwd);
2304
2300
 
2301
+ // 15. Anchor cwd at the project root on success-return. Step 12 removed
2302
+ // the worktree dir; if cwd was inside it, every subsequent process.cwd()
2303
+ // would throw ENOENT and trip auto/run-unit.ts:50's session-failed cancel
2304
+ // path (the de73fb43d regression that closes headless gsd auto). Step 3
2305
+ // already chdir'd here, but defending the success-return contract makes
2306
+ // future maintainers safe against intervening chdir's between step 3 and
2307
+ // here.
2308
+ try {
2309
+ // process.cwd() can throw ENOENT when cwd was removed, so attempt
2310
+ // recovery directly.
2311
+ process.chdir(originalBasePath_);
2312
+ } catch (err) {
2313
+ logWarning("worktree", `chdir to project root after merge failed: ${err instanceof Error ? err.message : String(err)}`);
2314
+ }
2315
+
2305
2316
  return { commitMessage, pushed, prCreated, codeFilesChanged };
2306
2317
  }