@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,25 +1,25 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
- import { B as resolveRequiredHomeDir, C as colorize, E as getChildLogger, F as resolveOAuthDir, L as resolveStateDir, M as resolveConfigPath, P as resolveGatewayPort, T as theme, _ as logVerbose, a as unregisterActiveProgressLine, b as shouldLogVerbose, f as getActivePluginRegistry, i as registerActiveProgressLine, k as normalizeLogLevel, l as normalizeAnyChannelId, m as setActivePluginRegistry, n as defaultRuntime, r as clearActiveProgressLine, s as CHAT_CHANNEL_ORDER, t as createSubsystemLogger, u as normalizeChannelId, w as isRich, y as setVerbose } from "./subsystem-D-Xta-sj.js";
3
- import { A as classifySessionKeyShape, B as parseAgentSessionKey, D as buildAgentMainSessionKey, E as DEFAULT_MAIN_KEY, F as resolveThreadSessionKeys, I as sanitizeAgentId, L as getSubagentDepth, M as normalizeAgentId, N as normalizeMainKey, O as buildAgentPeerSessionKey, P as resolveAgentIdFromSessionKey, R as isAcpSessionKey, S as resolveAnimaPackageRoot, T as DEFAULT_AGENT_ID, V as resolveThreadParentSessionKey, b as filterBootstrapFilesForSession, c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, j as normalizeAccountId$1, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, w as DEFAULT_ACCOUNT_ID, x as loadWorkspaceBootstrapFiles, y as ensureAgentWorkspace, z as isSubagentSessionKey } from "./agent-scope-ByIGrCTT.js";
4
- import { D as shortenHomePath, E as shortenHomeInString, O as sleep, T as safeParseJson, _ as isRecord, a as logDebug, c as logWarn, d as clampInt, g as isPlainObject, h as formatTerminalLink, i as spawnWithFallback, j as truncateUtf16Safe, k as sliceUtf16Safe, l as CONFIG_DIR, m as escapeRegExp, n as runExec, o as logError, p as ensureDir$3, r as formatSpawnError, s as logInfo, t as runCommandWithTimeout, w as resolveUserPath } from "./exec-C6tXfeqA.js";
5
- import { a as modelKey, d as resolveModelRefFromString, f as resolveThinkingDefault, h as DEFAULT_PROVIDER, i as isCliProvider, l as resolveConfiguredModelRef, m as DEFAULT_MODEL, n as buildConfiguredAllowlistKeys, o as normalizeModelRef, p as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeProviderId, t as buildAllowedModelSet, u as resolveDefaultModelForAgent } from "./model-selection-CLcoOT3e.js";
6
- import { $ as resolveChannelResetConfig, A as isContextOverflowError, At as resolveSandboxConfigForAgent, B as readSessionUpdatedAt, Bt as matchesAnyGlobPattern, C as normalizeThinkLevel, Ct as buildWorkspaceSkillSnapshot, D as supportsXHighThinking, Dt as resolveSandboxedMediaSource, E as resolveResponseUsageMode, Et as assertSandboxPath, F as ensureSandboxWorkspaceForSession, Ft as expandToolGroups, G as updateSessionStoreEntry, Gt as SILENT_REPLY_TOKEN, Ht as resolveBootstrapMaxChars, I as resolveSandboxRuntimeStatus, It as normalizeToolName, J as mergeDeliveryContext, K as deliveryContextFromSession, Kt as isSilentReplyText, L as extractDeliveryInfo, Lt as resolveToolProfilePolicy, M as isLikelyContextOverflowError, Mt as buildPluginToolGroups, N as isTransientHttpError, Nt as collectExplicitAllowlist, O as classifyFailoverReason, Ot as ensureBrowserControlAuth, P as sanitizeUserFacingText, Pt as expandPolicyWithPluginGroups, Q as evaluateSessionFreshness, R as appendAssistantMessageToSessionTranscript, Rt as stripPluginOnlyAllowlist, S as normalizeReasoningLevel, St as buildWorkspaceSkillCommandSpecs, T as normalizeVerboseLevel, Tt as assertMediaNotDataUrl, U as updateLastRoute, Ut as resolveBootstrapTotalMaxChars, V as recordSessionMetaFromInbound, Vt as buildBootstrapContextFiles, W as updateSessionStore, Wt as HEARTBEAT_TOKEN, X as normalizeSessionDeliveryFields, Y as normalizeDeliveryContext, Z as resolveSessionKey$1, _ as initializeGlobalHookRunner, _t as getMediaDir, a as applyReplyThreading, at as canonicalizeMainSessionAlias, b as listThinkingLevels, bt as resolvePathsWithinRoot, c as shouldSuppressMessagingToolReplies, ct as getChannelDock, d as buildTargetResolverSignature, dt as normalizeChatType, et as resolveSessionResetPolicy, f as normalizeChannelTargetInput, ft as resolveGroupSessionKey, g as getGlobalHookRunner, gt as resolveProfile, h as parseReplyDirectives, ht as resolveBrowserConfig, i as applyReplyTagsToPayload, it as resolveFreshSessionTotalTokens, j as isFailoverErrorMessage, jt as applyOwnerOnlyToolPolicy, k as isCompactionFailureError, kt as resolveBrowserControlAuth, l as createReplyToModeFilterForChannel, lt as listChannelDocks, m as throwIfAborted, mt as registerBrowserRoutes, nt as resolveThreadFlag, o as filterMessagingToolDuplicates, ot as resolveMainSessionKey, p as normalizeTargetForProvider, pt as createBrowserRouteContext, q as deliveryContextKey, r as normalizeReplyPayloadsForDelivery, rt as DEFAULT_RESET_TRIGGERS, s as isRenderablePayload, st as deriveSessionMetaPatch, t as deliverOutboundPayloads, tt as resolveSessionResetType, u as resolveReplyToMode, ut as resolveConversationLabel, v as formatThinkingLevels, vt as saveMediaBuffer, w as normalizeUsageDisplay, wt as resolvePluginSkillDirs, x as normalizeElevatedLevel, xt as getBridgeAuthForPort, y as formatXHighModelHint, yt as DEFAULT_UPLOAD_DIR, z as loadSessionStore, zt as compileGlobPatterns } from "./deliver-B-dPbUIs.js";
7
- import { C as parseConfigPath, E as VERSION, S as getConfigValueAtPath, T as unsetConfigValueAtPath, _ as resolveMemorySlotDecision, a as writeConfigFile, b as setConfigOverride, c as parseDurationMs, d as discoverAnimaPlugins, g as resolveEnableState, h as normalizePluginsConfig, i as resolveConfigSnapshotHash, l as validateJsonSchemaValue, m as applyTestPluginDefaults, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as loadPluginManifestRegistry, v as getConfigOverrides, w as setConfigValueAtPath, x as unsetConfigOverride, y as resetConfigOverrides } from "./config-ZYN8tezd.js";
8
- import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-CMI9f7-7.js";
9
- import { S as pickPrimaryTailnetIPv4, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as ensureChromeExtensionRelayServer, x as pickPrimaryLanIPv4, y as rawDataToString } from "./chrome-B8EnYGj1.js";
2
+ import { A as normalizeLogLevel, D as getChildLogger, E as theme, F as resolveGatewayPort, I as resolveOAuthDir, N as resolveConfigPath, R as resolveStateDir, T as isRich, V as resolveRequiredHomeDir, a as registerActiveProgressLine, b as setVerbose, c as CHAT_CHANNEL_ORDER, d as normalizeChannelId, h as setActivePluginRegistry, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, p as getActivePluginRegistry, r as defaultRuntime, t as createSubsystemLogger, u as normalizeAnyChannelId, v as logVerbose, w as colorize, x as shouldLogVerbose } from "./subsystem-CyrIA90F.js";
3
+ import { A as classifySessionKeyShape, B as parseAgentSessionKey, D as buildAgentMainSessionKey, E as DEFAULT_MAIN_KEY, F as resolveThreadSessionKeys, I as sanitizeAgentId, L as getSubagentDepth, M as normalizeAgentId, N as normalizeMainKey, O as buildAgentPeerSessionKey, P as resolveAgentIdFromSessionKey, R as isAcpSessionKey, S as resolveAnimaPackageRoot, T as DEFAULT_AGENT_ID, V as resolveThreadParentSessionKey, b as filterBootstrapFilesForSession, c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, j as normalizeAccountId$1, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, w as DEFAULT_ACCOUNT_ID, x as loadWorkspaceBootstrapFiles, y as ensureAgentWorkspace, z as isSubagentSessionKey } from "./agent-scope-DpgOQfBp.js";
4
+ import { D as shortenHomePath, E as shortenHomeInString, O as sleep, T as safeParseJson, _ as isRecord, a as logDebug, c as logWarn, d as clampInt, g as isPlainObject, h as formatTerminalLink, i as spawnWithFallback, j as truncateUtf16Safe, k as sliceUtf16Safe, l as CONFIG_DIR, m as escapeRegExp, n as runExec, o as logError, p as ensureDir$3, r as formatSpawnError, s as logInfo, t as runCommandWithTimeout, w as resolveUserPath } from "./exec-Dn2S9A7x.js";
5
+ import { a as modelKey, d as resolveModelRefFromString, f as resolveThinkingDefault, h as DEFAULT_PROVIDER, i as isCliProvider, l as resolveConfiguredModelRef, m as DEFAULT_MODEL, n as buildConfiguredAllowlistKeys, o as normalizeModelRef, p as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeProviderId, t as buildAllowedModelSet, u as resolveDefaultModelForAgent } from "./model-selection-BhIAjo3P.js";
6
+ import { $ as resolveChannelResetConfig, A as isContextOverflowError, At as resolveSandboxConfigForAgent, B as readSessionUpdatedAt, Bt as matchesAnyGlobPattern, C as normalizeThinkLevel, Ct as buildWorkspaceSkillSnapshot, D as supportsXHighThinking, Dt as resolveSandboxedMediaSource, E as resolveResponseUsageMode, Et as assertSandboxPath, F as ensureSandboxWorkspaceForSession, Ft as expandToolGroups, G as updateSessionStoreEntry, Gt as SILENT_REPLY_TOKEN, Ht as resolveBootstrapMaxChars, I as resolveSandboxRuntimeStatus, It as normalizeToolName, J as mergeDeliveryContext, K as deliveryContextFromSession, Kt as isSilentReplyText, L as extractDeliveryInfo, Lt as resolveToolProfilePolicy, M as isLikelyContextOverflowError, Mt as buildPluginToolGroups, N as isTransientHttpError, Nt as collectExplicitAllowlist, O as classifyFailoverReason, Ot as ensureBrowserControlAuth, P as sanitizeUserFacingText, Pt as expandPolicyWithPluginGroups, Q as evaluateSessionFreshness, R as appendAssistantMessageToSessionTranscript, Rt as stripPluginOnlyAllowlist, S as normalizeReasoningLevel, St as buildWorkspaceSkillCommandSpecs, T as normalizeVerboseLevel, Tt as assertMediaNotDataUrl, U as updateLastRoute, Ut as resolveBootstrapTotalMaxChars, V as recordSessionMetaFromInbound, Vt as buildBootstrapContextFiles, W as updateSessionStore, Wt as HEARTBEAT_TOKEN, X as normalizeSessionDeliveryFields, Y as normalizeDeliveryContext, Z as resolveSessionKey$1, _ as initializeGlobalHookRunner, _t as getMediaDir, a as applyReplyThreading, at as canonicalizeMainSessionAlias, b as listThinkingLevels, bt as resolvePathsWithinRoot, c as shouldSuppressMessagingToolReplies, ct as getChannelDock, d as buildTargetResolverSignature, dt as normalizeChatType, et as resolveSessionResetPolicy, f as normalizeChannelTargetInput, ft as resolveGroupSessionKey, g as getGlobalHookRunner, gt as resolveProfile, h as parseReplyDirectives, ht as resolveBrowserConfig, i as applyReplyTagsToPayload, it as resolveFreshSessionTotalTokens, j as isFailoverErrorMessage, jt as applyOwnerOnlyToolPolicy, k as isCompactionFailureError, kt as resolveBrowserControlAuth, l as createReplyToModeFilterForChannel, lt as listChannelDocks, m as throwIfAborted, mt as registerBrowserRoutes, nt as resolveThreadFlag, o as filterMessagingToolDuplicates, ot as resolveMainSessionKey, p as normalizeTargetForProvider, pt as createBrowserRouteContext, q as deliveryContextKey, r as normalizeReplyPayloadsForDelivery, rt as DEFAULT_RESET_TRIGGERS, s as isRenderablePayload, st as deriveSessionMetaPatch, t as deliverOutboundPayloads, tt as resolveSessionResetType, u as resolveReplyToMode, ut as resolveConversationLabel, v as formatThinkingLevels, vt as saveMediaBuffer, w as normalizeUsageDisplay, wt as resolvePluginSkillDirs, x as normalizeElevatedLevel, xt as getBridgeAuthForPort, y as formatXHighModelHint, yt as DEFAULT_UPLOAD_DIR, z as loadSessionStore, zt as compileGlobPatterns } from "./deliver-bdH5itRb.js";
7
+ import { C as parseConfigPath, E as VERSION, S as getConfigValueAtPath, T as unsetConfigValueAtPath, _ as resolveMemorySlotDecision, a as writeConfigFile, b as setConfigOverride, c as parseDurationMs, d as discoverAnimaPlugins, g as resolveEnableState, h as normalizePluginsConfig, i as resolveConfigSnapshotHash, l as validateJsonSchemaValue, m as applyTestPluginDefaults, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as loadPluginManifestRegistry, v as getConfigOverrides, w as setConfigValueAtPath, x as unsetConfigOverride, y as resetConfigOverrides } from "./config-C7s14LLE.js";
8
+ import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-BR7Sbtw1.js";
9
+ import { S as pickPrimaryTailnetIPv4, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as ensureChromeExtensionRelayServer, x as pickPrimaryLanIPv4, y as rawDataToString } from "./chrome-Nb2mFwWK.js";
10
10
  import { n as resolveCliName, t as formatCliCommand } from "./command-format-CsqJApTg.js";
