gsd-pi 2.67.0-dev.43b0159 → 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 (585) 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 +2 -2
  17. package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -0
  18. package/dist/resources/extensions/gsd/commands-bootstrap.js +9 -0
  19. package/dist/resources/extensions/gsd/commands-codebase.js +4 -3
  20. package/dist/resources/extensions/gsd/doctor-git-checks.js +4 -4
  21. package/dist/resources/extensions/gsd/doctor-proactive.js +3 -3
  22. package/dist/resources/extensions/gsd/guided-flow.js +16 -0
  23. package/dist/resources/extensions/gsd/prompts/system.md +3 -0
  24. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +508 -0
  25. package/dist/resources/extensions/gsd/workflow-mcp.js +190 -0
  26. package/dist/resources/extensions/gsd/workflow-reconcile.js +0 -4
  27. package/dist/resources/extensions/gsd/worktree-manager.js +6 -2
  28. package/dist/web/standalone/.next/BUILD_ID +1 -1
  29. package/dist/web/standalone/.next/app-path-routes-manifest.json +19 -19
  30. package/dist/web/standalone/.next/build-manifest.json +5 -5
  31. package/dist/web/standalone/.next/prerender-manifest.json +13 -13
  32. package/dist/web/standalone/.next/react-loadable-manifest.json +6 -6
  33. package/dist/web/standalone/.next/required-server-files.json +18 -6
  34. package/dist/web/standalone/.next/routes-manifest.json +1 -0
  35. package/dist/web/standalone/.next/server/app/_global-error/page.js +32 -3
  36. package/dist/web/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  37. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  38. package/dist/web/standalone/.next/server/app/_global-error.html +1 -2
  39. package/dist/web/standalone/.next/server/app/_global-error.rsc +8 -6
  40. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +8 -6
  41. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  42. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +2 -1
  43. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +2 -1
  45. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  47. package/dist/web/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  48. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  50. package/dist/web/standalone/.next/server/app/_not-found.rsc +9 -7
  51. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +9 -7
  52. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  53. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  54. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  55. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +2 -1
  56. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  57. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  58. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  59. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  60. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  61. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  62. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  63. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  64. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  65. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  66. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  67. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  68. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  69. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  70. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js.nft.json +1 -1
  71. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  72. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  73. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  74. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  75. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  76. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  77. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  78. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  79. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js.nft.json +1 -1
  80. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  81. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  82. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  83. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  84. package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
  85. package/dist/web/standalone/.next/server/app/api/experimental/route.js.nft.json +1 -1
  86. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  87. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  88. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  89. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  90. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  91. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  92. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  93. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  94. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  95. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  96. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  97. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  98. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  99. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  100. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  101. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  103. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  104. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  105. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  106. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  107. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  109. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  110. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  111. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  112. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  113. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/notifications/route.js +2 -2
  115. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  116. package/dist/web/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  117. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  118. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  119. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  120. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  121. package/dist/web/standalone/.next/server/app/api/preferences/route.js.nft.json +1 -1
  122. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  123. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  124. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  125. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  126. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  127. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  128. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
  130. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js.nft.json +1 -1
  131. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  133. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  134. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  135. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  136. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  137. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  139. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  140. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  141. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  142. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  143. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  145. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  146. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  147. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  148. package/dist/web/standalone/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  149. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  151. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  152. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  154. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  155. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  157. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  158. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js.nft.json +1 -1
  161. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  163. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js.nft.json +1 -1
  164. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  165. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  166. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  167. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  169. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  170. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  171. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js.nft.json +1 -1
  173. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  176. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  179. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  180. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  181. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  182. package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
  183. package/dist/web/standalone/.next/server/app/index.html +1 -1
  184. package/dist/web/standalone/.next/server/app/index.rsc +2 -2
  185. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  186. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
  187. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  188. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  189. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  190. package/dist/web/standalone/.next/server/app/page.js +2 -2
  191. package/dist/web/standalone/.next/server/app/page.js.nft.json +1 -1
  192. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  193. package/dist/web/standalone/.next/server/app-paths-manifest.json +19 -19
  194. package/dist/web/standalone/.next/server/chunks/2331.js +7 -7
  195. package/dist/web/standalone/.next/server/chunks/4741.js +5 -9
  196. package/dist/web/standalone/.next/server/chunks/63.js +45 -0
  197. package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
  198. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  199. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  200. package/dist/web/standalone/.next/server/middleware.js +11 -8
  201. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  202. package/dist/web/standalone/.next/server/pages/500.html +1 -2
  203. package/dist/web/standalone/.next/server/prefetch-hints.json +1 -0
  204. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  205. package/dist/web/standalone/.next/static/IBTC_HlEpTBAa4HXMoV_A/_buildManifest.js +1 -0
  206. package/dist/web/standalone/.next/static/chunks/2008.71ee9230ad78df21.js +20 -0
  207. package/dist/web/standalone/.next/static/chunks/{363642f4.f9053a63f1b97508.js → 363642f4.cf8b455e0d94b478.js} +1 -1
  208. package/dist/web/standalone/.next/static/chunks/3794-42fdce068d44fa4f.js +32 -0
  209. package/dist/web/standalone/.next/static/chunks/{4447.f86b52aea068b189.js → 4447.5bad7871be61ca73.js} +1 -1
  210. package/dist/web/standalone/.next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
  211. package/dist/web/standalone/.next/static/chunks/{e868780c.f7831045ac345aaa.js → e868780c.abc48b70a10fc2d6.js} +3 -3
  212. package/dist/web/standalone/.next/static/chunks/framework-711ef29bc66f648c.js +1 -0
  213. package/dist/web/standalone/.next/static/chunks/main-6919d9dd919bd15f.js +5 -0
  214. package/dist/web/standalone/.next/static/chunks/{webpack-65f0501b197d1c49.js → webpack-b49b09f97429b5d0.js} +1 -1
  215. package/dist/web/standalone/node_modules/@next/env/package.json +1 -1
  216. package/dist/web/standalone/node_modules/next/dist/build/adapter/setup-node-env.external.js +15 -0
  217. package/dist/web/standalone/node_modules/next/dist/build/analysis/extract-const-value.js +78 -63
  218. package/dist/web/standalone/node_modules/next/dist/build/analysis/get-page-static-info.js +64 -40
  219. package/dist/web/standalone/node_modules/next/dist/build/create-compiler-aliases.js +2 -0
  220. package/dist/web/standalone/node_modules/next/dist/build/define-env.js +29 -11
  221. package/dist/web/standalone/node_modules/next/dist/build/duration-to-string.js +1 -1
  222. package/dist/web/standalone/node_modules/next/dist/build/entries.js +55 -295
  223. package/dist/web/standalone/node_modules/next/dist/build/file-classifier.js +76 -0
  224. package/dist/web/standalone/node_modules/next/dist/build/get-supported-browsers.js +38 -0
  225. package/dist/web/standalone/node_modules/next/dist/build/load-jsconfig.js +7 -7
  226. package/dist/web/standalone/node_modules/next/dist/build/lockfile.js +90 -9
  227. package/dist/web/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +128 -49
  228. package/dist/web/standalone/node_modules/next/dist/build/print-build-errors.js +72 -0
  229. package/dist/web/standalone/node_modules/next/dist/build/route-discovery.js +353 -0
  230. package/dist/web/standalone/node_modules/next/dist/build/segment-config/app/app-segment-config.js +34 -17
  231. package/dist/web/standalone/node_modules/next/dist/build/static-paths/app.js +68 -15
  232. package/dist/web/standalone/node_modules/next/dist/build/static-paths/pages.js +3 -3
  233. package/dist/web/standalone/node_modules/next/dist/build/swc/index.js +125 -48
  234. package/dist/web/standalone/node_modules/next/dist/build/swc/loaderWorkerPool.js +40 -0
  235. package/dist/web/standalone/node_modules/next/dist/build/swc/options.js +23 -6
  236. package/dist/web/standalone/node_modules/next/dist/build/utils.js +48 -94
  237. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/index.js +14 -3
  238. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/global.js +4 -2
  239. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/modules.js +4 -2
  240. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/next-font.js +1 -0
  241. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/plugins.js +5 -5
  242. package/dist/web/standalone/node_modules/next/dist/build/webpack/config/index.js +3 -2
  243. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js +2 -1
  244. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-url-parser.js +8 -1
  245. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/loader.js +13 -4
  246. package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js +3 -1
  247. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin-utils.js +2 -16
  248. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin.js +2 -2
  249. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/deferred-entries-plugin.js +106 -0
  250. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/flight-client-entry-plugin.js +16 -8
  251. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.js +24 -11
  252. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/middleware-plugin.js +21 -2
  253. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/next-types-plugin/index.js +6 -5
  254. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/nextjs-require-cache-hot-reloader.js +10 -14
  255. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +18 -4
  256. package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseScss.js +5 -4
  257. package/dist/web/standalone/node_modules/next/dist/build/webpack-config.js +18 -8
  258. package/dist/web/standalone/node_modules/next/dist/cli/next-test.js +4 -3
  259. package/dist/web/standalone/node_modules/next/dist/client/app-find-source-map-url.js +2 -1
  260. package/dist/web/standalone/node_modules/next/dist/client/components/app-router-headers.js +10 -0
  261. package/dist/web/standalone/node_modules/next/dist/client/components/app-router-instance.js +82 -4
  262. package/dist/web/standalone/node_modules/next/dist/client/components/app-router.js +39 -20
  263. package/dist/web/standalone/node_modules/next/dist/client/components/builtin/app-error.js +29 -65
  264. package/dist/web/standalone/node_modules/next/dist/client/components/builtin/error-styles.js +165 -0
  265. package/dist/web/standalone/node_modules/next/dist/client/components/builtin/global-error.js +56 -38
  266. package/dist/web/standalone/node_modules/next/dist/client/components/error-boundary.js +16 -6
  267. package/dist/web/standalone/node_modules/next/dist/client/components/forbidden.js +1 -1
  268. package/dist/web/standalone/node_modules/next/dist/client/components/handle-isr-error.js +3 -4
  269. package/dist/web/standalone/node_modules/next/dist/client/components/links.js +7 -0
  270. package/dist/web/standalone/node_modules/next/dist/client/components/navigation-untracked.js +2 -0
  271. package/dist/web/standalone/node_modules/next/dist/client/components/navigation.js +27 -0
  272. package/dist/web/standalone/node_modules/next/dist/client/components/navigation.react-server.js +5 -2
  273. package/dist/web/standalone/node_modules/next/dist/client/components/not-found.js +1 -1
  274. package/dist/web/standalone/node_modules/next/dist/client/components/redirect-boundary.js +1 -1
  275. package/dist/web/standalone/node_modules/next/dist/client/components/redirect-error.js +0 -9
  276. package/dist/web/standalone/node_modules/next/dist/client/components/redirect.js +2 -2
  277. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +73 -0
  278. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +102 -8
  279. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +165 -48
  280. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +19 -11
  281. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +669 -457
  282. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js +49 -0
  283. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +19 -20
  284. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +5 -117
  285. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +34 -19
  286. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +16 -32
  287. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +85 -57
  288. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +12 -10
  289. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js +10 -1
  290. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer.js +1 -1
  291. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/bfcache.js +128 -0
  292. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/cache.js +732 -231
  293. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/lru.js +13 -6
  294. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +194 -0
  295. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/navigation.js +388 -250
  296. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +543 -0
  297. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/scheduler.js +154 -55
  298. package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/vary-path.js +63 -1
  299. package/dist/web/standalone/node_modules/next/dist/client/components/unauthorized.js +1 -1
  300. package/dist/web/standalone/node_modules/next/dist/client/components/use-action-queue.js +49 -3
  301. package/dist/web/standalone/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js +9 -1
  302. package/dist/web/standalone/node_modules/next/dist/client/flight-data-helpers.js +42 -29
  303. package/dist/web/standalone/node_modules/next/dist/client/lib/javascript-url.js +32 -0
  304. package/dist/web/standalone/node_modules/next/dist/client/lib/promise.js +53 -0
  305. package/dist/web/standalone/node_modules/next/dist/client/{app-build-id.js → navigation-build-id.js} +17 -13
  306. package/dist/web/standalone/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js +14 -0
  307. package/dist/web/standalone/node_modules/next/dist/client/route-loader.js +9 -46
  308. package/dist/web/standalone/node_modules/next/dist/client/router.js +1 -1
  309. package/dist/web/standalone/node_modules/next/dist/compiled/@next/font/dist/google/font-data.json +74 -3
  310. package/dist/web/standalone/node_modules/next/dist/compiled/babel/bundle.js +1 -1
  311. package/dist/web/standalone/node_modules/next/dist/compiled/babel-packages/packages-bundle.js +5 -5
  312. package/dist/web/standalone/node_modules/next/dist/compiled/browserslist/index.js +1 -1
  313. package/dist/web/standalone/node_modules/next/dist/compiled/http-proxy/index.js +5 -5
  314. package/dist/web/standalone/node_modules/next/dist/compiled/jsonwebtoken/index.js +2 -2
  315. package/dist/web/standalone/node_modules/next/dist/compiled/next-devtools/index.js +2209 -23
  316. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +42 -12
  317. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +42 -12
  318. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +42 -12
  319. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +42 -12
  320. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +2 -2
  321. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +10 -10
  322. package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +10 -10
  323. package/dist/web/standalone/node_modules/next/dist/compiled/react-is/package.json +1 -1
  324. package/dist/web/standalone/node_modules/next/dist/compiled/tar/index.min.js +1 -0
  325. package/dist/web/standalone/node_modules/next/dist/compiled/tar/package.json +1 -1
  326. package/dist/web/standalone/node_modules/next/dist/compiled/unistore/unistore.js +1 -1
  327. package/dist/web/standalone/node_modules/next/dist/lib/bundler.js +97 -0
  328. package/dist/web/standalone/node_modules/next/dist/lib/constants.js +19 -4
  329. package/dist/web/standalone/node_modules/next/dist/lib/download-swc.js +2 -2
  330. package/dist/web/standalone/node_modules/next/dist/lib/find-root.js +11 -7
  331. package/dist/web/standalone/node_modules/next/dist/lib/format-server-error.js +1 -0
  332. package/dist/web/standalone/node_modules/next/dist/lib/generate-interception-routes-rewrites.js +3 -20
  333. package/dist/web/standalone/node_modules/next/dist/lib/interop-default.js +1 -0
  334. package/dist/web/standalone/node_modules/next/dist/lib/is-interception-route-rewrite.js +18 -0
  335. package/dist/web/standalone/node_modules/next/dist/lib/load-custom-routes.js +49 -5
  336. package/dist/web/standalone/node_modules/next/dist/lib/memory/trace.js +109 -0
  337. package/dist/web/standalone/node_modules/next/dist/lib/metadata/get-metadata-route.js +11 -2
  338. package/dist/web/standalone/node_modules/next/dist/lib/needs-experimental-react.js +2 -2
  339. package/dist/web/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +5 -5
  340. package/dist/web/standalone/node_modules/next/dist/lib/try-to-parse-path.js +1 -2
  341. package/dist/web/standalone/node_modules/next/dist/lib/turbopack-warning.js +0 -1
  342. package/dist/web/standalone/node_modules/next/dist/lib/typescript/diagnosticFormatter.js +6 -3
  343. package/dist/web/standalone/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +81 -1
  344. package/dist/web/standalone/node_modules/next/dist/lib/typescript/missingDependencyError.js +1 -1
  345. package/dist/web/standalone/node_modules/next/dist/lib/typescript/runTypeCheck.js +6 -8
  346. package/dist/web/standalone/node_modules/next/dist/lib/typescript/type-paths.js +7 -12
  347. package/dist/web/standalone/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +17 -7
  348. package/dist/web/standalone/node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js +33 -32
  349. package/dist/web/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +66 -16
  350. package/dist/web/standalone/node_modules/next/dist/next-devtools/server/shared.js +6 -10
  351. package/dist/web/standalone/node_modules/next/dist/next-devtools/shared/webpack-module-path.js +4 -4
  352. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js +22 -4
  353. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js +7 -1
  354. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/forward-logs.js +18 -13
  355. package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js +7 -4
  356. package/dist/web/standalone/node_modules/next/dist/server/app-render/action-handler.js +83 -15
  357. package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +0 -82
  358. package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render-render-utils.js +45 -81
  359. package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render.js +1746 -803
  360. package/dist/web/standalone/node_modules/next/dist/server/app-render/create-component-tree.js +136 -50
  361. package/dist/web/standalone/node_modules/next/dist/server/app-render/create-error-handler.js +6 -4
  362. package/dist/web/standalone/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +52 -26
  363. package/dist/web/standalone/node_modules/next/dist/server/app-render/csrf-protection.js +14 -3
  364. package/dist/web/standalone/node_modules/next/dist/server/app-render/debug-channel-server.js +30 -0
  365. package/dist/web/standalone/node_modules/next/dist/server/app-render/debug-channel-server.web.js +71 -0
  366. package/dist/web/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +353 -37
  367. package/dist/web/standalone/node_modules/next/dist/server/app-render/get-asset-query-string.js +2 -2
  368. package/dist/web/standalone/node_modules/next/dist/server/app-render/get-layer-assets.js +1 -1
  369. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js +13 -0
  370. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +18 -0
  371. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +181 -0
  372. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples-client.js +128 -0
  373. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +432 -0
  374. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js +33 -0
  375. package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/stream-utils.js +96 -0
  376. package/dist/web/standalone/node_modules/next/dist/server/app-render/manifests-singleton.js +8 -1
  377. package/dist/web/standalone/node_modules/next/dist/server/app-render/postponed-state.js +2 -1
  378. package/dist/web/standalone/node_modules/next/dist/server/app-render/prospective-render-utils.js +1 -0
  379. package/dist/web/standalone/node_modules/next/dist/server/app-render/segment-explorer-path.js +35 -10
  380. package/dist/web/standalone/node_modules/next/dist/server/app-render/staged-rendering.js +142 -72
  381. package/dist/web/standalone/node_modules/next/dist/server/app-render/stale-time.js +111 -0
  382. package/dist/web/standalone/node_modules/next/dist/server/app-render/stream-ops.js +106 -0
  383. package/dist/web/standalone/node_modules/next/dist/server/app-render/stream-ops.web.js +163 -0
  384. package/dist/web/standalone/node_modules/next/dist/server/app-render/types.js +10 -4
  385. package/dist/web/standalone/node_modules/next/dist/server/app-render/use-flight-response.js +3 -1
  386. package/dist/web/standalone/node_modules/next/dist/server/app-render/vary-params.js +336 -0
  387. package/dist/web/standalone/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +59 -12
  388. package/dist/web/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +54 -26
  389. package/dist/web/standalone/node_modules/next/dist/server/async-storage/request-store.js +4 -4
  390. package/dist/web/standalone/node_modules/next/dist/server/async-storage/work-store.js +2 -5
  391. package/dist/web/standalone/node_modules/next/dist/server/base-server.js +65 -53
  392. package/dist/web/standalone/node_modules/next/dist/server/config-schema.js +94 -8
  393. package/dist/web/standalone/node_modules/next/dist/server/config-shared.js +57 -7
  394. package/dist/web/standalone/node_modules/next/dist/server/config.js +96 -25
  395. package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/file-logger.js +9 -6
  396. package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +46 -0
  397. package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/source-map.js +1 -4
  398. package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +266 -33
  399. package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +8 -4
  400. package/dist/web/standalone/node_modules/next/dist/server/dev/log-requests.js +10 -2
  401. package/dist/web/standalone/node_modules/next/dist/server/dev/middleware-turbopack.js +20 -10
  402. package/dist/web/standalone/node_modules/next/dist/server/dev/middleware-webpack.js +13 -3
  403. package/dist/web/standalone/node_modules/next/dist/server/dev/next-dev-server.js +19 -6
  404. package/dist/web/standalone/node_modules/next/dist/server/dev/on-demand-entry-handler.js +69 -0
  405. package/dist/web/standalone/node_modules/next/dist/server/dev/require-cache.js +51 -21
  406. package/dist/web/standalone/node_modules/next/dist/server/dev/server-action-logger.js +37 -0
  407. package/dist/web/standalone/node_modules/next/dist/server/dev/static-paths-worker.js +1 -0
  408. package/dist/web/standalone/node_modules/next/dist/server/dev/turbopack-utils.js +6 -15
  409. package/dist/web/standalone/node_modules/next/dist/server/dynamic-rendering-utils.js +22 -0
  410. package/dist/web/standalone/node_modules/next/dist/server/image-optimizer.js +157 -27
  411. package/dist/web/standalone/node_modules/next/dist/server/lib/app-info-log.js +16 -38
  412. package/dist/web/standalone/node_modules/next/dist/server/lib/cache-control.js +1 -1
  413. package/dist/web/standalone/node_modules/next/dist/server/lib/clone-response.js +16 -16
  414. package/dist/web/standalone/node_modules/next/dist/server/lib/cpu-profile.js +47 -16
  415. package/dist/web/standalone/node_modules/next/dist/server/lib/dev-bundler-service.js +2 -2
  416. package/dist/web/standalone/node_modules/next/dist/server/lib/disk-lru-cache.external.js +57 -0
  417. package/dist/web/standalone/node_modules/next/dist/server/lib/find-page-file.js +27 -7
  418. package/dist/web/standalone/node_modules/next/dist/server/lib/implicit-tags.js +3 -3
  419. package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +5 -3
  420. package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +32 -10
  421. package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +18 -1
  422. package/dist/web/standalone/node_modules/next/dist/server/lib/install-code-frame.js +22 -0
  423. package/dist/web/standalone/node_modules/next/dist/server/lib/lru-cache.js +9 -1
  424. package/dist/web/standalone/node_modules/next/dist/server/lib/patch-fetch.js +40 -7
  425. package/dist/web/standalone/node_modules/next/dist/server/lib/postponed-request-body.js +64 -0
  426. package/dist/web/standalone/node_modules/next/dist/server/lib/render-server.js +4 -1
  427. package/dist/web/standalone/node_modules/next/dist/server/lib/router-server.js +37 -13
  428. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +110 -0
  429. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/filesystem.js +16 -15
  430. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +32 -11
  431. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +3 -3
  432. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js +71 -71
  433. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/typegen.js +247 -2
  434. package/dist/web/standalone/node_modules/next/dist/server/lib/server-ipc/utils.js +2 -1
  435. package/dist/web/standalone/node_modules/next/dist/server/lib/start-server.js +73 -39
  436. package/dist/web/standalone/node_modules/next/dist/server/lib/trace/tracer.js +11 -1
  437. package/dist/web/standalone/node_modules/next/dist/server/lib/utils.js +40 -11
  438. package/dist/web/standalone/node_modules/next/dist/server/load-components.js +2 -0
  439. package/dist/web/standalone/node_modules/next/dist/server/load-manifest.external.js +37 -17
  440. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-errors.js +11 -4
  441. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-logs.js +9 -3
  442. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-page-metadata.js +52 -44
  443. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-project-metadata.js +6 -2
  444. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-routes.js +44 -79
  445. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-server-action-by-id.js +12 -4
  446. package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +62 -72
  447. package/dist/web/standalone/node_modules/next/dist/server/next-server.js +69 -99
  448. package/dist/web/standalone/node_modules/next/dist/server/next.js +3 -0
  449. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +61 -6
  450. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/date.js +4 -4
  451. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +13 -6
  452. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/{utils.js → io-utils.js} +14 -5
  453. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/node-crypto.js +8 -8
  454. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +91 -0
  455. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/random.js +2 -2
  456. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/{unhandled-rejection.js → unhandled-rejection.external.js} +23 -4
  457. package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/web-crypto.js +3 -3
  458. package/dist/web/standalone/node_modules/next/dist/server/node-environment.js +1 -1
  459. package/dist/web/standalone/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.js +2 -1
  460. package/dist/web/standalone/node_modules/next/dist/server/patch-error-inspect.js +37 -20
  461. package/dist/web/standalone/node_modules/next/dist/server/render-result.js +9 -0
  462. package/dist/web/standalone/node_modules/next/dist/server/render.js +47 -44
  463. package/dist/web/standalone/node_modules/next/dist/server/require-hook.js +19 -8
  464. package/dist/web/standalone/node_modules/next/dist/server/response-cache/utils.js +1 -0
  465. package/dist/web/standalone/node_modules/next/dist/server/resume-data-cache/cache-store.js +35 -23
  466. package/dist/web/standalone/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +16 -7
  467. package/dist/web/standalone/node_modules/next/dist/server/revalidation-utils.js +12 -7
  468. package/dist/web/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +2 -1
  469. package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +4 -1
  470. package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/module.js +31 -1
  471. package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/normalize-request-url.js +25 -0
  472. package/dist/web/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +31 -8
  473. package/dist/web/standalone/node_modules/next/dist/server/route-modules/route-module.js +71 -18
  474. package/dist/web/standalone/node_modules/next/dist/server/stream-utils/encoded-tags.js +8 -0
  475. package/dist/web/standalone/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +239 -58
  476. package/dist/web/standalone/node_modules/next/dist/server/stream-utils/uint8array-helpers.js +7 -2
  477. package/dist/web/standalone/node_modules/next/dist/server/typescript/constant.js +1 -0
  478. package/dist/web/standalone/node_modules/next/dist/server/typescript/rules/config.js +14 -3
  479. package/dist/web/standalone/node_modules/next/dist/server/web/adapter.js +7 -3
  480. package/dist/web/standalone/node_modules/next/dist/server/web/next-url.js +6 -2
  481. package/dist/web/standalone/node_modules/next/dist/server/web/sandbox/sandbox.js +3 -0
  482. package/dist/web/standalone/node_modules/next/dist/shared/lib/app-router-types.js +30 -11
  483. package/dist/web/standalone/node_modules/next/dist/shared/lib/constants.js +7 -7
  484. package/dist/web/standalone/node_modules/next/dist/shared/lib/deployment-id.js +37 -10
  485. package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  486. package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/code-frame.js +20 -0
  487. package/dist/web/standalone/node_modules/next/dist/shared/lib/format-webpack-messages.js +22 -2
  488. package/dist/web/standalone/node_modules/next/dist/shared/lib/image-config.js +3 -1
  489. package/dist/web/standalone/node_modules/next/dist/shared/lib/is-internal.js +2 -0
  490. package/dist/web/standalone/node_modules/next/dist/shared/lib/magic-identifier.js +6 -6
  491. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/router.js +32 -0
  492. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +11 -0
  493. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +11 -4
  494. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js +3 -2
  495. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +9 -2
  496. package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-url.js +8 -2
  497. package/dist/web/standalone/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +32 -0
  498. package/dist/web/standalone/node_modules/next/dist/shared/lib/server-reference-info.js +4 -0
  499. package/dist/web/standalone/node_modules/next/dist/shared/lib/size-limit.js +6 -1
  500. package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/compilation-events.js +47 -10
  501. package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/manifest-loader.js +90 -116
  502. package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/utils.js +14 -26
  503. package/dist/web/standalone/node_modules/next/dist/shared/lib/utils/reflect-utils.js +69 -0
  504. package/dist/web/standalone/node_modules/next/dist/shared/lib/utils.js +2 -2
  505. package/dist/web/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  506. package/dist/web/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  507. package/dist/web/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  508. package/dist/web/standalone/node_modules/next/dist/trace/index.js +4 -0
  509. package/dist/web/standalone/node_modules/next/dist/trace/report/to-json-build.js +11 -108
  510. package/dist/web/standalone/node_modules/next/dist/trace/report/to-json.js +52 -38
  511. package/dist/web/standalone/node_modules/next/dist/trace/trace.js +15 -1
  512. package/dist/web/standalone/node_modules/next/package.json +21 -23
  513. package/dist/web/standalone/node_modules/react/cjs/react.development.js +1284 -0
  514. package/dist/web/standalone/package.json +2 -2
  515. package/dist/web/standalone/server.js +1 -1
  516. package/package.json +1 -1
  517. package/packages/mcp-server/README.md +38 -0
  518. package/packages/mcp-server/src/server.ts +6 -2
  519. package/packages/mcp-server/src/workflow-tools.test.ts +976 -0
  520. package/packages/mcp-server/src/workflow-tools.ts +986 -0
  521. package/packages/pi-ai/dist/utils/event-stream.d.ts +2 -0
  522. package/packages/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  523. package/packages/pi-ai/dist/utils/event-stream.js +4 -0
  524. package/packages/pi-ai/dist/utils/event-stream.js.map +1 -1
  525. package/packages/pi-ai/src/utils/event-stream.ts +5 -0
  526. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  527. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +12 -2
  528. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  529. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts +13 -0
  530. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts.map +1 -0
  531. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js +27 -0
  532. package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js.map +1 -0
  533. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +15 -2
  534. package/packages/pi-coding-agent/src/modes/interactive/provider-auth-setup.ts +40 -0
  535. package/src/resources/GSD-WORKFLOW.md +3 -1
  536. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +96 -44
  537. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +211 -2
  538. package/src/resources/extensions/get-secrets-from-user.ts +20 -2
  539. package/src/resources/extensions/gsd/auto/phases.ts +25 -0
  540. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +20 -0
  541. package/src/resources/extensions/gsd/auto-post-unit.ts +30 -1
  542. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +22 -435
  543. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +1 -5
  544. package/src/resources/extensions/gsd/bootstrap/query-tools.ts +7 -72
  545. package/src/resources/extensions/gsd/bootstrap/system-context.ts +18 -4
  546. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +122 -6
  547. package/src/resources/extensions/gsd/codebase-generator.ts +261 -16
  548. package/src/resources/extensions/gsd/commands/catalog.ts +2 -2
  549. package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -0
  550. package/src/resources/extensions/gsd/commands-bootstrap.ts +10 -0
  551. package/src/resources/extensions/gsd/commands-codebase.ts +4 -3
  552. package/src/resources/extensions/gsd/doctor-git-checks.ts +4 -4
  553. package/src/resources/extensions/gsd/doctor-proactive.ts +3 -3
  554. package/src/resources/extensions/gsd/guided-flow.ts +24 -0
  555. package/src/resources/extensions/gsd/prompts/system.md +3 -0
  556. package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +68 -0
  557. package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +66 -0
  558. package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +9 -2
  559. package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +33 -0
  560. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +7 -0
  561. package/src/resources/extensions/gsd/tests/update-command.test.ts +19 -0
  562. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +301 -0
  563. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +625 -0
  564. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +629 -0
  565. package/src/resources/extensions/gsd/workflow-mcp.ts +233 -0
  566. package/src/resources/extensions/gsd/workflow-reconcile.ts +0 -5
  567. package/src/resources/extensions/gsd/worktree-manager.ts +6 -2
  568. package/dist/web/standalone/.next/server/chunks/7471.js +0 -13
  569. package/dist/web/standalone/.next/static/CrKrzIIxk55witDF1eS0L/_buildManifest.js +0 -1
  570. package/dist/web/standalone/.next/static/chunks/2008.817d0885545aaea9.js +0 -20
  571. package/dist/web/standalone/.next/static/chunks/3794-337d1ca25ad99a89.js +0 -2
  572. package/dist/web/standalone/.next/static/chunks/4bd1b696-e5d7c65570c947b7.js +0 -1
  573. package/dist/web/standalone/.next/static/chunks/framework-0675a4b5b92df616.js +0 -1
  574. package/dist/web/standalone/.next/static/chunks/main-cb72b7c5b8014fa5.js +0 -5
  575. package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/handle-mutable.js +0 -66
  576. package/dist/web/standalone/node_modules/next/dist/compiled/babel/code-frame.js +0 -1
  577. package/dist/web/standalone/node_modules/next/dist/compiled/babel-code-frame/index.js +0 -1
  578. package/dist/web/standalone/node_modules/next/dist/compiled/babel-code-frame/package.json +0 -1
  579. package/dist/web/standalone/node_modules/next/dist/compiled/tar/index.js +0 -1
  580. package/dist/web/standalone/node_modules/next/dist/server/app-render/staged-validation.js +0 -32
  581. package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site.js +0 -76
  582. package/dist/web/standalone/node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js +0 -52
  583. package/dist/web/standalone/node_modules/typescript/lib/typescript.js +0 -198668
  584. package/dist/web/standalone/node_modules/typescript/package.json +0 -120
  585. /package/dist/web/standalone/.next/static/{CrKrzIIxk55witDF1eS0L → IBTC_HlEpTBAa4HXMoV_A}/_ssgManifest.js +0 -0
