@noxsoft/anima 7.0.1 → 7.0.2

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 (421) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/{accounts-COxGcLGB.js → accounts-BDDwy6Zf.js} +3 -3
  3. package/dist/{accounts-DIES085e.js → accounts-BNxfCMUW.js} +5 -5
  4. package/dist/{accounts-B_2nt5Cd.js → accounts-BzjBXZYp.js} +2 -2
  5. package/dist/{accounts-TUsfghIW.js → accounts-PpT_kved.js} +11 -11
  6. package/dist/{acp-cli-CWgqDQQH.js → acp-cli-B4F3SojX.js} +12 -12
  7. package/dist/{acp-cli-D0wfP8-l.js → acp-cli-CtTTCUan.js} +15 -15
  8. package/dist/{active-listener-BKtsWhsb.js → active-listener-C3NdbMQD.js} +4 -4
  9. package/dist/{active-listener-gGCoq55D.js → active-listener-D78ohfOc.js} +6 -6
  10. package/dist/{active-listener-D2r8IO7g.js → active-listener-Z1MbDSH8.js} +4 -4
  11. package/dist/{agent-paths-niQrLbGc.js → agent-paths-DRAU6-8h.js} +2 -2
  12. package/dist/{agent-scope-Dm8IL1Ks.js → agent-scope-B1FoYHfj.js} +3 -3
  13. package/dist/{agent-scope-CxBzAozu.js → agent-scope-CENGF2NR.js} +2 -2
  14. package/dist/{agent-scope-CXxC8FFX.js → agent-scope-DQ0N_hof.js} +2 -2
  15. package/dist/{agent-scope-ByIGrCTT.js → agent-scope-DpgOQfBp.js} +2 -2
  16. package/dist/{agent-PoYM2xa7.js → agent-viQL5eva.js} +18 -18
  17. package/dist/{agent-BjD_hkGZ.js → agent-xPFmA8jO.js} +14 -14
  18. package/dist/{agents-y3HCk1ks.js → agents-Cf9QArEB.js} +20 -20
  19. package/dist/{agents.config-BR5JLtud.js → agents.config-DrViQjgD.js} +1 -1
  20. package/dist/{agents.config-Br4ULmK0.js → agents.config-sfN0WxRg.js} +1 -1
  21. package/dist/{anthropic-direct-runner-Bu8w-wlJ.js → anthropic-direct-runner-BNiXWmel.js} +11 -11
  22. package/dist/{anthropic-direct-runner-C5pnwYzT.js → anthropic-direct-runner-BgFOZS8B.js} +11 -11
  23. package/dist/{audit-DDz7UOIx.js → audit-CupURkPI.js} +15 -15
  24. package/dist/{audit-B05W5ckN.js → audit-jddM3B16.js} +13 -13
  25. package/dist/{auth-Cp__MMeO.js → auth-Bw3NUKcg.js} +2 -2
  26. package/dist/{auth-DsC5pZ_0.js → auth-CuGlMw6p.js} +2 -2
  27. package/dist/{auth-choice-BYOaX-W4.js → auth-choice-D3Gi-WXq.js} +7 -7
  28. package/dist/{auth-choice-CRP6z43z.js → auth-choice-DmkqIhe6.js} +7 -7
  29. package/dist/{auth-health-Cc8-vy8y.js → auth-health-CIbz_YRs.js} +1 -1
  30. package/dist/{auth-health-Dhr8p2SD.js → auth-health-CPmz2ZaM.js} +1 -1
  31. package/dist/{auth-profiles-DKu7ZUzl.js → auth-profiles-D0T20ZZX.js} +4 -4
  32. package/dist/{auth-profiles-C-LuhW6c.js → auth-profiles-XI2YBb-w.js} +3 -3
  33. package/dist/{auth-profiles-Brxz2ojJ.js → auth-profiles-fjGcjhZ4.js} +5 -5
  34. package/dist/{auth-profiles-DtWUl1-k.js → auth-profiles-jK6n3-Cc.js} +4 -4
  35. package/dist/{auth-store-Bd0GoqEL.js → auth-store-B4pR_KvR.js} +3 -3
  36. package/dist/{auth-store-BEfSfCbW.js → auth-store-ChpmVcla.js} +3 -3
  37. package/dist/{auth-store-Jvgz2_l1.js → auth-store-CqgKZB5l.js} +2 -2
  38. package/dist/{auth-store-BpYI9t_y.js → auth-store-po566wly.js} +3 -3
  39. package/dist/{banner-XT5N0ZF4.js → banner-C_CFUih5.js} +2 -2
  40. package/dist/{bonjour-discovery-D3HFfTyG.js → bonjour-discovery-B8gxGE91.js} +2 -2
  41. package/dist/{bonjour-discovery-Co-b97Dz.js → bonjour-discovery-CZGDX9Ac.js} +2 -2
  42. package/dist/build-info.json +3 -3
  43. package/dist/bundled/boot-md/handler.js +23 -23
  44. package/dist/bundled/bootstrap-extra-files/handler.js +3 -3
  45. package/dist/bundled/session-memory/handler.js +22 -22
  46. package/dist/{call-CDPbPDAr.js → call-Bn9iKzhX.js} +4 -4
  47. package/dist/{call-B4lhqS6H.js → call-CPfxv8yg.js} +5 -5
  48. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  49. package/dist/{catalog-CsXv59Tq.js → catalog-BqTvQqiq.js} +2 -2
  50. package/dist/{catalog-B-TAbJ2o.js → catalog-yCaNFdQz.js} +2 -2
  51. package/dist/{channel-web-yWytZHhN.js → channel-web-CfKNWfmp.js} +14 -14
  52. package/dist/{channels-status-issues-WkG3Tmxk.js → channels-status-issues-4XxYhQ8S.js} +4 -4
  53. package/dist/{channels-status-issues-CklLFAsD.js → channels-status-issues-BhtWH-p2.js} +4 -4
  54. package/dist/{chrome-CmxIwwsr.js → chrome-CN17GbZN.js} +2 -2
  55. package/dist/{chrome-BaU-H9m7.js → chrome-CVb9kRv_.js} +3 -3
  56. package/dist/{chrome-DLUBPBPz.js → chrome-D1Jm1Bdq.js} +9 -9
  57. package/dist/{chrome-B8EnYGj1.js → chrome-Nb2mFwWK.js} +2 -2
  58. package/dist/{chunk-B4Kx-ocg.js → chunk-B5s6o9xI.js} +3 -3
  59. package/dist/{chunk-DJXDX69U.js → chunk-CTS4rIMF.js} +3 -3
  60. package/dist/{chunk-CFSle8n5.js → chunk-DXTTGmeb.js} +1 -1
  61. package/dist/{chunk-Cy0Bj0F3.js → chunk-isZGJq82.js} +1 -1
  62. package/dist/{clack-prompter-0JW5kry0.js → clack-prompter-ChmRN__Q.js} +5 -5
  63. package/dist/{clack-prompter-fZSmnHda.js → clack-prompter-CpLhDhPM.js} +5 -5
  64. package/dist/cli/daemon-cli.js +1 -1
  65. package/dist/{cli-C7mOU26p.js → cli-BzTZ8Gnp.js} +46 -46
  66. package/dist/{cli-DfcdnRcl.js → cli-DLYU8BVw.js} +47 -47
  67. package/dist/{client-CfLiulzK.js → client-DNDzi0CF.js} +3 -3
  68. package/dist/{client-BWkoTfOH.js → client-DOTb2PN6.js} +2 -2
  69. package/dist/{command-format-kLw3YIIu.js → command-format-JgYolX96.js} +1 -1
  70. package/dist/{command-registry-DUTqrmna.js → command-registry-BQiM7sYY.js} +14 -14
  71. package/dist/{commands-Mekaw9WG.js → commands-CymFClS1.js} +2 -2
  72. package/dist/{common-DT_obM-k.js → common-C36MniDL.js} +2 -2
  73. package/dist/{common-Bf_TG87Y.js → common-Coq2knq6.js} +2 -2
  74. package/dist/{common-BCW6hLGI.js → common-c4ZysSLq.js} +2 -2
  75. package/dist/{common-CqIa2poH.js → common-fIXNXke2.js} +2 -2
  76. package/dist/{completion-cli-BBm9JIHZ.js → completion-cli-BP8IIlzX.js} +4 -4
  77. package/dist/{completion-cli-Cpj91U30.js → completion-cli-DW87AQgF.js} +3 -3
  78. package/dist/{config-ZYN8tezd.js → config-C7s14LLE.js} +24 -6
  79. package/dist/{config-BrVuTQ8R.js → config-DmsfUvB0.js} +24 -6
  80. package/dist/{config-CweTwOtr.js → config-LS-6Xgqo.js} +25 -7
  81. package/dist/{config-DaD4FsAn.js → config-MZ5clMl4.js} +25 -7
  82. package/dist/config-cli-BAj5hoD-.js +15 -0
  83. package/dist/config-cli-C6WtFt5S.js +11 -0
  84. package/dist/{config-guard-C4b2dksv.js → config-guard-BAVhoqm4.js} +5 -5
  85. package/dist/{config-guard-CWhoBtB3.js → config-guard-Em1kJe5K.js} +19 -19
  86. package/dist/{configure-BE8TA8Yt.js → configure-CHPG13jf.js} +24 -24
  87. package/dist/{configure-CU3kulTq.js → configure-Dd6zJb-q.js} +72 -72
  88. package/dist/{configure-BfWsTKMF.js → configure-DeLC66Op.js} +25 -25
  89. package/dist/{configure-4jIAlOdj.js → configure-i6y1krRa.js} +75 -75
  90. package/dist/{context-mdxDsO1v.js → context-C22AMgsc.js} +10 -2
  91. package/dist/{control-service-5YtMvm7D.js → control-service-BGnqY7vv.js} +5 -5
  92. package/dist/{control-service-3CI4vt1h.js → control-service-DxuB_IUw.js} +4 -4
  93. package/dist/control-ui/assets/{index-D4wqLVMN.js → index-XnQwXlLu.js} +2 -2
  94. package/dist/control-ui/assets/{index-D4wqLVMN.js.map → index-XnQwXlLu.js.map} +1 -1
  95. package/dist/control-ui/assets/index-tpHK2r2n.js +73 -0
  96. package/dist/control-ui/assets/index-tpHK2r2n.js.map +1 -0
  97. package/dist/control-ui/assets/{observers-B7MfWiIZ.js → observers-DqhQeBfm.js} +2 -2
  98. package/dist/control-ui/assets/{observers-B7MfWiIZ.js.map → observers-DqhQeBfm.js.map} +1 -1
  99. package/dist/control-ui/index.html +1 -1
  100. package/dist/{cron-cli-D9XrF-Gx.js → cron-cli-3VJy8n6n.js} +14 -14
  101. package/dist/{cron-cli-Cht6Itx6.js → cron-cli-C_B6qK9W.js} +16 -16
  102. package/dist/{daemon-cli-CrdPhSxr.js → daemon-cli-B0IaAuYH.js} +15 -15
  103. package/dist/{daemon-cli-9zrnYRjh.js → daemon-cli-BsY7ZPql.js} +17 -17
  104. package/dist/daemon-cli.js +19 -1
  105. package/dist/{daemon-runtime-BrUj88ZO.js → daemon-runtime-BoIX72LK.js} +2 -2
  106. package/dist/{daemon-runtime-DCqwraWR.js → daemon-runtime-DSPDxySK.js} +3 -3
  107. package/dist/{deliver-d-CaN0uL.js → deliver-BJ0JgwhN.js} +11 -11
  108. package/dist/{deliver-BKzX3YoN.js → deliver-BknvuSJz.js} +6 -6
  109. package/dist/{deliver-C1L5nO0K.js → deliver-D86kSZGn.js} +7 -7
  110. package/dist/{deliver-B-dPbUIs.js → deliver-bdH5itRb.js} +11 -11
  111. package/dist/{delivery-queue-BKQk1j0k.js → delivery-queue-B6Y3ea25.js} +1 -1
  112. package/dist/{deps-DKPoFoa8.js → deps-oUYlT5Sq.js} +1 -1
  113. package/dist/{diagnostics-BhSwKIcN.js → diagnostics-CXoISuYV.js} +1 -1
  114. package/dist/{diagnostics-Cu9pZAFn.js → diagnostics-aUz0rVDl.js} +1 -1
  115. package/dist/{dispatcher-BQQugU-7.js → dispatcher-DpEzmU7s.js} +2 -2
  116. package/dist/{dispatcher-DzwzLQRk.js → dispatcher-DwlzWX2u.js} +2 -2
  117. package/dist/{dns-cli-V2bo6vSt.js → dns-cli-D8tgv6zY.js} +10 -10
  118. package/dist/{dns-cli-C8KIX4P3.js → dns-cli-DawPrcXI.js} +12 -12
  119. package/dist/{docs-cli-D2cVJxjP.js → docs-cli-Bsx7Yd3w.js} +6 -6
  120. package/dist/{docs-cli-Bt-YV3xs.js → docs-cli-DnrE1Tqw.js} +7 -7
  121. package/dist/{doctor-CFpVHDFT.js → doctor-BNJ_edyo.js} +36 -36
  122. package/dist/{doctor-DOudOs1k.js → doctor-DY5SmosG.js} +38 -38
  123. package/dist/{doctor-completion-DfNyJGIj.js → doctor-completion-B6lgyLsC.js} +2 -2
  124. package/dist/{doctor-completion-R0UlpjIj.js → doctor-completion-mLt2Eo9P.js} +3 -3
  125. package/dist/{doctor-config-flow-Dxy7RIm0.js → doctor-config-flow-CvJDaN8t.js} +8 -8
  126. package/dist/{doctor-config-flow-Bgl0Cc20.js → doctor-config-flow-D7SJ61Ak.js} +6 -6
  127. package/dist/{engine-BDDM-iAi.js → engine-BrJ7eiEh.js} +2 -2
  128. package/dist/entry.js +18 -2
  129. package/dist/{env-DlTia1B4.js → env-ByZjwIJR.js} +1 -1
  130. package/dist/{exec-DUzVF5_D.js → exec-4nfFrGP7.js} +1 -1
  131. package/dist/{exec-BylR5qWS.js → exec-ChPERQB-.js} +1 -1
  132. package/dist/{exec-BtBJICHE.js → exec-CigQCGkt.js} +1 -1
  133. package/dist/{exec-C6tXfeqA.js → exec-Dn2S9A7x.js} +1 -1
  134. package/dist/{exec-approvals-cli-DYZVBnqS.js → exec-approvals-cli-DmdfF4o_.js} +17 -17
  135. package/dist/{exec-approvals-cli-CN2WeH7y.js → exec-approvals-cli-c5UsPAU1.js} +19 -19
  136. package/dist/extensionAPI.js +21 -21
  137. package/dist/{gateway-cli-DtIum1te.js → gateway-cli-C4FwPHzu.js} +95 -95
  138. package/dist/{gateway-cli-CFlPUx9N.js → gateway-cli-CkFzsHGb.js} +93 -93
  139. package/dist/{gateway-rpc-Cj_h2sVM.js → gateway-rpc-CgeNTQUV.js} +3 -3
  140. package/dist/{gateway-rpc-CnXMGsxp.js → gateway-rpc-DpVHyNFu.js} +3 -3
  141. package/dist/{gmail-setup-utils-BIXtKTpT.js → gmail-setup-utils-JWsjxDBV.js} +4 -4
  142. package/dist/{gmail-setup-utils-DaJoXV_3.js → gmail-setup-utils-lTV5KDPF.js} +3 -3
  143. package/dist/{health-ngQNjXh4.js → health-C6rAUaME.js} +13 -13
  144. package/dist/{health-yw_uaucz.js → health-DrokrOLQ.js} +13 -13
  145. package/dist/{health-format-BLnFZCH_.js → health-format-CTOsgiTE.js} +2 -2
  146. package/dist/{health-format-D-JJ5_S4.js → health-format-CzNDrJ8Z.js} +2 -2
  147. package/dist/{heartbeat-visibility-BaL8JzkS.js → heartbeat-visibility-DZOi_4uV.js} +1 -1
  148. package/dist/{heartbeat-visibility-mAzdNSiS.js → heartbeat-visibility-XbT4yJ3S.js} +1 -1
  149. package/dist/{help-format-ZKxl6UCb.js → help-format-D4k6gkpr.js} +1 -1
  150. package/dist/{help-format-Dt-I_Mls.js → help-format-DgCbU9Ow.js} +1 -1
  151. package/dist/{hooks-cli-D6YfDiUI.js → hooks-cli-CBDm7Rjw.js} +50 -50
  152. package/dist/{hooks-cli-CPgLAn7a.js → hooks-cli-DVNU2Cp_.js} +53 -53
  153. package/dist/{hooks-status-DdweuSIj.js → hooks-status-BQ7M6bIq.js} +3 -3
  154. package/dist/{hooks-status-DqfJDvYl.js → hooks-status-BlfmlpC0.js} +3 -3
  155. package/dist/{image-ops-Ct3GueyT.js → image-ops-flDr58qn.js} +2 -2
  156. package/dist/{image-ops-BdrMmiG4.js → image-ops-vj06APeW.js} +2 -2
  157. package/dist/index.js +62 -62
  158. package/dist/{installs-a4Vz_J08.js → installs-BeTulUkL.js} +4 -4
  159. package/dist/{installs-Bi6UipiE.js → installs-D1t93Dvw.js} +4 -4
  160. package/dist/{lifecycle-core-BTICG85s.js → lifecycle-core-DmxyMl5D.js} +5 -5
  161. package/dist/{lifecycle-core-B8PI1NZJ.js → lifecycle-core-OpMLwiRd.js} +3 -3
  162. package/dist/{links-DcilUrqq.js → links-NDZcSjct.js} +1 -1
  163. package/dist/{links-BjjDMNIq.js → links-RNygAKHu.js} +1 -1
  164. package/dist/llm-slug-generator.js +22 -22
  165. package/dist/{loader-C87TLS4J.js → loader-5Xm3Jxa-.js} +1 -1
  166. package/dist/{logging-Chc1Sj6N.js → logging-B0-OIfnO.js} +1 -1
  167. package/dist/{logging-_rCcBkls.js → logging-CX0bU2da.js} +2 -2
  168. package/dist/{login-DKkQ3Czu.js → login-BegD27g3.js} +5 -5
  169. package/dist/{login-MzVPMRxL.js → login-CSaeXIuW.js} +7 -7
  170. package/dist/{login-BTOKtSQN.js → login-WPS724ji.js} +5 -5
  171. package/dist/{login-qr-BGbHImRb.js → login-qr-BVzUWR4o.js} +8 -8
  172. package/dist/{login-qr-CxRI-tE2.js → login-qr-C0eNn9SV.js} +12 -12
  173. package/dist/{login-qr-OUAGpDsU.js → login-qr-DLLfBALk.js} +9 -9
  174. package/dist/{login-qr-BjpDVBJE.js → login-qr-updBsqHf.js} +10 -10
  175. package/dist/{login-BEaBOSnw.js → login-zlt00-k4.js} +6 -6
  176. package/dist/{logs-cli-BiAJbjnq.js → logs-cli-BDQoLnjr.js} +15 -15
  177. package/dist/{logs-cli-Bc6IOyHA.js → logs-cli-BPljn0BF.js} +14 -14
  178. package/dist/{manager-BYu34CX3.js → manager-B-8JFgek.js} +27 -11
  179. package/dist/{manager-C6L_DH0O.js → manager-CE4cPrH2.js} +7 -7
  180. package/dist/{manager-D8VCuzru.js → manager-DPojhf1D.js} +9 -9
  181. package/dist/{manager-b_aZwo00.js → manager-kKsAUV03.js} +27 -11
  182. package/dist/{manifest-registry-W_OfCIRP.js → manifest-registry-BAebAG4I.js} +1 -1
  183. package/dist/{manifest-registry-qF960vMH.js → manifest-registry-Cwvk5hu8.js} +1 -1
  184. package/dist/{memory-cli-B0kKl-9T.js → memory-cli-BJmQIQSw.js} +11 -11
  185. package/dist/{memory-cli-DLtBA6r5.js → memory-cli-DMJqELwh.js} +10 -10
  186. package/dist/{message-channel-CMsexA3K.js → message-channel-CfwNj8mC.js} +1 -1
  187. package/dist/{message-channel-DIHHKJhk.js → message-channel-qmDI9YoO.js} +1 -1
  188. package/dist/{model-auth-KpsOXKDc.js → model-auth-BCdRf282.js} +19 -3
  189. package/dist/{model-auth-CHB3EySM.js → model-auth-Bs6eoQ1l.js} +19 -3
  190. package/dist/{model-selection-CLcoOT3e.js → model-selection-BhIAjo3P.js} +1 -1
  191. package/dist/{model-selection-DjsJGv1R.js → model-selection-CVcwboE_.js} +1 -1
  192. package/dist/{model-selection-CY6r_3wt.js → model-selection-CeZMza3d.js} +1 -1
  193. package/dist/{model-selection-DcO3qJOu.js → model-selection-f7lJs3PI.js} +1 -1
  194. package/dist/{models-BXdBXPMB.js → models-DxRmPLiS.js} +97 -50
  195. package/dist/{models-cli-1Kj8gkGy.js → models-cli-B9KClY_f.js} +137 -82
  196. package/dist/{models-cli-DdJcmOGI.js → models-cli-BFZLSACV.js} +66 -58
  197. package/dist/{node-cli-DU_oREff.js → node-cli-BetF7Xgf.js} +26 -26
  198. package/dist/{node-cli-BmuVEJ1C.js → node-cli-CLeoh03V.js} +25 -25
  199. package/dist/{node-service-qZXF7T7A.js → node-service-FcwxyU8p.js} +1 -1
  200. package/dist/{node-service-cOoW5hLa.js → node-service-zrXojq7t.js} +1 -1
  201. package/dist/{note-CeLGcHqv.js → note-BTIeG9az.js} +1 -1
  202. package/dist/{note-iMYVGjpA.js → note-D_tpPSPO.js} +2 -2
  203. package/dist/{noxsoft-bootstrap-CrlkSFzd.js → noxsoft-bootstrap-CPS7t3Sk.js} +3 -3
  204. package/dist/{noxsoft-bootstrap-C4dSx7K_.js → noxsoft-bootstrap-CqygYIJa.js} +2 -2
  205. package/dist/{npm-registry-spec-jf7Mowdn.js → npm-registry-spec-BeX9-fmS.js} +1 -1
  206. package/dist/{npm-registry-spec-Br4B4I_3.js → npm-registry-spec-DB6xqMfu.js} +1 -1
  207. package/dist/{onboard-CHX1Jdt_.js → onboard-BZORsTGE.js} +18 -18
  208. package/dist/{onboard-BzScK9k6.js → onboard-Doq7UgRV.js} +19 -19
  209. package/dist/{onboard-channels-DfXxMbYu.js → onboard-channels-BREQ8Tyw.js} +9 -9
  210. package/dist/{onboard-channels-wUF4oRB-.js → onboard-channels-CpM1Nwqf.js} +8 -8
  211. package/dist/{onboard-helpers-CJ3HzoUO.js → onboard-helpers-rHLFiSIc.js} +7 -7
  212. package/dist/{onboard-helpers-CFudIoX4.js → onboard-helpers-uf70JxTj.js} +9 -9
  213. package/dist/{onboarding-fnZOw6Wv.js → onboarding-BGXbXgds.js} +21 -21
  214. package/dist/{onboarding-6jxAKxhe.js → onboarding-DQplq13s.js} +22 -22
  215. package/dist/{orchestrator-CrFD887e.js → orchestrator-CERtu86A.js} +1 -1
  216. package/dist/{outbound-Bmft-5um.js → outbound-Bii3QonX.js} +4 -4
  217. package/dist/{outbound-C577aWZp.js → outbound-BpcyR1eA.js} +4 -4
  218. package/dist/{outbound-fPqdCDR4.js → outbound-C1WShhf8.js} +4 -4
  219. package/dist/{outbound-DW2eod1S.js → outbound-DKY6oeyQ.js} +4 -4
  220. package/dist/{outbound-send-deps-DMsqr5fd.js → outbound-send-deps-CtiCh8EY.js} +1 -1
  221. package/dist/{parse-timeout-D4UO8pY_.js → parse-timeout-Bp5yQ1yW.js} +3 -3
  222. package/dist/{parse-timeout-C4WLf3Qy.js → parse-timeout-Cn7M8c5R.js} +3 -3
  223. package/dist/{path-env-DLQPf9qj.js → path-env-BAjR_Xf_.js} +1 -1
  224. package/dist/{paths-DMk3Q7yD.js → paths-BM1wivAU.js} +1 -1
  225. package/dist/{paths-CAQJvbeZ.js → paths-BqA7F6bT.js} +2 -2
  226. package/dist/{paths-Q6h5HODL.js → paths-DAbvPUdJ.js} +1 -1
  227. package/dist/{pi-auth-json-B_lKNFK6.js → pi-auth-json-BhkzZgQz.js} +5 -5
  228. package/dist/{pi-auth-json-BmdBnmlZ.js → pi-auth-json-CM3QDr9_.js} +6 -6
  229. package/dist/{pi-auth-json-WTvcP2gz.js → pi-auth-json-Dry5jXVt.js} +6 -6
  230. package/dist/{pi-auth-json-DkYqdjrV.js → pi-auth-json-qHO_AF3h.js} +6 -6
  231. package/dist/{pi-embedded-B1eVXOsQ.js → pi-embedded-CrzqUkHv.js} +304 -59
  232. package/dist/{pi-embedded-DbvG9mmD.js → pi-embedded-Dn3Ip_VN.js} +308 -63
  233. package/dist/{pi-embedded-helpers-BZ9GspxK.js → pi-embedded-helpers-BPtBCnl-.js} +1 -1
  234. package/dist/{pi-embedded-helpers-D2SLlgS4.js → pi-embedded-helpers-BSFtS9Fl.js} +1 -1
  235. package/dist/{pi-tools.policy-WdTAfqbV.js → pi-tools.policy-DuWNVoem.js} +6 -6
  236. package/dist/{pi-tools.policy-D2FusuQa.js → pi-tools.policy-DyckzpRL.js} +7 -7
  237. package/dist/{plugin-auto-enable-DhuD30Je.js → plugin-auto-enable-Btd2iEwF.js} +5 -5
  238. package/dist/{plugin-auto-enable-CtYcdTju.js → plugin-auto-enable-DvYJhgJ2.js} +5 -5
  239. package/dist/{plugin-registry-DKexyPAq.js → plugin-registry-BOuDey4w.js} +4 -4
  240. package/dist/{plugin-registry-CtkU96jV.js → plugin-registry-ChWHnegS.js} +4 -4
  241. package/dist/plugin-sdk/agents/local-model-installer.d.ts +11 -0
  242. package/dist/plugin-sdk/agents/openai-direct-runner.d.ts +2 -1
  243. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +40 -0
  244. package/dist/plugin-sdk/config/types.models.d.ts +1 -1
  245. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +13 -0
  246. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +13 -0
  247. package/dist/plugin-sdk/config/zod-schema.core.d.ts +6 -6
  248. package/dist/plugin-sdk/config/zod-schema.d.ts +15 -2
  249. package/dist/plugin-sdk/index.js +25 -7
  250. package/dist/{plugins-DYcg0qBW.js → plugins-BqPGs8w-.js} +1 -1
  251. package/dist/{plugins-BOMS6J5A.js → plugins-C8FLxXbd.js} +1 -1
  252. package/dist/{plugins-cli-BQmysVFP.js → plugins-cli-CbOP5ml6.js} +51 -51
  253. package/dist/{plugins-cli-B3l7kalt.js → plugins-cli-dH6LKRQM.js} +53 -53
  254. package/dist/{polls-DFISjV7H.js → polls-aumqIVob.js} +5 -5
  255. package/dist/{ports-BGLuwt2Z.js → ports--opAW6yN.js} +2 -2
  256. package/dist/{ports-q535r1PZ.js → ports-B20JTuiL.js} +2 -2
  257. package/dist/{ports-B_f42zcA.js → ports-C4ACB4MP.js} +2 -2
  258. package/dist/{ports-DaVrZDUq.js → ports-D6bjtvhF.js} +2 -2
  259. package/dist/{program-context-C4x0zjOR.js → program-context-7yQclqBT.js} +35 -35
  260. package/dist/{program-mSyCYzsQ.js → program-pWHcYdeO.js} +58 -58
  261. package/dist/{progress-glCgu57m.js → progress-BveMw0-_.js} +1 -1
  262. package/dist/{progress-CVLvQV_t.js → progress-qMmjCvh9.js} +1 -1
  263. package/dist/{prompt-style-BI53UVgE.js → prompt-style-DWuEFbBO.js} +1 -1
  264. package/dist/{prompt-style-D6SRiiTV.js → prompt-style-zgo1vAG1.js} +1 -1
  265. package/dist/{prompts-BmgT_kkv.js → prompts-C4v0DSTU.js} +6 -6
  266. package/dist/{prompts-Bq4QGFQM.js → prompts-D6Xc1Ddb.js} +4 -4
  267. package/dist/{pw-ai-DxNrJcCA.js → pw-ai-2XnGTARu.js} +3 -3
  268. package/dist/{pw-ai-CB-zeR7h.js → pw-ai-BUnz28XN.js} +5 -5
  269. package/dist/{pw-ai-C_1-7IgH.js → pw-ai-CRnDr120.js} +3 -3
  270. package/dist/{pw-ai-B4u5FDqO.js → pw-ai-Dq14LFsx.js} +6 -6
  271. package/dist/{qmd-manager-C_XBZ_bT.js → qmd-manager-6nqaD-q9.js} +5 -5
  272. package/dist/{qmd-manager-CO795NK4.js → qmd-manager-B6-V0aC1.js} +6 -6
  273. package/dist/{qmd-manager-CpNYgSrx.js → qmd-manager-BNL9Pl2G.js} +6 -6
  274. package/dist/{qmd-manager-Q0OSDQ-e.js → qmd-manager-CpynR-al.js} +5 -5
  275. package/dist/{register.agent-DBxUWr1K.js → register.agent-BMxuTqFN.js} +68 -68
  276. package/dist/{register.agent-CzEM3bkp.js → register.agent-BO6_QTx6.js} +65 -65
  277. package/dist/{register.anima-RI6gewtj.js → register.anima-5SAY6OxG.js} +4 -4
  278. package/dist/{register.anima--gufBuS-.js → register.anima-CLGhoqmw.js} +8 -8
  279. package/dist/register.configure-Bz9pap1L.js +106 -0
  280. package/dist/register.configure-dMfZ1zcY.js +107 -0
  281. package/dist/register.maintenance-CL2eIgmC.js +102 -0
  282. package/dist/register.maintenance-k1dBbjUg.js +103 -0
  283. package/dist/{register.message-BhGJ_1Iy.js → register.message-Cqlz-6uM.js} +52 -52
  284. package/dist/{register.message-ACbKb7JS.js → register.message-Cz34rs9W.js} +50 -50
  285. package/dist/{register.onboard-DR_YYtbi.js → register.onboard-Cmh46n62.js} +70 -70
  286. package/dist/{register.onboard-CwkY7CRm.js → register.onboard-_4FOFCA2.js} +67 -67
  287. package/dist/{register.setup-Cn3e7Std.js → register.setup-CHgH1mdn.js} +70 -70
  288. package/dist/{register.setup-BSm6O1ml.js → register.setup-CKY65php.js} +67 -67
  289. package/dist/{register.status-health-sessions-DAl9OeGB.js → register.status-health-sessions-CNX6wp0V.js} +60 -60
  290. package/dist/{register.status-health-sessions-CpxsZeet.js → register.status-health-sessions-DNvtWNtb.js} +63 -63
  291. package/dist/{register.subclis-DEFeoyPP.js → register.subclis-Br8nY-dd.js} +23 -23
  292. package/dist/{reply-ylwOKuOF.js → reply-DqXPXQ20.js} +322 -77
  293. package/dist/{reply-prefix-CEnF6TUe.js → reply-prefix-CZy4g8SY.js} +1 -1
  294. package/dist/{reply-prefix-Og65nAYv.js → reply-prefix-DuANpRN_.js} +1 -1
  295. package/dist/{routes-CWCAc8uJ.js → routes-CAjh83-X.js} +6 -6
  296. package/dist/{routes-FT0Us8Md.js → routes-DTjggbOR.js} +6 -6
  297. package/dist/{run-D6Ete2Z-.js → run-0F-ZU2kW.js} +2038 -172
  298. package/dist/{run-B6eBjo22.js → run-Bu-fwhic.js} +2043 -177
  299. package/dist/{run-main-CQHE4XaN.js → run-main-BcC_mt4v.js} +72 -72
  300. package/dist/{runtime-guard-D14Z_QY6.js → runtime-guard-Ccc4Qj4K.js} +1 -1
  301. package/dist/{runtime-guard-DdP10b7Q.js → runtime-guard-E3CIN3Xo.js} +1 -1
  302. package/dist/{sandbox-D-N7M7lp.js → sandbox-DSHSoUHO.js} +6 -6
  303. package/dist/{sandbox-cli-CQKz2I1X.js → sandbox-cli-BiO-r7eU.js} +22 -22
  304. package/dist/{sandbox-cli-DHNFlTo-.js → sandbox-cli-D6ikivGS.js} +22 -22
  305. package/dist/{sandbox-pBHlfFdB.js → sandbox-mSWYRXFm.js} +6 -6
  306. package/dist/{security-cli-Bdi7MuP6.js → security-cli-Bqq5Klnm.js} +25 -25
  307. package/dist/{security-cli-C3aI09uy.js → security-cli-CcBxjHGL.js} +25 -25
  308. package/dist/{semantic-CQApJNO_.js → semantic-CPfLgc8S.js} +1 -1
  309. package/dist/{semantic-9rgWUrz3.js → semantic-DLW1Sflk.js} +1 -1
  310. package/dist/{semantic-C1UN3bb9.js → semantic-jL8x-DTZ.js} +1 -1
  311. package/dist/{server-context-Yx4pgBqJ.js → server-context-DTlBzMyD.js} +7 -7
  312. package/dist/{server-context-Clykq0XU.js → server-context-EPPcxp2p.js} +8 -8
  313. package/dist/{server-node-events-DIuVwITd.js → server-node-events-BGWQiInn.js} +52 -52
  314. package/dist/{server-node-events-CV5m_fuq.js → server-node-events-BuxYvQ0t.js} +50 -50
  315. package/dist/{service-4VfZwSv1.js → service-BoUEkrUm.js} +1 -1
  316. package/dist/{service-audit-KzOtcw_V.js → service-audit-B_BC6-F8.js} +3 -3
  317. package/dist/{service-audit-Bwpoc2LD.js → service-audit-CjH8ed-j.js} +3 -3
  318. package/dist/{service-Dd1DfPia.js → service-ho_k2vjr.js} +1 -1
  319. package/dist/{session-jljC5QVG.js → session-B4wJoEqn.js} +4 -4
  320. package/dist/{session-CSmfU0D3.js → session-BF7WjlT0.js} +1 -1
  321. package/dist/{session-Jlf3l006.js → session-BnOV0y0e.js} +6 -6
  322. package/dist/{session-BqHD-8a_.js → session-CSgjW31i.js} +5 -5
  323. package/dist/{session-BiA6jrcs.js → session-DO_miKel.js} +1 -1
  324. package/dist/{session-5YO_H-Ra.js → session-DcRzV4l4.js} +1 -1
  325. package/dist/{session-BzrnfWQ2.js → session-DlMsi6dM.js} +5 -5
  326. package/dist/{session-cost-usage-DnxtnK1E.js → session-cost-usage-BNvno_kS.js} +1 -1
  327. package/dist/{sessions-C_3wTmSA.js → sessions-B2NwIaNC.js} +6 -6
  328. package/dist/{sessions-BOzeFzuL.js → sessions-DBQx8E1H.js} +5 -5
  329. package/dist/{sessions-BmE5Z_1i.js → sessions-DxAfgPEp.js} +6 -6
  330. package/dist/{settings-cli-T66kDBNA.js → settings-cli-CHwTEE6P.js} +72 -72
  331. package/dist/{settings-cli-LWW2xQBQ.js → settings-cli-DsUKlq8R.js} +74 -74
  332. package/dist/{setup-token-6DSKE0Tn.js → setup-token-BX6QI7ce.js} +26 -26
  333. package/dist/{setup-token-0zfSBnMQ.js → setup-token-CU5mami5.js} +26 -26
  334. package/dist/{shared-C-rqLtIT.js → shared-BFzq0XE1.js} +2 -2
  335. package/dist/{shared-7KwLAyAq.js → shared-D3ZAXqdo.js} +3 -3
  336. package/dist/{shell-env-CMI9f7-7.js → shell-env-BR7Sbtw1.js} +1 -1
  337. package/dist/{shell-env-HkVWMh--.js → shell-env-BZ2Wha1e.js} +1 -1
  338. package/dist/{shell-env-iPnSIi-t.js → shell-env-Bgk3WFTi.js} +1 -1
  339. package/dist/{skills-DtoVe1dS.js → skills-BT0Lx09M.js} +2 -2
  340. package/dist/{skills-4v6-kw0C.js → skills-DjVFhlQY.js} +3 -3
  341. package/dist/{skills-cli-BoasNTpZ.js → skills-cli-BX5pL-D4.js} +15 -15
  342. package/dist/{skills-cli-TeAq3fRG.js → skills-cli-wKTnuQos.js} +14 -14
  343. package/dist/{skills-install-D6_qpRjW.js → skills-install-CVWWsOf2.js} +4 -4
  344. package/dist/{skills-install-Qw2oU8L8.js → skills-install-Ye1kjpCv.js} +4 -4
  345. package/dist/{skills-status-DuLjkX2E.js → skills-status-BUKnQ3ek.js} +2 -2
  346. package/dist/{skills-status-CvH7AUoY.js → skills-status-BmZufjT1.js} +3 -3
  347. package/dist/{soul-Bt8UNmTq.js → soul-C0oc6fbP.js} +1 -1
  348. package/dist/{soul-D9k5zulC.js → soul-DEsrpMAk.js} +1 -1
  349. package/dist/{soul-BiIdv3Wp.js → soul-Doq8As4R.js} +1 -1
  350. package/dist/{soul-DQSYs-4l.js → soul-DyLtQVJh.js} +1 -1
  351. package/dist/{sqlite-BMMt7osH.js → sqlite-CFCo1Ghe.js} +2 -2
  352. package/dist/{sqlite-Cm6OqTQB.js → sqlite-DVkTX4wZ.js} +1 -1
  353. package/dist/{sqlite-CZ1vD4VS.js → sqlite-DrhFRoal.js} +2 -2
  354. package/dist/{sqlite-CpAJt-JS.js → sqlite-M5Ot9X4U.js} +1 -1
  355. package/dist/start-C-gTbKUz.js +158 -0
  356. package/dist/start-DZKfWnpD.js +157 -0
  357. package/dist/{status-CDcFjNtS.js → status-BN6HYR8t.js} +4 -4
  358. package/dist/{status-CobgQziJ.js → status-BimVB8cj.js} +4 -4
  359. package/dist/{status-D37aRiV3.js → status-CSkpd-tb.js} +27 -27
  360. package/dist/{status-BhRELdY_.js → status-D1zupVBm.js} +24 -24
  361. package/dist/{status.update-B6Tdpk07.js → status.update-HKMS5T9H.js} +2 -2
  362. package/dist/{status.update-E9dSFk_b.js → status.update-oapjZPr_.js} +3 -3
  363. package/dist/{subagent-registry-CDEUbtey.js → subagent-registry-D87n8mHd.js} +318 -81
  364. package/dist/{subsystem-D1AJZPgG.js → subsystem-CkjVkxc4.js} +17 -1
  365. package/dist/{subsystem-D-Xta-sj.js → subsystem-CyrIA90F.js} +17 -1
  366. package/dist/{subsystem-BAADN1B8.js → subsystem-DLVQ9bjX.js} +17 -1
  367. package/dist/{system-cli-DoLzi2Sn.js → system-cli-BRPiBm4G.js} +13 -13
  368. package/dist/{system-cli-CP7JrhR0.js → system-cli-DaNHLGRC.js} +15 -15
  369. package/dist/{systemd-6iLWJxQQ.js → systemd-CS58NHpx.js} +2 -2
  370. package/dist/{systemd-hints-C5Kfh4GW.js → systemd-hints-7HkQ202-.js} +1 -1
  371. package/dist/{systemd-linger-CxGmIy_5.js → systemd-linger-BMNvTAmy.js} +2 -2
  372. package/dist/{systemd-linger-BVwGXVS0.js → systemd-linger-C9PGBtXs.js} +2 -2
  373. package/dist/{systemd-Bx76sJ3M.js → systemd-zYTszfyU.js} +2 -2
  374. package/dist/{table-Blmz7glr.js → table-Bea_v9UU.js} +2 -2
  375. package/dist/{table-Bt7rSYC6.js → table-ohGAZZLQ.js} +1 -1
  376. package/dist/{tokens-CmlI2hSz.js → tokens-BelyD23F.js} +1 -1
  377. package/dist/{tokens-SP2Q7i59.js → tokens-nliOJNMv.js} +1 -1
  378. package/dist/{tool-images-C6cKHTbj.js → tool-images-BEiRPCYM.js} +2 -2
  379. package/dist/{tool-images-2qproko3.js → tool-images-BH8q2ZMq.js} +2 -2
  380. package/dist/{tool-images-D1HuaGdS.js → tool-images-DJrhuxOM.js} +1 -1
  381. package/dist/{tool-images-CgDT0Xzv.js → tool-images-dAVG0qoz.js} +2 -2
  382. package/dist/{tui-r4qpJhNk.js → tui-DnzqtbW3.js} +9 -9
  383. package/dist/{tui-C2eLfbhA.js → tui-FJlF9b--.js} +8 -8
  384. package/dist/{tui-cli-cLSYBQu9.js → tui-cli-BtLvABYH.js} +27 -27
  385. package/dist/{tui-cli-BgcbCtgc.js → tui-cli-Cm3G2SAN.js} +26 -26
  386. package/dist/{update-CqKpX3cX.js → update-Cpvsdq3a.js} +3 -3
  387. package/dist/{update-DA91za97.js → update-DrQkwR-M.js} +3 -3
  388. package/dist/{update-cli-QtM0G6CE.js → update-cli-DpKplMO0.js} +79 -79
  389. package/dist/{update-cli-BjHgpnxD.js → update-cli-DueHX0OM.js} +83 -83
  390. package/dist/{update-runner-C8SRcVm3.js → update-runner-C7CjKcMp.js} +5 -5
  391. package/dist/{update-runner-Fb3Un6UZ.js → update-runner-DtqDU0xF.js} +5 -5
  392. package/dist/{utils-D1VGbO3C.js → utils-BNuEYQIN.js} +1 -1
  393. package/dist/{utils-CLYlhJuc.js → utils-CkCznJhR.js} +1 -1
  394. package/dist/{web-BDig9tCy.js → web-Br9HCEvC.js} +54 -54
  395. package/dist/{web-CPPJ5y4c.js → web-BxkEMATs.js} +25 -25
  396. package/dist/{web-C4lrKULd.js → web-CPHrMWsv.js} +24 -24
  397. package/dist/web-HXy7rlIW.js +65 -0
  398. package/dist/{webhooks-cli-k3QMf7Rs.js → webhooks-cli-CdoaCUQ5.js} +11 -11
  399. package/dist/{webhooks-cli-vlEfXEKm.js → webhooks-cli-D65dKr5L.js} +12 -12
  400. package/dist/{whatsapp-actions-Hr-W8vjY.js → whatsapp-actions--CtxOhlj.js} +12 -12
  401. package/dist/{whatsapp-actions-C0tlEdLy.js → whatsapp-actions--eONuB4M.js} +14 -14
  402. package/dist/{whatsapp-actions-BJn-z76S.js → whatsapp-actions-BM0a0V4y.js} +17 -17
  403. package/dist/{whatsapp-actions-6fPRKwPV.js → whatsapp-actions-Bhz79Fgg.js} +11 -11
  404. package/dist/{widearea-dns-CtU9Fx7K.js → widearea-dns-D2VSHQ7y.js} +1 -1
  405. package/dist/{widearea-dns-CHAT20aR.js → widearea-dns-DlJrNJOg.js} +1 -1
  406. package/dist/{workspace-BFIZCnGo.js → workspace-D6JhsXVL.js} +1 -1
  407. package/dist/{ws-log-CUobU2tD.js → ws-log-Cvz4xRCD.js} +1 -1
  408. package/dist/{ws-log-CG6cvCZW.js → ws-log-DwsFDY7m.js} +1 -1
  409. package/package.json +3 -1
  410. package/scripts/install-local-qwen3-coder.sh +7 -0
  411. package/dist/config-cli-CF2ERR8G.js +0 -11
  412. package/dist/config-cli-Dmd4Oyjp.js +0 -15
  413. package/dist/control-ui/assets/index-DIEQjjCN.js +0 -73
  414. package/dist/control-ui/assets/index-DIEQjjCN.js.map +0 -1
  415. package/dist/register.configure-Cs3uLUBo.js +0 -107
  416. package/dist/register.configure-Dpe8Qel3.js +0 -106
  417. package/dist/register.maintenance-BEYN8SJL.js +0 -103
  418. package/dist/register.maintenance-DqAdzWBM.js +0 -102
  419. package/dist/start-BdcAszpl.js +0 -157
  420. package/dist/start-gVOPVCgi.js +0 -158
  421. package/dist/web-Vx_ENtYI.js +0 -65