11
11
  import { n as formatErrorMessage } from "./errors-CllZhhV1.js";
12
- import { A as extensionForMime, C as GATEWAY_CLIENT_NAMES, F as normalizeMimeType$1, H as isPrivateIpAddress, L as mediaKindFromMime, M as imageMimeFromFormat, N as isAudioFileName, O as resizeToJpeg, P as kindFromMime, R as SsrFBlockedError, S as GATEWAY_CLIENT_MODES, T as getImageMetadata, V as isBlockedHostname, _ as listDeliverableMessageChannels, a as chunkText, b as resolveMessageChannel, c as resolveTextChunkLimit, d as listChannelPlugins, f as normalizeChannelId$1, g as isMarkdownCapableMessageChannel, h as isInternalMessageChannel, i as chunkMarkdownTextWithMode, j as getFileExtension, k as detectMime, m as isDeliverableMessageChannel, o as chunkTextWithMode, p as INTERNAL_MESSAGE_CHANNEL, r as chunkMarkdownText, s as resolveChunkMode, t as chunkByNewline, u as getChannelPlugin, v as normalizeMessageChannel, x as GATEWAY_CLIENT_IDS, y as resolveGatewayMessageChannel } from "./chunk-DJXDX69U.js";
13
- import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath$1 } from "./paths-CAQJvbeZ.js";
14
- import { t as sanitizeToolResultImages } from "./tool-images-C6cKHTbj.js";
15
- import { _ as normalizeSecretInput, a as markAuthProfileUsed, c as markAuthProfileGood, d as resolveAnimaAgentDir, f as loadJsonFile, h as resolveAuthProfileDisplayLabel, i as markAuthProfileFailure, l as ensureAuthProfileStore, m as withFileLock$1, n as resolveAuthProfileOrder, o as resolveApiKeyForProfile, p as saveJsonFile, r as isProfileInCooldown, s as listProfilesForProvider, u as resolveAuthStorePathForDisplay } from "./auth-profiles-DKu7ZUzl.js";
16
- import { a as requireApiKey, c as resolveModelAuthMode, i as getCustomProviderApiKey, n as resolveMemorySearchConfig, o as resolveApiKeyForProvider, r as getApiKeyForModel, s as resolveEnvApiKey } from "./manager-BYu34CX3.js";
17
- import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-BMMt7osH.js";
18
- import { n as createAsyncLock } from "./soul-BiIdv3Wp.js";
19
- import { a as readNumberParam, c as readStringParam, i as jsonResult, n as imageResult, r as imageResultFromFile, s as readStringArrayParam } from "./common-DT_obM-k.js";
20
- 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-BKtsWhsb.js";
12
+ import { A as extensionForMime, C as GATEWAY_CLIENT_NAMES, F as normalizeMimeType$1, H as isPrivateIpAddress, L as mediaKindFromMime, M as imageMimeFromFormat, N as isAudioFileName, O as resizeToJpeg, P as kindFromMime, R as SsrFBlockedError, S as GATEWAY_CLIENT_MODES, T as getImageMetadata, V as isBlockedHostname, _ as listDeliverableMessageChannels, a as chunkText, b as resolveMessageChannel, c as resolveTextChunkLimit, d as listChannelPlugins, f as normalizeChannelId$1, g as isMarkdownCapableMessageChannel, h as isInternalMessageChannel, i as chunkMarkdownTextWithMode, j as getFileExtension, k as detectMime, m as isDeliverableMessageChannel, o as chunkTextWithMode, p as INTERNAL_MESSAGE_CHANNEL, r as chunkMarkdownText, s as resolveChunkMode, t as chunkByNewline, u as getChannelPlugin, v as normalizeMessageChannel, x as GATEWAY_CLIENT_IDS, y as resolveGatewayMessageChannel } from "./chunk-CTS4rIMF.js";
13
+ import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath$1 } from "./paths-BqA7F6bT.js";
14
+ import { t as sanitizeToolResultImages } from "./tool-images-BEiRPCYM.js";
15
+ import { _ as normalizeSecretInput, a as markAuthProfileUsed, c as markAuthProfileGood, d as resolveAnimaAgentDir, f as loadJsonFile, h as resolveAuthProfileDisplayLabel, i as markAuthProfileFailure, l as ensureAuthProfileStore, m as withFileLock$1, n as resolveAuthProfileOrder, o as resolveApiKeyForProfile, p as saveJsonFile, r as isProfileInCooldown, s as listProfilesForProvider, u as resolveAuthStorePathForDisplay } from "./auth-profiles-D0T20ZZX.js";
16
+ import { a as requireApiKey, c as resolveModelAuthMode, i as getCustomProviderApiKey, n as resolveMemorySearchConfig, o as resolveApiKeyForProvider, r as getApiKeyForModel, s as resolveEnvApiKey } from "./manager-B-8JFgek.js";
17
+ import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-CFCo1Ghe.js";
18
+ import { n as createAsyncLock } from "./soul-Doq8As4R.js";
19
+ import { a as readNumberParam, c as readStringParam, i as jsonResult, n as imageResult, r as imageResultFromFile, s as readStringArrayParam } from "./common-Coq2knq6.js";
20
+ 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-C3NdbMQD.js";
21
21
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-B1cF8Wk2.js";
22
- import { d as webAuthExists, i as logoutWeb, n as getWebAuthAgeMs, r as logWebSelfId, s as readWebSelfId } from "./auth-store-BpYI9t_y.js";
22
+ import { d as webAuthExists, i as logoutWeb, n as getWebAuthAgeMs, r as logWebSelfId, s as readWebSelfId } from "./auth-store-po566wly.js";
23
23
  import { createRequire } from "node:module";
