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,7 +1,27 @@
1
- import { x as logVerbose } from "./entry.js";
2
- import { n as runExec } from "./exec-B8JKbXKW.js";
1
+ import { S as logVerbose, b as isVerbose, x as isYes } from "./entry.js";
2
+ import { n as runExec } from "./exec-CACT5OAW.js";
3
+ import { i as isTrustedProxyAddress, l as resolveGatewayClientIp, n as isLoopbackAddress, o as parseForwardedForClientIp } from "./ws-C0k_dhCP.js";
4
+ import { stdin, stdout } from "node:process";
3
5
  import { existsSync } from "node:fs";
6
+ import { timingSafeEqual } from "node:crypto";
7
+ import readline from "node:readline/promises";
4
8
 
9
+ //#region src/cli/prompt.ts
10
+ async function promptYesNo(question, defaultYes = false) {
11
+ if (isVerbose() && isYes()) return true;
12
+ if (isYes()) return true;
13
+ const rl = readline.createInterface({
14
+ input: stdin,
15
+ output: stdout
16
+ });
17
+ const suffix = defaultYes ? " [Y/n] " : " [y/N] ";
18
+ const answer = (await rl.question(`${question}${suffix}`)).trim().toLowerCase();
19
+ rl.close();
20
+ if (!answer) return defaultYes;
21
+ return answer.startsWith("y");
22
+ }
23
+
24
+ //#endregion
5
25
  //#region src/infra/tailscale.ts
