@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,28 +1,28 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { a as resolveOAuthDir, i as resolveGatewayPort, n as resolveConfigPath, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-B-AkG5FD.js";
3
- import { A as isAcpSessionKey, C as normalizeAccountId$1, D as resolveThreadSessionKeys, E as resolveAgentIdFromSessionKey, M as parseAgentSessionKey, N as resolveThreadParentSessionKey, O as sanitizeAgentId, S as classifySessionKeyShape, T as normalizeMainKey, _ as DEFAULT_AGENT_ID, b as buildAgentPeerSessionKey, f as loadWorkspaceBootstrapFiles, g as DEFAULT_ACCOUNT_ID, j as isSubagentSessionKey, k as getSubagentDepth, l as ensureAgentWorkspace, m as resolveAnimaPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, u as filterBootstrapFilesForSession, v as DEFAULT_MAIN_KEY, w as normalizeAgentId, y as buildAgentMainSessionKey } from "./workspace-BFIZCnGo.js";
4
- import { A as normalizeLogLevel, D as getChildLogger, E as theme, T as isRich, a as unregisterActiveProgressLine, b as setVerbose, d as normalizeChannelId, h as setActivePluginRegistry, i as registerActiveProgressLine, n as defaultRuntime, p as getActivePluginRegistry, r as clearActiveProgressLine, s as CHAT_CHANNEL_ORDER, t as createSubsystemLogger, u as normalizeAnyChannelId, v as logVerbose, w as colorize, x as shouldLogVerbose } from "./subsystem-D1AJZPgG.js";
5
- 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-DUzVF5_D.js";
6
- import { c as resolveDefaultAgentId, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds } from "./agent-scope-CxBzAozu.js";
7
- import { A as supportsXHighThinking, At as assertSandboxPath, B as extractDeliveryInfo, Bt as normalizeToolName, C as listThinkingLevels, Ct as DEFAULT_UPLOAD_DIR, D as normalizeUsageDisplay, Dt as buildWorkspaceSkillSnapshot, E as normalizeThinkLevel, Et as buildWorkspaceSkillCommandSpecs, F as isLikelyContextOverflowError, Ft as applyOwnerOnlyToolPolicy, G as updateLastRoute, Gt as buildBootstrapContextFiles, H as loadSessionStore, Ht as stripPluginOnlyAllowlist, I as isTransientHttpError, It as buildPluginToolGroups, J as deliveryContextFromSession, Jt as HEARTBEAT_TOKEN, K as updateSessionStore, Kt as resolveBootstrapMaxChars, L as sanitizeUserFacingText, Lt as collectExplicitAllowlist, M as isCompactionFailureError, Mt as ensureBrowserControlAuth, N as isContextOverflowError, Nt as resolveBrowserControlAuth, O as normalizeVerboseLevel, Ot as resolvePluginSkillDirs, P as isFailoverErrorMessage, Pt as resolveSandboxConfigForAgent, Q as normalizeSessionDeliveryFields, R as ensureSandboxWorkspaceForSession, Rt as expandPolicyWithPluginGroups, S as formatXHighModelHint, St as saveMediaBuffer, T as normalizeReasoningLevel, Tt as getBridgeAuthForPort, U as readSessionUpdatedAt, Ut as compileGlobPatterns, V as appendAssistantMessageToSessionTranscript, Vt as resolveToolProfilePolicy, W as recordSessionMetaFromInbound, Wt as matchesAnyGlobPattern, X as mergeDeliveryContext, Xt as isSilentReplyText, Y as deliveryContextKey, Yt as SILENT_REPLY_TOKEN, Z as normalizeDeliveryContext, _ as throwIfAborted, _t as createBrowserRouteContext, at as resolveThreadFlag, b as initializeGlobalHookRunner, bt as resolveProfile, c as applyReplyThreading, ct as canonicalizeMainSessionAlias, d as shouldSuppressMessagingToolReplies, dt as deriveSessionMetaPatch, et as resolveSessionKey$1, f as createReplyToModeFilterForChannel, ft as getChannelDock, g as normalizeTargetForProvider, gt as resolveGroupSessionKey, h as normalizeChannelTargetInput, ht as normalizeChatType, it as resolveSessionResetType, j as classifyFailoverReason, jt as resolveSandboxedMediaSource, k as resolveResponseUsageMode, kt as assertMediaNotDataUrl, l as filterMessagingToolDuplicates, m as buildTargetResolverSignature, mt as resolveConversationLabel, nt as resolveChannelResetConfig, o as normalizeReplyPayloadsForDelivery, ot as DEFAULT_RESET_TRIGGERS, p as resolveReplyToMode, pt as listChannelDocks, q as updateSessionStoreEntry, qt as resolveBootstrapTotalMaxChars, rt as resolveSessionResetPolicy, s as applyReplyTagsToPayload, st as resolveFreshSessionTotalTokens, t as deliverOutboundPayloads, tt as evaluateSessionFreshness, u as isRenderablePayload, ut as resolveMainSessionKey, v as parseReplyDirectives, vt as registerBrowserRoutes, w as normalizeElevatedLevel, wt as resolvePathsWithinRoot, x as formatThinkingLevels, xt as getMediaDir, y as getGlobalHookRunner, yt as resolveBrowserConfig, z as resolveSandboxRuntimeStatus, zt as expandToolGroups } from "./deliver-d-CaN0uL.js";
3
+ import { A as isAcpSessionKey, C as normalizeAccountId$1, D as resolveThreadSessionKeys, E as resolveAgentIdFromSessionKey, M as parseAgentSessionKey, N as resolveThreadParentSessionKey, O as sanitizeAgentId, S as classifySessionKeyShape, T as normalizeMainKey, _ as DEFAULT_AGENT_ID, b as buildAgentPeerSessionKey, f as loadWorkspaceBootstrapFiles, g as DEFAULT_ACCOUNT_ID, j as isSubagentSessionKey, k as getSubagentDepth, l as ensureAgentWorkspace, m as resolveAnimaPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, u as filterBootstrapFilesForSession, v as DEFAULT_MAIN_KEY, w as normalizeAgentId, y as buildAgentMainSessionKey } from "./workspace-D6JhsXVL.js";
4
+ import { D as theme, E as isRich, O as getChildLogger, S as shouldLogVerbose, T as colorize, a as registerActiveProgressLine, c as CHAT_CHANNEL_ORDER, d as normalizeAnyChannelId, f as normalizeChannelId, g as setActivePluginRegistry, i as clearActiveProgressLine, j as normalizeLogLevel, m as getActivePluginRegistry, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger, x as setVerbose, y as logVerbose } from "./subsystem-CkjVkxc4.js";
5
+ 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-4nfFrGP7.js";
6
+ import { c as resolveDefaultAgentId, i as resolveAgentModelFallbacksOverride, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds } from "./agent-scope-CENGF2NR.js";
7
+ import { A as supportsXHighThinking, At as assertSandboxPath, B as extractDeliveryInfo, Bt as normalizeToolName, C as listThinkingLevels, Ct as DEFAULT_UPLOAD_DIR, D as normalizeUsageDisplay, Dt as buildWorkspaceSkillSnapshot, E as normalizeThinkLevel, Et as buildWorkspaceSkillCommandSpecs, F as isLikelyContextOverflowError, Ft as applyOwnerOnlyToolPolicy, G as updateLastRoute, Gt as buildBootstrapContextFiles, H as loadSessionStore, Ht as stripPluginOnlyAllowlist, I as isTransientHttpError, It as buildPluginToolGroups, J as deliveryContextFromSession, Jt as HEARTBEAT_TOKEN, K as updateSessionStore, Kt as resolveBootstrapMaxChars, L as sanitizeUserFacingText, Lt as collectExplicitAllowlist, M as isCompactionFailureError, Mt as ensureBrowserControlAuth, N as isContextOverflowError, Nt as resolveBrowserControlAuth, O as normalizeVerboseLevel, Ot as resolvePluginSkillDirs, P as isFailoverErrorMessage, Pt as resolveSandboxConfigForAgent, Q as normalizeSessionDeliveryFields, R as ensureSandboxWorkspaceForSession, Rt as expandPolicyWithPluginGroups, S as formatXHighModelHint, St as saveMediaBuffer, T as normalizeReasoningLevel, Tt as getBridgeAuthForPort, U as readSessionUpdatedAt, Ut as compileGlobPatterns, V as appendAssistantMessageToSessionTranscript, Vt as resolveToolProfilePolicy, W as recordSessionMetaFromInbound, Wt as matchesAnyGlobPattern, X as mergeDeliveryContext, Xt as isSilentReplyText, Y as deliveryContextKey, Yt as SILENT_REPLY_TOKEN, Z as normalizeDeliveryContext, _ as throwIfAborted, _t as createBrowserRouteContext, at as resolveThreadFlag, b as initializeGlobalHookRunner, bt as resolveProfile, c as applyReplyThreading, ct as canonicalizeMainSessionAlias, d as shouldSuppressMessagingToolReplies, dt as deriveSessionMetaPatch, et as resolveSessionKey$1, f as createReplyToModeFilterForChannel, ft as getChannelDock, g as normalizeTargetForProvider, gt as resolveGroupSessionKey, h as normalizeChannelTargetInput, ht as normalizeChatType, it as resolveSessionResetType, j as classifyFailoverReason, jt as resolveSandboxedMediaSource, k as resolveResponseUsageMode, kt as assertMediaNotDataUrl, l as filterMessagingToolDuplicates, m as buildTargetResolverSignature, mt as resolveConversationLabel, nt as resolveChannelResetConfig, o as normalizeReplyPayloadsForDelivery, ot as DEFAULT_RESET_TRIGGERS, p as resolveReplyToMode, pt as listChannelDocks, q as updateSessionStoreEntry, qt as resolveBootstrapTotalMaxChars, rt as resolveSessionResetPolicy, s as applyReplyTagsToPayload, st as resolveFreshSessionTotalTokens, t as deliverOutboundPayloads, tt as evaluateSessionFreshness, u as isRenderablePayload, ut as resolveMainSessionKey, v as parseReplyDirectives, vt as registerBrowserRoutes, w as normalizeElevatedLevel, wt as resolvePathsWithinRoot, x as formatThinkingLevels, xt as getMediaDir, y as getGlobalHookRunner, yt as resolveBrowserConfig, z as resolveSandboxRuntimeStatus, zt as expandToolGroups } from "./deliver-BJ0JgwhN.js";
8
8
  import { i as triggerInternalHook, r as registerInternalHook, t as createInternalHookEvent } from "./internal-hooks-CWw3Hgeu.js";
9
- import { C as unsetConfigValueAtPath, S as setConfigValueAtPath, _ as resetConfigOverrides, a as writeConfigFile, b as getConfigValueAtPath, c as parseDurationMs, d as discoverAnimaPlugins, f as applyTestPluginDefaults, g as getConfigOverrides, h as resolveMemorySlotDecision, i as resolveConfigSnapshotHash, l as validateJsonSchemaValue, m as resolveEnableState, n as loadConfig, o as validateConfigObjectWithPlugins, p as normalizePluginsConfig, r as readConfigFileSnapshot, u as loadPluginManifestRegistry, v as setConfigOverride, w as VERSION, x as parseConfigPath, y as unsetConfigOverride } from "./config-CweTwOtr.js";
10
- import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-HkVWMh--.js";
11
- import { a as modelKey, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, g as DEFAULT_PROVIDER, h as DEFAULT_MODEL, i as isCliProvider, m as DEFAULT_CONTEXT_TOKENS, n as buildConfiguredAllowlistKeys, o as normalizeModelRef, p as resolveThinkingDefault, r as buildModelAliasIndex, s as normalizeProviderId, t as buildAllowedModelSet, u as resolveConfiguredModelRef } from "./model-selection-DjsJGv1R.js";
12
- import { S as pickPrimaryTailnetIPv4, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as ensureChromeExtensionRelayServer, x as pickPrimaryLanIPv4, y as rawDataToString } from "./chrome-DLUBPBPz.js";
9
+ import { C as unsetConfigValueAtPath, S as setConfigValueAtPath, _ as resetConfigOverrides, a as writeConfigFile, b as getConfigValueAtPath, c as parseDurationMs, d as discoverAnimaPlugins, f as applyTestPluginDefaults, g as getConfigOverrides, h as resolveMemorySlotDecision, i as resolveConfigSnapshotHash, l as validateJsonSchemaValue, m as resolveEnableState, n as loadConfig, o as validateConfigObjectWithPlugins, p as normalizePluginsConfig, r as readConfigFileSnapshot, u as loadPluginManifestRegistry, v as setConfigOverride, w as VERSION, x as parseConfigPath, y as unsetConfigOverride } from "./config-LS-6Xgqo.js";
10
+ import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-BZ2Wha1e.js";
11
+ import { a as modelKey, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, g as DEFAULT_PROVIDER, h as DEFAULT_MODEL, i as isCliProvider, m as DEFAULT_CONTEXT_TOKENS, n as buildConfiguredAllowlistKeys, o as normalizeModelRef, p as resolveThinkingDefault, r as buildModelAliasIndex, s as normalizeProviderId, t as buildAllowedModelSet, u as resolveConfiguredModelRef } from "./model-selection-CVcwboE_.js";
12
+ import { S as pickPrimaryTailnetIPv4, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as ensureChromeExtensionRelayServer, x as pickPrimaryLanIPv4, y as rawDataToString } from "./chrome-D1Jm1Bdq.js";
13
13
  import { n as resolveCliName, t as formatCliCommand } from "./command-format-GLYKXXl-.js";
14
14
  import { n as formatErrorMessage } from "./errors-UbDRvfEx.js";
15
- import { A as detectMime, C as GATEWAY_CLIENT_MODES, E as getImageMetadata, F as kindFromMime, H as isBlockedHostname, I as normalizeMimeType$1, M as getFileExtension, N as imageMimeFromFormat, P as isAudioFileName, R as mediaKindFromMime, S as GATEWAY_CLIENT_IDS, U as isPrivateIpAddress, _ as isMarkdownCapableMessageChannel, a as chunkText, b as resolveGatewayMessageChannel, c as resolveTextChunkLimit, d as listChannelPlugins, f as normalizeChannelId$1, g as isInternalMessageChannel, i as chunkMarkdownTextWithMode, j as extensionForMime, k as resizeToJpeg, 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 listDeliverableMessageChannels, w as GATEWAY_CLIENT_NAMES, x as resolveMessageChannel, y as normalizeMessageChannel, z as SsrFBlockedError } from "./chunk-B4Kx-ocg.js";
16
- import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath$1 } from "./paths-Q6h5HODL.js";
17
- import { t as sanitizeToolResultImages } from "./tool-images-2qproko3.js";
18
- 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-DtWUl1-k.js";
19
- 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_aZwo00.js";
20
- import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-CZ1vD4VS.js";
21
- import { n as createAsyncLock } from "./soul-Bt8UNmTq.js";
22
- import { a as readNumberParam, c as readStringParam, i as jsonResult, n as imageResult, r as imageResultFromFile, s as readStringArrayParam } from "./common-Bf_TG87Y.js";
23
- 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-D2r8IO7g.js";
15
+ import { A as detectMime, C as GATEWAY_CLIENT_MODES, E as getImageMetadata, F as kindFromMime, H as isBlockedHostname, I as normalizeMimeType$1, M as getFileExtension, N as imageMimeFromFormat, P as isAudioFileName, R as mediaKindFromMime, S as GATEWAY_CLIENT_IDS, U as isPrivateIpAddress, _ as isMarkdownCapableMessageChannel, a as chunkText, b as resolveGatewayMessageChannel, c as resolveTextChunkLimit, d as listChannelPlugins, f as normalizeChannelId$1, g as isInternalMessageChannel, i as chunkMarkdownTextWithMode, j as extensionForMime, k as resizeToJpeg, 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 listDeliverableMessageChannels, w as GATEWAY_CLIENT_NAMES, x as resolveMessageChannel, y as normalizeMessageChannel, z as SsrFBlockedError } from "./chunk-B5s6o9xI.js";
16
+ import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath$1 } from "./paths-DAbvPUdJ.js";
17
+ import { t as sanitizeToolResultImages } from "./tool-images-BH8q2ZMq.js";
18
+ 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-jK6n3-Cc.js";
19
+ import { a as requireApiKey, c as resolveModelAuthMode, i as getCustomProviderApiKey, n as resolveMemorySearchConfig, o as resolveApiKeyForProvider, r as getApiKeyForModel, s as resolveEnvApiKey } from "./manager-kKsAUV03.js";
20
+ import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-DrhFRoal.js";
21
+ import { n as createAsyncLock } from "./soul-C0oc6fbP.js";
22
+ import { a as readNumberParam, c as readStringParam, i as jsonResult, n as imageResult, r as imageResultFromFile, s as readStringArrayParam } from "./common-C36MniDL.js";
23
+ 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-Z1MbDSH8.js";
24
24
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-62lQTR6C.js";
25
- import { d as webAuthExists, i as logoutWeb, n as getWebAuthAgeMs, r as logWebSelfId, s as readWebSelfId } from "./auth-store-Bd0GoqEL.js";
25
+ import { d as webAuthExists, i as logoutWeb, n as getWebAuthAgeMs, r as logWebSelfId, s as readWebSelfId } from "./auth-store-B4pR_KvR.js";
26
26
  import { createRequire } from "node:module";
