gsd-pi 2.58.0-dev.778d6ac → 2.58.0-dev.d63175c

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 (628) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +35 -49
  3. package/dist/headless-ui.d.ts +0 -17
  4. package/dist/headless-ui.js +3 -97
  5. package/dist/headless.js +6 -67
  6. package/dist/help-text.js +0 -1
  7. package/dist/onboarding.js +0 -44
  8. package/dist/resource-loader.js +1 -16
  9. package/dist/resources/agents/researcher.md +1 -1
  10. package/dist/resources/extensions/ask-user-questions.js +3 -16
  11. package/dist/resources/extensions/async-jobs/extension-manifest.json +1 -1
  12. package/dist/resources/extensions/bg-shell/extension-manifest.json +1 -1
  13. package/dist/resources/extensions/browser-tools/extension-manifest.json +1 -1
  14. package/dist/resources/extensions/claude-code-cli/partial-builder.js +6 -14
  15. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +36 -59
  16. package/dist/resources/extensions/context7/extension-manifest.json +1 -1
  17. package/dist/resources/extensions/get-secrets-from-user.js +5 -8
  18. package/dist/resources/extensions/google-search/extension-manifest.json +1 -1
  19. package/dist/resources/extensions/google-search/index.js +1 -2
  20. package/dist/resources/extensions/gsd/auto/phases.js +21 -25
  21. package/dist/resources/extensions/gsd/auto-artifact-paths.js +2 -2
  22. package/dist/resources/extensions/gsd/auto-dashboard.js +20 -37
  23. package/dist/resources/extensions/gsd/auto-dispatch.js +2 -17
  24. package/dist/resources/extensions/gsd/auto-model-selection.js +3 -26
  25. package/dist/resources/extensions/gsd/auto-post-unit.js +4 -16
  26. package/dist/resources/extensions/gsd/auto-prompts.js +1 -1
  27. package/dist/resources/extensions/gsd/auto-recovery.js +5 -13
  28. package/dist/resources/extensions/gsd/auto-start.js +22 -35
  29. package/dist/resources/extensions/gsd/auto-worktree.js +12 -196
  30. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +0 -32
  31. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +8 -80
  32. package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +1 -32
  33. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +18 -33
  34. package/dist/resources/extensions/gsd/bootstrap/system-context.js +11 -44
  35. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +0 -67
  36. package/dist/resources/extensions/gsd/captures.js +4 -56
  37. package/dist/resources/extensions/gsd/db-writer.js +8 -116
  38. package/dist/resources/extensions/gsd/doctor-git-checks.js +0 -28
  39. package/dist/resources/extensions/gsd/doctor-providers.js +1 -2
  40. package/dist/resources/extensions/gsd/doctor-runtime-checks.js +4 -5
  41. package/dist/resources/extensions/gsd/doctor.js +1 -3
  42. package/dist/resources/extensions/gsd/error-classifier.js +10 -13
  43. package/dist/resources/extensions/gsd/extension-manifest.json +1 -16
  44. package/dist/resources/extensions/gsd/forensics.js +20 -123
  45. package/dist/resources/extensions/gsd/git-service.js +1 -23
  46. package/dist/resources/extensions/gsd/gitignore.js +0 -33
  47. package/dist/resources/extensions/gsd/gsd-db.js +9 -36
  48. package/dist/resources/extensions/gsd/guided-flow.js +44 -106
  49. package/dist/resources/extensions/gsd/health-widget-core.js +0 -31
  50. package/dist/resources/extensions/gsd/health-widget.js +0 -17
  51. package/dist/resources/extensions/gsd/index.js +1 -1
  52. package/dist/resources/extensions/gsd/memory-extractor.js +0 -7
  53. package/dist/resources/extensions/gsd/migrate-external.js +1 -8
  54. package/dist/resources/extensions/gsd/model-cost-table.js +0 -18
  55. package/dist/resources/extensions/gsd/model-router.js +1 -35
  56. package/dist/resources/extensions/gsd/native-git-bridge.js +0 -17
  57. package/dist/resources/extensions/gsd/notifications.js +1 -16
  58. package/dist/resources/extensions/gsd/parallel-eligibility.js +2 -13
  59. package/dist/resources/extensions/gsd/parallel-merge.js +5 -78
  60. package/dist/resources/extensions/gsd/parsers-legacy.js +3 -20
  61. package/dist/resources/extensions/gsd/paths.js +0 -43
  62. package/dist/resources/extensions/gsd/preferences-models.js +1 -14
  63. package/dist/resources/extensions/gsd/preferences-types.js +1 -2
  64. package/dist/resources/extensions/gsd/preferences.js +16 -13
  65. package/dist/resources/extensions/gsd/prompt-loader.js +1 -4
  66. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
  67. package/dist/resources/extensions/gsd/prompts/complete-slice.md +2 -4
  68. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +1 -1
  69. package/dist/resources/extensions/gsd/prompts/discuss.md +1 -1
  70. package/dist/resources/extensions/gsd/prompts/execute-task.md +1 -3
  71. package/dist/resources/extensions/gsd/prompts/forensics.md +2 -2
  72. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  73. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
  74. package/dist/resources/extensions/gsd/prompts/plan-slice.md +0 -2
  75. package/dist/resources/extensions/gsd/prompts/rethink.md +1 -1
  76. package/dist/resources/extensions/gsd/prompts/triage-captures.md +0 -1
  77. package/dist/resources/extensions/gsd/repo-identity.js +11 -205
  78. package/dist/resources/extensions/gsd/rethink.js +0 -5
  79. package/dist/resources/extensions/gsd/roadmap-slices.js +4 -5
  80. package/dist/resources/extensions/gsd/state.js +27 -85
  81. package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +1 -20
  82. package/dist/resources/extensions/gsd/tools/complete-task.js +71 -34
  83. package/dist/resources/extensions/gsd/tools/plan-milestone.js +2 -12
  84. package/dist/resources/extensions/gsd/tools/reassess-roadmap.js +1 -29
  85. package/dist/resources/extensions/gsd/tools/validate-milestone.js +3 -14
  86. package/dist/resources/extensions/gsd/triage-resolution.js +7 -22
  87. package/dist/resources/extensions/gsd/undo.js +2 -2
  88. package/dist/resources/extensions/gsd/unit-ownership.js +33 -164
  89. package/dist/resources/extensions/gsd/verdict-parser.js +8 -20
  90. package/dist/resources/extensions/gsd/workflow-manifest.js +5 -24
  91. package/dist/resources/extensions/gsd/workflow-projections.js +63 -95
  92. package/dist/resources/extensions/gsd/workflow-reconcile.js +5 -35
  93. package/dist/resources/extensions/gsd/workspace-index.js +0 -24
  94. package/dist/resources/extensions/gsd/worktree-manager.js +1 -105
  95. package/dist/resources/extensions/gsd/worktree-resolver.js +3 -20
  96. package/dist/resources/extensions/mcp-client/index.js +7 -11
  97. package/dist/resources/extensions/search-the-web/extension-manifest.json +1 -1
  98. package/dist/resources/extensions/shared/interview-ui.js +1 -11
  99. package/dist/resources/skills/create-gsd-extension/SKILL.md +3 -5
  100. package/dist/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +4 -5
  101. package/dist/resources/skills/create-gsd-extension/workflows/add-capability.md +2 -2
  102. package/dist/resources/skills/create-gsd-extension/workflows/create-extension.md +4 -4
  103. package/dist/resources/skills/create-gsd-extension/workflows/debug-extension.md +3 -5
  104. package/dist/web/standalone/.next/BUILD_ID +1 -1
  105. package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
  106. package/dist/web/standalone/.next/build-manifest.json +3 -3
  107. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  108. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  109. package/dist/web/standalone/.next/required-server-files.json +1 -1
  110. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  111. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  112. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  113. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  114. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  115. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  116. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  117. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  118. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  119. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  120. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  121. package/dist/web/standalone/.next/server/app/_not-found.rsc +2 -2
  122. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  123. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  124. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  125. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  126. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  127. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  128. package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
  129. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
  130. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
  131. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
  133. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
  135. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  136. package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
  137. package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  139. package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
  141. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  142. package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
  143. package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  145. package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
  146. package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  147. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  148. package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
  149. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  151. package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
  152. package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
  153. package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
  154. package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  157. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
  159. package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
  161. package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
  167. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  168. package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
  169. package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
  170. package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
  171. package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
  172. package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
  173. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
  174. package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
  175. package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  177. package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
  178. package/dist/web/standalone/.next/server/app/api/update/route.js +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_client-reference-manifest.js +1 -1
  182. package/dist/web/standalone/.next/server/app/index.html +1 -1
  183. package/dist/web/standalone/.next/server/app/index.rsc +2 -2
  184. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  185. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
  186. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  187. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  188. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  189. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  190. package/dist/web/standalone/.next/server/app-paths-manifest.json +17 -17
  191. package/dist/web/standalone/.next/server/chunks/2229.js +2 -2
  192. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  193. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  194. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  195. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  196. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  197. package/dist/web/standalone/.next/static/chunks/6502.8b732f67a11b11b4.js +9 -0
  198. package/dist/web/standalone/.next/static/chunks/{webpack-a1c1e452c6b32d04.js → webpack-61d3afac6d0f0ce7.js} +1 -1
  199. package/dist/web/standalone/.next/static/css/a58ef8a151aa0493.css +1 -0
  200. package/dist/web/standalone/server.js +1 -1
  201. package/dist/web-mode.js +1 -2
  202. package/package.json +2 -2
  203. package/packages/native/dist/ast/index.js +5 -9
  204. package/packages/native/dist/ast/types.js +1 -2
  205. package/packages/native/dist/clipboard/index.js +7 -12
  206. package/packages/native/dist/clipboard/types.js +1 -2
  207. package/packages/native/dist/diff/index.js +7 -12
  208. package/packages/native/dist/diff/types.js +1 -2
  209. package/packages/native/dist/fd/index.js +3 -6
  210. package/packages/native/dist/fd/types.js +1 -2
  211. package/packages/native/dist/glob/index.js +5 -9
  212. package/packages/native/dist/glob/types.js +1 -2
  213. package/packages/native/dist/grep/index.js +5 -9
  214. package/packages/native/dist/grep/types.js +1 -2
  215. package/packages/native/dist/gsd-parser/index.js +11 -18
  216. package/packages/native/dist/gsd-parser/types.js +1 -2
  217. package/packages/native/dist/highlight/index.js +7 -12
  218. package/packages/native/dist/highlight/types.js +1 -2
  219. package/packages/native/dist/html/index.js +3 -6
  220. package/packages/native/dist/html/types.js +1 -2
  221. package/packages/native/dist/image/index.js +5 -10
  222. package/packages/native/dist/image/types.js +4 -7
  223. package/packages/native/dist/index.js +17 -70
  224. package/packages/native/dist/json-parse/index.js +8 -13
  225. package/packages/native/dist/native.js +10 -47
  226. package/packages/native/dist/ps/index.js +9 -15
  227. package/packages/native/dist/ps/types.js +1 -2
  228. package/packages/native/dist/stream-process/index.js +7 -12
  229. package/packages/native/dist/text/index.js +14 -24
  230. package/packages/native/dist/text/types.js +2 -5
  231. package/packages/native/dist/truncate/index.js +7 -12
  232. package/packages/native/dist/ttsr/index.js +7 -12
  233. package/packages/native/dist/ttsr/types.js +1 -2
  234. package/packages/native/dist/xxhash/index.js +5 -9
  235. package/packages/native/package.json +19 -19
  236. package/packages/native/src/native.ts +8 -9
  237. package/packages/pi-agent-core/dist/agent-loop.js +2 -3
  238. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  239. package/packages/pi-agent-core/dist/proxy.d.ts +1 -1
  240. package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
  241. package/packages/pi-agent-core/dist/proxy.js.map +1 -1
  242. package/packages/pi-agent-core/src/agent-loop.ts +2 -3
  243. package/packages/pi-agent-core/src/proxy.ts +1 -1
  244. package/packages/pi-ai/dist/env-api-keys.js +0 -1
  245. package/packages/pi-ai/dist/env-api-keys.js.map +1 -1
  246. package/packages/pi-ai/dist/index.d.ts +0 -1
  247. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  248. package/packages/pi-ai/dist/index.js +0 -1
  249. package/packages/pi-ai/dist/index.js.map +1 -1
  250. package/packages/pi-ai/dist/providers/anthropic-shared.d.ts.map +1 -1
  251. package/packages/pi-ai/dist/providers/anthropic-shared.js +2 -19
  252. package/packages/pi-ai/dist/providers/anthropic-shared.js.map +1 -1
  253. package/packages/pi-ai/dist/types.d.ts +3 -3
  254. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  255. package/packages/pi-ai/dist/types.js.map +1 -1
  256. package/packages/pi-ai/dist/utils/json-parse.d.ts +0 -3
  257. package/packages/pi-ai/dist/utils/json-parse.d.ts.map +1 -1
  258. package/packages/pi-ai/dist/utils/json-parse.js +1 -24
  259. package/packages/pi-ai/dist/utils/json-parse.js.map +1 -1
  260. package/packages/pi-ai/src/env-api-keys.ts +0 -1
  261. package/packages/pi-ai/src/index.ts +0 -1
  262. package/packages/pi-ai/src/providers/anthropic-shared.ts +2 -17
  263. package/packages/pi-ai/src/types.ts +2 -3
  264. package/packages/pi-ai/src/utils/json-parse.ts +1 -28
  265. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +0 -4
  266. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  267. package/packages/pi-coding-agent/dist/core/agent-session.js +0 -31
  268. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  269. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts +1 -17
  270. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  271. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +2 -62
  272. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  273. package/packages/pi-coding-agent/dist/core/exec.d.ts.map +1 -1
  274. package/packages/pi-coding-agent/dist/core/exec.js +1 -3
  275. package/packages/pi-coding-agent/dist/core/exec.js.map +1 -1
  276. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +0 -4
  277. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  278. package/packages/pi-coding-agent/dist/core/extensions/index.js +0 -2
  279. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  280. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +0 -5
  281. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  282. package/packages/pi-coding-agent/dist/core/extensions/loader.js +0 -5
  283. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  284. package/packages/pi-coding-agent/dist/core/index.d.ts +1 -1
  285. package/packages/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  286. package/packages/pi-coding-agent/dist/core/index.js +1 -1
  287. package/packages/pi-coding-agent/dist/core/index.js.map +1 -1
  288. package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
  289. package/packages/pi-coding-agent/dist/core/lsp/index.js +0 -3
  290. package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
  291. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  292. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +0 -3
  293. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  294. package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
  295. package/packages/pi-coding-agent/dist/core/messages.js +2 -31
  296. package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
  297. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  298. package/packages/pi-coding-agent/dist/core/model-resolver.js +0 -1
  299. package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  300. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts +0 -10
  301. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  302. package/packages/pi-coding-agent/dist/core/resource-loader.js +1 -12
  303. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  304. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +0 -6
  305. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
  306. package/packages/pi-coding-agent/dist/core/retry-handler.js +1 -48
  307. package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
  308. package/packages/pi-coding-agent/dist/core/tools/hashline-read.d.ts.map +1 -1
  309. package/packages/pi-coding-agent/dist/core/tools/hashline-read.js +3 -10
  310. package/packages/pi-coding-agent/dist/core/tools/hashline-read.js.map +1 -1
  311. package/packages/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  312. package/packages/pi-coding-agent/dist/core/tools/read.js +4 -13
  313. package/packages/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  314. package/packages/pi-coding-agent/dist/index.d.ts +2 -2
  315. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  316. package/packages/pi-coding-agent/dist/index.js +1 -1
  317. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  318. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  319. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +0 -4
  320. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  321. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.d.ts +0 -1
  322. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.d.ts.map +1 -1
  323. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.js +0 -5
  324. package/packages/pi-coding-agent/dist/modes/rpc/remote-terminal.js.map +1 -1
  325. package/packages/pi-coding-agent/src/core/agent-session.ts +1 -38
  326. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +1 -94
  327. package/packages/pi-coding-agent/src/core/exec.ts +1 -3
  328. package/packages/pi-coding-agent/src/core/extensions/index.ts +0 -4
  329. package/packages/pi-coding-agent/src/core/extensions/loader.ts +0 -5
  330. package/packages/pi-coding-agent/src/core/index.ts +0 -6
  331. package/packages/pi-coding-agent/src/core/lsp/index.ts +0 -3
  332. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +0 -3
  333. package/packages/pi-coding-agent/src/core/messages.ts +2 -29
  334. package/packages/pi-coding-agent/src/core/model-resolver.ts +0 -1
  335. package/packages/pi-coding-agent/src/core/resource-loader.ts +1 -20
  336. package/packages/pi-coding-agent/src/core/retry-handler.ts +1 -52
  337. package/packages/pi-coding-agent/src/core/tools/hashline-read.ts +3 -11
  338. package/packages/pi-coding-agent/src/core/tools/read.ts +4 -14
  339. package/packages/pi-coding-agent/src/index.ts +0 -6
  340. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +0 -7
  341. package/packages/pi-coding-agent/src/modes/rpc/remote-terminal.ts +0 -6
  342. package/packages/pi-tui/dist/terminal.d.ts +0 -2
  343. package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
  344. package/packages/pi-tui/dist/terminal.js +0 -9
  345. package/packages/pi-tui/dist/terminal.js.map +1 -1
  346. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  347. package/packages/pi-tui/dist/tui.js +0 -9
  348. package/packages/pi-tui/dist/tui.js.map +1 -1
  349. package/packages/pi-tui/src/terminal.ts +0 -14
  350. package/packages/pi-tui/src/tui.ts +0 -8
  351. package/scripts/ensure-workspace-builds.cjs +14 -45
  352. package/src/resources/agents/researcher.md +1 -1
  353. package/src/resources/extensions/ask-user-questions.ts +3 -21
  354. package/src/resources/extensions/async-jobs/extension-manifest.json +1 -1
  355. package/src/resources/extensions/bg-shell/extension-manifest.json +1 -1
  356. package/src/resources/extensions/browser-tools/extension-manifest.json +1 -1
  357. package/src/resources/extensions/claude-code-cli/partial-builder.ts +6 -13
  358. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +35 -63
  359. package/src/resources/extensions/claude-code-cli/tests/partial-builder.test.ts +0 -28
  360. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +1 -108
  361. package/src/resources/extensions/context7/extension-manifest.json +1 -1
  362. package/src/resources/extensions/get-secrets-from-user.ts +5 -8
  363. package/src/resources/extensions/google-search/extension-manifest.json +1 -1
  364. package/src/resources/extensions/google-search/index.ts +1 -2
  365. package/src/resources/extensions/gsd/auto/loop-deps.ts +0 -1
  366. package/src/resources/extensions/gsd/auto/phases.ts +34 -43
  367. package/src/resources/extensions/gsd/auto-artifact-paths.ts +2 -2
  368. package/src/resources/extensions/gsd/auto-dashboard.ts +19 -37
  369. package/src/resources/extensions/gsd/auto-dispatch.ts +2 -18
  370. package/src/resources/extensions/gsd/auto-model-selection.ts +5 -26
  371. package/src/resources/extensions/gsd/auto-post-unit.ts +4 -18
  372. package/src/resources/extensions/gsd/auto-prompts.ts +1 -1
  373. package/src/resources/extensions/gsd/auto-recovery.ts +5 -12
  374. package/src/resources/extensions/gsd/auto-start.ts +26 -35
  375. package/src/resources/extensions/gsd/auto-worktree.ts +9 -190
  376. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +0 -31
  377. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +8 -85
  378. package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +1 -38
  379. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +19 -31
  380. package/src/resources/extensions/gsd/bootstrap/system-context.ts +11 -50
  381. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +0 -75
  382. package/src/resources/extensions/gsd/captures.ts +3 -63
  383. package/src/resources/extensions/gsd/db-writer.ts +7 -140
  384. package/src/resources/extensions/gsd/doctor-git-checks.ts +0 -26
  385. package/src/resources/extensions/gsd/doctor-providers.ts +1 -2
  386. package/src/resources/extensions/gsd/doctor-runtime-checks.ts +4 -5
  387. package/src/resources/extensions/gsd/doctor.ts +1 -3
  388. package/src/resources/extensions/gsd/error-classifier.ts +11 -14
  389. package/src/resources/extensions/gsd/extension-manifest.json +1 -16
  390. package/src/resources/extensions/gsd/forensics.ts +20 -144
  391. package/src/resources/extensions/gsd/git-service.ts +3 -26
  392. package/src/resources/extensions/gsd/gitignore.ts +0 -33
  393. package/src/resources/extensions/gsd/gsd-db.ts +7 -43
  394. package/src/resources/extensions/gsd/guided-flow.ts +45 -114
  395. package/src/resources/extensions/gsd/health-widget-core.ts +0 -34
  396. package/src/resources/extensions/gsd/health-widget.ts +0 -17
  397. package/src/resources/extensions/gsd/index.ts +0 -1
  398. package/src/resources/extensions/gsd/memory-extractor.ts +0 -8
  399. package/src/resources/extensions/gsd/migrate-external.ts +1 -9
  400. package/src/resources/extensions/gsd/model-cost-table.ts +0 -19
  401. package/src/resources/extensions/gsd/model-router.ts +1 -35
  402. package/src/resources/extensions/gsd/native-git-bridge.ts +0 -17
  403. package/src/resources/extensions/gsd/notifications.ts +0 -16
  404. package/src/resources/extensions/gsd/parallel-eligibility.ts +2 -15
  405. package/src/resources/extensions/gsd/parallel-merge.ts +4 -87
  406. package/src/resources/extensions/gsd/parsers-legacy.ts +3 -22
  407. package/src/resources/extensions/gsd/paths.ts +0 -42
  408. package/src/resources/extensions/gsd/preferences-models.ts +1 -14
  409. package/src/resources/extensions/gsd/preferences-types.ts +1 -2
  410. package/src/resources/extensions/gsd/preferences.ts +15 -13
  411. package/src/resources/extensions/gsd/prompt-loader.ts +1 -4
  412. package/src/resources/extensions/gsd/prompts/complete-milestone.md +1 -1
  413. package/src/resources/extensions/gsd/prompts/complete-slice.md +2 -4
  414. package/src/resources/extensions/gsd/prompts/discuss-headless.md +1 -1
  415. package/src/resources/extensions/gsd/prompts/discuss.md +1 -1
  416. package/src/resources/extensions/gsd/prompts/execute-task.md +1 -3
  417. package/src/resources/extensions/gsd/prompts/forensics.md +2 -2
  418. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  419. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
  420. package/src/resources/extensions/gsd/prompts/plan-slice.md +0 -2
  421. package/src/resources/extensions/gsd/prompts/rethink.md +1 -1
  422. package/src/resources/extensions/gsd/prompts/triage-captures.md +0 -1
  423. package/src/resources/extensions/gsd/repo-identity.ts +11 -186
  424. package/src/resources/extensions/gsd/rethink.ts +0 -6
  425. package/src/resources/extensions/gsd/roadmap-slices.ts +4 -5
  426. package/src/resources/extensions/gsd/state.ts +32 -84
  427. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +0 -29
  428. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +1 -71
  429. package/src/resources/extensions/gsd/tests/captures.test.ts +0 -103
  430. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +0 -27
  431. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +0 -21
  432. package/src/resources/extensions/gsd/tests/db-writer.test.ts +12 -7
  433. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +5 -78
  434. package/src/resources/extensions/gsd/tests/derive-state.test.ts +0 -29
  435. package/src/resources/extensions/gsd/tests/discuss-queued-milestones.test.ts +0 -40
  436. package/src/resources/extensions/gsd/tests/dist-redirect.mjs +1 -20
  437. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +0 -117
  438. package/src/resources/extensions/gsd/tests/empty-db-reconciliation.test.ts +79 -0
  439. package/src/resources/extensions/gsd/tests/forensics-dedup.test.ts +0 -31
  440. package/src/resources/extensions/gsd/tests/gsd-tools.test.ts +12 -125
  441. package/src/resources/extensions/gsd/tests/health-widget.test.ts +0 -67
  442. package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +1 -111
  443. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +0 -101
  444. package/src/resources/extensions/gsd/tests/integration/auto-worktree.test.ts +0 -59
  445. package/src/resources/extensions/gsd/tests/integration/parallel-merge.test.ts +0 -110
  446. package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +1 -1
  447. package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +2 -85
  448. package/src/resources/extensions/gsd/tests/model-cost-table.test.ts +0 -34
  449. package/src/resources/extensions/gsd/tests/model-router.test.ts +3 -68
  450. package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +0 -28
  451. package/src/resources/extensions/gsd/tests/notifications.test.ts +0 -45
  452. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +1 -33
  453. package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +0 -29
  454. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +0 -38
  455. package/src/resources/extensions/gsd/tests/reassess-handler.test.ts +0 -117
  456. package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +0 -97
  457. package/src/resources/extensions/gsd/tests/secure-env-collect.test.ts +0 -134
  458. package/src/resources/extensions/gsd/tests/tool-naming.test.ts +1 -2
  459. package/src/resources/extensions/gsd/tests/triage-resolution.test.ts +0 -8
  460. package/src/resources/extensions/gsd/tests/unit-ownership.test.ts +17 -100
  461. package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +1 -4
  462. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +0 -48
  463. package/src/resources/extensions/gsd/tests/workflow-manifest.test.ts +0 -92
  464. package/src/resources/extensions/gsd/tests/workflow-projections.test.ts +2 -4
  465. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +1 -48
  466. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +5 -29
  467. package/src/resources/extensions/gsd/tools/complete-task.ts +74 -36
  468. package/src/resources/extensions/gsd/tools/plan-milestone.ts +1 -13
  469. package/src/resources/extensions/gsd/tools/reassess-roadmap.ts +0 -36
  470. package/src/resources/extensions/gsd/tools/validate-milestone.ts +2 -20
  471. package/src/resources/extensions/gsd/triage-resolution.ts +6 -23
  472. package/src/resources/extensions/gsd/types.ts +2 -4
  473. package/src/resources/extensions/gsd/undo.ts +2 -2
  474. package/src/resources/extensions/gsd/unit-ownership.ts +35 -206
  475. package/src/resources/extensions/gsd/verdict-parser.ts +6 -21
  476. package/src/resources/extensions/gsd/workflow-logger.ts +1 -3
  477. package/src/resources/extensions/gsd/workflow-manifest.ts +5 -22
  478. package/src/resources/extensions/gsd/workflow-projections.ts +64 -97
  479. package/src/resources/extensions/gsd/workflow-reconcile.ts +10 -39
  480. package/src/resources/extensions/gsd/workspace-index.ts +0 -30
  481. package/src/resources/extensions/gsd/worktree-manager.ts +1 -120
  482. package/src/resources/extensions/gsd/worktree-resolver.ts +3 -22
  483. package/src/resources/extensions/mcp-client/index.ts +7 -13
  484. package/src/resources/extensions/search-the-web/extension-manifest.json +1 -1
  485. package/src/resources/extensions/shared/interview-ui.ts +1 -12
  486. package/src/resources/skills/create-gsd-extension/SKILL.md +3 -5
  487. package/src/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +4 -5
  488. package/src/resources/skills/create-gsd-extension/workflows/add-capability.md +2 -2
  489. package/src/resources/skills/create-gsd-extension/workflows/create-extension.md +4 -4
  490. package/src/resources/skills/create-gsd-extension/workflows/debug-extension.md +3 -5
  491. package/dist/resources/extensions/gsd/milestone-validation-gates.js +0 -45
  492. package/dist/resources/extensions/ollama/index.js +0 -112
  493. package/dist/resources/extensions/ollama/model-capabilities.js +0 -115
  494. package/dist/resources/extensions/ollama/ollama-client.js +0 -168
  495. package/dist/resources/extensions/ollama/ollama-commands.js +0 -194
  496. package/dist/resources/extensions/ollama/ollama-discovery.js +0 -69
  497. package/dist/resources/extensions/ollama/ollama-tool.js +0 -184
  498. package/dist/resources/extensions/ollama/types.js +0 -2
  499. package/dist/startup-model-validation.d.ts +0 -39
  500. package/dist/startup-model-validation.js +0 -50
  501. package/dist/web/standalone/.next/static/chunks/6502.7593d7797a4b3999.js +0 -9
  502. package/dist/web/standalone/.next/static/css/f6e8833d46e738d8.css +0 -1
  503. package/packages/native/src/__tests__/module-compat.test.mjs +0 -91
  504. package/packages/pi-agent-core/src/agent-loop.test.ts +0 -45
  505. package/packages/pi-ai/dist/providers/anthropic-shared.test.d.ts +0 -2
  506. package/packages/pi-ai/dist/providers/anthropic-shared.test.d.ts.map +0 -1
  507. package/packages/pi-ai/dist/providers/anthropic-shared.test.js +0 -25
  508. package/packages/pi-ai/dist/providers/anthropic-shared.test.js.map +0 -1
  509. package/packages/pi-ai/dist/utils/repair-tool-json.d.ts +0 -37
  510. package/packages/pi-ai/dist/utils/repair-tool-json.d.ts.map +0 -1
  511. package/packages/pi-ai/dist/utils/repair-tool-json.js +0 -75
  512. package/packages/pi-ai/dist/utils/repair-tool-json.js.map +0 -1
  513. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.d.ts +0 -2
  514. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.d.ts.map +0 -1
  515. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js +0 -73
  516. package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js.map +0 -1
  517. package/packages/pi-ai/src/providers/anthropic-shared.test.ts +0 -29
  518. package/packages/pi-ai/src/utils/repair-tool-json.ts +0 -88
  519. package/packages/pi-ai/src/utils/tests/repair-tool-json.test.ts +0 -102
  520. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.d.ts +0 -6
  521. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.d.ts.map +0 -1
  522. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js +0 -176
  523. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js.map +0 -1
  524. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.d.ts +0 -28
  525. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.d.ts.map +0 -1
  526. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.js +0 -37
  527. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.js.map +0 -1
  528. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.d.ts +0 -2
  529. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.d.ts.map +0 -1
  530. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.js +0 -63
  531. package/packages/pi-coding-agent/dist/core/extensions/extension-manifest.test.js.map +0 -1
  532. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.d.ts +0 -19
  533. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.d.ts.map +0 -1
  534. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.js +0 -115
  535. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.js.map +0 -1
  536. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.d.ts +0 -2
  537. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.d.ts.map +0 -1
  538. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.js +0 -109
  539. package/packages/pi-coding-agent/dist/core/extensions/extension-sort.test.js.map +0 -1
  540. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.d.ts +0 -44
  541. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.d.ts.map +0 -1
  542. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.js +0 -97
  543. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.js.map +0 -1
  544. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.d.ts +0 -2
  545. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.d.ts.map +0 -1
  546. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.js +0 -181
  547. package/packages/pi-coding-agent/dist/core/image-overflow-recovery.test.js.map +0 -1
  548. package/packages/pi-coding-agent/dist/core/messages.test.d.ts +0 -9
  549. package/packages/pi-coding-agent/dist/core/messages.test.d.ts.map +0 -1
  550. package/packages/pi-coding-agent/dist/core/messages.test.js +0 -86
  551. package/packages/pi-coding-agent/dist/core/messages.test.js.map +0 -1
  552. package/packages/pi-coding-agent/dist/core/retry-handler.test.d.ts +0 -9
  553. package/packages/pi-coding-agent/dist/core/retry-handler.test.d.ts.map +0 -1
  554. package/packages/pi-coding-agent/dist/core/retry-handler.test.js +0 -193
  555. package/packages/pi-coding-agent/dist/core/retry-handler.test.js.map +0 -1
  556. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.d.ts +0 -16
  557. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.d.ts.map +0 -1
  558. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.js +0 -80
  559. package/packages/pi-coding-agent/dist/core/tools/spawn-shell-windows.test.js.map +0 -1
  560. package/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +0 -236
  561. package/packages/pi-coding-agent/src/core/extensions/extension-manifest.test.ts +0 -77
  562. package/packages/pi-coding-agent/src/core/extensions/extension-manifest.ts +0 -62
  563. package/packages/pi-coding-agent/src/core/extensions/extension-sort.test.ts +0 -134
  564. package/packages/pi-coding-agent/src/core/extensions/extension-sort.ts +0 -137
  565. package/packages/pi-coding-agent/src/core/image-overflow-recovery.test.ts +0 -228
  566. package/packages/pi-coding-agent/src/core/image-overflow-recovery.ts +0 -118
  567. package/packages/pi-coding-agent/src/core/messages.test.ts +0 -114
  568. package/packages/pi-coding-agent/src/core/retry-handler.test.ts +0 -255
  569. package/packages/pi-coding-agent/src/core/tools/spawn-shell-windows.test.ts +0 -92
  570. package/src/resources/extensions/gsd/milestone-validation-gates.ts +0 -56
  571. package/src/resources/extensions/gsd/tests/auto-mode-interactive-guard.test.ts +0 -71
  572. package/src/resources/extensions/gsd/tests/cli-provider-rate-limit.test.ts +0 -47
  573. package/src/resources/extensions/gsd/tests/completion-hierarchy-guards.test.ts +0 -192
  574. package/src/resources/extensions/gsd/tests/db-path-worktree-symlink.test.ts +0 -131
  575. package/src/resources/extensions/gsd/tests/discord-invite-links.test.ts +0 -47
  576. package/src/resources/extensions/gsd/tests/discuss-empty-db-fallback.test.ts +0 -127
  577. package/src/resources/extensions/gsd/tests/dynamic-routing-default.test.ts +0 -20
  578. package/src/resources/extensions/gsd/tests/empty-content-abort-loop.test.ts +0 -74
  579. package/src/resources/extensions/gsd/tests/event-replay-idempotency.test.ts +0 -140
  580. package/src/resources/extensions/gsd/tests/forensics-context-persist.test.ts +0 -129
  581. package/src/resources/extensions/gsd/tests/forensics-db-completion.test.ts +0 -96
  582. package/src/resources/extensions/gsd/tests/gsdroot-worktree-detection.test.ts +0 -164
  583. package/src/resources/extensions/gsd/tests/guided-flow-dynamic-routing.test.ts +0 -135
  584. package/src/resources/extensions/gsd/tests/guided-flow-session-isolation.test.ts +0 -97
  585. package/src/resources/extensions/gsd/tests/hook-key-parsing.test.ts +0 -107
  586. package/src/resources/extensions/gsd/tests/integration/doctor-false-positives.test.ts +0 -243
  587. package/src/resources/extensions/gsd/tests/integration/gitignore-staging-2570.test.ts +0 -150
  588. package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +0 -959
  589. package/src/resources/extensions/gsd/tests/migrate-external-worktree.test.ts +0 -105
  590. package/src/resources/extensions/gsd/tests/milestone-status-authoritative.test.ts +0 -116
  591. package/src/resources/extensions/gsd/tests/parallel-commit-scope.test.ts +0 -159
  592. package/src/resources/extensions/gsd/tests/parallel-eligibility-ghost.test.ts +0 -150
  593. package/src/resources/extensions/gsd/tests/plan-milestone-title.test.ts +0 -70
  594. package/src/resources/extensions/gsd/tests/project-relocation-recovery.test.ts +0 -297
  595. package/src/resources/extensions/gsd/tests/prompt-loader-replacement.test.ts +0 -178
  596. package/src/resources/extensions/gsd/tests/prompt-tool-names.test.ts +0 -69
  597. package/src/resources/extensions/gsd/tests/queue-execution-guard.test.ts +0 -157
  598. package/src/resources/extensions/gsd/tests/quick-turn-end-cleanup.test.ts +0 -90
  599. package/src/resources/extensions/gsd/tests/reconciliation-edge-cases.test.ts +0 -162
  600. package/src/resources/extensions/gsd/tests/slice-disk-reconcile.test.ts +0 -233
  601. package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +0 -305
  602. package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +0 -405
  603. package/src/resources/extensions/gsd/tests/state-derivation-parity.test.ts +0 -257
  604. package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +0 -1628
  605. package/src/resources/extensions/gsd/tests/stop-auto-race-null-unit.test.ts +0 -106
  606. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +0 -174
  607. package/src/resources/extensions/gsd/tests/summary-render-parity.test.ts +0 -221
  608. package/src/resources/extensions/gsd/tests/uat-stuck-loop-orphaned-worktree.test.ts +0 -289
  609. package/src/resources/extensions/gsd/tests/vacuum-recovery.test.ts +0 -154
  610. package/src/resources/extensions/gsd/tests/verdict-parser.test.ts +0 -156
  611. package/src/resources/extensions/gsd/tests/verification-operational-gate.test.ts +0 -82
  612. package/src/resources/extensions/gsd/tests/worktree-db-respawn-truncation.test.ts +0 -140
  613. package/src/resources/extensions/gsd/tests/worktree-nested-git-safety.test.ts +0 -101
  614. package/src/resources/extensions/gsd/tests/zombie-gsd-state.test.ts +0 -95
  615. package/src/resources/extensions/mcp-client/tests/server-name-spaces.test.ts +0 -55
  616. package/src/resources/extensions/ollama/index.ts +0 -130
  617. package/src/resources/extensions/ollama/model-capabilities.ts +0 -145
  618. package/src/resources/extensions/ollama/ollama-client.ts +0 -196
  619. package/src/resources/extensions/ollama/ollama-commands.ts +0 -248
  620. package/src/resources/extensions/ollama/ollama-discovery.ts +0 -106
  621. package/src/resources/extensions/ollama/ollama-tool.ts +0 -218
  622. package/src/resources/extensions/ollama/tests/model-capabilities.test.ts +0 -162
  623. package/src/resources/extensions/ollama/tests/ollama-client.test.ts +0 -38
  624. package/src/resources/extensions/ollama/tests/ollama-discovery.test.ts +0 -28
  625. package/src/resources/extensions/ollama/types.ts +0 -130
  626. package/src/resources/extensions/shared/tests/ask-user-freetext.test.ts +0 -156
  627. /package/dist/web/standalone/.next/static/{R0D4xaIPl5kg93edN7Oo0 → 5DLsjFHdSB6_a1EDQVjr7}/_buildManifest.js +0 -0
  628. /package/dist/web/standalone/.next/static/{R0D4xaIPl5kg93edN7Oo0 → 5DLsjFHdSB6_a1EDQVjr7}/_ssgManifest.js +0 -0
