gsd-pi 2.67.0-dev.46f9884 → 2.67.0-dev.4fb8afe

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 (599) hide show
  1. package/README.md +42 -32
  2. package/dist/resource-loader.d.ts +1 -1
  3. package/dist/resource-loader.js +20 -5
  4. package/dist/resources/GSD-WORKFLOW.md +3 -1
  5. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +73 -42
  6. package/dist/resources/extensions/get-secrets-from-user.js +18 -2
  7. package/dist/resources/extensions/gsd/auto/phases.js +17 -0
  8. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +12 -0
  9. package/dist/resources/extensions/gsd/auto-post-unit.js +26 -0
  10. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +11 -435
  11. package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +1 -4
  12. package/dist/resources/extensions/gsd/bootstrap/query-tools.js +7 -64
  13. package/dist/resources/extensions/gsd/bootstrap/system-context.js +18 -3
  14. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +88 -8
  15. package/dist/resources/extensions/gsd/codebase-generator.js +173 -12
  16. package/dist/resources/extensions/gsd/commands/catalog.js +4 -3
  17. package/dist/resources/extensions/gsd/commands/dispatcher.js +1 -1
  18. package/dist/resources/extensions/gsd/commands/handlers/core.js +92 -1
  19. package/dist/resources/extensions/gsd/commands-bootstrap.js +9 -0
  20. package/dist/resources/extensions/gsd/commands-codebase.js +4 -3
  21. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +39 -5
  22. package/dist/resources/extensions/gsd/doctor-git-checks.js +4 -4
  23. package/dist/resources/extensions/gsd/doctor-proactive.js +3 -3
  24. package/dist/resources/extensions/gsd/guided-flow.js +16 -0
  25. package/dist/resources/extensions/gsd/prompts/complete-slice.md +3 -3
  26. package/dist/resources/extensions/gsd/prompts/execute-task.md +3 -3
  27. package/dist/resources/extensions/gsd/prompts/system.md +3 -0
  28. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +7 -5
  29. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +508 -0
  30. package/dist/resources/extensions/gsd/workflow-mcp.js +190 -0
  31. package/dist/resources/extensions/gsd/workflow-reconcile.js +0 -4
  32. package/dist/resources/extensions/gsd/worktree-manager.js +6 -2
  33. package/dist/web/standalone/.next/BUILD_ID +1 -1
  34. package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
  35. package/dist/web/standalone/.next/build-manifest.json +5 -5
  36. package/dist/web/standalone/.next/prerender-manifest.json +13 -13
  37. package/dist/web/standalone/.next/react-loadable-manifest.json +7 -7
  38. package/dist/web/standalone/.next/required-server-files.json +18 -6
  39. package/dist/web/standalone/.next/routes-manifest.json +1 -0
  40. package/dist/web/standalone/.next/server/app/_global-error/page.js +32 -3
  41. package/dist/web/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  42. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  43. package/dist/web/standalone/.next/server/app/_global-error.html +1 -2
  44. package/dist/web/standalone/.next/server/app/_global-error.rsc +8 -6
  45. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +8 -6
  46. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  47. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +2 -1
  48. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  49. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +2 -1
  50. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  51. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  52. package/dist/web/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  53. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  54. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  55. package/dist/web/standalone/.next/server/app/_not-found.rsc +9 -7
  56. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +9 -7
  57. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  58. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  59. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  60. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +2 -1
  61. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  62. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  63. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  64. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  65. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  66. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  67. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  68. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  69. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  70. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  71. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  72. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  73. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  74. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  75. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js.nft.json +1 -1
  76. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  77. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  78. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  79. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  80. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  81. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  82. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  83. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  84. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js.nft.json +1 -1
  85. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  86. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  87. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  88. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  89. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  90. package/dist/web/standalone/.next/server/app/api/experimental/route.js.nft.json +1 -1
  91. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  92. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  93. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  94. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  95. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  96. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  97. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  98. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  100. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  101. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  103. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  104. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  106. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  107. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  109. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  110. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  111. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  112. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  113. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  115. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  116. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  117. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  118. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  119. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  120. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  121. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  122. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  123. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  124. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  125. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  126. package/dist/web/standalone/.next/server/app/api/preferences/route.js.nft.json +1 -1
  127. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  128. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  130. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  131. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  133. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  135. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js.nft.json +1 -1
  136. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  137. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  139. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  141. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  142. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  143. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  144. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  145. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  146. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  147. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  148. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  149. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  151. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  152. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  154. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  157. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  160. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  163. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  165. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js.nft.json +1 -1
  166. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  168. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js.nft.json +1 -1
  169. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  171. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  172. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  174. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  175. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js.nft.json +1 -1
  178. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  179. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  180. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  181. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  183. package/dist/web/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  184. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  185. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  186. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  187. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  188. package/dist/web/standalone/.next/server/app/index.html +1 -1
  189. package/dist/web/standalone/.next/server/app/index.rsc +2 -2
  190. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  191. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
  192. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  193. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  194. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  195. package/dist/web/standalone/.next/server/app/page.js +2 -2
  196. package/dist/web/standalone/.next/server/app/page.js.nft.json +1 -1
  197. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  198. package/dist/web/standalone/.next/server/app-paths-manifest.json +17 -17
  199. package/dist/web/standalone/.next/server/chunks/2331.js +7 -7
  200. package/dist/web/standalone/.next/server/chunks/4741.js +5 -9
  201. package/dist/web/standalone/.next/server/chunks/63.js +45 -0
  202. package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
  203. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  204. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  205. package/dist/web/standalone/.next/server/middleware.js +11 -8
  206. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  207. package/dist/web/standalone/.next/server/pages/500.html +1 -2
  208. package/dist/web/standalone/.next/server/prefetch-hints.json +1 -0
  209. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  210. package/dist/web/standalone/.next/static/IBTC_HlEpTBAa4HXMoV_A/_buildManifest.js +1 -0
  211. package/dist/web/standalone/.next/static/chunks/2008.71ee9230ad78df21.js +20 -0
  212. package/dist/web/standalone/.next/static/chunks/{363642f4.f9053a63f1b97508.js → 363642f4.cf8b455e0d94b478.js} +1 -1
  213. package/dist/web/standalone/.next/static/chunks/3794-42fdce068d44fa4f.js +32 -0
  214. package/dist/web/standalone/.next/static/chunks/{4447.f86b52aea068b189.js → 4447.5bad7871be61ca73.js} +1 -1
  215. package/dist/web/standalone/.next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
  216. package/dist/web/standalone/.next/static/chunks/{6502.8874bcae249c02e1.js → 6502.b804e48b7919f55e.js} +3 -3
  217. package/dist/web/standalone/.next/static/chunks/{e868780c.f7831045ac345aaa.js → e868780c.abc48b70a10fc2d6.js} +3 -3
  218. package/dist/web/standalone/.next/static/chunks/framework-711ef29bc66f648c.js +1 -0
  219. package/dist/web/standalone/.next/static/chunks/main-6919d9dd919bd15f.js +5 -0
  220. package/dist/web/standalone/.next/static/chunks/{webpack-9fed74684e1c5bb1.js → webpack-b49b09f97429b5d0.js} +1 -1
  221. package/dist/web/standalone/node_modules/@next/env/package.json +1 -1
  222. package/dist/web/standalone/node_modules/next/dist/build/adapter/setup-node-env.external.js +15 -0
  223. package/dist/web/standalone/node_modules/next/dist/build/analysis/extract-const-value.js +78 -63
  224. package/dist/web/standalone/node_modules/next/dist/build/analysis/get-page-static-info.js +64 -40
  225. package/dist/web/standalone/node_modules/next/dist/build/create-compiler-aliases.js +2 -0
  226. package/dist/web/standalone/node_modules/next/dist/build/define-env.js +29 -11
  227. package/dist/web/standalone/node_modules/next/dist/build/duration-to-string.js +1 -1
  228. package/dist/web/standalone/node_modules/next/dist/build/entries.js +55 -295
  229. package/dist/web/standalone/node_modules/next/dist/build/file-classifier.js +76 -0
  230. package/dist/web/standalone/node_modules/next/dist/build/get-supported-browsers.js +38 -0
  231. package/dist/web/standalone/node_modules/next/dist/build/load-jsconfig.js +7 -7
  232. package/dist/web/standalone/node_modules/next/dist/build/lockfile.js +90 -9
  233. package/dist/web/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +128 -49
  234. package/dist/web/standalone/node_modules/next/dist/build/print-build-errors.js +72 -0
  235. package/dist/web/standalone/node_modules/next/dist/build/route-discovery.js +353 -0
  236. package/dist/web/standalone/node_modules/next/dist/build/segment-config/app/app-segment-config.js +34 -17
  237. package/dist/web/standalone/node_modules/next/dist/build/static-paths/app.js +68 -15
  238. package/dist/web/standalone/node_modules/next/dist/build/static-paths/pages.js +3 -3
  239. package/dist/web/standalone/node_modules/next/dist/build/swc/index.js +125 -48
  240. package/dist/web/standalone/node_modules/next/dist/build/swc/loaderWorkerPool.js +40 -0
  241. package/dist/web/standalone/node_modules/next/dist/build/swc/options.js +23 -6
  242. package/dist/web/standalone/node_modules/next/dist/build/utils.js +48 -94
  243. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/index.js +14 -3
  244. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/global.js +4 -2
  245. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/modules.js +4 -2
  246. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/next-font.js +1 -0
  247. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/plugins.js +5 -5
  248. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/index.js +3 -2
  249. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js +2 -1
  250. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-url-parser.js +8 -1
  251. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/loader.js +13 -4
  252. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js +3 -1
  253. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin-utils.js +2 -16
  254. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin.js +2 -2
  255. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/deferred-entries-plugin.js +106 -0
  256. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/flight-client-entry-plugin.js +16 -8
  257. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.js +24 -11
  258. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/middleware-plugin.js +21 -2
  259. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/next-types-plugin/index.js +6 -5
  260. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/nextjs-require-cache-hot-reloader.js +10 -14
  261. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +18 -4
  262. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseScss.js +5 -4
  263. package/dist/web/standalone/node_modules/next/dist/build/webpack-config.js +18 -8
  264. package/dist/web/standalone/node_modules/next/dist/cli/next-test.js +4 -3
  265. package/dist/web/standalone/node_modules/next/dist/client/app-find-source-map-url.js +2 -1
  266. package/dist/web/standalone/node_modules/next/dist/client/components/app-router-headers.js +10 -0
  267. package/dist/web/standalone/node_modules/next/dist/client/components/app-router-instance.js +82 -4
  268. package/dist/web/standalone/node_modules/next/dist/client/components/app-router.js +39 -20
  269. package/dist/web/standalone/node_modules/next/dist/client/components/builtin/app-error.js +29 -65
  270. package/dist/web/standalone/node_modules/next/dist/client/components/builtin/error-styles.js +165 -0
  271. package/dist/web/standalone/node_modules/next/dist/client/components/builtin/global-error.js +56 -38
  272. package/dist/web/standalone/node_modules/next/dist/client/components/error-boundary.js +16 -6
  273. package/dist/web/standalone/node_modules/next/dist/client/components/forbidden.js +1 -1
  274. package/dist/web/standalone/node_modules/next/dist/client/components/handle-isr-error.js +3 -4
  275. package/dist/web/standalone/node_modules/next/dist/client/components/links.js +7 -0
  276. package/dist/web/standalone/node_modules/next/dist/client/components/navigation-untracked.js +2 -0
  277. package/dist/web/standalone/node_modules/next/dist/client/components/navigation.js +27 -0
  278. package/dist/web/standalone/node_modules/next/dist/client/components/navigation.react-server.js +5 -2
  279. package/dist/web/standalone/node_modules/next/dist/client/components/not-found.js +1 -1
  280. package/dist/web/standalone/node_modules/next/dist/client/components/redirect-boundary.js +1 -1
  281. package/dist/web/standalone/node_modules/next/dist/client/components/redirect-error.js +0 -9
  282. package/dist/web/standalone/node_modules/next/dist/client/components/redirect.js +2 -2
  283. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +73 -0
  284. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +102 -8
  285. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +165 -48
  286. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +19 -11
  287. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +669 -457
  288. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js +49 -0
  289. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +19 -20
  290. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +5 -117
  291. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +34 -19
  292. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +16 -32
  293. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +85 -57
  294. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +12 -10
  295. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js +10 -1
  296. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer.js +1 -1
  297. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/bfcache.js +128 -0
  298. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/cache.js +732 -231
  299. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/lru.js +13 -6
  300. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +194 -0
  301. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/navigation.js +388 -250
  302. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +543 -0
  303. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/scheduler.js +154 -55
  304. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/vary-path.js +63 -1
  305. package/dist/web/standalone/node_modules/next/dist/client/components/unauthorized.js +1 -1
  306. package/dist/web/standalone/node_modules/next/dist/client/components/use-action-queue.js +49 -3
  307. package/dist/web/standalone/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js +9 -1
  308. package/dist/web/standalone/node_modules/next/dist/client/flight-data-helpers.js +42 -29
  309. package/dist/web/standalone/node_modules/next/dist/client/lib/javascript-url.js +32 -0
  310. package/dist/web/standalone/node_modules/next/dist/client/lib/promise.js +53 -0
  311. package/dist/web/standalone/node_modules/next/dist/client/{app-build-id.js → navigation-build-id.js} +17 -13
  312. package/dist/web/standalone/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js +14 -0
  313. package/dist/web/standalone/node_modules/next/dist/client/route-loader.js +9 -46
  314. package/dist/web/standalone/node_modules/next/dist/client/router.js +1 -1
  315. package/dist/web/standalone/node_modules/next/dist/compiled/@next/font/dist/google/font-data.json +74 -3
  316. package/dist/web/standalone/node_modules/next/dist/compiled/babel/bundle.js +1 -1
  317. package/dist/web/standalone/node_modules/next/dist/compiled/babel-packages/packages-bundle.js +5 -5
  318. package/dist/web/standalone/node_modules/next/dist/compiled/browserslist/index.js +1 -1
  319. package/dist/web/standalone/node_modules/next/dist/compiled/http-proxy/index.js +5 -5
  320. package/dist/web/standalone/node_modules/next/dist/compiled/jsonwebtoken/index.js +2 -2
  321. package/dist/web/standalone/node_modules/next/dist/compiled/next-devtools/index.js +2209 -23
  322. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +42 -12
  323. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +42 -12
  324. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +42 -12
  325. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +42 -12
  326. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +2 -2
  327. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +10 -10
  328. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +10 -10
  329. package/dist/web/standalone/node_modules/next/dist/compiled/react-is/package.json +1 -1
  330. package/dist/web/standalone/node_modules/next/dist/compiled/tar/index.min.js +1 -0
  331. package/dist/web/standalone/node_modules/next/dist/compiled/tar/package.json +1 -1
  332. package/dist/web/standalone/node_modules/next/dist/compiled/unistore/unistore.js +1 -1
  333. package/dist/web/standalone/node_modules/next/dist/lib/bundler.js +97 -0
  334. package/dist/web/standalone/node_modules/next/dist/lib/constants.js +19 -4
  335. package/dist/web/standalone/node_modules/next/dist/lib/download-swc.js +2 -2
  336. package/dist/web/standalone/node_modules/next/dist/lib/find-root.js +11 -7
  337. package/dist/web/standalone/node_modules/next/dist/lib/format-server-error.js +1 -0
  338. package/dist/web/standalone/node_modules/next/dist/lib/generate-interception-routes-rewrites.js +3 -20
  339. package/dist/web/standalone/node_modules/next/dist/lib/interop-default.js +1 -0
  340. package/dist/web/standalone/node_modules/next/dist/lib/is-interception-route-rewrite.js +18 -0
  341. package/dist/web/standalone/node_modules/next/dist/lib/load-custom-routes.js +49 -5
  342. package/dist/web/standalone/node_modules/next/dist/lib/memory/trace.js +109 -0
  343. package/dist/web/standalone/node_modules/next/dist/lib/metadata/get-metadata-route.js +11 -2
  344. package/dist/web/standalone/node_modules/next/dist/lib/needs-experimental-react.js +2 -2
  345. package/dist/web/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +5 -5
  346. package/dist/web/standalone/node_modules/next/dist/lib/try-to-parse-path.js +1 -2
  347. package/dist/web/standalone/node_modules/next/dist/lib/turbopack-warning.js +0 -1
  348. package/dist/web/standalone/node_modules/next/dist/lib/typescript/diagnosticFormatter.js +6 -3
  349. package/dist/web/standalone/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +81 -1
  350. package/dist/web/standalone/node_modules/next/dist/lib/typescript/missingDependencyError.js +1 -1
  351. package/dist/web/standalone/node_modules/next/dist/lib/typescript/runTypeCheck.js +6 -8
  352. package/dist/web/standalone/node_modules/next/dist/lib/typescript/type-paths.js +7 -12
  353. package/dist/web/standalone/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +17 -7
  354. package/dist/web/standalone/node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js +33 -32
  355. package/dist/web/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +66 -16
  356. package/dist/web/standalone/node_modules/next/dist/next-devtools/server/shared.js +6 -10
  357. package/dist/web/standalone/node_modules/next/dist/next-devtools/shared/webpack-module-path.js +4 -4
  358. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js +22 -4
  359. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js +7 -1
  360. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/forward-logs.js +18 -13
  361. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js +7 -4
  362. package/dist/web/standalone/node_modules/next/dist/server/app-render/action-handler.js +83 -15
  363. package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +0 -82
  364. package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render-render-utils.js +45 -81
  365. package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render.js +1746 -803
  366. package/dist/web/standalone/node_modules/next/dist/server/app-render/create-component-tree.js +136 -50
  367. package/dist/web/standalone/node_modules/next/dist/server/app-render/create-error-handler.js +6 -4
  368. package/dist/web/standalone/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +52 -26
  369. package/dist/web/standalone/node_modules/next/dist/server/app-render/csrf-protection.js +14 -3
  370. package/dist/web/standalone/node_modules/next/dist/server/app-render/debug-channel-server.js +30 -0
  371. package/dist/web/standalone/node_modules/next/dist/server/app-render/debug-channel-server.web.js +71 -0
  372. package/dist/web/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +353 -37
  373. package/dist/web/standalone/node_modules/next/dist/server/app-render/get-asset-query-string.js +2 -2
  374. package/dist/web/standalone/node_modules/next/dist/server/app-render/get-layer-assets.js +1 -1
  375. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js +13 -0
  376. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +18 -0
  377. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +181 -0
  378. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples-client.js +128 -0
  379. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +432 -0
  380. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js +33 -0
  381. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/stream-utils.js +96 -0
  382. package/dist/web/standalone/node_modules/next/dist/server/app-render/manifests-singleton.js +8 -1
  383. package/dist/web/standalone/node_modules/next/dist/server/app-render/postponed-state.js +2 -1
  384. package/dist/web/standalone/node_modules/next/dist/server/app-render/prospective-render-utils.js +1 -0
  385. package/dist/web/standalone/node_modules/next/dist/server/app-render/segment-explorer-path.js +35 -10
  386. package/dist/web/standalone/node_modules/next/dist/server/app-render/staged-rendering.js +142 -72
  387. package/dist/web/standalone/node_modules/next/dist/server/app-render/stale-time.js +111 -0
  388. package/dist/web/standalone/node_modules/next/dist/server/app-render/stream-ops.js +106 -0
  389. package/dist/web/standalone/node_modules/next/dist/server/app-render/stream-ops.web.js +163 -0
  390. package/dist/web/standalone/node_modules/next/dist/server/app-render/types.js +10 -4
  391. package/dist/web/standalone/node_modules/next/dist/server/app-render/use-flight-response.js +3 -1
  392. package/dist/web/standalone/node_modules/next/dist/server/app-render/vary-params.js +336 -0
  393. package/dist/web/standalone/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +59 -12
  394. package/dist/web/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +54 -26
  395. package/dist/web/standalone/node_modules/next/dist/server/async-storage/request-store.js +4 -4
  396. package/dist/web/standalone/node_modules/next/dist/server/async-storage/work-store.js +2 -5
  397. package/dist/web/standalone/node_modules/next/dist/server/base-server.js +65 -53
  398. package/dist/web/standalone/node_modules/next/dist/server/config-schema.js +94 -8
  399. package/dist/web/standalone/node_modules/next/dist/server/config-shared.js +57 -7
  400. package/dist/web/standalone/node_modules/next/dist/server/config.js +96 -25
  401. package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/file-logger.js +9 -6
  402. package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +46 -0
  403. package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/source-map.js +1 -4
  404. package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +266 -33
  405. package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +8 -4
  406. package/dist/web/standalone/node_modules/next/dist/server/dev/log-requests.js +10 -2
  407. package/dist/web/standalone/node_modules/next/dist/server/dev/middleware-turbopack.js +20 -10
  408. package/dist/web/standalone/node_modules/next/dist/server/dev/middleware-webpack.js +13 -3
  409. package/dist/web/standalone/node_modules/next/dist/server/dev/next-dev-server.js +19 -6
  410. package/dist/web/standalone/node_modules/next/dist/server/dev/on-demand-entry-handler.js +69 -0
  411. package/dist/web/standalone/node_modules/next/dist/server/dev/require-cache.js +51 -21
  412. package/dist/web/standalone/node_modules/next/dist/server/dev/server-action-logger.js +37 -0
  413. package/dist/web/standalone/node_modules/next/dist/server/dev/static-paths-worker.js +1 -0
  414. package/dist/web/standalone/node_modules/next/dist/server/dev/turbopack-utils.js +6 -15
  415. package/dist/web/standalone/node_modules/next/dist/server/dynamic-rendering-utils.js +22 -0
  416. package/dist/web/standalone/node_modules/next/dist/server/image-optimizer.js +157 -27
  417. package/dist/web/standalone/node_modules/next/dist/server/lib/app-info-log.js +16 -38
  418. package/dist/web/standalone/node_modules/next/dist/server/lib/cache-control.js +1 -1
  419. package/dist/web/standalone/node_modules/next/dist/server/lib/clone-response.js +16 -16
  420. package/dist/web/standalone/node_modules/next/dist/server/lib/cpu-profile.js +47 -16
  421. package/dist/web/standalone/node_modules/next/dist/server/lib/dev-bundler-service.js +2 -2
  422. package/dist/web/standalone/node_modules/next/dist/server/lib/disk-lru-cache.external.js +57 -0
  423. package/dist/web/standalone/node_modules/next/dist/server/lib/find-page-file.js +27 -7
  424. package/dist/web/standalone/node_modules/next/dist/server/lib/implicit-tags.js +3 -3
  425. package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +5 -3
  426. package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +32 -10
  427. package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +18 -1
  428. package/dist/web/standalone/node_modules/next/dist/server/lib/install-code-frame.js +22 -0
  429. package/dist/web/standalone/node_modules/next/dist/server/lib/lru-cache.js +9 -1
  430. package/dist/web/standalone/node_modules/next/dist/server/lib/patch-fetch.js +40 -7
  431. package/dist/web/standalone/node_modules/next/dist/server/lib/postponed-request-body.js +64 -0
  432. package/dist/web/standalone/node_modules/next/dist/server/lib/render-server.js +4 -1
  433. package/dist/web/standalone/node_modules/next/dist/server/lib/router-server.js +37 -13
  434. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +110 -0
  435. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/filesystem.js +16 -15
  436. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +32 -11
  437. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +3 -3
  438. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js +71 -71
  439. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/typegen.js +247 -2
  440. package/dist/web/standalone/node_modules/next/dist/server/lib/server-ipc/utils.js +2 -1
  441. package/dist/web/standalone/node_modules/next/dist/server/lib/start-server.js +73 -39
  442. package/dist/web/standalone/node_modules/next/dist/server/lib/trace/tracer.js +11 -1
  443. package/dist/web/standalone/node_modules/next/dist/server/lib/utils.js +40 -11
  444. package/dist/web/standalone/node_modules/next/dist/server/load-components.js +2 -0
  445. package/dist/web/standalone/node_modules/next/dist/server/load-manifest.external.js +37 -17
  446. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-errors.js +11 -4
  447. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-logs.js +9 -3
  448. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-page-metadata.js +52 -44
  449. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-project-metadata.js +6 -2
  450. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-routes.js +44 -79
  451. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-server-action-by-id.js +12 -4
  452. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +62 -72
  453. package/dist/web/standalone/node_modules/next/dist/server/next-server.js +69 -99
  454. package/dist/web/standalone/node_modules/next/dist/server/next.js +3 -0
  455. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +61 -6
  456. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/date.js +4 -4
  457. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +13 -6
  458. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/{utils.js → io-utils.js} +14 -5
  459. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/node-crypto.js +8 -8
  460. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +91 -0
  461. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/random.js +2 -2
  462. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/{unhandled-rejection.js → unhandled-rejection.external.js} +23 -4
  463. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/web-crypto.js +3 -3
  464. package/dist/web/standalone/node_modules/next/dist/server/node-environment.js +1 -1
  465. package/dist/web/standalone/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.js +2 -1
  466. package/dist/web/standalone/node_modules/next/dist/server/patch-error-inspect.js +37 -20
  467. package/dist/web/standalone/node_modules/next/dist/server/render-result.js +9 -0
  468. package/dist/web/standalone/node_modules/next/dist/server/render.js +47 -44
  469. package/dist/web/standalone/node_modules/next/dist/server/require-hook.js +19 -8
  470. package/dist/web/standalone/node_modules/next/dist/server/response-cache/utils.js +1 -0
  471. package/dist/web/standalone/node_modules/next/dist/server/resume-data-cache/cache-store.js +35 -23
  472. package/dist/web/standalone/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +16 -7
  473. package/dist/web/standalone/node_modules/next/dist/server/revalidation-utils.js +12 -7
  474. package/dist/web/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +2 -1
  475. package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +4 -1
  476. package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/module.js +31 -1
  477. package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/normalize-request-url.js +25 -0
  478. package/dist/web/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +31 -8
  479. package/dist/web/standalone/node_modules/next/dist/server/route-modules/route-module.js +71 -18
  480. package/dist/web/standalone/node_modules/next/dist/server/stream-utils/encoded-tags.js +8 -0
  481. package/dist/web/standalone/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +239 -58
  482. package/dist/web/standalone/node_modules/next/dist/server/stream-utils/uint8array-helpers.js +7 -2
  483. package/dist/web/standalone/node_modules/next/dist/server/typescript/constant.js +1 -0
  484. package/dist/web/standalone/node_modules/next/dist/server/typescript/rules/config.js +14 -3
  485. package/dist/web/standalone/node_modules/next/dist/server/web/adapter.js +7 -3
  486. package/dist/web/standalone/node_modules/next/dist/server/web/next-url.js +6 -2
  487. package/dist/web/standalone/node_modules/next/dist/server/web/sandbox/sandbox.js +3 -0
  488. package/dist/web/standalone/node_modules/next/dist/shared/lib/app-router-types.js +30 -11
  489. package/dist/web/standalone/node_modules/next/dist/shared/lib/constants.js +7 -7
  490. package/dist/web/standalone/node_modules/next/dist/shared/lib/deployment-id.js +37 -10
  491. package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  492. package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/code-frame.js +20 -0
  493. package/dist/web/standalone/node_modules/next/dist/shared/lib/format-webpack-messages.js +22 -2
  494. package/dist/web/standalone/node_modules/next/dist/shared/lib/image-config.js +3 -1
  495. package/dist/web/standalone/node_modules/next/dist/shared/lib/is-internal.js +2 -0
  496. package/dist/web/standalone/node_modules/next/dist/shared/lib/magic-identifier.js +6 -6
  497. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/router.js +32 -0
  498. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +11 -0
  499. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +11 -4
  500. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js +3 -2
  501. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +9 -2
  502. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-url.js +8 -2
  503. package/dist/web/standalone/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +32 -0
  504. package/dist/web/standalone/node_modules/next/dist/shared/lib/server-reference-info.js +4 -0
  505. package/dist/web/standalone/node_modules/next/dist/shared/lib/size-limit.js +6 -1
  506. package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/compilation-events.js +47 -10
  507. package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/manifest-loader.js +90 -116
  508. package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/utils.js +14 -26
  509. package/dist/web/standalone/node_modules/next/dist/shared/lib/utils/reflect-utils.js +69 -0
  510. package/dist/web/standalone/node_modules/next/dist/shared/lib/utils.js +2 -2
  511. package/dist/web/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  512. package/dist/web/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  513. package/dist/web/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  514. package/dist/web/standalone/node_modules/next/dist/trace/index.js +4 -0
  515. package/dist/web/standalone/node_modules/next/dist/trace/report/to-json-build.js +11 -108
  516. package/dist/web/standalone/node_modules/next/dist/trace/report/to-json.js +52 -38
  517. package/dist/web/standalone/node_modules/next/dist/trace/trace.js +15 -1
  518. package/dist/web/standalone/node_modules/next/package.json +21 -23
  519. package/dist/web/standalone/node_modules/react/cjs/react.development.js +1284 -0
  520. package/dist/web/standalone/package.json +2 -2
  521. package/dist/web/standalone/server.js +1 -1
  522. package/package.json +1 -1
  523. package/packages/mcp-server/README.md +38 -0
  524. package/packages/mcp-server/src/server.ts +6 -2
  525. package/packages/mcp-server/src/workflow-tools.test.ts +976 -0
  526. package/packages/mcp-server/src/workflow-tools.ts +986 -0
  527. package/packages/pi-ai/dist/utils/event-stream.d.ts +2 -0
  528. package/packages/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  529. package/packages/pi-ai/dist/utils/event-stream.js +4 -0
  530. package/packages/pi-ai/dist/utils/event-stream.js.map +1 -1
  531. package/packages/pi-ai/src/utils/event-stream.ts +5 -0
  532. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  533. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +12 -2
  534. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  535. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts +13 -0
  536. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts.map +1 -0
  537. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js +27 -0
  538. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js.map +1 -0
  539. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +15 -2
  540. package/packages/pi-coding-agent/src/modes/interactive/provider-auth-setup.ts +40 -0
  541. package/src/resources/GSD-WORKFLOW.md +3 -1
  542. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +96 -44
  543. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +211 -2
  544. package/src/resources/extensions/get-secrets-from-user.ts +20 -2
  545. package/src/resources/extensions/gsd/auto/phases.ts +25 -0
  546. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +20 -0
  547. package/src/resources/extensions/gsd/auto-post-unit.ts +30 -1
  548. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +22 -435
  549. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +1 -5
  550. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +7 -72
  551. package/src/resources/extensions/gsd/bootstrap/system-context.ts +18 -4
  552. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +122 -6
  553. package/src/resources/extensions/gsd/codebase-generator.ts +261 -16
  554. package/src/resources/extensions/gsd/commands/catalog.ts +4 -3
  555. package/src/resources/extensions/gsd/commands/dispatcher.ts +1 -2
  556. package/src/resources/extensions/gsd/commands/handlers/core.ts +108 -2
  557. package/src/resources/extensions/gsd/commands-bootstrap.ts +10 -0
  558. package/src/resources/extensions/gsd/commands-codebase.ts +4 -3
  559. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +38 -7
  560. package/src/resources/extensions/gsd/doctor-git-checks.ts +4 -4
  561. package/src/resources/extensions/gsd/doctor-proactive.ts +3 -3
  562. package/src/resources/extensions/gsd/guided-flow.ts +24 -0
  563. package/src/resources/extensions/gsd/prompts/complete-slice.md +3 -3
  564. package/src/resources/extensions/gsd/prompts/execute-task.md +3 -3
  565. package/src/resources/extensions/gsd/prompts/system.md +3 -0
  566. package/src/resources/extensions/gsd/prompts/validate-milestone.md +7 -5
  567. package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +68 -0
  568. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +12 -0
  569. package/src/resources/extensions/gsd/tests/core-overlay-fallback.test.ts +32 -0
  570. package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +66 -0
  571. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +9 -2
  572. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +33 -0
  573. package/src/resources/extensions/gsd/tests/preferences.test.ts +17 -0
  574. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +25 -3
  575. package/src/resources/extensions/gsd/tests/update-command.test.ts +19 -0
  576. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +301 -0
  577. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +625 -0
  578. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +629 -0
  579. package/src/resources/extensions/gsd/workflow-mcp.ts +233 -0
  580. package/src/resources/extensions/gsd/workflow-reconcile.ts +0 -5
  581. package/src/resources/extensions/gsd/worktree-manager.ts +6 -2
  582. package/dist/web/standalone/.next/server/chunks/7471.js +0 -13
  583. package/dist/web/standalone/.next/static/FRT6f5ou3wPxpZ7ojoB7E/_buildManifest.js +0 -1
  584. package/dist/web/standalone/.next/static/chunks/2008.817d0885545aaea9.js +0 -20
  585. package/dist/web/standalone/.next/static/chunks/3794-337d1ca25ad99a89.js +0 -2
  586. package/dist/web/standalone/.next/static/chunks/4bd1b696-e5d7c65570c947b7.js +0 -1
  587. package/dist/web/standalone/.next/static/chunks/framework-0675a4b5b92df616.js +0 -1
  588. package/dist/web/standalone/.next/static/chunks/main-cb72b7c5b8014fa5.js +0 -5
  589. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/handle-mutable.js +0 -66
  590. package/dist/web/standalone/node_modules/next/dist/compiled/babel/code-frame.js +0 -1
  591. package/dist/web/standalone/node_modules/next/dist/compiled/babel-code-frame/index.js +0 -1
  592. package/dist/web/standalone/node_modules/next/dist/compiled/babel-code-frame/package.json +0 -1
  593. package/dist/web/standalone/node_modules/next/dist/compiled/tar/index.js +0 -1
  594. package/dist/web/standalone/node_modules/next/dist/server/app-render/staged-validation.js +0 -32
  595. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site.js +0 -76
  596. package/dist/web/standalone/node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js +0 -52
  597. package/dist/web/standalone/node_modules/typescript/lib/typescript.js +0 -198668
  598. package/dist/web/standalone/node_modules/typescript/package.json +0 -120
  599. /package/dist/web/standalone/.next/static/{FRT6f5ou3wPxpZ7ojoB7E → IBTC_HlEpTBAa4HXMoV_A}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -27,56 +27,66 @@ One command. Walk away. Come back to a built project with clean git history.