24
24
  import * as path$1 from "node:path";
25
25
  import path, { join } from "node:path";
@@ -4887,7 +4887,7 @@ async function getMemorySearchManager(params) {
4887
4887
  if (cached) return { manager: cached };
4888
4888
  }
4889
4889
  try {
4890
- const { QmdMemoryManager } = await import("./qmd-manager-Q0OSDQ-e.js");
4890
+ const { QmdMemoryManager } = await import("./qmd-manager-CpynR-al.js");
4891
4891
  const primary = await QmdMemoryManager.create({
4892
4892
  cfg: params.cfg,
4893
4893
  agentId: params.agentId,
@@ -4899,7 +4899,7 @@ async function getMemorySearchManager(params) {
4899
4899
  const wrapper = new FallbackMemoryManager({
4900
4900
  primary,
4901
4901
  fallbackFactory: async () => {
4902
- const { MemoryIndexManager } = await import("./manager-BYu34CX3.js").then((n) => n.t);
4902
+ const { MemoryIndexManager } = await import("./manager-B-8JFgek.js").then((n) => n.t);
4903
4903
  return await MemoryIndexManager.get(params);
4904
4904
  }
4905
4905
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4912,7 +4912,7 @@ async function getMemorySearchManager(params) {
4912
4912
  }
4913
4913
  }
4914
4914
  try {
4915
- const { MemoryIndexManager } = await import("./manager-BYu34CX3.js").then((n) => n.t);
4915
+ const { MemoryIndexManager } = await import("./manager-B-8JFgek.js").then((n) => n.t);
4916
4916
  return { manager: await MemoryIndexManager.get(params) };
4917
4917
  } catch (err) {
4918
4918
  return {
@@ -8662,7 +8662,7 @@ async function routeReply(params) {
8662
8662
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
8663
8663
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
8664
8664
  try {
8665
- const { deliverOutboundPayloads } = await import("./deliver-B-dPbUIs.js").then((n) => n.n);
8665
+ const { deliverOutboundPayloads } = await import("./deliver-bdH5itRb.js").then((n) => n.n);
8666
8666
  return {
8667
8667
  ok: true,
8668
8668
  messageId: (await deliverOutboundPayloads({
@@ -12360,6 +12360,14 @@ const SEED_MODELS = [
12360
12360
  contextWindow: 3e5,
12361
12361
  reasoning: false,
12362
12362
  input: ["text", "image"]
12363
+ },
12364
+ {
12365
+ id: "glm-5",
12366
+ name: "GLM-5",
12367
+ provider: "zai",
12368
+ contextWindow: 2e5,
12369
+ reasoning: true,
12370
+ input: ["text"]
12363
12371
  }
12364
12372
  ];
12365
12373
  async function ensureAnimaModelsJson(config, agentDirOverride) {
@@ -12421,7 +12429,7 @@ async function loadModelCatalog(params) {
12421
12429
  });
12422
12430
  try {
12423
12431
  await ensureAnimaModelsJson(params?.config ?? loadConfig());
12424
- await (await import("./pi-auth-json-B_lKNFK6.js")).ensurePiAuthJsonFromAuthProfiles(resolveAnimaAgentDir());
12432
+ await (await import("./pi-auth-json-BhkzZgQz.js")).ensurePiAuthJsonFromAuthProfiles(resolveAnimaAgentDir());
12425
12433
  const piSdk = await importPiSdk();
12426
12434
  const agentDir = resolveAnimaAgentDir();
12427
12435
  const { join } = await import("node:path");
@@ -14518,7 +14526,7 @@ async function createModelSelectionState(params) {
14518
14526
  }
14519
14527
  }
14520
14528
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
14521
- const { ensureAuthProfileStore } = await import("./auth-profiles-DKu7ZUzl.js").then((n) => n.t);
14529
+ const { ensureAuthProfileStore } = await import("./auth-profiles-D0T20ZZX.js").then((n) => n.t);
14522
14530
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
14523
14531
  const providerKey = normalizeProviderId(provider);
14524
14532
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -28969,6 +28977,63 @@ function orderCandidatesByPreference(params) {
28969
28977
 
28970
28978
  //#endregion
28971
28979
  //#region src/agents/model-fallback.ts
28980
+ const IMPLICIT_CODE_MODEL_FALLBACKS = [{
28981
+ whenProvider: "anthropic",
28982
+ provider: "openai-codex",
28983
+ model: "gpt-5.2-codex"
28984
+ }, {
28985
+ whenProvider: "anthropic",
28986
+ provider: "ollama",
28987
+ model: "qwen3-coder:latest"
28988
+ }];
28989
+ function isLocalBaseUrl(baseUrl) {
28990
+ const raw = baseUrl?.trim();
28991
+ if (!raw) return false;
28992
+ try {
28993
+ const host = new URL(raw).hostname.toLowerCase();
28994
+ return host === "localhost" || host === "127.0.0.1" || host === "0.0.0.0" || host === "::1" || host.endsWith(".local");
28995
+ } catch {
28996
+ return false;
28997
+ }
28998
+ }
28999
+ function isOpenAICompatibleApi(api) {
29000
+ const normalized = api?.trim();
29001
+ return normalized === "openai-completions" || normalized === "openai-responses";
29002
+ }
29003
+ function scoreLocalFallback(params) {
29004
+ const haystack = `${params.provider} ${params.model} ${params.name ?? ""}`.toLowerCase();
29005
+ if (haystack.includes("qwen3") && haystack.includes("coder")) return 100;
29006
+ if (haystack.includes("qwen") && haystack.includes("coder")) return 90;
29007
+ if (haystack.includes("noxsoft-tool-coder")) return 80;
29008
+ if (haystack.includes("tool-coder")) return 70;
29009
+ if (haystack.includes("coder")) return 60;
29010
+ if (haystack.includes("gpt-oss")) return 50;
29011
+ return 10;
29012
+ }
29013
+ function resolveImplicitLocalOpenAIFallbacks(cfg) {
29014
+ const providers = cfg?.models?.providers ?? {};
29015
+ const candidates = [];
29016
+ for (const [provider, entry] of Object.entries(providers)) {
29017
+ if (!isLocalBaseUrl(entry?.baseUrl) || !isOpenAICompatibleApi(entry?.api)) continue;
29018
+ for (const model of entry?.models ?? []) {
29019
+ const id = model?.id?.trim();
29020
+ if (!id) continue;
29021
+ candidates.push({
29022
+ provider,
29023
+ model: id,
29024
+ score: scoreLocalFallback({
29025
+ provider,
29026
+ model: id,
29027
+ name: model?.name
29028
+ })
29029
+ });
29030
+ }
29031
+ }
29032
+ return candidates.toSorted((a, b) => b.score - a.score || a.provider.localeCompare(b.provider) || a.model.localeCompare(b.model)).map(({ provider, model }) => ({
29033
+ provider,
29034
+ model
29035
+ }));
29036
+ }
28972
29037
  /**
28973
29038
  * Fallback abort check. Only treats explicit AbortError names as user aborts.
28974
29039
  * Message-based checks (e.g., "aborted") can mask timeouts and skip fallback.
@@ -29062,6 +29127,14 @@ function resolveFallbackCandidates(params) {
29062
29127
  if (!resolved) continue;
29063
29128
  addCandidate(resolved.ref, true);
29064
29129
  }
29130
+ if (params.fallbacksOverride === void 0) for (const implicit of IMPLICIT_CODE_MODEL_FALLBACKS) {
29131
+ if (normalizedPrimary.provider !== implicit.whenProvider) continue;
29132
+ addCandidate({
29133
+ provider: implicit.provider,
29134
+ model: implicit.model
29135
+ }, false);
29136
+ if (implicit.provider === "openai-codex") for (const localFallback of resolveImplicitLocalOpenAIFallbacks(params.cfg)) addCandidate(localFallback, false);
29137
+ }
29065
29138
  if (params.fallbacksOverride === void 0 && primary?.provider && primary.model) addCandidate({
29066
29139
  provider: primary.provider,
29067
29140
  model: primary.model
@@ -39050,7 +39123,7 @@ async function deliverSessionMaintenanceWarning(params) {
39050
39123
  return;
39051
39124
  }
39052
39125
  try {
39053
- const { deliverOutboundPayloads } = await import("./deliver-B-dPbUIs.js").then((n) => n.n);
39126
+ const { deliverOutboundPayloads } = await import("./deliver-bdH5itRb.js").then((n) => n.n);
39054
39127
  await deliverOutboundPayloads({
39055
39128
  cfg: params.cfg,
39056
39129
  channel,
@@ -39611,6 +39684,30 @@ function createTypingController(params) {
39611
39684
 
39612
39685
  //#endregion
39613
39686
  //#region src/auto-reply/reply/get-reply.ts
39687
+ /** Surfaces that represent real-time conversation (chat, DMs, voice). */
39688
+ const CONVERSATIONAL_CHAT_TYPES = new Set([
39689
+ "private",
39690
+ "group",
39691
+ "supergroup",
39692
+ "channel",
39693
+ "dm",
39694
+ "chat"
39695
+ ]);
39696
+ /**
39697
+ * Returns true when the inbound message originates from a real-time
39698
+ * conversational surface (NoxSoft chat, Telegram, WhatsApp, etc.)
39699
+ * rather than a programmatic/execution context (gateway API, heartbeat, CLI).
39700
+ */
39701
+ function isConversationalChannel(ctx) {
39702
+ if (ctx.CommandSource === "native") return false;
39703
+ const provider = ctx.Provider?.toLowerCase() ?? "";
39704
+ if (provider === "telegram" || provider === "whatsapp" || provider === "noxsoft") return true;
39705
+ const chatType = ctx.ChatType?.toLowerCase() ?? "";
39706
+ if (CONVERSATIONAL_CHAT_TYPES.has(chatType)) return true;
39707
+ const channel = typeof ctx.OriginatingChannel === "string" ? ctx.OriginatingChannel : "";
39708
+ if (channel && channel !== "gateway" && channel !== "cli") return true;
39709
+ return false;
39710
+ }
39614
39711
  function mergeSkillFilters(channelFilter, agentFilter) {
39615
39712
  const normalize = (list) => {
39616
39713
  if (!Array.isArray(list)) return;
@@ -39659,6 +39756,18 @@ async function getReplyFromConfig(ctx, opts, configOverride) {
39659
39756
  hasResolvedHeartbeatModelOverride = true;
39660
39757
  }
39661
39758
  }
39759
+ if (!opts?.isHeartbeat && !hasResolvedHeartbeatModelOverride && isConversationalChannel(ctx)) {
39760
+ const convRaw = agentCfg?.conversationalModel?.trim() ?? "";
39761
+ const convRef = convRaw ? resolveModelRefFromString({
39762
+ raw: convRaw,
39763
+ defaultProvider,
39764
+ aliasIndex
39765
+ }) : null;
39766
+ if (convRef) {
39767
+ provider = convRef.ref.provider;
39768
+ model = convRef.ref.model;
39769
+ }
39770
+ }
39662
39771
  const workspaceDir = (await ensureAgentWorkspace({
39663
39772
  dir: resolveAgentWorkspaceDir(cfg, agentId) ?? DEFAULT_AGENT_WORKSPACE_DIR,
39664
39773
  ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv
@@ -40479,7 +40588,7 @@ function createWhatsAppLoginTool() {
40479
40588
  force: Type.Optional(Type.Boolean())
40480
40589
  }),
40481
40590
  execute: async (_toolCallId, args) => {
40482
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BGbHImRb.js");
40591
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BVzUWR4o.js");
40483
40592
  if ((args?.action ?? "start") === "wait") {
40484
40593
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
40485
40594
  return {
@@ -41409,23 +41518,23 @@ let webLoginQrPromise = null;
41409
41518
  let webChannelPromise = null;
41410
41519
  let whatsappActionsPromise = null;
41411
41520
  function loadWebOutbound() {
41412
- webOutboundPromise ??= import("./outbound-DW2eod1S.js").then((n) => n.t);
41521
+ webOutboundPromise ??= import("./outbound-Bii3QonX.js").then((n) => n.t);
41413
41522
  return webOutboundPromise;
41414
41523
  }
41415
41524
  function loadWebLogin() {
41416
- webLoginPromise ??= import("./login-BTOKtSQN.js").then((n) => n.n);
41525
+ webLoginPromise ??= import("./login-WPS724ji.js").then((n) => n.n);
41417
41526
  return webLoginPromise;
41418
41527
  }
41419
41528
  function loadWebLoginQr() {
41420
- webLoginQrPromise ??= import("./login-qr-BGbHImRb.js");
41529
+ webLoginQrPromise ??= import("./login-qr-BVzUWR4o.js");
41421
41530
  return webLoginQrPromise;
41422
41531
  }
41423
41532
  function loadWebChannel() {
41424
- webChannelPromise ??= import("./web-C4lrKULd.js");
41533
+ webChannelPromise ??= import("./web-CPHrMWsv.js");
41425
41534
  return webChannelPromise;
41426
41535
  }
41427
41536
  function loadWhatsAppActions() {
41428
- whatsappActionsPromise ??= import("./whatsapp-actions-6fPRKwPV.js");
41537
+ whatsappActionsPromise ??= import("./whatsapp-actions-Bhz79Fgg.js");
41429
41538
  return whatsappActionsPromise;
41430
41539
  }
41431
41540
  function createPluginRuntime() {
@@ -43988,10 +44097,80 @@ async function runGeminiDirectAgent(params) {
43988
44097
  };
43989
44098
  }
43990
44099
 
44100
+ //#endregion
44101
+ //#region src/agents/local-model-installer.ts
44102
+ const DEFAULT_LOCAL_OLLAMA_MODEL = "qwen3-coder:latest";
44103
+ const installPromises = /* @__PURE__ */ new Map();
44104
+ function createInstallerError(message, cause) {
44105
+ const err = new Error(message);
44106
+ if (cause !== void 0) err.cause = cause;
44107
+ return err;
44108
+ }
44109
+ async function isOllamaModelInstalled(model = DEFAULT_LOCAL_OLLAMA_MODEL) {
44110
+ try {
44111
+ await runExec("ollama", ["show", model], 1e4);
44112
+ return true;
44113
+ } catch {
44114
+ return false;
44115
+ }
44116
+ }
44117
+ async function ensureLocalOllamaModelInstalled(params) {
44118
+ const model = params?.model?.trim() || DEFAULT_LOCAL_OLLAMA_MODEL;
44119
+ const timeoutMs = params?.timeoutMs ?? 72e5;
44120
+ const runtime = params?.runtime ?? createNonExitingRuntime();
44121
+ const existing = installPromises.get(model);
44122
+ if (existing) return await existing;
44123
+ const promise = (async () => {
44124
+ try {
44125
+ await runExec("ollama", ["list"], 1e4);
44126
+ } catch (error) {
44127
+ throw createInstallerError("Ollama is required but no local Ollama server is reachable. Start Ollama and retry.", error);
44128
+ }
44129
+ if (await isOllamaModelInstalled(model)) return {
44130
+ installed: true,
44131
+ pulled: false
44132
+ };
44133
+ runtime.log(`Installing local model via Ollama: ${model}`);
44134
+ const result = await runCommandWithTimeout([
44135
+ "ollama",
44136
+ "pull",
44137
+ model
44138
+ ], { timeoutMs });
44139
+ if (result.code !== 0) {
44140
+ const detail = (result.stderr || result.stdout).trim();
44141
+ throw createInstallerError(`Failed to install local Ollama model "${model}".${detail ? ` ${detail}` : ""}`);
44142
+ }
44143
+ if (!await isOllamaModelInstalled(model)) throw createInstallerError(`Ollama reported success, but model "${model}" is still missing.`);
44144
+ runtime.log(`Local model ready: ${model}`);
44145
+ return {
44146
+ installed: true,
44147
+ pulled: true
44148
+ };
44149
+ })();
44150
+ installPromises.set(model, promise);
44151
+ try {
44152
+ return await promise;
44153
+ } finally {
44154
+ installPromises.delete(model);
44155
+ }
44156
+ }
44157
+
43991
44158
  //#endregion
43992
44159
  //#region src/agents/openai-direct-runner.ts
43993
44160
  const log = createSubsystemLogger("agent/openai-direct");
43994
44161
  const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
44162
+ const DEFAULT_PROVIDER_BASE_URLS = {
44163
+ openai: DEFAULT_OPENAI_BASE_URL,
44164
+ minimax: "https://api.minimax.io/v1",
44165
+ ollama: "http://127.0.0.1:11434/v1",
44166
+ lmstudio: "http://127.0.0.1:1234/v1"
44167
+ };
44168
+ const PROVIDER_API_KEY_HINTS = {
44169
+ openai: "OPENAI_API_KEY",
44170
+ minimax: "MINIMAX_API_KEY",
44171
+ ollama: "OLLAMA_API_KEY",
44172
+ lmstudio: "LMSTUDIO_API_KEY"
44173
+ };
43995
44174
  const MODEL_MAP = {
43996
44175
  "gpt-5.4": "gpt-5.4",
43997
44176
  "gpt-5.2": "gpt-5.2",
@@ -44029,6 +44208,10 @@ function resolveModel(model) {
44029
44208
  const key = (model ?? "default").trim().toLowerCase() || "default";
44030
44209
  return MODEL_MAP[key] ?? key;
44031
44210
  }
44211
+ function isToolUnsupportedError(body) {
44212
+ const normalized = body.toLowerCase();
44213
+ return normalized.includes("does not support tools") || normalized.includes("tool is not supported");
44214
+ }
44032
44215
  /**
44033
44216
  * Clean a JSON Schema for OpenAI's function calling.
44034
44217
  * OpenAI is stricter than most — no unsupported keywords.
@@ -44055,8 +44238,10 @@ function cleanSchemaForOpenAI(schema) {
44055
44238
  */
44056
44239
  async function runOpenAIDirectAgent(params) {
44057
44240
  const started = Date.now();
44241
+ const provider = (params.provider ?? "openai").trim() || "openai";
44058
44242
  const resolvedModel = resolveModel(params.model);
44059
- log.info(`direct api exec: model=${resolvedModel} promptChars=${params.prompt.length}`);
44243
+ if (provider === "ollama" && resolvedModel === DEFAULT_LOCAL_OLLAMA_MODEL) await ensureLocalOllamaModelInstalled({ model: resolvedModel });
44244
+ log.info(`direct api exec: provider=${provider} model=${resolvedModel} promptChars=${params.prompt.length}`);
44060
44245
  const workspaceDir = resolveRunWorkspaceDir({
44061
44246
  workspaceDir: params.workspaceDir,
44062
44247
  sessionKey: params.sessionKey,
@@ -44067,7 +44252,7 @@ async function runOpenAIDirectAgent(params) {
44067
44252
  config: params.config,
44068
44253
  workspaceDir,
44069
44254
  sessionKey: params.sessionKey,
44070
- modelProvider: "openai",
44255
+ modelProvider: provider,
44071
44256
  modelId: resolvedModel
44072
44257
  });
44073
44258
  const openaiTools = executableTools.map((t) => ({
@@ -44113,7 +44298,7 @@ async function runOpenAIDirectAgent(params) {
44113
44298
  docsPath: docsPath ?? void 0,
44114
44299
  tools: executableTools,
44115
44300
  contextFiles,
44116
- modelDisplay: `openai/${resolvedModel}`,
44301
+ modelDisplay: `${provider}/${resolvedModel}`,
44117
44302
  agentId: sessionAgentId
44118
44303
  });
44119
44304
  let history = await loadSessionHistory(params.sessionFile);
@@ -44137,7 +44322,8 @@ async function runOpenAIDirectAgent(params) {
44137
44322
  let isDone = false;
44138
44323
  let loopCount = 0;
44139
44324
  const maxLoops = 20;
44140
- const baseUrl = params.config?.models?.providers?.openai?.baseUrl?.trim() || DEFAULT_OPENAI_BASE_URL;
44325
+ let toolUseEnabled = openaiTools.length > 0;
44326
+ 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;
44141
44327
  while (!isDone && loopCount < maxLoops) {
44142
44328
  loopCount++;
44143
44329
  const requestBody = {
@@ -44147,7 +44333,7 @@ async function runOpenAIDirectAgent(params) {
44147
44333
  temperature: 1,
44148
44334
  stream: true
44149
44335
  };
44150
- if (openaiTools.length > 0) {
44336
+ if (toolUseEnabled && openaiTools.length > 0) {
44151
44337
  requestBody.tools = openaiTools;
44152
44338
  requestBody.tool_choice = "auto";
44153
44339
  }
@@ -44159,8 +44345,8 @@ async function runOpenAIDirectAgent(params) {
44159
44345
  method: "POST",
44160
44346
  headers: {
44161
44347
  "Content-Type": "application/json",
44162
- Authorization: `Bearer ${params.apiKey}`,
44163
- "User-Agent": `anima/7.0.0 (openai-direct-runner; ${os.platform()})`
44348
+ "User-Agent": `anima/7.0.0 (openai-direct-runner; ${os.platform()})`,
44349
+ ...params.apiKey?.trim() ? { Authorization: `Bearer ${params.apiKey}` } : {}
44164
44350
  },
44165
44351
  body: JSON.stringify(requestBody),
44166
44352
  signal: controller.signal
@@ -44168,11 +44354,20 @@ async function runOpenAIDirectAgent(params) {
44168
44354
  clearTimeout(timeoutHandle);
44169
44355
  if (!response.ok) {
44170
44356
  const body = await response.text().catch(() => "");
44357
+ if (response.status === 400 && toolUseEnabled && isToolUnsupportedError(body)) {
44358
+ log.warn("openai-compatible provider rejected tools; retrying without tools", {
44359
+ provider,
44360
+ model: resolvedModel
44361
+ });
44362
+ toolUseEnabled = false;
44363
+ continue;
44364
+ }
44171
44365
  const isAuth = response.status === 401 || response.status === 403;
44172
44366
  const isRateLimit = response.status === 429;
44173
44367
  const rateHint = isRateLimit ? " — rate limit hit, will retry next heartbeat." : "";
44174
- const authHint = isAuth ? "API key may be invalid. Check OPENAI_API_KEY environment variable." : "";
44175
- log.error(`openai api error: HTTP ${response.status}${authHint}${rateHint}`, {
44368
+ const apiKeyHint = PROVIDER_API_KEY_HINTS[provider] ?? "API key";
44369
+ const authHint = isAuth ? ` API key may be invalid. Check ${apiKeyHint}.` : "";
44370
+ log.error(`${provider} api error: HTTP ${response.status}${authHint}${rateHint}`, {
44176
44371
  status: response.status,
44177
44372
  body: body.slice(0, 500)
44178
44373
  });
@@ -44300,7 +44495,8 @@ async function runOpenAIDirectAgent(params) {
44300
44495
  log.info(`openai api complete: ${durationMs}ms`, {
44301
44496
  inputTokens: totalInputTokens,
44302
44497
  outputTokens: totalOutputTokens,
44303
- model: resolvedModel
44498
+ model: resolvedModel,
44499
+ provider
44304
44500
  });
44305
44501
  return {
44306
44502
  status: "completed",
@@ -44310,7 +44506,7 @@ async function runOpenAIDirectAgent(params) {
44310
44506
  durationMs,
44311
44507
  agentMeta: {
44312
44508
  model: resolvedModel,
44313
- provider: "openai",
44509
+ provider,
44314
44510
  usage: {
44315
44511
  input: totalInputTokens,
44316
44512
  output: totalOutputTokens
@@ -44342,10 +44538,22 @@ async function emitAgentEvent(params, stream, data) {
44342
44538
  data
44343
44539
  });
44344
44540
  }
44541
+ function resolveProviderConfig(provider, config) {
44542
+ const providers = config?.models?.providers ?? {};
44543
+ const direct = providers[provider];
44544
+ if (direct) return direct;
44545
+ const normalized = normalizeProviderId(provider);
44546
+ return Object.entries(providers).find(([key]) => normalizeProviderId(key) === normalized)?.[1];
44547
+ }
44548
+ function isOpenAICompatibleProviderConfig(entry) {
44549
+ const api = entry?.api?.trim();
44550
+ return api === "openai-completions" || api === "openai-responses";
44551
+ }
44345
44552
  function resolveDirectAuthProvider(provider) {
44346
44553
  if (provider === "anthropic" || provider === "claude") return "anthropic";
44347
44554
  if (provider === "google" || provider === "gemini") return "google";
44348
44555
  if (provider === "openai") return "openai";
44556
+ if (provider === "minimax") return "minimax";
44349
44557
  return null;
44350
44558
  }
44351
44559
  function resolveProfileFailureReason(result) {
@@ -44437,7 +44645,7 @@ async function runDirectWithProfileFallback(params) {
44437
44645
  let lastResult = null;
44438
44646
  for (;;) {
44439
44647
  const auth = await resolveDirectProviderAuth({
44440
- provider: params.directProvider,
44648
+ provider: params.authProvider,
44441
44649
  config: params.config,
44442
44650
  agentDir: params.agentDir,
44443
44651
  preferredProfile,
@@ -44449,7 +44657,7 @@ async function runDirectWithProfileFallback(params) {
44449
44657
  meta: {
44450
44658
  durationMs: 0,
44451
44659
  error: {
44452
- message: `Auth fallback loop detected for ${params.directProvider}.`,
44660
+ message: `Auth fallback loop detected for ${params.authProvider}.`,
44453
44661
  kind: "unknown"
44454
44662
  }
44455
44663
  }
@@ -44472,11 +44680,12 @@ async function runDirectWithProfileFallback(params) {
44472
44680
  onPartialReply: params.emitPartial,
44473
44681
  onAssistantMessageStart: params.onAssistantMessageStart
44474
44682
  };
44475
- const result = params.directProvider === "anthropic" ? await runAnthropicDirectAgent({
44683
+ const result = params.runnerKind === "anthropic" ? await runAnthropicDirectAgent({
44476
44684
  ...directRunParams,
44477
44685
  token: auth.apiKey ?? ""
44478
- }) : params.directProvider === "openai" ? await runOpenAIDirectAgent({
44686
+ }) : params.runnerKind === "openai-compatible" ? await runOpenAIDirectAgent({
44479
44687
  ...directRunParams,
44688
+ provider: params.openAIProvider ?? params.authProvider,
44480
44689
  apiKey: auth.apiKey ?? ""
44481
44690
  }) : await runGeminiDirectAgent({
44482
44691
  ...directRunParams,
@@ -44491,7 +44700,7 @@ async function runDirectWithProfileFallback(params) {
44491
44700
  });
44492
44701
  await markAuthProfileGood({
44493
44702
  store,
44494
- provider: params.directProvider,
44703
+ provider: params.authProvider,
44495
44704
  profileId: auth.profileId,
44496
44705
  agentDir: params.agentDir
44497
44706
  });
@@ -44513,22 +44722,32 @@ async function runDirectWithProfileFallback(params) {
44513
44722
  }
44514
44723
  async function resolveDirectStrategy(provider, config, agentDir) {
44515
44724
  const directProvider = resolveDirectAuthProvider(provider);
44516
- if (!directProvider) return null;
44517
- try {
44725
+ if (directProvider) try {
44518
44726
  const auth = await resolveDirectProviderAuth({
44519
44727
  provider: directProvider,
44520
44728
  config,
44521
44729
  agentDir,
44522
44730
  store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
44523
44731
  });
44524
- if (auth.apiKey) {
44732
+ if (auth.apiKey !== void 0) {
44525
44733
  if (directProvider === "anthropic" && auth.apiKey.startsWith("sk-ant-oat01-")) return null;
44526
44734
  return {
44527
- kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" ? "openai-direct" : "anthropic-direct",
44735
+ kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" || directProvider === "minimax" ? "openai-direct" : "anthropic-direct",
44528
44736
  provider
44529
44737
  };
44530
44738
  }
44531
44739
  } catch {}
44740
+ if (isOpenAICompatibleProviderConfig(resolveProviderConfig(provider, config))) try {
44741
+ if ((await resolveApiKeyForProvider({
44742
+ provider,
44743
+ cfg: config,
44744
+ agentDir,
44745
+ store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
44746
+ })).apiKey !== void 0) return {
44747
+ kind: "openai-direct",
44748
+ provider
44749
+ };
44750
+ } catch {}
44532
44751
  return null;
44533
44752
  }
44534
44753
  async function resolveNoxSoftRunnerStrategy(params) {
@@ -44559,11 +44778,33 @@ async function runNoxSoftEmbeddedAgent(params) {
44559
44778
  await params.onPartialReply?.(payload);
44560
44779
  await emitAgentEvent(params, "assistant", { text: payload.text });
44561
44780
  };
44562
- const strategy = await resolveNoxSoftRunnerStrategy({
44563
- provider: params.provider,
44564
- config: params.config,
44565
- agentDir: params.agentDir
44566
- });
44781
+ let strategy;
44782
+ try {
44783
+ strategy = await resolveNoxSoftRunnerStrategy({
44784
+ provider: params.provider,
44785
+ config: params.config,
44786
+ agentDir: params.agentDir
44787
+ });
44788
+ } catch (error) {
44789
+ const requestedProvider = normalizedRequestedRef?.provider ?? provider;
44790
+ const requestedModel = normalizedRequestedRef?.model;
44791
+ const failover = coerceToFailoverError(error, {
44792
+ provider: requestedProvider,
44793
+ model: requestedModel
44794
+ }) ?? new FailoverError(error instanceof Error ? error.message : String(error), {
44795
+ reason: classifyFailoverReason(error instanceof Error ? error.message : String(error)) ?? "unknown",
44796
+ provider: requestedProvider,
44797
+ model: requestedModel,
44798
+ cause: error instanceof Error ? error : void 0
44799
+ });
44800
+ await emitAgentEvent(params, "lifecycle", {
44801
+ phase: "error",
44802
+ startedAt,
44803
+ endedAt: Date.now(),
44804
+ error: failover.message
44805
+ });
44806
+ throw failover;
44807
+ }
44567
44808
  if (strategy.kind === "anthropic-direct") {
44568
44809
  await emitAgentEvent(params, "lifecycle", {
44569
44810
  phase: "start",
@@ -44573,7 +44814,8 @@ async function runNoxSoftEmbeddedAgent(params) {
44573
44814
  const result = normalizeRunnerResult({
44574
44815
  result: await runDirectWithProfileFallback({
44575
44816
  ...params,
44576
- directProvider: "anthropic",
44817
+ authProvider: "anthropic",
44818
+ runnerKind: "anthropic",
44577
44819
  timeoutMs,
44578
44820
  runId,
44579
44821
  emitPartial
@@ -44620,7 +44862,8 @@ async function runNoxSoftEmbeddedAgent(params) {
44620
44862
  const result = normalizeRunnerResult({
44621
44863
  result: await runDirectWithProfileFallback({
44622
44864
  ...params,
44623
- directProvider: "google",
44865
+ authProvider: "google",
44866
+ runnerKind: "google",
44624
44867
  timeoutMs,
44625
44868
  runId,
44626
44869
  emitPartial
@@ -44667,7 +44910,9 @@ async function runNoxSoftEmbeddedAgent(params) {
44667
44910
  const result = normalizeRunnerResult({
44668
44911
  result: await runDirectWithProfileFallback({
44669
44912
  ...params,
44670
- directProvider: "openai",
44913
+ authProvider: provider === "minimax" ? "minimax" : provider === "openai" ? "openai" : provider,
44914
+ runnerKind: "openai-compatible",
44915
+ openAIProvider: provider,
44671
44916
  timeoutMs,
44672
44917
  runId,
44673
44918
  emitPartial