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
@@ -38,12 +38,6 @@ import {
38
38
  writeSessionStatus,
39
39
  readSessionStatus,
40
40
  } from "../../session-status-io.ts";
41
- import {
42
- openDatabase,
43
- closeDatabase,
44
- insertMilestone,
45
- updateMilestoneStatus,
46
- } from "../../gsd-db.ts";
47
41
 
48
42
  // ─── Helpers ──────────────────────────────────────────────────────────────────
49
43
 
@@ -471,107 +465,3 @@ test("mergeAllCompleted — by-completion order respects startedAt", async () =>
471
465
  cleanup(repo);
472
466
  }
473
467
  });
474
-
475
- // ═══════════════════════════════════════════════════════════════════════════════
476
- // Bug #2812 — determineMergeOrder should use worktree DB as source of truth
477
- // ═══════════════════════════════════════════════════════════════════════════════
478
-
479
- /** Set up a worktree DB with a milestone marked complete */
480
- function setupWorktreeDb(basePath: string, mid: string): void {
481
- const wtGsdDir = join(basePath, ".gsd", "worktrees", mid, ".gsd");
482
- mkdirSync(wtGsdDir, { recursive: true });
483
- const dbPath = join(wtGsdDir, "gsd.db");
484
- openDatabase(dbPath);
485
- insertMilestone({ id: mid, title: `Milestone ${mid}`, status: "complete" });
486
- updateMilestoneStatus(mid, "complete", new Date().toISOString());
487
- closeDatabase();
488
- }
489
-
490
- test("determineMergeOrder — finds milestones completed in worktree DB even when worker state is 'error' (#2812)", () => {
491
- const base = realpathSync(mkdtempSync(join(tmpdir(), "merge-db-bug-")));
492
- try {
493
- // Simulate the bug scenario: orchestrator has stale "error" state
494
- // but the worktree DB shows milestone is actually complete.
495
- setupWorktreeDb(base, "M011");
496
-
497
- const workers = [
498
- makeWorker({ milestoneId: "M010", state: "error" }),
499
- makeWorker({ milestoneId: "M011", state: "error" }), // stale — actually complete in DB
500
- makeWorker({ milestoneId: "M012", state: "running" }),
501
- ];
502
-
503
- const order = determineMergeOrder(workers, "sequential", base);
504
-
505
- // M011 should be included because its worktree DB says status='complete'
506
- assert.ok(
507
- order.includes("M011"),
508
- `Expected M011 in merge order (worktree DB says complete), got: [${order}]`,
509
- );
510
- // M010 and M012 should NOT be included (no worktree DB with complete status)
511
- assert.ok(!order.includes("M010"), "M010 should not be in merge order (error, no DB)");
512
- assert.ok(!order.includes("M012"), "M012 should not be in merge order (running, no DB)");
513
- } finally {
514
- cleanup(base);
515
- }
516
- });
517
-
518
- test("determineMergeOrder — workers with state='stopped' still included without basePath", () => {
519
- // Backward compatibility: existing behavior still works when basePath is omitted
520
- const workers = [
521
- makeWorker({ milestoneId: "M001", state: "stopped" }),
522
- makeWorker({ milestoneId: "M002", state: "error" }),
523
- ];
524
- const order = determineMergeOrder(workers, "sequential");
525
- assert.deepEqual(order, ["M001"]);
526
- });
527
-
528
- test("determineMergeOrder — combines stopped workers and DB-complete milestones without duplicates", () => {
529
- const base = realpathSync(mkdtempSync(join(tmpdir(), "merge-dedup-")));
530
- try {
531
- // M001 is stopped in orchestrator AND complete in worktree DB
532
- setupWorktreeDb(base, "M001");
533
-
534
- const workers = [
535
- makeWorker({ milestoneId: "M001", state: "stopped" }),
536
- makeWorker({ milestoneId: "M002", state: "running" }),
537
- ];
538
-
539
- const order = determineMergeOrder(workers, "sequential", base);
540
- // M001 should appear exactly once
541
- assert.deepEqual(order, ["M001"]);
542
- } finally {
543
- cleanup(base);
544
- }
545
- });
546
-
547
- test("mergeAllCompleted — discovers DB-complete milestones when workers show error (#2812)", async () => {
548
- const savedCwd = process.cwd();
549
- const repo = createTempRepo();
550
-
551
- try {
552
- // Create milestone branch with a file
553
- createMilestoneBranch(repo, "M011", [
554
- { name: "feature.ts", content: "export const feature = true;\n" },
555
- ]);
556
- setupRoadmap(repo, "M011", "Feature System", ["S01: Feature module"]);
557
-
558
- // Set up worktree DB showing M011 is complete
559
- setupWorktreeDb(repo, "M011");
560
-
561
- // Orchestrator thinks M011 is in error (stale state)
562
- const workers = [
563
- makeWorker({ milestoneId: "M011", state: "error" }),
564
- ];
565
-
566
- process.chdir(repo);
567
- const results = await mergeAllCompleted(repo, workers, "sequential");
568
-
569
- // Should find and merge M011 despite orchestrator "error" state
570
- assert.equal(results.length, 1, "should have one result");
571
- assert.equal(results[0]!.milestoneId, "M011");
572
- assert.equal(results[0]!.success, true, `M011 merge should succeed: ${results[0]!.error}`);
573
- } finally {
574
- process.chdir(savedCwd);
575
- cleanup(repo);
576
- }
577
- });
@@ -171,7 +171,7 @@ test('(k) run-uat prompt template', () => {
171
171
  const milestoneId = 'M001';
172
172
  const sliceId = 'S01';
173
173
  const uatPath = '.gsd/milestones/M001/slices/S01/S01-UAT.md';
174
- const uatResultPath = '.gsd/milestones/M001/slices/S01/S01-ASSESSMENT.md';
174
+ const uatResultPath = '.gsd/milestones/M001/slices/S01/S01-UAT.md';
175
175
  const uatType = 'live-runtime';
176
176
  const inlinedContext = '<!-- no context -->';
177
177
  let promptResult: string | undefined;
@@ -1,4 +1,4 @@
1
- import { parseMemoryResponse, _resetExtractionState, buildMemoryLLMCall } from '../memory-extractor.ts';
1
+ import { parseMemoryResponse, _resetExtractionState } from '../memory-extractor.ts';
2
2
  import {
3
3
  openDatabase,
4
4
  closeDatabase,
@@ -9,7 +9,7 @@ import {
9
9
  getActiveMemoriesRanked,
10
10
  } from '../memory-store.ts';
11
11
  import type { MemoryAction } from '../memory-store.ts';
12
- import { describe, test, beforeEach, afterEach, mock } from 'node:test';
12
+ import { describe, test, beforeEach, afterEach } from 'node:test';
13
13
  import assert from 'node:assert/strict';
14
14
 
15
15
  // ═══════════════════════════════════════════════════════════════════════════
@@ -169,86 +169,3 @@ test('memory-extractor: reset extraction state', () => {
169
169
  assert.ok(true, '_resetExtractionState should not throw');
170
170
  });
171
171
 
172
- // ═══════════════════════════════════════════════════════════════════════════
173
- // memory-extractor: buildMemoryLLMCall resolves OAuth API key via modelRegistry
174
- // Regression test for #2959 — OAuth users had broken memory extraction
175
- // because streamSimpleAnthropic only checked env vars, not auth.json.
176
- // ═══════════════════════════════════════════════════════════════════════════
177
-
178
- test('memory-extractor: buildMemoryLLMCall resolves API key from modelRegistry for OAuth users', async () => {
179
- const OAUTH_TOKEN = 'sk-ant-oat-test-oauth-token-12345';
180
- let getApiKeyCalled = false;
181
-
182
- const fakeModel = {
183
- id: 'claude-haiku-test',
184
- provider: 'anthropic',
185
- api: 'anthropic-messages',
186
- cost: { input: 0.25, output: 1.25 },
187
- };
188
-
189
- const ctx = {
190
- modelRegistry: {
191
- getAvailable: () => [fakeModel],
192
- getApiKey: async (_model: any) => {
193
- getApiKeyCalled = true;
194
- return OAUTH_TOKEN;
195
- },
196
- },
197
- } as any;
198
-
199
- const llmCallFn = buildMemoryLLMCall(ctx);
200
- assert.ok(llmCallFn !== null, 'buildMemoryLLMCall should return a function when models are available');
201
-
202
- // The function should have resolved the API key eagerly via modelRegistry.getApiKey.
203
- // Give the async getApiKey a tick to resolve.
204
- await new Promise(resolve => setTimeout(resolve, 50));
205
- assert.ok(getApiKeyCalled, 'buildMemoryLLMCall must call modelRegistry.getApiKey() to resolve OAuth tokens');
206
- });
207
-
208
- test('memory-extractor: buildMemoryLLMCall returns null when no models available', () => {
209
- const ctx = {
210
- modelRegistry: {
211
- getAvailable: () => [],
212
- getApiKey: async () => undefined,
213
- },
214
- } as any;
215
-
216
- const llmCallFn = buildMemoryLLMCall(ctx);
217
- assert.strictEqual(llmCallFn, null, 'should return null when no models available');
218
- });
219
-
220
- test('memory-extractor: buildMemoryLLMCall prefers haiku model', async () => {
221
- let resolvedModelId: string | undefined;
222
-
223
- const haikuModel = {
224
- id: 'claude-3-5-haiku-20241022',
225
- provider: 'anthropic',
226
- api: 'anthropic-messages',
227
- cost: { input: 0.25, output: 1.25 },
228
- };
229
- const sonnetModel = {
230
- id: 'claude-sonnet-4-20250514',
231
- provider: 'anthropic',
232
- api: 'anthropic-messages',
233
- cost: { input: 3, output: 15 },
234
- };
235
-
236
- const ctx = {
237
- modelRegistry: {
238
- getAvailable: () => [sonnetModel, haikuModel],
239
- getApiKey: async (model: any) => {
240
- resolvedModelId = model.id;
241
- return 'sk-ant-oat-test-token';
242
- },
243
- },
244
- } as any;
245
-
246
- const llmCallFn = buildMemoryLLMCall(ctx);
247
- assert.ok(llmCallFn !== null, 'should return a function');
248
-
249
- // Wait for the async getApiKey to resolve
250
- await new Promise(resolve => setTimeout(resolve, 50));
251
- assert.strictEqual(resolvedModelId, 'claude-3-5-haiku-20241022',
252
- 'should resolve API key for haiku model, not sonnet');
253
- });
254
-
@@ -67,37 +67,3 @@ test("all cost table entries have valid data", () => {
67
67
  assert.ok(entry.updatedAt, `${entry.id} missing updatedAt`);
68
68
  }
69
69
  });
70
-
71
- // ─── #2885: openai-codex and modern OpenAI models in cost table ──────────────
72
-
73
- test("#2885: cost table includes openai-codex provider models", () => {
74
- const ids = BUNDLED_COST_TABLE.map(e => e.id);
75
- const codexModels = [
76
- "gpt-5.1", "gpt-5.1-codex-max", "gpt-5.1-codex-mini",
77
- "gpt-5.2", "gpt-5.2-codex", "gpt-5.3-codex", "gpt-5.3-codex-spark", "gpt-5.4",
78
- ];
79
- for (const model of codexModels) {
80
- assert.ok(ids.includes(model), `cost table should include openai-codex model "${model}"`);
81
- }
82
- });
83
-
84
- test("#2885: cost table includes modern OpenAI models", () => {
85
- const ids = BUNDLED_COST_TABLE.map(e => e.id);
86
- const newModels = [
87
- "o4-mini", "o4-mini-deep-research",
88
- "gpt-4.1", "gpt-4.1-mini", "gpt-4.1-nano",
89
- "gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-5-pro",
90
- ];
91
- for (const model of newModels) {
92
- assert.ok(ids.includes(model), `cost table should include modern OpenAI model "${model}"`);
93
- }
94
- });
95
-
96
- test("#2885: lookupModelCost returns costs for new models (not 999 fallback)", () => {
97
- const newModels = ["o4-mini", "gpt-4.1", "gpt-5", "gpt-5.4", "gpt-5.1-codex-mini"];
98
- for (const model of newModels) {
99
- const entry = lookupModelCost(model);
100
- assert.ok(entry, `lookupModelCost should find "${model}"`);
101
- assert.ok(entry.inputPer1k < 999, `${model} should have a real cost, not the 999 fallback`);
102
- }
103
- });
@@ -172,11 +172,11 @@ test("#2192: unknown model is not downgraded — respects user config", () => {
172
172
  const config = { ...defaultRoutingConfig(), enabled: true };
173
173
  const result = resolveModelForComplexity(
174
174
  makeClassification("light"),
175
- { primary: "some-future-unknown-model-v9", fallbacks: [] },
175
+ { primary: "gpt-5.4", fallbacks: [] },
176
176
  config,
177
- ["some-future-unknown-model-v9", ...AVAILABLE_MODELS],
177
+ ["gpt-5.4", ...AVAILABLE_MODELS],
178
178
  );
179
- assert.equal(result.modelId, "some-future-unknown-model-v9", "unknown model should be used as-is");
179
+ assert.equal(result.modelId, "gpt-5.4", "unknown model should be used as-is");
180
180
  assert.equal(result.wasDowngraded, false, "should not be downgraded");
181
181
  assert.ok(result.reason.includes("not in the known tier map"), "reason should explain why");
182
182
  });
@@ -205,68 +205,3 @@ test("#2192: known model is still downgraded normally", () => {
205
205
  assert.equal(result.wasDowngraded, true, "known heavy model should still be downgraded for light tasks");
206
206
  assert.notEqual(result.modelId, "claude-opus-4-6");
207
207
  });
208
-
209
- // ─── #2885: openai-codex and modern OpenAI models in tier map ────────────────
210
-
211
- test("#2885: openai-codex light-tier models are recognized", () => {
212
- const config = { ...defaultRoutingConfig(), enabled: true };
213
- const lightModels = ["gpt-4.1-mini", "gpt-4.1-nano", "gpt-5-mini", "gpt-5-nano", "gpt-5.1-codex-mini", "gpt-5.3-codex-spark"];
214
- for (const model of lightModels) {
215
- const result = resolveModelForComplexity(
216
- makeClassification("light"),
217
- { primary: model, fallbacks: [] },
218
- config,
219
- [model, ...AVAILABLE_MODELS],
220
- );
221
- // Model is known AND light-tier, so requesting light should NOT downgrade
222
- assert.equal(result.wasDowngraded, false, `${model} should be known as light tier (wasDowngraded)`);
223
- assert.equal(result.modelId, model, `${model} should be returned as-is for light tier`);
224
- // Verify it IS known (not hitting the unknown-model bail-out)
225
- assert.ok(!result.reason.includes("not in the known tier map"), `${model} should be in the known tier map`);
226
- }
227
- });
228
-
229
- test("#2885: openai-codex standard-tier models are recognized", () => {
230
- const config = { ...defaultRoutingConfig(), enabled: true };
231
- const standardModels = ["gpt-4.1", "gpt-5.1-codex-max"];
232
- for (const model of standardModels) {
233
- const result = resolveModelForComplexity(
234
- makeClassification("standard"),
235
- { primary: model, fallbacks: [] },
236
- config,
237
- [model, ...AVAILABLE_MODELS],
238
- );
239
- assert.equal(result.wasDowngraded, false, `${model} should be known as standard tier`);
240
- assert.equal(result.modelId, model, `${model} should be returned as-is for standard tier`);
241
- assert.ok(!result.reason.includes("not in the known tier map"), `${model} should be in the known tier map`);
242
- }
243
- });
244
-
245
- test("#2885: openai-codex heavy-tier models are recognized", () => {
246
- const config = { ...defaultRoutingConfig(), enabled: true };
247
- const heavyModels = ["gpt-5", "gpt-5-pro", "gpt-5.1", "gpt-5.2", "gpt-5.2-codex", "gpt-5.3-codex", "gpt-5.4", "o4-mini", "o4-mini-deep-research"];
248
- for (const model of heavyModels) {
249
- const result = resolveModelForComplexity(
250
- makeClassification("heavy"),
251
- { primary: model, fallbacks: [] },
252
- config,
253
- [model, ...AVAILABLE_MODELS],
254
- );
255
- assert.equal(result.wasDowngraded, false, `${model} should be known as heavy tier`);
256
- assert.equal(result.modelId, model, `${model} should be returned as-is for heavy tier`);
257
- assert.ok(!result.reason.includes("not in the known tier map"), `${model} should be in the known tier map`);
258
- }
259
- });
260
-
261
- test("#2885: heavy openai-codex model downgrades to light for light task", () => {
262
- const config = { ...defaultRoutingConfig(), enabled: true };
263
- const result = resolveModelForComplexity(
264
- makeClassification("light"),
265
- { primary: "gpt-5.4", fallbacks: [] },
266
- config,
267
- ["gpt-5.4", "gpt-4.1-nano", ...AVAILABLE_MODELS],
268
- );
269
- assert.equal(result.wasDowngraded, true, "heavy model should downgrade for light task");
270
- // Should pick a light-tier model
271
- assert.notEqual(result.modelId, "gpt-5.4", "should not use the heavy model for light task");
272
- });
@@ -154,34 +154,6 @@ test("all auto-dispatch unitTypes have preference mapping or subagent handling",
154
154
  assert.deepEqual(unmapped, [], `Unmapped unitTypes in preferences-models.ts: ${unmapped.join(", ")}`);
155
155
  });
156
156
 
157
- // ═══════════════════════════════════════════════════════════════════════════
158
- // #2900: worktree-merge must map to completion phase
159
- // ═══════════════════════════════════════════════════════════════════════════
160
-
161
- test("#2900: resolveModelWithFallbacksForUnit handles worktree-merge", () => {
162
- assert.ok(preferencesSrc.includes('"worktree-merge"'), "missing worktree-merge case in switch");
163
- });
164
-
165
- // ═══════════════════════════════════════════════════════════════════════════
166
- // #2900: KNOWN_UNIT_TYPES must include all dispatched unit types
167
- // ═══════════════════════════════════════════════════════════════════════════
168
-
169
- const preferenceTypesSrc = readSrc("preferences-types.ts");
170
-
171
- test("#2900: KNOWN_UNIT_TYPES includes all auto-dispatch unit types", () => {
172
- const missing: string[] = [];
173
- for (const ut of ALL_KNOWN_UNIT_TYPES) {
174
- if (!preferenceTypesSrc.includes(`"${ut}"`)) {
175
- missing.push(ut);
176
- }
177
- }
178
- assert.deepEqual(missing, [], `Missing from KNOWN_UNIT_TYPES: ${missing.join(", ")}`);
179
- });
180
-
181
- test("#2900: KNOWN_UNIT_TYPES includes worktree-merge", () => {
182
- assert.ok(preferenceTypesSrc.includes('"worktree-merge"'), "worktree-merge missing from KNOWN_UNIT_TYPES");
183
- });
184
-
185
157
  // ═══════════════════════════════════════════════════════════════════════════
186
158
  // metrics.ts: classifyUnitPhase coverage
187
159
  // ═══════════════════════════════════════════════════════════════════════════
@@ -4,7 +4,6 @@ import assert from "node:assert/strict";
4
4
  import {
5
5
  buildDesktopNotificationCommand,
6
6
  shouldSendDesktopNotification,
7
- formatNotificationTitle,
8
7
  } from "../notifications.js";
9
8
  import type { NotificationPreferences } from "../types.js";
10
9
 
@@ -88,47 +87,3 @@ test("buildDesktopNotificationCommand preserves literal shell characters on linu
88
87
  test("buildDesktopNotificationCommand skips unsupported platforms", () => {
89
88
  assert.equal(buildDesktopNotificationCommand("win32", "Title", "Message"), null);
90
89
  });
91
-
92
- // ─── formatNotificationTitle — project context in notifications (#2708) ──────
93
-
94
- test("formatNotificationTitle returns 'GSD' when no project name is given", () => {
95
- assert.equal(formatNotificationTitle(), "GSD");
96
- assert.equal(formatNotificationTitle(undefined), "GSD");
97
- assert.equal(formatNotificationTitle(""), "GSD");
98
- });
99
-
100
- test("formatNotificationTitle includes project name when provided", () => {
101
- assert.equal(formatNotificationTitle("my-app"), "GSD — my-app");
102
- });
103
-
104
- test("formatNotificationTitle trims whitespace from project name", () => {
105
- assert.equal(formatNotificationTitle(" spaced "), "GSD — spaced");
106
- });
107
-
108
- test("buildDesktopNotificationCommand includes project name in title on linux", () => {
109
- const command = buildDesktopNotificationCommand(
110
- "linux",
111
- formatNotificationTitle("my-project"),
112
- "All milestones complete!",
113
- "success",
114
- );
115
- assert.ok(command);
116
- assert.equal(command.args[2], "GSD — my-project");
117
- assert.equal(command.args[3], "All milestones complete!");
118
- });
119
-
120
- test("buildDesktopNotificationCommand includes project name in title on macOS", () => {
121
- const command = buildDesktopNotificationCommand(
122
- "darwin",
123
- formatNotificationTitle("my-project"),
124
- "Budget 90%",
125
- "warning",
126
- );
127
- assert.ok(command);
128
- if (command.file.includes("terminal-notifier")) {
129
- const titleIdx = command.args.indexOf("-title");
130
- assert.equal(command.args[titleIdx + 1], "GSD — my-project");
131
- } else {
132
- assert.match(command.args[1], /GSD — my-project/);
133
- }
134
- });
@@ -4,7 +4,7 @@ import { mkdtempSync, mkdirSync, rmSync, readFileSync, existsSync, writeFileSync
4
4
  import { join } from 'node:path';
5
5
  import { tmpdir } from 'node:os';
6
6
 
7
- import { openDatabase, closeDatabase, getMilestone, getMilestoneSlices, updateSliceStatus } from '../gsd-db.ts';
7
+ import { openDatabase, closeDatabase, getMilestone, getMilestoneSlices } from '../gsd-db.ts';
8
8
  import { handlePlanMilestone } from '../tools/plan-milestone.ts';
9
9
  import { parseRoadmap } from '../parsers-legacy.ts';
10
10
 
@@ -197,35 +197,3 @@ test('handlePlanMilestone reruns idempotently and updates existing planning stat
197
197
  cleanup(base);
198
198
  }
199
199
  });
200
-
201
- // Regression: #2960 — plan-milestone must refuse to overwrite completed slices
202
- test('handlePlanMilestone refuses to re-plan a milestone with completed slices (#2960)', async () => {
203
- const base = makeTmpBase();
204
- const dbPath = join(base, '.gsd', 'gsd.db');
205
- openDatabase(dbPath);
206
-
207
- try {
208
- // First plan succeeds
209
- const first = await handlePlanMilestone(validParams(), base);
210
- assert.ok(!('error' in first), `initial plan should succeed: ${'error' in first ? first.error : ''}`);
211
-
212
- // Mark S01 as complete
213
- updateSliceStatus('M001', 'S01', 'complete');
214
-
215
- // Second plan should fail — S01 is already complete
216
- const second = await handlePlanMilestone({
217
- ...validParams(),
218
- vision: 'Should not overwrite',
219
- }, base);
220
- assert.ok('error' in second, 'should refuse to re-plan when slices are completed');
221
- assert.match(second.error, /cannot re-plan/i);
222
- assert.match(second.error, /S01/);
223
-
224
- // Verify the completed slice was not overwritten
225
- const slices = getMilestoneSlices('M001');
226
- const s01 = slices.find(s => s.id === 'S01');
227
- assert.equal(s01?.status, 'complete', 'S01 should still be complete');
228
- } finally {
229
- cleanup(base);
230
- }
231
- });
@@ -202,35 +202,6 @@ test("reassess-roadmap prompt names gsd_reassess_roadmap as the tool to use", ()
202
202
  assert.match(prompt, /gsd_reassess_roadmap/);
203
203
  });
