@hansjm10/volt-coding-agent 0.0.0-bootstrap.0 → 0.1.0

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 (1364) hide show
  1. package/BINARY-CAPABILITIES.md +28 -0
  2. package/CHANGELOG.md +4845 -0
  3. package/LICENSE +1 -1
  4. package/README.md +716 -3
  5. package/THIRD-PARTY-NOTICES.md +55 -0
  6. package/dist/LICENSES/clipboard-image-MIT.txt +9 -0
  7. package/dist/LICENSES/highlight.js-10.7.3-BSD-3-Clause.txt +29 -0
  8. package/dist/LICENSES/highlight.js-11.9.0-BSD-3-Clause.txt +29 -0
  9. package/dist/LICENSES/marked-18.0.5-LICENSE.txt +44 -0
  10. package/dist/LICENSES/run-jxa-MIT.txt +9 -0
  11. package/dist/cli/args.d.ts +60 -0
  12. package/dist/cli/args.d.ts.map +1 -0
  13. package/dist/cli/args.js +414 -0
  14. package/dist/cli/args.js.map +1 -0
  15. package/dist/cli/config-selector.d.ts +14 -0
  16. package/dist/cli/config-selector.d.ts.map +1 -0
  17. package/dist/cli/config-selector.js +31 -0
  18. package/dist/cli/config-selector.js.map +1 -0
  19. package/dist/cli/file-processor.d.ts +15 -0
  20. package/dist/cli/file-processor.d.ts.map +1 -0
  21. package/dist/cli/file-processor.js +85 -0
  22. package/dist/cli/file-processor.js.map +1 -0
  23. package/dist/cli/initial-message.d.ts +18 -0
  24. package/dist/cli/initial-message.d.ts.map +1 -0
  25. package/dist/cli/initial-message.js +22 -0
  26. package/dist/cli/initial-message.js.map +1 -0
  27. package/dist/cli/list-models.d.ts +9 -0
  28. package/dist/cli/list-models.d.ts.map +1 -0
  29. package/dist/cli/list-models.js +98 -0
  30. package/dist/cli/list-models.js.map +1 -0
  31. package/dist/cli/project-trust.d.ts +10 -0
  32. package/dist/cli/project-trust.d.ts.map +1 -0
  33. package/dist/cli/project-trust.js +48 -0
  34. package/dist/cli/project-trust.js.map +1 -0
  35. package/dist/cli/session-picker.d.ts +9 -0
  36. package/dist/cli/session-picker.d.ts.map +1 -0
  37. package/dist/cli/session-picker.js +35 -0
  38. package/dist/cli/session-picker.js.map +1 -0
  39. package/dist/cli/startup-ui.d.ts +17 -0
  40. package/dist/cli/startup-ui.d.ts.map +1 -0
  41. package/dist/cli/startup-ui.js +133 -0
  42. package/dist/cli/startup-ui.js.map +1 -0
  43. package/dist/cli.d.ts +3 -0
  44. package/dist/cli.d.ts.map +1 -0
  45. package/dist/cli.js +18 -0
  46. package/dist/cli.js.map +1 -0
  47. package/dist/config.d.ts +85 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/config.js +487 -0
  50. package/dist/config.js.map +1 -0
  51. package/dist/core/agent-session-runtime.d.ts +160 -0
  52. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  53. package/dist/core/agent-session-runtime.js +397 -0
  54. package/dist/core/agent-session-runtime.js.map +1 -0
  55. package/dist/core/agent-session-services.d.ts +98 -0
  56. package/dist/core/agent-session-services.d.ts.map +1 -0
  57. package/dist/core/agent-session-services.js +125 -0
  58. package/dist/core/agent-session-services.js.map +1 -0
  59. package/dist/core/agent-session.d.ts +739 -0
  60. package/dist/core/agent-session.d.ts.map +1 -0
  61. package/dist/core/agent-session.js +3158 -0
  62. package/dist/core/agent-session.js.map +1 -0
  63. package/dist/core/auth-guidance.d.ts +5 -0
  64. package/dist/core/auth-guidance.d.ts.map +1 -0
  65. package/dist/core/auth-guidance.js +21 -0
  66. package/dist/core/auth-guidance.js.map +1 -0
  67. package/dist/core/auth-storage.d.ts +159 -0
  68. package/dist/core/auth-storage.d.ts.map +1 -0
  69. package/dist/core/auth-storage.js +509 -0
  70. package/dist/core/auth-storage.js.map +1 -0
  71. package/dist/core/bash-executor.d.ts +32 -0
  72. package/dist/core/bash-executor.d.ts.map +1 -0
  73. package/dist/core/bash-executor.js +111 -0
  74. package/dist/core/bash-executor.js.map +1 -0
  75. package/dist/core/compaction/branch-summarization.d.ts +92 -0
  76. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  77. package/dist/core/compaction/branch-summarization.js +257 -0
  78. package/dist/core/compaction/branch-summarization.js.map +1 -0
  79. package/dist/core/compaction/compaction.d.ts +121 -0
  80. package/dist/core/compaction/compaction.d.ts.map +1 -0
  81. package/dist/core/compaction/compaction.js +658 -0
  82. package/dist/core/compaction/compaction.js.map +1 -0
  83. package/dist/core/compaction/index.d.ts +7 -0
  84. package/dist/core/compaction/index.d.ts.map +1 -0
  85. package/dist/core/compaction/index.js +7 -0
  86. package/dist/core/compaction/index.js.map +1 -0
  87. package/dist/core/compaction/utils.d.ts +56 -0
  88. package/dist/core/compaction/utils.d.ts.map +1 -0
  89. package/dist/core/compaction/utils.js +271 -0
  90. package/dist/core/compaction/utils.js.map +1 -0
  91. package/dist/core/defaults.d.ts +3 -0
  92. package/dist/core/defaults.d.ts.map +1 -0
  93. package/dist/core/defaults.js +2 -0
  94. package/dist/core/defaults.js.map +1 -0
  95. package/dist/core/diagnostics.d.ts +15 -0
  96. package/dist/core/diagnostics.d.ts.map +1 -0
  97. package/dist/core/diagnostics.js +2 -0
  98. package/dist/core/diagnostics.js.map +1 -0
  99. package/dist/core/event-bus.d.ts +9 -0
  100. package/dist/core/event-bus.d.ts.map +1 -0
  101. package/dist/core/event-bus.js +25 -0
  102. package/dist/core/event-bus.js.map +1 -0
  103. package/dist/core/exec.d.ts +29 -0
  104. package/dist/core/exec.d.ts.map +1 -0
  105. package/dist/core/exec.js +75 -0
  106. package/dist/core/exec.js.map +1 -0
  107. package/dist/core/experimental.d.ts +2 -0
  108. package/dist/core/experimental.d.ts.map +1 -0
  109. package/dist/core/experimental.js +4 -0
  110. package/dist/core/experimental.js.map +1 -0
  111. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  112. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  113. package/dist/core/export-html/ansi-to-html.js +249 -0
  114. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  115. package/dist/core/export-html/index.d.ts +37 -0
  116. package/dist/core/export-html/index.d.ts.map +1 -0
  117. package/dist/core/export-html/index.js +234 -0
  118. package/dist/core/export-html/index.js.map +1 -0
  119. package/dist/core/export-html/template.css +1066 -0
  120. package/dist/core/export-html/template.html +55 -0
  121. package/dist/core/export-html/template.js +1864 -0
  122. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  123. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  124. package/dist/core/export-html/tool-renderer.js +108 -0
  125. package/dist/core/export-html/tool-renderer.js.map +1 -0
  126. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  127. package/dist/core/export-html/vendor/marked.min.js +78 -0
  128. package/dist/core/extensions/index.d.ts +12 -0
  129. package/dist/core/extensions/index.d.ts.map +1 -0
  130. package/dist/core/extensions/index.js +9 -0
  131. package/dist/core/extensions/index.js.map +1 -0
  132. package/dist/core/extensions/loader.d.ts +25 -0
  133. package/dist/core/extensions/loader.d.ts.map +1 -0
  134. package/dist/core/extensions/loader.js +516 -0
  135. package/dist/core/extensions/loader.js.map +1 -0
  136. package/dist/core/extensions/runner.d.ts +180 -0
  137. package/dist/core/extensions/runner.d.ts.map +1 -0
  138. package/dist/core/extensions/runner.js +938 -0
  139. package/dist/core/extensions/runner.js.map +1 -0
  140. package/dist/core/extensions/types.d.ts +1215 -0
  141. package/dist/core/extensions/types.d.ts.map +1 -0
  142. package/dist/core/extensions/types.js +48 -0
  143. package/dist/core/extensions/types.js.map +1 -0
  144. package/dist/core/extensions/wrapper.d.ts +20 -0
  145. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  146. package/dist/core/extensions/wrapper.js +22 -0
  147. package/dist/core/extensions/wrapper.js.map +1 -0
  148. package/dist/core/footer-data-provider.d.ts +54 -0
  149. package/dist/core/footer-data-provider.d.ts.map +1 -0
  150. package/dist/core/footer-data-provider.js +338 -0
  151. package/dist/core/footer-data-provider.js.map +1 -0
  152. package/dist/core/host-actions.d.ts +107 -0
  153. package/dist/core/host-actions.d.ts.map +1 -0
  154. package/dist/core/host-actions.js +632 -0
  155. package/dist/core/host-actions.js.map +1 -0
  156. package/dist/core/host-interaction.d.ts +35 -0
  157. package/dist/core/host-interaction.d.ts.map +1 -0
  158. package/dist/core/host-interaction.js +2 -0
  159. package/dist/core/host-interaction.js.map +1 -0
  160. package/dist/core/http-dispatcher.d.ts +22 -0
  161. package/dist/core/http-dispatcher.d.ts.map +1 -0
  162. package/dist/core/http-dispatcher.js +64 -0
  163. package/dist/core/http-dispatcher.js.map +1 -0
  164. package/dist/core/index.d.ts +18 -0
  165. package/dist/core/index.d.ts.map +1 -0
  166. package/dist/core/index.js +17 -0
  167. package/dist/core/index.js.map +1 -0
  168. package/dist/core/keybindings.d.ts +373 -0
  169. package/dist/core/keybindings.d.ts.map +1 -0
  170. package/dist/core/keybindings.js +303 -0
  171. package/dist/core/keybindings.js.map +1 -0
  172. package/dist/core/lsp/client.d.ts +119 -0
  173. package/dist/core/lsp/client.d.ts.map +1 -0
  174. package/dist/core/lsp/client.js +711 -0
  175. package/dist/core/lsp/client.js.map +1 -0
  176. package/dist/core/lsp/config.d.ts +96 -0
  177. package/dist/core/lsp/config.d.ts.map +1 -0
  178. package/dist/core/lsp/config.js +206 -0
  179. package/dist/core/lsp/config.js.map +1 -0
  180. package/dist/core/lsp/index.d.ts +6 -0
  181. package/dist/core/lsp/index.d.ts.map +1 -0
  182. package/dist/core/lsp/index.js +6 -0
  183. package/dist/core/lsp/index.js.map +1 -0
  184. package/dist/core/lsp/manager.d.ts +122 -0
  185. package/dist/core/lsp/manager.d.ts.map +1 -0
  186. package/dist/core/lsp/manager.js +1136 -0
  187. package/dist/core/lsp/manager.js.map +1 -0
  188. package/dist/core/lsp/trace.d.ts +26 -0
  189. package/dist/core/lsp/trace.d.ts.map +1 -0
  190. package/dist/core/lsp/trace.js +98 -0
  191. package/dist/core/lsp/trace.js.map +1 -0
  192. package/dist/core/lsp/workspace-edit.d.ts +60 -0
  193. package/dist/core/lsp/workspace-edit.d.ts.map +1 -0
  194. package/dist/core/lsp/workspace-edit.js +71 -0
  195. package/dist/core/lsp/workspace-edit.js.map +1 -0
  196. package/dist/core/mcp/audit.d.ts +39 -0
  197. package/dist/core/mcp/audit.d.ts.map +1 -0
  198. package/dist/core/mcp/audit.js +35 -0
  199. package/dist/core/mcp/audit.js.map +1 -0
  200. package/dist/core/mcp/auth.d.ts +7 -0
  201. package/dist/core/mcp/auth.d.ts.map +1 -0
  202. package/dist/core/mcp/auth.js +56 -0
  203. package/dist/core/mcp/auth.js.map +1 -0
  204. package/dist/core/mcp/client-factory.d.ts +20 -0
  205. package/dist/core/mcp/client-factory.d.ts.map +1 -0
  206. package/dist/core/mcp/client-factory.js +200 -0
  207. package/dist/core/mcp/client-factory.js.map +1 -0
  208. package/dist/core/mcp/config-loader.d.ts +9 -0
  209. package/dist/core/mcp/config-loader.d.ts.map +1 -0
  210. package/dist/core/mcp/config-loader.js +104 -0
  211. package/dist/core/mcp/config-loader.js.map +1 -0
  212. package/dist/core/mcp/config-writer.d.ts +21 -0
  213. package/dist/core/mcp/config-writer.d.ts.map +1 -0
  214. package/dist/core/mcp/config-writer.js +124 -0
  215. package/dist/core/mcp/config-writer.js.map +1 -0
  216. package/dist/core/mcp/config.d.ts +32 -0
  217. package/dist/core/mcp/config.d.ts.map +1 -0
  218. package/dist/core/mcp/config.js +385 -0
  219. package/dist/core/mcp/config.js.map +1 -0
  220. package/dist/core/mcp/direct-tools.d.ts +11 -0
  221. package/dist/core/mcp/direct-tools.d.ts.map +1 -0
  222. package/dist/core/mcp/direct-tools.js +47 -0
  223. package/dist/core/mcp/direct-tools.js.map +1 -0
  224. package/dist/core/mcp/gateway-tool.d.ts +29 -0
  225. package/dist/core/mcp/gateway-tool.d.ts.map +1 -0
  226. package/dist/core/mcp/gateway-tool.js +108 -0
  227. package/dist/core/mcp/gateway-tool.js.map +1 -0
  228. package/dist/core/mcp/index.d.ts +19 -0
  229. package/dist/core/mcp/index.d.ts.map +1 -0
  230. package/dist/core/mcp/index.js +18 -0
  231. package/dist/core/mcp/index.js.map +1 -0
  232. package/dist/core/mcp/manager.d.ts +117 -0
  233. package/dist/core/mcp/manager.d.ts.map +1 -0
  234. package/dist/core/mcp/manager.js +819 -0
  235. package/dist/core/mcp/manager.js.map +1 -0
  236. package/dist/core/mcp/metadata-cache.d.ts +27 -0
  237. package/dist/core/mcp/metadata-cache.d.ts.map +1 -0
  238. package/dist/core/mcp/metadata-cache.js +152 -0
  239. package/dist/core/mcp/metadata-cache.js.map +1 -0
  240. package/dist/core/mcp/oauth-flow.d.ts +94 -0
  241. package/dist/core/mcp/oauth-flow.d.ts.map +1 -0
  242. package/dist/core/mcp/oauth-flow.js +473 -0
  243. package/dist/core/mcp/oauth-flow.js.map +1 -0
  244. package/dist/core/mcp/oauth-provider.d.ts +39 -0
  245. package/dist/core/mcp/oauth-provider.d.ts.map +1 -0
  246. package/dist/core/mcp/oauth-provider.js +149 -0
  247. package/dist/core/mcp/oauth-provider.js.map +1 -0
  248. package/dist/core/mcp/oauth-store.d.ts +27 -0
  249. package/dist/core/mcp/oauth-store.d.ts.map +1 -0
  250. package/dist/core/mcp/oauth-store.js +111 -0
  251. package/dist/core/mcp/oauth-store.js.map +1 -0
  252. package/dist/core/mcp/output-store.d.ts +55 -0
  253. package/dist/core/mcp/output-store.d.ts.map +1 -0
  254. package/dist/core/mcp/output-store.js +206 -0
  255. package/dist/core/mcp/output-store.js.map +1 -0
  256. package/dist/core/mcp/rpc.d.ts +13 -0
  257. package/dist/core/mcp/rpc.d.ts.map +1 -0
  258. package/dist/core/mcp/rpc.js +29 -0
  259. package/dist/core/mcp/rpc.js.map +1 -0
  260. package/dist/core/mcp/safety.d.ts +6 -0
  261. package/dist/core/mcp/safety.d.ts.map +1 -0
  262. package/dist/core/mcp/safety.js +65 -0
  263. package/dist/core/mcp/safety.js.map +1 -0
  264. package/dist/core/mcp/search.d.ts +8 -0
  265. package/dist/core/mcp/search.d.ts.map +1 -0
  266. package/dist/core/mcp/search.js +85 -0
  267. package/dist/core/mcp/search.js.map +1 -0
  268. package/dist/core/mcp/server-supervisor.d.ts +59 -0
  269. package/dist/core/mcp/server-supervisor.d.ts.map +1 -0
  270. package/dist/core/mcp/server-supervisor.js +331 -0
  271. package/dist/core/mcp/server-supervisor.js.map +1 -0
  272. package/dist/core/mcp/types.d.ts +321 -0
  273. package/dist/core/mcp/types.d.ts.map +1 -0
  274. package/dist/core/mcp/types.js +2 -0
  275. package/dist/core/mcp/types.js.map +1 -0
  276. package/dist/core/messages.d.ts +78 -0
  277. package/dist/core/messages.d.ts.map +1 -0
  278. package/dist/core/messages.js +138 -0
  279. package/dist/core/messages.js.map +1 -0
  280. package/dist/core/model-catalog-watcher.d.ts +36 -0
  281. package/dist/core/model-catalog-watcher.d.ts.map +1 -0
  282. package/dist/core/model-catalog-watcher.js +101 -0
  283. package/dist/core/model-catalog-watcher.js.map +1 -0
  284. package/dist/core/model-registry.d.ts +160 -0
  285. package/dist/core/model-registry.d.ts.map +1 -0
  286. package/dist/core/model-registry.js +754 -0
  287. package/dist/core/model-registry.js.map +1 -0
  288. package/dist/core/model-resolver.d.ts +111 -0
  289. package/dist/core/model-resolver.d.ts.map +1 -0
  290. package/dist/core/model-resolver.js +534 -0
  291. package/dist/core/model-resolver.js.map +1 -0
  292. package/dist/core/output-guard.d.ts +7 -0
  293. package/dist/core/output-guard.d.ts.map +1 -0
  294. package/dist/core/output-guard.js +89 -0
  295. package/dist/core/output-guard.js.map +1 -0
  296. package/dist/core/package-manager.d.ts +220 -0
  297. package/dist/core/package-manager.d.ts.map +1 -0
  298. package/dist/core/package-manager.js +2217 -0
  299. package/dist/core/package-manager.js.map +1 -0
  300. package/dist/core/project-trust.d.ts +15 -0
  301. package/dist/core/project-trust.d.ts.map +1 -0
  302. package/dist/core/project-trust.js +58 -0
  303. package/dist/core/project-trust.js.map +1 -0
  304. package/dist/core/prompt-templates.d.ts +53 -0
  305. package/dist/core/prompt-templates.d.ts.map +1 -0
  306. package/dist/core/prompt-templates.js +236 -0
  307. package/dist/core/prompt-templates.js.map +1 -0
  308. package/dist/core/provider-attribution.d.ts +4 -0
  309. package/dist/core/provider-attribution.d.ts.map +1 -0
  310. package/dist/core/provider-attribution.js +81 -0
  311. package/dist/core/provider-attribution.js.map +1 -0
  312. package/dist/core/provider-display-names.d.ts +2 -0
  313. package/dist/core/provider-display-names.d.ts.map +1 -0
  314. package/dist/core/provider-display-names.js +36 -0
  315. package/dist/core/provider-display-names.js.map +1 -0
  316. package/dist/core/remote/iroh/access-grant.d.ts +40 -0
  317. package/dist/core/remote/iroh/access-grant.d.ts.map +1 -0
  318. package/dist/core/remote/iroh/access-grant.js +199 -0
  319. package/dist/core/remote/iroh/access-grant.js.map +1 -0
  320. package/dist/core/remote/iroh/active-stream-registry.d.ts +39 -0
  321. package/dist/core/remote/iroh/active-stream-registry.d.ts.map +1 -0
  322. package/dist/core/remote/iroh/active-stream-registry.js +109 -0
  323. package/dist/core/remote/iroh/active-stream-registry.js.map +1 -0
  324. package/dist/core/remote/iroh/audit.d.ts +67 -0
  325. package/dist/core/remote/iroh/audit.d.ts.map +1 -0
  326. package/dist/core/remote/iroh/audit.js +274 -0
  327. package/dist/core/remote/iroh/audit.js.map +1 -0
  328. package/dist/core/remote/iroh/authorization.d.ts +46 -0
  329. package/dist/core/remote/iroh/authorization.d.ts.map +1 -0
  330. package/dist/core/remote/iroh/authorization.js +327 -0
  331. package/dist/core/remote/iroh/authorization.js.map +1 -0
  332. package/dist/core/remote/iroh/control.d.ts +64 -0
  333. package/dist/core/remote/iroh/control.d.ts.map +1 -0
  334. package/dist/core/remote/iroh/control.js +326 -0
  335. package/dist/core/remote/iroh/control.js.map +1 -0
  336. package/dist/core/remote/iroh/device-log-rpc.d.ts +22 -0
  337. package/dist/core/remote/iroh/device-log-rpc.d.ts.map +1 -0
  338. package/dist/core/remote/iroh/device-log-rpc.js +152 -0
  339. package/dist/core/remote/iroh/device-log-rpc.js.map +1 -0
  340. package/dist/core/remote/iroh/engine.d.ts +148 -0
  341. package/dist/core/remote/iroh/engine.d.ts.map +1 -0
  342. package/dist/core/remote/iroh/engine.js +499 -0
  343. package/dist/core/remote/iroh/engine.js.map +1 -0
  344. package/dist/core/remote/iroh/handshake-reader.d.ts +19 -0
  345. package/dist/core/remote/iroh/handshake-reader.d.ts.map +1 -0
  346. package/dist/core/remote/iroh/handshake-reader.js +91 -0
  347. package/dist/core/remote/iroh/handshake-reader.js.map +1 -0
  348. package/dist/core/remote/iroh/handshake.d.ts +119 -0
  349. package/dist/core/remote/iroh/handshake.d.ts.map +1 -0
  350. package/dist/core/remote/iroh/handshake.js +621 -0
  351. package/dist/core/remote/iroh/handshake.js.map +1 -0
  352. package/dist/core/remote/iroh/host-policy.d.ts +13 -0
  353. package/dist/core/remote/iroh/host-policy.d.ts.map +1 -0
  354. package/dist/core/remote/iroh/host-policy.js +15 -0
  355. package/dist/core/remote/iroh/host-policy.js.map +1 -0
  356. package/dist/core/remote/iroh/index.d.ts +25 -0
  357. package/dist/core/remote/iroh/index.d.ts.map +1 -0
  358. package/dist/core/remote/iroh/index.js +25 -0
  359. package/dist/core/remote/iroh/index.js.map +1 -0
  360. package/dist/core/remote/iroh/metadata.d.ts +28 -0
  361. package/dist/core/remote/iroh/metadata.d.ts.map +1 -0
  362. package/dist/core/remote/iroh/metadata.js +16 -0
  363. package/dist/core/remote/iroh/metadata.js.map +1 -0
  364. package/dist/core/remote/iroh/outbound-filter.d.ts +29 -0
  365. package/dist/core/remote/iroh/outbound-filter.d.ts.map +1 -0
  366. package/dist/core/remote/iroh/outbound-filter.js +692 -0
  367. package/dist/core/remote/iroh/outbound-filter.js.map +1 -0
  368. package/dist/core/remote/iroh/protocol.d.ts +60 -0
  369. package/dist/core/remote/iroh/protocol.d.ts.map +1 -0
  370. package/dist/core/remote/iroh/protocol.js +204 -0
  371. package/dist/core/remote/iroh/protocol.js.map +1 -0
  372. package/dist/core/remote/iroh/push.d.ts +179 -0
  373. package/dist/core/remote/iroh/push.d.ts.map +1 -0
  374. package/dist/core/remote/iroh/push.js +662 -0
  375. package/dist/core/remote/iroh/push.js.map +1 -0
  376. package/dist/core/remote/iroh/qr.d.ts +12 -0
  377. package/dist/core/remote/iroh/qr.d.ts.map +1 -0
  378. package/dist/core/remote/iroh/qr.js +27 -0
  379. package/dist/core/remote/iroh/qr.js.map +1 -0
  380. package/dist/core/remote/iroh/rpc-command-filter.d.ts +47 -0
  381. package/dist/core/remote/iroh/rpc-command-filter.d.ts.map +1 -0
  382. package/dist/core/remote/iroh/rpc-command-filter.js +188 -0
  383. package/dist/core/remote/iroh/rpc-command-filter.js.map +1 -0
  384. package/dist/core/remote/iroh/rpc-transport.d.ts +21 -0
  385. package/dist/core/remote/iroh/rpc-transport.d.ts.map +1 -0
  386. package/dist/core/remote/iroh/rpc-transport.js +106 -0
  387. package/dist/core/remote/iroh/rpc-transport.js.map +1 -0
  388. package/dist/core/remote/iroh/state-manager.d.ts +141 -0
  389. package/dist/core/remote/iroh/state-manager.d.ts.map +1 -0
  390. package/dist/core/remote/iroh/state-manager.js +744 -0
  391. package/dist/core/remote/iroh/state-manager.js.map +1 -0
  392. package/dist/core/remote/iroh/state.d.ts +141 -0
  393. package/dist/core/remote/iroh/state.d.ts.map +1 -0
  394. package/dist/core/remote/iroh/state.js +433 -0
  395. package/dist/core/remote/iroh/state.js.map +1 -0
  396. package/dist/core/remote/iroh/ticket.d.ts +46 -0
  397. package/dist/core/remote/iroh/ticket.d.ts.map +1 -0
  398. package/dist/core/remote/iroh/ticket.js +267 -0
  399. package/dist/core/remote/iroh/ticket.js.map +1 -0
  400. package/dist/core/remote/iroh/transcript-text.d.ts +8 -0
  401. package/dist/core/remote/iroh/transcript-text.d.ts.map +1 -0
  402. package/dist/core/remote/iroh/transcript-text.js +26 -0
  403. package/dist/core/remote/iroh/transcript-text.js.map +1 -0
  404. package/dist/core/remote/iroh/workspace-rpc.d.ts +31 -0
  405. package/dist/core/remote/iroh/workspace-rpc.d.ts.map +1 -0
  406. package/dist/core/remote/iroh/workspace-rpc.js +73 -0
  407. package/dist/core/remote/iroh/workspace-rpc.js.map +1 -0
  408. package/dist/core/remote/iroh/workspace.d.ts +16 -0
  409. package/dist/core/remote/iroh/workspace.d.ts.map +1 -0
  410. package/dist/core/remote/iroh/workspace.js +104 -0
  411. package/dist/core/remote/iroh/workspace.js.map +1 -0
  412. package/dist/core/remote/iroh/worktree-rpc.d.ts +83 -0
  413. package/dist/core/remote/iroh/worktree-rpc.d.ts.map +1 -0
  414. package/dist/core/remote/iroh/worktree-rpc.js +148 -0
  415. package/dist/core/remote/iroh/worktree-rpc.js.map +1 -0
  416. package/dist/core/resolve-config-value.d.ts +30 -0
  417. package/dist/core/resolve-config-value.d.ts.map +1 -0
  418. package/dist/core/resolve-config-value.js +245 -0
  419. package/dist/core/resolve-config-value.js.map +1 -0
  420. package/dist/core/resource-loader.d.ts +214 -0
  421. package/dist/core/resource-loader.d.ts.map +1 -0
  422. package/dist/core/resource-loader.js +824 -0
  423. package/dist/core/resource-loader.js.map +1 -0
  424. package/dist/core/review.d.ts +318 -0
  425. package/dist/core/review.d.ts.map +1 -0
  426. package/dist/core/review.js +1271 -0
  427. package/dist/core/review.js.map +1 -0
  428. package/dist/core/rpc/duplex-write-gate.d.ts +29 -0
  429. package/dist/core/rpc/duplex-write-gate.d.ts.map +1 -0
  430. package/dist/core/rpc/duplex-write-gate.js +124 -0
  431. package/dist/core/rpc/duplex-write-gate.js.map +1 -0
  432. package/dist/core/rpc/index.d.ts +6 -0
  433. package/dist/core/rpc/index.d.ts.map +1 -0
  434. package/dist/core/rpc/index.js +5 -0
  435. package/dist/core/rpc/index.js.map +1 -0
  436. package/dist/core/rpc/iroh-transport.d.ts +58 -0
  437. package/dist/core/rpc/iroh-transport.d.ts.map +1 -0
  438. package/dist/core/rpc/iroh-transport.js +278 -0
  439. package/dist/core/rpc/iroh-transport.js.map +1 -0
  440. package/dist/core/rpc/jsonl.d.ts +17 -0
  441. package/dist/core/rpc/jsonl.d.ts.map +1 -0
  442. package/dist/core/rpc/jsonl.js +49 -0
  443. package/dist/core/rpc/jsonl.js.map +1 -0
  444. package/dist/core/rpc/loopback-transport.d.ts +14 -0
  445. package/dist/core/rpc/loopback-transport.d.ts.map +1 -0
  446. package/dist/core/rpc/loopback-transport.js +120 -0
  447. package/dist/core/rpc/loopback-transport.js.map +1 -0
  448. package/dist/core/rpc/transcript.d.ts +37 -0
  449. package/dist/core/rpc/transcript.d.ts.map +1 -0
  450. package/dist/core/rpc/transcript.js +624 -0
  451. package/dist/core/rpc/transcript.js.map +1 -0
  452. package/dist/core/rpc/transport.d.ts +41 -0
  453. package/dist/core/rpc/transport.d.ts.map +1 -0
  454. package/dist/core/rpc/transport.js +155 -0
  455. package/dist/core/rpc/transport.js.map +1 -0
  456. package/dist/core/rpc/types.d.ts +1254 -0
  457. package/dist/core/rpc/types.d.ts.map +1 -0
  458. package/dist/core/rpc/types.js +8 -0
  459. package/dist/core/rpc/types.js.map +1 -0
  460. package/dist/core/rpc/ui-action-args.d.ts +3 -0
  461. package/dist/core/rpc/ui-action-args.d.ts.map +1 -0
  462. package/dist/core/rpc/ui-action-args.js +66 -0
  463. package/dist/core/rpc/ui-action-args.js.map +1 -0
  464. package/dist/core/rpc/ui-actions.d.ts +43 -0
  465. package/dist/core/rpc/ui-actions.d.ts.map +1 -0
  466. package/dist/core/rpc/ui-actions.js +362 -0
  467. package/dist/core/rpc/ui-actions.js.map +1 -0
  468. package/dist/core/sdk.d.ts +138 -0
  469. package/dist/core/sdk.d.ts.map +1 -0
  470. package/dist/core/sdk.js +324 -0
  471. package/dist/core/sdk.js.map +1 -0
  472. package/dist/core/session-cwd.d.ts +19 -0
  473. package/dist/core/session-cwd.d.ts.map +1 -0
  474. package/dist/core/session-cwd.js +38 -0
  475. package/dist/core/session-cwd.js.map +1 -0
  476. package/dist/core/session-manager.d.ts +346 -0
  477. package/dist/core/session-manager.d.ts.map +1 -0
  478. package/dist/core/session-manager.js +1280 -0
  479. package/dist/core/session-manager.js.map +1 -0
  480. package/dist/core/settings-manager.d.ts +359 -0
  481. package/dist/core/settings-manager.d.ts.map +1 -0
  482. package/dist/core/settings-manager.js +1277 -0
  483. package/dist/core/settings-manager.js.map +1 -0
  484. package/dist/core/skills.d.ts +60 -0
  485. package/dist/core/skills.d.ts.map +1 -0
  486. package/dist/core/skills.js +387 -0
  487. package/dist/core/skills.js.map +1 -0
  488. package/dist/core/slash-commands.d.ts +14 -0
  489. package/dist/core/slash-commands.d.ts.map +1 -0
  490. package/dist/core/slash-commands.js +51 -0
  491. package/dist/core/slash-commands.js.map +1 -0
  492. package/dist/core/source-info.d.ts +18 -0
  493. package/dist/core/source-info.d.ts.map +1 -0
  494. package/dist/core/source-info.js +19 -0
  495. package/dist/core/source-info.js.map +1 -0
  496. package/dist/core/subagents/delegation-scope.d.ts +47 -0
  497. package/dist/core/subagents/delegation-scope.d.ts.map +1 -0
  498. package/dist/core/subagents/delegation-scope.js +134 -0
  499. package/dist/core/subagents/delegation-scope.js.map +1 -0
  500. package/dist/core/subagents/index.d.ts +46 -0
  501. package/dist/core/subagents/index.d.ts.map +1 -0
  502. package/dist/core/subagents/index.js +369 -0
  503. package/dist/core/subagents/index.js.map +1 -0
  504. package/dist/core/subagents/manager.d.ts +183 -0
  505. package/dist/core/subagents/manager.d.ts.map +1 -0
  506. package/dist/core/subagents/manager.js +820 -0
  507. package/dist/core/subagents/manager.js.map +1 -0
  508. package/dist/core/system-prompt.d.ts +28 -0
  509. package/dist/core/system-prompt.d.ts.map +1 -0
  510. package/dist/core/system-prompt.js +180 -0
  511. package/dist/core/system-prompt.js.map +1 -0
  512. package/dist/core/telemetry.d.ts +3 -0
  513. package/dist/core/telemetry.d.ts.map +1 -0
  514. package/dist/core/telemetry.js +9 -0
  515. package/dist/core/telemetry.js.map +1 -0
  516. package/dist/core/theme/dark.json +86 -0
  517. package/dist/core/theme/discovery.d.ts +48 -0
  518. package/dist/core/theme/discovery.d.ts.map +1 -0
  519. package/dist/core/theme/discovery.js +239 -0
  520. package/dist/core/theme/discovery.js.map +1 -0
  521. package/dist/core/theme/index.d.ts +6 -0
  522. package/dist/core/theme/index.d.ts.map +1 -0
  523. package/dist/core/theme/index.js +5 -0
  524. package/dist/core/theme/index.js.map +1 -0
  525. package/dist/core/theme/light.json +85 -0
  526. package/dist/core/theme/runtime.d.ts +55 -0
  527. package/dist/core/theme/runtime.d.ts.map +1 -0
  528. package/dist/core/theme/runtime.js +555 -0
  529. package/dist/core/theme/runtime.js.map +1 -0
  530. package/dist/core/theme/theme-schema.json +335 -0
  531. package/dist/core/theme/theme-service.d.ts +37 -0
  532. package/dist/core/theme/theme-service.d.ts.map +1 -0
  533. package/dist/core/theme/theme-service.js +222 -0
  534. package/dist/core/theme/theme-service.js.map +1 -0
  535. package/dist/core/theme/theme.d.ts +100 -0
  536. package/dist/core/theme/theme.d.ts.map +1 -0
  537. package/dist/core/theme/theme.js +243 -0
  538. package/dist/core/theme/theme.js.map +1 -0
  539. package/dist/core/theme/tokens.d.ts +20 -0
  540. package/dist/core/theme/tokens.d.ts.map +1 -0
  541. package/dist/core/theme/tokens.js +178 -0
  542. package/dist/core/theme/tokens.js.map +1 -0
  543. package/dist/core/theme/types.d.ts +21 -0
  544. package/dist/core/theme/types.d.ts.map +1 -0
  545. package/dist/core/theme/types.js +2 -0
  546. package/dist/core/theme/types.js.map +1 -0
  547. package/dist/core/timings.d.ts +8 -0
  548. package/dist/core/timings.d.ts.map +1 -0
  549. package/dist/core/timings.js +31 -0
  550. package/dist/core/timings.js.map +1 -0
  551. package/dist/core/tools/bash.d.ts +68 -0
  552. package/dist/core/tools/bash.d.ts.map +1 -0
  553. package/dist/core/tools/bash.js +345 -0
  554. package/dist/core/tools/bash.js.map +1 -0
  555. package/dist/core/tools/diagnostics-provider.d.ts +12 -0
  556. package/dist/core/tools/diagnostics-provider.d.ts.map +1 -0
  557. package/dist/core/tools/diagnostics-provider.js +2 -0
  558. package/dist/core/tools/diagnostics-provider.js.map +1 -0
  559. package/dist/core/tools/edit-diff.d.ts +77 -0
  560. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  561. package/dist/core/tools/edit-diff.js +506 -0
  562. package/dist/core/tools/edit-diff.js.map +1 -0
  563. package/dist/core/tools/edit.d.ts +56 -0
  564. package/dist/core/tools/edit.d.ts.map +1 -0
  565. package/dist/core/tools/edit.js +300 -0
  566. package/dist/core/tools/edit.js.map +1 -0
  567. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  568. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  569. package/dist/core/tools/file-mutation-queue.js +52 -0
  570. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  571. package/dist/core/tools/find.d.ts +35 -0
  572. package/dist/core/tools/find.d.ts.map +1 -0
  573. package/dist/core/tools/find.js +337 -0
  574. package/dist/core/tools/find.js.map +1 -0
  575. package/dist/core/tools/grep.d.ts +37 -0
  576. package/dist/core/tools/grep.d.ts.map +1 -0
  577. package/dist/core/tools/grep.js +305 -0
  578. package/dist/core/tools/grep.js.map +1 -0
  579. package/dist/core/tools/index.d.ts +56 -0
  580. package/dist/core/tools/index.d.ts.map +1 -0
  581. package/dist/core/tools/index.js +174 -0
  582. package/dist/core/tools/index.js.map +1 -0
  583. package/dist/core/tools/ls.d.ts +37 -0
  584. package/dist/core/tools/ls.d.ts.map +1 -0
  585. package/dist/core/tools/ls.js +167 -0
  586. package/dist/core/tools/ls.js.map +1 -0
  587. package/dist/core/tools/lsp.d.ts +59 -0
  588. package/dist/core/tools/lsp.d.ts.map +1 -0
  589. package/dist/core/tools/lsp.js +157 -0
  590. package/dist/core/tools/lsp.js.map +1 -0
  591. package/dist/core/tools/output-accumulator.d.ts +52 -0
  592. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  593. package/dist/core/tools/output-accumulator.js +184 -0
  594. package/dist/core/tools/output-accumulator.js.map +1 -0
  595. package/dist/core/tools/path-utils.d.ts +10 -0
  596. package/dist/core/tools/path-utils.d.ts.map +1 -0
  597. package/dist/core/tools/path-utils.js +99 -0
  598. package/dist/core/tools/path-utils.js.map +1 -0
  599. package/dist/core/tools/read.d.ts +35 -0
  600. package/dist/core/tools/read.d.ts.map +1 -0
  601. package/dist/core/tools/read.js +292 -0
  602. package/dist/core/tools/read.js.map +1 -0
  603. package/dist/core/tools/render-utils.d.ts +26 -0
  604. package/dist/core/tools/render-utils.d.ts.map +1 -0
  605. package/dist/core/tools/render-utils.js +69 -0
  606. package/dist/core/tools/render-utils.js.map +1 -0
  607. package/dist/core/tools/subagent.d.ts +219 -0
  608. package/dist/core/tools/subagent.d.ts.map +1 -0
  609. package/dist/core/tools/subagent.js +1445 -0
  610. package/dist/core/tools/subagent.js.map +1 -0
  611. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  612. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  613. package/dist/core/tools/tool-definition-wrapper.js +34 -0
  614. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  615. package/dist/core/tools/truncate.d.ts +70 -0
  616. package/dist/core/tools/truncate.d.ts.map +1 -0
  617. package/dist/core/tools/truncate.js +215 -0
  618. package/dist/core/tools/truncate.js.map +1 -0
  619. package/dist/core/tools/web-search.d.ts +69 -0
  620. package/dist/core/tools/web-search.d.ts.map +1 -0
  621. package/dist/core/tools/web-search.js +634 -0
  622. package/dist/core/tools/web-search.js.map +1 -0
  623. package/dist/core/tools/write.d.ts +33 -0
  624. package/dist/core/tools/write.d.ts.map +1 -0
  625. package/dist/core/tools/write.js +210 -0
  626. package/dist/core/tools/write.js.map +1 -0
  627. package/dist/core/trust-manager.d.ts +36 -0
  628. package/dist/core/trust-manager.d.ts.map +1 -0
  629. package/dist/core/trust-manager.js +220 -0
  630. package/dist/core/trust-manager.js.map +1 -0
  631. package/dist/daemon/cli.d.ts +8 -0
  632. package/dist/daemon/cli.d.ts.map +1 -0
  633. package/dist/daemon/cli.js +468 -0
  634. package/dist/daemon/cli.js.map +1 -0
  635. package/dist/daemon/control-client.d.ts +60 -0
  636. package/dist/daemon/control-client.d.ts.map +1 -0
  637. package/dist/daemon/control-client.js +411 -0
  638. package/dist/daemon/control-client.js.map +1 -0
  639. package/dist/daemon/control-protocol.d.ts +507 -0
  640. package/dist/daemon/control-protocol.d.ts.map +1 -0
  641. package/dist/daemon/control-protocol.js +395 -0
  642. package/dist/daemon/control-protocol.js.map +1 -0
  643. package/dist/daemon/control-server.d.ts +77 -0
  644. package/dist/daemon/control-server.d.ts.map +1 -0
  645. package/dist/daemon/control-server.js +327 -0
  646. package/dist/daemon/control-server.js.map +1 -0
  647. package/dist/daemon/conversation-commands.d.ts +176 -0
  648. package/dist/daemon/conversation-commands.d.ts.map +1 -0
  649. package/dist/daemon/conversation-commands.js +1268 -0
  650. package/dist/daemon/conversation-commands.js.map +1 -0
  651. package/dist/daemon/daemon-lock.d.ts +27 -0
  652. package/dist/daemon/daemon-lock.d.ts.map +1 -0
  653. package/dist/daemon/daemon-lock.js +238 -0
  654. package/dist/daemon/daemon-lock.js.map +1 -0
  655. package/dist/daemon/handshake-responses.d.ts +47 -0
  656. package/dist/daemon/handshake-responses.d.ts.map +1 -0
  657. package/dist/daemon/handshake-responses.js +113 -0
  658. package/dist/daemon/handshake-responses.js.map +1 -0
  659. package/dist/daemon/integrated-runtimes.d.ts +137 -0
  660. package/dist/daemon/integrated-runtimes.d.ts.map +1 -0
  661. package/dist/daemon/integrated-runtimes.js +763 -0
  662. package/dist/daemon/integrated-runtimes.js.map +1 -0
  663. package/dist/daemon/iroh-native.d.ts +76 -0
  664. package/dist/daemon/iroh-native.d.ts.map +1 -0
  665. package/dist/daemon/iroh-native.js +18 -0
  666. package/dist/daemon/iroh-native.js.map +1 -0
  667. package/dist/daemon/iroh-resource-guard.d.ts +57 -0
  668. package/dist/daemon/iroh-resource-guard.d.ts.map +1 -0
  669. package/dist/daemon/iroh-resource-guard.js +134 -0
  670. package/dist/daemon/iroh-resource-guard.js.map +1 -0
  671. package/dist/daemon/iroh-service.d.ts +51 -0
  672. package/dist/daemon/iroh-service.d.ts.map +1 -0
  673. package/dist/daemon/iroh-service.js +2604 -0
  674. package/dist/daemon/iroh-service.js.map +1 -0
  675. package/dist/daemon/keep-awake.d.ts +62 -0
  676. package/dist/daemon/keep-awake.d.ts.map +1 -0
  677. package/dist/daemon/keep-awake.js +190 -0
  678. package/dist/daemon/keep-awake.js.map +1 -0
  679. package/dist/daemon/lease-broker.d.ts +139 -0
  680. package/dist/daemon/lease-broker.d.ts.map +1 -0
  681. package/dist/daemon/lease-broker.js +504 -0
  682. package/dist/daemon/lease-broker.js.map +1 -0
  683. package/dist/daemon/log.d.ts +16 -0
  684. package/dist/daemon/log.d.ts.map +1 -0
  685. package/dist/daemon/log.js +40 -0
  686. package/dist/daemon/log.js.map +1 -0
  687. package/dist/daemon/main.d.ts +70 -0
  688. package/dist/daemon/main.d.ts.map +1 -0
  689. package/dist/daemon/main.js +781 -0
  690. package/dist/daemon/main.js.map +1 -0
  691. package/dist/daemon/paths.d.ts +32 -0
  692. package/dist/daemon/paths.d.ts.map +1 -0
  693. package/dist/daemon/paths.js +208 -0
  694. package/dist/daemon/paths.js.map +1 -0
  695. package/dist/daemon/process-identity.d.ts +58 -0
  696. package/dist/daemon/process-identity.d.ts.map +1 -0
  697. package/dist/daemon/process-identity.js +185 -0
  698. package/dist/daemon/process-identity.js.map +1 -0
  699. package/dist/daemon/relay-stream.d.ts +89 -0
  700. package/dist/daemon/relay-stream.d.ts.map +1 -0
  701. package/dist/daemon/relay-stream.js +202 -0
  702. package/dist/daemon/relay-stream.js.map +1 -0
  703. package/dist/daemon/remote-cli.d.ts +7 -0
  704. package/dist/daemon/remote-cli.d.ts.map +1 -0
  705. package/dist/daemon/remote-cli.js +774 -0
  706. package/dist/daemon/remote-cli.js.map +1 -0
  707. package/dist/daemon/service-install.d.ts +43 -0
  708. package/dist/daemon/service-install.d.ts.map +1 -0
  709. package/dist/daemon/service-install.js +198 -0
  710. package/dist/daemon/service-install.js.map +1 -0
  711. package/dist/daemon/session-target.d.ts +62 -0
  712. package/dist/daemon/session-target.d.ts.map +1 -0
  713. package/dist/daemon/session-target.js +66 -0
  714. package/dist/daemon/session-target.js.map +1 -0
  715. package/dist/daemon/spawn.d.ts +53 -0
  716. package/dist/daemon/spawn.d.ts.map +1 -0
  717. package/dist/daemon/spawn.js +205 -0
  718. package/dist/daemon/spawn.js.map +1 -0
  719. package/dist/daemon/state.d.ts +145 -0
  720. package/dist/daemon/state.d.ts.map +1 -0
  721. package/dist/daemon/state.js +454 -0
  722. package/dist/daemon/state.js.map +1 -0
  723. package/dist/daemon/theme-push.d.ts +23 -0
  724. package/dist/daemon/theme-push.d.ts.map +1 -0
  725. package/dist/daemon/theme-push.js +30 -0
  726. package/dist/daemon/theme-push.js.map +1 -0
  727. package/dist/daemon/viewer-feed.d.ts +42 -0
  728. package/dist/daemon/viewer-feed.d.ts.map +1 -0
  729. package/dist/daemon/viewer-feed.js +138 -0
  730. package/dist/daemon/viewer-feed.js.map +1 -0
  731. package/dist/daemon/workspace-directory.d.ts +35 -0
  732. package/dist/daemon/workspace-directory.d.ts.map +1 -0
  733. package/dist/daemon/workspace-directory.js +105 -0
  734. package/dist/daemon/workspace-directory.js.map +1 -0
  735. package/dist/daemon/workspace-streams.d.ts +70 -0
  736. package/dist/daemon/workspace-streams.d.ts.map +1 -0
  737. package/dist/daemon/workspace-streams.js +289 -0
  738. package/dist/daemon/workspace-streams.js.map +1 -0
  739. package/dist/daemon/worktree-manager.d.ts +219 -0
  740. package/dist/daemon/worktree-manager.d.ts.map +1 -0
  741. package/dist/daemon/worktree-manager.js +1204 -0
  742. package/dist/daemon/worktree-manager.js.map +1 -0
  743. package/dist/index.d.ts +44 -0
  744. package/dist/index.d.ts.map +1 -0
  745. package/dist/index.js +57 -0
  746. package/dist/index.js.map +1 -0
  747. package/dist/main.d.ts +12 -0
  748. package/dist/main.d.ts.map +1 -0
  749. package/dist/main.js +773 -0
  750. package/dist/main.js.map +1 -0
  751. package/dist/mcp-cli.d.ts +6 -0
  752. package/dist/mcp-cli.d.ts.map +1 -0
  753. package/dist/mcp-cli.js +347 -0
  754. package/dist/mcp-cli.js.map +1 -0
  755. package/dist/migrations.d.ts +33 -0
  756. package/dist/migrations.d.ts.map +1 -0
  757. package/dist/migrations.js +281 -0
  758. package/dist/migrations.js.map +1 -0
  759. package/dist/modes/index.d.ts +13 -0
  760. package/dist/modes/index.d.ts.map +1 -0
  761. package/dist/modes/index.js +12 -0
  762. package/dist/modes/index.js.map +1 -0
  763. package/dist/modes/interactive/components/armin.d.ts +34 -0
  764. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  765. package/dist/modes/interactive/components/armin.js +333 -0
  766. package/dist/modes/interactive/components/armin.js.map +1 -0
  767. package/dist/modes/interactive/components/assistant-message.d.ts +22 -0
  768. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  769. package/dist/modes/interactive/components/assistant-message.js +129 -0
  770. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  771. package/dist/modes/interactive/components/bash-execution.d.ts +39 -0
  772. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  773. package/dist/modes/interactive/components/bash-execution.js +212 -0
  774. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  775. package/dist/modes/interactive/components/bordered-loader.d.ts +17 -0
  776. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  777. package/dist/modes/interactive/components/bordered-loader.js +57 -0
  778. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  779. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  780. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  781. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  782. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  783. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  784. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  785. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  786. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  787. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  788. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  789. package/dist/modes/interactive/components/config-selector.js +510 -0
  790. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  791. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  792. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  793. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  794. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  795. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  796. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  797. package/dist/modes/interactive/components/custom-editor.js +70 -0
  798. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  799. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  800. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  801. package/dist/modes/interactive/components/custom-message.js +76 -0
  802. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  803. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  804. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  805. package/dist/modes/interactive/components/daxnuts.js +140 -0
  806. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  807. package/dist/modes/interactive/components/diff.d.ts +12 -0
  808. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  809. package/dist/modes/interactive/components/diff.js +133 -0
  810. package/dist/modes/interactive/components/diff.js.map +1 -0
  811. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  812. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  813. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  814. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  815. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  816. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  817. package/dist/modes/interactive/components/extension-editor.js +116 -0
  818. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  819. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  820. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  821. package/dist/modes/interactive/components/extension-input.js +61 -0
  822. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  823. package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
  824. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  825. package/dist/modes/interactive/components/extension-selector.js +98 -0
  826. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  827. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  828. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  829. package/dist/modes/interactive/components/first-time-setup.js +103 -0
  830. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  831. package/dist/modes/interactive/components/footer.d.ts +27 -0
  832. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  833. package/dist/modes/interactive/components/footer.js +180 -0
  834. package/dist/modes/interactive/components/footer.js.map +1 -0
  835. package/dist/modes/interactive/components/hotkeys.d.ts +24 -0
  836. package/dist/modes/interactive/components/hotkeys.d.ts.map +1 -0
  837. package/dist/modes/interactive/components/hotkeys.js +97 -0
  838. package/dist/modes/interactive/components/hotkeys.js.map +1 -0
  839. package/dist/modes/interactive/components/index.d.ts +35 -0
  840. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  841. package/dist/modes/interactive/components/index.js +36 -0
  842. package/dist/modes/interactive/components/index.js.map +1 -0
  843. package/dist/modes/interactive/components/keybinding-hints.d.ts +19 -0
  844. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  845. package/dist/modes/interactive/components/keybinding-hints.js +48 -0
  846. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  847. package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  848. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  849. package/dist/modes/interactive/components/login-dialog.js +179 -0
  850. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  851. package/dist/modes/interactive/components/logo.d.ts +25 -0
  852. package/dist/modes/interactive/components/logo.d.ts.map +1 -0
  853. package/dist/modes/interactive/components/logo.js +89 -0
  854. package/dist/modes/interactive/components/logo.js.map +1 -0
  855. package/dist/modes/interactive/components/model-selector.d.ts +47 -0
  856. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  857. package/dist/modes/interactive/components/model-selector.js +278 -0
  858. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  859. package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
  860. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  861. package/dist/modes/interactive/components/oauth-selector.js +165 -0
  862. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  863. package/dist/modes/interactive/components/remote-control-center.d.ts +110 -0
  864. package/dist/modes/interactive/components/remote-control-center.d.ts.map +1 -0
  865. package/dist/modes/interactive/components/remote-control-center.js +1217 -0
  866. package/dist/modes/interactive/components/remote-control-center.js.map +1 -0
  867. package/dist/modes/interactive/components/review-tools-selector.d.ts +24 -0
  868. package/dist/modes/interactive/components/review-tools-selector.d.ts.map +1 -0
  869. package/dist/modes/interactive/components/review-tools-selector.js +93 -0
  870. package/dist/modes/interactive/components/review-tools-selector.js.map +1 -0
  871. package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
  872. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  873. package/dist/modes/interactive/components/scoped-models-selector.js +290 -0
  874. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  875. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  876. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  877. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  878. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  879. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  880. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  881. package/dist/modes/interactive/components/session-selector.js +856 -0
  882. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  883. package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
  884. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  885. package/dist/modes/interactive/components/settings-selector.js +484 -0
  886. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  887. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  888. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  889. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  890. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  891. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  892. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  893. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  894. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  895. package/dist/modes/interactive/components/streaming-render-coalescer.d.ts +29 -0
  896. package/dist/modes/interactive/components/streaming-render-coalescer.d.ts.map +1 -0
  897. package/dist/modes/interactive/components/streaming-render-coalescer.js +98 -0
  898. package/dist/modes/interactive/components/streaming-render-coalescer.js.map +1 -0
  899. package/dist/modes/interactive/components/subagent-inspector.d.ts +32 -0
  900. package/dist/modes/interactive/components/subagent-inspector.d.ts.map +1 -0
  901. package/dist/modes/interactive/components/subagent-inspector.js +439 -0
  902. package/dist/modes/interactive/components/subagent-inspector.js.map +1 -0
  903. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  904. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  905. package/dist/modes/interactive/components/theme-selector.js +50 -0
  906. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  907. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  908. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  909. package/dist/modes/interactive/components/thinking-selector.js +52 -0
  910. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  911. package/dist/modes/interactive/components/tool-execution.d.ts +83 -0
  912. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  913. package/dist/modes/interactive/components/tool-execution.js +421 -0
  914. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  915. package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
  916. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  917. package/dist/modes/interactive/components/tree-selector.js +1208 -0
  918. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  919. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  920. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  921. package/dist/modes/interactive/components/trust-selector.js +91 -0
  922. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  923. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  924. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  925. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  926. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  927. package/dist/modes/interactive/components/user-message.d.ts +9 -0
  928. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  929. package/dist/modes/interactive/components/user-message.js +42 -0
  930. package/dist/modes/interactive/components/user-message.js.map +1 -0
  931. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  932. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  933. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  934. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  935. package/dist/modes/interactive/components/volt-announcement.d.ts +5 -0
  936. package/dist/modes/interactive/components/volt-announcement.d.ts.map +1 -0
  937. package/dist/modes/interactive/components/volt-announcement.js +15 -0
  938. package/dist/modes/interactive/components/volt-announcement.js.map +1 -0
  939. package/dist/modes/interactive/daemon-attach.d.ts +154 -0
  940. package/dist/modes/interactive/daemon-attach.d.ts.map +1 -0
  941. package/dist/modes/interactive/daemon-attach.js +552 -0
  942. package/dist/modes/interactive/daemon-attach.js.map +1 -0
  943. package/dist/modes/interactive/drain-viewer.d.ts +31 -0
  944. package/dist/modes/interactive/drain-viewer.d.ts.map +1 -0
  945. package/dist/modes/interactive/drain-viewer.js +166 -0
  946. package/dist/modes/interactive/drain-viewer.js.map +1 -0
  947. package/dist/modes/interactive/interactive-mode.d.ts +502 -0
  948. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  949. package/dist/modes/interactive/interactive-mode.js +7007 -0
  950. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  951. package/dist/modes/interactive/prompt-image-attachments.d.ts +34 -0
  952. package/dist/modes/interactive/prompt-image-attachments.d.ts.map +1 -0
  953. package/dist/modes/interactive/prompt-image-attachments.js +120 -0
  954. package/dist/modes/interactive/prompt-image-attachments.js.map +1 -0
  955. package/dist/modes/interactive/relay-stream-adapter.d.ts +19 -0
  956. package/dist/modes/interactive/relay-stream-adapter.d.ts.map +1 -0
  957. package/dist/modes/interactive/relay-stream-adapter.js +107 -0
  958. package/dist/modes/interactive/relay-stream-adapter.js.map +1 -0
  959. package/dist/modes/print-mode.d.ts +28 -0
  960. package/dist/modes/print-mode.d.ts.map +1 -0
  961. package/dist/modes/print-mode.js +132 -0
  962. package/dist/modes/print-mode.js.map +1 -0
  963. package/dist/modes/rpc/in-process-rpc-client.d.ts +31 -0
  964. package/dist/modes/rpc/in-process-rpc-client.d.ts.map +1 -0
  965. package/dist/modes/rpc/in-process-rpc-client.js +63 -0
  966. package/dist/modes/rpc/in-process-rpc-client.js.map +1 -0
  967. package/dist/modes/rpc/iroh-remote-agent-runtime.d.ts +61 -0
  968. package/dist/modes/rpc/iroh-remote-agent-runtime.d.ts.map +1 -0
  969. package/dist/modes/rpc/iroh-remote-agent-runtime.js +155 -0
  970. package/dist/modes/rpc/iroh-remote-agent-runtime.js.map +1 -0
  971. package/dist/modes/rpc/iroh-remote-rpc-mode.d.ts +69 -0
  972. package/dist/modes/rpc/iroh-remote-rpc-mode.d.ts.map +1 -0
  973. package/dist/modes/rpc/iroh-remote-rpc-mode.js +1223 -0
  974. package/dist/modes/rpc/iroh-remote-rpc-mode.js.map +1 -0
  975. package/dist/modes/rpc/jsonl.d.ts +2 -0
  976. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  977. package/dist/modes/rpc/jsonl.js +2 -0
  978. package/dist/modes/rpc/jsonl.js.map +1 -0
  979. package/dist/modes/rpc/rpc-client-base.d.ts +209 -0
  980. package/dist/modes/rpc/rpc-client-base.d.ts.map +1 -0
  981. package/dist/modes/rpc/rpc-client-base.js +530 -0
  982. package/dist/modes/rpc/rpc-client-base.js.map +1 -0
  983. package/dist/modes/rpc/rpc-client.d.ts +50 -0
  984. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  985. package/dist/modes/rpc/rpc-client.js +190 -0
  986. package/dist/modes/rpc/rpc-client.js.map +1 -0
  987. package/dist/modes/rpc/rpc-command-dispatcher.d.ts +43 -0
  988. package/dist/modes/rpc/rpc-command-dispatcher.d.ts.map +1 -0
  989. package/dist/modes/rpc/rpc-command-dispatcher.js +613 -0
  990. package/dist/modes/rpc/rpc-command-dispatcher.js.map +1 -0
  991. package/dist/modes/rpc/rpc-command-validation.d.ts +2 -0
  992. package/dist/modes/rpc/rpc-command-validation.d.ts.map +1 -0
  993. package/dist/modes/rpc/rpc-command-validation.js +207 -0
  994. package/dist/modes/rpc/rpc-command-validation.js.map +1 -0
  995. package/dist/modes/rpc/rpc-mode.d.ts +48 -0
  996. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  997. package/dist/modes/rpc/rpc-mode.js +1089 -0
  998. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  999. package/dist/modes/rpc/rpc-transport-client.d.ts +26 -0
  1000. package/dist/modes/rpc/rpc-transport-client.d.ts.map +1 -0
  1001. package/dist/modes/rpc/rpc-transport-client.js +76 -0
  1002. package/dist/modes/rpc/rpc-transport-client.js.map +1 -0
  1003. package/dist/modes/rpc/rpc-types.d.ts +2 -0
  1004. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  1005. package/dist/modes/rpc/rpc-types.js +2 -0
  1006. package/dist/modes/rpc/rpc-types.js.map +1 -0
  1007. package/dist/package-manager-cli.d.ts +28 -0
  1008. package/dist/package-manager-cli.d.ts.map +1 -0
  1009. package/dist/package-manager-cli.js +667 -0
  1010. package/dist/package-manager-cli.js.map +1 -0
  1011. package/dist/remote/integrated-runtime-retention.d.ts +17 -0
  1012. package/dist/remote/integrated-runtime-retention.d.ts.map +1 -0
  1013. package/dist/remote/integrated-runtime-retention.js +62 -0
  1014. package/dist/remote/integrated-runtime-retention.js.map +1 -0
  1015. package/dist/remote/iroh-native-adapter.cjs +19 -0
  1016. package/dist/sea/cli.d.ts +4 -0
  1017. package/dist/sea/cli.d.ts.map +1 -0
  1018. package/dist/sea/cli.js +4 -0
  1019. package/dist/sea/cli.js.map +1 -0
  1020. package/dist/sea/register-bedrock.d.ts +2 -0
  1021. package/dist/sea/register-bedrock.d.ts.map +1 -0
  1022. package/dist/sea/register-bedrock.js +4 -0
  1023. package/dist/sea/register-bedrock.js.map +1 -0
  1024. package/dist/store/catalog.d.ts +57 -0
  1025. package/dist/store/catalog.d.ts.map +1 -0
  1026. package/dist/store/catalog.js +331 -0
  1027. package/dist/store/catalog.js.map +1 -0
  1028. package/dist/store/inspector.d.ts +36 -0
  1029. package/dist/store/inspector.d.ts.map +1 -0
  1030. package/dist/store/inspector.js +578 -0
  1031. package/dist/store/inspector.js.map +1 -0
  1032. package/dist/store/install-plan.d.ts +26 -0
  1033. package/dist/store/install-plan.d.ts.map +1 -0
  1034. package/dist/store/install-plan.js +80 -0
  1035. package/dist/store/install-plan.js.map +1 -0
  1036. package/dist/store/render.d.ts +11 -0
  1037. package/dist/store/render.d.ts.map +1 -0
  1038. package/dist/store/render.js +153 -0
  1039. package/dist/store/render.js.map +1 -0
  1040. package/dist/store/resolver.d.ts +22 -0
  1041. package/dist/store/resolver.d.ts.map +1 -0
  1042. package/dist/store/resolver.js +207 -0
  1043. package/dist/store/resolver.js.map +1 -0
  1044. package/dist/store/store-cli.d.ts +7 -0
  1045. package/dist/store/store-cli.d.ts.map +1 -0
  1046. package/dist/store/store-cli.js +636 -0
  1047. package/dist/store/store-cli.js.map +1 -0
  1048. package/dist/store/targets.d.ts +21 -0
  1049. package/dist/store/targets.d.ts.map +1 -0
  1050. package/dist/store/targets.js +55 -0
  1051. package/dist/store/targets.js.map +1 -0
  1052. package/dist/utils/ansi.d.ts +2 -0
  1053. package/dist/utils/ansi.d.ts.map +1 -0
  1054. package/dist/utils/ansi.js +52 -0
  1055. package/dist/utils/ansi.js.map +1 -0
  1056. package/dist/utils/changelog.d.ts +22 -0
  1057. package/dist/utils/changelog.d.ts.map +1 -0
  1058. package/dist/utils/changelog.js +165 -0
  1059. package/dist/utils/changelog.js.map +1 -0
  1060. package/dist/utils/child-process.d.ts +18 -0
  1061. package/dist/utils/child-process.d.ts.map +1 -0
  1062. package/dist/utils/child-process.js +106 -0
  1063. package/dist/utils/child-process.js.map +1 -0
  1064. package/dist/utils/clipboard-image.d.ts +11 -0
  1065. package/dist/utils/clipboard-image.d.ts.map +1 -0
  1066. package/dist/utils/clipboard-image.js +245 -0
  1067. package/dist/utils/clipboard-image.js.map +1 -0
  1068. package/dist/utils/clipboard.d.ts +2 -0
  1069. package/dist/utils/clipboard.d.ts.map +1 -0
  1070. package/dist/utils/clipboard.js +94 -0
  1071. package/dist/utils/clipboard.js.map +1 -0
  1072. package/dist/utils/deprecation.d.ts +4 -0
  1073. package/dist/utils/deprecation.d.ts.map +1 -0
  1074. package/dist/utils/deprecation.js +13 -0
  1075. package/dist/utils/deprecation.js.map +1 -0
  1076. package/dist/utils/durable-atomic-write.d.ts +46 -0
  1077. package/dist/utils/durable-atomic-write.d.ts.map +1 -0
  1078. package/dist/utils/durable-atomic-write.js +104 -0
  1079. package/dist/utils/durable-atomic-write.js.map +1 -0
  1080. package/dist/utils/frontmatter.d.ts +8 -0
  1081. package/dist/utils/frontmatter.d.ts.map +1 -0
  1082. package/dist/utils/frontmatter.js +26 -0
  1083. package/dist/utils/frontmatter.js.map +1 -0
  1084. package/dist/utils/fs-watch.d.ts +5 -0
  1085. package/dist/utils/fs-watch.d.ts.map +1 -0
  1086. package/dist/utils/fs-watch.js +25 -0
  1087. package/dist/utils/fs-watch.js.map +1 -0
  1088. package/dist/utils/git.d.ts +26 -0
  1089. package/dist/utils/git.d.ts.map +1 -0
  1090. package/dist/utils/git.js +195 -0
  1091. package/dist/utils/git.js.map +1 -0
  1092. package/dist/utils/html.d.ts +7 -0
  1093. package/dist/utils/html.d.ts.map +1 -0
  1094. package/dist/utils/html.js +40 -0
  1095. package/dist/utils/html.js.map +1 -0
  1096. package/dist/utils/ignore-files.d.ts +5 -0
  1097. package/dist/utils/ignore-files.d.ts.map +1 -0
  1098. package/dist/utils/ignore-files.js +58 -0
  1099. package/dist/utils/ignore-files.js.map +1 -0
  1100. package/dist/utils/image-codec.d.ts +22 -0
  1101. package/dist/utils/image-codec.d.ts.map +1 -0
  1102. package/dist/utils/image-codec.js +35 -0
  1103. package/dist/utils/image-codec.js.map +1 -0
  1104. package/dist/utils/image-convert.d.ts +9 -0
  1105. package/dist/utils/image-convert.d.ts.map +1 -0
  1106. package/dist/utils/image-convert.js +26 -0
  1107. package/dist/utils/image-convert.js.map +1 -0
  1108. package/dist/utils/image-resize-core.d.ts +31 -0
  1109. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1110. package/dist/utils/image-resize-core.js +181 -0
  1111. package/dist/utils/image-resize-core.js.map +1 -0
  1112. package/dist/utils/image-resize-worker.d.ts +2 -0
  1113. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1114. package/dist/utils/image-resize-worker.js +31 -0
  1115. package/dist/utils/image-resize-worker.js.map +1 -0
  1116. package/dist/utils/image-resize.d.ts +15 -0
  1117. package/dist/utils/image-resize.d.ts.map +1 -0
  1118. package/dist/utils/image-resize.js +92 -0
  1119. package/dist/utils/image-resize.js.map +1 -0
  1120. package/dist/utils/json.d.ts +3 -0
  1121. package/dist/utils/json.d.ts.map +1 -0
  1122. package/dist/utils/json.js +7 -0
  1123. package/dist/utils/json.js.map +1 -0
  1124. package/dist/utils/mime.d.ts +3 -0
  1125. package/dist/utils/mime.d.ts.map +1 -0
  1126. package/dist/utils/mime.js +69 -0
  1127. package/dist/utils/mime.js.map +1 -0
  1128. package/dist/utils/npm-spec.d.ts +9 -0
  1129. package/dist/utils/npm-spec.d.ts.map +1 -0
  1130. package/dist/utils/npm-spec.js +15 -0
  1131. package/dist/utils/npm-spec.js.map +1 -0
  1132. package/dist/utils/open-browser.d.ts +9 -0
  1133. package/dist/utils/open-browser.d.ts.map +1 -0
  1134. package/dist/utils/open-browser.js +22 -0
  1135. package/dist/utils/open-browser.js.map +1 -0
  1136. package/dist/utils/paths.d.ts +31 -0
  1137. package/dist/utils/paths.d.ts.map +1 -0
  1138. package/dist/utils/paths.js +92 -0
  1139. package/dist/utils/paths.js.map +1 -0
  1140. package/dist/utils/private-files.d.ts +21 -0
  1141. package/dist/utils/private-files.d.ts.map +1 -0
  1142. package/dist/utils/private-files.js +103 -0
  1143. package/dist/utils/private-files.js.map +1 -0
  1144. package/dist/utils/process-env.d.ts +2 -0
  1145. package/dist/utils/process-env.d.ts.map +1 -0
  1146. package/dist/utils/process-env.js +31 -0
  1147. package/dist/utils/process-env.js.map +1 -0
  1148. package/dist/utils/shell.d.ts +30 -0
  1149. package/dist/utils/shell.d.ts.map +1 -0
  1150. package/dist/utils/shell.js +195 -0
  1151. package/dist/utils/shell.js.map +1 -0
  1152. package/dist/utils/sleep.d.ts +5 -0
  1153. package/dist/utils/sleep.d.ts.map +1 -0
  1154. package/dist/utils/sleep.js +17 -0
  1155. package/dist/utils/sleep.js.map +1 -0
  1156. package/dist/utils/syntax-highlight.d.ts +18 -0
  1157. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1158. package/dist/utils/syntax-highlight.js +139 -0
  1159. package/dist/utils/syntax-highlight.js.map +1 -0
  1160. package/dist/utils/tools-manager.d.ts +3 -0
  1161. package/dist/utils/tools-manager.d.ts.map +1 -0
  1162. package/dist/utils/tools-manager.js +328 -0
  1163. package/dist/utils/tools-manager.js.map +1 -0
  1164. package/dist/utils/version-check.d.ts +15 -0
  1165. package/dist/utils/version-check.d.ts.map +1 -0
  1166. package/dist/utils/version-check.js +61 -0
  1167. package/dist/utils/version-check.js.map +1 -0
  1168. package/dist/utils/volt-user-agent.d.ts +2 -0
  1169. package/dist/utils/volt-user-agent.d.ts.map +1 -0
  1170. package/dist/utils/volt-user-agent.js +5 -0
  1171. package/dist/utils/volt-user-agent.js.map +1 -0
  1172. package/dist/utils/windows-self-update.d.ts +3 -0
  1173. package/dist/utils/windows-self-update.d.ts.map +1 -0
  1174. package/dist/utils/windows-self-update.js +77 -0
  1175. package/dist/utils/windows-self-update.js.map +1 -0
  1176. package/docs/compaction.md +394 -0
  1177. package/docs/containerization.md +111 -0
  1178. package/docs/custom-provider.md +737 -0
  1179. package/docs/daemon.md +190 -0
  1180. package/docs/development.md +70 -0
  1181. package/docs/docs.json +176 -0
  1182. package/docs/extensions.md +2692 -0
  1183. package/docs/images/exy.png +0 -0
  1184. package/docs/images/interactive-mode.png +0 -0
  1185. package/docs/images/tree-view.png +0 -0
  1186. package/docs/index.md +82 -0
  1187. package/docs/iroh-remote-access-design.md +340 -0
  1188. package/docs/iroh-remote-protocol.md +431 -0
  1189. package/docs/json.md +87 -0
  1190. package/docs/keybindings.md +200 -0
  1191. package/docs/live-shared-session-daemon-design.md +1090 -0
  1192. package/docs/lsp.md +143 -0
  1193. package/docs/mcp.md +1044 -0
  1194. package/docs/models.md +495 -0
  1195. package/docs/packages.md +230 -0
  1196. package/docs/prompt-templates.md +108 -0
  1197. package/docs/providers.md +274 -0
  1198. package/docs/quickstart.md +165 -0
  1199. package/docs/rpc.md +2050 -0
  1200. package/docs/sdk.md +1267 -0
  1201. package/docs/security.md +139 -0
  1202. package/docs/session-format.md +412 -0
  1203. package/docs/sessions.md +145 -0
  1204. package/docs/settings.md +371 -0
  1205. package/docs/shell-aliases.md +13 -0
  1206. package/docs/skills.md +243 -0
  1207. package/docs/subagents-design.md +419 -0
  1208. package/docs/terminal-setup.md +148 -0
  1209. package/docs/termux.md +127 -0
  1210. package/docs/themes.md +295 -0
  1211. package/docs/tla/ClientAuth.cfg +16 -0
  1212. package/docs/tla/ClientAuth.tla +205 -0
  1213. package/docs/tla/ClientConn.cfg +16 -0
  1214. package/docs/tla/ClientConn.tla +265 -0
  1215. package/docs/tla/LeaseBroker.cfg +43 -0
  1216. package/docs/tla/LeaseBroker.tla +563 -0
  1217. package/docs/tla/PLAN.md +240 -0
  1218. package/docs/tla/PushOrdering.cfg +17 -0
  1219. package/docs/tla/PushOrdering.tla +183 -0
  1220. package/docs/tla/README.md +205 -0
  1221. package/docs/tla/RelayViewer.cfg +26 -0
  1222. package/docs/tla/RelayViewer.tla +299 -0
  1223. package/docs/tla/SessionTarget.cfg +18 -0
  1224. package/docs/tla/SessionTarget.tla +192 -0
  1225. package/docs/tla/check.sh +34 -0
  1226. package/docs/tmux.md +63 -0
  1227. package/docs/tui.md +949 -0
  1228. package/docs/usage.md +482 -0
  1229. package/docs/windows.md +17 -0
  1230. package/docs/worktrees-design.md +605 -0
  1231. package/examples/README.md +28 -0
  1232. package/examples/extensions/README.md +211 -0
  1233. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  1234. package/examples/extensions/bash-spawn-hook.ts +30 -0
  1235. package/examples/extensions/bookmark.ts +50 -0
  1236. package/examples/extensions/border-status-editor.ts +150 -0
  1237. package/examples/extensions/built-in-tool-renderer.ts +249 -0
  1238. package/examples/extensions/claude-rules.ts +86 -0
  1239. package/examples/extensions/commands.ts +72 -0
  1240. package/examples/extensions/confirm-destructive.ts +59 -0
  1241. package/examples/extensions/custom-compaction.ts +127 -0
  1242. package/examples/extensions/custom-footer.ts +64 -0
  1243. package/examples/extensions/custom-header.ts +72 -0
  1244. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  1245. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1246. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1247. package/examples/extensions/custom-provider-gitlab-duo/index.ts +400 -0
  1248. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1249. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  1250. package/examples/extensions/dirty-repo-guard.ts +56 -0
  1251. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1252. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  1253. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1254. package/examples/extensions/dynamic-resources/index.ts +15 -0
  1255. package/examples/extensions/dynamic-tools.ts +74 -0
  1256. package/examples/extensions/event-bus.ts +43 -0
  1257. package/examples/extensions/file-trigger.ts +41 -0
  1258. package/examples/extensions/git-checkpoint.ts +53 -0
  1259. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  1260. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  1261. package/examples/extensions/gondolin/index.ts +531 -0
  1262. package/examples/extensions/gondolin/package-lock.json +185 -0
  1263. package/examples/extensions/gondolin/package.json +19 -0
  1264. package/examples/extensions/handoff.ts +191 -0
  1265. package/examples/extensions/hello.ts +26 -0
  1266. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1267. package/examples/extensions/inline-bash.ts +94 -0
  1268. package/examples/extensions/input-transform-streaming.ts +39 -0
  1269. package/examples/extensions/input-transform.ts +43 -0
  1270. package/examples/extensions/interactive-shell.ts +196 -0
  1271. package/examples/extensions/mac-system-theme.ts +47 -0
  1272. package/examples/extensions/message-renderer.ts +59 -0
  1273. package/examples/extensions/minimal-mode.ts +426 -0
  1274. package/examples/extensions/modal-editor.ts +85 -0
  1275. package/examples/extensions/model-status.ts +31 -0
  1276. package/examples/extensions/notify.ts +55 -0
  1277. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  1278. package/examples/extensions/overlay-test.ts +153 -0
  1279. package/examples/extensions/permission-gate.ts +34 -0
  1280. package/examples/extensions/pirate.ts +47 -0
  1281. package/examples/extensions/plan-mode/README.md +65 -0
  1282. package/examples/extensions/plan-mode/index.ts +340 -0
  1283. package/examples/extensions/plan-mode/utils.ts +168 -0
  1284. package/examples/extensions/preset.ts +436 -0
  1285. package/examples/extensions/project-trust.ts +64 -0
  1286. package/examples/extensions/prompt-customizer.ts +97 -0
  1287. package/examples/extensions/protected-paths.ts +30 -0
  1288. package/examples/extensions/provider-payload.ts +18 -0
  1289. package/examples/extensions/qna.ts +122 -0
  1290. package/examples/extensions/question.ts +277 -0
  1291. package/examples/extensions/questionnaire.ts +440 -0
  1292. package/examples/extensions/rainbow-editor.ts +88 -0
  1293. package/examples/extensions/reload-runtime.ts +37 -0
  1294. package/examples/extensions/rpc-demo.ts +118 -0
  1295. package/examples/extensions/sandbox/index.ts +321 -0
  1296. package/examples/extensions/sandbox/package-lock.json +92 -0
  1297. package/examples/extensions/sandbox/package.json +19 -0
  1298. package/examples/extensions/send-user-message.ts +97 -0
  1299. package/examples/extensions/session-name.ts +27 -0
  1300. package/examples/extensions/shutdown-command.ts +63 -0
  1301. package/examples/extensions/snake.ts +343 -0
  1302. package/examples/extensions/space-invaders.ts +560 -0
  1303. package/examples/extensions/ssh.ts +220 -0
  1304. package/examples/extensions/status-line.ts +32 -0
  1305. package/examples/extensions/structured-output.ts +65 -0
  1306. package/examples/extensions/subagent/README.md +175 -0
  1307. package/examples/extensions/subagent/agents/planner.md +37 -0
  1308. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1309. package/examples/extensions/subagent/agents/scout.md +50 -0
  1310. package/examples/extensions/subagent/agents/worker.md +24 -0
  1311. package/examples/extensions/subagent/agents.ts +126 -0
  1312. package/examples/extensions/subagent/index.ts +1009 -0
  1313. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1314. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1315. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1316. package/examples/extensions/summarize.ts +206 -0
  1317. package/examples/extensions/system-prompt-header.ts +17 -0
  1318. package/examples/extensions/tic-tac-toe.ts +1008 -0
  1319. package/examples/extensions/timed-confirm.ts +70 -0
  1320. package/examples/extensions/titlebar-spinner.ts +58 -0
  1321. package/examples/extensions/todo.ts +297 -0
  1322. package/examples/extensions/tool-override.ts +144 -0
  1323. package/examples/extensions/tools.ts +146 -0
  1324. package/examples/extensions/trigger-compact.ts +50 -0
  1325. package/examples/extensions/truncated-tool.ts +195 -0
  1326. package/examples/extensions/widget-placement.ts +9 -0
  1327. package/examples/extensions/with-deps/index.ts +32 -0
  1328. package/examples/extensions/with-deps/package-lock.json +31 -0
  1329. package/examples/extensions/with-deps/package.json +22 -0
  1330. package/examples/extensions/working-indicator.ts +123 -0
  1331. package/examples/extensions/working-message-test.ts +25 -0
  1332. package/examples/remote/firebase-push-relay/README.md +79 -0
  1333. package/examples/remote/firebase-push-relay/firebase.json +12 -0
  1334. package/examples/remote/firebase-push-relay/firestore.indexes.json +11 -0
  1335. package/examples/remote/firebase-push-relay/firestore.rules +9 -0
  1336. package/examples/remote/firebase-push-relay/functions/core.js +511 -0
  1337. package/examples/remote/firebase-push-relay/functions/core.test.js +273 -0
  1338. package/examples/remote/firebase-push-relay/functions/index.js +413 -0
  1339. package/examples/remote/firebase-push-relay/functions/package-lock.json +2974 -0
  1340. package/examples/remote/firebase-push-relay/functions/package.json +18 -0
  1341. package/examples/remote/iroh-sidecar/README.md +211 -0
  1342. package/examples/remote/iroh-sidecar/client.mjs +554 -0
  1343. package/examples/remote/iroh-sidecar/common.mjs +195 -0
  1344. package/examples/remote/iroh-sidecar/host.mjs +4 -0
  1345. package/examples/remote/iroh-sidecar/package-lock.json +213 -0
  1346. package/examples/remote/iroh-sidecar/package.json +13 -0
  1347. package/examples/remote/iroh-sidecar/source-aware-run.mjs +41 -0
  1348. package/examples/rpc-extension-ui.ts +632 -0
  1349. package/examples/sdk/01-minimal.ts +26 -0
  1350. package/examples/sdk/02-custom-model.ts +53 -0
  1351. package/examples/sdk/03-custom-prompt.ts +70 -0
  1352. package/examples/sdk/04-skills.ts +55 -0
  1353. package/examples/sdk/05-tools.ts +48 -0
  1354. package/examples/sdk/06-extensions.ts +94 -0
  1355. package/examples/sdk/07-context-files.ts +42 -0
  1356. package/examples/sdk/08-prompt-templates.ts +51 -0
  1357. package/examples/sdk/09-api-keys-and-oauth.ts +52 -0
  1358. package/examples/sdk/10-settings.ts +53 -0
  1359. package/examples/sdk/11-sessions.ts +52 -0
  1360. package/examples/sdk/12-full-control.ts +78 -0
  1361. package/examples/sdk/13-session-runtime.ts +67 -0
  1362. package/examples/sdk/README.md +147 -0
  1363. package/npm-shrinkwrap.json +3442 -0
  1364. package/package.json +125 -19
