gsd-pi 2.41.0 → 2.42.0-dev.97e9e30

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 (383) hide show
  1. package/README.md +69 -29
  2. package/dist/cli-web-branch.d.ts +6 -0
  3. package/dist/cli-web-branch.js +17 -0
  4. package/dist/onboarding.js +2 -1
  5. package/dist/resources/extensions/gsd/auto/loop.js +89 -1
  6. package/dist/resources/extensions/gsd/auto/phases.js +28 -10
  7. package/dist/resources/extensions/gsd/auto/session.js +6 -0
  8. package/dist/resources/extensions/gsd/auto-dashboard.js +8 -2
  9. package/dist/resources/extensions/gsd/auto-dispatch.js +19 -2
  10. package/dist/resources/extensions/gsd/auto-post-unit.js +7 -0
  11. package/dist/resources/extensions/gsd/auto-recovery.js +12 -4
  12. package/dist/resources/extensions/gsd/auto-start.js +8 -3
  13. package/dist/resources/extensions/gsd/auto-worktree.js +147 -13
  14. package/dist/resources/extensions/gsd/auto.js +64 -2
  15. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +199 -164
  16. package/dist/resources/extensions/gsd/bootstrap/journal-tools.js +62 -0
  17. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +2 -0
  18. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +16 -0
  19. package/dist/resources/extensions/gsd/bootstrap/tool-call-loop-guard.js +7 -2
  20. package/dist/resources/extensions/gsd/commands/catalog.js +40 -1
  21. package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -0
  22. package/dist/resources/extensions/gsd/commands/handlers/ops.js +5 -0
  23. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +146 -0
  24. package/dist/resources/extensions/gsd/context-injector.js +74 -0
  25. package/dist/resources/extensions/gsd/context-store.js +4 -3
  26. package/dist/resources/extensions/gsd/custom-execution-policy.js +47 -0
  27. package/dist/resources/extensions/gsd/custom-verification.js +145 -0
  28. package/dist/resources/extensions/gsd/custom-workflow-engine.js +164 -0
  29. package/dist/resources/extensions/gsd/dashboard-overlay.js +1 -0
  30. package/dist/resources/extensions/gsd/db-writer.js +5 -2
  31. package/dist/resources/extensions/gsd/definition-loader.js +352 -0
  32. package/dist/resources/extensions/gsd/detection.js +1 -1
  33. package/dist/resources/extensions/gsd/dev-execution-policy.js +24 -0
  34. package/dist/resources/extensions/gsd/dev-workflow-engine.js +82 -0
  35. package/dist/resources/extensions/gsd/doctor.js +11 -1
  36. package/dist/resources/extensions/gsd/engine-resolver.js +40 -0
  37. package/dist/resources/extensions/gsd/engine-types.js +8 -0
  38. package/dist/resources/extensions/gsd/execution-policy.js +8 -0
  39. package/dist/resources/extensions/gsd/exit-command.js +12 -2
  40. package/dist/resources/extensions/gsd/export.js +9 -13
  41. package/dist/resources/extensions/gsd/extension-manifest.json +2 -2
  42. package/dist/resources/extensions/gsd/files.js +28 -11
  43. package/dist/resources/extensions/gsd/forensics.js +10 -3
  44. package/dist/resources/extensions/gsd/git-service.js +5 -1
  45. package/dist/resources/extensions/gsd/graph.js +225 -0
  46. package/dist/resources/extensions/gsd/gsd-db.js +25 -8
  47. package/dist/resources/extensions/gsd/guided-flow-queue.js +1 -1
  48. package/dist/resources/extensions/gsd/guided-flow.js +7 -3
  49. package/dist/resources/extensions/gsd/journal.js +85 -0
  50. package/dist/resources/extensions/gsd/md-importer.js +5 -0
  51. package/dist/resources/extensions/gsd/milestone-ids.js +1 -1
  52. package/dist/resources/extensions/gsd/native-git-bridge.js +2 -2
  53. package/dist/resources/extensions/gsd/post-unit-hooks.js +24 -412
  54. package/dist/resources/extensions/gsd/preferences-types.js +1 -0
  55. package/dist/resources/extensions/gsd/preferences.js +1 -0
  56. package/dist/resources/extensions/gsd/prompt-loader.js +34 -4
  57. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +11 -10
  58. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +2 -2
  59. package/dist/resources/extensions/gsd/prompts/discuss.md +1 -1
  60. package/dist/resources/extensions/gsd/prompts/queue.md +1 -1
  61. package/dist/resources/extensions/gsd/repo-identity.js +46 -2
  62. package/dist/resources/extensions/gsd/rule-registry.js +489 -0
  63. package/dist/resources/extensions/gsd/rule-types.js +6 -0
  64. package/dist/resources/extensions/gsd/run-manager.js +134 -0
  65. package/dist/resources/extensions/gsd/service-tier.js +138 -0
  66. package/dist/resources/extensions/gsd/structured-data-formatter.js +2 -1
  67. package/dist/resources/extensions/gsd/templates/decisions.md +2 -2
  68. package/dist/resources/extensions/gsd/workflow-engine.js +7 -0
  69. package/dist/resources/extensions/gsd/workflow-templates.js +13 -1
  70. package/dist/resources/extensions/gsd/worktree-manager.js +20 -6
  71. package/dist/resources/extensions/gsd/worktree-resolver.js +19 -2
  72. package/dist/resources/extensions/subagent/index.js +7 -3
  73. package/dist/resources/extensions/voice/index.js +4 -4
  74. package/dist/resources/skills/create-workflow/SKILL.md +103 -0
  75. package/dist/resources/skills/create-workflow/references/feature-patterns.md +128 -0
  76. package/dist/resources/skills/create-workflow/references/verification-policies.md +76 -0
  77. package/dist/resources/skills/create-workflow/references/yaml-schema-v1.md +46 -0
  78. package/dist/resources/skills/create-workflow/templates/blog-post-pipeline.yaml +60 -0
  79. package/dist/resources/skills/create-workflow/templates/code-audit.yaml +60 -0
  80. package/dist/resources/skills/create-workflow/templates/release-checklist.yaml +66 -0
  81. package/dist/resources/skills/create-workflow/templates/workflow-definition.yaml +32 -0
  82. package/dist/resources/skills/create-workflow/workflows/create-from-scratch.md +104 -0
  83. package/dist/resources/skills/create-workflow/workflows/create-from-template.md +72 -0
  84. package/dist/web/standalone/.next/BUILD_ID +1 -1
  85. package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
  86. package/dist/web/standalone/.next/build-manifest.json +4 -4
  87. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  88. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  89. package/dist/web/standalone/.next/required-server-files.json +3 -3
  90. package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
  91. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  92. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  93. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  94. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  95. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  96. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  97. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  98. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  99. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  100. package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
  101. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  102. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  103. package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
  104. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  105. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  106. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  107. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  108. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  109. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  110. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  111. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  112. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  113. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  115. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  116. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
  117. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  118. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  119. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  120. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  121. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  122. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  123. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  124. package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
  125. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  126. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  127. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  128. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  130. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  131. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  133. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  135. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  136. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  137. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  139. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  141. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  142. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  143. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  145. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  146. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  147. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  148. package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
  149. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  151. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  152. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  154. package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +5 -5
  155. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  157. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
  161. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  163. package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
  164. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  165. package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
  166. package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  169. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  171. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
  175. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
  177. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
  179. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  180. package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
  181. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  182. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  183. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  184. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  185. package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  186. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +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 +4 -4
  190. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  191. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  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 +3 -3
  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_client-reference-manifest.js +1 -1
  197. package/dist/web/standalone/.next/server/app-paths-manifest.json +17 -17
  198. package/dist/web/standalone/.next/server/chunks/229.js +3 -3
  199. package/dist/web/standalone/.next/server/chunks/471.js +3 -3
  200. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  201. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  202. package/dist/web/standalone/.next/server/middleware.js +2 -2
  203. package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
  204. package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
  205. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  206. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  207. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  208. package/dist/web/standalone/.next/static/chunks/4024.c195dc1fdd2adbea.js +9 -0
  209. package/dist/web/standalone/.next/static/chunks/app/_not-found/page-f2a7482d42a5614b.js +1 -0
  210. package/dist/web/standalone/.next/static/chunks/app/layout-a16c7a7ecdf0c2cf.js +1 -0
  211. package/dist/web/standalone/.next/static/chunks/app/page-b9367c5ae13b99c6.js +1 -0
  212. package/dist/web/standalone/.next/static/chunks/{main-app-2f2ee7b85712c2bd.js → main-app-fdab67f7802d7832.js} +1 -1
  213. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
  214. package/dist/web/standalone/.next/static/chunks/{webpack-9afaaebf6042a1d7.js → webpack-fa307370fcf9fb2c.js} +1 -1
  215. package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
  216. package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
  217. package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
  218. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
  219. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
  220. package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
  221. package/dist/web/standalone/server.js +1 -1
  222. package/dist/web-mode.d.ts +2 -0
  223. package/dist/web-mode.js +29 -7
  224. package/package.json +1 -1
  225. package/packages/native/src/__tests__/text.test.mjs +33 -0
  226. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js +3 -1
  227. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js.map +1 -1
  228. package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  229. package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +10 -7
  230. package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
  231. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  232. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +4 -0
  233. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  234. package/packages/pi-coding-agent/package.json +1 -1
  235. package/packages/pi-coding-agent/src/core/discovery-cache.test.ts +4 -2
  236. package/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts +11 -7
  237. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +5 -0
  238. package/pkg/package.json +1 -1
  239. package/src/resources/extensions/gsd/auto/loop-deps.ts +5 -1
  240. package/src/resources/extensions/gsd/auto/loop.ts +101 -1
  241. package/src/resources/extensions/gsd/auto/phases.ts +30 -10
  242. package/src/resources/extensions/gsd/auto/session.ts +6 -0
  243. package/src/resources/extensions/gsd/auto/types.ts +4 -0
  244. package/src/resources/extensions/gsd/auto-dashboard.ts +9 -2
  245. package/src/resources/extensions/gsd/auto-dispatch.ts +25 -5
  246. package/src/resources/extensions/gsd/auto-post-unit.ts +8 -0
  247. package/src/resources/extensions/gsd/auto-recovery.ts +12 -4
  248. package/src/resources/extensions/gsd/auto-start.ts +8 -3
  249. package/src/resources/extensions/gsd/auto-worktree.ts +162 -18
  250. package/src/resources/extensions/gsd/auto.ts +71 -2
  251. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +209 -162
  252. package/src/resources/extensions/gsd/bootstrap/journal-tools.ts +62 -0
  253. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +2 -0
  254. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +13 -0
  255. package/src/resources/extensions/gsd/bootstrap/tool-call-loop-guard.ts +9 -2
  256. package/src/resources/extensions/gsd/commands/catalog.ts +40 -1
  257. package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -0
  258. package/src/resources/extensions/gsd/commands/handlers/ops.ts +5 -0
  259. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +164 -0
  260. package/src/resources/extensions/gsd/context-injector.ts +100 -0
  261. package/src/resources/extensions/gsd/context-store.ts +4 -3
  262. package/src/resources/extensions/gsd/custom-execution-policy.ts +73 -0
  263. package/src/resources/extensions/gsd/custom-verification.ts +180 -0
  264. package/src/resources/extensions/gsd/custom-workflow-engine.ts +216 -0
  265. package/src/resources/extensions/gsd/dashboard-overlay.ts +1 -0
  266. package/src/resources/extensions/gsd/db-writer.ts +6 -2
  267. package/src/resources/extensions/gsd/definition-loader.ts +462 -0
  268. package/src/resources/extensions/gsd/detection.ts +1 -1
  269. package/src/resources/extensions/gsd/dev-execution-policy.ts +51 -0
  270. package/src/resources/extensions/gsd/dev-workflow-engine.ts +110 -0
  271. package/src/resources/extensions/gsd/doctor.ts +12 -1
  272. package/src/resources/extensions/gsd/engine-resolver.ts +57 -0
  273. package/src/resources/extensions/gsd/engine-types.ts +71 -0
  274. package/src/resources/extensions/gsd/execution-policy.ts +43 -0
  275. package/src/resources/extensions/gsd/exit-command.ts +14 -2
  276. package/src/resources/extensions/gsd/export.ts +8 -15
  277. package/src/resources/extensions/gsd/extension-manifest.json +2 -2
  278. package/src/resources/extensions/gsd/files.ts +29 -12
  279. package/src/resources/extensions/gsd/forensics.ts +9 -3
  280. package/src/resources/extensions/gsd/git-service.ts +5 -4
  281. package/src/resources/extensions/gsd/graph.ts +312 -0
  282. package/src/resources/extensions/gsd/gsd-db.ts +37 -8
  283. package/src/resources/extensions/gsd/guided-flow-queue.ts +1 -1
  284. package/src/resources/extensions/gsd/guided-flow.ts +7 -3
  285. package/src/resources/extensions/gsd/journal.ts +134 -0
  286. package/src/resources/extensions/gsd/md-importer.ts +6 -0
  287. package/src/resources/extensions/gsd/milestone-ids.ts +1 -1
  288. package/src/resources/extensions/gsd/native-git-bridge.ts +2 -2
  289. package/src/resources/extensions/gsd/post-unit-hooks.ts +24 -462
  290. package/src/resources/extensions/gsd/preferences-types.ts +3 -0
  291. package/src/resources/extensions/gsd/preferences.ts +1 -0
  292. package/src/resources/extensions/gsd/prompt-loader.ts +35 -4
  293. package/src/resources/extensions/gsd/prompts/complete-milestone.md +11 -10
  294. package/src/resources/extensions/gsd/prompts/discuss-headless.md +2 -2
  295. package/src/resources/extensions/gsd/prompts/discuss.md +1 -1
  296. package/src/resources/extensions/gsd/prompts/queue.md +1 -1
  297. package/src/resources/extensions/gsd/repo-identity.ts +47 -2
  298. package/src/resources/extensions/gsd/rule-registry.ts +599 -0
  299. package/src/resources/extensions/gsd/rule-types.ts +68 -0
  300. package/src/resources/extensions/gsd/run-manager.ts +180 -0
  301. package/src/resources/extensions/gsd/service-tier.ts +171 -0
  302. package/src/resources/extensions/gsd/structured-data-formatter.ts +3 -1
  303. package/src/resources/extensions/gsd/templates/decisions.md +2 -2
  304. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +103 -120
  305. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +85 -0
  306. package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +2 -2
  307. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +202 -0
  308. package/src/resources/extensions/gsd/tests/bundled-workflow-defs.test.ts +180 -0
  309. package/src/resources/extensions/gsd/tests/captures.test.ts +12 -1
  310. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +283 -0
  311. package/src/resources/extensions/gsd/tests/context-injector.test.ts +313 -0
  312. package/src/resources/extensions/gsd/tests/context-store.test.ts +10 -5
  313. package/src/resources/extensions/gsd/tests/continue-here.test.ts +20 -20
  314. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +540 -0
  315. package/src/resources/extensions/gsd/tests/custom-verification.test.ts +382 -0
  316. package/src/resources/extensions/gsd/tests/custom-workflow-engine.test.ts +339 -0
  317. package/src/resources/extensions/gsd/tests/dashboard-custom-engine.test.ts +87 -0
  318. package/src/resources/extensions/gsd/tests/db-writer.test.ts +10 -0
  319. package/src/resources/extensions/gsd/tests/definition-loader.test.ts +778 -0
  320. package/src/resources/extensions/gsd/tests/dev-engine-wrapper.test.ts +318 -0
  321. package/src/resources/extensions/gsd/tests/doctor-completion-deferral.test.ts +15 -10
  322. package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +5 -4
  323. package/src/resources/extensions/gsd/tests/doctor-roadmap-summary-atomicity.test.ts +167 -0
  324. package/src/resources/extensions/gsd/tests/doctor-task-done-missing-summary-slice-loop.test.ts +174 -0
  325. package/src/resources/extensions/gsd/tests/e2e-workflow-pipeline-integration.test.ts +476 -0
  326. package/src/resources/extensions/gsd/tests/engine-interfaces-contract.test.ts +271 -0
  327. package/src/resources/extensions/gsd/tests/exit-command.test.ts +55 -0
  328. package/src/resources/extensions/gsd/tests/graph-operations.test.ts +599 -0
  329. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +8 -1
  330. package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +7 -7
  331. package/src/resources/extensions/gsd/tests/iterate-engine-integration.test.ts +429 -0
  332. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +513 -0
  333. package/src/resources/extensions/gsd/tests/journal-query-tool.test.ts +147 -0
  334. package/src/resources/extensions/gsd/tests/journal.test.ts +386 -0
  335. package/src/resources/extensions/gsd/tests/md-importer.test.ts +31 -1
  336. package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -2
  337. package/src/resources/extensions/gsd/tests/milestone-id-reservation.test.ts +1 -1
  338. package/src/resources/extensions/gsd/tests/parsers.test.ts +110 -0
  339. package/src/resources/extensions/gsd/tests/preferences.test.ts +47 -25
  340. package/src/resources/extensions/gsd/tests/prompt-db.test.ts +3 -1
  341. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +61 -1
  342. package/src/resources/extensions/gsd/tests/routing-history.test.ts +11 -22
  343. package/src/resources/extensions/gsd/tests/rule-registry.test.ts +413 -0
  344. package/src/resources/extensions/gsd/tests/run-manager.test.ts +229 -0
  345. package/src/resources/extensions/gsd/tests/service-tier.test.ts +98 -0
  346. package/src/resources/extensions/gsd/tests/skill-lifecycle.test.ts +2 -2
  347. package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +102 -0
  348. package/src/resources/extensions/gsd/tests/structured-data-formatter.test.ts +4 -3
  349. package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +45 -0
  350. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +117 -0
  351. package/src/resources/extensions/gsd/tests/triage-dispatch.test.ts +6 -1
  352. package/src/resources/extensions/gsd/tests/windows-path-normalization.test.ts +99 -0
  353. package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +1 -0
  354. package/src/resources/extensions/gsd/tests/worktree-db.test.ts +4 -0
  355. package/src/resources/extensions/gsd/tests/worktree-health-dispatch.test.ts +178 -0
  356. package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +195 -105
  357. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +78 -3
  358. package/src/resources/extensions/gsd/tests/worktree-symlink-removal.test.ts +140 -0
  359. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +74 -0
  360. package/src/resources/extensions/gsd/types.ts +3 -0
  361. package/src/resources/extensions/gsd/workflow-engine.ts +38 -0
  362. package/src/resources/extensions/gsd/workflow-templates.ts +12 -1
  363. package/src/resources/extensions/gsd/worktree-manager.ts +21 -6
  364. package/src/resources/extensions/gsd/worktree-resolver.ts +30 -9
  365. package/src/resources/extensions/subagent/index.ts +7 -3
  366. package/src/resources/extensions/voice/index.ts +4 -4
  367. package/src/resources/skills/create-workflow/SKILL.md +103 -0
  368. package/src/resources/skills/create-workflow/references/feature-patterns.md +128 -0
  369. package/src/resources/skills/create-workflow/references/verification-policies.md +76 -0
  370. package/src/resources/skills/create-workflow/references/yaml-schema-v1.md +46 -0
  371. package/src/resources/skills/create-workflow/templates/blog-post-pipeline.yaml +60 -0
  372. package/src/resources/skills/create-workflow/templates/code-audit.yaml +60 -0
  373. package/src/resources/skills/create-workflow/templates/release-checklist.yaml +66 -0
  374. package/src/resources/skills/create-workflow/templates/workflow-definition.yaml +32 -0
  375. package/src/resources/skills/create-workflow/workflows/create-from-scratch.md +104 -0
  376. package/src/resources/skills/create-workflow/workflows/create-from-template.md +72 -0
  377. package/dist/web/standalone/.next/static/chunks/4024.279c423e4661ece1.js +0 -9
  378. package/dist/web/standalone/.next/static/chunks/app/_not-found/page-e07acdb7dd069836.js +0 -1
  379. package/dist/web/standalone/.next/static/chunks/app/layout-745c6ed5fea5fb06.js +0 -1
  380. package/dist/web/standalone/.next/static/chunks/app/page-801b53eff6e83579.js +0 -1
  381. package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-e6255954dccfcf0a.js +0 -1
  382. /package/dist/web/standalone/.next/static/{Ute3pMouVczQyT15qrBBO → PXrI5DoWsm7rwAVnEU2rD}/_buildManifest.js +0 -0
  383. /package/dist/web/standalone/.next/static/{Ute3pMouVczQyT15qrBBO → PXrI5DoWsm7rwAVnEU2rD}/_ssgManifest.js +0 -0
