gsd-pi 2.77.0-dev.538325aea → 2.77.0-dev.eaa4973bc

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 (874) hide show
  1. package/dist/cli-web-branch.d.ts +1 -0
  2. package/dist/cli-web-branch.js +3 -0
  3. package/dist/cli.js +59 -15
  4. package/dist/extension-discovery.d.ts +6 -0
  5. package/dist/extension-discovery.js +37 -0
  6. package/dist/extension-registry.d.ts +3 -0
  7. package/dist/extension-registry.js +1 -1
  8. package/dist/extension-sort.d.ts +18 -0
  9. package/dist/extension-sort.js +114 -0
  10. package/dist/extension-validator.d.ts +47 -0
  11. package/dist/extension-validator.js +127 -0
  12. package/dist/headless-ui.d.ts +1 -1
  13. package/dist/headless.js +4 -2
  14. package/dist/loader.js +36 -7
  15. package/dist/onboarding.js +5 -5
  16. package/dist/provider-migrations.d.ts +20 -2
  17. package/dist/provider-migrations.js +15 -2
  18. package/dist/remote-questions-config.js +1 -1
  19. package/dist/resources/extensions/async-jobs/async-bash-tool.js +1 -1
  20. package/dist/resources/extensions/aws-auth/index.js +1 -2
  21. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +9 -6
  22. package/dist/resources/extensions/bg-shell/process-manager.js +1 -2
  23. package/dist/resources/extensions/browser-tools/index.js +1 -0
  24. package/dist/resources/extensions/claude-code-cli/index.js +1 -1
  25. package/dist/resources/extensions/claude-code-cli/partial-builder.js +17 -106
  26. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +71 -57
  27. package/dist/resources/extensions/cmux/index.js +20 -0
  28. package/dist/resources/extensions/google-search/extension-manifest.json +5 -4
  29. package/dist/resources/extensions/google-search/index.js +2 -375
  30. package/dist/resources/extensions/gsd/abandon-detect.js +44 -0
  31. package/dist/resources/extensions/gsd/auto/resolve.js +24 -0
  32. package/dist/resources/extensions/gsd/auto/run-unit.js +10 -2
  33. package/dist/resources/extensions/gsd/auto/turn-epoch.js +95 -0
  34. package/dist/resources/extensions/gsd/auto-dispatch.js +24 -0
  35. package/dist/resources/extensions/gsd/auto-loop.js +1 -1
  36. package/dist/resources/extensions/gsd/auto-post-unit.js +31 -0
  37. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +11 -5
  38. package/dist/resources/extensions/gsd/auto-unit-closeout.js +11 -2
  39. package/dist/resources/extensions/gsd/auto-worktree.js +58 -8
  40. package/dist/resources/extensions/gsd/auto.js +31 -14
  41. package/dist/resources/extensions/gsd/bootstrap/provider-error-resume.js +4 -2
  42. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +11 -0
  43. package/dist/resources/extensions/gsd/bootstrap/system-context.js +11 -6
  44. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +31 -4
  45. package/dist/resources/extensions/gsd/commands-cmux.js +9 -6
  46. package/dist/resources/extensions/gsd/commands-extensions.js +634 -43
  47. package/dist/resources/extensions/gsd/file-lock.js +49 -9
  48. package/dist/resources/extensions/gsd/git-service.js +1 -0
  49. package/dist/resources/extensions/gsd/gitignore.js +1 -0
  50. package/dist/resources/extensions/gsd/guided-flow-queue.js +4 -1
  51. package/dist/resources/extensions/gsd/guided-flow.js +1 -1
  52. package/dist/resources/extensions/gsd/journal.js +17 -2
  53. package/dist/resources/extensions/gsd/milestone-actions.js +15 -0
  54. package/dist/resources/extensions/gsd/notifications.js +30 -16
  55. package/dist/resources/extensions/gsd/reports.js +5 -4
  56. package/dist/resources/extensions/gsd/tools/complete-slice.js +21 -0
  57. package/dist/resources/extensions/gsd/tools/complete-task.js +31 -0
  58. package/dist/resources/extensions/gsd/uok/audit.js +18 -2
  59. package/dist/resources/extensions/gsd/workflow-logger.js +10 -2
  60. package/dist/resources/extensions/gsd/worktree-manager.js +1 -0
  61. package/dist/resources/extensions/mcp-client/auth.js +10 -1
  62. package/dist/resources/extensions/mcp-client/index.js +119 -10
  63. package/dist/resources/extensions/ollama/index.js +2 -1
  64. package/dist/resources/extensions/ollama/ollama-chat-provider.js +15 -5
  65. package/dist/resources/extensions/remote-questions/config.js +1 -12
  66. package/dist/resources/extensions/shared/cmux-events.js +12 -0
  67. package/dist/resources/extensions/shared/rtk-session-stats.js +1 -2
  68. package/dist/resources/extensions/universal-config/index.js +1 -1
  69. package/dist/resources/skills/create-skill/SKILL.md +2 -2
  70. package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +4 -4
  71. package/dist/resources/skills/create-skill/workflows/audit-skill.md +4 -4
  72. package/dist/resources/skills/create-skill/workflows/create-new-skill.md +5 -5
  73. package/dist/security-overrides.d.ts +1 -4
  74. package/dist/security-overrides.js +3 -16
  75. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  76. package/dist/web/standalone/.next/BUILD_ID +1 -1
  77. package/dist/web/standalone/.next/app-path-routes-manifest.json +11 -11
  78. package/dist/web/standalone/.next/build-manifest.json +3 -3
  79. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  80. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  81. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  82. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  83. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  84. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  85. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  86. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  87. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  88. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  89. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  90. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  91. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  92. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  93. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  94. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  95. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  96. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  97. package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
  98. package/dist/web/standalone/.next/server/app/api/boot/route.js.nft.json +1 -1
  99. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
  100. package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js.nft.json +1 -1
  101. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
  102. package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js.nft.json +1 -1
  103. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +1 -1
  104. package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js.nft.json +1 -1
  105. package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
  106. package/dist/web/standalone/.next/server/app/api/captures/route.js.nft.json +1 -1
  107. package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
  108. package/dist/web/standalone/.next/server/app/api/cleanup/route.js.nft.json +1 -1
  109. package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
  110. package/dist/web/standalone/.next/server/app/api/doctor/route.js.nft.json +1 -1
  111. package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
  112. package/dist/web/standalone/.next/server/app/api/export-data/route.js.nft.json +1 -1
  113. package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
  114. package/dist/web/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  115. package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
  116. package/dist/web/standalone/.next/server/app/api/forensics/route.js.nft.json +1 -1
  117. package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
  118. package/dist/web/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  119. package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
  120. package/dist/web/standalone/.next/server/app/api/history/route.js.nft.json +1 -1
  121. package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
  122. package/dist/web/standalone/.next/server/app/api/hooks/route.js.nft.json +1 -1
  123. package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
  124. package/dist/web/standalone/.next/server/app/api/inspect/route.js.nft.json +1 -1
  125. package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
  126. package/dist/web/standalone/.next/server/app/api/knowledge/route.js.nft.json +1 -1
  127. package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
  128. package/dist/web/standalone/.next/server/app/api/live-state/route.js.nft.json +1 -1
  129. package/dist/web/standalone/.next/server/app/api/notifications/route.js +1 -1
  130. package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  131. package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
  132. package/dist/web/standalone/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  133. package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
  134. package/dist/web/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  135. package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
  136. package/dist/web/standalone/.next/server/app/api/recovery/route.js.nft.json +1 -1
  137. package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
  138. package/dist/web/standalone/.next/server/app/api/session/browser/route.js.nft.json +1 -1
  139. package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
  140. package/dist/web/standalone/.next/server/app/api/session/command/route.js.nft.json +1 -1
  141. package/dist/web/standalone/.next/server/app/api/session/events/route.js +1 -1
  142. package/dist/web/standalone/.next/server/app/api/session/events/route.js.nft.json +1 -1
  143. package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
  144. package/dist/web/standalone/.next/server/app/api/session/manage/route.js.nft.json +1 -1
  145. package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
  146. package/dist/web/standalone/.next/server/app/api/settings-data/route.js.nft.json +1 -1
  147. package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
  148. package/dist/web/standalone/.next/server/app/api/skill-health/route.js.nft.json +1 -1
  149. package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
  150. package/dist/web/standalone/.next/server/app/api/steer/route.js.nft.json +1 -1
  151. package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
  152. package/dist/web/standalone/.next/server/app/api/switch-root/route.js.nft.json +1 -1
  153. package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  154. package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +1 -1
  155. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +1 -1
  156. package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js.nft.json +1 -1
  157. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +1 -1
  158. package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js.nft.json +1 -1
  159. package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
  160. package/dist/web/standalone/.next/server/app/api/undo/route.js.nft.json +1 -1
  161. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  162. package/dist/web/standalone/.next/server/app/api/visualizer/route.js.nft.json +1 -1
  163. package/dist/web/standalone/.next/server/app/index.html +1 -1
  164. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  165. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  166. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  167. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  168. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  169. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  170. package/dist/web/standalone/.next/server/app-paths-manifest.json +11 -11
  171. package/dist/web/standalone/.next/server/chunks/1926.js +1 -0
  172. package/dist/web/standalone/.next/server/chunks/6897.js +2 -2
  173. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  174. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  175. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  176. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  177. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  178. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  179. package/dist/web/standalone/.next/static/chunks/2826.e9f5195e91f9cad2.js +11 -0
  180. package/dist/web/standalone/.next/static/chunks/{webpack-1832629448831fdc.js → webpack-2e68521d7c82f7c2.js} +1 -1
  181. package/dist/web-mode.js +1 -1
  182. package/dist/welcome-screen.js +20 -19
  183. package/dist/wizard.js +5 -2
  184. package/package.json +16 -32
  185. package/packages/mcp-server/README.md +3 -3
  186. package/packages/mcp-server/dist/env-writer.d.ts +1 -0
  187. package/packages/mcp-server/dist/env-writer.d.ts.map +1 -1
  188. package/packages/mcp-server/dist/env-writer.js +74 -6
  189. package/packages/mcp-server/dist/env-writer.js.map +1 -1
  190. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  191. package/packages/mcp-server/dist/server.js +36 -17
  192. package/packages/mcp-server/dist/server.js.map +1 -1
  193. package/packages/mcp-server/package.json +5 -0
  194. package/packages/mcp-server/src/env-writer.test.ts +79 -1
  195. package/packages/mcp-server/src/env-writer.ts +76 -6
  196. package/packages/mcp-server/src/readers/readers.test.ts +5 -1
  197. package/packages/mcp-server/src/server.ts +45 -19
  198. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
  199. package/packages/native/package.json +5 -0
  200. package/packages/native/src/__tests__/clipboard.test.mjs +69 -23
  201. package/packages/native/tsconfig.json +1 -2
  202. package/packages/native/tsconfig.tsbuildinfo +1 -0
  203. package/packages/pi-agent-core/package.json +5 -0
  204. package/packages/pi-agent-core/src/agent-loop.test.ts +220 -15
  205. package/packages/pi-ai/package.json +5 -0
  206. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  207. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts +25 -0
  208. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  209. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +105 -6
  210. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  211. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js +230 -28
  212. package/packages/pi-coding-agent/dist/core/compaction/compaction.test.js.map +1 -1
  213. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts +30 -2
  214. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  215. package/packages/pi-coding-agent/dist/core/compaction/utils.js +113 -12
  216. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  217. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts +1 -0
  218. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -1
  219. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +29 -18
  220. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -1
  221. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.d.ts +2 -0
  222. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.d.ts.map +1 -0
  223. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.js +130 -0
  224. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.test.js.map +1 -0
  225. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js +56 -1
  226. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js.map +1 -1
  227. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js +8 -15
  228. package/packages/pi-coding-agent/dist/core/discovery-cache.test.js.map +1 -1
  229. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts +25 -0
  230. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.d.ts.map +1 -0
  231. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js +109 -0
  232. package/packages/pi-coding-agent/dist/core/extensions/extension-discovery.js.map +1 -0
  233. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts +67 -0
  234. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.d.ts.map +1 -0
  235. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js +167 -0
  236. package/packages/pi-coding-agent/dist/core/extensions/extension-registry.js.map +1 -0
  237. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts +3 -2
  238. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  239. package/packages/pi-coding-agent/dist/core/extensions/loader.js +24 -8
  240. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  241. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +7 -0
  242. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  243. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  244. package/packages/pi-coding-agent/dist/core/lsp/lsp-integration.test.js +11 -0
  245. package/packages/pi-coding-agent/dist/core/lsp/lsp-integration.test.js.map +1 -1
  246. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js +2 -2
  247. package/packages/pi-coding-agent/dist/core/model-registry-auth-mode.test.js.map +1 -1
  248. package/packages/pi-coding-agent/dist/core/resource-loader.js +1 -1
  249. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  250. package/packages/pi-coding-agent/dist/core/sdk.d.ts +1 -0
  251. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  252. package/packages/pi-coding-agent/dist/core/sdk.js +4 -1
  253. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  254. package/packages/pi-coding-agent/dist/core/sdk.test.js +19 -1
  255. package/packages/pi-coding-agent/dist/core/sdk.test.js.map +1 -1
  256. package/packages/pi-coding-agent/dist/core/system-prompt.js +3 -3
  257. package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  258. package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js +2 -1
  259. package/packages/pi-coding-agent/dist/core/tools/path-utils.test.js.map +1 -1
  260. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/provider-display-name.test.js +15 -6
  261. package/packages/pi-coding-agent/dist/modes/interactive/components/__tests__/provider-display-name.test.js.map +1 -1
  262. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  263. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js +14 -5
  264. package/packages/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  265. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts +7 -1
  266. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  267. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.js +31 -9
  268. package/packages/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
  269. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js +14 -0
  270. package/packages/pi-coding-agent/dist/modes/interactive/controllers/input-controller.test.js.map +1 -1
  271. package/packages/pi-coding-agent/package.json +5 -0
  272. package/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +368 -28
  273. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +122 -6
  274. package/packages/pi-coding-agent/src/core/compaction/utils.ts +111 -13
  275. package/packages/pi-coding-agent/src/core/compaction-orchestrator.test.ts +154 -0
  276. package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +32 -18
  277. package/packages/pi-coding-agent/src/core/compaction-utils.test.ts +68 -1
  278. package/packages/pi-coding-agent/src/core/discovery-cache.test.ts +9 -18
  279. package/packages/pi-coding-agent/src/core/extensions/extension-discovery.ts +119 -0
  280. package/packages/pi-coding-agent/src/core/extensions/extension-registry.ts +222 -0
  281. package/packages/pi-coding-agent/src/core/extensions/loader.ts +24 -11
  282. package/packages/pi-coding-agent/src/core/extensions/types.ts +8 -0
  283. package/packages/pi-coding-agent/src/core/lsp/lsp-integration.test.ts +13 -0
  284. package/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +2 -2
  285. package/packages/pi-coding-agent/src/core/resource-loader.ts +1 -1
  286. package/packages/pi-coding-agent/src/core/sdk.test.ts +25 -1
  287. package/packages/pi-coding-agent/src/core/sdk.ts +10 -3
  288. package/packages/pi-coding-agent/src/core/system-prompt.ts +3 -3
  289. package/packages/pi-coding-agent/src/core/tools/path-utils.test.ts +2 -1
  290. package/packages/pi-coding-agent/src/modes/interactive/components/__tests__/provider-display-name.test.ts +17 -7
  291. package/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +14 -5
  292. package/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts +45 -11
  293. package/packages/pi-coding-agent/src/modes/interactive/controllers/input-controller.test.ts +14 -0
  294. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  295. package/packages/pi-tui/dist/__tests__/autocomplete.test.js +12 -5
  296. package/packages/pi-tui/dist/__tests__/autocomplete.test.js.map +1 -1
  297. package/packages/pi-tui/dist/__tests__/stdin-buffer.test.js +19 -0
  298. package/packages/pi-tui/dist/__tests__/stdin-buffer.test.js.map +1 -1
  299. package/packages/pi-tui/dist/stdin-buffer.d.ts +7 -0
  300. package/packages/pi-tui/dist/stdin-buffer.d.ts.map +1 -1
  301. package/packages/pi-tui/dist/stdin-buffer.js +20 -0
  302. package/packages/pi-tui/dist/stdin-buffer.js.map +1 -1
  303. package/packages/pi-tui/package.json +5 -0
  304. package/packages/pi-tui/src/__tests__/autocomplete.test.ts +20 -5
  305. package/packages/pi-tui/src/__tests__/stdin-buffer.test.ts +25 -0
  306. package/packages/pi-tui/src/stdin-buffer.ts +26 -0
  307. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  308. package/packages/rpc-client/package.json +5 -0
  309. package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  310. package/pkg/dist/core/export-html/ansi-to-html.js +0 -1
  311. package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
  312. package/pkg/dist/core/export-html/index.d.ts +1 -1
  313. package/pkg/dist/core/export-html/index.d.ts.map +1 -1
  314. package/pkg/dist/core/export-html/index.js +5 -39
  315. package/pkg/dist/core/export-html/index.js.map +1 -1
  316. package/pkg/dist/core/export-html/tool-renderer.d.ts +2 -2
  317. package/pkg/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  318. package/pkg/dist/core/export-html/tool-renderer.js.map +1 -1
  319. package/scripts/ensure-workspace-builds.cjs +0 -2
  320. package/scripts/lib/workspace-manifest.cjs +86 -0
  321. package/scripts/link-workspace-packages.cjs +5 -19
  322. package/src/resources/extensions/async-jobs/async-bash-tool.ts +1 -1
  323. package/src/resources/extensions/aws-auth/index.ts +1 -2
  324. package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +7 -4
  325. package/src/resources/extensions/bg-shell/index.ts +1 -2
  326. package/src/resources/extensions/bg-shell/process-manager.ts +1 -2
  327. package/src/resources/extensions/browser-tools/index.ts +1 -2
  328. package/src/resources/extensions/claude-code-cli/index.ts +1 -1
  329. package/src/resources/extensions/claude-code-cli/partial-builder.ts +23 -115
  330. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +81 -61
  331. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +91 -22
  332. package/src/resources/extensions/cmux/index.ts +35 -10
  333. package/src/resources/extensions/google-search/extension-manifest.json +5 -4
  334. package/src/resources/extensions/google-search/index.ts +8 -470
  335. package/src/resources/extensions/gsd/abandon-detect.ts +62 -0
  336. package/src/resources/extensions/gsd/auto/loop-deps.ts +1 -1
  337. package/src/resources/extensions/gsd/auto/resolve.ts +29 -0
  338. package/src/resources/extensions/gsd/auto/run-unit.ts +16 -2
  339. package/src/resources/extensions/gsd/auto/turn-epoch.ts +108 -0
  340. package/src/resources/extensions/gsd/auto/types.ts +1 -1
  341. package/src/resources/extensions/gsd/auto-dispatch.ts +20 -0
  342. package/src/resources/extensions/gsd/auto-loop.ts +1 -1
  343. package/src/resources/extensions/gsd/auto-post-unit.ts +30 -0
  344. package/src/resources/extensions/gsd/auto-timeout-recovery.ts +12 -5
  345. package/src/resources/extensions/gsd/auto-unit-closeout.ts +14 -3
  346. package/src/resources/extensions/gsd/auto-worktree.ts +60 -5
  347. package/src/resources/extensions/gsd/auto.ts +37 -18
  348. package/src/resources/extensions/gsd/bootstrap/provider-error-resume.ts +6 -2
  349. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +11 -0
  350. package/src/resources/extensions/gsd/bootstrap/system-context.ts +13 -9
  351. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +27 -8
  352. package/src/resources/extensions/gsd/commands-cmux.ts +10 -6
  353. package/src/resources/extensions/gsd/commands-extensions.ts +747 -41
  354. package/src/resources/extensions/gsd/file-lock.ts +84 -11
  355. package/src/resources/extensions/gsd/git-service.ts +1 -0
  356. package/src/resources/extensions/gsd/gitignore.ts +1 -0
  357. package/src/resources/extensions/gsd/guided-flow-queue.ts +4 -1
  358. package/src/resources/extensions/gsd/guided-flow.ts +1 -1
  359. package/src/resources/extensions/gsd/journal.ts +27 -2
  360. package/src/resources/extensions/gsd/milestone-actions.ts +18 -0
  361. package/src/resources/extensions/gsd/notifications.ts +27 -15
  362. package/src/resources/extensions/gsd/reports.ts +5 -4
  363. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +11 -2
  364. package/src/resources/extensions/gsd/tests/auto-mode-guards.test.ts +79 -0
  365. package/src/resources/extensions/gsd/tests/cmux.test.ts +5 -9
  366. package/src/resources/extensions/gsd/tests/file-lock.test.ts +86 -12
  367. package/src/resources/extensions/gsd/tests/google-search-stub.test.ts +121 -0
  368. package/src/resources/extensions/gsd/tests/integration/auto-worktree-milestone-merge.test.ts +30 -0
  369. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +3 -2
  370. package/src/resources/extensions/gsd/tests/mcp-client-security.test.ts +76 -0
  371. package/src/resources/extensions/gsd/tests/milestone-transition-state-rebuild.test.ts +4 -2
  372. package/src/resources/extensions/gsd/tests/parallel-commit-scope.test.ts +5 -0
  373. package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +150 -0
  374. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +39 -25
  375. package/src/resources/extensions/gsd/tests/queue-auto-guard.test.ts +181 -0
  376. package/src/resources/extensions/gsd/tests/quick-auto-guard.test.ts +13 -7
  377. package/src/resources/extensions/gsd/tests/require-slice-discussion-dispatch.test.ts +170 -0
  378. package/src/resources/extensions/gsd/tests/rewrite-docs-abandon-detect.test.ts +195 -0
  379. package/src/resources/extensions/gsd/tests/stuck-detection-coverage.test.ts +2 -2
  380. package/src/resources/extensions/gsd/tests/triage-resolution.test.ts +50 -2
  381. package/src/resources/extensions/gsd/tests/turn-epoch.test.ts +162 -0
  382. package/src/resources/extensions/gsd/tests/validate-extension-package.test.ts +168 -0
  383. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +25 -2
  384. package/src/resources/extensions/gsd/tools/complete-slice.ts +38 -0
  385. package/src/resources/extensions/gsd/tools/complete-task.ts +49 -0
  386. package/src/resources/extensions/gsd/uok/audit.ts +20 -2
  387. package/src/resources/extensions/gsd/workflow-logger.ts +22 -3
  388. package/src/resources/extensions/gsd/worktree-manager.ts +1 -0
  389. package/src/resources/extensions/mcp-client/auth.ts +12 -1
  390. package/src/resources/extensions/mcp-client/index.ts +130 -11
  391. package/src/resources/extensions/ollama/index.ts +3 -3
  392. package/src/resources/extensions/ollama/ollama-chat-provider.ts +18 -6
  393. package/src/resources/extensions/remote-questions/config.ts +4 -15
  394. package/src/resources/extensions/search-the-web/index.ts +1 -2
  395. package/src/resources/extensions/shared/cmux-events.ts +59 -0
  396. package/src/resources/extensions/shared/rtk-session-stats.ts +1 -2
  397. package/src/resources/extensions/shared/tests/format-utils.test.ts +3 -5
  398. package/src/resources/extensions/universal-config/index.ts +1 -1
  399. package/src/resources/skills/create-skill/SKILL.md +2 -2
  400. package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +4 -4
  401. package/src/resources/skills/create-skill/workflows/audit-skill.md +4 -4
  402. package/src/resources/skills/create-skill/workflows/create-new-skill.md +5 -5
  403. package/dist/web/standalone/.next/server/chunks/7461.js +0 -1
  404. package/dist/web/standalone/.next/static/chunks/2826.d445fb428ef41fa1.js +0 -9
  405. package/packages/gsd-agent-core/dist/agent-session.d.ts +0 -716
  406. package/packages/gsd-agent-core/dist/agent-session.d.ts.map +0 -1
  407. package/packages/gsd-agent-core/dist/agent-session.js +0 -2595
  408. package/packages/gsd-agent-core/dist/agent-session.js.map +0 -1
  409. package/packages/gsd-agent-core/dist/artifact-manager.d.ts +0 -52
  410. package/packages/gsd-agent-core/dist/artifact-manager.d.ts.map +0 -1
  411. package/packages/gsd-agent-core/dist/artifact-manager.js +0 -118
  412. package/packages/gsd-agent-core/dist/artifact-manager.js.map +0 -1
  413. package/packages/gsd-agent-core/dist/bash-executor.d.ts +0 -57
  414. package/packages/gsd-agent-core/dist/bash-executor.d.ts.map +0 -1
  415. package/packages/gsd-agent-core/dist/bash-executor.js +0 -282
  416. package/packages/gsd-agent-core/dist/bash-executor.js.map +0 -1
  417. package/packages/gsd-agent-core/dist/blob-store.d.ts +0 -39
  418. package/packages/gsd-agent-core/dist/blob-store.d.ts.map +0 -1
  419. package/packages/gsd-agent-core/dist/blob-store.js +0 -151
  420. package/packages/gsd-agent-core/dist/blob-store.js.map +0 -1
  421. package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts +0 -90
  422. package/packages/gsd-agent-core/dist/compaction/branch-summarization.d.ts.map +0 -1
  423. package/packages/gsd-agent-core/dist/compaction/branch-summarization.js +0 -207
  424. package/packages/gsd-agent-core/dist/compaction/branch-summarization.js.map +0 -1
  425. package/packages/gsd-agent-core/dist/compaction/compaction.d.ts +0 -137
  426. package/packages/gsd-agent-core/dist/compaction/compaction.d.ts.map +0 -1
  427. package/packages/gsd-agent-core/dist/compaction/compaction.js +0 -621
  428. package/packages/gsd-agent-core/dist/compaction/compaction.js.map +0 -1
  429. package/packages/gsd-agent-core/dist/compaction/index.d.ts +0 -7
  430. package/packages/gsd-agent-core/dist/compaction/index.d.ts.map +0 -1
  431. package/packages/gsd-agent-core/dist/compaction/index.js +0 -7
  432. package/packages/gsd-agent-core/dist/compaction/index.js.map +0 -1
  433. package/packages/gsd-agent-core/dist/compaction/utils.d.ts +0 -78
  434. package/packages/gsd-agent-core/dist/compaction/utils.d.ts.map +0 -1
  435. package/packages/gsd-agent-core/dist/compaction/utils.js +0 -263
  436. package/packages/gsd-agent-core/dist/compaction/utils.js.map +0 -1
  437. package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts +0 -90
  438. package/packages/gsd-agent-core/dist/compaction-orchestrator.d.ts.map +0 -1
  439. package/packages/gsd-agent-core/dist/compaction-orchestrator.js +0 -338
  440. package/packages/gsd-agent-core/dist/compaction-orchestrator.js.map +0 -1
  441. package/packages/gsd-agent-core/dist/contextual-tips.d.ts +0 -43
  442. package/packages/gsd-agent-core/dist/contextual-tips.d.ts.map +0 -1
  443. package/packages/gsd-agent-core/dist/contextual-tips.js +0 -208
  444. package/packages/gsd-agent-core/dist/contextual-tips.js.map +0 -1
  445. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts +0 -18
  446. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.d.ts.map +0 -1
  447. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js +0 -250
  448. package/packages/gsd-agent-core/dist/export-html/ansi-to-html.js.map +0 -1
  449. package/packages/gsd-agent-core/dist/export-html/index.d.ts +0 -37
  450. package/packages/gsd-agent-core/dist/export-html/index.d.ts.map +0 -1
  451. package/packages/gsd-agent-core/dist/export-html/index.js +0 -257
  452. package/packages/gsd-agent-core/dist/export-html/index.js.map +0 -1
  453. package/packages/gsd-agent-core/dist/export-html/template.css +0 -971
  454. package/packages/gsd-agent-core/dist/export-html/template.html +0 -54
  455. package/packages/gsd-agent-core/dist/export-html/template.js +0 -1583
  456. package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts +0 -38
  457. package/packages/gsd-agent-core/dist/export-html/tool-renderer.d.ts.map +0 -1
  458. package/packages/gsd-agent-core/dist/export-html/tool-renderer.js +0 -70
  459. package/packages/gsd-agent-core/dist/export-html/tool-renderer.js.map +0 -1
  460. package/packages/gsd-agent-core/dist/export-html/vendor/highlight.min.js +0 -1213
  461. package/packages/gsd-agent-core/dist/export-html/vendor/marked.min.js +0 -6
  462. package/packages/gsd-agent-core/dist/fallback-resolver.d.ts +0 -75
  463. package/packages/gsd-agent-core/dist/fallback-resolver.d.ts.map +0 -1
  464. package/packages/gsd-agent-core/dist/fallback-resolver.js +0 -118
  465. package/packages/gsd-agent-core/dist/fallback-resolver.js.map +0 -1
  466. package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts +0 -44
  467. package/packages/gsd-agent-core/dist/image-overflow-recovery.d.ts.map +0 -1
  468. package/packages/gsd-agent-core/dist/image-overflow-recovery.js +0 -99
  469. package/packages/gsd-agent-core/dist/image-overflow-recovery.js.map +0 -1
  470. package/packages/gsd-agent-core/dist/index.d.ts +0 -14
  471. package/packages/gsd-agent-core/dist/index.d.ts.map +0 -1
  472. package/packages/gsd-agent-core/dist/index.js +0 -19
  473. package/packages/gsd-agent-core/dist/index.js.map +0 -1
  474. package/packages/gsd-agent-core/dist/keybindings.d.ts +0 -47
  475. package/packages/gsd-agent-core/dist/keybindings.d.ts.map +0 -1
  476. package/packages/gsd-agent-core/dist/keybindings.js +0 -156
  477. package/packages/gsd-agent-core/dist/keybindings.js.map +0 -1
  478. package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts +0 -42
  479. package/packages/gsd-agent-core/dist/lifecycle-hooks.d.ts.map +0 -1
  480. package/packages/gsd-agent-core/dist/lifecycle-hooks.js +0 -204
  481. package/packages/gsd-agent-core/dist/lifecycle-hooks.js.map +0 -1
  482. package/packages/gsd-agent-core/dist/retry-handler.d.ts +0 -128
  483. package/packages/gsd-agent-core/dist/retry-handler.d.ts.map +0 -1
  484. package/packages/gsd-agent-core/dist/retry-handler.js +0 -518
  485. package/packages/gsd-agent-core/dist/retry-handler.js.map +0 -1
  486. package/packages/gsd-agent-core/dist/sdk.d.ts +0 -159
  487. package/packages/gsd-agent-core/dist/sdk.d.ts.map +0 -1
  488. package/packages/gsd-agent-core/dist/sdk.js +0 -375
  489. package/packages/gsd-agent-core/dist/sdk.js.map +0 -1
  490. package/packages/gsd-agent-core/dist/system-prompt.d.ts +0 -28
  491. package/packages/gsd-agent-core/dist/system-prompt.d.ts.map +0 -1
  492. package/packages/gsd-agent-core/dist/system-prompt.js +0 -201
  493. package/packages/gsd-agent-core/dist/system-prompt.js.map +0 -1
  494. package/packages/gsd-agent-core/package.json +0 -25
  495. package/packages/gsd-agent-core/scripts/copy-assets.cjs +0 -43
  496. package/packages/gsd-agent-core/src/agent-session.test.ts +0 -169
  497. package/packages/gsd-agent-core/src/agent-session.ts +0 -3358
  498. package/packages/gsd-agent-core/src/artifact-manager.ts +0 -126
  499. package/packages/gsd-agent-core/src/bash-executor.ts +0 -352
  500. package/packages/gsd-agent-core/src/blob-store.ts +0 -154
  501. package/packages/gsd-agent-core/src/compaction/branch-summarization.ts +0 -317
  502. package/packages/gsd-agent-core/src/compaction/compaction.ts +0 -855
  503. package/packages/gsd-agent-core/src/compaction/index.ts +0 -7
  504. package/packages/gsd-agent-core/src/compaction/utils.ts +0 -312
  505. package/packages/gsd-agent-core/src/compaction-orchestrator.ts +0 -449
  506. package/packages/gsd-agent-core/src/contextual-tips.ts +0 -232
  507. package/packages/gsd-agent-core/src/export-html/ansi-to-html.ts +0 -259
  508. package/packages/gsd-agent-core/src/export-html/index.ts +0 -345
  509. package/packages/gsd-agent-core/src/export-html/template.css +0 -971
  510. package/packages/gsd-agent-core/src/export-html/template.html +0 -54
  511. package/packages/gsd-agent-core/src/export-html/template.js +0 -1583
  512. package/packages/gsd-agent-core/src/export-html/tool-renderer.ts +0 -114
  513. package/packages/gsd-agent-core/src/export-html/vendor/highlight.min.js +0 -1213
  514. package/packages/gsd-agent-core/src/export-html/vendor/marked.min.js +0 -6
  515. package/packages/gsd-agent-core/src/fallback-resolver.ts +0 -193
  516. package/packages/gsd-agent-core/src/image-overflow-recovery.ts +0 -120
  517. package/packages/gsd-agent-core/src/index.ts +0 -68
  518. package/packages/gsd-agent-core/src/keybindings.ts +0 -220
  519. package/packages/gsd-agent-core/src/lifecycle-hooks.ts +0 -284
  520. package/packages/gsd-agent-core/src/retry-handler.ts +0 -620
  521. package/packages/gsd-agent-core/src/sdk.ts +0 -550
  522. package/packages/gsd-agent-core/src/system-prompt.ts +0 -270
  523. package/packages/gsd-agent-core/tsconfig.json +0 -28
  524. package/packages/gsd-agent-core/tsconfig.tsbuildinfo +0 -1
  525. package/packages/gsd-agent-modes/dist/cli/args.d.ts +0 -58
  526. package/packages/gsd-agent-modes/dist/cli/args.d.ts.map +0 -1
  527. package/packages/gsd-agent-modes/dist/cli/args.js +0 -324
  528. package/packages/gsd-agent-modes/dist/cli/args.js.map +0 -1
  529. package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts +0 -13
  530. package/packages/gsd-agent-modes/dist/cli/config-selector.d.ts.map +0 -1
  531. package/packages/gsd-agent-modes/dist/cli/config-selector.js +0 -32
  532. package/packages/gsd-agent-modes/dist/cli/config-selector.js.map +0 -1
  533. package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts +0 -15
  534. package/packages/gsd-agent-modes/dist/cli/file-processor.d.ts.map +0 -1
  535. package/packages/gsd-agent-modes/dist/cli/file-processor.js +0 -86
  536. package/packages/gsd-agent-modes/dist/cli/file-processor.js.map +0 -1
  537. package/packages/gsd-agent-modes/dist/cli/list-models.d.ts +0 -21
  538. package/packages/gsd-agent-modes/dist/cli/list-models.d.ts.map +0 -1
  539. package/packages/gsd-agent-modes/dist/cli/list-models.js +0 -114
  540. package/packages/gsd-agent-modes/dist/cli/list-models.js.map +0 -1
  541. package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts +0 -10
  542. package/packages/gsd-agent-modes/dist/cli/session-picker.d.ts.map +0 -1
  543. package/packages/gsd-agent-modes/dist/cli/session-picker.js +0 -37
  544. package/packages/gsd-agent-modes/dist/cli/session-picker.js.map +0 -1
  545. package/packages/gsd-agent-modes/dist/index.d.ts +0 -7
  546. package/packages/gsd-agent-modes/dist/index.d.ts.map +0 -1
  547. package/packages/gsd-agent-modes/dist/index.js +0 -7
  548. package/packages/gsd-agent-modes/dist/index.js.map +0 -1
  549. package/packages/gsd-agent-modes/dist/main.d.ts +0 -8
  550. package/packages/gsd-agent-modes/dist/main.d.ts.map +0 -1
  551. package/packages/gsd-agent-modes/dist/main.js +0 -491
  552. package/packages/gsd-agent-modes/dist/main.js.map +0 -1
  553. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts +0 -34
  554. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.d.ts.map +0 -1
  555. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js +0 -330
  556. package/packages/gsd-agent-modes/dist/modes/interactive/components/armin.js.map +0 -1
  557. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts +0 -29
  558. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  559. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js +0 -141
  560. package/packages/gsd-agent-modes/dist/modes/interactive/components/assistant-message.js.map +0 -1
  561. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts +0 -36
  562. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  563. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js +0 -157
  564. package/packages/gsd-agent-modes/dist/modes/interactive/components/bash-execution.js.map +0 -1
  565. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  566. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  567. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js +0 -48
  568. package/packages/gsd-agent-modes/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  569. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  570. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  571. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js +0 -43
  572. package/packages/gsd-agent-modes/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  573. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts +0 -11
  574. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.d.ts.map +0 -1
  575. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js +0 -47
  576. package/packages/gsd-agent-modes/dist/modes/interactive/components/chat-frame.js.map +0 -1
  577. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  578. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  579. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js +0 -44
  580. package/packages/gsd-agent-modes/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  581. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts +0 -71
  582. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  583. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js +0 -474
  584. package/packages/gsd-agent-modes/dist/modes/interactive/components/config-selector.js.map +0 -1
  585. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts +0 -15
  586. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  587. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js +0 -32
  588. package/packages/gsd-agent-modes/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  589. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts +0 -22
  590. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  591. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js +0 -70
  592. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-editor.js.map +0 -1
  593. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts +0 -20
  594. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  595. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js +0 -75
  596. package/packages/gsd-agent-modes/dist/modes/interactive/components/custom-message.js.map +0 -1
  597. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  598. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  599. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js +0 -140
  600. package/packages/gsd-agent-modes/dist/modes/interactive/components/daxnuts.js.map +0 -1
  601. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts +0 -12
  602. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.d.ts.map +0 -1
  603. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js +0 -133
  604. package/packages/gsd-agent-modes/dist/modes/interactive/components/diff.js.map +0 -1
  605. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts +0 -33
  606. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  607. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js +0 -82
  608. package/packages/gsd-agent-modes/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  609. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  610. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  611. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +0 -111
  612. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +0 -1
  613. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +0 -24
  614. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  615. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +0 -63
  616. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +0 -1
  617. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +0 -33
  618. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  619. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +0 -118
  620. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +0 -1
  621. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts +0 -32
  622. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.d.ts.map +0 -1
  623. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js +0 -230
  624. package/packages/gsd-agent-modes/dist/modes/interactive/components/footer.js.map +0 -1
  625. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +0 -34
  626. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +0 -1
  627. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +0 -36
  628. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +0 -1
  629. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts +0 -48
  630. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  631. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js +0 -72
  632. package/packages/gsd-agent-modes/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  633. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +0 -63
  634. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  635. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +0 -213
  636. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +0 -1
  637. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts +0 -86
  638. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  639. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js +0 -536
  640. package/packages/gsd-agent-modes/dist/modes/interactive/components/model-selector.js.map +0 -1
  641. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
  642. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  643. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +0 -93
  644. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  645. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts +0 -30
  646. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.d.ts.map +0 -1
  647. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js +0 -169
  648. package/packages/gsd-agent-modes/dist/modes/interactive/components/provider-manager.js.map +0 -1
  649. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -49
  650. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  651. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js +0 -267
  652. package/packages/gsd-agent-modes/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  653. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts +0 -21
  654. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  655. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js +0 -155
  656. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  657. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts +0 -97
  658. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  659. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js +0 -810
  660. package/packages/gsd-agent-modes/dist/modes/interactive/components/session-selector.js.map +0 -1
  661. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +0 -71
  662. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  663. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +0 -320
  664. package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +0 -1
  665. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  666. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  667. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js +0 -34
  668. package/packages/gsd-agent-modes/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  669. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  670. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  671. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js +0 -46
  672. package/packages/gsd-agent-modes/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  673. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  674. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  675. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js +0 -45
  676. package/packages/gsd-agent-modes/dist/modes/interactive/components/theme-selector.js.map +0 -1
  677. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  678. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  679. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js +0 -46
  680. package/packages/gsd-agent-modes/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  681. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts +0 -15
  682. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.d.ts.map +0 -1
  683. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js +0 -40
  684. package/packages/gsd-agent-modes/dist/modes/interactive/components/timestamp.js.map +0 -1
  685. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +0 -111
  686. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  687. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +0 -984
  688. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +0 -1
  689. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts +0 -44
  690. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.d.ts.map +0 -1
  691. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js +0 -61
  692. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-render-utils.js.map +0 -1
  693. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts +0 -109
  694. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  695. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js +0 -1035
  696. package/packages/gsd-agent-modes/dist/modes/interactive/components/tree-selector.js.map +0 -1
  697. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  698. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  699. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js +0 -112
  700. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  701. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts +0 -12
  702. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  703. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js +0 -38
  704. package/packages/gsd-agent-modes/dist/modes/interactive/components/user-message.js.map +0 -1
  705. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  706. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  707. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js +0 -33
  708. package/packages/gsd-agent-modes/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  709. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +0 -27
  710. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +0 -1
  711. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +0 -793
  712. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +0 -1
  713. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts +0 -4
  714. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.d.ts.map +0 -1
  715. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js +0 -62
  716. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/extension-ui-controller.js.map +0 -1
  717. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts +0 -22
  718. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +0 -1
  719. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +0 -118
  720. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +0 -1
  721. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts +0 -7
  722. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.d.ts.map +0 -1
  723. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js +0 -68
  724. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/model-controller.js.map +0 -1
  725. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +0 -50
  726. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +0 -1
  727. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +0 -2
  728. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +0 -1
  729. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +0 -358
  730. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  731. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +0 -3409
  732. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +0 -1
  733. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts +0 -77
  734. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.d.ts.map +0 -1
  735. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js +0 -529
  736. package/packages/gsd-agent-modes/dist/modes/interactive/slash-command-handlers.js.map +0 -1
  737. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts +0 -6
  738. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.d.ts.map +0 -1
  739. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js +0 -15
  740. package/packages/gsd-agent-modes/dist/modes/interactive/utils/shorten-path.js.map +0 -1
  741. package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts +0 -28
  742. package/packages/gsd-agent-modes/dist/modes/print-mode.d.ts.map +0 -1
  743. package/packages/gsd-agent-modes/dist/modes/print-mode.js +0 -84
  744. package/packages/gsd-agent-modes/dist/modes/print-mode.js.map +0 -1
  745. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts +0 -17
  746. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.d.ts.map +0 -1
  747. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js +0 -49
  748. package/packages/gsd-agent-modes/dist/modes/rpc/jsonl.js.map +0 -1
  749. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts +0 -37
  750. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.d.ts.map +0 -1
  751. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js +0 -84
  752. package/packages/gsd-agent-modes/dist/modes/rpc/remote-terminal.js.map +0 -1
  753. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts +0 -243
  754. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  755. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js +0 -464
  756. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-client.js.map +0 -1
  757. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts +0 -25
  758. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  759. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +0 -750
  760. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +0 -1
  761. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts +0 -511
  762. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  763. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js +0 -8
  764. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-types.js.map +0 -1
  765. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts +0 -19
  766. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.d.ts.map +0 -1
  767. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js +0 -45
  768. package/packages/gsd-agent-modes/dist/modes/shared/command-context-actions.js.map +0 -1
  769. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts +0 -22
  770. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.d.ts.map +0 -1
  771. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js +0 -21
  772. package/packages/gsd-agent-modes/dist/pi-coding-agent-compat.js.map +0 -1
  773. package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts +0 -4
  774. package/packages/gsd-agent-modes/dist/pi-tui-compat.d.ts.map +0 -1
  775. package/packages/gsd-agent-modes/dist/pi-tui-compat.js +0 -3
  776. package/packages/gsd-agent-modes/dist/pi-tui-compat.js.map +0 -1
  777. package/packages/gsd-agent-modes/dist/theme.d.ts +0 -15
  778. package/packages/gsd-agent-modes/dist/theme.d.ts.map +0 -1
  779. package/packages/gsd-agent-modes/dist/theme.js +0 -23
  780. package/packages/gsd-agent-modes/dist/theme.js.map +0 -1
  781. package/packages/gsd-agent-modes/dist/utils/theme.d.ts +0 -16
  782. package/packages/gsd-agent-modes/dist/utils/theme.d.ts.map +0 -1
  783. package/packages/gsd-agent-modes/dist/utils/theme.js +0 -11
  784. package/packages/gsd-agent-modes/dist/utils/theme.js.map +0 -1
  785. package/packages/gsd-agent-modes/package.json +0 -23
  786. package/packages/gsd-agent-modes/src/cli/args.ts +0 -350
  787. package/packages/gsd-agent-modes/src/cli/config-selector.ts +0 -54
  788. package/packages/gsd-agent-modes/src/cli/file-processor.ts +0 -107
  789. package/packages/gsd-agent-modes/src/cli/list-models.ts +0 -141
  790. package/packages/gsd-agent-modes/src/cli/session-picker.ts +0 -59
  791. package/packages/gsd-agent-modes/src/index.ts +0 -6
  792. package/packages/gsd-agent-modes/src/main.ts +0 -614
  793. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/login-dialog.test.ts +0 -24
  794. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/provider-display-name.test.ts +0 -18
  795. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/timestamp.test.ts +0 -38
  796. package/packages/gsd-agent-modes/src/modes/interactive/components/__tests__/tool-execution.test.ts +0 -171
  797. package/packages/gsd-agent-modes/src/modes/interactive/components/armin.ts +0 -382
  798. package/packages/gsd-agent-modes/src/modes/interactive/components/assistant-message.ts +0 -178
  799. package/packages/gsd-agent-modes/src/modes/interactive/components/bash-execution.ts +0 -212
  800. package/packages/gsd-agent-modes/src/modes/interactive/components/bordered-loader.ts +0 -66
  801. package/packages/gsd-agent-modes/src/modes/interactive/components/branch-summary-message.ts +0 -59
  802. package/packages/gsd-agent-modes/src/modes/interactive/components/chat-frame.ts +0 -67
  803. package/packages/gsd-agent-modes/src/modes/interactive/components/compaction-summary-message.ts +0 -60
  804. package/packages/gsd-agent-modes/src/modes/interactive/components/config-selector.ts +0 -597
  805. package/packages/gsd-agent-modes/src/modes/interactive/components/countdown-timer.ts +0 -41
  806. package/packages/gsd-agent-modes/src/modes/interactive/components/custom-editor.ts +0 -88
  807. package/packages/gsd-agent-modes/src/modes/interactive/components/custom-message.ts +0 -100
  808. package/packages/gsd-agent-modes/src/modes/interactive/components/daxnuts.ts +0 -165
  809. package/packages/gsd-agent-modes/src/modes/interactive/components/diff.ts +0 -147
  810. package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.test.ts +0 -73
  811. package/packages/gsd-agent-modes/src/modes/interactive/components/dynamic-border.ts +0 -89
  812. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-editor.ts +0 -151
  813. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-input.ts +0 -100
  814. package/packages/gsd-agent-modes/src/modes/interactive/components/extension-selector.ts +0 -156
  815. package/packages/gsd-agent-modes/src/modes/interactive/components/footer.ts +0 -257
  816. package/packages/gsd-agent-modes/src/modes/interactive/components/index.ts +0 -35
  817. package/packages/gsd-agent-modes/src/modes/interactive/components/keybinding-hints.ts +0 -84
  818. package/packages/gsd-agent-modes/src/modes/interactive/components/login-dialog.ts +0 -257
  819. package/packages/gsd-agent-modes/src/modes/interactive/components/model-selector.ts +0 -656
  820. package/packages/gsd-agent-modes/src/modes/interactive/components/oauth-selector.ts +0 -122
  821. package/packages/gsd-agent-modes/src/modes/interactive/components/provider-manager.ts +0 -210
  822. package/packages/gsd-agent-modes/src/modes/interactive/components/scoped-models-selector.ts +0 -342
  823. package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector-search.ts +0 -194
  824. package/packages/gsd-agent-modes/src/modes/interactive/components/session-selector.ts +0 -1011
  825. package/packages/gsd-agent-modes/src/modes/interactive/components/settings-selector.ts +0 -452
  826. package/packages/gsd-agent-modes/src/modes/interactive/components/show-images-selector.ts +0 -45
  827. package/packages/gsd-agent-modes/src/modes/interactive/components/skill-invocation-message.ts +0 -56
  828. package/packages/gsd-agent-modes/src/modes/interactive/components/theme-selector.ts +0 -63
  829. package/packages/gsd-agent-modes/src/modes/interactive/components/thinking-selector.ts +0 -64
  830. package/packages/gsd-agent-modes/src/modes/interactive/components/timestamp.ts +0 -48
  831. package/packages/gsd-agent-modes/src/modes/interactive/components/tool-execution.ts +0 -1157
  832. package/packages/gsd-agent-modes/src/modes/interactive/components/tree-render-utils.ts +0 -81
  833. package/packages/gsd-agent-modes/src/modes/interactive/components/tree-selector.ts +0 -1208
  834. package/packages/gsd-agent-modes/src/modes/interactive/components/user-message-selector.ts +0 -145
  835. package/packages/gsd-agent-modes/src/modes/interactive/components/user-message.ts +0 -44
  836. package/packages/gsd-agent-modes/src/modes/interactive/components/visual-truncate.ts +0 -50
  837. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller-ordering.test.ts +0 -1430
  838. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.test.ts +0 -71
  839. package/packages/gsd-agent-modes/src/modes/interactive/controllers/chat-controller.ts +0 -957
  840. package/packages/gsd-agent-modes/src/modes/interactive/controllers/extension-ui-controller.ts +0 -63
  841. package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.test.ts +0 -183
  842. package/packages/gsd-agent-modes/src/modes/interactive/controllers/input-controller.ts +0 -140
  843. package/packages/gsd-agent-modes/src/modes/interactive/controllers/model-controller.ts +0 -77
  844. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-ordering.test.ts +0 -44
  845. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode-state.ts +0 -49
  846. package/packages/gsd-agent-modes/src/modes/interactive/interactive-mode.ts +0 -4195
  847. package/packages/gsd-agent-modes/src/modes/interactive/slash-command-handlers.ts +0 -670
  848. package/packages/gsd-agent-modes/src/modes/interactive/utils/shorten-path.ts +0 -14
  849. package/packages/gsd-agent-modes/src/modes/print-mode.ts +0 -106
  850. package/packages/gsd-agent-modes/src/modes/rpc/jsonl.ts +0 -58
  851. package/packages/gsd-agent-modes/src/modes/rpc/remote-terminal.ts +0 -109
  852. package/packages/gsd-agent-modes/src/modes/rpc/rpc-client.ts +0 -572
  853. package/packages/gsd-agent-modes/src/modes/rpc/rpc-mode.ts +0 -902
  854. package/packages/gsd-agent-modes/src/modes/rpc/rpc-protocol-v2.test.ts +0 -971
  855. package/packages/gsd-agent-modes/src/modes/rpc/rpc-types.ts +0 -335
  856. package/packages/gsd-agent-modes/src/modes/shared/command-context-actions.ts +0 -53
  857. package/packages/gsd-agent-modes/src/pi-coding-agent-compat.ts +0 -42
  858. package/packages/gsd-agent-modes/src/pi-tui-compat.ts +0 -4
  859. package/packages/gsd-agent-modes/src/theme.ts +0 -25
  860. package/packages/gsd-agent-modes/src/utils/theme.ts +0 -24
  861. package/packages/gsd-agent-modes/tsconfig.json +0 -28
  862. package/packages/gsd-agent-modes/tsconfig.tsbuildinfo +0 -1
  863. package/packages/gsd-agent-types/dist/index.d.ts +0 -176
  864. package/packages/gsd-agent-types/dist/index.d.ts.map +0 -1
  865. package/packages/gsd-agent-types/dist/index.js +0 -24
  866. package/packages/gsd-agent-types/dist/index.js.map +0 -1
  867. package/packages/gsd-agent-types/package.json +0 -24
  868. package/packages/gsd-agent-types/src/index.ts +0 -206
  869. package/packages/gsd-agent-types/tsconfig.json +0 -25
  870. package/packages/gsd-agent-types/tsconfig.tsbuildinfo +0 -1
  871. package/packages/native/dist/tsconfig.tsbuildinfo +0 -1
  872. package/src/resources/extensions/claude-code-cli/tests/provider-registration.test.ts +0 -27
  873. /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → 5wbu35_C2_MQ3Jj1lEVDx}/_buildManifest.js +0 -0
  874. /package/dist/web/standalone/.next/static/{gy6_foLMsEzdGBT19c3hr → 5wbu35_C2_MQ3Jj1lEVDx}/_ssgManifest.js +0 -0
