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
@@ -9,9 +9,6 @@ const cjsRequire = createRequire(import.meta.url);
9
9
  * Minimal terminal interface for TUI
10
10
  */
11
11
  export interface Terminal {
12
- // Whether stdout is a real TTY (false for pipes, e.g. RPC bridge processes)
13
- readonly isTTY: boolean;
14
-
15
12
  // Start the terminal with input and resize handlers
16
13
  start(onInput: (data: string) => void, onResize: () => void): void;
17
14
 
@@ -66,22 +63,11 @@ export class ProcessTerminal implements Terminal {
66
63
  private stdinDataHandler?: (data: string) => void;
67
64
  private writeLogPath = process.env.PI_TUI_WRITE_LOG || "";
68
65
 
69
- get isTTY(): boolean {
70
- return !!process.stdout.isTTY;
71
- }
72
-
73
66
  get kittyProtocolActive(): boolean {
74
67
  return this._kittyProtocolActive;
75
68
  }
76
69
 
77
70
  start(onInput: (data: string) => void, onResize: () => void): void {
78
- // Non-TTY stdout (pipe) — skip TUI initialization entirely.
79
- // RPC bridge processes communicate via JSON, not terminal escape codes.
80
- // Without this guard, the render loop burns 500%+ CPU. (issue #3095)
81
- if (!this.isTTY) {
82
- return;
83
- }
84
-
85
71
  this.inputHandler = onInput;
86
72
  this.resizeHandler = onResize;
87
73
 
@@ -399,12 +399,6 @@ export class TUI extends Container {
399
399
 
400
400
  start(): void {
401
401
  this.stopped = false;
402
- // Non-TTY stdout (pipe) — skip TUI entirely to avoid burning CPU.
403
- // RPC bridge processes have piped stdio; rendering ANSI escape codes
404
- // to a pipe is pure waste and causes a runaway render loop. (issue #3095)
405
- if (!this.terminal.isTTY) {
406
- return;
407
- }
408
402
  this.terminal.start(
409
403
  (data) => this.handleInput(data),
410
404
  () => this.requestRender(),
@@ -464,8 +458,6 @@ export class TUI extends Container {
464
458
  }
465
459
 
466
460
  requestRender(force = false): void {
467
- // Skip rendering on non-TTY stdout to prevent CPU burn (issue #3095)
468
- if (!this.terminal.isTTY) return;
469
461
  if (force) {
470
462
  this.previousLines = [];
471
463
  this.previousWidth = -1; // -1 triggers widthChanged, forcing a full clear
@@ -37,48 +37,6 @@ function newestSrcMtime(dir) {
37
37
  return newest
38
38
  }
39
39
 
40
- /**
41
- * Detects workspace packages whose dist/ is missing or stale.
42
- *
43
- * Missing dist/index.js is always reported (the package won't work at all).
44
- *
45
- * Staleness (src/ newer than dist/) is ONLY checked when a .git directory
46
- * exists at root — indicating a development clone. In npm tarball installs,
47
- * file timestamps are unreliable (npm sets all files to a canonical date,
48
- * but extraction ordering can cause src/ to appear 1-2 seconds newer than
49
- * dist/). Attempting to rebuild in that scenario is dangerous: devDependencies
50
- * (including TypeScript) are not installed, and any globally-installed tsc
51
- * may produce broken output that overwrites the known-good dist/.
52
- *
53
- * @param {string} root Project root directory
54
- * @param {string[]} packages Package directory names to check
55
- * @returns {string[]} Package names that need rebuilding
56
- */
57
- function detectStalePackages(root, packages) {
58
- const packagesDir = join(root, 'packages')
59
- const isDevClone = existsSync(join(root, '.git'))
60
-
61
- const stale = []
62
- for (const pkg of packages) {
63
- const distIndex = join(packagesDir, pkg, 'dist', 'index.js')
64
- if (!existsSync(distIndex)) {
65
- stale.push(pkg)
66
- continue
67
- }
68
- // Only check src vs dist timestamps in development clones.
69
- // In npm tarball installs, timestamps are unreliable and rebuilding
70
- // without devDependencies can corrupt the pre-built dist/ (#2877).
71
- if (isDevClone) {
72
- const distMtime = statSync(distIndex).mtimeMs
73
- const srcMtime = newestSrcMtime(join(packagesDir, pkg, 'src'))
74
- if (srcMtime > distMtime) {
75
- stale.push(pkg)
76
- }
77
- }
78
- }
79
- return stale
80
- }
81
-
82
40
  if (require.main === module) {
83
41
  const root = resolve(__dirname, '..')
84
42
  const packagesDir = join(root, 'packages')
@@ -99,7 +57,19 @@ if (require.main === module) {
99
57
  'pi-coding-agent',
100
58
  ]
101
59
 
102
- const stale = detectStalePackages(root, WORKSPACE_PACKAGES)
60
+ const stale = []
61
+ for (const pkg of WORKSPACE_PACKAGES) {
62
+ const distIndex = join(packagesDir, pkg, 'dist', 'index.js')
63
+ if (!existsSync(distIndex)) {
64
+ stale.push(pkg)
65
+ continue
66
+ }
67
+ const distMtime = statSync(distIndex).mtimeMs
68
+ const srcMtime = newestSrcMtime(join(packagesDir, pkg, 'src'))
69
+ if (srcMtime > distMtime) {
70
+ stale.push(pkg)
71
+ }
72
+ }
103
73
 
104
74
  if (stale.length === 0) process.exit(0)
105
75
 
@@ -108,7 +78,6 @@ if (require.main === module) {
108
78
  for (const pkg of stale) {
109
79
  const pkgDir = join(packagesDir, pkg)
110
80
  try {
111
- // execSync is safe here: the command is a hardcoded string, not user input
112
81
  execSync('npm run build', { cwd: pkgDir, stdio: 'pipe' })
113
82
  process.stderr.write(` ✓ ${pkg}\n`)
114
83
  } catch (err) {
@@ -118,4 +87,4 @@ if (require.main === module) {
118
87
  }
119
88
  }
120
89
 
121
- module.exports = { newestSrcMtime, detectStalePackages }
90
+ module.exports = { newestSrcMtime }
@@ -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.
@@ -162,27 +162,9 @@ export default function AskUserQuestions(pi: ExtensionAPI) {
162
162
  if (selected === undefined) {
163
163
  return errorResult("ask_user_questions was cancelled", params.questions);
164
164
  }
165
-
166
- // When the user picks "None of the above" on a single-select
167
- // question, prompt for a free-text explanation so they are not
168
- // trapped in a re-asking loop (bug #2715).
169
- let freeTextNote = "";
170
- const selectedStr = Array.isArray(selected) ? selected[0] : selected;
171
- if (!q.allowMultiple && selectedStr === OTHER_OPTION_LABEL) {
172
- const note = await ctx.ui.input(
173
- `${q.header}: Please explain in your own words`,
174
- "Type your answer here…",
175
- );
176
- if (note) {
177
- freeTextNote = note;
178
- }
179
- }
180
-
181
- const answerList = Array.isArray(selected) ? selected : [selected];
182
- if (freeTextNote) {
183
- answerList.push(`user_note: ${freeTextNote}`);
184
- }
185
- answers[q.id] = { answers: answerList };
165
+ answers[q.id] = {
166
+ answers: Array.isArray(selected) ? selected : [selected],
167
+ };
186
168
  }
187
169
  const roundResult: RoundResult = {
188
170
  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"]
@@ -16,7 +16,6 @@ import type {
16
16
  Usage,
17
17
  WebSearchResultContent,
18
18
  } from "@gsd/pi-ai";
19
- import { repairToolJson } from "@gsd/pi-ai";
20
19
  import type { BetaContentBlock, BetaRawMessageStreamEvent, NonNullableUsage } from "./sdk-types.js";
21
20
 
22
21
  // ---------------------------------------------------------------------------
@@ -245,18 +244,12 @@ export class PartialMessageBuilder {
245
244
  try {
246
245
  block.arguments = JSON.parse(jsonStr);
247
246
  } catch {
248
- // JSON.parse failed attempt repair for YAML-style bullet
249
- // lists that LLMs copy from template formatting (#2660).
250
- try {
251
- block.arguments = JSON.parse(repairToolJson(jsonStr));
252
- } catch {
253
- // Repair also failed stream was truncated or garbage.
254
- // Preserve the raw string for diagnostics but signal the
255
- // malformation explicitly so downstream consumers can
256
- // distinguish this from a healthy tool completion (#2574).
257
- block.arguments = { _raw: jsonStr };
258
- return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true };
259
- }
247
+ // Stream was truncated mid-tool-call JSON is garbage.
248
+ // Preserve the raw string for diagnostics but signal the
249
+ // malformation explicitly so downstream consumers can
250
+ // distinguish this from a healthy tool completion (#2574).
251
+ block.arguments = { _raw: jsonStr };
252
+ return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial, malformedArguments: true };
260
253
  }
261
254
  return { type: "toolcall_end", contentIndex, toolCall: block, partial: this.partial };
262
255
  }
@@ -23,6 +23,9 @@ import type {
23
23
  SDKMessage,
24
24
  SDKPartialAssistantMessage,
25
25
  SDKResultMessage,
26
+ SDKSystemMessage,
27
+ SDKStatusMessage,
28
+ SDKUserMessage,
26
29
  } from "./sdk-types.js";
27
30
 
28
31
  // ---------------------------------------------------------------------------
@@ -68,49 +71,30 @@ function getClaudePath(): string {
68
71
  }
69
72
 
70
73
  // ---------------------------------------------------------------------------
71
- // Prompt construction
74
+ // Prompt extraction
72
75
  // ---------------------------------------------------------------------------
73
76
 
74
77
  /**
75
- * Extract text content from a single message regardless of content shape.
78
+ * Extract the last user prompt text from GSD's context messages.
79
+ * The SDK manages its own conversation history — we only send
80
+ * the latest user message as the prompt.
76
81
  */
77
- function extractMessageText(msg: { role: string; content: unknown }): string {
78
- if (typeof msg.content === "string") return msg.content;
79
- if (Array.isArray(msg.content)) {
80
- const textParts = msg.content
81
- .filter((part: any) => part.type === "text")
82
- .map((part: any) => part.text ?? part.thinking ?? "");
83
- if (textParts.length > 0) return textParts.join("\n");
82
+ function extractLastUserPrompt(context: Context): string {
83
+ for (let i = context.messages.length - 1; i >= 0; i--) {
84
+ const msg = context.messages[i];
85
+ if (msg.role === "user") {
86
+ if (typeof msg.content === "string") return msg.content;
87
+ if (Array.isArray(msg.content)) {
88
+ const textParts = msg.content
89
+ .filter((part: any) => part.type === "text")
90
+ .map((part: any) => part.text);
91
+ if (textParts.length > 0) return textParts.join("\n");
92
+ }
93
+ }
84
94
  }
85
95
  return "";
86
96
  }
87
97
 
88
- /**
89
- * Build a full conversational prompt from GSD's context messages.
90
- *
91
- * Previous behaviour sent only the last user message, making every SDK
92
- * call effectively stateless. This version serialises the complete
93
- * conversation history (system prompt + all user/assistant turns) so
94
- * Claude Code has full context for multi-turn continuity.
95
- */
96
- export function buildPromptFromContext(context: Context): string {
97
- const parts: string[] = [];
98
-
99
- if (context.systemPrompt) {
100
- parts.push(`[System]\n${context.systemPrompt}`);
101
- }
102
-
103
- for (const msg of context.messages) {
104
- const text = extractMessageText(msg);
105
- if (!text) continue;
106
-
107
- const label = msg.role === "user" ? "User" : msg.role === "assistant" ? "Assistant" : "System";
108
- parts.push(`[${label}]\n${text}`);
109
- }
110
-
111
- return parts.join("\n\n");
112
- }
113
-
114
98
  // ---------------------------------------------------------------------------
115
99
  // Error helper
116
100
  // ---------------------------------------------------------------------------
@@ -143,31 +127,6 @@ export function makeStreamExhaustedErrorMessage(model: string, lastTextContent:
143
127
  return message;
144
128
  }
145
129
 
146
- // ---------------------------------------------------------------------------
147
- // SDK options builder
148
- // ---------------------------------------------------------------------------
149
-
150
- /**
151
- * Build the options object passed to the Claude Agent SDK's `query()` call.
152
- *
153
- * Extracted for testability — callers can verify session persistence,
154
- * beta flags, and other configuration without mocking the full SDK.
155
- */
156
- export function buildSdkOptions(modelId: string, prompt: string): Record<string, unknown> {
157
- return {
158
- pathToClaudeCodeExecutable: getClaudePath(),
159
- model: modelId,
160
- includePartialMessages: true,
161
- persistSession: true,
162
- cwd: process.cwd(),
163
- permissionMode: "bypassPermissions",
164
- allowDangerouslySkipPermissions: true,
165
- settingSources: ["project"],
166
- systemPrompt: { type: "preset", preset: "claude_code" },
167
- betas: modelId.includes("sonnet") ? ["context-1m-2025-08-07"] : [],
168
- };
169
- }
170
-
171
130
  // ---------------------------------------------------------------------------
172
131
  // streamSimple implementation
173
132
  // ---------------------------------------------------------------------------
@@ -221,14 +180,22 @@ async function pumpSdkMessages(
221
180
  options.signal.addEventListener("abort", () => controller.abort(), { once: true });
222
181
  }
223
182
 
224
- const prompt = buildPromptFromContext(context);
225
- const sdkOpts = buildSdkOptions(modelId, prompt);
183
+ const prompt = extractLastUserPrompt(context);
226
184
 
227
185
  const queryResult = sdk.query({
228
186
  prompt,
229
187
  options: {
230
- ...sdkOpts,
188
+ pathToClaudeCodeExecutable: getClaudePath(),
189
+ model: modelId,
190
+ includePartialMessages: true,
191
+ persistSession: false,
231
192
  abortController: controller,
193
+ cwd: process.cwd(),
194
+ permissionMode: "bypassPermissions",
195
+ allowDangerouslySkipPermissions: true,
196
+ settingSources: ["project"],
197
+ systemPrompt: { type: "preset", preset: "claude_code" },
198
+ betas: modelId.includes("sonnet") ? ["context-1m-2025-08-07"] : [],
232
199
  },
233
200
  });
234
201
 
@@ -258,6 +225,7 @@ async function pumpSdkMessages(
258
225
  // -- Streaming partial messages --
259
226
  case "stream_event": {
260
227
  const partial = msg as SDKPartialAssistantMessage;
228
+ if (partial.parent_tool_use_id !== null) break; // skip subagent
261
229
 
262
230
  const event = partial.event;
263
231
 
@@ -288,6 +256,7 @@ async function pumpSdkMessages(
288
256
  // -- Complete assistant message (non-streaming fallback) --
289
257
  case "assistant": {
290
258
  const sdkAssistant = msg as SDKAssistantMessage;
259
+ if (sdkAssistant.parent_tool_use_id !== null) break;
291
260
 
292
261
  // Capture text content from complete messages
293
262
  for (const block of sdkAssistant.message.content) {
@@ -302,6 +271,9 @@ async function pumpSdkMessages(
302
271
 
303
272
  // -- User message (synthetic tool result — signals turn boundary) --
304
273
  case "user": {
274
+ const userMsg = msg as SDKUserMessage;
275
+ if (userMsg.parent_tool_use_id !== null) break;
276
+
305
277
  // Capture content from the completed turn before resetting
306
278
  if (builder) {
307
279
  for (const block of builder.message.content) {
@@ -102,32 +102,4 @@ describe("PartialMessageBuilder — malformed tool arguments (#2574)", () => {
102
102
  "non-JSON content should set malformedArguments: true",
103
103
  );
104
104
  });
105
-
106
- test("YAML bullet lists repaired to JSON arrays (#2660)", () => {
107
- const builder = new PartialMessageBuilder("claude-sonnet-4-20250514");
108
- const malformedJson =
109
- '{"milestoneId": "M005", "keyDecisions": - Used Web Notification API, "keyFiles": - src/lib.rs, "title": "done"}';
110
- const event = feedToolCall(builder, [malformedJson]);
111
-
112
- assert.ok(event, "event should not be null");
113
- assert.equal(event!.type, "toolcall_end");
114
- // Repaired YAML bullets should NOT set malformedArguments
115
- assert.equal(
116
- (event as any).malformedArguments,
117
- undefined,
118
- "repaired YAML bullets should not set malformedArguments",
119
- );
120
- if (event!.type === "toolcall_end") {
121
- assert.equal(event!.toolCall.arguments.milestoneId, "M005");
122
- assert.ok(
123
- Array.isArray(event!.toolCall.arguments.keyDecisions),
124
- "keyDecisions should be repaired to an array",
125
- );
126
- assert.ok(
127
- Array.isArray(event!.toolCall.arguments.keyFiles),
128
- "keyFiles should be repaired to an array",
129
- );
130
- assert.equal(event!.toolCall.arguments.title, "done");
131
- }
132
- });
133
105
  });
@@ -1,15 +1,6 @@
1
1
  import { describe, test } from "node:test";
2
2
  import assert from "node:assert/strict";
3
- import {
4
- makeStreamExhaustedErrorMessage,
5
- buildPromptFromContext,
6
- buildSdkOptions,
7
- } from "../stream-adapter.ts";
8
- import type { Context, Message } from "@gsd/pi-ai";
9
-
10
- // ---------------------------------------------------------------------------
11
- // Existing tests — exhausted stream fallback (#2575)
12
- // ---------------------------------------------------------------------------
3
+ import { makeStreamExhaustedErrorMessage } from "../stream-adapter.ts";
13
4
 
14
5
  describe("stream-adapter — exhausted stream fallback (#2575)", () => {
15
6
  test("generator exhaustion becomes an error message instead of clean completion", () => {
@@ -28,101 +19,3 @@ describe("stream-adapter — exhausted stream fallback (#2575)", () => {
28
19
  assert.match(String((message.content[0] as any)?.text ?? ""), /Claude Code error: stream_exhausted_without_result/);
29
20
  });
30
21
  });
31
-
32
- // ---------------------------------------------------------------------------
33
- // Bug #2859 — stateless provider regression tests
34
- // ---------------------------------------------------------------------------
35
-
36
- describe("stream-adapter — full context prompt (#2859)", () => {
37
- test("buildPromptFromContext includes all user and assistant messages, not just the last user message", () => {
38
- const context: Context = {
39
- systemPrompt: "You are a helpful assistant.",
40
- messages: [
41
- { role: "user", content: "What is 2+2?" } as Message,
42
- {
43
- role: "assistant",
44
- content: [{ type: "text", text: "4" }],
45
- api: "anthropic-messages",
46
- provider: "claude-code",
47
- model: "claude-sonnet-4-20250514",
48
- usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
49
- stopReason: "stop",
50
- timestamp: Date.now(),
51
- } as Message,
52
- { role: "user", content: "Now multiply that by 3" } as Message,
53
- ],
54
- };
55
-
56
- const prompt = buildPromptFromContext(context);
57
-
58
- // Must contain content from BOTH user messages, not just the last
59
- assert.ok(prompt.includes("2+2"), "prompt must include first user message");
60
- assert.ok(prompt.includes("multiply"), "prompt must include second user message");
61
- // Must contain assistant response for continuity
62
- assert.ok(prompt.includes("4"), "prompt must include assistant reply for context");
63
- });
64
-
65
- test("buildPromptFromContext includes system prompt when present", () => {
66
- const context: Context = {
67
- systemPrompt: "You are a coding assistant.",
68
- messages: [
69
- { role: "user", content: "Write a function" } as Message,
70
- ],
71
- };
72
-
73
- const prompt = buildPromptFromContext(context);
74
- assert.ok(prompt.includes("coding assistant"), "prompt must include system prompt");
75
- });
76
-
77
- test("buildPromptFromContext handles array content parts in user messages", () => {
78
- const context: Context = {
79
- messages: [
80
- {
81
- role: "user",
82
- content: [
83
- { type: "text", text: "First part" },
84
- { type: "text", text: "Second part" },
85
- ],
86
- } as Message,
87
- { role: "user", content: "Follow-up" } as Message,
88
- ],
89
- };
90
-
91
- const prompt = buildPromptFromContext(context);
92
- assert.ok(prompt.includes("First part"), "prompt must include array content parts");
93
- assert.ok(prompt.includes("Second part"), "prompt must include all text parts");
94
- assert.ok(prompt.includes("Follow-up"), "prompt must include follow-up message");
95
- });
96
-
97
- test("buildPromptFromContext returns empty string for empty messages", () => {
98
- const context: Context = { messages: [] };
99
- const prompt = buildPromptFromContext(context);
100
- assert.equal(prompt, "");
101
- });
102
- });
103
-
104
- describe("stream-adapter — session persistence (#2859)", () => {
105
- test("buildSdkOptions enables persistSession by default", () => {
106
- const options = buildSdkOptions("claude-sonnet-4-20250514", "test prompt");
107
- assert.equal(options.persistSession, true, "persistSession must default to true");
108
- });
109
-
110
- test("buildSdkOptions sets model and prompt correctly", () => {
111
- const options = buildSdkOptions("claude-sonnet-4-20250514", "hello world");
112
- assert.equal(options.model, "claude-sonnet-4-20250514");
113
- });
114
-
115
- test("buildSdkOptions enables betas for sonnet models", () => {
116
- const sonnetOpts = buildSdkOptions("claude-sonnet-4-20250514", "test");
117
- assert.ok(
118
- Array.isArray(sonnetOpts.betas) && sonnetOpts.betas.length > 0,
119
- "sonnet models should have betas enabled",
120
- );
121
-
122
- const opusOpts = buildSdkOptions("claude-opus-4-20250514", "test");
123
- assert.ok(
124
- Array.isArray(opusOpts.betas) && opusOpts.betas.length === 0,
125
- "non-sonnet models should have empty betas",
126
- );
127
- });
128
- });
@@ -7,6 +7,6 @@
7
7
  "requires": { "platform": ">=2.29.0" },
8
8
  "provides": {
9
9
  "tools": ["resolve_library", "get_library_docs"],
10
- "hooks": ["session_start", "session_shutdown"]
10
+ "hooks": ["session_start"]
11
11
  }
12
12
  }
@@ -54,9 +54,6 @@ function hydrateProcessEnv(key: string, value: string): void {
54
54
  }
55
55
 
56
56
  async function writeEnvKey(filePath: string, key: string, value: string): Promise<void> {
57
- if (typeof value !== "string") {
58
- throw new TypeError(`writeEnvKey expects a string value for key "${key}", got ${typeof value}`);
59
- }
60
57
  let content = "";
61
58
  try {
62
59
  content = await readFile(filePath, "utf8");
@@ -422,7 +419,7 @@ export async function collectSecretsFromManifest(
422
419
  for (const { key, value } of collected) {
423
420
  const entry = manifest.entries.find((e) => e.key === key);
424
421
  if (entry) {
425
- entry.status = value != null ? "collected" : "skipped";
422
+ entry.status = value !== null ? "collected" : "skipped";
426
423
  }
427
424
  }
428
425
 
@@ -430,14 +427,14 @@ export async function collectSecretsFromManifest(
430
427
  await writeFile(manifestPath, formatSecretsManifest(manifest), "utf8");
431
428
 
432
429
  // (j) Apply collected values to destination
433
- const provided = collected.filter((c) => c.value != null) as Array<{ key: string; value: string }>;
430
+ const provided = collected.filter((c) => c.value !== null) as Array<{ key: string; value: string }>;
434
431
  const { applied } = await applySecrets(provided, destination, {
435
432
  envFilePath: resolve(ctx.cwd, ".env"),
436
433
  });
437
434
 
438
435
  const skipped = [
439
436
  ...alreadySkipped,
440
- ...collected.filter((c) => c.value == null).map((c) => c.key),
437
+ ...collected.filter((c) => c.value === null).map((c) => c.key),
441
438
  ];
442
439
 
443
440
  return { applied, skipped, existingSkipped };
@@ -508,8 +505,8 @@ export default function secureEnv(pi: ExtensionAPI) {
508
505
  collected.push({ key: item.key, value });
509
506
  }
510
507
 
511
- const provided = collected.filter((c) => c.value != null) as Array<{ key: string; value: string }>;
512
- const skipped = collected.filter((c) => c.value == null).map((c) => c.key);
508
+ const provided = collected.filter((c) => c.value !== null) as Array<{ key: string; value: string }>;
509
+ const skipped = collected.filter((c) => c.value === null).map((c) => c.key);
513
510
 
514
511
  // Apply to destination via shared helper
515
512
  const { applied, errors } = await applySecrets(provided, destination, {
@@ -7,6 +7,6 @@
7
7
  "requires": { "platform": ">=2.29.0" },
8
8
  "provides": {
9
9
  "tools": ["google_search"],
10
- "hooks": ["session_start", "session_shutdown"]
10
+ "hooks": ["session_start"]
11
11
  }
12
12
  }
@@ -79,7 +79,7 @@ async function searchWithOAuth(
79
79
  signal?: AbortSignal,
80
80
  ): Promise<SearchResult> {
81
81
  const model = process.env.GEMINI_SEARCH_MODEL || "gemini-2.5-flash";
82
- const url = `https://cloudcode-pa.googleapis.com/v1internal:streamGenerateContent?alt=sse`;
82
+ const url = `https://cloudcode-pa.googleapis.com/v1internal:streamGenerateContent`;
83
83
 
84
84
  const GEMINI_CLI_HEADERS = {
85
85
  ideType: "IDE_UNSPECIFIED",
@@ -104,7 +104,6 @@ async function searchWithOAuth(
104
104
  contents: [{ parts: [{ text: query }] }],
105
105
  tools: [{ googleSearch: {} }],
106
106
  },
107
- userAgent: "pi-coding-agent",
108
107
  }),
109
108
  signal,
110
109
  });
@@ -93,7 +93,6 @@ export interface LoopDeps {
93
93
  body: string,
94
94
  kind: string,
95
95
  category: string,
96
- projectName?: string,
97
96
  ) => void;
98
97
  setActiveMilestoneId: (basePath: string, mid: string) => void;
99
98
  pruneQueueOrder: (basePath: string, pendingIds: string[]) => void;