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
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![npm version](https://img.shields.io/npm/v/gsd-pi?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/gsd-pi)
8
8
  [![npm downloads](https://img.shields.io/npm/dm/gsd-pi?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/gsd-pi)
9
9
  [![GitHub stars](https://img.shields.io/github/stars/gsd-build/GSD-2?style=for-the-badge&logo=github&color=181717)](https://github.com/gsd-build/GSD-2)
10
- [![Discord](https://img.shields.io/badge/Discord-Join%20us-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.com/invite/nKXTsAcmbT)
10
+ [![Discord](https://img.shields.io/badge/Discord-Join%20us-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/gsd)
11
11
  [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
12
12
  [![$GSD Token](https://img.shields.io/badge/$GSD-Dexscreener-1C1C1C?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgZmlsbD0iIzAwRkYwMCIvPjwvc3ZnPg==&logoColor=00FF00)](https://dexscreener.com/solana/dwudwjvan7bzkw9zwlbyv6kspdlvhwzrqy6ebk8xzxkv)
13
13
 
package/dist/cli.js CHANGED
@@ -5,8 +5,7 @@ import { agentDir, sessionsDir, authFilePath } from './app-paths.js';
5
5
  import { initResources, buildResourceLoader, getNewerManagedResourceVersion } from './resource-loader.js';
6
6
  import { ensureManagedTools } from './tool-bootstrap.js';
7
7
  import { loadStoredEnvKeys } from './wizard.js';
8
- import { migratePiCredentials } from './pi-migration.js';
9
- import { validateConfiguredModel } from './startup-model-validation.js';
8
+ import { getPiDefaultModelAndProvider, migratePiCredentials } from './pi-migration.js';
10
9
  import { shouldRunOnboarding, runOnboarding } from './onboarding.js';
11
10
  import chalk from 'chalk';
12
11
  import { checkForUpdates } from './update-check.js';
@@ -137,7 +136,6 @@ const hasSubcommand = cliFlags.messages.length > 0;
137
136
  if (!process.stdin.isTTY && !isPrintMode && !hasSubcommand && !cliFlags.listModels && !cliFlags.web) {
138
137
  process.stderr.write('[gsd] Error: Interactive mode requires a terminal (TTY).\n');
139
138
  process.stderr.write('[gsd] Non-interactive alternatives:\n');
140
- process.stderr.write('[gsd] gsd auto Auto-mode (pipeable, no TUI)\n');
141
139
  process.stderr.write('[gsd] gsd --print "your message" Single-shot prompt\n');
142
140
  process.stderr.write('[gsd] gsd --mode rpc JSON-RPC over stdin/stdout\n');
143
141
  process.stderr.write('[gsd] gsd --mode mcp MCP server over stdin/stdout\n');
@@ -250,22 +248,6 @@ if (cliFlags.messages[0] === 'headless') {
250
248
  await runHeadless(parseHeadlessArgs(process.argv));
251
249
  process.exit(0);
252
250
  }
253
- // `gsd auto [args...]` — shorthand for `gsd headless auto [args...]` (#2732)
254
- // Without this, `gsd auto` falls through to the interactive TUI which hangs
255
- // when stdin/stdout are piped (non-TTY environments).
256
- if (cliFlags.messages[0] === 'auto') {
257
- await ensureRtkBootstrap();
258
- const { runHeadless, parseHeadlessArgs } = await import('./headless.js');
259
- // Rewrite argv so parseHeadlessArgs sees: [node, gsd, headless, auto, ...rest]
260
- const rewrittenArgv = [
261
- process.argv[0],
262
- process.argv[1],
263
- 'headless',
264
- ...cliFlags.messages, // ['auto', ...extra args]
265
- ];
266
- await runHeadless(parseHeadlessArgs(rewrittenArgv));
267
- process.exit(0);
268
- }
269
251
  // Pi's tool bootstrap can mis-detect already-installed fd/rg on some systems
270
252
  // because spawnSync(..., ["--version"]) returns EPERM despite a zero exit code.
271
253
  // Provision local managed binaries first so Pi sees them without probing PATH.
@@ -346,6 +328,38 @@ if (cliFlags.listModels !== undefined) {
346
328
  }
347
329
  process.exit(0);
348
330
  }
331
+ // Validate configured model on startup — catches stale settings from prior installs
332
+ // (e.g. grok-2 which no longer exists) and fresh installs with no settings.
333
+ // Only resets the default when the configured model no longer exists in the registry;
334
+ // never overwrites a valid user choice.
335
+ const configuredProvider = settingsManager.getDefaultProvider();
336
+ const configuredModel = settingsManager.getDefaultModel();
337
+ const allModels = modelRegistry.getAll();
338
+ const availableModels = modelRegistry.getAvailable();
339
+ const configuredExists = configuredProvider && configuredModel &&
340
+ allModels.some((m) => m.provider === configuredProvider && m.id === configuredModel);
341
+ const configuredAvailable = configuredProvider && configuredModel &&
342
+ availableModels.some((m) => m.provider === configuredProvider && m.id === configuredModel);
343
+ if (!configuredModel || !configuredExists) {
344
+ // Model not configured at all, or removed from registry — pick a fallback.
345
+ // Only fires when the model is genuinely unknown (not just temporarily unavailable).
346
+ const piDefault = getPiDefaultModelAndProvider();
347
+ const preferred = (piDefault
348
+ ? availableModels.find((m) => m.provider === piDefault.provider && m.id === piDefault.model)
349
+ : undefined) ||
350
+ availableModels.find((m) => m.provider === 'openai' && m.id === 'gpt-5.4') ||
351
+ availableModels.find((m) => m.provider === 'openai') ||
352
+ availableModels.find((m) => m.provider === 'anthropic' && m.id === 'claude-opus-4-6') ||
353
+ availableModels.find((m) => m.provider === 'anthropic' && m.id.includes('opus')) ||
354
+ availableModels.find((m) => m.provider === 'anthropic') ||
355
+ availableModels[0];
356
+ if (preferred) {
357
+ settingsManager.setDefaultModelAndProvider(preferred.provider, preferred.id);
358
+ }
359
+ }
360
+ if (settingsManager.getDefaultThinkingLevel() !== 'off' && !configuredExists) {
361
+ settingsManager.setDefaultThinkingLevel('off');
362
+ }
349
363
  // GSD always uses quiet startup — the gsd extension renders its own branded header
350
364
  if (!settingsManager.getQuietStartup()) {
351
365
  settingsManager.setQuietStartup(true);
@@ -391,10 +405,6 @@ if (isPrintMode) {
391
405
  resourceLoader,
392
406
  });
393
407
  markStartup('createAgentSession');
394
- // Validate configured model AFTER extensions have registered their models (#2626).
395
- // Before this, extension-provided models (e.g. claude-code/*) were not yet in the
396
- // registry, causing the user's valid choice to be silently overwritten.
397
- validateConfiguredModel(modelRegistry, settingsManager);
398
408
  if (extensionsResult.errors.length > 0) {
399
409
  for (const err of extensionsResult.errors) {
400
410
  // Downgrade conflicts with built-in tools to warnings (#1347)
@@ -478,19 +488,6 @@ if (!cliFlags.worktree && !isPrintMode) {
478
488
  catch { /* non-fatal */ }
479
489
  }
480
490
  // ---------------------------------------------------------------------------
481
- // Auto-redirect: `gsd auto` with piped stdout → headless mode (#2732)
482
- // When stdout is not a TTY (e.g. `gsd auto | cat`, `gsd auto > file`),
483
- // the TUI cannot render and the process hangs. Redirect to headless mode
484
- // which handles non-interactive output gracefully.
485
- // ---------------------------------------------------------------------------
486
- if (cliFlags.messages[0] === 'auto' && !process.stdout.isTTY) {
487
- await ensureRtkBootstrap();
488
- const { runHeadless, parseHeadlessArgs } = await import('./headless.js');
489
- process.stderr.write('[gsd] stdout is not a terminal — running auto-mode in headless mode.\n');
490
- await runHeadless(parseHeadlessArgs(['node', 'gsd', 'headless', ...cliFlags.messages.slice(1)]));
491
- process.exit(0);
492
- }
493
- // ---------------------------------------------------------------------------
494
491
  // Interactive mode — normal TTY session
495
492
  // ---------------------------------------------------------------------------
496
493
  await ensureRtkBootstrap();
@@ -527,10 +524,6 @@ const { session, extensionsResult } = await createAgentSession({
527
524
  resourceLoader,
528
525
  });
529
526
  markStartup('createAgentSession');
530
- // Validate configured model AFTER extensions have registered their models (#2626).
531
- // Before this, extension-provided models (e.g. claude-code/*) were not yet in the
532
- // registry, causing the user's valid choice to be silently overwritten.
533
- validateConfiguredModel(modelRegistry, settingsManager);
534
527
  if (extensionsResult.errors.length > 0) {
535
528
  for (const err of extensionsResult.errors) {
536
529
  const isSuperseded = err.error.includes("supersedes");
@@ -579,21 +572,14 @@ if (enabledModelPatterns && enabledModelPatterns.length > 0) {
579
572
  session.setScopedModels(scopedModels);
580
573
  }
581
574
  }
582
- if (!process.stdin.isTTY || !process.stdout.isTTY) {
583
- const missing = !process.stdin.isTTY && !process.stdout.isTTY
584
- ? 'stdin and stdout are'
585
- : !process.stdin.isTTY
586
- ? 'stdin is'
587
- : 'stdout is';
588
- process.stderr.write(`[gsd] Error: Interactive mode requires a terminal (TTY) but ${missing} not a TTY.\n`);
575
+ if (!process.stdin.isTTY) {
576
+ process.stderr.write('[gsd] Error: Interactive mode requires a terminal (TTY).\n');
589
577
  process.stderr.write('[gsd] Non-interactive alternatives:\n');
590
- process.stderr.write('[gsd] gsd auto Auto-mode (pipeable, no TUI)\n');
591
578
  process.stderr.write('[gsd] gsd --print "your message" Single-shot prompt\n');
592
579
  process.stderr.write('[gsd] gsd --web [path] Browser-only web mode\n');
593
580
  process.stderr.write('[gsd] gsd --mode rpc JSON-RPC over stdin/stdout\n');
594
581
  process.stderr.write('[gsd] gsd --mode mcp MCP server over stdin/stdout\n');
595
582
  process.stderr.write('[gsd] gsd --mode text "message" Text output mode\n');
596
- process.stderr.write('[gsd] gsd headless Auto-mode without TUI\n');
597
583
  process.exit(1);
598
584
  }
599
585
  // Welcome screen — shown on every fresh interactive session before TUI takes over.
@@ -40,25 +40,8 @@ export declare function handleExtensionUIRequest(event: ExtensionUIRequest, clie
40
40
  export declare function formatProgress(event: Record<string, unknown>, ctx: ProgressContext): string | null;
41
41
  /**
42
42
  * Format a thinking preview line from accumulated LLM text deltas.
43
- * Used as a fallback when streaming is not enabled — shows a truncated one-liner.
44
43
  */
45
44
  export declare function formatThinkingLine(text: string): string;
46
- /**
47
- * Format a text_start marker — printed once when the assistant begins a text block.
48
- */
49
- export declare function formatTextStart(): string;
50
- /**
51
- * Format a text_end marker — printed after the last text_delta.
52
- */
53
- export declare function formatTextEnd(): string;
54
- /**
55
- * Format a thinking_start marker.
56
- */
57
- export declare function formatThinkingStart(): string;
58
- /**
59
- * Format a thinking_end marker.
60
- */
61
- export declare function formatThinkingEnd(): string;
62
45
  /**
63
46
  * Format a cost line (used for periodic cost updates in verbose mode).
64
47
  */
@@ -40,45 +40,24 @@ const c = colorsDisabled ? noColor() : _c;
40
40
  export function summarizeToolArgs(toolName, toolInput) {
41
41
  const name = String(toolName ?? '');
42
42
  const input = (toolInput && typeof toolInput === 'object') ? toolInput : {};
43
- // Helper: extract file path from either 'path' or 'file_path' (tools use both)
44
- const filePath = () => shortPath(input.path ?? input.file_path) || '';
45
43
  switch (name) {
46
44
  case 'Read':
47
45
  case 'read':
48
- return filePath();
46
+ return shortPath(input.file_path) || '';
49
47
  case 'Write':
50
48
  case 'write':
51
- return filePath();
49
+ return shortPath(input.file_path) || '';
52
50
  case 'Edit':
53
51
  case 'edit':
54
- return filePath();
55
- case 'hashline_edit':
56
- return filePath();
52
+ return shortPath(input.file_path) || '';
57
53
  case 'Bash':
58
54
  case 'bash': {
59
55
  const cmd = String(input.command ?? '');
60
56
  return cmd.length > 80 ? cmd.slice(0, 77) + '...' : cmd;
61
57
  }
62
- case 'async_bash': {
63
- const cmd = String(input.command ?? '');
64
- return cmd.length > 80 ? cmd.slice(0, 77) + '...' : cmd;
65
- }
66
- case 'await_job': {
67
- const jobs = input.jobs;
68
- if (Array.isArray(jobs) && jobs.length > 0)
69
- return jobs.join(', ');
70
- return '';
71
- }
72
- case 'cancel_job':
73
- return String(input.job_id ?? '');
74
58
  case 'Glob':
75
59
  case 'glob':
76
60
  return String(input.pattern ?? '');
77
- case 'find': {
78
- const pat = String(input.pattern ?? '');
79
- const p = shortPath(input.path);
80
- return p ? `${pat} in ${p}` : pat;
81
- }
82
61
  case 'Grep':
83
62
  case 'grep':
84
63
  case 'Search':
@@ -87,32 +66,12 @@ export function summarizeToolArgs(toolName, toolInput) {
87
66
  const g = input.glob ? ` ${input.glob}` : '';
88
67
  return `${pat}${g}`;
89
68
  }
90
- case 'ls':
91
- return shortPath(input.path) || '';
92
- case 'lsp': {
93
- const action = String(input.action ?? '');
94
- const file = shortPath(input.file);
95
- const sym = input.symbol ? ` ${input.symbol}` : '';
96
- return file ? `${action} ${file}${sym}` : action;
97
- }
98
69
  case 'Task':
99
70
  case 'task': {
100
71
  const desc = String(input.description ?? input.prompt ?? '');
101
72
  return desc.length > 60 ? desc.slice(0, 57) + '...' : desc;
102
73
  }
103
- case 'subagent': {
104
- const agent = String(input.agent ?? '');
105
- const t = String(input.task ?? '');
106
- const summary = t.length > 50 ? t.slice(0, 47) + '...' : t;
107
- return agent ? `${agent}: ${summary}` : summary;
108
- }
109
- case 'browser_navigate':
110
- return String(input.url ?? '');
111
74
  default: {
112
- // GSD tools: show milestone/slice/task IDs when present
113
- if (name.startsWith('gsd_')) {
114
- return summarizeGsdTool(name, input);
115
- }
116
75
  // Fallback: show first string-valued key up to 60 chars
117
76
  for (const v of Object.values(input)) {
118
77
  if (typeof v === 'string' && v.length > 0) {
@@ -123,31 +82,6 @@ export function summarizeToolArgs(toolName, toolInput) {
123
82
  }
124
83
  }
125
84
  }
126
- /** Summarize GSD extension tool args into a compact identifier string. */
127
- function summarizeGsdTool(name, input) {
128
- const parts = [];
129
- if (input.milestoneId)
130
- parts.push(String(input.milestoneId));
131
- if (input.sliceId)
132
- parts.push(String(input.sliceId));
133
- if (input.taskId)
134
- parts.push(String(input.taskId));
135
- if (parts.length > 0) {
136
- const id = parts.join('/');
137
- // For completion tools, add the one-liner if present
138
- if (name.includes('complete') && typeof input.oneLiner === 'string') {
139
- const ol = input.oneLiner.length > 50 ? input.oneLiner.slice(0, 47) + '...' : input.oneLiner;
140
- return `${id} ${ol}`;
141
- }
142
- return id;
143
- }
144
- // Fallback for GSD tools without IDs (e.g. gsd_decision_save)
145
- if (input.decision) {
146
- const d = String(input.decision);
147
- return d.length > 60 ? d.slice(0, 57) + '...' : d;
148
- }
149
- return '';
150
- }
151
85
  function shortPath(p) {
152
86
  if (typeof p !== 'string')
153
87
  return '';
@@ -286,40 +220,12 @@ export function formatProgress(event, ctx) {
286
220
  }
287
221
  /**
288
222
  * Format a thinking preview line from accumulated LLM text deltas.
289
- * Used as a fallback when streaming is not enabled — shows a truncated one-liner.
290
223
  */
291
224
  export function formatThinkingLine(text) {
292
225
  const trimmed = text.replace(/\s+/g, ' ').trim();
293
226
  const truncated = trimmed.length > 120 ? trimmed.slice(0, 117) + '...' : trimmed;
294
227
  return `${c.dim}${c.italic}[thinking] ${truncated}${c.reset}`;
295
228
  }
296
- // ---------------------------------------------------------------------------
297
- // Streaming Text / Thinking Formatters
298
- // ---------------------------------------------------------------------------
299
- /**
300
- * Format a text_start marker — printed once when the assistant begins a text block.
301
- */
302
- export function formatTextStart() {
303
- return `${c.dim}[text]${c.reset}`;
304
- }
305
- /**
306
- * Format a text_end marker — printed after the last text_delta.
307
- */
308
- export function formatTextEnd() {
309
- return ''; // empty — newline handled by caller
310
- }
311
- /**
312
- * Format a thinking_start marker.
313
- */
314
- export function formatThinkingStart() {
315
- return `${c.dim}${c.italic}[thinking]${c.reset}`;
316
- }
317
- /**
318
- * Format a thinking_end marker.
319
- */
320
- export function formatThinkingEnd() {
321
- return ''; // empty — newline handled by caller
322
- }
323
229
  /**
324
230
  * Format a cost line (used for periodic cost updates in verbose mode).
325
231
  */
package/dist/headless.js CHANGED
@@ -19,7 +19,7 @@ import { getProjectSessionsDir } from './project-sessions.js';
19
19
  import { loadAndValidateAnswerFile, AnswerInjector } from './headless-answers.js';
20
20
  import { isTerminalNotification, isBlockedNotification, isMilestoneReadyNotification, isQuickCommand, FIRE_AND_FORGET_METHODS, IDLE_TIMEOUT_MS, NEW_MILESTONE_IDLE_TIMEOUT_MS, EXIT_SUCCESS, EXIT_ERROR, EXIT_BLOCKED, EXIT_CANCELLED, mapStatusToExitCode, } from './headless-events.js';
21
21
  import { VALID_OUTPUT_FORMATS } from './headless-types.js';
22
- import { handleExtensionUIRequest, formatProgress, formatThinkingLine, formatTextStart, formatTextEnd, formatThinkingStart, formatThinkingEnd, startSupervisedStdinReader, } from './headless-ui.js';
22
+ import { handleExtensionUIRequest, formatProgress, formatThinkingLine, startSupervisedStdinReader, } from './headless-ui.js';
23
23
  import { loadContext, bootstrapGsdProject, } from './headless-context.js';
24
24
  /**
25
25
  * Resolve a session prefix to a single session.
@@ -291,9 +291,6 @@ async function runHeadlessOnce(options, restartCount) {
291
291
  const toolStartTimes = new Map();
292
292
  let lastCostData;
293
293
  let thinkingBuffer = '';
294
- // Streaming state: tracks whether we're inside a text or thinking block
295
- let inTextBlock = false;
296
- let inThinkingBlock = false;
297
294
  // Emit HeadlessJsonResult to stdout for --output-format json batch mode
298
295
  function emitBatchJsonResult() {
299
296
  if (options.outputFormat !== 'json')
@@ -433,58 +430,11 @@ async function runHeadlessOnce(options, restartCount) {
433
430
  };
434
431
  }
435
432
  }
436
- // Stream assistant text and thinking deltas in verbose mode
433
+ // Accumulate thinking text from message_update text_delta events
437
434
  if (eventType === 'message_update') {
438
435
  const ame = eventObj.assistantMessageEvent;
439
- if (ame && options.verbose) {
440
- const ameType = String(ame.type ?? '');
441
- // --- Text streaming ---
442
- if (ameType === 'text_start') {
443
- inTextBlock = true;
444
- process.stderr.write(formatTextStart());
445
- }
446
- else if (ameType === 'text_delta') {
447
- const delta = String(ame.delta ?? ame.text ?? '');
448
- if (delta) {
449
- if (!inTextBlock) {
450
- // Edge case: delta without start
451
- inTextBlock = true;
452
- process.stderr.write(formatTextStart());
453
- }
454
- process.stderr.write(delta);
455
- }
456
- }
457
- else if (ameType === 'text_end') {
458
- if (inTextBlock) {
459
- process.stderr.write(formatTextEnd() + '\n');
460
- inTextBlock = false;
461
- }
462
- }
463
- // --- Thinking streaming ---
464
- else if (ameType === 'thinking_start') {
465
- inThinkingBlock = true;
466
- process.stderr.write(formatThinkingStart());
467
- }
468
- else if (ameType === 'thinking_delta') {
469
- const delta = String(ame.delta ?? ame.text ?? '');
470
- if (delta) {
471
- if (!inThinkingBlock) {
472
- inThinkingBlock = true;
473
- process.stderr.write(formatThinkingStart());
474
- }
475
- process.stderr.write(delta);
476
- }
477
- }
478
- else if (ameType === 'thinking_end') {
479
- if (inThinkingBlock) {
480
- process.stderr.write(formatThinkingEnd() + '\n');
481
- inThinkingBlock = false;
482
- }
483
- }
484
- }
485
- // Non-verbose: accumulate text_delta for truncated one-liner
486
- else if (ame?.type === 'text_delta') {
487
- thinkingBuffer += String(ame.delta ?? ame.text ?? '');
436
+ if (ame?.type === 'text_delta') {
437
+ thinkingBuffer += String(ame.text ?? '');
488
438
  }
489
439
  }
490
440
  // Track tool execution start timestamps
@@ -493,19 +443,8 @@ async function runHeadlessOnce(options, restartCount) {
493
443
  if (toolCallId)
494
444
  toolStartTimes.set(toolCallId, Date.now());
495
445
  }
496
- // Close any open streaming blocks before tool calls or message end
497
- if (options.verbose && (eventType === 'tool_execution_start' || eventType === 'message_end')) {
498
- if (inTextBlock) {
499
- process.stderr.write('\n');
500
- inTextBlock = false;
501
- }
502
- if (inThinkingBlock) {
503
- process.stderr.write('\n');
504
- inThinkingBlock = false;
505
- }
506
- }
507
- // Non-verbose: flush accumulated buffer as truncated one-liner
508
- else if (!options.verbose && thinkingBuffer.trim() &&
446
+ // Flush thinking buffer before tool calls or message end
447
+ if (options.verbose && thinkingBuffer.trim() &&
509
448
  (eventType === 'tool_execution_start' || eventType === 'message_end')) {
510
449
  process.stderr.write(formatThinkingLine(thinkingBuffer) + '\n');
511
450
  thinkingBuffer = '';
package/dist/help-text.js CHANGED
@@ -160,7 +160,6 @@ export function printHelp(version) {
160
160
  process.stdout.write(' update Update GSD to the latest version\n');
161
161
  process.stdout.write(' sessions List and resume a past session\n');
162
162
  process.stdout.write(' worktree <cmd> Manage worktrees (list, merge, clean, remove)\n');
163
- process.stdout.write(' auto [args] Run auto-mode without TUI (pipeable)\n');
164
163
  process.stdout.write(' headless [cmd] [args] Run /gsd commands without TUI (default: auto)\n');
165
164
  process.stdout.write('\nRun gsd <subcommand> --help for subcommand-specific help.\n');
166
165
  }
@@ -49,7 +49,6 @@ const LLM_PROVIDER_IDS = [
49
49
  'xai',
50
50
  'openrouter',
51
51
  'mistral',
52
- 'ollama',
53
52
  'ollama-cloud',
54
53
  'custom-openai',
55
54
  ];
@@ -64,7 +63,6 @@ const OTHER_PROVIDERS = [
64
63
  { value: 'xai', label: 'xAI (Grok)' },
65
64
  { value: 'openrouter', label: 'OpenRouter' },
66
65
  { value: 'mistral', label: 'Mistral' },
67
- { value: 'ollama', label: 'Ollama (Local)' },
68
66
  { value: 'ollama-cloud', label: 'Ollama Cloud' },
69
67
  { value: 'custom-openai', label: 'Custom (OpenAI-compatible)' },
70
68
  ];
@@ -295,9 +293,6 @@ async function runLlmStep(p, pc, authStorage) {
295
293
  if (provider === 'custom-openai') {
296
294
  return await runCustomOpenAIFlow(p, pc, authStorage);
297
295
  }
298
- if (provider === 'ollama') {
299
- return await runOllamaLocalFlow(p, pc, authStorage);
300
- }
301
296
  const label = provider === 'anthropic' ? 'Anthropic'
302
297
  : provider === 'openai' ? 'OpenAI'
303
298
  : OTHER_PROVIDERS.find(op => op.value === provider)?.label ?? String(provider);
@@ -387,45 +382,6 @@ async function runApiKeyFlow(p, pc, authStorage, providerId, providerLabel) {
387
382
  p.log.success(`API key saved for ${pc.green(providerLabel)}`);
388
383
  return true;
389
384
  }
390
- // ─── Ollama Local Flow ───────────────────────────────────────────────────────
391
- async function runOllamaLocalFlow(p, pc, authStorage) {
392
- const host = process.env.OLLAMA_HOST || 'http://localhost:11434';
393
- const s = p.spinner();
394
- s.start(`Checking Ollama at ${host}...`);
395
- try {
396
- const controller = new AbortController();
397
- const timeout = setTimeout(() => controller.abort(), 3000);
398
- const response = await fetch(host, { signal: controller.signal });
399
- clearTimeout(timeout);
400
- if (response.ok) {
401
- s.stop(`Ollama is running at ${pc.green(host)}`);
402
- // Store a placeholder so the provider is recognized as authenticated
403
- authStorage.set('ollama', { type: 'api_key', key: 'ollama' });
404
- p.log.success(`${pc.green('Ollama (Local)')} configured — no API key needed`);
405
- p.log.info(pc.dim('Models are discovered automatically from your local Ollama instance.'));
406
- return true;
407
- }
408
- else {
409
- s.stop('Ollama check failed');
410
- p.log.warn(`Ollama responded with status ${response.status} at ${host}`);
411
- }
412
- }
413
- catch {
414
- s.stop('Ollama not detected');
415
- p.log.warn(`Could not reach Ollama at ${host}`);
416
- p.log.info(pc.dim('Install Ollama from https://ollama.com and run "ollama serve"'));
417
- p.log.info(pc.dim('Set OLLAMA_HOST if using a non-default address.'));
418
- }
419
- // Even if not reachable now, save the config — the extension will detect it at runtime
420
- const proceed = await p.confirm({
421
- message: 'Save Ollama as your provider anyway? (it will auto-detect when running)',
422
- });
423
- if (p.isCancel(proceed) || !proceed)
424
- return false;
425
- authStorage.set('ollama', { type: 'api_key', key: 'ollama' });
426
- p.log.success(`${pc.green('Ollama (Local)')} saved — models will appear when Ollama is running`);
427
- return true;
428
- }
429
385
  // ─── Custom OpenAI-compatible Flow ────────────────────────────────────────────
430
386
  async function runCustomOpenAIFlow(p, pc, authStorage) {
431
387
  // Prompt for base URL
@@ -1,4 +1,4 @@
1
- import { DefaultResourceLoader, sortExtensionPaths } from '@gsd/pi-coding-agent';
1
+ import { DefaultResourceLoader } from '@gsd/pi-coding-agent';
2
2
  import { createHash } from 'node:crypto';
3
3
  import { homedir } from 'node:os';
4
4
  import { chmodSync, copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, openSync, closeSync, readFileSync, readlinkSync, readdirSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from 'node:fs';
@@ -584,20 +584,5 @@ export function buildResourceLoader(agentDir) {
584
584
  agentDir,
585
585
  additionalExtensionPaths: piExtensionPaths,
586
586
  bundledExtensionNames: bundledKeys,
587
- extensionPathsTransform: (paths) => {
588
- // 1. Filter community extensions through the GSD registry
589
- const filteredPaths = paths.filter((entryPath) => {
590
- const manifest = readManifestFromEntryPath(entryPath);
591
- if (!manifest)
592
- return true; // no manifest = always load
593
- return isExtensionEnabled(registry, manifest.id);
594
- });
595
- // 2. Sort in topological dependency order
596
- const { sortedPaths, warnings } = sortExtensionPaths(filteredPaths);
597
- return {
598
- paths: sortedPaths,
599
- diagnostics: warnings.map((w) => w.message),
600
- };
601
- },
602
587
  });
603
588
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: researcher
3
3
  description: Web researcher that finds and synthesizes current information using Brave Search
4
- tools: search-the-web, bash
4
+ tools: web_search, bash
5
5
  ---
6
6
 
7
7
  You are a web researcher. You find current, accurate information using web search and synthesize it into a clear, well-structured report.
@@ -104,22 +104,9 @@ export default function AskUserQuestions(pi) {
104
104
  if (selected === undefined) {
105
105
  return errorResult("ask_user_questions was cancelled", params.questions);
106
106
  }
107
- // When the user picks "None of the above" on a single-select
108
- // question, prompt for a free-text explanation so they are not
109
- // trapped in a re-asking loop (bug #2715).
110
- let freeTextNote = "";
111
- const selectedStr = Array.isArray(selected) ? selected[0] : selected;
112
- if (!q.allowMultiple && selectedStr === OTHER_OPTION_LABEL) {
113
- const note = await ctx.ui.input(`${q.header}: Please explain in your own words`, "Type your answer here…");
114
- if (note) {
115
- freeTextNote = note;
116
- }
117
- }
118
- const answerList = Array.isArray(selected) ? selected : [selected];
119
- if (freeTextNote) {
120
- answerList.push(`user_note: ${freeTextNote}`);
121
- }
122
- answers[q.id] = { answers: answerList };
107
+ answers[q.id] = {
108
+ answers: Array.isArray(selected) ? selected : [selected],
109
+ };
123
110
  }
124
111
  const roundResult = {
125
112
  endInterview: false,
@@ -8,6 +8,6 @@
8
8
  "provides": {
9
9
  "tools": ["async_bash", "await_job", "cancel_job"],
10
10
  "commands": ["jobs"],
11
- "hooks": ["session_start", "session_before_switch", "session_shutdown"]
11
+ "hooks": ["session_start"]
12
12
  }
13
13
  }
@@ -8,7 +8,7 @@
8
8
  "provides": {
9
9
  "tools": ["bg_shell"],
10
10
  "commands": ["bg"],
11
- "hooks": ["session_shutdown", "session_compact", "session_tree", "session_switch", "before_agent_start", "session_start", "turn_end", "agent_end", "tool_execution_end"],
11
+ "hooks": ["session_shutdown"],
12
12
  "shortcuts": ["Ctrl+Alt+B"]
13
13
  }
14
14
  }
@@ -29,7 +29,7 @@
29
29
  "browser_visual_diff", "browser_zoom_region",
30
30
  "browser_generate_test", "browser_action_cache", "browser_check_injection"
31
31
  ],
32
- "hooks": ["session_start", "session_shutdown"]
32
+ "hooks": ["session_shutdown"]
33
33
  },
34
34
  "dependencies": {
35
35
  "runtime": ["playwright"]
@@ -4,7 +4,6 @@
4
4
  * Translates the Claude Agent SDK's `BetaRawMessageStreamEvent` sequence
5
5
  * into GSD's `AssistantMessageEvent` deltas for incremental TUI rendering.
6
6
  */
7
- import { repairToolJson } from "@gsd/pi-ai";
8
7
  // ---------------------------------------------------------------------------
9
8
  // Content-block mapping helpers
10
9
  // ---------------------------------------------------------------------------
@@ -211,19 +210,12 @@ export class PartialMessageBuilder {
211
210
  block.arguments = JSON.parse(jsonStr);
212
211
  }
213
212
  catch {
214
- // JSON.parse failed attempt repair for YAML-style bullet
215
- // lists that LLMs copy from template formatting (#2660).
216
- try {
217
- block.arguments = JSON.parse(repairToolJson(jsonStr));
218
- }
219
- catch {
220
- // Repair also failed — stream was truncated or garbage.
221
- // Preserve the raw string for diagnostics but signal the
222
- // malformation explicitly so downstream consumers can
223
- // distinguish this from a healthy tool completion (#2574).
224
- block.arguments = { _raw: jsonStr };
225
- return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true };
226
- }
213
+ // Stream was truncated mid-tool-call JSON is garbage.
214
+ // Preserve the raw string for diagnostics but signal the
215
+ // malformation explicitly so downstream consumers can
216
+ // distinguish this from a healthy tool completion (#2574).
217
+ block.arguments = { _raw: jsonStr };
218
+ return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true };
227
219
  }
228
220
  return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial };
229
221
  }