27
27
 
28
28
  ---
29
29
 
30
- ## What's New in v2.63.0
30
+ ## What's New in v2.67
31
31
 
32
- ### MCP Server & Integrations
32
+ ### Context Engineering
33
+
34
+ - **Tiered Context Injection (M005)** — relevance-scoped context with 65%+ token reduction. Decision scope cascade derives context from slice metadata instead of blanket injection.
35
+ - **Resilient transient error recovery** — defers to Core RetryHandler and fixes cmdCtx race conditions for more reliable auto-mode sessions.
33
36
 
34
- - **MCP server** 6 read-only project state tools for external integrations, auto-wrapup guard, and question dedup.
35
- - **Ollama extension** — first-class local LLM support via Ollama, with dynamic routing enabled by default.
36
- - **Discord bot & daemon** — dedicated daemon package, Discord bot with 6 discord.js shard event listeners, and headless text mode with tool calls.
37
+ ### Provider & Model Improvements
37
38
 
38
- ### Intelligent Model Routing
39
+ - **Anthropic subscription routing** — users with Anthropic subscriptions are automatically routed through Claude Code CLI provider with proper display names across all UI surfaces.
40
+ - **Claude Code provider hardening** — native Windows claude lookup, fallback guards, and `out of extra usage` error matching.
41
+ - **XML parameter recovery** — pi-ai recovers XML parameters trapped in JSON strings from providers.
39
42
 