@@ -1,957 +0,0 @@
1
- import { Loader, Markdown, type MarkdownTheme, Spacer, Text } from "@gsd/pi-tui";
2
- import type { ToolDefinition } from "@gsd/agent-types";
3
-
4
- import type { InteractiveModeEvent, InteractiveModeStateHost } from "../interactive-mode-state.js";
5
- import { theme } from "../../../theme.js";
6
- import { AssistantMessageComponent } from "../components/assistant-message.js";
7
- import { ToolExecutionComponent } from "../components/tool-execution.js";
8
- import { DynamicBorder } from "../components/dynamic-border.js";
9
- import { appKey } from "../components/keybinding-hints.js";
10
-
11
- // vendor-seam: dual-module-path -- Markdown from pi-tui exposes maxLines at runtime
12
- // but the pi-tui type declarations don't include it.
13
- interface GSDMarkdownExtension {
14
- maxLines?: number;
15
- }
16
-
17
- // Tracks the last processed content index to avoid re-scanning all blocks on every message_update
18
- let lastProcessedContentIndex = 0;
19
-
20
- // Tracks the previous content[] length so we can detect when an adapter resets
21
- // the assistant content array for a new provider sub-turn within one lifecycle.
22
- let lastContentLength = 0;
23
-
24
- // --- Segment walker state (per streaming assistant turn) ---
25
- type RenderedSegment =
26
- | {
27
- kind: "text-run";
28
- startIndex: number;
29
- endIndex: number;
30
- contentType: "text" | "thinking";
31
- component: AssistantMessageComponent;
32
- }
33
- | { kind: "tool"; contentIndex: number; component: ToolExecutionComponent };
34
-
35
- let renderedSegments: RenderedSegment[] = [];
36
- // When providers reuse one assistant lifecycle across internal sub-turns,
37
- // a content[] shrink resets renderedSegments. Keep the displaced segments so
38
- // claude-code MCP pruning can remove stale provisional text later.
39
- let orphanedSegments: RenderedSegment[] = [];
40
-
41
- // Content block shape used for runtime narrowing. AssistantMessage["content"] is typed as
42
- // (TextContent | ThinkingContent | ToolCall)[] but pi-coding-agent appends serverToolUse/webSearchResult
43
- // blocks at runtime. Using a structural supertype avoids dual-module-path as-any casts.
44
- type RuntimeContentBlock = { type: string; [key: string]: unknown };
45
-
46
- function hasVisibleAssistantContent(message: { content: Array<unknown> }): boolean {
47
- return message.content.some(
48
- (c) => {
49
- const block = c as RuntimeContentBlock;
50
- return (
51
- (block.type === "text" && typeof block["text"] === "string" && (block["text"] as string).trim().length > 0)
52
- || (block.type === "thinking" && typeof block["thinking"] === "string" && (block["thinking"] as string).trim().length > 0)
53
- );
54
- },
55
- );
56
- }
57
-
58
- function hasAssistantToolBlocks(message: { content: Array<unknown> }): boolean {
59
- return message.content.some((c) => {
60
- const block = c as RuntimeContentBlock;
61
- return block.type === "toolCall" || block.type === "serverToolUse";
62
- });
63
- }
64
-
65
- // Pick the latest non-empty text block that appears strictly before the most
66
- // recent tool call. Text blocks that come after the last tool call are still
67
- // streaming live into the chat container, so mirroring them into the pinned
68
- // "Latest Output" zone would render the same tokens twice.
69
- export function findLatestPinnableText(contentBlocks: Array<unknown>): string {
70
- let lastToolIdx = -1;
71
- for (let i = contentBlocks.length - 1; i >= 0; i--) {
72
- const c = contentBlocks[i] as RuntimeContentBlock;
73
- if (c?.type === "toolCall" || c?.type === "serverToolUse") {
74
- lastToolIdx = i;
75
- break;
76
- }
77
- }
78
- for (let i = lastToolIdx - 1; i >= 0; i--) {
79
- const c = contentBlocks[i] as RuntimeContentBlock;
80
- if (c?.type === "text" && typeof c["text"] === "string" && (c["text"] as string).trim()) {
81
- return (c["text"] as string).trim();
82
- }
83
- }
84
- return "";
85
- }
86
-
87
- // Tracks the latest assistant text for the pinned message zone
88
- let lastPinnedText = "";
89
- // Whether any tool execution has been added in this assistant turn (triggers pinned display)
90
- let hasToolsInTurn = false;
91
- // Reference to the pinned border so we can toggle its label between working/idle
92
- let pinnedBorder: DynamicBorder | undefined;
93
- // Reference to the pinned markdown component below the border
94
- let pinnedTextComponent: Markdown | undefined;
95
-
96
- export async function handleAgentEvent(host: InteractiveModeStateHost & {
97
- init: () => Promise<void>;
98
- getMarkdownThemeWithSettings: () => MarkdownTheme;
99
- addMessageToChat: (message: unknown, options?: { populateHistory?: boolean }) => void;
100
- formatWebSearchResult: (content: unknown) => string;
101
- getRegisteredToolDefinition: (toolName: string) => ToolDefinition | undefined;
102
- checkShutdownRequested: () => Promise<void>;
103
- rebuildChatFromMessages: () => void;
104
- flushCompactionQueue: (options?: { willRetry?: boolean }) => Promise<void>;
105
- showStatus: (message: string) => void;
106
- showError: (message: string) => void;
107
- updatePendingMessagesDisplay: () => void;
108
- updateTerminalTitle: () => void;
109
- updateEditorBorderColor: () => void;
110
- pendingMessagesContainer: { clear: () => void };
111
- }, event: InteractiveModeEvent): Promise<void> {
112
- if (!host.isInitialized) {
113
- await host.init();
114
- }
115
-
116
- host.footer.invalidate();
117
- const timestampFormat = host.settingsManager.getTimestampFormat();
118
-
119
- // Reset content index tracker and pinned state when a new assistant message starts
120
- if (event.type === "message_start" && event.message.role === "assistant") {
121
- lastProcessedContentIndex = 0;
122
- lastContentLength = 0;
123
- lastPinnedText = "";
124
- hasToolsInTurn = false;
125
- renderedSegments = [];
126
- orphanedSegments = [];
127
- if (pinnedBorder) pinnedBorder.stopSpinner();
128
- pinnedBorder = undefined;
129
- pinnedTextComponent = undefined;
130
- host.pinnedMessageContainer.clear();
131
- }
132
-
133
- switch (event.type) {
134
- case "session_state_changed":
135
- switch (event.reason) {
136
- case "new_session":
137
- case "switch_session":
138
- case "fork":
139
- host.streamingComponent = undefined;
140
- host.streamingMessage = undefined;
141
- host.pendingTools.clear();
142
- host.pendingMessagesContainer.clear();
143
- host.pinnedMessageContainer.clear();
144
- lastPinnedText = "";
145
- hasToolsInTurn = false;
146
- renderedSegments = [];
147
- orphanedSegments = [];
148
- lastContentLength = 0;
149
- if (pinnedBorder) pinnedBorder.stopSpinner();
150
- pinnedBorder = undefined;
151
- pinnedTextComponent = undefined;
152
- host.compactionQueuedMessages = [];
153
- host.rebuildChatFromMessages();
154
- host.updatePendingMessagesDisplay();
155
- host.updateTerminalTitle();
156
- host.updateEditorBorderColor();
157
- host.ui.requestRender();
158
- return;
159
- case "set_session_name":
160
- host.updateTerminalTitle();
161
- host.ui.requestRender();
162
- return;
163
- case "set_model":
164
- case "set_thinking_level":
165
- host.updateEditorBorderColor();
166
- host.ui.requestRender();
167
- return;
168
- case "set_steering_mode":
169
- case "set_follow_up_mode":
170
- case "set_auto_compaction":
171
- case "set_auto_retry":
172
- case "abort_retry":
173
- default:
174
- host.ui.requestRender();
175
- return;
176
- }
177
- case "agent_start":
178
- if (host.retryEscapeHandler) {
179
- host.defaultEditor.onEscape = host.retryEscapeHandler;
180
- host.retryEscapeHandler = undefined;
181
- }
182
- if (host.retryLoader) {
183
- host.retryLoader.stop();
184
- host.retryLoader = undefined;
185
- }
186
- if (host.loadingAnimation) {
187
- host.loadingAnimation.stop();
188
- }
189
- host.statusContainer.clear();
190
- host.loadingAnimation = new Loader(
191
- host.ui,
192
- (spinner) => theme.fg("accent", spinner),
193
- (text) => theme.fg("muted", text),
194
- host.defaultWorkingMessage,
195
- );
196
- host.statusContainer.addChild(host.loadingAnimation);
197
- if (host.pendingWorkingMessage !== undefined) {
198
- if (host.pendingWorkingMessage) {
199
- host.loadingAnimation.setMessage(host.pendingWorkingMessage);
200
- }
201
- host.pendingWorkingMessage = undefined;
202
- }
203
- host.ui.requestRender();
204
- break;
205
-
206
- case "message_start":
207
- if (event.message.role === "custom") {
208
- host.addMessageToChat(event.message);
209
- host.ui.requestRender();
210
- } else if (event.message.role === "user") {
211
- host.addMessageToChat(event.message);
212
- host.updatePendingMessagesDisplay();
213
- host.ui.requestRender();
214
- } else if (event.message.role === "assistant") {
215
- host.streamingMessage = event.message;
216
- // External-tool providers can stream multiple assistant turns through
217
- // one response. Delay component creation until visible assistant text
218
- // arrives so tool outputs keep chronological ordering.
219
- host.ui.requestRender();
220
- }
221
- break;
222
-
223
- case "message_update":
224
- if (event.message.role === "assistant") {
225
- host.streamingMessage = event.message;
226
- const innerEvent = event.assistantMessageEvent;
227
-
228
- let externalToolResult:
229
- | { toolCallId: string; content: Array<{ type: string; text?: string; data?: string; mimeType?: string }>; details: Record<string, unknown>; isError: boolean }
230
- | undefined;
231
- if (innerEvent.type === "toolcall_end" && innerEvent.toolCall) {
232
- const tc = innerEvent.toolCall as unknown as Record<string, unknown>;
233
- const ext = tc["externalResult"] as Record<string, unknown> | undefined;
234
- if (ext) {
235
- externalToolResult = {
236
- toolCallId: tc["id"] as string,
237
- content: (ext["content"] as Array<{ type: string; text?: string; data?: string; mimeType?: string }>) ?? [{ type: "text", text: "" }],
238
- details: (ext["details"] as Record<string, unknown>) ?? {},
239
- isError: (ext["isError"] as boolean) ?? false,
240
- };
241
- }
242
- } else if ("type" in innerEvent && (innerEvent as { type: string }).type === "server_tool_use") {
243
- const innerExt = innerEvent as unknown as Record<string, unknown>;
244
- const idx = typeof innerExt["contentIndex"] === "number" ? (innerExt["contentIndex"] as number) : -1;
245
- const block = idx >= 0 ? (host.streamingMessage.content[idx] as unknown as Record<string, unknown>) : undefined;
246
- const ext = block?.["externalResult"] as Record<string, unknown> | undefined;
247
- if (block?.["id"] && ext) {
248
- externalToolResult = {
249
- toolCallId: block["id"] as string,
250
- content: (ext["content"] as Array<{ type: string; text?: string; data?: string; mimeType?: string }>) ?? [{ type: "text", text: "" }],
251
- details: (ext["details"] as Record<string, unknown>) ?? {},
252
- isError: (ext["isError"] as boolean) ?? false,
253
- };
254
- }
255
- }
256
-
257
- const contentBlocks = host.streamingMessage.content;
258
- // Some adapters (notably claude-code) reuse a single assistant
259
- // lifecycle while internally spanning multiple provider sub-turns.
260
- // When a new sub-turn starts, content[] length shrinks back to 0/1.
261
- // The scan loop needs its index reset, AND the segment walker's
262
- // renderedSegments map must be cleared so existing text-run
263
- // components don't get overwritten in place with new sub-turn
264
- // content (#4144 regression). Prior sub-turn children stay in
265
- // chatContainer as frozen history; new segments append after them.
266
- if (contentBlocks.length < lastContentLength) {
267
- // Accumulate across successive shrinks — overwriting would drop
268
- // segments displaced by an earlier shrink, leaving them stranded
269
- // in chatContainer once the prune pass finally runs.
270
- orphanedSegments = [...orphanedSegments, ...renderedSegments];
271
- renderedSegments = [];
272
- lastPinnedText = "";
273
- lastProcessedContentIndex = 0;
274
- } else if (lastProcessedContentIndex >= contentBlocks.length) {
275
- lastProcessedContentIndex = 0;
276
- }
277
- lastContentLength = contentBlocks.length;
278
- for (let i = lastProcessedContentIndex; i < contentBlocks.length; i++) {
279
- const content = contentBlocks[i];
280
- if (content.type === "toolCall") {
281
- if (!host.pendingTools.has(content.id)) {
282
- const component = new ToolExecutionComponent(
283
- content.name,
284
- content.arguments,
285
- { showImages: host.settingsManager.getShowImages() },
286
- host.getRegisteredToolDefinition(content.name),
287
- host.ui,
288
- );
289
- component.setExpanded(host.toolOutputExpanded);
290
- host.chatContainer.addChild(component);
291
- host.pendingTools.set(content.id, component);
292
- } else {
293
- host.pendingTools.get(content.id)?.updateArgs(content.arguments);
294
- }
295
- } else if (content.type === "serverToolUse") {
296
- if (!host.pendingTools.has(content.id)) {
297
- const component = new ToolExecutionComponent(
298
- content.name,
299
- (content.input ?? {}) as Record<string, unknown>,
300
- { showImages: host.settingsManager.getShowImages() },
301
- undefined,
302
- host.ui,
303
- );
304
- component.setExpanded(host.toolOutputExpanded);
305
- host.chatContainer.addChild(component);
306
- host.pendingTools.set(content.id, component);
307
- }
308
- } else if (content.type === "webSearchResult") {
309
- const component = host.pendingTools.get(content.toolUseId);
310
- if (component) {
311
- if (process.env.PI_OFFLINE === "1") {
312
- component.updateResult({
313
- content: [{ type: "text", text: "Web search disabled (offline mode)" }],
314
- isError: false,
315
- });
316
- } else {
317
- const searchContent = content.content;
318
- const isError = searchContent && typeof searchContent === "object" && "type" in searchContent && (searchContent as { type: unknown }).type === "web_search_tool_result_error";
319
- component.updateResult({
320
- content: [{ type: "text", text: host.formatWebSearchResult(searchContent) }],
321
- isError: !!isError,
322
- });
323
- }
324
- }
325
- }
326
- }
327
-
328
- // When the stream adapter signals a completed tool call with an
329
- // external result (from Claude Code SDK), update the pending
330
- // ToolExecutionComponent immediately so output is visible in
331
- // real-time instead of waiting for the session to end.
332
- if (externalToolResult) {
333
- const component = host.pendingTools.get(externalToolResult.toolCallId);
334
- if (component) {
335
- component.updateResult({
336
- content: externalToolResult.content,
337
- details: externalToolResult.details,
338
- isError: externalToolResult.isError,
339
- });
340
- }
341
- }
342
-
343
- // Segment walker: render content blocks in stream order, append-only.
344
- // Build desired segment plan from content[].
345
- {
346
- // vendor-seam: dual-module-path -- AssistantMessage.content is typed as (TextContent | ThinkingContent | ToolCall)[]
347
- // but pi-coding-agent adapter appends serverToolUse/webSearchResult blocks at runtime.
348
- const blocks = host.streamingMessage.content as unknown as Array<Record<string, unknown>>;
349
- const isClaudeCodeProvider = host.streamingMessage.provider === "claude-code";
350
- const hasMcpToolBlock = blocks.some((b) => {
351
- if (b?.["type"] === "toolCall") {
352
- return typeof b?.["mcpServer"] === "string" || String(b?.["name"] ?? "").startsWith("mcp__");
353
- }
354
- if (b?.["type"] === "serverToolUse") {
355
- return typeof b?.["mcpServer"] === "string" || String(b?.["name"] ?? "").startsWith("mcp__");
356
- }
357
- return false;
358
- });
359
- const firstToolIdx = blocks.findIndex((b) => b["type"] === "toolCall" || b["type"] === "serverToolUse");
360
- const hasPostToolText = firstToolIdx >= 0
361
- && blocks.some(
362
- (b, idx) => (
363
- idx > firstToolIdx
364
- && b?.["type"] === "text"
365
- && typeof b?.["text"] === "string"
366
- && (b["text"] as string).trim().length > 0
367
- ),
368
- );
369
- // Only prune provisional pre-tool prose after post-tool prose exists,
370
- // so MCP tool-only windows do not blank the assistant content.
371
- const shouldDropPreToolProse = isClaudeCodeProvider && hasMcpToolBlock && hasPostToolText;
372
- type DesiredSegment =
373
- | { kind: "text-run"; startIndex: number; endIndex: number; contentType: "text" | "thinking" }
374
- | { kind: "tool"; contentIndex: number; toolId: string };
375
- const desired: DesiredSegment[] = [];
376
- let runStart = -1;
377
- let runEnd = -1;
378
- let runType: "text" | "thinking" | undefined;
379
- const closeRun = (): void => {
380
- if (runStart !== -1 && runType) {
381
- desired.push({ kind: "text-run", startIndex: runStart, endIndex: runEnd, contentType: runType });
382
- runStart = -1;
383
- runEnd = -1;
384
- runType = undefined;
385
- }
386
- };
387
- for (let i = 0; i < blocks.length; i++) {
388
- const b = blocks[i];
389
- const bType = b["type"];
390
- const blockType = bType === "text" || bType === "thinking" ? bType : undefined;
391
- const isTextLike = blockType === "text" || blockType === "thinking";
392
- const isTool = bType === "toolCall" || bType === "serverToolUse";
393
- // For Claude Code MCP turns, prune only pre-tool prose, never thinking.
394
- const textValue = blockType === "text" && typeof b?.["text"] === "string" ? (b["text"] as string) : "";
395
- const isLikelyQuestion = blockType === "text" && typeof textValue === "string" && /\?\s*$/.test(textValue.trim());
396
- const shouldSkipProse = shouldDropPreToolProse
397
- && firstToolIdx >= 0
398
- && i < firstToolIdx
399
- && blockType === "text"
400
- && !isLikelyQuestion;
401
- if (shouldSkipProse) {
402
- closeRun();
403
- continue;
404
- }
405
- if (isTextLike) {
406
- if (runStart === -1) {
407
- runStart = i;
408
- runEnd = i;
409
- runType = blockType;
410
- } else if (runType !== blockType) {
411
- closeRun();
412
- runStart = i;
413
- runEnd = i;
414
- runType = blockType;
415
- } else {
416
- runEnd = i;
417
- }
418
- } else {
419
- closeRun();
420
- if (isTool) {
421
- desired.push({ kind: "tool", contentIndex: i, toolId: b["id"] as string });
422
- }
423
- }
424
- }
425
- closeRun();
426
-
427
- // Claude Code MCP can emit provisional pre-tool prose that gets
428
- // superseded by post-tool output. Prune stale text-run segments so
429
- // the final assistant output remains below tool output.
430
- if (shouldDropPreToolProse && firstToolIdx >= 0) {
431
- if (orphanedSegments.length > 0) {
432
- const remainingOrphans: RenderedSegment[] = [];
433
- for (const orphan of orphanedSegments) {
434
- if (orphan.kind === "text-run" && orphan.contentType === "text") {
435
- host.chatContainer.removeChild(orphan.component);
436
- if (host.streamingComponent === orphan.component) {
437
- host.streamingComponent = undefined;
438
- }
439
- continue;
440
- }
441
- remainingOrphans.push(orphan);
442
- }
443
- orphanedSegments = remainingOrphans;
444
- }
445
- const desiredTextKeys = new Set(
446
- desired
447
- .filter((seg): seg is Extract<DesiredSegment, { kind: "text-run" }> => seg.kind === "text-run")
448
- .map((seg) => `${seg.contentType}:${seg.startIndex}`),
449
- );
450
- const desiredToolIndices = new Set(
451
- desired
452
- .filter((seg): seg is Extract<DesiredSegment, { kind: "tool" }> => seg.kind === "tool")
453
- .map((seg) => seg.contentIndex),
454
- );
455
- const nextRendered: RenderedSegment[] = [];
456
- for (const seg of renderedSegments) {
457
- if (
458
- seg.kind === "text-run"
459
- && seg.contentType === "text"
460
- && !desiredTextKeys.has(`${seg.contentType}:${seg.startIndex}`)
461
- ) {
462
- host.chatContainer.removeChild(seg.component);
463
- if (host.streamingComponent === seg.component) {
464
- host.streamingComponent = undefined;
465
- }
466
- continue;
467
- }
468
- if (seg.kind === "tool" && !desiredToolIndices.has(seg.contentIndex)) {
469
- continue;
470
- }
471
- nextRendered.push(seg);
472
- }
473
- renderedSegments = nextRendered;
474
- }
475
-
476
- // Append any newly needed segments (never reorder existing ones).
477
- for (const seg of desired) {
478
- if (seg.kind === "tool") {
479
- // Tool segments are already handled above via pendingTools; just
480
- // register them in renderedSegments if not yet tracked.
481
- const existing = renderedSegments.find(
482
- (s) => s.kind === "tool" && s.contentIndex === seg.contentIndex,
483
- );
484
- if (!existing) {
485
- const comp = host.pendingTools.get(seg.toolId);
486
- if (comp) {
487
- renderedSegments.push({ kind: "tool", contentIndex: seg.contentIndex, component: comp });
488
- }
489
- }
490
- } else {
491
- // text-run segment
492
- const existing = renderedSegments.find(
493
- (s) => s.kind === "text-run" && s.startIndex === seg.startIndex && s.contentType === seg.contentType,
494
- );
495
- if (!existing) {
496
- const comp = new AssistantMessageComponent(
497
- undefined,
498
- host.hideThinkingBlock,
499
- host.getMarkdownThemeWithSettings(),
500
- timestampFormat,
501
- { startIndex: seg.startIndex, endIndex: seg.endIndex },
502
- );
503
- host.chatContainer.addChild(comp);
504
- renderedSegments.push({
505
- kind: "text-run",
506
- startIndex: seg.startIndex,
507
- endIndex: seg.endIndex,
508
- contentType: seg.contentType,
509
- component: comp,
510
- });
511
- host.streamingComponent = comp;
512
- }
513
- }
514
- }
515
-
516
- // Update all trailing text-run segments with the latest message so
517
- // streaming text grows in place.
518
- for (const seg of renderedSegments) {
519
- if (seg.kind === "text-run") {
520
- // Find corresponding desired segment to get current endIndex
521
- const d = desired.find(
522
- (ds) => ds.kind === "text-run" && ds.startIndex === seg.startIndex && ds.contentType === seg.contentType,
523
- );
524
- if (d && d.kind === "text-run" && d.endIndex !== seg.endIndex) {
525
- seg.endIndex = d.endIndex;
526
- seg.component.setRange({ startIndex: seg.startIndex, endIndex: seg.endIndex });
527
- }
528
- seg.component.updateContent(host.streamingMessage);
529
- }
530
- }
531
-
532
- // Keep streamingComponent pointing at the last text-run for message_end compatibility.
533
- const lastTextSeg = [...renderedSegments].reverse().find((s) => s.kind === "text-run");
534
- if (lastTextSeg && lastTextSeg.kind === "text-run") {
535
- host.streamingComponent = lastTextSeg.component;
536
- }
537
- }
538
-
539
- // Update index: fully processed blocks won't need re-scanning.
540
- // Keep the last block's index (it may still be accumulating data),
541
- // so we re-check it next time but skip all earlier ones.
542
- if (contentBlocks.length > 0) {
543
- lastProcessedContentIndex = Math.max(0, contentBlocks.length - 1);
544
- }
545
-
546
- // Pinned message: mirror the latest assistant text above the editor
547
- // when tool executions push it out of the viewport.
548
- const hasTools = (contentBlocks as unknown as Array<Record<string, unknown>>).some(
549
- (c) => c["type"] === "toolCall" || c["type"] === "serverToolUse",
550
- );
551
- if (hasTools) hasToolsInTurn = true;
552
-
553
- if (hasToolsInTurn) {
554
- const latestText = findLatestPinnableText(contentBlocks);
555
-
556
- if (latestText && latestText !== lastPinnedText) {
557
- lastPinnedText = latestText;
558
-
559
- if (!pinnedBorder) {
560
- // First time: create border + text component
561
- host.pinnedMessageContainer.clear();
562
- pinnedBorder = new DynamicBorder(
563
- (str: string) => theme.fg("dim", str),
564
- "Working · Latest Output",
565
- );
566
- pinnedBorder.startSpinner(host.ui, (str: string) => theme.fg("accent", str));
567
- host.pinnedMessageContainer.addChild(pinnedBorder);
568
- pinnedTextComponent = new Markdown(latestText, 1, 0, host.getMarkdownThemeWithSettings());
569
- // Cap pinned content to ~40% of terminal height so tall output
570
- // doesn't exceed the viewport and cause render flashing.
571
- (pinnedTextComponent as unknown as GSDMarkdownExtension).maxLines = Math.max(3, Math.floor(host.ui.terminal.rows * 0.4));
572
- host.pinnedMessageContainer.addChild(pinnedTextComponent);
573
- // Hide the separate status loader — the pinned zone replaces it
574
- if (host.loadingAnimation) {
575
- host.loadingAnimation.stop();
576
- host.loadingAnimation = undefined;
577
- }
578
- host.statusContainer.clear();
579
- } else {
580
- // Update existing markdown component in-place
581
- pinnedTextComponent?.setText(latestText);
582
- // Refresh maxLines in case terminal was resized
583
- if (pinnedTextComponent) {
584
- (pinnedTextComponent as unknown as GSDMarkdownExtension).maxLines = Math.max(3, Math.floor(host.ui.terminal.rows * 0.4));
585
- }
586
- }
587
- }
588
- }
589
-
590
- host.ui.requestRender();
591
- }
592
- break;
593
-
594
- case "message_end":
595
- if (event.message.role === "user") break;
596
- if (event.message.role === "assistant") {
597
- host.streamingMessage = event.message;
598
- let errorMessage: string | undefined;
599
- if (host.streamingMessage.stopReason === "aborted") {
600
- const retryAttempt = host.session.retryAttempt;
601
- errorMessage = retryAttempt > 0
602
- ? `Aborted after ${retryAttempt} retry attempt${retryAttempt > 1 ? "s" : ""}`
603
- : "Operation aborted";
604
- host.streamingMessage.errorMessage = errorMessage;
605
- }
606
-
607
- const shouldRenderAssistant = hasVisibleAssistantContent(host.streamingMessage)
608
- || (
609
- (host.streamingMessage.stopReason === "aborted" || host.streamingMessage.stopReason === "error")
610
- && !hasAssistantToolBlocks(host.streamingMessage)
611
- );
612
-
613
- // The final message_end payload can contain additional text/thinking
614
- // blocks that never arrived via message_update (e.g. SDK result
615
- // aggregation). Rebuild this in-flight turn from final content so
616
- // ranges/components don't keep stale partial indices.
617
- if (renderedSegments.length > 0) {
618
- // vendor-seam: dual-module-path -- finalBlocks is AssistantMessage["content"] typed as
619
- // (TextContent | ThinkingContent | ToolCall)[] but runtime includes serverToolUse blocks.
620
- const finalBlocks = host.streamingMessage.content as unknown as Array<Record<string, unknown>>;
621
- type DesiredSegment =
622
- | { kind: "text-run"; startIndex: number; endIndex: number; contentType: "text" | "thinking" }
623
- | { kind: "tool"; contentIndex: number; toolId: string };
624
- const desired: DesiredSegment[] = [];
625
- let runStart = -1;
626
- let runEnd = -1;
627
- let runType: "text" | "thinking" | undefined;
628
- const closeRun = (): void => {
629
- if (runStart !== -1 && runType) {
630
- desired.push({ kind: "text-run", startIndex: runStart, endIndex: runEnd, contentType: runType });
631
- runStart = -1;
632
- runEnd = -1;
633
- runType = undefined;
634
- }
635
- };
636
-
637
- for (let i = 0; i < finalBlocks.length; i++) {
638
- const block = finalBlocks[i];
639
- const bType = block?.["type"];
640
- const blockType = bType === "text" || bType === "thinking" ? bType : undefined;
641
- const isTextLike = blockType === "text" || blockType === "thinking";
642
- const isTool = bType === "toolCall" || bType === "serverToolUse";
643
-
644
- if (isTextLike) {
645
- if (runStart === -1) {
646
- runStart = i;
647
- runEnd = i;
648
- runType = blockType;
649
- } else if (runType !== blockType) {
650
- closeRun();
651
- runStart = i;
652
- runEnd = i;
653
- runType = blockType;
654
- } else {
655
- runEnd = i;
656
- }
657
- } else {
658
- closeRun();
659
- if (isTool) {
660
- desired.push({ kind: "tool", contentIndex: i, toolId: block["id"] as string });
661
- }
662
- }
663
- }
664
- closeRun();
665
-
666
- const toolComponentsById = new Map<string, ToolExecutionComponent>();
667
- for (const [toolId, component] of host.pendingTools.entries()) {
668
- toolComponentsById.set(toolId, component);
669
- }
670
-
671
- for (const seg of renderedSegments) {
672
- host.chatContainer.removeChild(seg.component);
673
- if (seg.kind === "tool") {
674
- const priorBlock = finalBlocks[seg.contentIndex];
675
- if (priorBlock?.["id"] && !toolComponentsById.has(priorBlock["id"] as string)) {
676
- toolComponentsById.set(priorBlock["id"] as string, seg.component);
677
- }
678
- }
679
- }
680
- renderedSegments = [];
681
- host.streamingComponent = undefined;
682
-
683
- for (const seg of desired) {
684
- if (seg.kind === "tool") {
685
- const finalBlock = finalBlocks[seg.contentIndex];
686
- let component = toolComponentsById.get(seg.toolId);
687
- if (!component && finalBlock?.["id"]) {
688
- component = host.pendingTools.get(finalBlock["id"] as string);
689
- }
690
- if (!component && finalBlock?.["type"] === "toolCall") {
691
- component = new ToolExecutionComponent(
692
- finalBlock["name"] as string,
693
- (finalBlock["arguments"] as Record<string, unknown>) ?? {},
694
- { showImages: host.settingsManager.getShowImages() },
695
- host.getRegisteredToolDefinition(finalBlock["name"] as string),
696
- host.ui,
697
- );
698
- component.setExpanded(host.toolOutputExpanded);
699
- host.pendingTools.set(finalBlock["id"] as string, component);
700
- toolComponentsById.set(finalBlock["id"] as string, component);
701
- } else if (!component && finalBlock?.["type"] === "serverToolUse") {
702
- component = new ToolExecutionComponent(
703
- finalBlock["name"] as string,
704
- (finalBlock["input"] as Record<string, unknown>) ?? {},
705
- { showImages: host.settingsManager.getShowImages() },
706
- undefined,
707
- host.ui,
708
- );
709
- component.setExpanded(host.toolOutputExpanded);
710
- host.pendingTools.set(finalBlock["id"] as string, component);
711
- toolComponentsById.set(finalBlock["id"] as string, component);
712
- }
713
- if (component) {
714
- host.chatContainer.addChild(component);
715
- renderedSegments.push({ kind: "tool", contentIndex: seg.contentIndex, component });
716
- }
717
- continue;
718
- }
719
-
720
- const comp = new AssistantMessageComponent(
721
- undefined,
722
- host.hideThinkingBlock,
723
- host.getMarkdownThemeWithSettings(),
724
- timestampFormat,
725
- { startIndex: seg.startIndex, endIndex: seg.endIndex },
726
- );
727
- comp.updateContent(host.streamingMessage);
728
- host.chatContainer.addChild(comp);
729
- renderedSegments.push({
730
- kind: "text-run",
731
- startIndex: seg.startIndex,
732
- endIndex: seg.endIndex,
733
- contentType: seg.contentType,
734
- component: comp,
735
- });
736
- host.streamingComponent = comp;
737
- }
738
- }
739
-
740
- if (!host.streamingComponent && shouldRenderAssistant) {
741
- host.streamingComponent = new AssistantMessageComponent(
742
- undefined,
743
- host.hideThinkingBlock,
744
- host.getMarkdownThemeWithSettings(),
745
- timestampFormat,
746
- );
747
- host.chatContainer.addChild(host.streamingComponent);
748
- }
749
- if (host.streamingComponent) {
750
- host.streamingComponent.setShowMetadata(true);
751
- host.streamingComponent.updateContent(host.streamingMessage);
752
- }
753
-
754
- if (host.streamingMessage.stopReason === "aborted" || host.streamingMessage.stopReason === "error") {
755
- if (!errorMessage) {
756
- errorMessage = host.streamingMessage.errorMessage || "Error";
757
- }
758
- const pendingComponents = Array.from(host.pendingTools.values());
759
- if (pendingComponents.length > 0) {
760
- const [first, ...rest] = pendingComponents;
761
- first.completeWithError(errorMessage);
762
- for (const component of rest) {
763
- component.completeWithError();
764
- }
765
- }
766
- host.pendingTools.clear();
767
- } else {
768
- for (const [, component] of host.pendingTools.entries()) {
769
- component.setArgsComplete();
770
- }
771
- }
772
- host.streamingComponent = undefined;
773
- host.streamingMessage = undefined;
774
- renderedSegments = [];
775
- orphanedSegments = [];
776
- lastContentLength = 0;
777
- // Clear pinned output once the message is finalized in the chat
778
- // container — prevents duplicate display when the agent continues
779
- // (e.g. form elicitation) after the assistant message ends.
780
- if (pinnedBorder) pinnedBorder.stopSpinner();
781
- host.pinnedMessageContainer.clear();
782
- lastPinnedText = "";
783
- hasToolsInTurn = false;
784
- pinnedBorder = undefined;
785
- pinnedTextComponent = undefined;
786
- host.footer.invalidate();
787
- }
788
- host.ui.requestRender();
789
- break;
790
-
791
- case "tool_execution_start":
792
- if (!host.pendingTools.has(event.toolCallId)) {
793
- const component = new ToolExecutionComponent(
794
- event.toolName,
795
- event.args,
796
- { showImages: host.settingsManager.getShowImages() },
797
- host.getRegisteredToolDefinition(event.toolName),
798
- host.ui,
799
- );
800
- component.setExpanded(host.toolOutputExpanded);
801
- host.chatContainer.addChild(component);
802
- host.pendingTools.set(event.toolCallId, component);
803
- host.ui.requestRender();
804
- }
805
- break;
806
-
807
- case "tool_execution_update": {
808
- const component = host.pendingTools.get(event.toolCallId);
809
- if (component) {
810
- component.updateResult({ ...event.partialResult, isError: false }, true);
811
- host.ui.requestRender();
812
- }
813
- break;
814
- }
815
-
816
- case "tool_execution_end": {
817
- const component = host.pendingTools.get(event.toolCallId);
818
- if (component) {
819
- component.updateResult({ ...event.result, isError: event.isError });
820
- host.pendingTools.delete(event.toolCallId);
821
- host.ui.requestRender();
822
- }
823
- break;
824
- }
825
-
826
- case "agent_end":
827
- if (host.loadingAnimation) {
828
- host.loadingAnimation.stop();
829
- host.loadingAnimation = undefined;
830
- host.statusContainer.clear();
831
- }
832
- if (host.streamingComponent && host.streamingMessage) {
833
- host.streamingComponent.setShowMetadata(true);
834
- host.streamingComponent.updateContent(host.streamingMessage);
835
- }
836
- host.streamingComponent = undefined;
837
- host.streamingMessage = undefined;
838
- renderedSegments = [];
839
- orphanedSegments = [];
840
- lastContentLength = 0;
841
- host.pendingTools.clear();
842
- // Pinned output is only useful while work is actively streaming.
843
- // Keep chat history as the single source after completion.
844
- if (pinnedBorder) {
845
- pinnedBorder.stopSpinner();
846
- }
847
- host.pinnedMessageContainer.clear();
848
- lastPinnedText = "";
849
- hasToolsInTurn = false;
850
- pinnedBorder = undefined;
851
- pinnedTextComponent = undefined;
852
- await host.checkShutdownRequested();
853
- host.ui.requestRender();
854
- break;
855
-
856
- case "auto_compaction_start":
857
- host.autoCompactionEscapeHandler = host.defaultEditor.onEscape;
858
- host.defaultEditor.onEscape = () => host.session.abortCompaction();
859
- host.statusContainer.clear();
860
- host.autoCompactionLoader = new Loader(
861
- host.ui,
862
- (spinner) => theme.fg("accent", spinner),
863
- (text) => theme.fg("muted", text),
864
- `${event.reason === "overflow" ? "Context overflow detected, " : ""}Auto-compacting... (${appKey(host.keybindings, "interrupt")} to cancel)`,
865
- );
866
- host.statusContainer.addChild(host.autoCompactionLoader);
867
- host.ui.requestRender();
868
- break;
869
-
870
- case "auto_compaction_end":
871
- if (host.autoCompactionEscapeHandler) {
872
- host.defaultEditor.onEscape = host.autoCompactionEscapeHandler;
873
- host.autoCompactionEscapeHandler = undefined;
874
- }
875
- if (host.autoCompactionLoader) {
876
- host.autoCompactionLoader.stop();
877
- host.autoCompactionLoader = undefined;
878
- host.statusContainer.clear();
879
- }
880
- if (event.aborted) {
881
- host.showStatus("Auto-compaction cancelled");
882
- } else if (event.result) {
883
- host.chatContainer.clear();
884
- host.rebuildChatFromMessages();
885
- host.addMessageToChat({
886
- role: "compactionSummary",
887
- tokensBefore: event.result.tokensBefore,
888
- summary: event.result.summary,
889
- timestamp: Date.now(),
890
- });
891
- host.footer.invalidate();
892
- } else if (event.errorMessage) {
893
- host.chatContainer.addChild(new Spacer(1));
894
- host.chatContainer.addChild(new Text(theme.fg("error", event.errorMessage), 1, 0));
895
- }
896
- void host.flushCompactionQueue({ willRetry: event.willRetry });
897
- host.ui.requestRender();
898
- break;
899
-
900
- case "auto_retry_start":
901
- host.retryEscapeHandler = host.defaultEditor.onEscape;
902
- host.defaultEditor.onEscape = () => host.session.abortRetry();
903
- host.statusContainer.clear();
904
- host.retryLoader = new Loader(
905
- host.ui,
906
- (spinner) => theme.fg("warning", spinner),
907
- (text) => theme.fg("muted", text),
908
- `Retrying (${event.attempt}/${event.maxAttempts}) in ${Math.round(event.delayMs / 1000)}s... (${appKey(host.keybindings, "interrupt")} to cancel)`,
909
- );
910
- host.statusContainer.addChild(host.retryLoader);
911
- host.ui.requestRender();
912
- break;
913
-
914
- case "auto_retry_end":
915
- if (host.retryEscapeHandler) {
916
- host.defaultEditor.onEscape = host.retryEscapeHandler;
917
- host.retryEscapeHandler = undefined;
918
- }
919
- if (host.retryLoader) {
920
- host.retryLoader.stop();
921
- host.retryLoader = undefined;
922
- host.statusContainer.clear();
923
- }
924
- if (!event.success) {
925
- host.showError(`Retry failed after ${event.attempt} attempts: ${event.finalError || "Unknown error"}`);
926
- }
927
- host.ui.requestRender();
928
- break;
929
-
930
- case "fallback_provider_switch":
931
- host.showStatus(`Switched from ${event.from} → ${event.to} (${event.reason})`);
932
- host.ui.requestRender();
933
- break;
934
-
935
- case "fallback_provider_restored":
936
- host.showStatus(`Restored to ${event.provider}`);
937
- host.ui.requestRender();
938
- break;
939
-
940
- case "fallback_chain_exhausted":
941
- host.showError(event.reason);
942
- host.ui.requestRender();
943
- break;
944
-
945
- case "image_overflow_recovery":
946
- host.showStatus(
947
- `Removed ${event.strippedCount} older image(s) to comply with API limits. Retrying...`,
948
- );
949
- host.ui.requestRender();
950
- break;
951
-
952
- case "turn_start":
953
- case "turn_end":
954
- // No UI action needed for turn lifecycle events
955
- break;
956
- }
957
- }