activeclaw 2026.2.11 → 2026.2.12
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.
- package/CHANGELOG.md +69 -0
- package/dist/{accounts-C2elk6PC.js → accounts-DimKrt7j.js} +2 -2
- package/dist/{acp-cli-CVFTdsQY.js → acp-cli-Cs1ai4XO.js} +16 -16
- package/dist/{acp-cli-BpJwIyLl.js → acp-cli-oV2dodPg.js} +6 -6
- package/dist/{agent-Bz1r5O8q.js → agent-BndgzkUe.js} +15 -14
- package/dist/{agent-22-R4bNS.js → agent-DZvDwqnd.js} +12 -11
- package/dist/{agent-scope-CGmuusG9.js → agent-scope---6LLHj0.js} +3 -3
- package/dist/{agent-scope-BEf5crnU.js → agent-scope-CN8DM4Xb.js} +5 -1
- package/dist/{agent-scope-DQuy3dwI.js → agent-scope-RCSw6gHy.js} +1 -1
- package/dist/{agent-scope-D8miw9q_.js → agent-scope-rXQ7WARN.js} +172 -4
- package/dist/audio-preflight-BP6s-UPp.js +71 -0
- package/dist/audio-preflight-ClVNINDs.js +60 -0
- package/dist/audio-preflight-SZRntkxo.js +60 -0
- package/dist/audio-preflight-txAP3v-C.js +74 -0
- package/dist/{audit-C4wLaF0D.js → audit-CQzrm61N.js} +17 -17
- package/dist/{audit-CY-yopxa.js → audit-DMH3CSXY.js} +10 -10
- package/dist/{auth-health-BFKUoCwJ.js → auth-health-BB3e3OmN.js} +1 -1
- package/dist/{auth-health-d7BMZlWG.js → auth-health-zZ9dnQGC.js} +1 -1
- package/dist/{auth-BvIPpm7G.js → auth-jrfLXze7.js} +2 -2
- package/dist/{auth-profiles-Bv1AEm-Y.js → auth-profiles-CcJ3hrog.js} +28 -10
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +24 -21
- package/dist/bundled/session-memory/handler.js +32 -22
- package/dist/{call-Bek1xlgk.js → call-C9az806y.js} +6 -6
- package/dist/{call-7yrB6v4I.js → call-Yxns4CVq.js} +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-DJ0b1m7B.js → channel-options-CX4iYQfR.js} +12 -7
- package/dist/{channel-options-3mdYN0C_.js → channel-options-CjXPwMWu.js} +3 -3
- package/dist/{channel-selection-RZimme3j.js → channel-selection-BoQ7GurB.js} +1 -1
- package/dist/{channel-selection-B9b7Kuit.js → channel-selection-C78IwbD-.js} +2 -2
- package/dist/{channels-cli-BFznbGOs.js → channels-cli-BXMQPB4x.js} +57 -55
- package/dist/{channels-cli-CYbK2Dku.js → channels-cli-DUHsmX3q.js} +37 -35
- package/dist/{channels-status-issues-B3KkflfR.js → channels-status-issues-Ca9--azp.js} +1 -1
- package/dist/{channels-status-issues-DQkRaZts.js → channels-status-issues-CbULFg2X.js} +1 -1
- package/dist/{chrome-CF16STk9.js → chrome-BCPPeLQ6.js} +1 -1
- package/dist/{chrome-Dm-EgOjJ.js → chrome-juQxt0zf.js} +5 -5
- package/dist/{chrome-Db7w64LF.js → chrome-svgmQ8T_.js} +3 -4
- package/dist/{clack-prompter-BCiBkJVr.js → clack-prompter-Dmvcu3gn.js} +5 -5
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-By331Q9f.js +91 -0
- package/dist/{cli-Cl3PdJei.js → cli-FdxAcu_y.js} +27 -25
- package/dist/{client-6xKrRC-1.js → client-B0_GiCjB.js} +4 -4
- package/dist/{client-DMloFP_O.js → client-D7wrC1Ug.js} +1 -1
- package/dist/{command-options-BTAzyqqb.js → command-options-BSDiKuyX.js} +9 -4
- package/dist/{commands-CjEGXOZ_.js → commands-BG25qku5.js} +3 -3
- package/dist/{completion-cli-DrJGfJGl.js → completion-cli-C4zxjkC1.js} +1 -1
- package/dist/{completion-cli-DOec3E2Z.js → completion-cli-DECEgBWR.js} +30 -30
- package/dist/{config-B00lvFac.js → config-B7sno9eI.js} +9 -4
- package/dist/{config-XBdA0ciN.js → config-BuF7vm-v.js} +73 -8
- package/dist/{config-BqGVMf1y.js → config-D50SQVar.js} +50 -5
- package/dist/{config--NUdpACy.js → config-DH9TLUNc.js} +11 -6
- package/dist/{config-guard-4kCO_rnQ.js → config-guard-DPxxY1iw.js} +148 -39
- package/dist/{configure-B69emwZv.js → configure-BZQ9uSVX.js} +20 -17
- package/dist/{configure-sMhpLzFf.js → configure-Cg5IKSUy.js} +28 -25
- package/dist/{control-service-IRAmbcbN.js → control-service-B2er20Ke.js} +1 -1
- package/dist/{control-service-Db_1V-KY.js → control-service-CBlMVTRu.js} +5 -5
- package/dist/control-ui/assets/{index-CnB9IO4a.js → index-B4LPvte9.js} +369 -369
- package/dist/control-ui/assets/index-B4LPvte9.js.map +1 -0
- package/dist/control-ui/index.html +1 -1
- package/dist/{cron-cli-Cum2324v.js → cron-cli-B2Zwhy_r.js} +20 -20
- package/dist/{cron-cli-DhUWcYdk.js → cron-cli-EaRUVd0p.js} +11 -11
- package/dist/{daemon-cli-q7nkEF5-.js → daemon-cli-CVNzObIF.js} +60 -21
- package/dist/{daemon-cli-CTC2CHci.js → daemon-cli-DF6Rxjy6.js} +52 -13
- package/dist/{daemon-runtime-UsK-tOty.js → daemon-runtime-B05PME1z.js} +3 -3
- package/dist/{daemon-runtime-c0uXH4Dl.js → daemon-runtime-BHF5NjQ7.js} +2 -2
- package/dist/{deliver-T9d44OpZ.js → deliver-B1jsU2r7.js} +84 -286
- package/dist/{deliver-CPy8jYj9.js → deliver-CLwC284e.js} +73 -275
- package/dist/{deliver-CT6KiDqO.js → deliver-COf5XFo_.js} +73 -276
- package/dist/{deliver-hf-WKyWd.js → deliver-DzcxEcza.js} +74 -276
- package/dist/{deps-DFQdAWQc.js → deps-B6602Wid.js} +2 -2
- package/dist/{deps-Bv1kLtwo.js → deps-Cva7QM_t.js} +2 -2
- package/dist/{devices-cli-ZpjlfK-e.js → devices-cli-D8K3hZR5.js} +14 -14
- package/dist/{devices-cli-Cm7U1py9.js → devices-cli-DPg_4aW8.js} +8 -8
- package/dist/{directory-cli-67kzd4I5.js → directory-cli-Bn47fFX7.js} +7 -7
- package/dist/{directory-cli-B14TUSJA.js → directory-cli-OGBSVKAZ.js} +16 -16
- package/dist/{dispatcher-3ElQWGVI.js → dispatcher-BHsNwFe-.js} +2 -2
- package/dist/{dns-cli-CU-xfhTN.js → dns-cli-DmTHXgwU.js} +12 -12
- package/dist/{dns-cli-Dqj7O6Q_.js → dns-cli-kk2rysJh.js} +6 -6
- package/dist/{docs-cli-CamBqzb5.js → docs-cli-CB77CeM4.js} +3 -3
- package/dist/{docs-cli-Cj3L5oqB.js → docs-cli-DUcyw0X0.js} +7 -7
- package/dist/{doctor-BJirShBi.js → doctor-BZfxDGUg.js} +25 -24
- package/dist/{doctor-BV1kvbMm.js → doctor-DwqdkfPa.js} +36 -35
- package/dist/entry.js +21 -5
- package/dist/{env-BxRc6wWv.js → env-DE9xvYOL.js} +1 -1
- package/dist/{exec-CijMSZd9.js → exec-4WHuOniw.js} +474 -3
- package/dist/{exec-57A8Rlc8.js → exec-D12IZYtJ.js} +1 -0
- package/dist/{exec-Cv_Ofd1m.js → exec-DXtR2fhb.js} +1 -1
- package/dist/{exec-approvals-cli-DhXj3hQX.js → exec-approvals-cli-BWO0Rs-a.js} +14 -14
- package/dist/{exec-approvals-cli-DEzz9Iai.js → exec-approvals-cli-GizapOX5.js} +21 -21
- package/dist/extensionAPI.js +7801 -9261
- package/dist/fetch-CqZP8jwB.js +272 -0
- package/dist/fetch-timeout-4UKsdtE1.js +272 -0
- package/dist/fetch-timeout-B2KlHXi3.js +272 -0
- package/dist/fetch-timeout-ohY5QmsW.js +272 -0
- package/dist/{gateway-cli-D1EdIq8I.js → gateway-cli-Bbd1Xbsc.js} +237 -94
- package/dist/{gateway-cli-B_xDUDy2.js → gateway-cli-PR1S0BTe.js} +262 -119
- package/dist/{gateway-rpc-3B5y445n.js → gateway-rpc-8gue7Qjt.js} +1 -1
- package/dist/{gateway-rpc-BoL2vinh.js → gateway-rpc-DjuxyOm-.js} +3 -3
- package/dist/{github-copilot-auth-Omqrto0J.js → github-copilot-auth-B3chCDfc.js} +197 -17
- package/dist/{github-copilot-auth-CZxurvdz.js → github-copilot-auth-Cm2SB8Qf.js} +195 -15
- package/dist/{gmail-setup-utils-BXQKsLtI.js → gmail-setup-utils-Cgh0ptgA.js} +3 -3
- package/dist/{gmail-setup-utils-CHcssBOA.js → gmail-setup-utils-WDyf1gTU.js} +1 -1
- package/dist/{health-format-Dy1caGsq.js → health-format-C0C_Apce.js} +43 -28
- package/dist/{health-format-DrGFg8bx.js → health-format-gLMfE2wf.js} +36 -21
- package/dist/{help-format-DAj7l5uV.js → help-format-5iAL_46a.js} +1 -1
- package/dist/{hooks-cli-ptEf6TIM.js → hooks-cli-CEN1h1ya.js} +49 -46
- package/dist/{hooks-cli-Bhf5VRp1.js → hooks-cli-DrchIqSi.js} +32 -29
- package/dist/{hooks-status-DNQJSa4B.js → hooks-status--xVLpAXz.js} +3 -3
- package/dist/{hooks-status-Br-2bK2G.js → hooks-status-Cgy6AtQk.js} +2 -2
- package/dist/{image-Dnnxt82I.js → image-B4mDPdyz.js} +8 -5
- package/dist/{image-fUwR7slg.js → image-DI9s9eEx.js} +10 -7
- package/dist/{image-rOFfK3PJ.js → image-Dkawt9Kg.js} +10 -7
- package/dist/{image-Ds4NLGPR.js → image-LxFvu0wL.js} +8 -5
- package/dist/index.js +207 -96
- package/dist/{installs-CRSjQxbR.js → installs-DA-eSN1B.js} +7 -6
- package/dist/{installs-89zeUsVn.js → installs-NS0VMPN7.js} +3 -2
- package/dist/{links-C591fM9M.js → links-CV4oki2u.js} +1 -1
- package/dist/llm-slug-generator.js +18 -19
- package/dist/{loader-wXwp4rZJ.js → loader-Caow9TPA.js} +12569 -14078
- package/dist/{logging-MMRGFxGI.js → logging-CeHn2itV.js} +1 -1
- package/dist/{login-qr-CGEu5TU-.js → login-qr-CAk9D-FM.js} +1 -1
- package/dist/{login-qr-CPEsT6dN.js → login-qr-CoskdtvN.js} +3 -4
- package/dist/{login-qr-wM8BnKJh.js → login-qr-Xx8yJrSc.js} +5 -5
- package/dist/{login-qr-DH150tTp.js → login-qr-kUyMWXV1.js} +2 -2
- package/dist/{logs-cli-ClgkHnfT.js → logs-cli-B476pzJS.js} +30 -14
- package/dist/{logs-cli-CmfINsOj.js → logs-cli-BQRUI_PO.js} +37 -21
- package/dist/{manager-DYo4PlVM.js → manager-CBApH7eR.js} +7 -8
- package/dist/{manager-D6EbxDV4.js → manager-CyJH6WMg.js} +5 -5
- package/dist/{manager-BbnHek5T.js → manager-DScY_ZTT.js} +9 -9
- package/dist/{manager-CcVYv0N5.js → manager-DseK7RWj.js} +2 -2
- package/dist/{manifest-registry-D5SiA3xq.js → manifest-registry-BTgLN_W2.js} +39 -1
- package/dist/{manifest-registry-3It8Z8yN.js → manifest-registry-DFckk-L8.js} +40 -2
- package/dist/{message-channel-Cu61-7H6.js → message-channel-0717wOz-.js} +1 -1
- package/dist/{model-auth-ioeR_zLX.js → model-auth-CbqRVYRp.js} +61 -17
- package/dist/{model-selection-CezC36lH.js → model-selection-B9Y7dKQd.js} +29 -11
- package/dist/{model-selection-BK7DuyH8.js → model-selection-unMJyUIE.js} +31 -13
- package/dist/{models-cli-C3uGdOrd.js → models-cli-B1cLGcRz.js} +33 -31
- package/dist/{models-cli-CUIVPgXE.js → models-cli-D7sChCi6.js} +51 -49
- package/dist/{node-cli-CdYAsuQQ.js → node-cli-CS3KwBh1.js} +26 -26
- package/dist/{node-cli-BxBGSuPE.js → node-cli-ic2C1xs2.js} +16 -16
- package/dist/{node-service-u8g85nD3.js → node-service-D_Cdq1JI.js} +1 -1
- package/dist/{node-service-CM5vkdIo.js → node-service-_vgO5xR-.js} +2 -2
- package/dist/{nodes-cli-BaVMTAPc.js → nodes-cli-B1meaW7S.js} +20 -20
- package/dist/{nodes-cli-By6yeCTB.js → nodes-cli-CipcvVMc.js} +13 -13
- package/dist/{note-5WqioBRA.js → note-CAM9PbSJ.js} +2 -2
- package/dist/{onboard-channels-CXhnVy4E.js → onboard-channels-CsT3E4bT.js} +8 -8
- package/dist/{onboard-channels-DxXvp8og.js → onboard-channels-DMcOT0dj.js} +5 -5
- package/dist/{onboard-skills-DQwOQ6Ry.js → onboard-skills-D-BrCoRN.js} +435 -131
- package/dist/{onboard-skills-CBxsRGyf.js → onboard-skills-DoxkpnEU.js} +431 -127
- package/dist/{onboarding-Du_7qEng.js → onboarding-B92952fz.js} +38 -38
- package/dist/{openclaw-root-JLDMp6ux.js → openclaw-root-1VeFrph_.js} +4 -0
- package/dist/{openclaw-root-Dw6gumSU.js → openclaw-root-BNlEap4i.js} +4 -0
- package/dist/{pairing-cli-Cng1KFWw.js → pairing-cli-0wbU1u8d.js} +15 -15
- package/dist/{pairing-cli-CRQDpj8f.js → pairing-cli-BDUJ5VoX.js} +8 -8
- package/dist/{pairing-labels-CWFEtSc3.js → pairing-labels-3o3QO3Qn.js} +1 -1
- package/dist/{pairing-labels-Ciu3Zoxj.js → pairing-labels-Bin1K7_f.js} +1 -1
- package/dist/{pairing-store-c-QQ2u8p.js → pairing-store-CL4rJ7m7.js} +2 -2
- package/dist/{pairing-store-CgXR3ZWJ.js → pairing-store-fIWI3pXG.js} +1 -1
- package/dist/{path-env-BgLvMbz_.js → path-env-C5FR_Eay.js} +2 -2
- package/dist/{paths-DL6EIRTw.js → paths-CB2fqqbX.js} +1 -1
- package/dist/{paths-MnZaxqPw.js → paths-DwKNqk_S.js} +1 -1
- package/dist/{pi-embedded-CgPTEqlB.js → pi-embedded-DhYItk8O.js} +6884 -8172
- package/dist/{pi-embedded-helpers-BbWRSUnc.js → pi-embedded-helpers-Bri9tk9g.js} +187 -23
- package/dist/{pi-embedded-helpers-y1_Se0yq.js → pi-embedded-helpers-CfXnSIFx.js} +81 -15
- package/dist/{pi-embedded-helpers-DYH6OWft.js → pi-embedded-helpers-CmftU5Zj.js} +63 -7
- package/dist/{pi-embedded-helpers-Bkpd4fTr.js → pi-embedded-helpers-Uan-3N1T.js} +62 -6
- package/dist/{pi-tools.policy-akYsGFiA.js → pi-tools.policy-CJFi1sny.js} +4 -4
- package/dist/{plugin-auto-enable-lZwe2yX5.js → plugin-auto-enable-BY4CqJbD.js} +2 -2
- package/dist/{plugin-auto-enable-AOSOJ-v1.js → plugin-auto-enable-DbQrtQjL.js} +5 -5
- package/dist/plugin-sdk/agents/bash-process-registry.d.ts +1 -0
- package/dist/plugin-sdk/agents/models-config.providers.d.ts +10 -0
- package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +5 -1
- package/dist/plugin-sdk/agents/pi-embedded-helpers.d.ts +1 -1
- package/dist/plugin-sdk/agents/pi-embedded-runner/google.d.ts +1 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/payloads.d.ts +1 -0
- package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +1 -1
- package/dist/plugin-sdk/agents/tools/web-search.d.ts +10 -1
- package/dist/plugin-sdk/auto-reply/heartbeat.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/mentions.d.ts +1 -0
- package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +3 -0
- package/dist/plugin-sdk/auto-reply/types.d.ts +2 -0
- package/dist/plugin-sdk/commands/onboard-types.d.ts +7 -1
- package/dist/plugin-sdk/config/types.memory.d.ts +2 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +2 -1
- package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +1 -1
- package/dist/plugin-sdk/cron/service/jobs.d.ts +8 -0
- package/dist/plugin-sdk/cron/service/state.d.ts +1 -0
- package/dist/plugin-sdk/cron/types.d.ts +2 -0
- package/dist/plugin-sdk/discord/send.types.d.ts +2 -0
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +0 -3
- package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +1 -1
- package/dist/plugin-sdk/index.js +744 -665
- package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
- package/dist/plugin-sdk/logging/console.d.ts +1 -0
- package/dist/plugin-sdk/logging/state.d.ts +1 -0
- package/dist/plugin-sdk/markdown/ir.d.ts +1 -1
- package/dist/plugin-sdk/markdown/whatsapp.d.ts +14 -0
- package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +16 -0
- package/dist/plugin-sdk/media-understanding/types.d.ts +1 -0
- package/dist/plugin-sdk/memory/backend-config.d.ts +2 -1
- package/dist/plugin-sdk/memory/qmd-manager.d.ts +2 -0
- package/dist/plugin-sdk/memory/qmd-query-parser.d.ts +8 -0
- package/dist/plugin-sdk/process/command-queue.d.ts +16 -0
- package/dist/plugin-sdk/slack/monitor/commands.d.ts +5 -0
- package/dist/plugin-sdk/telegram/bot-message-context.d.ts +2 -1
- package/dist/plugin-sdk/telegram/send.d.ts +3 -0
- package/dist/plugin-sdk/web/media.d.ts +2 -0
- package/dist/{plugins-Db5BiELK.js → plugins-3GyCj5KL.js} +1 -1
- package/dist/{plugins-CNaHNND_.js → plugins-BL9lIXSA.js} +4 -4
- package/dist/{plugins-cli-8G-hQPCu.js → plugins-cli-Ce7VsvZh.js} +31 -29
- package/dist/{plugins-cli-CDiocaDE.js → plugins-cli-e9gUebMd.js} +49 -47
- package/dist/{program-0Cj9YxRN.js → program-u22vbFpH.js} +62 -60
- package/dist/{progress-DIQJt9Va.js → progress-g9R--HZD.js} +1 -1
- package/dist/{prompt-style-CjQRlDx4.js → prompt-style-lmJDcgtA.js} +1 -1
- package/dist/{pw-ai-CsvaObGM.js → pw-ai-CWrnJ98b.js} +2 -2
- package/dist/{pw-ai-COWYvUfG.js → pw-ai-DTZVjndL.js} +5 -5
- package/dist/{pw-ai-BxJ-KCIy.js → pw-ai-zVebjrSG.js} +4 -5
- package/dist/{qmd-manager-C02E8ixK.js → qmd-manager-DBCZ1sio.js} +81 -26
- package/dist/{qmd-manager-CpsjQyaZ.js → qmd-manager-NPD5Yh_4.js} +79 -26
- package/dist/{qmd-manager-BzY2LQTT.js → qmd-manager-a9Bt0405.js} +78 -23
- package/dist/{qmd-manager-C9YWFeG6.js → qmd-manager-ozZ933qc.js} +75 -20
- package/dist/{register.subclis-DUkirdHn.js → register.subclis-BpX3ulH1.js} +29 -29
- package/dist/{reply--b7BsXGP.js → reply-m467_fOC.js} +2116 -3625
- package/dist/{routes-DUkEKAc1.js → routes-82Ywfho6.js} +5 -5
- package/dist/{routes-B4QQiFju.js → routes-BqxA3ZYr.js} +1 -1
- package/dist/{rpc-CuMtxrRT.js → rpc-CfdBHlnp.js} +3 -3
- package/dist/{rpc-Blt6MJ4F.js → rpc-DcGBG-Fp.js} +1 -1
- package/dist/{run-main-XZcPA23b.js → run-main-aolvSfj3.js} +64 -62
- package/dist/runner-BCBs8JKA.js +1785 -0
- package/dist/runner-C1G8RFWl.js +1886 -0
- package/dist/runner-CInKPsiP.js +1886 -0
- package/dist/runner-Cwfn-VOM.js +1785 -0
- package/dist/{sandbox-Aks-9EcZ.js → sandbox-B0K9e6Fw.js} +6 -7
- package/dist/{sandbox-DqUO2K83.js → sandbox-BW8Xnkw1.js} +14 -15
- package/dist/{sandbox-cli-CJqRM4V6.js → sandbox-cli-BD5LkZ0B.js} +21 -21
- package/dist/{sandbox-cli-C99Thxi8.js → sandbox-cli-mKCs2J0i.js} +10 -10
- package/dist/{security-cli-iqYLMOz3.js → security-cli-kgI4soGy.js} +13 -13
- package/dist/{security-cli-DW3lCz-o.js → security-cli-kz8TiyqU.js} +27 -27
- package/dist/{server-context-8Qt35QdF.js → server-context-Lb-eUZG_.js} +7 -7
- package/dist/{server-node-events-CHWXfb_T.js → server-node-events-Dx18uVrH.js} +46 -44
- package/dist/{server-node-events-BzrEnKLX.js → server-node-events-KqZMN30F.js} +30 -28
- package/dist/{service-DDPRbf8a.js → service-DNcIZ5Kp.js} +7 -3
- package/dist/{service-Cd4BxKuo.js → service-DZMXgMra.js} +8 -4
- package/dist/{service-audit-x6jCN-6a.js → service-audit-0WLGnoNT.js} +5 -5
- package/dist/{service-audit-CCFxuvKs.js → service-audit-uhZSlxeb.js} +6 -6
- package/dist/{session-cost-usage-CcCEQNuc.js → session-cost-usage-CL8gnHRN.js} +1 -1
- package/dist/{session-cost-usage-PvyVZz-g.js → session-cost-usage-HU4OeRgw.js} +2 -2
- package/dist/{shared-CagUDdmp.js → shared-BBw6F-YC.js} +2 -2
- package/dist/{shared-BDk_zC9p.js → shared-CtP9K-o2.js} +2 -2
- package/dist/{shared-gOyV38rM.js → shared-DOZs2SoH.js} +4 -4
- package/dist/{shared-ILguacOr.js → shared-j4Qtr475.js} +3 -3
- package/dist/{skill-scanner-DrVEHfC6.js → skill-scanner-CprFkZib.js} +1 -1
- package/dist/{skills-D5UZZZSY.js → skills-BvPUNjxo.js} +14 -3
- package/dist/{skills-ccAgQ3Ad.js → skills-aFOsriMP.js} +16 -5
- package/dist/{skills-cli-ggyLBtAY.js → skills-cli-E6shXpdd.js} +7 -7
- package/dist/{skills-cli-DQilTG3n.js → skills-cli-oWaTJzZd.js} +12 -12
- package/dist/{skills-status-BosMnzIs.js → skills-status-D4vbIMnz.js} +3 -3
- package/dist/{skills-status-DjtPPMnY.js → skills-status-DJDaA2Ur.js} +1 -1
- package/dist/{sqlite-Btrgi7-j.js → sqlite-B4Z1_Ioc.js} +3 -3
- package/dist/{sqlite-BrQ9tw8B.js → sqlite-BkYnxkQO.js} +3 -3
- package/dist/{sqlite-HepBVDoX.js → sqlite-EuQPVXvn.js} +2 -2
- package/dist/{status-BByCntWS.js → status-B2Yr-2J5.js} +3 -3
- package/dist/{status-zfL4Yej7.js → status-CxhnUa5J.js} +29 -29
- package/dist/{status-Dt7RE_Yy.js → status-DW7m5xUN.js} +4 -4
- package/dist/{subsystem-Bh1Y_6Uv.js → subsystem-Bv7dGhES.js} +20 -4
- package/dist/{system-cli-DwuUkdkH.js → system-cli-0JXhJNWm.js} +14 -14
- package/dist/{system-cli-Clqsx8U5.js → system-cli-D-0OaMtH.js} +7 -7
- package/dist/{systemd-BEWwfwn0.js → systemd-CNTodvCO.js} +1 -1
- package/dist/{systemd-D6wTPnHi.js → systemd-CUJJHgHa.js} +3 -3
- package/dist/{systemd-linger-CDo2UbHM.js → systemd-linger-CArPbmvv.js} +1 -1
- package/dist/{systemd-linger-BxjTrgoH.js → systemd-linger-XvT9Y9sb.js} +2 -2
- package/dist/{table-DEnmtvl5.js → table-DzBBIqHO.js} +2 -2
- package/dist/{tailscale-Cu-2HNvU.js → tailscale-DHfcfRCx.js} +2 -2
- package/dist/{tool-display-DskiU8Kt.js → tool-display-Na-EVL83.js} +2 -2
- package/dist/{tui-BdJWZdto.js → tui-Biw7aqPj.js} +9 -9
- package/dist/{tui-cli-BGYh0UL0.js → tui-cli-C9FEfG7C.js} +27 -27
- package/dist/{tui-cli-D3n-O9zB.js → tui-cli-Dxnu5JGl.js} +15 -15
- package/dist/{tui-formatters-CA85v4U2.js → tui-formatters-BiNTNGwg.js} +5 -5
- package/dist/{tui-formatters-C3NarH24.js → tui-formatters-C_baVYUz.js} +4 -4
- package/dist/{tui-Bc7XUQGP.js → tui-nGp8ltQK.js} +11 -11
- package/dist/{update-JB16aPIY.js → update-C4rsLj2F.js} +3 -3
- package/dist/{update-cli-DDXp_N9B.js → update-cli-CBXp-c4C.js} +69 -51
- package/dist/{update-cli-wWKDS3cm.js → update-cli-cNd_G9E6.js} +89 -71
- package/dist/{update-runner-ChTf6O6p.js → update-runner-BLsqC24J.js} +7 -7
- package/dist/{update-runner-CmE6cHdn.js → update-runner-C_FDpmA3.js} +10 -10
- package/dist/{update-Ct9sqJC_.js → update-uwUWrKFu.js} +2 -2
- package/dist/{utils-es4ygvQ-.js → utils-BHPdZE4h.js} +1 -1
- package/dist/{webhooks-cli-CVIE9TtX.js → webhooks-cli-BpBKXL7W.js} +6 -6
- package/dist/{webhooks-cli-BmKSiQQC.js → webhooks-cli-wNfhfKqm.js} +11 -11
- package/dist/{widearea-dns-2ah0bkAj.js → widearea-dns-BWYPcfby.js} +1 -1
- package/dist/{ws-DtDKpbLR.js → ws-CHCQHs0F.js} +1 -1
- package/dist/{ws-log-D7MkvKhg.js → ws-log-DTUOUVgR.js} +2 -2
- package/dist/{wsl-Cwo7X0Un.js → wsl-B-H6Z5wp.js} +1 -1
- package/docs/assets/install-script.svg +1 -0
- package/docs/automation/hooks.md +1 -38
- package/docs/channels/discord.md +365 -385
- package/docs/channels/imessage.md +229 -218
- package/docs/channels/slack.md +294 -415
- package/docs/channels/telegram.md +401 -505
- package/docs/channels/whatsapp.md +338 -310
- package/docs/ci.md +0 -12
- package/docs/cli/hooks.md +1 -14
- package/docs/cli/index.md +6 -1
- package/docs/cli/logs.md +4 -0
- package/docs/cli/onboard.md +30 -0
- package/docs/concepts/memory.md +7 -4
- package/docs/docs.json +11 -11
- package/docs/gateway/configuration-examples.md +9 -2
- package/docs/gateway/configuration-reference.md +2318 -0
- package/docs/gateway/configuration.md +335 -3304
- package/docs/gateway/index.md +162 -238
- package/docs/install/hetzner.md +21 -0
- package/docs/nodes/audio.md +19 -0
- package/docs/platforms/mac/release.md +7 -7
- package/docs/providers/glm.md +3 -3
- package/docs/providers/index.md +1 -0
- package/docs/providers/litellm.md +153 -0
- package/docs/providers/zai.md +2 -2
- package/docs/reference/templates/AGENTS.md +26 -26
- package/docs/reference/templates/HEARTBEAT.md +31 -2
- package/docs/reference/templates/SOUL.md +14 -8
- package/docs/start/getting-started.md +5 -0
- package/docs/start/wizard-cli-automation.md +17 -0
- package/docs/start/wizard-cli-reference.md +12 -0
- package/docs/zh-CN/automation/hooks.md +1 -38
- package/docs/zh-CN/cli/hooks.md +1 -14
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/monitor.test.ts +40 -28
- package/extensions/bluebubbles/src/monitor.ts +0 -4
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -4
- package/extensions/feishu/src/bot.checkBotMentioned.test.ts +64 -0
- package/extensions/feishu/src/bot.ts +1 -1
- package/extensions/feishu/src/channel.test.ts +48 -0
- package/extensions/feishu/src/channel.ts +1 -3
- package/extensions/feishu/src/docx.ts +14 -4
- package/extensions/feishu/src/media.test.ts +151 -0
- package/extensions/feishu/src/media.ts +27 -13
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +6 -0
- package/extensions/matrix/package.json +2 -2
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/index.ts +6 -2
- package/extensions/memory-lancedb/package.json +2 -2
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +6 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/media-stream.ts +7 -1
- package/extensions/voice-call/src/providers/twilio.test.ts +5 -3
- package/extensions/voice-call/src/providers/twilio.ts +12 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +19 -15
- package/dist/boolean-M-esQJt6.js +0 -30
- package/dist/bundled/soul-evil/HOOK.md +0 -71
- package/dist/bundled/soul-evil/handler.js +0 -194
- package/dist/cli-DJbWJ9aB.js +0 -89
- package/dist/config-CI7EpvlP.js +0 -15
- package/dist/control-ui/assets/index-CnB9IO4a.js.map +0 -1
- package/dist/date-time-c6HTX6IW.js +0 -187
- package/dist/frontmatter-xwTm0734.js +0 -105
- package/dist/parse-duration-De_tAQSe.js +0 -24
- package/dist/session-key-nXYQSv-a.js +0 -167
- package/dist/utils-dp_OM900.js +0 -476
- package/docs/hooks/soul-evil.md +0 -69
- package/docs/zh-CN/hooks/soul-evil.md +0 -72
- /package/dist/{archive-CXhvR9nU.js → archive-DqNr5i8b.js} +0 -0
- /package/dist/{brew-B7YK4ZoL.js → brew-6UyogeLe.js} +0 -0
- /package/dist/{cli-utils-PlLcDZlM.js → cli-utils-CRhVAaLV.js} +0 -0
- /package/dist/{cli-utils-R-ECs5cY.js → cli-utils-LcHOt63h.js} +0 -0
- /package/dist/{command-format-BUxhT1xL.js → command-format-qUVxzqYm.js} +0 -0
- /package/dist/{constants-CNTiY-ZN.js → constants-JPeoOZnw.js} +0 -0
- /package/dist/{errors-D3tYRJWG.js → errors-B91HIDPD.js} +0 -0
- /package/dist/{errors-B0eT3jVv.js → errors-Bv81hF2P.js} +0 -0
- /package/dist/{exec-approvals-DGPTjO0N.js → exec-approvals-Cb4ZLukq.js} +0 -0
- /package/dist/{exec-approvals-DhmKpiIo.js → exec-approvals-DQ8TVVmj.js} +0 -0
- /package/dist/{format-CaxeRcue.js → format-CNU-Zkrz.js} +0 -0
- /package/dist/{format-DLOJPZmo.js → format-DcfK-dwd.js} +0 -0
- /package/dist/{format-duration-Be5Z7JdJ.js → format-duration-84n6_DgO.js} +0 -0
- /package/dist/{format-duration-CEmFWLyX.js → format-duration-Bo9zNKwO.js} +0 -0
- /package/dist/{format-relative-79_Y1n2Y.js → format-relative-CZOlQ2pA.js} +0 -0
- /package/dist/{format-relative-Db7eqEu8.js → format-relative-cegC_FF5.js} +0 -0
- /package/dist/{github-copilot-token-C9IJh2Pn.js → github-copilot-token-DkiRbJdR.js} +0 -0
- /package/dist/{help-format-CUnac_bT.js → help-format-DUy1KRxq.js} +0 -0
- /package/dist/{helpers-CQI-5xS9.js → helpers-8O7IVGO-.js} +0 -0
- /package/dist/{helpers-C89IG08W.js → helpers-BDvtkJjw.js} +0 -0
- /package/dist/{helpers-CRzoyyXS.js → helpers-D_jqdWkd.js} +0 -0
- /package/dist/{is-main-WWuz28Ip.js → is-main-CE1eOBYb.js} +0 -0
- /package/dist/{logging-DuK6YXuK.js → logging-D0MyqUlV.js} +0 -0
- /package/dist/{logging-BzvBIA3Y.js → logging-fywhKCmE.js} +0 -0
- /package/dist/{nodes-screen-lykd2cny.js → nodes-screen-CdCWeiwy.js} +0 -0
- /package/dist/{nodes-screen-Dvl_ohUY.js → nodes-screen-N-4_0VIu.js} +0 -0
- /package/dist/{parse-DqAvJRIf.js → parse-ioZhOtha.js} +0 -0
- /package/dist/{parse-log-line-CUrpqe1w.js → parse-log-line-BoDqomM4.js} +0 -0
- /package/dist/{parse-log-line-D2UGw0wR.js → parse-log-line-DPxH1XZx.js} +0 -0
- /package/dist/{parse-timeout-DV8NQQWk.js → parse-timeout-DMW-z4Iz.js} +0 -0
- /package/dist/{paths-Bkhd_qY8.js → paths-RITJT4UY.js} +0 -0
- /package/dist/{pi-model-discovery-CV2V1HHz.js → pi-model-discovery-DqgqUyAv.js} +0 -0
- /package/dist/{pi-model-discovery-DzFOAbQt.js → pi-model-discovery-EwKVHlZB.js} +0 -0
- /package/dist/{ports-BeebfNCb.js → ports-DupIRXQ0.js} +0 -0
- /package/dist/{prompts--d-6l5Ln.js → prompts-BOz5176z.js} +0 -0
- /package/dist/{redact-DAKeu7PA.js → redact-BRsnXqwD.js} +0 -0
- /package/dist/{redact-BOIof271.js → redact-BrXLgslJ.js} +0 -0
- /package/dist/{status-Cv36yYdi.js → status-BRZfQbJ2.js} +0 -0
- /package/dist/{status-Drziap9H.js → status-CoAy6bEC.js} +0 -0
- /package/dist/{systemd-hints-CH4pbCFD.js → systemd-hints-CXNtLw9Q.js} +0 -0
- /package/dist/{systemd-hints-zi4ohCOY.js → systemd-hints-cmHtrXUl.js} +0 -0
- /package/dist/{table-cCoGqLsk.js → table-oJQPTUL6.js} +0 -0
- /package/dist/{tailnet-DGRSvYuQ.js → tailnet-DATIFSsY.js} +0 -0
- /package/dist/{tool-display-o-dDAlqF.js → tool-display-sHJa3kRs.js} +0 -0
- /package/dist/{transcript-events-BlIONGVn.js → transcript-events-BHS7QoRl.js} +0 -0
- /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
- /package/dist/{usage-format-6Uar63S0.js → usage-format-C4JfTbSp.js} +0 -0
- /package/dist/{usage-format-hd37en6b.js → usage-format-CpORtVCG.js} +0 -0
- /package/dist/{widearea-dns-CMIG6-74.js → widearea-dns-WVCWJTEb.js} +0 -0
- /package/dist/{ws-log-BP3z_g6Z.js → ws-log-Cafylho7.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,67 @@
|
|
|
2
2
|
|
|
3
3
|
Docs: https://docs.openclaw.ai
|
|
4
4
|
|
|
5
|
+
## 2026.2.12
|
|
6
|
+
|
|
7
|
+
### Changes
|
|
8
|
+
|
|
9
|
+
- CLI: add `openclaw logs --local-time` to display log timestamps in local timezone. (#13818) Thanks @xialonglee.
|
|
10
|
+
- Telegram: render blockquotes as native `<blockquote>` tags instead of stripping them. (#14608)
|
|
11
|
+
- Config: avoid redacting `maxTokens`-like fields during config snapshot redaction, preventing round-trip validation failures in `/config`. (#14006) Thanks @constansino.
|
|
12
|
+
|
|
13
|
+
### Fixes
|
|
14
|
+
|
|
15
|
+
- Security: fix unauthenticated Nostr profile API remote config tampering. (#13719) Thanks @coygeek.
|
|
16
|
+
- Security: remove bundled soul-evil hook. (#14757) Thanks @Imccccc.
|
|
17
|
+
- Gateway: raise WS payload/buffer limits so 5,000,000-byte image attachments work reliably. (#14486) Thanks @0xRaini.
|
|
18
|
+
- Logging/CLI: use local timezone timestamps for console prefixing, and include `±HH:MM` offsets when using `openclaw logs --local-time` to avoid ambiguity. (#14771) Thanks @0xRaini.
|
|
19
|
+
- Gateway: drain active turns before restart to prevent message loss. (#13931) Thanks @0xRaini.
|
|
20
|
+
- Gateway: auto-generate auth token during install to prevent launchd restart loops. (#13813) Thanks @cathrynlavery.
|
|
21
|
+
- Gateway: prevent `undefined`/missing token in auth config. (#13809) Thanks @asklee-klawd.
|
|
22
|
+
- Gateway: handle async `EPIPE` on stdout/stderr during shutdown. (#13414) Thanks @keshav55.
|
|
23
|
+
- Gateway/Control UI: resolve missing dashboard assets when `openclaw` is installed globally via symlink-based Node managers (nvm/fnm/n/Homebrew). (#14919) Thanks @aynorica.
|
|
24
|
+
- Cron: use requested `agentId` for isolated job auth resolution. (#13983) Thanks @0xRaini.
|
|
25
|
+
- Cron: prevent cron jobs from skipping execution when `nextRunAtMs` advances. (#14068) Thanks @WalterSumbon.
|
|
26
|
+
- Cron: pass `agentId` to `runHeartbeatOnce` for main-session jobs. (#14140) Thanks @ishikawa-pro.
|
|
27
|
+
- Cron: re-arm timers when `onTimer` fires while a job is still executing. (#14233) Thanks @tomron87.
|
|
28
|
+
- Cron: prevent duplicate fires when multiple jobs trigger simultaneously. (#14256) Thanks @xinhuagu.
|
|
29
|
+
- Cron: isolate scheduler errors so one bad job does not break all jobs. (#14385) Thanks @MarvinDontPanic.
|
|
30
|
+
- Cron: prevent one-shot `at` jobs from re-firing on restart after skipped/errored runs. (#13878) Thanks @lailoo.
|
|
31
|
+
- WhatsApp: convert Markdown bold/strikethrough to WhatsApp formatting. (#14285) Thanks @Raikan10.
|
|
32
|
+
- WhatsApp: allow media-only sends and normalize leading blank payloads. (#14408) Thanks @karimnaguib.
|
|
33
|
+
- WhatsApp: default MIME type for voice messages when Baileys omits it. (#14444) Thanks @mcaxtr.
|
|
34
|
+
- Telegram: handle no-text message in model picker editMessageText. (#14397) Thanks @0xRaini.
|
|
35
|
+
- Telegram: surface REACTION_INVALID as non-fatal warning. (#14340) Thanks @0xRaini.
|
|
36
|
+
- BlueBubbles: fix webhook auth bypass via loopback proxy trust. (#13787) Thanks @coygeek.
|
|
37
|
+
- Slack: change default replyToMode from "off" to "all". (#14364) Thanks @nm-de.
|
|
38
|
+
- Slack: detect control commands when channel messages start with bot mention prefixes (for example, `@Bot /new`). (#14142) Thanks @beefiker.
|
|
39
|
+
- Onboarding/Providers: add Z.AI endpoint-specific auth choices (`zai-coding-global`, `zai-coding-cn`, `zai-global`, `zai-cn`) and expand default Z.AI model wiring. (#13456) Thanks @tomsun28.
|
|
40
|
+
- Ollama: use configured `models.providers.ollama.baseUrl` for model discovery and normalize `/v1` endpoints to the native Ollama API root. (#14131) Thanks @shtse8.
|
|
41
|
+
- Voice Call: pass Twilio stream auth token via `<Parameter>` instead of query string. (#14029) Thanks @mcwigglesmcgee.
|
|
42
|
+
- Feishu: pass `Buffer` directly to the Feishu SDK upload APIs instead of `Readable.from(...)` to avoid form-data upload failures. (#10345) Thanks @youngerstyle.
|
|
43
|
+
- Feishu: trigger mention-gated group handling only when the bot itself is mentioned (not just any mention). (#11088) Thanks @openperf.
|
|
44
|
+
- Feishu: probe status uses the resolved account context for multi-account credential checks. (#11233) Thanks @onevcat.
|
|
45
|
+
- Feishu DocX: preserve top-level converted block order using `firstLevelBlockIds` when writing/appending documents. (#13994) Thanks @Cynosure159.
|
|
46
|
+
- Feishu plugin packaging: remove `workspace:*` `openclaw` dependency from `extensions/feishu` and sync lockfile for install compatibility. (#14423) Thanks @jackcooper2015.
|
|
47
|
+
- CLI/Wizard: exit with code 1 when `configure`, `agents add`, or interactive `onboard` wizards are canceled, so `set -e` automation stops correctly. (#14156) Thanks @0xRaini.
|
|
48
|
+
- Media: strip `MEDIA:` lines with local paths instead of leaking as visible text. (#14399) Thanks @0xRaini.
|
|
49
|
+
- Config/Cron: exclude `maxTokens` from config redaction and honor `deleteAfterRun` on skipped cron jobs. (#13342) Thanks @niceysam.
|
|
50
|
+
- Config: ignore `meta` field changes in config file watcher. (#13460) Thanks @brandonwise.
|
|
51
|
+
- Cron: use requested `agentId` for isolated job auth resolution. (#13983) Thanks @0xRaini.
|
|
52
|
+
- Cron: pass `agentId` to `runHeartbeatOnce` for main-session jobs. (#14140) Thanks @ishikawa-pro.
|
|
53
|
+
- Cron: prevent cron jobs from skipping execution when `nextRunAtMs` advances. (#14068) Thanks @WalterSumbon.
|
|
54
|
+
- Cron: re-arm timers when `onTimer` fires while a job is still executing. (#14233) Thanks @tomron87.
|
|
55
|
+
- Cron: prevent duplicate fires when multiple jobs trigger simultaneously. (#14256) Thanks @xinhuagu.
|
|
56
|
+
- Cron: isolate scheduler errors so one bad job does not break all jobs. (#14385) Thanks @MarvinDontPanic.
|
|
57
|
+
- Cron: prevent one-shot `at` jobs from re-firing on restart after skipped/errored runs. (#13878) Thanks @lailoo.
|
|
58
|
+
- Daemon: suppress `EPIPE` error when restarting LaunchAgent. (#14343) Thanks @0xRaini.
|
|
59
|
+
- Antigravity: add opus 4.6 forward-compat model and bypass thinking signature sanitization. (#14218) Thanks @jg-noncelogic.
|
|
60
|
+
- Agents: prevent file descriptor leaks in child process cleanup. (#13565) Thanks @KyleChen26.
|
|
61
|
+
- Agents: prevent double compaction caused by cache TTL bypassing guard. (#13514) Thanks @taw0002.
|
|
62
|
+
- Agents: use last API call's cache tokens for context display instead of accumulated sum. (#13805) Thanks @akari-musubi.
|
|
63
|
+
- Discord tests: use a partial @buape/carbon mock in slash command coverage. (#13262) Thanks @arosstale.
|
|
64
|
+
- Tests: update thread ID handling in Slack message collection tests. (#14108) Thanks @swizzmagik.
|
|
65
|
+
|
|
5
66
|
## 2026.2.9
|
|
6
67
|
|
|
7
68
|
### Added
|
|
@@ -24,6 +85,7 @@ Docs: https://docs.openclaw.ai
|
|
|
24
85
|
|
|
25
86
|
### Fixes
|
|
26
87
|
|
|
88
|
+
- Cron: prevent one-shot `at` jobs from re-firing on gateway restart when previously skipped or errored. (#13845)
|
|
27
89
|
- Discord: add exec approval cleanup option to delete DMs after approval/denial/timeout. (#13205) Thanks @thewilloftheshadow.
|
|
28
90
|
- Sessions: prune stale entries, cap session store size, rotate large stores, accept duration/size thresholds, default to warn-only maintenance, and prune cron run sessions after retention windows. (#13083) Thanks @skyfallsin, @Glucksberg, @gumadeiras.
|
|
29
91
|
- CI: Implement pipeline and workflow order. Thanks @quotentiroler.
|
|
@@ -37,11 +99,14 @@ Docs: https://docs.openclaw.ai
|
|
|
37
99
|
- Telegram: match DM `allowFrom` against sender user id (fallback to chat id) and clarify pairing logs. (#12779) Thanks @liuxiaopai-ai.
|
|
38
100
|
- Pairing/Telegram: include the actual pairing code in approve commands, route Telegram pairing replies through the shared pairing message builder, and add regression checks to prevent `<code>` placeholder drift.
|
|
39
101
|
- Onboarding: QuickStart now auto-installs shell completion (prompt only in Manual).
|
|
102
|
+
- Onboarding/Providers: add LiteLLM provider onboarding and preserve custom LiteLLM proxy base URLs while enforcing API-key auth mode. (#12823) Thanks @ryan-crabbe.
|
|
40
103
|
- Docker: make `docker-setup.sh` compatible with macOS Bash 3.2 and empty extra mounts. (#9441) Thanks @mateusz-michalik.
|
|
41
104
|
- Auth: strip embedded line breaks from pasted API keys and tokens before storing/resolving credentials.
|
|
42
105
|
- Agents: strip reasoning tags and downgraded tool markers from messaging tool and streaming output to prevent leakage. (#11053, #13453) Thanks @liebertar, @meaadore1221-afk, @gumadeiras.
|
|
43
106
|
- Browser: prevent stuck `act:evaluate` from wedging the browser tool, and make cancellation stop waiting promptly. (#13498) Thanks @onutc.
|
|
107
|
+
- Security/Gateway: default-deny missing connect `scopes` (no implicit `operator.admin`).
|
|
44
108
|
- Web UI: make chat refresh smoothly scroll to the latest messages and suppress new-messages badge flash during manual refresh.
|
|
109
|
+
- Web UI: coerce Form Editor values to schema types before `config.set` and `config.apply`, preventing numeric and boolean fields from being serialized as strings. (#13468) Thanks @mcaxtr.
|
|
45
110
|
- Tools/web_search: include provider-specific settings in the web search cache key, and pass `inlineCitations` for Grok. (#12419) Thanks @tmchow.
|
|
46
111
|
- Tools/web_search: fix Grok response parsing for xAI Responses API output blocks. (#13049) Thanks @ereid7.
|
|
47
112
|
- Tools/web_search: normalize direct Perplexity model IDs while keeping OpenRouter model IDs unchanged. (#12795) Thanks @cdorsey.
|
|
@@ -53,11 +118,13 @@ Docs: https://docs.openclaw.ai
|
|
|
53
118
|
- Gateway: fix multi-agent sessions.usage discovery. (#11523) Thanks @Takhoffman.
|
|
54
119
|
- Agents: recover from context overflow caused by oversized tool results (pre-emptive capping + fallback truncation). (#11579) Thanks @tyler6204.
|
|
55
120
|
- Subagents/compaction: stabilize announce timing and preserve compaction metrics across retries. (#11664) Thanks @tyler6204.
|
|
121
|
+
- Subagents: report timeout-aborted runs as timed out instead of completed successfully in parent-session announcements. (#13996) Thanks @dario-github.
|
|
56
122
|
- Cron: share isolated announce flow and harden scheduling/delivery reliability. (#11641) Thanks @tyler6204.
|
|
57
123
|
- Cron tool: recover flat params when LLM omits the `job` wrapper for add requests. (#12124) Thanks @tyler6204.
|
|
58
124
|
- Gateway/CLI: when `gateway.bind=lan`, use a LAN IP for probe URLs and Control UI links. (#11448) Thanks @AnonO6.
|
|
59
125
|
- CLI: make `openclaw plugins list` output scannable by hoisting source roots and shortening bundled/global/workspace plugin paths.
|
|
60
126
|
- Hooks: fix bundled hooks broken since 2026.2.2 (tsdown migration). (#9295) Thanks @patrickshao.
|
|
127
|
+
- Security/Plugins: install plugin and hook dependencies with `--ignore-scripts` to prevent lifecycle script execution.
|
|
61
128
|
- Routing: refresh bindings per message by loading config at route resolution so binding changes apply without restart. (#11372) Thanks @juanpablodlc.
|
|
62
129
|
- Exec approvals: render forwarded commands in monospace for safer approval scanning. (#11937) Thanks @sebslight.
|
|
63
130
|
- Config: clamp `maxTokens` to `contextWindow` to prevent invalid model configs. (#5516) Thanks @lailoo.
|
|
@@ -71,6 +138,8 @@ Docs: https://docs.openclaw.ai
|
|
|
71
138
|
- Memory/QMD: run boot refresh in background by default, add configurable QMD maintenance timeouts, retry QMD after fallback failures, and scope QMD queries to OpenClaw-managed collections. (#9690, #9705, #10042) Thanks @vignesh07.
|
|
72
139
|
- Memory/QMD: initialize QMD backend on gateway startup so background update timers restart after process reloads. (#10797) Thanks @vignesh07.
|
|
73
140
|
- Config/Memory: auto-migrate legacy top-level `memorySearch` settings into `agents.defaults.memorySearch`. (#11278, #9143) Thanks @vignesh07.
|
|
141
|
+
- Memory/QMD: treat plain-text `No results found` output from QMD as an empty result instead of throwing invalid JSON errors. (#9824)
|
|
142
|
+
- Memory/QMD: add `memory.qmd.searchMode` to choose `query`, `search`, or `vsearch` recall mode. (#9967, #10084)
|
|
74
143
|
- Media understanding: recognize `.caf` audio attachments for transcription. (#10982) Thanks @succ985.
|
|
75
144
|
- State dir: honor `OPENCLAW_STATE_DIR` for default device identity and canvas storage paths. (#4824) Thanks @kossoy.
|
|
76
145
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { m as resolveOAuthDir } from "./paths-DVBShlw6.js";
|
|
2
|
-
import { D as info, P as success, c as defaultRuntime, z as getChildLogger } from "./subsystem-
|
|
3
|
-
import { b as resolveUserPath, m as jidToE164 } from "./utils-
|
|
2
|
+
import { D as info, P as success, c as defaultRuntime, z as getChildLogger } from "./subsystem-Bv7dGhES.js";
|
|
3
|
+
import { b as resolveUserPath, m as jidToE164 } from "./utils-BHPdZE4h.js";
|
|
4
4
|
import { c as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./session-key-BWxPj0z_.js";
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import "./paths-DVBShlw6.js";
|
|
2
|
-
import { R as theme, c as defaultRuntime } from "./subsystem-
|
|
3
|
-
import "./utils-
|
|
4
|
-
import "./exec-
|
|
5
|
-
import "./agent-scope
|
|
6
|
-
import "./model-selection-
|
|
2
|
+
import { R as theme, c as defaultRuntime } from "./subsystem-Bv7dGhES.js";
|
|
3
|
+
import "./utils-BHPdZE4h.js";
|
|
4
|
+
import "./exec-DXtR2fhb.js";
|
|
5
|
+
import "./agent-scope---6LLHj0.js";
|
|
6
|
+
import "./model-selection-unMJyUIE.js";
|
|
7
7
|
import "./github-copilot-token-BW-SEg7E.js";
|
|
8
8
|
import "./boolean-BgXe2hyu.js";
|
|
9
|
-
import "./env-
|
|
10
|
-
import { M as VERSION, i as loadConfig } from "./config
|
|
11
|
-
import "./manifest-registry-
|
|
12
|
-
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-
|
|
13
|
-
import { t as GatewayClient } from "./client-
|
|
14
|
-
import { t as buildGatewayConnectionDetails } from "./call-
|
|
15
|
-
import { t as formatDocsLink } from "./links-
|
|
16
|
-
import "./tailscale-
|
|
17
|
-
import { t as isMainModule } from "./is-main-
|
|
18
|
-
import { t as ensureOpenClawCliOnPath } from "./path-env-
|
|
19
|
-
import { i as resolveGatewayAuth } from "./auth-
|
|
9
|
+
import "./env-DE9xvYOL.js";
|
|
10
|
+
import { M as VERSION, i as loadConfig } from "./config-DH9TLUNc.js";
|
|
11
|
+
import "./manifest-registry-DFckk-L8.js";
|
|
12
|
+
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-0717wOz-.js";
|
|
13
|
+
import { t as GatewayClient } from "./client-B0_GiCjB.js";
|
|
14
|
+
import { t as buildGatewayConnectionDetails } from "./call-C9az806y.js";
|
|
15
|
+
import { t as formatDocsLink } from "./links-CV4oki2u.js";
|
|
16
|
+
import "./tailscale-DHfcfRCx.js";
|
|
17
|
+
import { t as isMainModule } from "./is-main-CE1eOBYb.js";
|
|
18
|
+
import { t as ensureOpenClawCliOnPath } from "./path-env-C5FR_Eay.js";
|
|
19
|
+
import { i as resolveGatewayAuth } from "./auth-jrfLXze7.js";
|
|
20
20
|
import { fileURLToPath } from "node:url";
|
|
21
21
|
import { spawn } from "node:child_process";
|
|
22
22
|
import { randomUUID } from "node:crypto";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { k as theme, p as defaultRuntime } from "./entry.js";
|
|
2
|
-
import "./auth-profiles-
|
|
2
|
+
import "./auth-profiles-CcJ3hrog.js";
|
|
3
3
|
import "./utils-Dk86IbEs.js";
|
|
4
4
|
import "./exec-B8JKbXKW.js";
|
|
5
|
-
import "./agent-scope-
|
|
5
|
+
import "./agent-scope-RCSw6gHy.js";
|
|
6
6
|
import "./github-copilot-token-SLWintYd.js";
|
|
7
|
-
import { M as VERSION, i as loadConfig } from "./config-
|
|
8
|
-
import "./manifest-registry-
|
|
7
|
+
import { M as VERSION, i as loadConfig } from "./config-B7sno9eI.js";
|
|
8
|
+
import "./manifest-registry-BTgLN_W2.js";
|
|
9
9
|
import { t as ensureOpenClawCliOnPath } from "./path-env-CXWUFfFv.js";
|
|
10
10
|
import "./tailscale-DU6DgqVy.js";
|
|
11
11
|
import { i as resolveGatewayAuth } from "./auth-BcNHFK-i.js";
|
|
12
|
-
import { t as GatewayClient } from "./client-
|
|
13
|
-
import { t as buildGatewayConnectionDetails } from "./call-
|
|
12
|
+
import { t as GatewayClient } from "./client-D7wrC1Ug.js";
|
|
13
|
+
import { t as buildGatewayConnectionDetails } from "./call-Yxns4CVq.js";
|
|
14
14
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-BlgPSDAh.js";
|
|
15
15
|
import { t as isMainModule } from "./is-main-qJ675wPV.js";
|
|
16
16
|
import { t as formatDocsLink } from "./links-7M-j83As.js";
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { c as defaultRuntime, h as DEFAULT_CHAT_CHANNEL } from "./subsystem-
|
|
2
|
-
import {
|
|
3
|
-
import { $t as getSkillsSnapshotVersion, Bt as getRemoteSkillEligibility, Cr as
|
|
1
|
+
import { c as defaultRuntime, h as DEFAULT_CHAT_CHANNEL } from "./subsystem-Bv7dGhES.js";
|
|
2
|
+
import { J as supportsXHighThinking, K as normalizeVerboseLevel, R as formatThinkingLevels, W as normalizeThinkLevel, z as formatXHighModelHint } from "./pi-embedded-helpers-CmftU5Zj.js";
|
|
3
|
+
import { $t as getSkillsSnapshotVersion, Bt as getRemoteSkillEligibility, Cr as clearSessionAuthProfileOverride, In as registerAgentRunContext, L as runWithModelFallback, M as resolveOutboundTarget, Mn as clearAgentRunContext, N as resolveSessionDeliveryTarget, Nn as emitAgentEvent, Sr as lookupContextTokens, Tr as applyVerboseOverride, Ur as resolveAgentTimeoutMs, i as runCliAgent, jn as AGENT_LANE_NESTED, l as runEmbeddedPiAgent, n as getCliSessionId, r as setCliSessionId, s as resolveSendPolicy, wr as applyModelOverrideToSessionEntry } from "./reply-m467_fOC.js";
|
|
4
4
|
import { d as resolveAgentIdFromSessionKey, l as normalizeAgentId, u as normalizeMainKey } from "./session-key-BWxPj0z_.js";
|
|
5
|
-
import { a as resolveAgentModelPrimary, i as resolveAgentModelFallbacksOverride, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, x as ensureAgentWorkspace } from "./agent-scope
|
|
6
|
-
import { Dt as DEFAULT_MODEL, Et as DEFAULT_CONTEXT_TOKENS, Ot as DEFAULT_PROVIDER, a as isCliProvider, d as resolveConfiguredModelRef, h as resolveThinkingDefault, ht as ensureAuthProfileStore, o as modelKey, t as buildAllowedModelSet } from "./model-selection-
|
|
5
|
+
import { a as resolveAgentModelPrimary, i as resolveAgentModelFallbacksOverride, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, x as ensureAgentWorkspace } from "./agent-scope---6LLHj0.js";
|
|
6
|
+
import { Dt as DEFAULT_MODEL, Et as DEFAULT_CONTEXT_TOKENS, Ot as DEFAULT_PROVIDER, a as isCliProvider, d as resolveConfiguredModelRef, h as resolveThinkingDefault, ht as ensureAuthProfileStore, o as modelKey, t as buildAllowedModelSet } from "./model-selection-unMJyUIE.js";
|
|
7
7
|
import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
|
|
8
|
-
import { i as loadConfig } from "./config
|
|
9
|
-
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-
|
|
10
|
-
import { A as resolveSessionResetPolicy, D as resolveSessionKey, I as resolveExplicitAgentSessionKey, O as evaluateSessionFreshness, T as normalizeAccountId, d as loadSessionStore, g as updateSessionStore, j as resolveSessionResetType, k as resolveChannelResetConfig } from "./sandbox-
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { n as
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
8
|
+
import { i as loadConfig } from "./config-DH9TLUNc.js";
|
|
9
|
+
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BL9lIXSA.js";
|
|
10
|
+
import { A as resolveSessionResetPolicy, D as resolveSessionKey, I as resolveExplicitAgentSessionKey, O as evaluateSessionFreshness, T as normalizeAccountId, d as loadSessionStore, g as updateSessionStore, j as resolveSessionResetType, k as resolveChannelResetConfig } from "./sandbox-BW8Xnkw1.js";
|
|
11
|
+
import { s as loadModelCatalog } from "./runner-CInKPsiP.js";
|
|
12
|
+
import { r as buildWorkspaceSkillSnapshot } from "./skills-aFOsriMP.js";
|
|
13
|
+
import { a as isInternalMessageChannel, d as resolveMessageChannel, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-0717wOz-.js";
|
|
14
|
+
import { n as resolveSessionFilePath, o as resolveStorePath } from "./paths-RITJT4UY.js";
|
|
15
|
+
import { a as normalizeOutboundPayloadsForJson, i as normalizeOutboundPayloads, r as formatOutboundPayloadLog, t as deliverOutboundPayloads } from "./deliver-B1jsU2r7.js";
|
|
16
|
+
import { l as deriveSessionTotalTokens, u as hasNonzeroUsage } from "./session-cost-usage-HU4OeRgw.js";
|
|
17
|
+
import { t as createDefaultDeps } from "./deps-B6602Wid.js";
|
|
17
18
|
import crypto from "node:crypto";
|
|
18
19
|
|
|
19
20
|
//#region src/cli/outbound-send-deps.ts
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { $ as DEFAULT_CHAT_CHANNEL, p as defaultRuntime } from "./entry.js";
|
|
2
|
-
import { C as buildAllowedModelSet, Ct as DEFAULT_CONTEXT_TOKENS, D as isCliProvider, L as resolveThinkingDefault, N as resolveConfiguredModelRef, O as modelKey, Tt as DEFAULT_PROVIDER, _ as ensureAuthProfileStore, wt as DEFAULT_MODEL } from "./auth-profiles-
|
|
2
|
+
import { C as buildAllowedModelSet, Ct as DEFAULT_CONTEXT_TOKENS, D as isCliProvider, L as resolveThinkingDefault, N as resolveConfiguredModelRef, O as modelKey, Tt as DEFAULT_PROVIDER, _ as ensureAuthProfileStore, wt as DEFAULT_MODEL } from "./auth-profiles-CcJ3hrog.js";
|
|
3
3
|
import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
|
|
4
4
|
import { d as resolveAgentIdFromSessionKey, l as normalizeAgentId, u as normalizeMainKey } from "./session-key-DVvxnFKg.js";
|
|
5
|
-
import { a as resolveAgentModelPrimary, i as resolveAgentModelFallbacksOverride, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, x as ensureAgentWorkspace } from "./agent-scope-
|
|
6
|
-
import { i as loadConfig } from "./config-
|
|
5
|
+
import { a as resolveAgentModelPrimary, i as resolveAgentModelFallbacksOverride, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, x as ensureAgentWorkspace } from "./agent-scope-RCSw6gHy.js";
|
|
6
|
+
import { i as loadConfig } from "./config-B7sno9eI.js";
|
|
7
7
|
import { a as isInternalMessageChannel, d as resolveMessageChannel, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-BlgPSDAh.js";
|
|
8
|
-
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-
|
|
9
|
-
import {
|
|
8
|
+
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-3GyCj5KL.js";
|
|
9
|
+
import { At as runEmbeddedPiAgent, Bt as resolveAgentTimeoutMs, Cn as resolveSessionDeliveryTarget, Dn as runWithModelFallback, G as setCliSessionId, Gt as registerAgentRunContext, Ht as emitAgentEvent, Jt as AGENT_LANE_NESTED, K as runCliAgent, Sn as resolveOutboundTarget, Vt as clearAgentRunContext, W as getCliSessionId, X as getRemoteSkillEligibility, Y as resolveSendPolicy, Yt as applyModelOverrideToSessionEntry, dt as clearSessionAuthProfileOverride, ft as applyVerboseOverride, lt as getSkillsSnapshotVersion, pn as lookupContextTokens } from "./loader-Caow9TPA.js";
|
|
10
10
|
import { n as resolveSessionFilePath, o as resolveStorePath } from "./paths-IivnSNkP.js";
|
|
11
|
-
import {
|
|
12
|
-
import { a as normalizeOutboundPayloadsForJson, i as normalizeOutboundPayloads, r as formatOutboundPayloadLog, t as deliverOutboundPayloads } from "./deliver-
|
|
13
|
-
import { A as resolveSessionResetType, D as evaluateSessionFreshness, E as resolveSessionKey, F as resolveExplicitAgentSessionKey, O as resolveChannelResetConfig, T as normalizeAccountId, d as loadSessionStore, g as updateSessionStore, k as resolveSessionResetPolicy } from "./sandbox-
|
|
14
|
-
import { r as buildWorkspaceSkillSnapshot } from "./skills-
|
|
15
|
-
import { l as deriveSessionTotalTokens, u as hasNonzeroUsage } from "./session-cost-usage-
|
|
16
|
-
import {
|
|
11
|
+
import { H as normalizeThinkLevel, I as formatThinkingLevels, K as supportsXHighThinking, L as formatXHighModelHint, W as normalizeVerboseLevel } from "./pi-embedded-helpers-Uan-3N1T.js";
|
|
12
|
+
import { a as normalizeOutboundPayloadsForJson, i as normalizeOutboundPayloads, r as formatOutboundPayloadLog, t as deliverOutboundPayloads } from "./deliver-DzcxEcza.js";
|
|
13
|
+
import { A as resolveSessionResetType, D as evaluateSessionFreshness, E as resolveSessionKey, F as resolveExplicitAgentSessionKey, O as resolveChannelResetConfig, T as normalizeAccountId, d as loadSessionStore, g as updateSessionStore, k as resolveSessionResetPolicy } from "./sandbox-B0K9e6Fw.js";
|
|
14
|
+
import { r as buildWorkspaceSkillSnapshot } from "./skills-BvPUNjxo.js";
|
|
15
|
+
import { l as deriveSessionTotalTokens, u as hasNonzeroUsage } from "./session-cost-usage-CL8gnHRN.js";
|
|
16
|
+
import { _ as loadModelCatalog } from "./runner-C1G8RFWl.js";
|
|
17
|
+
import { t as createDefaultDeps } from "./deps-Cva7QM_t.js";
|
|
17
18
|
import crypto from "node:crypto";
|
|
18
19
|
|
|
19
20
|
//#region src/cli/outbound-send-deps.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { g as resolveStateDir, y as resolveRequiredHomeDir } from "./paths-DVBShlw6.js";
|
|
2
|
-
import { b as resolveUserPath, g as pathExists } from "./utils-
|
|
2
|
+
import { b as resolveUserPath, g as pathExists } from "./utils-BHPdZE4h.js";
|
|
3
3
|
import { l as normalizeAgentId, n as DEFAULT_AGENT_ID, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-BWxPj0z_.js";
|
|
4
|
-
import { t as runCommandWithTimeout } from "./exec-
|
|
5
|
-
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-
|
|
4
|
+
import { t as runCommandWithTimeout } from "./exec-DXtR2fhb.js";
|
|
5
|
+
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-1VeFrph_.js";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
import path from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-rb94mUrR.js";
|
|
2
|
-
import { F as pathExists, R as resolveUserPath, t as runCommandWithTimeout } from "./exec-
|
|
2
|
+
import { F as pathExists, R as resolveUserPath, t as runCommandWithTimeout } from "./exec-D12IZYtJ.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import os from "node:os";
|
|
@@ -217,6 +217,10 @@ function findPackageRootSync(startDir, maxDepth = 12) {
|
|
|
217
217
|
function candidateDirsFromArgv1(argv1) {
|
|
218
218
|
const normalized = path.resolve(argv1);
|
|
219
219
|
const candidates = [path.dirname(normalized)];
|
|
220
|
+
try {
|
|
221
|
+
const resolved = fs.realpathSync(normalized);
|
|
222
|
+
if (resolved !== normalized) candidates.push(path.dirname(resolved));
|
|
223
|
+
} catch {}
|
|
220
224
|
const parts = normalized.split(path.sep);
|
|
221
225
|
const binIndex = parts.lastIndexOf(".bin");
|
|
222
226
|
if (binIndex > 0 && parts[binIndex - 1] === "node_modules") {
|
|
@@ -2,7 +2,7 @@ import { X as resolveStateDir, pt as resolveRequiredHomeDir } from "./entry.js";
|
|
|
2
2
|
import { l as normalizeAgentId, n as DEFAULT_AGENT_ID, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-DVvxnFKg.js";
|
|
3
3
|
import { h as pathExists, y as resolveUserPath } from "./utils-Dk86IbEs.js";
|
|
4
4
|
import { t as runCommandWithTimeout } from "./exec-B8JKbXKW.js";
|
|
5
|
-
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-
|
|
5
|
+
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-BNlEap4i.js";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
import fs from "node:fs/promises";
|
|
@@ -1,13 +1,177 @@
|
|
|
1
1
|
import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-BZtyHNCi.js";
|
|
2
|
-
import {
|
|
3
|
-
import { g as resolveUserPath, p as pathExists } from "./utils-dp_OM900.js";
|
|
4
|
-
import { t as runCommandWithTimeout } from "./exec-CijMSZd9.js";
|
|
2
|
+
import { I as pathExists, t as runCommandWithTimeout, z as resolveUserPath } from "./exec-4WHuOniw.js";
|
|
5
3
|
import fs from "node:fs/promises";
|
|
6
4
|
import os from "node:os";
|
|
7
5
|
import path from "node:path";
|
|
8
6
|
import fs$1 from "node:fs";
|
|
9
7
|
import { fileURLToPath } from "node:url";
|
|
10
8
|
|
|
9
|
+
//#region src/sessions/session-key-utils.ts
|
|
10
|
+
function parseAgentSessionKey(sessionKey) {
|
|
11
|
+
const raw = (sessionKey ?? "").trim();
|
|
12
|
+
if (!raw) return null;
|
|
13
|
+
const parts = raw.split(":").filter(Boolean);
|
|
14
|
+
if (parts.length < 3) return null;
|
|
15
|
+
if (parts[0] !== "agent") return null;
|
|
16
|
+
const agentId = parts[1]?.trim();
|
|
17
|
+
const rest = parts.slice(2).join(":");
|
|
18
|
+
if (!agentId || !rest) return null;
|
|
19
|
+
return {
|
|
20
|
+
agentId,
|
|
21
|
+
rest
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function isSubagentSessionKey(sessionKey) {
|
|
25
|
+
const raw = (sessionKey ?? "").trim();
|
|
26
|
+
if (!raw) return false;
|
|
27
|
+
if (raw.toLowerCase().startsWith("subagent:")) return true;
|
|
28
|
+
const parsed = parseAgentSessionKey(raw);
|
|
29
|
+
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("subagent:"));
|
|
30
|
+
}
|
|
31
|
+
function isAcpSessionKey(sessionKey) {
|
|
32
|
+
const raw = (sessionKey ?? "").trim();
|
|
33
|
+
if (!raw) return false;
|
|
34
|
+
if (raw.toLowerCase().startsWith("acp:")) return true;
|
|
35
|
+
const parsed = parseAgentSessionKey(raw);
|
|
36
|
+
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("acp:"));
|
|
37
|
+
}
|
|
38
|
+
const THREAD_SESSION_MARKERS = [":thread:", ":topic:"];
|
|
39
|
+
function resolveThreadParentSessionKey(sessionKey) {
|
|
40
|
+
const raw = (sessionKey ?? "").trim();
|
|
41
|
+
if (!raw) return null;
|
|
42
|
+
const normalized = raw.toLowerCase();
|
|
43
|
+
let idx = -1;
|
|
44
|
+
for (const marker of THREAD_SESSION_MARKERS) {
|
|
45
|
+
const candidate = normalized.lastIndexOf(marker);
|
|
46
|
+
if (candidate > idx) idx = candidate;
|
|
47
|
+
}
|
|
48
|
+
if (idx <= 0) return null;
|
|
49
|
+
const parent = raw.slice(0, idx).trim();
|
|
50
|
+
return parent ? parent : null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region src/routing/session-key.ts
|
|
55
|
+
const DEFAULT_AGENT_ID = "main";
|
|
56
|
+
const DEFAULT_MAIN_KEY = "main";
|
|
57
|
+
const DEFAULT_ACCOUNT_ID = "default";
|
|
58
|
+
const VALID_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/i;
|
|
59
|
+
const INVALID_CHARS_RE = /[^a-z0-9_-]+/g;
|
|
60
|
+
const LEADING_DASH_RE = /^-+/;
|
|
61
|
+
const TRAILING_DASH_RE = /-+$/;
|
|
62
|
+
function normalizeToken(value) {
|
|
63
|
+
return (value ?? "").trim().toLowerCase();
|
|
64
|
+
}
|
|
65
|
+
function normalizeMainKey(value) {
|
|
66
|
+
const trimmed = (value ?? "").trim();
|
|
67
|
+
return trimmed ? trimmed.toLowerCase() : DEFAULT_MAIN_KEY;
|
|
68
|
+
}
|
|
69
|
+
function resolveAgentIdFromSessionKey(sessionKey) {
|
|
70
|
+
return normalizeAgentId(parseAgentSessionKey(sessionKey)?.agentId ?? DEFAULT_AGENT_ID);
|
|
71
|
+
}
|
|
72
|
+
function classifySessionKeyShape(sessionKey) {
|
|
73
|
+
const raw = (sessionKey ?? "").trim();
|
|
74
|
+
if (!raw) return "missing";
|
|
75
|
+
if (parseAgentSessionKey(raw)) return "agent";
|
|
76
|
+
return raw.toLowerCase().startsWith("agent:") ? "malformed_agent" : "legacy_or_alias";
|
|
77
|
+
}
|
|
78
|
+
function normalizeAgentId(value) {
|
|
79
|
+
const trimmed = (value ?? "").trim();
|
|
80
|
+
if (!trimmed) return DEFAULT_AGENT_ID;
|
|
81
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
82
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
|
|
83
|
+
}
|
|
84
|
+
function sanitizeAgentId(value) {
|
|
85
|
+
const trimmed = (value ?? "").trim();
|
|
86
|
+
if (!trimmed) return DEFAULT_AGENT_ID;
|
|
87
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
88
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
|
|
89
|
+
}
|
|
90
|
+
function normalizeAccountId(value) {
|
|
91
|
+
const trimmed = (value ?? "").trim();
|
|
92
|
+
if (!trimmed) return DEFAULT_ACCOUNT_ID;
|
|
93
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
94
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_ACCOUNT_ID;
|
|
95
|
+
}
|
|
96
|
+
function buildAgentMainSessionKey(params) {
|
|
97
|
+
return `agent:${normalizeAgentId(params.agentId)}:${normalizeMainKey(params.mainKey)}`;
|
|
98
|
+
}
|
|
99
|
+
function buildAgentPeerSessionKey(params) {
|
|
100
|
+
const peerKind = params.peerKind ?? "direct";
|
|
101
|
+
if (peerKind === "direct") {
|
|
102
|
+
const dmScope = params.dmScope ?? "main";
|
|
103
|
+
let peerId = (params.peerId ?? "").trim();
|
|
104
|
+
const linkedPeerId = dmScope === "main" ? null : resolveLinkedPeerId({
|
|
105
|
+
identityLinks: params.identityLinks,
|
|
106
|
+
channel: params.channel,
|
|
107
|
+
peerId
|
|
108
|
+
});
|
|
109
|
+
if (linkedPeerId) peerId = linkedPeerId;
|
|
110
|
+
peerId = peerId.toLowerCase();
|
|
111
|
+
if (dmScope === "per-account-channel-peer" && peerId) {
|
|
112
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
113
|
+
const accountId = normalizeAccountId(params.accountId);
|
|
114
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:${accountId}:direct:${peerId}`;
|
|
115
|
+
}
|
|
116
|
+
if (dmScope === "per-channel-peer" && peerId) {
|
|
117
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
118
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:direct:${peerId}`;
|
|
119
|
+
}
|
|
120
|
+
if (dmScope === "per-peer" && peerId) return `agent:${normalizeAgentId(params.agentId)}:direct:${peerId}`;
|
|
121
|
+
return buildAgentMainSessionKey({
|
|
122
|
+
agentId: params.agentId,
|
|
123
|
+
mainKey: params.mainKey
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
127
|
+
const peerId = ((params.peerId ?? "").trim() || "unknown").toLowerCase();
|
|
128
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:${peerKind}:${peerId}`;
|
|
129
|
+
}
|
|
130
|
+
function resolveLinkedPeerId(params) {
|
|
131
|
+
const identityLinks = params.identityLinks;
|
|
132
|
+
if (!identityLinks) return null;
|
|
133
|
+
const peerId = params.peerId.trim();
|
|
134
|
+
if (!peerId) return null;
|
|
135
|
+
const candidates = /* @__PURE__ */ new Set();
|
|
136
|
+
const rawCandidate = normalizeToken(peerId);
|
|
137
|
+
if (rawCandidate) candidates.add(rawCandidate);
|
|
138
|
+
const channel = normalizeToken(params.channel);
|
|
139
|
+
if (channel) {
|
|
140
|
+
const scopedCandidate = normalizeToken(`${channel}:${peerId}`);
|
|
141
|
+
if (scopedCandidate) candidates.add(scopedCandidate);
|
|
142
|
+
}
|
|
143
|
+
if (candidates.size === 0) return null;
|
|
144
|
+
for (const [canonical, ids] of Object.entries(identityLinks)) {
|
|
145
|
+
const canonicalName = canonical.trim();
|
|
146
|
+
if (!canonicalName) continue;
|
|
147
|
+
if (!Array.isArray(ids)) continue;
|
|
148
|
+
for (const id of ids) {
|
|
149
|
+
const normalized = normalizeToken(id);
|
|
150
|
+
if (normalized && candidates.has(normalized)) return canonicalName;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
function buildGroupHistoryKey(params) {
|
|
156
|
+
const channel = normalizeToken(params.channel) || "unknown";
|
|
157
|
+
const accountId = normalizeAccountId(params.accountId);
|
|
158
|
+
const peerId = params.peerId.trim().toLowerCase() || "unknown";
|
|
159
|
+
return `${channel}:${accountId}:${params.peerKind}:${peerId}`;
|
|
160
|
+
}
|
|
161
|
+
function resolveThreadSessionKeys(params) {
|
|
162
|
+
const threadId = (params.threadId ?? "").trim();
|
|
163
|
+
if (!threadId) return {
|
|
164
|
+
sessionKey: params.baseSessionKey,
|
|
165
|
+
parentSessionKey: void 0
|
|
166
|
+
};
|
|
167
|
+
const normalizedThreadId = threadId.toLowerCase();
|
|
168
|
+
return {
|
|
169
|
+
sessionKey: params.useSuffix ?? true ? `${params.baseSessionKey}:thread:${normalizedThreadId}` : params.baseSessionKey,
|
|
170
|
+
parentSessionKey: params.parentSessionKey
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
//#endregion
|
|
11
175
|
//#region src/infra/openclaw-root.ts
|
|
12
176
|
const CORE_PACKAGE_NAMES = new Set(["openclaw", "activeclaw"]);
|
|
13
177
|
async function readPackageName(dir) {
|
|
@@ -53,6 +217,10 @@ function findPackageRootSync(startDir, maxDepth = 12) {
|
|
|
53
217
|
function candidateDirsFromArgv1(argv1) {
|
|
54
218
|
const normalized = path.resolve(argv1);
|
|
55
219
|
const candidates = [path.dirname(normalized)];
|
|
220
|
+
try {
|
|
221
|
+
const resolved = fs$1.realpathSync(normalized);
|
|
222
|
+
if (resolved !== normalized) candidates.push(path.dirname(resolved));
|
|
223
|
+
} catch {}
|
|
56
224
|
const parts = normalized.split(path.sep);
|
|
57
225
|
const binIndex = parts.lastIndexOf(".bin");
|
|
58
226
|
if (binIndex > 0 && parts[binIndex - 1] === "node_modules") {
|
|
@@ -439,4 +607,4 @@ function resolveAgentDir(cfg, agentId) {
|
|
|
439
607
|
}
|
|
440
608
|
|
|
441
609
|
//#endregion
|
|
442
|
-
export { resolveOpenClawPackageRootSync as C, resolveOpenClawPackageRoot as S, DEFAULT_TOOLS_FILENAME as _, resolveAgentModelPrimary as a, filterBootstrapFilesForSession as b, resolveDefaultAgentId as c, DEFAULT_AGENTS_FILENAME as d, DEFAULT_AGENT_WORKSPACE_DIR as f, DEFAULT_SOUL_FILENAME as g, DEFAULT_IDENTITY_FILENAME as h, resolveAgentModelFallbacksOverride as i, resolveSessionAgentId as l, DEFAULT_HEARTBEAT_FILENAME as m, resolveAgentConfig as n, resolveAgentSkillsFilter as o, DEFAULT_BOOTSTRAP_FILENAME as p, resolveAgentDir as r, resolveAgentWorkspaceDir as s, listAgentIds as t, resolveSessionAgentIds as u, DEFAULT_USER_FILENAME as v, loadWorkspaceBootstrapFiles as x, ensureAgentWorkspace as y };
|
|
610
|
+
export { classifySessionKeyShape as A, resolveThreadParentSessionKey as B, resolveOpenClawPackageRootSync as C, buildAgentMainSessionKey as D, DEFAULT_MAIN_KEY as E, resolveThreadSessionKeys as F, sanitizeAgentId as I, isAcpSessionKey as L, normalizeAgentId as M, normalizeMainKey as N, buildAgentPeerSessionKey as O, resolveAgentIdFromSessionKey as P, isSubagentSessionKey as R, resolveOpenClawPackageRoot as S, DEFAULT_AGENT_ID as T, DEFAULT_TOOLS_FILENAME as _, resolveAgentModelPrimary as a, filterBootstrapFilesForSession as b, resolveDefaultAgentId as c, DEFAULT_AGENTS_FILENAME as d, DEFAULT_AGENT_WORKSPACE_DIR as f, DEFAULT_SOUL_FILENAME as g, DEFAULT_IDENTITY_FILENAME as h, resolveAgentModelFallbacksOverride as i, normalizeAccountId as j, buildGroupHistoryKey as k, resolveSessionAgentId as l, DEFAULT_HEARTBEAT_FILENAME as m, resolveAgentConfig as n, resolveAgentSkillsFilter as o, DEFAULT_BOOTSTRAP_FILENAME as p, resolveAgentDir as r, resolveAgentWorkspaceDir as s, listAgentIds as t, resolveSessionAgentIds as u, DEFAULT_USER_FILENAME as v, DEFAULT_ACCOUNT_ID as w, loadWorkspaceBootstrapFiles as x, ensureAgentWorkspace as y, parseAgentSessionKey as z };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { w as shouldLogVerbose, x as logVerbose } from "./entry.js";
|
|
2
|
+
import "./auth-profiles-CcJ3hrog.js";
|
|
3
|
+
import "./utils-Dk86IbEs.js";
|
|
4
|
+
import "./exec-B8JKbXKW.js";
|
|
5
|
+
import "./agent-scope-RCSw6gHy.js";
|
|
6
|
+
import "./github-copilot-token-SLWintYd.js";
|
|
7
|
+
import "./pi-model-discovery-DzEIEgHL.js";
|
|
8
|
+
import "./config-B7sno9eI.js";
|
|
9
|
+
import "./manifest-registry-BTgLN_W2.js";
|
|
10
|
+
import "./server-context-fX4xiYRh.js";
|
|
11
|
+
import "./chrome-yIKmOzCO.js";
|
|
12
|
+
import "./message-channel-BlgPSDAh.js";
|
|
13
|
+
import "./plugins-3GyCj5KL.js";
|
|
14
|
+
import "./logging-CfEk_PnX.js";
|
|
15
|
+
import "./accounts-DbzMEfKN.js";
|
|
16
|
+
import "./paths-IivnSNkP.js";
|
|
17
|
+
import "./redact-DuEEf1p1.js";
|
|
18
|
+
import "./routes-BqxA3ZYr.js";
|
|
19
|
+
import "./pi-embedded-helpers-Uan-3N1T.js";
|
|
20
|
+
import "./fetch-timeout-B2KlHXi3.js";
|
|
21
|
+
import "./sandbox-B0K9e6Fw.js";
|
|
22
|
+
import "./skills-BvPUNjxo.js";
|
|
23
|
+
import "./image-LxFvu0wL.js";
|
|
24
|
+
import "./tool-display-sHJa3kRs.js";
|
|
25
|
+
import { a as runCapability, n as createMediaAttachmentCache, o as isAudioAttachment, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-C1G8RFWl.js";
|
|
26
|
+
|
|
27
|
+
//#region src/media-understanding/audio-preflight.ts
|
|
28
|
+
/**
|
|
29
|
+
* Transcribes the first audio attachment BEFORE mention checking.
|
|
30
|
+
* This allows voice notes to be processed in group chats with requireMention: true.
|
|
31
|
+
* Returns the transcript or undefined if transcription fails or no audio is found.
|
|
32
|
+
*/
|
|
33
|
+
async function transcribeFirstAudio(params) {
|
|
34
|
+
const { ctx, cfg } = params;
|
|
35
|
+
const audioConfig = cfg.tools?.media?.audio;
|
|
36
|
+
if (!audioConfig || audioConfig.enabled === false) return;
|
|
37
|
+
const attachments = normalizeMediaAttachments(ctx);
|
|
38
|
+
if (!attachments || attachments.length === 0) return;
|
|
39
|
+
const firstAudio = attachments.find((att) => att && isAudioAttachment(att) && !att.alreadyTranscribed);
|
|
40
|
+
if (!firstAudio) return;
|
|
41
|
+
if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);
|
|
42
|
+
const providerRegistry = buildProviderRegistry(params.providers);
|
|
43
|
+
const cache = createMediaAttachmentCache(attachments);
|
|
44
|
+
try {
|
|
45
|
+
const result = await runCapability({
|
|
46
|
+
capability: "audio",
|
|
47
|
+
cfg,
|
|
48
|
+
ctx,
|
|
49
|
+
attachments: cache,
|
|
50
|
+
media: attachments,
|
|
51
|
+
agentDir: params.agentDir,
|
|
52
|
+
providerRegistry,
|
|
53
|
+
config: audioConfig,
|
|
54
|
+
activeModel: params.activeModel
|
|
55
|
+
});
|
|
56
|
+
if (!result || result.outputs.length === 0) return;
|
|
57
|
+
const audioOutput = result.outputs.find((output) => output.kind === "audio.transcription");
|
|
58
|
+
if (!audioOutput || !audioOutput.text) return;
|
|
59
|
+
firstAudio.alreadyTranscribed = true;
|
|
60
|
+
if (shouldLogVerbose()) logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`);
|
|
61
|
+
return audioOutput.text;
|
|
62
|
+
} catch (err) {
|
|
63
|
+
if (shouldLogVerbose()) logVerbose(`audio-preflight: transcription failed: ${String(err)}`);
|
|
64
|
+
return;
|
|
65
|
+
} finally {
|
|
66
|
+
await cache.cleanup();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
export { transcribeFirstAudio };
|