40
- - **Capability-aware model routing (ADR-004)** — capability scoring, `before_model_select` hook, and task metadata extraction replace pattern-based model selection.
41
- - **Stop/backtrack capture classifications** — context optimization with model routing and masking.
43
+ ### Safety & Data Integrity
42
44
 
43
- ### VS Code & TUI
45
+ - **LLM safety harness** — auto-mode damage control prevents the LLM from running destructive operations or querying `gsd.db` directly via bash.
46
+ - **5-wave state machine hardening** — critical data integrity fixes across atomic writes, randomized tmp paths, event log reconciliation, session recovery, and consistency enforcement. 86+ regression tests added.
47
+ - **Discussion gate enforcement** — mechanical enforcement for discussion question gates with fail-closed behavior.
48
+ - **Enhanced verification** — pre-execution plan verification checks, post-execution cross-task consistency checks, blocking behavior and strict mode.
44
49
 
45
- - **VS Code sidebar redesign** — SCM provider, checkpoints, diagnostics panel, activity feed, workflow controls, session forking, and enhanced code lens.
46
- - **`/gsd parallel watch`** — native TUI overlay for real-time worker monitoring.
47
- - **Real-time TUI monitor dashboard** — self-healing dashboard with colorized headless verbose output.
50
+ ### Parallel Execution & Dispatch
48
51
 