@@ -1,58 +1,58 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
- import { $ as resolveStateDir, Dt as resolveRequiredHomeDir, N as theme, O as shouldLogVerbose, P as getChildLogger, T as logVerbose, Y as resolveGatewayPort, ct as normalizeAnyChannelId, g as defaultRuntime, lt as normalizeChannelId, n as isTruthyEnvValue, nt as CHAT_CHANNEL_ORDER, o as createSubsystemLogger, pt as setActivePluginRegistry, ut as normalizeChatChannelId, z as normalizeLogLevel } from "./entry.js";
3
- import { S as saveJsonFile, T as resolveAuthProfileDisplayLabel, a as markAuthProfileUsed, i as markAuthProfileFailure, l as listProfilesForProvider, n as resolveAuthProfileOrder, p as ensureAuthProfileStore, r as isProfileInCooldown, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as resolveAuthStorePathForDisplay, w as normalizeSecretInput, x as loadJsonFile } from "./auth-profiles-Brxz2ojJ.js";
4
- import { r as resolveCliName, t as formatCliCommand } from "./command-format-kLw3YIIu.js";
2
+ import { B as normalizeLogLevel, E as logVerbose, F as getChildLogger, Ot as resolveRequiredHomeDir, P as theme, X as resolveGatewayPort, _ as defaultRuntime, dt as normalizeChatChannelId, et as resolveStateDir, g as createNonExitingRuntime, k as shouldLogVerbose, lt as normalizeAnyChannelId, mt as setActivePluginRegistry, n as isTruthyEnvValue, o as createSubsystemLogger, rt as CHAT_CHANNEL_ORDER, ut as normalizeChannelId } from "./entry.js";
3
+ import { S as saveJsonFile, T as resolveAuthProfileDisplayLabel, a as markAuthProfileUsed, i as markAuthProfileFailure, l as listProfilesForProvider, n as resolveAuthProfileOrder, p as ensureAuthProfileStore, r as isProfileInCooldown, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as resolveAuthStorePathForDisplay, w as normalizeSecretInput, x as loadJsonFile } from "./auth-profiles-fjGcjhZ4.js";
4
+ import { r as resolveCliName, t as formatCliCommand } from "./command-format-JgYolX96.js";
5
5
  import { S as resolveThreadParentSessionKey, _ as isAcpSessionKey, a as buildAgentPeerSessionKey, b as isSubagentSessionKey, c as normalizeAccountId$1, d as resolveAgentIdFromSessionKey, f as resolveThreadSessionKeys, g as getSubagentDepth, i as buildAgentMainSessionKey, l as normalizeAgentId, n as DEFAULT_AGENT_ID, p as sanitizeAgentId, r as DEFAULT_MAIN_KEY, t as DEFAULT_ACCOUNT_ID, u as normalizeMainKey, v as isCronRunSessionKey, x as parseAgentSessionKey } from "./session-key-DP2WHl90.js";
