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
@@ -7,28 +7,35 @@
7
7
  */
8
8
  import { existsSync, cpSync, readFileSync, readdirSync, mkdirSync, realpathSync, rmSync, unlinkSync, statSync, lstatSync as lstatSyncFn, } from "node:fs";
9
9
  import { isAbsolute, join, sep as pathSep } from "node:path";
10
- import { homedir } from "node:os";
11
10
  import { GSDError, GSD_IO_ERROR, GSD_GIT_ERROR } from "./errors.js";
12
11
  import { reconcileWorktreeDb, isDbAvailable, getMilestone, getMilestoneSlices, closeDatabase, openDatabase, getDbPath, } from "./gsd-db.js";
13
- import { atomicWriteSync } from "./atomic-write.js";
14
12
  import { execFileSync } from "node:child_process";
15
13
  import { safeCopy, safeCopyRecursive } from "./safe-fs.js";
16
- import { gsdRoot } from "./paths.js";
14
+ import { gsdRoot, resolveGsdPathContract } from "./paths.js";
17
15
  import { createWorktree, removeWorktree, resolveGitDir, worktreePath, isInsideWorktreesDir, } from "./worktree-manager.js";
18
16
  import { detectWorktreeName, nudgeGitBranchCache, } from "./worktree.js";
17
+ import { isGsdWorktreePath, normalizeWorktreePathForCompare, resolveWorktreeProjectRoot, } from "./worktree-root.js";
19
18
  import { MergeConflictError, readIntegrationBranch, RUNTIME_EXCLUSION_PATHS } from "./git-service.js";
20
19
  import { debugLog } from "./debug-logger.js";
21
20
  import { logWarning, logError } from "./workflow-logger.js";
22
21
  import { loadEffectiveGSDPreferences } from "./preferences.js";
22
+ import { MILESTONE_ID_RE } from "./milestone-ids.js";
23
23
  import { nativeGetCurrentBranch, nativeDetectMainBranch, nativeWorkingTreeStatus, nativeAddAllWithExclusions, nativeCommit, nativeCheckoutBranch, nativeMergeSquash, nativeConflictFiles, nativeCheckoutTheirs, nativeAddPaths, nativeRmForce, nativeBranchDelete, nativeBranchForceReset, nativeBranchExists, nativeDiffNumstat, nativeUpdateRef, nativeIsAncestor, nativeMergeAbort, } from "./native-git-bridge.js";
24
- const gsdHome = process.env.GSD_HOME || join(homedir(), ".gsd");
24
+ import { gsdHome } from "./gsd-home.js";
25
+ import { createWorkspace } from "./workspace.js";
25
26
  const PROJECT_PREFERENCES_FILE = "PREFERENCES.md";
26
27
  const LEGACY_PROJECT_PREFERENCES_FILE = "preferences.md";
28
+ const LEGACY_DEEP_SETUP_RUNTIME_UNIT_FILES = new Set([
29
+ "workflow-preferences-WORKFLOW-PREFS.json",
30
+ "discuss-project-PROJECT.json",
31
+ "discuss-requirements-REQUIREMENTS.json",
32
+ "research-decision-RESEARCH-DECISION.json",
33
+ "research-project-RESEARCH-PROJECT.json",
34
+ ]);
27
35
  // ─── Shared Constants & Helpers ─────────────────────────────────────────────
28
36
  /**
29
- * Root-level .gsd/ state files synced between worktree and project root.
30
- * Single source of truth used by syncGsdStateToWorktree, syncWorktreeStateBack,
31
- * and the dispatch-level sync functions.
37
+ * Root-level .gsd/ projections copied from project root into worktrees for
38
+ * compatibility. Project root remains the canonical state/projection root.
32
39
  */