49
- ### Agent & Auto-Mode
52
+ - **Slice-level parallelism** — dependency-aware parallel dispatch within a milestone, not just across milestones.
53
+ - **Parallel research slices** — research and milestone validation run in parallel.
54
+ - **Worker model override** — configure different models for parallel milestone workers.
50
55
 
51
- - **`/btw` skill** — ephemeral side questions without interrupting the main workflow.
52
- - **Codebase map** — automatic codebase map injection for fresh agent contexts.
53
- - **`--resume` flag** — resume previous sessions from the CLI.
54
- - **Concurrent invocation guard** — prevents overlapping auto-mode runs with parallel worker reliability improvements.
55
- - **Safety mechanisms on by default** — snapshots and pre-merge checks enabled out of the box.
56
+ ### TUI & Notifications
56
57
 
57
- ### Infrastructure & Performance
58
+ - **Persistent notification panel** — TUI overlay, widget, and web API for real-time notifications.
59
+ - **Remote questions race** — local TUI races against remote channel (Slack/Discord) instead of remote-only routing.
60
+ - **OS-specific keyboard shortcuts** — shortcut hints now adapt to macOS/Linux/Windows.
61
+ - **`/gsd show-config`** — inspect active configuration at a glance.
58
62
 
59
- - **Topological sort for extensions** — correct load ordering for dependent extensions.
60
- - **Headless integration hardening** — real-time streaming, verbose output, and observability improvements across v2.54–v2.55.
61
- - **GLM-5.1 model** — new model support added.
62
- - **80+ bug fixes** — worktree safety, parallel mode scoping, state corruption, and more.
63
+ ### Infrastructure
64
+
65
+ - **Ollama native provider** — `/api/chat` provider with full option exposure, `apiKey` auth mode, and headless probe.
66
+ - **MCP OAuth** — MCP client supports OAuth auth provider for HTTP transport.
67
+ - **WAL-safe migration backup** — database migrations create WAL-safe backups with stronger regression tests.
68
+ - **Xcode/xcodegen detection** — project detection now supports Xcode bundles and xcodegen.
69
+ - **170+ bug fixes** — state machine resilience, worktree safety, prompt injection, session recovery, and more.
63
70
 
