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,971 +0,0 @@
1
- /**
2
- * RPC Protocol v2 test suite.
3
- *
4
- * Tests v1 backward compatibility, v2 init handshake, protocol locking,
5
- * v2 feature type shapes, and RpcClient command serialization against
6
- * mock child processes using PassThrough streams.
7
- */
8
-
9
- import { describe, it, beforeEach, afterEach, mock } from "node:test";
10
- import assert from "node:assert/strict";
11
- import { PassThrough } from "node:stream";
12
- import { attachJsonlLineReader, serializeJsonLine } from "@gsd/pi-coding-agent";
13
- import type {
14
- RpcCommand,
15
- RpcResponse,
16
- RpcInitResult,
17
- RpcExecutionCompleteEvent,
18
- RpcCostUpdateEvent,
19
- RpcV2Event,
20
- RpcProtocolVersion,
21
- RpcSessionState,
22
- } from "./rpc-types.js";
23
-
24
- // ============================================================================
25
- // Helpers
26
- // ============================================================================
27
-
28
- /** Collect JSONL output lines from a stream */
29
- function collectLines(stream: PassThrough): { lines: unknown[]; detach: () => void } {
30
- const lines: unknown[] = [];
31
- const detach = attachJsonlLineReader(stream, (line) => {
32
- try {
33
- lines.push(JSON.parse(line));
34
- } catch {
35
- // skip non-JSON lines
36
- }
37
- });
38
- return { lines, detach };
39
- }
40
-
41
- /** Write a command as JSONL to a writable stream and wait for drain */
42
- function writeLine(stream: PassThrough, obj: unknown): void {
43
- stream.write(serializeJsonLine(obj));
44
- }
45
-
46
- /**
47
- * Create a mock "child process" with piped stdin/stdout.
48
- * clientStdin → data flows into the "server" (from the client's perspective, this is what the client writes to)
49
- * clientStdout ← data flows out of the "server" (from the client's perspective, this is what the client reads from)
50
- *
51
- * The test acts as the "server": read from clientStdin, write to clientStdout.
52
- */
53
- function createMockProcess() {
54
- // Client writes to this → server reads from it
55
- const clientStdin = new PassThrough();
56
- // Server writes to this → client reads from it
57
- const clientStdout = new PassThrough();
58
-
59
- return { clientStdin, clientStdout };
60
- }
61
-
62
- /** Wait a tick for async handlers to process */
63
- function tick(ms = 10): Promise<void> {
64
- return new Promise((resolve) => setTimeout(resolve, ms));
65
- }
66
-
67
- // ============================================================================
68
- // JSONL utilities
69
- // ============================================================================
70
-
71
- describe("JSONL utilities", () => {
72
- it("serializeJsonLine produces newline-terminated JSON", () => {
73
- const result = serializeJsonLine({ type: "test", value: 42 });
74
- assert.equal(result, '{"type":"test","value":42}\n');
75
- });
76
-
77
- it("serializeJsonLine handles nested objects", () => {
78
- const result = serializeJsonLine({ a: { b: [1, 2, 3] } });
79
- assert.ok(result.endsWith("\n"));
80
- const parsed = JSON.parse(result.trim());
81
- assert.deepEqual(parsed, { a: { b: [1, 2, 3] } });
82
- });
83
-
84
- it("attachJsonlLineReader splits on LF only", async () => {
85
- const stream = new PassThrough();
86
- const { lines, detach } = collectLines(stream);
87
-
88
- stream.write('{"a":1}\n{"b":2}\n');
89
- await tick();
90
-
91
- assert.equal(lines.length, 2);
92
- assert.deepEqual(lines[0], { a: 1 });
93
- assert.deepEqual(lines[1], { b: 2 });
94
- detach();
95
- });
96
-
97
- it("attachJsonlLineReader handles partial writes", async () => {
98
- const stream = new PassThrough();
99
- const { lines, detach } = collectLines(stream);
100
-
101
- stream.write('{"partial":');
102
- await tick();
103
- assert.equal(lines.length, 0);
104
-
105
- stream.write('"value"}\n');
106
- await tick();
107
- assert.equal(lines.length, 1);
108
- assert.deepEqual(lines[0], { partial: "value" });
109
- detach();
110
- });
111
-
112
- it("attachJsonlLineReader handles CR+LF", async () => {
113
- const stream = new PassThrough();
114
- const { lines, detach } = collectLines(stream);
115
-
116
- stream.write('{"cr":"lf"}\r\n');
117
- await tick();
118
- assert.equal(lines.length, 1);
119
- assert.deepEqual(lines[0], { cr: "lf" });
120
- detach();
121
- });
122
-
123
- it("detach stops line delivery", async () => {
124
- const stream = new PassThrough();
125
- const { lines, detach } = collectLines(stream);
126
-
127
- stream.write('{"before":1}\n');
128
- await tick();
129
- assert.equal(lines.length, 1);
130
-
131
- detach();
132
-
133
- stream.write('{"after":2}\n');
134
- await tick();
135
- // Should still be 1 since we detached
136
- assert.equal(lines.length, 1);
137
- });
138
- });
139
-
140
- // ============================================================================
141
- // v2 type shape assertions
142
- // ============================================================================
143
-
144
- describe("v2 type shapes", () => {
145
- it("RpcInitResult has required fields", () => {
146
- const initResult: RpcInitResult = {
147
- protocolVersion: 2,
148
- sessionId: "test-session-123",
149
- capabilities: {
150
- events: ["execution_complete", "cost_update"],
151
- commands: ["init", "shutdown", "subscribe"],
152
- },
153
- };
154
- assert.equal(initResult.protocolVersion, 2);
155
- assert.ok(typeof initResult.sessionId === "string");
156
- assert.ok(Array.isArray(initResult.capabilities.events));
157
- assert.ok(Array.isArray(initResult.capabilities.commands));
158
- assert.ok(initResult.capabilities.events.includes("execution_complete"));
159
- assert.ok(initResult.capabilities.events.includes("cost_update"));
160
- assert.ok(initResult.capabilities.commands.includes("init"));
161
- assert.ok(initResult.capabilities.commands.includes("shutdown"));
162
- assert.ok(initResult.capabilities.commands.includes("subscribe"));
163
- });
164
-
165
- it("RpcExecutionCompleteEvent matches expected shape", () => {
166
- const event: RpcExecutionCompleteEvent = {
167
- type: "execution_complete",
168
- runId: "run-abc-123",
169
- status: "completed",
170
- stats: {
171
- cost: 0.05,
172
- turns: 3,
173
- duration: 12000,
174
- tokens: { input: 1000, output: 500, cacheRead: 200, cacheWrite: 100 },
175
- } as any, // SessionStats is complex, we just verify shape
176
- };
177
- assert.equal(event.type, "execution_complete");
178
- assert.ok(typeof event.runId === "string");
179
- assert.ok(["completed", "error", "cancelled"].includes(event.status));
180
- assert.ok(event.stats !== undefined);
181
- });
182
-
183
- it("RpcExecutionCompleteEvent supports error status with reason", () => {
184
- const event: RpcExecutionCompleteEvent = {
185
- type: "execution_complete",
186
- runId: "run-err-456",
187
- status: "error",
188
- reason: "API rate limit exceeded",
189
- stats: {} as any,
190
- };
191
- assert.equal(event.status, "error");
192
- assert.equal(event.reason, "API rate limit exceeded");
193
- });
194
-
195
- it("RpcCostUpdateEvent matches expected shape", () => {
196
- const event: RpcCostUpdateEvent = {
197
- type: "cost_update",
198
- runId: "run-cost-789",
199
- turnCost: 0.01,
200
- cumulativeCost: 0.05,
201
- tokens: {
202
- input: 500,
203
- output: 200,
204
- cacheRead: 100,
205
- cacheWrite: 50,
206
- },
207
- };
208
- assert.equal(event.type, "cost_update");
209
- assert.ok(typeof event.runId === "string");
210
- assert.ok(typeof event.turnCost === "number");
211
- assert.ok(typeof event.cumulativeCost === "number");
212
- assert.ok(typeof event.tokens.input === "number");
213
- assert.ok(typeof event.tokens.output === "number");
214
- assert.ok(typeof event.tokens.cacheRead === "number");
215
- assert.ok(typeof event.tokens.cacheWrite === "number");
216
- });
217
-
218
- it("RpcV2Event discriminated union resolves by type field", () => {
219
- const events: RpcV2Event[] = [
220
- {
221
- type: "execution_complete",
222
- runId: "r1",
223
- status: "completed",
224
- stats: {} as any,
225
- },
226
- {
227
- type: "cost_update",
228
- runId: "r2",
229
- turnCost: 0.01,
230
- cumulativeCost: 0.03,
231
- tokens: { input: 100, output: 50, cacheRead: 10, cacheWrite: 5 },
232
- },
233
- ];
234
-
235
- for (const event of events) {
236
- if (event.type === "execution_complete") {
237
- // TypeScript narrows to RpcExecutionCompleteEvent
238
- assert.ok("status" in event);
239
- assert.ok("stats" in event);
240
- } else if (event.type === "cost_update") {
241
- // TypeScript narrows to RpcCostUpdateEvent
242
- assert.ok("turnCost" in event);
243
- assert.ok("tokens" in event);
244
- } else {
245
- assert.fail(`Unexpected event type: ${(event as any).type}`);
246
- }
247
- }
248
- });
249
-
250
- it("RpcProtocolVersion is 1 or 2", () => {
251
- const v1: RpcProtocolVersion = 1;
252
- const v2: RpcProtocolVersion = 2;
253
- assert.equal(v1, 1);
254
- assert.equal(v2, 2);
255
- });
256
-
257
- it("v2 prompt response includes optional runId field", () => {
258
- const v1Response: RpcResponse = {
259
- id: "1",
260
- type: "response",
261
- command: "prompt",
262
- success: true,
263
- };
264
- assert.equal(v1Response.success, true);
265
- assert.equal((v1Response as any).runId, undefined);
266
-
267
- const v2Response: RpcResponse = {
268
- id: "2",
269
- type: "response",
270
- command: "prompt",
271
- success: true,
272
- runId: "run-123",
273
- };
274
- assert.equal(v2Response.success, true);
275
- assert.equal((v2Response as any).runId, "run-123");
276
- });
277
-
278
- it("v2 command types are present in RpcCommand union", () => {
279
- // These compile — that's the actual test. Runtime verification:
280
- const initCmd: RpcCommand = { type: "init", protocolVersion: 2 };
281
- const shutdownCmd: RpcCommand = { type: "shutdown" };
282
- const subscribeCmd: RpcCommand = { type: "subscribe", events: ["agent_end"] };
283
-
284
- assert.equal(initCmd.type, "init");
285
- assert.equal(shutdownCmd.type, "shutdown");
286
- assert.equal(subscribeCmd.type, "subscribe");
287
- });
288
-
289
- it("init command supports optional clientId", () => {
290
- const cmd: RpcCommand = { type: "init", protocolVersion: 2, clientId: "my-client" };
291
- assert.equal(cmd.type, "init");
292
- if (cmd.type === "init") {
293
- assert.equal(cmd.clientId, "my-client");
294
- }
295
- });
296
-
297
- it("shutdown command supports optional graceful flag", () => {
298
- const cmd: RpcCommand = { type: "shutdown", graceful: true };
299
- if (cmd.type === "shutdown") {
300
- assert.equal(cmd.graceful, true);
301
- }
302
- });
303
-
304
- it("v2 response types include init, shutdown, subscribe", () => {
305
- const initResp: RpcResponse = {
306
- type: "response",
307
- command: "init",
308
- success: true,
309
- data: {
310
- protocolVersion: 2,
311
- sessionId: "s1",
312
- capabilities: { events: [], commands: [] },
313
- },
314
- };
315
- const shutdownResp: RpcResponse = {
316
- type: "response",
317
- command: "shutdown",
318
- success: true,
319
- };
320
- const subscribeResp: RpcResponse = {
321
- type: "response",
322
- command: "subscribe",
323
- success: true,
324
- };
325
-
326
- assert.equal(initResp.command, "init");
327
- assert.equal(shutdownResp.command, "shutdown");
328
- assert.equal(subscribeResp.command, "subscribe");
329
- });
330
- });
331
-
332
- // ============================================================================
333
- // v1 backward compatibility
334
- // ============================================================================
335
-
336
- describe("v1 backward compatibility — command shapes", () => {
337
- it("v1 prompt command has no protocolVersion or runId", () => {
338
- const cmd: RpcCommand = { type: "prompt", message: "hello" };
339
- assert.equal(cmd.type, "prompt");
340
- assert.equal((cmd as any).protocolVersion, undefined);
341
- assert.equal((cmd as any).runId, undefined);
342
- });
343
-
344
- it("v1 get_state response has no v2 fields", () => {
345
- const state: RpcSessionState = {
346
- thinkingLevel: "medium",
347
- isStreaming: false,
348
- isCompacting: false,
349
- steeringMode: "all",
350
- followUpMode: "all",
351
- sessionId: "test-id",
352
- autoCompactionEnabled: true,
353
- autoRetryEnabled: false,
354
- retryInProgress: false,
355
- retryAttempt: 0,
356
- messageCount: 0,
357
- pendingMessageCount: 0,
358
- extensionsReady: true,
359
- };
360
- // v1 state should not include any v2-specific fields
361
- assert.equal((state as any).protocolVersion, undefined);
362
- assert.equal((state as any).runId, undefined);
363
- });
364
-
365
- it("v1 prompt response has no runId", () => {
366
- const resp: RpcResponse = {
367
- id: "1",
368
- type: "response",
369
- command: "prompt",
370
- success: true,
371
- };
372
- assert.equal(resp.success, true);
373
- // runId is optional; in v1 mode it won't be present
374
- assert.equal((resp as any).runId, undefined);
375
- });
376
-
377
- it("error response shape is consistent across v1 and v2", () => {
378
- const errResp: RpcResponse = {
379
- id: "err-1",
380
- type: "response",
381
- command: "init",
382
- success: false,
383
- error: "Protocol version already locked. init must be the first command.",
384
- };
385
- assert.equal(errResp.success, false);
386
- if (!errResp.success) {
387
- assert.ok(typeof errResp.error === "string");
388
- assert.ok(errResp.error.length > 0);
389
- }
390
- });
391
- });
392
-
393
- // ============================================================================
394
- // RpcClient command serialization tests (mock process)
395
- // ============================================================================
396
-
397
- describe("RpcClient command serialization", () => {
398
- // We import the class dynamically to avoid the full module graph at test time.
399
- // Instead we test the protocol framing directly — what gets written to stdin and
400
- // what comes back from stdout — using PassThrough streams.
401
-
402
- it("init command serializes correctly", () => {
403
- const cmd = { id: "req_1", type: "init", protocolVersion: 2 };
404
- const serialized = serializeJsonLine(cmd);
405
- const parsed = JSON.parse(serialized);
406
- assert.equal(parsed.type, "init");
407
- assert.equal(parsed.protocolVersion, 2);
408
- assert.equal(parsed.id, "req_1");
409
- });
410
-
411
- it("init command with clientId serializes correctly", () => {
412
- const cmd = { id: "req_1", type: "init", protocolVersion: 2, clientId: "test-client" };
413
- const serialized = serializeJsonLine(cmd);
414
- const parsed = JSON.parse(serialized);
415
- assert.equal(parsed.clientId, "test-client");
416
- });
417
-
418
- it("shutdown command serializes correctly", () => {
419
- const cmd = { id: "req_2", type: "shutdown" };
420
- const serialized = serializeJsonLine(cmd);
421
- const parsed = JSON.parse(serialized);
422
- assert.equal(parsed.type, "shutdown");
423
- assert.equal(parsed.id, "req_2");
424
- });
425
-
426
- it("subscribe command serializes correctly with event list", () => {
427
- const cmd = { id: "req_3", type: "subscribe", events: ["agent_end", "cost_update"] };
428
- const serialized = serializeJsonLine(cmd);
429
- const parsed = JSON.parse(serialized);
430
- assert.equal(parsed.type, "subscribe");
431
- assert.deepEqual(parsed.events, ["agent_end", "cost_update"]);
432
- });
433
-
434
- it("subscribe command with wildcard serializes correctly", () => {
435
- const cmd = { id: "req_4", type: "subscribe", events: ["*"] };
436
- const serialized = serializeJsonLine(cmd);
437
- const parsed = JSON.parse(serialized);
438
- assert.deepEqual(parsed.events, ["*"]);
439
- });
440
-
441
- it("subscribe command with empty array serializes correctly", () => {
442
- const cmd = { id: "req_5", type: "subscribe", events: [] as string[] };
443
- const serialized = serializeJsonLine(cmd);
444
- const parsed = JSON.parse(serialized);
445
- assert.deepEqual(parsed.events, []);
446
- });
447
-
448
- it("sendUIResponse serializes correct JSONL", () => {
449
- const response = {
450
- type: "extension_ui_response",
451
- id: "ui-req-123",
452
- value: "test-value",
453
- };
454
- const serialized = serializeJsonLine(response);
455
- const parsed = JSON.parse(serialized);
456
- assert.equal(parsed.type, "extension_ui_response");
457
- assert.equal(parsed.id, "ui-req-123");
458
- assert.equal(parsed.value, "test-value");
459
- });
460
-
461
- it("sendUIResponse with cancelled flag serializes correctly", () => {
462
- const response = {
463
- type: "extension_ui_response",
464
- id: "ui-req-456",
465
- cancelled: true,
466
- };
467
- const serialized = serializeJsonLine(response);
468
- const parsed = JSON.parse(serialized);
469
- assert.equal(parsed.type, "extension_ui_response");
470
- assert.equal(parsed.cancelled, true);
471
- });
472
-
473
- it("sendUIResponse with confirmed flag serializes correctly", () => {
474
- const response = {
475
- type: "extension_ui_response",
476
- id: "ui-req-789",
477
- confirmed: true,
478
- };
479
- const serialized = serializeJsonLine(response);
480
- const parsed = JSON.parse(serialized);
481
- assert.equal(parsed.confirmed, true);
482
- });
483
-
484
- it("sendUIResponse with multiple values serializes correctly", () => {
485
- const response = {
486
- type: "extension_ui_response",
487
- id: "ui-req-multi",
488
- values: ["opt-a", "opt-b"],
489
- };
490
- const serialized = serializeJsonLine(response);
491
- const parsed = JSON.parse(serialized);
492
- assert.deepEqual(parsed.values, ["opt-a", "opt-b"]);
493
- });
494
-
495
- it("prompt command with runId in v2 response", () => {
496
- const response = {
497
- id: "req_10",
498
- type: "response",
499
- command: "prompt",
500
- success: true,
501
- runId: "run-uuid-abc",
502
- };
503
- const serialized = serializeJsonLine(response);
504
- const parsed = JSON.parse(serialized);
505
- assert.equal(parsed.runId, "run-uuid-abc");
506
- assert.equal(parsed.command, "prompt");
507
- assert.equal(parsed.success, true);
508
- });
509
- });
510
-
511
- // ============================================================================
512
- // Client ↔ Mock server integration (PassThrough streams)
513
- // ============================================================================
514
-
515
- describe("Client ↔ Mock server protocol exchange", () => {
516
- let clientStdin: PassThrough;
517
- let clientStdout: PassThrough;
518
-
519
- beforeEach(() => {
520
- const mockProc = createMockProcess();
521
- clientStdin = mockProc.clientStdin;
522
- clientStdout = mockProc.clientStdout;
523
- });
524
-
525
- afterEach(() => {
526
- clientStdin.destroy();
527
- clientStdout.destroy();
528
- });
529
-
530
- it("init handshake: client writes init, server responds with init_result", async () => {
531
- // Collect what the client would write
532
- const { lines: clientWrites, detach: detachStdin } = collectLines(clientStdin);
533
-
534
- // Client sends init command
535
- writeLine(clientStdin, { id: "req_1", type: "init", protocolVersion: 2 });
536
- await tick();
537
-
538
- assert.equal(clientWrites.length, 1);
539
- const initCmd = clientWrites[0] as any;
540
- assert.equal(initCmd.type, "init");
541
- assert.equal(initCmd.protocolVersion, 2);
542
-
543
- // Server responds with init_result
544
- const initResult: RpcInitResult = {
545
- protocolVersion: 2,
546
- sessionId: "sess-abc",
547
- capabilities: {
548
- events: ["execution_complete", "cost_update"],
549
- commands: ["init", "shutdown", "subscribe"],
550
- },
551
- };
552
- writeLine(clientStdout, {
553
- id: "req_1",
554
- type: "response",
555
- command: "init",
556
- success: true,
557
- data: initResult,
558
- });
559
-
560
- // Collect server response
561
- const { lines: serverResponses, detach: detachStdout } = collectLines(clientStdout);
562
- // Already wrote above, but let's verify the shape by re-writing
563
- writeLine(clientStdout, {
564
- id: "req_verify",
565
- type: "response",
566
- command: "init",
567
- success: true,
568
- data: initResult,
569
- });
570
- await tick();
571
-
572
- const resp = serverResponses[0] as any;
573
- assert.equal(resp.type, "response");
574
- assert.equal(resp.command, "init");
575
- assert.equal(resp.success, true);
576
- assert.equal(resp.data.protocolVersion, 2);
577
- assert.ok(typeof resp.data.sessionId === "string");
578
-
579
- detachStdin();
580
- detachStdout();
581
- });
582
-
583
- it("shutdown: client writes shutdown, server acknowledges", async () => {
584
- const { lines: clientWrites, detach } = collectLines(clientStdin);
585
-
586
- writeLine(clientStdin, { id: "req_2", type: "shutdown" });
587
- await tick();
588
-
589
- const cmd = clientWrites[0] as any;
590
- assert.equal(cmd.type, "shutdown");
591
-
592
- detach();
593
- });
594
-
595
- it("subscribe: client writes subscribe with event list", async () => {
596
- const { lines: clientWrites, detach } = collectLines(clientStdin);
597
-
598
- writeLine(clientStdin, { id: "req_3", type: "subscribe", events: ["agent_end", "execution_complete"] });
599
- await tick();
600
-
601
- const cmd = clientWrites[0] as any;
602
- assert.equal(cmd.type, "subscribe");
603
- assert.deepEqual(cmd.events, ["agent_end", "execution_complete"]);
604
-
605
- detach();
606
- });
607
-
608
- it("sendUIResponse: client writes extension_ui_response", async () => {
609
- const { lines: clientWrites, detach } = collectLines(clientStdin);
610
-
611
- writeLine(clientStdin, {
612
- type: "extension_ui_response",
613
- id: "ui-123",
614
- value: "selected-option",
615
- });
616
- await tick();
617
-
618
- const msg = clientWrites[0] as any;
619
- assert.equal(msg.type, "extension_ui_response");
620
- assert.equal(msg.id, "ui-123");
621
- assert.equal(msg.value, "selected-option");
622
-
623
- detach();
624
- });
625
-
626
- it("v2 event filtering: subscribe with empty array should filter all", async () => {
627
- // An empty event filter means no events pass through (Set with 0 entries)
628
- const subscribeCmd = { id: "req_4", type: "subscribe", events: [] as string[] };
629
- const serialized = serializeJsonLine(subscribeCmd);
630
- const parsed = JSON.parse(serialized);
631
- assert.deepEqual(parsed.events, []);
632
- // Server-side: `eventFilter = new Set([])` — Set.has(anything) returns false
633
- const filter = new Set(parsed.events as string[]);
634
- assert.equal(filter.has("agent_end"), false);
635
- assert.equal(filter.has("execution_complete"), false);
636
- assert.equal(filter.size, 0);
637
- });
638
-
639
- it("v2 event filtering: subscribe with wildcard resets filter", async () => {
640
- // Server-side: `events.includes("*")` → `eventFilter = null`
641
- const subscribeCmd = { type: "subscribe", events: ["*"] };
642
- const parsed = JSON.parse(serializeJsonLine(subscribeCmd));
643
- const hasWildcard = (parsed.events as string[]).includes("*");
644
- assert.equal(hasWildcard, true);
645
- // When wildcard is detected, filter becomes null (all events pass)
646
- });
647
-
648
- it("multiple commands can be sent sequentially", async () => {
649
- const { lines, detach } = collectLines(clientStdin);
650
-
651
- writeLine(clientStdin, { id: "1", type: "init", protocolVersion: 2 });
652
- writeLine(clientStdin, { id: "2", type: "subscribe", events: ["agent_end"] });
653
- writeLine(clientStdin, { id: "3", type: "prompt", message: "hello" });
654
- await tick();
655
-
656
- assert.equal(lines.length, 3);
657
- assert.equal((lines[0] as any).type, "init");
658
- assert.equal((lines[1] as any).type, "subscribe");
659
- assert.equal((lines[2] as any).type, "prompt");
660
-
661
- detach();
662
- });
663
- });
664
-
665
- // ============================================================================
666
- // Negative tests — malformed inputs, error paths, boundary conditions
667
- // ============================================================================
668
-
669
- describe("Negative tests — protocol error shapes", () => {
670
- it("init with missing protocolVersion produces a type error at compile time", () => {
671
- // Runtime check: a message missing protocolVersion is malformed
672
- const malformed = { type: "init" } as any;
673
- assert.equal(malformed.protocolVersion, undefined);
674
- // Server would treat this as v1 lock since it's not a valid init
675
- });
676
-
677
- it("subscribe with non-array events is a type violation", () => {
678
- // Runtime: server expects events to be string[]
679
- const malformed = { type: "subscribe", events: "agent_end" } as any;
680
- assert.equal(typeof malformed.events, "string"); // Not an array
681
- assert.equal(Array.isArray(malformed.events), false);
682
- });
683
-
684
- it("double init error response shape", () => {
685
- // When init is sent after protocol lock, server returns error
686
- const errorResp: RpcResponse = {
687
- id: "req_dup",
688
- type: "response",
689
- command: "init",
690
- success: false,
691
- error: "Protocol version already locked. init must be the first command.",
692
- };
693
- assert.equal(errorResp.success, false);
694
- if (!errorResp.success) {
695
- assert.ok(errorResp.error.includes("already locked"));
696
- }
697
- });
698
-
699
- it("init after v1 lock error response shape", () => {
700
- // First command was get_state (v1 lock), then init arrives
701
- const errorResp: RpcResponse = {
702
- id: "req_late_init",
703
- type: "response",
704
- command: "init",
705
- success: false,
706
- error: "Protocol version already locked. init must be the first command.",
707
- };
708
- assert.equal(errorResp.success, false);
709
- if (!errorResp.success) {
710
- assert.ok(errorResp.error.includes("init must be the first command"));
711
- }
712
- });
713
-
714
- it("unknown command type produces error response", () => {
715
- const errorResp: RpcResponse = {
716
- id: "req_unknown",
717
- type: "response",
718
- command: "nonexistent",
719
- success: false,
720
- error: "Unknown command: nonexistent",
721
- };
722
- assert.equal(errorResp.success, false);
723
- if (!errorResp.success) {
724
- assert.ok(errorResp.error.includes("Unknown command"));
725
- }
726
- });
727
-
728
- it("malformed JSON parse error shape", () => {
729
- const errorResp: RpcResponse = {
730
- type: "response",
731
- command: "parse",
732
- success: false,
733
- error: "Failed to parse command: Unexpected token",
734
- };
735
- assert.equal(errorResp.command, "parse");
736
- assert.equal(errorResp.success, false);
737
- });
738
-
739
- it("shutdown works in both v1 and v2 — no version gating", () => {
740
- // shutdown returns success regardless of protocolVersion
741
- const v1Shutdown: RpcResponse = {
742
- id: "s1",
743
- type: "response",
744
- command: "shutdown",
745
- success: true,
746
- };
747
- const v2Shutdown: RpcResponse = {
748
- id: "s2",
749
- type: "response",
750
- command: "shutdown",
751
- success: true,
752
- };
753
- assert.equal(v1Shutdown.success, true);
754
- assert.equal(v2Shutdown.success, true);
755
- });
756
- });
757
-
758
- // ============================================================================
759
- // Protocol version detection logic (unit)
760
- // ============================================================================
761
-
762
- describe("Protocol version detection logic", () => {
763
- it("simulates v1 lock when first command is non-init", () => {
764
- let protocolVersion: 1 | 2 = 1;
765
- let protocolLocked = false;
766
-
767
- // Simulate first command being get_state
768
- const command = { type: "get_state" } as RpcCommand;
769
-
770
- if (!protocolLocked) {
771
- protocolLocked = true;
772
- if (command.type === "init") {
773
- protocolVersion = 2;
774
- } else {
775
- protocolVersion = 1;
776
- }
777
- }
778
-
779
- assert.equal(protocolVersion, 1);
780
- assert.equal(protocolLocked, true);
781
- });
782
-
783
- it("simulates v2 lock when first command is init", () => {
784
- let protocolVersion: 1 | 2 = 1;
785
- let protocolLocked = false;
786
-
787
- const command: RpcCommand = { type: "init", protocolVersion: 2 };
788
-
789
- if (!protocolLocked) {
790
- protocolLocked = true;
791
- if (command.type === "init") {
792
- protocolVersion = 2;
793
- } else {
794
- protocolVersion = 1;
795
- }
796
- }
797
-
798
- assert.equal(protocolVersion, 2);
799
- assert.equal(protocolLocked, true);
800
- });
801
-
802
- it("rejects re-init after v2 lock", () => {
803
- let protocolLocked = true; // already locked from first init
804
- let errorMessage: string | null = null;
805
-
806
- const command: RpcCommand = { type: "init", protocolVersion: 2 };
807
-
808
- if (protocolLocked && command.type === "init") {
809
- errorMessage = "Protocol version already locked. init must be the first command.";
810
- }
811
-
812
- assert.ok(errorMessage !== null);
813
- assert.ok(errorMessage!.includes("already locked"));
814
- });
815
-
816
- it("rejects init after v1 lock", () => {
817
- let protocolLocked = true; // already locked from first non-init command
818
- let protocolVersion: 1 | 2 = 1;
819
- let errorMessage: string | null = null;
820
-
821
- const command: RpcCommand = { type: "init", protocolVersion: 2 };
822
-
823
- if (protocolLocked && command.type === "init") {
824
- errorMessage = "Protocol version already locked. init must be the first command.";
825
- }
826
-
827
- assert.equal(protocolVersion, 1); // stays v1
828
- assert.ok(errorMessage !== null);
829
- });
830
-
831
- it("extension_ui_response bypasses protocol detection", () => {
832
- let protocolLocked = false;
833
- let protocolDetectionTriggered = false;
834
-
835
- // Simulate the handleInputLine logic
836
- const parsed = { type: "extension_ui_response", id: "ui-1", value: "ok" };
837
-
838
- if (parsed.type === "extension_ui_response") {
839
- // Bypass — do not touch protocolLocked
840
- } else {
841
- protocolDetectionTriggered = true;
842
- if (!protocolLocked) {
843
- protocolLocked = true;
844
- }
845
- }
846
-
847
- assert.equal(protocolLocked, false);
848
- assert.equal(protocolDetectionTriggered, false);
849
- });
850
- });
851
-
852
- // ============================================================================
853
- // v2 event filter logic (unit)
854
- // ============================================================================
855
-
856
- describe("v2 event filter logic", () => {
857
- /** Mimics the server-side event filter check: null means all events pass */
858
- function shouldEmit(filter: Set<string> | null, eventType: string): boolean {
859
- return !filter || filter.has(eventType);
860
- }
861
-
862
- it("null filter passes all events", () => {
863
- assert.equal(shouldEmit(null, "agent_end"), true);
864
- assert.equal(shouldEmit(null, "cost_update"), true);
865
- assert.equal(shouldEmit(null, "anything"), true);
866
- });
867
-
868
- it("filter with specific events passes matching events", () => {
869
- const filter = new Set(["agent_end", "cost_update"]);
870
-
871
- assert.equal(shouldEmit(filter, "agent_end"), true);
872
- assert.equal(shouldEmit(filter, "cost_update"), true);
873
- assert.equal(shouldEmit(filter, "execution_complete"), false);
874
- assert.equal(shouldEmit(filter, "message_start"), false);
875
- });
876
-
877
- it("empty Set filter blocks all events", () => {
878
- const filter = new Set<string>();
879
-
880
- assert.equal(shouldEmit(filter, "agent_end"), false);
881
- assert.equal(shouldEmit(filter, "cost_update"), false);
882
- assert.equal(shouldEmit(filter, "anything"), false);
883
- assert.equal(filter.size, 0);
884
- });
885
-
886
- it("wildcard subscribe resets filter to null", () => {
887
- let eventFilter: Set<string> | null = new Set(["agent_end"]);
888
-
889
- // Simulate subscribe with wildcard
890
- const events = ["*"];
891
- if (events.includes("*")) {
892
- eventFilter = null;
893
- } else {
894
- eventFilter = new Set(events);
895
- }
896
-
897
- assert.equal(eventFilter, null);
898
- });
899
-
900
- it("subscribe replaces previous filter", () => {
901
- let eventFilter: Set<string> | null = new Set(["agent_end"]);
902
-
903
- // Subscribe with different events
904
- const events = ["cost_update", "execution_complete"];
905
- if (events.includes("*")) {
906
- eventFilter = null;
907
- } else {
908
- eventFilter = new Set(events);
909
- }
910
-
911
- assert.equal(eventFilter!.has("agent_end"), false);
912
- assert.equal(eventFilter!.has("cost_update"), true);
913
- assert.equal(eventFilter!.has("execution_complete"), true);
914
- });
915
-
916
- it("filter applies to both regular and synthesized v2 events", () => {
917
- const eventFilter = new Set(["execution_complete"]);
918
-
919
- // Regular event
920
- assert.equal(eventFilter.has("agent_end"), false); // filtered out
921
- // Synthesized v2 event
922
- assert.equal(eventFilter.has("execution_complete"), true); // passes
923
- assert.equal(eventFilter.has("cost_update"), false); // filtered out
924
- });
925
- });
926
-
927
- // ============================================================================
928
- // v2 runId injection logic (unit)
929
- // ============================================================================
930
-
931
- describe("v2 runId injection", () => {
932
- it("runId is present when protocolVersion is 2 and command is prompt/steer/follow_up", () => {
933
- const protocolVersion = 2;
934
- const commands = ["prompt", "steer", "follow_up"] as const;
935
-
936
- for (const cmdType of commands) {
937
- const runId = protocolVersion === 2 ? `run-${cmdType}-uuid` : undefined;
938
- assert.ok(runId !== undefined, `runId should be generated for ${cmdType} in v2`);
939
- assert.ok(typeof runId === "string");
940
- }
941
- });
942
-
943
- it("runId is undefined when protocolVersion is 1", () => {
944
- // Test the v1 path: runId should not be generated
945
- function generateRunId(version: 1 | 2): string | undefined {
946
- return version === 2 ? "run-uuid" : undefined;
947
- }
948
- assert.equal(generateRunId(1), undefined);
949
- assert.ok(typeof generateRunId(2) === "string");
950
- });
951
-
952
- it("runId is injected into event output via spread", () => {
953
- const currentRunId = "run-abc-123";
954
- const event = { type: "message_start", message: { role: "assistant" } };
955
-
956
- // v2 injection logic from rpc-mode.ts
957
- const outputEvent = currentRunId ? { ...event, runId: currentRunId } : event;
958
-
959
- assert.equal((outputEvent as any).runId, "run-abc-123");
960
- assert.equal((outputEvent as any).type, "message_start");
961
- });
962
-
963
- it("runId is not injected when null", () => {
964
- const currentRunId: string | null = null;
965
- const event = { type: "message_start", message: { role: "assistant" } };
966
-
967
- const outputEvent = currentRunId ? { ...event, runId: currentRunId } : event;
968
-
969
- assert.equal((outputEvent as any).runId, undefined);
970
- });
971
- });