@bastani/atomic 0.9.11-alpha.2 → 0.9.11-alpha.4

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 (495) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/builtin/cursor/package.json +2 -2
  3. package/dist/builtin/intercom/package.json +1 -1
  4. package/dist/builtin/mcp/package.json +1 -1
  5. package/dist/builtin/subagents/CHANGELOG.md +6 -0
  6. package/dist/builtin/subagents/package.json +1 -1
  7. package/dist/builtin/subagents/src/runs/background/notify.ts +3 -1
  8. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +5 -2
  9. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +2 -1
  10. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +5 -2
  11. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +34 -0
  12. package/dist/builtin/web-access/package.json +1 -1
  13. package/dist/builtin/workflows/CHANGELOG.md +20 -0
  14. package/dist/builtin/workflows/builtin/goal-prompts.ts +8 -3
  15. package/dist/builtin/workflows/builtin/goal.ts +4 -4
  16. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +1 -1
  17. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +3 -1
  18. package/dist/builtin/workflows/builtin/ralph-runner.ts +2 -0
  19. package/dist/builtin/workflows/builtin/ralph.ts +4 -4
  20. package/dist/builtin/workflows/builtin/shared-prompts.ts +16 -0
  21. package/dist/builtin/workflows/package.json +2 -2
  22. package/dist/builtin/workflows/src/authoring/workflow.ts +1 -0
  23. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +27 -1
  24. package/dist/builtin/workflows/src/durable/factory.ts +29 -3
  25. package/dist/builtin/workflows/src/durable/index.ts +2 -0
  26. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +50 -0
  27. package/dist/builtin/workflows/src/engine/run.ts +12 -17
  28. package/dist/builtin/workflows/src/extension/extension-factory.ts +16 -1
  29. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +16 -2
  30. package/dist/builtin/workflows/src/extension/index.bundle.mjs +71724 -0
  31. package/dist/builtin/workflows/src/extension/runtime.ts +5 -3
  32. package/dist/builtin/workflows/src/extension/ui-surface.ts +4 -0
  33. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +4 -1
  34. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +3 -1
  35. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +1 -0
  36. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +1 -0
  37. package/dist/builtin/workflows/src/shared/types.ts +7 -0
  38. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +1 -0
  39. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +1 -0
  40. package/dist/builtin/workflows/src/tui/host-input-form.ts +1 -1
  41. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +6 -8
  42. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +2 -0
  43. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -0
  44. package/dist/cli/args.d.ts +8 -0
  45. package/dist/cli/args.d.ts.map +1 -1
  46. package/dist/cli/args.js +18 -2
  47. package/dist/cli/args.js.map +1 -1
  48. package/dist/cli/config-selector.d.ts +4 -2
  49. package/dist/cli/config-selector.d.ts.map +1 -1
  50. package/dist/cli/config-selector.js +1 -1
  51. package/dist/cli/config-selector.js.map +1 -1
  52. package/dist/cli/startup-ui.d.ts +3 -0
  53. package/dist/cli/startup-ui.d.ts.map +1 -1
  54. package/dist/cli/startup-ui.js +50 -1
  55. package/dist/cli/startup-ui.js.map +1 -1
  56. package/dist/cli.js +2 -0
  57. package/dist/cli.js.map +1 -1
  58. package/dist/config-command-parser.d.ts +9 -0
  59. package/dist/config-command-parser.d.ts.map +1 -0
  60. package/dist/config-command-parser.js +22 -0
  61. package/dist/config-command-parser.js.map +1 -0
  62. package/dist/config-self-update.d.ts +6 -2
  63. package/dist/config-self-update.d.ts.map +1 -1
  64. package/dist/config-self-update.js +17 -10
  65. package/dist/config-self-update.js.map +1 -1
  66. package/dist/config.d.ts +3 -3
  67. package/dist/config.d.ts.map +1 -1
  68. package/dist/config.js +4 -4
  69. package/dist/config.js.map +1 -1
  70. package/dist/core/agent-session-export.d.ts.map +1 -1
  71. package/dist/core/agent-session-export.js +32 -25
  72. package/dist/core/agent-session-export.js.map +1 -1
  73. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  74. package/dist/core/agent-session-extension-bindings.js +9 -3
  75. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  76. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  77. package/dist/core/agent-session-prompt.js +5 -0
  78. package/dist/core/agent-session-prompt.js.map +1 -1
  79. package/dist/core/agent-session-services.d.ts +2 -0
  80. package/dist/core/agent-session-services.d.ts.map +1 -1
  81. package/dist/core/agent-session-services.js +8 -5
  82. package/dist/core/agent-session-services.js.map +1 -1
  83. package/dist/core/agent-session-tree.d.ts.map +1 -1
  84. package/dist/core/agent-session-tree.js +3 -1
  85. package/dist/core/agent-session-tree.js.map +1 -1
  86. package/dist/core/agent-session-types.d.ts +5 -0
  87. package/dist/core/agent-session-types.d.ts.map +1 -1
  88. package/dist/core/agent-session-types.js.map +1 -1
  89. package/dist/core/auth-storage.d.ts +6 -2
  90. package/dist/core/auth-storage.d.ts.map +1 -1
  91. package/dist/core/auth-storage.js +5 -1
  92. package/dist/core/auth-storage.js.map +1 -1
  93. package/dist/core/cache-stats.d.ts +25 -0
  94. package/dist/core/cache-stats.d.ts.map +1 -0
  95. package/dist/core/cache-stats.js +68 -0
  96. package/dist/core/cache-stats.js.map +1 -0
  97. package/dist/core/compaction/branch-summarization.d.ts +2 -1
  98. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  99. package/dist/core/compaction/branch-summarization.js +1 -0
  100. package/dist/core/compaction/branch-summarization.js.map +1 -1
  101. package/dist/core/extensions/agent-events.d.ts +10 -0
  102. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  103. package/dist/core/extensions/agent-events.js.map +1 -1
  104. package/dist/core/extensions/api-types.d.ts +8 -2
  105. package/dist/core/extensions/api-types.d.ts.map +1 -1
  106. package/dist/core/extensions/api-types.js.map +1 -1
  107. package/dist/core/extensions/event-types.d.ts +2 -2
  108. package/dist/core/extensions/event-types.d.ts.map +1 -1
  109. package/dist/core/extensions/event-types.js.map +1 -1
  110. package/dist/core/extensions/index.d.ts +1 -1
  111. package/dist/core/extensions/index.d.ts.map +1 -1
  112. package/dist/core/extensions/index.js.map +1 -1
  113. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  114. package/dist/core/extensions/loader-api.js +13 -2
  115. package/dist/core/extensions/loader-api.js.map +1 -1
  116. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  117. package/dist/core/extensions/loader-core.js +1 -0
  118. package/dist/core/extensions/loader-core.js.map +1 -1
  119. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  120. package/dist/core/extensions/loader-runtime.js +15 -7
  121. package/dist/core/extensions/loader-runtime.js.map +1 -1
  122. package/dist/core/extensions/message-types.d.ts +5 -0
  123. package/dist/core/extensions/message-types.d.ts.map +1 -1
  124. package/dist/core/extensions/message-types.js.map +1 -1
  125. package/dist/core/extensions/provider-types.d.ts +46 -0
  126. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  127. package/dist/core/extensions/provider-types.js.map +1 -1
  128. package/dist/core/extensions/runner-registries.d.ts +2 -1
  129. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  130. package/dist/core/extensions/runner-registries.js +8 -0
  131. package/dist/core/extensions/runner-registries.js.map +1 -1
  132. package/dist/core/extensions/runner.d.ts +5 -2
  133. package/dist/core/extensions/runner.d.ts.map +1 -1
  134. package/dist/core/extensions/runner.js +35 -13
  135. package/dist/core/extensions/runner.js.map +1 -1
  136. package/dist/core/extensions/runtime-types.d.ts +8 -2
  137. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  138. package/dist/core/extensions/runtime-types.js.map +1 -1
  139. package/dist/core/extensions/ui-types.d.ts +4 -0
  140. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  141. package/dist/core/extensions/ui-types.js.map +1 -1
  142. package/dist/core/http-dispatcher.d.ts +1 -0
  143. package/dist/core/http-dispatcher.d.ts.map +1 -1
  144. package/dist/core/http-dispatcher.js +16 -2
  145. package/dist/core/http-dispatcher.js.map +1 -1
  146. package/dist/core/keybindings.d.ts +6 -1
  147. package/dist/core/keybindings.d.ts.map +1 -1
  148. package/dist/core/keybindings.js +3 -1
  149. package/dist/core/keybindings.js.map +1 -1
  150. package/dist/core/model-registry-auth.d.ts +2 -0
  151. package/dist/core/model-registry-auth.d.ts.map +1 -1
  152. package/dist/core/model-registry-auth.js +18 -1
  153. package/dist/core/model-registry-auth.js.map +1 -1
  154. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  155. package/dist/core/model-registry-custom-loader.js +14 -2
  156. package/dist/core/model-registry-custom-loader.js.map +1 -1
  157. package/dist/core/model-registry-dynamic.js +2 -2
  158. package/dist/core/model-registry-dynamic.js.map +1 -1
  159. package/dist/core/model-registry-loader.d.ts.map +1 -1
  160. package/dist/core/model-registry-loader.js +2 -1
  161. package/dist/core/model-registry-loader.js.map +1 -1
  162. package/dist/core/model-registry-schemas.d.ts +17 -0
  163. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  164. package/dist/core/model-registry-schemas.js +2 -0
  165. package/dist/core/model-registry-schemas.js.map +1 -1
  166. package/dist/core/model-registry-types.d.ts +10 -1
  167. package/dist/core/model-registry-types.d.ts.map +1 -1
  168. package/dist/core/model-registry-types.js.map +1 -1
  169. package/dist/core/model-registry.d.ts +26 -36
  170. package/dist/core/model-registry.d.ts.map +1 -1
  171. package/dist/core/model-registry.js +72 -67
  172. package/dist/core/model-registry.js.map +1 -1
  173. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  174. package/dist/core/model-resolver-defaults.js +3 -0
  175. package/dist/core/model-resolver-defaults.js.map +1 -1
  176. package/dist/core/model-runtime.d.ts +52 -0
  177. package/dist/core/model-runtime.d.ts.map +1 -0
  178. package/dist/core/model-runtime.js +120 -0
  179. package/dist/core/model-runtime.js.map +1 -0
  180. package/dist/core/oauth-provider-bridge.d.ts +3 -1
  181. package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
  182. package/dist/core/oauth-provider-bridge.js +6 -4
  183. package/dist/core/oauth-provider-bridge.js.map +1 -1
  184. package/dist/core/package-manager-resolver.js +22 -11
  185. package/dist/core/package-manager-resolver.js.map +1 -1
  186. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  187. package/dist/core/package-manager-resource-collector.js +8 -2
  188. package/dist/core/package-manager-resource-collector.js.map +1 -1
  189. package/dist/core/package-manager-resource-patterns.d.ts +1 -0
  190. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
  191. package/dist/core/package-manager-resource-patterns.js +15 -0
  192. package/dist/core/package-manager-resource-patterns.js.map +1 -1
  193. package/dist/core/package-manager-source.d.ts.map +1 -1
  194. package/dist/core/package-manager-source.js +15 -8
  195. package/dist/core/package-manager-source.js.map +1 -1
  196. package/dist/core/package-manager-types.d.ts +1 -0
  197. package/dist/core/package-manager-types.d.ts.map +1 -1
  198. package/dist/core/package-manager-types.js.map +1 -1
  199. package/dist/core/provider-display-names.d.ts.map +1 -1
  200. package/dist/core/provider-display-names.js +4 -0
  201. package/dist/core/provider-display-names.js.map +1 -1
  202. package/dist/core/resource-loader-core.d.ts.map +1 -1
  203. package/dist/core/resource-loader-core.js.map +1 -1
  204. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  205. package/dist/core/resource-loader-extensions.js +5 -2
  206. package/dist/core/resource-loader-extensions.js.map +1 -1
  207. package/dist/core/resource-loader-helpers.d.ts.map +1 -1
  208. package/dist/core/resource-loader-helpers.js +1 -0
  209. package/dist/core/resource-loader-helpers.js.map +1 -1
  210. package/dist/core/resource-loader-internals.d.ts +2 -2
  211. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  212. package/dist/core/resource-loader-internals.js.map +1 -1
  213. package/dist/core/resource-loader-types.d.ts +3 -3
  214. package/dist/core/resource-loader-types.d.ts.map +1 -1
  215. package/dist/core/resource-loader-types.js.map +1 -1
  216. package/dist/core/sdk-exports.d.ts +1 -1
  217. package/dist/core/sdk-exports.d.ts.map +1 -1
  218. package/dist/core/sdk-exports.js.map +1 -1
  219. package/dist/core/sdk-types.d.ts +3 -0
  220. package/dist/core/sdk-types.d.ts.map +1 -1
  221. package/dist/core/sdk-types.js.map +1 -1
  222. package/dist/core/sdk.js +6 -2
  223. package/dist/core/sdk.js.map +1 -1
  224. package/dist/core/session-manager-core.d.ts +1 -1
  225. package/dist/core/session-manager-core.d.ts.map +1 -1
  226. package/dist/core/session-manager-core.js +2 -2
  227. package/dist/core/session-manager-core.js.map +1 -1
  228. package/dist/core/session-manager-entries.d.ts +2 -2
  229. package/dist/core/session-manager-entries.d.ts.map +1 -1
  230. package/dist/core/session-manager-entries.js +2 -1
  231. package/dist/core/session-manager-entries.js.map +1 -1
  232. package/dist/core/session-manager-history.d.ts +5 -0
  233. package/dist/core/session-manager-history.d.ts.map +1 -1
  234. package/dist/core/session-manager-history.js +33 -0
  235. package/dist/core/session-manager-history.js.map +1 -1
  236. package/dist/core/session-manager-types.d.ts +4 -2
  237. package/dist/core/session-manager-types.d.ts.map +1 -1
  238. package/dist/core/session-manager-types.js.map +1 -1
  239. package/dist/core/session-manager.d.ts +1 -1
  240. package/dist/core/session-manager.d.ts.map +1 -1
  241. package/dist/core/session-manager.js +1 -1
  242. package/dist/core/session-manager.js.map +1 -1
  243. package/dist/core/settings-manager-basic-accessors.d.ts +7 -0
  244. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  245. package/dist/core/settings-manager-basic-accessors.js +35 -0
  246. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  247. package/dist/core/settings-manager-resource-accessors.d.ts +3 -0
  248. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  249. package/dist/core/settings-manager-resource-accessors.js +16 -0
  250. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  251. package/dist/core/settings-types.d.ts +8 -2
  252. package/dist/core/settings-types.d.ts.map +1 -1
  253. package/dist/core/settings-types.js.map +1 -1
  254. package/dist/core/slash-commands.d.ts +1 -0
  255. package/dist/core/slash-commands.d.ts.map +1 -1
  256. package/dist/core/slash-commands.js +1 -1
  257. package/dist/core/slash-commands.js.map +1 -1
  258. package/dist/core/usage-totals.d.ts +18 -0
  259. package/dist/core/usage-totals.d.ts.map +1 -0
  260. package/dist/core/usage-totals.js +40 -0
  261. package/dist/core/usage-totals.js.map +1 -0
  262. package/dist/extensions/index.d.ts +3 -0
  263. package/dist/extensions/index.d.ts.map +1 -0
  264. package/dist/extensions/index.js +5 -0
  265. package/dist/extensions/index.js.map +1 -0
  266. package/dist/extensions/llama/client.d.ts +61 -0
  267. package/dist/extensions/llama/client.d.ts.map +1 -0
  268. package/dist/extensions/llama/client.js +300 -0
  269. package/dist/extensions/llama/client.js.map +1 -0
  270. package/dist/extensions/llama/huggingface-ui.d.ts +33 -0
  271. package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -0
  272. package/dist/extensions/llama/huggingface-ui.js +166 -0
  273. package/dist/extensions/llama/huggingface-ui.js.map +1 -0
  274. package/dist/extensions/llama/huggingface.d.ts +23 -0
  275. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  276. package/dist/extensions/llama/huggingface.js +139 -0
  277. package/dist/extensions/llama/huggingface.js.map +1 -0
  278. package/dist/extensions/llama/index.d.ts +3 -0
  279. package/dist/extensions/llama/index.d.ts.map +1 -0
  280. package/dist/extensions/llama/index.js +208 -0
  281. package/dist/extensions/llama/index.js.map +1 -0
  282. package/dist/extensions/llama/provider.d.ts +11 -0
  283. package/dist/extensions/llama/provider.d.ts.map +1 -0
  284. package/dist/extensions/llama/provider.js +93 -0
  285. package/dist/extensions/llama/provider.js.map +1 -0
  286. package/dist/extensions/llama/ui.d.ts +42 -0
  287. package/dist/extensions/llama/ui.d.ts.map +1 -0
  288. package/dist/extensions/llama/ui.js +237 -0
  289. package/dist/extensions/llama/ui.js.map +1 -0
  290. package/dist/index-extensions.d.ts +1 -1
  291. package/dist/index-extensions.d.ts.map +1 -1
  292. package/dist/index-extensions.js.map +1 -1
  293. package/dist/index.d.ts +4 -3
  294. package/dist/index.d.ts.map +1 -1
  295. package/dist/index.js +4 -3
  296. package/dist/index.js.map +1 -1
  297. package/dist/main-first-time-setup.d.ts +6 -0
  298. package/dist/main-first-time-setup.d.ts.map +1 -0
  299. package/dist/main-first-time-setup.js +10 -0
  300. package/dist/main-first-time-setup.js.map +1 -0
  301. package/dist/main-types.d.ts +2 -2
  302. package/dist/main-types.d.ts.map +1 -1
  303. package/dist/main-types.js.map +1 -1
  304. package/dist/main.d.ts.map +1 -1
  305. package/dist/main.js +17 -7
  306. package/dist/main.js.map +1 -1
  307. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  308. package/dist/modes/interactive/chat-input-actions.js +14 -2
  309. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  310. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  311. package/dist/modes/interactive/components/chat-session-host-rendering.js +5 -1
  312. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  313. package/dist/modes/interactive/components/config-selector-list.d.ts +6 -6
  314. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  315. package/dist/modes/interactive/components/config-selector-list.js +64 -125
  316. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  317. package/dist/modes/interactive/components/config-selector-project-scope.d.ts +4 -0
  318. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -0
  319. package/dist/modes/interactive/components/config-selector-project-scope.js +61 -0
  320. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -0
  321. package/dist/modes/interactive/components/config-selector.d.ts +8 -5
  322. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  323. package/dist/modes/interactive/components/config-selector.js +46 -22
  324. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  325. package/dist/modes/interactive/components/custom-entry.d.ts +16 -0
  326. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  327. package/dist/modes/interactive/components/custom-entry.js +45 -0
  328. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  329. package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
  330. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  331. package/dist/modes/interactive/components/first-time-setup.js +69 -0
  332. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  333. package/dist/modes/interactive/components/footer.d.ts +7 -1
  334. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  335. package/dist/modes/interactive/components/footer.js +55 -27
  336. package/dist/modes/interactive/components/footer.js.map +1 -1
  337. package/dist/modes/interactive/components/host-input-form.d.ts +2 -0
  338. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  339. package/dist/modes/interactive/components/host-input-form.js +6 -3
  340. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  341. package/dist/modes/interactive/components/idle-status.d.ts +8 -0
  342. package/dist/modes/interactive/components/idle-status.d.ts.map +1 -0
  343. package/dist/modes/interactive/components/idle-status.js +13 -0
  344. package/dist/modes/interactive/components/idle-status.js.map +1 -0
  345. package/dist/modes/interactive/components/index.d.ts +3 -0
  346. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  347. package/dist/modes/interactive/components/index.js +3 -0
  348. package/dist/modes/interactive/components/index.js.map +1 -1
  349. package/dist/modes/interactive/components/login-dialog.d.ts +5 -5
  350. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  351. package/dist/modes/interactive/components/login-dialog.js +14 -6
  352. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  353. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  354. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  355. package/dist/modes/interactive/components/oauth-selector.js +10 -6
  356. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  357. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  358. package/dist/modes/interactive/components/settings-selector-handlers.js +6 -0
  359. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  360. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  361. package/dist/modes/interactive/components/settings-selector-items.js +14 -0
  362. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  363. package/dist/modes/interactive/components/settings-selector-types.d.ts +4 -0
  364. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  365. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  366. package/dist/modes/interactive/interactive-agent-events.js +21 -0
  367. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  368. package/dist/modes/interactive/interactive-auth-login.js +17 -8
  369. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  370. package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
  371. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  372. package/dist/modes/interactive/interactive-auth-routing.js +88 -40
  373. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  374. package/dist/modes/interactive/interactive-autocomplete.js +6 -0
  375. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  376. package/dist/modes/interactive/interactive-extension-runtime.js +4 -0
  377. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  378. package/dist/modes/interactive/interactive-global-clear.d.ts +10 -2
  379. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
  380. package/dist/modes/interactive/interactive-global-clear.js +3 -1
  381. package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
  382. package/dist/modes/interactive/interactive-input-handling.js +6 -4
  383. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  384. package/dist/modes/interactive/interactive-mode-helpers.d.ts +2 -1
  385. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  386. package/dist/modes/interactive/interactive-mode-helpers.js +6 -10
  387. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  388. package/dist/modes/interactive/interactive-mode-surface.d.ts +11 -2
  389. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  390. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  391. package/dist/modes/interactive/interactive-render-chat.js +69 -12
  392. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  393. package/dist/modes/interactive/interactive-resource-rendering.js +1 -1
  394. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  395. package/dist/modes/interactive/interactive-selectors.js +10 -0
  396. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  397. package/dist/modes/interactive/interactive-session-routing.js +3 -0
  398. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  399. package/dist/modes/interactive/interactive-slash-commands.js +14 -0
  400. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  401. package/dist/modes/interactive/login-provider-options.d.ts +21 -0
  402. package/dist/modes/interactive/login-provider-options.d.ts.map +1 -0
  403. package/dist/modes/interactive/login-provider-options.js +51 -0
  404. package/dist/modes/interactive/login-provider-options.js.map +1 -0
  405. package/dist/modes/interactive-engine/engine-input-form.d.ts +1 -1
  406. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
  407. package/dist/modes/interactive-engine/engine-input-form.js +10 -2
  408. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  409. package/dist/modes/interactive-engine/engine-monitor.d.ts +8 -1
  410. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  411. package/dist/modes/interactive-engine/engine-monitor.js +13 -15
  412. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  413. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
  414. package/dist/modes/interactive-engine/input-form-host.js +7 -2
  415. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  416. package/dist/modes/interactive-engine/isolated-runtime.js +1 -1
  417. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  418. package/dist/modes/interactive-engine/protocol.d.ts +5 -0
  419. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  420. package/dist/modes/interactive-engine/protocol.js +9 -1
  421. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  422. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +2 -0
  423. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  424. package/dist/modes/interactive-engine/remote-model-catalog.js +33 -0
  425. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  426. package/dist/modes/rpc/rpc-client-api.d.ts +3 -1
  427. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  428. package/dist/modes/rpc/rpc-client-api.js +15 -0
  429. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  430. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  431. package/dist/modes/rpc/rpc-client-process.js +3 -0
  432. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  433. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  434. package/dist/modes/rpc/rpc-client.js +1 -0
  435. package/dist/modes/rpc/rpc-client.js.map +1 -1
  436. package/dist/modes/rpc/rpc-command-handler.d.ts +5 -1
  437. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  438. package/dist/modes/rpc/rpc-command-handler.js +62 -2
  439. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  440. package/dist/modes/rpc/rpc-extension-ui.d.ts +3 -1
  441. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  442. package/dist/modes/rpc/rpc-extension-ui.js +7 -2
  443. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  444. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  445. package/dist/modes/rpc/rpc-input-scheduler.js +1 -0
  446. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  447. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  448. package/dist/modes/rpc/rpc-mode.js +1 -0
  449. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  450. package/dist/modes/rpc/rpc-session-binding.d.ts +1 -0
  451. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  452. package/dist/modes/rpc/rpc-session-binding.js +66 -43
  453. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  454. package/dist/modes/rpc/rpc-types.d.ts +31 -0
  455. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  456. package/dist/modes/rpc/rpc-types.js.map +1 -1
  457. package/dist/package-manager-cli.d.ts +3 -3
  458. package/dist/package-manager-cli.d.ts.map +1 -1
  459. package/dist/package-manager-cli.js +55 -51
  460. package/dist/package-manager-cli.js.map +1 -1
  461. package/dist/rpc-entry.js +6 -2
  462. package/dist/rpc-entry.js.map +1 -1
  463. package/dist/self-update-plan.d.ts +12 -0
  464. package/dist/self-update-plan.d.ts.map +1 -0
  465. package/dist/self-update-plan.js +42 -0
  466. package/dist/self-update-plan.js.map +1 -0
  467. package/dist/utils/clipboard-native.d.ts +1 -0
  468. package/dist/utils/clipboard-native.d.ts.map +1 -1
  469. package/dist/utils/clipboard-native.js.map +1 -1
  470. package/dist/utils/clipboard.d.ts +3 -0
  471. package/dist/utils/clipboard.d.ts.map +1 -1
  472. package/dist/utils/clipboard.js +10 -0
  473. package/dist/utils/clipboard.js.map +1 -1
  474. package/dist/utils/compile-cache.d.ts +8 -0
  475. package/dist/utils/compile-cache.d.ts.map +1 -0
  476. package/dist/utils/compile-cache.js +31 -0
  477. package/dist/utils/compile-cache.js.map +1 -0
  478. package/dist/utils/version-check.d.ts +1 -0
  479. package/dist/utils/version-check.d.ts.map +1 -1
  480. package/dist/utils/version-check.js +3 -3
  481. package/dist/utils/version-check.js.map +1 -1
  482. package/docs/docs.json +2 -1
  483. package/docs/extensions.md +56 -4
  484. package/docs/keybindings.md +3 -0
  485. package/docs/llama-cpp.md +70 -0
  486. package/docs/models.md +8 -3
  487. package/docs/packages.md +4 -2
  488. package/docs/providers.md +37 -3
  489. package/docs/sdk.md +18 -0
  490. package/docs/settings.md +19 -3
  491. package/docs/tui.md +2 -0
  492. package/docs/usage.md +7 -0
  493. package/docs/workflows.md +34 -11
  494. package/npm-shrinkwrap.json +23 -23
  495. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client-api.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc-client-api.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,21 @@ export class RpcClientApi {
18
18
  async getAvailableModels() {
19
19
  return this.data(await this.request({ type: "get_available_models" })).models;
20
20
  }
21
+ async loginProvider(provider, signal) {
22
+ if (signal?.aborted)
23
+ return { provider, cancelled: true };
24
+ const cancel = () => { void this.cancelLoginProvider(provider).catch(() => { }); };
25
+ signal?.addEventListener("abort", cancel, { once: true });
26
+ try {
27
+ return this.data(await this.request({ type: "login_provider", provider }));
28
+ }
29
+ finally {
30
+ signal?.removeEventListener("abort", cancel);
31
+ }
32
+ }
33
+ async cancelLoginProvider(provider) {
34
+ await this.request({ type: "cancel_login_provider", provider });
35
+ }
21
36
  async logoutProvider(provider) {
22
37
  return this.data(await this.request({ type: "logout_provider", provider }));
23
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client-api.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, ImageContent, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { SessionStats } from \"../../core/agent-session.ts\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { VerbatimCompactionResult } from \"../../core/compaction/index.ts\";\nimport type { SessionEntry, SessionTreeNode } from \"../../core/session-manager.ts\";\nimport type {\n\tRpcCommand,\n\tRpcAutocompleteItem,\n\tRpcContextWindowInfo,\n\tRpcLogoutProviderResult,\n\tRpcModelRefreshResult,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSlashCommand,\n} from \"./rpc-types.ts\";\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\nexport type RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n}\n\nexport abstract class RpcClientApi {\n\tprotected abstract request(command: RpcCommandBody): Promise<RpcResponse>;\n\tprotected abstract data<T>(response: RpcResponse): T;\n\n\tasync prompt(message: string, images?: ImageContent[], streamingBehavior?: \"steer\" | \"followUp\"): Promise<void> {\n\t\tawait this.request({ type: \"prompt\", message, images, streamingBehavior });\n\t}\n\tasync steer(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"steer\", message, images }); }\n\tasync followUp(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"follow_up\", message, images }); }\n\tasync abort(): Promise<void> { await this.request({ type: \"abort\" }); }\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"new_session\", parentSession }));\n\t}\n\tasync getState(): Promise<RpcSessionState> { return this.data(await this.request({ type: \"get_state\" })); }\n\tasync setModel(provider: string, modelId: string): Promise<{ provider: string; id: string }> {\n\t\treturn this.data(await this.request({ type: \"set_model\", provider, modelId }));\n\t}\n\tasync cycleModel(direction?: \"forward\" | \"backward\"): Promise<{\n\t\tmodel: Model<Api>; thinkingLevel: ThinkingLevel; isScoped: boolean;\n\t} | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_model\", direction }));\n\t}\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\treturn this.data<{ models: ModelInfo[] }>(await this.request({ type: \"get_available_models\" })).models;\n\t}\n\tasync logoutProvider(provider: string): Promise<RpcLogoutProviderResult> {\n\t\treturn this.data(await this.request({ type: \"logout_provider\", provider }));\n\t}\n\n\tasync refreshModels(options: { timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {}): Promise<RpcModelRefreshResult> {\n\t\treturn this.data(await this.request({ type: \"refresh_models\", ...options }));\n\t}\n\tasync setThinkingLevel(level: ThinkingLevel): Promise<void> { await this.request({ type: \"set_thinking_level\", level }); }\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_thinking_level\" }));\n\t}\n\tasync getAvailableThinkingLevels(): Promise<ThinkingLevel[]> {\n\t\treturn this.data<{ levels: ThinkingLevel[] }>(\n\t\t\tawait this.request({ type: \"get_available_thinking_levels\" }),\n\t\t).levels;\n\t}\n\tasync setContextWindow(contextWindow: number | string): Promise<void> {\n\t\tthis.data(await this.request({ type: \"set_context_window\", contextWindow }));\n\t}\n\tasync getAvailableContextWindows(): Promise<RpcContextWindowInfo> {\n\t\treturn this.data(await this.request({ type: \"get_available_context_windows\" }));\n\t}\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_steering_mode\", mode }); }\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_follow_up_mode\", mode }); }\n\tasync compact(): Promise<VerbatimCompactionResult> { return this.data(await this.request({ type: \"compact\" })); }\n\tasync setAutoCompaction(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_compaction\", enabled }); }\n\tasync setAutoRetry(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_retry\", enabled }); }\n\tasync abortRetry(): Promise<void> { await this.request({ type: \"abort_retry\" }); }\n\tasync bash(command: string): Promise<BashResult> { return this.data(await this.request({ type: \"bash\", command })); }\n\tasync abortBash(): Promise<void> { await this.request({ type: \"abort_bash\" }); }\n\tasync getSessionStats(): Promise<SessionStats> { return this.data(await this.request({ type: \"get_session_stats\" })); }\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> { return this.data(await this.request({ type: \"export_html\", outputPath })); }\n\tasync switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"switch_session\", sessionPath }));\n\t}\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> { return this.data(await this.request({ type: \"fork\", entryId })); }\n\tasync clone(): Promise<{ cancelled: boolean }> { return this.data(await this.request({ type: \"clone\" })); }\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\treturn this.data<{ messages: Array<{ entryId: string; text: string }> }>(await this.request({ type: \"get_fork_messages\" })).messages;\n\t}\n\tasync getEntries(since?: string): Promise<{ entries: SessionEntry[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_entries\", since }));\n\t}\n\tasync getTree(): Promise<{ tree: SessionTreeNode[]; leafId: string | null }> { return this.data(await this.request({ type: \"get_tree\" })); }\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\treturn this.data<{ text: string | null }>(await this.request({ type: \"get_last_assistant_text\" })).text;\n\t}\n\tasync setSessionName(name: string): Promise<void> { await this.request({ type: \"set_session_name\", name }); }\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\treturn this.data<{ messages: AgentMessage[] }>(await this.request({ type: \"get_messages\" })).messages;\n\t}\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\treturn this.data<{ commands: RpcSlashCommand[] }>(await this.request({ type: \"get_commands\" })).commands;\n\t}\n\tasync getCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.data<{ completions: RpcAutocompleteItem[] | null }>(\n\t\t\tawait this.request({ type: \"get_command_completions\", commandName, argumentPrefix }),\n\t\t).completions;\n\t}\n}\n"]}
1
+ {"version":3,"file":"rpc-client-api.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, ImageContent, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { SessionStats } from \"../../core/agent-session.ts\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { VerbatimCompactionResult } from \"../../core/compaction/index.ts\";\nimport type { SessionEntry, SessionTreeNode } from \"../../core/session-manager.ts\";\nimport type {\n\tRpcCommand,\n\tRpcAutocompleteItem,\n\tRpcContextWindowInfo,\n\tRpcLoginProviderResult,\n\tRpcLogoutProviderResult,\n\tRpcModelRefreshResult,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSlashCommand,\n} from \"./rpc-types.ts\";\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\nexport type RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n}\n\nexport abstract class RpcClientApi {\n\tprotected abstract request(command: RpcCommandBody): Promise<RpcResponse>;\n\tprotected abstract data<T>(response: RpcResponse): T;\n\n\tasync prompt(message: string, images?: ImageContent[], streamingBehavior?: \"steer\" | \"followUp\"): Promise<void> {\n\t\tawait this.request({ type: \"prompt\", message, images, streamingBehavior });\n\t}\n\tasync steer(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"steer\", message, images }); }\n\tasync followUp(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"follow_up\", message, images }); }\n\tasync abort(): Promise<void> { await this.request({ type: \"abort\" }); }\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"new_session\", parentSession }));\n\t}\n\tasync getState(): Promise<RpcSessionState> { return this.data(await this.request({ type: \"get_state\" })); }\n\tasync setModel(provider: string, modelId: string): Promise<{ provider: string; id: string }> {\n\t\treturn this.data(await this.request({ type: \"set_model\", provider, modelId }));\n\t}\n\tasync cycleModel(direction?: \"forward\" | \"backward\"): Promise<{\n\t\tmodel: Model<Api>; thinkingLevel: ThinkingLevel; isScoped: boolean;\n\t} | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_model\", direction }));\n\t}\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\treturn this.data<{ models: ModelInfo[] }>(await this.request({ type: \"get_available_models\" })).models;\n\t}\n\tasync loginProvider(provider: string, signal?: AbortSignal): Promise<RpcLoginProviderResult> {\n\t\tif (signal?.aborted) return { provider, cancelled: true };\n\t\tconst cancel = () => { void this.cancelLoginProvider(provider).catch(() => {}); };\n\t\tsignal?.addEventListener(\"abort\", cancel, { once: true });\n\t\ttry {\n\t\t\treturn this.data(await this.request({ type: \"login_provider\", provider }));\n\t\t} finally {\n\t\t\tsignal?.removeEventListener(\"abort\", cancel);\n\t\t}\n\t}\n\tasync cancelLoginProvider(provider: string): Promise<void> {\n\t\tawait this.request({ type: \"cancel_login_provider\", provider });\n\t}\n\tasync logoutProvider(provider: string): Promise<RpcLogoutProviderResult> {\n\t\treturn this.data(await this.request({ type: \"logout_provider\", provider }));\n\t}\n\n\tasync refreshModels(options: { timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {}): Promise<RpcModelRefreshResult> {\n\t\treturn this.data(await this.request({ type: \"refresh_models\", ...options }));\n\t}\n\tasync setThinkingLevel(level: ThinkingLevel): Promise<void> { await this.request({ type: \"set_thinking_level\", level }); }\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_thinking_level\" }));\n\t}\n\tasync getAvailableThinkingLevels(): Promise<ThinkingLevel[]> {\n\t\treturn this.data<{ levels: ThinkingLevel[] }>(\n\t\t\tawait this.request({ type: \"get_available_thinking_levels\" }),\n\t\t).levels;\n\t}\n\tasync setContextWindow(contextWindow: number | string): Promise<void> {\n\t\tthis.data(await this.request({ type: \"set_context_window\", contextWindow }));\n\t}\n\tasync getAvailableContextWindows(): Promise<RpcContextWindowInfo> {\n\t\treturn this.data(await this.request({ type: \"get_available_context_windows\" }));\n\t}\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_steering_mode\", mode }); }\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_follow_up_mode\", mode }); }\n\tasync compact(): Promise<VerbatimCompactionResult> { return this.data(await this.request({ type: \"compact\" })); }\n\tasync setAutoCompaction(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_compaction\", enabled }); }\n\tasync setAutoRetry(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_retry\", enabled }); }\n\tasync abortRetry(): Promise<void> { await this.request({ type: \"abort_retry\" }); }\n\tasync bash(command: string): Promise<BashResult> { return this.data(await this.request({ type: \"bash\", command })); }\n\tasync abortBash(): Promise<void> { await this.request({ type: \"abort_bash\" }); }\n\tasync getSessionStats(): Promise<SessionStats> { return this.data(await this.request({ type: \"get_session_stats\" })); }\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> { return this.data(await this.request({ type: \"export_html\", outputPath })); }\n\tasync switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"switch_session\", sessionPath }));\n\t}\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> { return this.data(await this.request({ type: \"fork\", entryId })); }\n\tasync clone(): Promise<{ cancelled: boolean }> { return this.data(await this.request({ type: \"clone\" })); }\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\treturn this.data<{ messages: Array<{ entryId: string; text: string }> }>(await this.request({ type: \"get_fork_messages\" })).messages;\n\t}\n\tasync getEntries(since?: string): Promise<{ entries: SessionEntry[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_entries\", since }));\n\t}\n\tasync getTree(): Promise<{ tree: SessionTreeNode[]; leafId: string | null }> { return this.data(await this.request({ type: \"get_tree\" })); }\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\treturn this.data<{ text: string | null }>(await this.request({ type: \"get_last_assistant_text\" })).text;\n\t}\n\tasync setSessionName(name: string): Promise<void> { await this.request({ type: \"set_session_name\", name }); }\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\treturn this.data<{ messages: AgentMessage[] }>(await this.request({ type: \"get_messages\" })).messages;\n\t}\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\treturn this.data<{ commands: RpcSlashCommand[] }>(await this.request({ type: \"get_commands\" })).commands;\n\t}\n\tasync getCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.data<{ completions: RpcAutocompleteItem[] | null }>(\n\t\t\tawait this.request({ type: \"get_command_completions\", commandName, argumentPrefix }),\n\t\t).completions;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client-process.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAM9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAG7F,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,CA4BpF;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBxG;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,0BAA0B,KAAK,IAAI,CAAC,GAAG,SAAS,GAC1E;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAYpF"}
1
+ {"version":3,"file":"rpc-client-process.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAG7F,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,CA6BpF;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBxG;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,0BAA0B,KAAK,IAAI,CAAC,GAAG,SAAS,GAC1E;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAYpF"}
@@ -2,6 +2,7 @@ import { spawn } from "node:child_process";
2
2
  import { rm, writeFile } from "node:fs/promises";
