@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,1342 @@
1
+ import { B as STATE_DIR, D as shouldLogVerbose, w as logVerbose } from "./entry.js";
2
+ import { t as formatCliCommand } from "./command-format-G6N2zghg.js";
3
+ import { t as DEFAULT_ACCOUNT_ID } from "./session-key-CQT-NR6w.js";
4
+ import { y as resolveUserPath } from "./utils-DT8uXjFS.js";
5
+ import { c as logWarn } from "./exec-DDmuVVNq.js";
6
+ import { c as maxBytesForKind, l as mediaKindFromMime, n as extensionForMime, t as detectMime } from "./mime-CBg4KybI.js";
7
+ import { a as resizeToJpeg, c as createPinnedDispatcher, d as resolvePinnedHostnameWithPolicy, i as optimizeImageToPng, o as SsrFBlockedError, r as hasAlphaChannel, s as closeDispatcher, t as convertHeicToJpeg } from "./image-ops-Bp0C6Mvr.js";
8
+ import os from "node:os";
9
+ import path from "node:path";
10
+ import fs from "node:fs/promises";
11
+ import { fileURLToPath } from "node:url";
12
+ import MarkdownIt from "markdown-it";
13
+
14
+ //#region src/markdown/ir.ts
15
+ function createMarkdownIt(options) {
16
+ const md = new MarkdownIt({
17
+ html: false,
18
+ linkify: options.linkify ?? true,
19
+ breaks: false,
20
+ typographer: false
21
+ });
22
+ md.enable("strikethrough");
23
+ if (options.tableMode && options.tableMode !== "off") md.enable("table");
24
+ else md.disable("table");
25
+ if (options.autolink === false) md.disable("autolink");
26
+ return md;
27
+ }
28
+ function getAttr(token, name) {
29
+ if (token.attrGet) return token.attrGet(name);
30
+ if (token.attrs) {
31
+ for (const [key, value] of token.attrs) if (key === name) return value;
32
+ }
33
+ return null;
34
+ }
35
+ function createTextToken(base, content) {
36
+ return {
37
+ ...base,
38
+ type: "text",
39
+ content,
40
+ children: void 0
41
+ };
42
+ }
43
+ function applySpoilerTokens(tokens) {
44
+ for (const token of tokens) if (token.children && token.children.length > 0) token.children = injectSpoilersIntoInline(token.children);
45
+ }
46
+ function injectSpoilersIntoInline(tokens) {
47
+ const result = [];
48
+ const state = { spoilerOpen: false };
49
+ for (const token of tokens) {
50
+ if (token.type !== "text") {
51
+ result.push(token);
52
+ continue;
53
+ }
54
+ const content = token.content ?? "";
55
+ if (!content.includes("||")) {
56
+ result.push(token);
57
+ continue;
58
+ }
59
+ let index = 0;
60
+ while (index < content.length) {
61
+ const next = content.indexOf("||", index);
62
+ if (next === -1) {
63
+ if (index < content.length) result.push(createTextToken(token, content.slice(index)));
64
+ break;
65
+ }
66
+ if (next > index) result.push(createTextToken(token, content.slice(index, next)));
67
+ state.spoilerOpen = !state.spoilerOpen;
68
+ result.push({ type: state.spoilerOpen ? "spoiler_open" : "spoiler_close" });
69
+ index = next + 2;
70
+ }
71
+ }
72
+ return result;
73
+ }
74
+ function initRenderTarget() {
75
+ return {
76
+ text: "",
77
+ styles: [],
78
+ openStyles: [],
79
+ links: [],
80
+ linkStack: []
81
+ };
82
+ }
83
+ function resolveRenderTarget(state) {
84
+ return state.table?.currentCell ?? state;
85
+ }
86
+ function appendText(state, value) {
87
+ if (!value) return;
88
+ const target = resolveRenderTarget(state);
89
+ target.text += value;
90
+ }
91
+ function openStyle(state, style) {
92
+ const target = resolveRenderTarget(state);
93
+ target.openStyles.push({
94
+ style,
95
+ start: target.text.length
96
+ });
97
+ }
98
+ function closeStyle(state, style) {
99
+ const target = resolveRenderTarget(state);
100
+ for (let i = target.openStyles.length - 1; i >= 0; i -= 1) if (target.openStyles[i]?.style === style) {
101
+ const start = target.openStyles[i].start;
102
+ target.openStyles.splice(i, 1);
103
+ const end = target.text.length;
104
+ if (end > start) target.styles.push({
105
+ start,
106
+ end,
107
+ style
108
+ });
109
+ return;
110
+ }
111
+ }
112
+ function appendParagraphSeparator(state) {
113
+ if (state.env.listStack.length > 0) return;
114
+ if (state.table) return;
115
+ state.text += "\n\n";
116
+ }
117
+ function appendListPrefix(state) {
118
+ const stack = state.env.listStack;
119
+ const top = stack[stack.length - 1];
120
+ if (!top) return;
121
+ top.index += 1;
122
+ const indent = " ".repeat(Math.max(0, stack.length - 1));
123
+ const prefix = top.type === "ordered" ? `${top.index}. ` : "• ";
124
+ state.text += `${indent}${prefix}`;
125
+ }
126
+ function renderInlineCode(state, content) {
127
+ if (!content) return;
128
+ const target = resolveRenderTarget(state);
129
+ const start = target.text.length;
130
+ target.text += content;
131
+ target.styles.push({
132
+ start,
133
+ end: start + content.length,
134
+ style: "code"
135
+ });
136
+ }
137
+ function renderCodeBlock(state, content) {
138
+ let code = content ?? "";
139
+ if (!code.endsWith("\n")) code = `${code}\n`;
140
+ const target = resolveRenderTarget(state);
141
+ const start = target.text.length;
142
+ target.text += code;
143
+ target.styles.push({
144
+ start,
145
+ end: start + code.length,
146
+ style: "code_block"
147
+ });
148
+ if (state.env.listStack.length === 0) target.text += "\n";
149
+ }
150
+ function handleLinkClose(state) {
151
+ const target = resolveRenderTarget(state);
152
+ const link = target.linkStack.pop();
153
+ if (!link?.href) return;
154
+ const href = link.href.trim();
155
+ if (!href) return;
156
+ const start = link.labelStart;
157
+ const end = target.text.length;
158
+ if (end <= start) {
159
+ target.links.push({
160
+ start,
161
+ end,
162
+ href
163
+ });
164
+ return;
165
+ }
166
+ target.links.push({
167
+ start,
168
+ end,
169
+ href
170
+ });
171
+ }
172
+ function initTableState() {
173
+ return {
174
+ headers: [],
175
+ rows: [],
176
+ currentRow: [],
177
+ currentCell: null,
178
+ inHeader: false
179
+ };
180
+ }
181
+ function finishTableCell(cell) {
182
+ closeRemainingStyles(cell);
183
+ return {
184
+ text: cell.text,
185
+ styles: cell.styles,
186
+ links: cell.links
187
+ };
188
+ }
189
+ function trimCell(cell) {
190
+ const text = cell.text;
191
+ let start = 0;
192
+ let end = text.length;
193
+ while (start < end && /\s/.test(text[start] ?? "")) start += 1;
194
+ while (end > start && /\s/.test(text[end - 1] ?? "")) end -= 1;
195
+ if (start === 0 && end === text.length) return cell;
196
+ const trimmedText = text.slice(start, end);
197
+ const trimmedLength = trimmedText.length;
198
+ const trimmedStyles = [];
199
+ for (const span of cell.styles) {
200
+ const sliceStart = Math.max(0, span.start - start);
201
+ const sliceEnd = Math.min(trimmedLength, span.end - start);
202
+ if (sliceEnd > sliceStart) trimmedStyles.push({
203
+ start: sliceStart,
204
+ end: sliceEnd,
205
+ style: span.style
206
+ });
207
+ }
208
+ const trimmedLinks = [];
209
+ for (const span of cell.links) {
210
+ const sliceStart = Math.max(0, span.start - start);
211
+ const sliceEnd = Math.min(trimmedLength, span.end - start);
212
+ if (sliceEnd > sliceStart) trimmedLinks.push({
213
+ start: sliceStart,
214
+ end: sliceEnd,
215
+ href: span.href
216
+ });
217
+ }
218
+ return {
219
+ text: trimmedText,
220
+ styles: trimmedStyles,
221
+ links: trimmedLinks
222
+ };
223
+ }
224
+ function appendCell(state, cell) {
225
+ if (!cell.text) return;
226
+ const start = state.text.length;
227
+ state.text += cell.text;
228
+ for (const span of cell.styles) state.styles.push({
229
+ start: start + span.start,
230
+ end: start + span.end,
231
+ style: span.style
232
+ });
233
+ for (const link of cell.links) state.links.push({
234
+ start: start + link.start,
235
+ end: start + link.end,
236
+ href: link.href
237
+ });
238
+ }
239
+ function appendCellTextOnly(state, cell) {
240
+ if (!cell.text) return;
241
+ state.text += cell.text;
242
+ }
243
+ function renderTableAsBullets(state) {
244
+ if (!state.table) return;
245
+ const headers = state.table.headers.map(trimCell);
246
+ const rows = state.table.rows.map((row) => row.map(trimCell));
247
+ if (headers.length === 0 && rows.length === 0) return;
248
+ if (headers.length > 1 && rows.length > 0) for (const row of rows) {
249
+ if (row.length === 0) continue;
250
+ const rowLabel = row[0];
251
+ if (rowLabel?.text) {
252
+ const labelStart = state.text.length;
253
+ appendCell(state, rowLabel);
254
+ const labelEnd = state.text.length;
255
+ if (labelEnd > labelStart) state.styles.push({
256
+ start: labelStart,
257
+ end: labelEnd,
258
+ style: "bold"
259
+ });
260
+ state.text += "\n";
261
+ }
262
+ for (let i = 1; i < row.length; i++) {
263
+ const header = headers[i];
264
+ const value = row[i];
265
+ if (!value?.text) continue;
266
+ state.text += "• ";
267
+ if (header?.text) {
268
+ appendCell(state, header);
269
+ state.text += ": ";
270
+ } else state.text += `Column ${i}: `;
271
+ appendCell(state, value);
272
+ state.text += "\n";
273
+ }
274
+ state.text += "\n";
275
+ }
276
+ else for (const row of rows) {
277
+ for (let i = 0; i < row.length; i++) {
278
+ const header = headers[i];
279
+ const value = row[i];
280
+ if (!value?.text) continue;
281
+ state.text += "• ";
282
+ if (header?.text) {
283
+ appendCell(state, header);
284
+ state.text += ": ";
285
+ }
286
+ appendCell(state, value);
287
+ state.text += "\n";
288
+ }
289
+ state.text += "\n";
290
+ }
291
+ }
292
+ function renderTableAsCode(state) {
293
+ if (!state.table) return;
294
+ const headers = state.table.headers.map(trimCell);
295
+ const rows = state.table.rows.map((row) => row.map(trimCell));
296
+ const columnCount = Math.max(headers.length, ...rows.map((row) => row.length));
297
+ if (columnCount === 0) return;
298
+ const widths = Array.from({ length: columnCount }, () => 0);
299
+ const updateWidths = (cells) => {
300
+ for (let i = 0; i < columnCount; i += 1) {
301
+ const width = cells[i]?.text.length ?? 0;
302
+ if (widths[i] < width) widths[i] = width;
303
+ }
304
+ };
305
+ updateWidths(headers);
306
+ for (const row of rows) updateWidths(row);
307
+ const codeStart = state.text.length;
308
+ const appendRow = (cells) => {
309
+ state.text += "|";
310
+ for (let i = 0; i < columnCount; i += 1) {
311
+ state.text += " ";
312
+ const cell = cells[i];
313
+ if (cell) appendCellTextOnly(state, cell);
314
+ const pad = widths[i] - (cell?.text.length ?? 0);
315
+ if (pad > 0) state.text += " ".repeat(pad);
316
+ state.text += " |";
317
+ }
318
+ state.text += "\n";
319
+ };
320
+ const appendDivider = () => {
321
+ state.text += "|";
322
+ for (let i = 0; i < columnCount; i += 1) {
323
+ const dashCount = Math.max(3, widths[i]);
324
+ state.text += ` ${"-".repeat(dashCount)} |`;
325
+ }
326
+ state.text += "\n";
327
+ };
328
+ appendRow(headers);
329
+ appendDivider();
330
+ for (const row of rows) appendRow(row);
331
+ const codeEnd = state.text.length;
332
+ if (codeEnd > codeStart) state.styles.push({
333
+ start: codeStart,
334
+ end: codeEnd,
335
+ style: "code_block"
336
+ });
337
+ if (state.env.listStack.length === 0) state.text += "\n";
338
+ }
339
+ function renderTokens(tokens, state) {
340
+ for (const token of tokens) switch (token.type) {
341
+ case "inline":
342
+ if (token.children) renderTokens(token.children, state);
343
+ break;
344
+ case "text":
345
+ appendText(state, token.content ?? "");
346
+ break;
347
+ case "em_open":
348
+ openStyle(state, "italic");
349
+ break;
350
+ case "em_close":
351
+ closeStyle(state, "italic");
352
+ break;
353
+ case "strong_open":
354
+ openStyle(state, "bold");
355
+ break;
356
+ case "strong_close":
357
+ closeStyle(state, "bold");
358
+ break;
359
+ case "s_open":
360
+ openStyle(state, "strikethrough");
361
+ break;
362
+ case "s_close":
363
+ closeStyle(state, "strikethrough");
364
+ break;
365
+ case "code_inline":
366
+ renderInlineCode(state, token.content ?? "");
367
+ break;
368
+ case "spoiler_open":
369
+ if (state.enableSpoilers) openStyle(state, "spoiler");
370
+ break;
371
+ case "spoiler_close":
372
+ if (state.enableSpoilers) closeStyle(state, "spoiler");
373
+ break;
374
+ case "link_open": {
375
+ const href = getAttr(token, "href") ?? "";
376
+ const target = resolveRenderTarget(state);
377
+ target.linkStack.push({
378
+ href,
379
+ labelStart: target.text.length
380
+ });
381
+ break;
382
+ }
383
+ case "link_close":
384
+ handleLinkClose(state);
385
+ break;
386
+ case "image":
387
+ appendText(state, token.content ?? "");
388
+ break;
389
+ case "softbreak":
390
+ case "hardbreak":
391
+ appendText(state, "\n");
392
+ break;
393
+ case "paragraph_close":
394
+ appendParagraphSeparator(state);
395
+ break;
396
+ case "heading_open":
397
+ if (state.headingStyle === "bold") openStyle(state, "bold");
398
+ break;
399
+ case "heading_close":
400
+ if (state.headingStyle === "bold") closeStyle(state, "bold");
401
+ appendParagraphSeparator(state);
402
+ break;
403
+ case "blockquote_open":
404
+ if (state.blockquotePrefix) state.text += state.blockquotePrefix;
405
+ openStyle(state, "blockquote");
406
+ break;
407
+ case "blockquote_close":
408
+ closeStyle(state, "blockquote");
409
+ break;
410
+ case "bullet_list_open":
411
+ if (state.env.listStack.length > 0) state.text += "\n";
412
+ state.env.listStack.push({
413
+ type: "bullet",
414
+ index: 0
415
+ });
416
+ break;
417
+ case "bullet_list_close":
418
+ state.env.listStack.pop();
419
+ if (state.env.listStack.length === 0) state.text += "\n";
420
+ break;
421
+ case "ordered_list_open": {
422
+ if (state.env.listStack.length > 0) state.text += "\n";
423
+ const start = Number(getAttr(token, "start") ?? "1");
424
+ state.env.listStack.push({
425
+ type: "ordered",
426
+ index: start - 1
427
+ });
428
+ break;
429
+ }
430
+ case "ordered_list_close":
431
+ state.env.listStack.pop();
432
+ if (state.env.listStack.length === 0) state.text += "\n";
433
+ break;
434
+ case "list_item_open":
435
+ appendListPrefix(state);
436
+ break;
437
+ case "list_item_close":
438
+ if (!state.text.endsWith("\n")) state.text += "\n";
439
+ break;
440
+ case "code_block":
441
+ case "fence":
442
+ renderCodeBlock(state, token.content ?? "");
443
+ break;
444
+ case "html_block":
445
+ case "html_inline":
446
+ appendText(state, token.content ?? "");
447
+ break;
448
+ case "table_open":
449
+ if (state.tableMode !== "off") {
450
+ state.table = initTableState();
451
+ state.hasTables = true;
452
+ }
453
+ break;
454
+ case "table_close":
455
+ if (state.table) {
456
+ if (state.tableMode === "bullets") renderTableAsBullets(state);
457
+ else if (state.tableMode === "code") renderTableAsCode(state);
458
+ }
459
+ state.table = null;
460
+ break;
461
+ case "thead_open":
462
+ if (state.table) state.table.inHeader = true;
463
+ break;
464
+ case "thead_close":
465
+ if (state.table) state.table.inHeader = false;
466
+ break;
467
+ case "tbody_open":
468
+ case "tbody_close": break;
469
+ case "tr_open":
470
+ if (state.table) state.table.currentRow = [];
471
+ break;
472
+ case "tr_close":
473
+ if (state.table) {
474
+ if (state.table.inHeader) state.table.headers = state.table.currentRow;
475
+ else state.table.rows.push(state.table.currentRow);
476
+ state.table.currentRow = [];
477
+ }
478
+ break;
479
+ case "th_open":
480
+ case "td_open":
481
+ if (state.table) state.table.currentCell = initRenderTarget();
482
+ break;
483
+ case "th_close":
484
+ case "td_close":
485
+ if (state.table?.currentCell) {
486
+ state.table.currentRow.push(finishTableCell(state.table.currentCell));
487
+ state.table.currentCell = null;
488
+ }
489
+ break;
490
+ case "hr":
491
+ state.text += "───\n\n";
492
+ break;
493
+ default:
494
+ if (token.children) renderTokens(token.children, state);
495
+ break;
496
+ }
497
+ }
498
+ function closeRemainingStyles(target) {
499
+ for (let i = target.openStyles.length - 1; i >= 0; i -= 1) {
500
+ const open = target.openStyles[i];
501
+ const end = target.text.length;
502
+ if (end > open.start) target.styles.push({
503
+ start: open.start,
504
+ end,
505
+ style: open.style
506
+ });
507
+ }
508
+ target.openStyles = [];
509
+ }
510
+ function clampStyleSpans(spans, maxLength) {
511
+ const clamped = [];
512
+ for (const span of spans) {
513
+ const start = Math.max(0, Math.min(span.start, maxLength));
514
+ const end = Math.max(start, Math.min(span.end, maxLength));
515
+ if (end > start) clamped.push({
516
+ start,
517
+ end,
518
+ style: span.style
519
+ });
520
+ }
521
+ return clamped;
522
+ }
523
+ function clampLinkSpans(spans, maxLength) {
524
+ const clamped = [];
525
+ for (const span of spans) {
526
+ const start = Math.max(0, Math.min(span.start, maxLength));
527
+ const end = Math.max(start, Math.min(span.end, maxLength));
528
+ if (end > start) clamped.push({
529
+ start,
530
+ end,
531
+ href: span.href
532
+ });
533
+ }
534
+ return clamped;
535
+ }
536
+ function mergeStyleSpans(spans) {
537
+ const sorted = [...spans].toSorted((a, b) => {
538
+ if (a.start !== b.start) return a.start - b.start;
539
+ if (a.end !== b.end) return a.end - b.end;
540
+ return a.style.localeCompare(b.style);
541
+ });
542
+ const merged = [];
543
+ for (const span of sorted) {
544
+ const prev = merged[merged.length - 1];
545
+ if (prev && prev.style === span.style && (span.start < prev.end || span.start === prev.end && span.style !== "blockquote")) {
546
+ prev.end = Math.max(prev.end, span.end);
547
+ continue;
548
+ }
549
+ merged.push({ ...span });
550
+ }
551
+ return merged;
552
+ }
553
+ function markdownToIRWithMeta(markdown, options = {}) {
554
+ const env = { listStack: [] };
555
+ const tokens = createMarkdownIt(options).parse(markdown ?? "", env);
556
+ if (options.enableSpoilers) applySpoilerTokens(tokens);
557
+ const tableMode = options.tableMode ?? "off";
558
+ const state = {
559
+ text: "",
560
+ styles: [],
561
+ openStyles: [],
562
+ links: [],
563
+ linkStack: [],
564
+ env,
565
+ headingStyle: options.headingStyle ?? "none",
566
+ blockquotePrefix: options.blockquotePrefix ?? "",
567
+ enableSpoilers: options.enableSpoilers ?? false,
568
+ tableMode,
569
+ table: null,
570
+ hasTables: false
571
+ };
572
+ renderTokens(tokens, state);
573
+ closeRemainingStyles(state);
574
+ const trimmedLength = state.text.trimEnd().length;
575
+ let codeBlockEnd = 0;
576
+ for (const span of state.styles) {
577
+ if (span.style !== "code_block") continue;
578
+ if (span.end > codeBlockEnd) codeBlockEnd = span.end;
579
+ }
580
+ const finalLength = Math.max(trimmedLength, codeBlockEnd);
581
+ return {
582
+ ir: {
583
+ text: finalLength === state.text.length ? state.text : state.text.slice(0, finalLength),
584
+ styles: mergeStyleSpans(clampStyleSpans(state.styles, finalLength)),
585
+ links: clampLinkSpans(state.links, finalLength)
586
+ },
587
+ hasTables: state.hasTables
588
+ };
589
+ }
590
+
591
+ //#endregion
592
+ //#region src/markdown/render.ts
593
+ const STYLE_RANK = new Map([
594
+ "blockquote",
595
+ "code_block",
596
+ "code",
597
+ "bold",
598
+ "italic",
599
+ "strikethrough",
600
+ "spoiler"
601
+ ].map((style, index) => [style, index]));
602
+ function sortStyleSpans(spans) {
603
+ return [...spans].toSorted((a, b) => {
604
+ if (a.start !== b.start) return a.start - b.start;
605
+ if (a.end !== b.end) return b.end - a.end;
606
+ return (STYLE_RANK.get(a.style) ?? 0) - (STYLE_RANK.get(b.style) ?? 0);
607
+ });
608
+ }
609
+ function renderMarkdownWithMarkers(ir, options) {
610
+ const text = ir.text ?? "";
611
+ if (!text) return "";
612
+ const styleMarkers = options.styleMarkers;
613
+ const styled = sortStyleSpans(ir.styles.filter((span) => Boolean(styleMarkers[span.style])));
614
+ const boundaries = /* @__PURE__ */ new Set();
615
+ boundaries.add(0);
616
+ boundaries.add(text.length);
617
+ const startsAt = /* @__PURE__ */ new Map();
618
+ for (const span of styled) {
619
+ if (span.start === span.end) continue;
620
+ boundaries.add(span.start);
621
+ boundaries.add(span.end);
622
+ const bucket = startsAt.get(span.start);
623
+ if (bucket) bucket.push(span);
624
+ else startsAt.set(span.start, [span]);
625
+ }
626
+ for (const spans of startsAt.values()) spans.sort((a, b) => {
627
+ if (a.end !== b.end) return b.end - a.end;
628
+ return (STYLE_RANK.get(a.style) ?? 0) - (STYLE_RANK.get(b.style) ?? 0);
629
+ });
630
+ const linkStarts = /* @__PURE__ */ new Map();
631
+ if (options.buildLink) for (const link of ir.links) {
632
+ if (link.start === link.end) continue;
633
+ const rendered = options.buildLink(link, text);
634
+ if (!rendered) continue;
635
+ boundaries.add(rendered.start);
636
+ boundaries.add(rendered.end);
637
+ const openBucket = linkStarts.get(rendered.start);
638
+ if (openBucket) openBucket.push(rendered);
639
+ else linkStarts.set(rendered.start, [rendered]);
640
+ }
641
+ const points = [...boundaries].toSorted((a, b) => a - b);
642
+ const stack = [];
643
+ let out = "";
644
+ for (let i = 0; i < points.length; i += 1) {
645
+ const pos = points[i];
646
+ while (stack.length && stack[stack.length - 1]?.end === pos) {
647
+ const item = stack.pop();
648
+ if (item) out += item.close;
649
+ }
650
+ const openingItems = [];
651
+ const openingLinks = linkStarts.get(pos);
652
+ if (openingLinks && openingLinks.length > 0) for (const [index, link] of openingLinks.entries()) openingItems.push({
653
+ end: link.end,
654
+ open: link.open,
655
+ close: link.close,
656
+ kind: "link",
657
+ index
658
+ });
659
+ const openingStyles = startsAt.get(pos);
660
+ if (openingStyles) for (const [index, span] of openingStyles.entries()) {
661
+ const marker = styleMarkers[span.style];
662
+ if (!marker) continue;
663
+ openingItems.push({
664
+ end: span.end,
665
+ open: marker.open,
666
+ close: marker.close,
667
+ kind: "style",
668
+ style: span.style,
669
+ index
670
+ });
671
+ }
672
+ if (openingItems.length > 0) {
673
+ openingItems.sort((a, b) => {
674
+ if (a.end !== b.end) return b.end - a.end;
675
+ if (a.kind !== b.kind) return a.kind === "link" ? -1 : 1;
676
+ if (a.kind === "style" && b.kind === "style") return (STYLE_RANK.get(a.style) ?? 0) - (STYLE_RANK.get(b.style) ?? 0);
677
+ return a.index - b.index;
678
+ });
679
+ for (const item of openingItems) {
680
+ out += item.open;
681
+ stack.push({
682
+ close: item.close,
683
+ end: item.end
684
+ });
685
+ }
686
+ }
687
+ const next = points[i + 1];
688
+ if (next === void 0) break;
689
+ if (next > pos) out += options.escapeText(text.slice(pos, next));
690
+ }
691
+ return out;
692
+ }
693
+
694
+ //#endregion
695
+ //#region src/markdown/tables.ts
696
+ const MARKDOWN_STYLE_MARKERS = {
697
+ bold: {
698
+ open: "**",
699
+ close: "**"
700
+ },
701
+ italic: {
702
+ open: "_",
703
+ close: "_"
704
+ },
705
+ strikethrough: {
706
+ open: "~~",
707
+ close: "~~"
708
+ },
709
+ code: {
710
+ open: "`",
711
+ close: "`"
712
+ },
713
+ code_block: {
714
+ open: "```\n",
715
+ close: "```"
716
+ }
717
+ };
718
+ function convertMarkdownTables(markdown, mode) {
719
+ if (!markdown || mode === "off") return markdown;
720
+ const { ir, hasTables } = markdownToIRWithMeta(markdown, {
721
+ linkify: false,
722
+ autolink: false,
723
+ headingStyle: "none",
724
+ blockquotePrefix: "",
725
+ tableMode: mode
726
+ });
727
+ if (!hasTables) return markdown;
728
+ return renderMarkdownWithMarkers(ir, {
729
+ styleMarkers: MARKDOWN_STYLE_MARKERS,
730
+ escapeText: (text) => text,
731
+ buildLink: (link, text) => {
732
+ const href = link.href.trim();
733
+ if (!href) return null;
734
+ if (!text.slice(link.start, link.end)) return null;
735
+ return {
736
+ start: link.start,
737
+ end: link.end,
738
+ open: "[",
739
+ close: `](${href})`
740
+ };
741
+ }
742
+ });
743
+ }
744
+
745
+ //#endregion
746
+ //#region src/polls.ts
747
+ function normalizePollInput(input, options = {}) {
748
+ const question = input.question.trim();
749
+ if (!question) throw new Error("Poll question is required");
750
+ const cleaned = (input.options ?? []).map((option) => option.trim()).filter(Boolean);
751
+ if (cleaned.length < 2) throw new Error("Poll requires at least 2 options");
752
+ if (options.maxOptions !== void 0 && cleaned.length > options.maxOptions) throw new Error(`Poll supports at most ${options.maxOptions} options`);
753
+ const maxSelectionsRaw = input.maxSelections;
754
+ const maxSelections = typeof maxSelectionsRaw === "number" && Number.isFinite(maxSelectionsRaw) ? Math.floor(maxSelectionsRaw) : 1;
755
+ if (maxSelections < 1) throw new Error("maxSelections must be at least 1");
756
+ if (maxSelections > cleaned.length) throw new Error("maxSelections cannot exceed option count");
757
+ const durationSecondsRaw = input.durationSeconds;
758
+ const durationSeconds = typeof durationSecondsRaw === "number" && Number.isFinite(durationSecondsRaw) ? Math.floor(durationSecondsRaw) : void 0;
759
+ if (durationSeconds !== void 0 && durationSeconds < 1) throw new Error("durationSeconds must be at least 1");
760
+ const durationRaw = input.durationHours;
761
+ const durationHours = typeof durationRaw === "number" && Number.isFinite(durationRaw) ? Math.floor(durationRaw) : void 0;
762
+ if (durationHours !== void 0 && durationHours < 1) throw new Error("durationHours must be at least 1");
763
+ if (durationSeconds !== void 0 && durationHours !== void 0) throw new Error("durationSeconds and durationHours are mutually exclusive");
764
+ return {
765
+ question,
766
+ options: cleaned,
767
+ maxSelections,
768
+ durationSeconds,
769
+ durationHours
770
+ };
771
+ }
772
+
773
+ //#endregion
774
+ //#region src/web/active-listener.ts
775
+ const listeners = /* @__PURE__ */ new Map();
776
+ function resolveWebAccountId(accountId) {
777
+ return (accountId ?? "").trim() || DEFAULT_ACCOUNT_ID;
778
+ }
779
+ function requireActiveWebListener(accountId) {
780
+ const id = resolveWebAccountId(accountId);
781
+ const listener = listeners.get(id) ?? null;
782
+ if (!listener) throw new Error(`No active WhatsApp Web listener (account: ${id}). Start the gateway, then link WhatsApp with: ${formatCliCommand(`anima channels login --channel whatsapp --account ${id}`)}.`);
783
+ return {
784
+ accountId: id,
785
+ listener
786
+ };
787
+ }
788
+ function setActiveWebListener(accountIdOrListener, maybeListener) {
789
+ const { accountId, listener } = typeof accountIdOrListener === "string" ? {
790
+ accountId: accountIdOrListener,
791
+ listener: maybeListener ?? null
792
+ } : {
793
+ accountId: DEFAULT_ACCOUNT_ID,
794
+ listener: accountIdOrListener ?? null
795
+ };
796
+ const id = resolveWebAccountId(accountId);
797
+ if (!listener) listeners.delete(id);
798
+ else listeners.set(id, listener);
799
+ if (id === DEFAULT_ACCOUNT_ID) {}
800
+ }
801
+ function getActiveWebListener(accountId) {
802
+ const id = resolveWebAccountId(accountId);
803
+ return listeners.get(id) ?? null;
804
+ }
805
+
806
+ //#endregion
807
+ //#region src/utils/fetch-timeout.ts
808
+ /**
809
+ * Relay abort without forwarding the Event argument as the abort reason.
810
+ * Using .bind() avoids closure scope capture (memory leak prevention).
811
+ */
812
+ function relayAbort() {
813
+ this.abort();
814
+ }
815
+ /** Returns a bound abort relay for use as an event listener. */
816
+ function bindAbortRelay(controller) {
817
+ return relayAbort.bind(controller);
818
+ }
819
+ /**
820
+ * Fetch wrapper that adds timeout support via AbortController.
821
+ *
822
+ * @param url - The URL to fetch
823
+ * @param init - RequestInit options (headers, method, body, etc.)
824
+ * @param timeoutMs - Timeout in milliseconds
825
+ * @param fetchFn - The fetch implementation to use (defaults to global fetch)
826
+ * @returns The fetch Response
827
+ * @throws AbortError if the request times out
828
+ */
829
+ async function fetchWithTimeout(url, init, timeoutMs, fetchFn = fetch) {
830
+ const controller = new AbortController();
831
+ const timer = setTimeout(controller.abort.bind(controller), Math.max(1, timeoutMs));
832
+ try {
833
+ return await fetchFn(url, {
834
+ ...init,
835
+ signal: controller.signal
836
+ });
837
+ } finally {
838
+ clearTimeout(timer);
839
+ }
840
+ }
841
+
842
+ //#endregion
843
+ //#region src/infra/net/fetch-guard.ts
844
+ const DEFAULT_MAX_REDIRECTS = 3;
845
+ function isRedirectStatus(status) {
846
+ return status === 301 || status === 302 || status === 303 || status === 307 || status === 308;
847
+ }
848
+ function buildAbortSignal(params) {
849
+ const { timeoutMs, signal } = params;
850
+ if (!timeoutMs && !signal) return {
851
+ signal: void 0,
852
+ cleanup: () => {}
853
+ };
854
+ if (!timeoutMs) return {
855
+ signal,
856
+ cleanup: () => {}
857
+ };
858
+ const controller = new AbortController();
859
+ const timeoutId = setTimeout(controller.abort.bind(controller), timeoutMs);
860
+ const onAbort = bindAbortRelay(controller);
861
+ if (signal) if (signal.aborted) controller.abort();
862
+ else signal.addEventListener("abort", onAbort, { once: true });
863
+ const cleanup = () => {
864
+ clearTimeout(timeoutId);
865
+ if (signal) signal.removeEventListener("abort", onAbort);
866
+ };
867
+ return {
868
+ signal: controller.signal,
869
+ cleanup
870
+ };
871
+ }
872
+ async function fetchWithSsrFGuard(params) {
873
+ const fetcher = params.fetchImpl ?? globalThis.fetch;
874
+ if (!fetcher) throw new Error("fetch is not available");
875
+ const maxRedirects = typeof params.maxRedirects === "number" && Number.isFinite(params.maxRedirects) ? Math.max(0, Math.floor(params.maxRedirects)) : DEFAULT_MAX_REDIRECTS;
876
+ const { signal, cleanup } = buildAbortSignal({
877
+ timeoutMs: params.timeoutMs,
878
+ signal: params.signal
879
+ });
880
+ let released = false;
881
+ const release = async (dispatcher) => {
882
+ if (released) return;
883
+ released = true;
884
+ cleanup();
885
+ await closeDispatcher(dispatcher ?? void 0);
886
+ };
887
+ const visited = /* @__PURE__ */ new Set();
888
+ let currentUrl = params.url;
889
+ let redirectCount = 0;
890
+ while (true) {
891
+ let parsedUrl;
892
+ try {
893
+ parsedUrl = new URL(currentUrl);
894
+ } catch {
895
+ await release();
896
+ throw new Error("Invalid URL: must be http or https");
897
+ }
898
+ if (!["http:", "https:"].includes(parsedUrl.protocol)) {
899
+ await release();
900
+ throw new Error("Invalid URL: must be http or https");
901
+ }
902
+ let dispatcher = null;
903
+ try {
904
+ const pinned = await resolvePinnedHostnameWithPolicy(parsedUrl.hostname, {
905
+ lookupFn: params.lookupFn,
906
+ policy: params.policy
907
+ });
908
+ if (params.pinDns !== false) dispatcher = createPinnedDispatcher(pinned);
909
+ const init = {
910
+ ...params.init ? { ...params.init } : {},
911
+ redirect: "manual",
912
+ ...dispatcher ? { dispatcher } : {},
913
+ ...signal ? { signal } : {}
914
+ };
915
+ const response = await fetcher(parsedUrl.toString(), init);
916
+ if (isRedirectStatus(response.status)) {
917
+ const location = response.headers.get("location");
918
+ if (!location) {
919
+ await release(dispatcher);
920
+ throw new Error(`Redirect missing location header (${response.status})`);
921
+ }
922
+ redirectCount += 1;
923
+ if (redirectCount > maxRedirects) {
924
+ await release(dispatcher);
925
+ throw new Error(`Too many redirects (limit: ${maxRedirects})`);
926
+ }
927
+ const nextUrl = new URL(location, parsedUrl).toString();
928
+ if (visited.has(nextUrl)) {
929
+ await release(dispatcher);
930
+ throw new Error("Redirect loop detected");
931
+ }
932
+ visited.add(nextUrl);
933
+ response.body?.cancel();
934
+ await closeDispatcher(dispatcher);
935
+ currentUrl = nextUrl;
936
+ continue;
937
+ }
938
+ return {
939
+ response,
940
+ finalUrl: currentUrl,
941
+ release: async () => release(dispatcher)
942
+ };
943
+ } catch (err) {
944
+ if (err instanceof SsrFBlockedError) logWarn(`security: blocked URL fetch (${params.auditContext ?? "url-fetch"}) target=${parsedUrl.origin}${parsedUrl.pathname} reason=${err.message}`);
945
+ await release(dispatcher);
946
+ throw err;
947
+ }
948
+ }
949
+ }
950
+
951
+ //#endregion
952
+ //#region src/media/read-response-with-limit.ts
953
+ async function readResponseWithLimit(res, maxBytes, opts) {
954
+ const onOverflow = opts?.onOverflow ?? ((params) => /* @__PURE__ */ new Error(`Content too large: ${params.size} bytes (limit: ${params.maxBytes} bytes)`));
955
+ const body = res.body;
956
+ if (!body || typeof body.getReader !== "function") {
957
+ const fallback = Buffer.from(await res.arrayBuffer());
958
+ if (fallback.length > maxBytes) throw onOverflow({
959
+ size: fallback.length,
960
+ maxBytes,
961
+ res
962
+ });
963
+ return fallback;
964
+ }
965
+ const reader = body.getReader();
966
+ const chunks = [];
967
+ let total = 0;
968
+ try {
969
+ while (true) {
970
+ const { done, value } = await reader.read();
971
+ if (done) break;
972
+ if (value?.length) {
973
+ total += value.length;
974
+ if (total > maxBytes) {
975
+ try {
976
+ await reader.cancel();
977
+ } catch {}
978
+ throw onOverflow({
979
+ size: total,
980
+ maxBytes,
981
+ res
982
+ });
983
+ }
984
+ chunks.push(value);
985
+ }
986
+ }
987
+ } finally {
988
+ try {
989
+ reader.releaseLock();
990
+ } catch {}
991
+ }
992
+ return Buffer.concat(chunks.map((chunk) => Buffer.from(chunk)), total);
993
+ }
994
+
995
+ //#endregion
996
+ //#region src/media/fetch.ts
997
+ var MediaFetchError = class extends Error {
998
+ constructor(code, message) {
999
+ super(message);
1000
+ this.code = code;
1001
+ this.name = "MediaFetchError";
1002
+ }
1003
+ };
1004
+ function stripQuotes(value) {
1005
+ return value.replace(/^["']|["']$/g, "");
1006
+ }
1007
+ function parseContentDispositionFileName(header) {
1008
+ if (!header) return;
1009
+ const starMatch = /filename\*\s*=\s*([^;]+)/i.exec(header);
1010
+ if (starMatch?.[1]) {
1011
+ const cleaned = stripQuotes(starMatch[1].trim());
1012
+ const encoded = cleaned.split("''").slice(1).join("''") || cleaned;
1013
+ try {
1014
+ return path.basename(decodeURIComponent(encoded));
1015
+ } catch {
1016
+ return path.basename(encoded);
1017
+ }
1018
+ }
1019
+ const match = /filename\s*=\s*([^;]+)/i.exec(header);
1020
+ if (match?.[1]) return path.basename(stripQuotes(match[1].trim()));
1021
+ }
1022
+ async function readErrorBodySnippet(res, maxChars = 200) {
1023
+ try {
1024
+ const text = await res.text();
1025
+ if (!text) return;
1026
+ const collapsed = text.replace(/\s+/g, " ").trim();
1027
+ if (!collapsed) return;
1028
+ if (collapsed.length <= maxChars) return collapsed;
1029
+ return `${collapsed.slice(0, maxChars)}…`;
1030
+ } catch {
1031
+ return;
1032
+ }
1033
+ }
1034
+ async function fetchRemoteMedia(options) {
1035
+ const { url, fetchImpl, filePathHint, maxBytes, maxRedirects, ssrfPolicy, lookupFn } = options;
1036
+ let res;
1037
+ let finalUrl = url;
1038
+ let release = null;
1039
+ try {
1040
+ const result = await fetchWithSsrFGuard({
1041
+ url,
1042
+ fetchImpl,
1043
+ maxRedirects,
1044
+ policy: ssrfPolicy,
1045
+ lookupFn
1046
+ });
1047
+ res = result.response;
1048
+ finalUrl = result.finalUrl;
1049
+ release = result.release;
1050
+ } catch (err) {
1051
+ throw new MediaFetchError("fetch_failed", `Failed to fetch media from ${url}: ${String(err)}`);
1052
+ }
1053
+ try {
1054
+ if (!res.ok) {
1055
+ const statusText = res.statusText ? ` ${res.statusText}` : "";
1056
+ const redirected = finalUrl !== url ? ` (redirected to ${finalUrl})` : "";
1057
+ let detail = `HTTP ${res.status}${statusText}`;
1058
+ if (!res.body) detail = `HTTP ${res.status}${statusText}; empty response body`;
1059
+ else {
1060
+ const snippet = await readErrorBodySnippet(res);
1061
+ if (snippet) detail += `; body: ${snippet}`;
1062
+ }
1063
+ throw new MediaFetchError("http_error", `Failed to fetch media from ${url}${redirected}: ${detail}`);
1064
+ }
1065
+ const contentLength = res.headers.get("content-length");
1066
+ if (maxBytes && contentLength) {
1067
+ const length = Number(contentLength);
1068
+ if (Number.isFinite(length) && length > maxBytes) throw new MediaFetchError("max_bytes", `Failed to fetch media from ${url}: content length ${length} exceeds maxBytes ${maxBytes}`);
1069
+ }
1070
+ 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());
1071
+ let fileNameFromUrl;
1072
+ try {
1073
+ const parsed = new URL(finalUrl);
1074
+ fileNameFromUrl = path.basename(parsed.pathname) || void 0;
1075
+ } catch {}
1076
+ const headerFileName = parseContentDispositionFileName(res.headers.get("content-disposition"));
1077
+ let fileName = headerFileName || fileNameFromUrl || (filePathHint ? path.basename(filePathHint) : void 0);
1078
+ const filePathForMime = headerFileName && path.extname(headerFileName) ? headerFileName : filePathHint ?? finalUrl;
1079
+ const contentType = await detectMime({
1080
+ buffer,
1081
+ headerMime: res.headers.get("content-type"),
1082
+ filePath: filePathForMime
1083
+ });
1084
+ if (fileName && !path.extname(fileName) && contentType) {
1085
+ const ext = extensionForMime(contentType);
1086
+ if (ext) fileName = `${fileName}${ext}`;
1087
+ }
1088
+ return {
1089
+ buffer,
1090
+ contentType: contentType ?? void 0,
1091
+ fileName
1092
+ };
1093
+ } finally {
1094
+ if (release) await release();
1095
+ }
1096
+ }
1097
+
1098
+ //#endregion
1099
+ //#region src/web/media.ts
1100
+ function getDefaultLocalRoots() {
1101
+ return [
1102
+ os.tmpdir(),
1103
+ path.join(STATE_DIR, "media"),
1104
+ path.join(STATE_DIR, "agents"),
1105
+ path.join(STATE_DIR, "workspace"),
1106
+ path.join(STATE_DIR, "sandboxes")
1107
+ ];
1108
+ }
1109
+ async function assertLocalMediaAllowed(mediaPath, localRoots) {
1110
+ if (localRoots === "any") return;
1111
+ const roots = localRoots ?? getDefaultLocalRoots();
1112
+ let resolved;
1113
+ try {
1114
+ resolved = await fs.realpath(mediaPath);
1115
+ } catch {
1116
+ resolved = path.resolve(mediaPath);
1117
+ }
1118
+ for (const root of roots) {
1119
+ let resolvedRoot;
1120
+ try {
1121
+ resolvedRoot = await fs.realpath(root);
1122
+ } catch {
1123
+ resolvedRoot = path.resolve(root);
1124
+ }
1125
+ if (resolvedRoot === path.parse(resolvedRoot).root) throw new Error(`Invalid localRoots entry (refuses filesystem root): ${root}. Pass a narrower directory.`);
1126
+ if (resolved === resolvedRoot || resolved.startsWith(resolvedRoot + path.sep)) return;
1127
+ }
1128
+ throw new Error(`Local media path is not under an allowed directory: ${mediaPath}`);
1129
+ }
1130
+ const HEIC_MIME_RE = /^image\/hei[cf]$/i;
1131
+ const HEIC_EXT_RE = /\.(heic|heif)$/i;
1132
+ const MB = 1024 * 1024;
1133
+ function formatMb(bytes, digits = 2) {
1134
+ return (bytes / MB).toFixed(digits);
1135
+ }
1136
+ function formatCapLimit(label, cap, size) {
1137
+ return `${label} exceeds ${formatMb(cap, 0)}MB limit (got ${formatMb(size)}MB)`;
1138
+ }
1139
+ function formatCapReduce(label, cap, size) {
1140
+ return `${label} could not be reduced below ${formatMb(cap, 0)}MB (got ${formatMb(size)}MB)`;
1141
+ }
1142
+ function isHeicSource(opts) {
1143
+ if (opts.contentType && HEIC_MIME_RE.test(opts.contentType.trim())) return true;
1144
+ if (opts.fileName && HEIC_EXT_RE.test(opts.fileName.trim())) return true;
1145
+ return false;
1146
+ }
1147
+ function toJpegFileName(fileName) {
1148
+ if (!fileName) return;
1149
+ const trimmed = fileName.trim();
1150
+ if (!trimmed) return fileName;
1151
+ const parsed = path.parse(trimmed);
1152
+ if (!parsed.ext || HEIC_EXT_RE.test(parsed.ext)) return path.format({
1153
+ dir: parsed.dir,
1154
+ name: parsed.name || trimmed,
1155
+ ext: ".jpg"
1156
+ });
1157
+ return path.format({
1158
+ dir: parsed.dir,
1159
+ name: parsed.name,
1160
+ ext: ".jpg"
1161
+ });
1162
+ }
1163
+ function logOptimizedImage(params) {
1164
+ if (!shouldLogVerbose()) return;
1165
+ if (params.optimized.optimizedSize >= params.originalSize) return;
1166
+ if (params.optimized.format === "png") {
1167
+ logVerbose(`Optimized PNG (preserving alpha) from ${formatMb(params.originalSize)}MB to ${formatMb(params.optimized.optimizedSize)}MB (side≤${params.optimized.resizeSide}px)`);
1168
+ return;
1169
+ }
1170
+ logVerbose(`Optimized media from ${formatMb(params.originalSize)}MB to ${formatMb(params.optimized.optimizedSize)}MB (side≤${params.optimized.resizeSide}px, q=${params.optimized.quality})`);
1171
+ }
1172
+ async function optimizeImageWithFallback(params) {
1173
+ const { buffer, cap, meta } = params;
1174
+ if ((meta?.contentType === "image/png" || meta?.fileName?.toLowerCase().endsWith(".png")) && await hasAlphaChannel(buffer)) {
1175
+ const optimized = await optimizeImageToPng(buffer, cap);
1176
+ if (optimized.buffer.length <= cap) return {
1177
+ ...optimized,
1178
+ format: "png"
1179
+ };
1180
+ if (shouldLogVerbose()) logVerbose(`PNG with alpha still exceeds ${formatMb(cap, 0)}MB after optimization; falling back to JPEG`);
1181
+ }
1182
+ return {
1183
+ ...await optimizeImageToJpeg(buffer, cap, meta),
1184
+ format: "jpeg"
1185
+ };
1186
+ }
1187
+ async function loadWebMediaInternal(mediaUrl, options = {}) {
1188
+ const { maxBytes, optimizeImages = true, ssrfPolicy, localRoots, sandboxValidated = false, readFile: readFileOverride } = options;
1189
+ mediaUrl = mediaUrl.replace(/^\s*MEDIA\s*:\s*/i, "");
1190
+ if (mediaUrl.startsWith("file://")) try {
1191
+ mediaUrl = fileURLToPath(mediaUrl);
1192
+ } catch {
1193
+ throw new Error(`Invalid file:// URL: ${mediaUrl}`);
1194
+ }
1195
+ const optimizeAndClampImage = async (buffer, cap, meta) => {
1196
+ const originalSize = buffer.length;
1197
+ const optimized = await optimizeImageWithFallback({
1198
+ buffer,
1199
+ cap,
1200
+ meta
1201
+ });
1202
+ logOptimizedImage({
1203
+ originalSize,
1204
+ optimized
1205
+ });
1206
+ if (optimized.buffer.length > cap) throw new Error(formatCapReduce("Media", cap, optimized.buffer.length));
1207
+ const contentType = optimized.format === "png" ? "image/png" : "image/jpeg";
1208
+ const fileName = optimized.format === "jpeg" && meta && isHeicSource(meta) ? toJpegFileName(meta.fileName) : meta?.fileName;
1209
+ return {
1210
+ buffer: optimized.buffer,
1211
+ contentType,
1212
+ kind: "image",
1213
+ fileName
1214
+ };
1215
+ };
1216
+ const clampAndFinalize = async (params) => {
1217
+ const cap = maxBytes !== void 0 ? maxBytes : maxBytesForKind(params.kind);
1218
+ if (params.kind === "image") {
1219
+ const isGif = params.contentType === "image/gif";
1220
+ if (isGif || !optimizeImages) {
1221
+ if (params.buffer.length > cap) throw new Error(formatCapLimit(isGif ? "GIF" : "Media", cap, params.buffer.length));
1222
+ return {
1223
+ buffer: params.buffer,
1224
+ contentType: params.contentType,
1225
+ kind: params.kind,
1226
+ fileName: params.fileName
1227
+ };
1228
+ }
1229
+ return { ...await optimizeAndClampImage(params.buffer, cap, {
1230
+ contentType: params.contentType,
1231
+ fileName: params.fileName
1232
+ }) };
1233
+ }
1234
+ if (params.buffer.length > cap) throw new Error(formatCapLimit("Media", cap, params.buffer.length));
1235
+ return {
1236
+ buffer: params.buffer,
1237
+ contentType: params.contentType ?? void 0,
1238
+ kind: params.kind,
1239
+ fileName: params.fileName
1240
+ };
1241
+ };
1242
+ if (/^https?:\/\//i.test(mediaUrl)) {
1243
+ const defaultFetchCap = maxBytesForKind("unknown");
1244
+ const { buffer, contentType, fileName } = await fetchRemoteMedia({
1245
+ url: mediaUrl,
1246
+ maxBytes: maxBytes === void 0 ? defaultFetchCap : optimizeImages ? Math.max(maxBytes, defaultFetchCap) : maxBytes,
1247
+ ssrfPolicy
1248
+ });
1249
+ return await clampAndFinalize({
1250
+ buffer,
1251
+ contentType,
1252
+ kind: mediaKindFromMime(contentType),
1253
+ fileName
1254
+ });
1255
+ }
1256
+ if (mediaUrl.startsWith("~")) mediaUrl = resolveUserPath(mediaUrl);
1257
+ if ((sandboxValidated || localRoots === "any") && !readFileOverride) throw new Error("Refusing localRoots bypass without readFile override. Use sandboxValidated with readFile, or pass explicit localRoots.");
1258
+ if (!(sandboxValidated || localRoots === "any")) await assertLocalMediaAllowed(mediaUrl, localRoots);
1259
+ const data = readFileOverride ? await readFileOverride(mediaUrl) : await fs.readFile(mediaUrl);
1260
+ const mime = await detectMime({
1261
+ buffer: data,
1262
+ filePath: mediaUrl
1263
+ });
1264
+ const kind = mediaKindFromMime(mime);
1265
+ let fileName = path.basename(mediaUrl) || void 0;
1266
+ if (fileName && !path.extname(fileName) && mime) {
1267
+ const ext = extensionForMime(mime);
1268
+ if (ext) fileName = `${fileName}${ext}`;
1269
+ }
1270
+ return await clampAndFinalize({
1271
+ buffer: data,
1272
+ contentType: mime,
1273
+ kind,
1274
+ fileName
1275
+ });
1276
+ }
1277
+ async function loadWebMedia(mediaUrl, maxBytesOrOptions, options) {
1278
+ if (typeof maxBytesOrOptions === "number" || maxBytesOrOptions === void 0) return await loadWebMediaInternal(mediaUrl, {
1279
+ maxBytes: maxBytesOrOptions,
1280
+ optimizeImages: true,
1281
+ ssrfPolicy: options?.ssrfPolicy,
1282
+ localRoots: options?.localRoots
1283
+ });
1284
+ return await loadWebMediaInternal(mediaUrl, {
1285
+ ...maxBytesOrOptions,
1286
+ optimizeImages: maxBytesOrOptions.optimizeImages ?? true
1287
+ });
1288
+ }
1289
+ async function optimizeImageToJpeg(buffer, maxBytes, opts = {}) {
1290
+ let source = buffer;
1291
+ if (isHeicSource(opts)) try {
1292
+ source = await convertHeicToJpeg(buffer);
1293
+ } catch (err) {
1294
+ throw new Error(`HEIC image conversion failed: ${String(err)}`, { cause: err });
1295
+ }
1296
+ const sides = [
1297
+ 2048,
1298
+ 1536,
1299
+ 1280,
1300
+ 1024,
1301
+ 800
1302
+ ];
1303
+ const qualities = [
1304
+ 80,
1305
+ 70,
1306
+ 60,
1307
+ 50,
1308
+ 40
1309
+ ];
1310
+ let smallest = null;
1311
+ for (const side of sides) for (const quality of qualities) try {
1312
+ const out = await resizeToJpeg({
1313
+ buffer: source,
1314
+ maxSide: side,
1315
+ quality,
1316
+ withoutEnlargement: true
1317
+ });
1318
+ const size = out.length;
1319
+ if (!smallest || size < smallest.size) smallest = {
1320
+ buffer: out,
1321
+ size,
1322
+ resizeSide: side,
1323
+ quality
1324
+ };
1325
+ if (size <= maxBytes) return {
1326
+ buffer: out,
1327
+ optimizedSize: size,
1328
+ resizeSide: side,
1329
+ quality
1330
+ };
1331
+ } catch {}
1332
+ if (smallest) return {
1333
+ buffer: smallest.buffer,
1334
+ optimizedSize: smallest.size,
1335
+ resizeSide: smallest.resizeSide,
1336
+ quality: smallest.quality
1337
+ };
1338
+ throw new Error("Failed to optimize image");
1339
+ }
1340
+
1341
+ //#endregion
1342
+ export { readResponseWithLimit as a, fetchWithTimeout as c, setActiveWebListener as d, normalizePollInput as f, fetchRemoteMedia as i, getActiveWebListener as l, loadWebMedia as n, fetchWithSsrFGuard as o, convertMarkdownTables as p, MediaFetchError as r, bindAbortRelay as s, getDefaultLocalRoots as t, requireActiveWebListener as u };