@@ -1,53 +1,19 @@
1
1
  import { join } from "node:path";
2
2
  import { mkdirSync, existsSync, readFileSync, unlinkSync } from "node:fs";
3
- import { logWarning, logError } from "./workflow-logger.js";
4
3
  import { readEvents, findForkPoint, appendEvent, getSessionId } from "./workflow-events.js";
5
4
  import type { WorkflowEvent } from "./workflow-events.js";
6
5
  import {
7
6
  transaction,
8
7
  updateTaskStatus,
9
8
  updateSliceStatus,
10
- getSliceTasks,
11
9
  insertVerificationEvidence,
12
10
  upsertDecision,
13
11
  openDatabase,
14
12
  } from "./gsd-db.js";
15
- import { isClosedStatus } from "./status-guards.js";
16
13
  import { writeManifest } from "./workflow-manifest.js";
17
14
  import { atomicWriteSync } from "./atomic-write.js";
18
15
  import { acquireSyncLock, releaseSyncLock } from "./sync-lock.js";
19
16
 
20
- // ─── Replay Helpers ──────────────────────────────────────────────────────────
21
-
22
- /**
23
- * Replay a complete_slice event with task validation.
24
- *
25
- * #2945 Bug 2: The original replay blindly called updateSliceStatus("done")
26
- * without checking whether all tasks in the slice are actually complete.
27
- * During API overload or partial execution, a complete_slice event could
28
- * be logged even when tasks were skipped, causing the milestone completion
29
- * guard to see the slice as "done" and allow premature milestone completion.
30
- *
31
- * This function validates that every task in the slice has a closed status
32
- * before marking the slice as done. If any task is still pending, the slice
33
- * status is left unchanged.
34
- */
35
- export function replaySliceComplete(milestoneId: string, sliceId: string, ts: string): void {
36
- const tasks = getSliceTasks(milestoneId, sliceId);
37
- // If there are tasks and any are not closed, skip the status update
38
- if (tasks.length > 0) {
39
- const incompleteTasks = tasks.filter(t => !isClosedStatus(t.status));
40
- if (incompleteTasks.length > 0) {
41
- process.stderr.write(
42
- `[gsd] reconcile: skipping complete_slice replay for ${sliceId} — ` +
43
- `${incompleteTasks.length} task(s) still pending\n`,
44
- );
45
- return;
46
- }
47
- }
48
- updateSliceStatus(milestoneId, sliceId, "done", ts);
49
- }
50
-
51
17
  // ─── Public Types ─────────────────────────────────────────────────────────────
