remoteclaw 0.1.0-next.2abd2fa → 0.1.0-next.2e9a6cd

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 (1052) hide show
  1. package/README.md +9 -7
  2. package/dist/accounts-A8jZK_v9.js +272 -0
  3. package/dist/accounts-BegPt5VR.js +36 -0
  4. package/dist/accounts-BmiimLpP.js +47 -0
  5. package/dist/accounts-Bomfgw0M.js +32 -0
  6. package/dist/accounts-Bpk-loA6.js +47 -0
  7. package/dist/accounts-DAdUdbPk.js +36 -0
  8. package/dist/accounts-WYyfAiie.js +270 -0
  9. package/dist/ack-reactions-CMDRj7fJ.js +446 -0
  10. package/dist/ack-reactions-D7VScSny.js +446 -0
  11. package/dist/acp-cli-BpMS0SsZ.js +1323 -0
  12. package/dist/acp-cli-DkXTlCpF.js +1317 -0
  13. package/dist/active-listener--FT8ewxl.js +37 -0
  14. package/dist/active-listener-C1StcdIA.js +37 -0
  15. package/dist/agent-C76P7tEr.js +703 -0
  16. package/dist/agent-helpers-CK3Obbsi.js +400 -0
  17. package/dist/agent-helpers-KHUla1K7.js +400 -0
  18. package/dist/agent-scope-BrDeaWWf.js +116 -0
  19. package/dist/agent-scope-DxqtYjuJ.js +114 -0
  20. package/dist/agent-ue8p9AIv.js +704 -0
  21. package/dist/agents--24oKN80.js +788 -0
  22. package/dist/agents.config-CWAUoPzG.js +116 -0
  23. package/dist/agents.config-Ck45E_ce.js +116 -0
  24. package/dist/audio-B85HoT7E.js +43 -0
  25. package/dist/audio-BbCUzndz.js +43 -0
  26. package/dist/audio-preflight-B3f0x3zu.js +69 -0
  27. package/dist/audio-preflight-Dv76vFTu.js +64 -0
  28. package/dist/audit-BAbBf2MU.js +3149 -0
  29. package/dist/audit-g55SYz1m.js +3149 -0
  30. package/dist/auth-Bq44qPUd.js +448 -0
  31. package/dist/auth-CVfoI--S.js +281 -0
  32. package/dist/auth-DTWpZJ1a.js +279 -0
  33. package/dist/auth-VItd2pwK.js +448 -0
  34. package/dist/banner-CyPQJybO.js +294 -0
  35. package/dist/binaries-DbgLoSWv.js +13 -0
  36. package/dist/bindings-6KojDoIi.js +69 -0
  37. package/dist/bindings-B6icMMUx.js +69 -0
  38. package/dist/bonjour-discovery-CQU4QbLK.js +378 -0
  39. package/dist/bonjour-discovery-D8aOnk3M.js +378 -0
  40. package/dist/boot/handler.js +42 -69
  41. package/dist/browser-cli-BH41geGr.js +1693 -0
  42. package/dist/browser-cli-u4nrjp1h.js +1688 -0
  43. package/dist/build-info.json +3 -3
  44. package/dist/call-CMDcRlGW.js +2826 -0
  45. package/dist/call-D5YKTYSM.js +2827 -0
  46. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  47. package/dist/catalog-CUY_iTaG.js +185 -0
  48. package/dist/catalog-p6W09S2j.js +185 -0
  49. package/dist/channel-account-context-CA2m93Kt.js +550 -0
  50. package/dist/channel-account-context-Las-t6RP.js +550 -0
  51. package/dist/channel-activity-BD603ehL.js +94 -0
  52. package/dist/channel-activity-CwiF_QMr.js +94 -0
  53. package/dist/channel-activity-daCpxHdT.js +292 -0
  54. package/dist/channel-options-CAlClffy.js +33 -0
  55. package/dist/channel-options-Hl_ep3UG.js +32 -0
  56. package/dist/channel-selection-CHJ7TumC.js +51 -0
  57. package/dist/channel-selection-DR7eW8UG.js +51 -0
  58. package/dist/channel-web-B79j9fSC.js +2134 -0
  59. package/dist/channel-web-DHTTcipm.js +2136 -0
  60. package/dist/channels-cli-DeZ95hcx.js +1427 -0
  61. package/dist/channels-cli-eUCi6jXk.js +1422 -0
  62. package/dist/channels-status-issues-By77REbh.js +18 -0
  63. package/dist/channels-status-issues-DXyOO-KH.js +18 -0
  64. package/dist/chat-envelope-BEDutlnF.js +248 -0
  65. package/dist/chat-envelope-vJJUdDE7.js +248 -0
  66. package/dist/chrome-BuAi16Rq.js +1732 -0
  67. package/dist/chrome-IR-2ukph.js +1733 -0
  68. package/dist/chunk-C1mQSjas.js +341 -0
  69. package/dist/chunk-D7VX4pmT.js +341 -0
  70. package/dist/clack-prompter-BX8SVxtP.js +122 -0
  71. package/dist/clack-prompter-D6HhVlZW.js +121 -0
  72. package/dist/cleanup-utils-DNd0wdKZ.js +94 -0
  73. package/dist/cli/daemon-cli.js +1 -1
  74. package/dist/cli-CK4Y43rx.js +131 -0
  75. package/dist/cli-Cha5Uk29.js +126 -0
  76. package/dist/clipboard-Cbj3McM_.js +31 -0
  77. package/dist/clipboard-Ne8gaWea.js +31 -0
  78. package/dist/command-format-D0vKipG9.js +32 -0
  79. package/dist/command-format-KkslAzwV.js +18 -0
  80. package/dist/command-logger/handler.js +3 -3
  81. package/dist/command-registry-07zlvSN8.js +215 -0
  82. package/dist/commands-DChC3pIF.js +41 -0
  83. package/dist/commands-DFHMoQgH.js +41 -0
  84. package/dist/commands-registry-BN04GIlJ.js +891 -0
  85. package/dist/commands-registry-DbS9NHeX.js +892 -0
  86. package/dist/common-DHHHAcmR.js +156 -0
  87. package/dist/common-De-Lakuh.js +156 -0
  88. package/dist/completion-cli--Jcg794c.js +452 -0
  89. package/dist/completion-cli-B8n7umme.js +452 -0
  90. package/dist/config-BupC6eiJ.js +4223 -0
  91. package/dist/config-CHDaGquZ.js +4225 -0
  92. package/dist/config-cli-Cu79BThx.js +242 -0
  93. package/dist/config-cli-DrJtiyW-.js +247 -0
  94. package/dist/config-guard-BLsqW1qt.js +98 -0
  95. package/dist/config-guard-NQ7jaYM4.js +75 -0
  96. package/dist/config-validation-BLllMW0t.js +18 -0
  97. package/dist/config-validation-DT29VEco.js +18 -0
  98. package/dist/configure-B25UEQnQ.js +889 -0
  99. package/dist/configure-CqMUE4Zw.js +891 -0
  100. package/dist/constants-BbAEYzFC.js +70 -0
  101. package/dist/constants-tLOgmZZ1.js +70 -0
  102. package/dist/control-auth-BFbDXKLK.js +397 -0
  103. package/dist/control-auth-BiiO-FNy.js +397 -0
  104. package/dist/control-ui/assets/index-CuY3pfh1.js +7716 -0
  105. package/dist/control-ui/assets/index-CuY3pfh1.js.map +1 -0
  106. package/dist/control-ui/assets/index-D_fjkN3g.css +1 -0
  107. package/dist/control-ui/index.html +2 -2
  108. package/dist/control-ui-assets-BlpSXjlT.js +186 -0
  109. package/dist/control-ui-assets-eJU2-yvs.js +186 -0
  110. package/dist/conversation-label-Bn5j3lUT.js +36 -0
  111. package/dist/conversation-label-L0QTtKji.js +36 -0
  112. package/dist/cron-cli-BV1o0UgM.js +491 -0
  113. package/dist/cron-cli-C8j-P8GF.js +496 -0
  114. package/dist/daemon-cli-BDvU0Xv6.js +1199 -0
  115. package/dist/daemon-cli-CoNl2Ugf.js +1197 -0
  116. package/dist/daemon-cli.js +53 -97
  117. package/dist/daemon-install-BMEnzWwq.js +60 -0
  118. package/dist/daemon-install-BkUJbdPC.js +55 -0
  119. package/dist/daemon-install-helpers-B9kMxC1v.js +462 -0
  120. package/dist/daemon-install-helpers-DoYR5z4H.js +462 -0
  121. package/dist/deliver-D8P9_nk-.js +481 -0
  122. package/dist/deliver-F9ed3dhp.js +481 -0
  123. package/dist/delivery-queue-B6TuHppj.js +244 -0
  124. package/dist/delivery-queue-BZc3AiGu.js +244 -0
  125. package/dist/devices-cli-DZgxMNLD.js +322 -0
  126. package/dist/devices-cli-DlG9ehK0.js +317 -0
  127. package/dist/diagnostics-CK2HGAFw.js +46 -0
  128. package/dist/diagnostics-G-C-IuxO.js +46 -0
  129. package/dist/directory-cli-CY6tHRIZ.js +218 -0
  130. package/dist/directory-cli-HyvRJ1Ua.js +223 -0
  131. package/dist/dm-policy-shared-1FdjwGtJ.js +22 -0
  132. package/dist/dm-policy-shared-CT3er5HI.js +22 -0
  133. package/dist/dns-cli-Cu-wYvll.js +203 -0
  134. package/dist/dns-cli-DQdnNJh4.js +198 -0
  135. package/dist/dock-D038fZZl.js +929 -0
  136. package/dist/dock-D5pZ3a44.js +928 -0
  137. package/dist/doctor-completion-BrHnayfU.js +92 -0
  138. package/dist/doctor-completion-CoZP2KiR.js +92 -0
  139. package/dist/doctor-config-flow-DJ1nWCTZ.js +1935 -0
  140. package/dist/doctor-config-flow-DYhXUwEq.js +1934 -0
  141. package/dist/enable-B5dIjgnm.js +59 -0
  142. package/dist/enable-FmiEY4ng.js +59 -0
  143. package/dist/entry.js +14 -16
  144. package/dist/env-DUb5GiQe.js +60 -0
  145. package/dist/env-vars-C8WMB8Ix.js +93 -0
  146. package/dist/errors-CdmXrBic.js +35 -0
  147. package/dist/errors-DdLfwEVi.js +35 -0
  148. package/dist/exec-BhkXWg7V.js +164 -0
  149. package/dist/exec-ClUTXFZ9.js +164 -0
  150. package/dist/export-html/template.css +0 -36
  151. package/dist/export-html/template.js +1 -32
  152. package/dist/extensionAPI.js +1015 -142
  153. package/dist/fetch-CCuD0LYV.js +67 -0
  154. package/dist/fetch-JBWLkOpL.js +67 -0
  155. package/dist/fetch-oku6r8tJ.js +67 -0
  156. package/dist/file-lock-6NXMPZTT.js +107 -0
  157. package/dist/file-lock-Ks-RPU6W.js +107 -0
  158. package/dist/fs-safe-93aDW4mH.js +98 -0
  159. package/dist/fs-safe-ACrBwOF5.js +88 -0
  160. package/dist/gateway-cli-CJs4Mxlv.js +23730 -0
  161. package/dist/gateway-cli-gUVR20v7.js +23725 -0
  162. package/dist/gateway-rpc-CSdrtPzg.js +28 -0
  163. package/dist/gateway-rpc-PNA_wUoe.js +28 -0
  164. package/dist/gmail-setup-utils-DNZEf6T0.js +422 -0
  165. package/dist/gmail-setup-utils-KPAKWwGy.js +423 -0
  166. package/dist/health-BCidscV-.js +1417 -0
  167. package/dist/health-Cw2dr19V.js +1414 -0
  168. package/dist/health-format-DOhfU1rY.js +28 -0
  169. package/dist/heartbeat-visibility-C5Vxudi9.js +125 -0
  170. package/dist/heartbeat-visibility-DHeZ-ko1.js +125 -0
  171. package/dist/help-format-Ch0EWh7N.js +17 -0
  172. package/dist/helpers-B4NWktS8.js +10 -0
  173. package/dist/hook-runner-global-Vj-YQxeR.js +527 -0
  174. package/dist/hooks-cli---vy0V0j.js +1218 -0
  175. package/dist/hooks-cli-CX-JUHdJ.js +1223 -0
  176. package/dist/image-ops-DMl7j7f4.js +354 -0
  177. package/dist/image-ops-DpkTOzhI.js +354 -0
  178. package/dist/import-DIjlFm_Y.js +493 -0
  179. package/dist/import-DdQvVR-_.js +495 -0
  180. package/dist/inbound-context-CmmmT8IP.js +68 -0
  181. package/dist/inbound-context-oxIWzEgc.js +68 -0
  182. package/dist/inbound-path-policy-BdmTOUka.js +90 -0
  183. package/dist/inbound-path-policy-DYTLjca8.js +90 -0
  184. package/dist/index.js +106 -105
  185. package/dist/inspect-C9d1V-lI.js +559 -0
  186. package/dist/inspect-rHjRqr3W.js +559 -0
  187. package/dist/installs-QUjSL2ZA.js +325 -0
  188. package/dist/installs-vT5wnxC4.js +325 -0
  189. package/dist/ipv4-DdcyK1aU.js +46 -0
  190. package/dist/ipv4-OHvujh00.js +46 -0
  191. package/dist/ir-CnMQRFBu.js +940 -0
  192. package/dist/json-files-BiA_B-xm.js +46 -0
  193. package/dist/links-CIHbVNO_.js +15 -0
  194. package/dist/loader-CYigLbch.js +22404 -0
  195. package/dist/loader-ElWX62xE.js +22401 -0
  196. package/dist/local-roots-B0QcJDJI.js +313 -0
  197. package/dist/local-roots-BfXsZRkm.js +314 -0
  198. package/dist/logger-BtwpYD7c.js +49 -0
  199. package/dist/logging-CLc3Umm0.js +20 -0
  200. package/dist/login-C8jHYLxN.js +61 -0
  201. package/dist/login-D__FYZX9.js +62 -0
  202. package/dist/login-qr-C0Gd6ybl.js +323 -0
  203. package/dist/login-qr-D7dw54Yp.js +328 -0
  204. package/dist/logs-cli-CFOVARdJ.js +234 -0
  205. package/dist/logs-cli-DtAR__VH.js +239 -0
  206. package/dist/markdown-tables-ChBqQA_Q.js +29 -0
  207. package/dist/markdown-tables-xMuH3QnS.js +29 -0
  208. package/dist/media-CmiNXiOZ.js +10453 -0
  209. package/dist/media-DYopaoc0.js +940 -0
  210. package/dist/message-action-names-CACBi-HB.js +2521 -0
  211. package/dist/message-action-names-CFwlz01T.js +2521 -0
  212. package/dist/message-channel-DF4I2vOK.js +91 -0
  213. package/dist/net-COL170MG.js +225 -0
  214. package/dist/net-QZ8IHNXc.js +225 -0
  215. package/dist/node-cli-CW8jOcHO.js +24 -0
  216. package/dist/nodes-cli-B4lvU9N5.js +1349 -0
  217. package/dist/nodes-cli-B8iTBsI6.js +1344 -0
  218. package/dist/nodes-screen-CZCXHrWB.js +250 -0
  219. package/dist/nodes-screen-C_K1vcS5.js +250 -0
  220. package/dist/note-BVerR3D5.js +92 -0
  221. package/dist/note-Dk8-EaJg.js +92 -0
  222. package/dist/npm-registry-spec-Dma0KHft.js +786 -0
  223. package/dist/npm-registry-spec-vYkxZb6u.js +786 -0
  224. package/dist/npm-resolution-CcZYnzrL.js +86 -0
  225. package/dist/npm-resolution-DsATEEGx.js +86 -0
  226. package/dist/onboard-Csm4bDd_.js +438 -0
  227. package/dist/onboard-D1b535pC.js +436 -0
  228. package/dist/onboard-channels-5EIXyDZh.js +2547 -0
  229. package/dist/onboard-channels-bedB47Hs.js +2548 -0
  230. package/dist/onboard-config-CcPV3Cqz.js +39 -0
  231. package/dist/onboard-config-DcTaxmuf.js +39 -0
  232. package/dist/onboard-helpers-BHNXyhA4.js +364 -0
  233. package/dist/onboard-helpers-eTUU00t8.js +363 -0
  234. package/dist/onboard-remote-DwDKQk1K.js +127 -0
  235. package/dist/onboard-remote-TPbiye5m.js +127 -0
  236. package/dist/onboarding-D0YGZ_Ux.js +588 -0
  237. package/dist/onboarding-DCfmKzl2.js +586 -0
  238. package/dist/onboarding.finalize-BhpsVwME.js +399 -0
  239. package/dist/onboarding.finalize-CY8vgmi9.js +402 -0
  240. package/dist/onboarding.gateway-config-C_eqpJ7D.js +192 -0
  241. package/dist/onboarding.gateway-config-DR1ey6tU.js +199 -0
  242. package/dist/outbound-Be4BgVqF.js +220 -0
  243. package/dist/outbound-CXJLn8kn.js +221 -0
  244. package/dist/outbound-attachment-CbNLn0lk.js +18 -0
  245. package/dist/outbound-attachment-DNCMF74c.js +18 -0
  246. package/dist/outbound-attachment-DaStRTGv.js +18 -0
  247. package/dist/pairing-cli-CxGDUsLT.js +128 -0
  248. package/dist/pairing-cli-D83T3PG9.js +123 -0
  249. package/dist/pairing-labels-6f8FqSS5.js +9 -0
  250. package/dist/pairing-labels-CI5j-OUT.js +9 -0
  251. package/dist/pairing-store-DnTHRcnO.js +459 -0
  252. package/dist/pairing-store-ONzqxcNb.js +460 -0
  253. package/dist/path-env-D7VB7sOO.js +89 -0
  254. package/dist/path-env-DFiYvvI-.js +89 -0
  255. package/dist/path-safety-BshBsw4P.js +14 -0
  256. package/dist/path-safety-CZbhQciI.js +14 -0
  257. package/dist/plugin-auto-enable-BnCQKkIK.js +302 -0
  258. package/dist/plugin-auto-enable-CFRs-pcA.js +301 -0
  259. package/dist/plugin-registry-CV5pfXOU.js +33 -0
  260. package/dist/plugin-registry-CmG34W0u.js +33 -0
  261. package/dist/plugin-sdk/agents/agent-helpers.d.ts +0 -1
  262. package/dist/plugin-sdk/agents/agent-scope.d.ts +10 -0
  263. package/dist/plugin-sdk/agents/agent-types.d.ts +1 -6
  264. package/dist/plugin-sdk/agents/agent-utils.d.ts +0 -14
  265. package/dist/plugin-sdk/agents/provider-utils.d.ts +0 -1
  266. package/dist/plugin-sdk/agents/subagent-spawn.d.ts +0 -1
  267. package/dist/plugin-sdk/agents/tools/sessions-helpers.d.ts +0 -1
  268. package/dist/plugin-sdk/auth/constants.d.ts +16 -0
  269. package/dist/plugin-sdk/auth/display.d.ts +7 -0
  270. package/dist/plugin-sdk/auth/doctor.d.ts +8 -0
  271. package/dist/plugin-sdk/auth/env-injection.d.ts +41 -0
  272. package/dist/plugin-sdk/auth/index.d.ts +8 -0
  273. package/dist/plugin-sdk/auth/oauth.d.ts +14 -0
  274. package/dist/plugin-sdk/auth/provider-auth.d.ts +40 -0
  275. package/dist/plugin-sdk/auth/session-override.d.ts +18 -0
  276. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +0 -1
  277. package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +0 -2
  278. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -4
  279. package/dist/plugin-sdk/auto-reply/reply/commands-types.d.ts +1 -4
  280. package/dist/plugin-sdk/auto-reply/reply/directive-handling.levels.d.ts +1 -7
  281. package/dist/plugin-sdk/auto-reply/reply/directive-handling.params.d.ts +1 -4
  282. package/dist/plugin-sdk/auto-reply/reply/directive-handling.parse.d.ts +1 -7
  283. package/dist/plugin-sdk/auto-reply/reply/directive-handling.shared.d.ts +1 -4
  284. package/dist/plugin-sdk/auto-reply/reply/directives.d.ts +3 -15
  285. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -5
  286. package/dist/plugin-sdk/auto-reply/reply/get-reply-inline-actions.d.ts +1 -5
  287. package/dist/plugin-sdk/auto-reply/reply/get-reply-run.d.ts +1 -5
  288. package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +1 -3
  289. package/dist/plugin-sdk/auto-reply/reply/response-prefix-template.d.ts +4 -6
  290. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +0 -7
  291. package/dist/plugin-sdk/auto-reply/reply/session-updates.d.ts +0 -10
  292. package/dist/plugin-sdk/auto-reply/reply.d.ts +1 -1
  293. package/dist/plugin-sdk/auto-reply/status.d.ts +2 -6
  294. package/dist/plugin-sdk/auto-reply/thinking.d.ts +0 -11
  295. package/dist/plugin-sdk/auto-reply/types.d.ts +1 -2
  296. package/dist/plugin-sdk/commands/agent/session.d.ts +1 -2
  297. package/dist/plugin-sdk/config/defaults.d.ts +0 -1
  298. package/dist/plugin-sdk/config/sessions/types.d.ts +0 -8
  299. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +28 -112
  300. package/dist/plugin-sdk/config/types.agents.d.ts +8 -0
  301. package/dist/plugin-sdk/config/types.messages.d.ts +1 -2
  302. package/dist/plugin-sdk/config/types.tools.d.ts +1 -1
  303. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +9 -66
  304. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +5 -13
  305. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +12 -76
  306. package/dist/plugin-sdk/config/zod-schema.d.ts +12 -76
  307. package/dist/plugin-sdk/daemon/constants.d.ts +2 -2
  308. package/dist/plugin-sdk/gateway/protocol/index.d.ts +1 -3
  309. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +0 -2
  310. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +0 -2
  311. package/dist/plugin-sdk/index.js +108 -134
  312. package/dist/plugin-sdk/middleware/auth-key-retry.d.ts +32 -0
  313. package/dist/plugin-sdk/middleware/channel-bridge.d.ts +4 -0
  314. package/dist/plugin-sdk/middleware/error-classifier.d.ts +5 -0
  315. package/dist/plugin-sdk/middleware/media-resolver.d.ts +12 -0
  316. package/dist/plugin-sdk/middleware/runtime-factory.d.ts +42 -0
  317. package/dist/plugin-sdk/middleware/types.d.ts +33 -1
  318. package/dist/plugin-sdk/plugins/types.d.ts +1 -1
  319. package/dist/plugin-sdk/terminal/palette.d.ts +2 -2
  320. package/dist/plugins-B4waLB_f.js +453 -0
  321. package/dist/plugins-D6-JJ1il.js +455 -0
  322. package/dist/plugins-cli-DG2zHgdP.js +799 -0
  323. package/dist/plugins-cli-DZvQzkWd.js +794 -0
  324. package/dist/ports-BcTKFlWl.js +96 -0
  325. package/dist/ports-DAc2AlZE.js +316 -0
  326. package/dist/ports-HiuYk3bt.js +96 -0
  327. package/dist/ports-dEePqmCq.js +370 -0
  328. package/dist/program-CX-EtQ9W.js +245 -0
  329. package/dist/program-context-R3wsjl2f.js +474 -0
  330. package/dist/progress-DQ1drugY.js +124 -0
  331. package/dist/prompt-edYTUtju.js +21 -0
  332. package/dist/prompt-select-styled-BzL7v1zQ.js +1647 -0
  333. package/dist/prompt-select-styled-g5q4srtu.js +1650 -0
  334. package/dist/prompt-style-CYEpbwXH.js +9 -0
  335. package/dist/provider-dispatcher-D7qFGoUR.js +660 -0
  336. package/dist/provider-dispatcher-dB_rm6tV.js +659 -0
  337. package/dist/push-apns-DQwR-i4_.js +713 -0
  338. package/dist/push-apns-Dj5RApCY.js +711 -0
  339. package/dist/pw-ai-DOQMJFB-.js +1911 -0
  340. package/dist/pw-ai-oqtYDmjQ.js +1907 -0
  341. package/dist/qr-cli-CBGm_Cik.js +353 -0
  342. package/dist/qr-cli-D2jZPdW9.js +348 -0
  343. package/dist/redact-gXuh8MFk.js +191 -0
  344. package/dist/redact-snapshot-B-2V56Yb.js +2016 -0
  345. package/dist/redact-snapshot-CD36XSYE.js +2016 -0
  346. package/dist/register.agent-DLSuiqWE.js +287 -0
  347. package/dist/register.agent-DcvEt3hG.js +1044 -0
  348. package/dist/register.configure-3edoYZai.js +131 -0
  349. package/dist/register.configure-CyOJCmnY.js +125 -0
  350. package/dist/register.import-Cku0T-PA.js +31 -0
  351. package/dist/register.import-Dr8TiUVx.js +28 -0
  352. package/dist/register.maintenance-5aaPQbJk.js +495 -0
  353. package/dist/register.maintenance-DPSswZDJ.js +498 -0
  354. package/dist/register.message-BaSVFv92.js +682 -0
  355. package/dist/register.message-FEI0RiNN.js +687 -0
  356. package/dist/register.onboard-CO1UZL-9.js +258 -0
  357. package/dist/register.onboard-DuLKxjXl.js +263 -0
  358. package/dist/register.setup-CFYYd_Ev.js +115 -0
  359. package/dist/register.setup-P0UHDBMS.js +110 -0
  360. package/dist/register.status-health-sessions-D_3vm2yw.js +424 -0
  361. package/dist/register.status-health-sessions-z9x79dmg.js +665 -0
  362. package/dist/register.subclis-B-d970d6.js +267 -0
  363. package/dist/replies-BvarRpHb.js +136 -0
  364. package/dist/replies-CSzm5168.js +136 -0
  365. package/dist/reply-CTgksTO1.js +13695 -0
  366. package/dist/reply-CUyafs4J.js +13692 -0
  367. package/dist/reply-directives-Caq4zVTg.js +182 -0
  368. package/dist/reply-directives-D91fapDF.js +182 -0
  369. package/dist/reply-payloads-te0YnESs.js +527 -0
  370. package/dist/reply-prefix-Bv8Mv9q8.js +37 -0
  371. package/dist/reply-prefix-Rk_UEaJa.js +37 -0
  372. package/dist/resolve-route-BPa6q23t.js +249 -0
  373. package/dist/resolve-route-CN9BEALz.js +249 -0
  374. package/dist/response-prefix-template-D-ptXREi.js +134 -0
  375. package/dist/response-prefix-template-Dckjdftg.js +134 -0
  376. package/dist/retry-BcZuGfnV.js +77 -0
  377. package/dist/retry-BzWBtFpP.js +77 -0
  378. package/dist/run-main-BugUkGES.js +303 -0
  379. package/dist/runner-CVMXkHe9.js +2295 -0
  380. package/dist/runner-DOWTBU0-.js +2295 -0
  381. package/dist/runtime-guard-CXt4yzo-.js +60 -0
  382. package/dist/secure-random-CBwDBdj1.js +44 -0
  383. package/dist/security-cli-BQzdzJUp.js +479 -0
  384. package/dist/security-cli-D2d8RvsT.js +485 -0
  385. package/dist/send-B3G3I3II.js +349 -0
  386. package/dist/send-B6IB6ELR.js +547 -0
  387. package/dist/send-BT8XEvZB.js +332 -0
  388. package/dist/send-BTupAHVX.js +2245 -0
  389. package/dist/send-BZCfto_I.js +1174 -0
  390. package/dist/send-C5EDjThR.js +492 -0
  391. package/dist/send-CBM54hgN.js +349 -0
  392. package/dist/send-CPBd6ItT.js +29 -0
  393. package/dist/send-CzYm7ULP.js +2245 -0
  394. package/dist/send-D2m_x8xM.js +374 -0
  395. package/dist/send-DmEBPE2S.js +1779 -0
  396. package/dist/send-Dt4iCx61.js +426 -0
  397. package/dist/send-MWjpLHEV.js +11 -0
  398. package/dist/send-qpwqt34s.js +547 -0
  399. package/dist/send-rW25uKNz.js +1776 -0
  400. package/dist/send-uqa6CNuP.js +492 -0
  401. package/dist/server-BhmYVCED.js +201 -0
  402. package/dist/server-DaUw1o2B.js +206 -0
  403. package/dist/server-lifecycle-BeZsBQwF.js +2437 -0
  404. package/dist/server-lifecycle-C2F1_TE2.js +2437 -0
  405. package/dist/server-node-events-DoRFbKCT.js +390 -0
  406. package/dist/server-node-events-jbbbt-4R.js +395 -0
  407. package/dist/service-BDt-zUvV.js +670 -0
  408. package/dist/service-Os7W1F2S.js +670 -0
  409. package/dist/session-B9KGKVrY.js +170 -0
  410. package/dist/session-DzAupDyj.js +170 -0
  411. package/dist/session-cost-usage-BYCI739a.js +627 -0
  412. package/dist/session-cost-usage-DGsPcuMj.js +627 -0
  413. package/dist/session-dirs-BIg5RHAh.js +947 -0
  414. package/dist/session-dirs-DwDxjK1p.js +947 -0
  415. package/dist/session-utils-BgWDCbyx.js +622 -0
  416. package/dist/session-utils-CxxOeC1M.js +622 -0
  417. package/dist/sessions-Bwu0l_CG.js +2569 -0
  418. package/dist/sessions-CiuFFCnt.js +247 -0
  419. package/dist/shell-env-CsV_IkJj.js +163 -0
  420. package/dist/shell-env-hZW9j-Uc.js +163 -0
  421. package/dist/ssrf-B-rF_tZB.js +183 -0
  422. package/dist/ssrf-D6fl_7ww.js +183 -0
  423. package/dist/status-BOFm7iyj.js +2065 -0
  424. package/dist/status-RI2y_M21.js +2061 -0
  425. package/dist/status.update-DbO7izip.js +79 -0
  426. package/dist/status.update-wXyvcztI.js +79 -0
  427. package/dist/store-BLGrRL_E.js +64 -0
  428. package/dist/store-BYhcsOLr.js +64 -0
  429. package/dist/store-Dv76bGHg.js +2571 -0
  430. package/dist/store-Dw93tSB-.js +53 -0
  431. package/dist/subagent-registry-DWL-tayF.js +4856 -0
  432. package/dist/subagent-registry-HjR1tO3-.js +4854 -0
  433. package/dist/subsystem-BCkt9Ocb.js +1079 -0
  434. package/dist/subsystem-BgxIzx7w.js +1137 -0
  435. package/dist/system-cli-DtrDDmCt.js +71 -0
  436. package/dist/system-cli-xDr_Yyaa.js +76 -0
  437. package/dist/systemd-BlbIQ1PV.js +547 -0
  438. package/dist/systemd-DzXePo7r.js +547 -0
  439. package/dist/systemd-linger-mLbBF4pa.js +75 -0
  440. package/dist/systemd-linger-qlGGW2JB.js +75 -0
  441. package/dist/table-V_9n7CjP.js +279 -0
  442. package/dist/tables-Cy3gObW7.js +55 -0
  443. package/dist/tables-DAuk-Y6F.js +55 -0
  444. package/dist/tables-DRh09aPZ.js +55 -0
  445. package/dist/tailnet-BoTa0e2q.js +40 -0
  446. package/dist/tailnet-Cy0Q27lj.js +40 -0
  447. package/dist/tailscale-CiWkh0vS.js +230 -0
  448. package/dist/tailscale-Driw3j8E.js +230 -0
  449. package/dist/targets-3hewwPvM.js +120 -0
  450. package/dist/targets-Bkw_co-B.js +220 -0
  451. package/dist/targets-C1Tt0ZWd.js +2406 -0
  452. package/dist/targets-CsrqF2M4.js +650 -0
  453. package/dist/targets-DKriCISG.js +53 -0
  454. package/dist/targets-DTM2OPnS.js +650 -0
  455. package/dist/targets-DhhaK2xG.js +53 -0
  456. package/dist/targets-tDrl_ioQ.js +46 -0
  457. package/dist/targets-yq1kGK1_.js +2407 -0
  458. package/dist/thinking-XA5P_zFw.js +88 -0
  459. package/dist/thinking-l-rrvZwu.js +88 -0
  460. package/dist/tokens-7ZtWRjA3.js +21 -0
  461. package/dist/tool-display-AxpSXZVq.js +785 -0
  462. package/dist/tool-display-D6GD-41Y.js +785 -0
  463. package/dist/tool-images-D16vIWPg.js +263 -0
  464. package/dist/tool-images-IVIZ29ID.js +263 -0
  465. package/dist/trash--8b4GDyV.js +125 -0
  466. package/dist/trash-ivbG2QWV.js +125 -0
  467. package/dist/tui-Cbe1EW-B.js +3319 -0
  468. package/dist/tui-Dj3XrTCV.js +3319 -0
  469. package/dist/tui-cli-EGqEcdfE.js +64 -0
  470. package/dist/tui-cli-KKmqnNs2.js +59 -0
  471. package/dist/update-DruVguh4.js +349 -0
  472. package/dist/update-cli-C5tdQeGG.js +1371 -0
  473. package/dist/update-cli-Canq11sh.js +1374 -0
  474. package/dist/update-y8nz-3OC.js +349 -0
  475. package/dist/usage-CAuX4vsd.js +5384 -0
  476. package/dist/utils-C5daYcFn.js +631 -0
  477. package/dist/web-B9gR_cGR.js +3071 -0
  478. package/dist/web-DZ8ahrhK.js +77 -0
  479. package/dist/web-DkYPsnyd.js +71 -0
  480. package/dist/webhooks-cli-DFqGwW1f.js +329 -0
  481. package/dist/webhooks-cli-y-E-q0Xo.js +334 -0
  482. package/dist/whatsapp-actions-BXIe-Uei.js +123 -0
  483. package/dist/whatsapp-actions-BictxOCB.js +129 -0
  484. package/dist/widearea-dns-fHQt5-Q3.js +127 -0
  485. package/dist/workspace-DvbSDgO_.js +449 -0
  486. package/dist/workspace-zLfKNRwR.js +447 -0
  487. package/dist/zod-schema-B9RGngMW.js +2696 -0
  488. package/dist/zod-schema-D3hQ5SKe.js +2696 -0
  489. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -24
  490. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -1
  491. package/package.json +3 -3
  492. package/dist/accounts-BFy_Z3od.js +0 -272
  493. package/dist/accounts-BTXSfPWi.js +0 -270
  494. package/dist/accounts-BxGS70Do.js +0 -36
  495. package/dist/accounts-CNY1TGj1.js +0 -47
  496. package/dist/accounts-DBohBlww.js +0 -32
  497. package/dist/accounts-DqRQ75w3.js +0 -36
  498. package/dist/accounts-iODF3SK2.js +0 -47
  499. package/dist/ack-reactions-B11TAC2D.js +0 -446
  500. package/dist/ack-reactions-BWVjL4H6.js +0 -446
  501. package/dist/acp-cli-CA1xMmVo.js +0 -1320
  502. package/dist/acp-cli-CGo6fJVZ.js +0 -1326
  503. package/dist/active-listener-VzhWW8W6.js +0 -37
  504. package/dist/active-listener-z0qVEcom.js +0 -37
  505. package/dist/agent-CTizRPIJ.js +0 -732
  506. package/dist/agent-D2RVoS5g.js +0 -731
  507. package/dist/agent-helpers-B6VfZ9_u.js +0 -606
  508. package/dist/agent-helpers-CTx5KKJu.js +0 -606
  509. package/dist/agent-scope-BGYzhtWQ.js +0 -121
  510. package/dist/agent-scope-C50VuLKh.js +0 -119
  511. package/dist/agents-BuYn-obw.js +0 -788
  512. package/dist/agents.config-BSTxuTVd.js +0 -116
  513. package/dist/agents.config-p3V3b9u6.js +0 -116
  514. package/dist/audio-DPOuhNq7.js +0 -43
  515. package/dist/audio-VBcVDa08.js +0 -43
  516. package/dist/audio-preflight-BwmCYeuM.js +0 -64
  517. package/dist/audio-preflight-co8gjlPX.js +0 -69
  518. package/dist/audit-oH4urD3G.js +0 -3138
  519. package/dist/audit-qgtCT3ik.js +0 -3138
  520. package/dist/auth-CAczFgAO.js +0 -448
  521. package/dist/auth-Deh9i9Eg.js +0 -448
  522. package/dist/auth-profiles-BquJGKLC.js +0 -279
  523. package/dist/auth-profiles-D8vKiBPq.js +0 -281
  524. package/dist/banner-Cf978khN.js +0 -294
  525. package/dist/binaries-DXW6oATV.js +0 -13
  526. package/dist/bindings-CRU_udk8.js +0 -69
  527. package/dist/bindings-DQZAu8Wv.js +0 -69
  528. package/dist/bonjour-discovery-DdAk1VyO.js +0 -378
  529. package/dist/bonjour-discovery-DuhiIZZx.js +0 -378
  530. package/dist/browser-cli-CZC4h5V4.js +0 -1687
  531. package/dist/browser-cli-DAgi_aQk.js +0 -1692
  532. package/dist/call-BbwtB9Y-.js +0 -2828
  533. package/dist/call-PivL7Uex.js +0 -2829
  534. package/dist/catalog-BqO6yem_.js +0 -185
  535. package/dist/catalog-DFmaYwfk.js +0 -185
  536. package/dist/channel-account-context-CvIDAtHS.js +0 -550
  537. package/dist/channel-account-context-q-o0pG1A.js +0 -550
  538. package/dist/channel-activity-BaCNOZpP.js +0 -94
  539. package/dist/channel-activity-C-G4n9BK.js +0 -292
  540. package/dist/channel-activity-DTKGf3j5.js +0 -94
  541. package/dist/channel-options-Cyappik_.js +0 -32
  542. package/dist/channel-options-DFnypY5S.js +0 -33
  543. package/dist/channel-selection-BGl53D5K.js +0 -51
  544. package/dist/channel-selection-NNPbxnyZ.js +0 -51
  545. package/dist/channel-web-DmhVkWbP.js +0 -2134
  546. package/dist/channel-web-kRC3UYBJ.js +0 -2136
  547. package/dist/channels-cli-C5XRkPJl.js +0 -1421
  548. package/dist/channels-cli-D6TqCI0m.js +0 -1426
  549. package/dist/channels-status-issues-CUc9mpeW.js +0 -18
  550. package/dist/channels-status-issues-DwRDzwrV.js +0 -18
  551. package/dist/chat-envelope-DEZ-5RY8.js +0 -248
  552. package/dist/chat-envelope-el7Uo-Fe.js +0 -248
  553. package/dist/chrome-0QaGKb3L.js +0 -1732
  554. package/dist/chrome-CFeWdP0Y.js +0 -1733
  555. package/dist/chunk-CSQfUhgF.js +0 -341
  556. package/dist/chunk-D0Y_w4oX.js +0 -341
  557. package/dist/clack-prompter-B7tOxhJd.js +0 -122
  558. package/dist/clack-prompter-CCFnKP_1.js +0 -121
  559. package/dist/cleanup-utils-CqAVZz2b.js +0 -94
  560. package/dist/cli-BR2J3c4l.js +0 -125
  561. package/dist/cli-C1q1vSmN.js +0 -130
  562. package/dist/clipboard-D7_SKHPK.js +0 -31
  563. package/dist/clipboard-Dzkx6Q2K.js +0 -31
  564. package/dist/command-format-CVfo8I5f.js +0 -18
  565. package/dist/command-format-DgXcqxBt.js +0 -32
  566. package/dist/command-registry-CYjvOp8W.js +0 -215
  567. package/dist/commands-CDonBOrw.js +0 -41
  568. package/dist/commands-D_-bgTlO.js +0 -41
  569. package/dist/commands-registry-CWJv6xe2.js +0 -892
  570. package/dist/commands-registry-Ci8_cFk9.js +0 -893
  571. package/dist/common-CMI-qsF8.js +0 -156
  572. package/dist/common-DSVmydhm.js +0 -156
  573. package/dist/completion-cli-8iZJqfmX.js +0 -452
  574. package/dist/completion-cli-CYDjEZSt.js +0 -452
  575. package/dist/config-D5XU45KD.js +0 -6953
  576. package/dist/config-FHu9Bn4R.js +0 -6951
  577. package/dist/config-cli-Gehy4sav.js +0 -241
  578. package/dist/config-cli-RC9qMgJq.js +0 -246
  579. package/dist/config-guard-J-Q_DFWk.js +0 -97
  580. package/dist/config-guard-cB5a_ANg.js +0 -75
  581. package/dist/config-validation-BPNyd9_3.js +0 -18
  582. package/dist/config-validation-BPWuvhVe.js +0 -18
  583. package/dist/configure-CC2XdRRm.js +0 -891
  584. package/dist/configure-DxFBJuhZ.js +0 -889
  585. package/dist/constants-BmRFoHl0.js +0 -67
  586. package/dist/constants-C9WPAluB.js +0 -67
  587. package/dist/control-auth-D0tpV3ts.js +0 -397
  588. package/dist/control-auth-_-0PGRUs.js +0 -397
  589. package/dist/control-ui/assets/index-B4ZM1lW1.js +0 -7738
  590. package/dist/control-ui/assets/index-B4ZM1lW1.js.map +0 -1
  591. package/dist/control-ui/assets/index-PED72sKF.css +0 -1
  592. package/dist/control-ui-assets-Cx_mw4D0.js +0 -186
  593. package/dist/control-ui-assets-W1AUuGrO.js +0 -186
  594. package/dist/conversation-label-C4SDz4sT.js +0 -36
  595. package/dist/conversation-label-D1frnvYe.js +0 -36
  596. package/dist/cron-cli-BzERxhr5.js +0 -495
  597. package/dist/cron-cli-C8j_uslU.js +0 -490
  598. package/dist/daemon-cli-C95XNbX0.js +0 -1199
  599. package/dist/daemon-cli-e6sURMqd.js +0 -1197
  600. package/dist/daemon-install-CcohRvKV.js +0 -55
  601. package/dist/daemon-install-DDshfT0J.js +0 -60
  602. package/dist/daemon-install-helpers-CFGAfRlj.js +0 -462
  603. package/dist/daemon-install-helpers-DIUzSFG1.js +0 -462
  604. package/dist/defaults-B5KStIBg.js +0 -7
  605. package/dist/defaults-xUAL2Z-F.js +0 -7
  606. package/dist/deliver-912khjLK.js +0 -481
  607. package/dist/deliver-D56J4-1F.js +0 -481
  608. package/dist/delivery-queue-Cfa9Wmxp.js +0 -244
  609. package/dist/delivery-queue-CxVRi4tw.js +0 -244
  610. package/dist/devices-cli-0qDhTgZR.js +0 -316
  611. package/dist/devices-cli-6SKMR2bV.js +0 -321
  612. package/dist/diagnostics-99iCgBUh.js +0 -46
  613. package/dist/diagnostics-VC0cz7kX.js +0 -46
  614. package/dist/directory-cli-5YXdoVdn.js +0 -217
  615. package/dist/directory-cli-D3IKCHmn.js +0 -222
  616. package/dist/dm-policy-shared-4rkjhcrM.js +0 -22
  617. package/dist/dm-policy-shared-D8lgnmrC.js +0 -22
  618. package/dist/dns-cli-11CtErVU.js +0 -197
  619. package/dist/dns-cli-SiEd_1Lq.js +0 -202
  620. package/dist/dock-BqNINg7k.js +0 -928
  621. package/dist/dock-CQuu41bw.js +0 -929
  622. package/dist/doctor-completion-BR1SlAT3.js +0 -92
  623. package/dist/doctor-completion-CZwpEhIK.js +0 -92
  624. package/dist/doctor-config-flow-BVkHcvoj.js +0 -1933
  625. package/dist/doctor-config-flow-DVYRn0An.js +0 -1934
  626. package/dist/enable-DcJnkzfz.js +0 -59
  627. package/dist/enable-ibNq4UWy.js +0 -59
  628. package/dist/env-DeF64iu0.js +0 -60
  629. package/dist/env-vars-7aZqKPhk.js +0 -93
  630. package/dist/errors-8F-77i6m.js +0 -35
  631. package/dist/errors-DZ199hOo.js +0 -35
  632. package/dist/exec-DbKuYyM1.js +0 -164
  633. package/dist/exec-DkFE7lqU.js +0 -164
  634. package/dist/fetch-BFSBLBkA.js +0 -67
  635. package/dist/fetch-C6XKGA11.js +0 -67
  636. package/dist/fetch-CEDsOiql.js +0 -67
  637. package/dist/file-lock-CIvloidc.js +0 -107
  638. package/dist/file-lock-CzBL_VIx.js +0 -107
  639. package/dist/fs-safe-DSwT85uK.js +0 -88
  640. package/dist/fs-safe-DkBhNAc3.js +0 -98
  641. package/dist/gateway-cli-BEEZhCHv.js +0 -23747
  642. package/dist/gateway-cli-Nob0g_4y.js +0 -23742
  643. package/dist/gateway-rpc-CksB-N83.js +0 -28
  644. package/dist/gateway-rpc-Dq44SkOv.js +0 -28
  645. package/dist/gmail-setup-utils-Cnx8A5pW.js +0 -422
  646. package/dist/gmail-setup-utils-nkabbKOE.js +0 -423
  647. package/dist/health-RT-F3hzT.js +0 -1423
  648. package/dist/health-SOuaKNRa.js +0 -1420
  649. package/dist/health-format-BG95OE6N.js +0 -28
  650. package/dist/heartbeat-visibility-BxkZjE5m.js +0 -125
  651. package/dist/heartbeat-visibility-CGG-G7px.js +0 -125
  652. package/dist/help-format-DAxf0l_h.js +0 -17
  653. package/dist/helpers-kkeXif0Q.js +0 -10
  654. package/dist/hook-runner-global-DJ14gXFP.js +0 -527
  655. package/dist/hooks-cli-DyEKryW8.js +0 -1217
  656. package/dist/hooks-cli-RuEn0-oy.js +0 -1222
  657. package/dist/image-ops-Bi6JPSkD.js +0 -354
  658. package/dist/image-ops-DWytvdh_.js +0 -354
  659. package/dist/import-D8BBZQgl.js +0 -170
  660. package/dist/import-DQ6NI4Fz.js +0 -168
  661. package/dist/inbound-context-CPkkQW0i.js +0 -68
  662. package/dist/inbound-context-DS_kpIYI.js +0 -68
  663. package/dist/inbound-path-policy-Bg4gZBx-.js +0 -250
  664. package/dist/inbound-path-policy-sdr5Ji0k.js +0 -250
  665. package/dist/inspect-Dt8hogS3.js +0 -559
  666. package/dist/inspect-vYIL1oA0.js +0 -559
  667. package/dist/installs-aM5dWAyn.js +0 -325
  668. package/dist/installs-pWdqG8HL.js +0 -325
  669. package/dist/ipv4--2WXMVtE.js +0 -46
  670. package/dist/ipv4-CDQpx1A7.js +0 -46
  671. package/dist/ir-BpaAMTfW.js +0 -940
  672. package/dist/json-files-DzpTak5i.js +0 -46
  673. package/dist/links-C3soDNDH.js +0 -15
  674. package/dist/loader-Ccwsh8Sh.js +0 -22624
  675. package/dist/loader-y9MhJewT.js +0 -22621
  676. package/dist/local-roots-BrH0Q63K.js +0 -313
  677. package/dist/local-roots-nImrw2WR.js +0 -314
  678. package/dist/logger-Bw3cFE5t.js +0 -49
  679. package/dist/logging-C-nxX2fn.js +0 -20
  680. package/dist/login-C_Kt57nO.js +0 -62
  681. package/dist/login-DOmWDMeP.js +0 -61
  682. package/dist/login-qr-CXU0wC5K.js +0 -322
  683. package/dist/login-qr-D0u6fdeO.js +0 -327
  684. package/dist/logs-cli-CschwP4d.js +0 -238
  685. package/dist/logs-cli-D7ayUvz_.js +0 -233
  686. package/dist/markdown-tables-CrmghPAr.js +0 -29
  687. package/dist/markdown-tables-jrnSPvZ6.js +0 -29
  688. package/dist/media-CojxZ45J.js +0 -10492
  689. package/dist/media-DN7yRfrH.js +0 -940
  690. package/dist/message-action-names-CtEZcmlU.js +0 -2521
  691. package/dist/message-action-names-WglOO_DT.js +0 -2521
  692. package/dist/message-channel-DzJqHVZD.js +0 -91
  693. package/dist/net-Cg8AQeke.js +0 -225
  694. package/dist/net-D6D0wgcF.js +0 -225
  695. package/dist/node-cli-Q2-n3Fgv.js +0 -24
  696. package/dist/nodes-cli-C2SoKfCv.js +0 -1343
  697. package/dist/nodes-cli-CQmlfx0K.js +0 -1348
  698. package/dist/nodes-screen-BR9sYoPa.js +0 -250
  699. package/dist/nodes-screen-Cw7Hv7M2.js +0 -250
  700. package/dist/note-Dlv4NmlQ.js +0 -92
  701. package/dist/note-kvWV4xtw.js +0 -92
  702. package/dist/npm-registry-spec-0qiKawvv.js +0 -786
  703. package/dist/npm-registry-spec-COvUzy5J.js +0 -786
  704. package/dist/npm-resolution-6v_Zm-9G.js +0 -86
  705. package/dist/npm-resolution-BFz7LeoN.js +0 -86
  706. package/dist/onboard-CgyU-mDL.js +0 -407
  707. package/dist/onboard-RI4vNTZd.js +0 -405
  708. package/dist/onboard-channels-DN5JoKPd.js +0 -2548
  709. package/dist/onboard-channels-DyAd1OZr.js +0 -2547
  710. package/dist/onboard-config-BCTthQ7J.js +0 -24
  711. package/dist/onboard-config-y-2cgT0V.js +0 -24
  712. package/dist/onboard-helpers-BCzZUD0z.js +0 -363
  713. package/dist/onboard-helpers-sDc2Ky6H.js +0 -362
  714. package/dist/onboard-remote-CJrMtttl.js +0 -127
  715. package/dist/onboard-remote-hyQIBguz.js +0 -127
  716. package/dist/onboarding-DCu1iBTV.js +0 -541
  717. package/dist/onboarding-zKMitzpb.js +0 -543
  718. package/dist/onboarding.finalize-ClHhYE2E.js +0 -401
  719. package/dist/onboarding.finalize-D5JkVJgg.js +0 -398
  720. package/dist/onboarding.gateway-config-DFh71Ndn.js +0 -198
  721. package/dist/onboarding.gateway-config-VBk6AP9U.js +0 -191
  722. package/dist/outbound-BYlZshIw.js +0 -221
  723. package/dist/outbound-CFfJC1j5.js +0 -220
  724. package/dist/outbound-attachment-BCNs1u1F.js +0 -18
  725. package/dist/outbound-attachment-B_0D60Yr.js +0 -18
  726. package/dist/outbound-attachment-o0seS0CP.js +0 -18
  727. package/dist/pairing-cli-BeydfoF9.js +0 -122
  728. package/dist/pairing-cli-DWzX866x.js +0 -127
  729. package/dist/pairing-labels-B-N8S5Fc.js +0 -9
  730. package/dist/pairing-labels-B_53dY5L.js +0 -9
  731. package/dist/pairing-store-BxdqFZGK.js +0 -460
  732. package/dist/pairing-store-CTkD51uW.js +0 -459
  733. package/dist/path-env-DR5vn3QL.js +0 -89
  734. package/dist/path-env-qRJbjJzj.js +0 -89
  735. package/dist/path-safety-DkT9RmTG.js +0 -14
  736. package/dist/path-safety-juI2XbO1.js +0 -14
  737. package/dist/plugin-auto-enable-D23gv7Aw.js +0 -302
  738. package/dist/plugin-auto-enable-DuPS9XiJ.js +0 -301
  739. package/dist/plugin-registry-CNu_1KZz.js +0 -33
  740. package/dist/plugin-registry-DeHwd2jk.js +0 -33
  741. package/dist/plugin-sdk/agents/agent-helpers/thinking.d.ts +0 -5
  742. package/dist/plugin-sdk/agents/auth-profiles/constants.d.ts +0 -16
  743. package/dist/plugin-sdk/agents/auth-profiles/display.d.ts +0 -7
  744. package/dist/plugin-sdk/agents/auth-profiles/doctor.d.ts +0 -8
  745. package/dist/plugin-sdk/agents/auth-profiles/oauth.d.ts +0 -14
  746. package/dist/plugin-sdk/agents/auth-profiles/session-override.d.ts +0 -18
  747. package/dist/plugin-sdk/agents/auth-profiles.d.ts +0 -8
  748. package/dist/plugin-sdk/agents/defaults.d.ts +0 -3
  749. package/dist/plugin-sdk/agents/provider-auth.d.ts +0 -40
  750. package/dist/plugin-sdk/auto-reply/model-runtime.d.ts +0 -17
  751. package/dist/plugin-sdk/config/model-input.d.ts +0 -9
  752. package/dist/plugin-sdk/config/zod-schema.agent-model.d.ts +0 -5
  753. package/dist/plugin-sdk/sessions/model-overrides.d.ts +0 -14
  754. package/dist/plugin-sdk/telegram/reasoning-lane-coordinator.d.ts +0 -18
  755. package/dist/plugins-BflZz0sp.js +0 -453
  756. package/dist/plugins-cli-DV82scUw.js +0 -798
  757. package/dist/plugins-cli-Qj1UyIZO.js +0 -793
  758. package/dist/plugins-woGRXMzU.js +0 -455
  759. package/dist/ports-DrruB2fK.js +0 -370
  760. package/dist/ports-GT1yV-Tg.js +0 -96
  761. package/dist/ports-NPqtlfp0.js +0 -316
  762. package/dist/ports-QMI4-F9m.js +0 -96
  763. package/dist/program-CQmIaRUI.js +0 -244
  764. package/dist/program-context-DEU6ACnL.js +0 -474
  765. package/dist/progress-CBkSaM6z.js +0 -124
  766. package/dist/prompt-Bllj1dhc.js +0 -21
  767. package/dist/prompt-select-styled-BhTN6zE2.js +0 -1650
  768. package/dist/prompt-select-styled-WopXnjIy.js +0 -1647
  769. package/dist/prompt-style-DVEm3BZW.js +0 -9
  770. package/dist/provider-dispatcher-B4QMe-I6.js +0 -659
  771. package/dist/provider-dispatcher-Bfauw6zz.js +0 -660
  772. package/dist/push-apns-C0LyG-WB.js +0 -713
  773. package/dist/push-apns-DuG95AKC.js +0 -711
  774. package/dist/pw-ai-D9n6-Wa6.js +0 -1906
  775. package/dist/pw-ai-T280E6Mn.js +0 -1910
  776. package/dist/qr-cli-DVECWTHN.js +0 -352
  777. package/dist/qr-cli-hSLixZCe.js +0 -347
  778. package/dist/redact-eZq1uwNK.js +0 -191
  779. package/dist/redact-snapshot-BZYLIqe-.js +0 -2028
  780. package/dist/redact-snapshot-C6hVx_9I.js +0 -2028
  781. package/dist/register.agent-Dmj-sgEl.js +0 -1043
  782. package/dist/register.agent-IspcBFeD.js +0 -286
  783. package/dist/register.configure-BqJEqyGL.js +0 -130
  784. package/dist/register.configure-PPkU_4Ea.js +0 -124
  785. package/dist/register.import-Bs-UkOs-.js +0 -27
  786. package/dist/register.import-DLng8g-e.js +0 -30
  787. package/dist/register.maintenance-BbpkJil3.js +0 -497
  788. package/dist/register.maintenance-C5nkOQxa.js +0 -494
  789. package/dist/register.message-C83Hi1b3.js +0 -681
  790. package/dist/register.message-D16isu4u.js +0 -686
  791. package/dist/register.onboard-B8EzX3wY.js +0 -257
  792. package/dist/register.onboard-CyRbr_0V.js +0 -262
  793. package/dist/register.setup-DWyoowAz.js +0 -109
  794. package/dist/register.setup-Dz6GwMnu.js +0 -114
  795. package/dist/register.status-health-sessions-CbQOfycz.js +0 -423
  796. package/dist/register.status-health-sessions-DXIWG47y.js +0 -669
  797. package/dist/register.subclis-DeGP5UPU.js +0 -267
  798. package/dist/replies-BKrzM0QI.js +0 -136
  799. package/dist/replies-Cl2gYBVt.js +0 -136
  800. package/dist/reply-CCu_DY64.js +0 -13900
  801. package/dist/reply-DSKC8kyS.js +0 -13897
  802. package/dist/reply-directives-BHJKp1Du.js +0 -182
  803. package/dist/reply-directives-CD2WycBM.js +0 -182
  804. package/dist/reply-payloads-D_BM1Anb.js +0 -527
  805. package/dist/reply-prefix-DBLCYiup.js +0 -38
  806. package/dist/reply-prefix-Q4DOJSn_.js +0 -38
  807. package/dist/resolve-route-CBVbY0xS.js +0 -249
  808. package/dist/resolve-route-DGEgTEif.js +0 -249
  809. package/dist/response-prefix-template-rVZQOViK.js +0 -136
  810. package/dist/response-prefix-template-up4REfuR.js +0 -136
  811. package/dist/retry-BhuXOEVR.js +0 -77
  812. package/dist/retry-DUjAzOBy.js +0 -77
  813. package/dist/run-main-Um5xhxla.js +0 -320
  814. package/dist/runner-yVJ4HB2K.js +0 -2294
  815. package/dist/runner-z92MWZ3m.js +0 -2294
  816. package/dist/runtime-guard-DZ_xuCc4.js +0 -60
  817. package/dist/secure-random-Pl9rPl0l.js +0 -44
  818. package/dist/security-cli-CdwbWZUj.js +0 -484
  819. package/dist/security-cli-DP5QJpa5.js +0 -478
  820. package/dist/send-B1_Ymjb9.js +0 -1778
  821. package/dist/send-B84axiIa.js +0 -29
  822. package/dist/send-BN_zYVlx.js +0 -547
  823. package/dist/send-BqVOxAmK.js +0 -1174
  824. package/dist/send-Bx9bUGav.js +0 -492
  825. package/dist/send-C3pdJ6p-.js +0 -2245
  826. package/dist/send-CBGSXjfD.js +0 -2245
  827. package/dist/send-CGXyTF22.js +0 -426
  828. package/dist/send-CKavrhXj.js +0 -11
  829. package/dist/send-D08Je6DL.js +0 -374
  830. package/dist/send-D1aYEG-k.js +0 -332
  831. package/dist/send-DHldI3gf.js +0 -492
  832. package/dist/send-D_DUQJ6H.js +0 -349
  833. package/dist/send-Ds63eF4a.js +0 -349
  834. package/dist/send-YRVDWfSs.js +0 -547
  835. package/dist/send-xnwty9cY.js +0 -1775
  836. package/dist/server-BQFoyCRR.js +0 -200
  837. package/dist/server-DhXw25Jq.js +0 -205
  838. package/dist/server-lifecycle-BjCCyD3w.js +0 -2437
  839. package/dist/server-lifecycle-Coyr6Lda.js +0 -2437
  840. package/dist/server-node-events-De4WZQQD.js +0 -393
  841. package/dist/server-node-events-dXXayuqY.js +0 -398
  842. package/dist/service-Bjqii5nW.js +0 -670
  843. package/dist/service-fp29z5Ww.js +0 -670
  844. package/dist/session-DBL5nHDy.js +0 -170
  845. package/dist/session-cost-usage-DX09eTPU.js +0 -627
  846. package/dist/session-cost-usage-yYi525j3.js +0 -627
  847. package/dist/session-dirs-Cj5xi7zX.js +0 -947
  848. package/dist/session-dirs-DdF6TDsE.js +0 -947
  849. package/dist/session-utils-CEtEq6bi.js +0 -625
  850. package/dist/session-utils-WmlWAs1r.js +0 -625
  851. package/dist/session-xKIW6gL2.js +0 -170
  852. package/dist/sessions--PykPynp.js +0 -2593
  853. package/dist/sessions-Bw4LRnSr.js +0 -252
  854. package/dist/ssrf-Ck9HDZpv.js +0 -183
  855. package/dist/ssrf-m7kFIobZ.js +0 -183
  856. package/dist/status-CtzYFLLF.js +0 -2072
  857. package/dist/status-DiN1cq2p.js +0 -2068
  858. package/dist/status.update-C55QM2xs.js +0 -79
  859. package/dist/status.update-CBmPXwYN.js +0 -79
  860. package/dist/store-C3tOpizT.js +0 -64
  861. package/dist/store-CPJXuhvQ.js +0 -53
  862. package/dist/store-SusmIfz7.js +0 -2595
  863. package/dist/store-v3P-OWhi.js +0 -64
  864. package/dist/subagent-registry-Db4Ho_2Y.js +0 -4858
  865. package/dist/subagent-registry-Du_j0Fnt.js +0 -4860
  866. package/dist/subsystem-BUXAJwPD.js +0 -1079
  867. package/dist/subsystem-COd61u0P.js +0 -1139
  868. package/dist/system-cli-DYCpLO3T.js +0 -75
  869. package/dist/system-cli-eAk5wVbP.js +0 -70
  870. package/dist/systemd-DSnlM3jX.js +0 -547
  871. package/dist/systemd-TfK8GuTx.js +0 -547
  872. package/dist/systemd-linger-Axnc1xCb.js +0 -75
  873. package/dist/systemd-linger-_0_-RY4v.js +0 -75
  874. package/dist/table-DPTzZyhu.js +0 -279
  875. package/dist/tables-DI5LGEr1.js +0 -55
  876. package/dist/tables-PxcSPSO0.js +0 -55
  877. package/dist/tables-TWiml6b1.js +0 -55
  878. package/dist/tailnet-CEudzG0i.js +0 -40
  879. package/dist/tailnet-PnMrjwGT.js +0 -40
  880. package/dist/tailscale-DTATQxAG.js +0 -230
  881. package/dist/tailscale-Dbyahx0J.js +0 -230
  882. package/dist/targets-C1NeMn2J.js +0 -220
  883. package/dist/targets-CcTME3bp.js +0 -46
  884. package/dist/targets-CmC5m7Ey.js +0 -53
  885. package/dist/targets-D-u6Kyio.js +0 -650
  886. package/dist/targets-D7OKVXMI.js +0 -650
  887. package/dist/targets-DB4vBpIQ.js +0 -2172
  888. package/dist/targets-DfqPGOmM.js +0 -2173
  889. package/dist/targets-DyybKefq.js +0 -53
  890. package/dist/targets-JCISV-hS.js +0 -120
  891. package/dist/tokens-DzFOtLlW.js +0 -21
  892. package/dist/tool-display-Br6mwaJc.js +0 -785
  893. package/dist/tool-display-sgNwLOBj.js +0 -785
  894. package/dist/tool-images-BNfIJ_Kj.js +0 -263
  895. package/dist/tool-images-kloBqxqK.js +0 -263
  896. package/dist/trash-DPi0aCCQ.js +0 -125
  897. package/dist/trash-D_Jd_yQZ.js +0 -125
  898. package/dist/tui-CHc0EfJO.js +0 -3392
  899. package/dist/tui-CyHwc2uX.js +0 -3392
  900. package/dist/tui-cli-BvwbrIYO.js +0 -63
  901. package/dist/tui-cli-C9I18SfW.js +0 -58
  902. package/dist/update-DxyjwCL2.js +0 -349
  903. package/dist/update-IX7vdqA8.js +0 -349
  904. package/dist/update-cli-CBeXUSzq.js +0 -1373
  905. package/dist/update-cli-DkAWmUrp.js +0 -1370
  906. package/dist/usage-CYlQW4M2.js +0 -5279
  907. package/dist/utils-LBKvDoPx.js +0 -631
  908. package/dist/web-BUYUdnRH.js +0 -3065
  909. package/dist/web-Dquzwqf4.js +0 -70
  910. package/dist/web-tS8diboh.js +0 -76
  911. package/dist/webhooks-cli-B7Vw3CMz.js +0 -333
  912. package/dist/webhooks-cli-BpZHQlVd.js +0 -328
  913. package/dist/whatsapp-actions-D5HXezjp.js +0 -128
  914. package/dist/whatsapp-actions-DaA291Ya.js +0 -122
  915. package/dist/widearea-dns-DSoaA-eH.js +0 -127
  916. package/dist/workspace-B4ZvVYT9.js +0 -447
  917. package/dist/workspace-B8PA8oxJ.js +0 -449
  918. /package/dist/{account-lookup-0KDSp5Mj.js → account-lookup-BOCzCnir.js} +0 -0
  919. /package/dist/{account-lookup-zvANGr2x.js → account-lookup-DGscKBsr.js} +0 -0
  920. /package/dist/{ansi-D04X81yq.js → ansi-aRwLYlzD.js} +0 -0
  921. /package/dist/{api-BeQMq2iS.js → api-BDff51CS.js} +0 -0
  922. /package/dist/{api-CxX8-gGz.js → api-qWSMsT8m.js} +0 -0
  923. /package/dist/{argv-Co-b9Zsc.js → argv-neJY_Hxm.js} +0 -0
  924. /package/dist/{brew-C4zKZsHX.js → brew-ByYl36Mt.js} +0 -0
  925. /package/dist/{brew-DbSbN8sD.js → brew-CMSQ5Fek.js} +0 -0
  926. /package/dist/{chat-type-CYPyHAj-.js → chat-type-BKe459rw.js} +0 -0
  927. /package/dist/{chat-type-DKb2TlGZ.js → chat-type-DyovJwCt.js} +0 -0
  928. /package/dist/{cleanup-utils-CwQvD73q.js → cleanup-utils-S_P5Jebv.js} +0 -0
  929. /package/dist/{cli-name-BicfmwQX.js → cli-name-CRLBidNP.js} +0 -0
  930. /package/dist/{cli-name-C6rJGl18.js → cli-name-Yv30OygA.js} +0 -0
  931. /package/dist/{cli-utils-BhXbz2UF.js → cli-utils-C5nQDfa6.js} +0 -0
  932. /package/dist/{cli-utils-DZe_rVkZ.js → cli-utils-KcEwAsuZ.js} +0 -0
  933. /package/dist/{client-C61M8zI3.js → client-C7B0uFB0.js} +0 -0
  934. /package/dist/{client-DdpmATKq.js → client-Cd2HNUX0.js} +0 -0
  935. /package/dist/{command-options-C4paWSGf.js → command-options-1bi44p_B.js} +0 -0
  936. /package/dist/{command-options-CA30lfLK.js → command-options-7y5Zrv4M.js} +0 -0
  937. /package/dist/{config-eval-CjGZtLwx.js → config-eval-CJtk3Msr.js} +0 -0
  938. /package/dist/{config-eval-H_wlEYIG.js → config-eval-DQIwdWg7.js} +0 -0
  939. /package/dist/{constants-ChptG3d7.js → constants--3PuQVaS.js} +0 -0
  940. /package/dist/{constants-DY6b-_Wl.js → constants-DNWjlxZ5.js} +0 -0
  941. /package/dist/{credentials-BHWUBHMd.js → credentials-BhnauW0K.js} +0 -0
  942. /package/dist/{credentials-DFsi1_e8.js → credentials-eZcqWNG_.js} +0 -0
  943. /package/dist/{daemon-runtime-CMnbwryP.js → daemon-runtime-99xh1fGv.js} +0 -0
  944. /package/dist/{daemon-runtime-CvqE4ysg.js → daemon-runtime-BOcdJaFy.js} +0 -0
  945. /package/dist/{dangerous-name-matching-BzmiLXmA.js → dangerous-name-matching-YeatnYIA.js} +0 -0
  946. /package/dist/{dangerous-name-matching-DaVRgwer.js → dangerous-name-matching-oVb1EqYT.js} +0 -0
  947. /package/dist/{dangerous-tools-BOLoCRv4.js → dangerous-tools-BMt8-6jE.js} +0 -0
  948. /package/dist/{dangerous-tools-Baq7Q-i6.js → dangerous-tools-CripTfYv.js} +0 -0
  949. /package/dist/{fetch-timeout-DTIN7CGM.js → fetch-timeout-Db3da8yR.js} +0 -0
  950. /package/dist/{fetch-timeout-DoySHqfO.js → fetch-timeout-l_6RdoMw.js} +0 -0
  951. /package/dist/{file-identity-BxlKD8Ys.js → file-identity-Bs9zZOi2.js} +0 -0
  952. /package/dist/{format-duration-CqUERz51.js → format-duration-Bo-Mxi3E.js} +0 -0
  953. /package/dist/{format-duration-Ct-yiwkS.js → format-duration-CfrJ5T8k.js} +0 -0
  954. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-8cNYQsqb.js} +0 -0
  955. /package/dist/{format-relative-CxLpEQOX.js → format-relative-CZOlQ2pA.js} +0 -0
  956. /package/dist/{health-format-B_QRD8Si.js → health-format-WMRp1BbP.js} +0 -0
  957. /package/dist/{heartbeat-wake-LGEgcXjs.js → heartbeat-wake-BtRrOB-t.js} +0 -0
  958. /package/dist/{heartbeat-wake-Y97geucO.js → heartbeat-wake-eRINROYK.js} +0 -0
  959. /package/dist/{help-format-NNm_Ov4H.js → help-format-BEb0SPHF.js} +0 -0
  960. /package/dist/{helpers-BAsMXprO.js → helpers-BJtPtu_2.js} +0 -0
  961. /package/dist/{helpers-DLgbkcEn.js → helpers-Cj6f8SPZ.js} +0 -0
  962. /package/dist/{helpers-R7bU5IBz.js → helpers-ryxLx-aM.js} +0 -0
  963. /package/dist/{host-env-security-szwfmhC4.js → host-env-security-CbiODGvQ.js} +0 -0
  964. /package/dist/{input-provenance-Bn6thJNm.js → input-provenance-CPhdY-0F.js} +0 -0
  965. /package/dist/{input-provenance-xUsSMOsz.js → input-provenance-DUNEQoFM.js} +0 -0
  966. /package/dist/{ip-C9q3Oq20.js → ip-BAhS4rY2.js} +0 -0
  967. /package/dist/{ip-D0zgNmBV.js → ip-BcdPcLiP.js} +0 -0
  968. /package/dist/{is-main-DN8-sNR5.js → is-main-KcWqINzy.js} +0 -0
  969. /package/dist/{json-file-ChO_R9yh.js → json-file-BVvmrQG3.js} +0 -0
  970. /package/dist/{json-file-B7l5-Xhr.js → json-file-Dbg7nZg1.js} +0 -0
  971. /package/dist/{json-files-CmpYSF4G.js → json-files-DSKEdz7x.js} +0 -0
  972. /package/dist/{lanes-ByWMUgrz.js → lanes-Brd-nf-Z.js} +0 -0
  973. /package/dist/{lanes-cHJ5arWg.js → lanes-COs3zODW.js} +0 -0
  974. /package/dist/{links-Bz4V7R_p.js → links-gse8sWn-.js} +0 -0
  975. /package/dist/{location-DBWCGNLq.js → location-D1FM_C63.js} +0 -0
  976. /package/dist/{location-GbZ0bBRU.js → location-LuzkqHGi.js} +0 -0
  977. /package/dist/{logger-DyL5G2DO.js → logger-BMP_j_Lx.js} +0 -0
  978. /package/dist/{logger-BWMPnILd.js → logger-DWbwXLjl.js} +0 -0
  979. /package/dist/{logger-GvipVDfh.js → logger-DXCDb7qu.js} +0 -0
  980. /package/dist/{logging-D8-Kozjc.js → logging-CAgCb3n3.js} +0 -0
  981. /package/dist/{message-channel-uWMAiywE.js → message-channel-D72Bc6Tb.js} +0 -0
  982. /package/dist/{mime-BS3jhcZE.js → mime-Cqg1jjia.js} +0 -0
  983. /package/dist/{mime-Cxh_64P6.js → mime-D4bQLMJL.js} +0 -0
  984. /package/dist/{mutable-allowlist-detectors-DiZDtmlZ.js → mutable-allowlist-detectors-NtI6s4TE.js} +0 -0
  985. /package/dist/{mutable-allowlist-detectors-U5ThQr9V.js → mutable-allowlist-detectors-nAmo9v5u.js} +0 -0
  986. /package/dist/{node-cli-Uf6lAntf.js → node-cli-bNJbha3z.js} +0 -0
  987. /package/dist/{parse-log-line-enq8pduH.js → parse-log-line-BY9Vz72K.js} +0 -0
  988. /package/dist/{parse-log-line-mz9TG6ig.js → parse-log-line-BrrE4onI.js} +0 -0
  989. /package/dist/{parse-timeout-BMP8a0_a.js → parse-timeout-Dfyln-4M.js} +0 -0
  990. /package/dist/{path-guards-CIx4hURU.js → path-guards-D9LU0y9L.js} +0 -0
  991. /package/dist/{path-guards-CrQOUlsq.js → path-guards-crZaTVvq.js} +0 -0
  992. /package/dist/plugin-sdk/{agents → auth}/api-key-rotation.d.ts +0 -0
  993. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/paths.d.ts +0 -0
  994. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/profiles.d.ts +0 -0
  995. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/store.d.ts +0 -0
  996. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/types.d.ts +0 -0
  997. /package/dist/{plugins-allowlist-BbTQ5Z2k.js → plugins-allowlist-CD4oIJNk.js} +0 -0
  998. /package/dist/{plugins-allowlist-C20oaESO.js → plugins-allowlist-CUhk3GDh.js} +0 -0
  999. /package/dist/{polls-B0CCBDeR.js → polls-ChvH1OIW.js} +0 -0
  1000. /package/dist/{polls-CwwHzYBM.js → polls-Dn1C2d1-.js} +0 -0
  1001. /package/dist/{ports-lsof-Wteul3ju.js → ports-lsof-BDQWExpn.js} +0 -0
  1002. /package/dist/{process-scoped-map-CV9kDvfG.js → process-scoped-map-BwUkYFQV.js} +0 -0
  1003. /package/dist/{process-scoped-map-PEvnG75N.js → process-scoped-map-CBWcUvTa.js} +0 -0
  1004. /package/dist/{program-context-jqeI5alP.js → program-context-DtsEOsdM.js} +0 -0
  1005. /package/dist/{progress-C1kUfYL-.js → progress-BjGCAXH7.js} +0 -0
  1006. /package/dist/{prompt-Yn2yClg1.js → prompt-FIISMuNm.js} +0 -0
  1007. /package/dist/{prompt-style-DjEYC_s-.js → prompt-style-DL64_X-p.js} +0 -0
  1008. /package/dist/{provider-utils-3JTMJroG.js → provider-utils-DiLhkKQp.js} +0 -0
  1009. /package/dist/{proxy-DL3MD6-P.js → proxy-DUTF0OYE.js} +0 -0
  1010. /package/dist/{proxy-DpNv2cSV.js → proxy-Dv0sbx6A.js} +0 -0
  1011. /package/dist/{pw-ai-state-CGfLv6nV.js → pw-ai-state-DKhOTqDv.js} +0 -0
  1012. /package/dist/{pw-ai-state-Dynx20hr.js → pw-ai-state-kkp06zyZ.js} +0 -0
  1013. /package/dist/{redact-Dx1Fue21.js → redact-BTeK8lMZ.js} +0 -0
  1014. /package/dist/{redact-identifier-BTIWtaa-.js → redact-identifier-F6t5pklx.js} +0 -0
  1015. /package/dist/{redact-identifier-CAagcfWA.js → redact-identifier-VdOrq-IK.js} +0 -0
  1016. /package/dist/{remoteclaw-root-C2HV2VeC.js → remoteclaw-root-DF8m3X4C.js} +0 -0
  1017. /package/dist/{remoteclaw-root-DybYl8PL.js → remoteclaw-root-rJHOCwzo.js} +0 -0
  1018. /package/dist/{render-CCLsW6Lz.js → render-e7fENCYH.js} +0 -0
  1019. /package/dist/{render-uf6PvGMV.js → render-qcqmrHse.js} +0 -0
  1020. /package/dist/{retry-DnqPAqWp.js → retry-CwZiwLDN.js} +0 -0
  1021. /package/dist/{runtime-DJNp29jv.js → runtime-Ds3E9SqF.js} +0 -0
  1022. /package/dist/{runtime-guard-U-ewY_QH.js → runtime-guard-CdJVmJc0.js} +0 -0
  1023. /package/dist/{secret-equal-BbHdTtqY.js → secret-equal-CDUVxXmp.js} +0 -0
  1024. /package/dist/{secret-equal-CXJEZiWb.js → secret-equal-d3sEnK98.js} +0 -0
  1025. /package/dist/{secure-random-CS2mSdTn.js → secure-random-CJtykx_p.js} +0 -0
  1026. /package/dist/{secure-random-_dzDDlFo.js → secure-random-y6N6Gted.js} +0 -0
  1027. /package/dist/{session-key-5YLnn_qf.js → session-key-BF-9YzxC.js} +0 -0
  1028. /package/dist/{stagger-BXv_apuy.js → stagger-B-_Wnofy.js} +0 -0
  1029. /package/dist/{stagger-MI9gd2rQ.js → stagger-CjkdqPuN.js} +0 -0
  1030. /package/dist/{status-BmtCS3T1.js → status-BFmH9Uge.js} +0 -0
  1031. /package/dist/{status-BrwHRn2B.js → status-BIupzBh9.js} +0 -0
  1032. /package/dist/{strip-inbound-meta-DjKcSFaW.js → strip-inbound-meta-BNXRYvmY.js} +0 -0
  1033. /package/dist/{strip-inbound-meta-jy3bkUab.js → strip-inbound-meta-BtNFmc6V.js} +0 -0
  1034. /package/dist/{table-C1rdyYl9.js → table-Au5EeKD6.js} +0 -0
  1035. /package/dist/{target-errors-BDpPcwh5.js → target-errors-B6YON-5k.js} +0 -0
  1036. /package/dist/{target-errors-DdIAPcMM.js → target-errors-sPHoHj73.js} +0 -0
  1037. /package/dist/{targets-D-qLBpTA.js → targets-BtGRUQMa.js} +0 -0
  1038. /package/dist/{targets-BMenhVHg.js → targets-D3r6Zgic.js} +0 -0
  1039. /package/dist/{targets-C-2xwh9f.js → targets-DDdPVd12.js} +0 -0
  1040. /package/dist/{targets-UncQvCVs.js → targets-Ds5eT_RZ.js} +0 -0
  1041. /package/dist/{targets-D7PT_rdO.js → targets-DtvPW-B8.js} +0 -0
  1042. /package/dist/{text-format-BQ3z_OXA.js → text-format-CFm4X8Ze.js} +0 -0
  1043. /package/dist/{text-format-oWqzVmah.js → text-format-KHU3KzvQ.js} +0 -0
  1044. /package/dist/{tokens-B-jmvNR9.js → tokens-BGw4xHhW.js} +0 -0
  1045. /package/dist/{usage-BdhBT0Vz.js → usage-BEjWlD9A.js} +0 -0
  1046. /package/dist/{usage-format-C3mNLfhI.js → usage-format-Cx3JveFn.js} +0 -0
  1047. /package/dist/{usage-format-DAaPzr_z.js → usage-format-D-ZaYT_e.js} +0 -0
  1048. /package/dist/{usage-BtQcAnf6.js → usage-o8O_TxA-.js} +0 -0
  1049. /package/dist/{widearea-dns-CsmBVbez.js → widearea-dns-DUDYT3z2.js} +0 -0
  1050. /package/dist/{workspace-BzPeZDew.js → workspace-9__vtmnA.js} +0 -0
  1051. /package/dist/{wsl-B_sPlzWw.js → wsl-BLrG__iS.js} +0 -0
  1052. /package/dist/{wsl-BCnYV9O0.js → wsl-C2dudsWt.js} +0 -0