33
40
  const ROOT_STATE_FILES = [
34
41
  "DECISIONS.md",
@@ -45,6 +52,10 @@ const ROOT_STATE_FILES = [
45
52
  // Back-sync (worktree → main) must NEVER overwrite the project root's copy
46
53
  // because the project root is authoritative for preferences (#2684).
47
54
  ];
55
+ const ROOT_DIAGNOSTIC_FILES = [
56
+ "completed-units.json",
57
+ "metrics.json",
58
+ ];
48
59
  /**
49
60
  * Pop a stash entry by tracking the unique marker embedded in its message so
50
61
  * concurrent stash operations against the same project root cannot cause us to
@@ -129,7 +140,7 @@ const VERDICT_RE = /verdict:\s*[\w-]+/i;
129
140
  * destination when the source copy contains a `verdict:` field.
130
141
  *
131
142
  * This is the targeted fix for the UAT stuck-loop (#2821): the main
132
- * safeCopyRecursive uses force:false to protect worktree-authoritative
143
+ * safeCopyRecursive uses force:false to protect worktree-local projection
133
144
  * files (#1886), but ASSESSMENT files written by run-uat must be
134
145
  * forward-synced when the project root has a verdict. Without this,
135
146
  * the worktree retains a stale FAIL or missing ASSESSMENT and
@@ -184,13 +195,22 @@ function forceOverwriteAssessmentsWithVerdict(srcMilestoneDir, dstMilestoneDir)
184
195
  }
185
196
  }
186
197
  // ─── Module State ──────────────────────────────────────────────────────────
187
- /** Original project root before chdir into auto-worktree. */
188
- let originalBase = null;
198
+ /** Active workspace registry replaces the legacy `originalBase` singleton. */
199
+ let activeWorkspace = null;
200
+ function setActiveWorkspace(ws) {
201
+ activeWorkspace = ws;
202
+ }
203
+ function getActiveWorkspace() {
204
+ return activeWorkspace;
205
+ }
189
206
  function clearProjectRootStateFiles(basePath, milestoneId) {
190
207
  const gsdDir = gsdRoot(basePath);
208
+ // Phase C pt 2: auto.lock removed from this list — the file is gone
209
+ // (migrated to the workers + unit_dispatches + runtime_kv tables). The
210
+ // remaining transient files (STATE.md, {MID}-META.json) are still
211
+ // worth removing on teardown.
191
212
  const transientFiles = [
192
213
  join(gsdDir, "STATE.md"),
193
- join(gsdDir, "auto.lock"),
194
214
  join(gsdDir, "milestones", milestoneId, `${milestoneId}-META.json`),
195
215
  ];
196
216
  for (const file of transientFiles) {
@@ -204,9 +224,9 @@ function clearProjectRootStateFiles(basePath, milestoneId) {
204
224
  }
205
225
  }
206
226
  }
207
- // Clean up entire synced milestone directory and runtime/units.
208
- // syncStateToProjectRoot() copies these into the project root during
209
- // execution. If they remain as untracked files when we attempt
227
+ // Clean up legacy synced milestone directories and runtime/units.
228
+ // Older versions copied these into the project root during execution.
229
+ // If they remain as untracked files when we attempt
210
230
  // `git merge --squash`, git rejects the merge with "local changes would
211
231
  // be overwritten", causing silent data loss (#1738).
212
232
  const syncedDirs = [
@@ -264,13 +284,41 @@ export const isSafeToAutoResolve = (filePath) => filePath.startsWith(".gsd/") ||
264
284
  * gsd.db in the worktree so it rebuilds from fresh disk state (#853).
265
285
  * Non-fatal — sync failure should never block dispatch.
266
286
  */
287
+ /**
288
+ * Scope-typed variant of syncProjectRootToWorktree.
289
+ *
290
+ * Takes an explicit (rootScope, worktreeScope) pair where rootScope is the
291
+ * project root and worktreeScope is the auto-worktree. Direction is encoded
292
+ * in argument order. Asserts both scopes belong to the same workspace identity
293
+ * to prevent silent mismatch bugs.
294
+ */
295
+ export function syncProjectRootToWorktreeByScope(rootScope, worktreeScope) {
296
+ if (rootScope.workspace.identityKey !== worktreeScope.workspace.identityKey) {
297
+ throw new Error(`syncProjectRootToWorktreeByScope: scope identity mismatch — ` +
298
+ `rootScope.identityKey="${rootScope.workspace.identityKey}" ` +
299
+ `worktreeScope.identityKey="${worktreeScope.workspace.identityKey}"`);
300
+ }
301
+ if (rootScope.milestoneId !== worktreeScope.milestoneId) {
302
+ throw new Error(`syncProjectRootToWorktreeByScope: milestoneId mismatch — ` +
303
+ `rootScope.milestoneId="${rootScope.milestoneId}" worktreeScope.milestoneId="${worktreeScope.milestoneId}"`);
304
+ }
305
+ const projectRoot = rootScope.workspace.projectRoot;
306
+ const worktreePath_ = worktreeScope.workspace.worktreeRoot ?? worktreeScope.workspace.projectRoot;
307
+ const milestoneId = rootScope.milestoneId;
308
+ syncProjectRootToWorktree(projectRoot, worktreePath_, milestoneId);
309
+ }
310
+ /**
311
+ * @deprecated Use syncProjectRootToWorktreeByScope instead.
312
+ * TODO(C-future): remove once all callers migrated.
313
+ */
267
314
  export function syncProjectRootToWorktree(projectRoot, worktreePath_, milestoneId) {
268
315
  if (!worktreePath_ || !projectRoot || worktreePath_ === projectRoot)
269
316
  return;
270
317
  if (!milestoneId)
271
318
  return;
272
- const prGsd = join(projectRoot, ".gsd");
273
- const wtGsd = join(worktreePath_, ".gsd");
319
+ const contract = resolveGsdPathContract(worktreePath_, projectRoot);
320
+ const prGsd = contract.projectGsd;
321
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath_, ".gsd");
274
322
  // When .gsd is a symlink to the same external directory in both locations,
275
323
  // cpSync rejects the copy because source === destination (ERR_FS_CP_EINVAL).
276
324
  // Compare realpaths and skip when they resolve to the same physical path (#2184).
@@ -278,12 +326,12 @@ export function syncProjectRootToWorktree(projectRoot, worktreePath_, milestoneI
278
326
  return;
279
327
  // Copy milestone directory from project root to worktree — additive only.
280
328
  // force:false prevents cpSync from overwriting existing worktree files.
281
- // Without this, worktree-authoritative files (e.g. VALIDATION.md written
329
+ // Without this, worktree-local files (e.g. VALIDATION.md written
282
330
  // by validate-milestone) get clobbered by stale project root copies,
283
331
  // causing an infinite re-validation loop (#1886).
284
332
  safeCopyRecursive(join(prGsd, "milestones", milestoneId), join(wtGsd, "milestones", milestoneId), { force: false });
285
333
  // Force-sync ASSESSMENT files that have a verdict from project root (#2821).
286
- // The additive-only copy above preserves worktree-authoritative files, but
334
+ // The additive-only copy above preserves worktree-local files, but
287
335
  // ASSESSMENT files are special: after run-uat writes a verdict and post-unit
288
336
  // syncs it to the project root, the worktree may retain a stale copy (e.g.
289
337
  // verdict:fail while the project root has verdict:pass from a retry). On
@@ -295,11 +343,9 @@ export function syncProjectRootToWorktree(projectRoot, worktreePath_, milestoneI
295
343
  // Project root is authoritative for completion state after crash recovery;
296
344
  // without this, the worktree re-dispatches already-completed units (#1886).
297
345
  safeCopy(join(prGsd, "completed-units.json"), join(wtGsd, "completed-units.json"), { force: true });
298
- // Delete worktree gsd.db ONLY if it is empty (0 bytes).
299
- // An empty DB is stale/corrupt and should be rebuilt (#853).
300
- // A non-empty DB was populated by gsd-migrate on respawn and must be
301
- // preserved — deleting it truncates the file to 0 bytes when
302
- // openDatabase re-creates it, causing "no such table" failures (#2815).
346
+ // Delete a legacy worktree-local gsd.db ONLY if it is empty (0 bytes).
347
+ // Runtime opens contract.projectDb; this cleanup only removes corrupt
348
+ // pre-upgrade local DB projections.
303
349
  try {
304
350
  const wtDb = join(wtGsd, "gsd.db");
305
351
  let deleteSidecars = false;
@@ -334,33 +380,57 @@ export function syncProjectRootToWorktree(projectRoot, worktreePath_, milestoneI
334
380
  }
335
381
  }
336
382
  /**
337
- * Sync dispatch-critical .gsd/ state files from worktree to project root.
383
+ * Scope-typed variant of syncStateToProjectRoot.
384
+ *
385
+ * Takes an explicit (worktreeScope, rootScope) pair. Direction is encoded in
386
+ * argument order (worktree → root). Asserts both scopes belong to the same
387
+ * workspace identity to prevent silent mismatch bugs.
388
+ */
389
+ export function syncStateToProjectRootByScope(worktreeScope, rootScope) {
390
+ if (worktreeScope.workspace.identityKey !== rootScope.workspace.identityKey) {
391
+ throw new Error(`syncStateToProjectRootByScope: scope identity mismatch — ` +
392
+ `worktreeScope.identityKey="${worktreeScope.workspace.identityKey}" ` +
393
+ `rootScope.identityKey="${rootScope.workspace.identityKey}"`);
394
+ }
395
+ if (worktreeScope.milestoneId !== rootScope.milestoneId) {
396
+ throw new Error(`syncStateToProjectRootByScope: milestoneId mismatch — ` +
397
+ `worktreeScope.milestoneId="${worktreeScope.milestoneId}" rootScope.milestoneId="${rootScope.milestoneId}"`);
398
+ }
399
+ const worktreePath_ = worktreeScope.workspace.worktreeRoot ?? worktreeScope.workspace.projectRoot;
400
+ const projectRoot = rootScope.workspace.projectRoot;
401
+ const milestoneId = worktreeScope.milestoneId;
402
+ syncStateToProjectRoot(worktreePath_, projectRoot, milestoneId);
403
+ }
404
+ /**
405
+ * Sync worktree diagnostics from worktree to project root.
338
406
  * Only runs when inside an auto-worktree (worktreePath differs from projectRoot).
339
- * Copies: STATE.md + active milestone directory (roadmap, slice plans, task summaries).
407
+ * DB/project-root state remains authoritative; markdown projections are not
408
+ * copied from the worktree back to the project root.
340
409
  * Non-fatal — sync failure should never block dispatch.
410
+ * @deprecated Use syncStateToProjectRootByScope instead.
411
+ * TODO(C-future): remove once all callers migrated.
341
412
  */
342
413
  export function syncStateToProjectRoot(worktreePath_, projectRoot, milestoneId) {
343
414
  if (!worktreePath_ || !projectRoot || worktreePath_ === projectRoot)
344
415
  return;
345
416
  if (!milestoneId)
346
417
  return;
347
- const wtGsd = join(worktreePath_, ".gsd");
348
- const prGsd = join(projectRoot, ".gsd");
418
+ const contract = resolveGsdPathContract(worktreePath_, projectRoot);
419
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath_, ".gsd");
420
+ const prGsd = contract.projectGsd;
349
421
  // When .gsd is a symlink to the same external directory in both locations,
350
422
  // cpSync rejects the copy because source === destination (ERR_FS_CP_EINVAL).
351
423
  // Compare realpaths and skip when they resolve to the same physical path (#2184).
352
424
  if (isSamePath(wtGsd, prGsd))
353
425
  return;
354
- // 1. STATE.md the quick-glance status used by initial deriveState()
355
- safeCopy(join(wtGsd, "STATE.md"), join(prGsd, "STATE.md"), { force: true });
356
- // 2. Milestone directory — ROADMAP, slice PLANs, task summaries
357
- // Copy the entire milestone .gsd subtree so deriveState reads current checkboxes
358
- safeCopyRecursive(join(wtGsd, "milestones", milestoneId), join(prGsd, "milestones", milestoneId), { force: true });
359
- // 3. metrics.json — session cost/token tracking (#2313).
426
+ // metrics.jsonsession cost/token tracking (#2313).
360
427
  // Without this, metrics accumulated in the worktree are invisible from the
361
428
  // project root and never appear in the dashboard or skill-health reports.
362
429
  safeCopy(join(wtGsd, "metrics.json"), join(prGsd, "metrics.json"), { force: true });
363
- // 4. Runtime records unit dispatch state used by selfHealRuntimeRecords().
430
+ // completed-units.jsonruntime completion diagnostics used to avoid
431
+ // re-dispatching work already completed in an isolated worktree.
432
+ safeCopy(join(wtGsd, "completed-units.json"), join(prGsd, "completed-units.json"), { force: true });
433
+ // Runtime records — unit dispatch diagnostics used by selfHealRuntimeRecords().
364
434
  // Without this, a crash during a unit leaves the runtime record only in the
365
435
  // worktree. If the next session resolves basePath before worktree re-entry,
366
436
  // selfHeal can't find or clear the stale record (#769).
@@ -373,7 +443,7 @@ export function syncStateToProjectRoot(worktreePath_, projectRoot, milestoneId)
373
443
  * doesn't falsely trigger staleness (#804).
374
444
  */
375
445
  export function readResourceVersion() {
376
- const agentDir = process.env.GSD_CODING_AGENT_DIR || join(gsdHome, "agent");
446
+ const agentDir = process.env.GSD_CODING_AGENT_DIR || join(gsdHome(), "agent");
377
447
  const manifestPath = join(agentDir, "managed-resources.json");
378
448
  try {
379
449
  const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
@@ -431,9 +501,9 @@ export function escapeStaleWorktree(base) {
431
501
  // the string-slice heuristic matched the wrong /.gsd/ boundary. This happens
432
502
  // when .gsd is a symlink into ~/.gsd/projects/<hash> and process.cwd()
433
503
  // resolved through the symlink. Returning ~ would be catastrophic (#1676).
434
- const candidateGsd = join(projectRoot, ".gsd").replaceAll("\\", "/");
435
- const gsdHomePath = gsdHome.replaceAll("\\", "/");
436
- if (candidateGsd === gsdHomePath || candidateGsd.startsWith(gsdHomePath + "/")) {
504
+ const candidateGsd = normalizeWorktreePathForCompare(join(projectRoot, ".gsd"));
505
+ const gsdHomeNorm = normalizeWorktreePathForCompare(gsdHome());
506
+ if (candidateGsd === gsdHomeNorm || candidateGsd.startsWith(gsdHomeNorm + "/")) {
437
507
  // Don't chdir to home — return base unchanged.
438
508
  // resolveProjectRoot() in worktree.ts has the full git-file-based recovery
439
509
  // and will be called by the caller (startAuto → projectRoot()).
@@ -465,6 +535,29 @@ export function cleanStaleRuntimeUnits(gsdRootPath, hasMilestoneSummary) {
465
535
  for (const file of readdirSync(runtimeUnitsDir)) {
466
536
  if (!file.endsWith(".json"))
467
537
  continue;
538
+ if (LEGACY_DEEP_SETUP_RUNTIME_UNIT_FILES.has(file)) {
539
+ try {
540
+ unlinkSync(join(runtimeUnitsDir, file));
541
+ cleaned++;
542
+ }
543
+ catch (err) {
544
+ /* non-fatal */
545
+ logWarning("worktree", `stale runtime unit unlink failed (${file}): ${err instanceof Error ? err.message : String(err)}`);
546
+ }
547
+ continue;
548
+ }
549
+ const staleDiscussMatch = file.match(/^discuss-milestone-(.+)\.json$/);
550
+ if (staleDiscussMatch && !MILESTONE_ID_RE.test(staleDiscussMatch[1])) {
551
+ try {
552
+ unlinkSync(join(runtimeUnitsDir, file));
553
+ cleaned++;
554
+ }
555
+ catch (err) {
556
+ /* non-fatal */
557
+ logWarning("worktree", `stale runtime unit unlink failed (${file}): ${err instanceof Error ? err.message : String(err)}`);
558
+ }
559
+ continue;
560
+ }
468
561
  const midMatch = file.match(/(M\d+(?:-[a-z0-9]{6})?)/);
469
562
  if (!midMatch)
470
563
  continue;
@@ -487,6 +580,24 @@ export function cleanStaleRuntimeUnits(gsdRootPath, hasMilestoneSummary) {
487
580
  return cleaned;
488
581
  }
489
582
  // ─── Worktree ↔ Main Repo Sync (#1311) ──────────────────────────────────────
583
+ /**
584
+ * Scope-typed variant of syncGsdStateToWorktree.
585
+ *
586
+ * Takes an explicit (rootScope, worktreeScope) pair. Note: milestoneId is not
587
+ * used by syncGsdStateToWorktree — this variant only requires workspace
588
+ * identity. Asserts both scopes belong to the same workspace identity to
589
+ * prevent silent mismatch bugs.
590
+ */
591
+ export function syncGsdStateToWorktreeByScope(rootScope, worktreeScope) {
592
+ if (rootScope.workspace.identityKey !== worktreeScope.workspace.identityKey) {
593
+ throw new Error(`syncGsdStateToWorktreeByScope: scope identity mismatch — ` +
594
+ `rootScope.identityKey="${rootScope.workspace.identityKey}" ` +
595
+ `worktreeScope.identityKey="${worktreeScope.workspace.identityKey}"`);
596
+ }
597
+ const mainBasePath = rootScope.workspace.projectRoot;
598
+ const worktreePath_ = worktreeScope.workspace.worktreeRoot ?? worktreeScope.workspace.projectRoot;
599
+ return syncGsdStateToWorktree(mainBasePath, worktreePath_);
600
+ }
490
601
  /**
491
602
  * Sync .gsd/ state from the main repo into the worktree.
492
603
  *
@@ -498,12 +609,16 @@ export function cleanStaleRuntimeUnits(gsdRootPath, hasMilestoneSummary) {
498
609
  * missing milestones, CONTEXT, ROADMAP, DECISIONS, REQUIREMENTS, and
499
610
  * PROJECT files from the main repo's .gsd/ into the worktree's .gsd/.
500
611
  *
501
- * Only adds missing content — never overwrites existing files in the worktree
502
- * (the worktree's execution state is authoritative for in-progress work).
612
+ * Only adds missing content — never overwrites existing files in the worktree.
613
+ * Worktree files are compatibility projections; DB/project root remains
614
+ * authoritative for runtime state.
615
+ * @deprecated Use syncGsdStateToWorktreeByScope instead.
616
+ * TODO(C-future): remove once all callers migrated.
503
617
  */
504
618
  export function syncGsdStateToWorktree(mainBasePath, worktreePath_) {
505
- const mainGsd = gsdRoot(mainBasePath);
506
- const wtGsd = gsdRoot(worktreePath_);
619
+ const contract = resolveGsdPathContract(worktreePath_, mainBasePath);
620
+ const mainGsd = contract.projectGsd;
621
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath_, ".gsd");
507
622
  const synced = [];
508
623
  // If both resolve to the same directory (symlink), no sync needed
509
624
  if (isSamePath(mainGsd, wtGsd))
@@ -647,28 +762,22 @@ export function syncGsdStateToWorktree(mainBasePath, worktreePath_) {
647
762
  return { synced };
648
763
  }
649
764
  /**
650
- * Sync milestone artifacts from worktree back to the main external state directory.
651
- * Called before milestone merge to ensure completion artifacts (SUMMARY, VALIDATION,
652
- * updated ROADMAP) are visible from the project root (#1412).
765
+ * Sync compatibility artifacts from worktree back to the main external state
766
+ * directory. Canonical workflow state lives in the project DB; worktree .gsd
767
+ * content is legacy projection/diagnostic data only.
653
768
  *
654
769
  * Syncs:
655
- * 1. Root-level .gsd/ files (REQUIREMENTS, PROJECT, DECISIONS, KNOWLEDGE,
656
- * OVERRIDES) the worktree's versions overwrite main's because the
657
- * worktree is the authoritative execution context.
658
- * 2. ALL milestone directories found in the worktree — not just the
659
- * current milestoneId. The complete-milestone unit may create artifacts
660
- * for the *next* milestone (CONTEXT, ROADMAP, new requirements) which
661
- * must survive worktree teardown.
770
+ * 1. Legacy worktree DBs are reconciled into the canonical project DB.
771
+ * 2. Runtime diagnostic files may be copied for operator visibility.
662
772
  *
663
- * History: Originally only synced milestones/<milestoneId>/ and assumed
664
- * root-level files would be carried by the squash merge. In practice,
665
- * .gsd/ files are often untracked (gitignored or never committed), so the
666
- * squash merge carries nothing. This caused next-milestone artifacts and
667
- * updated REQUIREMENTS/PROJECT to be silently lost on teardown.
773
+ * Markdown milestone directories are projections and are not copied from
774
+ * worktrees into the project root. Current workflow state must arrive through
775
+ * the shared project DB or the pre-upgrade DB reconciliation path above.
668
776
  */
669
777
  export function syncWorktreeStateBack(mainBasePath, worktreePath, milestoneId) {
670
- const mainGsd = gsdRoot(mainBasePath);
671
- const wtGsd = gsdRoot(worktreePath);
778
+ const contract = resolveGsdPathContract(worktreePath, mainBasePath);
779
+ const mainGsd = contract.projectGsd;
780
+ const wtGsd = contract.worktreeGsd ?? join(worktreePath, ".gsd");
672
781
  const synced = [];
673
782
  // If both resolve to the same directory (symlink), no sync needed
674
783
  if (isSamePath(mainGsd, wtGsd))
@@ -681,7 +790,7 @@ export function syncWorktreeStateBack(mainBasePath, worktreePath, milestoneId) {
681
790
  // files. This handles in-flight worktrees that were created before the
682
791
  // upgrade to shared WAL mode.
683
792
  const wtLocalDb = join(wtGsd, "gsd.db");
684
- const mainDb = join(mainGsd, "gsd.db");
793
+ const mainDb = contract.projectDb;
685
794
  if (existsSync(wtLocalDb) && existsSync(mainDb)) {
686
795
  try {
687
796
  reconcileWorktreeDb(mainDb, wtLocalDb);
@@ -692,13 +801,10 @@ export function syncWorktreeStateBack(mainBasePath, worktreePath, milestoneId) {
692
801
  logError("worktree", `DB reconciliation failed: ${err instanceof Error ? err.message : String(err)}`);
693
802
  }
694
803
  }
695
- // ── 1. Sync root-level .gsd/ files back ──────────────────────────────
696
- // The worktree is authoritative — complete-milestone updates REQUIREMENTS,
697
- // PROJECT, etc. These must overwrite main's copies so they survive teardown.
698
- // Also includes QUEUE.md, completed-units.json, and metrics.json which are
699
- // written during milestone closeout and lost on teardown without explicit sync
700
- // (#1787, #2313).
701
- for (const f of ROOT_STATE_FILES) {
804
+ // ── 1. Sync root-level diagnostic files back ─────────────────────────
805
+ // Markdown/JSON state projections remain project-root/DB authoritative.
806
+ // These diagnostic files are copied for observability only.
807
+ for (const f of ROOT_DIAGNOSTIC_FILES) {
702
808
  const src = join(wtGsd, f);
703
809
  const dst = join(mainGsd, f);
704
810
  if (existsSync(src)) {
@@ -712,92 +818,8 @@ export function syncWorktreeStateBack(mainBasePath, worktreePath, milestoneId) {
712
818
  }
713
819
  }
714
820
  }
715
- // ── 2. Sync ALL milestone directories ────────────────────────────────
716
- // The complete-milestone unit may create next-milestone artifacts (e.g.
717
- // M007 setup while closing M006). We must sync every milestone directory
718
- // in the worktree, not just the current one.
719
- const wtMilestonesDir = join(wtGsd, "milestones");
720
- if (!existsSync(wtMilestonesDir))
721
- return { synced };
722
- try {
723
- const wtMilestones = readdirSync(wtMilestonesDir, { withFileTypes: true })
724
- .filter((d) => d.isDirectory())
725
- .map((d) => d.name);
726
- for (const mid of wtMilestones) {
727
- // Skip the current milestone being merged — its files are already in the
728
- // milestone branch and would conflict with the squash merge (#3641).
729
- if (mid === milestoneId)
730
- continue;
731
- syncMilestoneDir(wtGsd, mainGsd, mid, synced);
732
- }
733
- }
734
- catch (err) {
735
- /* non-fatal */
736
- logWarning("worktree", `milestone sync-back failed: ${err instanceof Error ? err.message : String(err)}`);
737
- }
738
821
  return { synced };
739
822
  }
740
- /**
741
- * Sync a single milestone directory from worktree to main.
742
- * Copies milestone-level .md files, slice-level files, and task summaries.
743
- */
744
- /** Copy matching files from srcDir to dstDir (non-fatal per file). */
745
- function syncDirFiles(srcDir, dstDir, filter, synced, prefix) {
746
- try {
747
- for (const entry of readdirSync(srcDir, { withFileTypes: true })) {
748
- if (!entry.isFile() || !filter(entry.name))
749
- continue;
750
- try {
751
- cpSync(join(srcDir, entry.name), join(dstDir, entry.name), { force: true });
752
- synced.push(`${prefix}${entry.name}`);
753
- }
754
- catch (err) {
755
- /* non-fatal */
756
- logWarning("worktree", `file copy failed (${prefix}${entry.name}): ${err instanceof Error ? err.message : String(err)}`);
757
- }
758
- }
759
- }
760
- catch (err) {
761
- /* non-fatal — srcDir may not be readable */
762
- logWarning("worktree", `directory read failed: ${err instanceof Error ? err.message : String(err)}`);
763
- }
764
- }
765
- function syncMilestoneDir(wtGsd, mainGsd, mid, synced) {
766
- const wtMilestoneDir = join(wtGsd, "milestones", mid);
767
- const mainMilestoneDir = join(mainGsd, "milestones", mid);
768
- if (!existsSync(wtMilestoneDir))
769
- return;
770
- mkdirSync(mainMilestoneDir, { recursive: true });
771
- const isMd = (name) => name.endsWith(".md");
772
- // Sync milestone-level files (SUMMARY, VALIDATION, ROADMAP, CONTEXT)
773
- syncDirFiles(wtMilestoneDir, mainMilestoneDir, isMd, synced, `milestones/${mid}/`);
774
- // Sync slice-level files (summaries, UATs) and task summaries (#1678)
775
- const wtSlicesDir = join(wtMilestoneDir, "slices");
776
- const mainSlicesDir = join(mainMilestoneDir, "slices");
777
- if (!existsSync(wtSlicesDir))
778
- return;
779
- try {
780
- for (const sliceEntry of readdirSync(wtSlicesDir, { withFileTypes: true })) {
781
- if (!sliceEntry.isDirectory())
782
- continue;
783
- const sid = sliceEntry.name;
784
- const wtSliceDir = join(wtSlicesDir, sid);
785
- const mainSliceDir = join(mainSlicesDir, sid);
786
- mkdirSync(mainSliceDir, { recursive: true });
787
- syncDirFiles(wtSliceDir, mainSliceDir, isMd, synced, `milestones/${mid}/slices/${sid}/`);
788
- const wtTasksDir = join(wtSliceDir, "tasks");
789
- const mainTasksDir = join(mainSliceDir, "tasks");
790
- if (existsSync(wtTasksDir)) {
791
- mkdirSync(mainTasksDir, { recursive: true });
792
- syncDirFiles(wtTasksDir, mainTasksDir, isMd, synced, `milestones/${mid}/slices/${sid}/tasks/`);
793
- }
794
- }
795
- }
796
- catch (err) {
797
- /* non-fatal */
798
- logWarning("worktree", `milestone slice sync failed (${mid}): ${err instanceof Error ? err.message : String(err)}`);
799
- }
800
- }
801
823
  // ─── Worktree Post-Create Hook (#597) ────────────────────────────────────────
802
824
  /**
803
825
  * Run the user-configured post-create hook script after worktree creation.
@@ -857,6 +879,11 @@ export function runWorktreePostCreateHook(sourceDir, worktreeDir, hookPath) {
857
879
  export function autoWorktreeBranch(milestoneId) {
858
880
  return `milestone/${milestoneId}`;
859
881
  }
882
+ function normalizeLocalBranchRef(branch) {
883
+ return branch.startsWith("refs/heads/")
884
+ ? branch.slice("refs/heads/".length)
885
+ : branch;
886
+ }
860
887
  // ─── Branch-mode Entry ─────────────────────────────────────────────────────
861
888
  /**
862
889
  * Enter branch isolation mode for a milestone.
@@ -943,96 +970,22 @@ export function enterBranchModeForMilestone(basePath, milestoneId) {
943
970
  * Forward-merge plan checkbox state from the project root into a freshly
944
971
  * re-attached worktree (#778).
945
972
  *
946
- * When auto-mode stops via crash (not graceful stop), the milestone branch
947
- * HEAD may be behind the filesystem state at the project root because
948
- * syncStateToProjectRoot() runs after every task completion but the final
949
- * git commit may not have happened before the crash. On restart the worktree
950
- * is re-attached to the branch HEAD, which has [ ] for the crashed task,
951
- * causing verifyExpectedArtifact() to fail and triggering an infinite
952
- * dispatch/skip loop.
953
- *
954
- * Fix: after re-attaching, read every *.md plan file in the milestone
955
- * directory at the project root and apply any [x] checkbox states that are
956
- * ahead of the worktree version (forward-only: never downgrade [x] → [ ]).
957
- *
958
- * This is safe because syncStateToProjectRoot() is the authoritative source
959
- * of post-task state at the project root — it writes the same [x] the LLM
960
- * produced, then the auto-commit follows. If the commit never happened, the
961
- * filesystem copy is still valid and correct.
973
+ * Phase C: deleted. Writers in workflow-projections.ts, triage-resolution.ts,
974
+ * rule-registry.ts, and auto-post-unit.ts now route through
975
+ * s.canonicalProjectRoot, so non-symlinked worktrees no longer need a local
976
+ * .gsd/ projection the project-root .gsd/ is the only authoritative source
977
+ * for both reads and writes. copyPlanningArtifacts and reconcilePlanCheckboxes
978
+ * (both formerly here) became dead.
962
979
  */
963
- function reconcilePlanCheckboxes(projectRoot, wtPath, milestoneId) {
964
- const srcMilestone = join(projectRoot, ".gsd", "milestones", milestoneId);
965
- const dstMilestone = join(wtPath, ".gsd", "milestones", milestoneId);
966
- if (!existsSync(srcMilestone) || !existsSync(dstMilestone))
967
- return;
968
- // Walk all markdown files in the milestone directory (plans, summaries, etc.)
969
- function walkMd(dir) {
970
- const results = [];
971
- try {
972
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
973
- const full = join(dir, entry.name);
974
- if (entry.isDirectory()) {
975
- results.push(...walkMd(full));
976
- }
977
- else if (entry.isFile() && entry.name.endsWith(".md")) {
978
- results.push(full);
979
- }
980
- }
981
- }
982
- catch (err) {
983
- /* non-fatal */
984
- logWarning("worktree", `walkMd directory read failed: ${err instanceof Error ? err.message : String(err)}`);
985
- }
986
- return results;
987
- }
988
- for (const srcFile of walkMd(srcMilestone)) {
989
- const rel = srcFile.slice(srcMilestone.length);
990
- const dstFile = dstMilestone + rel;
991
- if (!existsSync(dstFile))
992
- continue; // only reconcile existing files
993
- let srcContent;
994
- let dstContent;
995
- try {
996
- srcContent = readFileSync(srcFile, "utf-8");
997
- dstContent = readFileSync(dstFile, "utf-8");
998
- }
999
- catch (e) {
1000
- logWarning("worktree", `reconcilePlanCheckboxes read failed: ${e.message}`);
1001
- continue;
1002
- }
1003
- if (srcContent === dstContent)
1004
- continue;
1005
- // Extract all checked task IDs from the source (project root)
1006
- // Pattern: - [x] **T<id>: or - [x] **S<id>: (case-insensitive x)
1007
- const checkedRe = /^- \[[xX]\] \*\*([TS]\d+):/gm;
1008
- const srcChecked = new Set();
1009
- for (const m of srcContent.matchAll(checkedRe))
1010
- srcChecked.add(m[1]);
1011
- if (srcChecked.size === 0)
1012
- continue;
1013
- // Forward-apply: replace [ ] → [x] for any IDs that are checked in src
1014
- let updated = dstContent;
1015
- let changed = false;
1016
- for (const id of srcChecked) {
1017
- const escapedId = id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1018
- const uncheckedRe = new RegExp(`^(- )\\[ \\]( \\*\\*${escapedId}:)`, "gm");
1019
- if (uncheckedRe.test(updated)) {
1020
- updated = updated.replace(new RegExp(`^(- )\\[ \\]( \\*\\*${escapedId}:)`, "gm"), "$1[x]$2");
1021
- changed = true;
1022
- }
1023
- }
1024
- if (changed) {
1025
- try {
1026
- atomicWriteSync(dstFile, updated, "utf-8");
1027
- }
1028
- catch (err) {
1029
- /* non-fatal */
1030
- logWarning("worktree", `plan checkbox reconcile write failed: ${err instanceof Error ? err.message : String(err)}`);
1031
- }
1032
- }
1033
- }
1034
- }
1035
980
  export function createAutoWorktree(basePath, milestoneId) {
981
+ basePath = resolveWorktreeProjectRoot(basePath);
982
+ // Check if repo has commits — git worktree requires a valid HEAD
983
+ try {
984
+ execFileSync("git", ["rev-parse", "--verify", "HEAD"], { cwd: basePath, stdio: "pipe" });
985
+ }
986
+ catch {
987
+ throw new GSDError(GSD_GIT_ERROR, `Cannot create worktree: repository has no commits yet. Worktree isolation requires at least one commit.`);
988
+ }
1036
989
  const branch = autoWorktreeBranch(milestoneId);
1037
990
  // Check if the milestone branch already exists — it survives auto-mode
1038
991
  // stop/pause and contains committed work from prior sessions. If it exists,
@@ -1057,39 +1010,27 @@ export function createAutoWorktree(basePath, milestoneId) {
1057
1010
  // would fork worktrees from the wrong (stale) branch.
1058
1011
  const integrationBranch = readIntegrationBranch(basePath, milestoneId) ?? undefined;
1059
1012
  const gitPrefs = loadEffectiveGSDPreferences()?.preferences?.git;
1060
- const startPoint = integrationBranch ?? gitPrefs?.main_branch ?? undefined;
1013
+ const validatedPrefBranch = gitPrefs?.main_branch &&
1014
+ typeof gitPrefs.main_branch === "string" &&
1015
+ gitPrefs.main_branch.length > 0 &&
1016
+ nativeBranchExists(basePath, gitPrefs.main_branch)
1017
+ ? gitPrefs.main_branch
1018
+ : undefined;
1019
+ const startPoint = integrationBranch ?? validatedPrefBranch ?? undefined;
1061
1020
  info = createWorktree(basePath, milestoneId, {
1062
1021
  branch,
1063
1022
  startPoint,
1064
1023
  });
1065
1024
  }
1066
- // Copy .gsd/ planning artifacts from the source repo into the new worktree.
1067
- // Worktrees are fresh git checkouts untracked files don't carry over.
1068
- // Planning artifacts may be untracked if the project's .gitignore had a
1069
- // blanket .gsd/ rule (pre-v2.14.0). Without this copy, auto-mode loops
1070
- // on plan-slice because the plan file doesn't exist in the worktree.
1071
- //
1072
- // IMPORTANT: Skip when re-attaching to an existing branch (#759).
1073
- // The branch checkout already has committed artifacts with correct state
1074
- // (e.g. [x] for completed slices). Copying from the project root would
1075
- // overwrite them with stale data ([ ] checkboxes) because the root is
1076
- // not always fully synced.
1077
- if (!branchExists) {
1078
- copyPlanningArtifacts(basePath, info.path);
1079
- }
1080
- else {
1081
- // Re-attaching to an existing branch: forward-merge any plan checkpoint
1082
- // state from the project root into the worktree (#778).
1083
- //
1084
- // If auto-mode stopped via crash, the milestone branch HEAD may lag behind
1085
- // the project root filesystem because syncStateToProjectRoot() ran after
1086
- // task completion but the auto-commit never fired. On restart the worktree
1087
- // is re-created from the branch HEAD (which has [ ] for the crashed task),
1088
- // causing verifyExpectedArtifact() to return false → stale-key eviction →
1089
- // infinite dispatch/skip loop. Reconciling here ensures the worktree sees
1090
- // the same [x] state that syncStateToProjectRoot() wrote to the root.
1091
- reconcilePlanCheckboxes(basePath, info.path, milestoneId);
1092
- }
1025
+ // Phase C: copyPlanningArtifacts and reconcilePlanCheckboxes were
1026
+ // deleted. Both addressed the same problem (worktree-local .gsd/
1027
+ // projection lagging behind project-root state) by maintaining a stale
1028
+ // copy. Now that auto-mode writers in workflow-projections.ts,
1029
+ // triage-resolution.ts, rule-registry.ts, and auto-post-unit.ts route
1030
+ // through s.canonicalProjectRoot, the worktree never needs a local
1031
+ // .gsd/ both reads and writes converge on the project-root .gsd/.
1032
+ // The original concerns (#759, #778) no longer apply because there is
1033
+ // no second copy to drift.
1093
1034
  // Run user-configured post-create hook (#597) — e.g. copy .env, symlink assets
1094
1035
  const hookError = runWorktreePostCreateHook(basePath, info.path);
1095
1036
  if (hookError) {
@@ -1099,119 +1040,129 @@ export function createAutoWorktree(basePath, milestoneId) {
1099
1040
  const previousCwd = process.cwd();
1100
1041
  try {
1101
1042
  process.chdir(info.path);
1102
- originalBase = basePath;
1043
+ setActiveWorkspace(createWorkspace(basePath));
1103
1044
  }
1104
1045
  catch (err) {
1105
1046
  // If chdir fails, the worktree was created but we couldn't enter it.
1106
- // Don't store originalBase -- caller can retry or clean up.
1047
+ // Don't set activeWorkspace -- caller can retry or clean up.
1107
1048
  throw new GSDError(GSD_IO_ERROR, `Auto-worktree created at ${info.path} but chdir failed: ${err instanceof Error ? err.message : String(err)}`);
1108
1049
  }
1109
1050
  nudgeGitBranchCache(previousCwd);
1110
1051
  return info.path;
1111
1052
  }
1112
- /**
1113
- * Copy .gsd/ planning artifacts from source repo to a new worktree.
1114
- * Copies milestones/, DECISIONS.md, REQUIREMENTS.md, PROJECT.md, QUEUE.md,
1115
- * STATE.md, KNOWLEDGE.md, and OVERRIDES.md.
1116
- * Skips runtime files (auto.lock, metrics.json, etc.) and the worktrees/ dir.
1117
- * Best-effort failures are non-fatal since auto-mode can recreate artifacts.
1118
- */
1119
- function copyPlanningArtifacts(srcBase, wtPath) {
1120
- const srcGsd = join(srcBase, ".gsd");
1121
- const dstGsd = join(wtPath, ".gsd");
1122
- if (!existsSync(srcGsd))
1123
- return;
1124
- if (isSamePath(srcGsd, dstGsd))
1125
- return;
1126
- // Copy milestones/ directory (planning files, roadmaps, plans, research)
1127
- safeCopyRecursive(join(srcGsd, "milestones"), join(dstGsd, "milestones"), {
1128
- force: true,
1129
- filter: (src) => !src.endsWith("-META.json"),
1130
- });
1131
- // Copy top-level planning files
1132
- for (const file of [
1133
- "DECISIONS.md",
1134
- "REQUIREMENTS.md",
1135
- "PROJECT.md",
1136
- "QUEUE.md",
1137
- "STATE.md",
1138
- "KNOWLEDGE.md",
1139
- "OVERRIDES.md",
1140
- "mcp.json",
1141
- ]) {
1142
- safeCopy(join(srcGsd, file), join(dstGsd, file), { force: true });
1143
- }
1144
- // Seed canonical PREFERENCES.md when available; fall back to legacy lowercase.
1145
- if (existsSync(join(srcGsd, PROJECT_PREFERENCES_FILE))) {
1146
- safeCopy(join(srcGsd, PROJECT_PREFERENCES_FILE), join(dstGsd, PROJECT_PREFERENCES_FILE), { force: true });
1147
- }
1148
- else if (existsSync(join(srcGsd, LEGACY_PROJECT_PREFERENCES_FILE))) {
1149
- safeCopy(join(srcGsd, LEGACY_PROJECT_PREFERENCES_FILE), join(dstGsd, LEGACY_PROJECT_PREFERENCES_FILE), { force: true });
1150
- }
1151
- // Shared WAL (R012): worktrees use the project root's DB directly.
1152
- // No longer copy gsd.db into the worktree — the DB path resolver in
1153
- // ensureDbOpen() detects the worktree location and opens the root DB.
1154
- // Compat note: reconcileWorktreeDb() in mergeMilestoneToMain handles
1155
- // worktrees that already have a local gsd.db from before this change.
1156
- }
1053
+ // Phase C: copyPlanningArtifacts removed. Planning artifacts now live
1054
+ // only at the project root .gsd/; auto-mode writers (workflow-projections,
1055
+ // triage-resolution, rule-registry, regenerateIfMissing,
1056
+ // resolveHookArtifactPath) all route through s.canonicalProjectRoot.
1057
+ // Worktrees are pure git checkouts they no longer maintain a parallel
1058
+ // .gsd/ projection. The gsd.db has always lived at the project root via
1059
+ // the shared-WAL R012 contract; that is unchanged.
1157
1060
  /**
1158
1061
  * Teardown an auto-worktree: chdir back to original base, then remove
1159
1062
  * the worktree and its branch.
1160
1063
  */
1161
1064
  export function teardownAutoWorktree(originalBasePath, milestoneId, opts = {}) {
1065
+ originalBasePath = resolveWorktreeProjectRoot(originalBasePath);
1162
1066
  const branch = autoWorktreeBranch(milestoneId);
1163
1067
  const { preserveBranch = false } = opts;
1164
1068
  const previousCwd = process.cwd();
1069
+ // Wrap the entire teardown body in a single try/finally so activeWorkspace
1070
+ // is ALWAYS cleared — even if process.chdir throws (e.g. originalBasePath
1071
+ // was deleted before teardown ran). Previously the finally only covered
1072
+ // removeWorktree, leaving the registry stale on a chdir failure (H3 fix).
1165
1073
  try {
1166
- process.chdir(originalBasePath);
1167
- originalBase = null;
1168
- }
1169
- catch (err) {
1170
- throw new GSDError(GSD_IO_ERROR, `Failed to chdir back to ${originalBasePath} during teardown: ${err instanceof Error ? err.message : String(err)}`);
1171
- }
1172
- nudgeGitBranchCache(previousCwd);
1173
- removeWorktree(originalBasePath, milestoneId, {
1174
- branch,
1175
- deleteBranch: !preserveBranch,
1176
- });
1177
- // Verify cleanup succeeded — warn if the worktree directory is still on disk.
1178
- // On Windows, bash-based cleanup can silently fail when paths contain
1179
- // backslashes (#1436), leaving ~1 GB+ orphaned directories.
1180
- const wtDir = worktreePath(originalBasePath, milestoneId);
1181
- if (existsSync(wtDir)) {
1182
- logWarning("reconcile", `Worktree directory still exists after teardown: ${wtDir}. ` +
1183
- `This is likely an orphaned directory consuming disk space. ` +
1184
- `Remove it manually with: rm -rf "${wtDir.replaceAll("\\", "/")}"`, { worktree: milestoneId });
1185
- // Attempt a direct filesystem removal as a fallback — but ONLY if the
1186
- // path is safely inside .gsd/worktrees/ to prevent #2365 data loss.
1187
- if (isInsideWorktreesDir(originalBasePath, wtDir)) {
1074
+ try {
1075
+ process.chdir(originalBasePath);
1076
+ }
1077
+ catch (err) {
1078
+ throw new GSDError(GSD_IO_ERROR, `Failed to chdir back to ${originalBasePath} during teardown: ${err instanceof Error ? err.message : String(err)}`);
1079
+ }
1080
+ // Mirror cleanup steps from mergeMilestoneToMain abort path:
1081
+ // 1. Remove transient state files (STATE.md, auto.lock, {MID}-META.json).
1082
+ // Non-fatal — must not block teardown.
1083
+ try {
1084
+ clearProjectRootStateFiles(originalBasePath, milestoneId);
1085
+ }
1086
+ catch (err) {
1087
+ logWarning("worktree", `clearProjectRootStateFiles failed during teardown: ${err instanceof Error ? err.message : String(err)}`);
1088
+ }
1089
+ // 2. Reconcile worktree-local gsd.db into project root DB if both exist.
1090
+ // Non-fatal handles legacy worktrees that have a local copy.
1091
+ if (isDbAvailable()) {
1188
1092
  try {
1189
- rmSync(wtDir, { recursive: true, force: true });
1093
+ const contract = resolveGsdPathContract(previousCwd, originalBasePath);
1094
+ const worktreeDbPath = join(contract.worktreeGsd ?? join(previousCwd, ".gsd"), "gsd.db");
1095
+ const mainDbPath = contract.projectDb;
1096
+ if (existsSync(worktreeDbPath) && !isSamePath(worktreeDbPath, mainDbPath)) {
1097
+ reconcileWorktreeDb(mainDbPath, worktreeDbPath);
1098
+ }
1190
1099
  }
1191
1100
  catch (err) {
1192
- // Non-fatal — the warning above tells the user how to clean up
1193
- logWarning("worktree", `worktree directory removal failed: ${err instanceof Error ? err.message : String(err)}`);
1101
+ /* non-fatal */
1102
+ logError("worktree", `DB reconciliation failed during teardown: ${err instanceof Error ? err.message : String(err)}`);
1194
1103
  }
1195
1104
  }
1196
- else {
1197
- console.error(`[GSD] REFUSING fallback rmSync path is outside .gsd/worktrees/: ${wtDir}`);
1105
+ nudgeGitBranchCache(previousCwd);
1106
+ // 3. Remove the worktree. Errors propagate naturally the outer finally
1107
+ // ensures activeWorkspace is cleared regardless.
1108
+ removeWorktree(originalBasePath, milestoneId, {
1109
+ branch,
1110
+ deleteBranch: !preserveBranch,
1111
+ });
1112
+ // Verify cleanup succeeded — warn if the worktree directory is still on disk.
1113
+ // On Windows, bash-based cleanup can silently fail when paths contain
1114
+ // backslashes (#1436), leaving ~1 GB+ orphaned directories.
1115
+ const wtDir = worktreePath(originalBasePath, milestoneId);
1116
+ if (existsSync(wtDir)) {
1117
+ logWarning("reconcile", `Worktree directory still exists after teardown: ${wtDir}. ` +
1118
+ `This is likely an orphaned directory consuming disk space. ` +
1119
+ `Remove it manually with: rm -rf "${wtDir.replaceAll("\\", "/")}"`, { worktree: milestoneId });
1120
+ // Attempt a direct filesystem removal as a fallback — but ONLY if the
1121
+ // path is safely inside .gsd/worktrees/ to prevent #2365 data loss.
1122
+ if (isInsideWorktreesDir(originalBasePath, wtDir)) {
1123
+ try {
1124
+ rmSync(wtDir, { recursive: true, force: true });
1125
+ }
1126
+ catch (err) {
1127
+ // Non-fatal — the warning above tells the user how to clean up
1128
+ logWarning("worktree", `worktree directory removal failed: ${err instanceof Error ? err.message : String(err)}`);
1129
+ }
1130
+ }
1131
+ else {
1132
+ console.error(`[GSD] REFUSING fallback rmSync — path is outside .gsd/worktrees/: ${wtDir}`);
1133
+ }
1198
1134
  }
1199
1135
  }
1136
+ finally {
1137
+ // Clear module state unconditionally — regardless of which step above
1138
+ // failed. A stale activeWorkspace causes getActiveAutoWorktreeContext()
1139
+ // to return wrong data for subsequent operations.
1140
+ setActiveWorkspace(null);
1141
+ }
1200
1142
  }
1201
1143
  /**
1202
1144
  * Detect if the process is currently inside an auto-worktree.
1203
- * Checks both module state and git branch prefix.
1145
+ * Uses the current directory structure plus git branch prefix so detection
1146
+ * still works after process restart when module state has been reset.
1204
1147
  */
1205
1148
  export function isInAutoWorktree(basePath) {
1206
- if (!originalBase)
1149
+ const targetPath = isGsdWorktreePath(basePath) ? basePath : process.cwd();
1150
+ if (!isGsdWorktreePath(targetPath))
1207
1151
  return false;
1208
- const cwd = process.cwd();
1209
- const resolvedBase = existsSync(basePath) ? realpathSync(basePath) : basePath;
1210
- const wtDir = join(resolvedBase, ".gsd", "worktrees");
1211
- if (!cwd.startsWith(wtDir))
1152
+ const storedBase = getAutoWorktreeOriginalBase();
1153
+ const projectRoot = resolveWorktreeProjectRoot(basePath, storedBase);
1154
+ const targetProjectRoot = resolveWorktreeProjectRoot(targetPath, storedBase);
1155
+ if (normalizeWorktreePathForCompare(projectRoot) !==
1156
+ normalizeWorktreePathForCompare(targetProjectRoot)) {
1212
1157
  return false;
1213
- const branch = nativeGetCurrentBranch(cwd);
1214
- return branch.startsWith("milestone/");
1158
+ }
1159
+ try {
1160
+ const branch = nativeGetCurrentBranch(targetPath);
1161
+ return branch.startsWith("milestone/");
1162
+ }
1163
+ catch {
1164
+ return false;
1165
+ }
1215
1166
  }
1216
1167
  /**
1217
1168
  * Get the filesystem path for an auto-worktree, or null if it doesn't exist
@@ -1222,6 +1173,7 @@ export function isInAutoWorktree(basePath) {
1222
1173
  * mis-detection of leftover directories as active worktrees (#695).
1223
1174
  */
1224
1175
  export function getAutoWorktreePath(basePath, milestoneId) {
1176
+ basePath = resolveWorktreeProjectRoot(basePath);
1225
1177
  const p = worktreePath(basePath, milestoneId);
1226
1178
  if (!existsSync(p))
1227
1179
  return null;
@@ -1248,6 +1200,7 @@ export function getAutoWorktreePath(basePath, milestoneId) {
1248
1200
  * Atomic: chdir + originalBase update in same try block.
1249
1201
  */
1250
1202
  export function enterAutoWorktree(basePath, milestoneId) {
1203
+ basePath = resolveWorktreeProjectRoot(basePath);
1251
1204
  const p = worktreePath(basePath, milestoneId);
1252
1205
  if (!existsSync(p)) {
1253
1206
  throw new GSDError(GSD_IO_ERROR, `Auto-worktree for ${milestoneId} does not exist at ${p}`);
@@ -1271,7 +1224,7 @@ export function enterAutoWorktree(basePath, milestoneId) {
1271
1224
  const previousCwd = process.cwd();
1272
1225
  try {
1273
1226
  process.chdir(p);
1274
- originalBase = basePath;
1227
+ setActiveWorkspace(createWorkspace(basePath));
1275
1228
  }
1276
1229
  catch (err) {
1277
1230
  throw new GSDError(GSD_IO_ERROR, `Failed to enter auto-worktree at ${p}: ${err instanceof Error ? err.message : String(err)}`);
@@ -1284,18 +1237,24 @@ export function enterAutoWorktree(basePath, milestoneId) {
1284
1237
  * Returns null if not currently in an auto-worktree.
1285
1238
  */
1286
1239
  export function getAutoWorktreeOriginalBase() {
1287
- return originalBase;
1240
+ return getActiveWorkspace()?.projectRoot ?? null;
1241
+ }
1242
+ export function _resetAutoWorktreeOriginalBaseForTests() {
1243
+ setActiveWorkspace(null);
1288
1244
  }
1289
1245
  export function getActiveAutoWorktreeContext() {
1290
- if (!originalBase)
1246
+ const ws = getActiveWorkspace();
1247
+ if (!ws)
1291
1248
  return null;
1249
+ const originalBase = ws.projectRoot;
1292
1250
  const cwd = process.cwd();
1293
- const resolvedBase = existsSync(originalBase)
1294
- ? realpathSync(originalBase)
1295
- : originalBase;
1296
- const wtDir = join(resolvedBase, ".gsd", "worktrees");
1297
- if (!cwd.startsWith(wtDir))
1251
+ if (!isGsdWorktreePath(cwd))
1298
1252
  return null;
1253
+ const cwdProjectRoot = resolveWorktreeProjectRoot(cwd, originalBase);
1254
+ if (normalizeWorktreePathForCompare(cwdProjectRoot) !==
1255
+ normalizeWorktreePathForCompare(originalBase)) {
1256
+ return null;
1257
+ }
1299
1258
  const worktreeName = detectWorktreeName(cwd);
1300
1259
  if (!worktreeName)
1301
1260
  return null;
@@ -1324,7 +1283,7 @@ function autoCommitDirtyState(cwd) {
1324
1283
  }
1325
1284
  catch (e) {
1326
1285
  debugLog("autoCommitDirtyState", { error: String(e) });
1327
- return false;
1286
+ throw new GSDError(GSD_GIT_ERROR, `Failed to auto-commit dirty worktree state before milestone merge: ${e instanceof Error ? e.message : String(e)}`);
1328
1287
  }
1329
1288
  }
1330
1289
  /**
@@ -1357,11 +1316,11 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1357
1316
  // integration branch captures dirty files from OTHER milestones under a
1358
1317
  // misleading commit message, contaminating the main branch (#2929).
1359
1318
  //
1360
- // When originalBase is null (branch mode, no worktree), autoCommitDirtyState
1319
+ // When activeWorkspace is null (branch mode, no worktree), autoCommitDirtyState
1361
1320
  // runs unconditionally — the caller is responsible for cwd placement.
1362
1321
  {
1363
1322
  let shouldAutoCommit = true;
1364
- if (originalBase !== null) {
1323
+ if (getActiveWorkspace() !== null) {
1365
1324
  try {
1366
1325
  const currentBranch = nativeGetCurrentBranch(worktreeCwd);
1367
1326
  shouldAutoCommit = currentBranch === milestoneBranch;
@@ -1381,9 +1340,10 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1381
1340
  // database (#2823).
1382
1341
  if (isDbAvailable()) {
1383
1342
  try {
1384
- const worktreeDbPath = join(worktreeCwd, ".gsd", "gsd.db");
1385
- const mainDbPath = join(originalBasePath_, ".gsd", "gsd.db");
1386
- if (!isSamePath(worktreeDbPath, mainDbPath)) {
1343
+ const contract = resolveGsdPathContract(worktreeCwd, originalBasePath_);
1344
+ const worktreeDbPath = join(contract.worktreeGsd ?? join(worktreeCwd, ".gsd"), "gsd.db");
1345
+ const mainDbPath = contract.projectDb;
1346
+ if (existsSync(worktreeDbPath) && !isSamePath(worktreeDbPath, mainDbPath)) {
1387
1347
  reconcileWorktreeDb(mainDbPath, worktreeDbPath);
1388
1348
  }
1389
1349
  }
@@ -1408,6 +1368,10 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1408
1368
  }
1409
1369
  }
1410
1370
  // 3. chdir to original base
1371
+ // Note: previousCwd captures the cwd at this point — i.e. the worktree cwd
1372
+ // entering the function. Subsequent throws restore to previousCwd, leaving
1373
+ // the caller in worktree-cwd; callers (worktree-resolver) are responsible
1374
+ // for any further cwd movement on the error path.
1411
1375
  const previousCwd = process.cwd();
1412
1376
  process.chdir(originalBasePath_);
1413
1377
  // 4. Resolve integration branch — prefer milestone metadata, then preferences,
@@ -1422,6 +1386,20 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1422
1386
  ? prefs.main_branch
1423
1387
  : undefined;
1424
1388
  const mainBranch = integrationBranch ?? validatedPrefBranch ?? nativeDetectMainBranch(originalBasePath_);
1389
+ // Fail closed when the resolved integration branch is the milestone branch
1390
+ // itself (#5024). Stale or corrupt metadata (e.g. integrationBranch recorded
1391
+ // as "milestone/<MID>") would otherwise let the squash merge resolve to a
1392
+ // self-merge: nothing-to-commit + empty self-diff in the post-merge safety
1393
+ // check (#1792) collapse to a false success, and the worktree-resolver
1394
+ // emits worktree-merged for work that never landed on a distinct
1395
+ // integration branch.
1396
+ if (normalizeLocalBranchRef(mainBranch) === milestoneBranch) {
1397
+ process.chdir(previousCwd);
1398
+ throw new GSDError(GSD_GIT_ERROR, `Resolved integration branch "${mainBranch}" is the same ref as milestone branch ` +
1399
+ `"${milestoneBranch}" — refusing to self-merge. Integration branch metadata is invalid; ` +
1400
+ `set a distinct main_branch in GSD preferences or repair the milestone integration record ` +
1401
+ `before retrying milestone completion.`);
1402
+ }
1425
1403
  // Remove transient project-root state files before any branch or merge
1426
1404
  // operation. Untracked milestone metadata can otherwise block squash merges.
1427
1405
  clearProjectRootStateFiles(originalBasePath_, milestoneId);
@@ -1919,7 +1897,7 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1919
1897
  }
1920
1898
  // 10. Auto-push if enabled
1921
1899
  let pushed = false;
1922
- if (prefs.auto_push === true && !nothingToCommit) {
1900
+ if (prefs.auto_push === true && prefs.auto_pr !== true && !nothingToCommit) {
1923
1901
  const remote = prefs.remote ?? "origin";
1924
1902
  try {
1925
1903
  execFileSync("git", ["push", remote, mainBranch], {
@@ -1969,9 +1947,10 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1969
1947
  // throws only when the milestone has unanchored code changes, passes
1970
1948
  // through when the code is genuinely already on the integration branch.
1971
1949
  // 11a. Pre-teardown safety net (#1853): if the worktree still has uncommitted
1972
- // changes (e.g. nativeHasChanges cache returned stale false, or auto-commit
1973
- // silently failed), force one final commit so code is not destroyed by
1974
- // `git worktree remove --force`.
1950
+ // changes (e.g. nativeHasChanges cache returned stale false), abort teardown.
1951
+ // Committing here would be too late: the squash merge to the integration
1952
+ // branch already happened, so a new milestone-branch commit would not be
1953
+ // included and branch deletion could drop the only ref to that work.
1975
1954
  //
1976
1955
  // Guard: only run when worktreeCwd is on the milestone branch (#2929).
1977
1956
  // In parallel mode or branch-mode merges, worktreeCwd may be the project
@@ -1990,18 +1969,16 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
1990
1969
  try {
1991
1970
  const dirtyCheck = nativeWorkingTreeStatus(worktreeCwd);
1992
1971
  if (dirtyCheck) {
1993
- debugLog("mergeMilestoneToMain", {
1994
- phase: "pre-teardown-dirty",
1995
- worktreeCwd,
1996
- status: dirtyCheck.slice(0, 200),
1997
- });
1998
- nativeAddAllWithExclusions(worktreeCwd, RUNTIME_EXCLUSION_PATHS);
1999
- nativeCommit(worktreeCwd, "chore: pre-teardown auto-commit of uncommitted worktree changes");
1972
+ process.chdir(previousCwd);
1973
+ throw new GSDError(GSD_GIT_ERROR, `Milestone worktree still has uncommitted changes after squash merge. ` +
1974
+ `Aborting teardown to preserve ${milestoneBranch}. Status:\n${dirtyCheck}`);
2000
1975
  }
2001
1976
  }
2002
1977
  catch (e) {
1978
+ if (e instanceof GSDError)
1979
+ throw e;
2003
1980
  debugLog("mergeMilestoneToMain", {
2004
- phase: "pre-teardown-commit-error",
1981
+ phase: "pre-teardown-dirty-check-error",
2005
1982
  error: String(e),
2006
1983
  });
2007
1984
  }
@@ -2027,7 +2004,22 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
2027
2004
  logWarning("worktree", `git branch-delete failed: ${err instanceof Error ? err.message : String(err)}`);
2028
2005
  }
2029
2006
  // 14. Clear module state
2030
- originalBase = null;
2007
+ setActiveWorkspace(null);
2031
2008
  nudgeGitBranchCache(previousCwd);
2009
+ // 15. Anchor cwd at the project root on success-return. Step 12 removed
2010
+ // the worktree dir; if cwd was inside it, every subsequent process.cwd()
2011
+ // would throw ENOENT and trip auto/run-unit.ts:50's session-failed cancel
2012
+ // path (the de73fb43d regression that closes headless gsd auto). Step 3
2013
+ // already chdir'd here, but defending the success-return contract makes
2014
+ // future maintainers safe against intervening chdir's between step 3 and
2015
+ // here.
2016
+ try {
2017
+ // process.cwd() can throw ENOENT when cwd was removed, so attempt
2018
+ // recovery directly.
2019
+ process.chdir(originalBasePath_);
2020
+ }
2021
+ catch (err) {
2022
+ logWarning("worktree", `chdir to project root after merge failed: ${err instanceof Error ? err.message : String(err)}`);
2023
+ }
2032
2024
  return { commitMessage, pushed, prCreated, codeFilesChanged };
2033
2025
  }