6
- import { C as sleep, E as truncateUtf16Safe, S as shortenHomePath, c as escapeRegExp, d as isRecord, r as clampInt, t as CONFIG_DIR, u as isPlainObject, w as sliceUtf16Safe, y as resolveUserPath } from "./utils-D1VGbO3C.js";
7
- import { a as logDebug, c as logWarn, i as spawnWithFallback, n as runExec, r as formatSpawnError, s as logInfo, t as runCommandWithTimeout } from "./exec-BtBJICHE.js";
8
- import { c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, x as ensureAgentWorkspace } from "./agent-scope-Dm8IL1Ks.js";
9
- import { _ as DEFAULT_MODEL, a as isCliProvider, c as normalizeProviderId, d as resolveConfiguredModelRef, f as resolveDefaultModelForAgent, g as DEFAULT_CONTEXT_TOKENS, h as resolveThinkingDefault, m as resolveModelRefFromString, n as buildConfiguredAllowlistKeys, o as modelKey, r as buildModelAliasIndex, s as normalizeModelRef, t as buildAllowedModelSet, v as DEFAULT_PROVIDER } from "./model-selection-DcO3qJOu.js";
10
- import { t as resolveAnimaAgentDir } from "./agent-paths-niQrLbGc.js";
6
+ import { C as sleep, E as truncateUtf16Safe, S as shortenHomePath, c as escapeRegExp, d as isRecord, r as clampInt, t as CONFIG_DIR, u as isPlainObject, w as sliceUtf16Safe, y as resolveUserPath } from "./utils-BNuEYQIN.js";
7
+ import { a as logDebug, c as logWarn, i as spawnWithFallback, n as runExec, r as formatSpawnError, s as logInfo, t as runCommandWithTimeout } from "./exec-CigQCGkt.js";
8
+ import { c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, x as ensureAgentWorkspace } from "./agent-scope-B1FoYHfj.js";
9
+ import { _ as DEFAULT_MODEL, a as isCliProvider, c as normalizeProviderId, d as resolveConfiguredModelRef, f as resolveDefaultModelForAgent, g as DEFAULT_CONTEXT_TOKENS, h as resolveThinkingDefault, m as resolveModelRefFromString, n as buildConfiguredAllowlistKeys, o as modelKey, r as buildModelAliasIndex, s as normalizeModelRef, t as buildAllowedModelSet, v as DEFAULT_PROVIDER } from "./model-selection-f7lJs3PI.js";
10
+ import { t as resolveAnimaAgentDir } from "./agent-paths-DRAU6-8h.js";
11
11
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BZryRo8-.js";
12
- import { c as assertMediaNotDataUrl, i as loadWorkspaceSkillEntries, l as assertSandboxPath, n as buildWorkspaceSkillCommandSpecs, o as resolvePluginSkillDirs, r as buildWorkspaceSkillSnapshot, u as resolveSandboxedMediaSource } from "./skills-DtoVe1dS.js";
13
- import { a as applyTestPluginDefaults, c as resolveEnableState, l as resolveMemorySlotDecision, n as discoverAnimaPlugins, s as normalizePluginsConfig, t as loadPluginManifestRegistry } from "./manifest-registry-W_OfCIRP.js";
14
- import { C as unsetConfigValueAtPath, M as VERSION, S as setConfigValueAtPath, _ as resetConfigOverrides, b as getConfigValueAtPath, c as resolveConfigSnapshotHash, g as getConfigOverrides, h as validateJsonSchemaValue, i as loadConfig, l as writeConfigFile, m as parseDurationMs, o as readConfigFileSnapshot, u as validateConfigObjectWithPlugins, v as setConfigOverride, x as parseConfigPath, y as unsetConfigOverride } from "./config-BrVuTQ8R.js";
12
+ import { c as assertMediaNotDataUrl, i as loadWorkspaceSkillEntries, l as assertSandboxPath, n as buildWorkspaceSkillCommandSpecs, o as resolvePluginSkillDirs, r as buildWorkspaceSkillSnapshot, u as resolveSandboxedMediaSource } from "./skills-BT0Lx09M.js";
13
+ import { a as applyTestPluginDefaults, c as resolveEnableState, l as resolveMemorySlotDecision, n as discoverAnimaPlugins, s as normalizePluginsConfig, t as loadPluginManifestRegistry } from "./manifest-registry-BAebAG4I.js";
14
+ import { C as unsetConfigValueAtPath, M as VERSION, S as setConfigValueAtPath, _ as resetConfigOverrides, b as getConfigValueAtPath, c as resolveConfigSnapshotHash, g as getConfigOverrides, h as validateJsonSchemaValue, i as loadConfig, l as writeConfigFile, m as parseDurationMs, o as readConfigFileSnapshot, u as validateConfigObjectWithPlugins, v as setConfigOverride, x as parseConfigPath, y as unsetConfigOverride } from "./config-DmsfUvB0.js";
15
15
  import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell } from "./shell-env-2QqHvBMl.js";