@@ -13,16 +13,13 @@ import { execFileSync, spawn } from "node:child_process";
13
13
  import { fileURLToPath } from "node:url";
14
14
  import AjvPkg from "ajv";
15
15
  import { z } from "zod";
16
+ import { lookup } from "node:dns";
17
+ import { lookup as lookup$1 } from "node:dns/promises";
18
+ import { Agent } from "undici";
19
+ import ipaddr from "ipaddr.js";
20
+ import { fileTypeFromBuffer } from "file-type";
16
21
  import { createInterface } from "node:readline";
17
22
 
18
- //#region src/config/model-input.ts
19
- function resolveAgentModelPrimaryValue(model) {
20
- if (typeof model === "string") return model.trim() || void 0;
21
- if (!model || typeof model !== "object") return;
22
- return model.primary?.trim() || void 0;
23
- }
24
-
25
- //#endregion
26
23
  //#region src/infra/home-dir.ts
27
24
  function normalize(value) {
28
25
  const trimmed = value?.trim();
@@ -542,8 +539,8 @@ function pruneOldRollingLogs(dir) {
542
539
 
543
540
  //#endregion
544
541
  //#region src/terminal/palette.ts
545
- const LOBSTER_PALETTE = {
546
- accent: "#FF5A2D",
542
+ const PALETTE = {
543
+ accent: "#FF5A36",
547
544
  accentBright: "#FF7A3D",
548
545
  accentDim: "#D14A22",
549
546
  info: "#FF8A5B",
@@ -559,17 +556,17 @@ const hasForceColor = typeof process.env.FORCE_COLOR === "string" && process.env
559
556
  const baseChalk = process.env.NO_COLOR && !hasForceColor ? new Chalk({ level: 0 }) : chalk;
560
557
  const hex = (value) => baseChalk.hex(value);
561
558
  const theme = {
562
- accent: hex(LOBSTER_PALETTE.accent),
563
- accentBright: hex(LOBSTER_PALETTE.accentBright),
564
- accentDim: hex(LOBSTER_PALETTE.accentDim),
565
- info: hex(LOBSTER_PALETTE.info),
566
- success: hex(LOBSTER_PALETTE.success),
567
- warn: hex(LOBSTER_PALETTE.warn),
568
- error: hex(LOBSTER_PALETTE.error),
569
- muted: hex(LOBSTER_PALETTE.muted),
570
- heading: baseChalk.bold.hex(LOBSTER_PALETTE.accent),
571
- command: hex(LOBSTER_PALETTE.accentBright),
572
- option: hex(LOBSTER_PALETTE.warn)
559
+ accent: hex(PALETTE.accent),
560
+ accentBright: hex(PALETTE.accentBright),
561
+ accentDim: hex(PALETTE.accentDim),
562
+ info: hex(PALETTE.info),
563
+ success: hex(PALETTE.success),
564
+ warn: hex(PALETTE.warn),
565
+ error: hex(PALETTE.error),
566
+ muted: hex(PALETTE.muted),
567
+ heading: baseChalk.bold.hex(PALETTE.accent),
568
+ command: hex(PALETTE.accentBright),
569
+ option: hex(PALETTE.warn)
573
570
  };
574
571
 
575
572
  //#endregion
@@ -578,6 +575,10 @@ let globalVerbose = false;
578
575
  function isVerbose() {
579
576
  return globalVerbose;
580
577
  }
578
+ function logVerboseConsole(message) {
579
+ if (!globalVerbose) return;
580
+ console.log(theme.muted(message));
581
+ }
581
582
  const success = theme.success;
582
583
  const warn = theme.warn;
583
584
  const info = theme.info;
@@ -1087,7 +1088,8 @@ function resolveAgentConfig(cfg, agentId) {
1087
1088
  groupChat: entry.groupChat,
1088
1089
  subagents: typeof entry.subagents === "object" && entry.subagents ? entry.subagents : void 0,
1089
1090
  sandbox: entry.sandbox,
1090
- tools: entry.tools
1091
+ tools: entry.tools,
1092
+ auth: entry.auth
1091
1093
  };
1092
1094
  }
1093
1095
  function resolveAgentWorkspaceDir(cfg, agentId) {
@@ -1096,6 +1098,11 @@ function resolveAgentWorkspaceDir(cfg, agentId) {
1096
1098
  if (configured) return stripNullBytes(resolveUserPath(configured));
1097
1099
  throw new Error(`agent '${id}' has no workspace configured — set agents.list[].workspace in remoteclaw.json`);
1098
1100
  }
1101
+ function resolveAgentWorkspaceDirOrNull(cfg, agentId) {
1102
+ const configured = resolveAgentConfig(cfg, normalizeAgentId(agentId))?.workspace?.trim();
1103
+ if (configured) return stripNullBytes(resolveUserPath(configured));
1104
+ return null;
1105
+ }
1099
1106
  function resolveAgentDir(cfg, agentId) {
1100
1107
  const id = normalizeAgentId(agentId);
1101
1108
  const configured = resolveAgentConfig(cfg, id)?.agentDir?.trim();
@@ -1104,11 +1111,6 @@ function resolveAgentDir(cfg, agentId) {
1104
1111
  return path.join(root, "agents", id, "agent");
1105
1112
  }
1106
1113
 
1107
- //#endregion
1108
- //#region src/agents/defaults.ts
1109
- const DEFAULT_PROVIDER = "anthropic";
1110
- const DEFAULT_MODEL = "claude-opus-4-6";
1111
-
1112
1114
  //#endregion
1113
1115
  //#region src/agents/identity.ts
1114
1116
  function resolveAgentIdentity(cfg, agentId) {
@@ -2168,7 +2170,9 @@ function applyContextPruningDefaults(cfg) {
2168
2170
  };
2169
2171
  modelsMutated = true;
2170
2172
  }
2171
- const primary = resolvePrimaryModelRef(resolveAgentModelPrimaryValue(defaults.model) ?? void 0);
2173
+ const rawModel = defaults.model;
2174
+ const rawPrimary = typeof rawModel === "string" ? rawModel : rawModel?.primary;
2175
+ const primary = resolvePrimaryModelRef(typeof rawPrimary === "string" ? rawPrimary : void 0);
2172
2176
  if (primary) {
2173
2177
  const parsedPrimary = parseModelRef(primary, "anthropic");
2174
2178
  if (isAnthropicCacheRetentionTarget(parsedPrimary)) {
@@ -2201,25 +2205,6 @@ function applyContextPruningDefaults(cfg) {
2201
2205
  }
2202
2206
  };
2203
2207
  }
2204
- function applyCompactionDefaults(cfg) {
2205
- const defaults = cfg.agents?.defaults;
2206
- if (!defaults) return cfg;
2207
- const compaction = defaults?.compaction;
2208
- if (compaction?.mode) return cfg;
2209
- return {
2210
- ...cfg,
2211
- agents: {
2212
- ...cfg.agents,
2213
- defaults: {
2214
- ...defaults,
2215
- compaction: {
2216
- ...compaction,
2217
- mode: "safeguard"
2218
- }
2219
- }
2220
- }
2221
- };
2222
- }
2223
2208
 
2224
2209
  //#endregion
2225
2210
  //#region src/config/env-preserve.ts
@@ -4657,13 +4642,6 @@ function parseDurationMs(raw, opts) {
4657
4642
  return ms;
4658
4643
  }
4659
4644
 
4660
- //#endregion
4661
- //#region src/config/zod-schema.agent-model.ts
4662
- const AgentModelSchema = z.union([z.string(), z.object({
4663
- primary: z.string().optional(),
4664
- fallbacks: z.array(z.string()).optional()
4665
- }).strict()]);
4666
-
4667
4645
  //#endregion
4668
4646
  //#region src/config/zod-schema.allowdeny.ts
4669
4647
  const AllowDenyActionSchema = z.union([z.literal("allow"), z.literal("deny")]);
@@ -5037,6 +5015,12 @@ const ProviderCommandsSchema = z.object({ native: NativeCommandsSettingSchema.op
5037
5015
 
5038
5016
  //#endregion
5039
5017
  //#region src/config/zod-schema.agent-runtime.ts
5018
+ /** Auth profile ref: `false` (skip), single string, or string array (rotation). */
5019
+ const AuthFieldSchema = z.union([
5020
+ z.literal(false),
5021
+ z.string(),
5022
+ z.array(z.string())
5023
+ ]).optional();
5040
5024
  const BootSchema = z.object({
5041
5025
  prompt: z.string().optional(),
5042
5026
  file: z.string().optional()
@@ -5050,7 +5034,6 @@ const HeartbeatSchema = z.object({
5050
5034
  }).strict().optional(),
5051
5035
  model: z.string().optional(),
5052
5036
  session: z.string().optional(),
5053
- includeReasoning: z.boolean().optional(),
5054
5037
  target: z.string().optional(),
5055
5038
  to: z.string().optional(),
5056
5039
  accountId: z.string().optional(),
@@ -5195,7 +5178,7 @@ const AgentEntrySchema = z.object({
5195
5178
  name: z.string().optional(),
5196
5179
  workspace: z.string().optional(),
5197
5180
  agentDir: z.string().optional(),
5198
- model: AgentModelSchema.optional(),
5181
+ model: z.unknown().optional(),
5199
5182
  skills: z.array(z.string()).optional(),
5200
5183
  humanDelay: HumanDelaySchema.optional(),
5201
5184
  heartbeat: HeartbeatSchema,
@@ -5204,14 +5187,11 @@ const AgentEntrySchema = z.object({
5204
5187
  groupChat: GroupChatSchema,
5205
5188
  subagents: z.object({
5206
5189
  allowAgents: z.array(z.string()).optional(),
5207
- model: z.union([z.string(), z.object({
5208
- primary: z.string().optional(),
5209
- fallbacks: z.array(z.string()).optional()
5210
- }).strict()]).optional(),
5211
- thinking: z.string().optional()
5190
+ model: z.unknown().optional()
5212
5191
  }).strict().optional(),
5213
5192
  editableFiles: z.array(z.string()).optional(),
5214
- tools: AgentToolsSchema
5193
+ tools: AgentToolsSchema,
5194
+ auth: AuthFieldSchema
5215
5195
  }).strict();
5216
5196
  const ToolsSchema = z.object({
5217
5197
  ...CommonToolPolicyFields,
@@ -5254,13 +5234,10 @@ const ToolsSchema = z.object({
5254
5234
  //#endregion
5255
5235
  //#region src/config/zod-schema.agent-defaults.ts
5256
5236
  const AgentDefaultsSchema = z.object({
5257
- model: AgentModelSchema.optional(),
5258
- imageModel: AgentModelSchema.optional(),
5259
- models: z.record(z.string(), z.object({
5260
- alias: z.string().optional(),
5261
- params: z.record(z.string(), z.unknown()).optional(),
5262
- streaming: z.boolean().optional()
5263
- }).strict()).optional(),
5237
+ model: z.unknown().optional(),
5238
+ imageModel: z.unknown().optional(),
5239
+ models: z.unknown().optional(),
5240
+ workspace: z.string().optional(),
5264
5241
  repoRoot: z.string().optional(),
5265
5242
  skipBootstrap: z.boolean().optional(),
5266
5243
  bootstrapMaxChars: z.number().int().positive().optional(),
@@ -5275,7 +5252,7 @@ const AgentDefaultsSchema = z.object({
5275
5252
  envelopeTimestamp: z.union([z.literal("on"), z.literal("off")]).optional(),
5276
5253
  envelopeElapsed: z.union([z.literal("on"), z.literal("off")]).optional(),
5277
5254
  contextTokens: z.number().int().positive().optional(),
5278
- cliBackends: z.record(z.string(), CliBackendSchema).optional(),
5255
+ cliBackends: z.unknown().optional(),
5279
5256
  contextPruning: z.object({
5280
5257
  mode: z.union([z.literal("off"), z.literal("cache-ttl")]).optional(),
5281
5258
  ttl: z.string().optional(),
@@ -5297,21 +5274,6 @@ const AgentDefaultsSchema = z.object({
5297
5274
  placeholder: z.string().optional()
5298
5275
  }).strict().optional()
5299
5276
  }).strict().optional(),
5300
- compaction: z.object({
5301
- mode: z.union([z.literal("default"), z.literal("safeguard")]).optional(),
5302
- reserveTokens: z.number().int().nonnegative().optional(),
5303
- keepRecentTokens: z.number().int().positive().optional(),
5304
- reserveTokensFloor: z.number().int().nonnegative().optional(),
5305
- maxHistoryShare: z.number().min(.1).max(.9).optional()
5306
- }).strict().optional(),
5307
- thinkingDefault: z.union([
5308
- z.literal("off"),
5309
- z.literal("minimal"),
5310
- z.literal("low"),
5311
- z.literal("medium"),
5312
- z.literal("high"),
5313
- z.literal("xhigh")
5314
- ]).optional(),
5315
5277
  verboseDefault: z.union([
5316
5278
  z.literal("off"),
5317
5279
  z.literal("on"),
@@ -5341,8 +5303,7 @@ const AgentDefaultsSchema = z.object({
5341
5303
  maxSpawnDepth: z.number().int().min(1).max(5).optional().describe("Maximum nesting depth for sub-agent spawning. 1 = no nesting (default), 2 = sub-agents can spawn sub-sub-agents."),
5342
5304
  maxChildrenPerAgent: z.number().int().min(1).max(20).optional().describe("Maximum number of active children a single agent session can spawn (default: 5)."),
5343
5305
  archiveAfterMinutes: z.number().int().positive().optional(),
5344
- model: AgentModelSchema.optional(),
5345
- thinking: z.string().optional(),
5306
+ model: z.unknown().optional(),
5346
5307
  runTimeoutSeconds: z.number().int().min(0).optional(),
5347
5308
  announceTimeoutMs: z.number().int().positive().optional()
5348
5309
  }).strict().optional(),
@@ -5353,7 +5314,10 @@ const AgentDefaultsSchema = z.object({
5353
5314
  z.literal("gemini"),
5354
5315
  z.literal("codex"),
5355
5316
  z.literal("opencode")
5356
- ]).optional()
5317
+ ]).optional(),
5318
+ runtimeArgs: z.array(z.string()).optional(),
5319
+ runtimeEnv: z.record(z.string(), z.string()).optional(),
5320
+ auth: AuthFieldSchema
5357
5321
  }).strict().optional();
5358
5322
 
5359
5323
  //#endregion
@@ -7270,7 +7234,8 @@ function validateIdentityAvatar(config) {
7270
7234
  });
7271
7235
  continue;
7272
7236
  }
7273
- if (!isWorkspaceAvatarPath(avatar, resolveAgentWorkspaceDir(config, entry.id ?? resolveDefaultAgentId(config)))) issues.push({
7237
+ const workspaceDir = resolveAgentWorkspaceDirOrNull(config, entry.id ?? resolveDefaultAgentId(config));
7238
+ if (workspaceDir != null && !isWorkspaceAvatarPath(avatar, workspaceDir)) issues.push({
7274
7239
  path: `agents.list.${index}.identity.avatar`,
7275
7240
  message: "identity.avatar must stay within the agent workspace."
7276
7241
  });
@@ -7346,7 +7311,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
7346
7311
  if (registryInfo) return registryInfo;
7347
7312
  const registry = loadPluginManifestRegistry({
7348
7313
  config,
7349
- workspaceDir: resolveAgentWorkspaceDir(config, resolveDefaultAgentId(config)) ?? void 0
7314
+ workspaceDir: resolveAgentWorkspaceDirOrNull(config, resolveDefaultAgentId(config)) ?? void 0
7350
7315
  });
7351
7316
  const knownIds = new Set(registry.plugins.map((record) => record.id));
7352
7317
  const normalizedPlugins = normalizePluginsConfig(config.plugins);
@@ -7949,7 +7914,7 @@ function createConfigIO(overrides = {}) {
7949
7914
  deps.logger.warn(`Config warnings:\\n${details}`);
7950
7915
  }
7951
7916
  warnIfConfigFromFuture(validated.config, deps.logger);
7952
- const cfg = applyTalkConfigNormalization(applyModelDefaults(applyCompactionDefaults(applyContextPruningDefaults(applyAgentDefaults(applySessionDefaults(applyLoggingDefaults(applyMessageDefaults(validated.config))))))));
7917
+ const cfg = applyTalkConfigNormalization(applyModelDefaults(applyContextPruningDefaults(applyAgentDefaults(applySessionDefaults(applyLoggingDefaults(applyMessageDefaults(validated.config)))))));
7953
7918
  normalizeConfigPaths(cfg);
7954
7919
  const duplicates = findDuplicateAgentDirs(cfg, {
7955
7920
  env: deps.env,
@@ -8009,7 +7974,7 @@ function createConfigIO(overrides = {}) {
8009
7974
  parsed: {},
8010
7975
  resolved: {},
8011
7976
  valid: true,
8012
- config: applyTalkApiKey(applyTalkConfigNormalization(applyModelDefaults(applyCompactionDefaults(applyContextPruningDefaults(applyAgentDefaults(applySessionDefaults(applyMessageDefaults({})))))))),
7977
+ config: applyTalkApiKey(applyTalkConfigNormalization(applyModelDefaults(applyContextPruningDefaults(applyAgentDefaults(applySessionDefaults(applyMessageDefaults({}))))))),
8013
7978
  hash,
8014
7979
  issues: [],
8015
7980
  warnings: [],
@@ -9810,6 +9775,32 @@ async function withSessionStoreLock(storePath, fn, opts = {}) {
9810
9775
  });
9811
9776
  }
9812
9777
 
9778
+ //#endregion
9779
+ //#region src/logger.ts
9780
+ const subsystemPrefixRe = /^([a-z][a-z0-9-]{1,20}):\s+(.*)$/i;
9781
+ function splitSubsystem(message) {
9782
+ const match = message.match(subsystemPrefixRe);
9783
+ if (!match) return null;
9784
+ const [, subsystem, rest] = match;
9785
+ return {
9786
+ subsystem,
9787
+ rest
9788
+ };
9789
+ }
9790
+ function logWarn(message, runtime = defaultRuntime) {
9791
+ const parsed = runtime === defaultRuntime ? splitSubsystem(message) : null;
9792
+ if (parsed) {
9793
+ createSubsystemLogger(parsed.subsystem).warn(parsed.rest);
9794
+ return;
9795
+ }
9796
+ runtime.log(warn(message));
9797
+ getLogger().warn(message);
9798
+ }
9799
+ function logDebug(message) {
9800
+ getLogger().debug(message);
9801
+ logVerboseConsole(message);
9802
+ }
9803
+
9813
9804
  //#endregion
9814
9805
  //#region src/plugins/hook-runner-global.ts
9815
9806
  /**
@@ -9855,46 +9846,77 @@ var DeliveryAdapter = class {
9855
9846
  async process(events, callbacks) {
9856
9847
  let textBuffer = "";
9857
9848
  const payloads = [];
9858
- for await (const event of events) switch (event.type) {
9859
- case "text":
9860
- if (event.text === "") break;
9861
- textBuffer += event.text;
9862
- while (textBuffer.length > this.chunkLimit) {
9863
- const { chunk, rest } = splitAtBoundary(textBuffer, this.chunkLimit);
9864
- textBuffer = rest;
9865
- const payload = { text: chunk };
9866
- payloads.push(payload);
9867
- await callbacks?.onPartialReply?.(payload);
9849
+ /** Track media delivered via streaming events to avoid duplicates from result.media. */
9850
+ const deliveredMediaKeys = /* @__PURE__ */ new Set();
9851
+ let eventCount = 0;
9852
+ for await (const event of events) {
9853
+ eventCount++;
9854
+ switch (event.type) {
9855
+ case "text":
9856
+ if (event.text === "") break;
9857
+ textBuffer += event.text;
9858
+ while (textBuffer.length > this.chunkLimit) {
9859
+ const { chunk, rest } = splitAtBoundary(textBuffer, this.chunkLimit);
9860
+ textBuffer = rest;
9861
+ const payload = { text: chunk };
9862
+ payloads.push(payload);
9863
+ await callbacks?.onPartialReply?.(payload);
9864
+ }
9865
+ break;
9866
+ case "media": {
9867
+ const mediaUrl = event.media.filePath ?? event.media.sourceUrl;
9868
+ if (mediaUrl) {
9869
+ if (textBuffer.length > 0) {
9870
+ const textPayload = { text: textBuffer };
9871
+ payloads.push(textPayload);
9872
+ await callbacks?.onBlockReply?.(textPayload);
9873
+ textBuffer = "";
9874
+ }
9875
+ deliveredMediaKeys.add(mediaUrl);
9876
+ const payload = { mediaUrl };
9877
+ payloads.push(payload);
9878
+ await callbacks?.onBlockReply?.(payload);
9879
+ }
9880
+ break;
9868
9881
  }
9869
- break;
9870
- case "tool_use": break;
9871
- case "tool_result": {
9872
- const payload = { text: formatToolResult(event.toolId, event.output, event.isError) };
9873
- await callbacks?.onToolResult?.(payload);
9874
- break;
9875
- }
9876
- case "error": {
9877
- const payload = {
9878
- text: event.code ? `[${event.code}] ${event.message}` : event.message,
9879
- isError: true
9880
- };
9881
- payloads.push(payload);
9882
- await callbacks?.onBlockReply?.(payload);
9883
- break;
9884
- }
9885
- case "done":
9886
- if (textBuffer.length > 0) {
9887
- const payload = { text: textBuffer };
9882
+ case "tool_use": break;
9883
+ case "tool_result": {
9884
+ const payload = { text: formatToolResult(event.toolId, event.output, event.isError) };
9885
+ await callbacks?.onToolResult?.(payload);
9886
+ break;
9887
+ }
9888
+ case "error": {
9889
+ const payload = {
9890
+ text: event.code ? `[${event.code}] ${event.message}` : event.message,
9891
+ isError: true
9892
+ };
9888
9893
  payloads.push(payload);
9889
9894
  await callbacks?.onBlockReply?.(payload);
9890
- textBuffer = "";
9895
+ break;
9891
9896
  }
9892
- break;
9897
+ case "done":
9898
+ if (textBuffer.length > 0) {
9899
+ const payload = { text: textBuffer };
9900
+ payloads.push(payload);
9901
+ await callbacks?.onBlockReply?.(payload);
9902
+ textBuffer = "";
9903
+ }
9904
+ if (event.result.media?.length) for (const media of event.result.media) {
9905
+ const url = media.filePath ?? media.sourceUrl;
9906
+ if (url && !deliveredMediaKeys.has(url)) {
9907
+ const payload = { mediaUrl: url };
9908
+ payloads.push(payload);
9909
+ await callbacks?.onBlockReply?.(payload);
9910
+ }
9911
+ }
9912
+ break;
9913
+ }
9893
9914
  }
9894
9915
  if (textBuffer.length > 0) {
9895
9916
  const payload = { text: textBuffer };
9896
9917
  payloads.push(payload);
9897
9918
  }
9919
+ logDebug(`[delivery-adapter] processed ${eventCount} events into ${payloads.length} payloads (chunkLimit=${this.chunkLimit})`);
9898
9920
  return payloads;
9899
9921
  }
9900
9922
  };
@@ -10010,9 +10032,19 @@ const fatalAuthPatterns = [
10010
10032
  * Case-insensitive matching throughout.
10011
10033
  */
10012
10034
  function classifyError(message) {
10013
- for (const pattern of retryablePatterns) if (pattern.test(message)) return "retryable";
10014
- for (const pattern of contextOverflowPatterns) if (pattern.test(message)) return "context_overflow";
10015
- for (const pattern of fatalAuthPatterns) if (pattern.test(message)) return "fatal";
10035
+ for (const pattern of retryablePatterns) if (pattern.test(message)) {
10036
+ logDebug(`[error-classifier] classified as retryable: ${message.slice(0, 200)}`);
10037
+ return "retryable";
10038
+ }
10039
+ for (const pattern of contextOverflowPatterns) if (pattern.test(message)) {
10040
+ logDebug(`[error-classifier] classified as context_overflow: ${message.slice(0, 200)}`);
10041
+ return "context_overflow";
10042
+ }
10043
+ for (const pattern of fatalAuthPatterns) if (pattern.test(message)) {
10044
+ logDebug(`[error-classifier] classified as fatal (auth): ${message.slice(0, 200)}`);
10045
+ return "fatal";
10046
+ }
10047
+ logDebug(`[error-classifier] classified as fatal (unmatched): ${message.slice(0, 200)}`);
10016
10048
  return "fatal";
10017
10049
  }
10018
10050
 
@@ -10058,6 +10090,763 @@ async function readMcpSideEffects(filePath) {
10058
10090
  return result;
10059
10091
  }
10060
10092
 
10093
+ //#endregion
10094
+ //#region src/utils/fetch-timeout.ts
10095
+ /**
10096
+ * Relay abort without forwarding the Event argument as the abort reason.
10097
+ * Using .bind() avoids closure scope capture (memory leak prevention).
10098
+ */
10099
+ function relayAbort() {
10100
+ this.abort();
10101
+ }
10102
+ /** Returns a bound abort relay for use as an event listener. */
10103
+ function bindAbortRelay(controller) {
10104
+ return relayAbort.bind(controller);
10105
+ }
10106
+
10107
+ //#endregion
10108
+ //#region src/shared/net/ip.ts
10109
+ const BLOCKED_IPV4_SPECIAL_USE_RANGES = new Set([
10110
+ "unspecified",
10111
+ "broadcast",
10112
+ "multicast",
10113
+ "linkLocal",
10114
+ "loopback",
10115
+ "carrierGradeNat",
10116
+ "private",
10117
+ "reserved"
10118
+ ]);
10119
+ const PRIVATE_OR_LOOPBACK_IPV4_RANGES = new Set([
10120
+ "loopback",
10121
+ "private",
10122
+ "linkLocal",
10123
+ "carrierGradeNat"
10124
+ ]);
10125
+ const PRIVATE_OR_LOOPBACK_IPV6_RANGES = new Set([
10126
+ "unspecified",
10127
+ "loopback",
10128
+ "linkLocal",
10129
+ "uniqueLocal"
10130
+ ]);
10131
+ const RFC2544_BENCHMARK_PREFIX = [ipaddr.IPv4.parse("198.18.0.0"), 15];
10132
+ const EMBEDDED_IPV4_SENTINEL_RULES = [
10133
+ {
10134
+ matches: (parts) => parts[0] === 0 && parts[1] === 0 && parts[2] === 0 && parts[3] === 0 && parts[4] === 0 && parts[5] === 0,
10135
+ toHextets: (parts) => [parts[6], parts[7]]
10136
+ },
10137
+ {
10138
+ matches: (parts) => parts[0] === 100 && parts[1] === 65435 && parts[2] === 1 && parts[3] === 0 && parts[4] === 0 && parts[5] === 0,
10139
+ toHextets: (parts) => [parts[6], parts[7]]
10140
+ },
10141
+ {
10142
+ matches: (parts) => parts[0] === 8194,
10143
+ toHextets: (parts) => [parts[1], parts[2]]
10144
+ },
10145
+ {
10146
+ matches: (parts) => parts[0] === 8193 && parts[1] === 0,
10147
+ toHextets: (parts) => [parts[6] ^ 65535, parts[7] ^ 65535]
10148
+ },
10149
+ {
10150
+ matches: (parts) => (parts[4] & 64767) === 0 && parts[5] === 24318,
10151
+ toHextets: (parts) => [parts[6], parts[7]]
10152
+ }
10153
+ ];
10154
+ function stripIpv6Brackets(value) {
10155
+ if (value.startsWith("[") && value.endsWith("]")) return value.slice(1, -1);
10156
+ return value;
10157
+ }
10158
+ function isNumericIpv4LiteralPart(value) {
10159
+ return /^[0-9]+$/.test(value) || /^0x[0-9a-f]+$/i.test(value);
10160
+ }
10161
+ function parseIpv6WithEmbeddedIpv4(raw) {
10162
+ if (!raw.includes(":") || !raw.includes(".")) return;
10163
+ const match = /^(.*:)([^:%]+(?:\.[^:%]+){3})(%[0-9A-Za-z]+)?$/i.exec(raw);
10164
+ if (!match) return;
10165
+ const [, prefix, embeddedIpv4, zoneSuffix = ""] = match;
10166
+ if (!ipaddr.IPv4.isValidFourPartDecimal(embeddedIpv4)) return;
10167
+ const octets = embeddedIpv4.split(".").map((part) => Number.parseInt(part, 10));
10168
+ const normalizedIpv6 = `${prefix}${(octets[0] << 8 | octets[1]).toString(16)}:${(octets[2] << 8 | octets[3]).toString(16)}${zoneSuffix}`;
10169
+ if (!ipaddr.IPv6.isValid(normalizedIpv6)) return;
10170
+ return ipaddr.IPv6.parse(normalizedIpv6);
10171
+ }
10172
+ function isIpv4Address(address) {
10173
+ return address.kind() === "ipv4";
10174
+ }
10175
+ function isIpv6Address(address) {
10176
+ return address.kind() === "ipv6";
10177
+ }
10178
+ function normalizeIpv4MappedAddress(address) {
10179
+ if (!isIpv6Address(address)) return address;
10180
+ if (!address.isIPv4MappedAddress()) return address;
10181
+ return address.toIPv4Address();
10182
+ }
10183
+ function parseCanonicalIpAddress(raw) {
10184
+ const trimmed = raw?.trim();
10185
+ if (!trimmed) return;
10186
+ const normalized = stripIpv6Brackets(trimmed);
10187
+ if (!normalized) return;
10188
+ if (ipaddr.IPv4.isValid(normalized)) {
10189
+ if (!ipaddr.IPv4.isValidFourPartDecimal(normalized)) return;
10190
+ return ipaddr.IPv4.parse(normalized);
10191
+ }
10192
+ if (ipaddr.IPv6.isValid(normalized)) return ipaddr.IPv6.parse(normalized);
10193
+ return parseIpv6WithEmbeddedIpv4(normalized);
10194
+ }
10195
+ function parseLooseIpAddress(raw) {
10196
+ const trimmed = raw?.trim();
10197
+ if (!trimmed) return;
10198
+ const normalized = stripIpv6Brackets(trimmed);
10199
+ if (!normalized) return;
10200
+ if (ipaddr.isValid(normalized)) return ipaddr.parse(normalized);
10201
+ return parseIpv6WithEmbeddedIpv4(normalized);
10202
+ }
10203
+ function isCanonicalDottedDecimalIPv4(raw) {
10204
+ const trimmed = raw?.trim();
10205
+ if (!trimmed) return false;
10206
+ const normalized = stripIpv6Brackets(trimmed);
10207
+ if (!normalized) return false;
10208
+ return ipaddr.IPv4.isValidFourPartDecimal(normalized);
10209
+ }
10210
+ function isLegacyIpv4Literal(raw) {
10211
+ const trimmed = raw?.trim();
10212
+ if (!trimmed) return false;
10213
+ const normalized = stripIpv6Brackets(trimmed);
10214
+ if (!normalized || normalized.includes(":")) return false;
10215
+ if (isCanonicalDottedDecimalIPv4(normalized)) return false;
10216
+ const parts = normalized.split(".");
10217
+ if (parts.length === 0 || parts.length > 4) return false;
10218
+ if (parts.some((part) => part.length === 0)) return false;
10219
+ if (!parts.every((part) => isNumericIpv4LiteralPart(part))) return false;
10220
+ return true;
10221
+ }
10222
+ function isPrivateOrLoopbackIpAddress(raw) {
10223
+ const parsed = parseCanonicalIpAddress(raw);
10224
+ if (!parsed) return false;
10225
+ const normalized = normalizeIpv4MappedAddress(parsed);
10226
+ if (isIpv4Address(normalized)) return PRIVATE_OR_LOOPBACK_IPV4_RANGES.has(normalized.range());
10227
+ if (PRIVATE_OR_LOOPBACK_IPV6_RANGES.has(normalized.range())) return true;
10228
+ return (normalized.parts[0] & 65472) === 65216;
10229
+ }
10230
+ function isBlockedSpecialUseIpv4Address(address, options = {}) {
10231
+ const inRfc2544BenchmarkRange = address.match(RFC2544_BENCHMARK_PREFIX);
10232
+ if (inRfc2544BenchmarkRange && options.allowRfc2544BenchmarkRange === true) return false;
10233
+ return BLOCKED_IPV4_SPECIAL_USE_RANGES.has(address.range()) || inRfc2544BenchmarkRange;
10234
+ }
10235
+ function decodeIpv4FromHextets(high, low) {
10236
+ const octets = [
10237
+ high >>> 8 & 255,
10238
+ high & 255,
10239
+ low >>> 8 & 255,
10240
+ low & 255
10241
+ ];
10242
+ return ipaddr.IPv4.parse(octets.join("."));
10243
+ }
10244
+ function extractEmbeddedIpv4FromIpv6(address) {
10245
+ if (address.isIPv4MappedAddress()) return address.toIPv4Address();
10246
+ if (address.range() === "rfc6145") return decodeIpv4FromHextets(address.parts[6], address.parts[7]);
10247
+ if (address.range() === "rfc6052") return decodeIpv4FromHextets(address.parts[6], address.parts[7]);
10248
+ for (const rule of EMBEDDED_IPV4_SENTINEL_RULES) {
10249
+ if (!rule.matches(address.parts)) continue;
10250
+ const [high, low] = rule.toHextets(address.parts);
10251
+ return decodeIpv4FromHextets(high, low);
10252
+ }
10253
+ }
10254
+
10255
+ //#endregion
10256
+ //#region src/infra/net/hostname.ts
10257
+ function normalizeHostname(hostname) {
10258
+ const normalized = hostname.trim().toLowerCase().replace(/\.$/, "");
10259
+ if (normalized.startsWith("[") && normalized.endsWith("]")) return normalized.slice(1, -1);
10260
+ return normalized;
10261
+ }
10262
+
10263
+ //#endregion
10264
+ //#region src/infra/net/ssrf.ts
10265
+ var SsrFBlockedError = class extends Error {
10266
+ constructor(message) {
10267
+ super(message);
10268
+ this.name = "SsrFBlockedError";
10269
+ }
10270
+ };
10271
+ const BLOCKED_HOSTNAMES = new Set([
10272
+ "localhost",
10273
+ "localhost.localdomain",
10274
+ "metadata.google.internal"
10275
+ ]);
10276
+ function normalizeHostnameSet(values) {
10277
+ if (!values || values.length === 0) return /* @__PURE__ */ new Set();
10278
+ return new Set(values.map((value) => normalizeHostname(value)).filter(Boolean));
10279
+ }
10280
+ function normalizeHostnameAllowlist(values) {
10281
+ if (!values || values.length === 0) return [];
10282
+ return Array.from(new Set(values.map((value) => normalizeHostname(value)).filter((value) => value !== "*" && value !== "*." && value.length > 0)));
10283
+ }
10284
+ function resolveAllowPrivateNetwork(policy) {
10285
+ return policy?.dangerouslyAllowPrivateNetwork === true || policy?.allowPrivateNetwork === true;
10286
+ }
10287
+ function resolveIpv4SpecialUseBlockOptions(policy) {
10288
+ return { allowRfc2544BenchmarkRange: policy?.allowRfc2544BenchmarkRange === true };
10289
+ }
10290
+ function isHostnameAllowedByPattern(hostname, pattern) {
10291
+ if (pattern.startsWith("*.")) {
10292
+ const suffix = pattern.slice(2);
10293
+ if (!suffix || hostname === suffix) return false;
10294
+ return hostname.endsWith(`.${suffix}`);
10295
+ }
10296
+ return hostname === pattern;
10297
+ }
10298
+ function matchesHostnameAllowlist(hostname, allowlist) {
10299
+ if (allowlist.length === 0) return true;
10300
+ return allowlist.some((pattern) => isHostnameAllowedByPattern(hostname, pattern));
10301
+ }
10302
+ function looksLikeUnsupportedIpv4Literal(address) {
10303
+ const parts = address.split(".");
10304
+ if (parts.length === 0 || parts.length > 4) return false;
10305
+ if (parts.some((part) => part.length === 0)) return true;
10306
+ return parts.every((part) => /^[0-9]+$/.test(part) || /^0x/i.test(part));
10307
+ }
10308
+ function isPrivateIpAddress(address, policy) {
10309
+ let normalized = address.trim().toLowerCase();
10310
+ if (normalized.startsWith("[") && normalized.endsWith("]")) normalized = normalized.slice(1, -1);
10311
+ if (!normalized) return false;
10312
+ const blockOptions = resolveIpv4SpecialUseBlockOptions(policy);
10313
+ const strictIp = parseCanonicalIpAddress(normalized);
10314
+ if (strictIp) {
10315
+ if (isIpv4Address(strictIp)) return isBlockedSpecialUseIpv4Address(strictIp, blockOptions);
10316
+ if (isPrivateOrLoopbackIpAddress(strictIp.toString())) return true;
10317
+ const embeddedIpv4 = extractEmbeddedIpv4FromIpv6(strictIp);
10318
+ if (embeddedIpv4) return isBlockedSpecialUseIpv4Address(embeddedIpv4, blockOptions);
10319
+ return false;
10320
+ }
10321
+ if (normalized.includes(":") && !parseLooseIpAddress(normalized)) return true;
10322
+ if (!isCanonicalDottedDecimalIPv4(normalized) && isLegacyIpv4Literal(normalized)) return true;
10323
+ if (looksLikeUnsupportedIpv4Literal(normalized)) return true;
10324
+ return false;
10325
+ }
10326
+ function isBlockedHostnameNormalized(normalized) {
10327
+ if (BLOCKED_HOSTNAMES.has(normalized)) return true;
10328
+ return normalized.endsWith(".localhost") || normalized.endsWith(".local") || normalized.endsWith(".internal");
10329
+ }
10330
+ function isBlockedHostnameOrIp(hostname, policy) {
10331
+ const normalized = normalizeHostname(hostname);
10332
+ if (!normalized) return false;
10333
+ return isBlockedHostnameNormalized(normalized) || isPrivateIpAddress(normalized, policy);
10334
+ }
10335
+ const BLOCKED_HOST_OR_IP_MESSAGE = "Blocked hostname or private/internal/special-use IP address";
10336
+ const BLOCKED_RESOLVED_IP_MESSAGE = "Blocked: resolves to private/internal/special-use IP address";
10337
+ function assertAllowedHostOrIpOrThrow(hostnameOrIp, policy) {
10338
+ if (isBlockedHostnameOrIp(hostnameOrIp, policy)) throw new SsrFBlockedError(BLOCKED_HOST_OR_IP_MESSAGE);
10339
+ }
10340
+ function assertAllowedResolvedAddressesOrThrow(results, policy) {
10341
+ for (const entry of results) if (isBlockedHostnameOrIp(entry.address, policy)) throw new SsrFBlockedError(BLOCKED_RESOLVED_IP_MESSAGE);
10342
+ }
10343
+ function createPinnedLookup(params) {
10344
+ const normalizedHost = normalizeHostname(params.hostname);
10345
+ const fallback = params.fallback ?? lookup;
10346
+ const fallbackLookup = fallback;
10347
+ const fallbackWithOptions = fallback;
10348
+ const records = params.addresses.map((address) => ({
10349
+ address,
10350
+ family: address.includes(":") ? 6 : 4
10351
+ }));
10352
+ let index = 0;
10353
+ return ((host, options, callback) => {
10354
+ const cb = typeof options === "function" ? options : callback;
10355
+ if (!cb) return;
10356
+ const normalized = normalizeHostname(host);
10357
+ if (!normalized || normalized !== normalizedHost) {
10358
+ if (typeof options === "function" || options === void 0) return fallbackLookup(host, cb);
10359
+ return fallbackWithOptions(host, options, cb);
10360
+ }
10361
+ const opts = typeof options === "object" && options !== null ? options : {};
10362
+ const requestedFamily = typeof options === "number" ? options : typeof opts.family === "number" ? opts.family : 0;
10363
+ const candidates = requestedFamily === 4 || requestedFamily === 6 ? records.filter((entry) => entry.family === requestedFamily) : records;
10364
+ const usable = candidates.length > 0 ? candidates : records;
10365
+ if (opts.all) {
10366
+ cb(null, usable);
10367
+ return;
10368
+ }
10369
+ const chosen = usable[index % usable.length];
10370
+ index += 1;
10371
+ cb(null, chosen.address, chosen.family);
10372
+ });
10373
+ }
10374
+ function dedupeAndPreferIpv4(results) {
10375
+ const seen = /* @__PURE__ */ new Set();
10376
+ const ipv4 = [];
10377
+ const otherFamilies = [];
10378
+ for (const entry of results) {
10379
+ if (seen.has(entry.address)) continue;
10380
+ seen.add(entry.address);
10381
+ if (entry.family === 4) {
10382
+ ipv4.push(entry.address);
10383
+ continue;
10384
+ }
10385
+ otherFamilies.push(entry.address);
10386
+ }
10387
+ return [...ipv4, ...otherFamilies];
10388
+ }
10389
+ async function resolvePinnedHostnameWithPolicy(hostname, params = {}) {
10390
+ const normalized = normalizeHostname(hostname);
10391
+ if (!normalized) throw new Error("Invalid hostname");
10392
+ const allowPrivateNetwork = resolveAllowPrivateNetwork(params.policy);
10393
+ const allowedHostnames = normalizeHostnameSet(params.policy?.allowedHostnames);
10394
+ const hostnameAllowlist = normalizeHostnameAllowlist(params.policy?.hostnameAllowlist);
10395
+ const isExplicitAllowed = allowedHostnames.has(normalized);
10396
+ const skipPrivateNetworkChecks = allowPrivateNetwork || isExplicitAllowed;
10397
+ if (!matchesHostnameAllowlist(normalized, hostnameAllowlist)) throw new SsrFBlockedError(`Blocked hostname (not in allowlist): ${hostname}`);
10398
+ if (!skipPrivateNetworkChecks) assertAllowedHostOrIpOrThrow(normalized, params.policy);
10399
+ const results = await (params.lookupFn ?? lookup$1)(normalized, { all: true });
10400
+ if (results.length === 0) throw new Error(`Unable to resolve hostname: ${hostname}`);
10401
+ if (!skipPrivateNetworkChecks) assertAllowedResolvedAddressesOrThrow(results, params.policy);
10402
+ const addresses = dedupeAndPreferIpv4(results);
10403
+ if (addresses.length === 0) throw new Error(`Unable to resolve hostname: ${hostname}`);
10404
+ return {
10405
+ hostname: normalized,
10406
+ addresses,
10407
+ lookup: createPinnedLookup({
10408
+ hostname: normalized,
10409
+ addresses
10410
+ })
10411
+ };
10412
+ }
10413
+ function createPinnedDispatcher(pinned) {
10414
+ return new Agent({ connect: {
10415
+ lookup: pinned.lookup,
10416
+ autoSelectFamily: true,
10417
+ autoSelectFamilyAttemptTimeout: 300
10418
+ } });
10419
+ }
10420
+ async function closeDispatcher(dispatcher) {
10421
+ if (!dispatcher) return;
10422
+ const candidate = dispatcher;
10423
+ try {
10424
+ if (typeof candidate.close === "function") {
10425
+ await candidate.close();
10426
+ return;
10427
+ }
10428
+ if (typeof candidate.destroy === "function") candidate.destroy();
10429
+ } catch {}
10430
+ }
10431
+
10432
+ //#endregion
10433
+ //#region src/infra/net/fetch-guard.ts
10434
+ const DEFAULT_MAX_REDIRECTS = 3;
10435
+ const CROSS_ORIGIN_REDIRECT_SENSITIVE_HEADERS = [
10436
+ "authorization",
10437
+ "proxy-authorization",
10438
+ "cookie",
10439
+ "cookie2"
10440
+ ];
10441
+ function isRedirectStatus(status) {
10442
+ return status === 301 || status === 302 || status === 303 || status === 307 || status === 308;
10443
+ }
10444
+ function stripSensitiveHeadersForCrossOriginRedirect(init) {
10445
+ if (!init?.headers) return init;
10446
+ const headers = new Headers(init.headers);
10447
+ for (const header of CROSS_ORIGIN_REDIRECT_SENSITIVE_HEADERS) headers.delete(header);
10448
+ return {
10449
+ ...init,
10450
+ headers
10451
+ };
10452
+ }
10453
+ function buildAbortSignal(params) {
10454
+ const { timeoutMs, signal } = params;
10455
+ if (!timeoutMs && !signal) return {
10456
+ signal: void 0,
10457
+ cleanup: () => {}
10458
+ };
10459
+ if (!timeoutMs) return {
10460
+ signal,
10461
+ cleanup: () => {}
10462
+ };
10463
+ const controller = new AbortController();
10464
+ const timeoutId = setTimeout(controller.abort.bind(controller), timeoutMs);
10465
+ const onAbort = bindAbortRelay(controller);
10466
+ if (signal) if (signal.aborted) controller.abort();
10467
+ else signal.addEventListener("abort", onAbort, { once: true });
10468
+ const cleanup = () => {
10469
+ clearTimeout(timeoutId);
10470
+ if (signal) signal.removeEventListener("abort", onAbort);
10471
+ };
10472
+ return {
10473
+ signal: controller.signal,
10474
+ cleanup
10475
+ };
10476
+ }
10477
+ async function fetchWithSsrFGuard(params) {
10478
+ const fetcher = params.fetchImpl ?? globalThis.fetch;
10479
+ if (!fetcher) throw new Error("fetch is not available");
10480
+ const maxRedirects = typeof params.maxRedirects === "number" && Number.isFinite(params.maxRedirects) ? Math.max(0, Math.floor(params.maxRedirects)) : DEFAULT_MAX_REDIRECTS;
10481
+ const { signal, cleanup } = buildAbortSignal({
10482
+ timeoutMs: params.timeoutMs,
10483
+ signal: params.signal
10484
+ });
10485
+ let released = false;
10486
+ const release = async (dispatcher) => {
10487
+ if (released) return;
10488
+ released = true;
10489
+ cleanup();
10490
+ await closeDispatcher(dispatcher ?? void 0);
10491
+ };
10492
+ const visited = /* @__PURE__ */ new Set();
10493
+ let currentUrl = params.url;
10494
+ let currentInit = params.init ? { ...params.init } : void 0;
10495
+ let redirectCount = 0;
10496
+ while (true) {
10497
+ let parsedUrl;
10498
+ try {
10499
+ parsedUrl = new URL(currentUrl);
10500
+ } catch {
10501
+ await release();
10502
+ throw new Error("Invalid URL: must be http or https");
10503
+ }
10504
+ if (!["http:", "https:"].includes(parsedUrl.protocol)) {
10505
+ await release();
10506
+ throw new Error("Invalid URL: must be http or https");
10507
+ }
10508
+ let dispatcher = null;
10509
+ try {
10510
+ const pinned = await resolvePinnedHostnameWithPolicy(parsedUrl.hostname, {
10511
+ lookupFn: params.lookupFn,
10512
+ policy: params.policy
10513
+ });
10514
+ if (params.pinDns !== false) dispatcher = createPinnedDispatcher(pinned);
10515
+ const init = {
10516
+ ...currentInit ? { ...currentInit } : {},
10517
+ redirect: "manual",
10518
+ ...dispatcher ? { dispatcher } : {},
10519
+ ...signal ? { signal } : {}
10520
+ };
10521
+ const response = await fetcher(parsedUrl.toString(), init);
10522
+ if (isRedirectStatus(response.status)) {
10523
+ const location = response.headers.get("location");
10524
+ if (!location) {
10525
+ await release(dispatcher);
10526
+ throw new Error(`Redirect missing location header (${response.status})`);
10527
+ }
10528
+ redirectCount += 1;
10529
+ if (redirectCount > maxRedirects) {
10530
+ await release(dispatcher);
10531
+ throw new Error(`Too many redirects (limit: ${maxRedirects})`);
10532
+ }
10533
+ const nextParsedUrl = new URL(location, parsedUrl);
10534
+ const nextUrl = nextParsedUrl.toString();
10535
+ if (visited.has(nextUrl)) {
10536
+ await release(dispatcher);
10537
+ throw new Error("Redirect loop detected");
10538
+ }
10539
+ if (nextParsedUrl.origin !== parsedUrl.origin) currentInit = stripSensitiveHeadersForCrossOriginRedirect(currentInit);
10540
+ visited.add(nextUrl);
10541
+ response.body?.cancel();
10542
+ await closeDispatcher(dispatcher);
10543
+ currentUrl = nextUrl;
10544
+ continue;
10545
+ }
10546
+ return {
10547
+ response,
10548
+ finalUrl: currentUrl,
10549
+ release: async () => release(dispatcher)
10550
+ };
10551
+ } catch (err) {
10552
+ if (err instanceof SsrFBlockedError) logWarn(`security: blocked URL fetch (${params.auditContext ?? "url-fetch"}) target=${parsedUrl.origin}${parsedUrl.pathname} reason=${err.message}`);
10553
+ await release(dispatcher);
10554
+ throw err;
10555
+ }
10556
+ }
10557
+ }
10558
+
10559
+ //#endregion
10560
+ //#region src/media/constants.ts
10561
+ const MAX_IMAGE_BYTES = 6 * 1024 * 1024;
10562
+ const MAX_AUDIO_BYTES = 16 * 1024 * 1024;
10563
+ const MAX_VIDEO_BYTES = 16 * 1024 * 1024;
10564
+ const MAX_DOCUMENT_BYTES = 100 * 1024 * 1024;
10565
+
10566
+ //#endregion
10567
+ //#region src/media/mime.ts
10568
+ const EXT_BY_MIME = {
10569
+ "image/heic": ".heic",
10570
+ "image/heif": ".heif",
10571
+ "image/jpeg": ".jpg",
10572
+ "image/png": ".png",
10573
+ "image/webp": ".webp",
10574
+ "image/gif": ".gif",
10575
+ "audio/ogg": ".ogg",
10576
+ "audio/mpeg": ".mp3",
10577
+ "audio/x-m4a": ".m4a",
10578
+ "audio/mp4": ".m4a",
10579
+ "video/mp4": ".mp4",
10580
+ "video/quicktime": ".mov",
10581
+ "application/pdf": ".pdf",
10582
+ "application/json": ".json",
10583
+ "application/zip": ".zip",
10584
+ "application/gzip": ".gz",
10585
+ "application/x-tar": ".tar",
10586
+ "application/x-7z-compressed": ".7z",
10587
+ "application/vnd.rar": ".rar",
10588
+ "application/msword": ".doc",
10589
+ "application/vnd.ms-excel": ".xls",
10590
+ "application/vnd.ms-powerpoint": ".ppt",
10591
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ".docx",
10592
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ".xlsx",
10593
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation": ".pptx",
10594
+ "text/csv": ".csv",
10595
+ "text/plain": ".txt",
10596
+ "text/markdown": ".md"
10597
+ };
10598
+ const MIME_BY_EXT = {
10599
+ ...Object.fromEntries(Object.entries(EXT_BY_MIME).map(([mime, ext]) => [ext, mime])),
10600
+ ".jpeg": "image/jpeg"
10601
+ };
10602
+ function normalizeMimeType(mime) {
10603
+ if (!mime) return;
10604
+ return mime.split(";")[0]?.trim().toLowerCase() || void 0;
10605
+ }
10606
+ async function sniffMime(buffer) {
10607
+ if (!buffer) return;
10608
+ try {
10609
+ return (await fileTypeFromBuffer(buffer))?.mime ?? void 0;
10610
+ } catch {
10611
+ return;
10612
+ }
10613
+ }
10614
+ function getFileExtension(filePath) {
10615
+ if (!filePath) return;
10616
+ try {
10617
+ if (/^https?:\/\//i.test(filePath)) {
10618
+ const url = new URL(filePath);
10619
+ return path.extname(url.pathname).toLowerCase() || void 0;
10620
+ }
10621
+ } catch {}
10622
+ return path.extname(filePath).toLowerCase() || void 0;
10623
+ }
10624
+ function detectMime(opts) {
10625
+ return detectMimeImpl(opts);
10626
+ }
10627
+ function isGenericMime(mime) {
10628
+ if (!mime) return true;
10629
+ const m = mime.toLowerCase();
10630
+ return m === "application/octet-stream" || m === "application/zip";
10631
+ }
10632
+ async function detectMimeImpl(opts) {
10633
+ const ext = getFileExtension(opts.filePath);
10634
+ const extMime = ext ? MIME_BY_EXT[ext] : void 0;
10635
+ const headerMime = normalizeMimeType(opts.headerMime);
10636
+ const sniffed = await sniffMime(opts.buffer);
10637
+ if (sniffed && (!isGenericMime(sniffed) || !extMime)) return sniffed;
10638
+ if (extMime) return extMime;
10639
+ if (headerMime && !isGenericMime(headerMime)) return headerMime;
10640
+ if (sniffed) return sniffed;
10641
+ if (headerMime) return headerMime;
10642
+ }
10643
+ function extensionForMime(mime) {
10644
+ const normalized = normalizeMimeType(mime);
10645
+ if (!normalized) return;
10646
+ return EXT_BY_MIME[normalized];
10647
+ }
10648
+
10649
+ //#endregion
10650
+ //#region src/media/read-response-with-limit.ts
10651
+ async function readResponseWithLimit(res, maxBytes, opts) {
10652
+ const onOverflow = opts?.onOverflow ?? ((params) => /* @__PURE__ */ new Error(`Content too large: ${params.size} bytes (limit: ${params.maxBytes} bytes)`));
10653
+ const body = res.body;
10654
+ if (!body || typeof body.getReader !== "function") {
10655
+ const fallback = Buffer.from(await res.arrayBuffer());
10656
+ if (fallback.length > maxBytes) throw onOverflow({
10657
+ size: fallback.length,
10658
+ maxBytes,
10659
+ res
10660
+ });
10661
+ return fallback;
10662
+ }
10663
+ const reader = body.getReader();
10664
+ const chunks = [];
10665
+ let total = 0;
10666
+ try {
10667
+ while (true) {
10668
+ const { done, value } = await reader.read();
10669
+ if (done) break;
10670
+ if (value?.length) {
10671
+ total += value.length;
10672
+ if (total > maxBytes) {
10673
+ try {
10674
+ await reader.cancel();
10675
+ } catch {}
10676
+ throw onOverflow({
10677
+ size: total,
10678
+ maxBytes,
10679
+ res
10680
+ });
10681
+ }
10682
+ chunks.push(value);
10683
+ }
10684
+ }
10685
+ } finally {
10686
+ try {
10687
+ reader.releaseLock();
10688
+ } catch {}
10689
+ }
10690
+ return Buffer.concat(chunks.map((chunk) => Buffer.from(chunk)), total);
10691
+ }
10692
+
10693
+ //#endregion
10694
+ //#region src/media/fetch.ts
10695
+ var MediaFetchError = class extends Error {
10696
+ constructor(code, message) {
10697
+ super(message);
10698
+ this.code = code;
10699
+ this.name = "MediaFetchError";
10700
+ }
10701
+ };
10702
+ function stripQuotes(value) {
10703
+ return value.replace(/^["']|["']$/g, "");
10704
+ }
10705
+ function parseContentDispositionFileName(header) {
10706
+ if (!header) return;
10707
+ const starMatch = /filename\*\s*=\s*([^;]+)/i.exec(header);
10708
+ if (starMatch?.[1]) {
10709
+ const cleaned = stripQuotes(starMatch[1].trim());
10710
+ const encoded = cleaned.split("''").slice(1).join("''") || cleaned;
10711
+ try {
10712
+ return path.basename(decodeURIComponent(encoded));
10713
+ } catch {
10714
+ return path.basename(encoded);
10715
+ }
10716
+ }
10717
+ const match = /filename\s*=\s*([^;]+)/i.exec(header);
10718
+ if (match?.[1]) return path.basename(stripQuotes(match[1].trim()));
10719
+ }
10720
+ async function readErrorBodySnippet(res, maxChars = 200) {
10721
+ try {
10722
+ const text = await res.text();
10723
+ if (!text) return;
10724
+ const collapsed = text.replace(/\s+/g, " ").trim();
10725
+ if (!collapsed) return;
10726
+ if (collapsed.length <= maxChars) return collapsed;
10727
+ return `${collapsed.slice(0, maxChars)}…`;
10728
+ } catch {
10729
+ return;
10730
+ }
10731
+ }
10732
+ async function fetchRemoteMedia(options) {
10733
+ const { url, fetchImpl, filePathHint, maxBytes, maxRedirects, ssrfPolicy, lookupFn } = options;
10734
+ let res;
10735
+ let finalUrl = url;
10736
+ let release = null;
10737
+ try {
10738
+ const result = await fetchWithSsrFGuard({
10739
+ url,
10740
+ fetchImpl,
10741
+ maxRedirects,
10742
+ policy: ssrfPolicy,
10743
+ lookupFn
10744
+ });
10745
+ res = result.response;
10746
+ finalUrl = result.finalUrl;
10747
+ release = result.release;
10748
+ } catch (err) {
10749
+ throw new MediaFetchError("fetch_failed", `Failed to fetch media from ${url}: ${String(err)}`);
10750
+ }
10751
+ try {
10752
+ if (!res.ok) {
10753
+ const statusText = res.statusText ? ` ${res.statusText}` : "";
10754
+ const redirected = finalUrl !== url ? ` (redirected to ${finalUrl})` : "";
10755
+ let detail = `HTTP ${res.status}${statusText}`;
10756
+ if (!res.body) detail = `HTTP ${res.status}${statusText}; empty response body`;
10757
+ else {
10758
+ const snippet = await readErrorBodySnippet(res);
10759
+ if (snippet) detail += `; body: ${snippet}`;
10760
+ }
10761
+ throw new MediaFetchError("http_error", `Failed to fetch media from ${url}${redirected}: ${detail}`);
10762
+ }
10763
+ const contentLength = res.headers.get("content-length");
10764
+ if (maxBytes && contentLength) {
10765
+ const length = Number(contentLength);
10766
+ if (Number.isFinite(length) && length > maxBytes) throw new MediaFetchError("max_bytes", `Failed to fetch media from ${url}: content length ${length} exceeds maxBytes ${maxBytes}`);
10767
+ }
10768
+ const buffer = maxBytes ? await readResponseWithLimit(res, maxBytes, { onOverflow: ({ maxBytes, res }) => new MediaFetchError("max_bytes", `Failed to fetch media from ${res.url || url}: payload exceeds maxBytes ${maxBytes}`) }) : Buffer.from(await res.arrayBuffer());
10769
+ let fileNameFromUrl;
10770
+ try {
10771
+ const parsed = new URL(finalUrl);
10772
+ fileNameFromUrl = path.basename(parsed.pathname) || void 0;
10773
+ } catch {}
10774
+ const headerFileName = parseContentDispositionFileName(res.headers.get("content-disposition"));
10775
+ let fileName = headerFileName || fileNameFromUrl || (filePathHint ? path.basename(filePathHint) : void 0);
10776
+ const filePathForMime = headerFileName && path.extname(headerFileName) ? headerFileName : filePathHint ?? finalUrl;
10777
+ const contentType = await detectMime({
10778
+ buffer,
10779
+ headerMime: res.headers.get("content-type"),
10780
+ filePath: filePathForMime
10781
+ });
10782
+ if (fileName && !path.extname(fileName) && contentType) {
10783
+ const ext = extensionForMime(contentType);
10784
+ if (ext) fileName = `${fileName}${ext}`;
10785
+ }
10786
+ return {
10787
+ buffer,
10788
+ contentType: contentType ?? void 0,
10789
+ fileName
10790
+ };
10791
+ } finally {
10792
+ if (release) await release();
10793
+ }
10794
+ }
10795
+
10796
+ //#endregion
10797
+ //#region src/middleware/media-resolver.ts
10798
+ /** Max download size for inbound channel media (100 MB). */
10799
+ const MAX_INBOUND_MEDIA_BYTES = 100 * 1024 * 1024;
10800
+ /**
10801
+ * Resolve an array of media URLs (HTTP or local paths) into MediaAttachment
10802
+ * objects suitable for passing to {@link AgentRuntime.execute}.
10803
+ *
10804
+ * Remote URLs are downloaded into `tempDir` so that CLI runtimes can access
10805
+ * them as local files. Local paths are validated for MIME type only.
10806
+ *
10807
+ * Individual resolution failures are silently skipped — a single bad URL
10808
+ * should not prevent the rest of the message from being processed.
10809
+ */
10810
+ async function resolveMediaAttachments(mediaUrls, tempDir) {
10811
+ const results = [];
10812
+ for (const [index, url] of mediaUrls.entries()) try {
10813
+ const attachment = await resolveOne(url, tempDir, index);
10814
+ if (attachment) {
10815
+ logDebug(`[media-resolver] resolved: url=${url} mime=${attachment.mimeType} path=${attachment.filePath}`);
10816
+ results.push(attachment);
10817
+ }
10818
+ } catch (err) {
10819
+ logDebug(`[media-resolver] failed: url=${url} error=${String(err)}`);
10820
+ }
10821
+ return results;
10822
+ }
10823
+ async function resolveOne(url, tempDir, index) {
10824
+ if (/^https?:\/\//i.test(url)) return downloadRemote(url, tempDir, index);
10825
+ return resolveLocal(url);
10826
+ }
10827
+ async function downloadRemote(url, tempDir, index) {
10828
+ const fetched = await fetchRemoteMedia({
10829
+ url,
10830
+ maxBytes: MAX_INBOUND_MEDIA_BYTES
10831
+ });
10832
+ const mimeType = fetched.contentType ?? "application/octet-stream";
10833
+ const fileName = `inbound-media-${index}${extensionForMime(mimeType) ?? ""}`;
10834
+ const filePath = join(tempDir, fileName);
10835
+ await writeFile(filePath, fetched.buffer);
10836
+ return {
10837
+ mimeType,
10838
+ filePath,
10839
+ sourceUrl: url,
10840
+ fileName: fetched.fileName ?? fileName
10841
+ };
10842
+ }
10843
+ async function resolveLocal(filePath) {
10844
+ return {
10845
+ mimeType: await detectMime({ filePath }) ?? "application/octet-stream",
10846
+ filePath
10847
+ };
10848
+ }
10849
+
10061
10850
  //#endregion
10062
10851
  //#region src/middleware/cli-runtime-base.ts
10063
10852
  /**
@@ -10088,11 +10877,18 @@ var CLIRuntimeBase = class CLIRuntimeBase {
10088
10877
  }
10089
10878
  async *execute(params) {
10090
10879
  const args = this.buildArgs(params);
10880
+ if (params.extraArgs && params.extraArgs.length > 0) args.push(...params.extraArgs);
10881
+ const runtimeEnv = this.buildEnv(params);
10882
+ const callerEnv = params.env ?? {};
10091
10883
  const env = {
10092
10884
  ...process.env,
10093
- ...this.buildEnv(params),
10094
- ...params.env
10885
+ ...runtimeEnv,
10886
+ ...callerEnv
10095
10887
  };
10888
+ logDebug(`[agent-runtime] spawn: ${this.command} ${args.map((a) => JSON.stringify(a)).join(" ")}`);
10889
+ logDebug(`[agent-runtime] cwd: ${params.workingDirectory ?? process.cwd()}`);
10890
+ if (Object.keys(runtimeEnv).length > 0) logDebug(`[agent-runtime] runtime env keys: ${Object.keys(runtimeEnv).join(", ")}`);
10891
+ if (Object.keys(callerEnv).length > 0) logDebug(`[agent-runtime] caller env keys: ${Object.keys(callerEnv).join(", ")}`);
10096
10892
  const child = spawn(this.command, args, {
10097
10893
  cwd: params.workingDirectory,
10098
10894
  env,
@@ -10102,9 +10898,11 @@ var CLIRuntimeBase = class CLIRuntimeBase {
10102
10898
  "pipe"
10103
10899
  ]
10104
10900
  });
10901
+ logDebug(`[agent-runtime] spawned pid=${child.pid}`);
10105
10902
  const startMs = Date.now();
10106
10903
  const stderrChunks = [];
10107
10904
  let aborted = false;
10905
+ let yieldedEvents = false;
10108
10906
  let escalationTimer;
10109
10907
  const killWithEscalation = () => {
10110
10908
  if (escalationTimer === void 0) escalationTimer = setTimeout(() => {
@@ -10126,6 +10924,7 @@ var CLIRuntimeBase = class CLIRuntimeBase {
10126
10924
  if (watchdogTimer !== void 0) clearTimeout(watchdogTimer);
10127
10925
  watchdogTimer = setTimeout(() => {
10128
10926
  watchdogFired = true;
10927
+ logDebug(`[agent-runtime] pid=${child.pid}: watchdog timeout after ${this.timeoutMs}ms`);
10129
10928
  killWithEscalation();
10130
10929
  }, this.timeoutMs);
10131
10930
  };
@@ -10165,10 +10964,14 @@ var CLIRuntimeBase = class CLIRuntimeBase {
10165
10964
  });
10166
10965
  });
10167
10966
  });
10168
- if (this.supportsStdinPrompt && params.prompt.length > CLIRuntimeBase.STDIN_PROMPT_THRESHOLD && child.stdin) child.stdin.write(params.prompt);
10967
+ if (this.supportsStdinPrompt && params.prompt.length > CLIRuntimeBase.STDIN_PROMPT_THRESHOLD && child.stdin) {
10968
+ logDebug(`[agent-runtime] pid=${child.pid}: delivering prompt via stdin (${params.prompt.length} chars)`);
10969
+ child.stdin.write(params.prompt);
10970
+ }
10169
10971
  child.stdin?.end();
10170
10972
  const onAbort = () => {
10171
10973
  aborted = true;
10974
+ logDebug(`[agent-runtime] pid=${child.pid}: abort signal received`);
10172
10975
  killWithEscalation();
10173
10976
  };
10174
10977
  if (params.abortSignal) if (params.abortSignal.aborted) {
@@ -10183,6 +10986,7 @@ var CLIRuntimeBase = class CLIRuntimeBase {
10183
10986
  while (eventQueue.length > 0) {
10184
10987
  const event = eventQueue.shift();
10185
10988
  if (event === null || event === void 0) break;
10989
+ yieldedEvents = true;
10186
10990
  yield event;
10187
10991
  }
10188
10992
  }
@@ -10190,9 +10994,16 @@ var CLIRuntimeBase = class CLIRuntimeBase {
10190
10994
  if (watchdogTimer !== void 0) clearTimeout(watchdogTimer);
10191
10995
  params.abortSignal?.removeEventListener("abort", onAbort);
10192
10996
  }
10193
- await exitPromise;
10997
+ const { code: exitCode, signal: exitSignal } = await exitPromise;
10194
10998
  if (escalationTimer !== void 0) clearTimeout(escalationTimer);
10195
10999
  const durationMs = Date.now() - startMs;
11000
+ logDebug(`[agent-runtime] pid=${child.pid}: exited code=${exitCode} signal=${exitSignal} duration=${durationMs}ms`);
11001
+ const stderr = stderrChunks.join("");
11002
+ if (stderr && (exitCode !== 0 || !yieldedEvents)) yield {
11003
+ type: "error",
11004
+ message: stderr.trim(),
11005
+ code: "CLI_STDERR"
11006
+ };
10196
11007
  if (watchdogFired) yield {
10197
11008
  type: "error",
10198
11009
  message: `Watchdog timeout: no output for ${this.timeoutMs}ms`,
@@ -10210,7 +11021,8 @@ var CLIRuntimeBase = class CLIRuntimeBase {
10210
11021
  sessionId: void 0,
10211
11022
  durationMs,
10212
11023
  usage: void 0,
10213
- aborted
11024
+ aborted,
11025
+ stderr: stderr || void 0
10214
11026
  }
10215
11027
  };
10216
11028
  }
@@ -10261,6 +11073,11 @@ var ClaudeCliRuntime = class extends CLIRuntimeBase {
10261
11073
  }
10262
11074
  if (parsed.type === "result") {
10263
11075
  this.storeResultData(parsed);
11076
+ if (parsed.is_error === true && typeof parsed.result === "string" && parsed.result) return {
11077
+ type: "error",
11078
+ message: parsed.result,
11079
+ code: "CLI_ERROR"
11080
+ };
10264
11081
  return null;
10265
11082
  }
10266
11083
  return null;
@@ -11075,12 +11892,42 @@ const SUPPORTED_PROVIDERS = [
11075
11892
  "codex",
11076
11893
  "opencode"
11077
11894
  ];
11895
+ const validatedCommands = /* @__PURE__ */ new Set();
11896
+ /**
11897
+ * Verify that a CLI binary exists on PATH.
11898
+ *
11899
+ * Results are cached per process lifetime so the `which` lookup runs at most
11900
+ * once per command.
11901
+ */
11902
+ function validateExecutable(command) {
11903
+ if (validatedCommands.has(command)) {
11904
+ logDebug(`[runtime-factory] executable already validated: ${command}`);
11905
+ return;
11906
+ }
11907
+ try {
11908
+ execFileSync("which", [command], { stdio: "ignore" });
11909
+ logDebug(`[runtime-factory] executable validated: ${command}`);
11910
+ validatedCommands.add(command);
11911
+ } catch {
11912
+ throw new Error(`Runtime '${command}' is configured but the '${command}' binary was not found on PATH. Install it or set agents.defaults.runtime to a different provider.`);
11913
+ }
11914
+ }
11078
11915
  function createCliRuntime(provider) {
11079
- switch (provider.trim().toLowerCase()) {
11080
- case "claude": return new ClaudeCliRuntime();
11081
- case "gemini": return new GeminiCliRuntime();
11082
- case "codex": return new CodexCliRuntime();
11083
- case "opencode": return new OpenCodeCliRuntime();
11916
+ const normalized = provider.trim().toLowerCase();
11917
+ logDebug(`[runtime-factory] creating runtime: provider=${normalized}`);
11918
+ switch (normalized) {
11919
+ case "claude":
11920
+ validateExecutable(normalized);
11921
+ return new ClaudeCliRuntime();
11922
+ case "gemini":
11923
+ validateExecutable(normalized);
11924
+ return new GeminiCliRuntime();
11925
+ case "codex":
11926
+ validateExecutable(normalized);
11927
+ return new CodexCliRuntime();
11928
+ case "opencode":
11929
+ validateExecutable(normalized);
11930
+ return new OpenCodeCliRuntime();
11084
11931
  default: throw new Error(`Unknown runtime provider "${provider}". Supported providers: ${SUPPORTED_PROVIDERS.join(", ")}`);
11085
11932
  }
11086
11933
  }
@@ -11231,6 +12078,8 @@ var ChannelBridge = class {
11231
12078
  #workspaceDir;
11232
12079
  #chunkLimit;
11233
12080
  #mcpServerPath;
12081
+ #runtimeArgs;
12082
+ #runtimeEnv;
11234
12083
  constructor(options) {
11235
12084
  this.#provider = options.provider;
11236
12085
  this.#sessionMap = options.sessionMap;
@@ -11239,6 +12088,8 @@ var ChannelBridge = class {
11239
12088
  this.#workspaceDir = options.workspaceDir ?? DEFAULT_WORKSPACE_DIR;
11240
12089
  this.#chunkLimit = options.chunkLimit;
11241
12090
  this.#mcpServerPath = options.mcpServerPath ?? DEFAULT_MCP_SERVER_PATH;
12091
+ this.#runtimeArgs = options.runtimeArgs;
12092
+ this.#runtimeEnv = options.runtimeEnv;
11242
12093
  }
11243
12094
  /**
11244
12095
  * Process an incoming channel message through the full agent execution pipeline.
@@ -11248,7 +12099,9 @@ var ChannelBridge = class {
11248
12099
  */
11249
12100
  async handle(message, callbacks, abortSignal) {
11250
12101
  const sessionKey = buildSessionKey(message);
12102
+ logDebug(`[channel-bridge] handle: channel=${message.provider} from=${message.from} channelId=${message.channelId} threadId=${message.replyToId ?? "none"} agentId=${message.agentId ?? "default"} media=${message.mediaUrls?.length ?? 0}`);
11251
12103
  const existingSessionId = await this.#sessionMap.get(sessionKey);
12104
+ logDebug(`[channel-bridge] session lookup: key=${formatSessionKeyString(sessionKey)} ${existingSessionId ? `hit=${existingSessionId}` : "miss"}`);
11252
12105
  const hookRunner = getGlobalHookRunner();
11253
12106
  if (existingSessionId && hookRunner?.hasHooks("session_resumed")) await hookRunner.runSessionResumed({
11254
12107
  sessionId: existingSessionId,
@@ -11275,9 +12128,10 @@ var ChannelBridge = class {
11275
12128
  const sideEffectsFile = join(invocationDir, "side-effects.ndjson");
11276
12129
  try {
11277
12130
  const mcpServers = this.#buildMcpConfig(message, sessionKey, sideEffectsFile);
12131
+ logDebug(`[channel-bridge] creating runtime: provider=${this.#provider}`);
11278
12132
  const runtime = createCliRuntime(this.#provider);
11279
12133
  let workspaceDir = this.#workspaceDir;
11280
- let extraEnv;
12134
+ let hookEnv;
11281
12135
  const runId = randomUUID();
11282
12136
  if (hookRunner?.hasHooks("before_runtime_spawn")) {
11283
12137
  const spawnResult = await hookRunner.runBeforeRuntimeSpawn({
@@ -11293,9 +12147,17 @@ var ChannelBridge = class {
11293
12147
  channelId: message.channelId,
11294
12148
  runtimeName: this.#provider
11295
12149
  });
11296
- if (spawnResult?.workspaceDir) workspaceDir = spawnResult.workspaceDir;
11297
- if (spawnResult?.env) extraEnv = spawnResult.env;
12150
+ if (spawnResult?.workspaceDir) {
12151
+ logDebug(`[channel-bridge] hook overrode workspaceDir: ${this.#workspaceDir} -> ${spawnResult.workspaceDir}`);
12152
+ workspaceDir = spawnResult.workspaceDir;
12153
+ }
12154
+ if (spawnResult?.env) {
12155
+ logDebug(`[channel-bridge] hook injected env keys: ${Object.keys(spawnResult.env).join(", ")}`);
12156
+ hookEnv = spawnResult.env;
12157
+ }
11298
12158
  }
12159
+ const media = message.mediaUrls?.length ? await resolveMediaAttachments(message.mediaUrls, invocationDir) : void 0;
12160
+ if (media?.length) logDebug(`[channel-bridge] resolved ${media.length}/${message.mediaUrls.length} media attachments`);
11299
12161
  const adapter = new DeliveryAdapter(this.#chunkLimit !== void 0 ? { chunkLimit: this.#chunkLimit } : void 0);
11300
12162
  let runResult;
11301
12163
  let lastError;
@@ -11303,11 +12165,16 @@ var ChannelBridge = class {
11303
12165
  try {
11304
12166
  const captured = captureResult(runtime.execute({
11305
12167
  prompt: systemPrompt + (message.extraContext ? "\n\n" + message.extraContext : "") + "\n\n" + message.text,
12168
+ media: media?.length ? media : void 0,
11306
12169
  sessionId: existingSessionId,
11307
12170
  mcpServers,
11308
12171
  abortSignal,
11309
12172
  workingDirectory: workspaceDir,
11310
- env: extraEnv
12173
+ env: this.#runtimeEnv || hookEnv ? {
12174
+ ...this.#runtimeEnv,
12175
+ ...hookEnv
12176
+ } : void 0,
12177
+ extraArgs: this.#runtimeArgs
11311
12178
  }));
11312
12179
  payloads = await adapter.process(captured.events, callbacks);
11313
12180
  runResult = captured.getResult();
@@ -11315,6 +12182,7 @@ var ChannelBridge = class {
11315
12182
  } catch (err) {
11316
12183
  const errMsg = String(err);
11317
12184
  const category = classifyError(errMsg);
12185
+ logDebug(`[channel-bridge] runtime threw: category=${category} error=${errMsg.slice(0, 500)}`);
11318
12186
  lastError = errMsg;
11319
12187
  payloads = [];
11320
12188
  runResult = {
@@ -11328,7 +12196,11 @@ var ChannelBridge = class {
11328
12196
  } catch {
11329
12197
  mcp = { ...EMPTY_SIDE_EFFECTS };
11330
12198
  }
11331
- if (runResult?.sessionId) await this.#sessionMap.set(sessionKey, runResult.sessionId);
12199
+ logDebug(`[channel-bridge] side effects: sentTexts=${mcp.sentTexts.length} sentMedia=${mcp.sentMediaUrls.length} cronAdds=${mcp.cronAdds}`);
12200
+ if (runResult?.sessionId) {
12201
+ logDebug(`[channel-bridge] session update: key=${formatSessionKeyString(sessionKey)} sessionId=${runResult.sessionId}`);
12202
+ await this.#sessionMap.set(sessionKey, runResult.sessionId);
12203
+ }
11332
12204
  const finalResult = runResult ?? { ...DEFAULT_RUN_RESULT };
11333
12205
  if (hookRunner) {
11334
12206
  const runtimeCtx = {
@@ -11356,6 +12228,7 @@ var ChannelBridge = class {
11356
12228
  durationMs: finalResult.durationMs
11357
12229
  }, runtimeCtx);
11358
12230
  }
12231
+ logDebug(`[channel-bridge] complete: runId=${runId} duration=${finalResult.durationMs}ms payloads=${payloads.length} error=${lastError ?? "none"}`);
11359
12232
  return {
11360
12233
  payloads,
11361
12234
  run: finalResult,
@@ -11517,4 +12390,4 @@ function resolveGatewayCredentialsFromConfig(params) {
11517
12390
  }
11518
12391
 
11519
12392
  //#endregion
11520
- export { ChannelBridge, DEFAULT_MODEL, DEFAULT_PROVIDER, ensureAgentWorkspace, loadSessionStore, resolveAgentDir, resolveAgentIdentity, resolveAgentTimeoutMs, resolveAgentWorkspaceDir, resolveGatewayCredentialsFromConfig, resolveGatewayPort, resolveSessionFilePath, resolveStorePath, saveSessionStore };
12393
+ export { ChannelBridge, ensureAgentWorkspace, loadSessionStore, resolveAgentDir, resolveAgentIdentity, resolveAgentTimeoutMs, resolveAgentWorkspaceDir, resolveGatewayCredentialsFromConfig, resolveGatewayPort, resolveSessionFilePath, resolveStorePath, saveSessionStore };