activeclaw 2026.2.11 → 2026.2.13

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 (531) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/{accounts-DbzMEfKN.js → accounts-DCDeFTra.js} +2 -2
  3. package/dist/{accounts-C2elk6PC.js → accounts-DeqIQjo1.js} +2 -2
  4. package/dist/{acp-cli-CVFTdsQY.js → acp-cli-CeYI4XRd.js} +15 -16
  5. package/dist/{acp-cli-BpJwIyLl.js → acp-cli-rNbGXICg.js} +14 -15
  6. package/dist/{agent-Bz1r5O8q.js → agent-BvNJF5QL.js} +19 -15
  7. package/dist/{agent-22-R4bNS.js → agent-CyMxTyrG.js} +20 -16
  8. package/dist/{agent-scope-D8miw9q_.js → agent-scope-BIEhVP4_.js} +172 -4
  9. package/dist/{agent-scope-CGmuusG9.js → agent-scope-CQCus0rI.js} +3 -3
  10. package/dist/{agent-scope-DQuy3dwI.js → agent-scope-CsRbLH4l.js} +4 -4
  11. package/dist/{agent-scope-BEf5crnU.js → agent-scope-DPIFau3f.js} +5 -1
  12. package/dist/audio-preflight-BU8W7uxc.js +60 -0
  13. package/dist/audio-preflight-CGsumMzb.js +60 -0
  14. package/dist/audio-preflight-SLmkJI6-.js +74 -0
  15. package/dist/audio-preflight-jZc5mFCZ.js +71 -0
  16. package/dist/{audit-C4wLaF0D.js → audit-Dmww_503.js} +71 -19
  17. package/dist/{audit-CY-yopxa.js → audit-wPu26VMb.js} +72 -20
  18. package/dist/{tailscale-DU6DgqVy.js → auth-9x3lqfIY.js} +208 -3
  19. package/dist/{tailscale-Cu-2HNvU.js → auth-CQNl_IaI.js} +190 -3
  20. package/dist/{auth-health-BFKUoCwJ.js → auth-health-C4L4FGBA.js} +1 -1
  21. package/dist/{auth-health-d7BMZlWG.js → auth-health-j6epgQbq.js} +1 -1
  22. package/dist/{auth-profiles-Bv1AEm-Y.js → auth-profiles-ByNs3eEm.js} +87 -31
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/boot-md/handler.js +28 -22
  25. package/dist/bundled/session-memory/handler.js +33 -22
  26. package/dist/{call-7yrB6v4I.js → call-DVYCIV8m.js} +5 -5
  27. package/dist/{call-Bek1xlgk.js → call-SolyGS1r.js} +6 -6
  28. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  29. package/dist/{channel-options-3mdYN0C_.js → channel-options-BwC2yQcR.js} +4 -4
  30. package/dist/{channel-options-DJ0b1m7B.js → channel-options-Cq9BVDkP.js} +12 -7
  31. package/dist/{channel-selection-RZimme3j.js → channel-selection-D4D6ImhN.js} +2 -2
  32. package/dist/{channel-selection-B9b7Kuit.js → channel-selection-MZAHm4U8.js} +2 -2
  33. package/dist/{channels-cli-CYbK2Dku.js → channels-cli-9Dsk9Qm7.js} +57 -53
  34. package/dist/{channels-cli-BFznbGOs.js → channels-cli-BJUppQll.js} +59 -55
  35. package/dist/{channels-status-issues-B3KkflfR.js → channels-status-issues-D7GSV1GS.js} +1 -1
  36. package/dist/{channels-status-issues-DQkRaZts.js → channels-status-issues-DDAWeT-6.js} +1 -1
  37. package/dist/{chrome-Db7w64LF.js → chrome-BfB6JdKF.js} +4 -4
  38. package/dist/{chrome-Dm-EgOjJ.js → chrome-Cvr-57lg.js} +6 -5
  39. package/dist/{chrome-CF16STk9.js → chrome-DL0avO8n.js} +2 -1
  40. package/dist/{chrome-yIKmOzCO.js → chrome-foEwx3lN.js} +5 -4
  41. package/dist/{clack-prompter-BCiBkJVr.js → clack-prompter-Bz3Mmcl-.js} +5 -5
  42. package/dist/{clack-prompter-DuBVnTKy.js → clack-prompter-ChCGXfyt.js} +4 -4
  43. package/dist/cli/daemon-cli.js +1 -1
  44. package/dist/{cli-Cl3PdJei.js → cli-ZR9ugUBX.js} +42 -38
  45. package/dist/cli-miPe4Ujz.js +93 -0
  46. package/dist/{client-6xKrRC-1.js → client-BrYfyoDK.js} +54 -5
  47. package/dist/{client-DMloFP_O.js → client-CTwXnRl7.js} +54 -5
  48. package/dist/{command-format-ayFsmwwz.js → command-format-Bxe0mWee.js} +1 -1
  49. package/dist/{command-options-BTAzyqqb.js → command-options-BvgxzPbK.js} +9 -4
  50. package/dist/{commands-CjEGXOZ_.js → commands-BX_OIIVR.js} +4 -4
  51. package/dist/{completion-cli-DrJGfJGl.js → completion-cli-CR77-jyv.js} +3 -3
  52. package/dist/{completion-cli-DOec3E2Z.js → completion-cli-DnjpxAag.js} +30 -30
  53. package/dist/{config-B00lvFac.js → config-Bdhomfei.js} +21 -7
  54. package/dist/{config-XBdA0ciN.js → config-BvMsmctM.js} +83 -9
  55. package/dist/{config-BqGVMf1y.js → config-QYrbd7x7.js} +60 -6
  56. package/dist/{config--NUdpACy.js → config-aFQssWKX.js} +21 -7
  57. package/dist/{config-guard-4kCO_rnQ.js → config-guard-CljaSxJd.js} +160 -51
  58. package/dist/{configure-B69emwZv.js → configure-BXLiucXo.js} +28 -25
  59. package/dist/{configure-sMhpLzFf.js → configure-BYPqXzGZ.js} +28 -25
  60. package/dist/control-auth-8Cf4WXpR.js +54 -0
  61. package/dist/control-auth-DBCu3qyv.js +54 -0
  62. package/dist/{control-service-Db_1V-KY.js → control-service-B5KnPqGP.js} +11 -5
  63. package/dist/{control-service-IRAmbcbN.js → control-service-DKnttEus.js} +10 -4
  64. package/dist/control-ui/assets/{index-CnB9IO4a.js → index-B4LPvte9.js} +369 -369
  65. package/dist/control-ui/assets/index-B4LPvte9.js.map +1 -0
  66. package/dist/control-ui/index.html +1 -1
  67. package/dist/{cron-cli-Cum2324v.js → cron-cli-D7BRjDv2.js} +20 -20
  68. package/dist/{cron-cli-DhUWcYdk.js → cron-cli-z1zk_FXQ.js} +19 -19
  69. package/dist/{daemon-cli-q7nkEF5-.js → daemon-cli-BDkU2ocb.js} +60 -21
  70. package/dist/{daemon-cli-CTC2CHci.js → daemon-cli-cNSF93-v.js} +59 -20
  71. package/dist/{daemon-runtime-c0uXH4Dl.js → daemon-runtime-B0tg_LsX.js} +3 -3
  72. package/dist/{daemon-runtime-UsK-tOty.js → daemon-runtime-Bsjeut6m.js} +3 -3
  73. package/dist/{deliver-hf-WKyWd.js → deliver-CIU9Npgs.js} +373 -281
  74. package/dist/{deliver-CT6KiDqO.js → deliver-DYYCo1G7.js} +369 -278
  75. package/dist/{deliver-T9d44OpZ.js → deliver-LsxKETro.js} +371 -279
  76. package/dist/{deliver-CPy8jYj9.js → deliver-xUU3mGHo.js} +369 -277
  77. package/dist/{deps-Bv1kLtwo.js → deps-QSwGcoNZ.js} +2 -2
  78. package/dist/{deps-DFQdAWQc.js → deps-lAAA2zYI.js} +2 -2
  79. package/dist/{devices-cli-Cm7U1py9.js → devices-cli-BG3-2oqt.js} +14 -14
  80. package/dist/{devices-cli-ZpjlfK-e.js → devices-cli-VIQtOvt_.js} +14 -14
  81. package/dist/{directory-cli-B14TUSJA.js → directory-cli-BCJwjVC0.js} +16 -16
  82. package/dist/{directory-cli-67kzd4I5.js → directory-cli-jYzZ02gk.js} +14 -14
  83. package/dist/{dispatcher-3ElQWGVI.js → dispatcher-DY51b-Zc.js} +2 -2
  84. package/dist/{dns-cli-CU-xfhTN.js → dns-cli-DHIiMJjS.js} +12 -12
  85. package/dist/{dns-cli-Dqj7O6Q_.js → dns-cli-pZlv87Ib.js} +11 -11
  86. package/dist/{docs-cli-CamBqzb5.js → docs-cli-2JDiwfzP.js} +8 -8
  87. package/dist/{docs-cli-Cj3L5oqB.js → docs-cli-BhkYqoIQ.js} +7 -7
  88. package/dist/{doctor-BV1kvbMm.js → doctor-Bf8EhNtA.js} +36 -35
  89. package/dist/{doctor-BJirShBi.js → doctor-sYG5V4Co.js} +34 -33
  90. package/dist/entry.js +56 -18
  91. package/dist/{env-BxRc6wWv.js → env-ONzUVAG2.js} +1 -1
  92. package/dist/{exec-CijMSZd9.js → exec-B8lXct-k.js} +503 -14
  93. package/dist/{exec-B8JKbXKW.js → exec-CACT5OAW.js} +1 -1
  94. package/dist/{exec-57A8Rlc8.js → exec-CJFFoM7H.js} +32 -13
  95. package/dist/{exec-Cv_Ofd1m.js → exec-YIosokWE.js} +1 -1
  96. package/dist/{exec-approvals-cli-DEzz9Iai.js → exec-approvals-cli-7LH0lwhO.js} +21 -21
  97. package/dist/{exec-approvals-cli-DhXj3hQX.js → exec-approvals-cli-apGnQbpj.js} +21 -21
  98. package/dist/extensionAPI.js +7733 -8746
  99. package/dist/fetch-DmiOpALK.js +274 -0
  100. package/dist/fetch-timeout-BEtUjM1S.js +274 -0
  101. package/dist/fetch-timeout-DEoXG_SF.js +274 -0
  102. package/dist/fetch-timeout-DTK9vxex.js +274 -0
  103. package/dist/{gateway-cli-D1EdIq8I.js → gateway-cli-DUdYxlZS.js} +491 -136
  104. package/dist/{gateway-cli-B_xDUDy2.js → gateway-cli-DbvWmE-9.js} +495 -140
  105. package/dist/{gateway-rpc-3B5y445n.js → gateway-rpc-BByb2Snz.js} +3 -3
  106. package/dist/{gateway-rpc-BoL2vinh.js → gateway-rpc-wXSCUZXj.js} +3 -3
  107. package/dist/{github-copilot-auth-Omqrto0J.js → github-copilot-auth-D7ewvpMd.js} +205 -17
  108. package/dist/{github-copilot-auth-CZxurvdz.js → github-copilot-auth-DDispnyz.js} +205 -17
  109. package/dist/{github-copilot-token-SLWintYd.js → github-copilot-token-Cfs0Wxr8.js} +1 -1
  110. package/dist/{gmail-setup-utils-BXQKsLtI.js → gmail-setup-utils-Cfns8TQx.js} +3 -3
  111. package/dist/{gmail-setup-utils-CHcssBOA.js → gmail-setup-utils-DJb-_5kO.js} +4 -4
  112. package/dist/{health-format-Dy1caGsq.js → health-format-KGPokKJH.js} +97 -42
  113. package/dist/{health-format-DrGFg8bx.js → health-format-LZDxu3rv.js} +95 -40
  114. package/dist/{help-format-DAj7l5uV.js → help-format-C48TXngO.js} +1 -1
  115. package/dist/{help-format-CUnac_bT.js → help-format-R5fLToDw.js} +1 -1
  116. package/dist/{hooks-cli-ptEf6TIM.js → hooks-cli-CT8JCRkH.js} +51 -46
  117. package/dist/{hooks-cli-Bhf5VRp1.js → hooks-cli-S1MKumJO.js} +49 -44
  118. package/dist/{hooks-status-Br-2bK2G.js → hooks-status-Cw0xD8Lt.js} +3 -3
  119. package/dist/{hooks-status-DNQJSa4B.js → hooks-status-D9MhwHRp.js} +3 -3
  120. package/dist/{image-rOFfK3PJ.js → image-Brk1sJbw.js} +10 -7
  121. package/dist/{image-fUwR7slg.js → image-C4Nn2p3e.js} +10 -7
  122. package/dist/{image-Ds4NLGPR.js → image-DgtfXMcX.js} +9 -6
  123. package/dist/{image-Dnnxt82I.js → image-RKwc3fsL.js} +8 -5
  124. package/dist/index.js +208 -97
  125. package/dist/{installs-CRSjQxbR.js → installs-CrLcWYHe.js} +8 -7
  126. package/dist/{installs-89zeUsVn.js → installs-DscWb9b9.js} +8 -7
  127. package/dist/{links-7M-j83As.js → links-B8LAzWwg.js} +1 -1
  128. package/dist/{links-C591fM9M.js → links-Eax1UO3w.js} +1 -1
  129. package/dist/llm-slug-generator.js +18 -19
  130. package/dist/{loader-wXwp4rZJ.js → loader-KjT074JR.js} +5722 -6888
  131. package/dist/{logging-MMRGFxGI.js → logging-BAyPwvdH.js} +1 -1
  132. package/dist/{logging-DuK6YXuK.js → logging-CRq4h04P.js} +2 -2
  133. package/dist/{login-qr-wM8BnKJh.js → login-qr-B6ZgAuIf.js} +5 -5
  134. package/dist/{login-qr-CPEsT6dN.js → login-qr-Bua-p0nG.js} +3 -4
  135. package/dist/{login-qr-CGEu5TU-.js → login-qr-CuvemJj4.js} +6 -6
  136. package/dist/{login-qr-DH150tTp.js → login-qr-Djr1JfIf.js} +2 -2
  137. package/dist/{logs-cli-ClgkHnfT.js → logs-cli-9IAV7rWY.js} +38 -22
  138. package/dist/{logs-cli-CmfINsOj.js → logs-cli-EiKzUFPa.js} +37 -21
  139. package/dist/{manager-DYo4PlVM.js → manager-BIMh_eSm.js} +7 -8
  140. package/dist/{manager-D6EbxDV4.js → manager-CwinWQoz.js} +5 -5
  141. package/dist/{manager-BbnHek5T.js → manager-DkqF1GiK.js} +9 -9
  142. package/dist/{manager-CcVYv0N5.js → manager-T1XfGchB.js} +8 -8
  143. package/dist/{manifest-registry-3It8Z8yN.js → manifest-registry-CQhdnDBZ.js} +40 -2
  144. package/dist/{manifest-registry-D5SiA3xq.js → manifest-registry-u0okVSkU.js} +40 -2
  145. package/dist/{message-channel-Cu61-7H6.js → message-channel-BLi2a6Yw.js} +1 -1
  146. package/dist/{message-channel-BlgPSDAh.js → message-channel-C_MmebBt.js} +1 -1
  147. package/dist/{model-auth-ioeR_zLX.js → model-auth-CabXIF6O.js} +116 -34
  148. package/dist/{model-selection-BK7DuyH8.js → model-selection-BLuqsGVB.js} +86 -30
  149. package/dist/{model-selection-CezC36lH.js → model-selection-C1GmkTAV.js} +84 -28
  150. package/dist/{models-cli-C3uGdOrd.js → models-cli-9jmDv-h3.js} +52 -48
  151. package/dist/{models-cli-CUIVPgXE.js → models-cli-zS9rtWz8.js} +53 -49
  152. package/dist/{node-cli-BxBGSuPE.js → node-cli-CrpTxTTs.js} +28 -26
  153. package/dist/{node-cli-CdYAsuQQ.js → node-cli-wemUMCg-.js} +28 -26
  154. package/dist/{node-service-u8g85nD3.js → node-service-C8DTHTMg.js} +2 -2
  155. package/dist/{node-service-CM5vkdIo.js → node-service-WQuEKz6W.js} +2 -2
  156. package/dist/{nodes-cli-By6yeCTB.js → nodes-cli-BaU2SIFw.js} +20 -20
  157. package/dist/{nodes-cli-BaVMTAPc.js → nodes-cli-Dx23D72n.js} +20 -20
  158. package/dist/{nodes-screen-Dvl_ohUY.js → nodes-screen-C0IuBqUL.js} +1 -1
  159. package/dist/{note-5WqioBRA.js → note-BhRSeNeu.js} +2 -2
  160. package/dist/{note-Ci08TSbV.js → note-hhtubr2j.js} +1 -1
  161. package/dist/{onboard-channels-DxXvp8og.js → onboard-channels-C501x8GI.js} +8 -8
  162. package/dist/{onboard-channels-CXhnVy4E.js → onboard-channels-Dxzroasd.js} +8 -8
  163. package/dist/{onboard-skills-CBxsRGyf.js → onboard-skills-DV0Qzvjj.js} +440 -136
  164. package/dist/{onboard-skills-DQwOQ6Ry.js → onboard-skills-rlBHcu3Q.js} +439 -135
  165. package/dist/{onboarding-Du_7qEng.js → onboarding-CN-EDLjd.js} +38 -38
  166. package/dist/{openclaw-root-JLDMp6ux.js → openclaw-root-1VeFrph_.js} +4 -0
  167. package/dist/{openclaw-root-Dw6gumSU.js → openclaw-root-BNlEap4i.js} +4 -0
  168. package/dist/{pairing-cli-CRQDpj8f.js → pairing-cli-CDHG4xuI.js} +15 -15
  169. package/dist/{pairing-cli-Cng1KFWw.js → pairing-cli-CQP34Dlx.js} +15 -15
  170. package/dist/{pairing-labels-Ciu3Zoxj.js → pairing-labels-B6CN0SNH.js} +1 -1
  171. package/dist/{pairing-labels-CWFEtSc3.js → pairing-labels-CgNHnjzT.js} +1 -1
  172. package/dist/{pairing-store-c-QQ2u8p.js → pairing-store-CmlRVqOz.js} +2 -2
  173. package/dist/{pairing-store-CgXR3ZWJ.js → pairing-store-Dp5_JGnG.js} +3 -3
  174. package/dist/{path-env-CXWUFfFv.js → path-env-CLvYNwtL.js} +1 -1
  175. package/dist/{path-env-BgLvMbz_.js → path-env-CaYUVIML.js} +2 -2
  176. package/dist/{paths-MnZaxqPw.js → paths-B0a4ywSO.js} +30 -5
  177. package/dist/{paths-Bkhd_qY8.js → paths-B49s6UZQ.js} +30 -5
  178. package/dist/{paths-DL6EIRTw.js → paths-D0O87MfH.js} +30 -5
  179. package/dist/{paths-IivnSNkP.js → paths-DLINmNFQ.js} +31 -6
  180. package/dist/{pi-embedded-CgPTEqlB.js → pi-embedded-Ctrt2kz0.js} +8759 -9600
  181. package/dist/{pi-embedded-helpers-DYH6OWft.js → pi-embedded-helpers-CMKLjW6X.js} +68 -9
  182. package/dist/{pi-embedded-helpers-y1_Se0yq.js → pi-embedded-helpers-CUzTc1v6.js} +241 -24
  183. package/dist/{pi-embedded-helpers-Bkpd4fTr.js → pi-embedded-helpers-DfwkwPYD.js} +67 -8
  184. package/dist/{pi-embedded-helpers-BbWRSUnc.js → pi-embedded-helpers-WDwx99UA.js} +347 -32
  185. package/dist/{pi-tools.policy-akYsGFiA.js → pi-tools.policy-BpsROZbz.js} +4 -4
  186. package/dist/{plugin-auto-enable-lZwe2yX5.js → plugin-auto-enable-Bqhc3w5n.js} +5 -5
  187. package/dist/{plugin-auto-enable-AOSOJ-v1.js → plugin-auto-enable-PW76g_PJ.js} +5 -5
  188. package/dist/plugin-sdk/agents/bash-process-registry.d.ts +1 -0
  189. package/dist/plugin-sdk/agents/models-config.providers.d.ts +10 -0
  190. package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +5 -1
  191. package/dist/plugin-sdk/agents/pi-embedded-helpers.d.ts +1 -1
  192. package/dist/plugin-sdk/agents/pi-embedded-runner/google.d.ts +1 -0
  193. package/dist/plugin-sdk/agents/pi-embedded-runner/run/params.d.ts +2 -0
  194. package/dist/plugin-sdk/agents/pi-embedded-runner/run/payloads.d.ts +1 -0
  195. package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +2 -0
  196. package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +15 -0
  197. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.tools.d.ts +1 -1
  198. package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.types.d.ts +2 -0
  199. package/dist/plugin-sdk/agents/pi-embedded-subscribe.types.d.ts +2 -0
  200. package/dist/plugin-sdk/agents/session-tool-result-guard-wrapper.d.ts +2 -0
  201. package/dist/plugin-sdk/agents/session-tool-result-guard.d.ts +4 -0
  202. package/dist/plugin-sdk/agents/tools/agent-step.d.ts +3 -0
  203. package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +1 -1
  204. package/dist/plugin-sdk/agents/tools/web-search.d.ts +10 -1
  205. package/dist/plugin-sdk/agents/usage.d.ts +1 -0
  206. package/dist/plugin-sdk/auto-reply/heartbeat.d.ts +1 -1
  207. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -0
  208. package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +1 -0
  209. package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +3 -0
  210. package/dist/plugin-sdk/auto-reply/reply/reply-reference.d.ts +1 -1
  211. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
  212. package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +8 -0
  213. package/dist/plugin-sdk/auto-reply/types.d.ts +2 -0
  214. package/dist/plugin-sdk/browser/control-auth.d.ts +13 -0
  215. package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +1 -0
  216. package/dist/plugin-sdk/cli/prompt.d.ts +1 -0
  217. package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
  218. package/dist/plugin-sdk/commands/onboard-types.d.ts +7 -1
  219. package/dist/plugin-sdk/config/sessions/paths.d.ts +7 -2
  220. package/dist/plugin-sdk/config/types.agents.d.ts +2 -0
  221. package/dist/plugin-sdk/config/types.discord.d.ts +5 -0
  222. package/dist/plugin-sdk/config/types.gateway.d.ts +15 -0
  223. package/dist/plugin-sdk/config/types.hooks.d.ts +15 -0
  224. package/dist/plugin-sdk/config/types.memory.d.ts +2 -0
  225. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +1 -0
  226. package/dist/plugin-sdk/config/zod-schema.d.ts +13 -1
  227. package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +1 -1
  228. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +9 -0
  229. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +4 -0
  230. package/dist/plugin-sdk/cron/service/jobs.d.ts +8 -0
  231. package/dist/plugin-sdk/cron/service/state.d.ts +1 -0
  232. package/dist/plugin-sdk/cron/types.d.ts +2 -0
  233. package/dist/plugin-sdk/discord/monitor/allow-list.d.ts +15 -0
  234. package/dist/plugin-sdk/discord/send.types.d.ts +5 -0
  235. package/dist/plugin-sdk/gateway/auth.d.ts +36 -0
  236. package/dist/plugin-sdk/gateway/protocol/index.d.ts +0 -3
  237. package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +7 -1
  238. package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +3 -1
  239. package/dist/plugin-sdk/index.js +935 -660
  240. package/dist/plugin-sdk/infra/binaries.d.ts +3 -0
  241. package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
  242. package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +1 -0
  243. package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +1 -0
  244. package/dist/plugin-sdk/infra/net/ssrf.d.ts +1 -0
  245. package/dist/plugin-sdk/infra/tailscale.d.ts +34 -0
  246. package/dist/plugin-sdk/infra/tmp-openclaw-dir.d.ts +10 -0
  247. package/dist/plugin-sdk/logging/console.d.ts +1 -0
  248. package/dist/plugin-sdk/logging/logger.d.ts +1 -1
  249. package/dist/plugin-sdk/logging/state.d.ts +1 -0
  250. package/dist/plugin-sdk/markdown/ir.d.ts +1 -1
  251. package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
  252. package/dist/plugin-sdk/media/input-files.d.ts +5 -0
  253. package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
  254. package/dist/plugin-sdk/media-understanding/types.d.ts +1 -0
  255. package/dist/plugin-sdk/memory/backend-config.d.ts +2 -1
  256. package/dist/plugin-sdk/memory/qmd-manager.d.ts +2 -0
  257. package/dist/plugin-sdk/memory/qmd-query-parser.d.ts +8 -0
  258. package/dist/plugin-sdk/process/command-queue.d.ts +16 -0
  259. package/dist/plugin-sdk/routing/resolve-route.d.ts +3 -1
  260. package/dist/plugin-sdk/security/external-content.d.ts +1 -1
  261. package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
  262. package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
  263. package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +8 -0
  264. package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -0
  265. package/dist/plugin-sdk/slack/monitor/commands.d.ts +5 -0
  266. package/dist/plugin-sdk/telegram/bot-message-context.d.ts +2 -1
  267. package/dist/plugin-sdk/telegram/send.d.ts +3 -0
  268. package/dist/plugin-sdk/web/media.d.ts +2 -0
  269. package/dist/{plugins-Db5BiELK.js → plugins-4Hqd1WGf.js} +3 -3
  270. package/dist/{plugins-CNaHNND_.js → plugins-X7d_tfTE.js} +4 -4
  271. package/dist/{plugins-cli-8G-hQPCu.js → plugins-cli-Bgku3EGj.js} +253 -44
  272. package/dist/{plugins-cli-CDiocaDE.js → plugins-cli-CVToH3if.js} +257 -48
  273. package/dist/{ports-BeebfNCb.js → ports-qkt29rdC.js} +2 -2
  274. package/dist/{program-0Cj9YxRN.js → program-Cf7lkBur.js} +82 -80
  275. package/dist/{progress-DIQJt9Va.js → progress-C9kngsTD.js} +1 -1
  276. package/dist/{progress-Da1ehW-x.js → progress-DWqhRakV.js} +1 -1
  277. package/dist/{prompt-style-Dc0C5HC9.js → prompt-style-BFH5D5LN.js} +1 -1
  278. package/dist/{prompt-style-CjQRlDx4.js → prompt-style-CIbmaxSa.js} +1 -1
  279. package/dist/{pw-ai-C43wv1ZF.js → pw-ai-8mdv3h-d.js} +7 -6
  280. package/dist/{pw-ai-COWYvUfG.js → pw-ai-CM1IsSgZ.js} +6 -6
  281. package/dist/{pw-ai-BxJ-KCIy.js → pw-ai-FGoRVblI.js} +5 -6
  282. package/dist/{pw-ai-CsvaObGM.js → pw-ai-sS1fRKW_.js} +3 -3
  283. package/dist/{qmd-manager-CpsjQyaZ.js → qmd-manager-C67Fc8aN.js} +79 -26
  284. package/dist/{qmd-manager-C9YWFeG6.js → qmd-manager-CXVbfg99.js} +81 -26
  285. package/dist/{qmd-manager-C02E8ixK.js → qmd-manager-RMRE8Tqt.js} +81 -26
  286. package/dist/{qmd-manager-BzY2LQTT.js → qmd-manager-pyc_MTIe.js} +78 -23
  287. package/dist/{register.subclis-DUkirdHn.js → register.subclis-C02e4zuJ.js} +29 -29
  288. package/dist/{reply--b7BsXGP.js → reply-DICXkh_C.js} +7289 -8455
  289. package/dist/{routes-DUkEKAc1.js → routes-CmOI1hIH.js} +29 -11
  290. package/dist/{routes-B4QQiFju.js → routes-DewK5tq2.js} +29 -12
  291. package/dist/{rpc-CuMtxrRT.js → rpc-DHr30euf.js} +3 -3
  292. package/dist/{rpc-Blt6MJ4F.js → rpc-T300F8zI.js} +3 -3
  293. package/dist/{run-main-XZcPA23b.js → run-main-C5wpthq1.js} +84 -82
  294. package/dist/runner-CY0nmVme.js +1886 -0
  295. package/dist/runner-Cfm5nTMc.js +1785 -0
  296. package/dist/runner-D_dujMod.js +1886 -0
  297. package/dist/runner-DrGYLH5K.js +1785 -0
  298. package/dist/{sandbox-Aks-9EcZ.js → sandbox-BKYnhYQH.js} +24 -17
  299. package/dist/{sandbox-DqUO2K83.js → sandbox-Bhjnh1Xg.js} +23 -16
  300. package/dist/{sandbox-cli-C99Thxi8.js → sandbox-cli-DBsAjZJN.js} +21 -21
  301. package/dist/{sandbox-cli-CJqRM4V6.js → sandbox-cli-rV9LtFeu.js} +21 -21
  302. package/dist/{security-cli-iqYLMOz3.js → security-cli-BIwJM_rs.js} +27 -27
  303. package/dist/{security-cli-DW3lCz-o.js → security-cli-BRjny8Yu.js} +27 -27
  304. package/dist/{server-context-fX4xiYRh.js → server-context-BGpGs3qd.js} +7 -7
  305. package/dist/{server-context-8Qt35QdF.js → server-context-Cl0U0vE3.js} +7 -7
  306. package/dist/{server-node-events-CHWXfb_T.js → server-node-events-CBfTbiTA.js} +48 -44
  307. package/dist/{server-node-events-BzrEnKLX.js → server-node-events-QCvh8EgI.js} +45 -41
  308. package/dist/{service-Cd4BxKuo.js → service--nPk7DvT.js} +8 -4
  309. package/dist/{service-DDPRbf8a.js → service-99RDXwX4.js} +8 -4
  310. package/dist/{service-audit-CCFxuvKs.js → service-audit-DnLmRGQt.js} +4 -4
  311. package/dist/{service-audit-x6jCN-6a.js → service-audit-ckBaRCVC.js} +4 -4
  312. package/dist/{session-cost-usage-CcCEQNuc.js → session-cost-usage-D7HuoSSD.js} +12 -10
  313. package/dist/{session-cost-usage-PvyVZz-g.js → session-cost-usage-D9hHANWI.js} +12 -10
  314. package/dist/{shared-ILguacOr.js → shared-Bs4vduG4.js} +3 -3
  315. package/dist/{shared-CagUDdmp.js → shared-CEY5IkwG.js} +3 -3
  316. package/dist/{shared-gOyV38rM.js → shared-DRohONn_.js} +4 -4
  317. package/dist/{shared-BDk_zC9p.js → shared-ICqOZibV.js} +4 -4
  318. package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-CucvxYhu.js} +1 -1
  319. package/dist/{skill-scanner-DrVEHfC6.js → skill-scanner-rHMtUHtP.js} +1 -1
  320. package/dist/{skills-D5UZZZSY.js → skills-DRjfSQT3.js} +141 -6
  321. package/dist/{skills-ccAgQ3Ad.js → skills-DprQj9X2.js} +142 -7
  322. package/dist/{skills-cli-DQilTG3n.js → skills-cli-9WO-C55s.js} +12 -12
  323. package/dist/{skills-cli-ggyLBtAY.js → skills-cli-B9eej-EW.js} +13 -13
  324. package/dist/{skills-status-BosMnzIs.js → skills-status-5U3P3YfJ.js} +3 -3
  325. package/dist/{skills-status-DjtPPMnY.js → skills-status-TDIgVd1K.js} +2 -2
  326. package/dist/{sqlite-B7FPASCO.js → sqlite-BINzs1U0.js} +2 -2
  327. package/dist/{sqlite-Btrgi7-j.js → sqlite-D4w5TejA.js} +3 -3
  328. package/dist/{sqlite-BrQ9tw8B.js → sqlite-DRRHmlug.js} +3 -3
  329. package/dist/{sqlite-HepBVDoX.js → sqlite-F6PGkEm1.js} +2 -2
  330. package/dist/{status-BByCntWS.js → status-BKGkKC_v.js} +3 -3
  331. package/dist/{status-Dt7RE_Yy.js → status-CiHtHdaa.js} +4 -4
  332. package/dist/{status-zfL4Yej7.js → status-DDWoOpeB.js} +37 -37
  333. package/dist/{subsystem-Bh1Y_6Uv.js → subsystem-BoExtIHo.js} +52 -17
  334. package/dist/{system-cli-DwuUkdkH.js → system-cli-B6lr60Io.js} +14 -14
  335. package/dist/{system-cli-Clqsx8U5.js → system-cli-CprW9G3h.js} +14 -14
  336. package/dist/{systemd-BEWwfwn0.js → systemd-C0VZriGM.js} +3 -3
  337. package/dist/{systemd-D6wTPnHi.js → systemd-DrmBtJ5T.js} +3 -3
  338. package/dist/{systemd-hints-zi4ohCOY.js → systemd-hints-DZtXiVHa.js} +1 -1
  339. package/dist/{systemd-linger-CDo2UbHM.js → systemd-linger-NC2kl1SC.js} +2 -2
  340. package/dist/{systemd-linger-BxjTrgoH.js → systemd-linger-xdn3BdPh.js} +2 -2
  341. package/dist/{table-DEnmtvl5.js → table-B8dx3v4v.js} +2 -2
  342. package/dist/{table-cCoGqLsk.js → table-CwulTLQp.js} +1 -1
  343. package/dist/{tool-display-DskiU8Kt.js → tool-display-CZRIDMRm.js} +2 -2
  344. package/dist/{tool-display-o-dDAlqF.js → tool-display-ClRud3pg.js} +2 -2
  345. package/dist/{tui-BdJWZdto.js → tui-CVTQn-dC.js} +14 -13
  346. package/dist/{tui-Bc7XUQGP.js → tui-Lu8FdrlK.js} +13 -14
  347. package/dist/{tui-cli-BGYh0UL0.js → tui-cli-BLpTj1X9.js} +27 -27
  348. package/dist/{tui-cli-D3n-O9zB.js → tui-cli-BLx5kL2I.js} +26 -26
  349. package/dist/{tui-formatters-CA85v4U2.js → tui-formatters-CNySEfJN.js} +6 -6
  350. package/dist/{tui-formatters-C3NarH24.js → tui-formatters-DePhZK3J.js} +6 -6
  351. package/dist/{update-JB16aPIY.js → update-DHVxMTpQ.js} +3 -3
  352. package/dist/{update-Ct9sqJC_.js → update-DU1geolI.js} +3 -3
  353. package/dist/{update-cli-wWKDS3cm.js → update-cli-C0hUvJWK.js} +89 -71
  354. package/dist/{update-cli-DDXp_N9B.js → update-cli-Wb1GB3rL.js} +88 -70
  355. package/dist/{update-runner-ChTf6O6p.js → update-runner--ixK4J3W.js} +11 -11
  356. package/dist/{update-runner-CmE6cHdn.js → update-runner-7Qa1T9y6.js} +10 -10
  357. package/dist/{utils-Dk86IbEs.js → utils-BLJAc3ZV.js} +1 -1
  358. package/dist/{utils-es4ygvQ-.js → utils-Cd9QdCHh.js} +1 -1
  359. package/dist/{webhooks-cli-CVIE9TtX.js → webhooks-cli-DgcMy7RG.js} +12 -12
  360. package/dist/{webhooks-cli-BmKSiQQC.js → webhooks-cli-aVzUcJY9.js} +11 -11
  361. package/dist/{widearea-dns-2ah0bkAj.js → widearea-dns-BaIgNEhY.js} +3 -3
  362. package/dist/{widearea-dns-CMIG6-74.js → widearea-dns-DzuRdwk5.js} +3 -3
  363. package/dist/{ws-DtDKpbLR.js → ws-CHCQHs0F.js} +1 -1
  364. package/dist/{ws-log-BP3z_g6Z.js → ws-log-CIXbLCka.js} +1 -1
  365. package/dist/{ws-log-D7MkvKhg.js → ws-log-DcQFZByi.js} +2 -2
  366. package/dist/{wsl-Cwo7X0Un.js → wsl-BUOkxKJu.js} +2 -2
  367. package/docs/assets/install-script.svg +1 -0
  368. package/docs/automation/hooks.md +1 -38
  369. package/docs/automation/webhook.md +43 -2
  370. package/docs/channels/discord.md +389 -381
  371. package/docs/channels/imessage.md +229 -218
  372. package/docs/channels/slack.md +294 -415
  373. package/docs/channels/telegram.md +401 -505
  374. package/docs/channels/whatsapp.md +338 -310
  375. package/docs/ci.md +0 -12
  376. package/docs/cli/hooks.md +1 -14
  377. package/docs/cli/index.md +6 -1
  378. package/docs/cli/logs.md +4 -0
  379. package/docs/cli/onboard.md +30 -0
  380. package/docs/cli/plugins.md +20 -1
  381. package/docs/cli/security.md +1 -0
  382. package/docs/concepts/memory.md +7 -4
  383. package/docs/concepts/session-tool.md +1 -0
  384. package/docs/docs.json +11 -11
  385. package/docs/gateway/configuration-examples.md +9 -2
  386. package/docs/gateway/configuration-reference.md +2329 -0
  387. package/docs/gateway/configuration.md +338 -3304
  388. package/docs/gateway/index.md +162 -238
  389. package/docs/gateway/openresponses-http-api.md +15 -0
  390. package/docs/gateway/security/index.md +3 -0
  391. package/docs/help/faq.md +9 -0
  392. package/docs/install/hetzner.md +21 -0
  393. package/docs/install/installer.md +20 -0
  394. package/docs/nodes/audio.md +19 -0
  395. package/docs/platforms/mac/release.md +7 -7
  396. package/docs/providers/glm.md +3 -3
  397. package/docs/providers/index.md +1 -0
  398. package/docs/providers/litellm.md +153 -0
  399. package/docs/providers/zai.md +2 -2
  400. package/docs/reference/templates/AGENTS.md +26 -26
  401. package/docs/reference/templates/HEARTBEAT.md +31 -2
  402. package/docs/reference/templates/SOUL.md +14 -8
  403. package/docs/reference/transcript-hygiene.md +18 -0
  404. package/docs/start/getting-started.md +5 -0
  405. package/docs/start/wizard-cli-automation.md +17 -0
  406. package/docs/start/wizard-cli-reference.md +12 -0
  407. package/docs/tools/browser.md +6 -0
  408. package/docs/zh-CN/automation/hooks.md +1 -38
  409. package/docs/zh-CN/cli/hooks.md +1 -14
  410. package/extensions/bluebubbles/package.json +1 -1
  411. package/extensions/bluebubbles/src/monitor.test.ts +40 -28
  412. package/extensions/bluebubbles/src/monitor.ts +0 -4
  413. package/extensions/copilot-proxy/package.json +1 -1
  414. package/extensions/diagnostics-otel/package.json +10 -10
  415. package/extensions/discord/package.json +1 -1
  416. package/extensions/feishu/package.json +2 -5
  417. package/extensions/feishu/src/bot.checkBotMentioned.test.ts +64 -0
  418. package/extensions/feishu/src/bot.ts +1 -1
  419. package/extensions/feishu/src/channel.test.ts +48 -0
  420. package/extensions/feishu/src/channel.ts +1 -3
  421. package/extensions/feishu/src/config-schema.ts +6 -0
  422. package/extensions/feishu/src/docx.ts +14 -4
  423. package/extensions/feishu/src/media.test.ts +151 -0
  424. package/extensions/feishu/src/media.ts +27 -13
  425. package/extensions/feishu/src/reply-dispatcher.test.ts +116 -0
  426. package/extensions/feishu/src/reply-dispatcher.ts +124 -67
  427. package/extensions/feishu/src/streaming-card.ts +223 -0
  428. package/extensions/feishu/src/targets.test.ts +16 -0
  429. package/extensions/feishu/src/targets.ts +1 -1
  430. package/extensions/google-antigravity-auth/package.json +1 -1
  431. package/extensions/google-gemini-cli-auth/package.json +1 -1
  432. package/extensions/googlechat/package.json +1 -1
  433. package/extensions/imessage/package.json +1 -1
  434. package/extensions/irc/package.json +1 -1
  435. package/extensions/irc/src/client.ts +1 -1
  436. package/extensions/line/package.json +1 -1
  437. package/extensions/llm-task/package.json +1 -1
  438. package/extensions/lobster/package.json +1 -1
  439. package/extensions/matrix/CHANGELOG.md +6 -0
  440. package/extensions/matrix/package.json +2 -2
  441. package/extensions/mattermost/package.json +1 -1
  442. package/extensions/memory-core/package.json +1 -1
  443. package/extensions/memory-lancedb/index.ts +6 -2
  444. package/extensions/memory-lancedb/package.json +2 -2
  445. package/extensions/minimax-portal-auth/index.ts +7 -5
  446. package/extensions/minimax-portal-auth/package.json +1 -1
  447. package/extensions/msteams/CHANGELOG.md +6 -0
  448. package/extensions/msteams/package.json +1 -1
  449. package/extensions/nextcloud-talk/package.json +1 -1
  450. package/extensions/nostr/CHANGELOG.md +6 -0
  451. package/extensions/nostr/package.json +2 -2
  452. package/extensions/open-prose/package.json +1 -1
  453. package/extensions/signal/package.json +1 -1
  454. package/extensions/slack/package.json +1 -1
  455. package/extensions/telegram/package.json +1 -1
  456. package/extensions/tlon/package.json +1 -1
  457. package/extensions/twitch/CHANGELOG.md +6 -0
  458. package/extensions/twitch/package.json +1 -1
  459. package/extensions/voice-call/CHANGELOG.md +6 -0
  460. package/extensions/voice-call/package.json +1 -1
  461. package/extensions/voice-call/src/media-stream.ts +7 -1
  462. package/extensions/voice-call/src/providers/twilio.test.ts +5 -3
  463. package/extensions/voice-call/src/providers/twilio.ts +12 -1
  464. package/extensions/whatsapp/package.json +1 -1
  465. package/extensions/zalo/CHANGELOG.md +6 -0
  466. package/extensions/zalo/package.json +1 -1
  467. package/extensions/zalouser/CHANGELOG.md +6 -0
  468. package/extensions/zalouser/package.json +1 -1
  469. package/package.json +26 -22
  470. package/dist/auth-BcNHFK-i.js +0 -184
  471. package/dist/auth-BvIPpm7G.js +0 -184
  472. package/dist/boolean-M-esQJt6.js +0 -30
  473. package/dist/bundled/soul-evil/HOOK.md +0 -71
  474. package/dist/bundled/soul-evil/handler.js +0 -194
  475. package/dist/cli-DJbWJ9aB.js +0 -89
  476. package/dist/config-CI7EpvlP.js +0 -15
  477. package/dist/control-ui/assets/index-CnB9IO4a.js.map +0 -1
  478. package/dist/date-time-c6HTX6IW.js +0 -187
  479. package/dist/frontmatter-xwTm0734.js +0 -105
  480. package/dist/parse-duration-De_tAQSe.js +0 -24
  481. package/dist/session-key-nXYQSv-a.js +0 -167
  482. package/dist/utils-dp_OM900.js +0 -476
  483. package/docs/hooks/soul-evil.md +0 -69
  484. package/docs/zh-CN/hooks/soul-evil.md +0 -72
  485. /package/dist/{archive-CXhvR9nU.js → archive-beaSfAzA.js} +0 -0
  486. /package/dist/{brew-BIrWdDps.js → brew-BUIxHEkn.js} +0 -0
  487. /package/dist/{brew-B7YK4ZoL.js → brew-ROHf0-Xp.js} +0 -0
  488. /package/dist/{cli-utils-PlLcDZlM.js → cli-utils-CRhVAaLV.js} +0 -0
  489. /package/dist/{cli-utils-R-ECs5cY.js → cli-utils-LcHOt63h.js} +0 -0
  490. /package/dist/{command-format-BUxhT1xL.js → command-format-qUVxzqYm.js} +0 -0
  491. /package/dist/{constants-CNTiY-ZN.js → constants-BvQ6S8j5.js} +0 -0
  492. /package/dist/{constants-DuoCkWRh.js → constants-JPeoOZnw.js} +0 -0
  493. /package/dist/{errors-D3tYRJWG.js → errors-B91HIDPD.js} +0 -0
  494. /package/dist/{errors-B0eT3jVv.js → errors-Bv81hF2P.js} +0 -0
  495. /package/dist/{errors-x4NYs-1P.js → errors-DjZBTJJ3.js} +0 -0
  496. /package/dist/{exec-approvals-DGPTjO0N.js → exec-approvals-Cb4ZLukq.js} +0 -0
  497. /package/dist/{exec-approvals-DhmKpiIo.js → exec-approvals-DQ8TVVmj.js} +0 -0
  498. /package/dist/{format-CaxeRcue.js → format-CNU-Zkrz.js} +0 -0
  499. /package/dist/{format-DLOJPZmo.js → format-DcfK-dwd.js} +0 -0
  500. /package/dist/{format-duration-Be5Z7JdJ.js → format-duration-84n6_DgO.js} +0 -0
  501. /package/dist/{format-duration-CEmFWLyX.js → format-duration-Bo9zNKwO.js} +0 -0
  502. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-CZOlQ2pA.js} +0 -0
  503. /package/dist/{format-relative-Db7eqEu8.js → format-relative-cegC_FF5.js} +0 -0
  504. /package/dist/{github-copilot-token-C9IJh2Pn.js → github-copilot-token-DkiRbJdR.js} +0 -0
  505. /package/dist/{helpers-CQI-5xS9.js → helpers-8O7IVGO-.js} +0 -0
  506. /package/dist/{helpers-CRzoyyXS.js → helpers-D_jqdWkd.js} +0 -0
  507. /package/dist/{helpers-C89IG08W.js → helpers-HyeZXsnu.js} +0 -0
  508. /package/dist/{is-main-WWuz28Ip.js → is-main-BWoXGz7p.js} +0 -0
  509. /package/dist/{logging-BzvBIA3Y.js → logging-fywhKCmE.js} +0 -0
  510. /package/dist/{nodes-screen-lykd2cny.js → nodes-screen-CdCWeiwy.js} +0 -0
  511. /package/dist/{parse-Cjiudy6x.js → parse-Bw0oH-rT.js} +0 -0
  512. /package/dist/{parse-DqAvJRIf.js → parse-ioZhOtha.js} +0 -0
  513. /package/dist/{parse-log-line-CUrpqe1w.js → parse-log-line-BoDqomM4.js} +0 -0
  514. /package/dist/{parse-log-line-D2UGw0wR.js → parse-log-line-DPxH1XZx.js} +0 -0
  515. /package/dist/{parse-timeout-DFSPLxpY.js → parse-timeout-D1XX_zN_.js} +0 -0
  516. /package/dist/{parse-timeout-DV8NQQWk.js → parse-timeout-DMW-z4Iz.js} +0 -0
  517. /package/dist/{pi-model-discovery-CV2V1HHz.js → pi-model-discovery-DqgqUyAv.js} +0 -0
  518. /package/dist/{pi-model-discovery-DzFOAbQt.js → pi-model-discovery-EwKVHlZB.js} +0 -0
  519. /package/dist/{prompts--d-6l5Ln.js → prompts-Bg96reub.js} +0 -0
  520. /package/dist/{redact-DAKeu7PA.js → redact-BRsnXqwD.js} +0 -0
  521. /package/dist/{redact-DuEEf1p1.js → redact-Br9GfacZ.js} +0 -0
  522. /package/dist/{redact-BOIof271.js → redact-BrXLgslJ.js} +0 -0
  523. /package/dist/{status-Cv36yYdi.js → status-BRZfQbJ2.js} +0 -0
  524. /package/dist/{status-Drziap9H.js → status-CoAy6bEC.js} +0 -0
  525. /package/dist/{systemd-hints-CH4pbCFD.js → systemd-hints-CXNtLw9Q.js} +0 -0
  526. /package/dist/{tailnet-DGRSvYuQ.js → tailnet-DATIFSsY.js} +0 -0
  527. /package/dist/{transcript-events-BlIONGVn.js → transcript-events-BHS7QoRl.js} +0 -0
  528. /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
  529. /package/dist/{transcript-events-CZ8CG4ht.js → transcript-events-BtNd-j6q.js} +0 -0
  530. /package/dist/{usage-format-6Uar63S0.js → usage-format-C4JfTbSp.js} +0 -0
  531. /package/dist/{usage-format-hd37en6b.js → usage-format-CpORtVCG.js} +0 -0
