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 { _ as resolveConfigDir, b as resolveUserPath, c as ensureDir, l as escapeRegExp, t as CONFIG_DIR } from "./utils-es4ygvQ-.js";
2
- import { Nt as resolveNodeManagerOptions, Or as loadModelCatalog, Ot as openUrl, bt as detectBinary } from "./reply--b7BsXGP.js";
3
- import { t as runCommandWithTimeout } from "./exec-Cv_Ofd1m.js";
4
- import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-CGmuusG9.js";
5
- import { D as VENICE_DEFAULT_MODEL_REF, Dt as DEFAULT_MODEL, H as resolveEnvApiKey, Ot as DEFAULT_PROVIDER, P as SYNTHETIC_DEFAULT_MODEL_REF, R as getCustomProviderApiKey, St as normalizeSecretInput, X as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, bt as resolveOpenClawAgentDir, ct as generateChutesPkce, d as resolveConfiguredModelRef, dt as listProfilesForProvider, et as resolveAuthProfileOrder, ht as ensureAuthProfileStore, lt as parseOAuthCallbackInput, mt as upsertAuthProfile, o as modelKey, ot as CHUTES_AUTHORIZE_ENDPOINT, r as buildModelAliasIndex, s as normalizeProviderId, st as exchangeChutesCodeForTokens, t as buildAllowedModelSet, u as resolveAllowlistModelKey } from "./model-selection-BK7DuyH8.js";
1
+ import { _ as resolveConfigDir, b as resolveUserPath, c as ensureDir, l as escapeRegExp, t as CONFIG_DIR } from "./utils-Cd9QdCHh.js";
2
+ import { Nt as resolveNodeManagerOptions, Ot as openUrl, bt as detectBinary } from "./reply-DICXkh_C.js";
3
+ import { t as runCommandWithTimeout } from "./exec-YIosokWE.js";
4
+ import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWorkspaceDir, w as resolveDefaultAgentWorkspaceDir } from "./agent-scope-CQCus0rI.js";
5
+ import { D as VENICE_DEFAULT_MODEL_REF, Dt as DEFAULT_MODEL, H as resolveEnvApiKey, Ot as DEFAULT_PROVIDER, P as SYNTHETIC_DEFAULT_MODEL_REF, R as getCustomProviderApiKey, St as normalizeSecretInput, X as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, bt as resolveOpenClawAgentDir, ct as generateChutesPkce, d as resolveConfiguredModelRef, dt as listProfilesForProvider, et as resolveAuthProfileOrder, ht as ensureAuthProfileStore, lt as parseOAuthCallbackInput, mt as upsertAuthProfile, o as modelKey, ot as CHUTES_AUTHORIZE_ENDPOINT, r as buildModelAliasIndex, s as normalizeProviderId, st as exchangeChutesCodeForTokens, t as buildAllowedModelSet, u as resolveAllowlistModelKey } from "./model-selection-BLuqsGVB.js";
6
6
  import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
7
- import { _ as resolveSkillKey, d as hasBinary, i as loadWorkspaceSkillEntries, t as resolveSkillsInstallPreferences } from "./skills-ccAgQ3Ad.js";
8
- import { X as fetchWithTimeout, Z as fetchWithSsrFGuard } from "./deliver-T9d44OpZ.js";
9
- import { t as resolveBrewExecutable } from "./brew-B7YK4ZoL.js";
10
- 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-Omqrto0J.js";
11
- import { a as enablePluginInConfig } from "./onboard-channels-CXhnVy4E.js";
12
- import { t as scanDirectoryWithSummary } from "./skill-scanner-DrVEHfC6.js";
13
- import { t as buildWorkspaceSkillStatus } from "./skills-status-BosMnzIs.js";
14
- import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-2ah0bkAj.js";
7
+ import { s as loadModelCatalog } from "./runner-D_dujMod.js";
8
+ import { b as resolveSkillKey, i as loadWorkspaceSkillEntries, m as hasBinary, t as resolveSkillsInstallPreferences } from "./skills-DprQj9X2.js";
9
+ import { i as fetchWithSsrFGuard, r as fetchWithTimeout } from "./fetch-DmiOpALK.js";
10
+ import { t as resolveBrewExecutable } from "./brew-ROHf0-Xp.js";
11
+ 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-D7ewvpMd.js";
12
+ import { a as enablePluginInConfig } from "./onboard-channels-Dxzroasd.js";
13
+ import { t as scanDirectoryWithSummary } from "./skill-scanner-CucvxYhu.js";
14
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-5U3P3YfJ.js";
15
+ import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-DzuRdwk5.js";
15
16
  import fs from "node:fs";
16
17
  import path from "node:path";
17
18
  import { randomBytes } from "node:crypto";