64
71
  See the full [Changelog](./CHANGELOG.md) for details on every release.
65
72
 
66
73
  <details>
67
- <summary>Previous highlights (v2.52 and earlier)</summary>
68
-
74
+ <summary>Previous highlights (v2.63 and earlier)</summary>
75
+
76
+ - **MCP server** — 6 read-only project state tools for external integrations, auto-wrapup guard, and question dedup
77
+ - **Ollama extension** — first-class local LLM support via Ollama, with dynamic routing enabled by default
78
+ - **Discord bot & daemon** — dedicated daemon package, Discord bot, and headless text mode with tool calls
79
+ - **Capability-aware model routing (ADR-004)** — capability scoring, `before_model_select` hook, and task metadata extraction
80
+ - **VS Code sidebar redesign** — SCM provider, checkpoints, diagnostics panel, activity feed, workflow controls, session forking
81
+ - **`/gsd parallel watch`** — native TUI overlay for real-time worker monitoring
82
+ - **Codebase map** — automatic codebase map injection for fresh agent contexts
83
+ - **`--resume` flag** — resume previous sessions from the CLI
84
+ - **Concurrent invocation guard** — prevents overlapping auto-mode runs
69
85
  - **VS Code integration** — status bar, file decorations, bash terminal, session tree, conversation history, and code lens
