@noxsoft/anima 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (829) hide show
  1. package/README.md +1260 -28
  2. package/dist/accounts-Bth3PpPD.js +260 -0
  3. package/dist/accounts-D8CPKNkN.js +259 -0
  4. package/dist/acp-cli-ByK6lS6c.js +1081 -0
  5. package/dist/acp-cli-CaQCjIw4.js +1084 -0
  6. package/dist/agent-BgIkqd3F.js +725 -0
  7. package/dist/agent-N5BDcge4.js +725 -0
  8. package/dist/agent-events-COH7NDW2.js +182 -0
  9. package/dist/agent-scope-CPphqq-U.js +452 -0
  10. package/dist/agent-scope-DZgptr9J.js +452 -0
  11. package/dist/agent-scope-cj2QCT6R.js +112 -0
  12. package/dist/agents-NEudYMdg.js +774 -0
  13. package/dist/agents.config-Bujs-NIy.js +182 -0
  14. package/dist/agents.config-jp7OLssr.js +182 -0
  15. package/dist/argv-BMZMiW7v.js +73 -0
  16. package/dist/audit-C-UJhfdv.js +2401 -0
  17. package/dist/audit-CeCO7SK5.js +2401 -0
  18. package/dist/auth-BNZsOHGF.js +648 -0
  19. package/dist/auth-DMPZWzEa.js +639 -0
  20. package/dist/auth-choice-5VnaGMD-.js +2681 -0
  21. package/dist/auth-choice-DA2k4vs8.js +2681 -0
  22. package/dist/auth-health-B7FqA26_.js +149 -0
  23. package/dist/auth-health-VO_MPqVX.js +149 -0
  24. package/dist/auth-profiles-BDrNYX_n.js +1564 -0
  25. package/dist/auth-profiles-CxSHydjn.js +2689 -0
  26. package/dist/banner-BtDZPRzi.js +294 -0
  27. package/dist/browser-cli-8yQMpxb8.js +1679 -0
  28. package/dist/browser-cli-Czg3JtDH.js +1676 -0
  29. package/dist/build-info.json +3 -3
  30. package/dist/bundled/boot-md/handler.js +16 -16
  31. package/dist/bundled/bootstrap-extra-files/handler.js +4 -4
  32. package/dist/bundled/command-logger/handler.js +1 -1
  33. package/dist/bundled/session-memory/handler.js +5 -5
  34. package/dist/call-BIzCaKZb.js +282 -0
  35. package/dist/call-BYDpTVCZ.js +282 -0
  36. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  37. package/dist/catalog-CqKiUgu6.js +185 -0
  38. package/dist/catalog-DMfEg-oK.js +185 -0
  39. package/dist/channel-options-BrtCtyrT.js +32 -0
  40. package/dist/channel-options-CO21Gl8p.js +33 -0
  41. package/dist/channel-selection-Bbm1lq3P.js +51 -0
  42. package/dist/channel-selection-CqcX7Ocw.js +51 -0
  43. package/dist/channel-web-DrsT6OAE.js +2162 -0
  44. package/dist/channels-cli-Juyh1S6n.js +1304 -0
  45. package/dist/channels-cli-zNvi1m5c.js +1306 -0
  46. package/dist/channels-status-issues-CqzqshW4.js +18 -0
  47. package/dist/channels-status-issues-DdJdO866.js +18 -0
  48. package/dist/chrome-C4dOMO8z.js +1601 -0
  49. package/dist/chrome-DdcDzAtH.js +1629 -0
  50. package/dist/chrome-U3DRzjJD.js +1601 -0
  51. package/dist/chunk-D2nLsrEW.js +348 -0
  52. package/dist/clack-prompter-BI3RDW5w.js +92 -0
  53. package/dist/clack-prompter-Dwr1m_IZ.js +92 -0
  54. package/dist/cli/daemon-cli.js +1 -1
  55. package/dist/cli-C3cpDaz8.js +99 -0
  56. package/dist/cli-CjWUGdGC.js +101 -0
  57. package/dist/cli-session-BVjY_XrW.js +5463 -0
  58. package/dist/cli-session-gtuYN2Iq.js +5408 -0
  59. package/dist/client-Dswwze5_.js +1692 -0
  60. package/dist/client-LRKFjo4A.js +1692 -0
  61. package/dist/clipboard-BZKS9O1u.js +31 -0
  62. package/dist/clipboard-DES8b1AM.js +31 -0
  63. package/dist/command-format-CP1YTNCl.js +52 -0
  64. package/dist/command-format-CVL4K5cj.js +52 -0
  65. package/dist/command-format-G6N2zghg.js +38 -0
  66. package/dist/command-registry-BBvNvysr.js +248 -0
  67. package/dist/commands-AZ3n8Y2c.js +726 -0
  68. package/dist/commands-BMnD_QRY.js +726 -0
  69. package/dist/commands-registry-cFqZ6Ib4.js +766 -0
  70. package/dist/commands-registry-q13H7ng5.js +766 -0
  71. package/dist/common-CX5458fH.js +287 -0
  72. package/dist/common-DJbnT8ws.js +287 -0
  73. package/dist/completion-cli-BADRBcIl.js +432 -0
  74. package/dist/completion-cli-DMQgiObF.js +431 -0
  75. package/dist/config-CU-Axg8P.js +5704 -0
  76. package/dist/config-DaqbUdkI.js +5705 -0
  77. package/dist/config-cli-BPlbwiuA.js +244 -0
  78. package/dist/config-cli-DXgZJkPU.js +247 -0
  79. package/dist/config-guard-Ba49JNds.js +76 -0
  80. package/dist/config-guard-Cu0qMKZJ.js +93 -0
  81. package/dist/config-kVVm5EYV.js +6523 -0
  82. package/dist/config-sync-CzLnLTXt.js +91 -0
  83. package/dist/config-sync-DuydxPWx.js +91 -0
  84. package/dist/configure-CHgacLyi.js +960 -0
  85. package/dist/configure-DfHXDa1L.js +959 -0
  86. package/dist/context-DzgXOckU.js +60 -0
  87. package/dist/control-service-8_wKHwBa.js +72 -0
  88. package/dist/control-service-BtL1Jto_.js +72 -0
  89. package/dist/cron-cli-BCzSR2c0.js +448 -0
  90. package/dist/cron-cli-CCWNkykU.js +451 -0
  91. package/dist/daemon-cli-Bjkbu9Vy.js +565 -0
  92. package/dist/daemon-cli-CmlHcC1J.js +566 -0
  93. package/dist/daemon-cli.js +16 -16
  94. package/dist/daemon-runtime-C0tz7VAC.js +460 -0
  95. package/dist/daemon-runtime-rUTqCVwJ.js +460 -0
  96. package/dist/deliver-BBggsviM.js +1097 -0
  97. package/dist/deliver-CePITOl8.js +1162 -0
  98. package/dist/deliver-DFnVaetP.js +1097 -0
  99. package/dist/delivery-queue-BJQK3oh5.js +220 -0
  100. package/dist/deps-CeEKhrp7.js +42 -0
  101. package/dist/devices-cli-DQrDMrZH.js +198 -0
  102. package/dist/devices-cli-Oe-A1Dv0.js +195 -0
  103. package/dist/diagnostics-DxMFrBLO.js +35 -0
  104. package/dist/diagnostics-m79ZlMmZ.js +35 -0
  105. package/dist/directory-cli-BL6h8cGF.js +246 -0
  106. package/dist/directory-cli-Cjgmi_sj.js +243 -0
  107. package/dist/dispatcher-DAFbQM-c.js +100 -0
  108. package/dist/dispatcher-DNd40gUn.js +100 -0
  109. package/dist/dist-CqDI82ei.js +929 -0
  110. package/dist/dist-DnHRxR5U.js +929 -0
  111. package/dist/dns-cli-CFtV3BXK.js +200 -0
  112. package/dist/dns-cli-NyIHvQ5S.js +197 -0
  113. package/dist/dock-BdXLb5oY.js +753 -0
  114. package/dist/dock-jYICmNcI.js +753 -0
  115. package/dist/docs-cli-CrOaIK_H.js +161 -0
  116. package/dist/docs-cli-D_cmJDSr.js +159 -0
  117. package/dist/doctor-BpGxKrBl.js +1815 -0
  118. package/dist/doctor-D12wNQPU.js +1813 -0
  119. package/dist/doctor-completion-DeOfofek.js +92 -0
  120. package/dist/doctor-completion-DwjqdEcK.js +92 -0
  121. package/dist/doctor-config-flow-BI3mpkbd.js +1232 -0
  122. package/dist/doctor-config-flow-wMHheFkC.js +1232 -0
  123. package/dist/engine-BCtL-AMw.js +563 -0
  124. package/dist/engine-Bk_UT413.js +563 -0
  125. package/dist/entry.js +5 -5
  126. package/dist/env-v6411I8h.js +32 -0
  127. package/dist/exec-B7sUS164.js +1167 -0
  128. package/dist/exec-approvals-CroGJRUg.js +1221 -0
  129. package/dist/exec-approvals-cli-BTxF_RsH.js +371 -0
  130. package/dist/exec-approvals-cli-n1gyGwH2.js +368 -0
  131. package/dist/exec-mhSykkaa.js +255 -0
  132. package/dist/extensionAPI.js +3 -3
  133. package/dist/frontmatter-BmHq0vRD.js +204 -0
  134. package/dist/gateway-cli-DDBadlrS.js +19971 -0
  135. package/dist/gateway-cli-IZNkOMBe.js +19972 -0
  136. package/dist/gateway-rpc-Dtx8HN-n.js +28 -0
  137. package/dist/gateway-rpc-L2PVSqGj.js +28 -0
  138. package/dist/github-copilot-auth-DKyqDaGU.js +1418 -0
  139. package/dist/github-copilot-auth-DXpOMSd3.js +1418 -0
  140. package/dist/gmail-setup-utils-BKNczIJ9.js +428 -0
  141. package/dist/gmail-setup-utils-co0ppccC.js +428 -0
  142. package/dist/health-Bm8ZTvC3.js +1253 -0
  143. package/dist/health-DUf1gt4E.js +1258 -0
  144. package/dist/health-format-BksT6F68.js +208 -0
  145. package/dist/health-format-uzh1xYLD.js +208 -0
  146. package/dist/heartbeat-visibility-1TJb1Zao.js +98 -0
  147. package/dist/heartbeat-visibility-CwodtdcX.js +98 -0
  148. package/dist/help-format-C6cv_aZp.js +17 -0
  149. package/dist/helpers-N-uSFKOn.js +10 -0
  150. package/dist/hooks-cli-1POsXqOl.js +993 -0
  151. package/dist/hooks-cli-BGjILbze.js +991 -0
  152. package/dist/hooks-status-DE07n5RC.js +356 -0
  153. package/dist/hooks-status-Du-d1jde.js +356 -0
  154. package/dist/image-ops-B_AYV3tp.js +541 -0
  155. package/dist/image-ops-Bp0C6Mvr.js +541 -0
  156. package/dist/index.js +82 -82
  157. package/dist/init-9A0s7bWG.js +122 -0
  158. package/dist/init-DoyCHJDC.js +122 -0
  159. package/dist/installs-D1C9wHAq.js +383 -0
  160. package/dist/installs-Dh4dHayM.js +383 -0
  161. package/dist/ipv4-DCItfaJo.js +1964 -0
  162. package/dist/ipv4-DSOUVx0i.js +1964 -0
  163. package/dist/lanes-BvSnHq2h.js +232 -0
  164. package/dist/lifecycle-core-BY4WIf9g.js +388 -0
  165. package/dist/lifecycle-core-TQKyXO-6.js +387 -0
  166. package/dist/links-CNu_8RZl.js +15 -0
  167. package/dist/links-D2tt2ouh.js +15 -0
  168. package/dist/llm-slug-generator.js +4 -4
  169. package/dist/logging-BIeRw0WR.js +15 -0
  170. package/dist/logging-C7lb3Vjc.js +15 -0
  171. package/dist/login-DXWKewA2.js +59 -0
  172. package/dist/login-Fhh4uWmf.js +61 -0
  173. package/dist/login-pPs3UO38.js +61 -0
  174. package/dist/login-qr-CevLD8cV.js +326 -0
  175. package/dist/login-qr-GF2JMIy-.js +323 -0
  176. package/dist/login-qr-ZYYKD6Yt.js +321 -0
  177. package/dist/logs-cli-CzXbX8HZ.js +242 -0
  178. package/dist/logs-cli-D9ngH9PF.js +245 -0
  179. package/dist/manager-BD5rA3w0.js +3244 -0
  180. package/dist/manager-BDPgBQSH.js +3246 -0
  181. package/dist/manager-DRWMWM--.js +3244 -0
  182. package/dist/manifest-registry-DbvPaBXY.js +748 -0
  183. package/dist/manifest-registry-kHX_MFa1.js +748 -0
  184. package/dist/markdown-tables-CqwihY2m.js +347 -0
  185. package/dist/markdown-tables-DJV7eAJZ.js +348 -0
  186. package/dist/media-lUqN-0O9.js +1342 -0
  187. package/dist/memory-cli-BLXSpgnN.js +868 -0
  188. package/dist/memory-cli-BcGVkkRJ.js +869 -0
  189. package/dist/message-channel-D_jIO87f.js +110 -0
  190. package/dist/migrate-BpVOar4L.js +157 -0
  191. package/dist/migrate-CkgGDkWy.js +157 -0
  192. package/dist/model-selection-Cqt6aJ0G.js +2691 -0
  193. package/dist/models-CExsNQPH.js +2510 -0
  194. package/dist/models-cli-Ba3Jmwev.js +2739 -0
  195. package/dist/models-cli-iDAlsbL2.js +258 -0
  196. package/dist/net-0A_zcaQD.js +218 -0
  197. package/dist/node-cli-ATmwCXIk.js +1319 -0
  198. package/dist/node-cli-DYFR_V25.js +1322 -0
  199. package/dist/node-service-CN4LqR1A.js +67 -0
  200. package/dist/node-service-CWt3MdSC.js +67 -0
  201. package/dist/nodes-cli-BeVmhTz3.js +1197 -0
  202. package/dist/nodes-cli-QeJIfa18.js +1200 -0
  203. package/dist/nodes-screen-DHyWAlla.js +234 -0
  204. package/dist/nodes-screen-qs3jRBPk.js +234 -0
  205. package/dist/note-CSlg2BnB.js +73 -0
  206. package/dist/note-Ctvglhp1.js +73 -0
  207. package/dist/npm-registry-spec-DQd4M22q.js +351 -0
  208. package/dist/npm-registry-spec-PxisIMts.js +351 -0
  209. package/dist/onboard-DeruD10m.js +1166 -0
  210. package/dist/onboard-SAcu5N6N.js +1165 -0
  211. package/dist/onboard-channels-C4iSfFXR.js +672 -0
  212. package/dist/onboard-channels-oVTVgoyg.js +672 -0
  213. package/dist/onboard-helpers-B8roRwLP.js +365 -0
  214. package/dist/onboard-helpers-Dgh26hgP.js +365 -0
  215. package/dist/onboarding-Bi-ac8we.js +911 -0
  216. package/dist/onboarding-C2gjB2u8.js +910 -0
  217. package/dist/orchestrator-DlbAYMQP.js +357 -0
  218. package/dist/orchestrator-DlwVRVDA.js +357 -0
  219. package/dist/outbound-CkKgc6iR.js +2062 -0
  220. package/dist/outbound-Vfm5yDh3.js +214 -0
  221. package/dist/outbound-bs_VK51X.js +214 -0
  222. package/dist/outbound-send-deps-DDjiMfEL.js +55 -0
  223. package/dist/pairing-cli-CJYeuEik.js +118 -0
  224. package/dist/pairing-cli-mqopHI8s.js +121 -0
  225. package/dist/pairing-store-BsXzUDPv.js +388 -0
  226. package/dist/pairing-store-DoNj00-X.js +388 -0
  227. package/dist/path-env-C_xpiG8l.js +89 -0
  228. package/dist/path-env-DSSMHu5A.js +89 -0
  229. package/dist/paths-B1vRVCad.js +126 -0
  230. package/dist/paths-BMuHNFxg.js +238 -0
  231. package/dist/paths-BXQQzXGQ.js +129 -0
  232. package/dist/paths-Buw_geoe.js +54 -0
  233. package/dist/paths-DA9WYabg.js +222 -0
  234. package/dist/paths-DfQGx0_k.js +129 -0
  235. package/dist/pi-auth-json-DOPW3e4X.js +78 -0
  236. package/dist/pi-auth-json-MruLmI_X.js +82 -0
  237. package/dist/pi-auth-json-lae_wwwo.js +80 -0
  238. package/dist/pi-model-discovery-7q0GxMrp.js +3 -0
  239. package/dist/pi-tools.policy-Csmla32P.js +200 -0
  240. package/dist/pi-tools.policy-xYdDLEv9.js +200 -0
  241. package/dist/plugin-auto-enable-CViVVWgg.js +282 -0
  242. package/dist/plugin-auto-enable-CjZ238UI.js +282 -0
  243. package/dist/plugin-registry-B4Aw2hzq.js +32 -0
  244. package/dist/plugin-registry-DW81arxW.js +32 -0
  245. package/dist/plugin-sdk/cli/cli-name.d.ts +1 -1
  246. package/dist/plugin-sdk/config/paths.d.ts +2 -2
  247. package/dist/plugin-sdk/index.js +7 -7
  248. package/dist/plugins-DhcGAPDB.js +38 -0
  249. package/dist/plugins-DtghNRtM.js +168 -0
  250. package/dist/plugins-cli-4vWTmOAb.js +736 -0
  251. package/dist/plugins-cli-CdTMbP0X.js +734 -0
  252. package/dist/polls-D6eCdatA.js +1343 -0
  253. package/dist/ports-BtZx-JKD.js +96 -0
  254. package/dist/ports-C8bKN8s0.js +96 -0
  255. package/dist/ports-DHiKnPRX.js +344 -0
  256. package/dist/ports-vd93M_Pt.js +317 -0
  257. package/dist/program-CX3aUVeb.js +176 -0
  258. package/dist/program-context-BPos0ivo.js +496 -0
  259. package/dist/progress-oiAjiiNi.js +133 -0
  260. package/dist/prompt-style-Cm4wOtKm.js +9 -0
  261. package/dist/pw-ai-4QbK5YFe.js +1865 -0
  262. package/dist/pw-ai-BWz3Cxt7.js +1868 -0
  263. package/dist/pw-ai-C83HBue2.js +1867 -0
  264. package/dist/qmd-manager-BcMeZiGD.js +938 -0
  265. package/dist/qmd-manager-CPypGJ0P.js +935 -0
  266. package/dist/qmd-manager-CRrSkfia.js +937 -0
  267. package/dist/register.agent-DDY8KJhn.js +265 -0
  268. package/dist/register.agent-DKawm-9d.js +1003 -0
  269. package/dist/register.anima-CEWUo29k.js +193 -0
  270. package/dist/register.anima-DBWz2rk_.js +193 -0
  271. package/dist/register.configure-BX67qV8k.js +103 -0
  272. package/dist/register.configure-CWsySuiq.js +101 -0
  273. package/dist/register.maintenance-0k-ZNhDg.js +543 -0
  274. package/dist/register.maintenance-BIwx1fzX.js +543 -0
  275. package/dist/register.message-CXPsoakA.js +657 -0
  276. package/dist/register.message-DA3jvfgI.js +660 -0
  277. package/dist/register.onboard-C4HG7Hqv.js +170 -0
  278. package/dist/register.onboard-GOpdif-j.js +170 -0
  279. package/dist/register.setup-B17vZT7C.js +175 -0
  280. package/dist/register.setup-GJyUDCqh.js +175 -0
  281. package/dist/register.status-health-sessions-D5876dGx.js +313 -0
  282. package/dist/register.status-health-sessions-lOewVIZR.js +142 -0
  283. package/dist/register.subclis-Dwnujj5C.js +255 -0
  284. package/dist/reply-CR5T_oQJ.js +32212 -0
  285. package/dist/reply-prefix-BcrS4Umd.js +100 -0
  286. package/dist/reply-prefix-Btb5o2NH.js +100 -0
  287. package/dist/reply-r089HuRA.js +32212 -0
  288. package/dist/routes-B4czFzIb.js +1820 -0
  289. package/dist/routes-ucJWAk5O.js +1820 -0
  290. package/dist/rpc-BnKxnQ0v.js +70 -0
  291. package/dist/rpc-DgE-xnyx.js +70 -0
  292. package/dist/run-main-B74kv84C.js +371 -0
  293. package/dist/runtime-guard-CKFdts2L.js +60 -0
  294. package/dist/sandbox-CJTS3er6.js +858 -0
  295. package/dist/sandbox-DBSiVHt_.js +859 -0
  296. package/dist/sandbox-cli-CrkjyU5M.js +461 -0
  297. package/dist/sandbox-cli-D1r5y6Sz.js +458 -0
  298. package/dist/security-cli-BZUdnkhn.js +462 -0
  299. package/dist/security-cli-DS09ebvA.js +465 -0
  300. package/dist/server-context-C0xZbYhg.js +824 -0
  301. package/dist/server-context-DVh2z7om.js +824 -0
  302. package/dist/server-node-events-bu9lpkMH.js +233 -0
  303. package/dist/server-node-events-i1Rrww31.js +231 -0
  304. package/dist/service-CJJwLEor.js +642 -0
  305. package/dist/service-DxLxBhaU.js +642 -0
  306. package/dist/service-audit-DB4Y3Ekp.js +488 -0
  307. package/dist/service-audit-M8y4TXVb.js +488 -0
  308. package/dist/session-CGxOLFs2.js +179 -0
  309. package/dist/session-DTTbdKb0.js +181 -0
  310. package/dist/session-cost-usage-FcdJl9c3.js +600 -0
  311. package/dist/session-cost-usage-qdfsGU2a.js +600 -0
  312. package/dist/session-yOhWcsD2.js +181 -0
  313. package/dist/sessions-B-Cu7JZq.js +1296 -0
  314. package/dist/sessions-BgLN4KFr.js +180 -0
  315. package/dist/sessions-CnRjwdVr.js +1296 -0
  316. package/dist/sessions-wRKla1Qh.js +2038 -0
  317. package/dist/shared-DS3UaJSP.js +66 -0
  318. package/dist/shared-DxNHzky3.js +77 -0
  319. package/dist/shared-Qpt4hUDi.js +66 -0
  320. package/dist/shared-kzrojZ1B.js +77 -0
  321. package/dist/skill-scanner-DLJji5Ye.js +263 -0
  322. package/dist/skills-BWFIEp4j.js +807 -0
  323. package/dist/skills-DV4zKdCx.js +808 -0
  324. package/dist/skills-cli-BY53ILm2.js +289 -0
  325. package/dist/skills-cli-CO3gxl8A.js +286 -0
  326. package/dist/skills-status-DX5pcqY3.js +166 -0
  327. package/dist/skills-status-zhcKzGkp.js +166 -0
  328. package/dist/sqlite-B6MojU1I.js +321 -0
  329. package/dist/sqlite-CuprTGR7.js +453 -0
  330. package/dist/sqlite-dzD-jMjs.js +368 -0
  331. package/dist/start-Cu3aLoSf.js +297 -0
  332. package/dist/start-Dz7tMAl8.js +296 -0
  333. package/dist/status-CaSxhxfV.js +2132 -0
  334. package/dist/status-D2C0JCX3.js +2137 -0
  335. package/dist/status-DlFMsQzh.js +27 -0
  336. package/dist/status-G0CITnKR.js +27 -0
  337. package/dist/status.update-CHjhVxJY.js +79 -0
  338. package/dist/status.update-DVFelehi.js +79 -0
  339. package/dist/subagent-registry-3Xb4el-8.js +14 -0
  340. package/dist/subagent-registry-CdSjz14I.js +2760 -0
  341. package/dist/subagent-registry-DNDhbHWi.js +2759 -0
  342. package/dist/subsystem-DfKstnEK.js +860 -0
  343. package/dist/system-cli-B5mt0FWa.js +82 -0
  344. package/dist/system-cli-Dg3UQ3Zz.js +79 -0
  345. package/dist/systemd-B43AvOGx.js +452 -0
  346. package/dist/systemd-RpPE0XGg.js +452 -0
  347. package/dist/systemd-hints-DMJT-Bbc.js +36 -0
  348. package/dist/systemd-hints-vRInKcz9.js +36 -0
  349. package/dist/systemd-linger-Dzyxqsod.js +75 -0
  350. package/dist/systemd-linger-EujbmI5A.js +75 -0
  351. package/dist/table-DhXHfRX2.js +279 -0
  352. package/dist/table-bWCLW-3P.js +279 -0
  353. package/dist/timeout-Ddn-5kAO.js +232 -0
  354. package/dist/tokens-3psI_Qk2.js +14 -0
  355. package/dist/tokens-BaM53PEx.js +14 -0
  356. package/dist/trash-Bmxs1Rnm.js +23 -0
  357. package/dist/trash-C39a6hKA.js +23 -0
  358. package/dist/tui-BHgBWhHE.js +3894 -0
  359. package/dist/tui-cli-B9Sq5-cC.js +50 -0
  360. package/dist/tui-cli-Dw7v4JoJ.js +47 -0
  361. package/dist/tui-mUwDwqvd.js +3894 -0
  362. package/dist/update-DF0GHG0j.js +317 -0
  363. package/dist/update-DoZLVjva.js +317 -0
  364. package/dist/update-check-Bt1dVPVN.js +400 -0
  365. package/dist/update-check-D5qAKes7.js +400 -0
  366. package/dist/update-cli-BNu2Oi7H.js +1105 -0
  367. package/dist/update-cli-D36AmALA.js +1105 -0
  368. package/dist/update-runner-CNQQaTwA.js +894 -0
  369. package/dist/update-runner-CvxZmbu-.js +894 -0
  370. package/dist/usage-BGCwNnjk.js +4516 -0
  371. package/dist/utils-DZ8pnOD5.js +243 -0
  372. package/dist/web-B5QG839O.js +46842 -0
  373. package/dist/web-Cmnvk9v0.js +2203 -0
  374. package/dist/web-Cv2KnTnL.js +63 -0
  375. package/dist/webhooks-cli-B6y89Pj_.js +319 -0
  376. package/dist/webhooks-cli-BDzHON4w.js +316 -0
  377. package/dist/whatsapp-actions-C_5MwVxM.js +45 -0
  378. package/dist/whatsapp-actions-hgYA12To.js +53 -0
  379. package/dist/whatsapp-actions-zTiVOoOV.js +49 -0
  380. package/dist/widearea-dns-BeIdnISJ.js +127 -0
  381. package/dist/widearea-dns-CF1gxpJ-.js +127 -0
  382. package/dist/workspace-DLna1IxR.js +649 -0
  383. package/dist/ws-log-Q4wO1Ztb.js +267 -0
  384. package/dist/ws-log-xF0kxDzp.js +267 -0
  385. package/package.json +1 -2
  386. package/dist/accounts-Cc5E4IDO.js +0 -260
  387. package/dist/accounts-CcVrwKqv.js +0 -259
  388. package/dist/acp-cli-DvphOKuh.js +0 -1081
  389. package/dist/acp-cli-p28pQ65a.js +0 -1084
  390. package/dist/agent-Cj7uDJaZ.js +0 -725
  391. package/dist/agent-Cuj9-2sT.js +0 -725
  392. package/dist/agent-events-BEBQsyE5.js +0 -182
  393. package/dist/agent-scope-BVf4aSwY.js +0 -112
  394. package/dist/agent-scope-OZi7lb8S.js +0 -452
  395. package/dist/agent-scope-V1bi9OYL.js +0 -452
  396. package/dist/agents-BUWqn_Ui.js +0 -774
  397. package/dist/agents.config-Dvo2ULxs.js +0 -182
  398. package/dist/agents.config-d6H0_3oj.js +0 -182
  399. package/dist/argv-DqUHKf0o.js +0 -73
  400. package/dist/audit-C6okOOSh.js +0 -2401
  401. package/dist/audit-VWjIdwC7.js +0 -2401
  402. package/dist/auth-91o2YM96.js +0 -648
  403. package/dist/auth-choice-CAmACV13.js +0 -2681
  404. package/dist/auth-choice-p3SeHPj2.js +0 -2681
  405. package/dist/auth-health-B_jXrWe6.js +0 -149
  406. package/dist/auth-health-DCicUKYR.js +0 -149
  407. package/dist/auth-lZ26wsbN.js +0 -639
  408. package/dist/auth-profiles-CCDD56dU.js +0 -1564
  409. package/dist/auth-profiles-DxI8L7bs.js +0 -2689
  410. package/dist/banner-Cohn04J6.js +0 -294
  411. package/dist/browser-cli-DANzjztE.js +0 -1676
  412. package/dist/browser-cli-WjsVH741.js +0 -1679
  413. package/dist/call-BAHvlu2G.js +0 -282
  414. package/dist/call-Ct7EGP_L.js +0 -282
  415. package/dist/catalog-BAayBt1L.js +0 -185
  416. package/dist/catalog-BNsf97BM.js +0 -185
  417. package/dist/channel-options-Dx9nPlX8.js +0 -33
  418. package/dist/channel-options-ZdvXrTGs.js +0 -32
  419. package/dist/channel-selection-CujyiWGM.js +0 -51
  420. package/dist/channel-selection-DfGpCyh2.js +0 -51
  421. package/dist/channel-web-CC0hkgkR.js +0 -2162
  422. package/dist/channels-cli-D7lNBpIb.js +0 -1304
  423. package/dist/channels-cli-DUPG8WDv.js +0 -1306
  424. package/dist/channels-status-issues-DBc1pU_R.js +0 -18
  425. package/dist/channels-status-issues-DjO9MHIG.js +0 -18
  426. package/dist/chrome-Bi6iZ5sG.js +0 -1601
  427. package/dist/chrome-DNSv7Cpy.js +0 -1629
  428. package/dist/chrome-DScZx4Lk.js +0 -1601
  429. package/dist/chunk-mxPVo000.js +0 -348
  430. package/dist/clack-prompter-B0kl7shw.js +0 -92
  431. package/dist/clack-prompter-B1YxZdRy.js +0 -92
  432. package/dist/cli-CfHUkOD0.js +0 -101
  433. package/dist/cli-ClMrIh6l.js +0 -99
  434. package/dist/cli-session-BkPTd9Pk.js +0 -5463
  435. package/dist/cli-session-Dd8DKb5a.js +0 -5408
  436. package/dist/client-C1avc0vD.js +0 -1692
  437. package/dist/client-CC94YZrT.js +0 -1692
  438. package/dist/clipboard-B2fBy8tG.js +0 -31
  439. package/dist/clipboard-BbGnZskJ.js +0 -31
  440. package/dist/command-format-Clp46jkj.js +0 -38
  441. package/dist/command-format-DELazozB.js +0 -52
  442. package/dist/command-format-SkzzRqR1.js +0 -52
  443. package/dist/command-registry-DZ4hkmA0.js +0 -248
  444. package/dist/commands-DtYZJSPn.js +0 -568
  445. package/dist/commands-Dujk1JmY.js +0 -568
  446. package/dist/commands-registry-Bd0xbvwG.js +0 -766
  447. package/dist/commands-registry-DYfRSVF3.js +0 -766
  448. package/dist/common-D6bu0zHC.js +0 -287
  449. package/dist/common-zW9Y2P1B.js +0 -287
  450. package/dist/completion-cli-tSe7Pmqm.js +0 -431
  451. package/dist/completion-cli-vn4IScs5.js +0 -432
  452. package/dist/config-C8rUDJXY.js +0 -5704
  453. package/dist/config-CLZ_XGVw.js +0 -6523
  454. package/dist/config-SY8M0kM_.js +0 -5705
  455. package/dist/config-cli-1V7D2Wsw.js +0 -247
  456. package/dist/config-cli-CjWEC81L.js +0 -244
  457. package/dist/config-guard-BW2gpKj_.js +0 -93
  458. package/dist/config-guard-BvxuzHpo.js +0 -76
  459. package/dist/config-sync-CoIIbEOe.js +0 -91
  460. package/dist/config-sync-DvAttep0.js +0 -91
  461. package/dist/configure-Bf0oupCE.js +0 -959
  462. package/dist/configure-DRM-7zFf.js +0 -960
  463. package/dist/context-D5iEFzv9.js +0 -60
  464. package/dist/control-service-C8m8F9pr.js +0 -72
  465. package/dist/control-service-DKotCWCg.js +0 -72
  466. package/dist/cron-cli-DB_FLYHD.js +0 -448
  467. package/dist/cron-cli-bxm5lrrO.js +0 -451
  468. package/dist/daemon-cli-1LsOnICv.js +0 -566
  469. package/dist/daemon-cli-CC2NrJ7a.js +0 -565
  470. package/dist/daemon-runtime-BXZhtBL9.js +0 -460
  471. package/dist/daemon-runtime-DW4USC7r.js +0 -460
  472. package/dist/deliver-B4HuPwJA.js +0 -1162
  473. package/dist/deliver-LiY5oL52.js +0 -1097
  474. package/dist/deliver-xrmk7xjh.js +0 -1097
  475. package/dist/delivery-queue-TnQykYsg.js +0 -220
  476. package/dist/deps-CMMOiOsF.js +0 -42
  477. package/dist/devices-cli-Be5he2SA.js +0 -195
  478. package/dist/devices-cli-z6ecoFe9.js +0 -198
  479. package/dist/diagnostics-Dj75aEHN.js +0 -35
  480. package/dist/diagnostics-DlIw6fqD.js +0 -35
  481. package/dist/directory-cli-CEy-0nxj.js +0 -243
  482. package/dist/directory-cli-DpzKcigr.js +0 -246
  483. package/dist/dispatcher-10Shiuz3.js +0 -100
  484. package/dist/dispatcher-3Jae6AiW.js +0 -100
  485. package/dist/dns-cli-Bat1pkc-.js +0 -200
  486. package/dist/dns-cli-NohNyEo0.js +0 -197
  487. package/dist/dock-DbxBBv30.js +0 -753
  488. package/dist/dock-cPBY4qGl.js +0 -753
  489. package/dist/docs-cli-BWp6p-Tq.js +0 -161
  490. package/dist/docs-cli-x22FnZfL.js +0 -159
  491. package/dist/doctor-BrT5m_on.js +0 -1815
  492. package/dist/doctor-Pp2HVnjM.js +0 -1813
  493. package/dist/doctor-completion-DNTimX9o.js +0 -92
  494. package/dist/doctor-completion-ylN9QAJ6.js +0 -92
  495. package/dist/doctor-config-flow-D1w3700T.js +0 -1232
  496. package/dist/doctor-config-flow-Dq50iE1R.js +0 -1232
  497. package/dist/engine-B9avUJL5.js +0 -563
  498. package/dist/engine-BiUQ25D4.js +0 -563
  499. package/dist/env-0lJfCPsw.js +0 -32
  500. package/dist/exec-BenD3A5l.js +0 -1167
  501. package/dist/exec-Bv3pyjeM.js +0 -255
  502. package/dist/exec-approvals-CdLmKX2R.js +0 -1221
  503. package/dist/exec-approvals-cli-DXfV6G8H.js +0 -368
  504. package/dist/exec-approvals-cli-J2cZs10o.js +0 -371
  505. package/dist/frontmatter-YijVi0FQ.js +0 -204
  506. package/dist/gateway-cli-DOAbA0pc.js +0 -19972
  507. package/dist/gateway-cli-QpWtBhQy.js +0 -19971
  508. package/dist/gateway-rpc-DJKBil9s.js +0 -28
  509. package/dist/gateway-rpc-DVterpLP.js +0 -28
  510. package/dist/github-copilot-auth-4IUFp669.js +0 -1418
  511. package/dist/github-copilot-auth-C9E0IROs.js +0 -1418
  512. package/dist/gmail-setup-utils-BPo_LkKI.js +0 -428
  513. package/dist/gmail-setup-utils-D3Yqgor7.js +0 -428
  514. package/dist/health-BeZnqp6m.js +0 -1258
  515. package/dist/health-Cn2OoVWZ.js +0 -1253
  516. package/dist/health-format-CdP99j3Y.js +0 -208
  517. package/dist/health-format-JEChH08S.js +0 -208
  518. package/dist/heartbeat-visibility-BL3WAchI.js +0 -98
  519. package/dist/heartbeat-visibility-CQ9QimI7.js +0 -98
  520. package/dist/help-format-Dl4bsrLI.js +0 -17
  521. package/dist/helpers-ZKNRexvX.js +0 -10
  522. package/dist/hooks-cli-D99hXt7K.js +0 -991
  523. package/dist/hooks-cli-DMB8RiEO.js +0 -993
  524. package/dist/hooks-status-B-e96dZj.js +0 -356
  525. package/dist/hooks-status-C_9sE0ox.js +0 -356
  526. package/dist/image-ops-Dlt3T7th.js +0 -541
  527. package/dist/image-ops-omlvdfah.js +0 -541
  528. package/dist/init-Bm04RagW.js +0 -122
  529. package/dist/init-CaJBf4p1.js +0 -122
  530. package/dist/installs-C2iMRBVz.js +0 -383
  531. package/dist/installs-D-cPGdCw.js +0 -383
  532. package/dist/ipv4-Bf7NS3QU.js +0 -1964
  533. package/dist/ipv4-wWNs8IH_.js +0 -1964
  534. package/dist/lanes-CNxj3tit.js +0 -232
  535. package/dist/lifecycle-core-B_7XRcvF.js +0 -388
  536. package/dist/lifecycle-core-By83PVAK.js +0 -387
  537. package/dist/links-BfjHVTB_.js +0 -15
  538. package/dist/links-DPGe0OHw.js +0 -15
  539. package/dist/logging-DB6BQmhi.js +0 -15
  540. package/dist/logging-mcb66J0p.js +0 -15
  541. package/dist/login-BDCg6D0N.js +0 -61
  542. package/dist/login-BDfnbjnZ.js +0 -59
  543. package/dist/login-BqH1itcg.js +0 -61
  544. package/dist/login-qr-CyOw3R4r.js +0 -321
  545. package/dist/login-qr-D8ECtb72.js +0 -323
  546. package/dist/login-qr-RnR7e4Bw.js +0 -326
  547. package/dist/logs-cli--j89L74J.js +0 -245
  548. package/dist/logs-cli-DpEMg_Gq.js +0 -242
  549. package/dist/manager-B4OyvcxT.js +0 -3244
  550. package/dist/manager-Cqc1CeH7.js +0 -3246
  551. package/dist/manager-DUyQPFvj.js +0 -3244
  552. package/dist/manifest-registry-CW1zCyRF.js +0 -748
  553. package/dist/manifest-registry-D4lM2RdV.js +0 -748
  554. package/dist/markdown-tables-BT1X6jqH.js +0 -347
  555. package/dist/markdown-tables-DHgOK2vI.js +0 -348
  556. package/dist/media-THyainiE.js +0 -1342
  557. package/dist/memory-cli-BKocCWXM.js +0 -868
  558. package/dist/memory-cli-Jmma-xI_.js +0 -869
  559. package/dist/message-channel-dSTVVCyX.js +0 -110
  560. package/dist/migrate-BR6iAIjO.js +0 -157
  561. package/dist/migrate-D0EcMs0f.js +0 -157
  562. package/dist/model-selection-YcSr9CgC.js +0 -2691
  563. package/dist/models-1vUQBVfw.js +0 -2510
  564. package/dist/models-cli-BK3BwUhL.js +0 -2739
  565. package/dist/models-cli-DECrM8oA.js +0 -258
  566. package/dist/net-B5lXhYLV.js +0 -218
  567. package/dist/node-cli-cLHUNpPD.js +0 -1319
  568. package/dist/node-cli-fO7Y132S.js +0 -1322
  569. package/dist/node-service-BFxHJsno.js +0 -67
  570. package/dist/node-service-DUnan4uK.js +0 -67
  571. package/dist/nodes-cli-BCq35E6N.js +0 -1200
  572. package/dist/nodes-cli-vD7MwAKP.js +0 -1197
  573. package/dist/nodes-screen-1YiLkqr5.js +0 -234
  574. package/dist/nodes-screen-DZeD8hE5.js +0 -234
  575. package/dist/note-Bi8Wb8DV.js +0 -73
  576. package/dist/note-uiuPxhyX.js +0 -73
  577. package/dist/npm-registry-spec-B-XIShkB.js +0 -351
  578. package/dist/npm-registry-spec-za3itb5Y.js +0 -351
  579. package/dist/onboard-Ds6w_sWo.js +0 -1165
  580. package/dist/onboard-SAVx3bp4.js +0 -1166
  581. package/dist/onboard-channels-Cg_EkBa4.js +0 -672
  582. package/dist/onboard-channels-D7NbA55V.js +0 -672
  583. package/dist/onboard-helpers-DO_hgZb9.js +0 -365
  584. package/dist/onboard-helpers-_XgJgeqh.js +0 -365
  585. package/dist/onboarding-3hLmDd0r.js +0 -911
  586. package/dist/onboarding-B4LKLsbU.js +0 -910
  587. package/dist/orchestrator-BKzmyBWy.js +0 -357
  588. package/dist/orchestrator-BN3QCz2s.js +0 -357
  589. package/dist/outbound-BgA9hNlP.js +0 -2062
  590. package/dist/outbound-CjdvVhUI.js +0 -214
  591. package/dist/outbound-DOGe6qb2.js +0 -214
  592. package/dist/outbound-send-deps-Du5aBpd7.js +0 -55
  593. package/dist/pairing-cli-2vnyg_Nd.js +0 -118
  594. package/dist/pairing-cli-BH1KQtNV.js +0 -121
  595. package/dist/pairing-store-DJz_9Gv0.js +0 -388
  596. package/dist/pairing-store-DmOzxcuk.js +0 -388
  597. package/dist/path-env-Bu6k0jDQ.js +0 -89
  598. package/dist/path-env-C0zQSjw8.js +0 -89
  599. package/dist/paths-BTc4nk-6.js +0 -126
  600. package/dist/paths-BgUi2Z2G.js +0 -54
  601. package/dist/paths-C6VCWKo3.js +0 -238
  602. package/dist/paths-CCxa0o9c.js +0 -222
  603. package/dist/paths-CxRf2rBG.js +0 -129
  604. package/dist/paths-hcX1Gqg5.js +0 -129
  605. package/dist/pi-auth-json-B68R7q7_.js +0 -82
  606. package/dist/pi-auth-json-CR0jXAgq.js +0 -78
  607. package/dist/pi-auth-json-ZYzi3nxs.js +0 -80
  608. package/dist/pi-model-discovery-Cxs4pvC2.js +0 -3
  609. package/dist/pi-tools.policy-D81U5xy0.js +0 -200
  610. package/dist/pi-tools.policy-DSHkkb5b.js +0 -200
  611. package/dist/plugin-auto-enable-CxF4bpDN.js +0 -282
  612. package/dist/plugin-auto-enable-jNaAeyEh.js +0 -282
  613. package/dist/plugin-registry-C7XWotZG.js +0 -32
  614. package/dist/plugin-registry-DcUCbGax.js +0 -32
  615. package/dist/plugins-B362e77G.js +0 -168
  616. package/dist/plugins-CmSUIUNi.js +0 -38
  617. package/dist/plugins-cli-BsCEnoQ7.js +0 -734
  618. package/dist/plugins-cli-QSIsMUG7.js +0 -736
  619. package/dist/polls-CItfB1H8.js +0 -1343
  620. package/dist/ports-BVLMN1Sr.js +0 -96
  621. package/dist/ports-CqLSlU6Z.js +0 -317
  622. package/dist/ports-D94CwCrv.js +0 -344
  623. package/dist/ports-D_NHthOz.js +0 -96
  624. package/dist/program-DkJHjI0R.js +0 -176
  625. package/dist/program-context-DnyGM2SC.js +0 -496
  626. package/dist/progress-Bek_GyWS.js +0 -133
  627. package/dist/prompt-style-lu0clOOE.js +0 -9
  628. package/dist/pw-ai-BLVMuSLv.js +0 -1867
  629. package/dist/pw-ai-DZJWEF_f.js +0 -1865
  630. package/dist/pw-ai-dzf-ptcn.js +0 -1868
  631. package/dist/qmd-manager-Cur_Ekn0.js +0 -937
  632. package/dist/qmd-manager-DNAUuwjK.js +0 -938
  633. package/dist/qmd-manager-DepEoASu.js +0 -935
  634. package/dist/register.agent-CSWvzOkR.js +0 -265
  635. package/dist/register.agent-UeH2NXmH.js +0 -1003
  636. package/dist/register.anima-DOdee0dh.js +0 -193
  637. package/dist/register.anima-HHDWsz6r.js +0 -193
  638. package/dist/register.configure-CSJFxdz9.js +0 -103
  639. package/dist/register.configure-D84Fvcz4.js +0 -101
  640. package/dist/register.maintenance-B3pvNbZb.js +0 -543
  641. package/dist/register.maintenance-BKVOwkw6.js +0 -543
  642. package/dist/register.message-BAO6CPl2.js +0 -657
  643. package/dist/register.message-OXoOKE_6.js +0 -660
  644. package/dist/register.onboard-BK_ixVmD.js +0 -170
  645. package/dist/register.onboard-cfCaPx6j.js +0 -170
  646. package/dist/register.setup-BGfDnzph.js +0 -175
  647. package/dist/register.setup-Y-Q74M-0.js +0 -175
  648. package/dist/register.status-health-sessions-CT14eitH.js +0 -142
  649. package/dist/register.status-health-sessions-TfZMzAUn.js +0 -313
  650. package/dist/register.subclis-BZwdlNHC.js +0 -255
  651. package/dist/reply-mlsExaZm.js +0 -32212
  652. package/dist/reply-prefix-B0CfR4bM.js +0 -100
  653. package/dist/reply-prefix-w4a39ybC.js +0 -100
  654. package/dist/reply-qalRISe_.js +0 -32212
  655. package/dist/routes-CENsHJyg.js +0 -1820
  656. package/dist/routes-DO0HqW2e.js +0 -1820
  657. package/dist/rpc-C0pjNhBi.js +0 -70
  658. package/dist/rpc-DZ44PIXE.js +0 -70
  659. package/dist/run-main-BMpKw8Mp.js +0 -371
  660. package/dist/runtime-guard-BSUFiAQV.js +0 -60
  661. package/dist/sandbox-BIGfMYEI.js +0 -858
  662. package/dist/sandbox-DxP3IpUP.js +0 -859
  663. package/dist/sandbox-cli-DtLGH8sL.js +0 -461
  664. package/dist/sandbox-cli-_Tg7lfJ_.js +0 -458
  665. package/dist/security-cli-BRwgbedo.js +0 -462
  666. package/dist/security-cli-D3bSuyZt.js +0 -465
  667. package/dist/server-context-49XFFxFg.js +0 -824
  668. package/dist/server-context-LrlgrZzS.js +0 -824
  669. package/dist/server-node-events-Dm52i7NW.js +0 -231
  670. package/dist/server-node-events-QX523UyF.js +0 -233
  671. package/dist/service-BNVpYcQe.js +0 -642
  672. package/dist/service-D56aMXUB.js +0 -642
  673. package/dist/service-audit-D0X_XAB2.js +0 -488
  674. package/dist/service-audit-qmf6XMmP.js +0 -488
  675. package/dist/session-CrQQLLhx.js +0 -179
  676. package/dist/session-LocsOOWJ.js +0 -181
  677. package/dist/session-Vlce2BAT.js +0 -181
  678. package/dist/session-cost-usage-BwiTZuKl.js +0 -600
  679. package/dist/session-cost-usage-DT9YNXTJ.js +0 -600
  680. package/dist/sessions-BfV53TbG.js +0 -1296
  681. package/dist/sessions-BimpX_km.js +0 -180
  682. package/dist/sessions-DcXpzig0.js +0 -1296
  683. package/dist/sessions-Wd18dukK.js +0 -2038
  684. package/dist/shared-Bsr69u_7.js +0 -77
  685. package/dist/shared-Cgly1vPb.js +0 -66
  686. package/dist/shared-JOo05hST.js +0 -66
  687. package/dist/shared-f7dvQsi7.js +0 -77
  688. package/dist/skill-scanner-CkaVLABv.js +0 -263
  689. package/dist/skills-B-G7UHOa.js +0 -808
  690. package/dist/skills-B5LQx4lT.js +0 -807
  691. package/dist/skills-cli-DUGe2ZWW.js +0 -286
  692. package/dist/skills-cli-DtOk0bvK.js +0 -289
  693. package/dist/skills-status-Clq9ZnYu.js +0 -166
  694. package/dist/skills-status-JQluhU-P.js +0 -166
  695. package/dist/sqlite-BukcjdJa.js +0 -321
  696. package/dist/sqlite-CGcOZZ0C.js +0 -368
  697. package/dist/sqlite-Ck6f9KWc.js +0 -453
  698. package/dist/start--xmSFepB.js +0 -372
  699. package/dist/start-BdlZbqrr.js +0 -371
  700. package/dist/status-BgoeFm6g.js +0 -2137
  701. package/dist/status-BjjDrUq7.js +0 -27
  702. package/dist/status-Ct0DgOZ-.js +0 -2132
  703. package/dist/status-RA_uNmK0.js +0 -27
  704. package/dist/status.update-BjOH3GlS.js +0 -79
  705. package/dist/status.update-DLU1qBf0.js +0 -79
  706. package/dist/subagent-registry-9RLdKxES.js +0 -2760
  707. package/dist/subagent-registry-Byuex3zp.js +0 -2759
  708. package/dist/subagent-registry-DOBunBYS.js +0 -14
  709. package/dist/subsystem-Dowf8fSU.js +0 -860
  710. package/dist/system-cli-C5oBpzni.js +0 -79
  711. package/dist/system-cli-DXNKD_Id.js +0 -82
  712. package/dist/systemd-BSrHDyeU.js +0 -452
  713. package/dist/systemd-By5xdSB4.js +0 -452
  714. package/dist/systemd-hints-BtjL_5Rh.js +0 -36
  715. package/dist/systemd-hints-sJmr6cjb.js +0 -36
  716. package/dist/systemd-linger-CTmV2Gci.js +0 -75
  717. package/dist/systemd-linger-CmyqQkeC.js +0 -75
  718. package/dist/table-BL0lJzsm.js +0 -279
  719. package/dist/table-DoiRPsn0.js +0 -279
  720. package/dist/timeout-CswI_K-U.js +0 -232
  721. package/dist/tokens-C-X7wDKj.js +0 -14
  722. package/dist/tokens-DkvqA72p.js +0 -14
  723. package/dist/trash-BJLK1vMn.js +0 -23
  724. package/dist/trash-_x5UZ94k.js +0 -23
  725. package/dist/tui-BHjxDFZC.js +0 -3894
  726. package/dist/tui-CgOocwN8.js +0 -3894
  727. package/dist/tui-cli-5ANH8dE5.js +0 -47
  728. package/dist/tui-cli-BQ4P-JW_.js +0 -50
  729. package/dist/update-LFgxHHPd.js +0 -317
  730. package/dist/update-TxptCqk7.js +0 -317
  731. package/dist/update-check-CWc7YXmc.js +0 -400
  732. package/dist/update-check-IhlWaui6.js +0 -400
  733. package/dist/update-cli-PtXU62w7.js +0 -1105
  734. package/dist/update-cli-Va0EtETG.js +0 -1105
  735. package/dist/update-runner-BLeKFkiB.js +0 -894
  736. package/dist/update-runner-Iuzpc-_y.js +0 -894
  737. package/dist/usage-ApGvBLVg.js +0 -4516
  738. package/dist/utils-Bsw__U-F.js +0 -243
  739. package/dist/web-B6_Ky60G.js +0 -63
  740. package/dist/web-EZLQEWXY.js +0 -46842
  741. package/dist/web-pec8YJUX.js +0 -2203
  742. package/dist/webhooks-cli-BYQKTHTp.js +0 -319
  743. package/dist/webhooks-cli-C2_xtsUQ.js +0 -316
  744. package/dist/whatsapp-actions-C72VCq8f.js +0 -49
  745. package/dist/whatsapp-actions-Ck9Uv0Nw.js +0 -45
  746. package/dist/whatsapp-actions-D0reTj2k.js +0 -53
  747. package/dist/widearea-dns-B6ocX23x.js +0 -127
  748. package/dist/widearea-dns-NsEUNYwz.js +0 -127
  749. package/dist/workspace-Dcfoy5JJ.js +0 -649
  750. package/dist/ws-log-N8R5MvGE.js +0 -267
  751. package/dist/ws-log-gwFxPxj5.js +0 -267
  752. /package/dist/{auto-update-CUeF99gI.js → auto-update-CpF0fycd.js} +0 -0
  753. /package/dist/{auto-update-cgkp9ZTJ.js → auto-update-DNWdO7uF.js} +0 -0
  754. /package/dist/{brew-CVZkr0GU.js → brew-nqf_MiE4.js} +0 -0
  755. /package/dist/{budget-DxYQSekw.js → budget-CPedI-qW.js} +0 -0
  756. /package/dist/{budget-BWBp8Res.js → budget-CRpvqDRX.js} +0 -0
  757. /package/dist/{cli-utils-DtAxdCte.js → cli-utils-C1YHVD4o.js} +0 -0
  758. /package/dist/{command-options-CSbuuqHr.js → command-options-BbponVnw.js} +0 -0
  759. /package/dist/{command-options-Cp1tf96a.js → command-options-s0gnvXnS.js} +0 -0
  760. /package/dist/{constants-O8yBqCBv.js → constants-Dhb6zSIV.js} +0 -0
  761. /package/dist/{dangerous-tools-5ObDWy1N.js → dangerous-tools-DGTtJ_JR.js} +0 -0
  762. /package/dist/{dangerous-tools-Jwr7jqNw.js → dangerous-tools-DxrfTOfT.js} +0 -0
  763. /package/dist/{delivery-queue-B6IHz4Ry.js → delivery-queue-Bxm0nzw7.js} +0 -0
  764. /package/dist/{display-BDOsXu8F.js → display-Jy3UdGzA.js} +0 -0
  765. /package/dist/{errors-CHow2wtt.js → errors-CKaCqKga.js} +0 -0
  766. /package/dist/{exec-BizYYQgP.js → exec-DDmuVVNq.js} +0 -0
  767. /package/dist/{format-Mq6iU0_5.js → format-ByEjgyTF.js} +0 -0
  768. /package/dist/{format-duration-DhWzz_5b.js → format-duration-Aaj5tjJd.js} +0 -0
  769. /package/dist/{format-relative-C6kUHuOj.js → format-relative-79_Y1n2Y.js} +0 -0
  770. /package/dist/{help-format-DUBI91Ti.js → help-format-BMKzarov.js} +0 -0
  771. /package/dist/{helpers-eJFa4K6r.js → helpers-DpEB9Mh0.js} +0 -0
  772. /package/dist/{helpers-DLgbkcEn.js → helpers-FMld9sBT.js} +0 -0
  773. /package/dist/{input-provenance-DJBdpeKk.js → input-provenance-Cy_KnBlP.js} +0 -0
  774. /package/dist/{is-main-Dt9DTcH1.js → is-main-yjaVwMtJ.js} +0 -0
  775. /package/dist/{loader-l2OBdJ8x.js → loader-Br7Vr0zn.js} +0 -0
  776. /package/dist/{loader-BoYxRfcW.js → loader-CkmOrXcC.js} +0 -0
  777. /package/dist/{logging-BdnOSVPD.js → logging-CY-Q5cwf.js} +0 -0
  778. /package/dist/{message-channel-w4F2b2F6.js → message-channel-dua8OOGJ.js} +0 -0
  779. /package/dist/{mime-B1ZoR53M.js → mime-CBg4KybI.js} +0 -0
  780. /package/dist/{model-param-b-DPwyNGn8.js → model-param-b-DW9f0NN8.js} +0 -0
  781. /package/dist/{node-match-8XZnaid6.js → node-match-BV8bTBd4.js} +0 -0
  782. /package/dist/{normalize-GDK8JTNW.js → normalize-_lmlBOW9.js} +0 -0
  783. /package/dist/{openclaw-root-C85WMnVV.js → openclaw-root-JPvmPTf7.js} +0 -0
  784. /package/dist/{outbound-send-deps-ANnAhImn.js → outbound-send-deps-BfUvuWGa.js} +0 -0
  785. /package/dist/{parse-6-2MDhdT.js → parse-CZRwKocn.js} +0 -0
  786. /package/dist/{parse-log-line-Bqh1SSzC.js → parse-log-line-CvrZEK6A.js} +0 -0
  787. /package/dist/{parse-log-line-DUZCjXbl.js → parse-log-line-mLdat0AH.js} +0 -0
  788. /package/dist/{parse-port-BKB9Exlg.js → parse-port-BSOOdo7I.js} +0 -0
  789. /package/dist/{parse-port-DrfvwwiL.js → parse-port-Y0NK62x1.js} +0 -0
  790. /package/dist/{parse-timeout-Di_tcEmi.js → parse-timeout-DVPQ3n9j.js} +0 -0
  791. /package/dist/{paths-DcVEkYX5.js → paths-DHjlJ6cn.js} +0 -0
  792. /package/dist/{pi-model-discovery-DsRqYJLy.js → pi-model-discovery-DzEIEgHL.js} +0 -0
  793. /package/dist/{plugins-CDJw924T.js → plugins-D6PBOdkn.js} +0 -0
  794. /package/dist/{program-context-Bvn8046-.js → program-context-Q1hkT73c.js} +0 -0
  795. /package/dist/{progress-CbZ2D53A.js → progress-C9Ha1NJh.js} +0 -0
  796. /package/dist/{prompt-style-DKy6qQxR.js → prompt-style-DQi8j03a.js} +0 -0
  797. /package/dist/{prompts-BI__va99.js → prompts-BEHxUC3w.js} +0 -0
  798. /package/dist/{prompts-_dDWkCAz.js → prompts-CSOhuiqe.js} +0 -0
  799. /package/dist/{queue-D_u34pbL.js → queue-BJGo7kAB.js} +0 -0
  800. /package/dist/{queue-PG591iID.js → queue-DYgUbdoq.js} +0 -0
  801. /package/dist/{redact-ClVwO7Nn.js → redact-CyKvdFrg.js} +0 -0
  802. /package/dist/{registry-Bs_DJK9E.js → registry-C5MAYD4V.js} +0 -0
  803. /package/dist/{registry-D_zlP1U-.js → registry-CRrXXVs0.js} +0 -0
  804. /package/dist/{requirements-BzZxj2Wu.js → requirements-CGkxTCu4.js} +0 -0
  805. /package/dist/{requirements-DIW1svgA.js → requirements-CIDaOcbO.js} +0 -0
  806. /package/dist/{runtime-guard-DeOXA_86.js → runtime-guard-nL3Lp8T-.js} +0 -0
  807. /package/dist/{secret-equal-Dghy3xsA.js → secret-equal-DJpmLXlG.js} +0 -0
  808. /package/dist/{send-BhAfdGII.js → send-CTcxgDDU.js} +0 -0
  809. /package/dist/{send-ga9udK1_.js → send-DPezUR3-.js} +0 -0
  810. /package/dist/{send-C2t9xpXI.js → send-DZQTaG7-.js} +0 -0
  811. /package/dist/{send-DigO-i9j.js → send-VDff2gra.js} +0 -0
  812. /package/dist/{send-Dz2BDHll.js → send-bgQNV8d1.js} +0 -0
  813. /package/dist/{session-key-BGiG_JcT.js → session-key-CQT-NR6w.js} +0 -0
  814. /package/dist/{shell-argv-CAq1mLa2.js → shell-argv-n9IueeJQ.js} +0 -0
  815. /package/dist/{skill-scanner-Coo4QoCd.js → skill-scanner-o6NgVMD9.js} +0 -0
  816. /package/dist/{status-CMnlcBVc.js → status-C53kTIXF.js} +0 -0
  817. /package/dist/{status-tDZPwewW.js → status-CZDDA_Sy.js} +0 -0
  818. /package/dist/{system-run-command-X9lDJIy0.js → system-run-command-BCjUffN9.js} +0 -0
  819. /package/dist/{system-run-command-DGk7dwQP.js → system-run-command-CqAqKL9K.js} +0 -0
  820. /package/dist/{tailnet-CuiNECdL.js → tailnet-Ciwjv243.js} +0 -0
  821. /package/dist/{templates-CeYJjVzw.js → templates-37RKpACb.js} +0 -0
  822. /package/dist/{templates-I3Z0xplD.js → templates-DPalk30o.js} +0 -0
  823. /package/dist/{thinking-BXEswx1X.js → thinking-2hxwmvTl.js} +0 -0
  824. /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
  825. /package/dist/{transcript-tools-DuyYOkUq.js → transcript-tools-D4Lbxlka.js} +0 -0
  826. /package/dist/{usage-format-BAirWUSO.js → usage-format-6Uar63S0.js} +0 -0
  827. /package/dist/{utils-C9sj30YY.js → utils-DT8uXjFS.js} +0 -0
  828. /package/dist/{wsl-CqyuRvtM.js → wsl-CrPvx2kZ.js} +0 -0
  829. /package/dist/{wsl-ymJYvc9Q.js → wsl-UvJ5dHah.js} +0 -0