16
- import { At as SESSION_LABEL_MAX_LENGTH, Mt as hasInterSessionUserProvenance } from "./client-CfLiulzK.js";
17
- import { a as randomIdempotencyKey, n as callGateway } from "./call-B4lhqS6H.js";
18
- import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-DIHHKJhk.js";
19
- import { A as buildGroupDisplayName, D as listChannelDocks, E as getChannelDock, F as normalizeDeliveryContext, I as normalizeSessionDeliveryFields, M as deliveryContextFromSession, N as deliveryContextKey, O as resolveConversationLabel, P as mergeDeliveryContext, S as resolveMainSessionKey, _ as DEFAULT_RESET_TRIGGERS, a as readSessionUpdatedAt, b as resolveAgentMainSessionKey, c as updateLastRoute, d as resolveSessionKey$1, f as evaluateSessionFreshness, g as resolveThreadFlag, h as resolveSessionResetType, i as loadSessionStore, j as resolveGroupSessionKey, k as normalizeChatType, l as updateSessionStore, m as resolveSessionResetPolicy, n as appendAssistantMessageToSessionTranscript, o as recordSessionMetaFromInbound, p as resolveChannelResetConfig, t as extractDeliveryInfo, u as updateSessionStoreEntry, v as resolveFreshSessionTotalTokens, w as deriveSessionMetaPatch, y as canonicalizeMainSessionAlias } from "./sessions-C_3wTmSA.js";
20
- import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText, t as HEARTBEAT_TOKEN } from "./tokens-CmlI2hSz.js";
21
- import { $ as isVoiceCompatibleAudio, A as getLastTtsAttempt, B as resolveTtsConfig, C as formatUserTime, D as killProcessTree, E as getShellConfig, F as isTtsProviderConfigured, G as setTtsEnabled, I as maybeApplyTtsToPayload, J as textToSpeech, K as setTtsMaxLength, L as normalizeTtsAutoMode, M as getTtsProvider, N as isSummarizationEnabled, O as sanitizeBinaryOutput, P as isTtsEnabled, R as resolveTtsApiKey, S as buildSystemPromptParams, T as resolveUserTimezone, U as setLastTtsAttempt, V as resolveTtsPrefsPath, W as setSummarizationEnabled, Y as textToSpeechTelephony, _ as resolvePromptInput, at as makeBootstrapWarn, b as writeCliImages, c as appendImagePathsToPrompt, ct as createInternalHookEvent, d as cleanupResumeProcesses, f as cleanupSuspendedCliProcesses, g as parseCliJsonl, h as parseCliJson, ht as stripHeartbeatToken, i as resolveRunWorkspaceDir, j as getTtsMaxLength, k as buildTtsSystemPromptHint, l as buildCliArgs, lt as registerInternalHook, m as normalizeCliModel, mt as resolveHeartbeatPrompt, o as appendRunnerCapabilityPrompt, ot as resolveBootstrapContextForRun, p as enqueueCliRun, q as setTtsProvider, r as redactRunIdentifier, s as resolveAnimaDocsPath, t as runAnthropicDirectAgent, u as buildSystemPrompt, ut as triggerInternalHook, v as resolveSessionIdToSend, w as resolveUserTimeFormat, x as buildAgentSystemPrompt, y as resolveSystemPromptUsage, z as resolveTtsAutoMode } from "./anthropic-direct-runner-Bu8w-wlJ.js";
22
- import { S as resolveBootstrapMaxChars, _ as isFailoverErrorMessage, a as normalizeElevatedLevel, b as sanitizeUserFacingText, c as normalizeUsageDisplay, d as supportsXHighThinking, g as isContextOverflowError, h as isCompactionFailureError, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, p as classifyFailoverReason, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode, v as isLikelyContextOverflowError, y as isTransientHttpError } from "./pi-embedded-helpers-D2SLlgS4.js";
23
- import { _ as resolveToolProfilePolicy, a as ensureSandboxWorkspaceForSession, c as resolveSandboxConfigForAgent, d as applyOwnerOnlyToolPolicy, f as buildPluginToolGroups, g as normalizeToolName, m as expandPolicyWithPluginGroups, o as resolveSandboxRuntimeStatus, p as collectExplicitAllowlist, s as getBridgeAuthForPort, v as stripPluginOnlyAllowlist } from "./sandbox-D-N7M7lp.js";
24
- import { x as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CmxIwwsr.js";
25
- import { c as safeEqualSecret } from "./auth-Cp__MMeO.js";
26
- import { a as resolveBrowserConfig, h as resolveBrowserControlAuth } from "./server-context-Clykq0XU.js";
27
- import { a as resolvePathsWithinRoot, i as DEFAULT_UPLOAD_DIR, n as getMediaDir, r as saveMediaBuffer } from "./routes-CWCAc8uJ.js";
16
+ import { At as SESSION_LABEL_MAX_LENGTH, Mt as hasInterSessionUserProvenance } from "./client-DNDzi0CF.js";
17
+ import { a as randomIdempotencyKey, n as callGateway } from "./call-CPfxv8yg.js";
18
+ import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-qmDI9YoO.js";
19
+ import { A as buildGroupDisplayName, D as listChannelDocks, E as getChannelDock, F as normalizeDeliveryContext, I as normalizeSessionDeliveryFields, M as deliveryContextFromSession, N as deliveryContextKey, O as resolveConversationLabel, P as mergeDeliveryContext, S as resolveMainSessionKey, _ as DEFAULT_RESET_TRIGGERS, a as readSessionUpdatedAt, b as resolveAgentMainSessionKey, c as updateLastRoute, d as resolveSessionKey$1, f as evaluateSessionFreshness, g as resolveThreadFlag, h as resolveSessionResetType, i as loadSessionStore, j as resolveGroupSessionKey, k as normalizeChatType, l as updateSessionStore, m as resolveSessionResetPolicy, n as appendAssistantMessageToSessionTranscript, o as recordSessionMetaFromInbound, p as resolveChannelResetConfig, t as extractDeliveryInfo, u as updateSessionStoreEntry, v as resolveFreshSessionTotalTokens, w as deriveSessionMetaPatch, y as canonicalizeMainSessionAlias } from "./sessions-B2NwIaNC.js";
20
+ import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText, t as HEARTBEAT_TOKEN } from "./tokens-nliOJNMv.js";
21
+ import { $ as isVoiceCompatibleAudio, A as getLastTtsAttempt, B as resolveTtsConfig, C as formatUserTime, D as killProcessTree, E as getShellConfig, F as isTtsProviderConfigured, G as setTtsEnabled, I as maybeApplyTtsToPayload, J as textToSpeech, K as setTtsMaxLength, L as normalizeTtsAutoMode, M as getTtsProvider, N as isSummarizationEnabled, O as sanitizeBinaryOutput, P as isTtsEnabled, R as resolveTtsApiKey, S as buildSystemPromptParams, T as resolveUserTimezone, U as setLastTtsAttempt, V as resolveTtsPrefsPath, W as setSummarizationEnabled, Y as textToSpeechTelephony, _ as resolvePromptInput, at as makeBootstrapWarn, b as writeCliImages, c as appendImagePathsToPrompt, ct as createInternalHookEvent, d as cleanupResumeProcesses, f as cleanupSuspendedCliProcesses, g as parseCliJsonl, h as parseCliJson, ht as stripHeartbeatToken, i as resolveRunWorkspaceDir, j as getTtsMaxLength, k as buildTtsSystemPromptHint, l as buildCliArgs, lt as registerInternalHook, m as normalizeCliModel, mt as resolveHeartbeatPrompt, o as appendRunnerCapabilityPrompt, ot as resolveBootstrapContextForRun, p as enqueueCliRun, q as setTtsProvider, r as redactRunIdentifier, s as resolveAnimaDocsPath, t as runAnthropicDirectAgent, u as buildSystemPrompt, ut as triggerInternalHook, v as resolveSessionIdToSend, w as resolveUserTimeFormat, x as buildAgentSystemPrompt, y as resolveSystemPromptUsage, z as resolveTtsAutoMode } from "./anthropic-direct-runner-BNiXWmel.js";
22
+ import { S as resolveBootstrapMaxChars, _ as isFailoverErrorMessage, a as normalizeElevatedLevel, b as sanitizeUserFacingText, c as normalizeUsageDisplay, d as supportsXHighThinking, g as isContextOverflowError, h as isCompactionFailureError, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, p as classifyFailoverReason, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode, v as isLikelyContextOverflowError, y as isTransientHttpError } from "./pi-embedded-helpers-BSFtS9Fl.js";
23
+ import { _ as resolveToolProfilePolicy, a as ensureSandboxWorkspaceForSession, c as resolveSandboxConfigForAgent, d as applyOwnerOnlyToolPolicy, f as buildPluginToolGroups, g as normalizeToolName, m as expandPolicyWithPluginGroups, o as resolveSandboxRuntimeStatus, p as collectExplicitAllowlist, s as getBridgeAuthForPort, v as stripPluginOnlyAllowlist } from "./sandbox-DSHSoUHO.js";
24
+ import { x as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CN17GbZN.js";
25
+ import { c as safeEqualSecret } from "./auth-Bw3NUKcg.js";
26
+ import { a as resolveBrowserConfig, h as resolveBrowserControlAuth } from "./server-context-EPPcxp2p.js";
27
+ import { a as resolvePathsWithinRoot, i as DEFAULT_UPLOAD_DIR, n as getMediaDir, r as saveMediaBuffer } from "./routes-CAjh83-X.js";
28
28
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-COFgygw8.js";
29
- import { a as resizeToJpeg, c as getFileExtension, d as kindFromMime, h as SsrFBlockedError, l as imageMimeFromFormat, m as mediaKindFromMime, n as getImageMetadata, o as detectMime, s as extensionForMime, u as isAudioFileName, v as isBlockedHostname, y as isPrivateIpAddress } from "./image-ops-BdrMmiG4.js";
30
- import { n as listChannelPlugins, r as normalizeChannelId$1, t as getChannelPlugin } from "./plugins-BOMS6J5A.js";
31
- import { a as resolveSessionTranscriptPathInDir, c as resolveStorePath$1, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions } from "./paths-DMk3Q7yD.js";
32
- import { t as sanitizeToolResultImages } from "./tool-images-D1HuaGdS.js";
33
- import { i as resolveApiKeyForProvider, n as getCustomProviderApiKey, o as resolveEnvApiKey, r as requireApiKey, s as resolveModelAuthMode, t as getApiKeyForModel } from "./model-auth-KpsOXKDc.js";
34
- import { _ as throwIfAborted, b as initializeGlobalHookRunner, c as applyReplyThreading, d as shouldSuppressMessagingToolReplies, f as createReplyToModeFilterForChannel, g as normalizeTargetForProvider, h as normalizeChannelTargetInput, l as filterMessagingToolDuplicates, m as buildTargetResolverSignature, o as normalizeReplyPayloadsForDelivery, p as resolveReplyToMode, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as isRenderablePayload, v as parseReplyDirectives, y as getGlobalHookRunner } from "./deliver-C1L5nO0K.js";
35
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-B0kKl-9T.js";
36
- import { n as resolveMemorySearchConfig } from "./manager-C6L_DH0O.js";
37
- import { c as pruneExpiredPending, d as writeJsonAtomic, l as readJsonFile, s as createAsyncLock, u as resolvePairingPaths } from "./loader-C87TLS4J.js";
38
- import { a as jsonResult, c as readStringArrayParam, i as imageResultFromFile, l as readStringParam, o as readNumberParam, r as imageResult } from "./common-CqIa2poH.js";
39
- import { a as chunkText, c as resolveTextChunkLimit, i as chunkMarkdownTextWithMode, o as chunkTextWithMode, r as chunkMarkdownText, s as resolveChunkMode, t as chunkByNewline } from "./chunk-Cy0Bj0F3.js";
40
- import { a as shouldHandleTextCommands, i as normalizeCommandBody, n as listChatCommands, r as listChatCommandsForConfig, t as parseTimeoutMs } from "./parse-timeout-D4UO8pY_.js";
29
+ import { a as resizeToJpeg, c as getFileExtension, d as kindFromMime, h as SsrFBlockedError, l as imageMimeFromFormat, m as mediaKindFromMime, n as getImageMetadata, o as detectMime, s as extensionForMime, u as isAudioFileName, v as isBlockedHostname, y as isPrivateIpAddress } from "./image-ops-flDr58qn.js";
30
+ import { n as listChannelPlugins, r as normalizeChannelId$1, t as getChannelPlugin } from "./plugins-C8FLxXbd.js";
31
+ import { a as resolveSessionTranscriptPathInDir, c as resolveStorePath$1, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions } from "./paths-BM1wivAU.js";
32
+ import { t as sanitizeToolResultImages } from "./tool-images-DJrhuxOM.js";
33
+ import { i as resolveApiKeyForProvider, n as getCustomProviderApiKey, o as resolveEnvApiKey, r as requireApiKey, s as resolveModelAuthMode, t as getApiKeyForModel } from "./model-auth-BCdRf282.js";
34
+ import { _ as throwIfAborted, b as initializeGlobalHookRunner, c as applyReplyThreading, d as shouldSuppressMessagingToolReplies, f as createReplyToModeFilterForChannel, g as normalizeTargetForProvider, h as normalizeChannelTargetInput, l as filterMessagingToolDuplicates, m as buildTargetResolverSignature, o as normalizeReplyPayloadsForDelivery, p as resolveReplyToMode, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as isRenderablePayload, v as parseReplyDirectives, y as getGlobalHookRunner } from "./deliver-D86kSZGn.js";
35
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-BJmQIQSw.js";
36
+ import { n as resolveMemorySearchConfig } from "./manager-CE4cPrH2.js";
37
+ import { c as pruneExpiredPending, d as writeJsonAtomic, l as readJsonFile, s as createAsyncLock, u as resolvePairingPaths } from "./loader-5Xm3Jxa-.js";
38
+ import { a as jsonResult, c as readStringArrayParam, i as imageResultFromFile, l as readStringParam, o as readNumberParam, r as imageResult } from "./common-c4ZysSLq.js";
39
+ import { a as chunkText, c as resolveTextChunkLimit, i as chunkMarkdownTextWithMode, o as chunkTextWithMode, r as chunkMarkdownText, s as resolveChunkMode, t as chunkByNewline } from "./chunk-isZGJq82.js";
40
+ import { a as shouldHandleTextCommands, i as normalizeCommandBody, n as listChatCommands, r as listChatCommandsForConfig, t as parseTimeoutMs } from "./parse-timeout-Bp5yQ1yW.js";
41
41
  import { n as formatTimeAgo } from "./format-relative-CBDSicUs.js";
42
- import { a as resolveMarkdownTableMode, c as loadWebMedia, d as readResponseWithLimit, f as fetchWithSsrFGuard, i as convertMarkdownTables, l as MediaFetchError, m as fetchWithTimeout, o as normalizePollInput, p as bindAbortRelay, s as getDefaultLocalRoots, t as getActiveWebListener, u as fetchRemoteMedia } from "./active-listener-gGCoq55D.js";
43
- import { n as ensureAnimaModelsJson, t as lookupContextTokens } from "./context-mdxDsO1v.js";
44
- import { a as resolveSubagentToolPolicy, c as addChannelAllowFromStoreEntry, d as upsertChannelPairingRequest, f as listPairingChannels, i as resolveGroupToolPolicy, l as readChannelAllowFromStore, n as isToolAllowedByPolicies, o as resolveChannelGroupPolicy, r as resolveEffectiveToolPolicy, s as resolveChannelGroupRequireMention, t as filterToolsByPolicy, u as removeChannelAllowFromStoreEntry } from "./pi-tools.policy-D2FusuQa.js";
42
+ import { a as resolveMarkdownTableMode, c as loadWebMedia, d as readResponseWithLimit, f as fetchWithSsrFGuard, i as convertMarkdownTables, l as MediaFetchError, m as fetchWithTimeout, o as normalizePollInput, p as bindAbortRelay, s as getDefaultLocalRoots, t as getActiveWebListener, u as fetchRemoteMedia } from "./active-listener-D78ohfOc.js";
43
+ import { n as ensureAnimaModelsJson, t as lookupContextTokens } from "./context-C22AMgsc.js";
44
+ import { a as resolveSubagentToolPolicy, c as addChannelAllowFromStoreEntry, d as upsertChannelPairingRequest, f as listPairingChannels, i as resolveGroupToolPolicy, l as readChannelAllowFromStore, n as isToolAllowedByPolicies, o as resolveChannelGroupPolicy, r as resolveEffectiveToolPolicy, s as resolveChannelGroupRequireMention, t as filterToolsByPolicy, u as removeChannelAllowFromStoreEntry } from "./pi-tools.policy-DyckzpRL.js";
45
45
  import { a as minSecurity, c as recordAllowlistUse, d as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as requiresExecApproval, n as addAllowlistEntry, u as resolveExecApprovals, v as buildSafeBinsShellCommand, y as buildSafeShellCommand } from "./exec-approvals-CpOeHRBL.js";
46
46
  import { t as resolveNodeIdFromCandidates } from "./node-match-Cbt-ZqUE.js";
47
47
  import { t as formatDurationCompact$1 } from "./format-duration-BoQ6ac8g.js";
48
- import { c as derivePromptTokens, d as normalizeUsage, l as deriveSessionTotalTokens, n as loadCostUsageSummary, o as extractToolCallNames, r as loadSessionCostSummary, s as hasToolCall, u as hasNonzeroUsage } from "./session-cost-usage-DnxtnK1E.js";
48
+ import { c as derivePromptTokens, d as normalizeUsage, l as deriveSessionTotalTokens, n as loadCostUsageSummary, o as extractToolCallNames, r as loadSessionCostSummary, s as hasToolCall, u as hasNonzeroUsage } from "./session-cost-usage-BNvno_kS.js";
49
49
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BGCAJt5K.js";
50
50
  import { d as resolveGatewaySystemdServiceName, l as resolveGatewayLaunchAgentLabel } from "./constants-Dt8s_a7s.js";
51
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-3CI4vt1h.js";
52
- import { t as createBrowserRouteDispatcher } from "./dispatcher-BQQugU-7.js";
51
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DxuB_IUw.js";
52
+ import { t as createBrowserRouteDispatcher } from "./dispatcher-DwlzWX2u.js";
53
53
  import { t as parseAbsoluteTimeMs } from "./parse-DLMgOMDI.js";
54
54
  import { t as TOKEN_PATH } from "./noxsoft-auth-CgCk5707.js";
55
- import { a as logoutWeb, c as readWebSelfId, f as webAuthExists, i as logWebSelfId, n as getWebAuthAgeMs } from "./auth-store-BEfSfCbW.js";
55
+ import { a as logoutWeb, c as readWebSelfId, f as webAuthExists, i as logWebSelfId, n as getWebAuthAgeMs } from "./auth-store-ChpmVcla.js";
56
56
  import { createRequire } from "node:module";
57
57
  import { spawn, spawnSync } from "node:child_process";
58
58
  import process$1 from "node:process";
@@ -4594,7 +4594,7 @@ async function loadModelCatalog(params) {
4594
4594
  });
