openclaw-cortex 3.1.0 → 3.2.0
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/dist/{agents-DFGWWUWP.js → agents-Connanf3.js} +9 -9
- package/dist/{audio-preflight-CJMYPxgz.js → audio-preflight-CketII1D.js} +4 -4
- package/dist/{audio-preflight-Da8wJ2aM.js → audio-preflight-uMyPrpUu.js} +2 -2
- package/dist/{audit-D2RyL2xf.js → audit-DkAW6KBR.js} +5 -5
- package/dist/audit-cli-BXgvg5ZF.js +149 -0
- package/dist/audit-cli-DtqyB9AV.js +142 -0
- package/dist/{audit-BjY3NDuN.js → audit-qELipjtd.js} +5 -5
- package/dist/{auth-choice-GohCLqPi.js → auth-choice-iBFMtcSX.js} +6 -6
- package/dist/{auth-choice-options-DnA9f3yX.js → auth-choice-options-B1kkod6_.js} +1 -1
- package/dist/{auth-choice-options-DEXqZb42.js → auth-choice-options-ypl3E9Ly.js} +1 -1
- package/dist/{auth-choice-prompt-Dl-yzpY0.js → auth-choice-prompt-BRyWAtfZ.js} +1 -1
- package/dist/{auth-choice-prompt-UUacbtn9.js → auth-choice-prompt-HAxprx2p.js} +1 -1
- package/dist/{auth-choice-Ts5V5Aeh.js → auth-choice-qtLrrNVz.js} +5 -5
- package/dist/{banner-Bg78pfCD.js → banner-D_oPGRF8.js} +1 -1
- package/dist/{bonjour-discovery-Dci4cd0G.js → bonjour-discovery-D7009yxB.js} +1 -1
- package/dist/{bonjour-discovery-Bbq821TB.js → bonjour-discovery-DZl6ArZI.js} +1 -1
- package/dist/{browser-cli-Br6_uOTg.js → browser-cli-B9Vh8gTE.js} +1 -1
- package/dist/{browser-cli-6clFJFS6.js → browser-cli-BTtbPQaz.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-DWVQz-Pr.js → channel-options-B48SGv9h.js} +1 -1
- package/dist/{channel-options-VO3dsstv.js → channel-options-BcJt26VG.js} +2 -2
- package/dist/{channel-web-CfYHK75g.js → channel-web-CgFmP49a.js} +2 -2
- package/dist/{channels-cli-CgzGUhuU.js → channels-cli-CL1qUEGy.js} +19 -19
- package/dist/{channels-cli-ClaXI2LY.js → channels-cli-DKyMl3-J.js} +18 -18
- package/dist/{chrome-jiKls1lm.js → chrome-7PNldBIY.js} +7 -7
- package/dist/{clack-prompter-xfiETF85.js → clack-prompter-CTPf_777.js} +2 -2
- package/dist/{clack-prompter-BKrj0iD5.js → clack-prompter-KpWBIhc1.js} +2 -2
- package/dist/{clawbot-cli-BLkszw7f.js → clawbot-cli-DbkjoCG5.js} +1 -1
- package/dist/{clawbot-cli-D--KZtXG.js → clawbot-cli-i4NzkdF4.js} +1 -1
- package/dist/{cli-jzRaj4XC.js → cli-DsZC1vDc.js} +2 -2
- package/dist/{cli-VXGGV02p.js → cli-lEZ3mJ9g.js} +4 -4
- package/dist/{command-registry-DdnU-C_q.js → command-registry-C2HYRZO_.js} +12 -12
- package/dist/{completion-cli-DuxZVRrg.js → completion-cli-DB5qbPxk.js} +1 -1
- package/dist/{completion-cli-BiPxrDMm.js → completion-cli-rVm9UjTQ.js} +3 -3
- package/dist/{config-cli-CxCTGO_g.js → config-cli-1O6rmVow.js} +1 -1
- package/dist/{config-cli-WYe98Ox0.js → config-cli-DKFT2jQY.js} +1 -1
- package/dist/{config-guard-DgjGJ8Lb.js → config-guard-BAA0NN6K.js} +3 -3
- package/dist/{config-guard-Fvw_vc_U.js → config-guard-FQYcQKxs.js} +1 -1
- package/dist/{configure--dU6eZNK.js → configure-Bq40wO_g.js} +18 -18
- package/dist/{configure-D83Cw4Tz.js → configure-Hjs-w_V-.js} +18 -18
- package/dist/control-ui/_app/immutable/assets/0.CIIOt0aD.css +1 -0
- package/dist/control-ui/_app/immutable/chunks/{DXhHboeH.js → PR_wZ9tz.js} +1 -1
- package/dist/control-ui/_app/immutable/entry/app.DKU3ZeOo.js +2 -0
- package/dist/control-ui/_app/immutable/entry/start.Bt2xwOar.js +1 -0
- package/dist/control-ui/_app/immutable/nodes/{0.B62uYxuw.js → 0.CDaa-GWT.js} +8 -8
- package/dist/control-ui/_app/immutable/nodes/{1.CDpdCVD0.js → 1.CYtkLWum.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{9.DFhiU3G3.js → 10.DfK8stgG.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{10.CFP8x2TH.js → 11.Dzw5x9Jt.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{14.DP0eaD-P.js → 15.7DnWqn28.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/5.BbK5Iwro.js +4 -0
- package/dist/control-ui/_app/immutable/nodes/{5._XvLegf_.js → 6.CbanPjIA.js} +1 -1
- package/dist/control-ui/_app/immutable/nodes/{8.B5aVfCJN.js → 9.D4Abr5tX.js} +1 -1
- package/dist/control-ui/_app/version.json +1 -1
- package/dist/control-ui/index.html +6 -6
- package/dist/{cron-cli-QB8r6K_w.js → cron-cli-aGCB_2-m.js} +1 -1
- package/dist/{daemon-Cb7wiTzs.js → daemon-CrTIKc6F.js} +6 -6
- package/dist/{daemon-Des4AgjX.js → daemon-DP4R5-Kf.js} +6 -6
- package/dist/{daemon-cli-BlsF7JRB.js → daemon-cli-Bpc5ZmKC.js} +1 -1
- package/dist/{daemon-cli-sM-6bwnt.js → daemon-cli-CUh4NlQ7.js} +8 -8
- package/dist/{daemon-cli-CAME8LzX.js → daemon-cli-zo00dvxw.js} +1 -1
- package/dist/{daemon-runtime-CS81-2xm.js → daemon-runtime-DnzXuU_x.js} +1 -1
- package/dist/{deliver-DXKF_Nu0.js → deliver-CFSxoz2_.js} +1 -1
- package/dist/{devices-cli-DeDV4Bqj.js → devices-cli-3ZwsBIF1.js} +1 -1
- package/dist/{devices-cli-DC0MbgAK.js → devices-cli-D4MzUzC7.js} +1 -1
- package/dist/{diagnostics-23-FTnVz.js → diagnostics-D3Hu1kBI.js} +1 -1
- package/dist/{diagnostics-Ef27CLfy.js → diagnostics-D7bn87xJ.js} +1 -1
- package/dist/{directory-cli-SE46S0CB.js → directory-cli-CcPugz8R.js} +2 -2
- package/dist/{directory-cli-BIjxWy1d.js → directory-cli-DXwiDLrf.js} +2 -2
- package/dist/{dns-cli-74dMXPOa.js → dns-cli-DKZyzBHW.js} +2 -2
- package/dist/{dns-cli-B5TFMuUd.js → dns-cli-Dj9PvwCt.js} +2 -2
- package/dist/{doctor-completion-D0-JkRk1.js → doctor-completion-CDdw31wQ.js} +2 -2
- package/dist/{doctor-completion-DcqQQvqC.js → doctor-completion-lw65Gm69.js} +2 -2
- package/dist/{doctor-config-flow-VkeqkE_0.js → doctor-config-flow-BeaKHczK.js} +4 -4
- package/dist/{doctor-config-flow-CCgRJLm0.js → doctor-config-flow-H0rj1G82.js} +4 -4
- package/dist/{enable-55n-WSsE.js → enable-C2kZT1wf.js} +1 -1
- package/dist/{enable-CknE1f0w.js → enable-CBGVOpes.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-Dd_vBz5L.js → exec-approvals-cli-Bnd2QORy.js} +5 -5
- package/dist/{exec-approvals-cli-oCsC4ad1.js → exec-approvals-cli-y-rX8HdN.js} +5 -5
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-Cfs77-mk.js → gateway-cli-D_RCXTvo.js} +389 -69
- package/dist/{gateway-cli-bSwcceJd.js → gateway-cli-yd0wJM_1.js} +388 -68
- package/dist/{health-fyXf4lEO.js → health-CuD8XoQy.js} +2 -2
- package/dist/{health-6g5hi28u.js → health-HfXeNmAj.js} +2 -2
- package/dist/{hooks-cli-CZfvOlY1.js → hooks-cli-B9pYOLSo.js} +10 -10
- package/dist/{hooks-cli-D59S5DQ3.js → hooks-cli-CfXcytes.js} +8 -8
- package/dist/{hooks-status-C9KqWt8h.js → hooks-status-Cp7ejPFf.js} +1 -1
- package/dist/{hooks-status-QGgVvmRr.js → hooks-status-b7LxQMuo.js} +1 -1
- package/dist/{image-DChVqMFC.js → image-DafeVSso.js} +1 -1
- package/dist/index.js +10 -10
- package/dist/{inspect-CKqi1YnO.js → inspect-CRH0n6VO.js} +1 -1
- package/dist/{inspect-cZ9bY884.js → inspect-De36nczp.js} +1 -1
- package/dist/{install-safe-path-Cx0jIhFX.js → install-safe-path-BUZoxvjo.js} +1 -1
- package/dist/{install-safe-path-BK8js28D.js → install-safe-path-C__62m3G.js} +1 -1
- package/dist/{installs-Bb-tLJtw.js → installs-BQomWNkv.js} +3 -3
- package/dist/{installs-D96MHCfz.js → installs-DOzoX6Lj.js} +3 -3
- package/dist/{lifecycle-core-BsxpzMSa.js → lifecycle-core-D-idKcJT.js} +4 -4
- package/dist/{lifecycle-core-Bt5BqaIY.js → lifecycle-core-DtN4Wg9p.js} +4 -4
- package/dist/{logs-cli-3J59cVdu.js → logs-cli-Co-dRkBt.js} +1 -1
- package/dist/{logs-cli-v35EJjb3.js → logs-cli-DxRr-okE.js} +1 -1
- package/dist/{memory-cli-DWydhV-V.js → memory-cli-BuqY12GX.js} +1 -1
- package/dist/{memory-cli-D1uj5PFF.js → memory-cli-oTchxxCo.js} +1 -1
- package/dist/{model-catalog-yzrJiO3y.js → model-catalog-CbowpOxX.js} +1 -1
- package/dist/{model-picker-ei3br5zp.js → model-picker-C8wvNgLt.js} +2 -2
- package/dist/{model-picker-nxntGU8X.js → model-picker-CfpSzPcs.js} +3 -3
- package/dist/{models-cli-CY__bDc5.js → models-cli-C9laZsKz.js} +14 -14
- package/dist/{models-cli-Bk9n0tJe.js → models-cli-rLp2PtTV.js} +10 -10
- package/dist/{models-g128XKsn.js → models-iwnnK-j-.js} +9 -9
- package/dist/{node-cli-Bj8ON11k.js → node-cli-Dp7mtofP.js} +10 -10
- package/dist/{node-cli-CJjrrKq9.js → node-cli-iV-j-wYM.js} +9 -9
- package/dist/{node-service-CPLJsCSU.js → node-service-BuwCiN6g.js} +1 -1
- package/dist/{node-service-D1-7_1cb.js → node-service-DMNdtnuy.js} +1 -1
- package/dist/{nodes-cli-Ci-Bcwf8.js → nodes-cli-CzfzXfgv.js} +2 -2
- package/dist/{nodes-cli-BxRAQoe9.js → nodes-cli-DYLMQpcr.js} +2 -2
- package/dist/{npm-registry-spec-KNhAHcQS.js → npm-registry-spec-GhKQD8SI.js} +1 -1
- package/dist/{npm-registry-spec-DkaZNHAW.js → npm-registry-spec-PuS2I1Em.js} +1 -1
- package/dist/{onboard-DmTh7SXf.js → onboard-Bd7A_X5U.js} +14 -14
- package/dist/{onboard-DMifN-i1.js → onboard-DtWmcQlQ.js} +15 -15
- package/dist/{onboard-channels-DvKfcKcM.js → onboard-channels-CUrbd3Wb.js} +5 -5
- package/dist/{onboard-channels-OJRGzltw.js → onboard-channels-jQ3eUVs5.js} +6 -6
- package/dist/{onboard-custom-CVkHP2LI.js → onboard-custom-DGPRdl88.js} +2 -2
- package/dist/{onboard-custom-EVjMXHxg.js → onboard-custom-zu25Ce3O.js} +2 -2
- package/dist/{onboard-hooks-CbvnumRC.js → onboard-hooks-BGNKszKA.js} +2 -2
- package/dist/{onboard-hooks-Bf71KQxe.js → onboard-hooks-Bfe1d0y4.js} +2 -2
- package/dist/{onboard-remote-B1ALuxz1.js → onboard-remote-Crh1ykbv.js} +2 -2
- package/dist/{onboard-remote-DvD400Xk.js → onboard-remote-DNAePOvY.js} +2 -2
- package/dist/{onboard-skills-DADB1X8v.js → onboard-skills-JPKMqrus.js} +1 -1
- package/dist/{onboard-skills-B-SjYRhY.js → onboard-skills-Xk7z94Bl.js} +1 -1
- package/dist/{onboarding-CQzBfGpz.js → onboarding-D5BRyKY0.js} +14 -14
- package/dist/{onboarding-De7bUYn0.js → onboarding-JoS3gVBZ.js} +14 -14
- package/dist/{onboarding.finalize-CfRbKgYD.js → onboarding.finalize-Bbi4NFVI.js} +16 -16
- package/dist/{onboarding.finalize-FFs7GkQQ.js → onboarding.finalize-DwWgfZqG.js} +17 -17
- package/dist/{onboarding.gateway-config-BtNlVRR8.js → onboarding.gateway-config-C57J8mMa.js} +1 -1
- package/dist/{onboarding.gateway-config-DcPeHQOU.js → onboarding.gateway-config-DnCISZSx.js} +1 -1
- package/dist/{openai-model-default-nCXNgugA.js → openai-model-default-Cr6-L10w.js} +1 -1
- package/dist/{openai-model-default-DPkXfXr6.js → openai-model-default-JoN5c4An.js} +1 -1
- package/dist/{pairing-cli-BLo9Ainb.js → pairing-cli-Bcec_R3Q.js} +1 -1
- package/dist/{pairing-cli-_0WmOf9q.js → pairing-cli-PoxPVvhd.js} +1 -1
- package/dist/{pi-auth-json-CSe5xRCM.js → pi-auth-json-DoNJ0jhK.js} +1 -1
- package/dist/{pi-embedded-DPsT4Vb4.js → pi-embedded-Ig1YOX5t.js} +16 -16
- package/dist/{pi-embedded-helpers--8pQ_5Ix.js → pi-embedded-helpers-C-3FQnQz.js} +4 -4
- package/dist/{plugin-auto-enable-Czk5vqi1.js → plugin-auto-enable-CgzsK3UF.js} +1 -1
- package/dist/{plugin-auto-enable-bi7o87Rj.js → plugin-auto-enable-Co1CxSEm.js} +2 -2
- package/dist/{plugin-registry-Bq3rtiCL.js → plugin-registry-6pWyMqfg.js} +1 -1
- package/dist/{plugin-registry-D6-nPnzv.js → plugin-registry-CAfPxKab.js} +1 -1
- package/dist/plugin-sdk/{accounts-vV5Gfd26.js → accounts-CRs7kbLB.js} +1 -1
- package/dist/plugin-sdk/{accounts-iN-dbgw4.js → accounts-b1Cok6r_.js} +3 -3
- package/dist/plugin-sdk/{accounts-LxMkgia0.js → accounts-uAqOguyH.js} +1 -1
- package/dist/plugin-sdk/{active-listener-Bh0LXjEI.js → active-listener-BdVTYHTN.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-BS_vck4W.js → agent-scope-OWMdRegz.js} +2 -2
- package/dist/plugin-sdk/{api-key-rotation-LkecAWT_.js → api-key-rotation-DedcgBOR.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-Bs1SkEb1.js → audio-preflight-EYVIo5wC.js} +25 -25
- package/dist/plugin-sdk/{bindings-CTCkMENc.js → bindings-LROfNV1W.js} +2 -2
- package/dist/plugin-sdk/{channel-activity-PV3vhwo2.js → channel-activity-DHI8R5Xg.js} +1 -1
- package/dist/plugin-sdk/{channel-web-C1Hsjdgf.js → channel-web-CGp1_ZH4.js} +22 -22
- package/dist/plugin-sdk/{chrome-cWvSiZw3.js → chrome-BS8LYp6z.js} +3 -3
- package/dist/plugin-sdk/{chunk-CyOBR4uk.js → chunk-C9J4kyVw.js} +1 -1
- package/dist/plugin-sdk/{command-format-C5kdEGEu.js → command-format-BTciq6Gg.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-Bvksrm0n.js → commands-registry-pHxVP_Zd.js} +3 -3
- package/dist/plugin-sdk/{common-CJo4CK5_.js → common-CCPGi5xr.js} +2 -2
- package/dist/plugin-sdk/{config-B8Nc1zrG.js → config-DemNgb7Z.js} +9 -9
- package/dist/plugin-sdk/{deliver-Dut_1pt2.js → deliver-BCvqh6o3.js} +10 -10
- package/dist/plugin-sdk/{diagnostic-DFXnVf2I.js → diagnostic-oBxO5N68.js} +1 -1
- package/dist/plugin-sdk/{fs-safe-CdpuSWry.js → fs-safe-CGcLaY9D.js} +1 -1
- package/dist/plugin-sdk/{image-B3tSrFDE.js → image-BHSeZfna.js} +4 -4
- package/dist/plugin-sdk/index.js +52 -52
- package/dist/plugin-sdk/{ir-05vuco_v.js → ir-JSGKj1e6.js} +4 -4
- package/dist/plugin-sdk/{local-roots-DlmKIABh.js → local-roots-jpNoUngc.js} +3 -3
- package/dist/plugin-sdk/{login-_t6d0RBi.js → login-Ckh0Yz4j.js} +7 -7
- package/dist/plugin-sdk/{login-qr-Czq6nBnB.js → login-qr-DRY27T-V.js} +9 -9
- package/dist/plugin-sdk/{manager-DEOMAxd_.js → manager-B9XMF8DU.js} +8 -8
- package/dist/plugin-sdk/{manifest-registry-BgkX6ON4.js → manifest-registry-Lzj-fZNH.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-FF81O4MP.js → markdown-tables-CgnPuqk-.js} +1 -1
- package/dist/plugin-sdk/{message-channel-DxNExIdv.js → message-channel-C3OrO29D.js} +1 -1
- package/dist/plugin-sdk/{model-selection-Bj-E4zbc.js → model-selection-BQiSfqzh.js} +4 -4
- package/dist/plugin-sdk/{normalize-DWmWs1Oq.js → normalize-raRH8X3d.js} +4 -4
- package/dist/plugin-sdk/{outbound-D2-05wUl.js → outbound-CtRrsxZT.js} +7 -7
- package/dist/plugin-sdk/{outbound-attachment-DmbQx_Vk.js → outbound-attachment-BD9q-xgD.js} +2 -2
- package/dist/plugin-sdk/{pi-auth-json-D-qvsSpX.js → pi-auth-json-BlIDGSl5.js} +5 -5
- package/dist/plugin-sdk/{pi-embedded-helpers-C1u6XyK5.js → pi-embedded-helpers-0qu1zxwF.js} +17 -17
- package/dist/plugin-sdk/{plugins-0PB0IWJL.js → plugins-BJciHbYr.js} +3 -3
- package/dist/plugin-sdk/{pw-ai-BIyeKPJF.js → pw-ai-DkUDisr8.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-DeQxerRp.js → qmd-manager-kPD4Wyie.js} +4 -4
- package/dist/plugin-sdk/{registry-BECEtj9n.js → registry-C8pj8ctW.js} +2 -2
- package/dist/plugin-sdk/{replies-DnGHvUeV.js → replies-0BFlZXJ5.js} +3 -3
- package/dist/plugin-sdk/{reply-Due6Dl-a.js → reply-BUzGHOJ7.js} +78 -78
- package/dist/plugin-sdk/{reply-prefix-UgReuQSG.js → reply-prefix-YUOHz1rF.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-BaFHJbum.js → resolve-route-DudlMKs4.js} +3 -3
- package/dist/plugin-sdk/{retry-Bkj1k1me.js → retry-B8Oq5mgi.js} +1 -1
- package/dist/plugin-sdk/{runner-Bq1wBell.js → runner-BkD3LLSl.js} +9 -9
- package/dist/plugin-sdk/{send-MrY4gJ_w.js → send-9i1KJYhJ.js} +7 -7
- package/dist/plugin-sdk/{send-D4HKCCvV.js → send-A_uouj00.js} +7 -7
- package/dist/plugin-sdk/{send-By-dm-fT.js → send-CpfmIaxP.js} +11 -11
- package/dist/plugin-sdk/{send-NUKqMNZh.js → send-DREpPboJ.js} +6 -6
- package/dist/plugin-sdk/{send-M99nJHP9.js → send-Di1hHvf2.js} +11 -11
- package/dist/plugin-sdk/{session-DGLRioDC.js → session-CpS-Mhnp.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-Cw-IRPUz.js → skill-commands-CTB7AZXn.js} +5 -5
- package/dist/plugin-sdk/{skills-D0-IpJne.js → skills-BCD1hFBZ.js} +7 -7
- package/dist/plugin-sdk/{sqlite-DtIiUWZr.js → sqlite-Yn48izJ_.js} +1 -1
- package/dist/plugin-sdk/{store-BcTI1iBS.js → store-BJRhX9Bi.js} +2 -2
- package/dist/plugin-sdk/{subsystem-Ck27y_6W.js → subsystem-BfLMZ8kW.js} +1 -1
- package/dist/plugin-sdk/{tables-B6ajREI6.js → tables-D5aPNTF6.js} +1 -1
- package/dist/plugin-sdk/{thinking-D81fexfE.js → thinking-BACprzA0.js} +5 -5
- package/dist/plugin-sdk/{tokens-B6GWdF_0.js → tokens-D1LxPszt.js} +1 -1
- package/dist/plugin-sdk/{tool-loop-detection-CbPwu1_R.js → tool-loop-detection-CYSptBsl.js} +2 -2
- package/dist/plugin-sdk/web-DNugKZLo.js +65 -0
- package/dist/plugin-sdk/{whatsapp-actions-B8IYO5sc.js → whatsapp-actions-CGuheX42.js} +20 -20
- package/dist/{plugins-cli-BBPth1Z6.js → plugins-cli-B1yYys0A.js} +11 -11
- package/dist/{plugins-cli-C9JJoC7q.js → plugins-cli-Dl95iV2J.js} +9 -9
- package/dist/{program-BEFngAg_.js → program-a6gIDhmg.js} +12 -12
- package/dist/{program-context-Bd7FDrI6.js → program-context-a5xRVp1E.js} +47 -39
- package/dist/{prompt-select-styled-rdKrlwqC.js → prompt-select-styled-BEAD7Qf_.js} +20 -20
- package/dist/{prompt-select-styled-0lIQRloq.js → prompt-select-styled-pDE5STe1.js} +21 -21
- package/dist/{provider-auth-helpers-1tpv3AhX.js → provider-auth-helpers-C2efwIJ1.js} +4 -4
- package/dist/{provider-auth-helpers-C3rs3jFv.js → provider-auth-helpers-Cgi-JpAw.js} +4 -4
- package/dist/{push-apns-ByshEodu.js → push-apns-CBVQ1O88.js} +1 -1
- package/dist/{push-apns-CdHUueH2.js → push-apns-DgHzRUEl.js} +1 -1
- package/dist/{pw-ai-D6PxL0UG.js → pw-ai-CNp2t_EO.js} +1 -1
- package/dist/{register.agent-KAixKF-e.js → register.agent-BzIdik-2.js} +22 -22
- package/dist/{register.agent-DY1rT-kZ.js → register.agent-C_hXidrG.js} +24 -24
- package/dist/{register.configure-CvKA3Sss.js → register.configure-DQeftoKx.js} +34 -34
- package/dist/{register.configure-DH6m9Dbt.js → register.configure-g10-MK8e.js} +34 -34
- package/dist/{register.init-C7vQ5ty0.js → register.init-CUPE0cHA.js} +4 -4
- package/dist/{register.init-p2x-x-f8.js → register.init-Dij0ZrC0.js} +4 -4
- package/dist/{register.maintenance-vVCRwkP4.js → register.maintenance-C0OozXb_.js} +26 -26
- package/dist/{register.maintenance-BgHX_v3B.js → register.maintenance-CkXb4wzI.js} +28 -28
- package/dist/{register.message-gR7FXB8b.js → register.message-C0zBUZj1.js} +5 -5
- package/dist/{register.message-i1zkq7RF.js → register.message-De4xgZGu.js} +6 -6
- package/dist/{register.onboard-ZV_tfZG_.js → register.onboard-B612Ekbb.js} +20 -20
- package/dist/{register.onboard-DfrgIeaZ.js → register.onboard-BFR0fFZX.js} +21 -21
- package/dist/{register.setup-Bsl2gf-B.js → register.setup-Caf3i42W.js} +20 -20
- package/dist/{register.setup-D-hAPrfW.js → register.setup-CtDlzU4V.js} +21 -21
- package/dist/{register.status-health-sessions-7cVPFmZG.js → register.status-health-sessions-B4fHdwpJ.js} +18 -18
- package/dist/{register.status-health-sessions-D5r2mHKj.js → register.status-health-sessions-B_yvC_IP.js} +17 -17
- package/dist/{register.subclis-abFJJY6D.js → register.subclis-7bpaXBdE.js} +37 -29
- package/dist/{reply-CwuYaPUY.js → reply-BNfv4Ttn.js} +9 -9
- package/dist/{run-main-DYoPNoW5.js → run-main-Y3Uf0qp5.js} +24 -24
- package/dist/{runner-CRUcM4a1.js → runner-BN1T_Ne4.js} +1 -1
- package/dist/{runner-CXxgpUTT.js → runner-DZGwjCQ8.js} +1 -1
- package/dist/{runners-BrJPcqyJ.js → runners-C2-1DcXS.js} +7 -7
- package/dist/{runners-BAXojh38.js → runners-GZYUkx-2.js} +7 -7
- package/dist/{security-cli-D4GRgOyQ.js → security-cli-BBZ808uq.js} +3 -3
- package/dist/{security-cli-DWY-vrKB.js → security-cli-Ci9uePi2.js} +3 -3
- package/dist/{server-node-events-7Xu3f7tS.js → server-node-events-BBifAwDM.js} +5 -5
- package/dist/{server-node-events-GvqKSJEV.js → server-node-events-DWWxWJHk.js} +3 -3
- package/dist/{service-Bci1KDFO.js → service-7TtUcMJq.js} +1 -1
- package/dist/{service-0NbohZ8s.js → service-Cu7ieLvZ.js} +1 -1
- package/dist/{session-dirs-HNLtHJ3O.js → session-dirs-CCdhZT0k.js} +3 -3
- package/dist/{session-dirs-BMCU5I9u.js → session-dirs-CIPNs4EK.js} +3 -3
- package/dist/{setup-qSIfHSqC.js → setup-DwAfJSCF.js} +1 -1
- package/dist/{setup-Dldkh1a8.js → setup-RQ3Uj-Tt.js} +1 -1
- package/dist/{shared-D8AUGe9Z.js → shared-CrPSzpAK.js} +1 -1
- package/dist/{shared-DNTO_mJp.js → shared-CzoHL8EG.js} +1 -1
- package/dist/{skills-cli-CM3wAhcI.js → skills-cli-BH0eERa-.js} +1 -1
- package/dist/{skills-cli-r1KS1oIQ.js → skills-cli-DiPfBmlI.js} +1 -1
- package/dist/{skills-install-D9QMhbxP.js → skills-install-Czf3NCmL.js} +3 -3
- package/dist/{skills-install-DlMTcQDE.js → skills-install-DZ5aRsyP.js} +3 -3
- package/dist/{status-_qW_2na1.js → status--mrN_W_U.js} +14 -14
- package/dist/{status-V-dQaLmz.js → status-Br2tlhc-.js} +1 -1
- package/dist/{status-BP3UtuGr.js → status-CwTBZYF8.js} +14 -14
- package/dist/{status-C6MlKGQ4.js → status-pSqbCX9M.js} +1 -1
- package/dist/{status.update-BUCokEjk.js → status.update-DUXJAggs.js} +1 -1
- package/dist/{status.update-P7aU2obf.js → status.update-s8H29Man.js} +1 -1
- package/dist/{subagent-registry-D5OOZhWd.js → subagent-registry-zIjho4Sx.js} +7 -7
- package/dist/{systemd-hints-BgcSCvUs.js → systemd-hints-D6arXULU.js} +4 -4
- package/dist/{systemd-hints-k45i-vVl.js → systemd-hints-DKcj1qba.js} +4 -4
- package/dist/{systemd-linger-BZTSu7IW.js → systemd-linger-CS2529_b.js} +2 -2
- package/dist/{systemd-linger-BGSDHb2w.js → systemd-linger-Doc2XbHm.js} +2 -2
- package/dist/{tui-cli-D7h8fAwG.js → tui-cli-BxmbE0rC.js} +1 -1
- package/dist/{tui-cli-CPhjIczA.js → tui-cli-CQXfzM3c.js} +1 -1
- package/dist/{update-CbOSx9mE.js → update-BQD52CHs.js} +1 -1
- package/dist/{update-blirS9pH.js → update-DCT94pb8.js} +1 -1
- package/dist/{update-check-BJw7yNjU.js → update-check-BrrYgTQO.js} +1 -1
- package/dist/{update-cli-t7J2ZeJa.js → update-cli-D-f0EC6V.js} +37 -37
- package/dist/{update-cli-BIbwcmoL.js → update-cli-DQ-gzfuL.js} +35 -35
- package/dist/{web-QGqe0Uj4.js → web-ComVBhjb.js} +6 -6
- package/dist/{web-By-kRvFi.js → web-CuEg5tFB.js} +2 -2
- package/dist/{web-C9vY5D5V.js → web-Uu6oWOPn.js} +5 -5
- package/dist/{webhooks-cli-BvrLfKKF.js → webhooks-cli-BLnOPXwx.js} +1 -1
- package/dist/{webhooks-cli-D5mvAQYZ.js → webhooks-cli-DdpgWHN2.js} +1 -1
- package/package.json +1 -1
- package/dist/control-ui/_app/immutable/assets/0.z0sOcqs9.css +0 -1
- package/dist/control-ui/_app/immutable/entry/app.BJP-sOIH.js +0 -2
- package/dist/control-ui/_app/immutable/entry/start.PIf-cCdk.js +0 -1
- package/dist/plugin-sdk/web-BfmMxgKj.js +0 -65
- /package/dist/{agents.config-BPyTmpPK.js → agents.config-DHoLdlhC.js} +0 -0
- /package/dist/{agents.config-D731KhB0.js → agents.config-sDVfdzxD.js} +0 -0
- /package/dist/{allow-from-BzKkMBk8.js → allow-from-BWMFfmlZ.js} +0 -0
- /package/dist/{allow-from-Cnsv6ADB.js → allow-from-Cm2uzFk5.js} +0 -0
- /package/dist/{audio-preflight-CZ94CIQw.js → audio-preflight-qssIjQ-F.js} +0 -0
- /package/dist/{auth-choice-legacy-BKXTgyr4.js → auth-choice-legacy-DxCamFcQ.js} +0 -0
- /package/dist/{auth-choice-legacy-hjIR80f8.js → auth-choice-legacy-E4Y1ux1Z.js} +0 -0
- /package/dist/{auth-token-Ci5rpCz5.js → auth-token-DATumkKN.js} +0 -0
- /package/dist/{auth-token-DpULas_n.js → auth-token-NZQN5y-U.js} +0 -0
- /package/dist/{catalog-DAXVp4Hp.js → catalog-2EmOju0o.js} +0 -0
- /package/dist/{channels-status-issues-DanmEwDB.js → channels-status-issues-C4ciBh-M.js} +0 -0
- /package/dist/{channels-status-issues-COukP8Y6.js → channels-status-issues-xbZicfvF.js} +0 -0
- /package/dist/{clipboard-C0XDE_OY.js → clipboard-DHic8nRu.js} +0 -0
- /package/dist/{clipboard-B7hFDaBm.js → clipboard-DuDW3vYo.js} +0 -0
- /package/dist/{config-validation-CQ0H2AMy.js → config-validation-B1DoZdes.js} +0 -0
- /package/dist/{config-validation-CVifNndy.js → config-validation-lwkaqwYa.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{11.Sd6L6Nq2.js → 12.Sd6L6Nq2.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{12.tVVXkjFh.js → 13.tVVXkjFh.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{13.D93_LX58.js → 14.D93_LX58.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{15.CIr4ejir.js → 16.CIr4ejir.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{16.QX2ielYQ.js → 17.QX2ielYQ.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{17.6qOW3iFE.js → 18.6qOW3iFE.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{6.B2G6IFSu.js → 7.B2G6IFSu.js} +0 -0
- /package/dist/control-ui/_app/immutable/nodes/{7.C7FQ9bAP.js → 8.C7FQ9bAP.js} +0 -0
- /package/dist/{control-ui-assets-DVRic6kO.js → control-ui-assets-DnNkT3mI.js} +0 -0
- /package/dist/{control-ui-assets-DDs6rXoP.js → control-ui-assets-LA1g8l2Z.js} +0 -0
- /package/dist/{cron-cli-CI-bQlmZ.js → cron-cli-DAFfUWqL.js} +0 -0
- /package/dist/{daemon-runtime-D4iQgg-u.js → daemon-runtime-diKhAkzH.js} +0 -0
- /package/dist/{dm-policy-shared-CVbsDo_m.js → dm-policy-shared-CwzTKPWR.js} +0 -0
- /package/dist/{dm-policy-shared-ClEAJ4JJ.js → dm-policy-shared-DfAxaWbA.js} +0 -0
- /package/dist/{docs-cli-uSamdGao.js → docs-cli-CmcfAiHF.js} +0 -0
- /package/dist/{docs-cli-BZGTgGrB.js → docs-cli-WYkzyw8T.js} +0 -0
- /package/dist/{format-C7-5KbO2.js → format-CTmea3zf.js} +0 -0
- /package/dist/{format-DBqU4ar8.js → format-wIeBvJLR.js} +0 -0
- /package/dist/{gmail-setup-utils-ZFcCjPly.js → gmail-setup-utils-C4IVVrZO.js} +0 -0
- /package/dist/{gmail-setup-utils-DhpSrQNl.js → gmail-setup-utils-Rfb3FX0J.js} +0 -0
- /package/dist/{health-format-if3Q3vD2.js → health-format-S-b7sQsV.js} +0 -0
- /package/dist/{health-format-BC_LUyJS.js → health-format-azWJfp5e.js} +0 -0
- /package/dist/{helpers-BMqFgDx8.js → helpers-CRF4tyVM.js} +0 -0
- /package/dist/{helpers-BIUvY7vn.js → helpers-Npa3_iL5.js} +0 -0
- /package/dist/{helpers-Ctj8giHC.js → helpers-xdkmLQDw.js} +0 -0
- /package/dist/{ipv4-CVdlCn-2.js → ipv4-C52gDH2M.js} +0 -0
- /package/dist/{ipv4-JtDdwuHX.js → ipv4-Dz51vmVq.js} +0 -0
- /package/dist/{logging-DhPrhYzz.js → logging-C8-t269D.js} +0 -0
- /package/dist/{logging-91m0KJMN.js → logging-D59-dc0L.js} +0 -0
- /package/dist/{login-qr-4D0SkvgJ.js → login-qr-Bhy40v7Q.js} +0 -0
- /package/dist/{login-qr-Cx7POWvS.js → login-qr-DFnPwMt5.js} +0 -0
- /package/dist/{model-param-b-B6FHfgGB.js → model-param-b-CMJBkHox.js} +0 -0
- /package/dist/{model-param-b-YCqgSBAn.js → model-param-b-CtugMKF_.js} +0 -0
- /package/dist/{note-DLcYjdh7.js → note-COLxJd1A.js} +0 -0
- /package/dist/{note-B8g6kl8x.js → note-DewoEWtc.js} +0 -0
- /package/dist/{onboard-config-7cR7QGjL.js → onboard-config-BZIxuZ7r.js} +0 -0
- /package/dist/{onboard-config-DeF7eIAr.js → onboard-config-C5M0ze8s.js} +0 -0
- /package/dist/{parse-log-line-C6yJx969.js → parse-log-line-C2bNfwG3.js} +0 -0
- /package/dist/{parse-log-line-C7ynn72M.js → parse-log-line-DvyqdjCI.js} +0 -0
- /package/dist/{parse-port-C02PeAGr.js → parse-port-BnVa643B.js} +0 -0
- /package/dist/{parse-port-DnJYkByg.js → parse-port-QkaTJ4ru.js} +0 -0
- /package/dist/{path-safety-BEgQ9rq6.js → path-safety-BL0luniQ.js} +0 -0
- /package/dist/{path-safety-CP6a8uVu.js → path-safety-Yi1WxZLl.js} +0 -0
- /package/dist/{plugins-allowlist-CCpr61rO.js → plugins-allowlist-CLU_IjDy.js} +0 -0
- /package/dist/{plugins-allowlist-GsmzvLs7.js → plugins-allowlist-Ci7ynogX.js} +0 -0
- /package/dist/{ports-BsxTf9Nu.js → ports-DCcAHTa_.js} +0 -0
- /package/dist/{program-context-5q-A0wbP.js → program-context-Ds_91dTq.js} +0 -0
- /package/dist/{prompts-NOUgk6FH.js → prompts-C27EhvcG.js} +0 -0
- /package/dist/{prompts-m1IJwIAx.js → prompts-DbHSz44H.js} +0 -0
- /package/dist/{qmd-manager-C06_28MM.js → qmd-manager-3oLU7g8E.js} +0 -0
- /package/dist/{qmd-manager-BvV80INM.js → qmd-manager-C2OgnXnr.js} +0 -0
- /package/dist/{qr-cli-2Fy8laX0.js → qr-cli-C-M7Cr8-.js} +0 -0
- /package/dist/{qr-cli-snlmcHOZ.js → qr-cli-CFf4WwCt.js} +0 -0
- /package/dist/{rpc-B53Lst62.js → rpc-DhW1No2D.js} +0 -0
- /package/dist/{rpc-DOYJ1ToJ.js → rpc-wVn8a1qC.js} +0 -0
- /package/dist/{runtime-guard-Cs_ClFhP.js → runtime-guard-DOhPjoet.js} +0 -0
- /package/dist/{runtime-status-B3l0ReO9.js → runtime-status-D0P5lDGf.js} +0 -0
- /package/dist/{runtime-status-D6c3G7my.js → runtime-status-DKnpLP5Q.js} +0 -0
- /package/dist/{sandbox-cli-B2nWROn6.js → sandbox-cli-BZzO-G-E.js} +0 -0
- /package/dist/{sandbox-cli-C7vkwMnP.js → sandbox-cli-ner0PQZU.js} +0 -0
- /package/dist/{sessions-R_on4Zw8.js → sessions-DKM968hA.js} +0 -0
- /package/dist/{shared-BQtDR2KM.js → shared-C6D7PTpH.js} +0 -0
- /package/dist/{shared-BDiw3_ym.js → shared-TnZhahku.js} +0 -0
- /package/dist/{skill-scanner-Bheo_OM5.js → skill-scanner-CIuC1feQ.js} +0 -0
- /package/dist/{skill-scanner-CwX9i_5k.js → skill-scanner-DnsSvRKK.js} +0 -0
- /package/dist/{status-BUedPCLb.js → status-B8TZsG0t.js} +0 -0
- /package/dist/{status-TtGsgDjP.js → status-DmhrztXn.js} +0 -0
- /package/dist/{system-cli-BlP6wWBy.js → system-cli-BnE7tN9V.js} +0 -0
- /package/dist/{system-cli-BTjyT8Gj.js → system-cli-CWgd7EB8.js} +0 -0
- /package/dist/{system-run-command-BOJwzLhj.js → system-run-command-B8ZYVrSF.js} +0 -0
- /package/dist/{system-run-command-PyKttz6b.js → system-run-command-CPFFvnG3.js} +0 -0
- /package/dist/{systemd-CzUdukgB.js → systemd-DemAzd31.js} +0 -0
- /package/dist/{systemd-0aPKXWO6.js → systemd-DokFcnJ7.js} +0 -0
- /package/dist/{table-CnYUWV1p.js → table-CUa4MMQL.js} +0 -0
- /package/dist/{table-BUWXR5y-.js → table-D6Gdu916.js} +0 -0
- /package/dist/{tui-B3G_mrHY.js → tui-B0NcNHYX.js} +0 -0
- /package/dist/{tui-DVdma27Y.js → tui-pbn3ONIE.js} +0 -0
- /package/dist/{update-check-xr9SsfM1.js → update-check-DnX0d2ne.js} +0 -0
- /package/dist/{vllm-setup-CAy1vRJ-.js → vllm-setup-BNKMIbIo.js} +0 -0
- /package/dist/{vllm-setup-POm89Pya.js → vllm-setup-CDcd_nVe.js} +0 -0
- /package/dist/{widearea-dns-Ch3SpQBE.js → widearea-dns-5AVs3ht0.js} +0 -0
- /package/dist/{widearea-dns-D_JsGJ9_.js → widearea-dns-BiHqFzVe.js} +0 -0
- /package/dist/{workspace-BPoYjLyJ.js → workspace-C1EdIb-r.js} +0 -0
- /package/dist/{workspace-NVPAcG5w.js → workspace-IziJxxVr.js} +0 -0
|
@@ -23,7 +23,7 @@ import { t as rawDataToString } from "./ws-_-dDG5N0.js";
|
|
|
23
23
|
import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-Cmumpn76.js";
|
|
24
24
|
import { a as isValidIPv4, c as pickPrimaryLanIPv4, d as resolveGatewayListenHosts, f as resolveHostName, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, t as isLoopbackAddress, u as resolveGatewayClientIp } from "./net-BxenOPeq.js";
|
|
25
25
|
import { i as normalizeInputProvenance } from "./input-provenance-B7mgmKVR.js";
|
|
26
|
-
import { $n as OPENAI_TTS_VOICES, At as stripLegacyDeliveryFields, B as getTotalPendingReplies, Bn as resolveUserTimezone, Bt as deferGatewayRestartUntilIdle, C as agentCommand, Cn as extractFileContentFromSource, Ct as normalizeOptionalSessionKey, D as createOutboundSendDeps, Dt as migrateLegacyCronPayload, E as resolveAgentOutboundTarget, En as resolveInputFileLimits, Et as normalizeRequiredName, Ft as getHookType, G as resolveCronStyleNow, Gn as resolveTtsAutoMode, Gt as setGatewaySigusr1RestartPolicy, Hn as isTtsEnabled, Ht as isGatewaySigusr1RestartExternallyAllowed, In as isAbortTrigger, It as isExternalHookSession, J as runCliAgent, Jn as resolveTtsProviderOrder, K as getCliSessionId, Kn as resolveTtsConfig, Kt as setPreRestartDeferralCheck, Ln as stopSubagentsForRequester, Lt as applyBrowserProxyPaths, N as buildHistoryContextFromEntries, Nn as formatZonedTimestamp, Nt as buildSafeExternalPrompt, O as createDefaultDeps, On as resolveAgentTimeoutMs, Ot as buildDeliveryFromLegacyPayload, Pt as detectSuspiciousPatterns, Q as resolveAnnounceTargetFromKey, Qn as OPENAI_TTS_MODELS, R as dispatchInboundMessage, Rt as persistBrowserProxyFiles, S as sleepWithAbort, Sn as DEFAULT_INPUT_TIMEOUT_MS, St as normalizeOptionalAgentId, T as resolveAgentDeliveryPlan, Tn as normalizeMimeList, Tt as normalizePayloadToSystemText, U as BARE_SESSION_RESET_PROMPT, Un as isTtsProviderConfigured, Ut as markGatewaySigusr1RestartHandled, Vn as getTtsProvider, Vt as emitGatewayRestart, Wn as resolveTtsApiKey, Wt as scheduleGatewaySigusr1Restart, X as createOpenClawTools, Xn as setTtsProvider, Yn as setTtsEnabled, Yt as loadProviderUsageSummary, Z as readLatestAssistantReply, Zn as textToSpeech, _t as writeRestartSentinel, a as runSubagentAnnounceFlow, ar as waitForActiveTasks, at as resolveSessionDeliveryTarget, b as requestBodyErrorToText, bn as DEFAULT_INPUT_IMAGE_MIMES, bt as normalizeCronJobPatch, c as abortEmbeddedPiRun, d as applyToolPolicyPipeline, dr as stripHeartbeatToken, dt as consumeRestartSentinel, er as getActiveTaskCount, et as ensureOutboundSessionEntry, f as buildDefaultToolPolicyPipelineSteps, fn as applyModelOverrideToSessionEntry, fr as clearAgentRunContext, ft as formatDoctorNonInteractiveHint, g as loadOpenClawPlugins, gn as isSystemEventContextChanged, gr as registerAgentRunContext, hn as enqueueSystemEvent, hr as onAgentEvent, ht as summarizeRestartSentinel, ir as setCommandLaneConcurrency, it as resolveOutboundTarget, k as createOutboundSendDeps$1, kt as hasLegacyDeliveryHints, l as getActiveEmbeddedRunCount, lt as runWithModelFallback, m as getPluginToolMeta, mn as parseVerboseOverride, mr as getAgentRunContext, n as initSubagentRegistry, nr as getTotalQueueSize, o as clearSessionQueues, on as normalizeSendPolicy, or as CommandLane, pn as applyVerboseOverride, pr as emitAgentEvent, pt as formatRestartSentinelMessage, q as setCliSessionId, qn as resolveTtsPrefsPath, qt as normalizeGroupActivation, r as listDescendantRunsForRequester, rn as requestHeartbeatNow, rr as resetAllLanes, s as runEmbeddedPiAgent, sn as resolveSendPolicy, sr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, st as resetDirectoryCache, t as countActiveDescendantRuns, tt as resolveOutboundSessionRoute, u as waitForEmbeddedPiRunEnd, v as handleSlackHttpRequest, vt as normalizeHttpWebhookUrl, wn as extractImageContentFromSource, wt as normalizeOptionalText, x as computeBackoff, xn as DEFAULT_INPUT_MAX_REDIRECTS, xt as inferLegacyName, y as readJsonBodyWithLimit, yn as DEFAULT_INPUT_IMAGE_MAX_BYTES, yt as normalizeCronJobCreate, z as createReplyDispatcher, zt as consumeGatewaySigusr1RestartAuthorization } from "./subagent-registry-
|
|
26
|
+
import { $n as OPENAI_TTS_VOICES, At as stripLegacyDeliveryFields, B as getTotalPendingReplies, Bn as resolveUserTimezone, Bt as deferGatewayRestartUntilIdle, C as agentCommand, Cn as extractFileContentFromSource, Ct as normalizeOptionalSessionKey, D as createOutboundSendDeps, Dt as migrateLegacyCronPayload, E as resolveAgentOutboundTarget, En as resolveInputFileLimits, Et as normalizeRequiredName, Ft as getHookType, G as resolveCronStyleNow, Gn as resolveTtsAutoMode, Gt as setGatewaySigusr1RestartPolicy, Hn as isTtsEnabled, Ht as isGatewaySigusr1RestartExternallyAllowed, In as isAbortTrigger, It as isExternalHookSession, J as runCliAgent, Jn as resolveTtsProviderOrder, K as getCliSessionId, Kn as resolveTtsConfig, Kt as setPreRestartDeferralCheck, Ln as stopSubagentsForRequester, Lt as applyBrowserProxyPaths, N as buildHistoryContextFromEntries, Nn as formatZonedTimestamp, Nt as buildSafeExternalPrompt, O as createDefaultDeps, On as resolveAgentTimeoutMs, Ot as buildDeliveryFromLegacyPayload, Pt as detectSuspiciousPatterns, Q as resolveAnnounceTargetFromKey, Qn as OPENAI_TTS_MODELS, R as dispatchInboundMessage, Rt as persistBrowserProxyFiles, S as sleepWithAbort, Sn as DEFAULT_INPUT_TIMEOUT_MS, St as normalizeOptionalAgentId, T as resolveAgentDeliveryPlan, Tn as normalizeMimeList, Tt as normalizePayloadToSystemText, U as BARE_SESSION_RESET_PROMPT, Un as isTtsProviderConfigured, Ut as markGatewaySigusr1RestartHandled, Vn as getTtsProvider, Vt as emitGatewayRestart, Wn as resolveTtsApiKey, Wt as scheduleGatewaySigusr1Restart, X as createOpenClawTools, Xn as setTtsProvider, Yn as setTtsEnabled, Yt as loadProviderUsageSummary, Z as readLatestAssistantReply, Zn as textToSpeech, _t as writeRestartSentinel, a as runSubagentAnnounceFlow, ar as waitForActiveTasks, at as resolveSessionDeliveryTarget, b as requestBodyErrorToText, bn as DEFAULT_INPUT_IMAGE_MIMES, bt as normalizeCronJobPatch, c as abortEmbeddedPiRun, d as applyToolPolicyPipeline, dr as stripHeartbeatToken, dt as consumeRestartSentinel, er as getActiveTaskCount, et as ensureOutboundSessionEntry, f as buildDefaultToolPolicyPipelineSteps, fn as applyModelOverrideToSessionEntry, fr as clearAgentRunContext, ft as formatDoctorNonInteractiveHint, g as loadOpenClawPlugins, gn as isSystemEventContextChanged, gr as registerAgentRunContext, hn as enqueueSystemEvent, hr as onAgentEvent, ht as summarizeRestartSentinel, ir as setCommandLaneConcurrency, it as resolveOutboundTarget, k as createOutboundSendDeps$1, kt as hasLegacyDeliveryHints, l as getActiveEmbeddedRunCount, lt as runWithModelFallback, m as getPluginToolMeta, mn as parseVerboseOverride, mr as getAgentRunContext, n as initSubagentRegistry, nr as getTotalQueueSize, o as clearSessionQueues, on as normalizeSendPolicy, or as CommandLane, pn as applyVerboseOverride, pr as emitAgentEvent, pt as formatRestartSentinelMessage, q as setCliSessionId, qn as resolveTtsPrefsPath, qt as normalizeGroupActivation, r as listDescendantRunsForRequester, rn as requestHeartbeatNow, rr as resetAllLanes, s as runEmbeddedPiAgent, sn as resolveSendPolicy, sr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, st as resetDirectoryCache, t as countActiveDescendantRuns, tt as resolveOutboundSessionRoute, u as waitForEmbeddedPiRunEnd, v as handleSlackHttpRequest, vt as normalizeHttpWebhookUrl, wn as extractImageContentFromSource, wt as normalizeOptionalText, x as computeBackoff, xn as DEFAULT_INPUT_MAX_REDIRECTS, xt as inferLegacyName, y as readJsonBodyWithLimit, yn as DEFAULT_INPUT_IMAGE_MAX_BYTES, yt as normalizeCronJobCreate, z as createReplyDispatcher, zt as consumeGatewaySigusr1RestartAuthorization } from "./subagent-registry-zIjho4Sx.js";
|
|
27
27
|
import { E as resolveSessionResetPolicy, F as resolveMainSessionKeyFromConfig, G as mergeDeliveryContext, L as snapshotSessionOrigin, M as resolveAgentMainSessionKey, N as resolveExplicitAgentSessionKey, P as resolveMainSessionKey, U as deliveryContextFromSession, V as cleanStaleLockFiles, _ as readSessionMessages, a as loadSessionStore, b as resolveSessionTranscriptCandidates, g as capArrayByJsonBytes, h as archiveSessionTranscripts, j as canonicalizeMainSessionAlias, m as archiveFileOnDisk, n as parseSessionThreadInfo, q as normalizeSessionDeliveryFields, t as extractDeliveryInfo, u as updateSessionStore, v as readSessionPreviewItemsFromTranscript, w as evaluateSessionFreshness, x as stripEnvelopeFromMessages } from "./sessions-CZFgqqFB.js";
|
|
28
28
|
import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-DgTg5We6.js";
|
|
29
29
|
import { n as normalizeWhatsAppTarget } from "./normalize-JhFp-UPh.js";
|
|
@@ -62,10 +62,10 @@ import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveS
|
|
|
62
62
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-DTY6T_br.js";
|
|
63
63
|
import "./models-config-CBf4GFNL.js";
|
|
64
64
|
import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-eqKSCWjU.js";
|
|
65
|
-
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-
|
|
65
|
+
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-oTchxxCo.js";
|
|
66
66
|
import { n as resolveMemorySearchConfig } from "./manager-BVmTvJv5.js";
|
|
67
67
|
import "./gemini-auth-BNz8ukjq.js";
|
|
68
|
-
import "./sqlite-BymrTufT.js";
|
|
68
|
+
import { t as requireNodeSqlite } from "./sqlite-BymrTufT.js";
|
|
69
69
|
import "./retry-CpQnihk7.js";
|
|
70
70
|
import "./chunk-QdCd8YF1.js";
|
|
71
71
|
import "./markdown-tables-DQ49Pa3m.js";
|
|
@@ -112,45 +112,45 @@ import { i as onHeartbeatEvent, r as getLastHeartbeatEvent, t as resolveHeartbea
|
|
|
112
112
|
import { t as ensureOpenClawCliOnPath } from "./path-env-Co_fin1B.js";
|
|
113
113
|
import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-B8QrxStA.js";
|
|
114
114
|
import { n as inheritOptionFromParent } from "./command-options-6wdtBBWB.js";
|
|
115
|
-
import { t as buildChannelUiCatalog } from "./catalog-
|
|
116
|
-
import { t as WizardCancelledError } from "./prompts-
|
|
117
|
-
import { t as resolveChannelDefaultAccountId } from "./helpers-
|
|
118
|
-
import { t as applyPluginAutoEnable } from "./plugin-auto-enable-
|
|
119
|
-
import "./install-safe-path-
|
|
120
|
-
import "./skill-scanner-
|
|
121
|
-
import { t as buildChannelAccountSnapshot } from "./status-
|
|
122
|
-
import "./channels-status-issues-
|
|
123
|
-
import "./daemon-runtime-
|
|
124
|
-
import "./runtime-guard-
|
|
125
|
-
import "./systemd-
|
|
126
|
-
import "./service-
|
|
127
|
-
import "./lifecycle-core-
|
|
128
|
-
import "./systemd-hints-
|
|
129
|
-
import { t as parsePort$1 } from "./parse-port-
|
|
130
|
-
import "./runners-
|
|
131
|
-
import "./diagnostics-
|
|
132
|
-
import { n as addGatewayServiceCommands } from "./daemon-cli-
|
|
133
|
-
import "./table-
|
|
134
|
-
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-
|
|
135
|
-
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-
|
|
136
|
-
import { c as probeGateway, o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-
|
|
137
|
-
import { t as discoverGatewayBeacons } from "./bonjour-discovery-
|
|
138
|
-
import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-
|
|
139
|
-
import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-
|
|
140
|
-
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-
|
|
141
|
-
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-
|
|
142
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
143
|
-
import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-
|
|
144
|
-
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-
|
|
145
|
-
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, s as loadAgentIdentityFromWorkspace, t as applyAgentConfig } from "./agents.config-
|
|
146
|
-
import "./dm-policy-shared-
|
|
147
|
-
import "./node-service-
|
|
148
|
-
import "./status.update-
|
|
149
|
-
import { n as validateSystemRunCommandConsistency, t as formatExecCommand } from "./system-run-command-
|
|
150
|
-
import { t as installSkill } from "./skills-install-
|
|
151
|
-
import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-
|
|
152
|
-
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-
|
|
153
|
-
import { n as forceFreePortAndWait } from "./ports-
|
|
115
|
+
import { t as buildChannelUiCatalog } from "./catalog-2EmOju0o.js";
|
|
116
|
+
import { t as WizardCancelledError } from "./prompts-DbHSz44H.js";
|
|
117
|
+
import { t as resolveChannelDefaultAccountId } from "./helpers-Npa3_iL5.js";
|
|
118
|
+
import { t as applyPluginAutoEnable } from "./plugin-auto-enable-Co1CxSEm.js";
|
|
119
|
+
import "./install-safe-path-C__62m3G.js";
|
|
120
|
+
import "./skill-scanner-CIuC1feQ.js";
|
|
121
|
+
import { t as buildChannelAccountSnapshot } from "./status-B8TZsG0t.js";
|
|
122
|
+
import "./channels-status-issues-C4ciBh-M.js";
|
|
123
|
+
import "./daemon-runtime-DnzXuU_x.js";
|
|
124
|
+
import "./runtime-guard-DOhPjoet.js";
|
|
125
|
+
import "./systemd-DemAzd31.js";
|
|
126
|
+
import "./service-Cu7ieLvZ.js";
|
|
127
|
+
import "./lifecycle-core-D-idKcJT.js";
|
|
128
|
+
import "./systemd-hints-D6arXULU.js";
|
|
129
|
+
import { t as parsePort$1 } from "./parse-port-QkaTJ4ru.js";
|
|
130
|
+
import "./runners-C2-1DcXS.js";
|
|
131
|
+
import "./diagnostics-D3Hu1kBI.js";
|
|
132
|
+
import { n as addGatewayServiceCommands } from "./daemon-cli-Bpc5ZmKC.js";
|
|
133
|
+
import "./table-CUa4MMQL.js";
|
|
134
|
+
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BiHqFzVe.js";
|
|
135
|
+
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-CrPSzpAK.js";
|
|
136
|
+
import { c as probeGateway, o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-DkAW6KBR.js";
|
|
137
|
+
import { t as discoverGatewayBeacons } from "./bonjour-discovery-DZl6ArZI.js";
|
|
138
|
+
import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-CwTBZYF8.js";
|
|
139
|
+
import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-CuD8XoQy.js";
|
|
140
|
+
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DnNkT3mI.js";
|
|
141
|
+
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-BrrYgTQO.js";
|
|
142
|
+
import { t as runOnboardingWizard } from "./onboarding-D5BRyKY0.js";
|
|
143
|
+
import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-DgHzRUEl.js";
|
|
144
|
+
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-C4IVVrZO.js";
|
|
145
|
+
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, s as loadAgentIdentityFromWorkspace, t as applyAgentConfig } from "./agents.config-DHoLdlhC.js";
|
|
146
|
+
import "./dm-policy-shared-DfAxaWbA.js";
|
|
147
|
+
import "./node-service-BuwCiN6g.js";
|
|
148
|
+
import "./status.update-DUXJAggs.js";
|
|
149
|
+
import { n as validateSystemRunCommandConsistency, t as formatExecCommand } from "./system-run-command-CPFFvnG3.js";
|
|
150
|
+
import { t as installSkill } from "./skills-install-Czf3NCmL.js";
|
|
151
|
+
import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-CCdhZT0k.js";
|
|
152
|
+
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-IziJxxVr.js";
|
|
153
|
+
import { n as forceFreePortAndWait } from "./ports-DCcAHTa_.js";
|
|
154
154
|
import { spawn, spawnSync } from "node:child_process";
|
|
155
155
|
import os from "node:os";
|
|
156
156
|
import path from "node:path";
|
|
@@ -912,7 +912,7 @@ function truncateCloseReason(reason, maxBytes = CLOSE_REASON_MAX_BYTES) {
|
|
|
912
912
|
|
|
913
913
|
//#endregion
|
|
914
914
|
//#region src/infra/exec-approval-forwarder.ts
|
|
915
|
-
const log$
|
|
915
|
+
const log$8 = createSubsystemLogger("gateway/exec-approvals");
|
|
916
916
|
const DEFAULT_MODE = "session";
|
|
917
917
|
function normalizeMode(mode) {
|
|
918
918
|
return mode ?? DEFAULT_MODE;
|
|
@@ -1030,7 +1030,7 @@ async function deliverToTargets(params) {
|
|
|
1030
1030
|
payloads: [{ text: params.text }]
|
|
1031
1031
|
});
|
|
1032
1032
|
} catch (err) {
|
|
1033
|
-
log$
|
|
1033
|
+
log$8.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
|
|
1034
1034
|
}
|
|
1035
1035
|
});
|
|
1036
1036
|
await Promise.allSettled(deliveries);
|
|
@@ -1265,7 +1265,7 @@ function scheduleGatewayUpdateCheck(params) {
|
|
|
1265
1265
|
|
|
1266
1266
|
//#endregion
|
|
1267
1267
|
//#region src/gateway/channel-health-monitor.ts
|
|
1268
|
-
const log$
|
|
1268
|
+
const log$7 = createSubsystemLogger("gateway/health-monitor");
|
|
1269
1269
|
const DEFAULT_CHECK_INTERVAL_MS = 5 * 6e4;
|
|
1270
1270
|
const DEFAULT_STARTUP_GRACE_MS = 6e4;
|
|
1271
1271
|
const DEFAULT_COOLDOWN_CYCLES = 2;
|
|
@@ -1314,11 +1314,11 @@ function startChannelHealthMonitor(deps) {
|
|
|
1314
1314
|
if (now - record.lastRestartAt <= cooldownMs) continue;
|
|
1315
1315
|
pruneOldRestarts(record, now);
|
|
1316
1316
|
if (record.restartsThisHour.length >= maxRestartsPerHour) {
|
|
1317
|
-
log$
|
|
1317
|
+
log$7.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
|
|
1318
1318
|
continue;
|
|
1319
1319
|
}
|
|
1320
1320
|
const reason = !status.running ? status.reconnectAttempts && status.reconnectAttempts >= 10 ? "gave-up" : "stopped" : "stuck";
|
|
1321
|
-
log$
|
|
1321
|
+
log$7.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
|
|
1322
1322
|
try {
|
|
1323
1323
|
if (status.running) await channelManager.stopChannel(channelId, accountId);
|
|
1324
1324
|
channelManager.resetRestartAttempts(channelId, accountId);
|
|
@@ -1327,7 +1327,7 @@ function startChannelHealthMonitor(deps) {
|
|
|
1327
1327
|
record.restartsThisHour.push({ at: now });
|
|
1328
1328
|
restartRecords.set(key, record);
|
|
1329
1329
|
} catch (err) {
|
|
1330
|
-
log$
|
|
1330
|
+
log$7.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
|
|
1331
1331
|
}
|
|
1332
1332
|
}
|
|
1333
1333
|
}
|
|
@@ -1347,7 +1347,7 @@ function startChannelHealthMonitor(deps) {
|
|
|
1347
1347
|
abortSignal?.addEventListener("abort", stop, { once: true });
|
|
1348
1348
|
timer = setInterval(() => void runCheck(), checkIntervalMs);
|
|
1349
1349
|
if (typeof timer === "object" && "unref" in timer) timer.unref();
|
|
1350
|
-
log$
|
|
1350
|
+
log$7.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, grace: ${Math.round(startupGraceMs / 1e3)}s)`);
|
|
1351
1351
|
}
|
|
1352
1352
|
return { stop };
|
|
1353
1353
|
}
|
|
@@ -2521,7 +2521,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
|
|
|
2521
2521
|
* Automatically starts `gog gmail watch serve` when the gateway starts,
|
|
2522
2522
|
* if hooks.gmail is configured with an account.
|
|
2523
2523
|
*/
|
|
2524
|
-
const log$
|
|
2524
|
+
const log$6 = createSubsystemLogger("gmail-watcher");
|
|
2525
2525
|
const ADDRESS_IN_USE_RE = /address already in use|EADDRINUSE/i;
|
|
2526
2526
|
function isAddressInUseError(line) {
|
|
2527
2527
|
return ADDRESS_IN_USE_RE.test(line);
|
|
@@ -2545,13 +2545,13 @@ async function startGmailWatch(cfg) {
|
|
|
2545
2545
|
const result = await runCommandWithTimeout(args, { timeoutMs: 12e4 });
|
|
2546
2546
|
if (result.code !== 0) {
|
|
2547
2547
|
const message = result.stderr || result.stdout || "gog watch start failed";
|
|
2548
|
-
log$
|
|
2548
|
+
log$6.error(`watch start failed: ${message}`);
|
|
2549
2549
|
return false;
|
|
2550
2550
|
}
|
|
2551
|
-
log$
|
|
2551
|
+
log$6.info(`watch started for ${cfg.account}`);
|
|
2552
2552
|
return true;
|
|
2553
2553
|
} catch (err) {
|
|
2554
|
-
log$
|
|
2554
|
+
log$6.error(`watch start error: ${String(err)}`);
|
|
2555
2555
|
return false;
|
|
2556
2556
|
}
|
|
2557
2557
|
}
|
|
@@ -2560,7 +2560,7 @@ async function startGmailWatch(cfg) {
|
|
|
2560
2560
|
*/
|
|
2561
2561
|
function spawnGogServe(cfg) {
|
|
2562
2562
|
const args = buildGogWatchServeArgs(cfg);
|
|
2563
|
-
log$
|
|
2563
|
+
log$6.info(`starting gog ${args.join(" ")}`);
|
|
2564
2564
|
let addressInUse = false;
|
|
2565
2565
|
const child = spawn("gog", args, {
|
|
2566
2566
|
stdio: [
|
|
@@ -2572,25 +2572,25 @@ function spawnGogServe(cfg) {
|
|
|
2572
2572
|
});
|
|
2573
2573
|
child.stdout?.on("data", (data) => {
|
|
2574
2574
|
const line = data.toString().trim();
|
|
2575
|
-
if (line) log$
|
|
2575
|
+
if (line) log$6.info(`[gog] ${line}`);
|
|
2576
2576
|
});
|
|
2577
2577
|
child.stderr?.on("data", (data) => {
|
|
2578
2578
|
const line = data.toString().trim();
|
|
2579
2579
|
if (!line) return;
|
|
2580
2580
|
if (isAddressInUseError(line)) addressInUse = true;
|
|
2581
|
-
log$
|
|
2581
|
+
log$6.warn(`[gog] ${line}`);
|
|
2582
2582
|
});
|
|
2583
2583
|
child.on("error", (err) => {
|
|
2584
|
-
log$
|
|
2584
|
+
log$6.error(`gog process error: ${String(err)}`);
|
|
2585
2585
|
});
|
|
2586
2586
|
child.on("exit", (code, signal) => {
|
|
2587
2587
|
if (shuttingDown) return;
|
|
2588
2588
|
if (addressInUse) {
|
|
2589
|
-
log$
|
|
2589
|
+
log$6.warn("gog serve failed to bind (address already in use); stopping restarts. Another watcher is likely running. Set OPENCLAW_SKIP_GMAIL_WATCHER=1 or stop the other process.");
|
|
2590
2590
|
watcherProcess = null;
|
|
2591
2591
|
return;
|
|
2592
2592
|
}
|
|
2593
|
-
log$
|
|
2593
|
+
log$6.warn(`gog exited (code=${code}, signal=${signal}); restarting in 5s`);
|
|
2594
2594
|
watcherProcess = null;
|
|
2595
2595
|
setTimeout(() => {
|
|
2596
2596
|
if (shuttingDown || !currentConfig) return;
|
|
@@ -2630,15 +2630,15 @@ async function startGmailWatcher(cfg) {
|
|
|
2630
2630
|
port: runtimeConfig.serve.port,
|
|
2631
2631
|
target: runtimeConfig.tailscale.target
|
|
2632
2632
|
});
|
|
2633
|
-
log$
|
|
2633
|
+
log$6.info(`tailscale ${runtimeConfig.tailscale.mode} configured for port ${runtimeConfig.serve.port}`);
|
|
2634
2634
|
} catch (err) {
|
|
2635
|
-
log$
|
|
2635
|
+
log$6.error(`tailscale setup failed: ${String(err)}`);
|
|
2636
2636
|
return {
|
|
2637
2637
|
started: false,
|
|
2638
2638
|
reason: `tailscale setup failed: ${String(err)}`
|
|
2639
2639
|
};
|
|
2640
2640
|
}
|
|
2641
|
-
if (!await startGmailWatch(runtimeConfig)) log$
|
|
2641
|
+
if (!await startGmailWatch(runtimeConfig)) log$6.warn("gmail watch start failed, but continuing with serve");
|
|
2642
2642
|
shuttingDown = false;
|
|
2643
2643
|
watcherProcess = spawnGogServe(runtimeConfig);
|
|
2644
2644
|
const renewMs = runtimeConfig.renewEveryMinutes * 6e4;
|
|
@@ -2646,7 +2646,7 @@ async function startGmailWatcher(cfg) {
|
|
|
2646
2646
|
if (shuttingDown) return;
|
|
2647
2647
|
startGmailWatch(runtimeConfig);
|
|
2648
2648
|
}, renewMs);
|
|
2649
|
-
log$
|
|
2649
|
+
log$6.info(`gmail watcher started for ${runtimeConfig.account} (renew every ${runtimeConfig.renewEveryMinutes}m)`);
|
|
2650
2650
|
return { started: true };
|
|
2651
2651
|
}
|
|
2652
2652
|
/**
|
|
@@ -2659,7 +2659,7 @@ async function stopGmailWatcher() {
|
|
|
2659
2659
|
renewInterval = null;
|
|
2660
2660
|
}
|
|
2661
2661
|
if (watcherProcess) {
|
|
2662
|
-
log$
|
|
2662
|
+
log$6.info("stopping gmail watcher");
|
|
2663
2663
|
watcherProcess.kill("SIGTERM");
|
|
2664
2664
|
await new Promise((resolve) => {
|
|
2665
2665
|
const timeout = setTimeout(() => {
|
|
@@ -2674,7 +2674,7 @@ async function stopGmailWatcher() {
|
|
|
2674
2674
|
watcherProcess = null;
|
|
2675
2675
|
}
|
|
2676
2676
|
currentConfig = null;
|
|
2677
|
-
log$
|
|
2677
|
+
log$6.info("gmail watcher stopped");
|
|
2678
2678
|
}
|
|
2679
2679
|
|
|
2680
2680
|
//#endregion
|
|
@@ -6431,7 +6431,10 @@ const BASE_METHODS = [
|
|
|
6431
6431
|
"browser.request",
|
|
6432
6432
|
"chat.history",
|
|
6433
6433
|
"chat.abort",
|
|
6434
|
-
"chat.send"
|
|
6434
|
+
"chat.send",
|
|
6435
|
+
"audit.query",
|
|
6436
|
+
"audit.stats",
|
|
6437
|
+
"audit.prune"
|
|
6435
6438
|
];
|
|
6436
6439
|
function listGatewayMethods() {
|
|
6437
6440
|
const channelMethods = listChannelPlugins().flatMap((plugin) => plugin.gatewayMethods ?? []);
|
|
@@ -6459,6 +6462,200 @@ const GATEWAY_EVENTS = [
|
|
|
6459
6462
|
GATEWAY_EVENT_UPDATE_AVAILABLE
|
|
6460
6463
|
];
|
|
6461
6464
|
|
|
6465
|
+
//#endregion
|
|
6466
|
+
//#region src/audit/audit-logger.ts
|
|
6467
|
+
/**
|
|
6468
|
+
* Audit Logger — Phase 1 Security Foundation
|
|
6469
|
+
*
|
|
6470
|
+
* Singleton service for writing, querying, and pruning audit log events.
|
|
6471
|
+
* Uses node:sqlite (DatabaseSync) following the same pattern as memory/manager.ts.
|
|
6472
|
+
*/
|
|
6473
|
+
const log$5 = createSubsystemLogger("audit");
|
|
6474
|
+
const SCHEMA_SQL = `
|
|
6475
|
+
CREATE TABLE IF NOT EXISTS audit_log (
|
|
6476
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
6477
|
+
timestamp TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
|
|
6478
|
+
actor_type TEXT NOT NULL,
|
|
6479
|
+
actor_id TEXT,
|
|
6480
|
+
action TEXT NOT NULL,
|
|
6481
|
+
resource TEXT,
|
|
6482
|
+
details TEXT,
|
|
6483
|
+
ip TEXT,
|
|
6484
|
+
result TEXT NOT NULL DEFAULT 'success',
|
|
6485
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
6486
|
+
);
|
|
6487
|
+
CREATE INDEX IF NOT EXISTS idx_audit_timestamp ON audit_log(created_at);
|
|
6488
|
+
CREATE INDEX IF NOT EXISTS idx_audit_actor ON audit_log(actor_id);
|
|
6489
|
+
CREATE INDEX IF NOT EXISTS idx_audit_action ON audit_log(action);
|
|
6490
|
+
`;
|
|
6491
|
+
let instance = null;
|
|
6492
|
+
var AuditLogger = class AuditLogger {
|
|
6493
|
+
constructor(opts) {
|
|
6494
|
+
this.db = null;
|
|
6495
|
+
this.pruneTimer = null;
|
|
6496
|
+
this.initialized = false;
|
|
6497
|
+
const stateDir = resolveStateDir(process.env);
|
|
6498
|
+
this.dbPath = opts?.dbPath ?? path.join(stateDir, "audit.db");
|
|
6499
|
+
this.retentionDays = opts?.retentionDays ?? 90;
|
|
6500
|
+
}
|
|
6501
|
+
/** Initialize the database and schema. Safe to call multiple times. */
|
|
6502
|
+
init() {
|
|
6503
|
+
if (this.initialized) return;
|
|
6504
|
+
try {
|
|
6505
|
+
const dir = path.dirname(this.dbPath);
|
|
6506
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
6507
|
+
const { DatabaseSync: SqliteDatabase } = requireNodeSqlite();
|
|
6508
|
+
this.db = new SqliteDatabase(this.dbPath);
|
|
6509
|
+
this.db.exec(SCHEMA_SQL);
|
|
6510
|
+
this.initialized = true;
|
|
6511
|
+
this.pruneTimer = setInterval(() => {
|
|
6512
|
+
try {
|
|
6513
|
+
this.prune(this.retentionDays);
|
|
6514
|
+
} catch (err) {
|
|
6515
|
+
log$5.warn(`auto-prune failed: ${String(err)}`);
|
|
6516
|
+
}
|
|
6517
|
+
}, 360 * 60 * 1e3);
|
|
6518
|
+
if (this.pruneTimer?.unref) this.pruneTimer.unref();
|
|
6519
|
+
try {
|
|
6520
|
+
this.prune(this.retentionDays);
|
|
6521
|
+
} catch {}
|
|
6522
|
+
log$5.info(`audit log initialized at ${this.dbPath}`);
|
|
6523
|
+
} catch (err) {
|
|
6524
|
+
log$5.warn(`audit logger failed to initialize: ${String(err)}`);
|
|
6525
|
+
this.initialized = false;
|
|
6526
|
+
}
|
|
6527
|
+
}
|
|
6528
|
+
/** Log an audit event. Non-blocking, never throws. */
|
|
6529
|
+
log(event) {
|
|
6530
|
+
try {
|
|
6531
|
+
if (!this.db) return;
|
|
6532
|
+
this.db.prepare(`INSERT INTO audit_log (actor_type, actor_id, action, resource, details, ip, result)
|
|
6533
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`).run(event.actor_type, event.actor_id ?? null, event.action, event.resource ?? null, event.details ?? null, event.ip ?? null, event.result ?? "success");
|
|
6534
|
+
} catch (err) {
|
|
6535
|
+
log$5.warn(`audit log write failed: ${String(err)}`);
|
|
6536
|
+
}
|
|
6537
|
+
}
|
|
6538
|
+
/** Query audit entries with filters. */
|
|
6539
|
+
query(filters = {}) {
|
|
6540
|
+
if (!this.db) return [];
|
|
6541
|
+
try {
|
|
6542
|
+
const conditions = [];
|
|
6543
|
+
const params = [];
|
|
6544
|
+
if (filters.action) {
|
|
6545
|
+
conditions.push("action = ?");
|
|
6546
|
+
params.push(filters.action);
|
|
6547
|
+
}
|
|
6548
|
+
if (filters.actor) {
|
|
6549
|
+
conditions.push("actor_id = ?");
|
|
6550
|
+
params.push(filters.actor);
|
|
6551
|
+
}
|
|
6552
|
+
if (filters.since != null) {
|
|
6553
|
+
conditions.push("created_at >= ?");
|
|
6554
|
+
params.push(filters.since);
|
|
6555
|
+
}
|
|
6556
|
+
if (filters.until != null) {
|
|
6557
|
+
conditions.push("created_at <= ?");
|
|
6558
|
+
params.push(filters.until);
|
|
6559
|
+
}
|
|
6560
|
+
if (filters.result) {
|
|
6561
|
+
conditions.push("result = ?");
|
|
6562
|
+
params.push(filters.result);
|
|
6563
|
+
}
|
|
6564
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
|
|
6565
|
+
const limit = Math.min(filters.limit ?? 100, 1e3);
|
|
6566
|
+
const offset = filters.offset ?? 0;
|
|
6567
|
+
const sql = `SELECT * FROM audit_log ${where} ORDER BY created_at DESC LIMIT ? OFFSET ?`;
|
|
6568
|
+
params.push(limit, offset);
|
|
6569
|
+
return this.db.prepare(sql).all(...params);
|
|
6570
|
+
} catch (err) {
|
|
6571
|
+
log$5.warn(`audit query failed: ${String(err)}`);
|
|
6572
|
+
return [];
|
|
6573
|
+
}
|
|
6574
|
+
}
|
|
6575
|
+
/** Get summary statistics. */
|
|
6576
|
+
stats() {
|
|
6577
|
+
if (!this.db) return {
|
|
6578
|
+
total: 0,
|
|
6579
|
+
byAction: {},
|
|
6580
|
+
byActor: {},
|
|
6581
|
+
failures: 0,
|
|
6582
|
+
oldestTimestamp: null,
|
|
6583
|
+
newestTimestamp: null
|
|
6584
|
+
};
|
|
6585
|
+
try {
|
|
6586
|
+
const totalRow = this.db.prepare("SELECT COUNT(*) as cnt FROM audit_log").get();
|
|
6587
|
+
const failureRow = this.db.prepare("SELECT COUNT(*) as cnt FROM audit_log WHERE result != 'success'").get();
|
|
6588
|
+
const actionRows = this.db.prepare("SELECT action, COUNT(*) as cnt FROM audit_log GROUP BY action ORDER BY cnt DESC LIMIT 50").all();
|
|
6589
|
+
const actorRows = this.db.prepare("SELECT actor_id, COUNT(*) as cnt FROM audit_log WHERE actor_id IS NOT NULL GROUP BY actor_id ORDER BY cnt DESC LIMIT 50").all();
|
|
6590
|
+
const oldestRow = this.db.prepare("SELECT timestamp FROM audit_log ORDER BY created_at ASC LIMIT 1").get();
|
|
6591
|
+
const newestRow = this.db.prepare("SELECT timestamp FROM audit_log ORDER BY created_at DESC LIMIT 1").get();
|
|
6592
|
+
const byAction = {};
|
|
6593
|
+
for (const row of actionRows) byAction[row.action] = row.cnt;
|
|
6594
|
+
const byActor = {};
|
|
6595
|
+
for (const row of actorRows) byActor[row.actor_id] = row.cnt;
|
|
6596
|
+
return {
|
|
6597
|
+
total: totalRow.cnt,
|
|
6598
|
+
byAction,
|
|
6599
|
+
byActor,
|
|
6600
|
+
failures: failureRow.cnt,
|
|
6601
|
+
oldestTimestamp: oldestRow?.timestamp ?? null,
|
|
6602
|
+
newestTimestamp: newestRow?.timestamp ?? null
|
|
6603
|
+
};
|
|
6604
|
+
} catch (err) {
|
|
6605
|
+
log$5.warn(`audit stats failed: ${String(err)}`);
|
|
6606
|
+
return {
|
|
6607
|
+
total: 0,
|
|
6608
|
+
byAction: {},
|
|
6609
|
+
byActor: {},
|
|
6610
|
+
failures: 0,
|
|
6611
|
+
oldestTimestamp: null,
|
|
6612
|
+
newestTimestamp: null
|
|
6613
|
+
};
|
|
6614
|
+
}
|
|
6615
|
+
}
|
|
6616
|
+
/** Delete entries older than the given number of days. Returns count deleted. */
|
|
6617
|
+
prune(olderThanDays) {
|
|
6618
|
+
if (!this.db) return 0;
|
|
6619
|
+
try {
|
|
6620
|
+
const cutoff = Math.floor(Date.now() / 1e3) - olderThanDays * 86400;
|
|
6621
|
+
const deleted = this.db.prepare("DELETE FROM audit_log WHERE created_at < ?").run(cutoff).changes ?? 0;
|
|
6622
|
+
if (deleted > 0) log$5.info(`pruned ${deleted} audit entries older than ${olderThanDays} days`);
|
|
6623
|
+
return deleted;
|
|
6624
|
+
} catch (err) {
|
|
6625
|
+
log$5.warn(`audit prune failed: ${String(err)}`);
|
|
6626
|
+
return 0;
|
|
6627
|
+
}
|
|
6628
|
+
}
|
|
6629
|
+
/** Graceful shutdown. */
|
|
6630
|
+
close() {
|
|
6631
|
+
if (this.pruneTimer) {
|
|
6632
|
+
clearInterval(this.pruneTimer);
|
|
6633
|
+
this.pruneTimer = null;
|
|
6634
|
+
}
|
|
6635
|
+
try {
|
|
6636
|
+
this.db?.close();
|
|
6637
|
+
} catch {}
|
|
6638
|
+
this.db = null;
|
|
6639
|
+
this.initialized = false;
|
|
6640
|
+
}
|
|
6641
|
+
/** Get singleton instance. */
|
|
6642
|
+
static getInstance() {
|
|
6643
|
+
if (!instance) instance = new AuditLogger();
|
|
6644
|
+
return instance;
|
|
6645
|
+
}
|
|
6646
|
+
/** Initialize singleton. Call at gateway startup. */
|
|
6647
|
+
static init(opts) {
|
|
6648
|
+
if (!instance) instance = new AuditLogger(opts);
|
|
6649
|
+
instance.init();
|
|
6650
|
+
return instance;
|
|
6651
|
+
}
|
|
6652
|
+
/** Destroy singleton (for testing). */
|
|
6653
|
+
static destroy() {
|
|
6654
|
+
instance?.close();
|
|
6655
|
+
instance = null;
|
|
6656
|
+
}
|
|
6657
|
+
};
|
|
6658
|
+
|
|
6462
6659
|
//#endregion
|
|
6463
6660
|
//#region src/gateway/control-plane-audit.ts
|
|
6464
6661
|
function normalizePart$1(value, fallback) {
|
|
@@ -8321,6 +8518,58 @@ const agentsHandlers = {
|
|
|
8321
8518
|
}
|
|
8322
8519
|
};
|
|
8323
8520
|
|
|
8521
|
+
//#endregion
|
|
8522
|
+
//#region src/gateway/server-methods/audit.ts
|
|
8523
|
+
/**
|
|
8524
|
+
* Audit RPC method handlers (#6)
|
|
8525
|
+
* Registers audit.query and audit.stats as gateway RPC methods.
|
|
8526
|
+
*/
|
|
8527
|
+
const auditHandlers = {
|
|
8528
|
+
"audit.query": ({ params, respond }) => {
|
|
8529
|
+
try {
|
|
8530
|
+
const logger = AuditLogger.getInstance();
|
|
8531
|
+
const filters = {};
|
|
8532
|
+
if (typeof params.action === "string") filters.action = params.action;
|
|
8533
|
+
if (typeof params.actor === "string") filters.actor = params.actor;
|
|
8534
|
+
if (typeof params.since === "number") filters.since = params.since;
|
|
8535
|
+
if (typeof params.until === "number") filters.until = params.until;
|
|
8536
|
+
if (typeof params.result === "string") filters.result = params.result;
|
|
8537
|
+
if (typeof params.limit === "number") filters.limit = params.limit;
|
|
8538
|
+
if (typeof params.offset === "number") filters.offset = params.offset;
|
|
8539
|
+
const entries = logger.query(filters);
|
|
8540
|
+
respond(true, {
|
|
8541
|
+
entries,
|
|
8542
|
+
count: entries.length
|
|
8543
|
+
}, void 0);
|
|
8544
|
+
} catch (err) {
|
|
8545
|
+
respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `audit query failed: ${String(err)}`));
|
|
8546
|
+
}
|
|
8547
|
+
},
|
|
8548
|
+
"audit.stats": ({ respond }) => {
|
|
8549
|
+
try {
|
|
8550
|
+
respond(true, AuditLogger.getInstance().stats(), void 0);
|
|
8551
|
+
} catch (err) {
|
|
8552
|
+
respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `audit stats failed: ${String(err)}`));
|
|
8553
|
+
}
|
|
8554
|
+
},
|
|
8555
|
+
"audit.prune": ({ params, respond }) => {
|
|
8556
|
+
try {
|
|
8557
|
+
const logger = AuditLogger.getInstance();
|
|
8558
|
+
const olderThanDays = typeof params.olderThanDays === "number" ? params.olderThanDays : 90;
|
|
8559
|
+
if (olderThanDays < 1) {
|
|
8560
|
+
respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "olderThanDays must be >= 1"));
|
|
8561
|
+
return;
|
|
8562
|
+
}
|
|
8563
|
+
respond(true, {
|
|
8564
|
+
deleted: logger.prune(olderThanDays),
|
|
8565
|
+
olderThanDays
|
|
8566
|
+
}, void 0);
|
|
8567
|
+
} catch (err) {
|
|
8568
|
+
respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `audit prune failed: ${String(err)}`));
|
|
8569
|
+
}
|
|
8570
|
+
}
|
|
8571
|
+
};
|
|
8572
|
+
|
|
8324
8573
|
//#endregion
|
|
8325
8574
|
//#region src/gateway/server-methods/nodes.helpers.ts
|
|
8326
8575
|
function respondInvalidParams(params) {
|
|
@@ -12445,7 +12694,7 @@ const nodeHandlers = {
|
|
|
12445
12694
|
const p = params;
|
|
12446
12695
|
const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
|
|
12447
12696
|
await respondUnavailableOnThrow(respond, async () => {
|
|
12448
|
-
const { handleNodeEvent } = await import("./server-node-events-
|
|
12697
|
+
const { handleNodeEvent } = await import("./server-node-events-DWWxWJHk.js");
|
|
12449
12698
|
const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
|
|
12450
12699
|
await handleNodeEvent({
|
|
12451
12700
|
deps: context.deps,
|
|
@@ -14313,6 +14562,54 @@ const CONTROL_PLANE_WRITE_METHODS = new Set([
|
|
|
14313
14562
|
"config.patch",
|
|
14314
14563
|
"update.run"
|
|
14315
14564
|
]);
|
|
14565
|
+
/** Methods that always get audit logged when audit is enabled. */
|
|
14566
|
+
const AUDIT_SENSITIVE_METHODS = new Set([
|
|
14567
|
+
"config.set",
|
|
14568
|
+
"config.apply",
|
|
14569
|
+
"config.patch",
|
|
14570
|
+
"device.pair.approve",
|
|
14571
|
+
"device.pair.reject",
|
|
14572
|
+
"node.pair.approve",
|
|
14573
|
+
"node.pair.reject",
|
|
14574
|
+
"exec.approvals.set",
|
|
14575
|
+
"sessions.delete",
|
|
14576
|
+
"update.run"
|
|
14577
|
+
]);
|
|
14578
|
+
function resolveAuditConfig() {
|
|
14579
|
+
try {
|
|
14580
|
+
const security = loadConfig().security;
|
|
14581
|
+
return {
|
|
14582
|
+
enabled: security?.audit?.enabled !== false,
|
|
14583
|
+
level: security?.audit?.level ?? "sensitive"
|
|
14584
|
+
};
|
|
14585
|
+
} catch {
|
|
14586
|
+
return {
|
|
14587
|
+
enabled: true,
|
|
14588
|
+
level: "sensitive"
|
|
14589
|
+
};
|
|
14590
|
+
}
|
|
14591
|
+
}
|
|
14592
|
+
function shouldAuditMethod(method, level) {
|
|
14593
|
+
if (level === "off") return false;
|
|
14594
|
+
if (level === "all") return true;
|
|
14595
|
+
return AUDIT_SENSITIVE_METHODS.has(method);
|
|
14596
|
+
}
|
|
14597
|
+
function auditLogMethodCall(method, client, result) {
|
|
14598
|
+
try {
|
|
14599
|
+
const logger = AuditLogger.getInstance();
|
|
14600
|
+
const actorType = client?.connect?.role ?? "unknown";
|
|
14601
|
+
const actorId = client?.connect?.client?.id ?? client?.connect?.device?.id ?? void 0;
|
|
14602
|
+
const ip = client?.clientIp ?? void 0;
|
|
14603
|
+
logger.log({
|
|
14604
|
+
actor_type: actorType,
|
|
14605
|
+
actor_id: actorId,
|
|
14606
|
+
action: method,
|
|
14607
|
+
ip,
|
|
14608
|
+
result,
|
|
14609
|
+
details: result !== "success" ? `method ${method} ${result}` : void 0
|
|
14610
|
+
});
|
|
14611
|
+
} catch {}
|
|
14612
|
+
}
|
|
14316
14613
|
function authorizeGatewayMethod(method, client) {
|
|
14317
14614
|
if (!client?.connect) return null;
|
|
14318
14615
|
if (method === "health") return null;
|
|
@@ -14355,12 +14652,14 @@ const coreGatewayHandlers = {
|
|
|
14355
14652
|
...usageHandlers,
|
|
14356
14653
|
...agentHandlers,
|
|
14357
14654
|
...agentsHandlers,
|
|
14358
|
-
...browserHandlers
|
|
14655
|
+
...browserHandlers,
|
|
14656
|
+
...auditHandlers
|
|
14359
14657
|
};
|
|
14360
14658
|
async function handleGatewayRequest(opts) {
|
|
14361
14659
|
const { req, respond, client, isWebchatConnect, context } = opts;
|
|
14362
14660
|
const authError = authorizeGatewayMethod(req.method, client);
|
|
14363
14661
|
if (authError) {
|
|
14662
|
+
if (resolveAuditConfig().enabled) auditLogMethodCall(req.method, client, "denied");
|
|
14364
14663
|
respond(false, void 0, authError);
|
|
14365
14664
|
return;
|
|
14366
14665
|
}
|
|
@@ -14385,7 +14684,22 @@ async function handleGatewayRequest(opts) {
|
|
|
14385
14684
|
respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `unknown method: ${req.method}`));
|
|
14386
14685
|
return;
|
|
14387
14686
|
}
|
|
14388
|
-
|
|
14687
|
+
const auditCfg = resolveAuditConfig();
|
|
14688
|
+
if (auditCfg.enabled && shouldAuditMethod(req.method, auditCfg.level)) {
|
|
14689
|
+
const originalRespond = respond;
|
|
14690
|
+
const auditedRespond = (ok, payload, error, meta) => {
|
|
14691
|
+
auditLogMethodCall(req.method, client, ok ? "success" : "failure");
|
|
14692
|
+
originalRespond(ok, payload, error, meta);
|
|
14693
|
+
};
|
|
14694
|
+
await handler({
|
|
14695
|
+
req,
|
|
14696
|
+
params: req.params ?? {},
|
|
14697
|
+
client,
|
|
14698
|
+
isWebchatConnect,
|
|
14699
|
+
respond: auditedRespond,
|
|
14700
|
+
context
|
|
14701
|
+
});
|
|
14702
|
+
} else await handler({
|
|
14389
14703
|
req,
|
|
14390
14704
|
params: req.params ?? {},
|
|
14391
14705
|
client,
|
|
@@ -18862,6 +19176,12 @@ async function startGatewayMemoryBackend(params) {
|
|
|
18862
19176
|
//#region src/gateway/server-startup.ts
|
|
18863
19177
|
const SESSION_LOCK_STALE_MS = 1800 * 1e3;
|
|
18864
19178
|
async function startGatewaySidecars(params) {
|
|
19179
|
+
try {
|
|
19180
|
+
const auditRetention = params.cfg.security;
|
|
19181
|
+
AuditLogger.init({ retentionDays: auditRetention?.audit?.retentionDays });
|
|
19182
|
+
} catch (err) {
|
|
19183
|
+
params.log.warn(`audit logger initialization failed: ${String(err)}`);
|
|
19184
|
+
}
|
|
18865
19185
|
try {
|
|
18866
19186
|
const sessionDirs = await resolveAgentSessionDirs(resolveStateDir(process.env));
|
|
18867
19187
|
for (const sessionsDir of sessionDirs) await cleanStaleLockFiles({
|