@@ -0,0 +1,1162 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
+ import { s as resolveStateDir } from "./paths-DA9WYabg.js";
3
+ import { C as normalizeAccountId$1 } from "./workspace-DLna1IxR.js";
4
+ import { l as createSubsystemLogger, x as getActivePluginRegistry } from "./exec-B7sUS164.js";
5
+ import { H as isSilentReplyText, V as SILENT_REPLY_TOKEN, k as getChannelDock, n as appendAssistantMessageToSessionTranscript, r as resolveMirroredTranscriptText } from "./sessions-wRKla1Qh.js";
6
+ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DtghNRtM.js";
7
+ import { a as chunkMarkdownTextWithMode, c as resolveChunkMode, l as resolveTextChunkLimit, r as chunkByParagraph, t as resolveMarkdownTableMode, u as parseFenceSpans } from "./markdown-tables-CqwihY2m.js";
8
+ import { t as sendMessageSignal } from "./send-BTA6qupx.js";
9
+ import path from "node:path";
10
+ import fsSync from "node:fs";
11
+ import crypto from "node:crypto";
12
+
13
+ //#region src/channels/plugins/media-limits.ts
14
+ const MB = 1024 * 1024;
15
+ function resolveChannelMediaMaxBytes(params) {
16
+ const accountId = normalizeAccountId$1(params.accountId);
17
+ const channelLimit = params.resolveChannelLimitMb({
18
+ cfg: params.cfg,
19
+ accountId
20
+ });
21
+ if (channelLimit) return channelLimit * MB;
22
+ if (params.cfg.agents?.defaults?.mediaMaxMb) return params.cfg.agents.defaults.mediaMaxMb * MB;
23
+ }
24
+
25
+ //#endregion
26
+ //#region src/channels/plugins/outbound/load.ts
27
+ const cache = /* @__PURE__ */ new Map();
28
+ let lastRegistry = null;
29
+ function ensureCacheForRegistry(registry) {
30
+ if (registry === lastRegistry) return;
31
+ cache.clear();
32
+ lastRegistry = registry;
33
+ }
34
+ async function loadChannelOutboundAdapter(id) {
35
+ const registry = getActivePluginRegistry();
36
+ ensureCacheForRegistry(registry);
37
+ const cached = cache.get(id);
38
+ if (cached) return cached;
39
+ const outbound = (registry?.channels.find((entry) => entry.plugin.id === id))?.plugin.outbound;
40
+ if (outbound) {
41
+ cache.set(id, outbound);
42
+ return outbound;
43
+ }
44
+ }
45
+
46
+ //#endregion
47
+ //#region src/plugins/hooks.ts
48
+ /**
49
+ * Get hooks for a specific hook name, sorted by priority (higher first).
50
+ */
51
+ function getHooksForName(registry, hookName) {
52
+ return registry.typedHooks.filter((h) => h.hookName === hookName).toSorted((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
53
+ }
54
+ /**
55
+ * Create a hook runner for a specific registry.
56
+ */
57
+ function createHookRunner(registry, options = {}) {
58
+ const logger = options.logger;
59
+ const catchErrors = options.catchErrors ?? true;
60
+ /**
61
+ * Run a hook that doesn't return a value (fire-and-forget style).
62
+ * All handlers are executed in parallel for performance.
63
+ */
64
+ async function runVoidHook(hookName, event, ctx) {
65
+ const hooks = getHooksForName(registry, hookName);
66
+ if (hooks.length === 0) return;
67
+ logger?.debug?.(`[hooks] running ${hookName} (${hooks.length} handlers)`);
68
+ const promises = hooks.map(async (hook) => {
69
+ try {
70
+ await hook.handler(event, ctx);
71
+ } catch (err) {
72
+ const msg = `[hooks] ${hookName} handler from ${hook.pluginId} failed: ${String(err)}`;
73
+ if (catchErrors) logger?.error(msg);
74
+ else throw new Error(msg, { cause: err });
75
+ }
76
+ });
77
+ await Promise.all(promises);
78
+ }
79
+ /**
80
+ * Run a hook that can return a modifying result.
81
+ * Handlers are executed sequentially in priority order, and results are merged.
82
+ */
83
+ async function runModifyingHook(hookName, event, ctx, mergeResults) {
84
+ const hooks = getHooksForName(registry, hookName);
85
+ if (hooks.length === 0) return;
86
+ logger?.debug?.(`[hooks] running ${hookName} (${hooks.length} handlers, sequential)`);
87
+ let result;
88
+ for (const hook of hooks) try {
89
+ const handlerResult = await hook.handler(event, ctx);
90
+ if (handlerResult !== void 0 && handlerResult !== null) if (mergeResults && result !== void 0) result = mergeResults(result, handlerResult);
91
+ else result = handlerResult;
92
+ } catch (err) {
93
+ const msg = `[hooks] ${hookName} handler from ${hook.pluginId} failed: ${String(err)}`;
94
+ if (catchErrors) logger?.error(msg);
95
+ else throw new Error(msg, { cause: err });
96
+ }
97
+ return result;
98
+ }
99
+ /**
100
+ * Run before_agent_start hook.
101
+ * Allows plugins to inject context into the system prompt.
102
+ * Runs sequentially, merging systemPrompt and prependContext from all handlers.
103
+ */
104
+ async function runBeforeAgentStart(event, ctx) {
105
+ return runModifyingHook("before_agent_start", event, ctx, (acc, next) => ({
106
+ systemPrompt: next.systemPrompt ?? acc?.systemPrompt,
107
+ prependContext: acc?.prependContext && next.prependContext ? `${acc.prependContext}\n\n${next.prependContext}` : next.prependContext ?? acc?.prependContext
108
+ }));
109
+ }
110
+ /**
111
+ * Run agent_end hook.
112
+ * Allows plugins to analyze completed conversations.
113
+ * Runs in parallel (fire-and-forget).
114
+ */
115
+ async function runAgentEnd(event, ctx) {
116
+ return runVoidHook("agent_end", event, ctx);
117
+ }
118
+ /**
119
+ * Run before_compaction hook.
120
+ */
121
+ async function runBeforeCompaction(event, ctx) {
122
+ return runVoidHook("before_compaction", event, ctx);
123
+ }
124
+ /**
125
+ * Run after_compaction hook.
126
+ */
127
+ async function runAfterCompaction(event, ctx) {
128
+ return runVoidHook("after_compaction", event, ctx);
129
+ }
130
+ /**
131
+ * Run before_reset hook.
132
+ * Fired when /new or /reset clears a session, before messages are lost.
133
+ * Runs in parallel (fire-and-forget).
134
+ */
135
+ async function runBeforeReset(event, ctx) {
136
+ return runVoidHook("before_reset", event, ctx);
137
+ }
138
+ /**
139
+ * Run message_received hook.
140
+ * Runs in parallel (fire-and-forget).
141
+ */
142
+ async function runMessageReceived(event, ctx) {
143
+ return runVoidHook("message_received", event, ctx);
144
+ }
145
+ /**
146
+ * Run message_sending hook.
147
+ * Allows plugins to modify or cancel outgoing messages.
148
+ * Runs sequentially.
149
+ */
150
+ async function runMessageSending(event, ctx) {
151
+ return runModifyingHook("message_sending", event, ctx, (acc, next) => ({
152
+ content: next.content ?? acc?.content,
153
+ cancel: next.cancel ?? acc?.cancel
154
+ }));
155
+ }
156
+ /**
157
+ * Run message_sent hook.
158
+ * Runs in parallel (fire-and-forget).
159
+ */
160
+ async function runMessageSent(event, ctx) {
161
+ return runVoidHook("message_sent", event, ctx);
162
+ }
163
+ /**
164
+ * Run before_tool_call hook.
165
+ * Allows plugins to modify or block tool calls.
166
+ * Runs sequentially.
167
+ */
168
+ async function runBeforeToolCall(event, ctx) {
169
+ return runModifyingHook("before_tool_call", event, ctx, (acc, next) => ({
170
+ params: next.params ?? acc?.params,
171
+ block: next.block ?? acc?.block,
172
+ blockReason: next.blockReason ?? acc?.blockReason
173
+ }));
174
+ }
175
+ /**
176
+ * Run after_tool_call hook.
177
+ * Runs in parallel (fire-and-forget).
178
+ */
179
+ async function runAfterToolCall(event, ctx) {
180
+ return runVoidHook("after_tool_call", event, ctx);
181
+ }
182
+ /**
183
+ * Run tool_result_persist hook.
184
+ *
185
+ * This hook is intentionally synchronous: it runs in hot paths where session
186
+ * transcripts are appended synchronously.
187
+ *
188
+ * Handlers are executed sequentially in priority order (higher first). Each
189
+ * handler may return `{ message }` to replace the message passed to the next
190
+ * handler.
191
+ */
192
+ function runToolResultPersist(event, ctx) {
193
+ const hooks = getHooksForName(registry, "tool_result_persist");
194
+ if (hooks.length === 0) return;
195
+ let current = event.message;
196
+ for (const hook of hooks) try {
197
+ const out = hook.handler({
198
+ ...event,
199
+ message: current
200
+ }, ctx);
201
+ if (out && typeof out.then === "function") {
202
+ const msg = `[hooks] tool_result_persist handler from ${hook.pluginId} returned a Promise; this hook is synchronous and the result was ignored.`;
203
+ if (catchErrors) {
204
+ logger?.warn?.(msg);
205
+ continue;
206
+ }
207
+ throw new Error(msg);
208
+ }
209
+ const next = out?.message;
210
+ if (next) current = next;
211
+ } catch (err) {
212
+ const msg = `[hooks] tool_result_persist handler from ${hook.pluginId} failed: ${String(err)}`;
213
+ if (catchErrors) logger?.error(msg);
214
+ else throw new Error(msg, { cause: err });
215
+ }
216
+ return { message: current };
217
+ }
218
+ /**
219
+ * Run session_start hook.
220
+ * Runs in parallel (fire-and-forget).
221
+ */
222
+ async function runSessionStart(event, ctx) {
223
+ return runVoidHook("session_start", event, ctx);
224
+ }
225
+ /**
226
+ * Run session_end hook.
227
+ * Runs in parallel (fire-and-forget).
228
+ */
229
+ async function runSessionEnd(event, ctx) {
230
+ return runVoidHook("session_end", event, ctx);
231
+ }
232
+ /**
233
+ * Run gateway_start hook.
234
+ * Runs in parallel (fire-and-forget).
235
+ */
236
+ async function runGatewayStart(event, ctx) {
237
+ return runVoidHook("gateway_start", event, ctx);
238
+ }
239
+ /**
240
+ * Run gateway_stop hook.
241
+ * Runs in parallel (fire-and-forget).
242
+ */
243
+ async function runGatewayStop(event, ctx) {
244
+ return runVoidHook("gateway_stop", event, ctx);
245
+ }
246
+ /**
247
+ * Check if any hooks are registered for a given hook name.
248
+ */
249
+ function hasHooks(hookName) {
250
+ return registry.typedHooks.some((h) => h.hookName === hookName);
251
+ }
252
+ /**
253
+ * Get count of registered hooks for a given hook name.
254
+ */
255
+ function getHookCount(hookName) {
256
+ return registry.typedHooks.filter((h) => h.hookName === hookName).length;
257
+ }
258
+ return {
259
+ runBeforeAgentStart,
260
+ runAgentEnd,
261
+ runBeforeCompaction,
262
+ runAfterCompaction,
263
+ runBeforeReset,
264
+ runMessageReceived,
265
+ runMessageSending,
266
+ runMessageSent,
267
+ runBeforeToolCall,
268
+ runAfterToolCall,
269
+ runToolResultPersist,
270
+ runSessionStart,
271
+ runSessionEnd,
272
+ runGatewayStart,
273
+ runGatewayStop,
274
+ hasHooks,
275
+ getHookCount
276
+ };
277
+ }
278
+
279
+ //#endregion
280
+ //#region src/plugins/hook-runner-global.ts
281
+ const log = createSubsystemLogger("plugins");
282
+ let globalHookRunner = null;
283
+ let globalRegistry = null;
284
+ /**
285
+ * Initialize the global hook runner with a plugin registry.
286
+ * Called once when plugins are loaded during gateway startup.
287
+ */
288
+ function initializeGlobalHookRunner(registry) {
289
+ globalRegistry = registry;
290
+ globalHookRunner = createHookRunner(registry, {
291
+ logger: {
292
+ debug: (msg) => log.debug(msg),
293
+ warn: (msg) => log.warn(msg),
294
+ error: (msg) => log.error(msg)
295
+ },
296
+ catchErrors: true
297
+ });
298
+ const hookCount = registry.hooks.length;
299
+ if (hookCount > 0) log.info(`hook runner initialized with ${hookCount} registered hooks`);
300
+ }
301
+ /**
302
+ * Get the global hook runner.
303
+ * Returns null if plugins haven't been loaded yet.
304
+ */
305
+ function getGlobalHookRunner() {
306
+ return globalHookRunner;
307
+ }
308
+
309
+ //#endregion
310
+ //#region src/signal/format.ts
311
+ function markdownToSignalTextChunks(text, _limit, _opts) {
312
+ return [{
313
+ text,
314
+ styles: []
315
+ }];
316
+ }
317
+
318
+ //#endregion
319
+ //#region src/infra/outbound/abort.ts
320
+ /**
321
+ * Utility for checking AbortSignal state and throwing a standard AbortError.
322
+ */
323
+ /**
324
+ * Throws an AbortError if the given signal has been aborted.
325
+ * Use at async checkpoints to support cancellation.
326
+ */
327
+ function throwIfAborted(abortSignal) {
328
+ if (abortSignal?.aborted) {
329
+ const err = /* @__PURE__ */ new Error("Operation aborted");
330
+ err.name = "AbortError";
331
+ throw err;
332
+ }
333
+ }
334
+
335
+ //#endregion
336
+ //#region src/infra/outbound/delivery-queue.ts
337
+ const QUEUE_DIRNAME = "delivery-queue";
338
+ const FAILED_DIRNAME = "failed";
339
+ function resolveQueueDir(stateDir) {
340
+ const base = stateDir ?? resolveStateDir();
341
+ return path.join(base, QUEUE_DIRNAME);
342
+ }
343
+ function resolveFailedDir(stateDir) {
344
+ return path.join(resolveQueueDir(stateDir), FAILED_DIRNAME);
345
+ }
346
+ /** Ensure the queue directory (and failed/ subdirectory) exist. */
347
+ async function ensureQueueDir(stateDir) {
348
+ const queueDir = resolveQueueDir(stateDir);
349
+ await fsSync.promises.mkdir(queueDir, {
350
+ recursive: true,
351
+ mode: 448
352
+ });
353
+ await fsSync.promises.mkdir(resolveFailedDir(stateDir), {
354
+ recursive: true,
355
+ mode: 448
356
+ });
357
+ return queueDir;
358
+ }
359
+ /** Persist a delivery entry to disk before attempting send. Returns the entry ID. */
360
+ async function enqueueDelivery(params, stateDir) {
361
+ const queueDir = await ensureQueueDir(stateDir);
362
+ const id = crypto.randomUUID();
363
+ const entry = {
364
+ id,
365
+ enqueuedAt: Date.now(),
366
+ channel: params.channel,
367
+ to: params.to,
368
+ accountId: params.accountId,
369
+ payloads: params.payloads,
370
+ threadId: params.threadId,
371
+ replyToId: params.replyToId,
372
+ bestEffort: params.bestEffort,
373
+ gifPlayback: params.gifPlayback,
374
+ silent: params.silent,
375
+ mirror: params.mirror,
376
+ retryCount: 0
377
+ };
378
+ const filePath = path.join(queueDir, `${id}.json`);
379
+ const tmp = `${filePath}.${process.pid}.tmp`;
380
+ const json = JSON.stringify(entry, null, 2);
381
+ await fsSync.promises.writeFile(tmp, json, {
382
+ encoding: "utf-8",
383
+ mode: 384
384
+ });
385
+ await fsSync.promises.rename(tmp, filePath);
386
+ return id;
387
+ }
388
+ /** Remove a successfully delivered entry from the queue. */
389
+ async function ackDelivery(id, stateDir) {
390
+ const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
391
+ try {
392
+ await fsSync.promises.unlink(filePath);
393
+ } catch (err) {
394
+ if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
395
+ }
396
+ }
397
+ /** Update a queue entry after a failed delivery attempt. */
398
+ async function failDelivery(id, error, stateDir) {
399
+ const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
400
+ const raw = await fsSync.promises.readFile(filePath, "utf-8");
401
+ const entry = JSON.parse(raw);
402
+ entry.retryCount += 1;
403
+ entry.lastError = error;
404
+ const tmp = `${filePath}.${process.pid}.tmp`;
405
+ await fsSync.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
406
+ encoding: "utf-8",
407
+ mode: 384
408
+ });
409
+ await fsSync.promises.rename(tmp, filePath);
410
+ }
411
+
412
+ //#endregion
413
+ //#region src/utils/directive-tags.ts
414
+ const AUDIO_TAG_RE = /\[\[\s*audio_as_voice\s*\]\]/gi;
415
+ const REPLY_TAG_RE = /\[\[\s*(?:reply_to_current|reply_to\s*:\s*([^\]\n]+))\s*\]\]/gi;
416
+ function normalizeDirectiveWhitespace(text) {
417
+ return text.replace(/[ \t]+/g, " ").replace(/[ \t]*\n[ \t]*/g, "\n").trim();
418
+ }
419
+ function parseInlineDirectives(text, options = {}) {
420
+ const { currentMessageId, stripAudioTag = true, stripReplyTags = true } = options;
421
+ if (!text) return {
422
+ text: "",
423
+ audioAsVoice: false,
424
+ replyToCurrent: false,
425
+ hasAudioTag: false,
426
+ hasReplyTag: false
427
+ };
428
+ let cleaned = text;
429
+ let audioAsVoice = false;
430
+ let hasAudioTag = false;
431
+ let hasReplyTag = false;
432
+ let sawCurrent = false;
433
+ let lastExplicitId;
434
+ cleaned = cleaned.replace(AUDIO_TAG_RE, (match) => {
435
+ audioAsVoice = true;
436
+ hasAudioTag = true;
437
+ return stripAudioTag ? " " : match;
438
+ });
439
+ cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw) => {
440
+ hasReplyTag = true;
441
+ if (idRaw === void 0) sawCurrent = true;
442
+ else {
443
+ const id = idRaw.trim();
444
+ if (id) lastExplicitId = id;
445
+ }
446
+ return stripReplyTags ? " " : match;
447
+ });
448
+ cleaned = normalizeDirectiveWhitespace(cleaned);
449
+ const replyToId = lastExplicitId ?? (sawCurrent ? currentMessageId?.trim() || void 0 : void 0);
450
+ return {
451
+ text: cleaned,
452
+ audioAsVoice,
453
+ replyToId,
454
+ replyToExplicitId: lastExplicitId,
455
+ replyToCurrent: sawCurrent,
456
+ hasAudioTag,
457
+ hasReplyTag
458
+ };
459
+ }
460
+
461
+ //#endregion
462
+ //#region src/media/audio-tags.ts
463
+ /**
464
+ * Extract audio mode tag from text.
465
+ * Supports [[audio_as_voice]] to send audio as voice bubble instead of file.
466
+ * Default is file (preserves backward compatibility).
467
+ */
468
+ function parseAudioTag(text) {
469
+ const result = parseInlineDirectives(text, { stripReplyTags: false });
470
+ return {
471
+ text: result.text,
472
+ audioAsVoice: result.audioAsVoice,
473
+ hadTag: result.hasAudioTag
474
+ };
475
+ }
476
+
477
+ //#endregion
478
+ //#region src/media/parse.ts
479
+ const MEDIA_TOKEN_RE = /\bMEDIA:\s*`?([^\n]+)`?/gi;
480
+ function normalizeMediaSource(src) {
481
+ return src.startsWith("file://") ? src.replace("file://", "") : src;
482
+ }
483
+ function cleanCandidate(raw) {
484
+ return raw.replace(/^[`"'[{(]+/, "").replace(/[`"'\\})\],]+$/, "");
485
+ }
486
+ const WINDOWS_DRIVE_RE = /^[a-zA-Z]:[\\/]/;
487
+ const SCHEME_RE = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
488
+ const HAS_FILE_EXT = /\.\w{1,10}$/;
489
+ function isLikelyLocalPath(candidate) {
490
+ return candidate.startsWith("/") || candidate.startsWith("./") || candidate.startsWith("../") || candidate.startsWith("~") || WINDOWS_DRIVE_RE.test(candidate) || candidate.startsWith("\\\\") || !SCHEME_RE.test(candidate) && (candidate.includes("/") || candidate.includes("\\"));
491
+ }
492
+ function isValidMedia(candidate, opts) {
493
+ if (!candidate) return false;
494
+ if (candidate.length > 4096) return false;
495
+ if (!opts?.allowSpaces && /\s/.test(candidate)) return false;
496
+ if (/^https?:\/\//i.test(candidate)) return true;
497
+ if (isLikelyLocalPath(candidate)) return true;
498
+ if (opts?.allowBareFilename && !SCHEME_RE.test(candidate) && HAS_FILE_EXT.test(candidate)) return true;
499
+ return false;
500
+ }
501
+ function unwrapQuoted(value) {
502
+ const trimmed = value.trim();
503
+ if (trimmed.length < 2) return;
504
+ const first = trimmed[0];
505
+ if (first !== trimmed[trimmed.length - 1]) return;
506
+ if (first !== `"` && first !== "'" && first !== "`") return;
507
+ return trimmed.slice(1, -1).trim();
508
+ }
509
+ function isInsideFence(fenceSpans, offset) {
510
+ return fenceSpans.some((span) => offset >= span.start && offset < span.end);
511
+ }
512
+ function splitMediaFromOutput(raw) {
513
+ const trimmedRaw = raw.trimEnd();
514
+ if (!trimmedRaw.trim()) return { text: "" };
515
+ const media = [];
516
+ let foundMediaToken = false;
517
+ const fenceSpans = parseFenceSpans(trimmedRaw);
518
+ const lines = trimmedRaw.split("\n");
519
+ const keptLines = [];
520
+ let lineOffset = 0;
521
+ for (const line of lines) {
522
+ if (isInsideFence(fenceSpans, lineOffset)) {
523
+ keptLines.push(line);
524
+ lineOffset += line.length + 1;
525
+ continue;
526
+ }
527
+ if (!line.trimStart().startsWith("MEDIA:")) {
528
+ keptLines.push(line);
529
+ lineOffset += line.length + 1;
530
+ continue;
531
+ }
532
+ const matches = Array.from(line.matchAll(MEDIA_TOKEN_RE));
533
+ if (matches.length === 0) {
534
+ keptLines.push(line);
535
+ lineOffset += line.length + 1;
536
+ continue;
537
+ }
538
+ const pieces = [];
539
+ let cursor = 0;
540
+ for (const match of matches) {
541
+ const start = match.index ?? 0;
542
+ pieces.push(line.slice(cursor, start));
543
+ const payload = match[1];
544
+ const unwrapped = unwrapQuoted(payload);
545
+ const payloadValue = unwrapped ?? payload;
546
+ const parts = unwrapped ? [unwrapped] : payload.split(/\s+/).filter(Boolean);
547
+ const mediaStartIndex = media.length;
548
+ let validCount = 0;
549
+ const invalidParts = [];
550
+ let hasValidMedia = false;
551
+ for (const part of parts) {
552
+ const candidate = normalizeMediaSource(cleanCandidate(part));
553
+ if (isValidMedia(candidate, unwrapped ? { allowSpaces: true } : void 0)) {
554
+ media.push(candidate);
555
+ hasValidMedia = true;
556
+ foundMediaToken = true;
557
+ validCount += 1;
558
+ } else invalidParts.push(part);
559
+ }
560
+ const trimmedPayload = payloadValue.trim();
561
+ const looksLikeLocalPath = isLikelyLocalPath(trimmedPayload) || trimmedPayload.startsWith("file://");
562
+ if (!unwrapped && validCount === 1 && invalidParts.length > 0 && /\s/.test(payloadValue) && looksLikeLocalPath) {
563
+ const fallback = normalizeMediaSource(cleanCandidate(payloadValue));
564
+ if (isValidMedia(fallback, { allowSpaces: true })) {
565
+ media.splice(mediaStartIndex, media.length - mediaStartIndex, fallback);
566
+ hasValidMedia = true;
567
+ foundMediaToken = true;
568
+ validCount = 1;
569
+ invalidParts.length = 0;
570
+ }
571
+ }
572
+ if (!hasValidMedia) {
573
+ const fallback = normalizeMediaSource(cleanCandidate(payloadValue));
574
+ if (isValidMedia(fallback, {
575
+ allowSpaces: true,
576
+ allowBareFilename: true
577
+ })) {
578
+ media.push(fallback);
579
+ hasValidMedia = true;
580
+ foundMediaToken = true;
581
+ invalidParts.length = 0;
582
+ }
583
+ }
584
+ if (hasValidMedia) {
585
+ if (invalidParts.length > 0) pieces.push(invalidParts.join(" "));
586
+ } else if (looksLikeLocalPath) foundMediaToken = true;
587
+ else pieces.push(match[0]);
588
+ cursor = start + match[0].length;
589
+ }
590
+ pieces.push(line.slice(cursor));
591
+ const cleanedLine = pieces.join("").replace(/[ \t]{2,}/g, " ").trim();
592
+ if (cleanedLine) keptLines.push(cleanedLine);
593
+ lineOffset += line.length + 1;
594
+ }
595
+ let cleanedText = keptLines.join("\n").replace(/[ \t]+\n/g, "\n").replace(/[ \t]{2,}/g, " ").replace(/\n{2,}/g, "\n").trim();
596
+ const audioTagResult = parseAudioTag(cleanedText);
597
+ const hasAudioAsVoice = audioTagResult.audioAsVoice;
598
+ if (audioTagResult.hadTag) cleanedText = audioTagResult.text.replace(/\n{2,}/g, "\n").trim();
599
+ if (media.length === 0) {
600
+ const result = { text: foundMediaToken || hasAudioAsVoice ? cleanedText : trimmedRaw };
601
+ if (hasAudioAsVoice) result.audioAsVoice = true;
602
+ return result;
603
+ }
604
+ return {
605
+ text: cleanedText,
606
+ mediaUrls: media,
607
+ mediaUrl: media[0],
608
+ ...hasAudioAsVoice ? { audioAsVoice: true } : {}
609
+ };
610
+ }
611
+
612
+ //#endregion
613
+ //#region src/auto-reply/reply/reply-directives.ts
614
+ function parseReplyDirectives(raw, options = {}) {
615
+ const split = splitMediaFromOutput(raw);
616
+ let text = split.text ?? "";
617
+ const replyParsed = parseInlineDirectives(text, {
618
+ currentMessageId: options.currentMessageId,
619
+ stripAudioTag: false,
620
+ stripReplyTags: true
621
+ });
622
+ if (replyParsed.hasReplyTag) text = replyParsed.text;
623
+ const silentToken = options.silentToken ?? SILENT_REPLY_TOKEN;
624
+ const isSilent = isSilentReplyText(text, silentToken);
625
+ if (isSilent) text = "";
626
+ return {
627
+ text,
628
+ mediaUrls: split.mediaUrls,
629
+ mediaUrl: split.mediaUrl,
630
+ replyToId: replyParsed.replyToId,
631
+ replyToCurrent: replyParsed.replyToCurrent,
632
+ replyToTag: replyParsed.hasReplyTag,
633
+ audioAsVoice: split.audioAsVoice,
634
+ isSilent
635
+ };
636
+ }
637
+
638
+ //#endregion
639
+ //#region src/infra/outbound/target-normalization.ts
640
+ function normalizeChannelTargetInput(raw) {
641
+ return raw.trim();
642
+ }
643
+ function normalizeTargetForProvider(provider, raw) {
644
+ if (!raw) return;
645
+ const providerId = normalizeChannelId(provider);
646
+ return ((providerId ? getChannelPlugin(providerId) : void 0)?.messaging?.normalizeTarget?.(raw) ?? (raw.trim() || void 0)) || void 0;
647
+ }
648
+ function buildTargetResolverSignature(channel) {
649
+ const resolver = getChannelPlugin(channel)?.messaging?.targetResolver;
650
+ const hint = resolver?.hint ?? "";
651
+ const looksLike = resolver?.looksLikeId;
652
+ return hashSignature(`${hint}|${looksLike ? looksLike.toString() : ""}`);
653
+ }
654
+ function hashSignature(value) {
655
+ let hash = 5381;
656
+ for (let i = 0; i < value.length; i += 1) hash = (hash << 5) + hash ^ value.charCodeAt(i);
657
+ return (hash >>> 0).toString(36);
658
+ }
659
+
660
+ //#endregion
661
+ //#region src/auto-reply/reply/reply-tags.ts
662
+ function extractReplyToTag(text, currentMessageId) {
663
+ const result = parseInlineDirectives(text, {
664
+ currentMessageId,
665
+ stripAudioTag: false
666
+ });
667
+ return {
668
+ cleaned: result.text,
669
+ replyToId: result.replyToId,
670
+ replyToCurrent: result.replyToCurrent,
671
+ hasTag: result.hasReplyTag
672
+ };
673
+ }
674
+
675
+ //#endregion
676
+ //#region src/auto-reply/reply/reply-threading.ts
677
+ function resolveReplyToMode(cfg, channel, accountId, chatType) {
678
+ const provider = normalizeChannelId(channel);
679
+ if (!provider) return "all";
680
+ return getChannelDock(provider)?.threading?.resolveReplyToMode?.({
681
+ cfg,
682
+ accountId,
683
+ chatType
684
+ }) ?? "all";
685
+ }
686
+ function createReplyToModeFilter(mode, opts = {}) {
687
+ let hasThreaded = false;
688
+ return (payload) => {
689
+ if (!payload.replyToId) return payload;
690
+ if (mode === "off") {
691
+ const isExplicit = Boolean(payload.replyToTag) || Boolean(payload.replyToCurrent);
692
+ if (opts.allowExplicitReplyTagsWhenOff && isExplicit) return payload;
693
+ return {
694
+ ...payload,
695
+ replyToId: void 0
696
+ };
697
+ }
698
+ if (mode === "all") return payload;
699
+ if (hasThreaded) return {
700
+ ...payload,
701
+ replyToId: void 0
702
+ };
703
+ hasThreaded = true;
704
+ return payload;
705
+ };
706
+ }
707
+ function createReplyToModeFilterForChannel(mode, channel) {
708
+ const provider = normalizeChannelId(channel);
709
+ const isWebchat = (typeof channel === "string" ? channel.trim().toLowerCase() : void 0) === "webchat";
710
+ const dock = provider ? getChannelDock(provider) : void 0;
711
+ return createReplyToModeFilter(mode, { allowExplicitReplyTagsWhenOff: provider ? dock?.threading?.allowExplicitReplyTagsWhenOff ?? dock?.threading?.allowTagsWhenOff ?? true : isWebchat });
712
+ }
713
+
714
+ //#endregion
715
+ //#region src/auto-reply/reply/reply-payloads.ts
716
+ function resolveReplyThreadingForPayload(params) {
717
+ const implicitReplyToId = params.implicitReplyToId?.trim() || void 0;
718
+ const currentMessageId = params.currentMessageId?.trim() || void 0;
719
+ let resolved = params.payload.replyToId || params.payload.replyToCurrent === false || !implicitReplyToId ? params.payload : {
720
+ ...params.payload,
721
+ replyToId: implicitReplyToId
722
+ };
723
+ if (typeof resolved.text === "string" && resolved.text.includes("[[")) {
724
+ const { cleaned, replyToId, replyToCurrent, hasTag } = extractReplyToTag(resolved.text, currentMessageId);
725
+ resolved = {
726
+ ...resolved,
727
+ text: cleaned ? cleaned : void 0,
728
+ replyToId: replyToId ?? resolved.replyToId,
729
+ replyToTag: hasTag || resolved.replyToTag,
730
+ replyToCurrent: replyToCurrent || resolved.replyToCurrent
731
+ };
732
+ }
733
+ if (resolved.replyToCurrent && !resolved.replyToId && currentMessageId) resolved = {
734
+ ...resolved,
735
+ replyToId: currentMessageId
736
+ };
737
+ return resolved;
738
+ }
739
+ function applyReplyTagsToPayload(payload, currentMessageId) {
740
+ return resolveReplyThreadingForPayload({
741
+ payload,
742
+ currentMessageId
743
+ });
744
+ }
745
+ function isRenderablePayload(payload) {
746
+ return Boolean(payload.text || payload.mediaUrl || payload.mediaUrls && payload.mediaUrls.length > 0 || payload.audioAsVoice || payload.channelData);
747
+ }
748
+ function applyReplyThreading(params) {
749
+ const { payloads, replyToMode, replyToChannel, currentMessageId } = params;
750
+ const applyReplyToMode = createReplyToModeFilterForChannel(replyToMode, replyToChannel);
751
+ const implicitReplyToId = currentMessageId?.trim() || void 0;
752
+ return payloads.map((payload) => resolveReplyThreadingForPayload({
753
+ payload,
754
+ implicitReplyToId,
755
+ currentMessageId
756
+ })).filter(isRenderablePayload).map(applyReplyToMode);
757
+ }
758
+ function filterMessagingToolDuplicates(params) {
759
+ const { payloads, sentTexts } = params;
760
+ if (sentTexts.length === 0) return payloads;
761
+ return payloads.filter((payload) => !isMessagingToolDuplicate(payload.text ?? "", sentTexts));
762
+ }
763
+ function normalizeAccountId(value) {
764
+ const trimmed = value?.trim();
765
+ return trimmed ? trimmed.toLowerCase() : void 0;
766
+ }
767
+ function shouldSuppressMessagingToolReplies(params) {
768
+ const provider = params.messageProvider?.trim().toLowerCase();
769
+ if (!provider) return false;
770
+ const originTarget = normalizeTargetForProvider(provider, params.originatingTo);
771
+ if (!originTarget) return false;
772
+ const originAccount = normalizeAccountId(params.accountId);
773
+ const sentTargets = params.messagingToolSentTargets ?? [];
774
+ if (sentTargets.length === 0) return false;
775
+ return sentTargets.some((target) => {
776
+ if (!target?.provider) return false;
777
+ if (target.provider.trim().toLowerCase() !== provider) return false;
778
+ const targetKey = normalizeTargetForProvider(provider, target.to);
779
+ if (!targetKey) return false;
780
+ const targetAccount = normalizeAccountId(target.accountId);
781
+ if (originAccount && targetAccount && originAccount !== targetAccount) return false;
782
+ return targetKey === originTarget;
783
+ });
784
+ }
785
+
786
+ //#endregion
787
+ //#region src/infra/outbound/payloads.ts
788
+ function mergeMediaUrls(...lists) {
789
+ const seen = /* @__PURE__ */ new Set();
790
+ const merged = [];
791
+ for (const list of lists) {
792
+ if (!list) continue;
793
+ for (const entry of list) {
794
+ const trimmed = entry?.trim();
795
+ if (!trimmed) continue;
796
+ if (seen.has(trimmed)) continue;
797
+ seen.add(trimmed);
798
+ merged.push(trimmed);
799
+ }
800
+ }
801
+ return merged;
802
+ }
803
+ function normalizeReplyPayloadsForDelivery(payloads) {
804
+ return payloads.flatMap((payload) => {
805
+ const parsed = parseReplyDirectives(payload.text ?? "");
806
+ const explicitMediaUrls = payload.mediaUrls ?? parsed.mediaUrls;
807
+ const explicitMediaUrl = payload.mediaUrl ?? parsed.mediaUrl;
808
+ const mergedMedia = mergeMediaUrls(explicitMediaUrls, explicitMediaUrl ? [explicitMediaUrl] : void 0);
809
+ const resolvedMediaUrl = (explicitMediaUrls?.length ?? 0) > 1 ? void 0 : explicitMediaUrl;
810
+ const next = {
811
+ ...payload,
812
+ text: parsed.text ?? "",
813
+ mediaUrls: mergedMedia.length ? mergedMedia : void 0,
814
+ mediaUrl: resolvedMediaUrl,
815
+ replyToId: payload.replyToId ?? parsed.replyToId,
816
+ replyToTag: payload.replyToTag || parsed.replyToTag,
817
+ replyToCurrent: payload.replyToCurrent || parsed.replyToCurrent,
818
+ audioAsVoice: Boolean(payload.audioAsVoice || parsed.audioAsVoice)
819
+ };
820
+ if (parsed.isSilent && mergedMedia.length === 0) return [];
821
+ if (!isRenderablePayload(next)) return [];
822
+ return [next];
823
+ });
824
+ }
825
+ function normalizeOutboundPayloads(payloads) {
826
+ return normalizeReplyPayloadsForDelivery(payloads).map((payload) => {
827
+ const channelData = payload.channelData;
828
+ const normalized = {
829
+ text: payload.text ?? "",
830
+ mediaUrls: payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : [])
831
+ };
832
+ if (channelData && Object.keys(channelData).length > 0) normalized.channelData = channelData;
833
+ return normalized;
834
+ }).filter((payload) => payload.text || payload.mediaUrls.length > 0 || Boolean(payload.channelData && Object.keys(payload.channelData).length > 0));
835
+ }
836
+ function normalizeOutboundPayloadsForJson(payloads) {
837
+ return normalizeReplyPayloadsForDelivery(payloads).map((payload) => ({
838
+ text: payload.text ?? "",
839
+ mediaUrl: payload.mediaUrl ?? null,
840
+ mediaUrls: payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : void 0),
841
+ channelData: payload.channelData
842
+ }));
843
+ }
844
+ function formatOutboundPayloadLog(payload) {
845
+ const lines = [];
846
+ if (payload.text) lines.push(payload.text.trimEnd());
847
+ for (const url of payload.mediaUrls) lines.push(`MEDIA:${url}`);
848
+ return lines.join("\n");
849
+ }
850
+
851
+ //#endregion
852
+ //#region src/infra/outbound/deliver.ts
853
+ var deliver_exports = /* @__PURE__ */ __exportAll({ deliverOutboundPayloads: () => deliverOutboundPayloads });
854
+ async function createChannelHandler(params) {
855
+ const outbound = await loadChannelOutboundAdapter(params.channel);
856
+ if (!outbound?.sendText || !outbound?.sendMedia) throw new Error(`Outbound not configured for channel: ${params.channel}`);
857
+ const handler = createPluginHandler({
858
+ outbound,
859
+ cfg: params.cfg,
860
+ channel: params.channel,
861
+ to: params.to,
862
+ accountId: params.accountId,
863
+ replyToId: params.replyToId,
864
+ threadId: params.threadId,
865
+ identity: params.identity,
866
+ deps: params.deps,
867
+ gifPlayback: params.gifPlayback,
868
+ silent: params.silent
869
+ });
870
+ if (!handler) throw new Error(`Outbound not configured for channel: ${params.channel}`);
871
+ return handler;
872
+ }
873
+ function createPluginHandler(params) {
874
+ const outbound = params.outbound;
875
+ if (!outbound?.sendText || !outbound?.sendMedia) return null;
876
+ const sendText = outbound.sendText;
877
+ const sendMedia = outbound.sendMedia;
878
+ return {
879
+ chunker: outbound.chunker ?? null,
880
+ chunkerMode: outbound.chunkerMode,
881
+ textChunkLimit: outbound.textChunkLimit,
882
+ sendPayload: outbound.sendPayload ? async (payload) => outbound.sendPayload({
883
+ cfg: params.cfg,
884
+ to: params.to,
885
+ text: payload.text ?? "",
886
+ mediaUrl: payload.mediaUrl,
887
+ accountId: params.accountId,
888
+ replyToId: params.replyToId,
889
+ threadId: params.threadId,
890
+ identity: params.identity,
891
+ gifPlayback: params.gifPlayback,
892
+ deps: params.deps,
893
+ silent: params.silent,
894
+ payload
895
+ }) : void 0,
896
+ sendText: async (text) => sendText({
897
+ cfg: params.cfg,
898
+ to: params.to,
899
+ text,
900
+ accountId: params.accountId,
901
+ replyToId: params.replyToId,
902
+ threadId: params.threadId,
903
+ identity: params.identity,
904
+ gifPlayback: params.gifPlayback,
905
+ deps: params.deps,
906
+ silent: params.silent
907
+ }),
908
+ sendMedia: async (caption, mediaUrl) => sendMedia({
909
+ cfg: params.cfg,
910
+ to: params.to,
911
+ text: caption,
912
+ mediaUrl,
913
+ accountId: params.accountId,
914
+ replyToId: params.replyToId,
915
+ threadId: params.threadId,
916
+ identity: params.identity,
917
+ gifPlayback: params.gifPlayback,
918
+ deps: params.deps,
919
+ silent: params.silent
920
+ })
921
+ };
922
+ }
923
+ const isAbortError = (err) => err instanceof Error && err.name === "AbortError";
924
+ async function deliverOutboundPayloads(params) {
925
+ const { channel, to, payloads } = params;
926
+ const queueId = params.skipQueue ? null : await enqueueDelivery({
927
+ channel,
928
+ to,
929
+ accountId: params.accountId,
930
+ payloads,
931
+ threadId: params.threadId,
932
+ replyToId: params.replyToId,
933
+ bestEffort: params.bestEffort,
934
+ gifPlayback: params.gifPlayback,
935
+ silent: params.silent,
936
+ mirror: params.mirror
937
+ }).catch(() => null);
938
+ let hadPartialFailure = false;
939
+ const wrappedParams = params.onError ? {
940
+ ...params,
941
+ onError: (err, payload) => {
942
+ hadPartialFailure = true;
943
+ params.onError(err, payload);
944
+ }
945
+ } : params;
946
+ try {
947
+ const results = await deliverOutboundPayloadsCore(wrappedParams);
948
+ if (queueId) if (hadPartialFailure) await failDelivery(queueId, "partial delivery failure (bestEffort)").catch(() => {});
949
+ else await ackDelivery(queueId).catch(() => {});
950
+ return results;
951
+ } catch (err) {
952
+ if (queueId) if (isAbortError(err)) await ackDelivery(queueId).catch(() => {});
953
+ else await failDelivery(queueId, err instanceof Error ? err.message : String(err)).catch(() => {});
954
+ throw err;
955
+ }
956
+ }
957
+ /** Core delivery logic (extracted for queue wrapper). */
958
+ async function deliverOutboundPayloadsCore(params) {
959
+ const { cfg, channel, to, payloads } = params;
960
+ const accountId = params.accountId;
961
+ const deps = params.deps;
962
+ const abortSignal = params.abortSignal;
963
+ const sendSignal = params.deps?.sendSignal ?? sendMessageSignal;
964
+ const results = [];
965
+ const handler = await createChannelHandler({
966
+ cfg,
967
+ channel,
968
+ to,
969
+ deps,
970
+ accountId,
971
+ replyToId: params.replyToId,
972
+ threadId: params.threadId,
973
+ identity: params.identity,
974
+ gifPlayback: params.gifPlayback,
975
+ silent: params.silent
976
+ });
977
+ const textLimit = handler.chunker ? resolveTextChunkLimit(cfg, channel, accountId, { fallbackLimit: handler.textChunkLimit }) : void 0;
978
+ const chunkMode = handler.chunker ? resolveChunkMode(cfg, channel, accountId) : "length";
979
+ const isSignalChannel = channel === "signal";
980
+ const signalTableMode = isSignalChannel ? resolveMarkdownTableMode({
981
+ cfg,
982
+ channel: "signal",
983
+ accountId
984
+ }) : "code";
985
+ const signalMaxBytes = isSignalChannel ? resolveChannelMediaMaxBytes({
986
+ cfg,
987
+ resolveChannelLimitMb: ({ cfg, accountId }) => cfg.channels?.signal?.accounts?.[accountId]?.mediaMaxMb ?? cfg.channels?.signal?.mediaMaxMb,
988
+ accountId
989
+ }) : void 0;
990
+ const sendTextChunks = async (text) => {
991
+ throwIfAborted(abortSignal);
992
+ if (!handler.chunker || textLimit === void 0) {
993
+ results.push(await handler.sendText(text));
994
+ return;
995
+ }
996
+ if (chunkMode === "newline") {
997
+ const blockChunks = (handler.chunkerMode ?? "text") === "markdown" ? chunkMarkdownTextWithMode(text, textLimit, "newline") : chunkByParagraph(text, textLimit);
998
+ if (!blockChunks.length && text) blockChunks.push(text);
999
+ for (const blockChunk of blockChunks) {
1000
+ const chunks = handler.chunker(blockChunk, textLimit);
1001
+ if (!chunks.length && blockChunk) chunks.push(blockChunk);
1002
+ for (const chunk of chunks) {
1003
+ throwIfAborted(abortSignal);
1004
+ results.push(await handler.sendText(chunk));
1005
+ }
1006
+ }
1007
+ return;
1008
+ }
1009
+ const chunks = handler.chunker(text, textLimit);
1010
+ for (const chunk of chunks) {
1011
+ throwIfAborted(abortSignal);
1012
+ results.push(await handler.sendText(chunk));
1013
+ }
1014
+ };
1015
+ const sendSignalText = async (text, styles) => {
1016
+ throwIfAborted(abortSignal);
1017
+ return {
1018
+ channel: "signal",
1019
+ ...await sendSignal(to, text, {
1020
+ maxBytes: signalMaxBytes,
1021
+ accountId: accountId ?? void 0,
1022
+ textMode: "plain",
1023
+ textStyles: styles
1024
+ })
1025
+ };
1026
+ };
1027
+ const sendSignalTextChunks = async (text) => {
1028
+ throwIfAborted(abortSignal);
1029
+ let signalChunks = textLimit === void 0 ? markdownToSignalTextChunks(text, Number.POSITIVE_INFINITY, { tableMode: signalTableMode }) : markdownToSignalTextChunks(text, textLimit, { tableMode: signalTableMode });
1030
+ if (signalChunks.length === 0 && text) signalChunks = [{
1031
+ text,
1032
+ styles: []
1033
+ }];
1034
+ for (const chunk of signalChunks) {
1035
+ throwIfAborted(abortSignal);
1036
+ results.push(await sendSignalText(chunk.text, chunk.styles));
1037
+ }
1038
+ };
1039
+ const sendSignalMedia = async (caption, mediaUrl) => {
1040
+ throwIfAborted(abortSignal);
1041
+ const formatted = markdownToSignalTextChunks(caption, Number.POSITIVE_INFINITY, { tableMode: signalTableMode })[0] ?? {
1042
+ text: caption,
1043
+ styles: []
1044
+ };
1045
+ return {
1046
+ channel: "signal",
1047
+ ...await sendSignal(to, formatted.text, {
1048
+ mediaUrl,
1049
+ maxBytes: signalMaxBytes,
1050
+ accountId: accountId ?? void 0,
1051
+ textMode: "plain",
1052
+ textStyles: formatted.styles
1053
+ })
1054
+ };
1055
+ };
1056
+ const normalizeWhatsAppPayload = (payload) => {
1057
+ const hasMedia = Boolean(payload.mediaUrl) || (payload.mediaUrls?.length ?? 0) > 0;
1058
+ const normalizedText = (typeof payload.text === "string" ? payload.text : "").replace(/^(?:[ \t]*\r?\n)+/, "");
1059
+ if (!normalizedText.trim()) {
1060
+ if (!hasMedia) return null;
1061
+ return {
1062
+ ...payload,
1063
+ text: ""
1064
+ };
1065
+ }
1066
+ return {
1067
+ ...payload,
1068
+ text: normalizedText
1069
+ };
1070
+ };
1071
+ const normalizedPayloads = normalizeReplyPayloadsForDelivery(payloads).flatMap((payload) => {
1072
+ if (channel !== "whatsapp") return [payload];
1073
+ const normalized = normalizeWhatsAppPayload(payload);
1074
+ return normalized ? [normalized] : [];
1075
+ });
1076
+ const hookRunner = getGlobalHookRunner();
1077
+ for (const payload of normalizedPayloads) {
1078
+ const payloadSummary = {
1079
+ text: payload.text ?? "",
1080
+ mediaUrls: payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []),
1081
+ channelData: payload.channelData
1082
+ };
1083
+ const emitMessageSent = (success, error) => {
1084
+ if (!hookRunner?.hasHooks("message_sent")) return;
1085
+ hookRunner.runMessageSent({
1086
+ to,
1087
+ content: payloadSummary.text,
1088
+ success,
1089
+ ...error ? { error } : {}
1090
+ }, {
1091
+ channelId: channel,
1092
+ accountId: accountId ?? void 0
1093
+ }).catch(() => {});
1094
+ };
1095
+ try {
1096
+ throwIfAborted(abortSignal);
1097
+ let effectivePayload = payload;
1098
+ if (hookRunner?.hasHooks("message_sending")) try {
1099
+ const sendingResult = await hookRunner.runMessageSending({
1100
+ to,
1101
+ content: payloadSummary.text,
1102
+ metadata: {
1103
+ channel,
1104
+ accountId,
1105
+ mediaUrls: payloadSummary.mediaUrls
1106
+ }
1107
+ }, {
1108
+ channelId: channel,
1109
+ accountId: accountId ?? void 0
1110
+ });
1111
+ if (sendingResult?.cancel) continue;
1112
+ if (sendingResult?.content != null) {
1113
+ effectivePayload = {
1114
+ ...payload,
1115
+ text: sendingResult.content
1116
+ };
1117
+ payloadSummary.text = sendingResult.content;
1118
+ }
1119
+ } catch {}
1120
+ params.onPayload?.(payloadSummary);
1121
+ if (handler.sendPayload && effectivePayload.channelData) {
1122
+ results.push(await handler.sendPayload(effectivePayload));
1123
+ emitMessageSent(true);
1124
+ continue;
1125
+ }
1126
+ if (payloadSummary.mediaUrls.length === 0) {
1127
+ if (isSignalChannel) await sendSignalTextChunks(payloadSummary.text);
1128
+ else await sendTextChunks(payloadSummary.text);
1129
+ emitMessageSent(true);
1130
+ continue;
1131
+ }
1132
+ let first = true;
1133
+ for (const url of payloadSummary.mediaUrls) {
1134
+ throwIfAborted(abortSignal);
1135
+ const caption = first ? payloadSummary.text : "";
1136
+ first = false;
1137
+ if (isSignalChannel) results.push(await sendSignalMedia(caption, url));
1138
+ else results.push(await handler.sendMedia(caption, url));
1139
+ }
1140
+ emitMessageSent(true);
1141
+ } catch (err) {
1142
+ emitMessageSent(false, err instanceof Error ? err.message : String(err));
1143
+ if (!params.bestEffort) throw err;
1144
+ params.onError?.(err, payloadSummary);
1145
+ }
1146
+ }
1147
+ if (params.mirror && results.length > 0) {
1148
+ const mirrorText = resolveMirroredTranscriptText({
1149
+ text: params.mirror.text,
1150
+ mediaUrls: params.mirror.mediaUrls
1151
+ });
1152
+ if (mirrorText) await appendAssistantMessageToSessionTranscript({
1153
+ agentId: params.mirror.agentId,
1154
+ sessionKey: params.mirror.sessionKey,
1155
+ text: mirrorText
1156
+ });
1157
+ }
1158
+ return results;
1159
+ }
1160
+
1161
+ //#endregion
1162
+ export { parseReplyDirectives as _, normalizeOutboundPayloadsForJson as a, initializeGlobalHookRunner as b, applyReplyThreading as c, shouldSuppressMessagingToolReplies as d, createReplyToModeFilterForChannel as f, normalizeTargetForProvider as g, normalizeChannelTargetInput as h, normalizeOutboundPayloads as i, filterMessagingToolDuplicates as l, buildTargetResolverSignature as m, deliver_exports as n, normalizeReplyPayloadsForDelivery as o, resolveReplyToMode as p, formatOutboundPayloadLog as r, applyReplyTagsToPayload as s, deliverOutboundPayloads as t, isRenderablePayload as u, throwIfAborted as v, getGlobalHookRunner as y };