3
3
  import { tmpdir } from "node:os";
4
4
  import { join } from "node:path";
5
+ import { flushPersistentCompileCache } from "../../utils/compile-cache.js";
5
6
  import { killProcessTree, trackDetachedChildPid, untrackDetachedChildPid } from "../../utils/shell.js";
6
7
  import { sleep } from "../../utils/sleep.js";
7
8
  import { INTERACTIVE_ENGINE_MAX_FRAME_BYTES } from "../interactive-engine/protocol.js";
@@ -10,6 +11,8 @@ export function spawnRpcClientProcess(options) {
10
11
  const guardianFile = options.interactiveEngine
11
12
  ? join(tmpdir(), `atomic-engine-guardian-${process.pid}-${crypto.randomUUID()}`)
12
13
  : undefined;
14
+ if (options.interactiveEngine)
15
+ flushPersistentCompileCache();
13
16
  const child = spawn(options.runtimeExecutable ?? "bun", [...(options.runtimeArgs ?? []), ...(options.cliPath ? [options.cliPath] : []), ...options.cliArgs], {
14
17
  cwd: options.cwd,
15
18
  env: {
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client-process.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn, type ChildProcess } from \"node:child_process\";\nimport { rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { killProcessTree, trackDetachedChildPid, untrackDetachedChildPid } from \"../../utils/shell.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES } from \"../interactive-engine/protocol.ts\";\n\nexport interface RpcClientProcessOptions {\n\tcliPath: string;\n\tcliArgs: string[];\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\tinteractiveEngine: boolean;\n}\n\nconst guardianFiles = new WeakMap<ChildProcess, string>();\n\nexport function spawnRpcClientProcess(options: RpcClientProcessOptions): ChildProcess {\n\tconst guardianFile = options.interactiveEngine\n\t\t? join(tmpdir(), `atomic-engine-guardian-${process.pid}-${crypto.randomUUID()}`)\n\t\t: undefined;\n\tconst child = spawn(\n\t\toptions.runtimeExecutable ?? \"bun\",\n\t\t[...(options.runtimeArgs ?? []), ...(options.cliPath ? [options.cliPath] : []), ...options.cliArgs],\n\t\t{\n\t\t\tcwd: options.cwd,\n\t\t\tenv: {\n\t\t\t\t...process.env,\n\t\t\t\t...options.env,\n\t\t\t\t...(options.interactiveEngine ? {\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_CHILD: \"1\",\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_HOST_PID: String(process.pid),\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_GUARD_FILE: guardianFile!,\n\t\t\t\t} : {}),\n\t\t\t},\n\t\t\tdetached: options.interactiveEngine && process.platform !== \"win32\",\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t},\n\t);\n\tif (guardianFile) guardianFiles.set(child, guardianFile);\n\tif (options.interactiveEngine && child.pid) {\n\t\ttrackDetachedChildPid(child.pid);\n\t\tchild.once(\"exit\", () => untrackDetachedChildPid(child.pid!));\n\t}\n\treturn child;\n}\n\nexport async function terminateRpcClientProcess(child: ChildProcess, processTree: boolean): Promise<void> {\n\tif (child.exitCode !== null || child.signalCode !== null) return;\n\tlet resolveExit!: () => void;\n\tconst exited = new Promise<void>((resolve) => { resolveExit = resolve; });\n\tchild.once(\"exit\", resolveExit);\n\tconst guardianFile = guardianFiles.get(child);\n\tchild.kill(\"SIGTERM\");\n\tif (await Promise.race([exited.then(() => true), sleep(250).then(() => false)])) {\n\t\tif (guardianFile) await rm(guardianFile, { force: true });\n\t\treturn;\n\t}\n\tif (processTree && guardianFile) {\n\t\tawait writeFile(guardianFile, \"stop\");\n\t\tif (await Promise.race([exited.then(() => true), sleep(500).then(() => false)])) {\n\t\t\tawait rm(guardianFile, { force: true });\n\t\t\treturn;\n\t\t}\n\t}\n\tif (processTree && child.pid) killProcessTree(child.pid);\n\telse child.kill(\"SIGKILL\");\n\tif (!(await Promise.race([exited.then(() => true), sleep(250).then(() => false)]))) {\n\t\tthrow new Error(`Agent process ${child.pid ?? \"unknown\"} did not exit after SIGKILL`);\n\t}\n\tif (guardianFile) await rm(guardianFile, { force: true });\n}\n\nexport function createInteractiveJsonlOptions(\n\tenabled: boolean,\n\tonDiagnostic: ((diagnostic: ActivityWatchdogDiagnostic) => void) | undefined,\n): { maxBytesPerTurn?: number; maxFrameBytes?: number; onOversizedLine?: () => void } {\n\tif (!enabled) return {};\n\treturn {\n\t\tmaxBytesPerTurn: 256 * 1024,\n\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\tonOversizedLine: () => onDiagnostic?.({\n\t\t\tactivity: undefined,\n\t\t\telapsedMs: 0,\n\t\t\tlevel: \"unresponsive\",\n\t\t\tmessage: \"Interactive engine violated the 1 MiB protocol frame limit; pending requests were cancelled\",\n\t\t}),\n\t};\n}\n"]}
1
+ {"version":3,"file":"rpc-client-process.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn, type ChildProcess } from \"node:child_process\";\nimport { rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { flushPersistentCompileCache } from \"../../utils/compile-cache.ts\";\nimport { killProcessTree, trackDetachedChildPid, untrackDetachedChildPid } from \"../../utils/shell.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES } from \"../interactive-engine/protocol.ts\";\n\nexport interface RpcClientProcessOptions {\n\tcliPath: string;\n\tcliArgs: string[];\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\tinteractiveEngine: boolean;\n}\n\nconst guardianFiles = new WeakMap<ChildProcess, string>();\n\nexport function spawnRpcClientProcess(options: RpcClientProcessOptions): ChildProcess {\n\tconst guardianFile = options.interactiveEngine\n\t\t? join(tmpdir(), `atomic-engine-guardian-${process.pid}-${crypto.randomUUID()}`)\n\t\t: undefined;\n\tif (options.interactiveEngine) flushPersistentCompileCache();\n\tconst child = spawn(\n\t\toptions.runtimeExecutable ?? \"bun\",\n\t\t[...(options.runtimeArgs ?? []), ...(options.cliPath ? [options.cliPath] : []), ...options.cliArgs],\n\t\t{\n\t\t\tcwd: options.cwd,\n\t\t\tenv: {\n\t\t\t\t...process.env,\n\t\t\t\t...options.env,\n\t\t\t\t...(options.interactiveEngine ? {\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_CHILD: \"1\",\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_HOST_PID: String(process.pid),\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_GUARD_FILE: guardianFile!,\n\t\t\t\t} : {}),\n\t\t\t},\n\t\t\tdetached: options.interactiveEngine && process.platform !== \"win32\",\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t},\n\t);\n\tif (guardianFile) guardianFiles.set(child, guardianFile);\n\tif (options.interactiveEngine && child.pid) {\n\t\ttrackDetachedChildPid(child.pid);\n\t\tchild.once(\"exit\", () => untrackDetachedChildPid(child.pid!));\n\t}\n\treturn child;\n}\n\nexport async function terminateRpcClientProcess(child: ChildProcess, processTree: boolean): Promise<void> {\n\tif (child.exitCode !== null || child.signalCode !== null) return;\n\tlet resolveExit!: () => void;\n\tconst exited = new Promise<void>((resolve) => { resolveExit = resolve; });\n\tchild.once(\"exit\", resolveExit);\n\tconst guardianFile = guardianFiles.get(child);\n\tchild.kill(\"SIGTERM\");\n\tif (await Promise.race([exited.then(() => true), sleep(250).then(() => false)])) {\n\t\tif (guardianFile) await rm(guardianFile, { force: true });\n\t\treturn;\n\t}\n\tif (processTree && guardianFile) {\n\t\tawait writeFile(guardianFile, \"stop\");\n\t\tif (await Promise.race([exited.then(() => true), sleep(500).then(() => false)])) {\n\t\t\tawait rm(guardianFile, { force: true });\n\t\t\treturn;\n\t\t}\n\t}\n\tif (processTree && child.pid) killProcessTree(child.pid);\n\telse child.kill(\"SIGKILL\");\n\tif (!(await Promise.race([exited.then(() => true), sleep(250).then(() => false)]))) {\n\t\tthrow new Error(`Agent process ${child.pid ?? \"unknown\"} did not exit after SIGKILL`);\n\t}\n\tif (guardianFile) await rm(guardianFile, { force: true });\n}\n\nexport function createInteractiveJsonlOptions(\n\tenabled: boolean,\n\tonDiagnostic: ((diagnostic: ActivityWatchdogDiagnostic) => void) | undefined,\n): { maxBytesPerTurn?: number; maxFrameBytes?: number; onOversizedLine?: () => void } {\n\tif (!enabled) return {};\n\treturn {\n\t\tmaxBytesPerTurn: 256 * 1024,\n\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\tonOversizedLine: () => onDiagnostic?.({\n\t\t\tactivity: undefined,\n\t\t\telapsedMs: 0,\n\t\t\tlevel: \"unresponsive\",\n\t\t\tmessage: \"Interactive engine violated the 1 MiB protocol frame limit; pending requests were cancelled\",\n\t\t}),\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@ function restartArgs(args, sessionFile) {
37
37
  */
38
38
  const LONG_LIVED_COMMANDS = new Set([
39
39
  "prompt",
40
+ "login_provider",
40
41
  "steer",
41
42
  "follow_up",
42
43
  "bash",
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type { ChildProcess } from \"node:child_process\";\nimport type { ImageContent } from \"@earendil-works/pi-ai/compat\";\nimport { BoundedWriter } from \"./bounded-writer.ts\";\nimport { attachJsonlLineReader, serializeJsonLine } from \"./jsonl.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { InteractiveEngineMonitor } from \"../interactive-engine/engine-monitor.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES, serializeInteractiveEngineFrame, type EngineKeybindingState, type InteractiveEngineCommand, type InteractiveEngineMessage } from \"../interactive-engine/protocol.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport { createInteractiveJsonlOptions, spawnRpcClientProcess, terminateRpcClientProcess } from \"./rpc-client-process.ts\";\nimport { RpcClientApi, type RpcCommandBody } from \"./rpc-client-api.ts\";\nimport { RpcEventBuffer } from \"./rpc-event-buffer.ts\";\nimport { collectRpcEvents, waitForRpcIdle } from \"./rpc-client-waits.ts\";\nimport type { RpcCommand, RpcExtensionUIRequest, RpcExtensionUIResponse, RpcEvent, RpcResponse } from \"./rpc-types.ts\";\nexport type { ModelInfo, RpcCommandBody } from \"./rpc-client-api.ts\";\nexport type { RpcContextWindowInfo, RpcEvent } from \"./rpc-types.ts\";\n\n\nfunction restartArgs(args: readonly string[] | undefined, sessionFile: string | undefined): string[] {\n\tconst result: string[] = [];\n\tfor (let index = 0; index < (args?.length ?? 0); index += 1) {\n\t\tconst value = args![index]!;\n\t\tif (value === \"--no-session\") continue;\n\t\tif (value === \"--session\") { index += 1; continue; }\n\t\tresult.push(value);\n\t}\n\tresult.push(sessionFile ? \"--session\" : \"--no-session\");\n\tif (sessionFile) result.push(sessionFile);\n\treturn result;\n}\nexport interface RpcClientOptions {\n\tcliPath?: string;\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\tprovider?: string;\n\tmodel?: string;\n\tcontextWindow?: number | string;\n\targs?: string[];\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\t/**\n\t * Bounded deadline (ms) applied to short metadata/control requests. Long-lived\n\t * commands (see LONG_LIVED_COMMANDS) never use this timer. Defaults to 30s.\n\t */\n\trequestTimeoutMs?: number;\n\tinteractiveEngine?: {\n\t\tonDiagnostic: (diagnostic: ActivityWatchdogDiagnostic) => void;\n\t\tonActivityChange?: (active: boolean) => void;\n\t};\n}\n\n/**\n * Commands whose response is legitimately gated on human/agent interaction or a\n * turn boundary and therefore must not be subject to the generic request\n * timeout: interactive prompts and custom-UI pickers (routed through `prompt`),\n * queued turn-boundary sends (`steer`/`follow_up`), long-running shell and\n * compaction work, and session-tree navigation/mutation that can open pickers.\n *\n * Failure detection is unaffected: engine exit, transport violations, aborts,\n * generation replacement, and explicit stop all reject pending requests via\n * rejectPendingRequests/failTransport independently of any timer.\n */\nconst LONG_LIVED_COMMANDS: ReadonlySet<string> = new Set<string>([\n\t\"prompt\",\n\t\"steer\",\n\t\"follow_up\",\n\t\"bash\",\n\t\"user_bash\",\n\t\"compact\",\n\t\"fork\",\n\t\"clone\",\n\t\"switch_session\",\n\t\"new_session\",\n\t\"import_session\",\n\t\"navigate_tree\",\n\t\"invoke_shortcut\",\n]);\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\n\n\nexport type RpcEventListener = (event: RpcEvent) => void;\n\n\nexport class RpcClient extends RpcClientApi {\n\tprivate process: ChildProcess | null = null;\n\tprivate stopReadingStdout: (() => void) | null = null;\n\tprivate eventListeners: RpcEventListener[] = [];\n\tprivate extensionUIListeners: Array<(request: RpcExtensionUIRequest) => void> = [];\n\tprivate pendingExtensionUIRequests: RpcExtensionUIRequest[] = [];\n\tprivate engineMessageListeners: Array<(message: InteractiveEngineMessage) => void> = [];\n\tprivate latestEngineKeybindingState: EngineKeybindingState | undefined;\n\tprivate pendingEngineMessages: InteractiveEngineMessage[] = [];\n\tprivate pendingEngineMessageBytes = 0;\n\tprivate pendingRequests: Map<string, { resolve: (response: RpcResponse) => void; reject: (error: Error) => void }> =\n\t\tnew Map();\n\tprivate requestId = 0;\n\tprivate stderr = \"\";\n\tprivate exitError: Error | null = null;\n\tprivate engineMonitor: InteractiveEngineMonitor | undefined;\n\tprivate eventBuffer: RpcEventBuffer | undefined;\n\tprivate stdinWriter: BoundedWriter | undefined;\n\tprivate generation = 0;\n\tprivate readonly activeActivityIds = new Set<string>();\n\tprivate enginePid: number | undefined;\n\n\tdeclare private options: RpcClientOptions;\n\n\tconstructor(options: RpcClientOptions = {}) {\n\t\tsuper();\n\t\tthis.options = options;\n\t}\n\n\tasync start(): Promise<void> {\n\t\tif (this.process) {\n\t\t\tthrow new Error(\"Client already started\");\n\t\t}\n\n\t\tconst cliPath = this.options.cliPath ?? \"dist/cli.js\";\n\t\tconst args = [\"--mode\", \"rpc\"];\n\n\t\tif (this.options.provider) {\n\t\t\targs.push(\"--provider\", this.options.provider);\n\t\t}\n\t\tif (this.options.model) {\n\t\t\targs.push(\"--model\", this.options.model);\n\t\t}\n\t\tif (this.options.contextWindow !== undefined) {\n\t\t\targs.push(\"--context-window\", String(this.options.contextWindow));\n\t\t}\n\t\tif (this.options.args) {\n\t\t\targs.push(...this.options.args);\n\t\t}\n\n\t\tconst generation = ++this.generation;\n\t\tthis.exitError = null;\n\t\tthis.stderr = \"\";\n\t\tthis.activeActivityIds.clear();\n\t\tthis.enginePid = undefined;\n\t\tthis.engineMonitor = this.options.interactiveEngine\n\t\t\t? new InteractiveEngineMonitor(\n\t\t\t\t\tthis.options.interactiveEngine.onDiagnostic,\n\t\t\t\t\t(message) => this.observeInteractiveEngineMessage(message),\n\t\t\t\t)\n\t\t\t: undefined;\n\t\tthis.eventBuffer = this.engineMonitor ? new RpcEventBuffer((event) => this.emitEvent(event)) : undefined;\n\t\tconst childProcess = spawnRpcClientProcess({\n\t\t\tcliPath,\n\t\t\tcliArgs: args,\n\t\t\tcwd: this.options.cwd,\n\t\t\tenv: this.options.env,\n\t\t\truntimeExecutable: this.options.runtimeExecutable,\n\t\t\truntimeArgs: this.options.runtimeArgs,\n\t\t\tinteractiveEngine: this.engineMonitor !== undefined,\n\t\t});\n\t\tthis.process = childProcess;\n\t\tthis.stdinWriter = new BoundedWriter(childProcess.stdin!, {\n\t\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t\tmaxQueuedBytes: 2 * INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t});\n\n\t\tchildProcess.once(\"exit\", (code, signal) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst error = this.createProcessExitError(code, signal);\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.activeActivityIds.clear();\n\t\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.once(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stdin?.on(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stderr?.on(\"data\", (data) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst next = this.stderr + data.toString();\n\t\t\tthis.stderr = Buffer.byteLength(next, \"utf8\") <= 256 * 1024\n\t\t\t\t? next\n\t\t\t\t: `${Buffer.from(next).subarray(-256 * 1024).toString(\"utf8\")}\\n[stderr truncated]`;\n\t\t\tprocess.stderr.write(data);\n\t\t});\n\t\tconst readerOptions = createInteractiveJsonlOptions(\n\t\t\tthis.engineMonitor !== undefined,\n\t\t\tthis.options.interactiveEngine?.onDiagnostic,\n\t\t);\n\t\tthis.stopReadingStdout = attachJsonlLineReader(childProcess.stdout!, (line) => {\n\t\t\tif (generation === this.generation) this.handleLine(line);\n\t\t}, {\n\t\t\t...readerOptions,\n\t\t\tonOversizedLine: () => {\n\t\t\t\treaderOptions.onOversizedLine?.();\n\t\t\t\tif (generation === this.generation) this.failTransport(new Error(\"Interactive engine emitted an oversized RPC frame\"));\n\t\t\t},\n\t\t});\n\t\tif (this.engineMonitor) await this.engineMonitor.waitUntilReady();\n\t\telse await sleep(100);\n\n\t\tif (generation !== this.generation || this.process?.exitCode !== null) {\n\t\t\tthrow new Error(`Agent process exited immediately. Stderr: ${this.stderr}`);\n\t\t}\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tconst child = this.process;\n\t\tif (!child) return;\n\t\tthis.invalidateEngineShortcuts();\n\t\tconst terminateTree = this.engineMonitor !== undefined;\n\t\tthis.stopReadingStdout?.();\n\t\tthis.engineMonitor?.stop();\n\t\tthis.stdinWriter?.close(new Error(\"Agent process stopped\"));\n\t\tthis.engineMonitor = undefined;\n\t\tthis.stopReadingStdout = null;\n\t\tthis.stdinWriter = undefined;\n\t\tthis.process = null;\n\t\tthis.generation += 1;\n\t\tawait terminateRpcClientProcess(child, terminateTree);\n\t\tthis.rejectPendingRequests(new Error(\"Agent process stopped\"));\n\t\tthis.eventBuffer?.dispose();\n\t\tthis.eventBuffer = undefined;\n\t\tthis.activeActivityIds.clear();\n\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t}\n\n\t/** Subscribe to agent events. */\n\tonEvent(listener: RpcEventListener): () => void {\n\t\tthis.eventListeners.push(listener);\n\t\treturn () => {\n\t\t\tconst index = this.eventListeners.indexOf(listener);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.eventListeners.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n\n\tonExtensionUIRequest(listener: (request: RpcExtensionUIRequest) => void): () => void {\n\t\tthis.extensionUIListeners.push(listener);\n\t\tfor (const request of this.pendingExtensionUIRequests.splice(0)) listener(request);\n\t\treturn () => {\n\t\t\tconst index = this.extensionUIListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.extensionUIListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tasync respondExtensionUI(response: RpcExtensionUIResponse): Promise<void> {\n\t\tawait this.requireWriter().write(serializeJsonLine(response));\n\t}\n\n\tonInteractiveEngineMessage(listener: (message: InteractiveEngineMessage) => void): () => void {\n\t\tthis.engineMessageListeners.push(listener);\n\t\tfor (const message of this.pendingEngineMessages.splice(0)) listener(message);\n\t\tthis.pendingEngineMessageBytes = 0;\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tonInteractiveEngineKeybindingState(listener: (state: EngineKeybindingState) => void): () => void {\n\t\tconst messageListener = (message: InteractiveEngineMessage): void => {\n\t\t\tif (message.type === \"engine_keybindings_reloaded\") listener(message.state);\n\t\t};\n\t\tthis.engineMessageListeners.push(messageListener);\n\t\tif (this.latestEngineKeybindingState) listener(this.latestEngineKeybindingState);\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(messageListener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tsendInteractiveEngineCommand(command: InteractiveEngineCommand): void {\n\t\tconst writer = this.stdinWriter;\n\t\tif (!writer) return;\n\t\tconst frame = serializeInteractiveEngineFrame(command);\n\t\tif (command.type === \"engine_custom_render\" || command.type === \"engine_tool_render\" || command.type === \"engine_message_render\") {\n\t\t\twriter.offerLatest(`render:${command.componentId}`, frame);\n\t\t\treturn;\n\t\t}\n\t\tthis.bestEffort(writer.write(frame), `engine command ${command.type}`);\n\t}\n\twaitForInteractiveEngineBound(): Promise<void> { return this.engineMonitor?.waitUntilBound() ?? Promise.resolve(); }\n\tgetEnginePid(): number | undefined { return this.enginePid; }\n\tgetGeneration(): number { return this.generation; }\n\n\tasync restart(sessionFile: string | undefined): Promise<void> {\n\t\tawait this.stop();\n\t\tthis.options = { ...this.options, args: restartArgs(this.options.args, sessionFile) };\n\t\tawait this.start();\n\t\tawait this.waitForInteractiveEngineBound();\n\t}\n\n\tasync requestInternal<T>(command: RpcCommandBody): Promise<T> {\n\t\treturn this.data<T>(await this.request(command));\n\t}\n\tgetStderr(): string {\n\t\treturn this.stderr;\n\t}\n\n\n\twaitForIdle(timeout = 60000): Promise<void> {\n\t\treturn waitForRpcIdle(this, timeout);\n\t}\n\tcollectEvents(timeout = 60000): Promise<RpcEvent[]> {\n\t\treturn collectRpcEvents(this, timeout);\n\t}\n\tasync promptAndWait(message: string, images?: ImageContent[], timeout = 60000): Promise<RpcEvent[]> {\n\t\tconst eventsPromise = this.collectEvents(timeout);\n\t\tawait this.prompt(message, images);\n\t\treturn eventsPromise;\n\t}\n\tprivate handleLine(line: string): void {\n\t\tif (this.engineMonitor?.handleLine(line)) return;\n\t\ttry {\n\t\t\tconst data = JSON.parse(line) as { type?: string; id?: string };\n\t\t\tif (data.type === \"extension_ui_request\") {\n\t\t\t\tconst request = data as RpcExtensionUIRequest;\n\t\t\t\tif (this.extensionUIListeners.length === 0) this.pendingExtensionUIRequests.push(request);\n\t\t\t\tfor (const listener of this.extensionUIListeners) listener(request);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (data.type === \"response\" && data.id && this.pendingRequests.has(data.id)) {\n\t\t\t\tconst pending = this.pendingRequests.get(data.id)!;\n\t\t\t\tthis.pendingRequests.delete(data.id);\n\t\t\t\tpending.resolve(data as RpcResponse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst event = data as RpcEvent;\n\t\t\tif (this.eventBuffer) this.eventBuffer.enqueue(event);\n\t\t\telse this.emitEvent(event);\n\t\t} catch {\n\t\t\tif (this.engineMonitor) this.failTransport(new Error(\"Interactive engine emitted malformed JSONL\"));\n\t\t}\n\t}\n\tprivate emitEvent(event: RpcEvent): void {\n\t\tfor (const listener of this.eventListeners) listener(event);\n\t}\n\tprivate emitInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (this.engineMessageListeners.length === 0 && message.type.startsWith(\"engine_custom_\")) {\n\t\t\tconst bytes = Buffer.byteLength(JSON.stringify(message), \"utf8\");\n\t\t\twhile (this.pendingEngineMessages.length > 0 && this.pendingEngineMessageBytes + bytes > INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tconst removed = this.pendingEngineMessages.shift()!;\n\t\t\t\tthis.pendingEngineMessageBytes -= Buffer.byteLength(JSON.stringify(removed), \"utf8\");\n\t\t\t}\n\t\t\tif (bytes <= INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tthis.pendingEngineMessages.push(message);\n\t\t\t\tthis.pendingEngineMessageBytes += bytes;\n\t\t\t}\n\t\t}\n\t\tfor (const listener of this.engineMessageListeners) listener(message);\n\t}\n\tprivate createProcessExitError(code: number | null, signal: NodeJS.Signals | null): Error {\n\t\treturn new Error(`Agent process exited (code=${code} signal=${signal}). Stderr: ${this.stderr}`);\n\t}\n\tprivate invalidateEngineShortcuts(): void {\n\t\tif (!this.latestEngineKeybindingState || this.latestEngineKeybindingState.shortcuts.length === 0) return;\n\t\tconst state: EngineKeybindingState = { ...this.latestEngineKeybindingState, shortcuts: [] };\n\t\tthis.latestEngineKeybindingState = state;\n\t\tthis.emitInteractiveEngineMessage({ type: \"engine_keybindings_reloaded\", state });\n\t}\n\tprivate observeInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (message.type === \"engine_ready\") this.enginePid = message.pid;\n\t\tif (message.type === \"engine_keybindings_reloaded\") this.latestEngineKeybindingState = message.state;\n\t\tif (message.type === \"engine_activity_started\") this.activeActivityIds.add(message.activity.id);\n\t\telse if (message.type === \"engine_activity_finished\") this.activeActivityIds.delete(message.activityId);\n\t\tthis.options.interactiveEngine?.onActivityChange?.(this.activeActivityIds.size > 0);\n\t\tthis.emitInteractiveEngineMessage(message);\n\t}\n\tprivate rejectPendingRequests(error: Error): void {\n\t\tfor (const { reject } of this.pendingRequests.values()) reject(error);\n\t\tthis.pendingRequests.clear();\n\t}\n\tprivate failTransport(error: Error): void {\n\t\tthis.exitError = error;\n\t\tthis.stdinWriter?.close(error);\n\t\tthis.engineMonitor?.fail(error);\n\t\tthis.rejectPendingRequests(error);\n\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\", message: error.message,\n\t\t});\n\t}\n\tprivate requireWriter(): BoundedWriter {\n\t\tif (!this.stdinWriter) throw new Error(\"Agent process stdin is not writable\");\n\t\treturn this.stdinWriter;\n\t}\n\tprivate bestEffort(operation: Promise<void>, label: string): void {\n\t\tvoid operation.catch((error: Error) => {\n\t\t\tif (!this.process || this.exitError) return;\n\t\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\",\n\t\t\t\tmessage: `Interactive engine ${label} failed: ${error.message}`,\n\t\t\t});\n\t\t});\n\t}\n\tprotected async request(command: RpcCommandBody): Promise<RpcResponse> {\n\t\tconst childProcess = this.process;\n\t\tif (!childProcess) throw new Error(\"Client not started\");\n\t\tif (this.exitError) throw this.exitError;\n\t\tif (childProcess.exitCode !== null) {\n\t\t\tconst error = this.createProcessExitError(childProcess.exitCode, childProcess.signalCode);\n\t\t\tthis.exitError = error;\n\t\t\tthrow error;\n\t\t}\n\t\tconst id = `req_${++this.requestId}`;\n\t\tconst fullCommand = { ...command, id } as RpcCommand;\n\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\tlet rejectResponse!: (error: Error) => void;\n\t\tconst response = new Promise<RpcResponse>((resolve, reject) => {\n\t\t\trejectResponse = reject;\n\t\t\tthis.pendingRequests.set(id, {\n\t\t\t\tresolve: (value) => { if (timeout) clearTimeout(timeout); resolve(value); },\n\t\t\t\treject: (error) => { if (timeout) clearTimeout(timeout); reject(error); },\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tawait this.requireWriter().write(serializeJsonLine(fullCommand));\n\t\t} catch (error) {\n\t\t\tthis.pendingRequests.delete(id);\n\t\t\trejectResponse(error instanceof Error ? error : new Error(String(error)));\n\t\t\treturn response;\n\t\t}\n\t\tif (this.pendingRequests.has(id) && !LONG_LIVED_COMMANDS.has(command.type)) {\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\trejectResponse(new Error(`Timeout waiting for response to ${command.type}. Stderr: ${this.stderr}`));\n\t\t\t}, this.options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS);\n\t\t}\n\t\treturn response;\n\t}\n\tprivate assertSuccess(response: RpcResponse): void {\n\t\tif (!response.success) throw new Error(response.error);\n\t}\n\tprotected data<T>(response: RpcResponse): T {\n\t\tthis.assertSuccess(response);\n\t\tconst successResponse = response as Extract<RpcResponse, { success: true; data: unknown }>;\n\t\treturn successResponse.data as T;\n\t}\n}\n"]}
1
+ {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type { ChildProcess } from \"node:child_process\";\nimport type { ImageContent } from \"@earendil-works/pi-ai/compat\";\nimport { BoundedWriter } from \"./bounded-writer.ts\";\nimport { attachJsonlLineReader, serializeJsonLine } from \"./jsonl.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { InteractiveEngineMonitor } from \"../interactive-engine/engine-monitor.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES, serializeInteractiveEngineFrame, type EngineKeybindingState, type InteractiveEngineCommand, type InteractiveEngineMessage } from \"../interactive-engine/protocol.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport { createInteractiveJsonlOptions, spawnRpcClientProcess, terminateRpcClientProcess } from \"./rpc-client-process.ts\";\nimport { RpcClientApi, type RpcCommandBody } from \"./rpc-client-api.ts\";\nimport { RpcEventBuffer } from \"./rpc-event-buffer.ts\";\nimport { collectRpcEvents, waitForRpcIdle } from \"./rpc-client-waits.ts\";\nimport type { RpcCommand, RpcExtensionUIRequest, RpcExtensionUIResponse, RpcEvent, RpcResponse } from \"./rpc-types.ts\";\nexport type { ModelInfo, RpcCommandBody } from \"./rpc-client-api.ts\";\nexport type { RpcContextWindowInfo, RpcEvent } from \"./rpc-types.ts\";\n\n\nfunction restartArgs(args: readonly string[] | undefined, sessionFile: string | undefined): string[] {\n\tconst result: string[] = [];\n\tfor (let index = 0; index < (args?.length ?? 0); index += 1) {\n\t\tconst value = args![index]!;\n\t\tif (value === \"--no-session\") continue;\n\t\tif (value === \"--session\") { index += 1; continue; }\n\t\tresult.push(value);\n\t}\n\tresult.push(sessionFile ? \"--session\" : \"--no-session\");\n\tif (sessionFile) result.push(sessionFile);\n\treturn result;\n}\nexport interface RpcClientOptions {\n\tcliPath?: string;\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\tprovider?: string;\n\tmodel?: string;\n\tcontextWindow?: number | string;\n\targs?: string[];\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\t/**\n\t * Bounded deadline (ms) applied to short metadata/control requests. Long-lived\n\t * commands (see LONG_LIVED_COMMANDS) never use this timer. Defaults to 30s.\n\t */\n\trequestTimeoutMs?: number;\n\tinteractiveEngine?: {\n\t\tonDiagnostic: (diagnostic: ActivityWatchdogDiagnostic) => void;\n\t\tonActivityChange?: (active: boolean) => void;\n\t};\n}\n\n/**\n * Commands whose response is legitimately gated on human/agent interaction or a\n * turn boundary and therefore must not be subject to the generic request\n * timeout: interactive prompts and custom-UI pickers (routed through `prompt`),\n * queued turn-boundary sends (`steer`/`follow_up`), long-running shell and\n * compaction work, and session-tree navigation/mutation that can open pickers.\n *\n * Failure detection is unaffected: engine exit, transport violations, aborts,\n * generation replacement, and explicit stop all reject pending requests via\n * rejectPendingRequests/failTransport independently of any timer.\n */\nconst LONG_LIVED_COMMANDS: ReadonlySet<string> = new Set<string>([\n\t\"prompt\",\n\t\"login_provider\",\n\t\"steer\",\n\t\"follow_up\",\n\t\"bash\",\n\t\"user_bash\",\n\t\"compact\",\n\t\"fork\",\n\t\"clone\",\n\t\"switch_session\",\n\t\"new_session\",\n\t\"import_session\",\n\t\"navigate_tree\",\n\t\"invoke_shortcut\",\n]);\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\n\n\nexport type RpcEventListener = (event: RpcEvent) => void;\n\n\nexport class RpcClient extends RpcClientApi {\n\tprivate process: ChildProcess | null = null;\n\tprivate stopReadingStdout: (() => void) | null = null;\n\tprivate eventListeners: RpcEventListener[] = [];\n\tprivate extensionUIListeners: Array<(request: RpcExtensionUIRequest) => void> = [];\n\tprivate pendingExtensionUIRequests: RpcExtensionUIRequest[] = [];\n\tprivate engineMessageListeners: Array<(message: InteractiveEngineMessage) => void> = [];\n\tprivate latestEngineKeybindingState: EngineKeybindingState | undefined;\n\tprivate pendingEngineMessages: InteractiveEngineMessage[] = [];\n\tprivate pendingEngineMessageBytes = 0;\n\tprivate pendingRequests: Map<string, { resolve: (response: RpcResponse) => void; reject: (error: Error) => void }> =\n\t\tnew Map();\n\tprivate requestId = 0;\n\tprivate stderr = \"\";\n\tprivate exitError: Error | null = null;\n\tprivate engineMonitor: InteractiveEngineMonitor | undefined;\n\tprivate eventBuffer: RpcEventBuffer | undefined;\n\tprivate stdinWriter: BoundedWriter | undefined;\n\tprivate generation = 0;\n\tprivate readonly activeActivityIds = new Set<string>();\n\tprivate enginePid: number | undefined;\n\n\tdeclare private options: RpcClientOptions;\n\n\tconstructor(options: RpcClientOptions = {}) {\n\t\tsuper();\n\t\tthis.options = options;\n\t}\n\n\tasync start(): Promise<void> {\n\t\tif (this.process) {\n\t\t\tthrow new Error(\"Client already started\");\n\t\t}\n\n\t\tconst cliPath = this.options.cliPath ?? \"dist/cli.js\";\n\t\tconst args = [\"--mode\", \"rpc\"];\n\n\t\tif (this.options.provider) {\n\t\t\targs.push(\"--provider\", this.options.provider);\n\t\t}\n\t\tif (this.options.model) {\n\t\t\targs.push(\"--model\", this.options.model);\n\t\t}\n\t\tif (this.options.contextWindow !== undefined) {\n\t\t\targs.push(\"--context-window\", String(this.options.contextWindow));\n\t\t}\n\t\tif (this.options.args) {\n\t\t\targs.push(...this.options.args);\n\t\t}\n\n\t\tconst generation = ++this.generation;\n\t\tthis.exitError = null;\n\t\tthis.stderr = \"\";\n\t\tthis.activeActivityIds.clear();\n\t\tthis.enginePid = undefined;\n\t\tthis.engineMonitor = this.options.interactiveEngine\n\t\t\t? new InteractiveEngineMonitor(\n\t\t\t\t\tthis.options.interactiveEngine.onDiagnostic,\n\t\t\t\t\t(message) => this.observeInteractiveEngineMessage(message),\n\t\t\t\t)\n\t\t\t: undefined;\n\t\tthis.eventBuffer = this.engineMonitor ? new RpcEventBuffer((event) => this.emitEvent(event)) : undefined;\n\t\tconst childProcess = spawnRpcClientProcess({\n\t\t\tcliPath,\n\t\t\tcliArgs: args,\n\t\t\tcwd: this.options.cwd,\n\t\t\tenv: this.options.env,\n\t\t\truntimeExecutable: this.options.runtimeExecutable,\n\t\t\truntimeArgs: this.options.runtimeArgs,\n\t\t\tinteractiveEngine: this.engineMonitor !== undefined,\n\t\t});\n\t\tthis.process = childProcess;\n\t\tthis.stdinWriter = new BoundedWriter(childProcess.stdin!, {\n\t\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t\tmaxQueuedBytes: 2 * INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t});\n\n\t\tchildProcess.once(\"exit\", (code, signal) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst error = this.createProcessExitError(code, signal);\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.activeActivityIds.clear();\n\t\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.once(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stdin?.on(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stderr?.on(\"data\", (data) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst next = this.stderr + data.toString();\n\t\t\tthis.stderr = Buffer.byteLength(next, \"utf8\") <= 256 * 1024\n\t\t\t\t? next\n\t\t\t\t: `${Buffer.from(next).subarray(-256 * 1024).toString(\"utf8\")}\\n[stderr truncated]`;\n\t\t\tprocess.stderr.write(data);\n\t\t});\n\t\tconst readerOptions = createInteractiveJsonlOptions(\n\t\t\tthis.engineMonitor !== undefined,\n\t\t\tthis.options.interactiveEngine?.onDiagnostic,\n\t\t);\n\t\tthis.stopReadingStdout = attachJsonlLineReader(childProcess.stdout!, (line) => {\n\t\t\tif (generation === this.generation) this.handleLine(line);\n\t\t}, {\n\t\t\t...readerOptions,\n\t\t\tonOversizedLine: () => {\n\t\t\t\treaderOptions.onOversizedLine?.();\n\t\t\t\tif (generation === this.generation) this.failTransport(new Error(\"Interactive engine emitted an oversized RPC frame\"));\n\t\t\t},\n\t\t});\n\t\tif (this.engineMonitor) await this.engineMonitor.waitUntilReady();\n\t\telse await sleep(100);\n\n\t\tif (generation !== this.generation || this.process?.exitCode !== null) {\n\t\t\tthrow new Error(`Agent process exited immediately. Stderr: ${this.stderr}`);\n\t\t}\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tconst child = this.process;\n\t\tif (!child) return;\n\t\tthis.invalidateEngineShortcuts();\n\t\tconst terminateTree = this.engineMonitor !== undefined;\n\t\tthis.stopReadingStdout?.();\n\t\tthis.engineMonitor?.stop();\n\t\tthis.stdinWriter?.close(new Error(\"Agent process stopped\"));\n\t\tthis.engineMonitor = undefined;\n\t\tthis.stopReadingStdout = null;\n\t\tthis.stdinWriter = undefined;\n\t\tthis.process = null;\n\t\tthis.generation += 1;\n\t\tawait terminateRpcClientProcess(child, terminateTree);\n\t\tthis.rejectPendingRequests(new Error(\"Agent process stopped\"));\n\t\tthis.eventBuffer?.dispose();\n\t\tthis.eventBuffer = undefined;\n\t\tthis.activeActivityIds.clear();\n\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t}\n\n\t/** Subscribe to agent events. */\n\tonEvent(listener: RpcEventListener): () => void {\n\t\tthis.eventListeners.push(listener);\n\t\treturn () => {\n\t\t\tconst index = this.eventListeners.indexOf(listener);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.eventListeners.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n\n\tonExtensionUIRequest(listener: (request: RpcExtensionUIRequest) => void): () => void {\n\t\tthis.extensionUIListeners.push(listener);\n\t\tfor (const request of this.pendingExtensionUIRequests.splice(0)) listener(request);\n\t\treturn () => {\n\t\t\tconst index = this.extensionUIListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.extensionUIListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tasync respondExtensionUI(response: RpcExtensionUIResponse): Promise<void> {\n\t\tawait this.requireWriter().write(serializeJsonLine(response));\n\t}\n\n\tonInteractiveEngineMessage(listener: (message: InteractiveEngineMessage) => void): () => void {\n\t\tthis.engineMessageListeners.push(listener);\n\t\tfor (const message of this.pendingEngineMessages.splice(0)) listener(message);\n\t\tthis.pendingEngineMessageBytes = 0;\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tonInteractiveEngineKeybindingState(listener: (state: EngineKeybindingState) => void): () => void {\n\t\tconst messageListener = (message: InteractiveEngineMessage): void => {\n\t\t\tif (message.type === \"engine_keybindings_reloaded\") listener(message.state);\n\t\t};\n\t\tthis.engineMessageListeners.push(messageListener);\n\t\tif (this.latestEngineKeybindingState) listener(this.latestEngineKeybindingState);\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(messageListener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tsendInteractiveEngineCommand(command: InteractiveEngineCommand): void {\n\t\tconst writer = this.stdinWriter;\n\t\tif (!writer) return;\n\t\tconst frame = serializeInteractiveEngineFrame(command);\n\t\tif (command.type === \"engine_custom_render\" || command.type === \"engine_tool_render\" || command.type === \"engine_message_render\") {\n\t\t\twriter.offerLatest(`render:${command.componentId}`, frame);\n\t\t\treturn;\n\t\t}\n\t\tthis.bestEffort(writer.write(frame), `engine command ${command.type}`);\n\t}\n\twaitForInteractiveEngineBound(): Promise<void> { return this.engineMonitor?.waitUntilBound() ?? Promise.resolve(); }\n\tgetEnginePid(): number | undefined { return this.enginePid; }\n\tgetGeneration(): number { return this.generation; }\n\n\tasync restart(sessionFile: string | undefined): Promise<void> {\n\t\tawait this.stop();\n\t\tthis.options = { ...this.options, args: restartArgs(this.options.args, sessionFile) };\n\t\tawait this.start();\n\t\tawait this.waitForInteractiveEngineBound();\n\t}\n\n\tasync requestInternal<T>(command: RpcCommandBody): Promise<T> {\n\t\treturn this.data<T>(await this.request(command));\n\t}\n\tgetStderr(): string {\n\t\treturn this.stderr;\n\t}\n\n\n\twaitForIdle(timeout = 60000): Promise<void> {\n\t\treturn waitForRpcIdle(this, timeout);\n\t}\n\tcollectEvents(timeout = 60000): Promise<RpcEvent[]> {\n\t\treturn collectRpcEvents(this, timeout);\n\t}\n\tasync promptAndWait(message: string, images?: ImageContent[], timeout = 60000): Promise<RpcEvent[]> {\n\t\tconst eventsPromise = this.collectEvents(timeout);\n\t\tawait this.prompt(message, images);\n\t\treturn eventsPromise;\n\t}\n\tprivate handleLine(line: string): void {\n\t\tif (this.engineMonitor?.handleLine(line)) return;\n\t\ttry {\n\t\t\tconst data = JSON.parse(line) as { type?: string; id?: string };\n\t\t\tif (data.type === \"extension_ui_request\") {\n\t\t\t\tconst request = data as RpcExtensionUIRequest;\n\t\t\t\tif (this.extensionUIListeners.length === 0) this.pendingExtensionUIRequests.push(request);\n\t\t\t\tfor (const listener of this.extensionUIListeners) listener(request);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (data.type === \"response\" && data.id && this.pendingRequests.has(data.id)) {\n\t\t\t\tconst pending = this.pendingRequests.get(data.id)!;\n\t\t\t\tthis.pendingRequests.delete(data.id);\n\t\t\t\tpending.resolve(data as RpcResponse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst event = data as RpcEvent;\n\t\t\tif (this.eventBuffer) this.eventBuffer.enqueue(event);\n\t\t\telse this.emitEvent(event);\n\t\t} catch {\n\t\t\tif (this.engineMonitor) this.failTransport(new Error(\"Interactive engine emitted malformed JSONL\"));\n\t\t}\n\t}\n\tprivate emitEvent(event: RpcEvent): void {\n\t\tfor (const listener of this.eventListeners) listener(event);\n\t}\n\tprivate emitInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (this.engineMessageListeners.length === 0 && message.type.startsWith(\"engine_custom_\")) {\n\t\t\tconst bytes = Buffer.byteLength(JSON.stringify(message), \"utf8\");\n\t\t\twhile (this.pendingEngineMessages.length > 0 && this.pendingEngineMessageBytes + bytes > INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tconst removed = this.pendingEngineMessages.shift()!;\n\t\t\t\tthis.pendingEngineMessageBytes -= Buffer.byteLength(JSON.stringify(removed), \"utf8\");\n\t\t\t}\n\t\t\tif (bytes <= INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tthis.pendingEngineMessages.push(message);\n\t\t\t\tthis.pendingEngineMessageBytes += bytes;\n\t\t\t}\n\t\t}\n\t\tfor (const listener of this.engineMessageListeners) listener(message);\n\t}\n\tprivate createProcessExitError(code: number | null, signal: NodeJS.Signals | null): Error {\n\t\treturn new Error(`Agent process exited (code=${code} signal=${signal}). Stderr: ${this.stderr}`);\n\t}\n\tprivate invalidateEngineShortcuts(): void {\n\t\tif (!this.latestEngineKeybindingState || this.latestEngineKeybindingState.shortcuts.length === 0) return;\n\t\tconst state: EngineKeybindingState = { ...this.latestEngineKeybindingState, shortcuts: [] };\n\t\tthis.latestEngineKeybindingState = state;\n\t\tthis.emitInteractiveEngineMessage({ type: \"engine_keybindings_reloaded\", state });\n\t}\n\tprivate observeInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (message.type === \"engine_ready\") this.enginePid = message.pid;\n\t\tif (message.type === \"engine_keybindings_reloaded\") this.latestEngineKeybindingState = message.state;\n\t\tif (message.type === \"engine_activity_started\") this.activeActivityIds.add(message.activity.id);\n\t\telse if (message.type === \"engine_activity_finished\") this.activeActivityIds.delete(message.activityId);\n\t\tthis.options.interactiveEngine?.onActivityChange?.(this.activeActivityIds.size > 0);\n\t\tthis.emitInteractiveEngineMessage(message);\n\t}\n\tprivate rejectPendingRequests(error: Error): void {\n\t\tfor (const { reject } of this.pendingRequests.values()) reject(error);\n\t\tthis.pendingRequests.clear();\n\t}\n\tprivate failTransport(error: Error): void {\n\t\tthis.exitError = error;\n\t\tthis.stdinWriter?.close(error);\n\t\tthis.engineMonitor?.fail(error);\n\t\tthis.rejectPendingRequests(error);\n\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\", message: error.message,\n\t\t});\n\t}\n\tprivate requireWriter(): BoundedWriter {\n\t\tif (!this.stdinWriter) throw new Error(\"Agent process stdin is not writable\");\n\t\treturn this.stdinWriter;\n\t}\n\tprivate bestEffort(operation: Promise<void>, label: string): void {\n\t\tvoid operation.catch((error: Error) => {\n\t\t\tif (!this.process || this.exitError) return;\n\t\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\",\n\t\t\t\tmessage: `Interactive engine ${label} failed: ${error.message}`,\n\t\t\t});\n\t\t});\n\t}\n\tprotected async request(command: RpcCommandBody): Promise<RpcResponse> {\n\t\tconst childProcess = this.process;\n\t\tif (!childProcess) throw new Error(\"Client not started\");\n\t\tif (this.exitError) throw this.exitError;\n\t\tif (childProcess.exitCode !== null) {\n\t\t\tconst error = this.createProcessExitError(childProcess.exitCode, childProcess.signalCode);\n\t\t\tthis.exitError = error;\n\t\t\tthrow error;\n\t\t}\n\t\tconst id = `req_${++this.requestId}`;\n\t\tconst fullCommand = { ...command, id } as RpcCommand;\n\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\tlet rejectResponse!: (error: Error) => void;\n\t\tconst response = new Promise<RpcResponse>((resolve, reject) => {\n\t\t\trejectResponse = reject;\n\t\t\tthis.pendingRequests.set(id, {\n\t\t\t\tresolve: (value) => { if (timeout) clearTimeout(timeout); resolve(value); },\n\t\t\t\treject: (error) => { if (timeout) clearTimeout(timeout); reject(error); },\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tawait this.requireWriter().write(serializeJsonLine(fullCommand));\n\t\t} catch (error) {\n\t\t\tthis.pendingRequests.delete(id);\n\t\t\trejectResponse(error instanceof Error ? error : new Error(String(error)));\n\t\t\treturn response;\n\t\t}\n\t\tif (this.pendingRequests.has(id) && !LONG_LIVED_COMMANDS.has(command.type)) {\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\trejectResponse(new Error(`Timeout waiting for response to ${command.type}. Stderr: ${this.stderr}`));\n\t\t\t}, this.options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS);\n\t\t}\n\t\treturn response;\n\t}\n\tprivate assertSuccess(response: RpcResponse): void {\n\t\tif (!response.success) throw new Error(response.error);\n\t}\n\tprotected data<T>(response: RpcResponse): T {\n\t\tthis.assertSuccess(response);\n\t\tconst successResponse = response as Extract<RpcResponse, { success: true; data: unknown }>;\n\t\treturn successResponse.data as T;\n\t}\n}\n"]}
@@ -5,6 +5,9 @@ import { type RpcOutput } from "./rpc-responses.ts";
5
5
  import type { KeybindingsReloadCoordinator } from "./rpc-keybindings-reload.ts";
6
6
  import type { RpcCommand, RpcResponse } from "./rpc-types.ts";
7
7
  export type RpcCommandHandler = (command: RpcCommand) => Promise<RpcResponse | undefined>;
8
+ interface ProviderLoginInput {
9
+ open(request: import("../../core/extensions/ui-types.ts").HostInputFormRequest, signal?: AbortSignal): Promise<Record<string, string> | undefined>;
10
+ }
8
11
  interface RpcCommandHandlerOptions {
9
12
  runtimeHost: AgentSessionRuntime;
10
13
  getSession: () => AgentSession;
@@ -12,7 +15,8 @@ interface RpcCommandHandlerOptions {
12
15
  output: RpcOutput;
13
16
  keybindings?: KeybindingsManager;
14
17
  reloadCoordinator?: KeybindingsReloadCoordinator<AgentSession>;
18
+ inputForm?: ProviderLoginInput;
15
19
  }
16
- export declare function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, }: RpcCommandHandlerOptions): RpcCommandHandler;
20
+ export declare function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, inputForm, }: RpcCommandHandlerOptions): RpcCommandHandler;
17
21
  export {};