4595
4595
  try {
4596
4596
  await ensureAnimaModelsJson(params?.config ?? loadConfig());
4597
- await (await import("./pi-auth-json-DkYqdjrV.js")).ensurePiAuthJsonFromAuthProfiles(resolveAnimaAgentDir());
4597
+ await (await import("./pi-auth-json-qHO_AF3h.js")).ensurePiAuthJsonFromAuthProfiles(resolveAnimaAgentDir());
4598
4598
  const piSdk = await importPiSdk();
4599
4599
  const agentDir = resolveAnimaAgentDir();
4600
4600
  const { join } = await import("node:path");
@@ -6706,7 +6706,7 @@ async function createModelSelectionState(params) {
6706
6706
  }
6707
6707
  }
6708
6708
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
6709
- const { ensureAuthProfileStore } = await import("./auth-profiles-Brxz2ojJ.js").then((n) => n.t);
6709
+ const { ensureAuthProfileStore } = await import("./auth-profiles-fjGcjhZ4.js").then((n) => n.t);
6710
6710
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
6711
6711
  const providerKey = normalizeProviderId(provider);
6712
6712
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -16028,7 +16028,7 @@ async function routeReply(params) {
16028
16028
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
16029
16029
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
16030
16030
  try {
16031
- const { deliverOutboundPayloads } = await import("./deliver-C1L5nO0K.js").then((n) => n.n);
16031
+ const { deliverOutboundPayloads } = await import("./deliver-D86kSZGn.js").then((n) => n.n);
16032
16032
  return {
16033
16033
  ok: true,
16034
16034
  messageId: (await deliverOutboundPayloads({
@@ -19714,6 +19714,63 @@ function orderCandidatesByPreference(params) {
19714
19714
 
19715
19715
  //#endregion
19716
19716
  //#region src/agents/model-fallback.ts
19717
+ const IMPLICIT_CODE_MODEL_FALLBACKS = [{
19718
+ whenProvider: "anthropic",
19719
+ provider: "openai-codex",
19720
+ model: "gpt-5.2-codex"
19721
+ }, {
19722
+ whenProvider: "anthropic",
19723
+ provider: "ollama",
19724
+ model: "qwen3-coder:latest"
19725
+ }];
19726
+ function isLocalBaseUrl(baseUrl) {
19727
+ const raw = baseUrl?.trim();
19728
+ if (!raw) return false;
19729
+ try {
19730
+ const host = new URL(raw).hostname.toLowerCase();
19731
+ return host === "localhost" || host === "127.0.0.1" || host === "0.0.0.0" || host === "::1" || host.endsWith(".local");
19732
+ } catch {
19733
+ return false;
19734
+ }
19735
+ }
19736
+ function isOpenAICompatibleApi(api) {
19737
+ const normalized = api?.trim();
19738
+ return normalized === "openai-completions" || normalized === "openai-responses";
19739
+ }
19740
+ function scoreLocalFallback(params) {
19741
+ const haystack = `${params.provider} ${params.model} ${params.name ?? ""}`.toLowerCase();
19742
+ if (haystack.includes("qwen3") && haystack.includes("coder")) return 100;
19743
+ if (haystack.includes("qwen") && haystack.includes("coder")) return 90;
19744
+ if (haystack.includes("noxsoft-tool-coder")) return 80;
19745
+ if (haystack.includes("tool-coder")) return 70;
19746
+ if (haystack.includes("coder")) return 60;
19747
+ if (haystack.includes("gpt-oss")) return 50;
19748
+ return 10;
19749
+ }
19750
+ function resolveImplicitLocalOpenAIFallbacks(cfg) {
19751
+ const providers = cfg?.models?.providers ?? {};
19752
+ const candidates = [];
19753
+ for (const [provider, entry] of Object.entries(providers)) {
19754
+ if (!isLocalBaseUrl(entry?.baseUrl) || !isOpenAICompatibleApi(entry?.api)) continue;
19755
+ for (const model of entry?.models ?? []) {
19756
+ const id = model?.id?.trim();
19757
+ if (!id) continue;
19758
+ candidates.push({
19759
+ provider,
19760
+ model: id,
19761
+ score: scoreLocalFallback({
19762
+ provider,
19763
+ model: id,
19764
+ name: model?.name
19765
+ })
19766
+ });
19767
+ }
19768
+ }
19769
+ return candidates.toSorted((a, b) => b.score - a.score || a.provider.localeCompare(b.provider) || a.model.localeCompare(b.model)).map(({ provider, model }) => ({
19770
+ provider,
19771
+ model
19772
+ }));
19773
+ }
19717
19774
  /**
19718
19775
  * Fallback abort check. Only treats explicit AbortError names as user aborts.
19719
19776
  * Message-based checks (e.g., "aborted") can mask timeouts and skip fallback.
@@ -19807,6 +19864,14 @@ function resolveFallbackCandidates(params) {
19807
19864
  if (!resolved) continue;
19808
19865
  addCandidate(resolved.ref, true);
19809
19866
  }
19867
+ if (params.fallbacksOverride === void 0) for (const implicit of IMPLICIT_CODE_MODEL_FALLBACKS) {
19868
+ if (normalizedPrimary.provider !== implicit.whenProvider) continue;
19869
+ addCandidate({
19870
+ provider: implicit.provider,
19871
+ model: implicit.model
19872
+ }, false);
19873
+ if (implicit.provider === "openai-codex") for (const localFallback of resolveImplicitLocalOpenAIFallbacks(params.cfg)) addCandidate(localFallback, false);
19874
+ }
19810
19875
  if (params.fallbacksOverride === void 0 && primary?.provider && primary.model) addCandidate({
19811
19876
  provider: primary.provider,
19812
19877
  model: primary.model
@@ -31042,7 +31107,7 @@ async function deliverSessionMaintenanceWarning(params) {
31042
31107
  return;
31043
31108
  }
31044
31109
  try {
31045
- const { deliverOutboundPayloads } = await import("./deliver-C1L5nO0K.js").then((n) => n.n);
31110
+ const { deliverOutboundPayloads } = await import("./deliver-D86kSZGn.js").then((n) => n.n);
31046
31111
  await deliverOutboundPayloads({
31047
31112
  cfg: params.cfg,
31048
31113
  channel,
@@ -31603,6 +31668,30 @@ function createTypingController(params) {
31603
31668
 
31604
31669
  //#endregion
31605
31670
  //#region src/auto-reply/reply/get-reply.ts
31671
+ /** Surfaces that represent real-time conversation (chat, DMs, voice). */
31672
+ const CONVERSATIONAL_CHAT_TYPES = new Set([
31673
+ "private",
31674
+ "group",
31675
+ "supergroup",
31676
+ "channel",
31677
+ "dm",
31678
+ "chat"
31679
+ ]);
31680
+ /**
31681
+ * Returns true when the inbound message originates from a real-time
31682
+ * conversational surface (NoxSoft chat, Telegram, WhatsApp, etc.)
31683
+ * rather than a programmatic/execution context (gateway API, heartbeat, CLI).
31684
+ */
31685
+ function isConversationalChannel(ctx) {
31686
+ if (ctx.CommandSource === "native") return false;
31687
+ const provider = ctx.Provider?.toLowerCase() ?? "";
31688
+ if (provider === "telegram" || provider === "whatsapp" || provider === "noxsoft") return true;
31689
+ const chatType = ctx.ChatType?.toLowerCase() ?? "";
31690
+ if (CONVERSATIONAL_CHAT_TYPES.has(chatType)) return true;
31691
+ const channel = typeof ctx.OriginatingChannel === "string" ? ctx.OriginatingChannel : "";
31692
+ if (channel && channel !== "gateway" && channel !== "cli") return true;
31693
+ return false;
31694
+ }
31606
31695
  function mergeSkillFilters(channelFilter, agentFilter) {
31607
31696
  const normalize = (list) => {
31608
31697
  if (!Array.isArray(list)) return;
@@ -31651,6 +31740,18 @@ async function getReplyFromConfig(ctx, opts, configOverride) {
31651
31740
  hasResolvedHeartbeatModelOverride = true;
31652
31741
  }
31653
31742
  }
31743
+ if (!opts?.isHeartbeat && !hasResolvedHeartbeatModelOverride && isConversationalChannel(ctx)) {
31744
+ const convRaw = agentCfg?.conversationalModel?.trim() ?? "";
31745
+ const convRef = convRaw ? resolveModelRefFromString({
31746
+ raw: convRaw,
31747
+ defaultProvider,
31748
+ aliasIndex
31749
+ }) : null;
31750
+ if (convRef) {
31751
+ provider = convRef.ref.provider;
31752
+ model = convRef.ref.model;
31753
+ }
31754
+ }
31654
31755
  const workspaceDir = (await ensureAgentWorkspace({
31655
31756
  dir: resolveAgentWorkspaceDir(cfg, agentId) ?? DEFAULT_AGENT_WORKSPACE_DIR,
31656
31757
  ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv
@@ -32479,7 +32580,7 @@ function createWhatsAppLoginTool() {
32479
32580
  force: Type.Optional(Type.Boolean())
32480
32581
  }),
32481
32582
  execute: async (_toolCallId, args) => {
32482
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BjpDVBJE.js");
32583
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-updBsqHf.js");
32483
32584
  if ((args?.action ?? "start") === "wait") {
32484
32585
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
32485
32586
  return {
@@ -32654,23 +32755,23 @@ let webLoginQrPromise = null;
32654
32755
  let webChannelPromise = null;
32655
32756
  let whatsappActionsPromise = null;
32656
32757
  function loadWebOutbound() {
32657
- webOutboundPromise ??= import("./outbound-C577aWZp.js").then((n) => n.t);
32758
+ webOutboundPromise ??= import("./outbound-BpcyR1eA.js").then((n) => n.t);
32658
32759
  return webOutboundPromise;
32659
32760
  }
32660
32761
  function loadWebLogin() {
32661
- webLoginPromise ??= import("./login-MzVPMRxL.js").then((n) => n.n);
32762
+ webLoginPromise ??= import("./login-CSaeXIuW.js").then((n) => n.n);
32662
32763
  return webLoginPromise;
32663
32764
  }
32664
32765
  function loadWebLoginQr() {
32665
- webLoginQrPromise ??= import("./login-qr-BjpDVBJE.js");
32766
+ webLoginQrPromise ??= import("./login-qr-updBsqHf.js");
32666
32767
  return webLoginQrPromise;
32667
32768
  }
32668
32769
  function loadWebChannel() {
32669
- webChannelPromise ??= import("./web-BDig9tCy.js");
32770
+ webChannelPromise ??= import("./web-Br9HCEvC.js");
32670
32771
  return webChannelPromise;
32671
32772
  }
32672
32773
  function loadWhatsAppActions() {
32673
- whatsappActionsPromise ??= import("./whatsapp-actions-C0tlEdLy.js");
32774
+ whatsappActionsPromise ??= import("./whatsapp-actions--eONuB4M.js");
32674
32775
  return whatsappActionsPromise;
32675
32776
  }
32676
32777
  function createPluginRuntime() {
@@ -35039,10 +35140,80 @@ async function runGeminiDirectAgent(params) {
35039
35140
  };
35040
35141
  }
35041
35142
 
35143
+ //#endregion
35144
+ //#region src/agents/local-model-installer.ts
35145
+ const DEFAULT_LOCAL_OLLAMA_MODEL = "qwen3-coder:latest";
35146
+ const installPromises = /* @__PURE__ */ new Map();
35147
+ function createInstallerError(message, cause) {
35148
+ const err = new Error(message);
35149
+ if (cause !== void 0) err.cause = cause;
35150
+ return err;
35151
+ }
35152
+ async function isOllamaModelInstalled(model = DEFAULT_LOCAL_OLLAMA_MODEL) {
35153
+ try {
35154
+ await runExec("ollama", ["show", model], 1e4);
35155
+ return true;
35156
+ } catch {
35157
+ return false;
35158
+ }
35159
+ }
35160
+ async function ensureLocalOllamaModelInstalled(params) {
35161
+ const model = params?.model?.trim() || DEFAULT_LOCAL_OLLAMA_MODEL;
35162
+ const timeoutMs = params?.timeoutMs ?? 72e5;
35163
+ const runtime = params?.runtime ?? createNonExitingRuntime();
35164
+ const existing = installPromises.get(model);
35165
+ if (existing) return await existing;
35166
+ const promise = (async () => {
35167
+ try {
35168
+ await runExec("ollama", ["list"], 1e4);
35169
+ } catch (error) {
35170
+ throw createInstallerError("Ollama is required but no local Ollama server is reachable. Start Ollama and retry.", error);
35171
+ }
35172
+ if (await isOllamaModelInstalled(model)) return {
35173
+ installed: true,
35174
+ pulled: false
35175
+ };
35176
+ runtime.log(`Installing local model via Ollama: ${model}`);
35177
+ const result = await runCommandWithTimeout([
35178
+ "ollama",
35179
+ "pull",
35180
+ model
35181
+ ], { timeoutMs });
35182
+ if (result.code !== 0) {
35183
+ const detail = (result.stderr || result.stdout).trim();
35184
+ throw createInstallerError(`Failed to install local Ollama model "${model}".${detail ? ` ${detail}` : ""}`);
35185
+ }
35186
+ if (!await isOllamaModelInstalled(model)) throw createInstallerError(`Ollama reported success, but model "${model}" is still missing.`);
35187
+ runtime.log(`Local model ready: ${model}`);
35188
+ return {
35189
+ installed: true,
35190
+ pulled: true
35191
+ };
35192
+ })();
35193
+ installPromises.set(model, promise);
35194
+ try {
35195
+ return await promise;
35196
+ } finally {
35197
+ installPromises.delete(model);
35198
+ }
35199
+ }
35200
+
35042
35201
  //#endregion
35043
35202
  //#region src/agents/openai-direct-runner.ts
35044
35203
  const log = createSubsystemLogger("agent/openai-direct");
35045
35204
  const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
35205
+ const DEFAULT_PROVIDER_BASE_URLS = {
35206
+ openai: DEFAULT_OPENAI_BASE_URL,
35207
+ minimax: "https://api.minimax.io/v1",
35208
+ ollama: "http://127.0.0.1:11434/v1",
35209
+ lmstudio: "http://127.0.0.1:1234/v1"
35210
+ };
35211
+ const PROVIDER_API_KEY_HINTS = {
35212
+ openai: "OPENAI_API_KEY",
35213
+ minimax: "MINIMAX_API_KEY",
35214
+ ollama: "OLLAMA_API_KEY",
35215
+ lmstudio: "LMSTUDIO_API_KEY"
35216
+ };
35046
35217
  const MODEL_MAP = {
35047
35218
  "gpt-5.4": "gpt-5.4",
35048
35219
  "gpt-5.2": "gpt-5.2",
@@ -35080,6 +35251,10 @@ function resolveModel(model) {
35080
35251
  const key = (model ?? "default").trim().toLowerCase() || "default";
35081
35252
  return MODEL_MAP[key] ?? key;
35082
35253
  }
35254
+ function isToolUnsupportedError(body) {
35255
+ const normalized = body.toLowerCase();
35256
+ return normalized.includes("does not support tools") || normalized.includes("tool is not supported");
35257
+ }
35083
35258
  /**
35084
35259
  * Clean a JSON Schema for OpenAI's function calling.
35085
35260
  * OpenAI is stricter than most — no unsupported keywords.
@@ -35106,8 +35281,10 @@ function cleanSchemaForOpenAI(schema) {
35106
35281
  */
35107
35282
  async function runOpenAIDirectAgent(params) {
35108
35283
  const started = Date.now();
35284
+ const provider = (params.provider ?? "openai").trim() || "openai";
35109
35285
  const resolvedModel = resolveModel(params.model);
35110
- log.info(`direct api exec: model=${resolvedModel} promptChars=${params.prompt.length}`);
35286
+ if (provider === "ollama" && resolvedModel === DEFAULT_LOCAL_OLLAMA_MODEL) await ensureLocalOllamaModelInstalled({ model: resolvedModel });
35287
+ log.info(`direct api exec: provider=${provider} model=${resolvedModel} promptChars=${params.prompt.length}`);
35111
35288
  const workspaceDir = resolveRunWorkspaceDir({
35112
35289
  workspaceDir: params.workspaceDir,
35113
35290
  sessionKey: params.sessionKey,
@@ -35118,7 +35295,7 @@ async function runOpenAIDirectAgent(params) {
35118
35295
  config: params.config,
35119
35296
  workspaceDir,
35120
35297
  sessionKey: params.sessionKey,
35121
- modelProvider: "openai",
35298
+ modelProvider: provider,
35122
35299
  modelId: resolvedModel
35123
35300
  });
35124
35301
  const openaiTools = executableTools.map((t) => ({
@@ -35164,7 +35341,7 @@ async function runOpenAIDirectAgent(params) {
35164
35341
  docsPath: docsPath ?? void 0,
35165
35342
  tools: executableTools,
35166
35343
  contextFiles,
35167
- modelDisplay: `openai/${resolvedModel}`,
35344
+ modelDisplay: `${provider}/${resolvedModel}`,
35168
35345
  agentId: sessionAgentId
35169
35346
  });
35170
35347
  let history = await loadSessionHistory(params.sessionFile);
@@ -35188,7 +35365,8 @@ async function runOpenAIDirectAgent(params) {
35188
35365
  let isDone = false;
35189
35366
  let loopCount = 0;
35190
35367
  const maxLoops = 20;
35191
- const baseUrl = params.config?.models?.providers?.openai?.baseUrl?.trim() || DEFAULT_OPENAI_BASE_URL;
35368
+ let toolUseEnabled = openaiTools.length > 0;
35369
+ const baseUrl = params.config?.models?.providers?.[provider]?.baseUrl?.trim() || params.config?.models?.providers?.openai?.baseUrl?.trim() || DEFAULT_PROVIDER_BASE_URLS[provider] || DEFAULT_OPENAI_BASE_URL;
35192
35370
  while (!isDone && loopCount < maxLoops) {
35193
35371
  loopCount++;
35194
35372
  const requestBody = {
@@ -35198,7 +35376,7 @@ async function runOpenAIDirectAgent(params) {
35198
35376
  temperature: 1,
35199
35377
  stream: true
35200
35378
  };
35201
- if (openaiTools.length > 0) {
35379
+ if (toolUseEnabled && openaiTools.length > 0) {
35202
35380
  requestBody.tools = openaiTools;
35203
35381
  requestBody.tool_choice = "auto";
35204
35382
  }
@@ -35210,8 +35388,8 @@ async function runOpenAIDirectAgent(params) {
35210
35388
  method: "POST",
35211
35389
  headers: {
35212
35390
  "Content-Type": "application/json",
35213
- Authorization: `Bearer ${params.apiKey}`,
35214
- "User-Agent": `anima/7.0.0 (openai-direct-runner; ${os.platform()})`
35391
+ "User-Agent": `anima/7.0.0 (openai-direct-runner; ${os.platform()})`,
35392
+ ...params.apiKey?.trim() ? { Authorization: `Bearer ${params.apiKey}` } : {}
35215
35393
  },
35216
35394
  body: JSON.stringify(requestBody),
35217
35395
  signal: controller.signal
@@ -35219,11 +35397,20 @@ async function runOpenAIDirectAgent(params) {
35219
35397
  clearTimeout(timeoutHandle);
35220
35398
  if (!response.ok) {
35221
35399
  const body = await response.text().catch(() => "");
35400
+ if (response.status === 400 && toolUseEnabled && isToolUnsupportedError(body)) {
35401
+ log.warn("openai-compatible provider rejected tools; retrying without tools", {
35402
+ provider,
35403
+ model: resolvedModel
35404
+ });
35405
+ toolUseEnabled = false;
35406
+ continue;
35407
+ }
35222
35408
  const isAuth = response.status === 401 || response.status === 403;
35223
35409
  const isRateLimit = response.status === 429;
35224
35410
  const rateHint = isRateLimit ? " — rate limit hit, will retry next heartbeat." : "";
35225
- const authHint = isAuth ? "API key may be invalid. Check OPENAI_API_KEY environment variable." : "";
35226
- log.error(`openai api error: HTTP ${response.status}${authHint}${rateHint}`, {
35411
+ const apiKeyHint = PROVIDER_API_KEY_HINTS[provider] ?? "API key";
35412
+ const authHint = isAuth ? ` API key may be invalid. Check ${apiKeyHint}.` : "";
35413
+ log.error(`${provider} api error: HTTP ${response.status}${authHint}${rateHint}`, {
35227
35414
  status: response.status,
35228
35415
  body: body.slice(0, 500)
35229
35416
  });
@@ -35351,7 +35538,8 @@ async function runOpenAIDirectAgent(params) {
35351
35538
  log.info(`openai api complete: ${durationMs}ms`, {
35352
35539
  inputTokens: totalInputTokens,
35353
35540
  outputTokens: totalOutputTokens,
35354
- model: resolvedModel
35541
+ model: resolvedModel,
35542
+ provider
35355
35543
  });
35356
35544
  return {
35357
35545
  status: "completed",
@@ -35361,7 +35549,7 @@ async function runOpenAIDirectAgent(params) {
35361
35549
  durationMs,
35362
35550
  agentMeta: {
35363
35551
  model: resolvedModel,
35364
- provider: "openai",
35552
+ provider,
35365
35553
  usage: {
35366
35554
  input: totalInputTokens,
35367
35555
  output: totalOutputTokens
@@ -35393,10 +35581,22 @@ async function emitAgentEvent(params, stream, data) {
35393
35581
  data
35394
35582
  });
35395
35583
  }
35584
+ function resolveProviderConfig(provider, config) {
35585
+ const providers = config?.models?.providers ?? {};
35586
+ const direct = providers[provider];
35587
+ if (direct) return direct;
35588
+ const normalized = normalizeProviderId(provider);
35589
+ return Object.entries(providers).find(([key]) => normalizeProviderId(key) === normalized)?.[1];
35590
+ }
35591
+ function isOpenAICompatibleProviderConfig(entry) {
35592
+ const api = entry?.api?.trim();
35593
+ return api === "openai-completions" || api === "openai-responses";
35594
+ }
35396
35595
  function resolveDirectAuthProvider(provider) {
35397
35596
  if (provider === "anthropic" || provider === "claude") return "anthropic";
35398
35597
  if (provider === "google" || provider === "gemini") return "google";
35399
35598
  if (provider === "openai") return "openai";
35599
+ if (provider === "minimax") return "minimax";
35400
35600
  return null;
35401
35601
  }
35402
35602
  function resolveProfileFailureReason(result) {
@@ -35488,7 +35688,7 @@ async function runDirectWithProfileFallback(params) {
35488
35688
  let lastResult = null;
35489
35689
  for (;;) {
35490
35690
  const auth = await resolveDirectProviderAuth({
35491
- provider: params.directProvider,
35691
+ provider: params.authProvider,
35492
35692
  config: params.config,
35493
35693
  agentDir: params.agentDir,
35494
35694
  preferredProfile,
@@ -35500,7 +35700,7 @@ async function runDirectWithProfileFallback(params) {
35500
35700
  meta: {
35501
35701
  durationMs: 0,
35502
35702
  error: {
35503
- message: `Auth fallback loop detected for ${params.directProvider}.`,
35703
+ message: `Auth fallback loop detected for ${params.authProvider}.`,
35504
35704
  kind: "unknown"
35505
35705
  }
35506
35706
  }
@@ -35523,11 +35723,12 @@ async function runDirectWithProfileFallback(params) {
35523
35723
  onPartialReply: params.emitPartial,
35524
35724
  onAssistantMessageStart: params.onAssistantMessageStart
35525
35725
  };
35526
- const result = params.directProvider === "anthropic" ? await runAnthropicDirectAgent({
35726
+ const result = params.runnerKind === "anthropic" ? await runAnthropicDirectAgent({
35527
35727
  ...directRunParams,
35528
35728
  token: auth.apiKey ?? ""
35529
- }) : params.directProvider === "openai" ? await runOpenAIDirectAgent({
35729
+ }) : params.runnerKind === "openai-compatible" ? await runOpenAIDirectAgent({
35530
35730
  ...directRunParams,
35731
+ provider: params.openAIProvider ?? params.authProvider,
35531
35732
  apiKey: auth.apiKey ?? ""
35532
35733
  }) : await runGeminiDirectAgent({
35533
35734
  ...directRunParams,
@@ -35542,7 +35743,7 @@ async function runDirectWithProfileFallback(params) {
35542
35743
  });
35543
35744
  await markAuthProfileGood({
35544
35745
  store,
35545
- provider: params.directProvider,
35746
+ provider: params.authProvider,
35546
35747
  profileId: auth.profileId,
35547
35748
  agentDir: params.agentDir
35548
35749
  });
@@ -35564,22 +35765,32 @@ async function runDirectWithProfileFallback(params) {
35564
35765
  }
35565
35766
  async function resolveDirectStrategy(provider, config, agentDir) {
35566
35767
  const directProvider = resolveDirectAuthProvider(provider);
35567
- if (!directProvider) return null;
35568
- try {
35768
+ if (directProvider) try {
35569
35769
  const auth = await resolveDirectProviderAuth({
35570
35770
  provider: directProvider,
35571
35771
  config,
35572
35772
  agentDir,
35573
35773
  store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
35574
35774
  });
35575
- if (auth.apiKey) {
35775
+ if (auth.apiKey !== void 0) {
35576
35776
  if (directProvider === "anthropic" && auth.apiKey.startsWith("sk-ant-oat01-")) return null;
35577
35777
  return {
35578
- kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" ? "openai-direct" : "anthropic-direct",
35778
+ kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" || directProvider === "minimax" ? "openai-direct" : "anthropic-direct",
35579
35779
  provider
35580
35780
  };
35581
35781
  }
35582
35782
  } catch {}
35783
+ if (isOpenAICompatibleProviderConfig(resolveProviderConfig(provider, config))) try {
35784
+ if ((await resolveApiKeyForProvider({
35785
+ provider,
35786
+ cfg: config,
35787
+ agentDir,
35788
+ store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
35789
+ })).apiKey !== void 0) return {
35790
+ kind: "openai-direct",
35791
+ provider
35792
+ };
35793
+ } catch {}
35583
35794
  return null;
35584
35795
  }
35585
35796
  async function resolveNoxSoftRunnerStrategy(params) {
@@ -35610,11 +35821,33 @@ async function runNoxSoftEmbeddedAgent(params) {
35610
35821
  await params.onPartialReply?.(payload);
35611
35822
  await emitAgentEvent(params, "assistant", { text: payload.text });
35612
35823
  };
35613
- const strategy = await resolveNoxSoftRunnerStrategy({
35614
- provider: params.provider,
35615
- config: params.config,
35616
- agentDir: params.agentDir
35617
- });
35824
+ let strategy;
35825
+ try {
35826
+ strategy = await resolveNoxSoftRunnerStrategy({
35827
+ provider: params.provider,
35828
+ config: params.config,
35829
+ agentDir: params.agentDir
35830
+ });
35831
+ } catch (error) {
35832
+ const requestedProvider = normalizedRequestedRef?.provider ?? provider;
35833
+ const requestedModel = normalizedRequestedRef?.model;
35834
+ const failover = coerceToFailoverError(error, {
35835
+ provider: requestedProvider,
35836
+ model: requestedModel
35837
+ }) ?? new FailoverError(error instanceof Error ? error.message : String(error), {
35838
+ reason: classifyFailoverReason(error instanceof Error ? error.message : String(error)) ?? "unknown",
35839
+ provider: requestedProvider,
35840
+ model: requestedModel,
35841
+ cause: error instanceof Error ? error : void 0
35842
+ });
35843
+ await emitAgentEvent(params, "lifecycle", {
35844
+ phase: "error",
35845
+ startedAt,
35846
+ endedAt: Date.now(),
35847
+ error: failover.message
35848
+ });
35849
+ throw failover;
35850
+ }
35618
35851
  if (strategy.kind === "anthropic-direct") {
35619
35852
  await emitAgentEvent(params, "lifecycle", {
35620
35853
  phase: "start",
@@ -35624,7 +35857,8 @@ async function runNoxSoftEmbeddedAgent(params) {
35624
35857
  const result = normalizeRunnerResult({
35625
35858
  result: await runDirectWithProfileFallback({
35626
35859
  ...params,
35627
- directProvider: "anthropic",
35860
+ authProvider: "anthropic",
35861
+ runnerKind: "anthropic",
35628
35862
  timeoutMs,
35629
35863
  runId,
35630
35864
  emitPartial
@@ -35671,7 +35905,8 @@ async function runNoxSoftEmbeddedAgent(params) {
35671
35905
  const result = normalizeRunnerResult({
35672
35906
  result: await runDirectWithProfileFallback({
35673
35907
  ...params,
35674
- directProvider: "google",
35908
+ authProvider: "google",
35909
+ runnerKind: "google",
35675
35910
  timeoutMs,
35676
35911
  runId,
35677
35912
  emitPartial
@@ -35718,7 +35953,9 @@ async function runNoxSoftEmbeddedAgent(params) {
35718
35953
  const result = normalizeRunnerResult({
35719
35954
  result: await runDirectWithProfileFallback({
35720
35955
  ...params,
35721
- directProvider: "openai",
35956
+ authProvider: provider === "minimax" ? "minimax" : provider === "openai" ? "openai" : provider,
35957
+ runnerKind: "openai-compatible",
35958
+ openAIProvider: provider,
35722
35959
  timeoutMs,
35723
35960
  runId,
35724
35961
  emitPartial
@@ -36963,4 +37200,4 @@ function initSubagentRegistry() {
36963
37200
  }
36964
37201
 
36965
37202
  //#endregion
36966
- export { ensureOutboundSessionEntry as $, extractImageContentFromSource as $n, loadProviderStore as $t, getTotalQueueSize as A, registerSkillsChangeListener as An, CHANNEL_TARGETS_DESCRIPTION as At, loadCombinedSessionStoreForGateway as B, installUnhandledRejectionHandler as Bn, AGENT_LANE_SUBAGENT as Bt, createDedupeCache as C, renamePairedNode as Cn, resolveMessagePrefix as Cr, normalizeCronJobPatch as Ct, setCliSessionId as D, generatePairingToken as Dn, getAgentRunContext as Dr, normalizePayloadToSystemText as Dt, getCliSessionId as E, verifyNodeToken as En, emitAgentEvent$1 as Er, normalizeOptionalText as Et, readLatestAssistantReply as F, enqueueSystemEvent as Fn, isExternalHookSession as Ft, archiveFileOnDisk as G, DEFAULT_INPUT_IMAGE_MAX_BYTES as Gn, isGatewaySigusr1RestartExternallyAllowed as Gt, pruneLegacyStoreKeys as H, DEFAULT_INPUT_FILE_MAX_BYTES as Hn, consumeGatewaySigusr1RestartAuthorization as Ht, resolveAnnounceTargetFromKey as I, isSystemEventContextChanged as In, applyBrowserProxyPaths as It, readSessionMessages as J, DEFAULT_INPUT_PDF_MAX_PAGES as Jn, setGatewaySigusr1RestartPolicy as Jt, archiveSessionTranscripts as K, DEFAULT_INPUT_IMAGE_MIMES as Kn, markGatewaySigusr1RestartHandled as Kt, canonicalizeSpawnedByForAgent as L, peekSystemEventEntries as Ln, persistBrowserProxyFiles as Lt, setCommandLaneConcurrency as M, applyModelOverrideToSessionEntry as Mn, buildSafeExternalPrompt as Mt, waitForActiveTasks as N, applyVerboseOverride as Nn, detectSuspiciousPatterns as Nt, getActiveTaskCount as O, verifyPairingToken as On, onAgentEvent as Or, normalizeRequiredName as Ot, createAnimaTools as P, parseVerboseOverride as Pn, getHookType as Pt, runMessageAction as Q, extractFileContentFromSource as Qn, loadProviderUsageSummary as Qt, listAgentsForGateway as R, peekSystemEvents as Rn, extractShortModelName as Rt, getTotalPendingReplies as S, rejectNodePairing as Sn, resolveIdentityNamePrefix as Sr, normalizeCronJobCreate as St, BARE_SESSION_RESET_PROMPT as T, updatePairedNodeMetadata as Tn, clearAgentRunContext as Tr, normalizeOptionalAgentId as Tt, resolveGatewaySessionStoreTarget as U, DEFAULT_INPUT_FILE_MAX_CHARS as Un, deferGatewayRestartUntilIdle as Ut, loadSessionEntry as V, registerUnhandledRejectionHandler as Vn, CommandLane as Vt, resolveSessionModelRef as W, DEFAULT_INPUT_FILE_MIMES as Wn, emitGatewayRestart as Wt, resolveSessionTranscriptCandidates as X, DEFAULT_INPUT_PDF_MIN_TEXT_CHARS as Xn, normalizeGroupActivation as Xt, readSessionPreviewItemsFromTranscript as Y, DEFAULT_INPUT_PDF_MAX_PIXELS as Yn, setPreRestartDeferralCheck as Yt, stripEnvelopeFromMessages as Z, DEFAULT_INPUT_TIMEOUT_MS as Zn, parseActivationCommand as Zt, recordChannelActivity as _, refreshRemoteNodeBins as _n, buildMentionRegexes as _r, formatRestartSentinelMessage as _t, runSubagentAnnounceFlow as a, buildChannelSummary as an, stopDiagnosticHeartbeat as ar, resolveHeartbeatDeliveryTarget as at, dispatchInboundMessage as b, approveNodePairing as bn, resolveEffectiveMessagesConfig as br, trimLogTail as bt, waitForEmbeddedPiRunEnd as c, resolveCommitHash as cn, resolveInboundDebounceMs as cr, resolveSessionDeliveryTarget as ct, buildDefaultToolPolicyPipelineSteps as d, normalizeSendPolicy as dn, formatZonedTimestamp as dr, resolveMessageChannelSelection as dt, maskApiKey as en, normalizeMimeList as er, resolveOutboundSessionRoute as et, sniffMimeFromBase64 as f, resolveSendPolicy as fn, hasControlCommand as fr, CHANNEL_MESSAGE_ACTION_NAMES as ft, getChannelActivity as g, refreshRemoteBinsForConnectedNodes as gn, CURRENT_MESSAGE_MARKER as gr, formatDoctorNonInteractiveHint as gt, buildPairingReply as h, recordRemoteNodeInfo as hn, stopSubagentsForRequester as hr, consumeRestartSentinel as ht, subagent_registry_exports as i, resolveUsageProviderId as in, startDiagnosticHeartbeat as ir, resolvePreferredAccountId as it, resetAllLanes as j, clearSessionAuthProfileOverride as jn, CHANNEL_TARGET_DESCRIPTION as jt, getQueueSize as k, getSkillsSnapshotVersion as kn, registerAgentRunContext as kr, migrateLegacyCronPayload as kt, runNoxSoftEmbeddedAgent as l, requestHeartbeatNow as ln, formatInboundEnvelope as lr, formatTargetDisplay as lt, loadAnimaPlugins as m, primeRemoteSkillsCache as mn, isAbortTrigger as mr, resolveWorkingModeModelSelection as mt, initSubagentRegistry as n, formatUsageReportLines as nn, finalizeInboundContext as nr, resolveAgentRoute as nt, clearSessionQueues as o, buildChannelAccountSnapshot as on, isDiagnosticsEnabled as or, resolveHeartbeatSenderContext as ot, getPluginToolMeta as p, getRemoteSkillEligibility as pn, shouldComputeCommandAuthorized as pr, runWithModelFallback as pt, capArrayByJsonBytes as q, DEFAULT_INPUT_MAX_REDIRECTS as qn, scheduleGatewaySigusr1Restart as qt, listDescendantRunsForRequester as r, formatUsageWindowSummary as rn, resolveAgentTimeoutMs as rr, buildChannelAccountBindings as rt, abortEmbeddedPiRun as s, formatChannelAllowFrom as sn, createInboundDebouncer as sr, resolveOutboundTarget as st, countActiveDescendantRuns as t, saveProviderStore as tn, estimateBase64DecodedBytes as tr, buildAgentSessionKey as tt, applyToolPolicyPipeline as u, setHeartbeatWakeHandler as un, resolveEnvelopeFormatOptions as ur, resetDirectoryCache as ut, shouldAckReactionForWhatsApp as v, removeRemoteNodeInfo as vn, normalizeMentionText as vr, readRestartSentinel as vt, getReplyFromConfig as w, requestNodePairing as wn, describeFailoverError as wr, inferLegacyName as wt, createReplyDispatcher as x, listNodePairing as xn, resolveIdentityName as xr, writeRestartSentinel as xt, dispatchReplyWithBufferedBlockDispatcher as y, setSkillsRemoteRegistry as yn, resolveAgentIdentity as yr, summarizeRestartSentinel as yt, listSessionsFromStore as z, loadModelCatalog as zn, AGENT_LANE_NESTED as zt };
37203
+ export { stripEnvelopeFromMessages as $, DEFAULT_INPUT_TIMEOUT_MS as $n, parseActivationCommand as $t, getActiveTaskCount as A, verifyPairingToken as An, onAgentEvent as Ar, normalizeRequiredName as At, listAgentsForGateway as B, peekSystemEvents as Bn, extractShortModelName as Bt, createReplyDispatcher as C, listNodePairing as Cn, resolveIdentityName as Cr, writeRestartSentinel as Ct, BARE_SESSION_RESET_PROMPT as D, updatePairedNodeMetadata as Dn, clearAgentRunContext as Dr, normalizeOptionalAgentId as Dt, getReplyFromConfig as E, requestNodePairing as En, describeFailoverError as Er, inferLegacyName as Et, waitForActiveTasks as F, applyVerboseOverride as Fn, detectSuspiciousPatterns as Ft, resolveGatewaySessionStoreTarget as G, DEFAULT_INPUT_FILE_MAX_CHARS as Gn, deferGatewayRestartUntilIdle as Gt, loadCombinedSessionStoreForGateway as H, installUnhandledRejectionHandler as Hn, AGENT_LANE_SUBAGENT as Ht, createAnimaTools as I, parseVerboseOverride as In, getHookType as It, archiveSessionTranscripts as J, DEFAULT_INPUT_IMAGE_MIMES as Jn, markGatewaySigusr1RestartHandled as Jt, resolveSessionModelRef as K, DEFAULT_INPUT_FILE_MIMES as Kn, emitGatewayRestart as Kt, readLatestAssistantReply as L, enqueueSystemEvent as Ln, isExternalHookSession as Lt, getTotalQueueSize as M, registerSkillsChangeListener as Mn, CHANNEL_TARGETS_DESCRIPTION as Mt, resetAllLanes as N, clearSessionAuthProfileOverride as Nn, CHANNEL_TARGET_DESCRIPTION as Nt, getCliSessionId as O, verifyNodeToken as On, emitAgentEvent$1 as Or, normalizeOptionalText as Ot, setCommandLaneConcurrency as P, applyModelOverrideToSessionEntry as Pn, buildSafeExternalPrompt as Pt, resolveSessionTranscriptCandidates as Q, DEFAULT_INPUT_PDF_MIN_TEXT_CHARS as Qn, normalizeGroupActivation as Qt, resolveAnnounceTargetFromKey as R, isSystemEventContextChanged as Rn, applyBrowserProxyPaths as Rt, dispatchInboundMessage as S, approveNodePairing as Sn, resolveEffectiveMessagesConfig as Sr, trimLogTail as St, createDedupeCache as T, renamePairedNode as Tn, resolveMessagePrefix as Tr, normalizeCronJobPatch as Tt, loadSessionEntry as U, registerUnhandledRejectionHandler as Un, CommandLane as Ut, listSessionsFromStore as V, loadModelCatalog as Vn, AGENT_LANE_NESTED as Vt, pruneLegacyStoreKeys as W, DEFAULT_INPUT_FILE_MAX_BYTES as Wn, consumeGatewaySigusr1RestartAuthorization as Wt, readSessionMessages as X, DEFAULT_INPUT_PDF_MAX_PAGES as Xn, setGatewaySigusr1RestartPolicy as Xt, capArrayByJsonBytes as Y, DEFAULT_INPUT_MAX_REDIRECTS as Yn, scheduleGatewaySigusr1Restart as Yt, readSessionPreviewItemsFromTranscript as Z, DEFAULT_INPUT_PDF_MAX_PIXELS as Zn, setPreRestartDeferralCheck as Zt, buildPairingReply as _, recordRemoteNodeInfo as _n, stopSubagentsForRequester as _r, consumeRestartSentinel as _t, runSubagentAnnounceFlow as a, formatUsageWindowSummary as an, resolveAgentTimeoutMs as ar, buildChannelAccountBindings as at, shouldAckReactionForWhatsApp as b, removeRemoteNodeInfo as bn, normalizeMentionText as br, readRestartSentinel as bt, waitForEmbeddedPiRunEnd as c, buildChannelAccountSnapshot as cn, isDiagnosticsEnabled as cr, resolveHeartbeatSenderContext as ct, ensureLocalOllamaModelInstalled as d, requestHeartbeatNow as dn, formatInboundEnvelope as dr, formatTargetDisplay as dt, loadProviderUsageSummary as en, extractFileContentFromSource as er, runMessageAction as et, applyToolPolicyPipeline as f, setHeartbeatWakeHandler as fn, resolveEnvelopeFormatOptions as fr, resetDirectoryCache as ft, loadAnimaPlugins as g, primeRemoteSkillsCache as gn, isAbortTrigger as gr, resolveWorkingModeModelSelection as gt, getPluginToolMeta as h, getRemoteSkillEligibility as hn, shouldComputeCommandAuthorized as hr, runWithModelFallback as ht, subagent_registry_exports as i, formatUsageReportLines as in, finalizeInboundContext as ir, resolveAgentRoute as it, getQueueSize as j, getSkillsSnapshotVersion as jn, registerAgentRunContext as jr, migrateLegacyCronPayload as jt, setCliSessionId as k, generatePairingToken as kn, getAgentRunContext as kr, normalizePayloadToSystemText as kt, runNoxSoftEmbeddedAgent as l, formatChannelAllowFrom as ln, createInboundDebouncer as lr, resolveOutboundTarget as lt, sniffMimeFromBase64 as m, resolveSendPolicy as mn, hasControlCommand as mr, CHANNEL_MESSAGE_ACTION_NAMES as mt, initSubagentRegistry as n, maskApiKey as nn, normalizeMimeList as nr, resolveOutboundSessionRoute as nt, clearSessionQueues as o, resolveUsageProviderId as on, startDiagnosticHeartbeat as or, resolvePreferredAccountId as ot, buildDefaultToolPolicyPipelineSteps as p, normalizeSendPolicy as pn, formatZonedTimestamp as pr, resolveMessageChannelSelection as pt, archiveFileOnDisk as q, DEFAULT_INPUT_IMAGE_MAX_BYTES as qn, isGatewaySigusr1RestartExternallyAllowed as qt, listDescendantRunsForRequester as r, saveProviderStore as rn, estimateBase64DecodedBytes as rr, buildAgentSessionKey as rt, abortEmbeddedPiRun as s, buildChannelSummary as sn, stopDiagnosticHeartbeat as sr, resolveHeartbeatDeliveryTarget as st, countActiveDescendantRuns as t, loadProviderStore as tn, extractImageContentFromSource as tr, ensureOutboundSessionEntry as tt, DEFAULT_LOCAL_OLLAMA_MODEL as u, resolveCommitHash as un, resolveInboundDebounceMs as ur, resolveSessionDeliveryTarget as ut, getChannelActivity as v, refreshRemoteBinsForConnectedNodes as vn, CURRENT_MESSAGE_MARKER as vr, formatDoctorNonInteractiveHint as vt, getTotalPendingReplies as w, rejectNodePairing as wn, resolveIdentityNamePrefix as wr, normalizeCronJobCreate as wt, dispatchReplyWithBufferedBlockDispatcher as x, setSkillsRemoteRegistry as xn, resolveAgentIdentity as xr, summarizeRestartSentinel as xt, recordChannelActivity as y, refreshRemoteNodeBins as yn, buildMentionRegexes as yr, formatRestartSentinelMessage as yt, canonicalizeSpawnedByForAgent as z, peekSystemEventEntries as zn, persistBrowserProxyFiles as zt };