@@ -8,6 +8,7 @@
8
8
  * Maintenance: agent updates descriptions as it works; incremental update preserves them.
9
9
  */
10
10
 
11
+ import { createHash } from "node:crypto";
11
12
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
12
13
  import { join, dirname, extname } from "node:path";
13
14
 
@@ -22,6 +23,28 @@ export interface CodebaseMapOptions {
22
23
  collapseThreshold?: number;
23
24
  }
24
25
 
26
+ export interface CodebaseMapMetadata {
27
+ generatedAt: string;
28
+ fingerprint: string;
29
+ fileCount: number;
30
+ truncated: boolean;
31
+ }
32
+
33
+ export interface EnsureCodebaseMapOptions {
34
+ ttlMs?: number;
35
+ maxAgeMs?: number;
36
+ force?: boolean;
37
+ }
38
+
39
+ export interface EnsureCodebaseMapResult {
40
+ status: "generated" | "updated" | "fresh" | "empty";
41
+ fileCount: number;
42
+ truncated: boolean;
43
+ generatedAt: string | null;
44
+ fingerprint: string | null;
45
+ reason?: string;
46
+ }
47
+
25
48
  interface FileEntry {
26
49
  path: string;
27
50
  description: string;
@@ -33,6 +56,18 @@ interface DirectoryGroup {
33
56
  collapsed: boolean;
34
57
  }
35
58
 
59
+ interface ResolvedCodebaseMapOptions {
60
+ excludes: string[];
61
+ maxFiles: number;
62
+ collapseThreshold: number;
63
+ optionSignature: string;
64
+ }
65
+
66
+ interface EnumeratedFiles {
67
+ files: string[];
68
+ truncated: boolean;
69
+ }
70
+
36
71
  // ─── Defaults ────────────────────────────────────────────────────────────────
37
72
 
38
73
  const DEFAULT_EXCLUDES = [
@@ -55,6 +90,11 @@ const DEFAULT_EXCLUDES = [
55
90
 
56
91
  const DEFAULT_MAX_FILES = 500;
57
92
  const DEFAULT_COLLAPSE_THRESHOLD = 20;
93
+ const DEFAULT_REFRESH_TTL_MS = 30_000;
94
+ const DEFAULT_MAX_AGE_MS = 15 * 60_000;
95
+ const CODEBASE_METADATA_PREFIX = "<!-- gsd:codebase-meta ";
96
+
97
+ const freshnessCache = new Map<string, { checkedAt: number; result: EnsureCodebaseMapResult }>();
58
98
 
59
99
  // ─── Parsing ─────────────────────────────────────────────────────────────────
60
100
 
@@ -96,6 +136,33 @@ export function parseCodebaseMap(content: string): Map<string, string> {
96
136
  return descriptions;
97
137
  }
98
138
 
139
+ export function parseCodebaseMapMetadata(content: string): CodebaseMapMetadata | null {
140
+ const metaLine = content
141
+ .split("\n")
142
+ .find((line) => line.trimStart().startsWith(CODEBASE_METADATA_PREFIX));
143
+ if (!metaLine) return null;
144
+
145
+ const trimmed = metaLine.trim();
146
+ const jsonStart = CODEBASE_METADATA_PREFIX.length;
147
+ const jsonEnd = trimmed.lastIndexOf(" -->");
148
+ if (jsonEnd <= jsonStart) return null;
149
+
150
+ try {
151
+ const parsed = JSON.parse(trimmed.slice(jsonStart, jsonEnd));
152
+ if (
153
+ typeof parsed?.generatedAt === "string"
154
+ && typeof parsed?.fingerprint === "string"
155
+ && typeof parsed?.fileCount === "number"
156
+ && typeof parsed?.truncated === "boolean"
157
+ ) {
158
+ return parsed as CodebaseMapMetadata;
159
+ }
160
+ } catch {
161
+ // Ignore malformed metadata and treat the map as stale.
162
+ }
163
+ return null;
164
+ }
165
+
99
166
  // ─── File Enumeration ────────────────────────────────────────────────────────
100
167
 
101
168
  function shouldExclude(filePath: string, excludes: string[]): boolean {
@@ -134,6 +201,36 @@ function enumerateFiles(basePath: string, excludes: string[], maxFiles: number):
134
201
  return { files: truncated ? filtered.slice(0, maxFiles) : filtered, truncated };
135
202
  }
136
203
 
204
+ function resolveGeneratorOptions(options?: CodebaseMapOptions): ResolvedCodebaseMapOptions {
205
+ const excludes = [...DEFAULT_EXCLUDES, ...(options?.excludePatterns ?? [])];
206
+ const maxFiles = options?.maxFiles ?? DEFAULT_MAX_FILES;
207
+ const collapseThreshold = options?.collapseThreshold ?? DEFAULT_COLLAPSE_THRESHOLD;
208
+ return {
209
+ excludes,
210
+ maxFiles,
211
+ collapseThreshold,
212
+ optionSignature: JSON.stringify({
213
+ excludes,
214
+ maxFiles,
215
+ collapseThreshold,
216
+ }),
217
+ };
218
+ }
219
+
220
+ function computeCodebaseFingerprint(
221
+ files: string[],
222
+ resolved: ResolvedCodebaseMapOptions,
223
+ truncated: boolean,
224
+ ): string {
225
+ return createHash("sha1")
226
+ .update(JSON.stringify({
227
+ files,
228
+ truncated,
229
+ optionSignature: resolved.optionSignature,
230
+ }))
231
+ .digest("hex");
232
+ }
233
+
137
234
  // ─── Grouping ────────────────────────────────────────────────────────────────
138
235
 
139
236
  function groupByDirectory(
@@ -174,14 +271,19 @@ function groupByDirectory(
174
271
 
175
272
  // ─── Rendering ───────────────────────────────────────────────────────────────
176
273
 
177
- function renderCodebaseMap(groups: DirectoryGroup[], totalFiles: number, truncated: boolean): string {
274
+ function renderCodebaseMap(
275
+ groups: DirectoryGroup[],
276
+ totalFiles: number,
277
+ truncated: boolean,
278
+ metadata: CodebaseMapMetadata,
279
+ ): string {
178
280
  const lines: string[] = [];
179
- const now = new Date().toISOString().split(".")[0] + "Z";
180
281
  const described = groups.reduce((sum, g) => sum + g.files.filter((f) => f.description).length, 0);
181
282
 
182
283
  lines.push("# Codebase Map");
183
284
  lines.push("");
184
- lines.push(`Generated: ${now} | Files: ${totalFiles} | Described: ${described}/${totalFiles}`);
285
+ lines.push(`Generated: ${metadata.generatedAt} | Files: ${totalFiles} | Described: ${described}/${totalFiles}`);
286
+ lines.push(`${CODEBASE_METADATA_PREFIX}${JSON.stringify(metadata)} -->`);
185
287
  if (truncated) {
186
288
  lines.push(`Note: Truncated to first ${totalFiles} files. Run with higher --max-files to include all.`);
187
289
  }
@@ -229,6 +331,41 @@ function renderCodebaseMap(groups: DirectoryGroup[], totalFiles: number, truncat
229
331
  return lines.join("\n");
230
332
  }
231
333
 
334
+ function buildCodebaseMap(
335
+ basePath: string,
336
+ resolved: ResolvedCodebaseMapOptions,
337
+ existingDescriptions?: Map<string, string>,
338
+ enumerated?: EnumeratedFiles,
339
+ ): {
340
+ content: string;
341
+ fileCount: number;
342
+ truncated: boolean;
343
+ files: string[];
344
+ fingerprint: string;
345
+ generatedAt: string;
346
+ } {
347
+ const listed = enumerated ?? enumerateFiles(basePath, resolved.excludes, resolved.maxFiles);
348
+ const descriptions = existingDescriptions ?? new Map<string, string>();
349
+ const groups = groupByDirectory(listed.files, descriptions, resolved.collapseThreshold);
350
+ const generatedAt = new Date().toISOString().split(".")[0] + "Z";
351
+ const metadata: CodebaseMapMetadata = {
352
+ generatedAt,
353
+ fingerprint: computeCodebaseFingerprint(listed.files, resolved, listed.truncated),
354
+ fileCount: listed.files.length,
355
+ truncated: listed.truncated,
356
+ };
357
+ const content = renderCodebaseMap(groups, listed.files.length, listed.truncated, metadata);
358
+
359
+ return {
360
+ content,
361
+ fileCount: listed.files.length,
362
+ truncated: listed.truncated,
363
+ files: listed.files,
364
+ fingerprint: metadata.fingerprint,
365
+ generatedAt,
366
+ };
367
+ }
368
+
232
369
  // ─── Public API ──────────────────────────────────────────────────────────────
233
370
 
234
371
  /**
@@ -239,17 +376,9 @@ export function generateCodebaseMap(
239
376
  basePath: string,
240
377
  options?: CodebaseMapOptions,
241
378
  existingDescriptions?: Map<string, string>,
242
- ): { content: string; fileCount: number; truncated: boolean; files: string[] } {
243
- const excludes = [...DEFAULT_EXCLUDES, ...(options?.excludePatterns ?? [])];
244
- const maxFiles = options?.maxFiles ?? DEFAULT_MAX_FILES;
245
- const collapseThreshold = options?.collapseThreshold ?? DEFAULT_COLLAPSE_THRESHOLD;
246
-
247
- const { files, truncated } = enumerateFiles(basePath, excludes, maxFiles);
248
- const descriptions = existingDescriptions ?? new Map<string, string>();
249
- const groups = groupByDirectory(files, descriptions, collapseThreshold);
250
- const content = renderCodebaseMap(groups, files.length, truncated);
251
-
252
- return { content, fileCount: files.length, truncated, files };
379
+ ): { content: string; fileCount: number; truncated: boolean; files: string[]; fingerprint: string; generatedAt: string } {
380
+ const resolved = resolveGeneratorOptions(options);
381
+ return buildCodebaseMap(basePath, resolved, existingDescriptions);
253
382
  }
254
383
 
255
384
  /**
@@ -259,8 +388,18 @@ export function generateCodebaseMap(
259
388
  export function updateCodebaseMap(
260
389
  basePath: string,
261
390
  options?: CodebaseMapOptions,
262
- ): { content: string; added: number; removed: number; unchanged: number; fileCount: number; truncated: boolean } {
391
+ ): {
392
+ content: string;
393
+ added: number;
394
+ removed: number;
395
+ unchanged: number;
396
+ fileCount: number;
397
+ truncated: boolean;
398
+ fingerprint: string;
399
+ generatedAt: string;
400
+ } {
263
401
  const codebasePath = join(gsdRoot(basePath), "CODEBASE.md");
402
+ const resolved = resolveGeneratorOptions(options);
264
403
 
265
404
  // Load existing descriptions
266
405
  let existingDescriptions = new Map<string, string>();
@@ -273,7 +412,7 @@ export function updateCodebaseMap(
273
412
 
274
413
  // Generate new map preserving descriptions — reuse the returned file list
275
414
  // to avoid a second enumeration (prevents race between content and stats).
276
- const result = generateCodebaseMap(basePath, options, existingDescriptions);
415
+ const result = buildCodebaseMap(basePath, resolved, existingDescriptions);
277
416
  const currentSet = new Set(result.files);
278
417
 
279
418
  // Count changes
@@ -294,9 +433,114 @@ export function updateCodebaseMap(
294
433
  unchanged: result.files.length - added,
295
434
  fileCount: result.fileCount,
296
435
  truncated: result.truncated,
436
+ fingerprint: result.fingerprint,
437
+ generatedAt: result.generatedAt,
297
438
  };
298
439
  }
299
440
 
441
+ function clearFreshnessCache(basePath: string): void {
442
+ for (const key of freshnessCache.keys()) {
443
+ if (key === basePath || key.startsWith(`${basePath}::`)) {
444
+ freshnessCache.delete(key);
445
+ }
446
+ }
447
+ }
448
+
449
+ export function ensureCodebaseMapFresh(
450
+ basePath: string,
451
+ options?: CodebaseMapOptions,
452
+ ensureOptions?: EnsureCodebaseMapOptions,
453
+ ): EnsureCodebaseMapResult {
454
+ const resolved = resolveGeneratorOptions(options);
455
+ const cacheKey = `${basePath}::${resolved.optionSignature}`;
456
+ const ttlMs = ensureOptions?.ttlMs ?? DEFAULT_REFRESH_TTL_MS;
457
+ const maxAgeMs = ensureOptions?.maxAgeMs ?? DEFAULT_MAX_AGE_MS;
458
+ const force = ensureOptions?.force === true;
459
+ const now = Date.now();
460
+
461
+ if (!force && ttlMs > 0) {
462
+ const cached = freshnessCache.get(cacheKey);
463
+ if (cached && now - cached.checkedAt < ttlMs) {
464
+ return cached.result;
465
+ }
466
+ }
467
+
468
+ const existing = readCodebaseMap(basePath);
469
+ const listed = enumerateFiles(basePath, resolved.excludes, resolved.maxFiles);
470
+ const fingerprint = computeCodebaseFingerprint(listed.files, resolved, listed.truncated);
471
+
472
+ const cacheAndReturn = (result: EnsureCodebaseMapResult): EnsureCodebaseMapResult => {
473
+ freshnessCache.set(cacheKey, { checkedAt: now, result });
474
+ return result;
475
+ };
476
+
477
+ if (!existing) {
478
+ const generated = buildCodebaseMap(basePath, resolved, undefined, listed);
479
+ if (generated.fileCount > 0) {
480
+ writeCodebaseMap(basePath, generated.content);
481
+ return cacheAndReturn({
482
+ status: "generated",
483
+ fileCount: generated.fileCount,
484
+ truncated: generated.truncated,
485
+ generatedAt: generated.generatedAt,
486
+ fingerprint: generated.fingerprint,
487
+ reason: "missing",
488
+ });
489
+ }
490
+ return cacheAndReturn({
491
+ status: "empty",
492
+ fileCount: 0,
493
+ truncated: false,
494
+ generatedAt: null,
495
+ fingerprint,
496
+ reason: "no-tracked-files",
497
+ });
498
+ }
499
+
500
+ const metadata = parseCodebaseMapMetadata(existing);
501
+ const existingDescriptions = parseCodebaseMap(existing);
502
+ const ageMs = metadata ? now - Date.parse(metadata.generatedAt) : Number.POSITIVE_INFINITY;
503
+ const staleReason =
504
+ !metadata ? "missing-metadata"
505
+ : metadata.fingerprint !== fingerprint ? "files-changed"
506
+ : metadata.fileCount !== listed.files.length ? "file-count-changed"
507
+ : metadata.truncated !== listed.truncated ? "truncation-changed"
508
+ : maxAgeMs > 0 && Number.isFinite(ageMs) && ageMs > maxAgeMs ? "expired"
509
+ : undefined;
510
+
511
+ if (!staleReason) {
512
+ return cacheAndReturn({
513
+ status: "fresh",
514
+ fileCount: metadata?.fileCount ?? listed.files.length,
515
+ truncated: metadata?.truncated ?? listed.truncated,
516
+ generatedAt: metadata?.generatedAt ?? null,
517
+ fingerprint: metadata?.fingerprint ?? fingerprint,
518
+ });
519
+ }
520
+
521
+ const updated = buildCodebaseMap(basePath, resolved, existingDescriptions, listed);
522
+ if (updated.fileCount > 0) {
523
+ writeCodebaseMap(basePath, updated.content);
524
+ return cacheAndReturn({
525
+ status: "updated",
526
+ fileCount: updated.fileCount,
527
+ truncated: updated.truncated,
528
+ generatedAt: updated.generatedAt,
529
+ fingerprint: updated.fingerprint,
530
+ reason: staleReason,
531
+ });
532
+ }
533
+
534
+ return cacheAndReturn({
535
+ status: "empty",
536
+ fileCount: 0,
537
+ truncated: false,
538
+ generatedAt: null,
539
+ fingerprint,
540
+ reason: staleReason,
541
+ });
542
+ }
543
+
300
544
  /**
301
545
  * Write CODEBASE.md to .gsd/ directory.
302
546
  */
@@ -305,6 +549,7 @@ export function writeCodebaseMap(basePath: string, content: string): string {
305
549
  mkdirSync(root, { recursive: true });
306
550
  const outPath = join(root, "CODEBASE.md");
307
551
  writeFileSync(outPath, content, "utf-8");
552
+ clearFreshnessCache(basePath);
308
553
  return outPath;
309
554
  }
310
555
 
@@ -73,7 +73,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
73
73
  { cmd: "mcp", desc: "MCP server status and connectivity check (status, check <server>)" },
74
74
  { cmd: "rethink", desc: "Conversational project reorganization — reorder, park, discard, add milestones" },
75
75
  { cmd: "workflow", desc: "Custom workflow lifecycle (new, run, list, validate, pause, resume)" },
76
- { cmd: "codebase", desc: "Generate and manage codebase map (.gsd/CODEBASE.md)" },
76
+ { cmd: "codebase", desc: "Generate, refresh, and inspect the codebase map cache (.gsd/CODEBASE.md)" },
77
77
  ];
78
78
 
79
79
  const NESTED_COMPLETIONS: CompletionMap = {
@@ -237,7 +237,7 @@ const NESTED_COMPLETIONS: CompletionMap = {
237
237
  { cmd: "generate", desc: "Generate or regenerate CODEBASE.md" },
238
238
  { cmd: "generate --max-files", desc: "Generate with custom file limit (default: 500)" },
239
239
  { cmd: "generate --collapse-threshold", desc: "Generate with custom collapse threshold (default: 20)" },
240
- { cmd: "update", desc: "Incremental update (preserves descriptions)" },
240
+ { cmd: "update", desc: "Refresh the CODEBASE.md cache immediately (preserves descriptions)" },
241
241
  { cmd: "update --max-files", desc: "Update with custom file limit" },
242
242
  { cmd: "update --collapse-threshold", desc: "Update with custom collapse threshold" },
243
243
  { cmd: "stats", desc: "Show file count, description coverage, and generation time" },
@@ -45,6 +45,7 @@ export function showHelp(ctx: ExtensionCommandContext): void {
45
45
  "",
46
46
  "PROJECT KNOWLEDGE",
47
47
  " /gsd knowledge <type> <text> Add rule, pattern, or lesson to KNOWLEDGE.md",
48
+ " /gsd codebase [generate|update|stats] Manage the CODEBASE.md cache used in prompt context",
48
49
  "",
49
50
  "SETUP & CONFIGURATION",
50
51
  " /gsd init Project init wizard — detect, configure, bootstrap .gsd/",
@@ -45,6 +45,7 @@ const TOP_LEVEL_SUBCOMMANDS = [
45
45
  { cmd: "start", desc: "Start a workflow template" },
46
46
  { cmd: "templates", desc: "List available workflow templates" },
47
47
  { cmd: "extensions", desc: "Manage extensions" },
48
+ { cmd: "codebase", desc: "Generate, refresh, and inspect the codebase map cache" },
48
49
  ] as const;
49
50
 
50
51
  function filterStartsWith(
@@ -218,6 +219,15 @@ function getGsdArgumentCompletions(prefix: string) {
218
219
  ], "extensions");
219
220
  }
220
221
 
222
+ if (parts[0] === "codebase" && parts.length <= 2) {
223
+ return filterStartsWith(partial, [
224
+ { cmd: "generate", desc: "Generate or regenerate CODEBASE.md" },
225
+ { cmd: "update", desc: "Refresh the CODEBASE.md cache immediately" },
226
+ { cmd: "stats", desc: "Show codebase-map coverage and generation time" },
227
+ { cmd: "help", desc: "Show usage and subcommands" },
228
+ ], "codebase");
229
+ }
230
+
221
231
  if (parts[0] === "doctor" && parts.length <= 2) {
222
232
  return filterStartsWith(partial, [
223
233
  { cmd: "fix", desc: "Auto-fix detected issues" },
@@ -20,10 +20,11 @@ import type { CodebaseMapOptions } from "./codebase-generator.js";
20
20
  const USAGE =
21
21
  "Usage: /gsd codebase [generate|update|stats]\n\n" +
22
22
  " generate [--max-files N] [--collapse-threshold N] — Generate or regenerate CODEBASE.md\n" +
23
- " update [--max-files N] [--collapse-threshold N] — Incremental update (preserves descriptions)\n" +
23
+ " update [--max-files N] [--collapse-threshold N] — Refresh the CODEBASE.md cache immediately\n" +
24
24
  " stats — Show file count, coverage, and generation time\n" +
25
25
  " help — Show this help\n\n" +
26
- "With no subcommand, shows stats if a map exists or help if not.\n\n" +
26
+ "With no subcommand, shows stats if a map exists or help if not.\n" +
27
+ "GSD also refreshes CODEBASE.md automatically before prompt injection and after completed units when tracked files change.\n\n" +
27
28
  "Configure defaults via preferences.md:\n" +
28
29
  " codebase:\n" +
29
30
  " exclude_patterns: [\"docs/\", \"fixtures/\"]\n" +
@@ -141,7 +142,7 @@ function showStats(basePath: string, ctx: ExtensionCommandContext): void {
141
142
  ` Undescribed: ${stats.undescribedCount}\n` +
142
143
  ` Generated: ${stats.generatedAt ?? "unknown"}\n\n` +
143
144
  (stats.undescribedCount > 0
144
- ? `Tip: Run /gsd codebase update to refresh after file changes.`
145
+ ? `Tip: Auto-refresh keeps the cache current, but /gsd codebase update forces an immediate refresh.`
145
146
  : `Coverage is complete.`),
146
147
  "info",
147
148
  );
@@ -10,7 +10,7 @@ import { deriveState, isMilestoneComplete } from "./state.js";
10
10
  import { listWorktrees, resolveGitDir, worktreesDir } from "./worktree-manager.js";
11
11
  import { abortAndReset } from "./git-self-heal.js";
12
12
  import { RUNTIME_EXCLUSION_PATHS, resolveMilestoneIntegrationBranch, writeIntegrationBranch } from "./git-service.js";
13
- import { nativeIsRepo, nativeWorktreeList, nativeWorktreeRemove, nativeBranchList, nativeBranchDelete, nativeLsFiles, nativeRmCached, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch, nativeAddTracked, nativeCommit } from "./native-git-bridge.js";
13
+ import { nativeIsRepo, nativeWorktreeList, nativeWorktreeRemove, nativeBranchList, nativeBranchDelete, nativeLsFiles, nativeRmCached, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch, nativeAddAllWithExclusions, nativeCommit } from "./native-git-bridge.js";
14
14
  import { getAllWorktreeHealth } from "./worktree-health.js";
15
15
  import { loadEffectiveGSDPreferences } from "./preferences.js";
16
16
 
@@ -386,19 +386,19 @@ export async function checkGitHealth(
386
386
  code: "stale_uncommitted_changes",
387
387
  scope: "project",
388
388
  unitId: "project",
389
- message: `Uncommitted changes detected with no commit in ${mins} minute${mins === 1 ? "" : "s"} (threshold: ${thresholdMinutes}m). Snapshotting tracked files.`,
389
+ message: `Uncommitted changes detected with no commit in ${mins} minute${mins === 1 ? "" : "s"} (threshold: ${thresholdMinutes}m). Snapshotting uncommitted changes.`,
390
390
  fixable: true,
391
391
  });
392
392
 
393
393
  if (shouldFix("stale_uncommitted_changes")) {
394
394
  try {
395
- nativeAddTracked(basePath);
395
+ nativeAddAllWithExclusions(basePath, RUNTIME_EXCLUSION_PATHS);
396
396
  const commitMsg = `gsd snapshot: uncommitted changes after ${mins}m inactivity`;
397
397
  const result = nativeCommit(basePath, commitMsg);
398
398
  if (result) {
399
399
  fixesApplied.push(`created gsd snapshot after ${mins}m of uncommitted changes`);
400
400
  } else {
401
- fixesApplied.push("gsd snapshot skipped — nothing to commit after staging tracked files");
401
+ fixesApplied.push("gsd snapshot skipped — nothing to commit after staging changes");
402
402
  }
403
403
  } catch {
404
404
  fixesApplied.push("failed to create gsd snapshot commit");
@@ -21,8 +21,8 @@ import { readCrashLock, isLockProcessAlive, clearLock } from "./crash-recovery.j
21
21
  import { abortAndReset } from "./git-self-heal.js";
22
22
  import { rebuildState } from "./doctor.js";
23
23
  import { deriveState } from "./state.js";
24
- import { resolveMilestoneIntegrationBranch } from "./git-service.js";
25
- import { nativeIsRepo, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch, nativeAddTracked, nativeCommit } from "./native-git-bridge.js";
24
+ import { RUNTIME_EXCLUSION_PATHS, resolveMilestoneIntegrationBranch } from "./git-service.js";
25
+ import { nativeIsRepo, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch, nativeAddAllWithExclusions, nativeCommit } from "./native-git-bridge.js";
26
26
  import { loadEffectiveGSDPreferences } from "./preferences.js";
27
27
  import { runEnvironmentChecks } from "./doctor-environment.js";
28
28
 
@@ -312,7 +312,7 @@ export async function preDispatchHealthGate(basePath: string): Promise<PreDispat
312
312
  if (minutesSinceCommit >= thresholdMinutes) {
313
313
  const mins = Math.floor(minutesSinceCommit);
314
314
  try {
315
- nativeAddTracked(basePath);
315
+ nativeAddAllWithExclusions(basePath, RUNTIME_EXCLUSION_PATHS);
316
316
  const commitMsg = `gsd snapshot: pre-dispatch, uncommitted changes after ${mins}m inactivity`;
317
317
  const result = nativeCommit(basePath, commitMsg);
318
318
  if (result) {
@@ -40,6 +40,10 @@ import { findMilestoneIds, nextMilestoneId, reserveMilestoneId, getReservedMiles
40
40
  import { parkMilestone, discardMilestone } from "./milestone-actions.js";
41
41
  import { selectAndApplyModel } from "./auto-model-selection.js";
42
42
  import { DISCUSS_TOOLS_ALLOWLIST } from "./constants.js";
43
+ import {
44
+ getWorkflowTransportSupportError,
45
+ getRequiredWorkflowToolsForGuidedUnit,
46
+ } from "./workflow-mcp.js";
43
47
  import {
44
48
  runPreparation,
45
49
  formatCodebaseBrief,
@@ -318,6 +322,26 @@ async function dispatchWorkflow(
318
322
  routing: result.routing,
319
323
  });
320
324
  }
325
+
326
+ const compatibilityError = getWorkflowTransportSupportError(
327
+ result.appliedModel?.provider ?? ctx.model?.provider,
328
+ getRequiredWorkflowToolsForGuidedUnit(unitType),
329
+ {
330
+ projectRoot: process.cwd(),
331
+ surface: "guided flow",
332
+ unitType,
333
+ authMode: result.appliedModel?.provider
334
+ ? ctx.modelRegistry.getProviderAuthMode(result.appliedModel.provider)
335
+ : ctx.model?.provider
336
+ ? ctx.modelRegistry.getProviderAuthMode(ctx.model.provider)
337
+ : undefined,
338
+ baseUrl: result.appliedModel?.baseUrl ?? ctx.model?.baseUrl,
339
+ },
340
+ );
341
+ if (compatibilityError) {
342
+ ctx.ui.notify(compatibilityError, "error");
343
+ return;
344
+ }
321
345
  }
322
346
 
323
347
  // Scope tools for discuss flows (#2949).
@@ -62,6 +62,7 @@ Titles live inside file content (headings, frontmatter), not in file or director
62
62
  REQUIREMENTS.md (requirement contract - tracks active/validated/deferred/out-of-scope)
63
63
  DECISIONS.md (append-only register of architectural and pattern decisions)
64
64
  KNOWLEDGE.md (append-only register of project-specific rules, patterns, and lessons learned)
65
+ CODEBASE.md (generated codebase map cache — auto-refreshed when tracked files change)
65
66
  OVERRIDES.md (user-issued overrides that supersede plan content via /gsd steer)
66
67
  QUEUE.md (append-only log of queued milestones via /gsd queue)
67
68
  STATE.md
@@ -104,6 +105,7 @@ In all modes, slices commit sequentially on the active branch; there are no per-
104
105
  - **REQUIREMENTS.md** tracks the requirement contract — requirements move between Active, Validated, Deferred, Blocked, and Out of Scope as slices prove or invalidate them. Update at slice completion when evidence supports a status change.
105
106
  - **DECISIONS.md** is an append-only register of architectural and pattern decisions - read it during planning/research, append to it during execution when a meaningful decision is made
106
107
  - **KNOWLEDGE.md** is an append-only register of project-specific rules, patterns, and lessons learned. Read it at the start of every unit. Append to it when you discover a recurring issue, a non-obvious pattern, or a rule that future agents should follow.
108
+ - **CODEBASE.md** is a generated structural cache of the tracked repository. GSD auto-refreshes it when tracked files change and injects it into system context when available. Use `/gsd codebase update` only when you need to force an immediate refresh.
107
109
  - **CONTEXT.md** files (milestone or slice level) capture the brief — scope, goals, constraints, and key decisions from discussion. When present, they are the authoritative source for what a milestone or slice is trying to achieve. Read them before planning or executing.
108
110
  - **Milestones** are major project phases (M001, M002, ...)
109
111
  - **Slices** are demoable vertical increments (S01, S02, ...) ordered by risk. After each slice completes, the roadmap is reassessed before the next slice begins.
@@ -131,6 +133,7 @@ Templates showing the expected format for each artifact type are in:
131
133
  - `/gsd status` - progress dashboard overlay
132
134
  - `/gsd queue` - queue future milestones (safe while auto-mode is running)
133
135
  - `/gsd quick <task>` - quick task with GSD guarantees (atomic commits, state tracking) but no milestone ceremony
136
+ - `/gsd codebase [generate|update|stats]` - manage the `.gsd/CODEBASE.md` cache used for prompt context
134
137
  - `{{shortcutDashboard}}` - toggle dashboard overlay
135
138
  - `{{shortcutShell}}` - show shell processes
136
139
 
@@ -8,11 +8,13 @@ import { execSync } from "node:child_process";
8
8
 
9
9
  import {
10
10
  parseCodebaseMap,
11
+ parseCodebaseMapMetadata,
11
12
  generateCodebaseMap,
12
13
  updateCodebaseMap,
13
14
  writeCodebaseMap,
14
15
  readCodebaseMap,
15
16
  getCodebaseMapStats,
17
+ ensureCodebaseMapFresh,
16
18
  } from "../codebase-generator.ts";
17
19
 
18
20
  // ─── Helpers ──────────────────────────────────────────────────────────────
@@ -212,6 +214,24 @@ test("generateCodebaseMap: preserves existing descriptions", () => {
212
214
  }
213
215
  });
214
216
 
217
+ test("generateCodebaseMap: writes freshness metadata comment", () => {
218
+ const base = makeTmpRepo();
219
+ try {
220
+ addFile(base, "src/main.ts");
221
+
222
+ const result = generateCodebaseMap(base);
223
+ const metadata = parseCodebaseMapMetadata(result.content);
224
+
225
+ assert.ok(metadata, "metadata comment should be present");
226
+ assert.equal(metadata?.fileCount, 1);
227
+ assert.equal(metadata?.truncated, false);
228
+ assert.equal(typeof metadata?.fingerprint, "string");
229
+ assert.ok(metadata?.generatedAt?.endsWith("Z"));
230
+ } finally {
231
+ cleanup(base);
232
+ }
233
+ });
234
+
215
235
  test("generateCodebaseMap: collapses large directories", () => {
216
236
  const base = makeTmpRepo();
217
237
  try {
@@ -571,3 +591,51 @@ test("updateCodebaseMap: respects excludePatterns option", () => {
571
591
  cleanup(base);
572
592
  }
573
593
  });
594
+
595
+ test("ensureCodebaseMapFresh: generates CODEBASE.md when missing", () => {
596
+ const base = makeTmpRepo();
597
+ try {
598
+ addFile(base, "src/main.ts");
599
+
600
+ const result = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
601
+ const written = readCodebaseMap(base);
602
+
603
+ assert.equal(result.status, "generated");
604
+ assert.ok(written?.includes("`src/main.ts`"));
605
+ } finally {
606
+ cleanup(base);
607
+ }
608
+ });
609
+
610
+ test("ensureCodebaseMapFresh: updates CODEBASE.md when tracked files change", () => {
611
+ const base = makeTmpRepo();
612
+ try {
613
+ addFile(base, "src/main.ts");
614
+ const initial = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
615
+ assert.equal(initial.status, "generated");
616
+
617
+ addFile(base, "src/new.ts");
618
+ const refreshed = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
619
+ const written = readCodebaseMap(base);
620
+
621
+ assert.equal(refreshed.status, "updated");
622
+ assert.equal(refreshed.reason, "files-changed");
623
+ assert.ok(written?.includes("`src/new.ts`"));
624
+ } finally {
625
+ cleanup(base);
626
+ }
627
+ });
628
+
629
+ test("ensureCodebaseMapFresh: returns fresh when metadata matches repository state", () => {
630
+ const base = makeTmpRepo();
631
+ try {
632
+ addFile(base, "src/main.ts");
633
+ ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
634
+
635
+ const refreshed = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
636
+ assert.equal(refreshed.status, "fresh");
637
+ assert.equal(refreshed.fileCount, 1);
638
+ } finally {
639
+ cleanup(base);
640
+ }
641
+ });