@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 @@
1
+ {"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../../../src/core/remote/iroh/handshake.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from \"node:buffer\";\nimport {\n\tIROH_REMOTE_ALPN,\n\tIROH_REMOTE_CONVERSATION_STREAMS_FEATURE,\n\tIROH_REMOTE_HANDSHAKE_TYPE,\n\tIROH_REMOTE_HELLO_TYPE,\n\tIROH_REMOTE_MULTI_STREAMS_FEATURE,\n\ttype IrohRemoteHostHandshakeFailureOutcome,\n\ttype IrohRemoteOutcome,\n\tIrohRemoteOutcomeError,\n\ttype IrohRemoteRelayMode,\n\tisIrohRemoteOutcome,\n\tisIrohRemoteRelayMode,\n\tisIrohRemoteRelayUrls,\n\tisIrohRemoteWorkingDirectory,\n\tisIrohRemoteWorktreeId,\n} from \"./protocol.ts\";\nimport type { IrohRemoteWorkspaceStatus } from \"./workspace.ts\";\n\nexport type IrohRemoteConversationTarget =\n\t| {\n\t\t\ttarget: \"last\";\n\t }\n\t| {\n\t\t\ttarget: \"new\";\n\t\t\tworktreeId?: string;\n\t\t\t/** POSIX-style path relative to the registered workspace root. */\n\t\t\tworkingDirectory?: string;\n\t }\n\t| {\n\t\t\ttarget: \"session\";\n\t\t\tsessionId: string;\n\t };\n\nexport type IrohRemoteConversationSelection = \"resumed\" | \"created\" | \"created_missing_last\" | \"session_rekeyed\";\n\nexport interface IrohRemoteConversationHandshakeMetadata {\n\ttarget: IrohRemoteConversationTarget[\"target\"];\n\tsessionId: string;\n\tselection: IrohRemoteConversationSelection;\n\trequestedSessionId?: string;\n\t/** Echoed only for worktree-bound conversations (worktrees.v1). */\n\tworktreeId?: string;\n\t/** POSIX-style path relative to the workspace root. Omitted for workspace root. */\n\tworkingDirectory?: string;\n}\n\nexport interface IrohRemoteWorkspaceDiscoveryTarget {\n\tpurpose: \"list_sessions\";\n}\n\nexport interface IrohRemoteWorkspaceManagementTarget {\n\tpurpose: \"unregister_workspace\" | \"manage_worktrees\";\n}\n\nexport interface IrohRemoteHostHandshakeMetadata {\n\tworkspace: string;\n\tworkspaceNames: string[];\n\tworkspaces: IrohRemoteWorkspaceStatus[];\n\tfeatures: string[];\n\thostNodeId?: string;\n\trelayMode?: IrohRemoteRelayMode;\n\trelayUrls?: string[];\n\thostName?: string;\n\tuserName?: string;\n\tcwd: string;\n}\n\nexport type IrohRemoteHelloMode =\n\t| {\n\t\t\tmode: \"conversation\";\n\t\t\tconversation: IrohRemoteConversationTarget;\n\t }\n\t| {\n\t\t\tmode: \"workspaceDiscovery\";\n\t\t\tworkspaceDiscovery: IrohRemoteWorkspaceDiscoveryTarget;\n\t }\n\t| {\n\t\t\tmode: \"workspaceManagement\";\n\t\t\tworkspaceManagement: IrohRemoteWorkspaceManagementTarget;\n\t };\n\ninterface IrohRemoteHelloBase {\n\ttype: typeof IROH_REMOTE_HELLO_TYPE;\n\tprotocol: typeof IROH_REMOTE_ALPN;\n\tworkspace: string;\n\tsecret?: string;\n\tclientLabel?: string;\n\tclientNodeId?: string;\n}\n\nexport type IrohRemoteHello = IrohRemoteHelloBase & IrohRemoteHelloMode;\n\nexport const IROH_REMOTE_SESSION_ID_PATTERN = /^[a-z0-9_-]{1,128}$/;\n\nexport interface IrohRemoteHandshakeSuccess {\n\ttype: typeof IROH_REMOTE_HANDSHAKE_TYPE;\n\tsuccess: true;\n\tworkspace: string;\n\thostNodeId?: string;\n\tclientNodeId: string;\n\tfeatures?: string[];\n\tsessionId?: string;\n\tconversation?: IrohRemoteConversationHandshakeMetadata;\n\tworkspaceDiscovery?: IrohRemoteWorkspaceDiscoveryTarget;\n\tworkspaceManagement?: IrohRemoteWorkspaceManagementTarget;\n\tremoteHost?: IrohRemoteHostHandshakeMetadata;\n\tchild?: string;\n}\n\nexport interface IrohRemoteHandshakeFailure {\n\ttype: typeof IROH_REMOTE_HANDSHAKE_TYPE;\n\tsuccess: false;\n\toutcome?: IrohRemoteOutcome;\n\thostNodeId?: string;\n\tworkspace?: string;\n\tsessionId?: string;\n\tretryAfterMs?: number;\n\terror: string;\n}\n\nexport type IrohRemoteHandshakeResponse = IrohRemoteHandshakeSuccess | IrohRemoteHandshakeFailure;\n\nexport class IrohRemoteHandshakeError extends Error {\n\treadonly outcome: IrohRemoteHostHandshakeFailureOutcome;\n\n\tconstructor(outcome: IrohRemoteHostHandshakeFailureOutcome, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"IrohRemoteHandshakeError\";\n\t\tthis.outcome = outcome;\n\t}\n}\n\nexport function parseIrohRemoteHelloLine(line: string): IrohRemoteHello {\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(line);\n\t} catch (error: unknown) {\n\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\"invalid_conversation_target\",\n\t\t\t`Failed to parse Iroh remote handshake: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n\treturn parseIrohRemoteHello(parsed);\n}\n\nexport function parseIrohRemoteHandshakeResponseLine(line: string): IrohRemoteHandshakeResponse {\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(line);\n\t} catch (error: unknown) {\n\t\tthrow new Error(\n\t\t\t`Failed to parse Iroh remote handshake response: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n\treturn parseIrohRemoteHandshakeResponse(parsed);\n}\n\nexport function parseIrohRemoteHello(value: unknown): IrohRemoteHello {\n\tconst hello = expectRecord(value, \"Iroh remote handshake\");\n\tif (hello.type !== IROH_REMOTE_HELLO_TYPE) {\n\t\tthrow new Error(\"unexpected handshake type\");\n\t}\n\tif (hello.protocol !== IROH_REMOTE_ALPN) {\n\t\tthrow new Error(`unsupported protocol: ${typeof hello.protocol === \"string\" ? hello.protocol : \"<missing>\"}`);\n\t}\n\n\tconst workspace = expectWorkspaceName(hello.workspace, \"handshake workspace\");\n\tconst mode = parseIrohRemoteHelloMode(hello);\n\treturn {\n\t\ttype: IROH_REMOTE_HELLO_TYPE,\n\t\tprotocol: IROH_REMOTE_ALPN,\n\t\tworkspace,\n\t\tsecret: expectOptionalString(hello.secret, \"handshake secret\"),\n\t\tclientLabel: expectOptionalString(hello.clientLabel, \"handshake clientLabel\"),\n\t\tclientNodeId: expectOptionalString(hello.clientNodeId, \"handshake clientNodeId\"),\n\t\t...mode,\n\t};\n}\n\nexport function parseIrohRemoteHandshakeResponse(value: unknown): IrohRemoteHandshakeResponse {\n\tconst response = expectRecord(value, \"Iroh remote handshake response\");\n\tif (response.type !== IROH_REMOTE_HANDSHAKE_TYPE) {\n\t\tthrow new Error(\"unexpected handshake response type\");\n\t}\n\tif (response.success === true) {\n\t\tconst hostNodeId = expectOptionalString(response.hostNodeId, \"handshake response hostNodeId\");\n\t\tconst workspace = expectString(response.workspace, \"handshake response workspace\");\n\t\tconst features = parseOptionalFeatures(response.features);\n\t\tconst modeMetadata = parseOptionalHandshakeSuccessMode(response);\n\t\tconst remoteHost = parseOptionalRemoteHostHandshakeMetadata(response.remoteHost);\n\t\tif (hasHandshakeSuccessModeMetadata(modeMetadata) && hostNodeId === undefined) {\n\t\t\tthrow new Error(\"handshake response hostNodeId is required for stream mode success\");\n\t\t}\n\t\tassertRemoteHostMetadataMatchesHandshake(remoteHost, { hostNodeId, workspace });\n\t\tconst success: IrohRemoteHandshakeSuccess = {\n\t\t\ttype: IROH_REMOTE_HANDSHAKE_TYPE,\n\t\t\tsuccess: true,\n\t\t\tworkspace,\n\t\t\tclientNodeId: expectString(response.clientNodeId, \"handshake response clientNodeId\"),\n\t\t\t...(features === undefined ? {} : { features }),\n\t\t\t...modeMetadata,\n\t\t\t...(remoteHost === undefined ? {} : { remoteHost }),\n\t\t\tchild: expectOptionalString(response.child, \"handshake response child\"),\n\t\t};\n\t\treturn hostNodeId === undefined ? success : { ...success, hostNodeId };\n\t}\n\tif (response.success === false) {\n\t\tconst outcome = expectOptionalOutcome(response.outcome, \"handshake response outcome\");\n\t\tconst hostNodeId = expectOptionalString(response.hostNodeId, \"handshake response hostNodeId\");\n\t\tconst workspace = expectOptionalString(response.workspace, \"handshake response workspace\");\n\t\tconst sessionId = expectOptionalRemoteSessionId(response.sessionId, \"handshake response sessionId\");\n\t\tconst retryAfterMs = expectOptionalNumber(response.retryAfterMs, \"handshake response retryAfterMs\");\n\t\tconst failure: IrohRemoteHandshakeFailure = {\n\t\t\ttype: IROH_REMOTE_HANDSHAKE_TYPE,\n\t\t\tsuccess: false,\n\t\t\terror: expectString(response.error, \"handshake response error\"),\n\t\t};\n\t\treturn {\n\t\t\t...failure,\n\t\t\t...(outcome === undefined ? {} : { outcome }),\n\t\t\t...(hostNodeId === undefined ? {} : { hostNodeId }),\n\t\t\t...(workspace === undefined ? {} : { workspace }),\n\t\t\t...(sessionId === undefined ? {} : { sessionId }),\n\t\t\t...(retryAfterMs === undefined ? {} : { retryAfterMs }),\n\t\t};\n\t}\n\tthrow new Error(\"handshake response success must be a boolean\");\n}\n\nexport function createIrohRemoteHandshakeSuccess(options: {\n\tworkspace: string;\n\thostNodeId?: string;\n\tclientNodeId: string;\n\tfeatures?: string[];\n\tsessionId?: string;\n\tconversation?: IrohRemoteConversationHandshakeMetadata;\n\tworkspaceDiscovery?: IrohRemoteWorkspaceDiscoveryTarget;\n\tworkspaceManagement?: IrohRemoteWorkspaceManagementTarget;\n\tremoteHost?: IrohRemoteHostHandshakeMetadata;\n\tchild?: string;\n}): IrohRemoteHandshakeSuccess {\n\tconst response: IrohRemoteHandshakeSuccess = {\n\t\ttype: IROH_REMOTE_HANDSHAKE_TYPE,\n\t\tsuccess: true,\n\t\tworkspace: options.workspace,\n\t\t...(options.hostNodeId === undefined ? {} : { hostNodeId: options.hostNodeId }),\n\t\tclientNodeId: options.clientNodeId,\n\t\t...(options.features === undefined ? {} : { features: [...options.features] }),\n\t\t...(options.sessionId === undefined ? {} : { sessionId: options.sessionId }),\n\t\t...(options.conversation === undefined ? {} : { conversation: { ...options.conversation } }),\n\t\t...(options.workspaceDiscovery === undefined ? {} : { workspaceDiscovery: { ...options.workspaceDiscovery } }),\n\t\t...(options.workspaceManagement === undefined ? {} : { workspaceManagement: { ...options.workspaceManagement } }),\n\t\t...(options.remoteHost === undefined ? {} : { remoteHost: cloneRemoteHostHandshakeMetadata(options.remoteHost) }),\n\t\tchild: options.child,\n\t};\n\treturn response;\n}\n\nexport function createIrohRemoteHandshakeFailure(\n\terror: string,\n\toptions: {\n\t\thostNodeId?: string;\n\t\toutcome?: IrohRemoteHostHandshakeFailureOutcome;\n\t\tworkspace?: string;\n\t\tsessionId?: string;\n\t\tretryAfterMs?: number;\n\t} = {},\n): IrohRemoteHandshakeFailure {\n\treturn {\n\t\ttype: IROH_REMOTE_HANDSHAKE_TYPE,\n\t\tsuccess: false,\n\t\t...(options.outcome === undefined ? {} : { outcome: options.outcome }),\n\t\t...(options.hostNodeId === undefined ? {} : { hostNodeId: options.hostNodeId }),\n\t\t...(options.workspace === undefined ? {} : { workspace: options.workspace }),\n\t\t...(options.sessionId === undefined ? {} : { sessionId: options.sessionId }),\n\t\t...(options.retryAfterMs === undefined ? {} : { retryAfterMs: options.retryAfterMs }),\n\t\terror,\n\t};\n}\n\nexport function assertIrohRemoteHandshakeHostIdentity(\n\tresponse: IrohRemoteHandshakeResponse,\n\texpectedHostNodeId: string | undefined,\n): void {\n\tif (expectedHostNodeId === undefined) {\n\t\treturn;\n\t}\n\tconst actualHostNodeId = response.hostNodeId;\n\tif (actualHostNodeId !== expectedHostNodeId) {\n\t\tthrow new IrohRemoteOutcomeError(\n\t\t\t\"host_identity_mismatch\",\n\t\t\t`expected ${expectedHostNodeId}, got ${actualHostNodeId ?? \"<missing>\"}`,\n\t\t);\n\t}\n}\n\nfunction cloneRemoteHostHandshakeMetadata(metadata: IrohRemoteHostHandshakeMetadata): IrohRemoteHostHandshakeMetadata {\n\treturn {\n\t\tworkspace: metadata.workspace,\n\t\tworkspaceNames: [...metadata.workspaceNames],\n\t\tworkspaces: metadata.workspaces.map((workspace) => ({ ...workspace })),\n\t\tfeatures: [...metadata.features],\n\t\t...(metadata.hostNodeId === undefined ? {} : { hostNodeId: metadata.hostNodeId }),\n\t\t...(metadata.relayMode === undefined ? {} : { relayMode: metadata.relayMode }),\n\t\t...(metadata.relayUrls === undefined ? {} : { relayUrls: [...metadata.relayUrls] }),\n\t\t...(metadata.hostName === undefined ? {} : { hostName: metadata.hostName }),\n\t\t...(metadata.userName === undefined ? {} : { userName: metadata.userName }),\n\t\tcwd: metadata.cwd,\n\t};\n}\n\nfunction assertRemoteHostMetadataMatchesHandshake(\n\tmetadata: IrohRemoteHostHandshakeMetadata | undefined,\n\tresponse: { hostNodeId: string | undefined; workspace: string },\n): void {\n\tif (metadata === undefined) {\n\t\treturn;\n\t}\n\tif (metadata.workspace !== response.workspace) {\n\t\tthrow new Error(\"handshake response remoteHost workspace must match top-level workspace\");\n\t}\n\tif (\n\t\tmetadata.hostNodeId !== undefined &&\n\t\tresponse.hostNodeId !== undefined &&\n\t\tmetadata.hostNodeId !== response.hostNodeId\n\t) {\n\t\tthrow new Error(\"handshake response remoteHost hostNodeId must match top-level hostNodeId\");\n\t}\n}\n\nfunction expectRecord(value: unknown, label: string): Record<string, unknown> {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\tthrow new Error(`${label} must be an object`);\n\t}\n\treturn value as Record<string, unknown>;\n}\n\nfunction expectRecordForOutcome(\n\tvalue: unknown,\n\tlabel: string,\n\toutcome: IrohRemoteHostHandshakeFailureOutcome,\n): Record<string, unknown> {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\tthrow new IrohRemoteHandshakeError(outcome, `${label} must be an object`);\n\t}\n\treturn value as Record<string, unknown>;\n}\n\nfunction expectString(value: unknown, label: string): string {\n\tif (typeof value !== \"string\" || value.length === 0) {\n\t\tthrow new Error(`${label} must be a non-empty string`);\n\t}\n\treturn value;\n}\n\nfunction expectStringForOutcome(value: unknown, label: string, outcome: IrohRemoteHostHandshakeFailureOutcome): string {\n\tif (typeof value !== \"string\" || value.length === 0) {\n\t\tthrow new IrohRemoteHandshakeError(outcome, `${label} must be a non-empty string`);\n\t}\n\treturn value;\n}\n\nfunction expectOptionalString(value: unknown, label: string): string | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\treturn expectString(value, label);\n}\n\nfunction expectOptionalNumber(value: unknown, label: string): number | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) {\n\t\tthrow new Error(`${label} must be a finite number`);\n\t}\n\treturn value;\n}\n\nfunction expectWorkspaceName(value: unknown, label: string): string {\n\tconst workspace = expectStringForOutcome(value, label, \"invalid_workspace\");\n\tconst validationError = getIrohRemoteWorkspaceNameValidationError(workspace, label);\n\tif (validationError) {\n\t\tthrow new IrohRemoteHandshakeError(\"invalid_workspace\", validationError);\n\t}\n\treturn workspace;\n}\n\nexport function isIrohRemoteWorkspaceName(value: unknown): value is string {\n\treturn typeof value === \"string\" && getIrohRemoteWorkspaceNameValidationError(value, \"workspace\") === undefined;\n}\n\nfunction getIrohRemoteWorkspaceNameValidationError(value: string, label: string): string | undefined {\n\tif (value.length === 0) {\n\t\treturn `${label} must be a non-empty string`;\n\t}\n\tif (hasAsciiControlCharacter(value)) {\n\t\treturn `${label} must not contain ASCII control characters`;\n\t}\n\tif (Array.from(value).length > 255 || Buffer.byteLength(value, \"utf8\") > 1024) {\n\t\treturn `${label} exceeds maximum length`;\n\t}\n\treturn undefined;\n}\n\nfunction hasAsciiControlCharacter(value: string): boolean {\n\tfor (const char of value) {\n\t\tconst code = char.charCodeAt(0);\n\t\tif (code <= 0x1f || code === 0x7f) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nexport function isIrohRemoteSessionId(value: unknown): value is string {\n\treturn typeof value === \"string\" && IROH_REMOTE_SESSION_ID_PATTERN.test(value);\n}\n\nfunction parseIrohRemoteHelloMode(hello: Record<string, unknown>): IrohRemoteHelloMode {\n\tconst modeKeys = ([\"conversation\", \"workspaceDiscovery\", \"workspaceManagement\"] as const).filter(\n\t\t(key) => hello[key] !== undefined,\n\t);\n\tif (modeKeys.length !== 1) {\n\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\"invalid_conversation_target\",\n\t\t\t\"Iroh remote hello must include exactly one stream mode\",\n\t\t);\n\t}\n\tconst modeKey = modeKeys[0];\n\tif (modeKey === \"conversation\") {\n\t\treturn { mode: \"conversation\", conversation: parseConversationTarget(hello.conversation) };\n\t}\n\tif (modeKey === \"workspaceDiscovery\") {\n\t\treturn {\n\t\t\tmode: \"workspaceDiscovery\",\n\t\t\tworkspaceDiscovery: parseWorkspaceDiscoveryTarget(hello.workspaceDiscovery),\n\t\t};\n\t}\n\treturn {\n\t\tmode: \"workspaceManagement\",\n\t\tworkspaceManagement: parseWorkspaceManagementTarget(hello.workspaceManagement),\n\t};\n}\n\nfunction parseConversationTarget(value: unknown): IrohRemoteConversationTarget {\n\tconst target = expectRecordForOutcome(value, \"handshake conversation\", \"invalid_conversation_target\");\n\texpectKnownFields(target, \"handshake conversation\", [\"target\", \"sessionId\", \"worktreeId\", \"workingDirectory\"]);\n\tconst targetKind = expectStringForOutcome(\n\t\ttarget.target,\n\t\t\"handshake conversation target\",\n\t\t\"invalid_conversation_target\",\n\t);\n\t// worktreeId is only accepted on target \"new\": resume targets derive the\n\t// worktree from the persisted binding, never from the client.\n\tif (targetKind !== \"new\" && target.worktreeId !== undefined) {\n\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\"invalid_conversation_target\",\n\t\t\t`handshake conversation ${targetKind} target must not include worktreeId`,\n\t\t);\n\t}\n\tif (targetKind !== \"new\" && target.workingDirectory !== undefined) {\n\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\"invalid_conversation_target\",\n\t\t\t`handshake conversation ${targetKind} target must not include workingDirectory`,\n\t\t);\n\t}\n\tif (targetKind === \"last\" || targetKind === \"new\") {\n\t\tif (target.sessionId !== undefined) {\n\t\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\t\"invalid_conversation_target\",\n\t\t\t\t`handshake conversation ${targetKind} target must not include sessionId`,\n\t\t\t);\n\t\t}\n\t\tif (targetKind === \"new\") {\n\t\t\tconst worktreeId =\n\t\t\t\ttarget.worktreeId === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: expectWorktreeId(target.worktreeId, \"handshake conversation worktreeId\");\n\t\t\tconst workingDirectory =\n\t\t\t\ttarget.workingDirectory === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: expectWorkingDirectory(target.workingDirectory, \"handshake conversation workingDirectory\");\n\t\t\treturn {\n\t\t\t\ttarget: \"new\",\n\t\t\t\t...(worktreeId === undefined ? {} : { worktreeId }),\n\t\t\t\t...(workingDirectory === undefined ? {} : { workingDirectory }),\n\t\t\t};\n\t\t}\n\t\treturn { target: targetKind };\n\t}\n\tif (targetKind === \"session\") {\n\t\treturn {\n\t\t\ttarget: \"session\",\n\t\t\tsessionId: expectRemoteSessionId(target.sessionId, \"handshake conversation sessionId\"),\n\t\t};\n\t}\n\tthrow new IrohRemoteHandshakeError(\"invalid_conversation_target\", \"unsupported conversation target\");\n}\n\nfunction parseWorkspaceDiscoveryTarget(value: unknown): IrohRemoteWorkspaceDiscoveryTarget {\n\tconst target = expectRecordForOutcome(value, \"handshake workspaceDiscovery\", \"invalid_conversation_target\");\n\texpectKnownFields(target, \"handshake workspaceDiscovery\", [\"purpose\"]);\n\tconst purpose = expectStringForOutcome(\n\t\ttarget.purpose,\n\t\t\"handshake workspaceDiscovery purpose\",\n\t\t\"invalid_conversation_target\",\n\t);\n\tif (purpose !== \"list_sessions\") {\n\t\tthrow new IrohRemoteHandshakeError(\"invalid_conversation_target\", \"unsupported workspaceDiscovery purpose\");\n\t}\n\treturn { purpose };\n}\n\nfunction parseWorkspaceManagementTarget(value: unknown): IrohRemoteWorkspaceManagementTarget {\n\tconst target = expectRecordForOutcome(value, \"handshake workspaceManagement\", \"invalid_conversation_target\");\n\texpectKnownFields(target, \"handshake workspaceManagement\", [\"purpose\"]);\n\tconst purpose = expectStringForOutcome(\n\t\ttarget.purpose,\n\t\t\"handshake workspaceManagement purpose\",\n\t\t\"invalid_conversation_target\",\n\t);\n\tif (purpose !== \"unregister_workspace\" && purpose !== \"manage_worktrees\") {\n\t\tthrow new IrohRemoteHandshakeError(\"invalid_conversation_target\", \"unsupported workspaceManagement purpose\");\n\t}\n\treturn { purpose };\n}\n\nfunction expectKnownFields(value: Record<string, unknown>, label: string, allowedFields: readonly string[]): void {\n\tconst allowed = new Set(allowedFields);\n\tfor (const field of Object.keys(value)) {\n\t\tif (!allowed.has(field)) {\n\t\t\tthrow new IrohRemoteHandshakeError(\"invalid_conversation_target\", `${label} has unexpected field ${field}`);\n\t\t}\n\t}\n}\n\nfunction expectKnownResponseFields(\n\tvalue: Record<string, unknown>,\n\tlabel: string,\n\tallowedFields: readonly string[],\n): void {\n\tconst allowed = new Set(allowedFields);\n\tfor (const field of Object.keys(value)) {\n\t\tif (!allowed.has(field)) {\n\t\t\tthrow new Error(`${label} has unexpected field ${field}`);\n\t\t}\n\t}\n}\n\nfunction expectRemoteSessionId(value: unknown, label: string): string {\n\tconst sessionId = expectStringForOutcome(value, label, \"invalid_conversation_target\");\n\tif (!isIrohRemoteSessionId(sessionId)) {\n\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\"invalid_conversation_target\",\n\t\t\t`${label} must match lowercase remote session ID syntax`,\n\t\t);\n\t}\n\treturn sessionId;\n}\n\nfunction expectWorktreeId(value: unknown, label: string): string {\n\tconst worktreeId = expectStringForOutcome(value, label, \"invalid_conversation_target\");\n\tif (!isIrohRemoteWorktreeId(worktreeId)) {\n\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\"invalid_conversation_target\",\n\t\t\t`${label} must match lowercase worktree id syntax`,\n\t\t);\n\t}\n\treturn worktreeId;\n}\n\nfunction expectWorkingDirectory(value: unknown, label: string): string {\n\tconst workingDirectory = expectStringForOutcome(value, label, \"invalid_conversation_target\");\n\tif (!isIrohRemoteWorkingDirectory(workingDirectory)) {\n\t\tthrow new IrohRemoteHandshakeError(\n\t\t\t\"invalid_conversation_target\",\n\t\t\t`${label} must be a relative POSIX path inside the workspace`,\n\t\t);\n\t}\n\treturn workingDirectory;\n}\n\nfunction expectOptionalRemoteSessionId(value: unknown, label: string): string | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\treturn expectRemoteSessionIdForResponse(value, label);\n}\n\nfunction expectOptionalOutcome(value: unknown, label: string): IrohRemoteOutcome | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\tif (!isIrohRemoteOutcome(value)) {\n\t\tthrow new Error(`${label} must be a known Iroh remote outcome`);\n\t}\n\treturn value;\n}\n\nfunction parseOptionalFeatures(value: unknown): string[] | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\tif (!Array.isArray(value)) {\n\t\treturn [];\n\t}\n\tconst features: string[] = [];\n\tfor (const entry of value) {\n\t\tif (typeof entry !== \"string\" || entry.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\tfeatures.push(entry);\n\t}\n\treturn features;\n}\n\nfunction parseRequiredFeatures(value: unknown, label: string): string[] {\n\tconst features = parseOptionalFeatures(value);\n\tif (features === undefined || features.length === 0) {\n\t\tthrow new Error(`${label} must be a non-empty string array`);\n\t}\n\treturn features;\n}\n\nfunction parseOptionalRemoteHostHandshakeMetadata(value: unknown): IrohRemoteHostHandshakeMetadata | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\tconst metadata = expectRecord(value, \"handshake response remoteHost\");\n\texpectKnownResponseFields(metadata, \"handshake response remoteHost\", [\n\t\t\"workspace\",\n\t\t\"workspaceNames\",\n\t\t\"workspaces\",\n\t\t\"features\",\n\t\t\"hostNodeId\",\n\t\t\"relayMode\",\n\t\t\"relayUrls\",\n\t\t\"hostName\",\n\t\t\"userName\",\n\t\t\"cwd\",\n\t]);\n\treturn {\n\t\tworkspace: expectWorkspaceNameForResponse(metadata.workspace, \"handshake response remoteHost workspace\"),\n\t\tworkspaceNames: parseRemoteHostWorkspaceNames(metadata.workspaceNames),\n\t\tworkspaces: parseRemoteHostWorkspaces(metadata.workspaces),\n\t\tfeatures: parseRequiredFeatures(metadata.features, \"handshake response remoteHost features\"),\n\t\t...(metadata.hostNodeId === undefined\n\t\t\t? {}\n\t\t\t: { hostNodeId: expectString(metadata.hostNodeId, \"handshake response remoteHost hostNodeId\") }),\n\t\t...(metadata.relayMode === undefined\n\t\t\t? {}\n\t\t\t: { relayMode: expectRelayMode(metadata.relayMode, \"handshake response remoteHost relayMode\") }),\n\t\t...(metadata.relayUrls === undefined\n\t\t\t? {}\n\t\t\t: { relayUrls: expectRelayUrls(metadata.relayUrls, \"handshake response remoteHost relayUrls\") }),\n\t\t...(metadata.hostName === undefined\n\t\t\t? {}\n\t\t\t: { hostName: expectString(metadata.hostName, \"handshake response remoteHost hostName\") }),\n\t\t...(metadata.userName === undefined\n\t\t\t? {}\n\t\t\t: { userName: expectString(metadata.userName, \"handshake response remoteHost userName\") }),\n\t\tcwd: expectString(metadata.cwd, \"handshake response remoteHost cwd\"),\n\t};\n}\n\nfunction parseRemoteHostWorkspaceNames(value: unknown): string[] {\n\tif (!Array.isArray(value)) {\n\t\tthrow new Error(\"handshake response remoteHost workspaceNames must be an array\");\n\t}\n\treturn value.map((entry) => expectWorkspaceNameForResponse(entry, \"handshake response remoteHost workspace name\"));\n}\n\nfunction parseRemoteHostWorkspaces(value: unknown): IrohRemoteWorkspaceStatus[] {\n\tif (!Array.isArray(value)) {\n\t\tthrow new Error(\"handshake response remoteHost workspaces must be an array\");\n\t}\n\treturn value.map((entry) => {\n\t\tconst workspace = expectRecord(entry, \"handshake response remoteHost workspace\");\n\t\texpectKnownResponseFields(workspace, \"handshake response remoteHost workspace\", [\"name\", \"status\"]);\n\t\treturn {\n\t\t\tname: expectWorkspaceNameForResponse(workspace.name, \"handshake response remoteHost workspace name\"),\n\t\t\tstatus: expectWorkspaceStatus(workspace.status, \"handshake response remoteHost workspace status\"),\n\t\t};\n\t});\n}\n\nfunction expectWorkspaceNameForResponse(value: unknown, label: string): string {\n\tconst workspace = expectString(value, label);\n\tconst validationError = getIrohRemoteWorkspaceNameValidationError(workspace, label);\n\tif (validationError) {\n\t\tthrow new Error(validationError);\n\t}\n\treturn workspace;\n}\n\nfunction expectWorkspaceStatus(value: unknown, label: string): IrohRemoteWorkspaceStatus[\"status\"] {\n\tconst status = expectString(value, label);\n\tif (status === \"available\" || status === \"missing\" || status === \"unavailable\") {\n\t\treturn status;\n\t}\n\tthrow new Error(`${label} must be a supported workspace status`);\n}\n\nfunction expectRelayMode(value: unknown, label: string): IrohRemoteRelayMode {\n\tif (isIrohRemoteRelayMode(value)) {\n\t\treturn value;\n\t}\n\tthrow new Error(`${label} must be a supported relay mode`);\n}\n\nfunction expectRelayUrls(value: unknown, label: string): string[] {\n\tif (isIrohRemoteRelayUrls(value)) {\n\t\treturn [...value];\n\t}\n\tthrow new Error(`${label} must be a non-empty array of relay URLs`);\n}\n\nfunction parseOptionalHandshakeSuccessMode(\n\tresponse: Record<string, unknown>,\n): Pick<IrohRemoteHandshakeSuccess, \"sessionId\" | \"conversation\" | \"workspaceDiscovery\" | \"workspaceManagement\"> {\n\tconst modeKeys = ([\"conversation\", \"workspaceDiscovery\", \"workspaceManagement\"] as const).filter(\n\t\t(key) => response[key] !== undefined,\n\t);\n\tif (modeKeys.length === 0) {\n\t\treturn {};\n\t}\n\tif (modeKeys.length !== 1) {\n\t\tthrow new Error(\"handshake response success must include exactly one stream mode\");\n\t}\n\tassertRequiredHandshakeFeatures(parseOptionalFeatures(response.features));\n\tconst modeKey = modeKeys[0];\n\tif (modeKey === \"conversation\") {\n\t\tconst sessionId = expectString(response.sessionId, \"handshake response sessionId\");\n\t\tconst conversation = parseConversationHandshakeMetadata(response.conversation);\n\t\tif (conversation.sessionId !== sessionId) {\n\t\t\tthrow new Error(\"handshake response conversation sessionId must match top-level sessionId\");\n\t\t}\n\t\treturn { sessionId, conversation };\n\t}\n\tif (response.sessionId !== undefined) {\n\t\tthrow new Error(`handshake response ${modeKey} must not include sessionId`);\n\t}\n\tif (modeKey === \"workspaceDiscovery\") {\n\t\treturn { workspaceDiscovery: parseWorkspaceDiscoveryResponseMetadata(response.workspaceDiscovery) };\n\t}\n\treturn { workspaceManagement: parseWorkspaceManagementResponseMetadata(response.workspaceManagement) };\n}\n\nfunction hasHandshakeSuccessModeMetadata(\n\tmetadata: Pick<\n\t\tIrohRemoteHandshakeSuccess,\n\t\t\"sessionId\" | \"conversation\" | \"workspaceDiscovery\" | \"workspaceManagement\"\n\t>,\n): boolean {\n\treturn (\n\t\tmetadata.conversation !== undefined ||\n\t\tmetadata.workspaceDiscovery !== undefined ||\n\t\tmetadata.workspaceManagement !== undefined\n\t);\n}\n\nfunction assertRequiredHandshakeFeatures(features: string[] | undefined): void {\n\tif (\n\t\tfeatures === undefined ||\n\t\t!features.includes(IROH_REMOTE_MULTI_STREAMS_FEATURE) ||\n\t\t!features.includes(IROH_REMOTE_CONVERSATION_STREAMS_FEATURE)\n\t) {\n\t\tthrow new Error(\"handshake response features must include required Iroh remote stream features\");\n\t}\n}\n\nfunction parseConversationHandshakeMetadata(value: unknown): IrohRemoteConversationHandshakeMetadata {\n\tconst metadata = expectRecord(value, \"handshake response conversation\");\n\texpectKnownResponseFields(metadata, \"handshake response conversation\", [\n\t\t\"target\",\n\t\t\"sessionId\",\n\t\t\"selection\",\n\t\t\"requestedSessionId\",\n\t\t\"worktreeId\",\n\t\t\"workingDirectory\",\n\t]);\n\tconst requestedSessionId = expectOptionalRemoteSessionId(\n\t\tmetadata.requestedSessionId,\n\t\t\"handshake response conversation requestedSessionId\",\n\t);\n\tconst worktreeId = expectOptionalWorktreeIdForResponse(\n\t\tmetadata.worktreeId,\n\t\t\"handshake response conversation worktreeId\",\n\t);\n\tconst workingDirectory = expectOptionalWorkingDirectoryForResponse(\n\t\tmetadata.workingDirectory,\n\t\t\"handshake response conversation workingDirectory\",\n\t);\n\tconst conversation: IrohRemoteConversationHandshakeMetadata = {\n\t\ttarget: expectConversationTargetKind(metadata.target, \"handshake response conversation target\"),\n\t\tsessionId: expectRemoteSessionIdForResponse(metadata.sessionId, \"handshake response conversation sessionId\"),\n\t\tselection: expectConversationSelection(metadata.selection, \"handshake response conversation selection\"),\n\t\t...(requestedSessionId === undefined ? {} : { requestedSessionId }),\n\t\t...(worktreeId === undefined ? {} : { worktreeId }),\n\t\t...(workingDirectory === undefined ? {} : { workingDirectory }),\n\t};\n\tassertConversationTargetSelection(conversation);\n\treturn conversation;\n}\n\nfunction expectConversationTargetKind(value: unknown, label: string): IrohRemoteConversationTarget[\"target\"] {\n\tconst target = expectString(value, label);\n\tif (target === \"last\" || target === \"new\" || target === \"session\") {\n\t\treturn target;\n\t}\n\tthrow new Error(`${label} must be a supported conversation target`);\n}\n\nfunction expectConversationSelection(value: unknown, label: string): IrohRemoteConversationSelection {\n\tconst selection = expectString(value, label);\n\tif (\n\t\tselection === \"resumed\" ||\n\t\tselection === \"created\" ||\n\t\tselection === \"created_missing_last\" ||\n\t\tselection === \"session_rekeyed\"\n\t) {\n\t\treturn selection;\n\t}\n\tthrow new Error(`${label} must be a supported conversation selection`);\n}\n\nfunction assertConversationTargetSelection(conversation: IrohRemoteConversationHandshakeMetadata): void {\n\tif (conversation.selection === \"session_rekeyed\") {\n\t\tif (conversation.target !== \"session\") {\n\t\t\tthrow new Error(\"handshake response session_rekeyed selection requires session target\");\n\t\t}\n\t\tif (conversation.requestedSessionId === undefined) {\n\t\t\tthrow new Error(\"handshake response session_rekeyed selection requires requestedSessionId\");\n\t\t}\n\t\tif (conversation.requestedSessionId === conversation.sessionId) {\n\t\t\tthrow new Error(\"handshake response session_rekeyed selection requires a different sessionId\");\n\t\t}\n\t\treturn;\n\t}\n\tif (conversation.requestedSessionId !== undefined) {\n\t\tthrow new Error(\"handshake response requestedSessionId requires session_rekeyed selection\");\n\t}\n\tif (conversation.target === \"new\" && conversation.selection !== \"created\") {\n\t\tthrow new Error(\"handshake response new target must use created selection\");\n\t}\n\tif (conversation.target === \"session\" && conversation.selection !== \"resumed\") {\n\t\tthrow new Error(\"handshake response session target must use resumed selection\");\n\t}\n}\n\nfunction expectOptionalWorkingDirectoryForResponse(value: unknown, label: string): string | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\tif (!isIrohRemoteWorkingDirectory(value)) {\n\t\tthrow new Error(`${label} must be a relative POSIX path inside the workspace`);\n\t}\n\treturn value;\n}\n\nfunction expectRemoteSessionIdForResponse(value: unknown, label: string): string {\n\tconst sessionId = expectString(value, label);\n\tif (!isIrohRemoteSessionId(sessionId)) {\n\t\tthrow new Error(`${label} must match lowercase remote session ID syntax`);\n\t}\n\treturn sessionId;\n}\n\nfunction expectOptionalWorktreeIdForResponse(value: unknown, label: string): string | undefined {\n\tif (value === undefined) {\n\t\treturn undefined;\n\t}\n\tif (!isIrohRemoteWorktreeId(value)) {\n\t\tthrow new Error(`${label} must match lowercase worktree id syntax`);\n\t}\n\treturn value;\n}\n\nfunction parseWorkspaceDiscoveryResponseMetadata(value: unknown): IrohRemoteWorkspaceDiscoveryTarget {\n\tconst metadata = expectRecord(value, \"handshake response workspaceDiscovery\");\n\texpectKnownResponseFields(metadata, \"handshake response workspaceDiscovery\", [\"purpose\"]);\n\tif (metadata.purpose !== \"list_sessions\") {\n\t\tthrow new Error(\"handshake response workspaceDiscovery purpose must be list_sessions\");\n\t}\n\treturn { purpose: \"list_sessions\" };\n}\n\nfunction parseWorkspaceManagementResponseMetadata(value: unknown): IrohRemoteWorkspaceManagementTarget {\n\tconst metadata = expectRecord(value, \"handshake response workspaceManagement\");\n\texpectKnownResponseFields(metadata, \"handshake response workspaceManagement\", [\"purpose\"]);\n\tif (metadata.purpose !== \"unregister_workspace\" && metadata.purpose !== \"manage_worktrees\") {\n\t\tthrow new Error(\"handshake response workspaceManagement purpose must be a supported management purpose\");\n\t}\n\treturn { purpose: metadata.purpose };\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { IrohRemoteClientAuthorizationSuccess } from "./authorization.ts";
2
+ import type { IrohRemoteWorkspace } from "./state.ts";
3
+ export interface IrohRemoteWorkspaceTrustStore {
4
+ get(cwd: string): boolean | null;
5
+ }
6
+ export interface ResolveIrohRemoteWorkspaceProjectTrustOptions {
7
+ approvedWorkspacePaths?: ReadonlySet<string>;
8
+ hasTrustRequiringProjectResources?: (cwd: string) => boolean;
9
+ trustStore?: IrohRemoteWorkspaceTrustStore;
10
+ }
11
+ export declare function resolveIrohRemoteWorkspaceProjectTrusted(workspace: IrohRemoteWorkspace, options?: ResolveIrohRemoteWorkspaceProjectTrustOptions): boolean;
12
+ export declare function shouldReplaceIrohRemoteIntegratedRuntimeForAuthorization(authorization: Pick<IrohRemoteClientAuthorizationSuccess, "paired">): boolean;
13
+ //# sourceMappingURL=host-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-policy.d.ts","sourceRoot":"","sources":["../../../../src/core/remote/iroh/host-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,6BAA6B;IAC7C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,6CAA6C;IAC7D,sBAAsB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,iCAAiC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,UAAU,CAAC,EAAE,6BAA6B,CAAC;CAC3C;AAED,wBAAgB,wCAAwC,CACvD,SAAS,EAAE,mBAAmB,EAC9B,OAAO,GAAE,6CAAkD,GACzD,OAAO,CAWT;AAED,wBAAgB,wDAAwD,CACvE,aAAa,EAAE,IAAI,CAAC,oCAAoC,EAAE,QAAQ,CAAC,GACjE,OAAO,CAET","sourcesContent":["import { hasTrustRequiringProjectResources } from \"../../trust-manager.ts\";\nimport type { IrohRemoteClientAuthorizationSuccess } from \"./authorization.ts\";\nimport type { IrohRemoteWorkspace } from \"./state.ts\";\n\nexport interface IrohRemoteWorkspaceTrustStore {\n\tget(cwd: string): boolean | null;\n}\n\nexport interface ResolveIrohRemoteWorkspaceProjectTrustOptions {\n\tapprovedWorkspacePaths?: ReadonlySet<string>;\n\thasTrustRequiringProjectResources?: (cwd: string) => boolean;\n\ttrustStore?: IrohRemoteWorkspaceTrustStore;\n}\n\nexport function resolveIrohRemoteWorkspaceProjectTrusted(\n\tworkspace: IrohRemoteWorkspace,\n\toptions: ResolveIrohRemoteWorkspaceProjectTrustOptions = {},\n): boolean {\n\tif (options.approvedWorkspacePaths?.has(workspace.path)) {\n\t\treturn true;\n\t}\n\tconst hasTrustResources = (options.hasTrustRequiringProjectResources ?? hasTrustRequiringProjectResources)(\n\t\tworkspace.path,\n\t);\n\tif (!hasTrustResources) {\n\t\treturn true;\n\t}\n\treturn options.trustStore?.get(workspace.path) === true;\n}\n\nexport function shouldReplaceIrohRemoteIntegratedRuntimeForAuthorization(\n\tauthorization: Pick<IrohRemoteClientAuthorizationSuccess, \"paired\">,\n): boolean {\n\treturn authorization.paired;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { hasTrustRequiringProjectResources } from "../../trust-manager.js";
2
+ export function resolveIrohRemoteWorkspaceProjectTrusted(workspace, options = {}) {
3
+ if (options.approvedWorkspacePaths?.has(workspace.path)) {
4
+ return true;
5
+ }
6
+ const hasTrustResources = (options.hasTrustRequiringProjectResources ?? hasTrustRequiringProjectResources)(workspace.path);
7
+ if (!hasTrustResources) {
8
+ return true;
9
+ }
10
+ return options.trustStore?.get(workspace.path) === true;
11
+ }
12
+ export function shouldReplaceIrohRemoteIntegratedRuntimeForAuthorization(authorization) {
13
+ return authorization.paired;
14
+ }
15
+ //# sourceMappingURL=host-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-policy.js","sourceRoot":"","sources":["../../../../src/core/remote/iroh/host-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAc3E,MAAM,UAAU,wCAAwC,CACvD,SAA8B,EAC9B,OAAO,GAAkD,EAAE,EACjD;IACV,IAAI,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,iCAAiC,IAAI,iCAAiC,CAAC,CACzG,SAAS,CAAC,IAAI,CACd,CAAC;IACF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAAA,CACxD;AAED,MAAM,UAAU,wDAAwD,CACvE,aAAmE,EACzD;IACV,OAAO,aAAa,CAAC,MAAM,CAAC;AAAA,CAC5B","sourcesContent":["import { hasTrustRequiringProjectResources } from \"../../trust-manager.ts\";\nimport type { IrohRemoteClientAuthorizationSuccess } from \"./authorization.ts\";\nimport type { IrohRemoteWorkspace } from \"./state.ts\";\n\nexport interface IrohRemoteWorkspaceTrustStore {\n\tget(cwd: string): boolean | null;\n}\n\nexport interface ResolveIrohRemoteWorkspaceProjectTrustOptions {\n\tapprovedWorkspacePaths?: ReadonlySet<string>;\n\thasTrustRequiringProjectResources?: (cwd: string) => boolean;\n\ttrustStore?: IrohRemoteWorkspaceTrustStore;\n}\n\nexport function resolveIrohRemoteWorkspaceProjectTrusted(\n\tworkspace: IrohRemoteWorkspace,\n\toptions: ResolveIrohRemoteWorkspaceProjectTrustOptions = {},\n): boolean {\n\tif (options.approvedWorkspacePaths?.has(workspace.path)) {\n\t\treturn true;\n\t}\n\tconst hasTrustResources = (options.hasTrustRequiringProjectResources ?? hasTrustRequiringProjectResources)(\n\t\tworkspace.path,\n\t);\n\tif (!hasTrustResources) {\n\t\treturn true;\n\t}\n\treturn options.trustStore?.get(workspace.path) === true;\n}\n\nexport function shouldReplaceIrohRemoteIntegratedRuntimeForAuthorization(\n\tauthorization: Pick<IrohRemoteClientAuthorizationSuccess, \"paired\">,\n): boolean {\n\treturn authorization.paired;\n}\n"]}
@@ -0,0 +1,25 @@
1
+ export { cloneIrohRemoteRpcGrant, createIrohRemoteExplicitAccess, createIrohRemotePresetAccess, createIrohRemoteRpcGrant, getIrohRemoteAccessPreset, getIrohRemoteRpcCommandCapabilities, getIrohRemoteStreamCapability, getMissingIrohRemoteRpcCapability, hasIrohRemoteRpcCapability, IROH_REMOTE_ACCESS_PRESET_NAMES, IROH_REMOTE_ACCESS_PRESETS, IROH_REMOTE_RPC_CAPABILITIES, IROH_REMOTE_RPC_GRANT_SCHEMA_VERSION, type IrohRemoteAccessPreset, type IrohRemoteAccessPresetName, type IrohRemoteRpcCapability, type IrohRemoteRpcGrant, isIrohRemoteAccessPresetName, parseIrohRemoteRpcCapabilities, parseIrohRemoteRpcGrant, } from "./access-grant.ts";
2
+ export { type IrohRemoteActiveStreamEntry, IrohRemoteActiveStreamRegistry, } from "./active-stream-registry.ts";
3
+ export { type IrohRemoteAuditEvent, type IrohRemoteAuditEventInput, IrohRemoteAuditLogger, type IrohRemoteAuditLoggerOptions, type IrohRemoteAuditSink, } from "./audit.ts";
4
+ export { type AuthorizeIrohRemoteClientOptions, authorizeIrohRemoteClient, DEFAULT_IROH_REMOTE_PAIRING_SECRET_TOMBSTONE_RETENTION_MS, findIrohRemoteClient, findIrohRemoteRevokedClient, hashIrohRemotePairingSecret, type IrohRemoteClientAuthorizationFailure, type IrohRemoteClientAuthorizationResult, type IrohRemoteClientAuthorizationSuccess, isIrohRemoteClientAllowedForWorkspace, } from "./authorization.ts";
5
+ export { DEFAULT_IROH_REMOTE_CONTROL_TIMEOUT_MS, ensureIrohRemoteControlDirectory, getIrohRemoteControlPath, IROH_REMOTE_PAIR_CONTROL_REQUEST_TYPE, IROH_REMOTE_PAIR_CONTROL_RESPONSE_TYPE, IROH_REMOTE_REVOKE_CONTROL_REQUEST_TYPE, IROH_REMOTE_REVOKE_CONTROL_RESPONSE_TYPE, type IrohRemoteControlClientOptions, type IrohRemoteControlRequest, type IrohRemoteControlServerListenOptions, type IrohRemotePairControlClientOptions, type IrohRemotePairControlRequest, type IrohRemotePairControlResponse, type IrohRemoteRevokeControlClientOptions, type IrohRemoteRevokeControlRequest, type IrohRemoteRevokeControlResponse, type IrohRemoteUnsafeApproval, listenIrohRemoteControlServer, parseIrohRemoteControlRequest, parseIrohRemotePairControlRequest, parseIrohRemotePairControlResponse, parseIrohRemoteRevokeControlRequest, parseIrohRemoteRevokeControlResponse, requestIrohRemoteActiveRevocation, requestIrohRemotePairingTicket, } from "./control.ts";
6
+ export { DEFAULT_IROH_REMOTE_DEVICE_LOG_MAX_CONTENT_BYTES, type HandleIrohRemoteDeviceLogUploadRpcCommandOptions, handleIrohRemoteDeviceLogUploadRpcCommand, IROH_REMOTE_DEVICE_LOGS_DIR_SEGMENTS, IROH_REMOTE_UPLOAD_DEVICE_LOGS_RPC_TYPE, type IrohRemoteDeviceLogUploadRpcData, type IrohRemoteDeviceLogUploadRpcResponse, } from "./device-log-rpc.ts";
7
+ export { DEFAULT_IROH_REMOTE_PAIRING_TICKET_TTL_MS, IrohRemoteClientEngine, type IrohRemoteClientEngineOptions, type IrohRemoteClientHandshakeResponseResult, type IrohRemoteClientReadHandshakeResponseOptions, type IrohRemoteClientTicketHello, IrohRemoteHostEngine, type IrohRemoteHostEngineOptions, type IrohRemoteHostHandshakeResult, type IrohRemoteHostPairOptions, type IrohRemoteHostReadHandshakeOptions, type IrohRemotePairingTicket, } from "./engine.ts";
8
+ export { assertIrohRemoteHandshakeHostIdentity, createIrohRemoteHandshakeFailure, createIrohRemoteHandshakeSuccess, IROH_REMOTE_SESSION_ID_PATTERN, type IrohRemoteConversationHandshakeMetadata, type IrohRemoteConversationSelection, type IrohRemoteConversationTarget, IrohRemoteHandshakeError, type IrohRemoteHandshakeFailure, type IrohRemoteHandshakeResponse, type IrohRemoteHandshakeSuccess, type IrohRemoteHello, type IrohRemoteHelloMode, type IrohRemoteHostHandshakeMetadata, type IrohRemoteWorkspaceDiscoveryTarget, type IrohRemoteWorkspaceManagementTarget, isIrohRemoteSessionId, isIrohRemoteWorkspaceName, parseIrohRemoteHandshakeResponse, parseIrohRemoteHandshakeResponseLine, parseIrohRemoteHello, parseIrohRemoteHelloLine, } from "./handshake.ts";
9
+ export { DEFAULT_IROH_REMOTE_HANDSHAKE_MAX_LINE_BYTES, DEFAULT_IROH_REMOTE_HANDSHAKE_TIMEOUT_MS, type IrohRemoteHandshakeLineReadOptions, type IrohRemoteHandshakeLineReadResult, readIrohRemoteHandshakeLine, writeIrohRemoteHandshakeResponse, writeIrohRemoteHello, } from "./handshake-reader.ts";
10
+ export { type IrohRemoteWorkspaceTrustStore, type ResolveIrohRemoteWorkspaceProjectTrustOptions, resolveIrohRemoteWorkspaceProjectTrusted, shouldReplaceIrohRemoteIntegratedRuntimeForAuthorization, } from "./host-policy.ts";
11
+ export { type CreateIrohRemoteHostMetadataOptions, createIrohRemoteHostMetadata, type IrohRemoteHostMetadata, } from "./metadata.ts";
12
+ export { createIrohRemoteOutboundFilteredRpcTransport, IROH_REMOTE_REDACTED_BASH_OUTPUT_PATH, IROH_REMOTE_REDACTED_EXPORT_PATH, IROH_REMOTE_REDACTED_SESSION_FILE, type IrohRemoteOutboundFilterOptions, type IrohRemoteOutboundJsonlReadablePipeOptions, type IrohRemoteOutboundSanitizerOptions, type IrohRemoteOutboundValueDecorator, pipeIrohRemoteOutboundJsonlReadable, sanitizeIrohRemoteOutbound, sanitizeIrohRemoteOutboundJsonLine, } from "./outbound-filter.ts";
13
+ export { DEFAULT_IROH_REMOTE_ALLOW_TOOLS, getIrohRemoteUnsafeAllowedTools, IROH_REMOTE_ALPN, IROH_REMOTE_CONVERSATION_STREAMS_FEATURE, IROH_REMOTE_HANDSHAKE_TYPE, IROH_REMOTE_HELLO_TYPE, IROH_REMOTE_HOST_FEATURES, IROH_REMOTE_HOST_HANDSHAKE_FAILURE_OUTCOMES, IROH_REMOTE_MULTI_STREAMS_FEATURE, IROH_REMOTE_OUTCOMES, IROH_REMOTE_SESSION_RUNTIME_STATE_FEATURE, IROH_REMOTE_TICKET_PREFIX, IROH_REMOTE_UNSAFE_TOOL_NAMES, IROH_REMOTE_WORKTREE_ID_PATTERN, IROH_REMOTE_WORKTREES_FEATURE, type IrohRemoteHostFeature, type IrohRemoteHostHandshakeFailureOutcome, type IrohRemoteOutcome, IrohRemoteOutcomeError, type IrohRemoteRelayMode, type IrohRemoteRuntimeToolPolicy, isIrohRemoteHostHandshakeFailureOutcome, isIrohRemoteOutcome, isIrohRemoteRelayMode, isIrohRemoteRuntimeToolPolicyWithin, isIrohRemoteWorktreeId, normalizeIrohRemoteAllowTools, parseIrohRemoteAllowTools, type ResolveIrohRemoteRuntimeToolPolicyOptions, resolveIrohRemoteRuntimeToolPolicy, usesDefaultIrohRemoteAllowTools, } from "./protocol.ts";
14
+ export { DEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_ATTEMPTS, DEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_DELAY_MS, DEFAULT_IROH_REMOTE_PUSH_RELAY_TIMEOUT_MS, DEFAULT_IROH_REMOTE_PUSH_RELAY_URL, hashIrohRemotePushToken, IrohRemoteInMemoryPushNotificationDeduper, type IrohRemoteLiveActivityContentState, type IrohRemoteLiveActivityToolGlyph, type IrohRemoteLiveActivityUpdateIntent, type IrohRemotePushNotificationDeduper, type IrohRemotePushNotificationDelivery, type IrohRemotePushNotificationDeliveryStatus, IrohRemotePushNotificationDispatcher, type IrohRemotePushNotificationDispatcherOptions, type IrohRemotePushNotificationIntent, type IrohRemotePushRelayClient, IrohRemotePushRelayHttpClient, type IrohRemotePushRelayHttpClientOptions, IrohRemotePushRelayHttpError, type IrohRemotePushRelayLiveActivityRequest, type IrohRemotePushRelayNotificationRequest, type IrohRemotePushRelayNotificationResult, type IrohRemotePushTargetRegistrationRequest, type IrohRemotePushTargetRegistrationResult, parseRegisterPushTargetArgs, } from "./push.ts";
15
+ export { createIrohRemoteTicketQrCode, formatIrohRemoteTicketQrCode, formatIrohRemoteTicketQrCodeTerminal, type IrohRemoteTicketQrCode, type IrohRemoteTicketQrCodeFormatOptions, } from "./qr.ts";
16
+ export { createIrohRemoteRpcCapabilityDeniedResponse, createIrohRemoteRpcErrorResponse, getIrohRemoteRpcFilterResult, getStaticIrohRemoteRpcFilterResult, IROH_REMOTE_RPC_CANCELLATION_TYPES, IROH_REMOTE_RPC_PASSTHROUGH_TYPES, type IrohRemoteRpcCapabilityDeniedError, type IrohRemoteRpcCapabilityDeniedResponse, type IrohRemoteRpcCommand, type IrohRemoteRpcErrorResponse, type IrohRemoteRpcFilterResult, serializeIrohRemoteRpcFilterRejection, } from "./rpc-command-filter.ts";
17
+ export { createIrohRemoteFilteredRpcTransport, createIrohRemoteRpcTransport, type IrohRemoteFilteredRpcTransportOptions, } from "./rpc-transport.ts";
18
+ export { createEmptyIrohRemoteHostState, type IrohRemoteClient, type IrohRemoteGrantedClient, type IrohRemoteGrantedPendingPairingTicket, type IrohRemoteGrantedRevokedClient, type IrohRemoteHostState, type IrohRemoteLiveActivityRegistration, type IrohRemoteLiveActivityTarget, type IrohRemotePairingSecretTombstone, type IrohRemotePairingSecretTombstoneOutcome, type IrohRemotePendingPairingTicket, type IrohRemotePushTarget, type IrohRemotePushTargetPlatform, type IrohRemotePushTargetProvider, type IrohRemotePushTokenEnvironment, type IrohRemoteRevokedClient, type IrohRemoteWorkspace, type IrohRemoteWorkspaceWorktree, parseIrohRemoteClient, parseIrohRemoteHostState, parseIrohRemoteLiveActivityRegistration, parseIrohRemotePairingSecretTombstone, parseIrohRemotePendingPairingTicket, parseIrohRemotePushTarget, parseIrohRemoteRevokedClient, parseIrohRemoteWorkspace, parseIrohRemoteWorkspaceWorktree, readIrohRemoteHostState, writeIrohRemoteHostState, } from "./state.ts";
19
+ export { IROH_REMOTE_WORKSPACE_HAS_WORKTREES_ERROR, type IrohRemoteClientAccessUpdateResult, type IrohRemoteClientRePairApprovalResult, type IrohRemoteClientRevocationResult, IrohRemoteHostStateManager, type IrohRemoteHostStateManagerOptions, type IrohRemoteLiveActivityDeliveryChannelLookup, type IrohRemoteLiveActivityRegistrationResult, IrohRemoteWorkspaceHasWorktreesError, isIrohRemoteWorkspaceHasWorktreesError, } from "./state-manager.ts";
20
+ export { assertIrohRemoteTicketNotExpired, assertIrohRemoteTicketPayloadHostIdentity, createIrohRemoteSanitizedReconnectTicket, createIrohRemoteSanitizedReconnectTicketPayload, decodeIrohRemoteTicketPayload, encodeIrohRemoteTicketPayload, formatIrohRemoteHostFingerprint, getIrohRemotePairingVerificationDetails, type IrohRemotePairingVerificationDetails, type IrohRemoteSanitizedReconnectTicketPayload, type IrohRemoteTicketPayload, parseIrohRemoteTicketPayload, } from "./ticket.ts";
21
+ export { type IrohRemoteSanitizedTranscriptText, type IrohRemoteTranscriptTextLayout, sanitizeIrohRemoteTranscriptText, } from "./transcript-text.ts";
22
+ export { getAvailableIrohRemoteWorkspaceNames, getIrohRemoteWorkspaceAvailabilityStatus, getIrohRemoteWorkspaceStatuses, type IrohRemoteWorkspaceAvailabilityClassifier, type IrohRemoteWorkspaceAvailabilityStatus, type IrohRemoteWorkspaceStatus, parseIrohRemoteWorkspaceSpec, selectIrohRemoteWorkspace, upsertIrohRemoteWorkspace, } from "./workspace.ts";
23
+ export { type HandleIrohRemoteWorkspaceUnregisterRpcCommandOptions, handleIrohRemoteWorkspaceUnregisterRpcCommand, IROH_REMOTE_UNREGISTER_WORKSPACE_RPC_TYPE, type IrohRemoteWorkspaceMetadataSnapshot, type IrohRemoteWorkspaceUnregisterRpcData, type IrohRemoteWorkspaceUnregisterRpcResponse, type IrohRemoteWorkspaceUnregisterRpcResult, } from "./workspace-rpc.ts";
24
+ export { type HandleIrohRemoteWorktreeRpcCommandOptions, handleIrohRemoteWorktreeRpcCommand, IROH_REMOTE_CREATE_WORKTREE_RPC_TYPE, IROH_REMOTE_LIST_WORKTREES_RPC_TYPE, IROH_REMOTE_REMOVE_WORKTREE_RPC_TYPE, IROH_REMOTE_WORKTREE_RPC_TYPES, type IrohRemoteWorktreeRpcBackend, type IrohRemoteWorktreeRpcResponse, type IrohRemoteWorktreeRpcResult, type IrohRemoteWorktreeSummary, } from "./worktree-rpc.ts";
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/remote/iroh/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n\tcloneIrohRemoteRpcGrant,\n\tcreateIrohRemoteExplicitAccess,\n\tcreateIrohRemotePresetAccess,\n\tcreateIrohRemoteRpcGrant,\n\tgetIrohRemoteAccessPreset,\n\tgetIrohRemoteRpcCommandCapabilities,\n\tgetIrohRemoteStreamCapability,\n\tgetMissingIrohRemoteRpcCapability,\n\thasIrohRemoteRpcCapability,\n\tIROH_REMOTE_ACCESS_PRESET_NAMES,\n\tIROH_REMOTE_ACCESS_PRESETS,\n\tIROH_REMOTE_RPC_CAPABILITIES,\n\tIROH_REMOTE_RPC_GRANT_SCHEMA_VERSION,\n\ttype IrohRemoteAccessPreset,\n\ttype IrohRemoteAccessPresetName,\n\ttype IrohRemoteRpcCapability,\n\ttype IrohRemoteRpcGrant,\n\tisIrohRemoteAccessPresetName,\n\tparseIrohRemoteRpcCapabilities,\n\tparseIrohRemoteRpcGrant,\n} from \"./access-grant.ts\";\nexport {\n\ttype IrohRemoteActiveStreamEntry,\n\tIrohRemoteActiveStreamRegistry,\n} from \"./active-stream-registry.ts\";\nexport {\n\ttype IrohRemoteAuditEvent,\n\ttype IrohRemoteAuditEventInput,\n\tIrohRemoteAuditLogger,\n\ttype IrohRemoteAuditLoggerOptions,\n\ttype IrohRemoteAuditSink,\n} from \"./audit.ts\";\nexport {\n\ttype AuthorizeIrohRemoteClientOptions,\n\tauthorizeIrohRemoteClient,\n\tDEFAULT_IROH_REMOTE_PAIRING_SECRET_TOMBSTONE_RETENTION_MS,\n\tfindIrohRemoteClient,\n\tfindIrohRemoteRevokedClient,\n\thashIrohRemotePairingSecret,\n\ttype IrohRemoteClientAuthorizationFailure,\n\ttype IrohRemoteClientAuthorizationResult,\n\ttype IrohRemoteClientAuthorizationSuccess,\n\tisIrohRemoteClientAllowedForWorkspace,\n} from \"./authorization.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_CONTROL_TIMEOUT_MS,\n\tensureIrohRemoteControlDirectory,\n\tgetIrohRemoteControlPath,\n\tIROH_REMOTE_PAIR_CONTROL_REQUEST_TYPE,\n\tIROH_REMOTE_PAIR_CONTROL_RESPONSE_TYPE,\n\tIROH_REMOTE_REVOKE_CONTROL_REQUEST_TYPE,\n\tIROH_REMOTE_REVOKE_CONTROL_RESPONSE_TYPE,\n\ttype IrohRemoteControlClientOptions,\n\ttype IrohRemoteControlRequest,\n\ttype IrohRemoteControlServerListenOptions,\n\ttype IrohRemotePairControlClientOptions,\n\ttype IrohRemotePairControlRequest,\n\ttype IrohRemotePairControlResponse,\n\ttype IrohRemoteRevokeControlClientOptions,\n\ttype IrohRemoteRevokeControlRequest,\n\ttype IrohRemoteRevokeControlResponse,\n\ttype IrohRemoteUnsafeApproval,\n\tlistenIrohRemoteControlServer,\n\tparseIrohRemoteControlRequest,\n\tparseIrohRemotePairControlRequest,\n\tparseIrohRemotePairControlResponse,\n\tparseIrohRemoteRevokeControlRequest,\n\tparseIrohRemoteRevokeControlResponse,\n\trequestIrohRemoteActiveRevocation,\n\trequestIrohRemotePairingTicket,\n} from \"./control.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_DEVICE_LOG_MAX_CONTENT_BYTES,\n\ttype HandleIrohRemoteDeviceLogUploadRpcCommandOptions,\n\thandleIrohRemoteDeviceLogUploadRpcCommand,\n\tIROH_REMOTE_DEVICE_LOGS_DIR_SEGMENTS,\n\tIROH_REMOTE_UPLOAD_DEVICE_LOGS_RPC_TYPE,\n\ttype IrohRemoteDeviceLogUploadRpcData,\n\ttype IrohRemoteDeviceLogUploadRpcResponse,\n} from \"./device-log-rpc.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_PAIRING_TICKET_TTL_MS,\n\tIrohRemoteClientEngine,\n\ttype IrohRemoteClientEngineOptions,\n\ttype IrohRemoteClientHandshakeResponseResult,\n\ttype IrohRemoteClientReadHandshakeResponseOptions,\n\ttype IrohRemoteClientTicketHello,\n\tIrohRemoteHostEngine,\n\ttype IrohRemoteHostEngineOptions,\n\ttype IrohRemoteHostHandshakeResult,\n\ttype IrohRemoteHostPairOptions,\n\ttype IrohRemoteHostReadHandshakeOptions,\n\ttype IrohRemotePairingTicket,\n} from \"./engine.ts\";\nexport {\n\tassertIrohRemoteHandshakeHostIdentity,\n\tcreateIrohRemoteHandshakeFailure,\n\tcreateIrohRemoteHandshakeSuccess,\n\tIROH_REMOTE_SESSION_ID_PATTERN,\n\ttype IrohRemoteConversationHandshakeMetadata,\n\ttype IrohRemoteConversationSelection,\n\ttype IrohRemoteConversationTarget,\n\tIrohRemoteHandshakeError,\n\ttype IrohRemoteHandshakeFailure,\n\ttype IrohRemoteHandshakeResponse,\n\ttype IrohRemoteHandshakeSuccess,\n\ttype IrohRemoteHello,\n\ttype IrohRemoteHelloMode,\n\ttype IrohRemoteHostHandshakeMetadata,\n\ttype IrohRemoteWorkspaceDiscoveryTarget,\n\ttype IrohRemoteWorkspaceManagementTarget,\n\tisIrohRemoteSessionId,\n\tisIrohRemoteWorkspaceName,\n\tparseIrohRemoteHandshakeResponse,\n\tparseIrohRemoteHandshakeResponseLine,\n\tparseIrohRemoteHello,\n\tparseIrohRemoteHelloLine,\n} from \"./handshake.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_HANDSHAKE_MAX_LINE_BYTES,\n\tDEFAULT_IROH_REMOTE_HANDSHAKE_TIMEOUT_MS,\n\ttype IrohRemoteHandshakeLineReadOptions,\n\ttype IrohRemoteHandshakeLineReadResult,\n\treadIrohRemoteHandshakeLine,\n\twriteIrohRemoteHandshakeResponse,\n\twriteIrohRemoteHello,\n} from \"./handshake-reader.ts\";\nexport {\n\ttype IrohRemoteWorkspaceTrustStore,\n\ttype ResolveIrohRemoteWorkspaceProjectTrustOptions,\n\tresolveIrohRemoteWorkspaceProjectTrusted,\n\tshouldReplaceIrohRemoteIntegratedRuntimeForAuthorization,\n} from \"./host-policy.ts\";\nexport {\n\ttype CreateIrohRemoteHostMetadataOptions,\n\tcreateIrohRemoteHostMetadata,\n\ttype IrohRemoteHostMetadata,\n} from \"./metadata.ts\";\nexport {\n\tcreateIrohRemoteOutboundFilteredRpcTransport,\n\tIROH_REMOTE_REDACTED_BASH_OUTPUT_PATH,\n\tIROH_REMOTE_REDACTED_EXPORT_PATH,\n\tIROH_REMOTE_REDACTED_SESSION_FILE,\n\ttype IrohRemoteOutboundFilterOptions,\n\ttype IrohRemoteOutboundJsonlReadablePipeOptions,\n\ttype IrohRemoteOutboundSanitizerOptions,\n\ttype IrohRemoteOutboundValueDecorator,\n\tpipeIrohRemoteOutboundJsonlReadable,\n\tsanitizeIrohRemoteOutbound,\n\tsanitizeIrohRemoteOutboundJsonLine,\n} from \"./outbound-filter.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_ALLOW_TOOLS,\n\tgetIrohRemoteUnsafeAllowedTools,\n\tIROH_REMOTE_ALPN,\n\tIROH_REMOTE_CONVERSATION_STREAMS_FEATURE,\n\tIROH_REMOTE_HANDSHAKE_TYPE,\n\tIROH_REMOTE_HELLO_TYPE,\n\tIROH_REMOTE_HOST_FEATURES,\n\tIROH_REMOTE_HOST_HANDSHAKE_FAILURE_OUTCOMES,\n\tIROH_REMOTE_MULTI_STREAMS_FEATURE,\n\tIROH_REMOTE_OUTCOMES,\n\tIROH_REMOTE_SESSION_RUNTIME_STATE_FEATURE,\n\tIROH_REMOTE_TICKET_PREFIX,\n\tIROH_REMOTE_UNSAFE_TOOL_NAMES,\n\tIROH_REMOTE_WORKTREE_ID_PATTERN,\n\tIROH_REMOTE_WORKTREES_FEATURE,\n\ttype IrohRemoteHostFeature,\n\ttype IrohRemoteHostHandshakeFailureOutcome,\n\ttype IrohRemoteOutcome,\n\tIrohRemoteOutcomeError,\n\ttype IrohRemoteRelayMode,\n\ttype IrohRemoteRuntimeToolPolicy,\n\tisIrohRemoteHostHandshakeFailureOutcome,\n\tisIrohRemoteOutcome,\n\tisIrohRemoteRelayMode,\n\tisIrohRemoteRuntimeToolPolicyWithin,\n\tisIrohRemoteWorktreeId,\n\tnormalizeIrohRemoteAllowTools,\n\tparseIrohRemoteAllowTools,\n\ttype ResolveIrohRemoteRuntimeToolPolicyOptions,\n\tresolveIrohRemoteRuntimeToolPolicy,\n\tusesDefaultIrohRemoteAllowTools,\n} from \"./protocol.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_ATTEMPTS,\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_DELAY_MS,\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_TIMEOUT_MS,\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_URL,\n\thashIrohRemotePushToken,\n\tIrohRemoteInMemoryPushNotificationDeduper,\n\ttype IrohRemoteLiveActivityContentState,\n\ttype IrohRemoteLiveActivityToolGlyph,\n\ttype IrohRemoteLiveActivityUpdateIntent,\n\ttype IrohRemotePushNotificationDeduper,\n\ttype IrohRemotePushNotificationDelivery,\n\ttype IrohRemotePushNotificationDeliveryStatus,\n\tIrohRemotePushNotificationDispatcher,\n\ttype IrohRemotePushNotificationDispatcherOptions,\n\ttype IrohRemotePushNotificationIntent,\n\ttype IrohRemotePushRelayClient,\n\tIrohRemotePushRelayHttpClient,\n\ttype IrohRemotePushRelayHttpClientOptions,\n\tIrohRemotePushRelayHttpError,\n\ttype IrohRemotePushRelayLiveActivityRequest,\n\ttype IrohRemotePushRelayNotificationRequest,\n\ttype IrohRemotePushRelayNotificationResult,\n\ttype IrohRemotePushTargetRegistrationRequest,\n\ttype IrohRemotePushTargetRegistrationResult,\n\tparseRegisterPushTargetArgs,\n} from \"./push.ts\";\nexport {\n\tcreateIrohRemoteTicketQrCode,\n\tformatIrohRemoteTicketQrCode,\n\tformatIrohRemoteTicketQrCodeTerminal,\n\ttype IrohRemoteTicketQrCode,\n\ttype IrohRemoteTicketQrCodeFormatOptions,\n} from \"./qr.ts\";\nexport {\n\tcreateIrohRemoteRpcCapabilityDeniedResponse,\n\tcreateIrohRemoteRpcErrorResponse,\n\tgetIrohRemoteRpcFilterResult,\n\tgetStaticIrohRemoteRpcFilterResult,\n\tIROH_REMOTE_RPC_CANCELLATION_TYPES,\n\tIROH_REMOTE_RPC_PASSTHROUGH_TYPES,\n\ttype IrohRemoteRpcCapabilityDeniedError,\n\ttype IrohRemoteRpcCapabilityDeniedResponse,\n\ttype IrohRemoteRpcCommand,\n\ttype IrohRemoteRpcErrorResponse,\n\ttype IrohRemoteRpcFilterResult,\n\tserializeIrohRemoteRpcFilterRejection,\n} from \"./rpc-command-filter.ts\";\nexport {\n\tcreateIrohRemoteFilteredRpcTransport,\n\tcreateIrohRemoteRpcTransport,\n\ttype IrohRemoteFilteredRpcTransportOptions,\n} from \"./rpc-transport.ts\";\nexport {\n\tcreateEmptyIrohRemoteHostState,\n\ttype IrohRemoteClient,\n\ttype IrohRemoteGrantedClient,\n\ttype IrohRemoteGrantedPendingPairingTicket,\n\ttype IrohRemoteGrantedRevokedClient,\n\ttype IrohRemoteHostState,\n\ttype IrohRemoteLiveActivityRegistration,\n\ttype IrohRemoteLiveActivityTarget,\n\ttype IrohRemotePairingSecretTombstone,\n\ttype IrohRemotePairingSecretTombstoneOutcome,\n\ttype IrohRemotePendingPairingTicket,\n\ttype IrohRemotePushTarget,\n\ttype IrohRemotePushTargetPlatform,\n\ttype IrohRemotePushTargetProvider,\n\ttype IrohRemotePushTokenEnvironment,\n\ttype IrohRemoteRevokedClient,\n\ttype IrohRemoteWorkspace,\n\ttype IrohRemoteWorkspaceWorktree,\n\tparseIrohRemoteClient,\n\tparseIrohRemoteHostState,\n\tparseIrohRemoteLiveActivityRegistration,\n\tparseIrohRemotePairingSecretTombstone,\n\tparseIrohRemotePendingPairingTicket,\n\tparseIrohRemotePushTarget,\n\tparseIrohRemoteRevokedClient,\n\tparseIrohRemoteWorkspace,\n\tparseIrohRemoteWorkspaceWorktree,\n\treadIrohRemoteHostState,\n\twriteIrohRemoteHostState,\n} from \"./state.ts\";\nexport {\n\tIROH_REMOTE_WORKSPACE_HAS_WORKTREES_ERROR,\n\ttype IrohRemoteClientAccessUpdateResult,\n\ttype IrohRemoteClientRePairApprovalResult,\n\ttype IrohRemoteClientRevocationResult,\n\tIrohRemoteHostStateManager,\n\ttype IrohRemoteHostStateManagerOptions,\n\ttype IrohRemoteLiveActivityDeliveryChannelLookup,\n\ttype IrohRemoteLiveActivityRegistrationResult,\n\tIrohRemoteWorkspaceHasWorktreesError,\n\tisIrohRemoteWorkspaceHasWorktreesError,\n} from \"./state-manager.ts\";\nexport {\n\tassertIrohRemoteTicketNotExpired,\n\tassertIrohRemoteTicketPayloadHostIdentity,\n\tcreateIrohRemoteSanitizedReconnectTicket,\n\tcreateIrohRemoteSanitizedReconnectTicketPayload,\n\tdecodeIrohRemoteTicketPayload,\n\tencodeIrohRemoteTicketPayload,\n\tformatIrohRemoteHostFingerprint,\n\tgetIrohRemotePairingVerificationDetails,\n\ttype IrohRemotePairingVerificationDetails,\n\ttype IrohRemoteSanitizedReconnectTicketPayload,\n\ttype IrohRemoteTicketPayload,\n\tparseIrohRemoteTicketPayload,\n} from \"./ticket.ts\";\nexport {\n\ttype IrohRemoteSanitizedTranscriptText,\n\ttype IrohRemoteTranscriptTextLayout,\n\tsanitizeIrohRemoteTranscriptText,\n} from \"./transcript-text.ts\";\nexport {\n\tgetAvailableIrohRemoteWorkspaceNames,\n\tgetIrohRemoteWorkspaceAvailabilityStatus,\n\tgetIrohRemoteWorkspaceStatuses,\n\ttype IrohRemoteWorkspaceAvailabilityClassifier,\n\ttype IrohRemoteWorkspaceAvailabilityStatus,\n\ttype IrohRemoteWorkspaceStatus,\n\tparseIrohRemoteWorkspaceSpec,\n\tselectIrohRemoteWorkspace,\n\tupsertIrohRemoteWorkspace,\n} from \"./workspace.ts\";\nexport {\n\ttype HandleIrohRemoteWorkspaceUnregisterRpcCommandOptions,\n\thandleIrohRemoteWorkspaceUnregisterRpcCommand,\n\tIROH_REMOTE_UNREGISTER_WORKSPACE_RPC_TYPE,\n\ttype IrohRemoteWorkspaceMetadataSnapshot,\n\ttype IrohRemoteWorkspaceUnregisterRpcData,\n\ttype IrohRemoteWorkspaceUnregisterRpcResponse,\n\ttype IrohRemoteWorkspaceUnregisterRpcResult,\n} from \"./workspace-rpc.ts\";\nexport {\n\ttype HandleIrohRemoteWorktreeRpcCommandOptions,\n\thandleIrohRemoteWorktreeRpcCommand,\n\tIROH_REMOTE_CREATE_WORKTREE_RPC_TYPE,\n\tIROH_REMOTE_LIST_WORKTREES_RPC_TYPE,\n\tIROH_REMOTE_REMOVE_WORKTREE_RPC_TYPE,\n\tIROH_REMOTE_WORKTREE_RPC_TYPES,\n\ttype IrohRemoteWorktreeRpcBackend,\n\ttype IrohRemoteWorktreeRpcResponse,\n\ttype IrohRemoteWorktreeRpcResult,\n\ttype IrohRemoteWorktreeSummary,\n} from \"./worktree-rpc.ts\";\n"]}
@@ -0,0 +1,25 @@
1
+ export { cloneIrohRemoteRpcGrant, createIrohRemoteExplicitAccess, createIrohRemotePresetAccess, createIrohRemoteRpcGrant, getIrohRemoteAccessPreset, getIrohRemoteRpcCommandCapabilities, getIrohRemoteStreamCapability, getMissingIrohRemoteRpcCapability, hasIrohRemoteRpcCapability, IROH_REMOTE_ACCESS_PRESET_NAMES, IROH_REMOTE_ACCESS_PRESETS, IROH_REMOTE_RPC_CAPABILITIES, IROH_REMOTE_RPC_GRANT_SCHEMA_VERSION, isIrohRemoteAccessPresetName, parseIrohRemoteRpcCapabilities, parseIrohRemoteRpcGrant, } from "./access-grant.js";
2
+ export { IrohRemoteActiveStreamRegistry, } from "./active-stream-registry.js";
3
+ export { IrohRemoteAuditLogger, } from "./audit.js";
4
+ export { authorizeIrohRemoteClient, DEFAULT_IROH_REMOTE_PAIRING_SECRET_TOMBSTONE_RETENTION_MS, findIrohRemoteClient, findIrohRemoteRevokedClient, hashIrohRemotePairingSecret, isIrohRemoteClientAllowedForWorkspace, } from "./authorization.js";
5
+ export { DEFAULT_IROH_REMOTE_CONTROL_TIMEOUT_MS, ensureIrohRemoteControlDirectory, getIrohRemoteControlPath, IROH_REMOTE_PAIR_CONTROL_REQUEST_TYPE, IROH_REMOTE_PAIR_CONTROL_RESPONSE_TYPE, IROH_REMOTE_REVOKE_CONTROL_REQUEST_TYPE, IROH_REMOTE_REVOKE_CONTROL_RESPONSE_TYPE, listenIrohRemoteControlServer, parseIrohRemoteControlRequest, parseIrohRemotePairControlRequest, parseIrohRemotePairControlResponse, parseIrohRemoteRevokeControlRequest, parseIrohRemoteRevokeControlResponse, requestIrohRemoteActiveRevocation, requestIrohRemotePairingTicket, } from "./control.js";
6
+ export { DEFAULT_IROH_REMOTE_DEVICE_LOG_MAX_CONTENT_BYTES, handleIrohRemoteDeviceLogUploadRpcCommand, IROH_REMOTE_DEVICE_LOGS_DIR_SEGMENTS, IROH_REMOTE_UPLOAD_DEVICE_LOGS_RPC_TYPE, } from "./device-log-rpc.js";
7
+ export { DEFAULT_IROH_REMOTE_PAIRING_TICKET_TTL_MS, IrohRemoteClientEngine, IrohRemoteHostEngine, } from "./engine.js";
8
+ export { assertIrohRemoteHandshakeHostIdentity, createIrohRemoteHandshakeFailure, createIrohRemoteHandshakeSuccess, IROH_REMOTE_SESSION_ID_PATTERN, IrohRemoteHandshakeError, isIrohRemoteSessionId, isIrohRemoteWorkspaceName, parseIrohRemoteHandshakeResponse, parseIrohRemoteHandshakeResponseLine, parseIrohRemoteHello, parseIrohRemoteHelloLine, } from "./handshake.js";
9
+ export { DEFAULT_IROH_REMOTE_HANDSHAKE_MAX_LINE_BYTES, DEFAULT_IROH_REMOTE_HANDSHAKE_TIMEOUT_MS, readIrohRemoteHandshakeLine, writeIrohRemoteHandshakeResponse, writeIrohRemoteHello, } from "./handshake-reader.js";
10
+ export { resolveIrohRemoteWorkspaceProjectTrusted, shouldReplaceIrohRemoteIntegratedRuntimeForAuthorization, } from "./host-policy.js";
11
+ export { createIrohRemoteHostMetadata, } from "./metadata.js";
12
+ export { createIrohRemoteOutboundFilteredRpcTransport, IROH_REMOTE_REDACTED_BASH_OUTPUT_PATH, IROH_REMOTE_REDACTED_EXPORT_PATH, IROH_REMOTE_REDACTED_SESSION_FILE, pipeIrohRemoteOutboundJsonlReadable, sanitizeIrohRemoteOutbound, sanitizeIrohRemoteOutboundJsonLine, } from "./outbound-filter.js";
13
+ export { DEFAULT_IROH_REMOTE_ALLOW_TOOLS, getIrohRemoteUnsafeAllowedTools, IROH_REMOTE_ALPN, IROH_REMOTE_CONVERSATION_STREAMS_FEATURE, IROH_REMOTE_HANDSHAKE_TYPE, IROH_REMOTE_HELLO_TYPE, IROH_REMOTE_HOST_FEATURES, IROH_REMOTE_HOST_HANDSHAKE_FAILURE_OUTCOMES, IROH_REMOTE_MULTI_STREAMS_FEATURE, IROH_REMOTE_OUTCOMES, IROH_REMOTE_SESSION_RUNTIME_STATE_FEATURE, IROH_REMOTE_TICKET_PREFIX, IROH_REMOTE_UNSAFE_TOOL_NAMES, IROH_REMOTE_WORKTREE_ID_PATTERN, IROH_REMOTE_WORKTREES_FEATURE, IrohRemoteOutcomeError, isIrohRemoteHostHandshakeFailureOutcome, isIrohRemoteOutcome, isIrohRemoteRelayMode, isIrohRemoteRuntimeToolPolicyWithin, isIrohRemoteWorktreeId, normalizeIrohRemoteAllowTools, parseIrohRemoteAllowTools, resolveIrohRemoteRuntimeToolPolicy, usesDefaultIrohRemoteAllowTools, } from "./protocol.js";
14
+ export { DEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_ATTEMPTS, DEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_DELAY_MS, DEFAULT_IROH_REMOTE_PUSH_RELAY_TIMEOUT_MS, DEFAULT_IROH_REMOTE_PUSH_RELAY_URL, hashIrohRemotePushToken, IrohRemoteInMemoryPushNotificationDeduper, IrohRemotePushNotificationDispatcher, IrohRemotePushRelayHttpClient, IrohRemotePushRelayHttpError, parseRegisterPushTargetArgs, } from "./push.js";
15
+ export { createIrohRemoteTicketQrCode, formatIrohRemoteTicketQrCode, formatIrohRemoteTicketQrCodeTerminal, } from "./qr.js";
16
+ export { createIrohRemoteRpcCapabilityDeniedResponse, createIrohRemoteRpcErrorResponse, getIrohRemoteRpcFilterResult, getStaticIrohRemoteRpcFilterResult, IROH_REMOTE_RPC_CANCELLATION_TYPES, IROH_REMOTE_RPC_PASSTHROUGH_TYPES, serializeIrohRemoteRpcFilterRejection, } from "./rpc-command-filter.js";
17
+ export { createIrohRemoteFilteredRpcTransport, createIrohRemoteRpcTransport, } from "./rpc-transport.js";
18
+ export { createEmptyIrohRemoteHostState, parseIrohRemoteClient, parseIrohRemoteHostState, parseIrohRemoteLiveActivityRegistration, parseIrohRemotePairingSecretTombstone, parseIrohRemotePendingPairingTicket, parseIrohRemotePushTarget, parseIrohRemoteRevokedClient, parseIrohRemoteWorkspace, parseIrohRemoteWorkspaceWorktree, readIrohRemoteHostState, writeIrohRemoteHostState, } from "./state.js";
19
+ export { IROH_REMOTE_WORKSPACE_HAS_WORKTREES_ERROR, IrohRemoteHostStateManager, IrohRemoteWorkspaceHasWorktreesError, isIrohRemoteWorkspaceHasWorktreesError, } from "./state-manager.js";
20
+ export { assertIrohRemoteTicketNotExpired, assertIrohRemoteTicketPayloadHostIdentity, createIrohRemoteSanitizedReconnectTicket, createIrohRemoteSanitizedReconnectTicketPayload, decodeIrohRemoteTicketPayload, encodeIrohRemoteTicketPayload, formatIrohRemoteHostFingerprint, getIrohRemotePairingVerificationDetails, parseIrohRemoteTicketPayload, } from "./ticket.js";
21
+ export { sanitizeIrohRemoteTranscriptText, } from "./transcript-text.js";
22
+ export { getAvailableIrohRemoteWorkspaceNames, getIrohRemoteWorkspaceAvailabilityStatus, getIrohRemoteWorkspaceStatuses, parseIrohRemoteWorkspaceSpec, selectIrohRemoteWorkspace, upsertIrohRemoteWorkspace, } from "./workspace.js";
23
+ export { handleIrohRemoteWorkspaceUnregisterRpcCommand, IROH_REMOTE_UNREGISTER_WORKSPACE_RPC_TYPE, } from "./workspace-rpc.js";
24
+ export { handleIrohRemoteWorktreeRpcCommand, IROH_REMOTE_CREATE_WORKTREE_RPC_TYPE, IROH_REMOTE_LIST_WORKTREES_RPC_TYPE, IROH_REMOTE_REMOVE_WORKTREE_RPC_TYPE, IROH_REMOTE_WORKTREE_RPC_TYPES, } from "./worktree-rpc.js";
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/remote/iroh/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n\tcloneIrohRemoteRpcGrant,\n\tcreateIrohRemoteExplicitAccess,\n\tcreateIrohRemotePresetAccess,\n\tcreateIrohRemoteRpcGrant,\n\tgetIrohRemoteAccessPreset,\n\tgetIrohRemoteRpcCommandCapabilities,\n\tgetIrohRemoteStreamCapability,\n\tgetMissingIrohRemoteRpcCapability,\n\thasIrohRemoteRpcCapability,\n\tIROH_REMOTE_ACCESS_PRESET_NAMES,\n\tIROH_REMOTE_ACCESS_PRESETS,\n\tIROH_REMOTE_RPC_CAPABILITIES,\n\tIROH_REMOTE_RPC_GRANT_SCHEMA_VERSION,\n\ttype IrohRemoteAccessPreset,\n\ttype IrohRemoteAccessPresetName,\n\ttype IrohRemoteRpcCapability,\n\ttype IrohRemoteRpcGrant,\n\tisIrohRemoteAccessPresetName,\n\tparseIrohRemoteRpcCapabilities,\n\tparseIrohRemoteRpcGrant,\n} from \"./access-grant.ts\";\nexport {\n\ttype IrohRemoteActiveStreamEntry,\n\tIrohRemoteActiveStreamRegistry,\n} from \"./active-stream-registry.ts\";\nexport {\n\ttype IrohRemoteAuditEvent,\n\ttype IrohRemoteAuditEventInput,\n\tIrohRemoteAuditLogger,\n\ttype IrohRemoteAuditLoggerOptions,\n\ttype IrohRemoteAuditSink,\n} from \"./audit.ts\";\nexport {\n\ttype AuthorizeIrohRemoteClientOptions,\n\tauthorizeIrohRemoteClient,\n\tDEFAULT_IROH_REMOTE_PAIRING_SECRET_TOMBSTONE_RETENTION_MS,\n\tfindIrohRemoteClient,\n\tfindIrohRemoteRevokedClient,\n\thashIrohRemotePairingSecret,\n\ttype IrohRemoteClientAuthorizationFailure,\n\ttype IrohRemoteClientAuthorizationResult,\n\ttype IrohRemoteClientAuthorizationSuccess,\n\tisIrohRemoteClientAllowedForWorkspace,\n} from \"./authorization.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_CONTROL_TIMEOUT_MS,\n\tensureIrohRemoteControlDirectory,\n\tgetIrohRemoteControlPath,\n\tIROH_REMOTE_PAIR_CONTROL_REQUEST_TYPE,\n\tIROH_REMOTE_PAIR_CONTROL_RESPONSE_TYPE,\n\tIROH_REMOTE_REVOKE_CONTROL_REQUEST_TYPE,\n\tIROH_REMOTE_REVOKE_CONTROL_RESPONSE_TYPE,\n\ttype IrohRemoteControlClientOptions,\n\ttype IrohRemoteControlRequest,\n\ttype IrohRemoteControlServerListenOptions,\n\ttype IrohRemotePairControlClientOptions,\n\ttype IrohRemotePairControlRequest,\n\ttype IrohRemotePairControlResponse,\n\ttype IrohRemoteRevokeControlClientOptions,\n\ttype IrohRemoteRevokeControlRequest,\n\ttype IrohRemoteRevokeControlResponse,\n\ttype IrohRemoteUnsafeApproval,\n\tlistenIrohRemoteControlServer,\n\tparseIrohRemoteControlRequest,\n\tparseIrohRemotePairControlRequest,\n\tparseIrohRemotePairControlResponse,\n\tparseIrohRemoteRevokeControlRequest,\n\tparseIrohRemoteRevokeControlResponse,\n\trequestIrohRemoteActiveRevocation,\n\trequestIrohRemotePairingTicket,\n} from \"./control.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_DEVICE_LOG_MAX_CONTENT_BYTES,\n\ttype HandleIrohRemoteDeviceLogUploadRpcCommandOptions,\n\thandleIrohRemoteDeviceLogUploadRpcCommand,\n\tIROH_REMOTE_DEVICE_LOGS_DIR_SEGMENTS,\n\tIROH_REMOTE_UPLOAD_DEVICE_LOGS_RPC_TYPE,\n\ttype IrohRemoteDeviceLogUploadRpcData,\n\ttype IrohRemoteDeviceLogUploadRpcResponse,\n} from \"./device-log-rpc.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_PAIRING_TICKET_TTL_MS,\n\tIrohRemoteClientEngine,\n\ttype IrohRemoteClientEngineOptions,\n\ttype IrohRemoteClientHandshakeResponseResult,\n\ttype IrohRemoteClientReadHandshakeResponseOptions,\n\ttype IrohRemoteClientTicketHello,\n\tIrohRemoteHostEngine,\n\ttype IrohRemoteHostEngineOptions,\n\ttype IrohRemoteHostHandshakeResult,\n\ttype IrohRemoteHostPairOptions,\n\ttype IrohRemoteHostReadHandshakeOptions,\n\ttype IrohRemotePairingTicket,\n} from \"./engine.ts\";\nexport {\n\tassertIrohRemoteHandshakeHostIdentity,\n\tcreateIrohRemoteHandshakeFailure,\n\tcreateIrohRemoteHandshakeSuccess,\n\tIROH_REMOTE_SESSION_ID_PATTERN,\n\ttype IrohRemoteConversationHandshakeMetadata,\n\ttype IrohRemoteConversationSelection,\n\ttype IrohRemoteConversationTarget,\n\tIrohRemoteHandshakeError,\n\ttype IrohRemoteHandshakeFailure,\n\ttype IrohRemoteHandshakeResponse,\n\ttype IrohRemoteHandshakeSuccess,\n\ttype IrohRemoteHello,\n\ttype IrohRemoteHelloMode,\n\ttype IrohRemoteHostHandshakeMetadata,\n\ttype IrohRemoteWorkspaceDiscoveryTarget,\n\ttype IrohRemoteWorkspaceManagementTarget,\n\tisIrohRemoteSessionId,\n\tisIrohRemoteWorkspaceName,\n\tparseIrohRemoteHandshakeResponse,\n\tparseIrohRemoteHandshakeResponseLine,\n\tparseIrohRemoteHello,\n\tparseIrohRemoteHelloLine,\n} from \"./handshake.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_HANDSHAKE_MAX_LINE_BYTES,\n\tDEFAULT_IROH_REMOTE_HANDSHAKE_TIMEOUT_MS,\n\ttype IrohRemoteHandshakeLineReadOptions,\n\ttype IrohRemoteHandshakeLineReadResult,\n\treadIrohRemoteHandshakeLine,\n\twriteIrohRemoteHandshakeResponse,\n\twriteIrohRemoteHello,\n} from \"./handshake-reader.ts\";\nexport {\n\ttype IrohRemoteWorkspaceTrustStore,\n\ttype ResolveIrohRemoteWorkspaceProjectTrustOptions,\n\tresolveIrohRemoteWorkspaceProjectTrusted,\n\tshouldReplaceIrohRemoteIntegratedRuntimeForAuthorization,\n} from \"./host-policy.ts\";\nexport {\n\ttype CreateIrohRemoteHostMetadataOptions,\n\tcreateIrohRemoteHostMetadata,\n\ttype IrohRemoteHostMetadata,\n} from \"./metadata.ts\";\nexport {\n\tcreateIrohRemoteOutboundFilteredRpcTransport,\n\tIROH_REMOTE_REDACTED_BASH_OUTPUT_PATH,\n\tIROH_REMOTE_REDACTED_EXPORT_PATH,\n\tIROH_REMOTE_REDACTED_SESSION_FILE,\n\ttype IrohRemoteOutboundFilterOptions,\n\ttype IrohRemoteOutboundJsonlReadablePipeOptions,\n\ttype IrohRemoteOutboundSanitizerOptions,\n\ttype IrohRemoteOutboundValueDecorator,\n\tpipeIrohRemoteOutboundJsonlReadable,\n\tsanitizeIrohRemoteOutbound,\n\tsanitizeIrohRemoteOutboundJsonLine,\n} from \"./outbound-filter.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_ALLOW_TOOLS,\n\tgetIrohRemoteUnsafeAllowedTools,\n\tIROH_REMOTE_ALPN,\n\tIROH_REMOTE_CONVERSATION_STREAMS_FEATURE,\n\tIROH_REMOTE_HANDSHAKE_TYPE,\n\tIROH_REMOTE_HELLO_TYPE,\n\tIROH_REMOTE_HOST_FEATURES,\n\tIROH_REMOTE_HOST_HANDSHAKE_FAILURE_OUTCOMES,\n\tIROH_REMOTE_MULTI_STREAMS_FEATURE,\n\tIROH_REMOTE_OUTCOMES,\n\tIROH_REMOTE_SESSION_RUNTIME_STATE_FEATURE,\n\tIROH_REMOTE_TICKET_PREFIX,\n\tIROH_REMOTE_UNSAFE_TOOL_NAMES,\n\tIROH_REMOTE_WORKTREE_ID_PATTERN,\n\tIROH_REMOTE_WORKTREES_FEATURE,\n\ttype IrohRemoteHostFeature,\n\ttype IrohRemoteHostHandshakeFailureOutcome,\n\ttype IrohRemoteOutcome,\n\tIrohRemoteOutcomeError,\n\ttype IrohRemoteRelayMode,\n\ttype IrohRemoteRuntimeToolPolicy,\n\tisIrohRemoteHostHandshakeFailureOutcome,\n\tisIrohRemoteOutcome,\n\tisIrohRemoteRelayMode,\n\tisIrohRemoteRuntimeToolPolicyWithin,\n\tisIrohRemoteWorktreeId,\n\tnormalizeIrohRemoteAllowTools,\n\tparseIrohRemoteAllowTools,\n\ttype ResolveIrohRemoteRuntimeToolPolicyOptions,\n\tresolveIrohRemoteRuntimeToolPolicy,\n\tusesDefaultIrohRemoteAllowTools,\n} from \"./protocol.ts\";\nexport {\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_ATTEMPTS,\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_RETRY_DELAY_MS,\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_TIMEOUT_MS,\n\tDEFAULT_IROH_REMOTE_PUSH_RELAY_URL,\n\thashIrohRemotePushToken,\n\tIrohRemoteInMemoryPushNotificationDeduper,\n\ttype IrohRemoteLiveActivityContentState,\n\ttype IrohRemoteLiveActivityToolGlyph,\n\ttype IrohRemoteLiveActivityUpdateIntent,\n\ttype IrohRemotePushNotificationDeduper,\n\ttype IrohRemotePushNotificationDelivery,\n\ttype IrohRemotePushNotificationDeliveryStatus,\n\tIrohRemotePushNotificationDispatcher,\n\ttype IrohRemotePushNotificationDispatcherOptions,\n\ttype IrohRemotePushNotificationIntent,\n\ttype IrohRemotePushRelayClient,\n\tIrohRemotePushRelayHttpClient,\n\ttype IrohRemotePushRelayHttpClientOptions,\n\tIrohRemotePushRelayHttpError,\n\ttype IrohRemotePushRelayLiveActivityRequest,\n\ttype IrohRemotePushRelayNotificationRequest,\n\ttype IrohRemotePushRelayNotificationResult,\n\ttype IrohRemotePushTargetRegistrationRequest,\n\ttype IrohRemotePushTargetRegistrationResult,\n\tparseRegisterPushTargetArgs,\n} from \"./push.ts\";\nexport {\n\tcreateIrohRemoteTicketQrCode,\n\tformatIrohRemoteTicketQrCode,\n\tformatIrohRemoteTicketQrCodeTerminal,\n\ttype IrohRemoteTicketQrCode,\n\ttype IrohRemoteTicketQrCodeFormatOptions,\n} from \"./qr.ts\";\nexport {\n\tcreateIrohRemoteRpcCapabilityDeniedResponse,\n\tcreateIrohRemoteRpcErrorResponse,\n\tgetIrohRemoteRpcFilterResult,\n\tgetStaticIrohRemoteRpcFilterResult,\n\tIROH_REMOTE_RPC_CANCELLATION_TYPES,\n\tIROH_REMOTE_RPC_PASSTHROUGH_TYPES,\n\ttype IrohRemoteRpcCapabilityDeniedError,\n\ttype IrohRemoteRpcCapabilityDeniedResponse,\n\ttype IrohRemoteRpcCommand,\n\ttype IrohRemoteRpcErrorResponse,\n\ttype IrohRemoteRpcFilterResult,\n\tserializeIrohRemoteRpcFilterRejection,\n} from \"./rpc-command-filter.ts\";\nexport {\n\tcreateIrohRemoteFilteredRpcTransport,\n\tcreateIrohRemoteRpcTransport,\n\ttype IrohRemoteFilteredRpcTransportOptions,\n} from \"./rpc-transport.ts\";\nexport {\n\tcreateEmptyIrohRemoteHostState,\n\ttype IrohRemoteClient,\n\ttype IrohRemoteGrantedClient,\n\ttype IrohRemoteGrantedPendingPairingTicket,\n\ttype IrohRemoteGrantedRevokedClient,\n\ttype IrohRemoteHostState,\n\ttype IrohRemoteLiveActivityRegistration,\n\ttype IrohRemoteLiveActivityTarget,\n\ttype IrohRemotePairingSecretTombstone,\n\ttype IrohRemotePairingSecretTombstoneOutcome,\n\ttype IrohRemotePendingPairingTicket,\n\ttype IrohRemotePushTarget,\n\ttype IrohRemotePushTargetPlatform,\n\ttype IrohRemotePushTargetProvider,\n\ttype IrohRemotePushTokenEnvironment,\n\ttype IrohRemoteRevokedClient,\n\ttype IrohRemoteWorkspace,\n\ttype IrohRemoteWorkspaceWorktree,\n\tparseIrohRemoteClient,\n\tparseIrohRemoteHostState,\n\tparseIrohRemoteLiveActivityRegistration,\n\tparseIrohRemotePairingSecretTombstone,\n\tparseIrohRemotePendingPairingTicket,\n\tparseIrohRemotePushTarget,\n\tparseIrohRemoteRevokedClient,\n\tparseIrohRemoteWorkspace,\n\tparseIrohRemoteWorkspaceWorktree,\n\treadIrohRemoteHostState,\n\twriteIrohRemoteHostState,\n} from \"./state.ts\";\nexport {\n\tIROH_REMOTE_WORKSPACE_HAS_WORKTREES_ERROR,\n\ttype IrohRemoteClientAccessUpdateResult,\n\ttype IrohRemoteClientRePairApprovalResult,\n\ttype IrohRemoteClientRevocationResult,\n\tIrohRemoteHostStateManager,\n\ttype IrohRemoteHostStateManagerOptions,\n\ttype IrohRemoteLiveActivityDeliveryChannelLookup,\n\ttype IrohRemoteLiveActivityRegistrationResult,\n\tIrohRemoteWorkspaceHasWorktreesError,\n\tisIrohRemoteWorkspaceHasWorktreesError,\n} from \"./state-manager.ts\";\nexport {\n\tassertIrohRemoteTicketNotExpired,\n\tassertIrohRemoteTicketPayloadHostIdentity,\n\tcreateIrohRemoteSanitizedReconnectTicket,\n\tcreateIrohRemoteSanitizedReconnectTicketPayload,\n\tdecodeIrohRemoteTicketPayload,\n\tencodeIrohRemoteTicketPayload,\n\tformatIrohRemoteHostFingerprint,\n\tgetIrohRemotePairingVerificationDetails,\n\ttype IrohRemotePairingVerificationDetails,\n\ttype IrohRemoteSanitizedReconnectTicketPayload,\n\ttype IrohRemoteTicketPayload,\n\tparseIrohRemoteTicketPayload,\n} from \"./ticket.ts\";\nexport {\n\ttype IrohRemoteSanitizedTranscriptText,\n\ttype IrohRemoteTranscriptTextLayout,\n\tsanitizeIrohRemoteTranscriptText,\n} from \"./transcript-text.ts\";\nexport {\n\tgetAvailableIrohRemoteWorkspaceNames,\n\tgetIrohRemoteWorkspaceAvailabilityStatus,\n\tgetIrohRemoteWorkspaceStatuses,\n\ttype IrohRemoteWorkspaceAvailabilityClassifier,\n\ttype IrohRemoteWorkspaceAvailabilityStatus,\n\ttype IrohRemoteWorkspaceStatus,\n\tparseIrohRemoteWorkspaceSpec,\n\tselectIrohRemoteWorkspace,\n\tupsertIrohRemoteWorkspace,\n} from \"./workspace.ts\";\nexport {\n\ttype HandleIrohRemoteWorkspaceUnregisterRpcCommandOptions,\n\thandleIrohRemoteWorkspaceUnregisterRpcCommand,\n\tIROH_REMOTE_UNREGISTER_WORKSPACE_RPC_TYPE,\n\ttype IrohRemoteWorkspaceMetadataSnapshot,\n\ttype IrohRemoteWorkspaceUnregisterRpcData,\n\ttype IrohRemoteWorkspaceUnregisterRpcResponse,\n\ttype IrohRemoteWorkspaceUnregisterRpcResult,\n} from \"./workspace-rpc.ts\";\nexport {\n\ttype HandleIrohRemoteWorktreeRpcCommandOptions,\n\thandleIrohRemoteWorktreeRpcCommand,\n\tIROH_REMOTE_CREATE_WORKTREE_RPC_TYPE,\n\tIROH_REMOTE_LIST_WORKTREES_RPC_TYPE,\n\tIROH_REMOTE_REMOVE_WORKTREE_RPC_TYPE,\n\tIROH_REMOTE_WORKTREE_RPC_TYPES,\n\ttype IrohRemoteWorktreeRpcBackend,\n\ttype IrohRemoteWorktreeRpcResponse,\n\ttype IrohRemoteWorktreeRpcResult,\n\ttype IrohRemoteWorktreeSummary,\n} from \"./worktree-rpc.ts\";\n"]}
@@ -0,0 +1,28 @@
1
+ import type { IrohRemoteClientAuthorizationSuccess } from "./authorization.ts";
2
+ import { type IrohRemoteRelayMode } from "./protocol.ts";
3
+ import type { IrohRemoteWorkspaceStatus } from "./workspace.ts";
4
+ export interface IrohRemoteHostMetadata {
5
+ workspace: string;
6
+ workspaceNames: string[];
7
+ workspaces: IrohRemoteWorkspaceStatus[];
8
+ features: string[];
9
+ hostNodeId?: string;
10
+ relayMode?: IrohRemoteRelayMode;
11
+ /** Current relay fleet; lets clients refresh their relay list without re-pairing. */
12
+ relayUrls?: string[];
13
+ hostName?: string;
14
+ userName?: string;
15
+ cwd: string;
16
+ }
17
+ export interface CreateIrohRemoteHostMetadataOptions {
18
+ authorization: IrohRemoteClientAuthorizationSuccess;
19
+ hostNodeId?: string;
20
+ relayMode?: IrohRemoteRelayMode;
21
+ relayUrls?: string[];
22
+ hostName?: string;
23
+ userName?: string;
24
+ cwd?: string;
25
+ features?: string[];
26
+ }
27
+ export declare function createIrohRemoteHostMetadata(options: CreateIrohRemoteHostMetadataOptions): IrohRemoteHostMetadata;
28
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../../src/core/remote/iroh/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,sBAAsB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,mCAAmC;IACnD,aAAa,EAAE,oCAAoC,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,mCAAmC,GAAG,sBAAsB,CAajH","sourcesContent":["import type { IrohRemoteClientAuthorizationSuccess } from \"./authorization.ts\";\nimport { IROH_REMOTE_HOST_FEATURES, type IrohRemoteRelayMode } from \"./protocol.ts\";\nimport type { IrohRemoteWorkspaceStatus } from \"./workspace.ts\";\n\nexport interface IrohRemoteHostMetadata {\n\tworkspace: string;\n\tworkspaceNames: string[];\n\tworkspaces: IrohRemoteWorkspaceStatus[];\n\tfeatures: string[];\n\thostNodeId?: string;\n\trelayMode?: IrohRemoteRelayMode;\n\t/** Current relay fleet; lets clients refresh their relay list without re-pairing. */\n\trelayUrls?: string[];\n\thostName?: string;\n\tuserName?: string;\n\tcwd: string;\n}\n\nexport interface CreateIrohRemoteHostMetadataOptions {\n\tauthorization: IrohRemoteClientAuthorizationSuccess;\n\thostNodeId?: string;\n\trelayMode?: IrohRemoteRelayMode;\n\trelayUrls?: string[];\n\thostName?: string;\n\tuserName?: string;\n\tcwd?: string;\n\tfeatures?: string[];\n}\n\nexport function createIrohRemoteHostMetadata(options: CreateIrohRemoteHostMetadataOptions): IrohRemoteHostMetadata {\n\treturn {\n\t\tworkspace: options.authorization.workspace.name,\n\t\tworkspaceNames: [...options.authorization.workspaceNames],\n\t\tworkspaces: options.authorization.workspaces.map((workspace) => ({ ...workspace })),\n\t\tfeatures: [...(options.features ?? IROH_REMOTE_HOST_FEATURES)],\n\t\thostNodeId: options.hostNodeId,\n\t\trelayMode: options.relayMode,\n\t\trelayUrls: options.relayUrls,\n\t\thostName: options.hostName,\n\t\tuserName: options.userName,\n\t\tcwd: options.cwd ?? \"/workspace\",\n\t};\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { IROH_REMOTE_HOST_FEATURES } from "./protocol.js";
2
+ export function createIrohRemoteHostMetadata(options) {
3
+ return {
4
+ workspace: options.authorization.workspace.name,
5
+ workspaceNames: [...options.authorization.workspaceNames],
6
+ workspaces: options.authorization.workspaces.map((workspace) => ({ ...workspace })),
7
+ features: [...(options.features ?? IROH_REMOTE_HOST_FEATURES)],
8
+ hostNodeId: options.hostNodeId,
9
+ relayMode: options.relayMode,
10
+ relayUrls: options.relayUrls,
11
+ hostName: options.hostName,
12
+ userName: options.userName,
13
+ cwd: options.cwd ?? "/workspace",
14
+ };
15
+ }
16
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../../src/core/remote/iroh/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAA4B,MAAM,eAAe,CAAC;AA4BpF,MAAM,UAAU,4BAA4B,CAAC,OAA4C,EAA0B;IAClH,OAAO;QACN,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI;QAC/C,cAAc,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC;QACzD,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QACnF,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,yBAAyB,CAAC,CAAC;QAC9D,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,YAAY;KAChC,CAAC;AAAA,CACF","sourcesContent":["import type { IrohRemoteClientAuthorizationSuccess } from \"./authorization.ts\";\nimport { IROH_REMOTE_HOST_FEATURES, type IrohRemoteRelayMode } from \"./protocol.ts\";\nimport type { IrohRemoteWorkspaceStatus } from \"./workspace.ts\";\n\nexport interface IrohRemoteHostMetadata {\n\tworkspace: string;\n\tworkspaceNames: string[];\n\tworkspaces: IrohRemoteWorkspaceStatus[];\n\tfeatures: string[];\n\thostNodeId?: string;\n\trelayMode?: IrohRemoteRelayMode;\n\t/** Current relay fleet; lets clients refresh their relay list without re-pairing. */\n\trelayUrls?: string[];\n\thostName?: string;\n\tuserName?: string;\n\tcwd: string;\n}\n\nexport interface CreateIrohRemoteHostMetadataOptions {\n\tauthorization: IrohRemoteClientAuthorizationSuccess;\n\thostNodeId?: string;\n\trelayMode?: IrohRemoteRelayMode;\n\trelayUrls?: string[];\n\thostName?: string;\n\tuserName?: string;\n\tcwd?: string;\n\tfeatures?: string[];\n}\n\nexport function createIrohRemoteHostMetadata(options: CreateIrohRemoteHostMetadataOptions): IrohRemoteHostMetadata {\n\treturn {\n\t\tworkspace: options.authorization.workspace.name,\n\t\tworkspaceNames: [...options.authorization.workspaceNames],\n\t\tworkspaces: options.authorization.workspaces.map((workspace) => ({ ...workspace })),\n\t\tfeatures: [...(options.features ?? IROH_REMOTE_HOST_FEATURES)],\n\t\thostNodeId: options.hostNodeId,\n\t\trelayMode: options.relayMode,\n\t\trelayUrls: options.relayUrls,\n\t\thostName: options.hostName,\n\t\tuserName: options.userName,\n\t\tcwd: options.cwd ?? \"/workspace\",\n\t};\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { RpcTransport } from "../../rpc/index.ts";
2
+ export declare const IROH_REMOTE_REDACTED_BASH_OUTPUT_PATH = "[redacted bash output path]";
3
+ export declare const IROH_REMOTE_REDACTED_EXPORT_PATH = "[redacted export path]";
4
+ export declare const IROH_REMOTE_REDACTED_SESSION_FILE = "[redacted session file]";
5
+ export interface IrohRemoteOutboundFilterOptions {
6
+ decorate?: IrohRemoteOutboundValueDecorator;
7
+ remoteWorkspacePath?: string;
8
+ transport: RpcTransport;
9
+ workspacePath: string;
10
+ /** Extra roots (e.g. a worktree's parent checkout) redacted to remoteWorkspacePath. */
11
+ additionalRedactedPaths?: string[];
12
+ }
13
+ export interface IrohRemoteOutboundSanitizerOptions {
14
+ decorate?: IrohRemoteOutboundValueDecorator;
15
+ remoteWorkspacePath?: string;
16
+ workspacePath: string;
17
+ /** Extra roots (e.g. a worktree's parent checkout) redacted to remoteWorkspacePath. */
18
+ additionalRedactedPaths?: string[];
19
+ }
20
+ export interface IrohRemoteOutboundJsonlReadablePipeOptions extends IrohRemoteOutboundSanitizerOptions {
21
+ onLine?: (line: string) => void;
22
+ writeLine: (line: string) => Promise<void> | void;
23
+ }
24
+ export type IrohRemoteOutboundValueDecorator = (value: object) => object;
25
+ export declare function createIrohRemoteOutboundFilteredRpcTransport(options: IrohRemoteOutboundFilterOptions): RpcTransport;
26
+ export declare function sanitizeIrohRemoteOutbound(value: object, options: IrohRemoteOutboundSanitizerOptions): object;
27
+ export declare function sanitizeIrohRemoteOutboundJsonLine(line: string, options: IrohRemoteOutboundSanitizerOptions): string;
28
+ export declare function pipeIrohRemoteOutboundJsonlReadable(readable: AsyncIterable<string | Uint8Array>, options: IrohRemoteOutboundJsonlReadablePipeOptions): Promise<void>;
29
+ //# sourceMappingURL=outbound-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound-filter.d.ts","sourceRoot":"","sources":["../../../../src/core/remote/iroh/outbound-filter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAExF,eAAO,MAAM,qCAAqC,gCAAgC,CAAC;AACnF,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AACzE,eAAO,MAAM,iCAAiC,4BAA4B,CAAC;AAc3E,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,YAAY,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,kCAAkC;IAClD,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,0CAA2C,SAAQ,kCAAkC;IACrG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD;AAQD,MAAM,MAAM,gCAAgC,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAIzE,wBAAgB,4CAA4C,CAAC,OAAO,EAAE,+BAA+B,GAAG,YAAY,CA2BnH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,GAAG,MAAM,CAK7G;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,GAAG,MAAM,CAgBpH;AAED,wBAAsB,mCAAmC,CACxD,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,EAC5C,OAAO,EAAE,0CAA0C,GACjD,OAAO,CAAC,IAAI,CAAC,CAef","sourcesContent":["import { isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { TextDecoder } from \"node:util\";\nimport type { RpcCloseHandler, RpcLineHandler, RpcTransport } from \"../../rpc/index.ts\";\n\nexport const IROH_REMOTE_REDACTED_BASH_OUTPUT_PATH = \"[redacted bash output path]\";\nexport const IROH_REMOTE_REDACTED_EXPORT_PATH = \"[redacted export path]\";\nexport const IROH_REMOTE_REDACTED_SESSION_FILE = \"[redacted session file]\";\n\nconst OMIT_REMOTE_PATH_FIELDS = new Set([\"fullOutputPath\", \"sessionFile\"]);\nconst STRICT_REMOTE_PATH_FIELDS = new Set([\n\t\"cwd\",\n\t\"exportPath\",\n\t\"extensionPath\",\n\t\"filePath\",\n\t\"outputPath\",\n\t\"parentSession\",\n\t\"path\",\n\t\"sessionPath\",\n\t\"traceFile\",\n]);\nexport interface IrohRemoteOutboundFilterOptions {\n\tdecorate?: IrohRemoteOutboundValueDecorator;\n\tremoteWorkspacePath?: string;\n\ttransport: RpcTransport;\n\tworkspacePath: string;\n\t/** Extra roots (e.g. a worktree's parent checkout) redacted to remoteWorkspacePath. */\n\tadditionalRedactedPaths?: string[];\n}\n\nexport interface IrohRemoteOutboundSanitizerOptions {\n\tdecorate?: IrohRemoteOutboundValueDecorator;\n\tremoteWorkspacePath?: string;\n\tworkspacePath: string;\n\t/** Extra roots (e.g. a worktree's parent checkout) redacted to remoteWorkspacePath. */\n\tadditionalRedactedPaths?: string[];\n}\n\nexport interface IrohRemoteOutboundJsonlReadablePipeOptions extends IrohRemoteOutboundSanitizerOptions {\n\tonLine?: (line: string) => void;\n\twriteLine: (line: string) => Promise<void> | void;\n}\n\ninterface IrohRemoteOutboundSanitizerContext {\n\tremoteWorkspacePath: string;\n\tworkspacePath: string;\n\tworkspacePathVariants: string[];\n}\n\nexport type IrohRemoteOutboundValueDecorator = (value: object) => object;\n\ntype PathContinuationMode = \"text\" | \"delimited\";\n\nexport function createIrohRemoteOutboundFilteredRpcTransport(options: IrohRemoteOutboundFilterOptions): RpcTransport {\n\tconst sanitizerOptions: IrohRemoteOutboundSanitizerOptions = {\n\t\tdecorate: options.decorate,\n\t\tremoteWorkspacePath: options.remoteWorkspacePath,\n\t\tworkspacePath: options.workspacePath,\n\t\tadditionalRedactedPaths: options.additionalRedactedPaths,\n\t};\n\treturn {\n\t\twrite(value) {\n\t\t\treturn options.transport.write(sanitizeIrohRemoteOutbound(value, sanitizerOptions));\n\t\t},\n\t\tonLine(handler: RpcLineHandler): () => void {\n\t\t\treturn options.transport.onLine(handler);\n\t\t},\n\t\tonClose(handler: RpcCloseHandler): () => void {\n\t\t\treturn options.transport.onClose?.(handler) ?? (() => {});\n\t\t},\n\t\tasync waitForBackpressure() {\n\t\t\tawait options.transport.waitForBackpressure?.();\n\t\t},\n\t\tasync flush() {\n\t\t\tawait options.transport.flush?.();\n\t\t},\n\t\tclose() {\n\t\t\treturn options.transport.close();\n\t\t},\n\t};\n}\n\nexport function sanitizeIrohRemoteOutbound(value: object, options: IrohRemoteOutboundSanitizerOptions): object {\n\tconst context = createSanitizerContext(options);\n\tconst decorated = options.decorate ? options.decorate(value) : value;\n\tconst sanitized = sanitizeValue(decorated, context, undefined);\n\treturn isRecord(sanitized) || Array.isArray(sanitized) ? sanitized : {};\n}\n\nexport function sanitizeIrohRemoteOutboundJsonLine(line: string, options: IrohRemoteOutboundSanitizerOptions): string {\n\tconst context = createSanitizerContext(options);\n\tconst hasTrailingNewline = line.endsWith(\"\\n\");\n\tconst rawLine = hasTrailingNewline ? line.slice(0, -1) : line;\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(rawLine);\n\t} catch {\n\t\treturn `${sanitizeRemoteText(rawLine, context)}${hasTrailingNewline ? \"\\n\" : \"\"}`;\n\t}\n\tif (!isRecord(parsed) && !Array.isArray(parsed)) {\n\t\treturn `${sanitizeRemoteText(rawLine, context)}${hasTrailingNewline ? \"\\n\" : \"\"}`;\n\t}\n\tconst decorated = options.decorate ? options.decorate(parsed) : parsed;\n\tconst sanitized = sanitizeValue(decorated, context, undefined);\n\treturn `${JSON.stringify(sanitized)}${hasTrailingNewline ? \"\\n\" : \"\"}`;\n}\n\nexport async function pipeIrohRemoteOutboundJsonlReadable(\n\treadable: AsyncIterable<string | Uint8Array>,\n\toptions: IrohRemoteOutboundJsonlReadablePipeOptions,\n): Promise<void> {\n\tconst decoder = new TextDecoder();\n\tlet buffer = \"\";\n\n\tfor await (const chunk of readable) {\n\t\tbuffer += typeof chunk === \"string\" ? chunk : decoder.decode(chunk, { stream: true });\n\t\tawait flushBufferedLines(buffer, options, (rest) => {\n\t\t\tbuffer = rest;\n\t\t});\n\t}\n\n\tbuffer += decoder.decode();\n\tif (buffer.length > 0) {\n\t\tawait writeSanitizedJsonLine(buffer, options);\n\t}\n}\n\nfunction createSanitizerContext(options: IrohRemoteOutboundSanitizerOptions): IrohRemoteOutboundSanitizerContext {\n\tconst resolvedWorkspacePath = resolve(options.workspacePath);\n\t// Compare and redact in a Unicode-normalization-insensitive way: macOS surfaces\n\t// on-disk paths in NFD while a configured root may be NFC (or vice versa), and a\n\t// byte-exact compare would let a differently-composed form of an in-workspace path\n\t// bypass redaction and leak the real host path. Canonicalize the compared root to\n\t// NFC, and match embedded occurrences against both NFC and NFD forms.\n\tconst workspacePath = resolvedWorkspacePath.normalize(\"NFC\");\n\t// Additional roots (worktree parent checkout, worktrees root) fold into the\n\t// same variant list: every occurrence maps to remoteWorkspacePath.\n\tconst redactedRoots = [\n\t\tresolvedWorkspacePath,\n\t\t...(options.additionalRedactedPaths ?? []).map((value) => resolve(value)),\n\t];\n\tconst workspacePathVariants = [\n\t\t...new Set(\n\t\t\tredactedRoots\n\t\t\t\t.flatMap((root) => [root, toPosixPath(root), toWindowsPath(root)])\n\t\t\t\t.flatMap((value) => [value.normalize(\"NFC\"), value.normalize(\"NFD\")]),\n\t\t),\n\t]\n\t\t.filter((value) => value.length > 0)\n\t\t.sort((left, right) => right.length - left.length);\n\treturn {\n\t\tremoteWorkspacePath: options.remoteWorkspacePath ?? \"/workspace\",\n\t\tworkspacePath,\n\t\tworkspacePathVariants,\n\t};\n}\n\nfunction sanitizeValue(\n\tvalue: unknown,\n\tcontext: IrohRemoteOutboundSanitizerContext,\n\tfieldName: string | undefined,\n): unknown {\n\tif (typeof value === \"string\") {\n\t\treturn shouldTreatAsPathField(fieldName) ? sanitizePathField(value, context) : sanitizeRemoteText(value, context);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.map((entry) => sanitizeValue(entry, context, fieldName));\n\t}\n\tif (!isRecord(value)) {\n\t\treturn value;\n\t}\n\n\tconst sanitized: Record<string, unknown> = Object.create(null);\n\tfor (const [key, entry] of Object.entries(value)) {\n\t\tif (OMIT_REMOTE_PATH_FIELDS.has(key)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst sanitizedEntry = shouldPreserveOpaqueStringEntry(value, key, entry)\n\t\t\t? entry\n\t\t\t: sanitizeValue(entry, context, key);\n\t\tif (sanitizedEntry !== undefined) {\n\t\t\tsetSanitizedObjectEntry(sanitized, sanitizeObjectKey(key, context), sanitizedEntry);\n\t\t}\n\t}\n\treturn sanitized;\n}\n\nfunction shouldPreserveOpaqueStringEntry(\n\trecord: Record<string, unknown>,\n\tkey: string,\n\tvalue: unknown,\n): value is string {\n\tif (typeof value !== \"string\") {\n\t\treturn false;\n\t}\n\treturn (\n\t\tkey === \"id\" ||\n\t\t(key === \"data\" && isImageContentRecord(record)) ||\n\t\t(key === \"textSignature\" && isTypedContentRecord(record, \"text\")) ||\n\t\t(key === \"thinkingSignature\" && isTypedContentRecord(record, \"thinking\")) ||\n\t\t(key === \"thoughtSignature\" && isTypedContentRecord(record, \"toolCall\"))\n\t);\n}\n\nfunction isImageContentRecord(record: Record<string, unknown>): boolean {\n\treturn record.type === \"image\" && typeof record.mimeType === \"string\" && record.mimeType.startsWith(\"image/\");\n}\n\nfunction isTypedContentRecord(record: Record<string, unknown>, type: string): boolean {\n\treturn record.type === type;\n}\n\nasync function flushBufferedLines(\n\tbuffer: string,\n\toptions: IrohRemoteOutboundJsonlReadablePipeOptions,\n\tsetRest: (rest: string) => void,\n): Promise<void> {\n\tlet rest = buffer;\n\twhile (true) {\n\t\tconst newlineIndex = rest.indexOf(\"\\n\");\n\t\tif (newlineIndex === -1) {\n\t\t\tsetRest(rest);\n\t\t\treturn;\n\t\t}\n\t\tconst line = rest.slice(0, newlineIndex + 1);\n\t\trest = rest.slice(newlineIndex + 1);\n\t\tawait writeSanitizedJsonLine(line, options);\n\t}\n}\n\nasync function writeSanitizedJsonLine(\n\tline: string,\n\toptions: IrohRemoteOutboundJsonlReadablePipeOptions,\n): Promise<void> {\n\tconst sanitizedLine = sanitizeIrohRemoteOutboundJsonLine(line, options);\n\tawait options.writeLine(sanitizedLine);\n\toptions.onLine?.(sanitizedLine);\n}\n\nfunction shouldTreatAsPathField(fieldName: string | undefined): boolean {\n\tif (!fieldName) {\n\t\treturn false;\n\t}\n\tif (STRICT_REMOTE_PATH_FIELDS.has(fieldName)) {\n\t\treturn true;\n\t}\n\treturn fieldName.endsWith(\"Dir\") || fieldName.endsWith(\"File\") || fieldName.endsWith(\"Path\");\n}\n\nfunction sanitizePathField(value: string, context: IrohRemoteOutboundSanitizerContext): string {\n\tif (hasPathListSeparator(value)) {\n\t\treturn redactPathOccurrences(value, context, \"text\");\n\t}\n\tconst normalized = normalizeWorkspacePath(value, context);\n\tif (normalized) {\n\t\treturn normalized;\n\t}\n\tif (isRemoteWorkspacePath(value, context)) {\n\t\treturn value;\n\t}\n\tif (isBashOutputPath(value)) {\n\t\treturn IROH_REMOTE_REDACTED_BASH_OUTPUT_PATH;\n\t}\n\tif (isSessionFilePath(value)) {\n\t\treturn IROH_REMOTE_REDACTED_SESSION_FILE;\n\t}\n\tif (isExportPath(value)) {\n\t\treturn IROH_REMOTE_REDACTED_EXPORT_PATH;\n\t}\n\tif (isTildePath(value)) {\n\t\treturn sanitizePathToken(value, context);\n\t}\n\tif (isAbsolute(value) || isWindowsAbsolutePath(value) || isWindowsUncPath(value) || isFileUrl(value)) {\n\t\treturn value;\n\t}\n\treturn sanitizeRemoteText(value, context);\n}\n\nfunction sanitizeRemoteText(value: string, context: IrohRemoteOutboundSanitizerContext): string {\n\treturn sanitizePathOccurrences(value, context, \"text\");\n}\n\nfunction sanitizeObjectKey(value: string, context: IrohRemoteOutboundSanitizerContext): string {\n\treturn redactPathOccurrences(value, context, \"delimited\");\n}\n\nfunction setSanitizedObjectEntry(target: Record<string, unknown>, key: string, value: unknown): void {\n\ttarget[getUniqueObjectKey(target, key)] = value;\n}\n\nfunction getUniqueObjectKey(target: Record<string, unknown>, key: string): string {\n\tif (!hasOwnEntry(target, key)) {\n\t\treturn key;\n\t}\n\tlet index = 2;\n\twhile (hasOwnEntry(target, `${key} (${index})`)) {\n\t\tindex++;\n\t}\n\treturn `${key} (${index})`;\n}\n\nfunction hasOwnEntry(value: object, key: string): boolean {\n\treturn Object.hasOwn(value, key);\n}\n\nfunction normalizeWorkspacePath(value: string, context: IrohRemoteOutboundSanitizerContext): string | undefined {\n\tif (!isAbsolute(value)) {\n\t\treturn undefined;\n\t}\n\tconst candidatePath = resolve(value).normalize(\"NFC\");\n\tconst relativePath = relative(context.workspacePath, candidatePath);\n\tif (relativePath === \"\") {\n\t\treturn context.remoteWorkspacePath;\n\t}\n\tif (relativePath.startsWith(`..${sep}`) || relativePath === \"..\" || isAbsolute(relativePath)) {\n\t\treturn undefined;\n\t}\n\treturn `${context.remoteWorkspacePath}/${toPosixPath(relativePath)}`;\n}\n\nfunction normalizeWorkspacePathOccurrences(value: string, context: IrohRemoteOutboundSanitizerContext): string {\n\tlet normalized = value;\n\tfor (const workspacePath of context.workspacePathVariants) {\n\t\tnormalized = normalized.replace(\n\t\t\tnew RegExp(`${escapeRegExp(workspacePath)}(?=$|[\\\\\\\\/\\\\s\"'<>),.;:!?}\\\\]])`, \"g\"),\n\t\t\tcontext.remoteWorkspacePath,\n\t\t);\n\t}\n\treturn normalized;\n}\n\nfunction redactPathOccurrences(\n\tvalue: string,\n\tcontext: IrohRemoteOutboundSanitizerContext,\n\tmode: PathContinuationMode,\n): string {\n\treturn sanitizePathOccurrences(value, context, mode);\n}\n\nfunction sanitizePathOccurrences(\n\tvalue: string,\n\tcontext: IrohRemoteOutboundSanitizerContext,\n\tmode: PathContinuationMode,\n): string {\n\tlet sanitized = \"\";\n\tlet index = 0;\n\twhile (index < value.length) {\n\t\tif (\n\t\t\tstartsFileUrlAt(value, index) ||\n\t\t\tstartsTildePathAt(value, index) ||\n\t\t\tstartsWindowsPathAt(value, index) ||\n\t\t\tstartsEscapedWindowsUncPathAt(value, index) ||\n\t\t\tstartsWindowsUncPathAt(value, index) ||\n\t\t\tstartsPosixPathAt(value, index)\n\t\t) {\n\t\t\tconst tokenMode = mode === \"delimited\" || isDelimitedPathToken(value, index) ? \"delimited\" : \"text\";\n\t\t\tconst tokenEnd = findPathTokenEnd(value, index, context, tokenMode);\n\t\t\tsanitized += sanitizePathToken(value.slice(index, tokenEnd), context);\n\t\t\tindex = tokenEnd;\n\t\t\tcontinue;\n\t\t}\n\t\tsanitized += value[index];\n\t\tindex++;\n\t}\n\treturn sanitized;\n}\n\nfunction sanitizePathToken(value: string, context: IrohRemoteOutboundSanitizerContext): string {\n\tconst { path, suffix } = splitTrailingPathPunctuation(value);\n\tif (path === \"/\") {\n\t\treturn `${path}${suffix}`;\n\t}\n\tconst normalizedPath = normalizeWorkspacePath(path, context);\n\tif (normalizedPath) {\n\t\treturn `${normalizedPath}${suffix}`;\n\t}\n\tif (isRemoteWorkspacePath(path, context)) {\n\t\treturn `${path}${suffix}`;\n\t}\n\tif (isBashOutputPath(path)) {\n\t\treturn `${IROH_REMOTE_REDACTED_BASH_OUTPUT_PATH}${suffix}`;\n\t}\n\tif (isSessionFilePath(path)) {\n\t\treturn `${IROH_REMOTE_REDACTED_SESSION_FILE}${suffix}`;\n\t}\n\tif (isExportPath(path)) {\n\t\treturn `${IROH_REMOTE_REDACTED_EXPORT_PATH}${suffix}`;\n\t}\n\tif (\n\t\tisAbsolute(path) ||\n\t\tisTildePath(path) ||\n\t\tisWindowsAbsolutePath(path) ||\n\t\tisEscapedWindowsUncPath(path) ||\n\t\tisWindowsUncPath(path) ||\n\t\tisFileUrl(path)\n\t) {\n\t\t// The path is outside the workspace (or unresolvable as a subpath), but it may\n\t\t// still embed the workspace root glued to a non-separator delimiter (e.g.\n\t\t// \"<workspace>:extra\"), which normalizeWorkspacePath treats as a sibling and\n\t\t// would otherwise leak the real host path verbatim. Redact any embedded\n\t\t// workspace-path prefix before returning.\n\t\treturn `${normalizeWorkspacePathOccurrences(path, context)}${suffix}`;\n\t}\n\treturn `${normalizeWorkspacePathOccurrences(path, context)}${suffix}`;\n}\n\nfunction splitTrailingPathPunctuation(value: string): { path: string; suffix: string } {\n\tconst match = value.match(/[),.;:!?}\\]]+$/);\n\tif (!match) {\n\t\treturn { path: value, suffix: \"\" };\n\t}\n\tconst suffix = match[0];\n\treturn { path: value.slice(0, -suffix.length), suffix };\n}\n\nfunction isRemoteWorkspacePath(value: string, context: IrohRemoteOutboundSanitizerContext): boolean {\n\treturn value === context.remoteWorkspacePath || value.startsWith(`${context.remoteWorkspacePath}/`);\n}\n\nfunction isBashOutputPath(value: string): boolean {\n\treturn /(?:^|[/\\\\])volt-bash-[A-Za-z0-9_-]+\\.log$/.test(value);\n}\n\nfunction isSessionFilePath(value: string): boolean {\n\treturn /[/\\\\]sessions[/\\\\].+\\.jsonl$/.test(value);\n}\n\nfunction isExportPath(value: string): boolean {\n\treturn /(?:^|[/\\\\])Volt-session-[^/\\\\]+\\.html$/.test(value);\n}\n\nfunction startsFileUrlAt(value: string, index: number): boolean {\n\tif (!isPathPrefixBoundary(value, index)) {\n\t\treturn false;\n\t}\n\treturn value.slice(index, index + \"file://\".length).toLowerCase() === \"file://\";\n}\n\nfunction startsTildePathAt(value: string, index: number): boolean {\n\tif (!isPathPrefixBoundary(value, index)) {\n\t\treturn false;\n\t}\n\treturn isTildePath(value.slice(index));\n}\n\nfunction startsWindowsPathAt(value: string, index: number): boolean {\n\tif (!isPathPrefixBoundary(value, index)) {\n\t\treturn false;\n\t}\n\treturn /^[A-Za-z]:[\\\\/]/.test(value.slice(index));\n}\n\nfunction startsWindowsUncPathAt(value: string, index: number): boolean {\n\tif (!isPathPrefixBoundary(value, index)) {\n\t\treturn false;\n\t}\n\treturn isWindowsUncPath(value.slice(index));\n}\n\nfunction startsEscapedWindowsUncPathAt(value: string, index: number): boolean {\n\tif (!isPathPrefixBoundary(value, index)) {\n\t\treturn false;\n\t}\n\treturn isEscapedWindowsUncPath(value.slice(index));\n}\n\nfunction startsPosixPathAt(value: string, index: number): boolean {\n\tif (value[index] !== \"/\" || !isPathPrefixBoundary(value, index)) {\n\t\treturn false;\n\t}\n\tif (value[index - 1] === \":\" && value[index + 1] === \"/\") {\n\t\treturn false;\n\t}\n\tif (isRelativePathSeparatorAt(value, index)) {\n\t\treturn false;\n\t}\n\treturn !isInsideUrlToken(value, index);\n}\n\nfunction isRelativePathSeparatorAt(value: string, index: number): boolean {\n\tconst previousIndex = findPreviousNonWhitespaceIndex(value, index - 1);\n\tconst nextIndex = findNextNonWhitespaceIndex(value, index + 1);\n\tif (previousIndex === undefined || nextIndex === undefined) {\n\t\treturn false;\n\t}\n\tif (!isRelativePathSegmentCharacter(value[previousIndex]) || !isRelativePathSegmentCharacter(value[nextIndex])) {\n\t\treturn false;\n\t}\n\tconst segmentEnd = findPathSegmentEnd(value, nextIndex);\n\tconst nextSegment = stripTrailingPathPunctuation(value.slice(nextIndex, segmentEnd));\n\tif (hasPathSeparator(nextSegment)) {\n\t\treturn false;\n\t}\n\tconst previousSegmentStart = findPathTokenStart(value, previousIndex + 1);\n\tconst previousSegment = value.slice(previousSegmentStart, previousIndex + 1);\n\treturn isPlainRelativePathSegment(previousSegment) && looksLikeRelativeFileNameSegment(nextSegment);\n}\n\nfunction isPathPrefixBoundary(value: string, index: number): boolean {\n\tif (index === 0) {\n\t\treturn true;\n\t}\n\tconst prefix = value[index - 1];\n\treturn /\\s/.test(prefix) || \"\\\"'`([{<>=,:;|\".includes(prefix);\n}\n\nfunction isDelimitedPathToken(value: string, index: number): boolean {\n\tif (index === 0) {\n\t\treturn false;\n\t}\n\treturn \"\\\"'`|\".includes(value[index - 1]);\n}\n\nfunction isInsideUrlToken(value: string, index: number): boolean {\n\tconst tokenStart = findPathTokenStart(value, index);\n\tconst prefix = value.slice(tokenStart, index);\n\treturn /^[A-Za-z][A-Za-z0-9+.-]*:\\/\\/[^\\s\"'<>]*$/.test(prefix);\n}\n\nfunction findPathTokenStart(value: string, index: number): number {\n\tlet tokenStart = index;\n\twhile (tokenStart > 0 && !isPathTokenStartDelimiter(value[tokenStart - 1])) {\n\t\ttokenStart--;\n\t}\n\treturn tokenStart;\n}\n\nfunction findPreviousNonWhitespaceIndex(value: string, index: number): number | undefined {\n\tfor (let cursor = index; cursor >= 0; cursor--) {\n\t\tif (!isPathTokenWhitespace(value[cursor])) {\n\t\t\treturn cursor;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction findNextNonWhitespaceIndex(value: string, index: number): number | undefined {\n\tfor (let cursor = index; cursor < value.length; cursor++) {\n\t\tif (!isPathTokenWhitespace(value[cursor])) {\n\t\t\treturn cursor;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction findPathTokenEnd(\n\tvalue: string,\n\tindex: number,\n\tcontext: IrohRemoteOutboundSanitizerContext,\n\tmode: PathContinuationMode,\n): number {\n\tlet tokenEnd = index;\n\twhile (tokenEnd < value.length && !isPathTokenDelimiter(value, tokenEnd)) {\n\t\tif (isPathTokenWhitespace(value[tokenEnd])) {\n\t\t\tconst continuation = findPathContinuation(value, index, tokenEnd, context, mode);\n\t\t\tif (continuation === undefined) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ttokenEnd = continuation.end;\n\t\t\tif (!continuation.canContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\ttokenEnd++;\n\t}\n\treturn tokenEnd;\n}\n\nfunction findPathContinuation(\n\tvalue: string,\n\ttokenStart: number,\n\twhitespaceStart: number,\n\tcontext: IrohRemoteOutboundSanitizerContext,\n\tmode: PathContinuationMode,\n): { canContinue: boolean; end: number } | undefined {\n\tlet continuationStart = whitespaceStart;\n\twhile (continuationStart < value.length && isPathTokenWhitespace(value[continuationStart])) {\n\t\tcontinuationStart++;\n\t}\n\tif (continuationStart === whitespaceStart || continuationStart >= value.length) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\tstartsFileUrlAt(value, continuationStart) ||\n\t\tstartsTildePathAt(value, continuationStart) ||\n\t\tstartsWindowsPathAt(value, continuationStart) ||\n\t\tstartsEscapedWindowsUncPathAt(value, continuationStart) ||\n\t\tstartsWindowsUncPathAt(value, continuationStart) ||\n\t\tstartsPosixPathAt(value, continuationStart)\n\t) {\n\t\treturn undefined;\n\t}\n\tconst prefix = value.slice(tokenStart, whitespaceStart);\n\tif (endsWithPathTokenPunctuation(prefix)) {\n\t\treturn undefined;\n\t}\n\tconst segmentEnd = findPathSegmentEnd(value, continuationStart);\n\tconst segment = value.slice(continuationStart, segmentEnd);\n\tif (startsColonAdjacentPathSegment(segment)) {\n\t\treturn undefined;\n\t}\n\tif (segment.includes(\"://\")) {\n\t\treturn undefined;\n\t}\n\tif (hasPathSeparator(segment)) {\n\t\tif (!shouldContinuePathAcrossWhitespace(prefix, segment, context)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn { canContinue: true, end: segmentEnd };\n\t}\n\tif (!shouldConsumePlainPathContinuation(prefix, segment, context, mode)) {\n\t\treturn undefined;\n\t}\n\treturn { canContinue: true, end: segmentEnd };\n}\n\nfunction findPathSegmentEnd(value: string, index: number): number {\n\tlet segmentEnd = index;\n\twhile (segmentEnd < value.length && !isPathSegmentDelimiter(value, segmentEnd)) {\n\t\tsegmentEnd++;\n\t}\n\treturn segmentEnd;\n}\n\nfunction shouldConsumePlainPathContinuation(\n\tprefix: string,\n\tsegment: string,\n\tcontext: IrohRemoteOutboundSanitizerContext,\n\tmode: PathContinuationMode,\n): boolean {\n\tconst combined = `${prefix} ${stripTrailingPathPunctuation(segment)}`;\n\tconst baseAllowed =\n\t\tnormalizeWorkspacePath(prefix, context) === undefined &&\n\t\tnormalizeWorkspacePath(combined, context) === undefined &&\n\t\tlooksLikeIncompletePathName(prefix) &&\n\t\tlooksLikePlainPathNameSegment(segment) &&\n\t\t!isProsePathContinuationWord(stripTrailingPathPunctuation(segment));\n\tif (!baseAllowed) {\n\t\treturn false;\n\t}\n\tif (looksLikeUserHomePath(prefix)) {\n\t\treturn true;\n\t}\n\treturn (\n\t\tmode === \"delimited\" ||\n\t\thasPathTokenWhitespace(prefix) ||\n\t\tisCommonPathNameSegment(segment) ||\n\t\tlooksLikeCapitalizedPathNameSegment(segment)\n\t);\n}\n\nfunction shouldContinuePathAcrossWhitespace(\n\tprefix: string,\n\tsegment: string,\n\tcontext: IrohRemoteOutboundSanitizerContext,\n): boolean {\n\treturn (\n\t\tnormalizeWorkspacePath(prefix, context) === undefined &&\n\t\tlooksLikeIncompletePathName(prefix) &&\n\t\tlooksLikePathContinuationSegment(segment)\n\t);\n}\n\nfunction looksLikeIncompletePathName(value: string): boolean {\n\tconst lastSegment = getLastPathSegment(value);\n\treturn (\n\t\t(isAbsolute(value) ||\n\t\t\tisTildePath(value) ||\n\t\t\tisWindowsAbsolutePath(value) ||\n\t\t\tisWindowsUncPath(value) ||\n\t\t\tisFileUrl(value)) &&\n\t\tlastSegment.length > 0 &&\n\t\t!lastSegment.includes(\".\")\n\t);\n}\n\nfunction looksLikePlainPathNameSegment(value: string): boolean {\n\tconst trimmed = stripTrailingPathPunctuation(value);\n\treturn /^[A-Za-z0-9._-]/.test(trimmed);\n}\n\nfunction isRelativePathSegmentCharacter(value: string | undefined): boolean {\n\treturn value !== undefined && /[A-Za-z0-9._-]/.test(value);\n}\n\nfunction isPlainRelativePathSegment(value: string): boolean {\n\treturn /^[A-Za-z0-9._-]+$/.test(value) && value !== \".\" && value !== \"..\";\n}\n\nfunction looksLikeRelativeFileNameSegment(value: string): boolean {\n\treturn isPlainRelativePathSegment(value) && /(?:^\\.|.+\\.[A-Za-z0-9]+$)/.test(value);\n}\n\nfunction looksLikeCapitalizedPathNameSegment(value: string): boolean {\n\tconst trimmed = stripTrailingPathPunctuation(value);\n\treturn /^[A-Z][A-Za-z0-9._-]*$/.test(trimmed);\n}\n\nfunction looksLikePathContinuationSegment(value: string): boolean {\n\tconst trimmed = stripTrailingPathPunctuation(value);\n\tif (/^and[/\\\\]or$/i.test(trimmed)) {\n\t\treturn false;\n\t}\n\tconst parts = trimmed.split(/[\\\\/]+/).filter((part) => part.length > 0);\n\tif (parts[0] && isProsePathContinuationWord(parts[0])) {\n\t\treturn false;\n\t}\n\treturn parts.length >= 2;\n}\n\nfunction hasPathSeparator(value: string): boolean {\n\treturn value.includes(\"/\") || value.includes(\"\\\\\");\n}\n\nfunction isProsePathContinuationWord(value: string): boolean {\n\tconst normalized = value.toLowerCase();\n\treturn (\n\t\tnormalized === \"and\" ||\n\t\tnormalized === \"badly\" ||\n\t\tnormalized === \"crashed\" ||\n\t\tnormalized === \"done\" ||\n\t\tnormalized === \"exists\" ||\n\t\tnormalized === \"failed\" ||\n\t\tnormalized === \"found\" ||\n\t\tnormalized === \"missing\" ||\n\t\tnormalized === \"not\" ||\n\t\tnormalized === \"or\" ||\n\t\tnormalized === \"suffix\"\n\t);\n}\n\nfunction isCommonPathNameSegment(value: string): boolean {\n\tconst normalized = stripTrailingPathPunctuation(value).toLowerCase();\n\treturn (\n\t\tnormalized === \"app\" ||\n\t\tnormalized === \"build\" ||\n\t\tnormalized === \"cache\" ||\n\t\tnormalized === \"config\" ||\n\t\tnormalized === \"data\" ||\n\t\tnormalized === \"dist\" ||\n\t\tnormalized === \"log\" ||\n\t\tnormalized === \"logs\" ||\n\t\tnormalized === \"project\" ||\n\t\tnormalized === \"temp\" ||\n\t\tnormalized === \"tmp\"\n\t);\n}\n\nfunction startsColonAdjacentPathSegment(value: string): boolean {\n\treturn /^[^/\\\\\\s]+:[/\\\\]/.test(value);\n}\n\nfunction getLastPathSegment(value: string): string {\n\tconst separatorIndex = Math.max(value.lastIndexOf(\"/\"), value.lastIndexOf(\"\\\\\"));\n\treturn separatorIndex === -1 ? value : value.slice(separatorIndex + 1);\n}\n\nfunction looksLikeUserHomePath(value: string): boolean {\n\treturn /^\\/Users\\/[^/]+$/.test(value) || /^[A-Za-z]:[\\\\/]Users[\\\\/][^\\\\/]+$/.test(value);\n}\n\nfunction endsWithPathTokenPunctuation(value: string): boolean {\n\treturn /[),.;:!?}\\]]$/.test(value);\n}\n\nfunction stripTrailingPathPunctuation(value: string): string {\n\treturn value.replace(/[),.;:!?}\\]]+$/, \"\");\n}\n\nfunction isPathTokenDelimiter(value: string, index: number): boolean {\n\tconst character = value[index];\n\treturn (\n\t\tcharacter === \"\\n\" ||\n\t\tcharacter === \"\\r\" ||\n\t\tcharacter === '\"' ||\n\t\tcharacter === \"`\" ||\n\t\tcharacter === \"<\" ||\n\t\tcharacter === \">\" ||\n\t\tcharacter === \"|\" ||\n\t\tisEscapedPathQuote(value, index) ||\n\t\tisPathListSeparator(value, index) ||\n\t\t(character === \"'\" && isLikelyClosingSingleQuote(value, index))\n\t);\n}\n\nfunction isPathTokenStartDelimiter(value: string): boolean {\n\treturn /\\s/.test(value) || \"\\\"'<>|\".includes(value);\n}\n\nfunction isPathSegmentDelimiter(value: string, index: number): boolean {\n\treturn isPathTokenWhitespace(value[index]) || isPathTokenDelimiter(value, index);\n}\n\nfunction isPathTokenWhitespace(value: string): boolean {\n\treturn value === \" \" || value === \"\\t\";\n}\n\nfunction hasPathTokenWhitespace(value: string): boolean {\n\treturn value.includes(\" \") || value.includes(\"\\t\");\n}\n\nfunction hasPathListSeparator(value: string): boolean {\n\tfor (let index = 0; index < value.length; index++) {\n\t\tif (isPathListSeparator(value, index)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction isEscapedPathQuote(value: string, index: number): boolean {\n\treturn value[index] === \"\\\\\" && value[index + 1] === '\"';\n}\n\nfunction isPathListSeparator(value: string, index: number): boolean {\n\tif (!\":;,\".includes(value[index])) {\n\t\treturn false;\n\t}\n\tconst pathStart = index + 1;\n\treturn (\n\t\tstartsFileUrlAt(value, pathStart) ||\n\t\tstartsTildePathAt(value, pathStart) ||\n\t\tstartsWindowsPathAt(value, pathStart) ||\n\t\tstartsEscapedWindowsUncPathAt(value, pathStart) ||\n\t\tstartsWindowsUncPathAt(value, pathStart) ||\n\t\tstartsPosixPathAt(value, pathStart)\n\t);\n}\n\nfunction isLikelyClosingSingleQuote(value: string, index: number): boolean {\n\tconst previous = value[index - 1];\n\tconst next = value[index + 1];\n\tif (next === undefined || '\"`<>),.;:!?}]'.includes(next)) {\n\t\treturn true;\n\t}\n\tif (previous !== undefined && /[A-Za-z0-9]/.test(previous)) {\n\t\tconst tokenStart = findPathTokenStart(value, index);\n\t\treturn !looksLikeIncompletePathName(value.slice(tokenStart, index));\n\t}\n\tif (!/\\s/.test(next)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction toPosixPath(value: string): string {\n\treturn value.split(sep).join(\"/\");\n}\n\nfunction toWindowsPath(value: string): string {\n\treturn value.split(sep).join(\"\\\\\");\n}\n\nfunction isWindowsAbsolutePath(value: string): boolean {\n\treturn /^[A-Za-z]:[\\\\/]/.test(value);\n}\n\nfunction isWindowsUncPath(value: string): boolean {\n\treturn /^\\\\\\\\[^\\\\]+\\\\[^\\\\]+/.test(value);\n}\n\nfunction isEscapedWindowsUncPath(value: string): boolean {\n\treturn /^\\\\\\\\\\\\\\\\[^\\\\]+\\\\\\\\[^\\\\]+/.test(value);\n}\n\nfunction isTildePath(value: string): boolean {\n\treturn /^~[^/\\\\\\s]*(?:$|[\\\\/])/.test(value);\n}\n\nfunction isFileUrl(value: string): boolean {\n\treturn value.slice(0, \"file://\".length).toLowerCase() === \"file://\";\n}\n\nfunction escapeRegExp(value: string): string {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}