@@ -37,7 +38,7 @@ const AUTH_CHOICE_GROUP_DEFS = [
37
38
  {
38
39
  value: "minimax",
39
40
  label: "MiniMax",
40
- hint: "M2.1 (recommended)",
41
+ hint: "M2.5 (recommended)",
41
42
  choices: [
42
43
  "minimax-portal",
43
44
  "minimax-api",
@@ -84,9 +85,14 @@ const AUTH_CHOICE_GROUP_DEFS = [
84
85
  },
85
86
  {
86
87
  value: "zai",
87
- label: "Z.AI (GLM 4.7)",
88
- hint: "API key",
89
- choices: ["zai-api-key"]
88
+ label: "Z.AI",
89
+ hint: "GLM Coding Plan / Global / CN",
90
+ choices: [
91
+ "zai-coding-global",
92
+ "zai-coding-cn",
93
+ "zai-global",
94
+ "zai-cn"
95
+ ]
90
96
  },
91
97
  {
92
98
  value: "qianfan",
@@ -136,6 +142,12 @@ const AUTH_CHOICE_GROUP_DEFS = [
136
142
  hint: "Privacy-focused (uncensored models)",
137
143
  choices: ["venice-api-key"]
138
144
  },
145
+ {
146
+ value: "litellm",
147
+ label: "LiteLLM",
148
+ hint: "Unified LLM gateway (100+ providers)",
149
+ choices: ["litellm-api-key"]
150
+ },
139
151
  {
140
152
  value: "cloudflare-ai-gateway",
141
153
  label: "Cloudflare AI Gateway",
@@ -181,6 +193,11 @@ function buildAuthChoiceOptions(params) {
181
193
  value: "openrouter-api-key",
182
194
  label: "OpenRouter API key"
183
195
  });
196
+ options.push({
197
+ value: "litellm-api-key",
198
+ label: "LiteLLM API key",
199
+ hint: "Unified gateway for 100+ LLM providers"
200
+ });
184
201
  options.push({
185
202
  value: "ai-gateway-api-key",
186
203
  label: "Vercel AI Gateway API key"
@@ -237,7 +254,27 @@ function buildAuthChoiceOptions(params) {
237
254
  });
238
255
  options.push({
239
256
  value: "zai-api-key",
240
- label: "Z.AI (GLM 4.7) API key"
257
+ label: "Z.AI API key"
258
+ });
259
+ options.push({
260
+ value: "zai-coding-global",
261
+ label: "Coding-Plan-Global",
262
+ hint: "GLM Coding Plan Global (api.z.ai)"
263
+ });
264
+ options.push({
265
+ value: "zai-coding-cn",
266
+ label: "Coding-Plan-CN",
267
+ hint: "GLM Coding Plan CN (open.bigmodel.cn)"
268
+ });
269
+ options.push({
270
+ value: "zai-global",
271
+ label: "Global",
272
+ hint: "Z.AI Global (api.z.ai)"
273
+ });
274
+ options.push({
275
+ value: "zai-cn",
276
+ label: "CN",
277
+ hint: "Z.AI CN (open.bigmodel.cn)"
241
278
  });
242
279
  options.push({
243
280
  value: "xiaomi-api-key",
@@ -268,11 +305,11 @@ function buildAuthChoiceOptions(params) {
268
305
  });
269
306
  options.push({
270
307
  value: "minimax-api",
271
- label: "MiniMax M2.1"
308
+ label: "MiniMax M2.5"
272
309
  });
273
310
  options.push({
274
311
  value: "minimax-api-lightning",
275
- label: "MiniMax M2.1 Lightning",
312
+ label: "MiniMax M2.5 Lightning",
276
313
  hint: "Faster, higher output cost"
277
314
  });
278
315
  options.push({
@@ -513,6 +550,91 @@ function applyGoogleGeminiModelDefault(cfg) {
513
550
  //#region src/commands/opencode-zen-model-default.ts
514
551
  const OPENCODE_ZEN_DEFAULT_MODEL = "opencode/claude-opus-4-6";
515
552
 
553
+ //#endregion
554
+ //#region src/commands/zai-endpoint-detect.ts
555
+ async function probeZaiChatCompletions(params) {
556
+ try {
557
+ const res = await fetchWithTimeout(`${params.baseUrl}/chat/completions`, {
558
+ method: "POST",
559
+ headers: {
560
+ authorization: `Bearer ${params.apiKey}`,
561
+ "content-type": "application/json"
562
+ },
563
+ body: JSON.stringify({
564
+ model: params.modelId,
565
+ stream: false,
566
+ max_tokens: 1,
567
+ messages: [{
568
+ role: "user",
569
+ content: "ping"
570
+ }]
571
+ })
572
+ }, params.timeoutMs, params.fetchFn);
573
+ if (res.ok) return { ok: true };
574
+ let errorCode;
575
+ let errorMessage;
576
+ try {
577
+ const json = await res.json();
578
+ const code = json?.error?.code;
579
+ const msg = json?.error?.message ?? json?.msg ?? json?.message;
580
+ if (typeof code === "string") errorCode = code;
581
+ else if (typeof code === "number") errorCode = String(code);
582
+ if (typeof msg === "string") errorMessage = msg;
583
+ } catch {}
584
+ return {
585
+ ok: false,
586
+ status: res.status,
587
+ errorCode,
588
+ errorMessage
589
+ };
590
+ } catch {
591
+ return { ok: false };
592
+ }
593
+ }
594
+ async function detectZaiEndpoint(params) {
595
+ if (process.env.VITEST && !params.fetchFn) return null;
596
+ const timeoutMs = params.timeoutMs ?? 5e3;
597
+ const glm5 = [{
598
+ endpoint: "global",
599
+ baseUrl: ZAI_GLOBAL_BASE_URL
600
+ }, {
601
+ endpoint: "cn",
602
+ baseUrl: ZAI_CN_BASE_URL
603
+ }];
604
+ for (const candidate of glm5) if ((await probeZaiChatCompletions({
605
+ baseUrl: candidate.baseUrl,
606
+ apiKey: params.apiKey,
607
+ modelId: "glm-5",
608
+ timeoutMs,
609
+ fetchFn: params.fetchFn
610
+ })).ok) return {
611
+ endpoint: candidate.endpoint,
612
+ baseUrl: candidate.baseUrl,
613
+ modelId: "glm-5",
614
+ note: `Verified GLM-5 on ${candidate.endpoint} endpoint.`
615
+ };
616
+ const coding = [{
617
+ endpoint: "coding-global",
618
+ baseUrl: ZAI_CODING_GLOBAL_BASE_URL
619
+ }, {
620
+ endpoint: "coding-cn",
621
+ baseUrl: ZAI_CODING_CN_BASE_URL
622
+ }];
623
+ for (const candidate of coding) if ((await probeZaiChatCompletions({
624
+ baseUrl: candidate.baseUrl,
625
+ apiKey: params.apiKey,
626
+ modelId: "glm-4.7",
627
+ timeoutMs,
628
+ fetchFn: params.fetchFn
629
+ })).ok) return {
630
+ endpoint: candidate.endpoint,
631
+ baseUrl: candidate.baseUrl,
632
+ modelId: "glm-4.7",
633
+ note: "Coding Plan endpoint detected; GLM-5 is not available there. Defaulting to GLM-4.7."
634
+ };
635
+ return null;
636
+ }
637
+
516
638
  //#endregion
517
639
  //#region src/commands/auth-choice.apply.api-providers.ts
518
640
  async function applyAuthChoiceApiProviders(params) {
@@ -525,6 +647,7 @@ async function applyAuthChoiceApiProviders(params) {
525
647
  let authChoice = params.authChoice;
526
648
  if (authChoice === "apiKey" && params.opts?.tokenProvider && params.opts.tokenProvider !== "anthropic" && params.opts.tokenProvider !== "openai") {
527
649
  if (params.opts.tokenProvider === "openrouter") authChoice = "openrouter-api-key";
650
+ else if (params.opts.tokenProvider === "litellm") authChoice = "litellm-api-key";
528
651
  else if (params.opts.tokenProvider === "vercel-ai-gateway") authChoice = "ai-gateway-api-key";
529
652
  else if (params.opts.tokenProvider === "cloudflare-ai-gateway") authChoice = "cloudflare-ai-gateway-api-key";
530
653
  else if (params.opts.tokenProvider === "moonshot") authChoice = "moonshot-api-key";
@@ -602,6 +725,67 @@ async function applyAuthChoiceApiProviders(params) {
602
725
  agentModelOverride
603
726
  };
604
727
  }
728
+ if (authChoice === "litellm-api-key") {
729
+ const store = ensureAuthProfileStore(params.agentDir, { allowKeychainPrompt: false });
730
+ const existingProfileId = resolveAuthProfileOrder({
731
+ cfg: nextConfig,
732
+ store,
733
+ provider: "litellm"
734
+ }).find((profileId) => Boolean(store.profiles[profileId]));
735
+ const existingCred = existingProfileId ? store.profiles[existingProfileId] : void 0;
736
+ let profileId = "litellm:default";
737
+ let hasCredential = false;
738
+ if (existingProfileId && existingCred?.type === "api_key") {
739
+ profileId = existingProfileId;
740
+ hasCredential = true;
741
+ }
742
+ if (!hasCredential && params.opts?.token && params.opts?.tokenProvider === "litellm") {
743
+ await setLitellmApiKey(normalizeApiKeyInput(params.opts.token), params.agentDir);
744
+ hasCredential = true;
745
+ }
746
+ if (!hasCredential) {
747
+ 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");
748
+ const envKey = resolveEnvApiKey("litellm");
749
+ if (envKey) {
750
+ if (await params.prompter.confirm({
751
+ message: `Use existing LITELLM_API_KEY (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,
752
+ initialValue: true
753
+ })) {
754
+ await setLitellmApiKey(envKey.apiKey, params.agentDir);
755
+ hasCredential = true;
756
+ }
757
+ }
758
+ if (!hasCredential) {
759
+ const key = await params.prompter.text({
760
+ message: "Enter LiteLLM API key",
761
+ validate: validateApiKeyInput
762
+ });
763
+ await setLitellmApiKey(normalizeApiKeyInput(String(key)), params.agentDir);
764
+ hasCredential = true;
765
+ }
766
+ }
767
+ if (hasCredential) nextConfig = applyAuthProfileConfig(nextConfig, {
768
+ profileId,
769
+ provider: "litellm",
770
+ mode: "api_key"
771
+ });
772
+ const applied = await applyDefaultModelChoice({
773
+ config: nextConfig,
774
+ setDefaultModel: params.setDefaultModel,
775
+ defaultModel: LITELLM_DEFAULT_MODEL_REF,
776
+ applyDefaultConfig: applyLitellmConfig,
777
+ applyProviderConfig: applyLitellmProviderConfig,
778
+ noteDefault: LITELLM_DEFAULT_MODEL_REF,
779
+ noteAgentModel,
780
+ prompter: params.prompter
781
+ });
782
+ nextConfig = applied.config;
783
+ agentModelOverride = applied.agentModelOverride ?? agentModelOverride;
784
+ return {
785
+ config: nextConfig,
786
+ agentModelOverride
787
+ };
788
+ }
605
789
  if (authChoice === "ai-gateway-api-key") {
606
790
  let hasCredential = false;
607
791
  if (!hasCredential && params.opts?.token && params.opts?.tokenProvider === "vercel-ai-gateway") {
@@ -911,10 +1095,17 @@ async function applyAuthChoiceApiProviders(params) {
911
1095
  agentModelOverride
912
1096
  };
913
1097
  }
914
- if (authChoice === "zai-api-key") {
1098
+ if (authChoice === "zai-api-key" || authChoice === "zai-coding-global" || authChoice === "zai-coding-cn" || authChoice === "zai-global" || authChoice === "zai-cn") {
1099
+ let endpoint;
1100
+ if (authChoice === "zai-coding-global") endpoint = "coding-global";
1101
+ else if (authChoice === "zai-coding-cn") endpoint = "coding-cn";
1102
+ else if (authChoice === "zai-global") endpoint = "global";
1103
+ else if (authChoice === "zai-cn") endpoint = "cn";
915
1104
  let hasCredential = false;
1105
+ let apiKey = "";
916
1106
  if (!hasCredential && params.opts?.token && params.opts?.tokenProvider === "zai") {
917
- await setZaiApiKey(normalizeApiKeyInput(params.opts.token), params.agentDir);
1107
+ apiKey = normalizeApiKeyInput(params.opts.token);
1108
+ await setZaiApiKey(apiKey, params.agentDir);
918
1109
  hasCredential = true;
919
1110
  }
920
1111
  const envKey = resolveEnvApiKey("zai");
@@ -923,7 +1114,8 @@ async function applyAuthChoiceApiProviders(params) {
923
1114
  message: `Use existing ZAI_API_KEY (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,
924
1115
  initialValue: true
925
1116
  })) {
926
- await setZaiApiKey(envKey.apiKey, params.agentDir);
1117
+ apiKey = envKey.apiKey;
1118
+ await setZaiApiKey(apiKey, params.agentDir);
927
1119
  hasCredential = true;
928
1120
  }
929
1121
  }
@@ -932,42 +1124,67 @@ async function applyAuthChoiceApiProviders(params) {
932
1124
  message: "Enter Z.AI API key",
933
1125
  validate: validateApiKeyInput
934
1126
  });
935
- await setZaiApiKey(normalizeApiKeyInput(String(key)), params.agentDir);
1127
+ apiKey = normalizeApiKeyInput(String(key));
1128
+ await setZaiApiKey(apiKey, params.agentDir);
1129
+ }
1130
+ let modelIdOverride;
1131
+ if (!endpoint) {
1132
+ const detected = await detectZaiEndpoint({ apiKey });
1133
+ if (detected) {
1134
+ endpoint = detected.endpoint;
1135
+ modelIdOverride = detected.modelId;
1136
+ await params.prompter.note(detected.note, "Z.AI endpoint");
1137
+ } else endpoint = await params.prompter.select({
1138
+ message: "Select Z.AI endpoint",
1139
+ options: [
1140
+ {
1141
+ value: "coding-global",
1142
+ label: "Coding-Plan-Global",
1143
+ hint: "GLM Coding Plan Global (api.z.ai)"
1144
+ },
1145
+ {
1146
+ value: "coding-cn",
1147
+ label: "Coding-Plan-CN",
1148
+ hint: "GLM Coding Plan CN (open.bigmodel.cn)"
1149
+ },
1150
+ {
1151
+ value: "global",
1152
+ label: "Global",
1153
+ hint: "Z.AI Global (api.z.ai)"
1154
+ },
1155
+ {
1156
+ value: "cn",
1157
+ label: "CN",
1158
+ hint: "Z.AI CN (open.bigmodel.cn)"
1159
+ }
1160
+ ],
1161
+ initialValue: "global"
1162
+ });
936
1163
  }
937
1164
  nextConfig = applyAuthProfileConfig(nextConfig, {
938
1165
  profileId: "zai:default",
939
1166
  provider: "zai",
940
1167
  mode: "api_key"
941
1168
  });
942
- {
943
- const applied = await applyDefaultModelChoice({
944
- config: nextConfig,
945
- setDefaultModel: params.setDefaultModel,
946
- defaultModel: ZAI_DEFAULT_MODEL_REF,
947
- applyDefaultConfig: applyZaiConfig,
948
- applyProviderConfig: (config) => ({
949
- ...config,
950
- agents: {
951
- ...config.agents,
952
- defaults: {
953
- ...config.agents?.defaults,
954
- models: {
955
- ...config.agents?.defaults?.models,
956
- [ZAI_DEFAULT_MODEL_REF]: {
957
- ...config.agents?.defaults?.models?.[ZAI_DEFAULT_MODEL_REF],
958
- alias: config.agents?.defaults?.models?.[ZAI_DEFAULT_MODEL_REF]?.alias ?? "GLM"
959
- }
960
- }
961
- }
962
- }
963
- }),
964
- noteDefault: ZAI_DEFAULT_MODEL_REF,
965
- noteAgentModel,
966
- prompter: params.prompter
967
- });
968
- nextConfig = applied.config;
969
- agentModelOverride = applied.agentModelOverride ?? agentModelOverride;
970
- }
1169
+ const defaultModel = modelIdOverride ? `zai/${modelIdOverride}` : ZAI_DEFAULT_MODEL_REF;
1170
+ const applied = await applyDefaultModelChoice({
1171
+ config: nextConfig,
1172
+ setDefaultModel: params.setDefaultModel,
1173
+ defaultModel,
1174
+ applyDefaultConfig: (config) => applyZaiConfig(config, {
1175
+ endpoint,
1176
+ ...modelIdOverride ? { modelId: modelIdOverride } : {}
1177
+ }),
1178
+ applyProviderConfig: (config) => applyZaiProviderConfig(config, {
1179
+ endpoint,
1180
+ ...modelIdOverride ? { modelId: modelIdOverride } : {}
1181
+ }),
1182
+ noteDefault: defaultModel,
1183
+ noteAgentModel,
1184
+ prompter: params.prompter
1185
+ });
1186
+ nextConfig = applied.config;
1187
+ agentModelOverride = applied.agentModelOverride ?? agentModelOverride;
971
1188
  return {
972
1189
  config: nextConfig,
973
1190
  agentModelOverride
@@ -1474,7 +1691,7 @@ async function applyAuthChoiceMiniMax(params) {
1474
1691
  label: "MiniMax"
1475
1692
  });
1476
1693
  if (params.authChoice === "minimax-cloud" || params.authChoice === "minimax-api" || params.authChoice === "minimax-api-lightning") {
1477
- const modelId = params.authChoice === "minimax-api-lightning" ? "MiniMax-M2.1-lightning" : "MiniMax-M2.1";
1694
+ const modelId = params.authChoice === "minimax-api-lightning" ? "MiniMax-M2.5-Lightning" : "MiniMax-M2.5";
1478
1695
  let hasCredential = false;
1479
1696
  const envKey = resolveEnvApiKey("minimax");
1480
1697
  if (envKey) {
@@ -2152,6 +2369,10 @@ const PREFERRED_PROVIDER_BY_AUTH_CHOICE = {
2152
2369
  "google-antigravity": "google-antigravity",
2153
2370
  "google-gemini-cli": "google-gemini-cli",
2154
2371
  "zai-api-key": "zai",
2372
+ "zai-coding-global": "zai",
2373
+ "zai-coding-cn": "zai",
2374
+ "zai-global": "zai",
2375
+ "zai-cn": "zai",
2155
2376
  "xiaomi-api-key": "xiaomi",
2156
2377
  "synthetic-api-key": "synthetic",
2157
2378
  "venice-api-key": "venice",
@@ -2164,6 +2385,7 @@ const PREFERRED_PROVIDER_BY_AUTH_CHOICE = {
2164
2385
  minimax: "lmstudio",
2165
2386
  "opencode-zen": "opencode",
2166
2387
  "xai-api-key": "xai",
2388
+ "litellm-api-key": "litellm",
2167
2389
  "qwen-portal": "qwen-portal",
2168
2390
  "minimax-portal": "minimax-portal",
2169
2391
  "qianfan-api-key": "qianfan",
@@ -2517,18 +2739,23 @@ const DEFAULT_OLLAMA_BASE_URL = "http://127.0.0.1:11434/v1";
2517
2739
  const DEFAULT_CONTEXT_WINDOW = 4096;
2518
2740
  const DEFAULT_MAX_TOKENS = 4096;
2519
2741
  const VERIFY_TIMEOUT_MS = 1e4;
2742
+ var CustomApiError = class extends Error {
2743
+ constructor(code, message) {
2744
+ super(message);
2745
+ this.name = "CustomApiError";
2746
+ this.code = code;
2747
+ }
2748
+ };
2520
2749
  const COMPATIBILITY_OPTIONS = [
2521
2750
  {
2522
2751
  value: "openai",
2523
2752
  label: "OpenAI-compatible",
2524
- hint: "Uses /chat/completions",
2525
- api: "openai-completions"
2753
+ hint: "Uses /chat/completions"
2526
2754
  },
2527
2755
  {
2528
2756
  value: "anthropic",
2529
2757
  label: "Anthropic-compatible",
2530
- hint: "Uses /messages",
2531
- api: "anthropic-messages"
2758
+ hint: "Uses /messages"
2532
2759
  },
2533
2760
  {
2534
2761
  value: "unknown",
@@ -2689,6 +2916,132 @@ async function promptBaseUrlAndKey(params) {
2689
2916
  apiKey: apiKeyInput.trim()
2690
2917
  };
2691
2918
  }
2919
+ function resolveProviderApi(compatibility) {
2920
+ return compatibility === "anthropic" ? "anthropic-messages" : "openai-completions";
2921
+ }
2922
+ function parseCustomApiCompatibility(raw) {
2923
+ const compatibilityRaw = raw?.trim().toLowerCase();
2924
+ if (!compatibilityRaw) return "openai";
2925
+ if (compatibilityRaw !== "openai" && compatibilityRaw !== "anthropic") throw new CustomApiError("invalid_compatibility", "Invalid --custom-compatibility (use \"openai\" or \"anthropic\").");
2926
+ return compatibilityRaw;
2927
+ }
2928
+ function resolveCustomProviderId(params) {
2929
+ const providers = params.config.models?.providers ?? {};
2930
+ const baseUrl = params.baseUrl.trim();
2931
+ const explicitProviderId = params.providerId?.trim();
2932
+ if (explicitProviderId && !normalizeEndpointId(explicitProviderId)) throw new CustomApiError("invalid_provider_id", "Custom provider ID must include letters, numbers, or hyphens.");
2933
+ const requestedProviderId = explicitProviderId || buildEndpointIdFromUrl(baseUrl);
2934
+ const providerIdResult = resolveUniqueEndpointId({
2935
+ requestedId: requestedProviderId,
2936
+ baseUrl,
2937
+ providers
2938
+ });
2939
+ return {
2940
+ providerId: providerIdResult.providerId,
2941
+ ...providerIdResult.renamed ? { providerIdRenamedFrom: normalizeEndpointId(requestedProviderId) || "custom" } : {}
2942
+ };
2943
+ }
2944
+ function parseNonInteractiveCustomApiFlags(params) {
2945
+ const baseUrl = params.baseUrl?.trim() ?? "";
2946
+ const modelId = params.modelId?.trim() ?? "";
2947
+ 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"));
2948
+ const apiKey = params.apiKey?.trim();
2949
+ const providerId = params.providerId?.trim();
2950
+ if (providerId && !normalizeEndpointId(providerId)) throw new CustomApiError("invalid_provider_id", "Custom provider ID must include letters, numbers, or hyphens.");
2951
+ return {
2952
+ baseUrl,
2953
+ modelId,
2954
+ compatibility: parseCustomApiCompatibility(params.compatibility),
2955
+ ...apiKey ? { apiKey } : {},
2956
+ ...providerId ? { providerId } : {}
2957
+ };
2958
+ }
2959
+ function applyCustomApiConfig(params) {
2960
+ const baseUrl = params.baseUrl.trim();
2961
+ try {
2962
+ new URL(baseUrl);
2963
+ } catch {
2964
+ throw new CustomApiError("invalid_base_url", "Custom provider base URL must be a valid URL.");
2965
+ }
2966
+ if (params.compatibility !== "openai" && params.compatibility !== "anthropic") throw new CustomApiError("invalid_compatibility", "Custom provider compatibility must be \"openai\" or \"anthropic\".");
2967
+ const modelId = params.modelId.trim();
2968
+ if (!modelId) throw new CustomApiError("invalid_model_id", "Custom provider model ID is required.");
2969
+ const providerIdResult = resolveCustomProviderId({
2970
+ config: params.config,
2971
+ baseUrl,
2972
+ providerId: params.providerId
2973
+ });
2974
+ const providerId = providerIdResult.providerId;
2975
+ const providers = params.config.models?.providers ?? {};
2976
+ const modelRef = modelKey(providerId, modelId);
2977
+ const alias = params.alias?.trim() ?? "";
2978
+ const aliasError = resolveAliasError({
2979
+ raw: alias,
2980
+ cfg: params.config,
2981
+ modelRef
2982
+ });
2983
+ if (aliasError) throw new CustomApiError("invalid_alias", aliasError);
2984
+ const existingProvider = providers[providerId];
2985
+ const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
2986
+ const hasModel = existingModels.some((model) => model.id === modelId);
2987
+ const nextModel = {
2988
+ id: modelId,
2989
+ name: `${modelId} (Custom Provider)`,
2990
+ contextWindow: DEFAULT_CONTEXT_WINDOW,
2991
+ maxTokens: DEFAULT_MAX_TOKENS,
2992
+ input: ["text"],
2993
+ cost: {
2994
+ input: 0,
2995
+ output: 0,
2996
+ cacheRead: 0,
2997
+ cacheWrite: 0
2998
+ },
2999
+ reasoning: false
3000
+ };
3001
+ const mergedModels = hasModel ? existingModels : [...existingModels, nextModel];
3002
+ const { apiKey: existingApiKey, ...existingProviderRest } = existingProvider ?? {};
3003
+ const normalizedApiKey = params.apiKey?.trim() || (existingApiKey ? existingApiKey.trim() : void 0);
3004
+ let config = {
3005
+ ...params.config,
3006
+ models: {
3007
+ ...params.config.models,
3008
+ mode: params.config.models?.mode ?? "merge",
3009
+ providers: {
3010
+ ...providers,
3011
+ [providerId]: {
3012
+ ...existingProviderRest,
3013
+ baseUrl,
3014
+ api: resolveProviderApi(params.compatibility),
3015
+ ...normalizedApiKey ? { apiKey: normalizedApiKey } : {},
3016
+ models: mergedModels.length > 0 ? mergedModels : [nextModel]
3017
+ }
3018
+ }
3019
+ }
3020
+ };
3021
+ config = applyPrimaryModel(config, modelRef);
3022
+ if (alias) config = {
3023
+ ...config,
3024
+ agents: {
3025
+ ...config.agents,
3026
+ defaults: {
3027
+ ...config.agents?.defaults,
3028
+ models: {
3029
+ ...config.agents?.defaults?.models,
3030
+ [modelRef]: {
3031
+ ...config.agents?.defaults?.models?.[modelRef],
3032
+ alias
3033
+ }
3034
+ }
3035
+ }
3036
+ }
3037
+ };
3038
+ return {
3039
+ config,
3040
+ providerId,
3041
+ modelId,
3042
+ ...providerIdResult.providerIdRenamedFrom ? { providerIdRenamedFrom: providerIdResult.providerIdRenamedFrom } : {}
3043
+ };
3044
+ }
2692
3045
  async function promptCustomApiConfig(params) {
2693
3046
  const { prompter, runtime, config } = params;
2694
3047
  const baseInput = await promptBaseUrlAndKey({ prompter });
@@ -2708,7 +3061,6 @@ async function promptCustomApiConfig(params) {
2708
3061
  validate: (val) => val.trim() ? void 0 : "Model ID is required"
2709
3062
  })).trim();
2710
3063
  let compatibility = compatibilityChoice === "unknown" ? null : compatibilityChoice;
2711
- let providerApi = COMPATIBILITY_OPTIONS.find((entry) => entry.value === compatibility)?.api ?? "openai-completions";
2712
3064
  while (true) {
2713
3065
  let verifiedFromProbe = false;
2714
3066
  if (!compatibility) {
@@ -2720,7 +3072,6 @@ async function promptCustomApiConfig(params) {
2720
3072
  })).ok) {
2721
3073
  probeSpinner.stop("Detected OpenAI-compatible endpoint.");
2722
3074
  compatibility = "openai";
2723
- providerApi = "openai-completions";
2724
3075
  verifiedFromProbe = true;
2725
3076
  } else if ((await requestAnthropicVerification({
2726
3077
  baseUrl,
@@ -2729,7 +3080,6 @@ async function promptCustomApiConfig(params) {
2729
3080
  })).ok) {
2730
3081
  probeSpinner.stop("Detected Anthropic-compatible endpoint.");
2731
3082
  compatibility = "anthropic";
2732
- providerApi = "anthropic-messages";
2733
3083
  verifiedFromProbe = true;
2734
3084
  } else {
2735
3085
  probeSpinner.stop("Could not detect endpoint type.");
@@ -2826,84 +3176,34 @@ async function promptCustomApiConfig(params) {
2826
3176
  if (!normalizeEndpointId(value)) return "Endpoint ID is required.";
2827
3177
  }
2828
3178
  });
2829
- const providerIdResult = resolveUniqueEndpointId({
2830
- requestedId: providerIdInput,
2831
- baseUrl,
2832
- providers
2833
- });
2834
- if (providerIdResult.renamed) await prompter.note(`Endpoint ID "${providerIdInput}" already exists for a different base URL. Using "${providerIdResult.providerId}".`, "Endpoint ID");
2835
- const providerId = providerIdResult.providerId;
2836
- const modelRef = modelKey(providerId, modelId);
2837
- const alias = (await prompter.text({
3179
+ const aliasInput = await prompter.text({
2838
3180
  message: "Model alias (optional)",
2839
3181
  placeholder: "e.g. local, ollama",
2840
3182
  initialValue: "",
2841
- validate: (value) => resolveAliasError({
2842
- raw: value,
2843
- cfg: config,
2844
- modelRef
2845
- })
2846
- })).trim();
2847
- const existingProvider = providers[providerId];
2848
- const existingModels = Array.isArray(existingProvider?.models) ? existingProvider.models : [];
2849
- const hasModel = existingModels.some((model) => model.id === modelId);
2850
- const nextModel = {
2851
- id: modelId,
2852
- name: `${modelId} (Custom Provider)`,
2853
- contextWindow: DEFAULT_CONTEXT_WINDOW,
2854
- maxTokens: DEFAULT_MAX_TOKENS,
2855
- input: ["text"],
2856
- cost: {
2857
- input: 0,
2858
- output: 0,
2859
- cacheRead: 0,
2860
- cacheWrite: 0
2861
- },
2862
- reasoning: false
2863
- };
2864
- const mergedModels = hasModel ? existingModels : [...existingModels, nextModel];
2865
- const { apiKey: existingApiKey, ...existingProviderRest } = existingProvider ?? {};
2866
- const normalizedApiKey = apiKey.trim() || (existingApiKey ? existingApiKey.trim() : void 0);
2867
- let newConfig = {
2868
- ...config,
2869
- models: {
2870
- ...config.models,
2871
- mode: config.models?.mode ?? "merge",
2872
- providers: {
2873
- ...providers,
2874
- [providerId]: {
2875
- ...existingProviderRest,
3183
+ validate: (value) => {
3184
+ return resolveAliasError({
3185
+ raw: value,
3186
+ cfg: config,
3187
+ modelRef: modelKey(resolveUniqueEndpointId({
3188
+ requestedId: normalizeEndpointId(providerIdInput) || "custom",
2876
3189
  baseUrl,
2877
- api: providerApi,
2878
- ...normalizedApiKey ? { apiKey: normalizedApiKey } : {},
2879
- models: mergedModels.length > 0 ? mergedModels : [nextModel]
2880
- }
2881
- }
2882
- }
2883
- };
2884
- newConfig = applyPrimaryModel(newConfig, modelRef);
2885
- if (alias) newConfig = {
2886
- ...newConfig,
2887
- agents: {
2888
- ...newConfig.agents,
2889
- defaults: {
2890
- ...newConfig.agents?.defaults,
2891
- models: {
2892
- ...newConfig.agents?.defaults?.models,
2893
- [modelRef]: {
2894
- ...newConfig.agents?.defaults?.models?.[modelRef],
2895
- alias
2896
- }
2897
- }
2898
- }
3190
+ providers
3191
+ }).providerId, modelId)
3192
+ });
2899
3193
  }
2900
- };
2901
- runtime.log(`Configured custom provider: ${providerId}/${modelId}`);
2902
- return {
2903
- config: newConfig,
2904
- providerId,
2905
- modelId
2906
- };
3194
+ });
3195
+ const result = applyCustomApiConfig({
3196
+ config,
3197
+ baseUrl,
3198
+ modelId,
3199
+ compatibility: compatibility ?? "openai",
3200
+ apiKey,
3201
+ providerId: providerIdInput,
3202
+ alias: aliasInput
3203
+ });
3204
+ if (result.providerIdRenamedFrom && result.providerId) await prompter.note(`Endpoint ID "${result.providerIdRenamedFrom}" already exists for a different base URL. Using "${result.providerId}".`, "Endpoint ID");
3205
+ runtime.log(`Configured custom provider: ${result.providerId}/${result.modelId}`);
3206
+ return result;
2907
3207
  }
2908
3208
 
2909
3209
  //#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 { promptAuthChoiceGrouped as _, promptCustomApiConfig as a, applyPrimaryModel as c, resolvePreferredProviderForAuthChoice as d, warnIfModelConfigLooksOff as f, applyGoogleGeminiModelDefault as g, upsertSharedEnvVar as h, discoverGatewayBeacons as i, promptDefaultModel as l, applyOpenAIConfig as m, installSkill as n, applyModelAllowlist as o, applyAuthChoice as p, promptRemoteGatewayConfig as r, applyModelFallbacksFromSelection as s, setupSkills as t, promptModelAllowlist as u };
4226
+ export { promptAuthChoiceGrouped as S, applyAuthChoice as _, CustomApiError as a, detectZaiEndpoint as b, promptCustomApiConfig as c, applyModelFallbacksFromSelection as d, applyPrimaryModel as f, warnIfModelConfigLooksOff as g, resolvePreferredProviderForAuthChoice as h, discoverGatewayBeacons as i, resolveCustomProviderId as l, promptModelAllowlist as m, installSkill as n, applyCustomApiConfig as o, promptDefaultModel as p, promptRemoteGatewayConfig as r, parseNonInteractiveCustomApiFlags as s, setupSkills as t, applyModelAllowlist as u, applyOpenAIConfig as v, applyGoogleGeminiModelDefault as x, upsertSharedEnvVar as y };