@@ -56,7 +56,7 @@ Use these templates exactly:
56
56
  9. Say exactly: "Milestone {{milestoneId}} ready."
57
57
 
58
58
  **For multi-milestone**, write in this order:
59
- 1. For each milestone, call `gsd_generate_milestone_id` to get its ID — never invent milestone IDs manually. Then `mkdir -p .gsd/milestones/<ID>/slices` for each.
59
+ 1. For each milestone, call `gsd_milestone_generate_id` to get its ID — never invent milestone IDs manually. Then `mkdir -p .gsd/milestones/<ID>/slices` for each.
60
60
  2. Write `.gsd/PROJECT.md` — full vision across ALL milestones (using Project template)
61
61
  3. Write `.gsd/REQUIREMENTS.md` — full capability contract (using Requirements template)
62
62
  4. Seed `.gsd/DECISIONS.md` (using Decisions template)
@@ -82,5 +82,5 @@ Use these templates exactly:
82
82
  - **Investigate before writing** — always scout the codebase first
83
83
  - **Use depends_on frontmatter** for multi-milestone sequences (the state machine reads this field to determine execution order)
84
84
  - **Anti-reduction rule** — if the spec describes a big vision, plan the big vision. Do not ask "what's the minimum viable version?" or reduce scope. Phase complex/risky work into later milestones — do not cut it.