@@ -1,17 +1,18 @@
1
- import { C as buildAllowedModelSet, M as resolveAllowlistModelKey, N as resolveConfiguredModelRef, O as modelKey, S as resolveOpenClawAgentDir, T as buildModelAliasIndex, Tt as DEFAULT_PROVIDER, Y as VENICE_DEFAULT_MODEL_REF, _ as ensureAuthProfileStore, bt as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, c as CHUTES_AUTHORIZE_ENDPOINT, d as parseOAuthCallbackInput, g as upsertAuthProfile, k as normalizeProviderId, l as exchangeChutesCodeForTokens, n as resolveAuthProfileOrder, nt as SYNTHETIC_DEFAULT_MODEL_REF, ot as getCustomProviderApiKey, p as listProfilesForProvider, pt as normalizeSecretInput, u as generateChutesPkce, ut as resolveEnvApiKey, wt as DEFAULT_MODEL } from "./auth-profiles-Bv1AEm-Y.js";
2
- import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
3
- import { c as escapeRegExp, g as resolveConfigDir, s as ensureDir, t as CONFIG_DIR, y as resolveUserPath } from "./utils-Dk86IbEs.js";
4
- import { t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
5
- import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-DQuy3dwI.js";
6
- import { t as resolveBrewExecutable } from "./brew-BIrWdDps.js";
7
- import { Zt as loadModelCatalog, m as openUrl, o as detectBinary, y as resolveNodeManagerOptions } from "./loader-wXwp4rZJ.js";
8
- import { a as enablePluginInConfig } from "./onboard-channels-DxXvp8og.js";
9
- import { t as scanDirectoryWithSummary } from "./skill-scanner-C_fQzVDu.js";
10
- import { B as fetchWithSsrFGuard, b as fetchWithTimeout } from "./deliver-hf-WKyWd.js";
11
- import { _ as resolveSkillKey, d as hasBinary, i as loadWorkspaceSkillEntries, t as resolveSkillsInstallPreferences } from "./skills-D5UZZZSY.js";
12
- import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-CMIG6-74.js";
13
- import { $ as setMinimaxApiKey, A as applyQianfanProviderConfig, B as applyXaiProviderConfig, C as applyMoonshotConfig, D as applyOpenrouterConfig, E as applyMoonshotProviderConfigCn, F as applyVeniceConfig, G as TOGETHER_DEFAULT_MODEL_REF, H as applyXiaomiProviderConfig, I as applyVeniceProviderConfig, J as ZAI_DEFAULT_MODEL_REF, K as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, L as applyVercelAiGatewayConfig, M as applySyntheticProviderConfig, N as applyTogetherConfig, O as applyOpenrouterProviderConfig, P as applyTogetherProviderConfig, Q as setKimiCodingApiKey, R as applyVercelAiGatewayProviderConfig, S as applyKimiCodeProviderConfig, T as applyMoonshotProviderConfig, U as applyZaiConfig, V as applyXiaomiConfig, W as OPENROUTER_DEFAULT_MODEL_REF, X as setCloudflareAiGatewayConfig, Y as setAnthropicApiKey, Z as setGeminiApiKey, _ as applyMinimaxProviderConfig, _t as validateAnthropicSetupToken, a as normalizeAlias, at as setTogetherApiKey, b as applyCloudflareAiGatewayProviderConfig, ct as setXaiApiKey, d as resolvePluginProviders, dt as writeOAuthCredentials, et as setMoonshotApiKey, f as applyOpencodeZenConfig, ft as KIMI_CODING_MODEL_REF, g as applyMinimaxConfig, gt as buildTokenProfileId, h as applyMinimaxApiProviderConfig, ht as XAI_DEFAULT_MODEL_REF, i as formatTokenK, it as setSyntheticApiKey, j as applySyntheticConfig, k as applyQianfanConfig, l as createVpsAwareOAuthHandlers, lt as setXiaomiApiKey, m as applyMinimaxApiConfig, mt as QIANFAN_DEFAULT_MODEL_REF, nt as setOpenrouterApiKey, ot as setVeniceApiKey, p as applyOpencodeZenProviderConfig, pt as MOONSHOT_DEFAULT_MODEL_REF, q as XIAOMI_DEFAULT_MODEL_REF, rt as setQianfanApiKey, st as setVercelAiGatewayApiKey, t as githubCopilotLoginCommand, tt as setOpencodeZenApiKey, u as isRemoteEnvironment, ut as setZaiApiKey, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXaiConfig } from "./github-copilot-auth-CZxurvdz.js";
14
- import { t as buildWorkspaceSkillStatus } from "./skills-status-DjtPPMnY.js";
1
+ import { C as buildAllowedModelSet, M as resolveAllowlistModelKey, N as resolveConfiguredModelRef, O as modelKey, S as resolveOpenClawAgentDir, T as buildModelAliasIndex, Tt as DEFAULT_PROVIDER, Y as VENICE_DEFAULT_MODEL_REF, _ as ensureAuthProfileStore, bt as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, c as CHUTES_AUTHORIZE_ENDPOINT, d as parseOAuthCallbackInput, g as upsertAuthProfile, k as normalizeProviderId, l as exchangeChutesCodeForTokens, n as resolveAuthProfileOrder, nt as SYNTHETIC_DEFAULT_MODEL_REF, ot as getCustomProviderApiKey, p as listProfilesForProvider, pt as normalizeSecretInput, u as generateChutesPkce, ut as resolveEnvApiKey, wt as DEFAULT_MODEL } from "./auth-profiles-ByNs3eEm.js";
2
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
3
+ import { c as escapeRegExp, g as resolveConfigDir, s as ensureDir, t as CONFIG_DIR, y as resolveUserPath } from "./utils-BLJAc3ZV.js";
4
+ import { t as runCommandWithTimeout } from "./exec-CACT5OAW.js";
5
+ import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-CsRbLH4l.js";
6
+ import { t as resolveBrewExecutable } from "./brew-BUIxHEkn.js";
7
+ import { m as openUrl, o as detectBinary, y as resolveNodeManagerOptions } from "./loader-KjT074JR.js";
8
+ import { a as enablePluginInConfig } from "./onboard-channels-C501x8GI.js";
9
+ import { t as scanDirectoryWithSummary } from "./skill-scanner-rHMtUHtP.js";
10
+ import { i as fetchWithSsrFGuard, t as fetchWithTimeout } from "./fetch-timeout-DTK9vxex.js";
11
+ import { b as resolveSkillKey, i as loadWorkspaceSkillEntries, m as hasBinary, t as resolveSkillsInstallPreferences } from "./skills-DRjfSQT3.js";
12
+ import { _ as loadModelCatalog } from "./runner-CY0nmVme.js";
13
+ import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-BaIgNEhY.js";
14
+ import { $ as setAnthropicApiKey, A as applyOpenrouterProviderConfig, B as applyVercelAiGatewayProviderConfig, C as applyLitellmConfig, Ct as ZAI_CODING_GLOBAL_BASE_URL, D as applyMoonshotProviderConfig, E as applyMoonshotConfigCn, Et as validateAnthropicSetupToken, F as applyTogetherConfig, G as applyZaiConfig, H as applyXaiProviderConfig, I as applyTogetherProviderConfig, J as OPENROUTER_DEFAULT_MODEL_REF, K as applyZaiProviderConfig, L as applyVeniceConfig, M as applyQianfanProviderConfig, N as applySyntheticConfig, O as applyMoonshotProviderConfigCn, P as applySyntheticProviderConfig, Q as ZAI_DEFAULT_MODEL_REF, R as applyVeniceProviderConfig, S as applyKimiCodeProviderConfig, St as ZAI_CODING_CN_BASE_URL, T as applyMoonshotConfig, Tt as buildTokenProfileId, U as applyXiaomiConfig, V as applyXaiConfig, W as applyXiaomiProviderConfig, X as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, Y as TOGETHER_DEFAULT_MODEL_REF, Z as XIAOMI_DEFAULT_MODEL_REF, _ as applyMinimaxProviderConfig, _t as KIMI_CODING_MODEL_REF, a as normalizeAlias, at as setMoonshotApiKey, b as applyCloudflareAiGatewayProviderConfig, bt as XAI_DEFAULT_MODEL_REF, ct as setQianfanApiKey, d as resolvePluginProviders, dt as setVeniceApiKey, et as setCloudflareAiGatewayConfig, f as applyOpencodeZenConfig, ft as setVercelAiGatewayApiKey, g as applyMinimaxConfig, gt as writeOAuthCredentials, h as applyMinimaxApiProviderConfig, ht as setZaiApiKey, i as formatTokenK, it as setMinimaxApiKey, j as applyQianfanConfig, k as applyOpenrouterConfig, l as createVpsAwareOAuthHandlers, lt as setSyntheticApiKey, m as applyMinimaxApiConfig, mt as setXiaomiApiKey, nt as setKimiCodingApiKey, ot as setOpencodeZenApiKey, p as applyOpencodeZenProviderConfig, pt as setXaiApiKey, q as LITELLM_DEFAULT_MODEL_REF, rt as setLitellmApiKey, st as setOpenrouterApiKey, t as githubCopilotLoginCommand, tt as setGeminiApiKey, u as isRemoteEnvironment, ut as setTogetherApiKey, v as applyAuthProfileConfig, vt as MOONSHOT_DEFAULT_MODEL_REF, w as applyLitellmProviderConfig, wt as ZAI_GLOBAL_BASE_URL, x as applyKimiCodeConfig, xt as ZAI_CN_BASE_URL, y as applyCloudflareAiGatewayConfig, yt as QIANFAN_DEFAULT_MODEL_REF, z as applyVercelAiGatewayConfig } from "./github-copilot-auth-DDispnyz.js";
15
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-TDIgVd1K.js";
15
16
  import path from "node:path";
16
17
  import fs from "node:fs";
17
18
  import { loginOpenAICodex } from "@mariozechner/pi-ai";
@@ -418,7 +419,7 @@ const AUTH_CHOICE_GROUP_DEFS = [
418
419
  {
419
420
  value: "minimax",
420
421
  label: "MiniMax",
421
- hint: "M2.1 (recommended)",
422
+ hint: "M2.5 (recommended)",
422
423
  choices: [
423
424
  "minimax-portal",
424
425
  "minimax-api",
@@ -465,9 +466,14 @@ const AUTH_CHOICE_GROUP_DEFS = [
465
466
  },
466
467
  {
467
468
  value: "zai",
468
- label: "Z.AI (GLM 4.7)",
469
- hint: "API key",
470
- choices: ["zai-api-key"]
469
+ label: "Z.AI",
470
+ hint: "GLM Coding Plan / Global / CN",
471
+ choices: [
472
+ "zai-coding-global",
473
+ "zai-coding-cn",
474
+ "zai-global",
475
+ "zai-cn"
476
+ ]
471
477
  },
472
478
  {
473
479
  value: "qianfan",
@@ -517,6 +523,12 @@ const AUTH_CHOICE_GROUP_DEFS = [
517
523
  hint: "Privacy-focused (uncensored models)",
518
524
  choices: ["venice-api-key"]
519
525
  },
526
+ {
527
+ value: "litellm",
528
+ label: "LiteLLM",
529
+ hint: "Unified LLM gateway (100+ providers)",
530
+ choices: ["litellm-api-key"]
531
+ },
520
532
  {
521
533
  value: "cloudflare-ai-gateway",
522
534
  label: "Cloudflare AI Gateway",
@@ -562,6 +574,11 @@ function buildAuthChoiceOptions(params) {
562
574
  value: "openrouter-api-key",
563
575
  label: "OpenRouter API key"
564
576
  });
577
+ options.push({
578
+ value: "litellm-api-key",
579
+ label: "LiteLLM API key",
580
+ hint: "Unified gateway for 100+ LLM providers"
581
+ });
565
582
  options.push({
566
583
  value: "ai-gateway-api-key",
567
584
  label: "Vercel AI Gateway API key"
@@ -618,7 +635,27 @@ function buildAuthChoiceOptions(params) {
618
635
  });
619
636
  options.push({
620
637
  value: "zai-api-key",
621
- label: "Z.AI (GLM 4.7) API key"
638
+ label: "Z.AI API key"
639
+ });
640
+ options.push({
641
+ value: "zai-coding-global",
642
+ label: "Coding-Plan-Global",
643
+ hint: "GLM Coding Plan Global (api.z.ai)"
644
+ });
645
+ options.push({
646
+ value: "zai-coding-cn",
647
+ label: "Coding-Plan-CN",
648
+ hint: "GLM Coding Plan CN (open.bigmodel.cn)"
649
+ });
650
+ options.push({
651
+ value: "zai-global",
652
+ label: "Global",
653
+ hint: "Z.AI Global (api.z.ai)"
654
+ });
655
+ options.push({
656
+ value: "zai-cn",
657
+ label: "CN",
658
+ hint: "Z.AI CN (open.bigmodel.cn)"
622
659
  });
623
660
  options.push({
624
661
  value: "xiaomi-api-key",
@@ -649,11 +686,11 @@ function buildAuthChoiceOptions(params) {
649
686
  });
650
687
  options.push({
651
688
  value: "minimax-api",
652
- label: "MiniMax M2.1"
689
+ label: "MiniMax M2.5"
653
690
  });
654
691
  options.push({
655
692
  value: "minimax-api-lightning",
656
- label: "MiniMax M2.1 Lightning",
693
+ label: "MiniMax M2.5 Lightning",
657
694
  hint: "Faster, higher output cost"
658
695
  });
659
696
  options.push({
@@ -894,6 +931,91 @@ function applyGoogleGeminiModelDefault(cfg) {
894
931
  //#region src/commands/opencode-zen-model-default.ts
895
932
  const OPENCODE_ZEN_DEFAULT_MODEL = "opencode/claude-opus-4-6";
896
933
 
934
+ //#endregion
935
+ //#region src/commands/zai-endpoint-detect.ts
936
+ async function probeZaiChatCompletions(params) {
937
+ try {
938
+ const res = await fetchWithTimeout(`${params.baseUrl}/chat/completions`, {
939
+ method: "POST",
940
+ headers: {
941
+ authorization: `Bearer ${params.apiKey}`,
942
+ "content-type": "application/json"
943
+ },
944
+ body: JSON.stringify({
945
+ model: params.modelId,
946
+ stream: false,
947
+ max_tokens: 1,
948
+ messages: [{
949
+ role: "user",
950
+ content: "ping"
951
+ }]
952
+ })
953
+ }, params.timeoutMs, params.fetchFn);
954
+ if (res.ok) return { ok: true };
955
+ let errorCode;
956
+ let errorMessage;
957
+ try {
958
+ const json = await res.json();
959
+ const code = json?.error?.code;
960
+ const msg = json?.error?.message ?? json?.msg ?? json?.message;
961
+ if (typeof code === "string") errorCode = code;
962
+ else if (typeof code === "number") errorCode = String(code);
963
+ if (typeof msg === "string") errorMessage = msg;
964
+ } catch {}
965
+ return {
966
+ ok: false,
967
+ status: res.status,
968
+ errorCode,
969
+ errorMessage
970
+ };
971
+ } catch {
972
+ return { ok: false };
973
+ }
974
+ }
975
+ async function detectZaiEndpoint(params) {
976
+ if (process.env.VITEST && !params.fetchFn) return null;
977
+ const timeoutMs = params.timeoutMs ?? 5e3;
978
+ const glm5 = [{
979
+ endpoint: "global",
980
+ baseUrl: ZAI_GLOBAL_BASE_URL
981
+ }, {
982
+ endpoint: "cn",
983
+ baseUrl: ZAI_CN_BASE_URL
984
+ }];
985
+ for (const candidate of glm5) if ((await probeZaiChatCompletions({
986
+ baseUrl: candidate.baseUrl,
987
+ apiKey: params.apiKey,
988
+ modelId: "glm-5",
989
+ timeoutMs,
990
+ fetchFn: params.fetchFn
991
+ })).ok) return {
992
+ endpoint: candidate.endpoint,
993
+ baseUrl: candidate.baseUrl,
994
+ modelId: "glm-5",
995
+ note: `Verified GLM-5 on ${candidate.endpoint} endpoint.`
996
+ };
997
+ const coding = [{
998
+ endpoint: "coding-global",
999
+ baseUrl: ZAI_CODING_GLOBAL_BASE_URL
1000
+ }, {
1001
+ endpoint: "coding-cn",
1002
+ baseUrl: ZAI_CODING_CN_BASE_URL
1003
+ }];
1004
+ for (const candidate of coding) if ((await probeZaiChatCompletions({
1005
+ baseUrl: candidate.baseUrl,
1006
+ apiKey: params.apiKey,
1007
+ modelId: "glm-4.7",
1008
+ timeoutMs,
1009
+ fetchFn: params.fetchFn
1010
+ })).ok) return {
1011
+ endpoint: candidate.endpoint,
1012
+ baseUrl: candidate.baseUrl,
1013
+ modelId: "glm-4.7",
1014
+ note: "Coding Plan endpoint detected; GLM-5 is not available there. Defaulting to GLM-4.7."
1015
+ };
1016
+ return null;
1017
+ }
1018
+
897
1019
  //#endregion
898
1020
  //#region src/commands/auth-choice.apply.api-providers.ts
899
1021
  async function applyAuthChoiceApiProviders(params) {
@@ -906,6 +1028,7 @@ async function applyAuthChoiceApiProviders(params) {
906
1028
  let authChoice = params.authChoice;
907
1029
  if (authChoice === "apiKey" && params.opts?.tokenProvider && params.opts.tokenProvider !== "anthropic" && params.opts.tokenProvider !== "openai") {
908
1030
  if (params.opts.tokenProvider === "openrouter") authChoice = "openrouter-api-key";
1031
+ else if (params.opts.tokenProvider === "litellm") authChoice = "litellm-api-key";
909
1032
  else if (params.opts.tokenProvider === "vercel-ai-gateway") authChoice = "ai-gateway-api-key";
910
1033
  else if (params.opts.tokenProvider === "cloudflare-ai-gateway") authChoice = "cloudflare-ai-gateway-api-key";
911
1034
  else if (params.opts.tokenProvider === "moonshot") authChoice = "moonshot-api-key";
@@ -983,6 +1106,67 @@ async function applyAuthChoiceApiProviders(params) {
983
1106
  agentModelOverride
984
1107
  };
985
1108
  }
1109
+ if (authChoice === "litellm-api-key") {
1110
+ const store = ensureAuthProfileStore(params.agentDir, { allowKeychainPrompt: false });
1111
+ const existingProfileId = resolveAuthProfileOrder({
1112
+ cfg: nextConfig,
1113
+ store,
1114
+ provider: "litellm"
1115
+ }).find((profileId) => Boolean(store.profiles[profileId]));
1116
+ const existingCred = existingProfileId ? store.profiles[existingProfileId] : void 0;
1117
+ let profileId = "litellm:default";
1118
+ let hasCredential = false;
1119
+ if (existingProfileId && existingCred?.type === "api_key") {
1120
+ profileId = existingProfileId;
1121
+ hasCredential = true;
1122
+ }
1123
+ if (!hasCredential && params.opts?.token && params.opts?.tokenProvider === "litellm") {
1124
+ await setLitellmApiKey(normalizeApiKeyInput(params.opts.token), params.agentDir);
1125
+ hasCredential = true;
1126
+ }
1127
+ if (!hasCredential) {
1128
+ await params.prompter.note("LiteLLM provides a unified API to 100+ LLM providers.\nGet your API key from your LiteLLM proxy or https://litellm.ai\nDefault proxy runs on http://localhost:4000", "LiteLLM");
1129
+ const envKey = resolveEnvApiKey("litellm");
1130
+ if (envKey) {
1131
+ if (await params.prompter.confirm({
1132
+ message: `Use existing LITELLM_API_KEY (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,
1133
+ initialValue: true
1134
+ })) {
1135
+ await setLitellmApiKey(envKey.apiKey, params.agentDir);
1136
+ hasCredential = true;
1137
+ }
1138
+ }
1139
+ if (!hasCredential) {
1140
+ const key = await params.prompter.text({
1141
+ message: "Enter LiteLLM API key",
1142
+ validate: validateApiKeyInput
1143
+ });
1144
+ await setLitellmApiKey(normalizeApiKeyInput(String(key)), params.agentDir);
1145
+ hasCredential = true;
1146
+ }
1147
+ }
1148
+ if (hasCredential) nextConfig = applyAuthProfileConfig(nextConfig, {
1149
+ profileId,
1150
+ provider: "litellm",
1151
+ mode: "api_key"
1152
+ });
1153
+ const applied = await applyDefaultModelChoice({
1154
+ config: nextConfig,
1155
+ setDefaultModel: params.setDefaultModel,
1156
+ defaultModel: LITELLM_DEFAULT_MODEL_REF,
1157
+ applyDefaultConfig: applyLitellmConfig,
1158
+ applyProviderConfig: applyLitellmProviderConfig,
1159
+ noteDefault: LITELLM_DEFAULT_MODEL_REF,
1160
+ noteAgentModel,
1161
+ prompter: params.prompter
1162
+ });
1163
+ nextConfig = applied.config;
1164
+ agentModelOverride = applied.agentModelOverride ?? agentModelOverride;
1165
+ return {
1166
+ config: nextConfig,
1167
+ agentModelOverride
1168
+ };
1169
+ }
986
1170
  if (authChoice === "ai-gateway-api-key") {
987
1171
  let hasCredential = false;
988
1172
  if (!hasCredential && params.opts?.token && params.opts?.tokenProvider === "vercel-ai-gateway") {
@@ -1292,10 +1476,17 @@ async function applyAuthChoiceApiProviders(params) {
1292
1476
  agentModelOverride
1293
1477
  };
1294
1478
  }
1295
- if (authChoice === "zai-api-key") {
1479
+ if (authChoice === "zai-api-key" || authChoice === "zai-coding-global" || authChoice === "zai-coding-cn" || authChoice === "zai-global" || authChoice === "zai-cn") {
1480
+ let endpoint;
1481
+ if (authChoice === "zai-coding-global") endpoint = "coding-global";
1482
+ else if (authChoice === "zai-coding-cn") endpoint = "coding-cn";
1483
+ else if (authChoice === "zai-global") endpoint = "global";
1484
+ else if (authChoice === "zai-cn") endpoint = "cn";
1296
1485
  let hasCredential = false;
1486
+ let apiKey = "";
1297
1487
  if (!hasCredential && params.opts?.token && params.opts?.tokenProvider === "zai") {
1298
- await setZaiApiKey(normalizeApiKeyInput(params.opts.token), params.agentDir);
1488
+ apiKey = normalizeApiKeyInput(params.opts.token);
1489
+ await setZaiApiKey(apiKey, params.agentDir);
1299
1490
  hasCredential = true;
1300
1491
  }
1301
1492
  const envKey = resolveEnvApiKey("zai");
@@ -1304,7 +1495,8 @@ async function applyAuthChoiceApiProviders(params) {
1304
1495
  message: `Use existing ZAI_API_KEY (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,
1305
1496
  initialValue: true
1306
1497
  })) {
1307
- await setZaiApiKey(envKey.apiKey, params.agentDir);
1498
+ apiKey = envKey.apiKey;
1499
+ await setZaiApiKey(apiKey, params.agentDir);
1308
1500
  hasCredential = true;
1309
1501
  }
1310
1502
  }
@@ -1313,42 +1505,67 @@ async function applyAuthChoiceApiProviders(params) {
1313
1505
  message: "Enter Z.AI API key",
1314
1506
  validate: validateApiKeyInput
1315
1507
  });
1316
- await setZaiApiKey(normalizeApiKeyInput(String(key)), params.agentDir);
1508
+ apiKey = normalizeApiKeyInput(String(key));
1509
+ await setZaiApiKey(apiKey, params.agentDir);
1510
+ }
1511
+ let modelIdOverride;
1512
+ if (!endpoint) {
1513
+ const detected = await detectZaiEndpoint({ apiKey });
1514
+ if (detected) {
1515
+ endpoint = detected.endpoint;
1516
+ modelIdOverride = detected.modelId;
1517
+ await params.prompter.note(detected.note, "Z.AI endpoint");
1518
+ } else endpoint = await params.prompter.select({
1519
+ message: "Select Z.AI endpoint",
1520
+ options: [
1521
+ {
1522
+ value: "coding-global",
1523
+ label: "Coding-Plan-Global",
1524
+ hint: "GLM Coding Plan Global (api.z.ai)"
1525
+ },
1526
+ {
1527
+ value: "coding-cn",
1528
+ label: "Coding-Plan-CN",
1529
+ hint: "GLM Coding Plan CN (open.bigmodel.cn)"
1530
+ },
1531
+ {
1532
+ value: "global",
1533
+ label: "Global",
1534
+ hint: "Z.AI Global (api.z.ai)"
1535
+ },
1536
+ {
1537
+ value: "cn",
1538
+ label: "CN",
1539
+ hint: "Z.AI CN (open.bigmodel.cn)"
1540
+ }
1541
+ ],
1542
+ initialValue: "global"
1543
+ });
1317
1544
  }
1318
1545
  nextConfig = applyAuthProfileConfig(nextConfig, {
1319
1546
  profileId: "zai:default",
1320
1547
  provider: "zai",
1321
1548
  mode: "api_key"
1322
1549
  });
1323
- {
1324
- const applied = await applyDefaultModelChoice({
1325
- config: nextConfig,
1326
- setDefaultModel: params.setDefaultModel,
1327
- defaultModel: ZAI_DEFAULT_MODEL_REF,
1328
- applyDefaultConfig: applyZaiConfig,
1329
- applyProviderConfig: (config) => ({
1330
- ...config,
1331
- agents: {
1332
- ...config.agents,
1333
- defaults: {
1334
- ...config.agents?.defaults,
1335
- models: {
1336
- ...config.agents?.defaults?.models,
1337
- [ZAI_DEFAULT_MODEL_REF]: {
1338
- ...config.agents?.defaults?.models?.[ZAI_DEFAULT_MODEL_REF],
1339
- alias: config.agents?.defaults?.models?.[ZAI_DEFAULT_MODEL_REF]?.alias ?? "GLM"
1340
- }
1341
- }
1342
- }
1343
- }
1344
- }),
1345
- noteDefault: ZAI_DEFAULT_MODEL_REF,
1346
- noteAgentModel,
1347
- prompter: params.prompter
1348
- });
1349
- nextConfig = applied.config;
1350
- agentModelOverride = applied.agentModelOverride ?? agentModelOverride;
1351
- }
1550
+ const defaultModel = modelIdOverride ? `zai/${modelIdOverride}` : ZAI_DEFAULT_MODEL_REF;
1551
+ const applied = await applyDefaultModelChoice({
1552
+ config: nextConfig,
1553
+ setDefaultModel: params.setDefaultModel,
1554
+ defaultModel,
1555
+ applyDefaultConfig: (config) => applyZaiConfig(config, {
1556
+ endpoint,
1557
+ ...modelIdOverride ? { modelId: modelIdOverride } : {}
1558
+ }),
1559
+ applyProviderConfig: (config) => applyZaiProviderConfig(config, {
1560
+ endpoint,
1561
+ ...modelIdOverride ? { modelId: modelIdOverride } : {}
1562
+ }),
1563
+ noteDefault: defaultModel,
1564
+ noteAgentModel,
1565
+ prompter: params.prompter
1566
+ });
1567
+ nextConfig = applied.config;
1568
+ agentModelOverride = applied.agentModelOverride ?? agentModelOverride;
1352
1569
  return {
1353
1570
  config: nextConfig,
1354
1571
  agentModelOverride
@@ -1855,7 +2072,7 @@ async function applyAuthChoiceMiniMax(params) {
1855
2072
  label: "MiniMax"
1856
2073
  });
1857
2074
  if (params.authChoice === "minimax-cloud" || params.authChoice === "minimax-api" || params.authChoice === "minimax-api-lightning") {
1858
- const modelId = params.authChoice === "minimax-api-lightning" ? "MiniMax-M2.1-lightning" : "MiniMax-M2.1";
2075
+ const modelId = params.authChoice === "minimax-api-lightning" ? "MiniMax-M2.5-Lightning" : "MiniMax-M2.5";
1859
2076
  let hasCredential = false;
1860
2077
  const envKey = resolveEnvApiKey("minimax");
1861
2078
  if (envKey) {
@@ -2533,6 +2750,10 @@ const PREFERRED_PROVIDER_BY_AUTH_CHOICE = {
2533
2750
  "google-antigravity": "google-antigravity",
2534
2751
  "google-gemini-cli": "google-gemini-cli",
2535
2752
  "zai-api-key": "zai",
2753
+ "zai-coding-global": "zai",
2754
+ "zai-coding-cn": "zai",
2755
+ "zai-global": "zai",
2756
+ "zai-cn": "zai",
2536
2757
  "xiaomi-api-key": "xiaomi",
2537
2758
  "synthetic-api-key": "synthetic",
2538
2759
  "venice-api-key": "venice",
@@ -2545,6 +2766,7 @@ const PREFERRED_PROVIDER_BY_AUTH_CHOICE = {
2545
2766
  minimax: "lmstudio",
2546
2767
  "opencode-zen": "opencode",
2547
2768
  "xai-api-key": "xai",
2769
+ "litellm-api-key": "litellm",
2548
2770
  "qwen-portal": "qwen-portal",
2549
2771
  "minimax-portal": "minimax-portal",
2550
2772
  "qianfan-api-key": "qianfan",
@@ -2898,18 +3120,23 @@ const DEFAULT_OLLAMA_BASE_URL = "http://127.0.0.1:11434/v1";
2898
3120
  const DEFAULT_CONTEXT_WINDOW = 4096;
2899
3121
  const DEFAULT_MAX_TOKENS = 4096;
2900
3122
  const VERIFY_TIMEOUT_MS = 1e4;
3123
+ var CustomApiError = class extends Error {
3124
+ constructor(code, message) {
3125
+ super(message);
3126
+ this.name = "CustomApiError";
3127
+ this.code = code;
3128
+ }
3129
+ };
2901
3130
  const COMPATIBILITY_OPTIONS = [
2902
3131
  {
2903
3132
  value: "openai",
2904
3133
  label: "OpenAI-compatible",
2905
- hint: "Uses /chat/completions",
2906
- api: "openai-completions"
3134
+ hint: "Uses /chat/completions"
2907
3135
  },
2908
3136
  {
2909
3137
  value: "anthropic",
2910
3138
  label: "Anthropic-compatible",
2911
- hint: "Uses /messages",
2912
- api: "anthropic-messages"
3139
+ hint: "Uses /messages"
2913
3140
  },
2914
3141
  {
2915
3142
  value: "unknown",
@@ -3070,6 +3297,132 @@ async function promptBaseUrlAndKey(params) {
3070
3297
  apiKey: apiKeyInput.trim()
3071
3298
  };
3072
3299
  }
3300
+ function resolveProviderApi(compatibility) {
3301
+ return compatibility === "anthropic" ? "anthropic-messages" : "openai-completions";
3302
+ }
3303
+ function parseCustomApiCompatibility(raw) {
3304
+ const compatibilityRaw = raw?.trim().toLowerCase();
3305
+ if (!compatibilityRaw) return "openai";
3306
+ if (compatibilityRaw !== "openai" && compatibilityRaw !== "anthropic") throw new CustomApiError("invalid_compatibility", "Invalid --custom-compatibility (use \"openai\" or \"anthropic\").");
3307
+ return compatibilityRaw;
3308
+ }
3309
+ function resolveCustomProviderId(params) {
3310
+ const providers = params.config.models?.providers ?? {};
3311
+ const baseUrl = params.baseUrl.trim();
3312
+ const explicitProviderId = params.providerId?.trim();
3313
+ if (explicitProviderId && !normalizeEndpointId(explicitProviderId)) throw new CustomApiError("invalid_provider_id", "Custom provider ID must include letters, numbers, or hyphens.");
3314
+ const requestedProviderId = explicitProviderId || buildEndpointIdFromUrl(baseUrl);
3315
+ const providerIdResult = resolveUniqueEndpointId({
3316
+ requestedId: requestedProviderId,
3317
+ baseUrl,
3318
+ providers
3319
+ });
3320
+ return {
3321
+ providerId: providerIdResult.providerId,
3322
+ ...providerIdResult.renamed ? { providerIdRenamedFrom: normalizeEndpointId(requestedProviderId) || "custom" } : {}
3323
+ };
3324
+ }
3325
+ function parseNonInteractiveCustomApiFlags(params) {
3326
+ const baseUrl = params.baseUrl?.trim() ?? "";
3327
+ const modelId = params.modelId?.trim() ?? "";
3328
+ if (!baseUrl || !modelId) throw new CustomApiError("missing_required", ["Auth choice \"custom-api-key\" requires a base URL and model ID.", "Use --custom-base-url and --custom-model-id."].join("\n"));
3329
+ const apiKey = params.apiKey?.trim();
3330
+ const providerId = params.providerId?.trim();
3331
+ if (providerId && !normalizeEndpointId(providerId)) throw new CustomApiError("invalid_provider_id", "Custom provider ID must include letters, numbers, or hyphens.");
3332
+ return {
3333
+ baseUrl,
3334
+ modelId,
3335
+ compatibility: parseCustomApiCompatibility(params.compatibility),
3336
+ ...apiKey ? { apiKey } : {},
3337
+ ...providerId ? { providerId } : {}
3338
+ };
3339
+ }
3340
+ function applyCustomApiConfig(params) {
3341
+ const baseUrl = params.baseUrl.trim();
3342
+ try {
3343
+ new URL(baseUrl);
3344
+ } catch {
3345
+ throw new CustomApiError("invalid_base_url", "Custom provider base URL must be a valid URL.");
3346
+ }
3347
+ if (params.compatibility !== "openai" && params.compatibility !== "anthropic") throw new CustomApiError("invalid_compatibility", "Custom provider compatibility must be \"openai\" or \"anthropic\".");
3348
+ const modelId = params.modelId.trim();
3349
+ if (!modelId) throw new CustomApiError("invalid_model_id", "Custom provider model ID is required.");
3350
+ const providerIdResult = resolveCustomProviderId({
3351
+ config: params.config,
3352
+ baseUrl,
3353
+ providerId: params.providerId
3354
+ });
3355
+ const providerId = providerIdResult.providerId;
3356
+ const providers = params.config.models?.providers ?? {};
3357
+ const modelRef = modelKey(providerId, modelId);
3358
+ const alias = params.alias?.trim() ?? "";
3359
+ const aliasError = resolveAliasError({
3360
+ raw: alias,
3361
+ cfg: params.config,
3362
+ modelRef
3363
+ });
3364
+ if (aliasError) throw new CustomApiError("invalid_alias", aliasError);
3365
+ const existingProvider = providers[providerId];
3366
+ const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
3367
+ const hasModel = existingModels.some((model) => model.id === modelId);
3368
+ const nextModel = {
3369
+ id: modelId,
3370
+ name: `${modelId} (Custom Provider)`,
3371
+ contextWindow: DEFAULT_CONTEXT_WINDOW,
3372
+ maxTokens: DEFAULT_MAX_TOKENS,
3373
+ input: ["text"],
3374
+ cost: {
3375
+ input: 0,
3376
+ output: 0,
3377
+ cacheRead: 0,
3378
+ cacheWrite: 0
3379
+ },
3380
+ reasoning: false
3381
+ };
3382
+ const mergedModels = hasModel ? existingModels : [...existingModels, nextModel];
3383
+ const { apiKey: existingApiKey, ...existingProviderRest } = existingProvider ?? {};
3384
+ const normalizedApiKey = params.apiKey?.trim() || (existingApiKey ? existingApiKey.trim() : void 0);
3385
+ let config = {
3386
+ ...params.config,
3387
+ models: {
3388
+ ...params.config.models,
3389
+ mode: params.config.models?.mode ?? "merge",
3390
+ providers: {
3391
+ ...providers,
3392
+ [providerId]: {
3393
+ ...existingProviderRest,
3394
+ baseUrl,
3395
+ api: resolveProviderApi(params.compatibility),
3396
+ ...normalizedApiKey ? { apiKey: normalizedApiKey } : {},
3397
+ models: mergedModels.length > 0 ? mergedModels : [nextModel]
3398
+ }
3399
+ }
3400
+ }
3401
+ };
3402
+ config = applyPrimaryModel(config, modelRef);
3403
+ if (alias) config = {
3404
+ ...config,
3405
+ agents: {
3406
+ ...config.agents,
3407
+ defaults: {
3408
+ ...config.agents?.defaults,
3409
+ models: {
3410
+ ...config.agents?.defaults?.models,
3411
+ [modelRef]: {
3412
+ ...config.agents?.defaults?.models?.[modelRef],
3413
+ alias
3414
+ }
3415
+ }
3416
+ }
3417
+ }
3418
+ };
3419
+ return {
3420
+ config,
3421
+ providerId,
3422
+ modelId,
3423
+ ...providerIdResult.providerIdRenamedFrom ? { providerIdRenamedFrom: providerIdResult.providerIdRenamedFrom } : {}
3424
+ };
3425
+ }
3073
3426
  async function promptCustomApiConfig(params) {
3074
3427
  const { prompter, runtime, config } = params;
3075
3428
  const baseInput = await promptBaseUrlAndKey({ prompter });
@@ -3089,7 +3442,6 @@ async function promptCustomApiConfig(params) {
3089
3442
  validate: (val) => val.trim() ? void 0 : "Model ID is required"
3090
3443
  })).trim();
3091
3444
  let compatibility = compatibilityChoice === "unknown" ? null : compatibilityChoice;
3092
- let providerApi = COMPATIBILITY_OPTIONS.find((entry) => entry.value === compatibility)?.api ?? "openai-completions";
3093
3445
  while (true) {
3094
3446
  let verifiedFromProbe = false;
3095
3447
  if (!compatibility) {
@@ -3101,7 +3453,6 @@ async function promptCustomApiConfig(params) {
3101
3453
  })).ok) {
3102
3454
  probeSpinner.stop("Detected OpenAI-compatible endpoint.");
3103
3455
  compatibility = "openai";
3104
- providerApi = "openai-completions";
3105
3456
  verifiedFromProbe = true;
3106
3457
  } else if ((await requestAnthropicVerification({
3107
3458
  baseUrl,
@@ -3110,7 +3461,6 @@ async function promptCustomApiConfig(params) {
3110
3461
  })).ok) {
3111
3462
  probeSpinner.stop("Detected Anthropic-compatible endpoint.");
3112
3463
  compatibility = "anthropic";
3113
- providerApi = "anthropic-messages";
3114
3464
  verifiedFromProbe = true;
3115
3465
  } else {
3116
3466
  probeSpinner.stop("Could not detect endpoint type.");
@@ -3207,84 +3557,34 @@ async function promptCustomApiConfig(params) {
3207
3557
  if (!normalizeEndpointId(value)) return "Endpoint ID is required.";
3208
3558
  }
3209
3559
  });
3210
- const providerIdResult = resolveUniqueEndpointId({
3211
- requestedId: providerIdInput,
3212
- baseUrl,
3213
- providers
3214
- });
3215
- if (providerIdResult.renamed) await prompter.note(`Endpoint ID "${providerIdInput}" already exists for a different base URL. Using "${providerIdResult.providerId}".`, "Endpoint ID");
3216
- const providerId = providerIdResult.providerId;
3217
- const modelRef = modelKey(providerId, modelId);
3218
- const alias = (await prompter.text({
3560
+ const aliasInput = await prompter.text({
3219
3561
  message: "Model alias (optional)",
3220
3562
  placeholder: "e.g. local, ollama",
3221
3563
  initialValue: "",
3222
- validate: (value) => resolveAliasError({
3223
- raw: value,
3224
- cfg: config,
3225
- modelRef
3226
- })
3227
- })).trim();
3228
- const existingProvider = providers[providerId];
3229
- const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
3230
- const hasModel = existingModels.some((model) => model.id === modelId);
3231
- const nextModel = {
3232
- id: modelId,
3233
- name: `${modelId} (Custom Provider)`,
3234
- contextWindow: DEFAULT_CONTEXT_WINDOW,
3235
- maxTokens: DEFAULT_MAX_TOKENS,
3236
- input: ["text"],
3237
- cost: {
3238
- input: 0,
3239
- output: 0,
3240
- cacheRead: 0,
3241
- cacheWrite: 0
3242
- },
3243
- reasoning: false
3244
- };
3245
- const mergedModels = hasModel ? existingModels : [...existingModels, nextModel];
3246
- const { apiKey: existingApiKey, ...existingProviderRest } = existingProvider ?? {};
3247
- const normalizedApiKey = apiKey.trim() || (existingApiKey ? existingApiKey.trim() : void 0);
3248
- let newConfig = {
3249
- ...config,
3250
- models: {
3251
- ...config.models,
3252
- mode: config.models?.mode ?? "merge",
3253
- providers: {
3254
- ...providers,
3255
- [providerId]: {
3256
- ...existingProviderRest,
3564
+ validate: (value) => {
3565
+ return resolveAliasError({
3566
+ raw: value,
3567
+ cfg: config,
3568
+ modelRef: modelKey(resolveUniqueEndpointId({
3569
+ requestedId: normalizeEndpointId(providerIdInput) || "custom",
3257
3570
  baseUrl,
3258
- api: providerApi,
3259
- ...normalizedApiKey ? { apiKey: normalizedApiKey } : {},
3260
- models: mergedModels.length > 0 ? mergedModels : [nextModel]
3261
- }
3262
- }
3263
- }
3264
- };
3265
- newConfig = applyPrimaryModel(newConfig, modelRef);
3266
- if (alias) newConfig = {
3267
- ...newConfig,
3268
- agents: {
3269
- ...newConfig.agents,
3270
- defaults: {
3271
- ...newConfig.agents?.defaults,
3272
- models: {
3273
- ...newConfig.agents?.defaults?.models,
3274
- [modelRef]: {
3275
- ...newConfig.agents?.defaults?.models?.[modelRef],
3276
- alias
3277
- }
3278
- }
3279
- }
3571
+ providers
3572
+ }).providerId, modelId)
3573
+ });
3280
3574
  }
3281
- };
3282
- runtime.log(`Configured custom provider: ${providerId}/${modelId}`);
3283
- return {
3284
- config: newConfig,
3285
- providerId,
3286
- modelId
3287
- };
3575
+ });
3576
+ const result = applyCustomApiConfig({
3577
+ config,
3578
+ baseUrl,
3579
+ modelId,
3580
+ compatibility: compatibility ?? "openai",
3581
+ apiKey,
3582
+ providerId: providerIdInput,
3583
+ alias: aliasInput
3584
+ });
3585
+ if (result.providerIdRenamedFrom && result.providerId) await prompter.note(`Endpoint ID "${result.providerIdRenamedFrom}" already exists for a different base URL. Using "${result.providerId}".`, "Endpoint ID");
3586
+ runtime.log(`Configured custom provider: ${result.providerId}/${result.modelId}`);
3587
+ return result;
3288
3588
  }
3289
3589
 
3290
3590
  //#endregion
@@ -3457,24 +3757,28 @@ function buildNodeInstallCommand(packageName, prefs) {
3457
3757
  "pnpm",
3458
3758
  "add",
3459
3759
  "-g",
3760
+ "--ignore-scripts",
3460
3761
  packageName
3461
3762
  ];
3462
3763
  case "yarn": return [
3463
3764
  "yarn",
3464
3765
  "global",
3465
3766
  "add",
3767
+ "--ignore-scripts",
3466
3768
  packageName
3467
3769
  ];
3468
3770
  case "bun": return [
3469
3771
  "bun",
3470
3772
  "add",
3471
3773
  "-g",
3774
+ "--ignore-scripts",
3472
3775
  packageName
3473
3776
  ];
3474
3777
  default: return [
3475
3778
  "npm",
3476
3779
  "install",
3477
3780
  "-g",
3781
+ "--ignore-scripts",
3478
3782
  packageName
3479
3783
  ];
3480
3784
  }
@@ -3919,4 +4223,4 @@ async function setupSkills(cfg, workspaceDir, runtime, prompter) {
3919
4223
  }
3920
4224
 
3921
4225
  //#endregion
3922
- export { discoverGatewayBeacons as _, applyModelAllowlist as a, promptDefaultModel as c, warnIfModelConfigLooksOff as d, applyAuthChoice as f, promptAuthChoiceGrouped as g, applyGoogleGeminiModelDefault as h, promptCustomApiConfig as i, promptModelAllowlist as l, upsertSharedEnvVar as m, installSkill as n, applyModelFallbacksFromSelection as o, applyOpenAIConfig as p, promptRemoteGatewayConfig as r, applyPrimaryModel as s, setupSkills as t, resolvePreferredProviderForAuthChoice as u };
4226
+ export { discoverGatewayBeacons as S, applyOpenAIConfig as _, applyCustomApiConfig as a, applyGoogleGeminiModelDefault as b, resolveCustomProviderId as c, applyPrimaryModel as d, promptDefaultModel as f, applyAuthChoice as g, warnIfModelConfigLooksOff as h, CustomApiError as i, applyModelAllowlist as l, resolvePreferredProviderForAuthChoice as m, installSkill as n, parseNonInteractiveCustomApiFlags as o, promptModelAllowlist as p, promptRemoteGatewayConfig as r, promptCustomApiConfig as s, setupSkills as t, applyModelFallbacksFromSelection as u, upsertSharedEnvVar as v, promptAuthChoiceGrouped as x, detectZaiEndpoint as y };