@@ -0,0 +1,42 @@
1
+ import { Container, Markdown, Spacer } from "@hansjm10/volt-tui";
2
+ import { getMarkdownTheme, theme } from "../../../core/theme/runtime.js";
3
+ const OSC133_ZONE_START = "\x1b]133;A\x07";
4
+ const OSC133_ZONE_END = "\x1b]133;B\x07";
5
+ const OSC133_ZONE_FINAL = "\x1b]133;C\x07";
6
+ class UserMessageRail {
7
+ content;
8
+ constructor(content) {
9
+ this.content = content;
10
+ }
11
+ render(width) {
12
+ if (width <= 2)
13
+ return this.content.render(width);
14
+ const prefix = `${theme.fg("borderAccent", "│")} `;
15
+ return this.content.render(width - 2).map((line) => prefix + line);
16
+ }
17
+ invalidate() {
18
+ this.content.invalidate();
19
+ }
20
+ }
21
+ /**
22
+ * Component that renders a user message
23
+ */
24
+ export class UserMessageComponent extends Container {
25
+ constructor(text, markdownTheme = getMarkdownTheme()) {
26
+ super();
27
+ this.addChild(new Spacer(1));
28
+ this.addChild(new UserMessageRail(new Markdown(text, 0, 0, markdownTheme, {
29
+ color: (content) => theme.fg("userMessageText", content),
30
+ }, { preserveOrderedListMarkers: true })));
31
+ }
32
+ render(width) {
33
+ const lines = super.render(width);
34
+ if (lines.length === 0) {
35
+ return lines;
36
+ }
37
+ lines[0] = OSC133_ZONE_START + lines[0];
38
+ lines[lines.length - 1] = OSC133_ZONE_END + OSC133_ZONE_FINAL + lines[lines.length - 1];
39
+ return lines;
40
+ }
41
+ }
42
+ //# sourceMappingURL=user-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/user-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAsB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAEzE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAE3C,MAAM,eAAe;IACZ,OAAO,CAAY;IAE3B,YAAY,OAAkB,EAAE;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAAA,CACvB;IAED,MAAM,CAAC,KAAa,EAAY;QAC/B,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,KAAG,CAAC,GAAG,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAAA,CACnE;IAED,UAAU,GAAS;QAClB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;CACD;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IAClD,YAAY,IAAY,EAAE,aAAa,GAAkB,gBAAgB,EAAE,EAAE;QAC5E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CACZ,IAAI,eAAe,CAClB,IAAI,QAAQ,CACX,IAAI,EACJ,CAAC,EACD,CAAC,EACD,aAAa,EACb;YACC,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC;SAChE,EACD,EAAE,0BAA0B,EAAE,IAAI,EAAE,CACpC,CACD,CACD,CAAC;IAAA,CACF;IAEQ,MAAM,CAAC,KAAa,EAAY;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,KAAK,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,eAAe,GAAG,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;IAAA,CACb;CACD","sourcesContent":["import { type Component, Container, Markdown, type MarkdownTheme, Spacer } from \"@hansjm10/volt-tui\";\nimport { getMarkdownTheme, theme } from \"../../../core/theme/runtime.ts\";\n\nconst OSC133_ZONE_START = \"\\x1b]133;A\\x07\";\nconst OSC133_ZONE_END = \"\\x1b]133;B\\x07\";\nconst OSC133_ZONE_FINAL = \"\\x1b]133;C\\x07\";\n\nclass UserMessageRail implements Component {\n\tprivate content: Component;\n\n\tconstructor(content: Component) {\n\t\tthis.content = content;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (width <= 2) return this.content.render(width);\n\t\tconst prefix = `${theme.fg(\"borderAccent\", \"│\")} `;\n\t\treturn this.content.render(width - 2).map((line) => prefix + line);\n\t}\n\n\tinvalidate(): void {\n\t\tthis.content.invalidate();\n\t}\n}\n\n/**\n * Component that renders a user message\n */\nexport class UserMessageComponent extends Container {\n\tconstructor(text: string, markdownTheme: MarkdownTheme = getMarkdownTheme()) {\n\t\tsuper();\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(\n\t\t\tnew UserMessageRail(\n\t\t\t\tnew Markdown(\n\t\t\t\t\ttext,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tmarkdownTheme,\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: (content: string) => theme.fg(\"userMessageText\", content),\n\t\t\t\t\t},\n\t\t\t\t\t{ preserveOrderedListMarkers: true },\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t}\n\n\toverride render(width: number): string[] {\n\t\tconst lines = super.render(width);\n\t\tif (lines.length === 0) {\n\t\t\treturn lines;\n\t\t}\n\n\t\tlines[0] = OSC133_ZONE_START + lines[0];\n\t\tlines[lines.length - 1] = OSC133_ZONE_END + OSC133_ZONE_FINAL + lines[lines.length - 1];\n\t\treturn lines;\n\t}\n}\n"]}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shared utility for truncating text to visual lines (accounting for line wrapping).
3
+ * Used by both tool-execution.ts and bash-execution.ts for consistent behavior.
4
+ */
5
+ export interface VisualTruncateResult {
6
+ /** The visual lines to display */
7
+ visualLines: string[];
8
+ /** Number of visual lines that were skipped (hidden) */
9
+ skippedCount: number;
10
+ }
11
+ /**
12
+ * Truncate text to a maximum number of visual lines (from the end).
13
+ * This accounts for line wrapping based on terminal width.
14
+ *
15
+ * @param text - The text content (may contain newlines)
16
+ * @param maxVisualLines - Maximum number of visual lines to show
17
+ * @param width - Terminal/render width
18
+ * @param paddingX - Horizontal padding for Text component (default 0).
19
+ * Use 0 when result will be placed in a Box (Box adds its own padding).
20
+ * Use 1 when result will be placed in a plain Container.
21
+ * @returns The truncated visual lines and count of skipped lines
22
+ */
23
+ export declare function truncateToVisualLines(text: string, maxVisualLines: number, width: number, paddingX?: number): VisualTruncateResult;
24
+ //# sourceMappingURL=visual-truncate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-truncate.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/visual-truncate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,oBAAoB;IACpC,kCAAkC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAU,GAClB,oBAAoB,CAkBtB","sourcesContent":["/**\n * Shared utility for truncating text to visual lines (accounting for line wrapping).\n * Used by both tool-execution.ts and bash-execution.ts for consistent behavior.\n */\n\nimport { Text } from \"@hansjm10/volt-tui\";\n\nexport interface VisualTruncateResult {\n\t/** The visual lines to display */\n\tvisualLines: string[];\n\t/** Number of visual lines that were skipped (hidden) */\n\tskippedCount: number;\n}\n\n/**\n * Truncate text to a maximum number of visual lines (from the end).\n * This accounts for line wrapping based on terminal width.\n *\n * @param text - The text content (may contain newlines)\n * @param maxVisualLines - Maximum number of visual lines to show\n * @param width - Terminal/render width\n * @param paddingX - Horizontal padding for Text component (default 0).\n * Use 0 when result will be placed in a Box (Box adds its own padding).\n * Use 1 when result will be placed in a plain Container.\n * @returns The truncated visual lines and count of skipped lines\n */\nexport function truncateToVisualLines(\n\ttext: string,\n\tmaxVisualLines: number,\n\twidth: number,\n\tpaddingX: number = 0,\n): VisualTruncateResult {\n\tif (!text) {\n\t\treturn { visualLines: [], skippedCount: 0 };\n\t}\n\n\t// Create a temporary Text component to render and get visual lines\n\tconst tempText = new Text(text, paddingX, 0);\n\tconst allVisualLines = tempText.render(width);\n\n\tif (allVisualLines.length <= maxVisualLines) {\n\t\treturn { visualLines: allVisualLines, skippedCount: 0 };\n\t}\n\n\t// Take the last N visual lines\n\tconst truncatedLines = allVisualLines.slice(-maxVisualLines);\n\tconst skippedCount = allVisualLines.length - maxVisualLines;\n\n\treturn { visualLines: truncatedLines, skippedCount };\n}\n"]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared utility for truncating text to visual lines (accounting for line wrapping).
3
+ * Used by both tool-execution.ts and bash-execution.ts for consistent behavior.
4
+ */
5
+ import { Text } from "@hansjm10/volt-tui";
6
+ /**
7
+ * Truncate text to a maximum number of visual lines (from the end).
8
+ * This accounts for line wrapping based on terminal width.
9
+ *
10
+ * @param text - The text content (may contain newlines)
11
+ * @param maxVisualLines - Maximum number of visual lines to show
12
+ * @param width - Terminal/render width
13
+ * @param paddingX - Horizontal padding for Text component (default 0).
14
+ * Use 0 when result will be placed in a Box (Box adds its own padding).
15
+ * Use 1 when result will be placed in a plain Container.
16
+ * @returns The truncated visual lines and count of skipped lines
17
+ */
18
+ export function truncateToVisualLines(text, maxVisualLines, width, paddingX = 0) {
19
+ if (!text) {
20
+ return { visualLines: [], skippedCount: 0 };
21
+ }
22
+ // Create a temporary Text component to render and get visual lines
23
+ const tempText = new Text(text, paddingX, 0);
24
+ const allVisualLines = tempText.render(width);
25
+ if (allVisualLines.length <= maxVisualLines) {
26
+ return { visualLines: allVisualLines, skippedCount: 0 };
27
+ }
28
+ // Take the last N visual lines
29
+ const truncatedLines = allVisualLines.slice(-maxVisualLines);
30
+ const skippedCount = allVisualLines.length - maxVisualLines;
31
+ return { visualLines: truncatedLines, skippedCount };
32
+ }
33
+ //# sourceMappingURL=visual-truncate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-truncate.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/visual-truncate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAS1C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACpC,IAAY,EACZ,cAAsB,EACtB,KAAa,EACb,QAAQ,GAAW,CAAC,EACG;IACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,mEAAmE;IACnE,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,+BAA+B;IAC/B,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC;IAE5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AAAA,CACrD","sourcesContent":["/**\n * Shared utility for truncating text to visual lines (accounting for line wrapping).\n * Used by both tool-execution.ts and bash-execution.ts for consistent behavior.\n */\n\nimport { Text } from \"@hansjm10/volt-tui\";\n\nexport interface VisualTruncateResult {\n\t/** The visual lines to display */\n\tvisualLines: string[];\n\t/** Number of visual lines that were skipped (hidden) */\n\tskippedCount: number;\n}\n\n/**\n * Truncate text to a maximum number of visual lines (from the end).\n * This accounts for line wrapping based on terminal width.\n *\n * @param text - The text content (may contain newlines)\n * @param maxVisualLines - Maximum number of visual lines to show\n * @param width - Terminal/render width\n * @param paddingX - Horizontal padding for Text component (default 0).\n * Use 0 when result will be placed in a Box (Box adds its own padding).\n * Use 1 when result will be placed in a plain Container.\n * @returns The truncated visual lines and count of skipped lines\n */\nexport function truncateToVisualLines(\n\ttext: string,\n\tmaxVisualLines: number,\n\twidth: number,\n\tpaddingX: number = 0,\n): VisualTruncateResult {\n\tif (!text) {\n\t\treturn { visualLines: [], skippedCount: 0 };\n\t}\n\n\t// Create a temporary Text component to render and get visual lines\n\tconst tempText = new Text(text, paddingX, 0);\n\tconst allVisualLines = tempText.render(width);\n\n\tif (allVisualLines.length <= maxVisualLines) {\n\t\treturn { visualLines: allVisualLines, skippedCount: 0 };\n\t}\n\n\t// Take the last N visual lines\n\tconst truncatedLines = allVisualLines.slice(-maxVisualLines);\n\tconst skippedCount = allVisualLines.length - maxVisualLines;\n\n\treturn { visualLines: truncatedLines, skippedCount };\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { Container } from "@hansjm10/volt-tui";
2
+ export declare class VoltAnnouncementComponent extends Container {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=volt-announcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volt-announcement.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/volt-announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAI7D,qBAAa,yBAA0B,SAAQ,SAAS;IACvD,cAWC;CACD","sourcesContent":["import { Container, Spacer, Text } from \"@hansjm10/volt-tui\";\nimport { theme } from \"../../../core/theme/runtime.ts\";\nimport { DynamicBorder } from \"./dynamic-border.ts\";\n\nexport class VoltAnnouncementComponent extends Container {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.addChild(new DynamicBorder((text) => theme.fg(\"accent\", text)));\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", \"Volt beta is taking shape\")), 1, 0));\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Maintained by Jordan Hans · github.com/hansjm10/Volt · @hansjm10 on npm\"), 1, 0),\n\t\t);\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new DynamicBorder((text) => theme.fg(\"accent\", text)));\n\t}\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { Container, Spacer, Text } from "@hansjm10/volt-tui";
2
+ import { theme } from "../../../core/theme/runtime.js";
3
+ import { DynamicBorder } from "./dynamic-border.js";
4
+ export class VoltAnnouncementComponent extends Container {
5
+ constructor() {
6
+ super();
7
+ this.addChild(new DynamicBorder((text) => theme.fg("accent", text)));
8
+ this.addChild(new Text(theme.bold(theme.fg("accent", "Volt beta is taking shape")), 1, 0));
9
+ this.addChild(new Spacer(1));
10
+ this.addChild(new Text(theme.fg("muted", "Maintained by Jordan Hans · github.com/hansjm10/Volt · @hansjm10 on npm"), 1, 0));
11
+ this.addChild(new Spacer(1));
12
+ this.addChild(new DynamicBorder((text) => theme.fg("accent", text)));
13
+ }
14
+ }
15
+ //# sourceMappingURL=volt-announcement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volt-announcement.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/volt-announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IACvD,cAAc;QACb,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CACZ,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,2EAAyE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC5G,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAAA,CACrE;CACD","sourcesContent":["import { Container, Spacer, Text } from \"@hansjm10/volt-tui\";\nimport { theme } from \"../../../core/theme/runtime.ts\";\nimport { DynamicBorder } from \"./dynamic-border.ts\";\n\nexport class VoltAnnouncementComponent extends Container {\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.addChild(new DynamicBorder((text) => theme.fg(\"accent\", text)));\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", \"Volt beta is taking shape\")), 1, 0));\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Maintained by Jordan Hans · github.com/hansjm10/Volt · @hansjm10 on npm\"), 1, 0),\n\t\t);\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new DynamicBorder((text) => theme.fg(\"accent\", text)));\n\t}\n}\n"]}
@@ -0,0 +1,154 @@
1
+ import type { Duplex } from "node:stream";
2
+ import type { IrohRemoteLiveActivityUpdateIntent, IrohRemotePushNotificationDeliveryStatus, IrohRemotePushNotificationIntent } from "../../core/remote/iroh/push.ts";
3
+ import { type DaemonClient } from "../../daemon/control-client.ts";
4
+ import { type ControlEvent, type ControlWorktreeStatus, type LeaseState, type RelayPreamble } from "../../daemon/control-protocol.ts";
5
+ import { type EnsureDaemonResult } from "../../daemon/spawn.ts";
6
+ export type DaemonAttachConnectionState = "connected" | "reconnecting" | "gone" | "disabled";
7
+ export type AcquireOutcome = {
8
+ kind: "granted";
9
+ handoff: "cold" | "warm" | "none";
10
+ } | {
11
+ kind: "pending";
12
+ viewerFeedId: string;
13
+ granted: Promise<{
14
+ handoff: "cold" | "warm" | "none";
15
+ }>;
16
+ } | {
17
+ kind: "denied";
18
+ reason: string;
19
+ } | {
20
+ kind: "noop";
21
+ };
22
+ export interface DaemonRelayOffer {
23
+ relayId: string;
24
+ relayToken: string;
25
+ workspaceName: string;
26
+ sessionId: string;
27
+ clientNodeId: string;
28
+ connectionId: string;
29
+ streamId: string;
30
+ }
31
+ export interface OpenedRelay {
32
+ preamble: RelayPreamble;
33
+ stream: Duplex;
34
+ /** Mark the relay finished locally (updates the footer count). */
35
+ finished(): void;
36
+ }
37
+ export interface RelayRpcForwardResult {
38
+ /** verbatim RPC response object to forward to the phone */
39
+ response: Record<string, unknown>;
40
+ /** refreshed workspace metadata after a successful unregister_workspace */
41
+ workspaceMetadata?: {
42
+ workspaceNames: string[];
43
+ workspaces: Array<{
44
+ name: string;
45
+ status: string;
46
+ }>;
47
+ };
48
+ }
49
+ export interface RelayNotificationDeliveryForwarder {
50
+ deliverNotification(clientNodeId: string, sessionId: string, notification: IrohRemotePushNotificationIntent): Promise<IrohRemotePushNotificationDeliveryStatus>;
51
+ deliverLiveActivityUpdate(clientNodeId: string, sessionId: string, update: IrohRemoteLiveActivityUpdateIntent): Promise<IrohRemotePushNotificationDeliveryStatus>;
52
+ }
53
+ /**
54
+ * TUI-side daemon integration façade. Every method resolves successfully as a
55
+ * no-op when the daemon is off or unreachable: InteractiveMode never throws or
56
+ * blocks on daemon absence.
57
+ */
58
+ export interface DaemonAttach {
59
+ /** Connect, resolve (or auto-register) the cwd workspace. Never throws. */
60
+ start(): Promise<void>;
61
+ acquire(sessionId: string): Promise<AcquireOutcome>;
62
+ release(sessionId: string): Promise<void>;
63
+ rekey(oldSessionId: string, newSessionId: string): Promise<void>;
64
+ /**
65
+ * Forward a state-touching RPC command from a relayed phone conversation to
66
+ * the daemon (push targets, live activities, workspace unregister). Returns
67
+ * undefined when the daemon is unreachable or rejected the request.
68
+ */
69
+ forwardRelayRpc(clientNodeId: string, sessionId: string, command: Record<string, unknown> & {
70
+ type: string;
71
+ }): Promise<RelayRpcForwardResult | undefined>;
72
+ /** Deliver relayed completion pushes and Live Activity APNs through the daemon-owned push backend. */
73
+ relayNotificationDelivery: RelayNotificationDeliveryForwarder;
74
+ /** Viewer feed subscription (drain overlay). */
75
+ viewerSubscribe(viewerFeedId: string): Promise<void>;
76
+ viewerUnsubscribe(viewerFeedId: string): Promise<void>;
77
+ viewerAbort(viewerFeedId: string): Promise<void>;
78
+ onRelayOffer(handler: (offer: DaemonRelayOffer, openRelay: () => Promise<OpenedRelay>) => void): void;
79
+ onEvent(handler: (event: ControlEvent) => void): () => void;
80
+ /** Re-acquire outcomes after a daemon reconnect (session.reload on warm). */
81
+ onReacquired(handler: (sessionId: string, outcome: AcquireOutcome) => void): void;
82
+ relayCount(): number;
83
+ onRelayCountChange(callback: (count: number) => void): void;
84
+ connectionState(): DaemonAttachConnectionState;
85
+ workspaceName(): string | undefined;
86
+ /** Live runtime ownership for sessions in a workspace, sourced from daemon status. */
87
+ listRuntimeStates(workspaceName: string): Promise<ReadonlyMap<string, Exclude<LeaseState, "unowned">>>;
88
+ dispose(): Promise<void>;
89
+ }
90
+ /**
91
+ * Resolve the registered workspace for a cwd against the daemon: longest
92
+ * path-prefix match first, then (§5.2.2) a worktree_resolve lookup so a TUI
93
+ * launched inside a daemon-managed worktree binds to the PARENT workspace
94
+ * instead of auto-registering a bogus workspace under ~/.volt/agent/worktrees.
95
+ * Only when both miss is the cwd auto-registered.
96
+ */
97
+ export declare function resolveDaemonWorkspaceForCwd(client: Pick<DaemonClient, "request">, cwd: string, log?: (message: string) => void): Promise<{
98
+ name: string;
99
+ path: string;
100
+ } | undefined>;
101
+ /**
102
+ * Sanitizer roots for serving a relayed conversation from the TUI: a
103
+ * worktree-bound conversation sanitizes with the worktree checkout as the
104
+ * root, and the parent checkout plus the worktrees root must ALSO redact
105
+ * (bash output like `git worktree list` prints both). §5.2.3.
106
+ */
107
+ export declare function getRelayServingSanitizerOptions(authorization: RelayPreamble["authorization"], agentDir: string): {
108
+ remoteWorkspacePath?: string;
109
+ workspacePath: string;
110
+ additionalRedactedPaths?: string[];
111
+ };
112
+ export interface DaemonWorktreeControl {
113
+ workspaceName: string;
114
+ workspacePath: string;
115
+ listWorktrees(): Promise<ControlWorktreeStatus[]>;
116
+ createWorktree(name?: string): Promise<{
117
+ ok: true;
118
+ worktree: ControlWorktreeStatus;
119
+ } | {
120
+ ok: false;
121
+ error: string;
122
+ }>;
123
+ /** Best-effort: records the session→worktree binding in daemon state. */
124
+ bindSession(worktreeId: string, sessionId: string): Promise<boolean>;
125
+ close(): Promise<void>;
126
+ }
127
+ export interface OpenDaemonWorktreeControlOptions {
128
+ cwd: string;
129
+ agentDir: string;
130
+ /** Injectable for tests; defaults to ensureDaemonRunning. */
131
+ ensureDaemon?: (agentDir: string) => Promise<EnsureDaemonResult>;
132
+ }
133
+ /**
134
+ * Control-plane handle for the TUI /worktree command (§5.2.1): ensures the
135
+ * daemon is running, resolves (or registers) the parent workspace for the
136
+ * cwd, and exposes worktree list/create/bind over the control socket.
137
+ */
138
+ export declare function openDaemonWorktreeControl(options: OpenDaemonWorktreeControlOptions): Promise<{
139
+ ok: true;
140
+ control: DaemonWorktreeControl;
141
+ } | {
142
+ ok: false;
143
+ error: string;
144
+ }>;
145
+ export declare function createDisabledDaemonAttach(): DaemonAttach;
146
+ export interface CreateDaemonAttachOptions {
147
+ cwd: string;
148
+ agentDir: string;
149
+ /** Auto-spawn the daemon when unreachable (remote.background). */
150
+ autoStart?: boolean;
151
+ log?: (message: string) => void;
152
+ }
153
+ export declare function createDaemonAttach(options: CreateDaemonAttachOptions): DaemonAttach;
154
+ //# sourceMappingURL=daemon-attach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-attach.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/daemon-attach.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EACX,kCAAkC,EAClC,wCAAwC,EACxC,gCAAgC,EAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,KAAK,kBAAkB,EAIvB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;AAE7F,MAAM,MAAM,cAAc,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAClG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACrC,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE;QAAE,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CACtG;AAED,MAAM,WAAW,kCAAkC;IAClD,mBAAmB,CAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,gCAAgC,GAC5C,OAAO,CAAC,wCAAwC,CAAC,CAAC;IACrD,yBAAyB,CACxB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kCAAkC,GACxC,OAAO,CAAC,wCAAwC,CAAC,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,2EAA2E;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACpD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;;;OAIG;IACH,eAAe,CACd,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAC9C,sGAAsG;IACtG,yBAAyB,EAAE,kCAAkC,CAAC;IAC9D,gDAAgD;IAChD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACtG,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5D,6EAA6E;IAC7E,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI,CAAC;IAClF,UAAU,IAAI,MAAM,CAAC;IACrB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,eAAe,IAAI,2BAA2B,CAAC;IAC/C,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;IACpC,sFAAsF;IACtF,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACvG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAID;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CACjD,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EACrC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe,GACvC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAoCrD;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC9C,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,EAC7C,QAAQ,EAAE,MAAM,GACd;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAW7F;AAED,MAAM,WAAW,qBAAqB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,qBAAqB,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrH,2EAAyE;IACzE,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,qBAAqB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkEtF;AAED,wBAAgB,0BAA0B,IAAI,YAAY,CA0CzD;AAED,MAAM,WAAW,yBAAyB;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,CAmXnF","sourcesContent":["import { basename, resolve } from \"node:path\";\nimport type { Duplex } from \"node:stream\";\nimport { VERSION } from \"../../config.ts\";\nimport type {\n\tIrohRemoteLiveActivityUpdateIntent,\n\tIrohRemotePushNotificationDeliveryStatus,\n\tIrohRemotePushNotificationIntent,\n} from \"../../core/remote/iroh/push.ts\";\nimport { createDaemonClient, type DaemonClient } from \"../../daemon/control-client.ts\";\nimport {\n\tCONTROL_RPC_GRANTS_CAPABILITY,\n\tCONTROL_WORKTREES_CAPABILITY,\n\ttype ControlEvent,\n\ttype ControlWorktreeStatus,\n\ttype LeaseState,\n\ttype RelayPreamble,\n} from \"../../daemon/control-protocol.ts\";\nimport { getDaemonSocketPath } from \"../../daemon/paths.ts\";\nimport {\n\ttype EnsureDaemonResult,\n\tensureDaemonRunning,\n\tprobeDaemon,\n\treadPublishedDaemonEndpoint,\n} from \"../../daemon/spawn.ts\";\nimport { getWorktreesRoot } from \"../../daemon/worktree-manager.ts\";\n\nexport type DaemonAttachConnectionState = \"connected\" | \"reconnecting\" | \"gone\" | \"disabled\";\n\nexport type AcquireOutcome =\n\t| { kind: \"granted\"; handoff: \"cold\" | \"warm\" | \"none\" }\n\t| { kind: \"pending\"; viewerFeedId: string; granted: Promise<{ handoff: \"cold\" | \"warm\" | \"none\" }> }\n\t| { kind: \"denied\"; reason: string }\n\t| { kind: \"noop\" };\n\nexport interface DaemonRelayOffer {\n\trelayId: string;\n\trelayToken: string;\n\tworkspaceName: string;\n\tsessionId: string;\n\tclientNodeId: string;\n\tconnectionId: string;\n\tstreamId: string;\n}\n\nexport interface OpenedRelay {\n\tpreamble: RelayPreamble;\n\tstream: Duplex;\n\t/** Mark the relay finished locally (updates the footer count). */\n\tfinished(): void;\n}\n\nexport interface RelayRpcForwardResult {\n\t/** verbatim RPC response object to forward to the phone */\n\tresponse: Record<string, unknown>;\n\t/** refreshed workspace metadata after a successful unregister_workspace */\n\tworkspaceMetadata?: { workspaceNames: string[]; workspaces: Array<{ name: string; status: string }> };\n}\n\nexport interface RelayNotificationDeliveryForwarder {\n\tdeliverNotification(\n\t\tclientNodeId: string,\n\t\tsessionId: string,\n\t\tnotification: IrohRemotePushNotificationIntent,\n\t): Promise<IrohRemotePushNotificationDeliveryStatus>;\n\tdeliverLiveActivityUpdate(\n\t\tclientNodeId: string,\n\t\tsessionId: string,\n\t\tupdate: IrohRemoteLiveActivityUpdateIntent,\n\t): Promise<IrohRemotePushNotificationDeliveryStatus>;\n}\n\n/**\n * TUI-side daemon integration façade. Every method resolves successfully as a\n * no-op when the daemon is off or unreachable: InteractiveMode never throws or\n * blocks on daemon absence.\n */\nexport interface DaemonAttach {\n\t/** Connect, resolve (or auto-register) the cwd workspace. Never throws. */\n\tstart(): Promise<void>;\n\tacquire(sessionId: string): Promise<AcquireOutcome>;\n\trelease(sessionId: string): Promise<void>;\n\trekey(oldSessionId: string, newSessionId: string): Promise<void>;\n\t/**\n\t * Forward a state-touching RPC command from a relayed phone conversation to\n\t * the daemon (push targets, live activities, workspace unregister). Returns\n\t * undefined when the daemon is unreachable or rejected the request.\n\t */\n\tforwardRelayRpc(\n\t\tclientNodeId: string,\n\t\tsessionId: string,\n\t\tcommand: Record<string, unknown> & { type: string },\n\t): Promise<RelayRpcForwardResult | undefined>;\n\t/** Deliver relayed completion pushes and Live Activity APNs through the daemon-owned push backend. */\n\trelayNotificationDelivery: RelayNotificationDeliveryForwarder;\n\t/** Viewer feed subscription (drain overlay). */\n\tviewerSubscribe(viewerFeedId: string): Promise<void>;\n\tviewerUnsubscribe(viewerFeedId: string): Promise<void>;\n\tviewerAbort(viewerFeedId: string): Promise<void>;\n\tonRelayOffer(handler: (offer: DaemonRelayOffer, openRelay: () => Promise<OpenedRelay>) => void): void;\n\tonEvent(handler: (event: ControlEvent) => void): () => void;\n\t/** Re-acquire outcomes after a daemon reconnect (session.reload on warm). */\n\tonReacquired(handler: (sessionId: string, outcome: AcquireOutcome) => void): void;\n\trelayCount(): number;\n\tonRelayCountChange(callback: (count: number) => void): void;\n\tconnectionState(): DaemonAttachConnectionState;\n\tworkspaceName(): string | undefined;\n\t/** Live runtime ownership for sessions in a workspace, sourced from daemon status. */\n\tlistRuntimeStates(workspaceName: string): Promise<ReadonlyMap<string, Exclude<LeaseState, \"unowned\">>>;\n\tdispose(): Promise<void>;\n}\n\nconst NOOP_OUTCOME: AcquireOutcome = { kind: \"noop\" };\n\n/**\n * Resolve the registered workspace for a cwd against the daemon: longest\n * path-prefix match first, then (§5.2.2) a worktree_resolve lookup so a TUI\n * launched inside a daemon-managed worktree binds to the PARENT workspace\n * instead of auto-registering a bogus workspace under ~/.volt/agent/worktrees.\n * Only when both miss is the cwd auto-registered.\n */\nexport async function resolveDaemonWorkspaceForCwd(\n\tclient: Pick<DaemonClient, \"request\">,\n\tcwd: string,\n\tlog: (message: string) => void = () => {},\n): Promise<{ name: string; path: string } | undefined> {\n\tconst status = await client.request({ type: \"status\" });\n\tif (status.type !== \"status_result\") {\n\t\treturn undefined;\n\t}\n\tconst resolvedCwd = resolve(cwd);\n\tconst match = status.workspaces\n\t\t.filter((workspace) => resolvedCwd === workspace.path || resolvedCwd.startsWith(`${workspace.path}/`))\n\t\t.sort((left, right) => right.path.length - left.path.length)[0];\n\tif (match) {\n\t\treturn { name: match.name, path: match.path };\n\t}\n\t// A cwd inside a daemon-managed worktree belongs to the worktree's parent\n\t// workspace; auto-registering it would split lease keys from the daemon's\n\t// conversations for the same sessions.\n\ttry {\n\t\tconst resolved = await client.request({ type: \"worktree_resolve\", path: resolvedCwd });\n\t\tif (resolved.type === \"worktree_resolve_result\") {\n\t\t\treturn { name: resolved.workspaceName, path: resolved.workspacePath };\n\t\t}\n\t} catch {\n\t\t// Old daemon (unknown request) or transient failure: fall through.\n\t}\n\t// Auto-register the cwd so phones can reach sessions opened here.\n\tconst takenNames = new Set(status.workspaces.map((workspace) => workspace.name));\n\tconst base = basename(resolvedCwd) || \"workspace\";\n\tlet candidate = base;\n\tfor (let suffix = 2; takenNames.has(candidate); suffix++) {\n\t\tcandidate = `${base}-${suffix}`;\n\t}\n\tconst registered = await client.request({ type: \"workspace_register\", name: candidate, path: resolvedCwd });\n\tif (registered.type === \"ok\") {\n\t\tlog(`registered workspace ${candidate} -> ${resolvedCwd}`);\n\t\treturn { name: candidate, path: resolvedCwd };\n\t}\n\treturn undefined;\n}\n\n/**\n * Sanitizer roots for serving a relayed conversation from the TUI: a\n * worktree-bound conversation sanitizes with the worktree checkout as the\n * root, and the parent checkout plus the worktrees root must ALSO redact\n * (bash output like `git worktree list` prints both). §5.2.3.\n */\nexport function getRelayServingSanitizerOptions(\n\tauthorization: RelayPreamble[\"authorization\"],\n\tagentDir: string,\n): { remoteWorkspacePath?: string; workspacePath: string; additionalRedactedPaths?: string[] } {\n\tif (authorization.worktreePath === undefined) {\n\t\treturn { workspacePath: authorization.workspacePath };\n\t}\n\treturn {\n\t\t...(authorization.worktreeSourceRootRelativePath === undefined\n\t\t\t? {}\n\t\t\t: { remoteWorkspacePath: `/workspace/${authorization.worktreeSourceRootRelativePath}` }),\n\t\tworkspacePath: authorization.worktreePath,\n\t\tadditionalRedactedPaths: [authorization.workspacePath, getWorktreesRoot(agentDir)],\n\t};\n}\n\nexport interface DaemonWorktreeControl {\n\tworkspaceName: string;\n\tworkspacePath: string;\n\tlistWorktrees(): Promise<ControlWorktreeStatus[]>;\n\tcreateWorktree(name?: string): Promise<{ ok: true; worktree: ControlWorktreeStatus } | { ok: false; error: string }>;\n\t/** Best-effort: records the session→worktree binding in daemon state. */\n\tbindSession(worktreeId: string, sessionId: string): Promise<boolean>;\n\tclose(): Promise<void>;\n}\n\nexport interface OpenDaemonWorktreeControlOptions {\n\tcwd: string;\n\tagentDir: string;\n\t/** Injectable for tests; defaults to ensureDaemonRunning. */\n\tensureDaemon?: (agentDir: string) => Promise<EnsureDaemonResult>;\n}\n\n/**\n * Control-plane handle for the TUI /worktree command (§5.2.1): ensures the\n * daemon is running, resolves (or registers) the parent workspace for the\n * cwd, and exposes worktree list/create/bind over the control socket.\n */\nexport async function openDaemonWorktreeControl(\n\toptions: OpenDaemonWorktreeControlOptions,\n): Promise<{ ok: true; control: DaemonWorktreeControl } | { ok: false; error: string }> {\n\tconst ensureDaemon = options.ensureDaemon ?? ensureDaemonRunning;\n\tlet ensured: EnsureDaemonResult;\n\ttry {\n\t\tensured = await ensureDaemon(options.agentDir);\n\t} catch (error) {\n\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n\tif (!ensured.healthy) {\n\t\treturn { ok: false, error: `voltd is not available (${ensured.state}); try \\`volt daemon start\\`` };\n\t}\n\tconst client = createDaemonClient({\n\t\tsocketPath: ensured.socketPath ?? getDaemonSocketPath(options.agentDir),\n\t\tclient: \"tui\",\n\t\tversion: VERSION,\n\t\tauthToken: ensured.authToken,\n\t\treconnect: false,\n\t\tcapabilities: [CONTROL_WORKTREES_CAPABILITY, CONTROL_RPC_GRANTS_CAPABILITY],\n\t});\n\ttry {\n\t\tawait client.connect();\n\t\tconst workspace = await resolveDaemonWorkspaceForCwd(client, options.cwd);\n\t\tif (!workspace) {\n\t\t\tawait client.close();\n\t\t\treturn { ok: false, error: \"could not resolve or register a workspace for the current directory\" };\n\t\t}\n\t\tconst control: DaemonWorktreeControl = {\n\t\t\tworkspaceName: workspace.name,\n\t\t\tworkspacePath: workspace.path,\n\t\t\tasync listWorktrees() {\n\t\t\t\tconst response = await client.request({ type: \"worktree_list\", workspaceName: workspace.name });\n\t\t\t\treturn response.type === \"worktrees_result\" ? response.worktrees : [];\n\t\t\t},\n\t\t\tasync createWorktree(name?: string) {\n\t\t\t\tconst response = await client.request({\n\t\t\t\t\ttype: \"worktree_create\",\n\t\t\t\t\tworkspaceName: workspace.name,\n\t\t\t\t\t...(name === undefined ? {} : { worktreeName: name }),\n\t\t\t\t});\n\t\t\t\tif (response.type === \"worktree_result\") {\n\t\t\t\t\treturn { ok: true, worktree: response.worktree };\n\t\t\t\t}\n\t\t\t\tconst error =\n\t\t\t\t\tresponse.type === \"error\" ? `${response.code}: ${response.message}` : \"unexpected daemon response\";\n\t\t\t\treturn { ok: false, error };\n\t\t\t},\n\t\t\tasync bindSession(worktreeId: string, sessionId: string) {\n\t\t\t\ttry {\n\t\t\t\t\tconst response = await client.request({\n\t\t\t\t\t\ttype: \"worktree_bind\",\n\t\t\t\t\t\tworkspaceName: workspace.name,\n\t\t\t\t\t\tworktreeId,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t});\n\t\t\t\t\treturn response.type === \"ok\";\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tclose: () => client.close(),\n\t\t};\n\t\treturn { ok: true, control };\n\t} catch (error) {\n\t\tawait client.close().catch(() => {});\n\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nexport function createDisabledDaemonAttach(): DaemonAttach {\n\treturn {\n\t\tasync start() {},\n\t\tasync acquire() {\n\t\t\treturn NOOP_OUTCOME;\n\t\t},\n\t\tasync release() {},\n\t\tasync rekey() {},\n\t\tasync forwardRelayRpc() {\n\t\t\treturn undefined;\n\t\t},\n\t\trelayNotificationDelivery: {\n\t\t\tasync deliverNotification() {\n\t\t\t\treturn \"failed\";\n\t\t\t},\n\t\t\tasync deliverLiveActivityUpdate() {\n\t\t\t\treturn \"failed\";\n\t\t\t},\n\t\t},\n\t\tasync viewerSubscribe() {},\n\t\tasync viewerUnsubscribe() {},\n\t\tasync viewerAbort() {},\n\t\tonRelayOffer() {},\n\t\tonEvent() {\n\t\t\treturn () => {};\n\t\t},\n\t\tonReacquired() {},\n\t\trelayCount() {\n\t\t\treturn 0;\n\t\t},\n\t\tonRelayCountChange() {},\n\t\tconnectionState() {\n\t\t\treturn \"disabled\";\n\t\t},\n\t\tworkspaceName() {\n\t\t\treturn undefined;\n\t\t},\n\t\tasync listRuntimeStates() {\n\t\t\treturn new Map();\n\t\t},\n\t\tasync dispose() {},\n\t};\n}\n\nexport interface CreateDaemonAttachOptions {\n\tcwd: string;\n\tagentDir: string;\n\t/** Auto-spawn the daemon when unreachable (remote.background). */\n\tautoStart?: boolean;\n\tlog?: (message: string) => void;\n}\n\nexport function createDaemonAttach(options: CreateDaemonAttachOptions): DaemonAttach {\n\tlet client: DaemonClient | undefined;\n\tlet state: DaemonAttachConnectionState = \"reconnecting\";\n\tlet resolvedWorkspaceName: string | undefined;\n\tlet activeRelays = 0;\n\tconst activeRelayIds = new Map<string, string>();\n\tlet currentSessionId: string | undefined;\n\tlet disposed = false;\n\tlet resolvingWorkspace: Promise<void> | undefined;\n\tconst eventHandlers = new Set<(event: ControlEvent) => void>();\n\tconst relayCountCallbacks = new Set<(count: number) => void>();\n\tlet relayOfferHandler: ((offer: DaemonRelayOffer, openRelay: () => Promise<OpenedRelay>) => void) | undefined;\n\tlet reacquiredHandler: ((sessionId: string, outcome: AcquireOutcome) => void) | undefined;\n\n\tconst log = options.log ?? (() => {});\n\n\tconst setRelayCount = (next: number) => {\n\t\tif (next === activeRelays) {\n\t\t\treturn;\n\t\t}\n\t\tactiveRelays = next;\n\t\tfor (const callback of Array.from(relayCountCallbacks)) {\n\t\t\tcallback(next);\n\t\t}\n\t};\n\n\tconst parseAcquireResponse = (\n\t\tresponse: { type: string } & Record<string, unknown>,\n\t\twaitForResponse: (id: string) => Promise<{ type: string } & Record<string, unknown>>,\n\t): AcquireOutcome => {\n\t\tif (response.type === \"lease_granted\") {\n\t\t\treturn { kind: \"granted\", handoff: response.handoff as \"cold\" | \"warm\" | \"none\" };\n\t\t}\n\t\tif (response.type === \"lease_denied\") {\n\t\t\treturn { kind: \"denied\", reason: String(response.reason) };\n\t\t}\n\t\tif (response.type === \"lease_pending\") {\n\t\t\tconst id = String(response.id);\n\t\t\treturn {\n\t\t\t\tkind: \"pending\",\n\t\t\t\tviewerFeedId: String(response.viewerFeedId),\n\t\t\t\tgranted: waitForResponse(id).then((terminal) => {\n\t\t\t\t\tif (terminal.type === \"lease_granted\") {\n\t\t\t\t\t\treturn { handoff: terminal.handoff as \"cold\" | \"warm\" | \"none\" };\n\t\t\t\t\t}\n\t\t\t\t\tthrow new Error(typeof terminal.message === \"string\" ? terminal.message : \"lease drain failed\");\n\t\t\t\t}),\n\t\t\t};\n\t\t}\n\t\treturn NOOP_OUTCOME;\n\t};\n\n\tconst relayKey = (clientNodeId: string, sessionId: string) => `${clientNodeId}\\0${sessionId}`;\n\n\tconst handleRelayOffer = (offer: DaemonRelayOffer) => {\n\t\tconst handler = relayOfferHandler;\n\t\tconst activeClient = client;\n\t\tif (!handler || !activeClient) {\n\t\t\treturn;\n\t\t}\n\t\thandler(offer, async () => {\n\t\t\tconst opened = await activeClient.openRelay({ relayId: offer.relayId, relayToken: offer.relayToken });\n\t\t\tconst key = relayKey(offer.clientNodeId, offer.sessionId);\n\t\t\tactiveRelayIds.set(key, offer.relayId);\n\t\t\tsetRelayCount(activeRelays + 1);\n\t\t\tlet finished = false;\n\t\t\tconst finish = () => {\n\t\t\t\tif (!finished) {\n\t\t\t\t\tfinished = true;\n\t\t\t\t\tif (activeRelayIds.get(key) === offer.relayId) {\n\t\t\t\t\t\tactiveRelayIds.delete(key);\n\t\t\t\t\t}\n\t\t\t\t\tsetRelayCount(Math.max(0, activeRelays - 1));\n\t\t\t\t}\n\t\t\t};\n\t\t\topened.stream.once(\"close\", finish);\n\t\t\treturn { preamble: opened.preamble, stream: opened.stream, finished: finish };\n\t\t});\n\t};\n\n\tconst resolveWorkspace = async (): Promise<void> => {\n\t\tif (resolvingWorkspace) {\n\t\t\treturn resolvingWorkspace;\n\t\t}\n\t\tresolvingWorkspace = (async () => {\n\t\t\tconst activeClient = client;\n\t\t\tif (!activeClient) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst workspace = await resolveDaemonWorkspaceForCwd(activeClient, options.cwd, log);\n\t\t\tif (workspace) {\n\t\t\t\tresolvedWorkspaceName = workspace.name;\n\t\t\t}\n\t\t})().finally(() => {\n\t\t\tresolvingWorkspace = undefined;\n\t\t});\n\t\treturn resolvingWorkspace;\n\t};\n\n\tconst ensureLeaseAfterConnected = async (): Promise<void> => {\n\t\tawait resolveWorkspace();\n\t\tconst sessionId = currentSessionId;\n\t\tconst workspaceName = resolvedWorkspaceName;\n\t\tconst activeClient = client;\n\t\tif (!sessionId || !workspaceName || !activeClient || !reacquiredHandler) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst response = await activeClient.request({ type: \"lease_acquire\", workspaceName, sessionId });\n\t\t\tconst outcome = parseAcquireResponse(\n\t\t\t\tresponse as { type: string } & Record<string, unknown>,\n\t\t\t\t(id) => activeClient.waitForResponse(id) as Promise<{ type: string } & Record<string, unknown>>,\n\t\t\t);\n\t\t\treacquiredHandler(sessionId, outcome);\n\t\t} catch {\n\t\t\t// The next reconnect retries.\n\t\t}\n\t};\n\n\treturn {\n\t\tasync start() {\n\t\t\tif (disposed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst ensured = options.autoStart\n\t\t\t\t\t? await ensureDaemonRunning(options.agentDir)\n\t\t\t\t\t: await probeDaemon(options.agentDir);\n\t\t\t\tif (disposed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst socketPath = ensured.socketPath;\n\t\t\t\tif (options.autoStart && ensured.state === \"protocol-mismatch\") {\n\t\t\t\t\tstate = \"gone\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst startingClient = createDaemonClient({\n\t\t\t\t\tsocketPath: socketPath ?? getDaemonSocketPath(options.agentDir),\n\t\t\t\t\tclient: \"tui\",\n\t\t\t\t\tversion: VERSION,\n\t\t\t\t\tauthToken: ensured.authToken,\n\t\t\t\t\trefreshEndpoint: () => readPublishedDaemonEndpoint(options.agentDir),\n\t\t\t\t\tcapabilities: [CONTROL_WORKTREES_CAPABILITY, CONTROL_RPC_GRANTS_CAPABILITY],\n\t\t\t\t\treconnect: true,\n\t\t\t\t\tonEvent: (event) => {\n\t\t\t\t\t\tif (event.type === \"relay_offer\") {\n\t\t\t\t\t\t\thandleRelayOffer(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.type === \"relay_closed\") {\n\t\t\t\t\t\t\t// The socket close callback decrements the count; nothing to do\n\t\t\t\t\t\t\t// beyond fanning the event out.\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.type === \"daemon_shutdown\") {\n\t\t\t\t\t\t\tsetRelayCount(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const handler of Array.from(eventHandlers)) {\n\t\t\t\t\t\t\thandler(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tonConnectionStateChange: (next) => {\n\t\t\t\t\t\tstate = next;\n\t\t\t\t\t\tif (next === \"connected\") {\n\t\t\t\t\t\t\tvoid ensureLeaseAfterConnected().catch(() => {});\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tclient = startingClient;\n\t\t\t\tawait startingClient.connect();\n\t\t\t\tif (disposed || client !== startingClient) {\n\t\t\t\t\tawait startingClient.close();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstate = \"connected\";\n\t\t\t\tawait ensureLeaseAfterConnected();\n\t\t\t} catch (error) {\n\t\t\t\tlog(`daemon unavailable: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\tstate = client?.connectionState ?? \"gone\";\n\t\t\t}\n\t\t},\n\t\tasync acquire(sessionId: string) {\n\t\t\tcurrentSessionId = sessionId;\n\t\t\tconst workspaceName = resolvedWorkspaceName;\n\t\t\tconst activeClient = client;\n\t\t\tif (!activeClient || !workspaceName || state !== \"connected\") {\n\t\t\t\treturn NOOP_OUTCOME;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst response = await activeClient.request({ type: \"lease_acquire\", workspaceName, sessionId });\n\t\t\t\treturn parseAcquireResponse(\n\t\t\t\t\tresponse as { type: string } & Record<string, unknown>,\n\t\t\t\t\t(id) => activeClient.waitForResponse(id) as Promise<{ type: string } & Record<string, unknown>>,\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\treturn NOOP_OUTCOME;\n\t\t\t}\n\t\t},\n\t\tasync release(sessionId: string) {\n\t\t\tif (currentSessionId === sessionId) {\n\t\t\t\tcurrentSessionId = undefined;\n\t\t\t}\n\t\t\tconst workspaceName = resolvedWorkspaceName;\n\t\t\tconst activeClient = client;\n\t\t\tif (!activeClient || !workspaceName) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait activeClient.request({ type: \"lease_release\", workspaceName, sessionId });\n\t\t\t} catch {\n\t\t\t\t// Daemon-side implicit release on disconnect covers this.\n\t\t\t}\n\t\t},\n\t\tasync rekey(oldSessionId: string, newSessionId: string) {\n\t\t\tif (currentSessionId === oldSessionId) {\n\t\t\t\tcurrentSessionId = newSessionId;\n\t\t\t}\n\t\t\tconst workspaceName = resolvedWorkspaceName;\n\t\t\tconst activeClient = client;\n\t\t\tif (!activeClient || !workspaceName) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait activeClient.request({ type: \"lease_rekey\", workspaceName, oldSessionId, newSessionId });\n\t\t\t} catch {\n\t\t\t\t// Reconnect re-acquires with the new id.\n\t\t\t}\n\t\t},\n\t\tasync forwardRelayRpc(\n\t\t\tclientNodeId: string,\n\t\t\tsessionId: string,\n\t\t\tcommand: Record<string, unknown> & { type: string },\n\t\t) {\n\t\t\tconst workspaceName = resolvedWorkspaceName;\n\t\t\tconst activeClient = client;\n\t\t\tconst relayId = activeRelayIds.get(relayKey(clientNodeId, sessionId));\n\t\t\tif (!activeClient || !workspaceName || !relayId) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst response = await activeClient.request({\n\t\t\t\t\ttype: \"relay_rpc\",\n\t\t\t\t\trelayId,\n\t\t\t\t\tclientNodeId,\n\t\t\t\t\tworkspaceName,\n\t\t\t\t\tsessionId,\n\t\t\t\t\tcommand,\n\t\t\t\t});\n\t\t\t\tif (response.type !== \"relay_rpc_result\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tresponse: response.response,\n\t\t\t\t\t...(response.workspaceMetadata === undefined ? {} : { workspaceMetadata: response.workspaceMetadata }),\n\t\t\t\t};\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\trelayNotificationDelivery: {\n\t\t\tasync deliverNotification(clientNodeId, sessionId, notification) {\n\t\t\t\tconst workspaceName = resolvedWorkspaceName;\n\t\t\t\tconst activeClient = client;\n\t\t\t\tif (!activeClient || !workspaceName) {\n\t\t\t\t\treturn \"failed\";\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst response = await activeClient.request({\n\t\t\t\t\t\ttype: \"relay_notification_delivery\",\n\t\t\t\t\t\tclientNodeId,\n\t\t\t\t\t\tworkspaceName,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tnotification,\n\t\t\t\t\t});\n\t\t\t\t\treturn response.type === \"relay_push_delivery_result\" ? response.status : \"failed\";\n\t\t\t\t} catch {\n\t\t\t\t\treturn \"failed\";\n\t\t\t\t}\n\t\t\t},\n\t\t\tasync deliverLiveActivityUpdate(clientNodeId, sessionId, update) {\n\t\t\t\tconst workspaceName = resolvedWorkspaceName;\n\t\t\t\tconst activeClient = client;\n\t\t\t\tif (!activeClient || !workspaceName) {\n\t\t\t\t\treturn \"failed\";\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst response = await activeClient.request({\n\t\t\t\t\t\ttype: \"relay_live_activity_delivery\",\n\t\t\t\t\t\tclientNodeId,\n\t\t\t\t\t\tworkspaceName,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\tupdate,\n\t\t\t\t\t});\n\t\t\t\t\treturn response.type === \"relay_push_delivery_result\" ? response.status : \"failed\";\n\t\t\t\t} catch {\n\t\t\t\t\treturn \"failed\";\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tasync viewerSubscribe(viewerFeedId: string) {\n\t\t\ttry {\n\t\t\t\tawait client?.request({ type: \"viewer_subscribe\", viewerFeedId });\n\t\t\t} catch {\n\t\t\t\t// Viewer feed is best-effort; the post-grant file load is authoritative.\n\t\t\t}\n\t\t},\n\t\tasync viewerUnsubscribe(viewerFeedId: string) {\n\t\t\ttry {\n\t\t\t\tawait client?.request({ type: \"viewer_unsubscribe\", viewerFeedId });\n\t\t\t} catch {\n\t\t\t\t// Best-effort.\n\t\t\t}\n\t\t},\n\t\tasync viewerAbort(viewerFeedId: string) {\n\t\t\ttry {\n\t\t\t\tawait client?.request({ type: \"viewer_abort\", viewerFeedId });\n\t\t\t} catch {\n\t\t\t\t// Best-effort.\n\t\t\t}\n\t\t},\n\t\tonRelayOffer(handler) {\n\t\t\trelayOfferHandler = handler;\n\t\t},\n\t\tonEvent(handler) {\n\t\t\teventHandlers.add(handler);\n\t\t\treturn () => {\n\t\t\t\teventHandlers.delete(handler);\n\t\t\t};\n\t\t},\n\t\tonReacquired(handler) {\n\t\t\treacquiredHandler = handler;\n\t\t},\n\t\trelayCount() {\n\t\t\treturn activeRelays;\n\t\t},\n\t\tonRelayCountChange(callback) {\n\t\t\trelayCountCallbacks.add(callback);\n\t\t},\n\t\tconnectionState() {\n\t\t\treturn state;\n\t\t},\n\t\tworkspaceName() {\n\t\t\treturn resolvedWorkspaceName;\n\t\t},\n\t\tasync listRuntimeStates(workspaceName: string) {\n\t\t\tconst states = new Map<string, Exclude<LeaseState, \"unowned\">>();\n\t\t\tconst activeClient = client;\n\t\t\tif (!activeClient || state !== \"connected\") {\n\t\t\t\treturn states;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst response = await activeClient.request({ type: \"status\" });\n\t\t\t\tif (response.type !== \"status_result\") {\n\t\t\t\t\treturn states;\n\t\t\t\t}\n\t\t\t\tfor (const lease of response.leases) {\n\t\t\t\t\tif (lease.workspaceName === workspaceName && lease.state !== \"unowned\") {\n\t\t\t\t\t\tstates.set(lease.sessionId, lease.state);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Presence is best-effort; list_sessions remains available from local state.\n\t\t\t}\n\t\t\treturn states;\n\t\t},\n\t\tasync dispose() {\n\t\t\tdisposed = true;\n\t\t\tactiveRelayIds.clear();\n\t\t\tawait client?.close();\n\t\t\tclient = undefined;\n\t\t\tstate = \"gone\";\n\t\t},\n\t};\n}\n"]}