18
22
  //# sourceMappingURL=rpc-command-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAKN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAEhG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAE1F,UAAU,wBAAwB;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,MAAM,YAAY,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,iBAAiB,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,CAAC;CAC/D;AAED,wBAAgB,uBAAuB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,iBAAiB,GACjB,EAAE,wBAAwB,GAAG,iBAAiB,CA6Y9C"}
1
+ {"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAKN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAEhG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAE1F,UAAU,kBAAkB;IAC3B,IAAI,CACH,OAAO,EAAE,OAAO,mCAAmC,EAAE,oBAAoB,EACzE,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;CAC/C;AAED,UAAU,wBAAwB;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,MAAM,YAAY,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,iBAAiB,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,wBAAgB,uBAAuB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,SAAS,GACT,EAAE,wBAAwB,GAAG,iBAAiB,CAmc9C"}
@@ -1,8 +1,9 @@
1
1
  import { runCallback } from "../../core/callback-activity.js";
2
2
  import { KeybindingsManager } from "../../core/keybindings.js";
3
3
  import { createRpcErrorResponse, createRpcSuccessResponse, formatRpcErrorMessage, parseRpcContextWindow, } from "./rpc-responses.js";
4
- export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, }) {
4
+ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, inputForm, }) {
5
5
  let fallbackShortcutKeybindings;
6
+ const providerLoginControllers = new Map();
6
7
  const getShortcutBindings = () => {
7
8
  if (keybindings)
8
9
  return keybindings.getEffectiveConfig();
@@ -89,7 +90,65 @@ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession
89
90
  }
90
91
  case "get_available_models": {
91
92
  const models = await session.modelRegistry.getAvailable();
92
- return createRpcSuccessResponse(id, "get_available_models", { models, scopedModels: session.scopedModels });
93
+ return createRpcSuccessResponse(id, "get_available_models", {
94
+ models,
95
+ scopedModels: session.scopedModels,
96
+ customAuthProviders: session.modelRegistry.getCustomApiKeyAuthProviders(),
97
+ });
98
+ }
99
+ case "login_provider": {
100
+ const customAuth = session.modelRegistry.getCustomApiKeyAuth(command.provider);
101
+ if (!customAuth)
102
+ throw new Error(`Provider does not support custom API-key login: ${command.provider}`);
103
+ if (!inputForm)
104
+ throw new Error("Provider login requires an interactive input host");
105
+ if (providerLoginControllers.has(command.provider))
106
+ throw new Error(`Login already in progress: ${command.provider}`);
107
+ const controller = new AbortController();
108
+ providerLoginControllers.set(command.provider, controller);
109
+ try {
110
+ const credential = await customAuth.login({
111
+ signal: controller.signal,
112
+ prompt: async (prompt) => {
113
+ const values = await inputForm.open({
114
+ title: prompt.message,
115
+ heading: "PROVIDER LOGIN",
116
+ submitLabel: "[ Submit ]",
117
+ fields: [{
118
+ name: "value", type: "string", required: false, initialValue: "",
119
+ placeholder: prompt.placeholder,
120
+ }],
121
+ }, controller.signal);
122
+ if (!values || controller.signal.aborted)
123
+ throw new Error("Login cancelled");
124
+ return values.value ?? "";
125
+ },
126
+ });
127
+ if (controller.signal.aborted)
128
+ return createRpcSuccessResponse(id, "login_provider", { provider: command.provider, cancelled: true });
129
+ session.modelRegistry.authStorage.set(command.provider, credential);
130
+ await session.modelRegistry.refresh();
131
+ return createRpcSuccessResponse(id, "login_provider", {
132
+ provider: command.provider, cancelled: false, credential,
133
+ models: session.modelRegistry.getAvailable(),
134
+ scopedModels: session.scopedModels,
135
+ customAuthProviders: session.modelRegistry.getCustomApiKeyAuthProviders(),
136
+ });
137
+ }
138
+ catch (error) {
139
+ if (controller.signal.aborted || (error instanceof Error && error.message === "Login cancelled")) {
140
+ return createRpcSuccessResponse(id, "login_provider", { provider: command.provider, cancelled: true });
141
+ }
142
+ throw error;
143
+ }
144
+ finally {
145
+ if (providerLoginControllers.get(command.provider) === controller)
146
+ providerLoginControllers.delete(command.provider);
147
+ }
148
+ }
149
+ case "cancel_login_provider": {
150
+ providerLoginControllers.get(command.provider)?.abort();
151
+ return createRpcSuccessResponse(id, "cancel_login_provider");
93
152
  }
94
153
  case "logout_provider": {
95
154
  const result = await runtimeHost.logoutProvider(command.provider);
@@ -107,6 +166,7 @@ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession
107
166
  errors: [...result.errors].map(([provider, error]) => ({ provider, message: error.message })),
108
167
  models: session.modelRegistry.getAvailable(),
109
168
  scopedModels: session.scopedModels,
169
+ customAuthProviders: session.modelRegistry.getCustomApiKeyAuthProviders(),
110
170
  });
111
171
  }
112
172
  case "set_thinking_level": {