204
204
 
205
- // ─── Bug #2933: prompt parameter names must match camelCase TypeBox schema ───
206
-
207
- test("execute-task prompt uses camelCase parameter names matching TypeBox schema", () => {
208
- const prompt = readPrompt("execute-task");
209
- // The gsd_complete_task tool schema uses camelCase: milestoneId, sliceId, taskId
210
- // Prompts must NOT tell the LLM to use snake_case (milestone_id, slice_id, task_id)
211
- const toolCallLine = prompt.split("\n").find((l) => /gsd_complete_task/.test(l) || /gsd_task_complete/.test(l));
212
- assert.ok(toolCallLine, "prompt must contain a gsd_complete_task or gsd_task_complete tool call line");
213
- assert.doesNotMatch(toolCallLine!, /milestone_id/, "must use milestoneId, not milestone_id");
214
- assert.doesNotMatch(toolCallLine!, /slice_id/, "must use sliceId, not slice_id");
215
- assert.doesNotMatch(toolCallLine!, /task_id/, "must use taskId, not task_id");
216
- // Positive: must mention the camelCase names
217
- assert.match(toolCallLine!, /milestoneId/);
218
- assert.match(toolCallLine!, /sliceId/);
219
- assert.match(toolCallLine!, /taskId/);
220
- });
221
-
222
- test("complete-slice prompt uses camelCase parameter names matching TypeBox schema", () => {
223
- const prompt = readPrompt("complete-slice");
224
- // The gsd_complete_slice tool schema uses camelCase: milestoneId, sliceId
225
- const toolCallLine = prompt.split("\n").find((l) => /gsd_complete_slice/.test(l) || /gsd_slice_complete/.test(l));
226
- assert.ok(toolCallLine, "prompt must contain a gsd_complete_slice or gsd_slice_complete tool call line");
227
- assert.doesNotMatch(toolCallLine!, /milestone_id/, "must use milestoneId, not milestone_id");
228
- assert.doesNotMatch(toolCallLine!, /slice_id/, "must use sliceId, not slice_id");
229
- // Positive: must mention the camelCase names
230
- assert.match(toolCallLine!, /milestoneId/);
231
- assert.match(toolCallLine!, /sliceId/);
232
- });
233
-
234
205
  test("reactive-execute prompt references tool calls instead of checkbox updates", () => {
235
206
  const prompt = readPrompt("reactive-execute");
236
207
  assert.doesNotMatch(prompt, /checkbox updates/);
@@ -118,44 +118,6 @@ test("classifyError: rate limit takes precedence over auth keywords", () => {
118
118
  assert.ok(isTransient(result));
119
119
  });
120
120
 
121
- // ── STREAM_RE: V8 JSON parse error variants (#2916) ────────────────────────
122
-
123
- test("classifyError: 'Expected comma/brace after property value in JSON' is transient stream", () => {
124
- const result = classifyError(
125
- "Expected ',' or '}' after property value in JSON at position 2056 (line 1 column 2057)"
126
- );
127
- assert.equal(result.kind, "stream");
128
- assert.ok(isTransient(result));
129
- assert.ok("retryAfterMs" in result && result.retryAfterMs === 15_000);
130
- });
131
-
132
- test("classifyError: 'Expected colon after property name in JSON' is transient stream", () => {
133
- const result = classifyError(
134
- "Expected ':' after property name in JSON at position 500 (line 1 column 501)"
135
- );
136
- assert.equal(result.kind, "stream");
137
- assert.ok(isTransient(result));
138
- assert.ok("retryAfterMs" in result && result.retryAfterMs === 15_000);
139
- });
140
-
141
- test("classifyError: 'Expected property name or brace in JSON' is transient stream", () => {
142
- const result = classifyError(
143
- "Expected property name or '}' in JSON at position 42 (line 1 column 43)"
144
- );
145
- assert.equal(result.kind, "stream");
146
- assert.ok(isTransient(result));
147
- assert.ok("retryAfterMs" in result && result.retryAfterMs === 15_000);
148
- });
149
-
150
- test("classifyError: 'Unterminated string in JSON' is transient stream", () => {
151
- const result = classifyError(
152
- "Unterminated string in JSON at position 100 (line 1 column 101)"
153
- );
154
- assert.equal(result.kind, "stream");
155
- assert.ok(isTransient(result));
156
- assert.ok("retryAfterMs" in result && result.retryAfterMs === 15_000);
157
- });
158
-
159
121
  // ── isTransientNetworkError ──────────────────────────────────────────────────
160
122
 
161
123
  test("isTransientNetworkError detects ECONNRESET", () => {