70
- - **Capability-based model selection** — replaced model-ID pattern matching with capability metadata
71
86
  - **Skills overhaul** — 30+ skill packs covering major frameworks, databases, and cloud platforms
72
- - **Quality gates** — 8-question quality gates for planning and completion templates
73
87
  - **Single-writer state engine** — disciplined state transitions with machine guards and TOCTOU hardening
74
- - **`/gsd rethink`** — conversational project reorganization
75
- - **Complete offline mode** — fully offline with local models
76
- - **Browser-based web interface** — run GSD from the browser with `gsd --web`
77
88
  - **DB-backed planning tools** — atomic SQLite tool calls for state transitions
78
89
  - **Declarative workflow engine** — YAML workflows through auto-loop
79
- - **7 data-loss prevention fixes** — hallucination guard, merge anchor verification, dirty tree detection, and more
80
90
  - **Doctor: worktree lifecycle checks** — validates worktree health, detects orphans, consolidates cleanup
81
91
 
82
92
  </details>
@@ -85,7 +95,7 @@ See the full [Changelog](./CHANGELOG.md) for details on every release.
85
95
 
86
96
  ## Documentation
87
97
 
88
- Full documentation is available at **[gsd.build](https://gsd.build)** (powered by Mintlify) and in the [`docs/`](./docs/) directory:
98
+ Full documentation is available in the [`docs/`](./docs/) directory:
89
99
 
90
100
  - **[Getting Started](./docs/getting-started.md)** — install, first run, basic usage
91
101
  - **[Auto Mode](./docs/auto-mode.md)** — autonomous execution deep-dive
@@ -22,5 +22,5 @@ export declare function getNewerManagedResourceVersion(agentDir: string, current
22
22
  * Inspectable: `ls ~/.gsd/agent/extensions/`
23
23
  */
24
24
  export declare function initResources(agentDir: string): void;
25
- export declare function hasStaleCompiledExtensionSiblings(extensionsDir: string): boolean;
25
+ export declare function hasStaleCompiledExtensionSiblings(extensionsDir: string, sourceDir?: string): boolean;
26
26
  export declare function buildResourceLoader(agentDir: string): DefaultResourceLoader;
@@ -384,11 +384,13 @@ export function initResources(agentDir) {
384
384
  mkdirSync(agentDir, { recursive: true });
385
385
  const currentVersion = getBundledGsdVersion();
386
386
  const manifest = readManagedResourceManifest(agentDir);
387
+ const extensionsDir = join(agentDir, 'extensions');
387
388
  // Always prune root-level extension files that were removed from the bundle.
388
389
  // This is cheap (a few existence checks + at most one rmSync) and must run
389
390
  // unconditionally so that stale files left by a previous version are cleaned
390
391
  // up even when the version/hash match causes the full sync to be skipped.
391
392
  pruneRemovedBundledExtensions(manifest, agentDir);
393
+ pruneStaleSiblingFiles(bundledExtensionsDir, extensionsDir);
392
394
  // Ensure ~/.gsd/agent/node_modules symlinks to GSD's node_modules on EVERY
393
395
  // launch, not just during resource syncs. A stale/broken symlink makes ALL
394
396
  // extensions fail to resolve @gsd/* packages, rendering GSD non-functional.
@@ -402,7 +404,7 @@ export function initResources(agentDir) {
402
404
  if (manifest && manifest.gsdVersion === currentVersion) {
403
405
  // Version matches — check content fingerprint for same-version staleness.
404
406
  const currentHash = computeResourceFingerprint();
405
- const hasStaleExtensionFiles = hasStaleCompiledExtensionSiblings(join(agentDir, 'extensions'));
407
+ const hasStaleExtensionFiles = hasStaleCompiledExtensionSiblings(extensionsDir, bundledExtensionsDir);
406
408
  if (manifest.contentHash && manifest.contentHash === currentHash && !hasStaleExtensionFiles) {
407
409
  return;
408
410
  }
@@ -555,14 +557,27 @@ function migrateSkillsToEcosystemDir(agentDir) {
555
557
  }
556
558
  }
557
559
  }
558
- export function hasStaleCompiledExtensionSiblings(extensionsDir) {
560
+ export function hasStaleCompiledExtensionSiblings(extensionsDir, sourceDir = bundledExtensionsDir) {
559
561
  if (!existsSync(extensionsDir))
560
562
  return false;
563
+ const sourceFiles = existsSync(sourceDir)
564
+ ? new Set(readdirSync(sourceDir, { withFileTypes: true })
565
+ .filter((entry) => entry.isFile())
566
+ .map((entry) => entry.name))
567
+ : new Set();
561
568
  for (const entry of readdirSync(extensionsDir, { withFileTypes: true })) {
562
- if (!entry.isFile() || !entry.name.endsWith('.ts'))
569
+ if (!entry.isFile())
570
+ continue;
571
+ if (!entry.name.endsWith('.ts') && !entry.name.endsWith('.js'))
572
+ continue;
573
+ const siblingName = entry.name.endsWith('.ts')
574
+ ? entry.name.replace(/\.ts$/, '.js')
575
+ : entry.name.replace(/\.js$/, '.ts');
576
+ if (!existsSync(join(extensionsDir, siblingName)))
577
+ continue;
578
+ if (sourceFiles.has(entry.name) && sourceFiles.has(siblingName))
563
579
  continue;
564
- const jsName = entry.name.replace(/\.ts$/, '.js');
565
- if (existsSync(join(extensionsDir, jsName))) {
580
+ if (sourceFiles.has(entry.name) || sourceFiles.has(siblingName)) {
566
581
  return true;
567
582
  }
568
583
  }
@@ -18,7 +18,8 @@ Read these files in order and act on what they say:
18
18
  3. **`.gsd/milestones/<active>/M###-CONTEXT.md`** — Milestone-level project decisions, reference paths, constraints. Read this before doing implementation work.
19
19
  4. If a slice is active and has one, read **`S##-CONTEXT.md`** — Slice-specific decisions and constraints.
20
20
  5. If a slice is active, read its **`S##-PLAN.md`** — Which tasks exist? Which are done?
21
- 6. If a task was interrupted, check for **`continue.md`** in the active slice directory — Resume from there.
21
+ 6. If `.gsd/CODEBASE.md` exists, skim it for fast structural orientation before broad code exploration.
22
+ 7. If a task was interrupted, check for **`continue.md`** in the active slice directory — Resume from there.
22
23
 
23
24
  Then do the thing `STATE.md` says to do next.
24
25
 
@@ -44,6 +45,7 @@ All artifacts live in `.gsd/` at the project root:
44
45
  .gsd/
45
46
  STATE.md # Dashboard — always read first (derived cache; runtime, gitignored)
46
47
  DECISIONS.md # Append-only decisions register
48
+ CODEBASE.md # Generated codebase map cache (auto-refreshed by GSD)
47
49
  milestones/
48
50
  M001/
49
51
  M001-ROADMAP.md # Milestone plan (checkboxes = state)
@@ -9,6 +9,7 @@
9
9
  import { EventStream } from "@gsd/pi-ai";
10
10
  import { execSync } from "node:child_process";
11
11
  import { PartialMessageBuilder, ZERO_USAGE, mapUsage } from "./partial-builder.js";
12
+ import { buildWorkflowMcpServers } from "../gsd/workflow-mcp.js";
12
13
  // ---------------------------------------------------------------------------
13
14
  // Stream factory
14
15
  // ---------------------------------------------------------------------------
@@ -123,6 +124,70 @@ export function makeStreamExhaustedErrorMessage(model, lastTextContent) {
123
124
  }
124
125
  return message;
125
126
  }
127
+ /**
128
+ * Claude Code executes its own internal tool loop inside the SDK call. The
129
+ * streamed and final assistant messages should therefore contain only
130
+ * user-facing content (text/thinking), not replayable tool blocks that GSD
131
+ * would render again.
132
+ */
133
+ function isUserFacingClaudeCodeBlock(block) {
134
+ return block.type === "text" || block.type === "thinking";
135
+ }
136
+ function filterUserFacingClaudeCodeContent(blocks) {
137
+ return blocks.filter(isUserFacingClaudeCodeBlock);
138
+ }
139
+ function remapClaudeCodeContentIndex(blocks, contentIndex) {
140
+ let visibleCount = 0;
141
+ for (let i = 0; i <= contentIndex && i < blocks.length; i++) {
142
+ if (isUserFacingClaudeCodeBlock(blocks[i]))
143
+ visibleCount++;
144
+ }
145
+ return Math.max(0, visibleCount - 1);
146
+ }
147
+ function sanitizeClaudeCodePartial(partial) {
148
+ return {
149
+ ...partial,
150
+ content: filterUserFacingClaudeCodeContent(partial.content),
151
+ };
152
+ }
153
+ export function sanitizeClaudeCodeStreamingEvent(event) {
154
+ switch (event.type) {
155
+ case "toolcall_start":
156
+ case "toolcall_delta":
157
+ case "toolcall_end":
158
+ case "server_tool_use":
159
+ case "web_search_result":
160
+ return null;
161
+ case "text_start":
162
+ case "text_delta":
163
+ case "text_end":
164
+ case "thinking_start":
165
+ case "thinking_delta":
166
+ case "thinking_end":
167
+ return {
168
+ ...event,
169
+ contentIndex: remapClaudeCodeContentIndex(event.partial.content, event.contentIndex),
170
+ partial: sanitizeClaudeCodePartial(event.partial),
171
+ };
172
+ default:
173
+ return event;
174
+ }
175
+ }
176
+ export function buildFinalClaudeCodeContent(blocks, lastThinkingContent, lastTextContent, resultText) {
177
+ const finalContent = filterUserFacingClaudeCodeContent(blocks);
178
+ if (finalContent.length > 0)
179
+ return finalContent;
180
+ if (lastThinkingContent) {
181
+ finalContent.push({ type: "thinking", thinking: lastThinkingContent });
182
+ }
183
+ if (lastTextContent) {
184
+ finalContent.push({ type: "text", text: lastTextContent });
185
+ }
186
+ if (finalContent.length === 0 && resultText) {
187
+ finalContent.push({ type: "text", text: resultText });
188
+ }
189
+ return finalContent;
190
+ }
126
191
  // ---------------------------------------------------------------------------
127
192
  // SDK options builder
128
193
  // ---------------------------------------------------------------------------
@@ -133,6 +198,7 @@ export function makeStreamExhaustedErrorMessage(model, lastTextContent) {
133
198
  * beta flags, and other configuration without mocking the full SDK.
134
199
  */
135
200
  export function buildSdkOptions(modelId, prompt) {
201
+ const mcpServers = buildWorkflowMcpServers();
136
202
  return {
137
203
  pathToClaudeCodeExecutable: getClaudePath(),
138
204
  model: modelId,
@@ -143,6 +209,7 @@ export function buildSdkOptions(modelId, prompt) {
143
209
  allowDangerouslySkipPermissions: true,
144
210
  settingSources: ["project"],
145
211
  systemPrompt: { type: "preset", preset: "claude_code" },
212
+ ...(mcpServers ? { mcpServers } : {}),
146
213
  betas: modelId.includes("sonnet") ? ["context-1m-2025-08-07"] : [],
147
214
  };
148
215
  }
@@ -167,8 +234,6 @@ async function pumpSdkMessages(model, context, options, stream) {
167
234
  /** Track the last text content seen across all assistant turns for the final message. */
168
235
  let lastTextContent = "";
169
236
  let lastThinkingContent = "";
170
- /** Collect tool calls from intermediate SDK turns for tool_execution events. */
171
- const intermediateToolCalls = [];
172
237
  try {
173
238
  // Dynamic import — the SDK is an optional dependency.
174
239
  const sdkModule = "@anthropic-ai/claude-agent-sdk";
@@ -220,16 +285,11 @@ async function pumpSdkMessages(model, context, options, stream) {
220
285
  if (!builder)
221
286
  break;
222
287
  const assistantEvent = builder.handleEvent(event);
223
- if (assistantEvent) {
224
- // Skip toolcall events — the agent loop's externalToolExecution
225
- // path emits tool_execution_start/end events after streamSimple
226
- // returns. Streaming toolcall events would render tool calls
227
- // out of order in the TUI's accumulated message content.
228
- const t = assistantEvent.type;
229
- if (t !== "toolcall_start" && t !== "toolcall_delta" && t !== "toolcall_end") {
230
- stream.push(assistantEvent);
231
- }
232
- }
288
+ const sanitizedEvent = assistantEvent
289
+ ? sanitizeClaudeCodeStreamingEvent(assistantEvent)
290
+ : null;
291
+ if (sanitizedEvent)
292
+ stream.push(sanitizedEvent);
233
293
  break;
234
294
  }
235
295
  // -- Complete assistant message (non-streaming fallback) --
@@ -257,10 +317,6 @@ async function pumpSdkMessages(model, context, options, stream) {
257
317
  else if (block.type === "thinking" && block.thinking) {
258
318
  lastThinkingContent = block.thinking;
259
319
  }
260
- else if (block.type === "toolCall") {
261
- // Collect tool calls for externalToolExecution rendering
262
- intermediateToolCalls.push(block);
263
- }
264
320
  }
265
321
  }
266
322
  builder = null;
@@ -269,32 +325,7 @@ async function pumpSdkMessages(model, context, options, stream) {
269
325
  // -- Result (terminal) --
270
326
  case "result": {
271
327
  const result = msg;
272
- // Build final message. Include intermediate tool calls so the
273
- // agent loop's externalToolExecution path emits tool_execution
274
- // events for proper TUI rendering, followed by the text response.
275
- const finalContent = [];
276
- // Add tool calls from intermediate turns first (renders above text)
277
- finalContent.push(...intermediateToolCalls);
278
- // Add text/thinking from the last turn
279
- if (builder && builder.message.content.length > 0) {
280
- for (const block of builder.message.content) {
281
- if (block.type === "text" || block.type === "thinking") {
282
- finalContent.push(block);
283
- }
284
- }
285
- }
286
- else {
287
- if (lastThinkingContent) {
288
- finalContent.push({ type: "thinking", thinking: lastThinkingContent });
289
- }
290
- if (lastTextContent) {
291
- finalContent.push({ type: "text", text: lastTextContent });
292
- }
293
- }
294
- // Fallback: use the SDK's result text if we have no content
295
- if (finalContent.length === 0 && result.subtype === "success" && result.result) {
296
- finalContent.push({ type: "text", text: result.result });
297
- }
328
+ const finalContent = buildFinalClaudeCodeContent(builder?.message.content ?? [], lastThinkingContent, lastTextContent, result.subtype === "success" ? result.result : undefined);
298
329
  const finalMessage = {
299
330
  role: "assistant",
300
331
  content: finalContent,
@@ -25,6 +25,12 @@ function maskPreview(value) {
25
25
  function shellEscapeSingle(value) {
26
26
  return `'${value.replace(/'/g, `'\\''`)}'`;
27
27
  }
28
+ function isSafeEnvVarKey(key) {
29
+ return /^[A-Za-z_][A-Za-z0-9_]*$/.test(key);
30
+ }
31
+ function isSupportedDeploymentEnvironment(env) {
32
+ return env === "development" || env === "preview" || env === "production";
33
+ }
28
34
  function hydrateProcessEnv(key, value) {
29
35
  // Make newly collected secrets immediately visible to the current session.
30
36
  // Some extensions read process.env directly and do not reload .env on every call.
@@ -263,12 +269,22 @@ async function applySecrets(provided, destination, opts) {
263
269
  }
264
270
  if ((destination === "vercel" || destination === "convex") && opts.exec) {
265
271
  const env = opts.environment ?? "development";
272
+ if (!isSupportedDeploymentEnvironment(env)) {
273
+ errors.push(`environment: unsupported target environment "${env}"`);
274
+ return { applied, errors };
275
+ }
266
276
  for (const { key, value } of provided) {
277
+ if (!isSafeEnvVarKey(key)) {
278
+ errors.push(`${key}: invalid environment variable name`);
279
+ continue;
280
+ }
267
281
  const cmd = destination === "vercel"
268
282
  ? `printf %s ${shellEscapeSingle(value)} | vercel env add ${key} ${env}`
269
- : `npx convex env set ${key} ${shellEscapeSingle(value)}`;
283
+ : "";
270
284
  try {
271
- const result = await opts.exec("sh", ["-c", cmd]);
285
+ const result = destination === "vercel"
286
+ ? await opts.exec("sh", ["-c", cmd])
287
+ : await opts.exec("npx", ["convex", "env", "set", key, value]);
272
288
  if (result.code !== 0) {
273
289
  errors.push(`${key}: ${result.stderr.slice(0, 200)}`);
274
290
  }
@@ -27,6 +27,7 @@ import { isDbAvailable, getMilestoneSlices } from "../gsd-db.js";
27
27
  import { resetEvidence } from "../safety/evidence-collector.js";
28
28
  import { createCheckpoint, cleanupCheckpoint, rollbackToCheckpoint } from "../safety/git-checkpoint.js";
29
29
  import { resolveSafetyHarnessConfig } from "../safety/safety-harness.js";
30
+ import { getWorkflowTransportSupportError, getRequiredWorkflowToolsForAutoUnit, } from "../workflow-mcp.js";
30
31
  // ─── generateMilestoneReport ──────────────────────────────────────────────────
31
32
  /**
32
33
  * Resolve the base path for milestone reports.
@@ -886,6 +887,22 @@ export async function runUnitPhase(ic, iterData, loopState, sidecarItem) {
886
887
  s.currentDispatchedModelId = s.currentUnitModel
887
888
  ? `${s.currentUnitModel.provider ?? ""}/${s.currentUnitModel.id ?? ""}`
888
889
  : null;
890
+ const compatibilityError = getWorkflowTransportSupportError(s.currentUnitModel?.provider ?? ctx.model?.provider, getRequiredWorkflowToolsForAutoUnit(unitType), {
891
+ projectRoot: s.basePath,
892
+ surface: "auto-mode",
893
+ unitType,
894
+ authMode: s.currentUnitModel?.provider
895
+ ? ctx.modelRegistry.getProviderAuthMode(s.currentUnitModel.provider)
896
+ : ctx.model?.provider
897
+ ? ctx.modelRegistry.getProviderAuthMode(ctx.model.provider)
898
+ : undefined,
899
+ baseUrl: s.currentUnitModel?.baseUrl ?? ctx.model?.baseUrl,
900
+ });
901
+ if (compatibilityError) {
902
+ ctx.ui.notify(compatibilityError, "error");
903
+ await deps.stopAuto(ctx, pi, compatibilityError);
904
+ return { action: "break", reason: "workflow-capability" };
905
+ }
889
906
  // Progress widget + preconditions — deferred to after model selection so the
890
907
  // widget's first render tick shows the correct model (#2899).
891
908
  deps.updateProgressWidget(ctx, unitType, unitId, state);
@@ -10,6 +10,7 @@ import { resolveMilestoneFile, resolveSliceFile, relSliceFile, } from "./paths.j
10
10
  import { buildResearchSlicePrompt, buildResearchMilestonePrompt, buildPlanSlicePrompt, buildPlanMilestonePrompt, buildExecuteTaskPrompt, buildCompleteSlicePrompt, buildCompleteMilestonePrompt, buildReassessRoadmapPrompt, buildRunUatPrompt, buildReplanSlicePrompt, } from "./auto-prompts.js";
11
11
  import { loadEffectiveGSDPreferences } from "./preferences.js";
12
12
  import { pauseAuto } from "./auto.js";
13
+ import { getWorkflowTransportSupportError, getRequiredWorkflowToolsForAutoUnit, } from "./workflow-mcp.js";
13
14
  export async function dispatchDirectPhase(ctx, pi, phase, base) {
14
15
  const state = await deriveState(base);
15
16
  const mid = state.activeMilestone?.id;
@@ -202,6 +203,17 @@ export async function dispatchDirectPhase(ctx, pi, phase, base) {
202
203
  ctx.ui.notify(`Unknown phase "${phase}". Valid phases: research, plan, execute, complete, reassess, uat, replan.`, "warning");
203
204
  return;
204
205
  }
206
+ const compatibilityError = getWorkflowTransportSupportError(ctx.model?.provider, getRequiredWorkflowToolsForAutoUnit(unitType), {
207
+ projectRoot: base,
208
+ surface: "direct phase dispatch",
209
+ unitType,
210
+ authMode: ctx.model?.provider ? ctx.modelRegistry.getProviderAuthMode(ctx.model.provider) : undefined,
211
+ baseUrl: ctx.model?.baseUrl,
212
+ });
213
+ if (compatibilityError) {
214
+ ctx.ui.notify(compatibilityError, "error");
215
+ return;
216
+ }
205
217
  ctx.ui.notify(`Dispatching ${unitType} for ${unitId}...`, "info");
206
218
  const result = await ctx.newSession();
207
219
  if (result.cancelled) {
@@ -40,6 +40,7 @@ import { loadEffectiveGSDPreferences } from "./preferences.js";
40
40
  import { getSliceTasks } from "./gsd-db.js";
41
41
  import { runPreExecutionChecks } from "./pre-execution-checks.js";
42
42
  import { writePreExecutionEvidence } from "./verification-evidence.js";
43
+ import { ensureCodebaseMapFresh } from "./codebase-generator.js";
43
44
  /** Maximum verification retry attempts before escalating to blocker placeholder (#2653). */
44
45
  const MAX_VERIFICATION_RETRIES = 3;
45
46
  /** Enqueue a sidecar item (hook, triage, or quick-task) for the main loop to
@@ -553,6 +554,31 @@ export async function postUnitPreVerification(pctx, opts) {
553
554
  */
554
555
  export async function postUnitPostVerification(pctx) {
555
556
  const { s, ctx, pi, buildSnapshotOpts, lockBase, stopAuto, pauseAuto, updateProgressWidget } = pctx;
557
+ if (s.currentUnit) {
558
+ try {
559
+ const codebasePrefs = loadEffectiveGSDPreferences()?.preferences?.codebase;
560
+ const refresh = ensureCodebaseMapFresh(s.basePath, codebasePrefs
561
+ ? {
562
+ excludePatterns: codebasePrefs.exclude_patterns,
563
+ maxFiles: codebasePrefs.max_files,
564
+ collapseThreshold: codebasePrefs.collapse_threshold,
565
+ }
566
+ : undefined, { force: true, ttlMs: 0 });
567
+ if (refresh.status === "generated" || refresh.status === "updated") {
568
+ debugLog("postUnit", {
569
+ phase: "codebase-refresh",
570
+ unitType: s.currentUnit.type,
571
+ unitId: s.currentUnit.id,
572
+ status: refresh.status,
573
+ fileCount: refresh.fileCount,
574
+ reason: refresh.reason,
575
+ });
576
+ }
577
+ }
578
+ catch (e) {
579
+ logWarning("engine", `CODEBASE refresh failed: ${e.message}`);
580
+ }
581
+ }
556
582
  // ── Post-unit hooks ──
557
583
  if (s.currentUnit && !s.stepMode) {
558
584
  const hookUnit = checkPostUnitHooks(s.currentUnit.type, s.currentUnit.id, s.basePath);