52
18
 
53
19
  export interface ConflictEntry {
@@ -116,8 +82,7 @@ function replayEvents(events: WorkflowEvent[]): void {
116
82
  case "complete_slice": {
117
83
  const milestoneId = p["milestoneId"] as string;
118
84
  const sliceId = p["sliceId"] as string;
119
- // #2945 Bug 2: validate tasks before marking slice done
120
- replaySliceComplete(milestoneId, sliceId, event.ts);
85
+ updateSliceStatus(milestoneId, sliceId, "done", event.ts);
121
86
  break;
122
87
  }
123
88
  case "plan_slice": {
@@ -309,7 +274,9 @@ export function reconcileWorktreeLogs(
309
274
  // Acquire advisory lock to prevent concurrent reconcile + append races
310
275
  const lock = acquireSyncLock(mainBasePath);
311
276
  if (!lock.acquired) {
312
- logWarning("reconcile", "could not acquire sync lock — another reconciliation may be in progress");
277
+ process.stderr.write(
278
+ `[gsd] reconcile: could not acquire sync lock — another reconciliation may be in progress\n`,
279
+ );
313
280
  return { autoMerged: 0, conflicts: [] };
314
281
  }
315
282
 
@@ -348,7 +315,9 @@ function _reconcileWorktreeLogsInner(
348
315
  if (conflicts.length > 0) {
349
316
  // D-04: atomic all-or-nothing — block entire merge
350
317
  writeConflictsFile(mainBasePath, conflicts, worktreeBasePath);
351
- logError("reconcile", `${conflicts.length} conflict(s) detected`, { count: String(conflicts.length), path: join(mainBasePath, ".gsd", "CONFLICTS.md") });
318
+ process.stderr.write(
319
+ `[gsd] reconcile: ${conflicts.length} conflict(s) detected — see ${join(mainBasePath, ".gsd", "CONFLICTS.md")}\n`,
320
+ );
352
321
  return { autoMerged: 0, conflicts };
353
322
  }
354
323
 
@@ -372,7 +341,9 @@ function _reconcileWorktreeLogsInner(
372
341
  try {
373
342
  writeManifest(mainBasePath);
374
343
  } catch (err) {
375
- logWarning("reconcile", "manifest write failed (non-fatal)", { error: (err as Error).message });
344
+ process.stderr.write(
345
+ `[gsd] reconcile: manifest write failed (non-fatal): ${(err as Error).message}\n`,
346
+ );
376
347
  }
377
348
 
378
349
  return { autoMerged: merged.length, conflicts: [] };
@@ -11,7 +11,6 @@ import {
11
11
  resolveTasksDir,
12
12
  } from "./paths.js";
13
13
  import { deriveState } from "./state.js";
14
- import { extractVerdict } from "./verdict-parser.js";
15
14
  import { milestoneIdSort, findMilestoneIds } from "./guided-flow.js";
16
15
  import type { RiskLevel } from "./types.js";
17
16
  import { getSliceBranchName, detectWorktreeName } from "./worktree.js";
@@ -43,10 +42,6 @@ export interface WorkspaceMilestoneTarget {
43
42
  id: string;
44
43
  title: string;
45
44
  roadmapPath?: string;
46
- /** Authoritative milestone lifecycle status from the GSD state registry. */
47
- status?: "complete" | "active" | "pending" | "parked";
48
- /** Milestone validation verdict, when validation has been performed. */
49
- validationVerdict?: "pass" | "needs-attention" | "needs-remediation";
50
45
  slices: WorkspaceSliceTarget[];
51
46
  }
52
47
 
@@ -197,31 +192,6 @@ export async function indexWorkspace(basePath: string, opts: IndexWorkspaceOptio
197
192
  phase: state.phase,
198
193
  };
199
194
 
200
- // Enrich milestones with authoritative status from state registry (#2807)
201
- if (state.registry) {
202
- const registryMap = new Map(state.registry.map(e => [e.id, e]));
203
- for (const milestone of milestones) {
204
- const entry = registryMap.get(milestone.id);
205
- if (entry) {
206
- milestone.status = entry.status;
207
- }
208
- }
209
- }
210
-
211
- // Populate validationVerdict from VALIDATION files (#2807)
212
- for (const milestone of milestones) {
213
- const validationPath = resolveMilestoneFile(basePath, milestone.id, "VALIDATION");
214
- if (validationPath) {
215
- const validationContent = await loadFile(validationPath);
216
- if (validationContent) {
217
- const verdict = extractVerdict(validationContent);
218
- if (verdict === "pass" || verdict === "needs-attention" || verdict === "needs-remediation") {
219
- milestone.validationVerdict = verdict;
220
- }
221
- }
222
- }
223
- }
224
-
225
195
  const scopes: WorkspaceScopeTarget[] = [{ scope: "project", label: "project", kind: "project" }];
226
196
  for (const milestone of milestones) {
227
197
  scopes.push({ scope: milestone.id, label: `${milestone.id}: ${milestone.title}`, kind: "milestone" });
@@ -15,7 +15,7 @@
15
15
  * 4. remove() — git worktree remove + branch cleanup
16
16
  */
17
17
 
18
- import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, realpathSync, rmSync } from "node:fs";
18
+ import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync } from "node:fs";
19
19
  import { execFileSync } from "node:child_process";
20
20
  import { join, resolve, sep } from "node:path";
21
21
  import { GSDError, GSD_PARSE_ERROR, GSD_STALE_STATE, GSD_LOCK_HELD, GSD_GIT_ERROR, GSD_MERGE_CONFLICT } from "./errors.js";
@@ -277,78 +277,6 @@ export function listWorktrees(basePath: string): WorktreeInfo[] {
277
277
  return worktrees;
278
278
  }
279
279
 
280
- // ─── Nested .git Detection (#2616) ──────────────────────────────────────
281
- //
282
- // Scaffolding tools (create-next-app, cargo init, etc.) create nested .git
283
- // directories inside worktrees. Git records these as gitlinks (mode 160000)
284
- // without a .gitmodules entry — so worktree cleanup destroys the only copy
285
- // of their object database, causing permanent silent data loss.
286
-
287
- /** Directories to skip when scanning for nested .git dirs. */
288
- const NESTED_GIT_SKIP_DIRS = new Set([
289
- ".git", ".gsd", "node_modules", ".next", ".nuxt", "dist", "build",
290
- "__pycache__", ".tox", ".venv", "venv", "target", "vendor",
291
- ]);
292
-
293
- /**
294
- * Recursively find nested .git directories inside a worktree root.
295
- * Returns paths to directories that contain their own .git (directory, not file).
296
- * Skips node_modules, .gsd, and other non-project directories for performance.
297
- *
298
- * A nested .git *directory* (not a .git file — which is a legitimate worktree
299
- * pointer) indicates a scaffolded repo that will become an orphaned gitlink.
300
- */
301
- export function findNestedGitDirs(rootPath: string): string[] {
302
- const results: string[] = [];
303
-
304
- function walk(dir: string, depth: number): void {
305
- // Cap recursion depth to avoid runaway scanning
306
- if (depth > 10) return;
307
-
308
- let entries: string[];
309
- try {
310
- entries = readdirSync(dir);
311
- } catch {
312
- return; // Permission denied, broken symlink, etc.
313
- }
314
-
315
- for (const entry of entries) {
316
- if (NESTED_GIT_SKIP_DIRS.has(entry)) continue;
317
-
318
- const fullPath = join(dir, entry);
319
-
320
- // Only follow real directories, not symlinks
321
- let stat;
322
- try {
323
- stat = lstatSync(fullPath);
324
- } catch {
325
- continue;
326
- }
327
- if (!stat.isDirectory()) continue;
328
-
329
- // Check if this directory contains a .git *directory* (not a .git file).
330
- // A .git file is a worktree pointer and is legitimate.
331
- // A .git directory is a standalone repo created by scaffolding.
332
- const innerGit = join(fullPath, ".git");
333
- try {
334
- const innerStat = lstatSync(innerGit);
335
- if (innerStat.isDirectory()) {
336
- results.push(fullPath);
337
- // Don't recurse into the nested repo — we found what we need
338
- continue;
339
- }
340
- } catch {
341
- // No .git here — continue scanning
342
- }
343
-
344
- walk(fullPath, depth + 1);
345
- }
346
- }
347
-
348
- walk(rootPath, 0);
349
- return results;
350
- }
351
-
352
280
  /**
353
281
  * Remove a worktree and optionally delete its branch.
354
282
  * If the process is currently inside the worktree, chdir out first.
@@ -427,30 +355,6 @@ export function removeWorktree(
427
355
  }
428
356
  }
429
357
 
430
- // Nested .git safety (#2616): detect nested .git directories created by
431
- // scaffolding tools (create-next-app, cargo init, etc.). These produce
432
- // gitlink entries (mode 160000) without .gitmodules — cleanup would destroy
433
- // the only copy of the nested object database, causing permanent data loss.
434
- // Fix: remove the nested .git dirs so git tracks the files as regular content.
435
- const nestedGitDirs = findNestedGitDirs(resolvedWtPath);
436
- if (nestedGitDirs.length > 0) {
437
- for (const nestedDir of nestedGitDirs) {
438
- const nestedGitPath = join(nestedDir, ".git");
439
- try {
440
- rmSync(nestedGitPath, { recursive: true, force: true });
441
- logWarning("reconcile",
442
- `Removed nested .git directory from scaffolded project to prevent data loss (#2616)`,
443
- { worktree: name, nestedRepo: nestedDir },
444
- );
445
- } catch {
446
- logWarning("reconcile",
447
- `Failed to remove nested .git directory — files may be lost as orphaned gitlink`,
448
- { worktree: name, nestedRepo: nestedDir },
449
- );
450
- }
451
- }
452
- }
453
-
454
358
  // Remove worktree: try non-force first when submodules have changes,
455
359
  // falling back to force only after submodule state has been preserved.
456
360
  const useForce = hasSubmoduleChanges ? false : force;
@@ -461,29 +365,6 @@ export function removeWorktree(
461
365
  try { nativeWorktreeRemove(basePath, resolvedWtPath, true); } catch { /* may fail */ }
462
366
  }
463
367
 
464
- // (#2821) If the worktree directory STILL exists after both native removal
465
- // attempts (e.g. untracked files like ASSESSMENT/UAT-RESULT prevent git
466
- // worktree remove), force-remove the git internal worktree metadata first,
467
- // then remove the filesystem directory. Without this, the .git/worktrees/<name>
468
- // lock prevents rmSync from cleaning up, and the orphaned worktree directory
469
- // causes every subsequent `/gsd auto` to re-enter the stale worktree.
470
- if (existsSync(resolvedWtPath)) {
471
- try {
472
- const wtInternalDir = join(basePath, ".git", "worktrees", name);
473
- if (existsSync(wtInternalDir)) {
474
- rmSync(wtInternalDir, { recursive: true, force: true });
475
- }
476
- rmSync(resolvedWtPath, { recursive: true, force: true });
477
- } catch {
478
- logWarning(
479
- "reconcile",
480
- `Worktree directory could not be removed after git internal cleanup: ${resolvedWtPath}. ` +
481
- `Manual cleanup: rm -rf "${resolvedWtPath.replaceAll("\\", "/")}"`,
482
- { worktree: name },
483
- );
484
- }
485
- }
486
-
487
368
  // Prune stale entries so git knows the worktree is gone
488
369
  nativeWorktreePrune(basePath);
489
370
 
@@ -350,13 +350,7 @@ export class WorktreeResolver {
350
350
  data: { milestoneId, mode },
351
351
  });
352
352
 
353
- // #2625: If we are physically inside an auto-worktree, we MUST merge
354
- // regardless of the current isolation config. This prevents data loss when
355
- // the default isolation mode changes between versions (e.g., "worktree" ->
356
- // "none"): the worktree branch still holds real commits that need merging.
357
- const inWorktree = this.deps.isInAutoWorktree(this.s.basePath) && this.s.originalBasePath;
358
-
359
- if (mode === "none" && !inWorktree) {
353
+ if (mode === "none") {
360
354
  debugLog("WorktreeResolver", {
361
355
  action: "mergeAndExit",
362
356
  milestoneId,
@@ -367,7 +361,8 @@ export class WorktreeResolver {
367
361
  }
368
362
 
369
363
  if (
370
- mode === "worktree" || inWorktree
364
+ mode === "worktree" ||
365
+ (this.deps.isInAutoWorktree(this.s.basePath) && this.s.originalBasePath)
371
366
  ) {
372
367
  this._mergeWorktreeMode(milestoneId, ctx);
373
368
  } else if (mode === "branch") {
@@ -437,20 +432,6 @@ export class WorktreeResolver {
437
432
  milestoneId,
438
433
  roadmapContent,
439
434
  );
440
-
441
- // #2945 Bug 3: mergeMilestoneToMain performs best-effort worktree
442
- // cleanup internally (step 12), but it can silently fail on Windows
443
- // or when the worktree directory is locked. Perform a secondary
444
- // teardown here to ensure the worktree is properly cleaned up.
445
- // This is idempotent — if the worktree was already removed,
446
- // teardownAutoWorktree handles the no-op case gracefully.
447
- try {
448
- this.deps.teardownAutoWorktree(originalBase, milestoneId);
449
- } catch {
450
- // Best-effort — the primary cleanup in mergeMilestoneToMain may
451
- // have already removed the worktree.
452
- }
453
-
454
435
  if (mergeResult.codeFilesChanged) {
455
436
  ctx.notify(
456
437
  `Milestone ${milestoneId} merged to main.${mergeResult.pushed ? " Pushed to remote." : ""}`,
@@ -111,11 +111,7 @@ function readConfigs(): McpServerConfig[] {
111
111
  }
112
112
 
113
113
  function getServerConfig(name: string): McpServerConfig | undefined {
114
- const trimmed = name.trim();
115
- return readConfigs().find((s) =>
116
- s.name === trimmed ||
117
- s.name.toLowerCase() === trimmed.toLowerCase(),
118
- );
114
+ return readConfigs().find((s) => s.name === name);
119
115
  }
120
116
 
121
117
  /** Resolve ${VAR} references in env values against process.env. */
@@ -135,14 +131,12 @@ function resolveEnv(env: Record<string, string>): Record<string, string> {
135
131
  }
136
132
 
137
133
  async function getOrConnect(name: string, signal?: AbortSignal): Promise<Client> {
134
+ const existing = connections.get(name);
135
+ if (existing) return existing.client;
136
+
138
137
  const config = getServerConfig(name);
139
138
  if (!config) throw new Error(`Unknown MCP server: "${name}". Use mcp_servers to list available servers.`);
140
139
 
141
- // Always use config.name as the canonical cache key so that variant
142
- // casing / whitespace still hits the same connection.
143
- const existing = connections.get(config.name);
144
- if (existing) return existing.client;
145
-
146
140
  const client = new Client({ name: "gsd", version: "1.0.0" });
147
141
  let transport: StdioClientTransport | StreamableHTTPClientTransport;
148
142
 
@@ -157,15 +151,15 @@ async function getOrConnect(name: string, signal?: AbortSignal): Promise<Client>
157
151
  } else if (config.transport === "http" && config.url) {
158
152
  const resolvedUrl = config.url.replace(
159
153
  /\$\{([^}]+)\}/g,
160
- (_, varName) => process.env[varName] ?? "",
154
+ (_, name) => process.env[name] ?? "",
161
155
  );
162
156
  transport = new StreamableHTTPClientTransport(new URL(resolvedUrl));
163
157
  } else {
164
- throw new Error(`Server "${config.name}" has unsupported transport: ${config.transport}`);
158
+ throw new Error(`Server "${name}" has unsupported transport: ${config.transport}`);
165
159
  }
166
160
 
167
161
  await client.connect(transport, { signal, timeout: 30000 });
168
- connections.set(config.name, { client, transport });
162
+ connections.set(name, { client, transport });
169
163
  return client;
170
164
  }
171
165
 
@@ -8,6 +8,6 @@
8
8
  "provides": {
9
9
  "tools": ["search-the-web", "fetch_page", "search_and_read", "web_search"],
10
10
  "commands": ["search-provider"],
11
- "hooks": ["session_start", "model_select", "before_provider_request"]
11
+ "hooks": ["model_select", "before_provider_request"]
12
12
  }
13
13
  }
@@ -105,7 +105,7 @@ export interface WrapUpOptions {
105
105
  // ─── Constants ────────────────────────────────────────────────────────────────
106
106
 
107
107
  const OTHER_OPTION_LABEL = "None of the above";
108
- const OTHER_OPTION_DESCRIPTION = "Select to type your own answer.";
108
+ const OTHER_OPTION_DESCRIPTION = "Press TAB to add optional notes.";
109
109
 
110
110
  // ─── Wrap-up screen ───────────────────────────────────────────────────────────
111
111
 
@@ -295,17 +295,6 @@ export async function showInterviewRound(
295
295
  states[currentIdx].committedIndex = states[currentIdx].cursorIndex;
296
296
  }
297
297
 
298
- // Auto-open the notes field when "None of the above" is selected
299
- // so the user can immediately provide a free-text explanation
300
- // instead of being trapped in a re-asking loop (bug #2715).
301
- if (!isMultiSelect(currentIdx) && states[currentIdx].cursorIndex === noneOrDoneIdx(currentIdx)) {
302
- states[currentIdx].notesVisible = true;
303
- focusNotes = true;
304
- loadStateToEditor();
305
- refresh();
306
- return;
307
- }
308
-
309
298
  if (isMultiQuestion && currentIdx < questions.length - 1) {
310
299
  let next = currentIdx + 1;
311
300
  for (let i = 0; i < questions.length; i++) {
@@ -7,11 +7,9 @@ description: Create, debug, and iterate on GSD extensions (TypeScript modules th
7
7
 
8
8
  **Extensions are TypeScript modules** that hook into GSD's runtime (built on pi). They export a default function receiving `ExtensionAPI` and use it to subscribe to events, register tools/commands/shortcuts, and interact with the session.
9
9
 
10
- **GSD extension paths (community/user-installed extensions):**
11
- - Global: `~/.pi/agent/extensions/*.ts` or `~/.pi/agent/extensions/*/index.ts`
12
- - Project-local: `.gsd/extensions/*.ts` or `.gsd/extensions/*/index.ts`
13
-
14
- Note: `~/.gsd/agent/extensions/` is reserved for bundled extensions synced from the gsd-pi package. Community extensions placed there are silently ignored by the loader.
10
+ **GSD extension paths:**
11
+ - Global extensions: `~/.gsd/agent/extensions/*.ts` or `~/.gsd/agent/extensions/*/index.ts`
12
+ - Project-local extensions: `.gsd/extensions/*.ts` or `.gsd/extensions/*/index.ts`
15
13
 
16
14
  **The three primitives:**
17
15
  1. **Events** — Listen and react (`pi.on("event", handler)`). Can block tool calls, modify messages, inject context.
@@ -26,12 +26,11 @@ Non-negotiable rules and common gotchas when building GSD extensions.
26
26
  </common_patterns>
27
27
 
28
28
  <gsd_paths>
29
- **GSD extension paths (community/user-installed extensions):**
30
- - Global: `~/.pi/agent/extensions/*.ts`
31
- - Global (subdir): `~/.pi/agent/extensions/*/index.ts`
29
+ **GSD extension paths:**
30
+ - Global: `~/.gsd/agent/extensions/*.ts`
31
+ - Global (subdir): `~/.gsd/agent/extensions/*/index.ts`
32
32
  - Project-local: `.gsd/extensions/*.ts`
33
33
  - Project-local (subdir): `.gsd/extensions/*/index.ts`
34
34
 
35
- Note: `~/.gsd/agent/extensions/` is reserved for bundled extensions synced from the gsd-pi package.
36
- Community extensions placed there are silently ignored by the loader.
35
+ The upstream pi docs reference `~/.pi` paths GSD uses `~/.gsd` everywhere instead.
37
36
  </gsd_paths>
@@ -14,7 +14,7 @@ Read the reference file for the specific capability being added:
14
14
  ## Step 1: Identify the Extension
15
15
 
16
16
  Locate the existing extension file. Check:
17
- - `~/.pi/agent/extensions/` (global community extensions)
17
+ - `~/.gsd/agent/extensions/` (global)
18
18
  - `.gsd/extensions/` (project-local)
19
19
 
20
20
  Read the current extension code to understand its structure.
@@ -28,7 +28,7 @@ If the extension needs new imports, add them at the top of the file.
28
28
  ## Step 3: Handle Structural Changes
29
29
 
30
30
  **Single file → Directory**: If the extension is outgrowing a single file:
31
- 1. Create `~/.pi/agent/extensions/my-extension/`
31
+ 1. Create `~/.gsd/agent/extensions/my-extension/`
32
32
  2. Move the file to `index.ts`
33
33
  3. Extract helpers to separate files
34
34
 
@@ -12,7 +12,7 @@
12
12
  ## Step 1: Determine Scope and Placement
13
13
 
14
14
  Ask the user:
15
- - **Global** (`~/.pi/agent/extensions/`) — Available in all GSD sessions
15
+ - **Global** (`~/.gsd/agent/extensions/`) — Available in all GSD sessions
16
16
  - **Project-local** (`.gsd/extensions/`) — Available only in this project
17
17
 
18
18
  ## Step 2: Determine Extension Capabilities
@@ -36,12 +36,12 @@ Identify what the extension needs from the user's description:
36
36
 
37
37
  **Single file** — for small extensions (1-2 tools/commands, simple hooks):
38
38
  ```
39
- ~/.pi/agent/extensions/my-extension.ts
39
+ ~/.gsd/agent/extensions/my-extension.ts
40
40
  ```
41
41
 
42
42
  **Directory with index.ts** — for multi-file extensions:
43
43
  ```
44
- ~/.pi/agent/extensions/my-extension/
44
+ ~/.gsd/agent/extensions/my-extension/
45
45
  ├── index.ts
46
46
  ├── tools.ts
47
47
  └── utils.ts
@@ -49,7 +49,7 @@ Identify what the extension needs from the user's description:
49
49
 
50
50
  **Package with dependencies** — when npm packages are needed:
51
51
  ```
52
- ~/.pi/agent/extensions/my-extension/
52
+ ~/.gsd/agent/extensions/my-extension/
53
53
  ├── package.json
54
54
  ├── src/index.ts
55
55
  └── node_modules/
@@ -32,14 +32,12 @@ gsd -e ./path/to/extension.ts
32
32
 
33
33
  ## Step 3: Verify File Location
34
34
 
35
- Community extensions must be in auto-discovery paths:
36
- - `~/.pi/agent/extensions/*.ts`
37
- - `~/.pi/agent/extensions/*/index.ts`
35
+ Extensions must be in auto-discovery paths:
36
+ - `~/.gsd/agent/extensions/*.ts`
37
+ - `~/.gsd/agent/extensions/*/index.ts`
38
38
  - `.gsd/extensions/*.ts`
39
39
  - `.gsd/extensions/*/index.ts`
40
40
 
41
- Note: `~/.gsd/agent/extensions/` is reserved for bundled extensions synced from the gsd-pi package.
42
-
43
41
  The file must `export default function(pi: ExtensionAPI) { ... }`.
44
42
 
45
43
  ## Step 4: Check for Common Mistakes
@@ -1,45 +0,0 @@
1
- /**
2
- * Milestone validation quality gate persistence.
3
- *
4
- * #2945 Bug 4: validate-milestone was writing VALIDATION.md to disk and
5
- * inserting an assessment row, but never persisted structured quality_gates
6
- * records in the DB. This module inserts milestone-level validation gates
7
- * that correspond to the validation checks performed.
8
- *
9
- * Gate IDs for milestone validation:
10
- * MV01 — Success criteria checklist
11
- * MV02 — Slice delivery audit
12
- * MV03 — Cross-slice integration
13
- * MV04 — Requirement coverage
14
- *
15
- * These use the existing quality_gates table with scope "milestone".
16
- */
17
- import { _getAdapter } from "./gsd-db.js";
18
- /** Milestone validation gate IDs. */
19
- const MILESTONE_GATE_IDS = ["MV01", "MV02", "MV03", "MV04"];
20
- /**
21
- * Insert milestone-level quality_gates records for a validation run.
22
- *
23
- * Each gate is inserted with status "complete" and a verdict derived
24
- * from the overall milestone validation verdict. Individual gate-level
25
- * verdicts are not available (the handler receives a single verdict),
26
- * so all gates share the overall verdict.
27
- */
28
- export function insertMilestoneValidationGates(milestoneId, sliceId, verdict, evaluatedAt) {
29
- const db = _getAdapter();
30
- if (!db)
31
- return;
32
- const gateVerdict = verdict === "pass" ? "pass" : "flag";
33
- for (const gateId of MILESTONE_GATE_IDS) {
34
- db.prepare(`INSERT OR REPLACE INTO quality_gates
35
- (milestone_id, slice_id, gate_id, scope, task_id, status, verdict, rationale, findings, evaluated_at)
36
- VALUES (:mid, :sid, :gid, 'milestone', '', 'complete', :verdict, :rationale, '', :evaluated_at)`).run({
37
- ":mid": milestoneId,
38
- ":sid": sliceId,
39
- ":gid": gateId,
40
- ":verdict": gateVerdict,
41
- ":rationale": `Milestone validation verdict: ${verdict}`,
42
- ":evaluated_at": evaluatedAt,
43
- });
44
- }
45
- }