27
27
  import * as fs$2 from "node:fs/promises";
28
28
  import fs from "node:fs/promises";
@@ -39,7 +39,7 @@ import crypto, { X509Certificate, randomUUID } from "node:crypto";
39
39
  import AjvPkg from "ajv";
40
40
  import net from "node:net";
41
41
  import { CURRENT_SESSION_VERSION, SessionManager, codingTools, createEditTool, createReadTool, createWriteTool, readTool } from "@mariozechner/pi-coding-agent";
42
- import { WebSocket as WebSocket$1 } from "ws";
42
+ import { WebSocket } from "ws";
43
43
  import { complete, completeSimple } from "@mariozechner/pi-ai";
44
44
  import { EdgeTTS } from "node-edge-tts";
45
45
  import { Readable } from "node:stream";
@@ -4821,7 +4821,7 @@ async function getMemorySearchManager(params) {
4821
4821
  if (cached) return { manager: cached };
4822
4822
  }
4823
4823
  try {
4824
- const { QmdMemoryManager } = await import("./qmd-manager-CpNYgSrx.js");
4824
+ const { QmdMemoryManager } = await import("./qmd-manager-BNL9Pl2G.js");
4825
4825
  const primary = await QmdMemoryManager.create({
4826
4826
  cfg: params.cfg,
4827
4827
  agentId: params.agentId,
@@ -4833,7 +4833,7 @@ async function getMemorySearchManager(params) {
4833
4833
  const wrapper = new FallbackMemoryManager({
4834
4834
  primary,
4835
4835
  fallbackFactory: async () => {
4836
- const { MemoryIndexManager } = await import("./manager-b_aZwo00.js").then((n) => n.t);
4836
+ const { MemoryIndexManager } = await import("./manager-kKsAUV03.js").then((n) => n.t);
4837
4837
  return await MemoryIndexManager.get(params);
4838
4838
  }
4839
4839
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4846,7 +4846,7 @@ async function getMemorySearchManager(params) {
4846
4846
  }
4847
4847
  }
4848
4848
  try {
4849
- const { MemoryIndexManager } = await import("./manager-b_aZwo00.js").then((n) => n.t);
4849
+ const { MemoryIndexManager } = await import("./manager-kKsAUV03.js").then((n) => n.t);
4850
4850
  return { manager: await MemoryIndexManager.get(params) };
4851
4851
  } catch (err) {
4852
4852
  return {
@@ -7421,7 +7421,7 @@ var GatewayClient = class {
7421
7421
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("ANIMA Gateway TLS fingerprint mismatch");
7422
7422
  });
7423
7423
  }
7424
- this.ws = new WebSocket$1(url, wsOptions);
7424
+ this.ws = new WebSocket(url, wsOptions);
7425
7425
  this.ws.on("open", () => {
7426
7426
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
7427
7427
  const tlsError = this.validateTlsFingerprint();
@@ -7624,7 +7624,7 @@ var GatewayClient = class {
7624
7624
  return null;
7625
7625
  }
7626
7626
  async request(method, params, opts) {
7627
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("ANIMA Gateway not connected");
7627
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("ANIMA Gateway not connected");
7628
7628
  const id = randomUUID();
7629
7629
  const frame = {
7630
7630
  type: "req",
@@ -8625,7 +8625,7 @@ async function routeReply(params) {
8625
8625
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
8626
8626
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
8627
8627
  try {
8628
- const { deliverOutboundPayloads } = await import("./deliver-d-CaN0uL.js").then((n) => n.n);
8628
+ const { deliverOutboundPayloads } = await import("./deliver-BJ0JgwhN.js").then((n) => n.n);
8629
8629
  return {
8630
8630
  ok: true,
8631
8631
  messageId: (await deliverOutboundPayloads({
@@ -12323,6 +12323,14 @@ const SEED_MODELS = [
12323
12323
  contextWindow: 3e5,
12324
12324
  reasoning: false,
12325
12325
  input: ["text", "image"]
12326
+ },
12327
+ {
12328
+ id: "glm-5",
12329
+ name: "GLM-5",
12330
+ provider: "zai",
12331
+ contextWindow: 2e5,
12332
+ reasoning: true,
12333
+ input: ["text"]
12326
12334
  }
12327
12335
  ];
12328
12336
  async function ensureAnimaModelsJson(config, agentDirOverride) {
@@ -12384,7 +12392,7 @@ async function loadModelCatalog(params) {
12384
12392
  });
12385
12393
  try {
12386
12394
  await ensureAnimaModelsJson(params?.config ?? loadConfig());
12387
- await (await import("./pi-auth-json-BmdBnmlZ.js")).ensurePiAuthJsonFromAuthProfiles(resolveAnimaAgentDir());
12395
+ await (await import("./pi-auth-json-CM3QDr9_.js")).ensurePiAuthJsonFromAuthProfiles(resolveAnimaAgentDir());
12388
12396
  const piSdk = await importPiSdk();
12389
12397
  const agentDir = resolveAnimaAgentDir();
12390
12398
  const { join } = await import("node:path");
@@ -14481,7 +14489,7 @@ async function createModelSelectionState(params) {
14481
14489
  }
14482
14490
  }
14483
14491
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
14484
- const { ensureAuthProfileStore } = await import("./auth-profiles-DtWUl1-k.js").then((n) => n.t);
14492
+ const { ensureAuthProfileStore } = await import("./auth-profiles-jK6n3-Cc.js").then((n) => n.t);
14485
14493
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
14486
14494
  const providerKey = normalizeProviderId(provider);
14487
14495
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -28932,6 +28940,63 @@ function orderCandidatesByPreference(params) {
28932
28940
 
28933
28941
  //#endregion
28934
28942
  //#region src/agents/model-fallback.ts
28943
+ const IMPLICIT_CODE_MODEL_FALLBACKS = [{
28944
+ whenProvider: "anthropic",
28945
+ provider: "openai-codex",
28946
+ model: "gpt-5.2-codex"
28947
+ }, {
28948
+ whenProvider: "anthropic",
28949
+ provider: "ollama",
28950
+ model: "qwen3-coder:latest"
28951
+ }];
28952
+ function isLocalBaseUrl(baseUrl) {
28953
+ const raw = baseUrl?.trim();
28954
+ if (!raw) return false;
28955
+ try {
28956
+ const host = new URL(raw).hostname.toLowerCase();
28957
+ return host === "localhost" || host === "127.0.0.1" || host === "0.0.0.0" || host === "::1" || host.endsWith(".local");
28958
+ } catch {
28959
+ return false;
28960
+ }
28961
+ }
28962
+ function isOpenAICompatibleApi(api) {
28963
+ const normalized = api?.trim();
28964
+ return normalized === "openai-completions" || normalized === "openai-responses";
28965
+ }
28966
+ function scoreLocalFallback(params) {
28967
+ const haystack = `${params.provider} ${params.model} ${params.name ?? ""}`.toLowerCase();
28968
+ if (haystack.includes("qwen3") && haystack.includes("coder")) return 100;
28969
+ if (haystack.includes("qwen") && haystack.includes("coder")) return 90;
28970
+ if (haystack.includes("noxsoft-tool-coder")) return 80;
28971
+ if (haystack.includes("tool-coder")) return 70;
28972
+ if (haystack.includes("coder")) return 60;
28973
+ if (haystack.includes("gpt-oss")) return 50;
28974
+ return 10;
28975
+ }
28976
+ function resolveImplicitLocalOpenAIFallbacks(cfg) {
28977
+ const providers = cfg?.models?.providers ?? {};
28978
+ const candidates = [];
28979
+ for (const [provider, entry] of Object.entries(providers)) {
28980
+ if (!isLocalBaseUrl(entry?.baseUrl) || !isOpenAICompatibleApi(entry?.api)) continue;
28981
+ for (const model of entry?.models ?? []) {
28982
+ const id = model?.id?.trim();
28983
+ if (!id) continue;
28984
+ candidates.push({
28985
+ provider,
28986
+ model: id,
28987
+ score: scoreLocalFallback({
28988
+ provider,
28989
+ model: id,
28990
+ name: model?.name
28991
+ })
28992
+ });
28993
+ }
28994
+ }
28995
+ return candidates.toSorted((a, b) => b.score - a.score || a.provider.localeCompare(b.provider) || a.model.localeCompare(b.model)).map(({ provider, model }) => ({
28996
+ provider,
28997
+ model
28998
+ }));
28999
+ }
28935
29000
  /**
28936
29001
  * Fallback abort check. Only treats explicit AbortError names as user aborts.
28937
29002
  * Message-based checks (e.g., "aborted") can mask timeouts and skip fallback.
@@ -29025,6 +29090,14 @@ function resolveFallbackCandidates(params) {
29025
29090
  if (!resolved) continue;
29026
29091
  addCandidate(resolved.ref, true);
29027
29092
  }
29093
+ if (params.fallbacksOverride === void 0) for (const implicit of IMPLICIT_CODE_MODEL_FALLBACKS) {
29094
+ if (normalizedPrimary.provider !== implicit.whenProvider) continue;
29095
+ addCandidate({
29096
+ provider: implicit.provider,
29097
+ model: implicit.model
29098
+ }, false);
29099
+ if (implicit.provider === "openai-codex") for (const localFallback of resolveImplicitLocalOpenAIFallbacks(params.cfg)) addCandidate(localFallback, false);
29100
+ }
29028
29101
  if (params.fallbacksOverride === void 0 && primary?.provider && primary.model) addCandidate({
29029
29102
  provider: primary.provider,
29030
29103
  model: primary.model
@@ -39013,7 +39086,7 @@ async function deliverSessionMaintenanceWarning(params) {
39013
39086
  return;
39014
39087
  }
39015
39088
  try {
39016
- const { deliverOutboundPayloads } = await import("./deliver-d-CaN0uL.js").then((n) => n.n);
39089
+ const { deliverOutboundPayloads } = await import("./deliver-BJ0JgwhN.js").then((n) => n.n);
39017
39090
  await deliverOutboundPayloads({
39018
39091
  cfg: params.cfg,
39019
39092
  channel,
@@ -39574,6 +39647,30 @@ function createTypingController(params) {
39574
39647
 
39575
39648
  //#endregion
39576
39649
  //#region src/auto-reply/reply/get-reply.ts
39650
+ /** Surfaces that represent real-time conversation (chat, DMs, voice). */
39651
+ const CONVERSATIONAL_CHAT_TYPES = new Set([
39652
+ "private",
39653
+ "group",
39654
+ "supergroup",
39655
+ "channel",
39656
+ "dm",
39657
+ "chat"
39658
+ ]);
39659
+ /**
39660
+ * Returns true when the inbound message originates from a real-time
39661
+ * conversational surface (NoxSoft chat, Telegram, WhatsApp, etc.)
39662
+ * rather than a programmatic/execution context (gateway API, heartbeat, CLI).
39663
+ */
39664
+ function isConversationalChannel(ctx) {
39665
+ if (ctx.CommandSource === "native") return false;
39666
+ const provider = ctx.Provider?.toLowerCase() ?? "";
39667
+ if (provider === "telegram" || provider === "whatsapp" || provider === "noxsoft") return true;
39668
+ const chatType = ctx.ChatType?.toLowerCase() ?? "";
39669
+ if (CONVERSATIONAL_CHAT_TYPES.has(chatType)) return true;
39670
+ const channel = typeof ctx.OriginatingChannel === "string" ? ctx.OriginatingChannel : "";
39671
+ if (channel && channel !== "gateway" && channel !== "cli") return true;
39672
+ return false;
39673
+ }
39577
39674
  function mergeSkillFilters(channelFilter, agentFilter) {
39578
39675
  const normalize = (list) => {
39579
39676
  if (!Array.isArray(list)) return;
@@ -39622,6 +39719,18 @@ async function getReplyFromConfig(ctx, opts, configOverride) {
39622
39719
  hasResolvedHeartbeatModelOverride = true;
39623
39720
  }
39624
39721
  }
39722
+ if (!opts?.isHeartbeat && !hasResolvedHeartbeatModelOverride && isConversationalChannel(ctx)) {
39723
+ const convRaw = agentCfg?.conversationalModel?.trim() ?? "";
39724
+ const convRef = convRaw ? resolveModelRefFromString({
39725
+ raw: convRaw,
39726
+ defaultProvider,
39727
+ aliasIndex
39728
+ }) : null;
39729
+ if (convRef) {
39730
+ provider = convRef.ref.provider;
39731
+ model = convRef.ref.model;
39732
+ }
39733
+ }
39625
39734
  const workspaceDir = (await ensureAgentWorkspace({
39626
39735
  dir: resolveAgentWorkspaceDir(cfg, agentId) ?? DEFAULT_AGENT_WORKSPACE_DIR,
39627
39736
  ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv
@@ -40442,7 +40551,7 @@ function createWhatsAppLoginTool() {
40442
40551
  force: Type.Optional(Type.Boolean())
40443
40552
  }),
40444
40553
  execute: async (_toolCallId, args) => {
40445
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-OUAGpDsU.js");
40554
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DLLfBALk.js");
40446
40555
  if ((args?.action ?? "start") === "wait") {
40447
40556
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
40448
40557
  return {
@@ -41372,23 +41481,23 @@ let webLoginQrPromise = null;
41372
41481
  let webChannelPromise = null;
41373
41482
  let whatsappActionsPromise = null;
41374
41483
  function loadWebOutbound() {
41375
- webOutboundPromise ??= import("./outbound-Bmft-5um.js").then((n) => n.t);
41484
+ webOutboundPromise ??= import("./outbound-DKY6oeyQ.js").then((n) => n.t);
41376
41485
  return webOutboundPromise;
41377
41486
  }
41378
41487
  function loadWebLogin() {
41379
- webLoginPromise ??= import("./login-DKkQ3Czu.js").then((n) => n.n);
41488
+ webLoginPromise ??= import("./login-BegD27g3.js").then((n) => n.n);
41380
41489
  return webLoginPromise;
41381
41490
  }
41382
41491
  function loadWebLoginQr() {
41383
- webLoginQrPromise ??= import("./login-qr-OUAGpDsU.js");
41492
+ webLoginQrPromise ??= import("./login-qr-DLLfBALk.js");
41384
41493
  return webLoginQrPromise;
41385
41494
  }
41386
41495
  function loadWebChannel() {
41387
- webChannelPromise ??= import("./web-CPPJ5y4c.js");
41496
+ webChannelPromise ??= import("./web-BxkEMATs.js");
41388
41497
  return webChannelPromise;
41389
41498
  }
41390
41499
  function loadWhatsAppActions() {
41391
- whatsappActionsPromise ??= import("./whatsapp-actions-Hr-W8vjY.js");
41500
+ whatsappActionsPromise ??= import("./whatsapp-actions--CtxOhlj.js");
41392
41501
  return whatsappActionsPromise;
41393
41502
  }
41394
41503
  function createPluginRuntime() {
@@ -43951,10 +44060,80 @@ async function runGeminiDirectAgent(params) {
43951
44060
  };
43952
44061
  }
43953
44062
 
44063
+ //#endregion
44064
+ //#region src/agents/local-model-installer.ts
44065
+ const DEFAULT_LOCAL_OLLAMA_MODEL = "qwen3-coder:latest";
44066
+ const installPromises = /* @__PURE__ */ new Map();
44067
+ function createInstallerError(message, cause) {
44068
+ const err = new Error(message);
44069
+ if (cause !== void 0) err.cause = cause;
44070
+ return err;
44071
+ }
44072
+ async function isOllamaModelInstalled(model = DEFAULT_LOCAL_OLLAMA_MODEL) {
44073
+ try {
44074
+ await runExec("ollama", ["show", model], 1e4);
44075
+ return true;
44076
+ } catch {
44077
+ return false;
44078
+ }
44079
+ }
44080
+ async function ensureLocalOllamaModelInstalled(params) {
44081
+ const model = params?.model?.trim() || DEFAULT_LOCAL_OLLAMA_MODEL;
44082
+ const timeoutMs = params?.timeoutMs ?? 72e5;
44083
+ const runtime = params?.runtime ?? createNonExitingRuntime();
44084
+ const existing = installPromises.get(model);
44085
+ if (existing) return await existing;
44086
+ const promise = (async () => {
44087
+ try {
44088
+ await runExec("ollama", ["list"], 1e4);
44089
+ } catch (error) {
44090
+ throw createInstallerError("Ollama is required but no local Ollama server is reachable. Start Ollama and retry.", error);
44091
+ }
44092
+ if (await isOllamaModelInstalled(model)) return {
44093
+ installed: true,
44094
+ pulled: false
44095
+ };
44096
+ runtime.log(`Installing local model via Ollama: ${model}`);
44097
+ const result = await runCommandWithTimeout([
44098
+ "ollama",
44099
+ "pull",
44100
+ model
44101
+ ], { timeoutMs });
44102
+ if (result.code !== 0) {
44103
+ const detail = (result.stderr || result.stdout).trim();
44104
+ throw createInstallerError(`Failed to install local Ollama model "${model}".${detail ? ` ${detail}` : ""}`);
44105
+ }
44106
+ if (!await isOllamaModelInstalled(model)) throw createInstallerError(`Ollama reported success, but model "${model}" is still missing.`);
44107
+ runtime.log(`Local model ready: ${model}`);
44108
+ return {
44109
+ installed: true,
44110
+ pulled: true
44111
+ };
44112
+ })();
44113
+ installPromises.set(model, promise);
44114
+ try {
44115
+ return await promise;
44116
+ } finally {
44117
+ installPromises.delete(model);
44118
+ }
44119
+ }
44120
+
43954
44121
  //#endregion
43955
44122
  //#region src/agents/openai-direct-runner.ts
43956
44123
  const log = createSubsystemLogger("agent/openai-direct");
43957
44124
  const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
44125
+ const DEFAULT_PROVIDER_BASE_URLS = {
44126
+ openai: DEFAULT_OPENAI_BASE_URL,
44127
+ minimax: "https://api.minimax.io/v1",
44128
+ ollama: "http://127.0.0.1:11434/v1",
44129
+ lmstudio: "http://127.0.0.1:1234/v1"
44130
+ };
44131
+ const PROVIDER_API_KEY_HINTS = {
44132
+ openai: "OPENAI_API_KEY",
44133
+ minimax: "MINIMAX_API_KEY",
44134
+ ollama: "OLLAMA_API_KEY",
44135
+ lmstudio: "LMSTUDIO_API_KEY"
44136
+ };
43958
44137
  const MODEL_MAP = {
43959
44138
  "gpt-5.4": "gpt-5.4",
43960
44139
  "gpt-5.2": "gpt-5.2",
@@ -43992,6 +44171,10 @@ function resolveModel(model) {
43992
44171
  const key = (model ?? "default").trim().toLowerCase() || "default";
43993
44172
  return MODEL_MAP[key] ?? key;
43994
44173
  }
44174
+ function isToolUnsupportedError(body) {
44175
+ const normalized = body.toLowerCase();
44176
+ return normalized.includes("does not support tools") || normalized.includes("tool is not supported");
44177
+ }
43995
44178
  /**
43996
44179
  * Clean a JSON Schema for OpenAI's function calling.
43997
44180
  * OpenAI is stricter than most — no unsupported keywords.
@@ -44018,8 +44201,10 @@ function cleanSchemaForOpenAI(schema) {
44018
44201
  */
44019
44202
  async function runOpenAIDirectAgent(params) {
44020
44203
  const started = Date.now();
44204
+ const provider = (params.provider ?? "openai").trim() || "openai";
44021
44205
  const resolvedModel = resolveModel(params.model);
44022
- log.info(`direct api exec: model=${resolvedModel} promptChars=${params.prompt.length}`);
44206
+ if (provider === "ollama" && resolvedModel === DEFAULT_LOCAL_OLLAMA_MODEL) await ensureLocalOllamaModelInstalled({ model: resolvedModel });
44207
+ log.info(`direct api exec: provider=${provider} model=${resolvedModel} promptChars=${params.prompt.length}`);
44023
44208
  const workspaceDir = resolveRunWorkspaceDir({
44024
44209
  workspaceDir: params.workspaceDir,
44025
44210
  sessionKey: params.sessionKey,
@@ -44030,7 +44215,7 @@ async function runOpenAIDirectAgent(params) {
44030
44215
  config: params.config,
44031
44216
  workspaceDir,
44032
44217
  sessionKey: params.sessionKey,
44033
- modelProvider: "openai",
44218
+ modelProvider: provider,
44034
44219
  modelId: resolvedModel
44035
44220
  });
44036
44221
  const openaiTools = executableTools.map((t) => ({
@@ -44076,7 +44261,7 @@ async function runOpenAIDirectAgent(params) {
44076
44261
  docsPath: docsPath ?? void 0,
44077
44262
  tools: executableTools,
44078
44263
  contextFiles,
44079
- modelDisplay: `openai/${resolvedModel}`,
44264
+ modelDisplay: `${provider}/${resolvedModel}`,
44080
44265
  agentId: sessionAgentId
44081
44266
  });
44082
44267
  let history = await loadSessionHistory(params.sessionFile);
@@ -44100,7 +44285,8 @@ async function runOpenAIDirectAgent(params) {
44100
44285
  let isDone = false;
44101
44286
  let loopCount = 0;
44102
44287
  const maxLoops = 20;
44103
- const baseUrl = params.config?.models?.providers?.openai?.baseUrl?.trim() || DEFAULT_OPENAI_BASE_URL;
44288
+ let toolUseEnabled = openaiTools.length > 0;
44289
+ 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;
44104
44290
  while (!isDone && loopCount < maxLoops) {
44105
44291
  loopCount++;
44106
44292
  const requestBody = {
@@ -44110,7 +44296,7 @@ async function runOpenAIDirectAgent(params) {
44110
44296
  temperature: 1,
44111
44297
  stream: true
44112
44298
  };
44113
- if (openaiTools.length > 0) {
44299
+ if (toolUseEnabled && openaiTools.length > 0) {
44114
44300
  requestBody.tools = openaiTools;
44115
44301
  requestBody.tool_choice = "auto";
44116
44302
  }
@@ -44122,8 +44308,8 @@ async function runOpenAIDirectAgent(params) {
44122
44308
  method: "POST",
44123
44309
  headers: {
44124
44310
  "Content-Type": "application/json",
44125
- Authorization: `Bearer ${params.apiKey}`,
44126
- "User-Agent": `anima/7.0.0 (openai-direct-runner; ${os.platform()})`
44311
+ "User-Agent": `anima/7.0.0 (openai-direct-runner; ${os.platform()})`,
44312
+ ...params.apiKey?.trim() ? { Authorization: `Bearer ${params.apiKey}` } : {}
44127
44313
  },
44128
44314
  body: JSON.stringify(requestBody),
44129
44315
  signal: controller.signal
@@ -44131,11 +44317,20 @@ async function runOpenAIDirectAgent(params) {
44131
44317
  clearTimeout(timeoutHandle);
44132
44318
  if (!response.ok) {
44133
44319
  const body = await response.text().catch(() => "");
44320
+ if (response.status === 400 && toolUseEnabled && isToolUnsupportedError(body)) {
44321
+ log.warn("openai-compatible provider rejected tools; retrying without tools", {
44322
+ provider,
44323
+ model: resolvedModel
44324
+ });
44325
+ toolUseEnabled = false;
44326
+ continue;
44327
+ }
44134
44328
  const isAuth = response.status === 401 || response.status === 403;
44135
44329
  const isRateLimit = response.status === 429;
44136
44330
  const rateHint = isRateLimit ? " — rate limit hit, will retry next heartbeat." : "";
44137
- const authHint = isAuth ? "API key may be invalid. Check OPENAI_API_KEY environment variable." : "";
44138
- log.error(`openai api error: HTTP ${response.status}${authHint}${rateHint}`, {
44331
+ const apiKeyHint = PROVIDER_API_KEY_HINTS[provider] ?? "API key";
44332
+ const authHint = isAuth ? ` API key may be invalid. Check ${apiKeyHint}.` : "";
44333
+ log.error(`${provider} api error: HTTP ${response.status}${authHint}${rateHint}`, {
44139
44334
  status: response.status,
44140
44335
  body: body.slice(0, 500)
44141
44336
  });
@@ -44263,7 +44458,8 @@ async function runOpenAIDirectAgent(params) {
44263
44458
  log.info(`openai api complete: ${durationMs}ms`, {
44264
44459
  inputTokens: totalInputTokens,
44265
44460
  outputTokens: totalOutputTokens,
44266
- model: resolvedModel
44461
+ model: resolvedModel,
44462
+ provider
44267
44463
  });
44268
44464
  return {
44269
44465
  status: "completed",
@@ -44273,7 +44469,7 @@ async function runOpenAIDirectAgent(params) {
44273
44469
  durationMs,
44274
44470
  agentMeta: {
44275
44471
  model: resolvedModel,
44276
- provider: "openai",
44472
+ provider,
44277
44473
  usage: {
44278
44474
  input: totalInputTokens,
44279
44475
  output: totalOutputTokens
@@ -44305,10 +44501,22 @@ async function emitAgentEvent(params, stream, data) {
44305
44501
  data
44306
44502
  });
44307
44503
  }
44504
+ function resolveProviderConfig(provider, config) {
44505
+ const providers = config?.models?.providers ?? {};
44506
+ const direct = providers[provider];
44507
+ if (direct) return direct;
44508
+ const normalized = normalizeProviderId(provider);
44509
+ return Object.entries(providers).find(([key]) => normalizeProviderId(key) === normalized)?.[1];
44510
+ }
44511
+ function isOpenAICompatibleProviderConfig(entry) {
44512
+ const api = entry?.api?.trim();
44513
+ return api === "openai-completions" || api === "openai-responses";
44514
+ }
44308
44515
  function resolveDirectAuthProvider(provider) {
44309
44516
  if (provider === "anthropic" || provider === "claude") return "anthropic";
44310
44517
  if (provider === "google" || provider === "gemini") return "google";
44311
44518
  if (provider === "openai") return "openai";
44519
+ if (provider === "minimax") return "minimax";
44312
44520
  return null;
44313
44521
  }
44314
44522
  function resolveProfileFailureReason(result) {
@@ -44400,7 +44608,7 @@ async function runDirectWithProfileFallback(params) {
44400
44608
  let lastResult = null;
44401
44609
  for (;;) {
44402
44610
  const auth = await resolveDirectProviderAuth({
44403
- provider: params.directProvider,
44611
+ provider: params.authProvider,
44404
44612
  config: params.config,
44405
44613
  agentDir: params.agentDir,
44406
44614
  preferredProfile,
@@ -44412,7 +44620,7 @@ async function runDirectWithProfileFallback(params) {
44412
44620
  meta: {
44413
44621
  durationMs: 0,
44414
44622
  error: {
44415
- message: `Auth fallback loop detected for ${params.directProvider}.`,
44623
+ message: `Auth fallback loop detected for ${params.authProvider}.`,
44416
44624
  kind: "unknown"
44417
44625
  }
44418
44626
  }
@@ -44435,11 +44643,12 @@ async function runDirectWithProfileFallback(params) {
44435
44643
  onPartialReply: params.emitPartial,
44436
44644
  onAssistantMessageStart: params.onAssistantMessageStart
44437
44645
  };
44438
- const result = params.directProvider === "anthropic" ? await runAnthropicDirectAgent({
44646
+ const result = params.runnerKind === "anthropic" ? await runAnthropicDirectAgent({
44439
44647
  ...directRunParams,
44440
44648
  token: auth.apiKey ?? ""
44441
- }) : params.directProvider === "openai" ? await runOpenAIDirectAgent({
44649
+ }) : params.runnerKind === "openai-compatible" ? await runOpenAIDirectAgent({
44442
44650
  ...directRunParams,
44651
+ provider: params.openAIProvider ?? params.authProvider,
44443
44652
  apiKey: auth.apiKey ?? ""
44444
44653
  }) : await runGeminiDirectAgent({
44445
44654
  ...directRunParams,
@@ -44454,7 +44663,7 @@ async function runDirectWithProfileFallback(params) {
44454
44663
  });
44455
44664
  await markAuthProfileGood({
44456
44665
  store,
44457
- provider: params.directProvider,
44666
+ provider: params.authProvider,
44458
44667
  profileId: auth.profileId,
44459
44668
  agentDir: params.agentDir
44460
44669
  });
@@ -44476,22 +44685,32 @@ async function runDirectWithProfileFallback(params) {
44476
44685
  }
44477
44686
  async function resolveDirectStrategy(provider, config, agentDir) {
44478
44687
  const directProvider = resolveDirectAuthProvider(provider);
44479
- if (!directProvider) return null;
44480
- try {
44688
+ if (directProvider) try {
44481
44689
  const auth = await resolveDirectProviderAuth({
44482
44690
  provider: directProvider,
44483
44691
  config,
44484
44692
  agentDir,
44485
44693
  store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
44486
44694
  });
44487
- if (auth.apiKey) {
44695
+ if (auth.apiKey !== void 0) {
44488
44696
  if (directProvider === "anthropic" && auth.apiKey.startsWith("sk-ant-oat01-")) return null;
44489
44697
  return {
44490
- kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" ? "openai-direct" : "anthropic-direct",
44698
+ kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" || directProvider === "minimax" ? "openai-direct" : "anthropic-direct",
44491
44699
  provider
44492
44700
  };
44493
44701
  }
44494
44702
  } catch {}
44703
+ if (isOpenAICompatibleProviderConfig(resolveProviderConfig(provider, config))) try {
44704
+ if ((await resolveApiKeyForProvider({
44705
+ provider,
44706
+ cfg: config,
44707
+ agentDir,
44708
+ store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
44709
+ })).apiKey !== void 0) return {
44710
+ kind: "openai-direct",
44711
+ provider
44712
+ };
44713
+ } catch {}
44495
44714
  return null;
44496
44715
  }
44497
44716
  async function resolveNoxSoftRunnerStrategy(params) {
@@ -44522,11 +44741,33 @@ async function runNoxSoftEmbeddedAgent(params) {
44522
44741
  await params.onPartialReply?.(payload);
44523
44742
  await emitAgentEvent(params, "assistant", { text: payload.text });
44524
44743
  };
44525
- const strategy = await resolveNoxSoftRunnerStrategy({
44526
- provider: params.provider,
44527
- config: params.config,
44528
- agentDir: params.agentDir
44529
- });
44744
+ let strategy;
44745
+ try {
44746
+ strategy = await resolveNoxSoftRunnerStrategy({
44747
+ provider: params.provider,
44748
+ config: params.config,
44749
+ agentDir: params.agentDir
44750
+ });
44751
+ } catch (error) {
44752
+ const requestedProvider = normalizedRequestedRef?.provider ?? provider;
44753
+ const requestedModel = normalizedRequestedRef?.model;
44754
+ const failover = coerceToFailoverError(error, {
44755
+ provider: requestedProvider,
44756
+ model: requestedModel
44757
+ }) ?? new FailoverError(error instanceof Error ? error.message : String(error), {
44758
+ reason: classifyFailoverReason(error instanceof Error ? error.message : String(error)) ?? "unknown",
44759
+ provider: requestedProvider,
44760
+ model: requestedModel,
44761
+ cause: error instanceof Error ? error : void 0
44762
+ });
44763
+ await emitAgentEvent(params, "lifecycle", {
44764
+ phase: "error",
44765
+ startedAt,
44766
+ endedAt: Date.now(),
44767
+ error: failover.message
44768
+ });
44769
+ throw failover;
44770
+ }
44530
44771
  if (strategy.kind === "anthropic-direct") {
44531
44772
  await emitAgentEvent(params, "lifecycle", {
44532
44773
  phase: "start",
@@ -44536,7 +44777,8 @@ async function runNoxSoftEmbeddedAgent(params) {
44536
44777
  const result = normalizeRunnerResult({
44537
44778
  result: await runDirectWithProfileFallback({
44538
44779
  ...params,
44539
- directProvider: "anthropic",
44780
+ authProvider: "anthropic",
44781
+ runnerKind: "anthropic",
44540
44782
  timeoutMs,
44541
44783
  runId,
44542
44784
  emitPartial
@@ -44583,7 +44825,8 @@ async function runNoxSoftEmbeddedAgent(params) {
44583
44825
  const result = normalizeRunnerResult({
44584
44826
  result: await runDirectWithProfileFallback({
44585
44827
  ...params,
44586
- directProvider: "google",
44828
+ authProvider: "google",
44829
+ runnerKind: "google",
44587
44830
  timeoutMs,
44588
44831
  runId,
44589
44832
  emitPartial
@@ -44630,7 +44873,9 @@ async function runNoxSoftEmbeddedAgent(params) {
44630
44873
  const result = normalizeRunnerResult({
44631
44874
  result: await runDirectWithProfileFallback({
44632
44875
  ...params,
44633
- directProvider: "openai",
44876
+ authProvider: provider === "minimax" ? "minimax" : provider === "openai" ? "openai" : provider,
44877
+ runnerKind: "openai-compatible",
44878
+ openAIProvider: provider,
44634
44879
  timeoutMs,
44635
44880
  runId,
44636
44881
  emitPartial