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.
- package/CHANGELOG.md +106 -0
- package/dist/{accounts-DbzMEfKN.js → accounts-DCDeFTra.js} +2 -2
- package/dist/{accounts-C2elk6PC.js → accounts-DeqIQjo1.js} +2 -2
- package/dist/{acp-cli-CVFTdsQY.js → acp-cli-CeYI4XRd.js} +15 -16
- package/dist/{acp-cli-BpJwIyLl.js → acp-cli-rNbGXICg.js} +14 -15
- package/dist/{agent-Bz1r5O8q.js → agent-BvNJF5QL.js} +19 -15
- package/dist/{agent-22-R4bNS.js → agent-CyMxTyrG.js} +20 -16
- package/dist/{agent-scope-D8miw9q_.js → agent-scope-BIEhVP4_.js} +172 -4
- package/dist/{agent-scope-CGmuusG9.js → agent-scope-CQCus0rI.js} +3 -3
- package/dist/{agent-scope-DQuy3dwI.js → agent-scope-CsRbLH4l.js} +4 -4
- package/dist/{agent-scope-BEf5crnU.js → agent-scope-DPIFau3f.js} +5 -1
- package/dist/audio-preflight-BU8W7uxc.js +60 -0
- package/dist/audio-preflight-CGsumMzb.js +60 -0
- package/dist/audio-preflight-SLmkJI6-.js +74 -0
- package/dist/audio-preflight-jZc5mFCZ.js +71 -0
- package/dist/{audit-C4wLaF0D.js → audit-Dmww_503.js} +71 -19
- package/dist/{audit-CY-yopxa.js → audit-wPu26VMb.js} +72 -20
- package/dist/{tailscale-DU6DgqVy.js → auth-9x3lqfIY.js} +208 -3
- package/dist/{tailscale-Cu-2HNvU.js → auth-CQNl_IaI.js} +190 -3
- package/dist/{auth-health-BFKUoCwJ.js → auth-health-C4L4FGBA.js} +1 -1
- package/dist/{auth-health-d7BMZlWG.js → auth-health-j6epgQbq.js} +1 -1
- package/dist/{auth-profiles-Bv1AEm-Y.js → auth-profiles-ByNs3eEm.js} +87 -31
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +28 -22
- package/dist/bundled/session-memory/handler.js +33 -22
- package/dist/{call-7yrB6v4I.js → call-DVYCIV8m.js} +5 -5
- package/dist/{call-Bek1xlgk.js → call-SolyGS1r.js} +6 -6
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-3mdYN0C_.js → channel-options-BwC2yQcR.js} +4 -4
- package/dist/{channel-options-DJ0b1m7B.js → channel-options-Cq9BVDkP.js} +12 -7
- package/dist/{channel-selection-RZimme3j.js → channel-selection-D4D6ImhN.js} +2 -2
- package/dist/{channel-selection-B9b7Kuit.js → channel-selection-MZAHm4U8.js} +2 -2
- package/dist/{channels-cli-CYbK2Dku.js → channels-cli-9Dsk9Qm7.js} +57 -53
- package/dist/{channels-cli-BFznbGOs.js → channels-cli-BJUppQll.js} +59 -55
- package/dist/{channels-status-issues-B3KkflfR.js → channels-status-issues-D7GSV1GS.js} +1 -1
- package/dist/{channels-status-issues-DQkRaZts.js → channels-status-issues-DDAWeT-6.js} +1 -1
- package/dist/{chrome-Db7w64LF.js → chrome-BfB6JdKF.js} +4 -4
- package/dist/{chrome-Dm-EgOjJ.js → chrome-Cvr-57lg.js} +6 -5
- package/dist/{chrome-CF16STk9.js → chrome-DL0avO8n.js} +2 -1
- package/dist/{chrome-yIKmOzCO.js → chrome-foEwx3lN.js} +5 -4
- package/dist/{clack-prompter-BCiBkJVr.js → clack-prompter-Bz3Mmcl-.js} +5 -5
- package/dist/{clack-prompter-DuBVnTKy.js → clack-prompter-ChCGXfyt.js} +4 -4
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-Cl3PdJei.js → cli-ZR9ugUBX.js} +42 -38
- package/dist/cli-miPe4Ujz.js +93 -0
- package/dist/{client-6xKrRC-1.js → client-BrYfyoDK.js} +54 -5
- package/dist/{client-DMloFP_O.js → client-CTwXnRl7.js} +54 -5
- package/dist/{command-format-ayFsmwwz.js → command-format-Bxe0mWee.js} +1 -1
- package/dist/{command-options-BTAzyqqb.js → command-options-BvgxzPbK.js} +9 -4
- package/dist/{commands-CjEGXOZ_.js → commands-BX_OIIVR.js} +4 -4
- package/dist/{completion-cli-DrJGfJGl.js → completion-cli-CR77-jyv.js} +3 -3
- package/dist/{completion-cli-DOec3E2Z.js → completion-cli-DnjpxAag.js} +30 -30
- package/dist/{config-B00lvFac.js → config-Bdhomfei.js} +21 -7
- package/dist/{config-XBdA0ciN.js → config-BvMsmctM.js} +83 -9
- package/dist/{config-BqGVMf1y.js → config-QYrbd7x7.js} +60 -6
- package/dist/{config--NUdpACy.js → config-aFQssWKX.js} +21 -7
- package/dist/{config-guard-4kCO_rnQ.js → config-guard-CljaSxJd.js} +160 -51
- package/dist/{configure-B69emwZv.js → configure-BXLiucXo.js} +28 -25
- package/dist/{configure-sMhpLzFf.js → configure-BYPqXzGZ.js} +28 -25
- package/dist/control-auth-8Cf4WXpR.js +54 -0
- package/dist/control-auth-DBCu3qyv.js +54 -0
- package/dist/{control-service-Db_1V-KY.js → control-service-B5KnPqGP.js} +11 -5
- package/dist/{control-service-IRAmbcbN.js → control-service-DKnttEus.js} +10 -4
- 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-D7BRjDv2.js} +20 -20
- package/dist/{cron-cli-DhUWcYdk.js → cron-cli-z1zk_FXQ.js} +19 -19
- package/dist/{daemon-cli-q7nkEF5-.js → daemon-cli-BDkU2ocb.js} +60 -21
- package/dist/{daemon-cli-CTC2CHci.js → daemon-cli-cNSF93-v.js} +59 -20
- package/dist/{daemon-runtime-c0uXH4Dl.js → daemon-runtime-B0tg_LsX.js} +3 -3
- package/dist/{daemon-runtime-UsK-tOty.js → daemon-runtime-Bsjeut6m.js} +3 -3
- package/dist/{deliver-hf-WKyWd.js → deliver-CIU9Npgs.js} +373 -281
- package/dist/{deliver-CT6KiDqO.js → deliver-DYYCo1G7.js} +369 -278
- package/dist/{deliver-T9d44OpZ.js → deliver-LsxKETro.js} +371 -279
- package/dist/{deliver-CPy8jYj9.js → deliver-xUU3mGHo.js} +369 -277
- package/dist/{deps-Bv1kLtwo.js → deps-QSwGcoNZ.js} +2 -2
- package/dist/{deps-DFQdAWQc.js → deps-lAAA2zYI.js} +2 -2
- package/dist/{devices-cli-Cm7U1py9.js → devices-cli-BG3-2oqt.js} +14 -14
- package/dist/{devices-cli-ZpjlfK-e.js → devices-cli-VIQtOvt_.js} +14 -14
- package/dist/{directory-cli-B14TUSJA.js → directory-cli-BCJwjVC0.js} +16 -16
- package/dist/{directory-cli-67kzd4I5.js → directory-cli-jYzZ02gk.js} +14 -14
- package/dist/{dispatcher-3ElQWGVI.js → dispatcher-DY51b-Zc.js} +2 -2
- package/dist/{dns-cli-CU-xfhTN.js → dns-cli-DHIiMJjS.js} +12 -12
- package/dist/{dns-cli-Dqj7O6Q_.js → dns-cli-pZlv87Ib.js} +11 -11
- package/dist/{docs-cli-CamBqzb5.js → docs-cli-2JDiwfzP.js} +8 -8
- package/dist/{docs-cli-Cj3L5oqB.js → docs-cli-BhkYqoIQ.js} +7 -7
- package/dist/{doctor-BV1kvbMm.js → doctor-Bf8EhNtA.js} +36 -35
- package/dist/{doctor-BJirShBi.js → doctor-sYG5V4Co.js} +34 -33
- package/dist/entry.js +56 -18
- package/dist/{env-BxRc6wWv.js → env-ONzUVAG2.js} +1 -1
- package/dist/{exec-CijMSZd9.js → exec-B8lXct-k.js} +503 -14
- package/dist/{exec-B8JKbXKW.js → exec-CACT5OAW.js} +1 -1
- package/dist/{exec-57A8Rlc8.js → exec-CJFFoM7H.js} +32 -13
- package/dist/{exec-Cv_Ofd1m.js → exec-YIosokWE.js} +1 -1
- package/dist/{exec-approvals-cli-DEzz9Iai.js → exec-approvals-cli-7LH0lwhO.js} +21 -21
- package/dist/{exec-approvals-cli-DhXj3hQX.js → exec-approvals-cli-apGnQbpj.js} +21 -21
- package/dist/extensionAPI.js +7733 -8746
- package/dist/fetch-DmiOpALK.js +274 -0
- package/dist/fetch-timeout-BEtUjM1S.js +274 -0
- package/dist/fetch-timeout-DEoXG_SF.js +274 -0
- package/dist/fetch-timeout-DTK9vxex.js +274 -0
- package/dist/{gateway-cli-D1EdIq8I.js → gateway-cli-DUdYxlZS.js} +491 -136
- package/dist/{gateway-cli-B_xDUDy2.js → gateway-cli-DbvWmE-9.js} +495 -140
- package/dist/{gateway-rpc-3B5y445n.js → gateway-rpc-BByb2Snz.js} +3 -3
- package/dist/{gateway-rpc-BoL2vinh.js → gateway-rpc-wXSCUZXj.js} +3 -3
- package/dist/{github-copilot-auth-Omqrto0J.js → github-copilot-auth-D7ewvpMd.js} +205 -17
- package/dist/{github-copilot-auth-CZxurvdz.js → github-copilot-auth-DDispnyz.js} +205 -17
- package/dist/{github-copilot-token-SLWintYd.js → github-copilot-token-Cfs0Wxr8.js} +1 -1
- package/dist/{gmail-setup-utils-BXQKsLtI.js → gmail-setup-utils-Cfns8TQx.js} +3 -3
- package/dist/{gmail-setup-utils-CHcssBOA.js → gmail-setup-utils-DJb-_5kO.js} +4 -4
- package/dist/{health-format-Dy1caGsq.js → health-format-KGPokKJH.js} +97 -42
- package/dist/{health-format-DrGFg8bx.js → health-format-LZDxu3rv.js} +95 -40
- package/dist/{help-format-DAj7l5uV.js → help-format-C48TXngO.js} +1 -1
- package/dist/{help-format-CUnac_bT.js → help-format-R5fLToDw.js} +1 -1
- package/dist/{hooks-cli-ptEf6TIM.js → hooks-cli-CT8JCRkH.js} +51 -46
- package/dist/{hooks-cli-Bhf5VRp1.js → hooks-cli-S1MKumJO.js} +49 -44
- package/dist/{hooks-status-Br-2bK2G.js → hooks-status-Cw0xD8Lt.js} +3 -3
- package/dist/{hooks-status-DNQJSa4B.js → hooks-status-D9MhwHRp.js} +3 -3
- package/dist/{image-rOFfK3PJ.js → image-Brk1sJbw.js} +10 -7
- package/dist/{image-fUwR7slg.js → image-C4Nn2p3e.js} +10 -7
- package/dist/{image-Ds4NLGPR.js → image-DgtfXMcX.js} +9 -6
- package/dist/{image-Dnnxt82I.js → image-RKwc3fsL.js} +8 -5
- package/dist/index.js +208 -97
- package/dist/{installs-CRSjQxbR.js → installs-CrLcWYHe.js} +8 -7
- package/dist/{installs-89zeUsVn.js → installs-DscWb9b9.js} +8 -7
- package/dist/{links-7M-j83As.js → links-B8LAzWwg.js} +1 -1
- package/dist/{links-C591fM9M.js → links-Eax1UO3w.js} +1 -1
- package/dist/llm-slug-generator.js +18 -19
- package/dist/{loader-wXwp4rZJ.js → loader-KjT074JR.js} +5722 -6888
- package/dist/{logging-MMRGFxGI.js → logging-BAyPwvdH.js} +1 -1
- package/dist/{logging-DuK6YXuK.js → logging-CRq4h04P.js} +2 -2
- package/dist/{login-qr-wM8BnKJh.js → login-qr-B6ZgAuIf.js} +5 -5
- package/dist/{login-qr-CPEsT6dN.js → login-qr-Bua-p0nG.js} +3 -4
- package/dist/{login-qr-CGEu5TU-.js → login-qr-CuvemJj4.js} +6 -6
- package/dist/{login-qr-DH150tTp.js → login-qr-Djr1JfIf.js} +2 -2
- package/dist/{logs-cli-ClgkHnfT.js → logs-cli-9IAV7rWY.js} +38 -22
- package/dist/{logs-cli-CmfINsOj.js → logs-cli-EiKzUFPa.js} +37 -21
- package/dist/{manager-DYo4PlVM.js → manager-BIMh_eSm.js} +7 -8
- package/dist/{manager-D6EbxDV4.js → manager-CwinWQoz.js} +5 -5
- package/dist/{manager-BbnHek5T.js → manager-DkqF1GiK.js} +9 -9
- package/dist/{manager-CcVYv0N5.js → manager-T1XfGchB.js} +8 -8
- package/dist/{manifest-registry-3It8Z8yN.js → manifest-registry-CQhdnDBZ.js} +40 -2
- package/dist/{manifest-registry-D5SiA3xq.js → manifest-registry-u0okVSkU.js} +40 -2
- package/dist/{message-channel-Cu61-7H6.js → message-channel-BLi2a6Yw.js} +1 -1
- package/dist/{message-channel-BlgPSDAh.js → message-channel-C_MmebBt.js} +1 -1
- package/dist/{model-auth-ioeR_zLX.js → model-auth-CabXIF6O.js} +116 -34
- package/dist/{model-selection-BK7DuyH8.js → model-selection-BLuqsGVB.js} +86 -30
- package/dist/{model-selection-CezC36lH.js → model-selection-C1GmkTAV.js} +84 -28
- package/dist/{models-cli-C3uGdOrd.js → models-cli-9jmDv-h3.js} +52 -48
- package/dist/{models-cli-CUIVPgXE.js → models-cli-zS9rtWz8.js} +53 -49
- package/dist/{node-cli-BxBGSuPE.js → node-cli-CrpTxTTs.js} +28 -26
- package/dist/{node-cli-CdYAsuQQ.js → node-cli-wemUMCg-.js} +28 -26
- package/dist/{node-service-u8g85nD3.js → node-service-C8DTHTMg.js} +2 -2
- package/dist/{node-service-CM5vkdIo.js → node-service-WQuEKz6W.js} +2 -2
- package/dist/{nodes-cli-By6yeCTB.js → nodes-cli-BaU2SIFw.js} +20 -20
- package/dist/{nodes-cli-BaVMTAPc.js → nodes-cli-Dx23D72n.js} +20 -20
- package/dist/{nodes-screen-Dvl_ohUY.js → nodes-screen-C0IuBqUL.js} +1 -1
- package/dist/{note-5WqioBRA.js → note-BhRSeNeu.js} +2 -2
- package/dist/{note-Ci08TSbV.js → note-hhtubr2j.js} +1 -1
- package/dist/{onboard-channels-DxXvp8og.js → onboard-channels-C501x8GI.js} +8 -8
- package/dist/{onboard-channels-CXhnVy4E.js → onboard-channels-Dxzroasd.js} +8 -8
- package/dist/{onboard-skills-CBxsRGyf.js → onboard-skills-DV0Qzvjj.js} +440 -136
- package/dist/{onboard-skills-DQwOQ6Ry.js → onboard-skills-rlBHcu3Q.js} +439 -135
- package/dist/{onboarding-Du_7qEng.js → onboarding-CN-EDLjd.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-CRQDpj8f.js → pairing-cli-CDHG4xuI.js} +15 -15
- package/dist/{pairing-cli-Cng1KFWw.js → pairing-cli-CQP34Dlx.js} +15 -15
- package/dist/{pairing-labels-Ciu3Zoxj.js → pairing-labels-B6CN0SNH.js} +1 -1
- package/dist/{pairing-labels-CWFEtSc3.js → pairing-labels-CgNHnjzT.js} +1 -1
- package/dist/{pairing-store-c-QQ2u8p.js → pairing-store-CmlRVqOz.js} +2 -2
- package/dist/{pairing-store-CgXR3ZWJ.js → pairing-store-Dp5_JGnG.js} +3 -3
- package/dist/{path-env-CXWUFfFv.js → path-env-CLvYNwtL.js} +1 -1
- package/dist/{path-env-BgLvMbz_.js → path-env-CaYUVIML.js} +2 -2
- package/dist/{paths-MnZaxqPw.js → paths-B0a4ywSO.js} +30 -5
- package/dist/{paths-Bkhd_qY8.js → paths-B49s6UZQ.js} +30 -5
- package/dist/{paths-DL6EIRTw.js → paths-D0O87MfH.js} +30 -5
- package/dist/{paths-IivnSNkP.js → paths-DLINmNFQ.js} +31 -6
- package/dist/{pi-embedded-CgPTEqlB.js → pi-embedded-Ctrt2kz0.js} +8759 -9600
- package/dist/{pi-embedded-helpers-DYH6OWft.js → pi-embedded-helpers-CMKLjW6X.js} +68 -9
- package/dist/{pi-embedded-helpers-y1_Se0yq.js → pi-embedded-helpers-CUzTc1v6.js} +241 -24
- package/dist/{pi-embedded-helpers-Bkpd4fTr.js → pi-embedded-helpers-DfwkwPYD.js} +67 -8
- package/dist/{pi-embedded-helpers-BbWRSUnc.js → pi-embedded-helpers-WDwx99UA.js} +347 -32
- package/dist/{pi-tools.policy-akYsGFiA.js → pi-tools.policy-BpsROZbz.js} +4 -4
- package/dist/{plugin-auto-enable-lZwe2yX5.js → plugin-auto-enable-Bqhc3w5n.js} +5 -5
- package/dist/{plugin-auto-enable-AOSOJ-v1.js → plugin-auto-enable-PW76g_PJ.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/params.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/payloads.d.ts +1 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/run/types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/types.d.ts +15 -0
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.tools.d.ts +1 -1
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.handlers.types.d.ts +2 -0
- package/dist/plugin-sdk/agents/pi-embedded-subscribe.types.d.ts +2 -0
- package/dist/plugin-sdk/agents/session-tool-result-guard-wrapper.d.ts +2 -0
- package/dist/plugin-sdk/agents/session-tool-result-guard.d.ts +4 -0
- package/dist/plugin-sdk/agents/tools/agent-step.d.ts +3 -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/agents/usage.d.ts +1 -0
- 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/reply/reply-reference.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +11 -0
- package/dist/plugin-sdk/auto-reply/reply/session-usage.d.ts +8 -0
- package/dist/plugin-sdk/auto-reply/types.d.ts +2 -0
- package/dist/plugin-sdk/browser/control-auth.d.ts +13 -0
- package/dist/plugin-sdk/channels/plugins/onboarding/signal.d.ts +1 -0
- package/dist/plugin-sdk/cli/prompt.d.ts +1 -0
- package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
- package/dist/plugin-sdk/commands/onboard-types.d.ts +7 -1
- package/dist/plugin-sdk/config/sessions/paths.d.ts +7 -2
- package/dist/plugin-sdk/config/types.agents.d.ts +2 -0
- package/dist/plugin-sdk/config/types.discord.d.ts +5 -0
- package/dist/plugin-sdk/config/types.gateway.d.ts +15 -0
- package/dist/plugin-sdk/config/types.hooks.d.ts +15 -0
- package/dist/plugin-sdk/config/types.memory.d.ts +2 -0
- package/dist/plugin-sdk/config/zod-schema.agents.d.ts +1 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +13 -1
- package/dist/plugin-sdk/config/zod-schema.hooks.d.ts +1 -1
- package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +9 -0
- package/dist/plugin-sdk/config/zod-schema.providers.d.ts +4 -0
- 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/monitor/allow-list.d.ts +15 -0
- package/dist/plugin-sdk/discord/send.types.d.ts +5 -0
- package/dist/plugin-sdk/gateway/auth.d.ts +36 -0
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +0 -3
- package/dist/plugin-sdk/gateway/protocol/schema/agent.d.ts +7 -1
- package/dist/plugin-sdk/gateway/session-utils.fs.d.ts +3 -1
- package/dist/plugin-sdk/index.js +935 -660
- package/dist/plugin-sdk/infra/binaries.d.ts +3 -0
- package/dist/plugin-sdk/infra/heartbeat-active-hours.d.ts +5 -0
- package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +1 -0
- package/dist/plugin-sdk/infra/net/fetch-guard.d.ts +1 -0
- package/dist/plugin-sdk/infra/net/ssrf.d.ts +1 -0
- package/dist/plugin-sdk/infra/tailscale.d.ts +34 -0
- package/dist/plugin-sdk/infra/tmp-openclaw-dir.d.ts +10 -0
- package/dist/plugin-sdk/logging/console.d.ts +1 -0
- package/dist/plugin-sdk/logging/logger.d.ts +1 -1
- 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/input-files.d.ts +5 -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/routing/resolve-route.d.ts +3 -1
- package/dist/plugin-sdk/security/external-content.d.ts +1 -1
- package/dist/plugin-sdk/security/secret-equal.d.ts +1 -0
- package/dist/plugin-sdk/sessions/input-provenance.d.ts +16 -0
- package/dist/plugin-sdk/signal/monitor/event-handler.types.d.ts +8 -0
- package/dist/plugin-sdk/signal/monitor/mentions.d.ts +2 -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-4Hqd1WGf.js} +3 -3
- package/dist/{plugins-CNaHNND_.js → plugins-X7d_tfTE.js} +4 -4
- package/dist/{plugins-cli-8G-hQPCu.js → plugins-cli-Bgku3EGj.js} +253 -44
- package/dist/{plugins-cli-CDiocaDE.js → plugins-cli-CVToH3if.js} +257 -48
- package/dist/{ports-BeebfNCb.js → ports-qkt29rdC.js} +2 -2
- package/dist/{program-0Cj9YxRN.js → program-Cf7lkBur.js} +82 -80
- package/dist/{progress-DIQJt9Va.js → progress-C9kngsTD.js} +1 -1
- package/dist/{progress-Da1ehW-x.js → progress-DWqhRakV.js} +1 -1
- package/dist/{prompt-style-Dc0C5HC9.js → prompt-style-BFH5D5LN.js} +1 -1
- package/dist/{prompt-style-CjQRlDx4.js → prompt-style-CIbmaxSa.js} +1 -1
- package/dist/{pw-ai-C43wv1ZF.js → pw-ai-8mdv3h-d.js} +7 -6
- package/dist/{pw-ai-COWYvUfG.js → pw-ai-CM1IsSgZ.js} +6 -6
- package/dist/{pw-ai-BxJ-KCIy.js → pw-ai-FGoRVblI.js} +5 -6
- package/dist/{pw-ai-CsvaObGM.js → pw-ai-sS1fRKW_.js} +3 -3
- package/dist/{qmd-manager-CpsjQyaZ.js → qmd-manager-C67Fc8aN.js} +79 -26
- package/dist/{qmd-manager-C9YWFeG6.js → qmd-manager-CXVbfg99.js} +81 -26
- package/dist/{qmd-manager-C02E8ixK.js → qmd-manager-RMRE8Tqt.js} +81 -26
- package/dist/{qmd-manager-BzY2LQTT.js → qmd-manager-pyc_MTIe.js} +78 -23
- package/dist/{register.subclis-DUkirdHn.js → register.subclis-C02e4zuJ.js} +29 -29
- package/dist/{reply--b7BsXGP.js → reply-DICXkh_C.js} +7289 -8455
- package/dist/{routes-DUkEKAc1.js → routes-CmOI1hIH.js} +29 -11
- package/dist/{routes-B4QQiFju.js → routes-DewK5tq2.js} +29 -12
- package/dist/{rpc-CuMtxrRT.js → rpc-DHr30euf.js} +3 -3
- package/dist/{rpc-Blt6MJ4F.js → rpc-T300F8zI.js} +3 -3
- package/dist/{run-main-XZcPA23b.js → run-main-C5wpthq1.js} +84 -82
- package/dist/runner-CY0nmVme.js +1886 -0
- package/dist/runner-Cfm5nTMc.js +1785 -0
- package/dist/runner-D_dujMod.js +1886 -0
- package/dist/runner-DrGYLH5K.js +1785 -0
- package/dist/{sandbox-Aks-9EcZ.js → sandbox-BKYnhYQH.js} +24 -17
- package/dist/{sandbox-DqUO2K83.js → sandbox-Bhjnh1Xg.js} +23 -16
- package/dist/{sandbox-cli-C99Thxi8.js → sandbox-cli-DBsAjZJN.js} +21 -21
- package/dist/{sandbox-cli-CJqRM4V6.js → sandbox-cli-rV9LtFeu.js} +21 -21
- package/dist/{security-cli-iqYLMOz3.js → security-cli-BIwJM_rs.js} +27 -27
- package/dist/{security-cli-DW3lCz-o.js → security-cli-BRjny8Yu.js} +27 -27
- package/dist/{server-context-fX4xiYRh.js → server-context-BGpGs3qd.js} +7 -7
- package/dist/{server-context-8Qt35QdF.js → server-context-Cl0U0vE3.js} +7 -7
- package/dist/{server-node-events-CHWXfb_T.js → server-node-events-CBfTbiTA.js} +48 -44
- package/dist/{server-node-events-BzrEnKLX.js → server-node-events-QCvh8EgI.js} +45 -41
- package/dist/{service-Cd4BxKuo.js → service--nPk7DvT.js} +8 -4
- package/dist/{service-DDPRbf8a.js → service-99RDXwX4.js} +8 -4
- package/dist/{service-audit-CCFxuvKs.js → service-audit-DnLmRGQt.js} +4 -4
- package/dist/{service-audit-x6jCN-6a.js → service-audit-ckBaRCVC.js} +4 -4
- package/dist/{session-cost-usage-CcCEQNuc.js → session-cost-usage-D7HuoSSD.js} +12 -10
- package/dist/{session-cost-usage-PvyVZz-g.js → session-cost-usage-D9hHANWI.js} +12 -10
- package/dist/{shared-ILguacOr.js → shared-Bs4vduG4.js} +3 -3
- package/dist/{shared-CagUDdmp.js → shared-CEY5IkwG.js} +3 -3
- package/dist/{shared-gOyV38rM.js → shared-DRohONn_.js} +4 -4
- package/dist/{shared-BDk_zC9p.js → shared-ICqOZibV.js} +4 -4
- package/dist/{skill-scanner-C_fQzVDu.js → skill-scanner-CucvxYhu.js} +1 -1
- package/dist/{skill-scanner-DrVEHfC6.js → skill-scanner-rHMtUHtP.js} +1 -1
- package/dist/{skills-D5UZZZSY.js → skills-DRjfSQT3.js} +141 -6
- package/dist/{skills-ccAgQ3Ad.js → skills-DprQj9X2.js} +142 -7
- package/dist/{skills-cli-DQilTG3n.js → skills-cli-9WO-C55s.js} +12 -12
- package/dist/{skills-cli-ggyLBtAY.js → skills-cli-B9eej-EW.js} +13 -13
- package/dist/{skills-status-BosMnzIs.js → skills-status-5U3P3YfJ.js} +3 -3
- package/dist/{skills-status-DjtPPMnY.js → skills-status-TDIgVd1K.js} +2 -2
- package/dist/{sqlite-B7FPASCO.js → sqlite-BINzs1U0.js} +2 -2
- package/dist/{sqlite-Btrgi7-j.js → sqlite-D4w5TejA.js} +3 -3
- package/dist/{sqlite-BrQ9tw8B.js → sqlite-DRRHmlug.js} +3 -3
- package/dist/{sqlite-HepBVDoX.js → sqlite-F6PGkEm1.js} +2 -2
- package/dist/{status-BByCntWS.js → status-BKGkKC_v.js} +3 -3
- package/dist/{status-Dt7RE_Yy.js → status-CiHtHdaa.js} +4 -4
- package/dist/{status-zfL4Yej7.js → status-DDWoOpeB.js} +37 -37
- package/dist/{subsystem-Bh1Y_6Uv.js → subsystem-BoExtIHo.js} +52 -17
- package/dist/{system-cli-DwuUkdkH.js → system-cli-B6lr60Io.js} +14 -14
- package/dist/{system-cli-Clqsx8U5.js → system-cli-CprW9G3h.js} +14 -14
- package/dist/{systemd-BEWwfwn0.js → systemd-C0VZriGM.js} +3 -3
- package/dist/{systemd-D6wTPnHi.js → systemd-DrmBtJ5T.js} +3 -3
- package/dist/{systemd-hints-zi4ohCOY.js → systemd-hints-DZtXiVHa.js} +1 -1
- package/dist/{systemd-linger-CDo2UbHM.js → systemd-linger-NC2kl1SC.js} +2 -2
- package/dist/{systemd-linger-BxjTrgoH.js → systemd-linger-xdn3BdPh.js} +2 -2
- package/dist/{table-DEnmtvl5.js → table-B8dx3v4v.js} +2 -2
- package/dist/{table-cCoGqLsk.js → table-CwulTLQp.js} +1 -1
- package/dist/{tool-display-DskiU8Kt.js → tool-display-CZRIDMRm.js} +2 -2
- package/dist/{tool-display-o-dDAlqF.js → tool-display-ClRud3pg.js} +2 -2
- package/dist/{tui-BdJWZdto.js → tui-CVTQn-dC.js} +14 -13
- package/dist/{tui-Bc7XUQGP.js → tui-Lu8FdrlK.js} +13 -14
- package/dist/{tui-cli-BGYh0UL0.js → tui-cli-BLpTj1X9.js} +27 -27
- package/dist/{tui-cli-D3n-O9zB.js → tui-cli-BLx5kL2I.js} +26 -26
- package/dist/{tui-formatters-CA85v4U2.js → tui-formatters-CNySEfJN.js} +6 -6
- package/dist/{tui-formatters-C3NarH24.js → tui-formatters-DePhZK3J.js} +6 -6
- package/dist/{update-JB16aPIY.js → update-DHVxMTpQ.js} +3 -3
- package/dist/{update-Ct9sqJC_.js → update-DU1geolI.js} +3 -3
- package/dist/{update-cli-wWKDS3cm.js → update-cli-C0hUvJWK.js} +89 -71
- package/dist/{update-cli-DDXp_N9B.js → update-cli-Wb1GB3rL.js} +88 -70
- package/dist/{update-runner-ChTf6O6p.js → update-runner--ixK4J3W.js} +11 -11
- package/dist/{update-runner-CmE6cHdn.js → update-runner-7Qa1T9y6.js} +10 -10
- package/dist/{utils-Dk86IbEs.js → utils-BLJAc3ZV.js} +1 -1
- package/dist/{utils-es4ygvQ-.js → utils-Cd9QdCHh.js} +1 -1
- package/dist/{webhooks-cli-CVIE9TtX.js → webhooks-cli-DgcMy7RG.js} +12 -12
- package/dist/{webhooks-cli-BmKSiQQC.js → webhooks-cli-aVzUcJY9.js} +11 -11
- package/dist/{widearea-dns-2ah0bkAj.js → widearea-dns-BaIgNEhY.js} +3 -3
- package/dist/{widearea-dns-CMIG6-74.js → widearea-dns-DzuRdwk5.js} +3 -3
- package/dist/{ws-DtDKpbLR.js → ws-CHCQHs0F.js} +1 -1
- package/dist/{ws-log-BP3z_g6Z.js → ws-log-CIXbLCka.js} +1 -1
- package/dist/{ws-log-D7MkvKhg.js → ws-log-DcQFZByi.js} +2 -2
- package/dist/{wsl-Cwo7X0Un.js → wsl-BUOkxKJu.js} +2 -2
- package/docs/assets/install-script.svg +1 -0
- package/docs/automation/hooks.md +1 -38
- package/docs/automation/webhook.md +43 -2
- package/docs/channels/discord.md +389 -381
- 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/cli/plugins.md +20 -1
- package/docs/cli/security.md +1 -0
- package/docs/concepts/memory.md +7 -4
- package/docs/concepts/session-tool.md +1 -0
- package/docs/docs.json +11 -11
- package/docs/gateway/configuration-examples.md +9 -2
- package/docs/gateway/configuration-reference.md +2329 -0
- package/docs/gateway/configuration.md +338 -3304
- package/docs/gateway/index.md +162 -238
- package/docs/gateway/openresponses-http-api.md +15 -0
- package/docs/gateway/security/index.md +3 -0
- package/docs/help/faq.md +9 -0
- package/docs/install/hetzner.md +21 -0
- package/docs/install/installer.md +20 -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/reference/transcript-hygiene.md +18 -0
- 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/tools/browser.md +6 -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 +10 -10
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +2 -5
- 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/config-schema.ts +6 -0
- 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/feishu/src/reply-dispatcher.test.ts +116 -0
- package/extensions/feishu/src/reply-dispatcher.ts +124 -67
- package/extensions/feishu/src/streaming-card.ts +223 -0
- package/extensions/feishu/src/targets.test.ts +16 -0
- package/extensions/feishu/src/targets.ts +1 -1
- 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/irc/src/client.ts +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/index.ts +7 -5
- 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 +2 -2
- 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 +26 -22
- package/dist/auth-BcNHFK-i.js +0 -184
- package/dist/auth-BvIPpm7G.js +0 -184
- 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-beaSfAzA.js} +0 -0
- /package/dist/{brew-BIrWdDps.js → brew-BUIxHEkn.js} +0 -0
- /package/dist/{brew-B7YK4ZoL.js → brew-ROHf0-Xp.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-BvQ6S8j5.js} +0 -0
- /package/dist/{constants-DuoCkWRh.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/{errors-x4NYs-1P.js → errors-DjZBTJJ3.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/{helpers-CQI-5xS9.js → helpers-8O7IVGO-.js} +0 -0
- /package/dist/{helpers-CRzoyyXS.js → helpers-D_jqdWkd.js} +0 -0
- /package/dist/{helpers-C89IG08W.js → helpers-HyeZXsnu.js} +0 -0
- /package/dist/{is-main-WWuz28Ip.js → is-main-BWoXGz7p.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/{parse-Cjiudy6x.js → parse-Bw0oH-rT.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-DFSPLxpY.js → parse-timeout-D1XX_zN_.js} +0 -0
- /package/dist/{parse-timeout-DV8NQQWk.js → parse-timeout-DMW-z4Iz.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/{prompts--d-6l5Ln.js → prompts-Bg96reub.js} +0 -0
- /package/dist/{redact-DAKeu7PA.js → redact-BRsnXqwD.js} +0 -0
- /package/dist/{redact-DuEEf1p1.js → redact-Br9GfacZ.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/{tailnet-DGRSvYuQ.js → tailnet-DATIFSsY.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/{transcript-events-CZ8CG4ht.js → transcript-events-BtNd-j6q.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
|
@@ -1,34 +1,26 @@
|
|
|
1
|
-
import { D as info, I as colorize, L as isRich, R as theme, c as defaultRuntime, t as createSubsystemLogger } from "./subsystem-
|
|
2
|
-
import { A as resolveHeartbeatDeliveryTarget,
|
|
1
|
+
import { D as info, I as colorize, L as isRich, R as theme, c as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BoExtIHo.js";
|
|
2
|
+
import { A as resolveHeartbeatDeliveryTarget, Gn as resolveUserTimezone, Wn as resolveEffectiveMessagesConfig, _n as appendCronStyleCurrentTimeLine, _r as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, br as resolveHeartbeatPrompt$1, ct as setHeartbeatWakeHandler, fn as resolveHeartbeatVisibility, gn as resolveIndicatorType, j as resolveHeartbeatSenderContext, kr as peekSystemEvents, pn as emitHeartbeatEvent, pr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as getQueueSize, vr as DEFAULT_HEARTBEAT_EVERY, xr as stripHeartbeatToken, yr as isHeartbeatContentEffectivelyEmpty } from "./reply-DICXkh_C.js";
|
|
3
3
|
import { d as resolveAgentIdFromSessionKey, h as toAgentStoreSessionKey, l as normalizeAgentId } from "./session-key-BWxPj0z_.js";
|
|
4
|
-
import { t as runCommandWithTimeout } from "./exec-
|
|
5
|
-
import { n as resolveOpenClawPackageRootSync, t as resolveOpenClawPackageRoot } from "./openclaw-root-
|
|
6
|
-
import { c as resolveDefaultAgentId, m as DEFAULT_HEARTBEAT_FILENAME, n as resolveAgentConfig, s as resolveAgentWorkspaceDir } from "./agent-scope-
|
|
7
|
-
import { t as isTruthyEnvValue } from "./env-
|
|
8
|
-
import { g as parseDurationMs, i as loadConfig } from "./config
|
|
9
|
-
import { f as resolvePreferredAccountId, n as listChannelPlugins, t as getChannelPlugin, u as buildChannelAccountBindings } from "./plugins-
|
|
10
|
-
import { F as resolveAgentMainSessionKey, P as canonicalizeMainSessionAlias, d as loadSessionStore, g as updateSessionStore, m as saveSessionStore } from "./sandbox-
|
|
11
|
-
import { n as formatErrorMessage } from "./errors-
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
15
|
-
import { n as withProgress } from "./progress-
|
|
16
|
-
import { t as resolveChannelDefaultAccountId } from "./helpers-
|
|
4
|
+
import { t as runCommandWithTimeout } from "./exec-YIosokWE.js";
|
|
5
|
+
import { n as resolveOpenClawPackageRootSync, t as resolveOpenClawPackageRoot } from "./openclaw-root-1VeFrph_.js";
|
|
6
|
+
import { c as resolveDefaultAgentId, m as DEFAULT_HEARTBEAT_FILENAME, n as resolveAgentConfig, s as resolveAgentWorkspaceDir } from "./agent-scope-CQCus0rI.js";
|
|
7
|
+
import { t as isTruthyEnvValue } from "./env-ONzUVAG2.js";
|
|
8
|
+
import { g as parseDurationMs, i as loadConfig } from "./config-aFQssWKX.js";
|
|
9
|
+
import { f as resolvePreferredAccountId, n as listChannelPlugins, t as getChannelPlugin, u as buildChannelAccountBindings } from "./plugins-X7d_tfTE.js";
|
|
10
|
+
import { F as resolveAgentMainSessionKey, P as canonicalizeMainSessionAlias, d as loadSessionStore, g as updateSessionStore, m as saveSessionStore } from "./sandbox-Bhjnh1Xg.js";
|
|
11
|
+
import { n as formatErrorMessage } from "./errors-Bv81hF2P.js";
|
|
12
|
+
import { s as resolveStorePath } from "./paths-B49s6UZQ.js";
|
|
13
|
+
import { q as HEARTBEAT_TOKEN, t as deliverOutboundPayloads } from "./deliver-LsxKETro.js";
|
|
14
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-SolyGS1r.js";
|
|
15
|
+
import { n as withProgress } from "./progress-C9kngsTD.js";
|
|
16
|
+
import { t as resolveChannelDefaultAccountId } from "./helpers-HyeZXsnu.js";
|
|
17
17
|
import { fileURLToPath } from "node:url";
|
|
18
18
|
import fs from "node:fs";
|
|
19
19
|
import path from "node:path";
|
|
20
20
|
import fs$1 from "node:fs/promises";
|
|
21
21
|
|
|
22
|
-
//#region src/infra/heartbeat-
|
|
23
|
-
const log = createSubsystemLogger("gateway/heartbeat");
|
|
24
|
-
let heartbeatsEnabled = true;
|
|
25
|
-
function setHeartbeatsEnabled(enabled) {
|
|
26
|
-
heartbeatsEnabled = enabled;
|
|
27
|
-
}
|
|
28
|
-
const DEFAULT_HEARTBEAT_TARGET = "last";
|
|
22
|
+
//#region src/infra/heartbeat-active-hours.ts
|
|
29
23
|
const ACTIVE_HOURS_TIME_PATTERN = /^([01]\d|2[0-3]|24):([0-5]\d)$/;
|
|
30
|
-
const EXEC_EVENT_PROMPT = "An async command you ran earlier has completed. The result is shown in the system messages above. Please relay the command output to the user in a helpful way. If the command succeeded, share the relevant output. If it failed, explain what went wrong.";
|
|
31
|
-
const CRON_EVENT_PROMPT = "A scheduled reminder has been triggered. The reminder message is shown in the system messages above. Please relay this reminder to the user in a helpful and friendly way.";
|
|
32
24
|
function resolveActiveHoursTimezone(cfg, raw) {
|
|
33
25
|
const trimmed = raw?.trim();
|
|
34
26
|
if (!trimmed || trimmed === "user") return resolveUserTimezone(cfg.agents?.defaults?.userTimezone);
|
|
@@ -83,6 +75,43 @@ function isWithinActiveHours(cfg, heartbeat, nowMs) {
|
|
|
83
75
|
if (endMin > startMin) return currentMin >= startMin && currentMin < endMin;
|
|
84
76
|
return currentMin >= startMin || currentMin < endMin;
|
|
85
77
|
}
|
|
78
|
+
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/infra/heartbeat-runner.ts
|
|
81
|
+
const log = createSubsystemLogger("gateway/heartbeat");
|
|
82
|
+
let heartbeatsEnabled = true;
|
|
83
|
+
function setHeartbeatsEnabled(enabled) {
|
|
84
|
+
heartbeatsEnabled = enabled;
|
|
85
|
+
}
|
|
86
|
+
const DEFAULT_HEARTBEAT_TARGET = "last";
|
|
87
|
+
const EXEC_EVENT_PROMPT = "An async command you ran earlier has completed. The result is shown in the system messages above. Please relay the command output to the user in a helpful way. If the command succeeded, share the relevant output. If it failed, explain what went wrong.";
|
|
88
|
+
function buildCronEventPrompt(pendingEvents) {
|
|
89
|
+
const eventText = pendingEvents.join("\n").trim();
|
|
90
|
+
if (!eventText) return "A scheduled cron event was triggered, but no event content was found. Reply HEARTBEAT_OK.";
|
|
91
|
+
return "A scheduled reminder has been triggered. The reminder content is:\n\n" + eventText + "\n\nPlease relay this reminder to the user in a helpful and friendly way.";
|
|
92
|
+
}
|
|
93
|
+
const HEARTBEAT_OK_PREFIX = HEARTBEAT_TOKEN.toLowerCase();
|
|
94
|
+
function isHeartbeatAckEvent(evt) {
|
|
95
|
+
const trimmed = evt.trim();
|
|
96
|
+
if (!trimmed) return false;
|
|
97
|
+
const lower = trimmed.toLowerCase();
|
|
98
|
+
if (!lower.startsWith(HEARTBEAT_OK_PREFIX)) return false;
|
|
99
|
+
const suffix = lower.slice(HEARTBEAT_OK_PREFIX.length);
|
|
100
|
+
if (suffix.length === 0) return true;
|
|
101
|
+
return !/[a-z0-9_]/.test(suffix[0]);
|
|
102
|
+
}
|
|
103
|
+
function isHeartbeatNoiseEvent(evt) {
|
|
104
|
+
const lower = evt.trim().toLowerCase();
|
|
105
|
+
if (!lower) return false;
|
|
106
|
+
return isHeartbeatAckEvent(lower) || lower.includes("heartbeat poll") || lower.includes("heartbeat wake");
|
|
107
|
+
}
|
|
108
|
+
function isExecCompletionEvent(evt) {
|
|
109
|
+
return evt.toLowerCase().includes("exec finished");
|
|
110
|
+
}
|
|
111
|
+
function isCronSystemEvent(evt) {
|
|
112
|
+
if (!evt.trim()) return false;
|
|
113
|
+
return !isHeartbeatNoiseEvent(evt) && !isExecCompletionEvent(evt);
|
|
114
|
+
}
|
|
86
115
|
function hasExplicitHeartbeatAgents(cfg) {
|
|
87
116
|
return (cfg.agents?.list ?? []).some((entry) => Boolean(entry?.heartbeat));
|
|
88
117
|
}
|
|
@@ -350,10 +379,11 @@ async function runHeartbeatOnce(opts) {
|
|
|
350
379
|
const isExecEvent = opts.reason === "exec-event";
|
|
351
380
|
const isCronEvent = Boolean(opts.reason?.startsWith("cron:"));
|
|
352
381
|
const pendingEvents = isExecEvent || isCronEvent ? peekSystemEvents(sessionKey) : [];
|
|
353
|
-
const
|
|
354
|
-
const
|
|
382
|
+
const cronEvents = pendingEvents.filter((evt) => isCronSystemEvent(evt));
|
|
383
|
+
const hasExecCompletion = pendingEvents.some(isExecCompletionEvent);
|
|
384
|
+
const hasCronEvents = isCronEvent && cronEvents.length > 0;
|
|
355
385
|
const ctx = {
|
|
356
|
-
Body: appendCronStyleCurrentTimeLine(hasExecCompletion ? EXEC_EVENT_PROMPT : hasCronEvents ?
|
|
386
|
+
Body: appendCronStyleCurrentTimeLine(hasExecCompletion ? EXEC_EVENT_PROMPT : hasCronEvents ? buildCronEventPrompt(cronEvents) : resolveHeartbeatPrompt(cfg, heartbeat), cfg, startedAt),
|
|
357
387
|
From: sender,
|
|
358
388
|
To: sender,
|
|
359
389
|
Provider: hasExecCompletion ? "exec-event" : hasCronEvents ? "cron-event" : "heartbeat",
|
|
@@ -395,7 +425,11 @@ async function runHeartbeatOnce(opts) {
|
|
|
395
425
|
return true;
|
|
396
426
|
};
|
|
397
427
|
try {
|
|
398
|
-
const
|
|
428
|
+
const heartbeatModelOverride = heartbeat?.model?.trim() || void 0;
|
|
429
|
+
const replyResult = await getReplyFromConfig(ctx, heartbeatModelOverride ? {
|
|
430
|
+
isHeartbeat: true,
|
|
431
|
+
heartbeatModelOverride
|
|
432
|
+
} : { isHeartbeat: true }, cfg);
|
|
399
433
|
const replyPayload = resolveHeartbeatReplyPayload(replyResult);
|
|
400
434
|
const reasoningPayloads = heartbeat?.includeReasoning === true ? resolveHeartbeatReasoningPayloads(replyResult).filter((payload) => payload !== replyPayload) : [];
|
|
401
435
|
if (!replyPayload || !replyPayload.text && !replyPayload.mediaUrl && !replyPayload.mediaUrls?.length) {
|
|
@@ -604,6 +638,10 @@ function startHeartbeatRunner(opts) {
|
|
|
604
638
|
if (prevState && prevState.intervalMs === intervalMs && prevState.nextDueMs > now) return prevState.nextDueMs;
|
|
605
639
|
return now + intervalMs;
|
|
606
640
|
};
|
|
641
|
+
const advanceAgentSchedule = (agent, now) => {
|
|
642
|
+
agent.lastRunMs = now;
|
|
643
|
+
agent.nextDueMs = now + agent.intervalMs;
|
|
644
|
+
};
|
|
607
645
|
const scheduleNext = () => {
|
|
608
646
|
if (state.stopped) return;
|
|
609
647
|
if (state.timer) {
|
|
@@ -672,18 +710,27 @@ function startHeartbeatRunner(opts) {
|
|
|
672
710
|
let ran = false;
|
|
673
711
|
for (const agent of state.agents.values()) {
|
|
674
712
|
if (isInterval && now < agent.nextDueMs) continue;
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
713
|
+
let res;
|
|
714
|
+
try {
|
|
715
|
+
res = await runOnce({
|
|
716
|
+
cfg: state.cfg,
|
|
717
|
+
agentId: agent.agentId,
|
|
718
|
+
heartbeat: agent.heartbeat,
|
|
719
|
+
reason,
|
|
720
|
+
deps: { runtime: state.runtime }
|
|
721
|
+
});
|
|
722
|
+
} catch (err) {
|
|
723
|
+
const errMsg = formatErrorMessage(err);
|
|
724
|
+
log.error(`heartbeat runner: runOnce threw unexpectedly: ${errMsg}`, { error: errMsg });
|
|
725
|
+
advanceAgentSchedule(agent, now);
|
|
726
|
+
continue;
|
|
727
|
+
}
|
|
728
|
+
if (res.status === "skipped" && res.reason === "requests-in-flight") {
|
|
729
|
+
advanceAgentSchedule(agent, now);
|
|
730
|
+
scheduleNext();
|
|
731
|
+
return res;
|
|
686
732
|
}
|
|
733
|
+
if (res.status !== "skipped" || res.reason !== "disabled") advanceAgentSchedule(agent, now);
|
|
687
734
|
if (res.status === "ran") ran = true;
|
|
688
735
|
}
|
|
689
736
|
scheduleNext();
|
|
@@ -1204,7 +1251,10 @@ function resolveControlUiDistIndexPathForRoot(root) {
|
|
|
1204
1251
|
return path.join(root, ...CONTROL_UI_DIST_PATH_SEGMENTS);
|
|
1205
1252
|
}
|
|
1206
1253
|
async function resolveControlUiDistIndexHealth(opts = {}) {
|
|
1207
|
-
const indexPath = opts.root ? resolveControlUiDistIndexPathForRoot(opts.root) : await resolveControlUiDistIndexPath(
|
|
1254
|
+
const indexPath = opts.root ? resolveControlUiDistIndexPathForRoot(opts.root) : await resolveControlUiDistIndexPath({
|
|
1255
|
+
argv1: opts.argv1 ?? process.argv[1],
|
|
1256
|
+
moduleUrl: opts.moduleUrl
|
|
1257
|
+
});
|
|
1208
1258
|
return {
|
|
1209
1259
|
indexPath,
|
|
1210
1260
|
exists: Boolean(indexPath && fs.existsSync(indexPath))
|
|
@@ -1228,12 +1278,17 @@ function resolveControlUiRepoRoot(argv1 = process.argv[1]) {
|
|
|
1228
1278
|
}
|
|
1229
1279
|
return null;
|
|
1230
1280
|
}
|
|
1231
|
-
async function resolveControlUiDistIndexPath(
|
|
1281
|
+
async function resolveControlUiDistIndexPath(argv1OrOpts) {
|
|
1282
|
+
const argv1 = typeof argv1OrOpts === "string" ? argv1OrOpts : argv1OrOpts?.argv1 ?? process.argv[1];
|
|
1283
|
+
const moduleUrl = typeof argv1OrOpts === "object" ? argv1OrOpts?.moduleUrl : void 0;
|
|
1232
1284
|
if (!argv1) return null;
|
|
1233
1285
|
const normalized = path.resolve(argv1);
|
|
1234
1286
|
const distDir = path.dirname(normalized);
|
|
1235
1287
|
if (path.basename(distDir) === "dist") return path.join(distDir, "control-ui", "index.html");
|
|
1236
|
-
const packageRoot = await resolveOpenClawPackageRoot({
|
|
1288
|
+
const packageRoot = await resolveOpenClawPackageRoot({
|
|
1289
|
+
argv1: normalized,
|
|
1290
|
+
moduleUrl
|
|
1291
|
+
});
|
|
1237
1292
|
if (packageRoot) return path.join(packageRoot, "dist", "control-ui", "index.html");
|
|
1238
1293
|
let dir = path.dirname(normalized);
|
|
1239
1294
|
for (let i = 0; i < 8; i++) {
|
|
@@ -1,33 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A as theme, O as colorize, k as isRich, n as isTruthyEnvValue, o as createSubsystemLogger, p as defaultRuntime, y as info } from "./entry.js";
|
|
2
2
|
import { d as resolveAgentIdFromSessionKey, h as toAgentStoreSessionKey, l as normalizeAgentId } from "./session-key-DVvxnFKg.js";
|
|
3
|
-
import { t as runCommandWithTimeout } from "./exec-
|
|
4
|
-
import { n as resolveOpenClawPackageRootSync, t as resolveOpenClawPackageRoot } from "./openclaw-root-
|
|
5
|
-
import { c as resolveDefaultAgentId, m as DEFAULT_HEARTBEAT_FILENAME, n as resolveAgentConfig, s as resolveAgentWorkspaceDir } from "./agent-scope-
|
|
6
|
-
import { g as parseDurationMs, i as loadConfig } from "./config-
|
|
7
|
-
import { n as formatErrorMessage } from "./errors-
|
|
8
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
9
|
-
import { f as resolvePreferredAccountId, n as listChannelPlugins, t as getChannelPlugin, u as buildChannelAccountBindings } from "./plugins-
|
|
10
|
-
import {
|
|
11
|
-
import { n as withProgress } from "./progress-
|
|
3
|
+
import { t as runCommandWithTimeout } from "./exec-CACT5OAW.js";
|
|
4
|
+
import { n as resolveOpenClawPackageRootSync, t as resolveOpenClawPackageRoot } from "./openclaw-root-BNlEap4i.js";
|
|
5
|
+
import { c as resolveDefaultAgentId, m as DEFAULT_HEARTBEAT_FILENAME, n as resolveAgentConfig, s as resolveAgentWorkspaceDir } from "./agent-scope-CsRbLH4l.js";
|
|
6
|
+
import { g as parseDurationMs, i as loadConfig } from "./config-Bdhomfei.js";
|
|
7
|
+
import { n as formatErrorMessage } from "./errors-DjZBTJJ3.js";
|
|
8
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DVYCIV8m.js";
|
|
9
|
+
import { f as resolvePreferredAccountId, n as listChannelPlugins, t as getChannelPlugin, u as buildChannelAccountBindings } from "./plugins-4Hqd1WGf.js";
|
|
10
|
+
import { $n as peekSystemEvents, A as resolveHeartbeatVisibility, Dr as resolveHeartbeatPrompt$1, Er as isHeartbeatContentEffectivelyEmpty, F as appendCronStyleCurrentTimeLine, Lr as resolveEffectiveMessagesConfig, Or as stripHeartbeatToken, P as resolveIndicatorType, Tr as DEFAULT_HEARTBEAT_EVERY, U as getReplyFromConfig, _n as resolveHeartbeatSenderContext, _r as getQueueSize, br as CommandLane, er as requestHeartbeatNow, gn as resolveHeartbeatDeliveryTarget, j as emitHeartbeatEvent, jr as resolveUserTimezone, tr as setHeartbeatWakeHandler, wr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS } from "./loader-KjT074JR.js";
|
|
11
|
+
import { n as withProgress } from "./progress-DWqhRakV.js";
|
|
12
12
|
import { t as resolveChannelDefaultAccountId } from "./helpers-DdwqKAAS.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { N as canonicalizeMainSessionAlias, P as resolveAgentMainSessionKey, d as loadSessionStore, g as updateSessionStore, m as saveSessionStore } from "./sandbox-
|
|
13
|
+
import { k as HEARTBEAT_TOKEN, t as deliverOutboundPayloads } from "./deliver-CIU9Npgs.js";
|
|
14
|
+
import { s as resolveStorePath } from "./paths-DLINmNFQ.js";
|
|
15
|
+
import { N as canonicalizeMainSessionAlias, P as resolveAgentMainSessionKey, d as loadSessionStore, g as updateSessionStore, m as saveSessionStore } from "./sandbox-BKYnhYQH.js";
|
|
16
16
|
import path from "node:path";
|
|
17
17
|
import fs from "node:fs";
|
|
18
18
|
import fs$1 from "node:fs/promises";
|
|
19
19
|
import { fileURLToPath } from "node:url";
|
|
20
20
|
|
|
21
|
-
//#region src/infra/heartbeat-
|
|
22
|
-
const log = createSubsystemLogger("gateway/heartbeat");
|
|
23
|
-
let heartbeatsEnabled = true;
|
|
24
|
-
function setHeartbeatsEnabled(enabled) {
|
|
25
|
-
heartbeatsEnabled = enabled;
|
|
26
|
-
}
|
|
27
|
-
const DEFAULT_HEARTBEAT_TARGET = "last";
|
|
21
|
+
//#region src/infra/heartbeat-active-hours.ts
|
|
28
22
|
const ACTIVE_HOURS_TIME_PATTERN = /^([01]\d|2[0-3]|24):([0-5]\d)$/;
|
|
29
|
-
const EXEC_EVENT_PROMPT = "An async command you ran earlier has completed. The result is shown in the system messages above. Please relay the command output to the user in a helpful way. If the command succeeded, share the relevant output. If it failed, explain what went wrong.";
|
|
30
|
-
const CRON_EVENT_PROMPT = "A scheduled reminder has been triggered. The reminder message is shown in the system messages above. Please relay this reminder to the user in a helpful and friendly way.";
|
|
31
23
|
function resolveActiveHoursTimezone(cfg, raw) {
|
|
32
24
|
const trimmed = raw?.trim();
|
|
33
25
|
if (!trimmed || trimmed === "user") return resolveUserTimezone(cfg.agents?.defaults?.userTimezone);
|
|
@@ -82,6 +74,43 @@ function isWithinActiveHours(cfg, heartbeat, nowMs) {
|
|
|
82
74
|
if (endMin > startMin) return currentMin >= startMin && currentMin < endMin;
|
|
83
75
|
return currentMin >= startMin || currentMin < endMin;
|
|
84
76
|
}
|
|
77
|
+
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region src/infra/heartbeat-runner.ts
|
|
80
|
+
const log = createSubsystemLogger("gateway/heartbeat");
|
|
81
|
+
let heartbeatsEnabled = true;
|
|
82
|
+
function setHeartbeatsEnabled(enabled) {
|
|
83
|
+
heartbeatsEnabled = enabled;
|
|
84
|
+
}
|
|
85
|
+
const DEFAULT_HEARTBEAT_TARGET = "last";
|
|
86
|
+
const EXEC_EVENT_PROMPT = "An async command you ran earlier has completed. The result is shown in the system messages above. Please relay the command output to the user in a helpful way. If the command succeeded, share the relevant output. If it failed, explain what went wrong.";
|
|
87
|
+
function buildCronEventPrompt(pendingEvents) {
|
|
88
|
+
const eventText = pendingEvents.join("\n").trim();
|
|
89
|
+
if (!eventText) return "A scheduled cron event was triggered, but no event content was found. Reply HEARTBEAT_OK.";
|
|
90
|
+
return "A scheduled reminder has been triggered. The reminder content is:\n\n" + eventText + "\n\nPlease relay this reminder to the user in a helpful and friendly way.";
|
|
91
|
+
}
|
|
92
|
+
const HEARTBEAT_OK_PREFIX = HEARTBEAT_TOKEN.toLowerCase();
|
|
93
|
+
function isHeartbeatAckEvent(evt) {
|
|
94
|
+
const trimmed = evt.trim();
|
|
95
|
+
if (!trimmed) return false;
|
|
96
|
+
const lower = trimmed.toLowerCase();
|
|
97
|
+
if (!lower.startsWith(HEARTBEAT_OK_PREFIX)) return false;
|
|
98
|
+
const suffix = lower.slice(HEARTBEAT_OK_PREFIX.length);
|
|
99
|
+
if (suffix.length === 0) return true;
|
|
100
|
+
return !/[a-z0-9_]/.test(suffix[0]);
|
|
101
|
+
}
|
|
102
|
+
function isHeartbeatNoiseEvent(evt) {
|
|
103
|
+
const lower = evt.trim().toLowerCase();
|
|
104
|
+
if (!lower) return false;
|
|
105
|
+
return isHeartbeatAckEvent(lower) || lower.includes("heartbeat poll") || lower.includes("heartbeat wake");
|
|
106
|
+
}
|
|
107
|
+
function isExecCompletionEvent(evt) {
|
|
108
|
+
return evt.toLowerCase().includes("exec finished");
|
|
109
|
+
}
|
|
110
|
+
function isCronSystemEvent(evt) {
|
|
111
|
+
if (!evt.trim()) return false;
|
|
112
|
+
return !isHeartbeatNoiseEvent(evt) && !isExecCompletionEvent(evt);
|
|
113
|
+
}
|
|
85
114
|
function hasExplicitHeartbeatAgents(cfg) {
|
|
86
115
|
return (cfg.agents?.list ?? []).some((entry) => Boolean(entry?.heartbeat));
|
|
87
116
|
}
|
|
@@ -349,10 +378,11 @@ async function runHeartbeatOnce(opts) {
|
|
|
349
378
|
const isExecEvent = opts.reason === "exec-event";
|
|
350
379
|
const isCronEvent = Boolean(opts.reason?.startsWith("cron:"));
|
|
351
380
|
const pendingEvents = isExecEvent || isCronEvent ? peekSystemEvents(sessionKey) : [];
|
|
352
|
-
const
|
|
353
|
-
const
|
|
381
|
+
const cronEvents = pendingEvents.filter((evt) => isCronSystemEvent(evt));
|
|
382
|
+
const hasExecCompletion = pendingEvents.some(isExecCompletionEvent);
|
|
383
|
+
const hasCronEvents = isCronEvent && cronEvents.length > 0;
|
|
354
384
|
const ctx = {
|
|
355
|
-
Body: appendCronStyleCurrentTimeLine(hasExecCompletion ? EXEC_EVENT_PROMPT : hasCronEvents ?
|
|
385
|
+
Body: appendCronStyleCurrentTimeLine(hasExecCompletion ? EXEC_EVENT_PROMPT : hasCronEvents ? buildCronEventPrompt(cronEvents) : resolveHeartbeatPrompt(cfg, heartbeat), cfg, startedAt),
|
|
356
386
|
From: sender,
|
|
357
387
|
To: sender,
|
|
358
388
|
Provider: hasExecCompletion ? "exec-event" : hasCronEvents ? "cron-event" : "heartbeat",
|
|
@@ -394,7 +424,11 @@ async function runHeartbeatOnce(opts) {
|
|
|
394
424
|
return true;
|
|
395
425
|
};
|
|
396
426
|
try {
|
|
397
|
-
const
|
|
427
|
+
const heartbeatModelOverride = heartbeat?.model?.trim() || void 0;
|
|
428
|
+
const replyResult = await getReplyFromConfig(ctx, heartbeatModelOverride ? {
|
|
429
|
+
isHeartbeat: true,
|
|
430
|
+
heartbeatModelOverride
|
|
431
|
+
} : { isHeartbeat: true }, cfg);
|
|
398
432
|
const replyPayload = resolveHeartbeatReplyPayload(replyResult);
|
|
399
433
|
const reasoningPayloads = heartbeat?.includeReasoning === true ? resolveHeartbeatReasoningPayloads(replyResult).filter((payload) => payload !== replyPayload) : [];
|
|
400
434
|
if (!replyPayload || !replyPayload.text && !replyPayload.mediaUrl && !replyPayload.mediaUrls?.length) {
|
|
@@ -603,6 +637,10 @@ function startHeartbeatRunner(opts) {
|
|
|
603
637
|
if (prevState && prevState.intervalMs === intervalMs && prevState.nextDueMs > now) return prevState.nextDueMs;
|
|
604
638
|
return now + intervalMs;
|
|
605
639
|
};
|
|
640
|
+
const advanceAgentSchedule = (agent, now) => {
|
|
641
|
+
agent.lastRunMs = now;
|
|
642
|
+
agent.nextDueMs = now + agent.intervalMs;
|
|
643
|
+
};
|
|
606
644
|
const scheduleNext = () => {
|
|
607
645
|
if (state.stopped) return;
|
|
608
646
|
if (state.timer) {
|
|
@@ -671,18 +709,27 @@ function startHeartbeatRunner(opts) {
|
|
|
671
709
|
let ran = false;
|
|
672
710
|
for (const agent of state.agents.values()) {
|
|
673
711
|
if (isInterval && now < agent.nextDueMs) continue;
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
712
|
+
let res;
|
|
713
|
+
try {
|
|
714
|
+
res = await runOnce({
|
|
715
|
+
cfg: state.cfg,
|
|
716
|
+
agentId: agent.agentId,
|
|
717
|
+
heartbeat: agent.heartbeat,
|
|
718
|
+
reason,
|
|
719
|
+
deps: { runtime: state.runtime }
|
|
720
|
+
});
|
|
721
|
+
} catch (err) {
|
|
722
|
+
const errMsg = formatErrorMessage(err);
|
|
723
|
+
log.error(`heartbeat runner: runOnce threw unexpectedly: ${errMsg}`, { error: errMsg });
|
|
724
|
+
advanceAgentSchedule(agent, now);
|
|
725
|
+
continue;
|
|
726
|
+
}
|
|
727
|
+
if (res.status === "skipped" && res.reason === "requests-in-flight") {
|
|
728
|
+
advanceAgentSchedule(agent, now);
|
|
729
|
+
scheduleNext();
|
|
730
|
+
return res;
|
|
685
731
|
}
|
|
732
|
+
if (res.status !== "skipped" || res.reason !== "disabled") advanceAgentSchedule(agent, now);
|
|
686
733
|
if (res.status === "ran") ran = true;
|
|
687
734
|
}
|
|
688
735
|
scheduleNext();
|
|
@@ -1203,7 +1250,10 @@ function resolveControlUiDistIndexPathForRoot(root) {
|
|
|
1203
1250
|
return path.join(root, ...CONTROL_UI_DIST_PATH_SEGMENTS);
|
|
1204
1251
|
}
|
|
1205
1252
|
async function resolveControlUiDistIndexHealth(opts = {}) {
|
|
1206
|
-
const indexPath = opts.root ? resolveControlUiDistIndexPathForRoot(opts.root) : await resolveControlUiDistIndexPath(
|
|
1253
|
+
const indexPath = opts.root ? resolveControlUiDistIndexPathForRoot(opts.root) : await resolveControlUiDistIndexPath({
|
|
1254
|
+
argv1: opts.argv1 ?? process.argv[1],
|
|
1255
|
+
moduleUrl: opts.moduleUrl
|
|
1256
|
+
});
|
|
1207
1257
|
return {
|
|
1208
1258
|
indexPath,
|
|
1209
1259
|
exists: Boolean(indexPath && fs.existsSync(indexPath))
|
|
@@ -1227,12 +1277,17 @@ function resolveControlUiRepoRoot(argv1 = process.argv[1]) {
|
|
|
1227
1277
|
}
|
|
1228
1278
|
return null;
|
|
1229
1279
|
}
|
|
1230
|
-
async function resolveControlUiDistIndexPath(
|
|
1280
|
+
async function resolveControlUiDistIndexPath(argv1OrOpts) {
|
|
1281
|
+
const argv1 = typeof argv1OrOpts === "string" ? argv1OrOpts : argv1OrOpts?.argv1 ?? process.argv[1];
|
|
1282
|
+
const moduleUrl = typeof argv1OrOpts === "object" ? argv1OrOpts?.moduleUrl : void 0;
|
|
1231
1283
|
if (!argv1) return null;
|
|
1232
1284
|
const normalized = path.resolve(argv1);
|
|
1233
1285
|
const distDir = path.dirname(normalized);
|
|
1234
1286
|
if (path.basename(distDir) === "dist") return path.join(distDir, "control-ui", "index.html");
|
|
1235
|
-
const packageRoot = await resolveOpenClawPackageRoot({
|
|
1287
|
+
const packageRoot = await resolveOpenClawPackageRoot({
|
|
1288
|
+
argv1: normalized,
|
|
1289
|
+
moduleUrl
|
|
1290
|
+
});
|
|
1236
1291
|
if (packageRoot) return path.join(packageRoot, "dist", "control-ui", "index.html");
|
|
1237
1292
|
let dir = path.dirname(normalized);
|
|
1238
1293
|
for (let i = 0; i < 8; i++) {
|
|
@@ -1,52 +1,56 @@
|
|
|
1
1
|
import "./paths-DVBShlw6.js";
|
|
2
|
-
import { R as theme, c as defaultRuntime } from "./subsystem-
|
|
3
|
-
import { C as shortenHomePath, b as resolveUserPath, t as CONFIG_DIR } from "./utils-
|
|
4
|
-
import "./pi-embedded-helpers-
|
|
5
|
-
import "./reply
|
|
6
|
-
import { t as runCommandWithTimeout } from "./exec-
|
|
7
|
-
import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-
|
|
8
|
-
import "./model-selection-
|
|
2
|
+
import { R as theme, c as defaultRuntime } from "./subsystem-BoExtIHo.js";
|
|
3
|
+
import { C as shortenHomePath, b as resolveUserPath, t as CONFIG_DIR } from "./utils-Cd9QdCHh.js";
|
|
4
|
+
import "./pi-embedded-helpers-CMKLjW6X.js";
|
|
5
|
+
import "./reply-DICXkh_C.js";
|
|
6
|
+
import { t as runCommandWithTimeout } from "./exec-YIosokWE.js";
|
|
7
|
+
import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-CQCus0rI.js";
|
|
8
|
+
import "./model-selection-BLuqsGVB.js";
|
|
9
9
|
import "./github-copilot-token-BW-SEg7E.js";
|
|
10
10
|
import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
|
|
11
11
|
import "./boolean-BgXe2hyu.js";
|
|
12
|
-
import "./env-
|
|
13
|
-
import { c as writeConfigFile, i as loadConfig } from "./config
|
|
14
|
-
import { a as MANIFEST_KEY } from "./manifest-registry-
|
|
15
|
-
import "./plugins-
|
|
16
|
-
import "./sandbox-
|
|
17
|
-
import "./
|
|
18
|
-
import "./
|
|
19
|
-
import "./
|
|
20
|
-
import "./
|
|
21
|
-
import "./
|
|
22
|
-
import "./
|
|
23
|
-
import "./
|
|
24
|
-
import "./
|
|
25
|
-
import "./
|
|
26
|
-
import "./
|
|
27
|
-
import "./
|
|
28
|
-
import "./
|
|
29
|
-
import "./
|
|
30
|
-
import "./
|
|
31
|
-
import "./
|
|
32
|
-
import "./
|
|
33
|
-
import "./
|
|
34
|
-
import "./
|
|
35
|
-
import "./
|
|
36
|
-
import "./
|
|
37
|
-
import "./
|
|
38
|
-
import
|
|
39
|
-
import "./
|
|
40
|
-
import "./
|
|
41
|
-
import "./
|
|
42
|
-
import "./
|
|
43
|
-
import "./
|
|
44
|
-
import "./
|
|
45
|
-
import "./
|
|
46
|
-
import
|
|
47
|
-
import
|
|
48
|
-
import
|
|
49
|
-
import
|
|
12
|
+
import "./env-ONzUVAG2.js";
|
|
13
|
+
import { c as writeConfigFile, i as loadConfig } from "./config-aFQssWKX.js";
|
|
14
|
+
import { a as MANIFEST_KEY } from "./manifest-registry-CQhdnDBZ.js";
|
|
15
|
+
import "./plugins-X7d_tfTE.js";
|
|
16
|
+
import "./sandbox-Bhjnh1Xg.js";
|
|
17
|
+
import "./runner-D_dujMod.js";
|
|
18
|
+
import "./image-C4Nn2p3e.js";
|
|
19
|
+
import "./pi-model-discovery-EwKVHlZB.js";
|
|
20
|
+
import "./chrome-Cvr-57lg.js";
|
|
21
|
+
import "./skills-DprQj9X2.js";
|
|
22
|
+
import "./routes-CmOI1hIH.js";
|
|
23
|
+
import "./server-context-Cl0U0vE3.js";
|
|
24
|
+
import "./message-channel-BLi2a6Yw.js";
|
|
25
|
+
import "./logging-fywhKCmE.js";
|
|
26
|
+
import "./accounts-DeqIQjo1.js";
|
|
27
|
+
import "./paths-B49s6UZQ.js";
|
|
28
|
+
import "./redact-BRsnXqwD.js";
|
|
29
|
+
import "./tool-display-CZRIDMRm.js";
|
|
30
|
+
import "./fetch-DmiOpALK.js";
|
|
31
|
+
import "./deliver-LsxKETro.js";
|
|
32
|
+
import "./dispatcher-DY51b-Zc.js";
|
|
33
|
+
import "./manager-DkqF1GiK.js";
|
|
34
|
+
import "./sqlite-D4w5TejA.js";
|
|
35
|
+
import "./tui-formatters-CNySEfJN.js";
|
|
36
|
+
import "./client-BrYfyoDK.js";
|
|
37
|
+
import "./call-SolyGS1r.js";
|
|
38
|
+
import "./login-qr-B6ZgAuIf.js";
|
|
39
|
+
import "./pairing-store-CmlRVqOz.js";
|
|
40
|
+
import { t as formatDocsLink } from "./links-Eax1UO3w.js";
|
|
41
|
+
import "./progress-C9kngsTD.js";
|
|
42
|
+
import "./pi-tools.policy-BpsROZbz.js";
|
|
43
|
+
import "./prompt-style-CIbmaxSa.js";
|
|
44
|
+
import "./pairing-labels-B6CN0SNH.js";
|
|
45
|
+
import "./session-cost-usage-D7HuoSSD.js";
|
|
46
|
+
import "./auth-CQNl_IaI.js";
|
|
47
|
+
import "./control-auth-DBCu3qyv.js";
|
|
48
|
+
import "./control-service-B5KnPqGP.js";
|
|
49
|
+
import "./channel-selection-MZAHm4U8.js";
|
|
50
|
+
import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-beaSfAzA.js";
|
|
51
|
+
import { t as renderTable } from "./table-B8dx3v4v.js";
|
|
52
|
+
import { a as parseFrontmatter, n as loadWorkspaceHookEntries, t as buildWorkspaceHookStatus } from "./hooks-status-D9MhwHRp.js";
|
|
53
|
+
import { t as buildPluginStatusReport } from "./status-CiHtHdaa.js";
|
|
50
54
|
import fs from "node:fs";
|
|
51
55
|
import os from "node:os";
|
|
52
56
|
import path from "node:path";
|
|
@@ -206,7 +210,8 @@ async function installHookPackageFromDir(params) {
|
|
|
206
210
|
"npm",
|
|
207
211
|
"install",
|
|
208
212
|
"--omit=dev",
|
|
209
|
-
"--silent"
|
|
213
|
+
"--silent",
|
|
214
|
+
"--ignore-scripts"
|
|
210
215
|
], {
|
|
211
216
|
timeoutMs: Math.max(timeoutMs, 3e5),
|
|
212
217
|
cwd: targetDir
|