6
26
  function parsePossiblyNoisyJsonObject(stdout) {
7
27
  const trimmed = stdout.trim();
@@ -222,4 +242,189 @@ async function readTailscaleWhoisIdentity(ip, exec = runExec, opts) {
222
242
  }
223
243
 
224
244
  //#endregion
225
- export { findTailscaleBinary as a, readTailscaleWhoisIdentity as c, enableTailscaleServe as i, disableTailscaleServe as n, getTailnetHostname as o, enableTailscaleFunnel as r, readTailscaleStatusJson as s, disableTailscaleFunnel as t };
245
+ //#region src/security/secret-equal.ts
246
+ function safeEqualSecret(provided, expected) {
247
+ if (typeof provided !== "string" || typeof expected !== "string") return false;
248
+ const providedBuffer = Buffer.from(provided);
249
+ const expectedBuffer = Buffer.from(expected);
250
+ if (providedBuffer.length !== expectedBuffer.length) return false;
251
+ return timingSafeEqual(providedBuffer, expectedBuffer);
252
+ }
253
+
254
+ //#endregion
255
+ //#region src/gateway/auth.ts
256
+ function normalizeLogin(login) {
257
+ return login.trim().toLowerCase();
258
+ }
259
+ function getHostName(hostHeader) {
260
+ const host = (hostHeader ?? "").trim().toLowerCase();
261
+ if (!host) return "";
262
+ if (host.startsWith("[")) {
263
+ const end = host.indexOf("]");
264
+ if (end !== -1) return host.slice(1, end);
265
+ }
266
+ const [name] = host.split(":");
267
+ return name ?? "";
268
+ }
269
+ function headerValue(value) {
270
+ return Array.isArray(value) ? value[0] : value;
271
+ }
272
+ function resolveTailscaleClientIp(req) {
273
+ if (!req) return;
274
+ const forwardedFor = headerValue(req.headers?.["x-forwarded-for"]);
275
+ return forwardedFor ? parseForwardedForClientIp(forwardedFor) : void 0;
276
+ }
277
+ function resolveRequestClientIp(req, trustedProxies) {
278
+ if (!req) return;
279
+ return resolveGatewayClientIp({
280
+ remoteAddr: req.socket?.remoteAddress ?? "",
281
+ forwardedFor: headerValue(req.headers?.["x-forwarded-for"]),
282
+ realIp: headerValue(req.headers?.["x-real-ip"]),
283
+ trustedProxies
284
+ });
285
+ }
286
+ function isLocalDirectRequest(req, trustedProxies) {
287
+ if (!req) return false;
288
+ if (!isLoopbackAddress(resolveRequestClientIp(req, trustedProxies) ?? "")) return false;
289
+ const host = getHostName(req.headers?.host);
290
+ const hostIsLocal = host === "localhost" || host === "127.0.0.1" || host === "::1";
291
+ const hostIsTailscaleServe = host.endsWith(".ts.net");
292
+ const hasForwarded = Boolean(req.headers?.["x-forwarded-for"] || req.headers?.["x-real-ip"] || req.headers?.["x-forwarded-host"]);
293
+ const remoteIsTrustedProxy = isTrustedProxyAddress(req.socket?.remoteAddress, trustedProxies);
294
+ return (hostIsLocal || hostIsTailscaleServe) && (!hasForwarded || remoteIsTrustedProxy);
295
+ }
296
+ function getTailscaleUser(req) {
297
+ if (!req) return null;
298
+ const login = req.headers["tailscale-user-login"];
299
+ if (typeof login !== "string" || !login.trim()) return null;
300
+ const nameRaw = req.headers["tailscale-user-name"];
301
+ const profilePic = req.headers["tailscale-user-profile-pic"];
302
+ const name = typeof nameRaw === "string" && nameRaw.trim() ? nameRaw.trim() : login.trim();
303
+ return {
304
+ login: login.trim(),
305
+ name,
306
+ profilePic: typeof profilePic === "string" && profilePic.trim() ? profilePic.trim() : void 0
307
+ };
308
+ }
309
+ function hasTailscaleProxyHeaders(req) {
310
+ if (!req) return false;
311
+ return Boolean(req.headers["x-forwarded-for"] && req.headers["x-forwarded-proto"] && req.headers["x-forwarded-host"]);
312
+ }
313
+ function isTailscaleProxyRequest(req) {
314
+ if (!req) return false;
315
+ return isLoopbackAddress(req.socket?.remoteAddress) && hasTailscaleProxyHeaders(req);
316
+ }
317
+ async function resolveVerifiedTailscaleUser(params) {
318
+ const { req, tailscaleWhois } = params;
319
+ const tailscaleUser = getTailscaleUser(req);
320
+ if (!tailscaleUser) return {
321
+ ok: false,
322
+ reason: "tailscale_user_missing"
323
+ };
324
+ if (!isTailscaleProxyRequest(req)) return {
325
+ ok: false,
326
+ reason: "tailscale_proxy_missing"
327
+ };
328
+ const clientIp = resolveTailscaleClientIp(req);
329
+ if (!clientIp) return {
330
+ ok: false,
331
+ reason: "tailscale_whois_failed"
332
+ };
333
+ const whois = await tailscaleWhois(clientIp);
334
+ if (!whois?.login) return {
335
+ ok: false,
336
+ reason: "tailscale_whois_failed"
337
+ };
338
+ if (normalizeLogin(whois.login) !== normalizeLogin(tailscaleUser.login)) return {
339
+ ok: false,
340
+ reason: "tailscale_user_mismatch"
341
+ };
342
+ return {
343
+ ok: true,
344
+ user: {
345
+ login: whois.login,
346
+ name: whois.name ?? tailscaleUser.name,
347
+ profilePic: tailscaleUser.profilePic
348
+ }
349
+ };
350
+ }
351
+ function resolveGatewayAuth(params) {
352
+ const authConfig = params.authConfig ?? {};
353
+ const env = params.env ?? process.env;
354
+ const token = authConfig.token ?? env.OPENCLAW_GATEWAY_TOKEN ?? env.CLAWDBOT_GATEWAY_TOKEN ?? void 0;
355
+ const password = authConfig.password ?? env.OPENCLAW_GATEWAY_PASSWORD ?? env.CLAWDBOT_GATEWAY_PASSWORD ?? void 0;
356
+ const mode = authConfig.mode ?? (password ? "password" : "token");
357
+ return {
358
+ mode,
359
+ token,
360
+ password,
361
+ allowTailscale: authConfig.allowTailscale ?? (params.tailscaleMode === "serve" && mode !== "password")
362
+ };
363
+ }
364
+ function assertGatewayAuthConfigured(auth) {
365
+ if (auth.mode === "token" && !auth.token) {
366
+ if (auth.allowTailscale) return;
367
+ throw new Error("gateway auth mode is token, but no token was configured (set gateway.auth.token or OPENCLAW_GATEWAY_TOKEN)");
368
+ }
369
+ if (auth.mode === "password" && !auth.password) throw new Error("gateway auth mode is password, but no password was configured");
370
+ }
371
+ async function authorizeGatewayConnect(params) {
372
+ const { auth, connectAuth, req, trustedProxies } = params;
373
+ const tailscaleWhois = params.tailscaleWhois ?? readTailscaleWhoisIdentity;
374
+ const localDirect = isLocalDirectRequest(req, trustedProxies);
375
+ if (auth.allowTailscale && !localDirect) {
376
+ const tailscaleCheck = await resolveVerifiedTailscaleUser({
377
+ req,
378
+ tailscaleWhois
379
+ });
380
+ if (tailscaleCheck.ok) return {
381
+ ok: true,
382
+ method: "tailscale",
383
+ user: tailscaleCheck.user.login
384
+ };
385
+ }
386
+ if (auth.mode === "token") {
387
+ if (!auth.token) return {
388
+ ok: false,
389
+ reason: "token_missing_config"
390
+ };
391
+ if (!connectAuth?.token) return {
392
+ ok: false,
393
+ reason: "token_missing"
394
+ };
395
+ if (!safeEqualSecret(connectAuth.token, auth.token)) return {
396
+ ok: false,
397
+ reason: "token_mismatch"
398
+ };
399
+ return {
400
+ ok: true,
401
+ method: "token"
402
+ };
403
+ }
404
+ if (auth.mode === "password") {
405
+ const password = connectAuth?.password;
406
+ if (!auth.password) return {
407
+ ok: false,
408
+ reason: "password_missing_config"
409
+ };
410
+ if (!password) return {
411
+ ok: false,
412
+ reason: "password_missing"
413
+ };
414
+ if (!safeEqualSecret(password, auth.password)) return {
415
+ ok: false,
416
+ reason: "password_mismatch"
417
+ };
418
+ return {
419
+ ok: true,
420
+ method: "password"
421
+ };
422
+ }
423
+ return {
424
+ ok: false,
425
+ reason: "unauthorized"
426
+ };
427
+ }
428
+
429
+ //#endregion
430
+ export { safeEqualSecret as a, enableTailscaleFunnel as c, getTailnetHostname as d, readTailscaleStatusJson as f, resolveGatewayAuth as i, enableTailscaleServe as l, authorizeGatewayConnect as n, disableTailscaleFunnel as o, promptYesNo as p, isLocalDirectRequest as r, disableTailscaleServe as s, assertGatewayAuthConfigured as t, findTailscaleBinary as u };
@@ -1,7 +1,9 @@
1
- import { A as logVerbose, O as isVerbose, c as defaultRuntime, k as isYes } from "./subsystem-Bh1Y_6Uv.js";
2
- import { n as runExec } from "./exec-Cv_Ofd1m.js";
1
+ import { A as logVerbose, O as isVerbose, c as defaultRuntime, k as isYes } from "./subsystem-BoExtIHo.js";
2
+ import { n as runExec } from "./exec-YIosokWE.js";
3
+ import { i as isTrustedProxyAddress, l as resolveGatewayClientIp, n as isLoopbackAddress, o as parseForwardedForClientIp } from "./ws-CHCQHs0F.js";
3
4
  import { stdin, stdout } from "node:process";
4
5
  import { existsSync } from "node:fs";
6
+ import { timingSafeEqual } from "node:crypto";
5
7
  import readline from "node:readline/promises";
6
8
 
7
9
  //#region src/cli/prompt.ts
@@ -249,4 +251,189 @@ async function readTailscaleWhoisIdentity(ip, exec = runExec, opts) {
249
251
  }
250
252
 
251
253
  //#endregion
252
- export { findTailscaleBinary as a, readTailscaleWhoisIdentity as c, enableTailscaleServe as i, ensureBinary as l, disableTailscaleServe as n, getTailnetHostname as o, enableTailscaleFunnel as r, readTailscaleStatusJson as s, disableTailscaleFunnel as t, promptYesNo as u };
254
+ //#region src/security/secret-equal.ts
255
+ function safeEqualSecret(provided, expected) {
256
+ if (typeof provided !== "string" || typeof expected !== "string") return false;
257
+ const providedBuffer = Buffer.from(provided);
258
+ const expectedBuffer = Buffer.from(expected);
259
+ if (providedBuffer.length !== expectedBuffer.length) return false;
260
+ return timingSafeEqual(providedBuffer, expectedBuffer);
261
+ }
262
+
263
+ //#endregion
264
+ //#region src/gateway/auth.ts
265
+ function normalizeLogin(login) {
266
+ return login.trim().toLowerCase();
267
+ }
268
+ function getHostName(hostHeader) {
269
+ const host = (hostHeader ?? "").trim().toLowerCase();
270
+ if (!host) return "";
271
+ if (host.startsWith("[")) {
272
+ const end = host.indexOf("]");
273
+ if (end !== -1) return host.slice(1, end);
274
+ }
275
+ const [name] = host.split(":");
276
+ return name ?? "";
277
+ }
278
+ function headerValue(value) {
279
+ return Array.isArray(value) ? value[0] : value;
280
+ }
281
+ function resolveTailscaleClientIp(req) {
282
+ if (!req) return;
283
+ const forwardedFor = headerValue(req.headers?.["x-forwarded-for"]);
284
+ return forwardedFor ? parseForwardedForClientIp(forwardedFor) : void 0;
285
+ }
286
+ function resolveRequestClientIp(req, trustedProxies) {
287
+ if (!req) return;
288
+ return resolveGatewayClientIp({
289
+ remoteAddr: req.socket?.remoteAddress ?? "",
290
+ forwardedFor: headerValue(req.headers?.["x-forwarded-for"]),
291
+ realIp: headerValue(req.headers?.["x-real-ip"]),
292
+ trustedProxies
293
+ });
294
+ }
295
+ function isLocalDirectRequest(req, trustedProxies) {
296
+ if (!req) return false;
297
+ if (!isLoopbackAddress(resolveRequestClientIp(req, trustedProxies) ?? "")) return false;
298
+ const host = getHostName(req.headers?.host);
299
+ const hostIsLocal = host === "localhost" || host === "127.0.0.1" || host === "::1";
300
+ const hostIsTailscaleServe = host.endsWith(".ts.net");
301
+ const hasForwarded = Boolean(req.headers?.["x-forwarded-for"] || req.headers?.["x-real-ip"] || req.headers?.["x-forwarded-host"]);
302
+ const remoteIsTrustedProxy = isTrustedProxyAddress(req.socket?.remoteAddress, trustedProxies);
303
+ return (hostIsLocal || hostIsTailscaleServe) && (!hasForwarded || remoteIsTrustedProxy);
304
+ }
305
+ function getTailscaleUser(req) {
306
+ if (!req) return null;
307
+ const login = req.headers["tailscale-user-login"];
308
+ if (typeof login !== "string" || !login.trim()) return null;
309
+ const nameRaw = req.headers["tailscale-user-name"];
310
+ const profilePic = req.headers["tailscale-user-profile-pic"];
311
+ const name = typeof nameRaw === "string" && nameRaw.trim() ? nameRaw.trim() : login.trim();
312
+ return {
313
+ login: login.trim(),
314
+ name,
315
+ profilePic: typeof profilePic === "string" && profilePic.trim() ? profilePic.trim() : void 0
316
+ };
317
+ }
318
+ function hasTailscaleProxyHeaders(req) {
319
+ if (!req) return false;
320
+ return Boolean(req.headers["x-forwarded-for"] && req.headers["x-forwarded-proto"] && req.headers["x-forwarded-host"]);
321
+ }
322
+ function isTailscaleProxyRequest(req) {
323
+ if (!req) return false;
324
+ return isLoopbackAddress(req.socket?.remoteAddress) && hasTailscaleProxyHeaders(req);
325
+ }
326
+ async function resolveVerifiedTailscaleUser(params) {
327
+ const { req, tailscaleWhois } = params;
328
+ const tailscaleUser = getTailscaleUser(req);
329
+ if (!tailscaleUser) return {
330
+ ok: false,
331
+ reason: "tailscale_user_missing"
332
+ };
333
+ if (!isTailscaleProxyRequest(req)) return {
334
+ ok: false,
335
+ reason: "tailscale_proxy_missing"
336
+ };
337
+ const clientIp = resolveTailscaleClientIp(req);
338
+ if (!clientIp) return {
339
+ ok: false,
340
+ reason: "tailscale_whois_failed"
341
+ };
342
+ const whois = await tailscaleWhois(clientIp);
343
+ if (!whois?.login) return {
344
+ ok: false,
345
+ reason: "tailscale_whois_failed"
346
+ };
347
+ if (normalizeLogin(whois.login) !== normalizeLogin(tailscaleUser.login)) return {
348
+ ok: false,
349
+ reason: "tailscale_user_mismatch"
350
+ };
351
+ return {
352
+ ok: true,
353
+ user: {
354
+ login: whois.login,
355
+ name: whois.name ?? tailscaleUser.name,
356
+ profilePic: tailscaleUser.profilePic
357
+ }
358
+ };
359
+ }
360
+ function resolveGatewayAuth(params) {
361
+ const authConfig = params.authConfig ?? {};
362
+ const env = params.env ?? process.env;
363
+ const token = authConfig.token ?? env.OPENCLAW_GATEWAY_TOKEN ?? env.CLAWDBOT_GATEWAY_TOKEN ?? void 0;
364
+ const password = authConfig.password ?? env.OPENCLAW_GATEWAY_PASSWORD ?? env.CLAWDBOT_GATEWAY_PASSWORD ?? void 0;
365
+ const mode = authConfig.mode ?? (password ? "password" : "token");
366
+ return {
367
+ mode,
368
+ token,
369
+ password,
370
+ allowTailscale: authConfig.allowTailscale ?? (params.tailscaleMode === "serve" && mode !== "password")
371
+ };
372
+ }
373
+ function assertGatewayAuthConfigured(auth) {
374
+ if (auth.mode === "token" && !auth.token) {
375
+ if (auth.allowTailscale) return;
376
+ throw new Error("gateway auth mode is token, but no token was configured (set gateway.auth.token or OPENCLAW_GATEWAY_TOKEN)");
377
+ }
378
+ if (auth.mode === "password" && !auth.password) throw new Error("gateway auth mode is password, but no password was configured");
379
+ }
380
+ async function authorizeGatewayConnect(params) {
381
+ const { auth, connectAuth, req, trustedProxies } = params;
382
+ const tailscaleWhois = params.tailscaleWhois ?? readTailscaleWhoisIdentity;
383
+ const localDirect = isLocalDirectRequest(req, trustedProxies);
384
+ if (auth.allowTailscale && !localDirect) {
385
+ const tailscaleCheck = await resolveVerifiedTailscaleUser({
386
+ req,
387
+ tailscaleWhois
388
+ });
389
+ if (tailscaleCheck.ok) return {
390
+ ok: true,
391
+ method: "tailscale",
392
+ user: tailscaleCheck.user.login
393
+ };
394
+ }
395
+ if (auth.mode === "token") {
396
+ if (!auth.token) return {
397
+ ok: false,
398
+ reason: "token_missing_config"
399
+ };
400
+ if (!connectAuth?.token) return {
401
+ ok: false,
402
+ reason: "token_missing"
403
+ };
404
+ if (!safeEqualSecret(connectAuth.token, auth.token)) return {
405
+ ok: false,
406
+ reason: "token_mismatch"
407
+ };
408
+ return {
409
+ ok: true,
410
+ method: "token"
411
+ };
412
+ }
413
+ if (auth.mode === "password") {
414
+ const password = connectAuth?.password;
415
+ if (!auth.password) return {
416
+ ok: false,
417
+ reason: "password_missing_config"
418
+ };
419
+ if (!password) return {
420
+ ok: false,
421
+ reason: "password_missing"
422
+ };
423
+ if (!safeEqualSecret(password, auth.password)) return {
424
+ ok: false,
425
+ reason: "password_mismatch"
426
+ };
427
+ return {
428
+ ok: true,
429
+ method: "password"
430
+ };
431
+ }
432
+ return {
433
+ ok: false,
434
+ reason: "unauthorized"
435
+ };
436
+ }
437
+
438
+ //#endregion
439
+ export { safeEqualSecret as a, enableTailscaleFunnel as c, getTailnetHostname as d, readTailscaleStatusJson as f, resolveGatewayAuth as i, enableTailscaleServe as l, promptYesNo as m, authorizeGatewayConnect as n, disableTailscaleFunnel as o, ensureBinary as p, isLocalDirectRequest as r, disableTailscaleServe as s, assertGatewayAuthConfigured as t, findTailscaleBinary as u };
@@ -1,4 +1,4 @@
1
- import { Ct as resolveAuthProfileDisplayLabel } from "./model-selection-BK7DuyH8.js";
1
+ import { Ct as resolveAuthProfileDisplayLabel } from "./model-selection-BLuqsGVB.js";
2
2
 
3
3
  //#region src/agents/auth-health.ts
4
4
  const DEFAULT_OAUTH_WARN_MS = 1440 * 60 * 1e3;
@@ -1,4 +1,4 @@
1
- import { Et as resolveAuthProfileDisplayLabel } from "./auth-profiles-Bv1AEm-Y.js";
1
+ import { Et as resolveAuthProfileDisplayLabel } from "./auth-profiles-ByNs3eEm.js";
2
2
 
3
3
  //#region src/agents/auth-health.ts
4
4
  const DEFAULT_OAUTH_WARN_MS = 1440 * 60 * 1e3;
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { X as resolveStateDir, Y as resolveOAuthPath, n as isTruthyEnvValue, o as createSubsystemLogger } from "./entry.js";
3
- import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
2
+ import { X as resolveOAuthPath, Z as resolveStateDir, n as isTruthyEnvValue, o as createSubsystemLogger } from "./entry.js";
3
+ import { t as formatCliCommand } from "./command-format-Bxe0mWee.js";
4
4
  import { n as DEFAULT_AGENT_ID } from "./session-key-DVvxnFKg.js";
5
- import { y as resolveUserPath } from "./utils-Dk86IbEs.js";
6
- import { a as resolveAgentModelPrimary } from "./agent-scope-DQuy3dwI.js";
7
- import { a as saveJsonFile, i as loadJsonFile, r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-SLWintYd.js";
5
+ import { y as resolveUserPath } from "./utils-BLJAc3ZV.js";
6
+ import { a as resolveAgentModelPrimary } from "./agent-scope-CsRbLH4l.js";
7
+ import { a as saveJsonFile, i as loadJsonFile, r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-Cfs0Wxr8.js";
8
8
  import { execFileSync, execSync } from "node:child_process";
9
9
  import path from "node:path";
10
10
  import fs from "node:fs";
@@ -534,6 +534,7 @@ function resolveEnvApiKey(provider) {
534
534
  cerebras: "CEREBRAS_API_KEY",
535
535
  xai: "XAI_API_KEY",
536
536
  openrouter: "OPENROUTER_API_KEY",
537
+ litellm: "LITELLM_API_KEY",
537
538
  "vercel-ai-gateway": "AI_GATEWAY_API_KEY",
538
539
  "cloudflare-ai-gateway": "CLOUDFLARE_AI_GATEWAY_API_KEY",
539
540
  moonshot: "MOONSHOT_API_KEY",
@@ -1282,10 +1283,23 @@ const QIANFAN_DEFAULT_COST = {
1282
1283
  cacheRead: 0,
1283
1284
  cacheWrite: 0
1284
1285
  };
1285
- async function discoverOllamaModels() {
1286
+ /**
1287
+ * Derive the Ollama native API base URL from a configured base URL.
1288
+ *
1289
+ * Users typically configure `baseUrl` with a `/v1` suffix (e.g.
1290
+ * `http://192.168.20.14:11434/v1`) for the OpenAI-compatible endpoint.
1291
+ * The native Ollama API lives at the root (e.g. `/api/tags`), so we
1292
+ * strip the `/v1` suffix when present.
1293
+ */
1294
+ function resolveOllamaApiBase(configuredBaseUrl) {
1295
+ if (!configuredBaseUrl) return OLLAMA_API_BASE_URL;
1296
+ return configuredBaseUrl.replace(/\/+$/, "").replace(/\/v1$/i, "");
1297
+ }
1298
+ async function discoverOllamaModels(baseUrl) {
1286
1299
  if (process.env.VITEST || false) return [];
1287
1300
  try {
1288
- const response = await fetch(`${OLLAMA_API_BASE_URL}/api/tags`, { signal: AbortSignal.timeout(5e3) });
1301
+ const apiBase = resolveOllamaApiBase(baseUrl);
1302
+ const response = await fetch(`${apiBase}/api/tags`, { signal: AbortSignal.timeout(5e3) });
1289
1303
  if (!response.ok) {
1290
1304
  console.warn(`Failed to discover Ollama models: ${response.status}`);
1291
1305
  return [];
@@ -1407,23 +1421,53 @@ function buildMinimaxProvider() {
1407
1421
  return {
1408
1422
  baseUrl: MINIMAX_API_BASE_URL,
1409
1423
  api: "openai-completions",
1410
- models: [{
1411
- id: MINIMAX_DEFAULT_MODEL_ID,
1412
- name: "MiniMax M2.1",
1413
- reasoning: false,
1414
- input: ["text"],
1415
- cost: MINIMAX_API_COST,
1416
- contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1417
- maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1418
- }, {
1419
- id: MINIMAX_DEFAULT_VISION_MODEL_ID,
1420
- name: "MiniMax VL 01",
1421
- reasoning: false,
1422
- input: ["text", "image"],
1423
- cost: MINIMAX_API_COST,
1424
- contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1425
- maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1426
- }]
1424
+ models: [
1425
+ {
1426
+ id: MINIMAX_DEFAULT_MODEL_ID,
1427
+ name: "MiniMax M2.1",
1428
+ reasoning: false,
1429
+ input: ["text"],
1430
+ cost: MINIMAX_API_COST,
1431
+ contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1432
+ maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1433
+ },
1434
+ {
1435
+ id: "MiniMax-M2.1-lightning",
1436
+ name: "MiniMax M2.1 Lightning",
1437
+ reasoning: false,
1438
+ input: ["text"],
1439
+ cost: MINIMAX_API_COST,
1440
+ contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1441
+ maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1442
+ },
1443
+ {
1444
+ id: MINIMAX_DEFAULT_VISION_MODEL_ID,
1445
+ name: "MiniMax VL 01",
1446
+ reasoning: false,
1447
+ input: ["text", "image"],
1448
+ cost: MINIMAX_API_COST,
1449
+ contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1450
+ maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1451
+ },
1452
+ {
1453
+ id: "MiniMax-M2.5",
1454
+ name: "MiniMax M2.5",
1455
+ reasoning: true,
1456
+ input: ["text"],
1457
+ cost: MINIMAX_API_COST,
1458
+ contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1459
+ maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1460
+ },
1461
+ {
1462
+ id: "MiniMax-M2.5-Lightning",
1463
+ name: "MiniMax M2.5 Lightning",
1464
+ reasoning: true,
1465
+ input: ["text"],
1466
+ cost: MINIMAX_API_COST,
1467
+ contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1468
+ maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1469
+ }
1470
+ ]
1427
1471
  };
1428
1472
  }
1429
1473
  function buildMinimaxPortalProvider() {
@@ -1438,6 +1482,14 @@ function buildMinimaxPortalProvider() {
1438
1482
  cost: MINIMAX_API_COST,
1439
1483
  contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1440
1484
  maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1485
+ }, {
1486
+ id: "MiniMax-M2.5",
1487
+ name: "MiniMax M2.5",
1488
+ reasoning: true,
1489
+ input: ["text"],
1490
+ cost: MINIMAX_API_COST,
1491
+ contextWindow: MINIMAX_DEFAULT_CONTEXT_WINDOW,
1492
+ maxTokens: MINIMAX_DEFAULT_MAX_TOKENS
1441
1493
  }]
1442
1494
  };
1443
1495
  }
@@ -1508,11 +1560,12 @@ async function buildVeniceProvider() {
1508
1560
  models: await discoverVeniceModels()
1509
1561
  };
1510
1562
  }
1511
- async function buildOllamaProvider() {
1563
+ async function buildOllamaProvider(configuredBaseUrl) {
1564
+ const models = await discoverOllamaModels(configuredBaseUrl);
1512
1565
  return {
1513
- baseUrl: OLLAMA_BASE_URL,
1566
+ baseUrl: configuredBaseUrl ?? OLLAMA_BASE_URL,
1514
1567
  api: "openai-completions",
1515
- models: await discoverOllamaModels()
1568
+ models
1516
1569
  };
1517
1570
  }
1518
1571
  function buildTogetherProvider() {
@@ -1622,10 +1675,13 @@ async function resolveImplicitProviders(params) {
1622
1675
  provider: "ollama",
1623
1676
  store: authStore
1624
1677
  });
1625
- if (ollamaKey) providers.ollama = {
1626
- ...await buildOllamaProvider(),
1627
- apiKey: ollamaKey
1628
- };
1678
+ if (ollamaKey) {
1679
+ const ollamaBaseUrl = params.explicitProviders?.ollama?.baseUrl;
1680
+ providers.ollama = {
1681
+ ...await buildOllamaProvider(ollamaBaseUrl),
1682
+ apiKey: ollamaKey
1683
+ };
1684
+ }
1629
1685
  const togetherKey = resolveEnvApiKeyVarName("together") ?? resolveApiKeyFromProfiles({
1630
1686
  provider: "together",
1631
1687
  store: authStore
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.2.11",
3
- "commit": "28e8457ce87d246921270d6266cf0ed04e14dae7",
4
- "builtAt": "2026-02-11T05:17:05.734Z"
2
+ "version": "2026.2.13",
3
+ "commit": "a5516aa558835f9a5a093b567b24f6657987810e",
4
+ "builtAt": "2026-02-13T02:29:14.868Z"
5
5
  }