85
- - **Naming convention** — always use `gsd_generate_milestone_id` to get milestone IDs. Directories use bare IDs (e.g. `M001/` or `M001-r5jzab/`), files use ID-SUFFIX format (e.g. `M001-CONTEXT.md` or `M001-r5jzab-CONTEXT.md`). Never invent milestone IDs manually.
85
+ - **Naming convention** — always use `gsd_milestone_generate_id` to get milestone IDs. Directories use bare IDs (e.g. `M001/` or `M001-r5jzab/`), files use ID-SUFFIX format (e.g. `M001-CONTEXT.md` or `M001-r5jzab-CONTEXT.md`). Never invent milestone IDs manually.
86
86
  - **End with "Milestone {{milestoneId}} ready."** — this triggers auto-start detection
@@ -214,7 +214,7 @@ Once the user confirms the milestone split:
214
214
 
215
215
  #### Phase 1: Shared artifacts
216
216
 
217
- 1. For each milestone, call `gsd_generate_milestone_id` to get its ID — never invent milestone IDs manually. Then `mkdir -p .gsd/milestones/<ID>/slices`.
217
+ 1. For each milestone, call `gsd_milestone_generate_id` to get its ID — never invent milestone IDs manually. Then `mkdir -p .gsd/milestones/<ID>/slices`.
218
218
  2. Write `.gsd/PROJECT.md` — use the **Project** output template below.
219
219
  3. Write `.gsd/REQUIREMENTS.md` — use the **Requirements** output template below. Capture Active, Deferred, Out of Scope, and any already Validated requirements. Later milestones may have provisional ownership where slice plans do not exist yet.
220
220
  4. Seed `.gsd/DECISIONS.md` — use the **Decisions** output template below.
@@ -107,7 +107,7 @@ The user confirms or corrects before you write. One depth verification per miles
107
107
 
108
108
  Once the user is satisfied, in a single pass for **each** new milestone:
109
109
 
110
- 1. Call `gsd_generate_milestone_id` to get the milestone ID — never invent milestone IDs manually. Then `mkdir -p .gsd/milestones/<ID>/slices`.
110
+ 1. Call `gsd_milestone_generate_id` to get the milestone ID — never invent milestone IDs manually. Then `mkdir -p .gsd/milestones/<ID>/slices`.
111
111
  2. Write `.gsd/milestones/<ID>/<ID>-CONTEXT.md` — use the **Context** output template below. Capture intent, scope, risks, constraints, integration points, and relevant requirements. Mark the status as "Queued — pending auto-mode execution." **If this milestone depends on other milestones, add YAML frontmatter with `depends_on`:**
112
112
  ```yaml
113
113
  ---
@@ -10,7 +10,7 @@ import { createHash } from "node:crypto";
10
10
  import { execFileSync } from "node:child_process";
11
11
  import { existsSync, lstatSync, mkdirSync, readFileSync, realpathSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
12
12
  import { homedir } from "node:os";
13
- import { basename, join, resolve } from "node:path";
13
+ import { basename, dirname, join, resolve } from "node:path";
14
14
 
15
15
  const gsdHome = process.env.GSD_HOME || join(homedir(), ".gsd");
16
16
 
@@ -95,6 +95,50 @@ export function readRepoMeta(externalPath: string): RepoMeta | null {
95
95
  }
96
96
  }
97
97
 
98
+ // ─── Inherited-Repo Detection ───────────────────────────────────────────────
99
+
100
+ /**
101
+ * Check whether `basePath` is inheriting a parent directory's git repo
102
+ * rather than being the git root itself.
103
+ *
104
+ * Returns true when ALL of:
105
+ * 1. basePath is inside a git repo (git rev-parse succeeds)
106
+ * 2. The resolved git root is a proper ancestor of basePath
107
+ * 3. There is no `.gsd` directory at the git root (the parent project
108
+ * has not been initialised with GSD)
109
+ *
110
+ * When true, the caller should run `git init` at basePath so that
111
+ * `repoIdentity()` produces a hash unique to this directory, preventing
112
+ * cross-project state leaks (#1639).
113
+ *
114
+ * When the git root already has `.gsd`, the directory is a legitimate
115
+ * subdirectory of an existing GSD project — `cd src/ && /gsd` should
116
+ * still load the parent project's milestones.
117
+ */
118
+ export function isInheritedRepo(basePath: string): boolean {
119
+ try {
120
+ const root = resolveGitRoot(basePath);
121
+ const normalizedBase = canonicalizeExistingPath(basePath);
122
+ const normalizedRoot = canonicalizeExistingPath(root);
123
+ if (normalizedBase === normalizedRoot) return false; // basePath IS the root
124
+
125
+ // The git root is a proper ancestor. Check whether it already has .gsd
126
+ // (i.e. the parent project was initialised with GSD).
127
+ if (existsSync(join(root, ".gsd"))) return false;
128
+
129
+ // Also walk up from basePath to the git root checking for .gsd
130
+ let dir = normalizedBase;
131
+ while (dir !== normalizedRoot && dir !== dirname(dir)) {
132
+ if (existsSync(join(dir, ".gsd"))) return false;
133
+ dir = dirname(dir);
134
+ }
135
+
136
+ return true;
137
+ } catch {
138
+ return false;
139
+ }
140
+ }
141
+
98
142
  // ─── Repo Identity ──────────────────────────────────────────────────────────
99
143
 
100
144
  /**
@@ -120,7 +164,8 @@ function getRemoteUrl(basePath: string): string {
120
164
  */
121
165
  function canonicalizeExistingPath(path: string): string {
122
166
  try {
123
- return realpathSync(path);
167
+ // Use native realpath on Windows to resolve 8.3 short paths (e.g. RUNNER~1)
168
+ return process.platform === "win32" ? realpathSync.native(path) : realpathSync(path);
124
169
  } catch {
125
170
  return resolve(path);
126
171
  }