@nikolasp98/minion 2026.6.14-dev.20260616061802 → 2026.6.16-dev
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/{acp-cli-Du7NWZu3.js → acp-cli-2xKZfd6v.js} +3 -3
- package/dist/{acp-cli-BmKOFno7.js → acp-cli-q8e4aJoa.js} +3 -3
- package/dist/{agent-6dzad4Vk.js → agent-CZq9c4BW.js} +13 -13
- package/dist/{agent-step-C3wXb9Cx.js → agent-step-D5w2xNfi.js} +2 -2
- package/dist/{agent-step-Bf1GImWB.js → agent-step-DnVo1ws9.js} +2 -2
- package/dist/{agents-Dw2xlB7X.js → agents-3owoMugG.js} +7 -7
- package/dist/{agents-list-tool-Dq0lIpTn.js → agents-list-tool-Bjcc4I_6.js} +3 -3
- package/dist/{agents-list-tool-D9mHFLLa.js → agents-list-tool-CzUTgXov.js} +3 -3
- package/dist/{agents.config-1imA1H12.js → agents.config-Di1Fb5KI.js} +12 -12
- package/dist/{audit-DmbpL3cv.js → audit-B8L_aShb.js} +10 -10
- package/dist/{audit-DmJGMt0j.js → audit-Ck6MCUxx.js} +10 -10
- package/dist/{auth-choice-neer30p3.js → auth-choice-B6U5biA7.js} +4 -4
- package/dist/{auth-choice-CAmZkQLg.js → auth-choice-DmpOyRlb.js} +4 -4
- package/dist/{banner-DpI_geg3.js → banner-Be2ToLay.js} +1 -1
- package/dist/{browser-cli-z39mB4Us.js → browser-cli-BvtSNPci.js} +3 -3
- package/dist/{browser-cli-DDHEGwdS.js → browser-cli-De-S5eSp.js} +3 -3
- package/dist/{browser-tool-CWG74LXa.js → browser-tool-BVAlCkv9.js} +7 -7
- package/dist/{browser-tool-CZsdYOyF.js → browser-tool-CTNhVzit.js} +7 -7
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +489 -42
- package/dist/bundled/kg-message-sync/handler.js +6 -2
- package/dist/bundled/session-memory/handler.js +47 -1
- package/dist/{call-DkT-xA-u.js → call-BrDNyQiZ.js} +2 -2
- package/dist/{call-COjGFB_A.js → call-Di0NGY7s.js} +2 -2
- package/dist/{call-BKa0221r.js → call-QNmBuec5.js} +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{canvas-tool-yqzOmVk8.js → canvas-tool-C8kJ8X6t.js} +2 -2
- package/dist/{canvas-tool-D7utVUj9.js → canvas-tool-v_tDod0l.js} +2 -2
- package/dist/{channel-options-DDJR7t6c.js → channel-options-BgB_XE_R.js} +1 -1
- package/dist/{channel-options-wAeX19Sd.js → channel-options-C3G3uvc8.js} +1 -1
- package/dist/{channel-web-B731iz_S.js → channel-web-C7erWB8c.js} +7 -7
- package/dist/{channels-cli-DyZ1QjyT.js → channels-cli-CWL9_dUC.js} +9 -9
- package/dist/{channels-cli-B2lgO976.js → channels-cli-D0WU7aEW.js} +9 -9
- package/dist/{chrome-BYfNS8BB.js → chrome-BUH9jMtc.js} +1 -1
- package/dist/{chrome-DKRiholg.js → chrome-WqxB18cs.js} +2 -2
- package/dist/{chrome-C3MXJRdA.js → chrome-xmfH0ICu.js} +2 -2
- package/dist/{clawbot-cli-ByrTjcjf.js → clawbot-cli-BqvWmOf2.js} +1 -1
- package/dist/{clawbot-cli-C-8EFRKv.js → clawbot-cli-Cy4xxEwA.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-DNiohgQu.js → cli-C6-qelzK.js} +3 -3
- package/dist/{cli-D-m3umOT.js → cli-COPy2u3N.js} +3 -3
- package/dist/{client-D2hf2jQ7.js → client-BIS2Uayk.js} +4 -4
- package/dist/{client-BQN-LuPk.js → client-BoM5FwV4.js} +4 -4
- package/dist/{client-xu3whbFC.js → client-CTr2olAS.js} +4 -4
- package/dist/{command-registry-CB0tYTNA.js → command-registry-BSAY6wdm.js} +14 -14
- package/dist/{commands-registry-PW7IInMR.js → commands-registry-SXjoCA7i.js} +2 -2
- package/dist/{commands-registry-dia3m7-M.js → commands-registry-UnBqSA67.js} +2 -2
- package/dist/{completion-cli-Dg5pvBMY.js → completion-cli--3eqgAwK.js} +1 -1
- package/dist/{completion-cli-CSzxM5wY.js → completion-cli-RDTl_9qR.js} +2 -2
- package/dist/{config-BBoAK0dA.js → config-CkMQunWU.js} +6 -2
- package/dist/{config-ClkrcdId.js → config-DHYot764.js} +2 -2
- package/dist/{config-BgqD6SVw.js → config-DJTLRK5S.js} +2 -2
- package/dist/{config-cli-Denu0eEu.js → config-cli-BUCeVfP_.js} +4 -4
- package/dist/{config-cli-DtAjejub.js → config-cli-C1RrXpz0.js} +4 -4
- package/dist/{config-guard-DF1WNs2e.js → config-guard-CVx36OOi.js} +3 -3
- package/dist/config-guard-Csz0-uEX.js +2 -0
- package/dist/{config-validation-mmyHFUrK.js → config-validation-BVN3OEOd.js} +2 -2
- package/dist/{config-validation-lm5BwYiy.js → config-validation-C3jULSMI.js} +2 -2
- package/dist/{configure-CxrB1V4C.js → configure-CQEz5KQ3.js} +15 -15
- package/dist/{configure-CroxylRT.js → configure-akx6bWAt.js} +15 -15
- package/dist/{cron-cli-CYFkAl-f.js → cron-cli-BoMJUHUX.js} +2 -2
- package/dist/{cron-cli-CMjG3iLg.js → cron-cli-DvtMDSN2.js} +1 -1
- package/dist/{cron-tool-B3ffaxAO.js → cron-tool-Dcr3QMih.js} +5 -5
- package/dist/{cron-tool-BnUUPLV3.js → cron-tool-DllqQBKI.js} +5 -5
- package/dist/{daemon-cli-Bs0GD5xF.js → daemon-cli-CHfZAu4w.js} +9 -9
- package/dist/{daemon-cli-dauqwBcE.js → daemon-cli-D7K6zRR6.js} +9 -9
- package/dist/daemon-cli.js +6 -2
- package/dist/daemon-install-helpers-Ls_foXgf.js +2 -0
- package/dist/daemon-install-helpers-VzSaKa-j.js +2 -0
- package/dist/{daemon-runtime-C-XyxJRT.js → daemon-runtime--L-FasK6.js} +1 -1
- package/dist/{daemon-runtime-BLp3uThx.js → daemon-runtime-DKTkFmdZ.js} +1 -1
- package/dist/{deliver-C40KRMzm.js → deliver-BCijF1xe.js} +4 -4
- package/dist/{deliver-C5vVViLg.js → deliver-DiDYkpmh.js} +5 -5
- package/dist/{deliver-Dhut24vc.js → deliver-Ds0o_rCY.js} +3 -3
- package/dist/{deps-DRyTOIPO.js → deps-DFeGFeii.js} +6 -6
- package/dist/{devices-cli-DFPiK0W5.js → devices-cli-C9OvVBEs.js} +1 -1
- package/dist/{devices-cli-BfwxECLu.js → devices-cli-D4YJarjz.js} +1 -1
- package/dist/{diagnostic-Bzd3eHBU.js → diagnostic-CVAiT8Yi.js} +2 -2
- package/dist/{diagnostic-session-state-C8e7GxAm.js → diagnostic-session-state-Cj5nMvNL.js} +1 -1
- package/dist/{directory-cli-BX_a06o7.js → directory-cli--LuldZqc.js} +2 -2
- package/dist/{directory-cli-BQlGeeQK.js → directory-cli-DHpksyLI.js} +2 -2
- package/dist/{dispatcher-BWcYLowQ.js → dispatcher-D46WCdTe.js} +7 -7
- package/dist/{dispatcher-DefEQC4n.js → dispatcher-D8fgAnwH.js} +7 -7
- package/dist/{dm-policy-shared-Dm70u4Yr.js → dm-policy-shared-CEUsAI0F.js} +1 -1
- package/dist/{dm-policy-shared-DeX6SUMT.js → dm-policy-shared-DZglJJMa.js} +1 -1
- package/dist/{dns-cli-CxMaD4cI.js → dns-cli-C4L7EzEY.js} +2 -2
- package/dist/{dns-cli-DAdvx6qq.js → dns-cli-wSFONc42.js} +2 -2
- package/dist/{docs-cli-BR1YXIH4.js → docs-cli-4Dzg7LrJ.js} +1 -1
- package/dist/{docs-cli-BR8IKtP3.js → docs-cli-BWUGypxO.js} +1 -1
- package/dist/doctor-completion-B4bzzPyA.js +2 -0
- package/dist/doctor-completion-CE9xjPcf.js +2 -0
- package/dist/{doctor-completion-C3YAoPkP.js → doctor-completion-COKl8-PU.js} +1 -1
- package/dist/{doctor-completion-CkIy7FpB.js → doctor-completion-DPjvm1G7.js} +1 -1
- package/dist/{doctor-config-flow-CsP66Ij5.js → doctor-config-flow-CCqETtju.js} +4 -4
- package/dist/{doctor-config-flow-D_WRZLT3.js → doctor-config-flow-CRibe33c.js} +4 -4
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-CLIzgYS8.js → exec-approvals-cli-CCqVDSOe.js} +2 -2
- package/dist/{exec-approvals-cli-DW2-7TEV.js → exec-approvals-cli-RRZ5wIP0.js} +2 -2
- package/dist/extensionAPI.d.ts +36 -2
- package/dist/extensionAPI.js +263 -20
- package/dist/{gateway-Duqy39t3.js → gateway-Bvd5CqY4.js} +3 -3
- package/dist/{gateway-CqhiWZQd.js → gateway-D_kwhuup.js} +3 -3
- package/dist/{gateway-cli-CUrxOlB4.js → gateway-cli-BbuSOWKq.js} +328 -244
- package/dist/{gateway-cli-BrM4d8E7.js → gateway-cli-C-AMSwgo.js} +324 -240
- package/dist/{gateway-0sVK3Rjy.js → gateway-q_fM0u-m.js} +2 -2
- package/dist/{gateway-rpc-BGgh3mTl.js → gateway-rpc-Ed0F1N_m.js} +1 -1
- package/dist/{gateway-rpc-9WQJwkTJ.js → gateway-rpc-J14XBNuM.js} +1 -1
- package/dist/{gateway-tool-DtlbDV6N.js → gateway-tool-Bi96OPGe.js} +3 -3
- package/dist/{gateway-tool-CMd3r3O5.js → gateway-tool-CNaxsMbd.js} +3 -3
- package/dist/{github-copilot-auth-Dh5sombA.js → github-copilot-auth-BmlL3P7c.js} +2 -2
- package/dist/{github-copilot-auth-ClDHXpfT.js → github-copilot-auth-DhjScF3O.js} +2 -2
- package/dist/{gmail-Dkq3kngs.js → gmail-BuCz-KEp.js} +1 -1
- package/dist/{gmail-DpPYd91j.js → gmail-C1O6grHu.js} +1 -1
- package/dist/{health-BlZEOPXK.js → health-6TTjEZoo.js} +8 -8
- package/dist/{health-BJ-Irw3K.js → health-BJbAa4df.js} +8 -8
- package/dist/{hooks-cli-Bqd1BR2r.js → hooks-cli-C0Z9dRtP.js} +2 -2
- package/dist/{hooks-cli-CR_bwhdf.js → hooks-cli-DFrRHJ1j.js} +2 -2
- package/dist/{host-D3VZGype.js → host-C8oRBLB6.js} +1 -1
- package/dist/{host-CafVbu36.js → host-DCfZcVR_.js} +1 -1
- package/dist/{image-tool-CwCxITcF.js → image-tool-D_dhIXLT.js} +2 -2
- package/dist/{image-tool-BY8NbIQs.js → image-tool-y-FDf6-M.js} +2 -2
- package/dist/index.d.ts +36 -2
- package/dist/index.js +10 -10
- package/dist/{io-TKYkFbcF.js → io-C_Q6AU5E.js} +2 -2
- package/dist/{io-oiyyZuuG.js → io-CpUiX-Lv.js} +2 -2
- package/dist/{ir-CP9ltYx0.js → ir-D0vxg3iM.js} +2 -2
- package/dist/{knowledge-graph-Dd0rSl0Q.js → knowledge-graph-BFnL_feN.js} +1 -1
- package/dist/{lifecycle-core-C7W7YZwn.js → lifecycle-core-CCUOBmZs.js} +3 -3
- package/dist/{lifecycle-core-BQztQGrv.js → lifecycle-core-CX37YE4Z.js} +3 -3
- package/dist/llm-slug-generator.js +47 -1
- package/dist/{logs-cli-CdAJHTuP.js → logs-cli-BYdqoMkJ.js} +2 -2
- package/dist/{logs-cli-lcuW5kPv.js → logs-cli-Comxq7pP.js} +2 -2
- package/dist/{manager-DeR0znMP.js → manager-DvUEsXx3.js} +1 -1
- package/dist/{memory-cli-BxVGlaEm.js → memory-cli-Bz--RMDo.js} +3 -3
- package/dist/{memory-cli-Y_w-AsVt.js → memory-cli-ilkHc_D4.js} +3 -3
- package/dist/{message-action-runner-CE4bDq6V.js → message-action-runner-BZQOV03k.js} +9 -9
- package/dist/{message-action-runner-BdclEzxx.js → message-action-runner-J8W9BPhj.js} +9 -9
- package/dist/{message-tool-BpFLUe6E.js → message-tool-BHJpugQ6.js} +6 -6
- package/dist/{message-tool-_MODnjgC.js → message-tool-GTRrYMuR.js} +6 -6
- package/dist/{model-catalog-AiXYmm_2.js → model-catalog-7Ew4iFgU.js} +3 -3
- package/dist/{model-catalog-CIgjk707.js → model-catalog-B1R3eepi.js} +3 -3
- package/dist/{model-fallback-DsefSc26.js → model-fallback--afWtYyY.js} +2 -2
- package/dist/{model-fallback-C92G-WUW.js → model-fallback-DXR7ZbvM.js} +2 -2
- package/dist/{model-fallback-Dwkt7imi.js → model-fallback-GSMox3YK.js} +3 -3
- package/dist/{model-picker-B_SEgewv.js → model-picker--bqpbxbC.js} +2 -2
- package/dist/{model-picker-DLr3xagY.js → model-picker-DJpEjKZT.js} +2 -2
- package/dist/{models-YFKEQsfy.js → models-CETV4zZ3.js} +12 -12
- package/dist/{models-cli-DuHCNW7r.js → models-cli-B5caj79x.js} +2 -2
- package/dist/{models-cli-yoQKaR0X.js → models-cli-DPT6gYJm.js} +12 -12
- package/dist/{models-config-BWzVL4DK.js → models-config-CX3wpMrd.js} +2 -2
- package/dist/{models-config-Df7nRCU-.js → models-config-ChIAfklN.js} +2 -2
- package/dist/{node-cli-D4pCYQMW.js → node-cli-4VRhz_1P.js} +7 -7
- package/dist/{node-cli-DzvdQBVp.js → node-cli-DyoQqYo1.js} +7 -7
- package/dist/{nodes-cli-CHWJMLm6.js → nodes-cli-CNQ633Hz.js} +5 -5
- package/dist/{nodes-cli-cjiOPFLH.js → nodes-cli-Dl3KtKoX.js} +5 -5
- package/dist/{nodes-tool-CR8MmpTZ.js → nodes-tool-BkgixWxk.js} +3 -3
- package/dist/{nodes-tool-DxMgloLr.js → nodes-tool-BmT8LWTt.js} +3 -3
- package/dist/{nodes-utils-BHrOJOWk.js → nodes-utils-B1jr4oHE.js} +1 -1
- package/dist/{nodes-utils-BRFzmJmB.js → nodes-utils-CVaBTJ5V.js} +1 -1
- package/dist/{nodes-utils-Eo4ilZ36.js → nodes-utils-DVNKajNN.js} +1 -1
- package/dist/{onboard-D3EkmOs0.js → onboard-BSb-bXtw.js} +9 -9
- package/dist/{onboard-DdguleAq.js → onboard-DHzBfhN9.js} +9 -9
- package/dist/{onboard-channels-DBltNYY2.js → onboard-channels-BP5oQVqD.js} +1 -1
- package/dist/{onboard-channels-cSzxNqaz.js → onboard-channels-CNmc5fTo.js} +1 -1
- package/dist/{onboard-channels-CeAsHBgW.js → onboard-channels-DHeOj8d6.js} +1 -1
- package/dist/{onboard-channels-ZDMAODeW.js → onboard-channels-DqoegMtk.js} +1 -1
- package/dist/{onboard-custom-DqkrqRdv.js → onboard-custom-B7OO328d.js} +2 -2
- package/dist/{onboard-custom-DMHUJH5-.js → onboard-custom-BODmfSpC.js} +1 -1
- package/dist/{onboard-custom-Vb7K9679.js → onboard-custom-BZv_tJxB.js} +1 -1
- package/dist/{onboard-custom-DOEx3xcN.js → onboard-custom-D7LvDFdH.js} +2 -2
- package/dist/{onboard-helpers-D60Qp1ne.js → onboard-helpers-B9IGa3vx.js} +5 -5
- package/dist/{onboard-helpers-7fbTU2tq.js → onboard-helpers-BKca3qU4.js} +1 -1
- package/dist/{onboard-helpers-DCve32jF.js → onboard-helpers-DP2LE5Oh.js} +5 -5
- package/dist/{onboard-helpers-xGGsG9to.js → onboard-helpers-HkYz_NGi.js} +1 -1
- package/dist/{onboard-remote-B13DRLJa.js → onboard-remote-DQrtJWPJ.js} +1 -1
- package/dist/{onboard-remote-C6s3bR7X.js → onboard-remote-kBPMv7zo.js} +1 -1
- package/dist/{onboard-skills-BU0OKpqj.js → onboard-skills-Cd2WeuBn.js} +3 -3
- package/dist/{onboard-skills-CKzdl2Ph.js → onboard-skills-KRXxu17b.js} +3 -3
- package/dist/{onboarding-BkiZ3JkU.js → onboarding-Cg42Uf0E.js} +11 -11
- package/dist/{onboarding-C--TfoeE.js → onboarding-nPyIyp8f.js} +11 -11
- package/dist/{onboarding.finalize-CUkOVH_E.js → onboarding.finalize-B8gctARP.js} +9 -9
- package/dist/{onboarding.finalize-Damz4ET-.js → onboarding.finalize-BoMhnz3U.js} +9 -9
- package/dist/{onboarding.gateway-config-BA3PQJBL.js → onboarding.gateway-config-Co5c5Jsj.js} +2 -2
- package/dist/{onboarding.gateway-config-4wtmgfdq.js → onboarding.gateway-config-DkkPCpUx.js} +2 -2
- package/dist/{outbound-send-deps-BmDpImVK.js → outbound-send-deps-Dg8cSoFv.js} +6 -6
- package/dist/{outbound-session-B9B7Vsxm.js → outbound-session-BCNTkSVV.js} +3 -3
- package/dist/{outbound-session-pZGUQ4vz.js → outbound-session-BG0ZMrIB.js} +3 -3
- package/dist/{pairing-cli-CRnZKVjx.js → pairing-cli-B_sfgSbk.js} +2 -2
- package/dist/{pairing-cli-aoyKpG0L.js → pairing-cli-mUAKj093.js} +2 -2
- package/dist/{pi-embedded-helpers-D-m7pmXE.js → pi-embedded-helpers-BsRnajNh.js} +1 -1
- package/dist/{pi-embedded-helpers-CkhQP2gU.js → pi-embedded-helpers-CSxJBpFl.js} +1 -1
- package/dist/{pi-embedded-helpers-BbHYim54.js → pi-embedded-helpers-CUfPWD_N.js} +6 -5
- package/dist/{pi-embedded-utils-C6MaVLHj.js → pi-embedded-utils-BlNfBen_.js} +1 -1
- package/dist/{pi-embedded-utils-DIGchmzO.js → pi-embedded-utils-Bql42QTv.js} +1 -1
- package/dist/{pi-embedded-utils-Ip0GsjWb.js → pi-embedded-utils-BtyCE2ZK.js} +1 -1
- package/dist/{pi-model-discovery-Ot_Q_yYa.js → pi-model-discovery-BV73T1am.js} +1 -1
- package/dist/{pi-tools.policy-Dt2kTSid.js → pi-tools.policy-DDJ31-0E.js} +3 -3
- package/dist/{plugin-registry-BZCSZFQn.js → plugin-registry-Dq33ZU89.js} +3 -3
- package/dist/{plugin-registry-DMRnpxA2.js → plugin-registry-RoPLmlrM.js} +3 -3
- package/dist/plugin-sdk/agents/bash/bash-tools.exec-runtime.d.ts +4 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/tool-result-context-guard.d.ts +5 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/tool-result-reduce.d.ts +8 -0
- package/dist/plugin-sdk/agents/sandbox/tier0/index.d.ts +3 -0
- package/dist/plugin-sdk/agents/sandbox/tier0/registry.d.ts +28 -0
- package/dist/plugin-sdk/agents/sandbox/tier0/router.d.ts +18 -0
- package/dist/plugin-sdk/agents/sandbox/tier0/virtual-sandbox.d.ts +30 -0
- package/dist/plugin-sdk/agents/sandbox/types.d.ts +5 -0
- package/dist/plugin-sdk/agents/sections/behaviour.d.ts +9 -0
- package/dist/plugin-sdk/agents/skills/compact-prompt.d.ts +12 -0
- package/dist/plugin-sdk/agents/skills/workspace.d.ts +4 -0
- package/dist/plugin-sdk/channels/discord.js +487 -40
- package/dist/plugin-sdk/channels/googlechat.js +3 -1
- package/dist/plugin-sdk/channels/imessage.js +487 -40
- package/dist/plugin-sdk/channels/line.js +489 -42
- package/dist/plugin-sdk/channels/msteams.js +3 -1
- package/dist/plugin-sdk/channels/signal.js +487 -40
- package/dist/plugin-sdk/channels/slack.js +487 -40
- package/dist/plugin-sdk/channels/telegram.js +487 -40
- package/dist/plugin-sdk/channels/whatsapp.js +488 -41
- package/dist/plugin-sdk/config/types.agent-defaults.d.ts +8 -0
- package/dist/plugin-sdk/config/types.agents.d.ts +4 -0
- package/dist/plugin-sdk/config/types.gateway.d.ts +8 -0
- package/dist/plugin-sdk/config/types.skills.d.ts +7 -0
- package/dist/plugin-sdk/config/types.tools.d.ts +8 -0
- package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +3 -0
- package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +9 -0
- package/dist/plugin-sdk/config/zod-schema.agents.d.ts +6 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +26 -0
- package/dist/plugin-sdk/core.js +6 -2
- package/dist/plugin-sdk/index.js +501 -54
- package/dist/{plugins-cli-BKMBY-np.js → plugins-cli-BA0wJM-k.js} +3 -3
- package/dist/{plugins-cli-D3_BCsVN.js → plugins-cli-a-DWljrI.js} +3 -3
- package/dist/{program-context-CVLR19jJ.js → program-context-CUZUPsiC.js} +43 -43
- package/dist/{program-DFvYiOXj.js → program-gbYi5UIa.js} +7 -7
- package/dist/{prompt-select-styled-D-axSDjg.js → prompt-select-styled-DAdqH32e.js} +17 -17
- package/dist/{prompt-select-styled-n1nMLPsI.js → prompt-select-styled-lKRNiihE.js} +17 -17
- package/dist/{push-apns-Dh6xZki_.js → push-apns-BhtcU_Da.js} +1 -1
- package/dist/{push-apns-D4wjtIOe.js → push-apns-D69Af97u.js} +1 -1
- package/dist/{pw-ai-2VhRhF2B.js → pw-ai-Ba9xJlWV.js} +2 -2
- package/dist/{pw-ai-Blk_s6D5.js → pw-ai-Cvjg4UOk.js} +2 -2
- package/dist/{pw-ai-B6oeo1wI.js → pw-ai-DiwvYyv3.js} +2 -2
- package/dist/{pw-session-Crb06R5v.js → pw-session-BZ1pAX5r.js} +1 -1
- package/dist/{pw-session-DmaV4mTM.js → pw-session-BxiZ6YYh.js} +1 -1
- package/dist/{pw-session-CATqkBLI.js → pw-session-EHew9i-n.js} +1 -1
- package/dist/{qr-cli-B3IWV_8b.js → qr-cli-CFsUuFR-.js} +2 -2
- package/dist/{qr-cli-SfioxAM_.js → qr-cli-SfzcWdI0.js} +2 -2
- package/dist/{register.agent-DDVZDpQC.js → register.agent-B4bNkRtB.js} +11 -11
- package/dist/{register.agent-Dfk70LYq.js → register.agent-DHCAqxWX.js} +8 -8
- package/dist/{register.channel-BvMvb6ip.js → register.channel-B1vKkWV7.js} +2 -2
- package/dist/{register.channel-BJtyCgD7.js → register.channel-D0lVq7dU.js} +2 -2
- package/dist/{register.configure-WQlTjNyz.js → register.configure-DFSJd0YH.js} +1 -1
- package/dist/{register.configure-BdKChDnl.js → register.configure-DIHFldND.js} +1 -1
- package/dist/{register.drone-B-xrDJpJ.js → register.drone-Do4i5ZE9.js} +2 -2
- package/dist/{register.drone-DSHJ5vq1.js → register.drone-Tckr0QFo.js} +2 -2
- package/dist/{register.maintenance-DoMoBeyF.js → register.maintenance-Bw9G1eZ0.js} +5 -5
- package/dist/{register.maintenance-DnP_N0ye.js → register.maintenance-D5LVEuKI.js} +5 -5
- package/dist/{register.message-Xl-pZILp.js → register.message-BsGRyTVT.js} +7 -7
- package/dist/{register.message-Cdp8TM0J.js → register.message-C_51tZCE.js} +8 -8
- package/dist/{register.onboard-BzZPizJ0.js → register.onboard-CMusJAzJ.js} +1 -1
- package/dist/{register.onboard-IPqLR5Zb.js → register.onboard-Ngaw9ikW.js} +1 -1
- package/dist/{register.setup-DLzSctB1.js → register.setup-aKi_hurQ.js} +4 -4
- package/dist/{register.setup-BX8Ya9qY.js → register.setup-xpiPRct8.js} +4 -4
- package/dist/{register.status-health-sessions-CXIHidz6.js → register.status-health-sessions-B87H-g0g.js} +6 -6
- package/dist/{register.status-health-sessions-DnNAMB3T.js → register.status-health-sessions-D2rMUW_t.js} +4 -4
- package/dist/{register.subclis-DAt5WEzu.js → register.subclis-DB0kFld6.js} +30 -30
- package/dist/{reply-D_uwJ_hb.js → reply-CNJWciSj.js} +442 -52
- package/dist/{reply-payloads-BBHotu7W.js → reply-payloads-BS889lPA.js} +2 -2
- package/dist/{reply-payloads-CikGrhVL.js → reply-payloads-Dk-zLmJC.js} +2 -2
- package/dist/{reply-prefix-eSF5kXs5.js → reply-prefix-CfrIMbCM.js} +1 -1
- package/dist/{reply-prefix-CYbvVBOV.js → reply-prefix-D9MQ_veY.js} +1 -1
- package/dist/{resolve-route-FLi7kFo1.js → resolve-route-0arQsERr.js} +1 -1
- package/dist/{resolve-route-DiiBj8NL.js → resolve-route-DwDSX3mI.js} +2 -2
- package/dist/{routes-DFLRIpty.js → routes-DubNFADQ.js} +4 -4
- package/dist/{routes-CagC77kh.js → routes-hcdbDZ60.js} +4 -4
- package/dist/{rpc-DxdMMngu.js → rpc-CpEGWO4f.js} +1 -1
- package/dist/{rpc-dZcSayi6.js → rpc-DShIx1il.js} +1 -1
- package/dist/{run-main-Cw7JO4bk.js → run-main-CgrHeBpO.js} +20 -20
- package/dist/{sandbox-DX1DKAJb.js → sandbox-BYK6Qgnd.js} +9 -8
- package/dist/{sandbox-pZvVQZ-a.js → sandbox-CDGF9AVA.js} +9 -8
- package/dist/{sandbox-cli-DsFqky0Y.js → sandbox-cli-3v8NFyXC.js} +4 -4
- package/dist/{sandbox-cli--NZU5yHm.js → sandbox-cli-DmXP8NkD.js} +4 -4
- package/dist/{security-cli-B9rFqAom.js → security-cli-B23Rjmu8.js} +3 -3
- package/dist/{security-cli-DUGFqvJc.js → security-cli-C7jxF7EW.js} +3 -3
- package/dist/{send-OcwoynpB.js → send-B3EXtlyb.js} +2 -2
- package/dist/{send-BUUHmWJ3.js → send-Boe93Q4V.js} +2 -2
- package/dist/{send-Czh3Yz38.js → send-Br1IcpxR.js} +2 -2
- package/dist/{send-mztwgKny.js → send-BrvRGJ0_.js} +3 -3
- package/dist/{send-CRNffLsb.js → send-BuiJlYF8.js} +2 -2
- package/dist/{send-DTQ_lSWv.js → send-DPURnZWZ.js} +2 -2
- package/dist/{send-Bh69NFd_.js → send-DT-x-IFQ.js} +3 -3
- package/dist/{send-CuFw68zk.js → send-D_PQuZ3x.js} +2 -2
- package/dist/{send-Ckq83rOO.js → send-DhuPDKRX.js} +2 -2
- package/dist/{server-context-D-VUH9Bz.js → server-context-BRKaxwJB.js} +6 -6
- package/dist/{server-context-BlUcP_zF.js → server-context-CvEQbenq.js} +6 -6
- package/dist/{server-context-BNI2cc_e.js → server-context-nyYhGUmI.js} +5 -5
- package/dist/{server-node-events-DQqHB_8B.js → server-node-events-B6rUT0PE.js} +8 -8
- package/dist/{server-node-events-BqG45BMs.js → server-node-events-D90DAPI1.js} +10 -10
- package/dist/{session-status-tool-CN-Juxjq.js → session-status-tool-BIN4ooy0.js} +6 -6
- package/dist/{session-status-tool-DnD354sJ.js → session-status-tool-CtbF1-VI.js} +7 -7
- package/dist/{session-utils-0BYkk3f_.js → session-utils-DDCd8HC9.js} +4 -4
- package/dist/{sessions-CismtNoo.js → sessions-ByNQiqr2.js} +1 -1
- package/dist/{sessions-D_b2UXud.js → sessions-C0Qs0Flz.js} +3 -3
- package/dist/{sessions-0d-dBE8D.js → sessions-CPoA3oJo.js} +4 -4
- package/dist/{sessions-Z8JCL_sa.js → sessions-CW4tzKA-.js} +3 -3
- package/dist/{sessions-helpers-Crh_NTSX.js → sessions-helpers-DdqQiSR6.js} +3 -3
- package/dist/{sessions-helpers-JsbUTHcP.js → sessions-helpers-vwVJ1Vy4.js} +3 -3
- package/dist/{sessions-helpers-uZ0Taeh3.js → sessions-helpers-xH-u6Byb.js} +3 -3
- package/dist/{sessions-history-tool-6VYdT_kc.js → sessions-history-tool-BO81rMTT.js} +5 -5
- package/dist/{sessions-history-tool-6WMcHpxy.js → sessions-history-tool-DKXNjv5X.js} +5 -5
- package/dist/{sessions-list-tool-CwTLRwGc.js → sessions-list-tool-6DJtypdD.js} +5 -5
- package/dist/{sessions-list-tool-CwGp-l3S.js → sessions-list-tool-s_y-_4Uv.js} +5 -5
- package/dist/{sessions-send-tool-BKNgicV5.js → sessions-send-tool-C3ggqtMe.js} +5 -5
- package/dist/{sessions-send-tool-Dl4HKGgL.js → sessions-send-tool-roh-kyNw.js} +5 -5
- package/dist/{sessions-spawn-tool-DqfoPFrK.js → sessions-spawn-tool-BgkkNWMg.js} +1 -1
- package/dist/{sessions-spawn-tool-Bguo3O1I.js → sessions-spawn-tool-UAd65WIb.js} +1 -1
- package/dist/{shared-Cr0N9iap.js → shared-BysrBqEi.js} +2 -2
- package/dist/{shared-B7QVxDsn.js → shared-CjEFJgna.js} +2 -2
- package/dist/{skills-DkeUrhAT.js → skills-Bf4ZPGHe.js} +1 -1
- package/dist/{skills-DMPRReoe.js → skills-DDhWBAii.js} +1 -1
- package/dist/{skills-cli--8zG3UQk.js → skills-cli-DnO1g2oN.js} +6 -6
- package/dist/{skills-cli-D334Q0dM.js → skills-cli-DxFMRja6.js} +6 -6
- package/dist/{skills-install-DAphGXoj.js → skills-install-Bo9PwVmT.js} +2 -2
- package/dist/{skills-install-BNR2Nfa3.js → skills-install-DkZHLCih.js} +2 -2
- package/dist/{skills-status-D54inzOP.js → skills-status-8p-KrlIF.js} +2 -2
- package/dist/{skills-status-DDzkv-Rj.js → skills-status-CBTT87BN.js} +2 -2
- package/dist/{status-BIvJQtxV.js → status-BpgCPxM4.js} +3 -3
- package/dist/{status-JJ8BdlhI.js → status-Db6PPdwI.js} +3 -3
- package/dist/{status-DosDYGut.js → status-DyQwrglF.js} +12 -12
- package/dist/{status-gWt5DmvD.js → status-Dz_-4ATW.js} +13 -13
- package/dist/{status.update-BnYycijV.js → status.update-BBLk_Q3P.js} +1 -1
- package/dist/{status.update-D0KmfrNX.js → status.update-OhQ3FS7R.js} +1 -1
- package/dist/{subagent-registry-0zv9UyYz.js → subagent-registry-C_UHFYRY.js} +443 -53
- package/dist/{subagents-tool-usr_WpP2.js → subagents-tool-BdWYv7Mb.js} +6 -6
- package/dist/{subagents-tool-m92Kjy1x.js → subagents-tool-DjPwvSat.js} +6 -6
- package/dist/{system-cli-t4Qk2mcC.js → system-cli-BQJK1EiV.js} +1 -1
- package/dist/{system-cli-BxYnYU05.js → system-cli-Cj6oDS1q.js} +1 -1
- package/dist/{systemd-hints-JlNoKkcf.js → systemd-hints-BKM-UvY_.js} +1 -1
- package/dist/{systemd-hints-C21GmUrX.js → systemd-hints-BdVIEvO3.js} +1 -1
- package/dist/{targets-BWPxk4rU.js → targets-BpZ7t54u.js} +1 -1
- package/dist/{tools-F4g3knJE.js → tools-D3fRPoa3.js} +421 -38
- package/dist/{tools-cli-Cmg7InJT.js → tools-cli-CjniP2oD.js} +3 -3
- package/dist/{tools-cli-BPV7GpBg.js → tools-cli-DLPn3_f-.js} +3 -3
- package/dist/{tts-CC3WSaW9.js → tts-BhWpmVdG.js} +1 -1
- package/dist/{tts-CRpGlsYO.js → tts-DrFhyLnB.js} +1 -1
- package/dist/{tts-OJZ7iSKo.js → tts-DyQvwyVi.js} +1 -1
- package/dist/{tts-tool-DsLN8-ZT.js → tts-tool-CdaKVWBM.js} +3 -3
- package/dist/{tts-tool-B73xs8Vs.js → tts-tool-CfEs7ebD.js} +3 -3
- package/dist/{tui-BRdOjXJy.js → tui-CNuz7tKz.js} +5 -5
- package/dist/{tui-PSDwA6SF.js → tui-DJvjN1xV.js} +5 -5
- package/dist/{tui-cli-DMD7clw2.js → tui-cli-CLoyYSXd.js} +1 -1
- package/dist/{tui-cli-DHWrleUP.js → tui-cli-DhhA87TG.js} +1 -1
- package/dist/{update-cli-DlxYgSAN.js → update-cli-0lBEnFj5.js} +8 -8
- package/dist/{update-cli-Du5BbYfl.js → update-cli-Cc4jgBsG.js} +8 -8
- package/dist/{validation-CG8Ui8_v.js → validation-B-XaORq2.js} +5 -1
- package/dist/{validation-T0CNq_JP.js → validation-DuFmPzCB.js} +5 -1
- package/dist/web-BUkj8HIz.js +2 -0
- package/dist/{web-CtwxKIvO.js → web-BY79LufL.js} +8 -8
- package/dist/{web-search-B5d6ODyB.js → web-search-CCeGZMBD.js} +4 -4
- package/dist/{web-search-CV42wG57.js → web-search-D1pX-Tuc.js} +4 -4
- package/dist/{webhooks-cli-tSv_Pzzq.js → webhooks-cli-B3LP9UKY.js} +5 -5
- package/dist/{webhooks-cli-BeHnKv6z.js → webhooks-cli-C5xR4Wu5.js} +5 -5
- package/dist/{workspace-Dov1_dCF.js → workspace-BwzunhL2.js} +49 -3
- package/dist/{workspace-CSGZ3DZ_.js → workspace-CVAkpBJa.js} +48 -2
- package/dist/{workspace-CSBTFAxh.js → workspace-D5-DoTNR.js} +48 -2
- package/dist/{workspace-dirs-Yo4RZm7s.js → workspace-dirs-CJDJUlno.js} +3 -3
- package/docs/superpowers/plans/2026-06-10-phase1-quick-wins.md +1260 -0
- package/docs/superpowers/specs/2026-06-10-recon-quick-wins-and-silent-agent-design.md +151 -0
- package/extensions/alert-watcher/index.js +47 -1
- package/extensions/bluebubbles/index.js +5 -1
- package/extensions/feishu/index.js +5 -1
- package/extensions/flows/index.js +52 -2
- package/extensions/gmail-calendar/index.js +47 -1
- package/extensions/googlechat/index.js +5 -1
- package/extensions/irc/index.js +5 -1
- package/extensions/llm-task/index.js +47 -1
- package/extensions/matrix/{credentials-B1q3x-N0.mjs → credentials-BtiLgiNR.mjs} +5 -1
- package/extensions/matrix/index.js +3 -3
- package/extensions/matrix/{matrix-B9amoffh.mjs → matrix-CWlUSNSh.mjs} +2 -2
- package/extensions/matrix/{resolve-targets-Dw7tv-7K.mjs → resolve-targets-ml4iU4Bd.mjs} +2 -2
- package/extensions/mattermost/index.js +5 -1
- package/extensions/nextcloud-talk/index.js +5 -1
- package/extensions/tlon/index.js +47 -1
- package/extensions/wati/index.js +5 -1
- package/extensions/weixin/index.js +5 -1
- package/extensions/zalo/index.js +5 -1
- package/extensions/zalouser/index.js +5 -1
- package/package.json +3 -2
- package/dist/config-guard-BfdkKYAa.js +0 -2
- package/dist/daemon-install-helpers-4gMthp-_.js +0 -2
- package/dist/daemon-install-helpers-BLXYJ3C5.js +0 -2
- package/dist/doctor-completion-DKJRw1m1.js +0 -2
- package/dist/doctor-completion-DMcJXsi0.js +0 -2
- package/dist/web-Dj8nR4rt.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { C as expandHomePrefix, c as resolveConfigPath, d as resolveGatewayLockDir, f as resolveGatewayPort, n as STATE_DIR, r as isNixMode, t as CONFIG_PATH, v as resolveStateDir } from "./paths-Ce170Tex.js";
|
|
2
2
|
import { C as shortenHomePath, D as truncateUtf16Safe, L as getChildLogger, P as setVerbose, R as getLogger, _ as resolveConfigDir, b as resolveUserPath, c as ensureDir, d as isPlainObject, r as clamp, t as CONFIG_DIR, z as getResolvedLoggerSettings } from "./utils-DsgtGH3c.js";
|
|
3
3
|
import { n as isRich, r as theme, t as colorize } from "./theme-CDbj88LB.js";
|
|
4
|
-
import { F as resolveBootstrapMaxChars, G as normalizeUsageDisplay, H as normalizeElevatedLevel, I as resolveBootstrapTotalMaxChars, J as supportsXHighThinking, K as normalizeVerboseLevel, R as formatThinkingLevels, U as normalizeReasoningLevel, V as listThinkingLevels, W as normalizeThinkLevel, z as formatXHighModelHint } from "./pi-embedded-helpers-
|
|
5
|
-
import { $ as renamePairedNode, $n as
|
|
4
|
+
import { F as resolveBootstrapMaxChars, G as normalizeUsageDisplay, H as normalizeElevatedLevel, I as resolveBootstrapTotalMaxChars, J as supportsXHighThinking, K as normalizeVerboseLevel, R as formatThinkingLevels, U as normalizeReasoningLevel, V as listThinkingLevels, W as normalizeThinkLevel, z as formatXHighModelHint } from "./pi-embedded-helpers-CSxJBpFl.js";
|
|
5
|
+
import { $ as renamePairedNode, $n as emitAgentEvent, At as abortEmbeddedPiRun, Br as extractFileContentFromSource, Bt as markRecoveryAttempt, C as initTemplateLoader, Cn as getTotalPendingReplies, Cr as applyVerboseOverride, Ct as loadCombinedSessionStoreForGateway, Dt as resolveSessionModelRef, Er as isSystemEventContextChanged, Et as resolveGatewaySessionStoreTarget, Ft as closeInFlightTurnsStore, G as recordRemoteNodeInfo, Gn as listDescendantRunsForRequester, Gr as transcribeOpenAiCompatibleAudio, Gt as getBuiltinSectionRegistry, H as resolveSendPolicy, Hr as normalizeMimeList, Ir as registerUnhandledRejectionHandler, It as deleteRow, J as removeRemoteNodeInfo, Jn as markSubagentRunTerminated, Jr as resolveAgentTimeoutMs, Jt as buildToolSummaryMap, K as refreshRemoteBinsForConnectedNodes, Ln as isAbortTrigger, Lt as listForCurrentInstance, Mt as queueEmbeddedPiMessage, Nt as waitForEmbeddedPiRunEnd, Ot as normalizeOrgIds, Pn as resolveUserTimezone, Pt as registerLifecycleHooks, Q as rejectNodePairing, Qn as clearAgentRunContext, Qt as createOpenClawCodingTools, Rn as stopSubagentsForRequester, Rr as DEFAULT_INPUT_IMAGE_MIMES, Rt as listFromOtherInstances, S as getTemplateUsageStats, Sn as createReplyDispatcher, Sr as applyModelOverrideToSessionEntry, St as listSessionsFromStore, Tr as enqueueSystemEvent, Tt as pruneLegacyStoreKeys, U as getRemoteSkillEligibility, Un as countActiveDescendantRuns, Ur as resolveInputFileLimits, Ut as readConsolidationState, V as normalizeSendPolicy, Vr as extractImageContentFromSource, Vt as openInFlightTurnsStore, W as primeRemoteSkillsCache, Wn as initSubagentRegistry, Wt as assembleAgentSystemPromptWithSections, X as approveNodePairing, Xn as runSubagentAnnounceFlow, Xt as PROSE_GLOBAL_ROOT, Y as setSkillsRemoteRegistry, Yt as PromptSectionRegistry, Z as listNodePairing, Zt as _clearProseCache, _ as spawnSubagentDirect, _n as patchRouting, _t as buildSystemPromptReport, a as getCliSessionId, at as verifyPairingToken, b as getTemplateCache, br as buildAuthHealthSummary, c as debugSkipAll, ct as readJsonFile, d as setDebugStepBroadcaster, dt as getSkillsSnapshotVersion, en as applyToolPolicyPipeline, er as getAgentRunContext, et as requestNodePairing, f as setSteppedBuild, fn as claimBatch, fr as getTotalQueueSize, ft as registerSkillsChangeListener, gn as openMessageLedger, gr as lookupContextTokens, gt as runEmbeddedPiAgent, hn as markSynced, hr as waitForActiveTasks, ht as clearSessionQueues, i as resolveCronStyleNow, in as requestHeartbeatNow, ir as resolveAgentIdentity, it as hashToken, j as loadProviderUsageSummary, jn as formatZonedTimestamp, jt as getActiveEmbeddedRunCount, k as normalizeGroupActivation, kt as orgScopeVisible, l as debugStepContinue, ln as loadMinionPlugins, lr as resolveBootstrapContextForRun, lt as writeJsonAtomic, mn as markFailed, mr as setCommandLaneConcurrency, n as BARE_SESSION_RESET_PROMPT, nn as createOpenClawTools, nr as registerAgentRunContext, nt as verifyNodeToken, o as setCliSessionId, ot as pruneExpiredPending, pn as closeMessageLedger, pr as resetAllLanes, q as refreshRemoteNodeBins, qt as buildSectionRenderContext, rn as TOOL_REGISTRY, rt as generatePairingToken, s as runCliAgent, sn as getPluginToolMeta, st as resolvePairingPaths, tn as buildDefaultToolPolicyPipelineSteps, tr as onAgentEvent, tt as updatePairedNodeMetadata, u as isSteppedBuildEnabled, un as loadOpenClawPlugins, ur as getActiveTaskCount, ut as createAsyncLock, v as getLastReloadAt, vn as record, vt as buildSystemPromptParams, w as stopTemplateWatcher, wr as parseVerboseOverride, wt as loadSessionEntry, x as getTemplateLoadErrors, xn as dispatchInboundMessage, xt as listAgentsForGateway, y as getTemplate, yt as canonicalizeSpawnedByForAgent, zt as markInterrupted } from "./reply-CNJWciSj.js";
|
|
6
6
|
import { B as listMcpTools, E as createEmptyPluginRegistry, F as triggerInternalHook, H as registerMcpTool, I as addMcpSseSubscriber, L as getMcpDispatcher, M as clearInternalHooks, N as createInternalHookEvent, P as registerInternalHook, R as getMcpIdentityResolver, U as setMcpDispatcher, V as reconcileMcpPluginTools, W as setMcpIdentityResolver, a as setConsoleSubsystemFilter, d as CHANNEL_IDS, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger, w as setActivePluginRegistryConfig, x as getActivePluginRegistry, z as getMcpToolMethod } from "./subsystem-Cnn1-kOi.js";
|
|
7
7
|
import { t as defaultRuntime } from "./runtime-Da615Z-K.js";
|
|
8
8
|
import { b as isSubagentSessionKey, d as resolveAgentIdFromSessionKey, h as toAgentStoreSessionKey, i as buildAgentMainSessionKey, l as normalizeAgentId, m as toAgentRequestSessionKey, n as DEFAULT_AGENT_ID, s as classifySessionKeyShape, t as DEFAULT_ACCOUNT_ID, u as normalizeMainKey, v as isCronRunSessionKey, x as parseAgentSessionKey } from "./session-key-BcXqsG0l.js";
|
|
@@ -16,21 +16,21 @@ import { t as applySqlitePragmas } from "./sqlite-pragmas-C_o_lU6a.js";
|
|
|
16
16
|
import { t as requireNodeSqlite } from "./sqlite-TEJFfaDd.js";
|
|
17
17
|
import { d as setSentryTag, n as getReliabilityUptimeStartMs, r as initReliability, t as emitReliabilityEvent, u as setSentryContext } from "./reliability-sDt3TayA.js";
|
|
18
18
|
import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-Ceu1fF46.js";
|
|
19
|
-
import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-
|
|
20
|
-
import { C as resolveRuntimeServiceVersion, S as VERSION, a as parseConfigJson5, c as resolveConfigSnapshotHash, i as loadConfig, l as writeConfigFile, n as clearConfigCache, o as readConfigFileSnapshot, r as createConfigIO, s as readConfigFileSnapshotForWrite, t as applySnapshotDefaults, y as applyMergePatch } from "./io-
|
|
19
|
+
import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-DuFmPzCB.js";
|
|
20
|
+
import { C as resolveRuntimeServiceVersion, S as VERSION, a as parseConfigJson5, c as resolveConfigSnapshotHash, i as loadConfig, l as writeConfigFile, n as clearConfigCache, o as readConfigFileSnapshot, r as createConfigIO, s as readConfigFileSnapshotForWrite, t as applySnapshotDefaults, y as applyMergePatch } from "./io-CpUiX-Lv.js";
|
|
21
21
|
import { l as isTestDefaultMemorySlotDisabled, n as loadPluginManifestRegistry } from "./manifest-registry-CGpdVni_.js";
|
|
22
|
-
import { n as migrateLegacyConfig } from "./config-
|
|
22
|
+
import { n as migrateLegacyConfig } from "./config-DJTLRK5S.js";
|
|
23
23
|
import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as buildChannelAccountBindings } from "./plugins-DQY2DPZw.js";
|
|
24
|
-
import { A as evaluateSessionFreshness, B as resolveMainSessionKey, C as readSessionMessages, D as stripEnvelopeFromMessages, E as resolveSessionTranscriptCandidates, I as resolveFreshSessionTotalTokens, L as canonicalizeMainSessionAlias, M as resolveSessionResetPolicy, R as resolveAgentMainSessionKey, S as capArrayByJsonBytes, U as snapshotSessionOrigin, V as resolveMainSessionKeyFromConfig, a as loadSessionStore, b as archiveFileOnDisk, g as mergeDeliveryContext, m as deliveryContextFromSession, n as parseSessionThreadInfo, t as extractDeliveryInfo, tt as cleanStaleLockFiles, u as updateSessionStore, v as normalizeSessionDeliveryFields, w as readSessionPreviewItemsFromTranscript, x as archiveSessionTranscripts, z as resolveExplicitAgentSessionKey } from "./sessions-
|
|
25
|
-
import { n as runWithModelFallback } from "./model-fallback
|
|
26
|
-
import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-
|
|
24
|
+
import { A as evaluateSessionFreshness, B as resolveMainSessionKey, C as readSessionMessages, D as stripEnvelopeFromMessages, E as resolveSessionTranscriptCandidates, I as resolveFreshSessionTotalTokens, L as canonicalizeMainSessionAlias, M as resolveSessionResetPolicy, R as resolveAgentMainSessionKey, S as capArrayByJsonBytes, U as snapshotSessionOrigin, V as resolveMainSessionKeyFromConfig, a as loadSessionStore, b as archiveFileOnDisk, g as mergeDeliveryContext, m as deliveryContextFromSession, n as parseSessionThreadInfo, t as extractDeliveryInfo, tt as cleanStaleLockFiles, u as updateSessionStore, v as normalizeSessionDeliveryFields, w as readSessionPreviewItemsFromTranscript, x as archiveSessionTranscripts, z as resolveExplicitAgentSessionKey } from "./sessions-CW4tzKA-.js";
|
|
25
|
+
import { n as runWithModelFallback } from "./model-fallback--afWtYyY.js";
|
|
26
|
+
import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-BYK6Qgnd.js";
|
|
27
27
|
import { a as enableTailscaleServeFunnel, i as enableTailscaleServe, n as disableTailscaleServe, r as enableTailscaleFunnel, s as getTailnetHostname, t as disableTailscaleFunnel } from "./tailscale-CTwxLN7C.js";
|
|
28
28
|
import { a as resolveRequestClientIp, c as createAuthRateLimiter, i as resolveGatewayAuth, l as safeEqualSecret, n as authorizeGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as isLocalDirectRequest, s as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, t as assertGatewayAuthConfigured } from "./auth-2GwvV8-B.js";
|
|
29
29
|
import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-C0DLwT7t.js";
|
|
30
30
|
import { a as isTrustedProxyAddress, d as resolveGatewayClientIp, f as resolveGatewayListenHosts, i as isPrivateOrLoopbackAddress, l as pickPrimaryLanIPv4, n as isLoopbackAddress, p as resolveHostName, r as isLoopbackHost, s as normalizeHostHeader, t as rawDataToString, u as resolveGatewayBindHost } from "./ws-D1BO6u3O.js";
|
|
31
|
-
import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-
|
|
32
|
-
import { n as buildWorkspaceSkillSnapshot, r as loadWorkspaceSkillEntries } from "./workspace-
|
|
33
|
-
import "./skills-
|
|
31
|
+
import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-CvEQbenq.js";
|
|
32
|
+
import { n as buildWorkspaceSkillSnapshot, r as loadWorkspaceSkillEntries } from "./workspace-CVAkpBJa.js";
|
|
33
|
+
import "./skills-Bf4ZPGHe.js";
|
|
34
34
|
import { a as isErrno, n as formatErrorMessage } from "./errors-iV4-NKRR.js";
|
|
35
35
|
import { c as detectMime } from "./image-ops-BGSWtWRb.js";
|
|
36
36
|
import { a as inspectPortUsage, r as ensurePortAvailable, s as formatPortDiagnostics } from "./ports-Cwx06Uji.js";
|
|
@@ -41,20 +41,20 @@ import { r as resolveUserDir } from "./user-directory-D27je39W.js";
|
|
|
41
41
|
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-Ds2czhyU.js";
|
|
42
42
|
import { i as normalizeInputProvenance } from "./input-provenance-ChJN5mZj.js";
|
|
43
43
|
import { t as fetchWithSsrFGuard } from "./fetch-guard-qmA7mTor.js";
|
|
44
|
-
import { n as loadModelCatalog } from "./model-catalog-
|
|
44
|
+
import { n as loadModelCatalog } from "./model-catalog-B1R3eepi.js";
|
|
45
45
|
import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-DRSqc0S5.js";
|
|
46
46
|
import { a as stripHeartbeatToken } from "./lanes-D8quZPN3.js";
|
|
47
|
-
import { i as resolveSessionDeliveryTarget, r as resolveOutboundTarget } from "./targets-
|
|
47
|
+
import { i as resolveSessionDeliveryTarget, r as resolveOutboundTarget } from "./targets-BpZ7t54u.js";
|
|
48
48
|
import { n as getMachineDisplayName } from "./with-timeout-B2r_vm3n.js";
|
|
49
49
|
import { c as startDiagnosticHeartbeat, d as isDiagnosticsEnabled, l as stopDiagnosticHeartbeat } from "./diagnostic-BGtWFYHO.js";
|
|
50
|
-
import { g as getGlobalHookRunner, v as runGlobalGatewayStopSafely } from "./reply-payloads-
|
|
51
|
-
import { C as OPENAI_TTS_MODELS, _ as setTtsEnabled, d as resolveTtsAutoMode, f as resolveTtsConfig, i as getTtsProvider, m as resolveTtsProviderOrder, o as isTtsEnabled, p as resolveTtsPrefsPath, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, w as OPENAI_TTS_VOICES, x as textToSpeech, y as setTtsProvider } from "./tts-
|
|
52
|
-
import { a as defineDrone, i as runDrone, t as createGatewayDroneHost } from "./host-
|
|
50
|
+
import { g as getGlobalHookRunner, v as runGlobalGatewayStopSafely } from "./reply-payloads-BS889lPA.js";
|
|
51
|
+
import { C as OPENAI_TTS_MODELS, _ as setTtsEnabled, d as resolveTtsAutoMode, f as resolveTtsConfig, i as getTtsProvider, m as resolveTtsProviderOrder, o as isTtsEnabled, p as resolveTtsPrefsPath, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, w as OPENAI_TTS_VOICES, x as textToSpeech, y as setTtsProvider } from "./tts-BhWpmVdG.js";
|
|
52
|
+
import { a as defineDrone, i as runDrone, t as createGatewayDroneHost } from "./host-C8oRBLB6.js";
|
|
53
53
|
import { a as traceGatewayEvent, n as pruneOldTraceFiles } from "./chat-trace-B7hAMbQe.js";
|
|
54
|
-
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-
|
|
54
|
+
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-Bz--RMDo.js";
|
|
55
55
|
import { t as ToolInputError } from "./common-CRD8HhuP.js";
|
|
56
56
|
import { $ as validateNodeDescribeParams, A as validateCronRunsParams, At as validateToolsUpdateParams, B as validateExecApprovalRequestParams, Bt as errorShape, C as validateConfigSchemaParams, Ct as validateSkillsStatusParams, D as validateCronListParams, Dt as validateTelegramValidateTokenParams, E as validateCronAddParams, Et as validateTalkModeParams, F as validateDevicePairRejectParams, Ft as validateWizardCancelParams, G as validateExecApprovalsSetParams, Gt as deriveDeviceIdFromPublicKey, H as validateExecApprovalsGetParams, Ht as buildDeviceAuthPayload, I as validateDevicePairRemoveParams, It as validateWizardNextParams, J as validateMeshPlanParams, Jt as verifyDeviceSignature, K as validateLogsTailParams, L as validateDeviceTokenRevokeParams, Lt as validateWizardStartParams, M as validateCronUpdateParams, Mt as validateWakeParams, N as validateDevicePairApproveParams, Nt as validateWebLoginStartParams, O as validateCronRemoveParams, Ot as validateToolsOverridesSetParams, P as validateDevicePairListParams, Pt as validateWebLoginWaitParams, Q as validateModelsListParams, R as validateDeviceTokenRotateParams, Rt as validateWizardStatusParams, S as validateConfigPatchParams, St as validateSkillsInstallParams, T as validateConnectParams, Tt as validateTalkConfigParams, U as validateExecApprovalsNodeGetParams, Ut as normalizeDeviceAuthScopes, V as validateExecApprovalResolveParams, Vt as parseSessionLabel, W as validateExecApprovalsNodeSetParams, X as validateMeshRunParams, Y as validateMeshRetryParams, Z as validateMeshStatusParams, _ as validateChatHistoryParams, _t as validateSessionsPreviewParams, a as validateAgentWaitParams, at as validateNodePairListParams, b as validateConfigApplyParams, bt as validateSessionsUsageParams, c as validateAgentsFilesGetParams, ct as validateNodePairVerifyParams, d as validateAgentsListParams, dt as validateRequestFrame, et as validateNodeEventParams, f as validateAgentsSkillsSetParams, ft as validateSendParams, g as validateChatAbortParams, gt as validateSessionsPatchParams, h as validateChannelsStatusParams, ht as validateSessionsListParams, i as validateAgentParams, it as validateNodePairApproveParams, j as validateCronStatusParams, jt as validateUpdateRunParams, k as validateCronRunParams, kt as validateToolsStatusParams, l as validateAgentsFilesListParams, lt as validateNodeRenameParams, m as validateChannelsLogoutParams, mt as validateSessionsDeleteParams, n as formatValidationErrors, nt as validateNodeInvokeResultParams, o as validateAgentsCreateParams, ot as validateNodePairRejectParams, p as validateAgentsUpdateParams, pt as validateSessionsCompactParams, q as validateMeshPlanAutoParams, qt as normalizeDevicePublicKeyBase64Url, r as validateAgentIdentityParams, rt as validateNodeListParams, s as validateAgentsDeleteParams, st as validateNodePairRequestParams, tt as validateNodeInvokeParams, u as validateAgentsFilesSetParams, ut as validatePollParams, v as validateChatInjectParams, vt as validateSessionsResetParams, w as validateConfigSetParams, wt as validateSkillsUpdateParams, x as validateConfigGetParams, xt as validateSkillsBinsParams, y as validateChatSendParams, yt as validateSessionsResolveParams, z as validateDiscordValidateTokenParams, zt as ErrorCodes } from "./client-u0H6YbL4.js";
|
|
57
|
-
import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-
|
|
57
|
+
import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-Di0NGY7s.js";
|
|
58
58
|
import { i as isExternalHookSession, n as detectSuspiciousPatterns, r as getHookType, t as buildSafeExternalPrompt } from "./external-content-Css-cJoz.js";
|
|
59
59
|
import { t as formatDocsLink } from "./links-C1xb6h4b.js";
|
|
60
60
|
import { n as runCommandWithRuntime } from "./cli-utils-Cg2c3XDf.js";
|
|
@@ -62,7 +62,7 @@ import { t as formatHelpExamples } from "./help-format-D20I7z1G.js";
|
|
|
62
62
|
import { n as withProgress } from "./progress-8_pqhNaq.js";
|
|
63
63
|
import { t as getChannelActivity } from "./channel-activity-mLVM0GeJ.js";
|
|
64
64
|
import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals, t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-DWRoIcX_.js";
|
|
65
|
-
import { a as resolveGroupToolPolicy, i as resolveEffectiveToolPolicy, o as resolveSubagentToolPolicy, t as listAgentWorkspaceDirs } from "./workspace-dirs-
|
|
65
|
+
import { a as resolveGroupToolPolicy, i as resolveEffectiveToolPolicy, o as resolveSubagentToolPolicy, t as listAgentWorkspaceDirs } from "./workspace-dirs-CJDJUlno.js";
|
|
66
66
|
import { r as recallMemories, t as configureMemorySink } from "./memory-sink-D19pkCCX.js";
|
|
67
67
|
import { t as KnowledgeGraphSession } from "./knowledge-graph-DoB5Rkcc.js";
|
|
68
68
|
import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-7pQyzV4m.js";
|
|
@@ -70,25 +70,25 @@ import { n as formatTokenCount, r as formatUsd } from "./usage-format--dK3YoXf.j
|
|
|
70
70
|
import { a as markGatewaySigusr1RestartHandled, c as setPreRestartDeferralCheck, i as isGatewaySigusr1RestartExternallyAllowed, n as deferGatewayRestartUntilIdle, o as scheduleGatewaySigusr1Restart, r as emitGatewayRestart, s as setGatewaySigusr1RestartPolicy, t as consumeGatewaySigusr1RestartAuthorization } from "./restart-CrIJvqAZ.js";
|
|
71
71
|
import { i as onHeartbeatEvent, r as getLastHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-CCq47bb-.js";
|
|
72
72
|
import { t as normalizePollInput } from "./polls-8i6CJXI7.js";
|
|
73
|
-
import { a as computeBackoff, n as resolveChannelSenderIdentity, o as sleepWithAbort, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-
|
|
73
|
+
import { a as computeBackoff, n as resolveChannelSenderIdentity, o as sleepWithAbort, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-CfrIMbCM.js";
|
|
74
74
|
import { n as handleHubAssignmentChanged, r as initUserSubsystem, t as getActiveUserSubsystem } from "./server-startup-users-DPCSImrP.js";
|
|
75
75
|
import { t as mapRoleToScopes } from "./types-DI5uGqkl.js";
|
|
76
|
-
import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-
|
|
76
|
+
import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-DFeGFeii.js";
|
|
77
77
|
import { t as ensureMinionCliOnPath } from "./path-env-D7TwuZdr.js";
|
|
78
78
|
import { t as forceFreePortAndWait } from "./ports-BsrFZzjz.js";
|
|
79
79
|
import { t as buildChannelUiCatalog } from "./catalog-gQ7yZnqz.js";
|
|
80
|
-
import { t as buildWorkspaceSkillStatus } from "./skills-status-
|
|
80
|
+
import { t as buildWorkspaceSkillStatus } from "./skills-status-8p-KrlIF.js";
|
|
81
81
|
import { n as setGoogleAdcClient, t as getGoogleAdcClient } from "./hub-credential-client-registry-Do4Y6KWZ.js";
|
|
82
82
|
import { a as normalizeOptionalAgentId, c as normalizePayloadToSystemText, d as buildDeliveryFromLegacyPayload, f as hasLegacyDeliveryHints, i as inferLegacyName, l as normalizeRequiredName, n as normalizeCronJobCreate, o as normalizeOptionalSessionKey, p as stripLegacyDeliveryFields, r as normalizeCronJobPatch, s as normalizeOptionalText, t as normalizeHttpWebhookUrl, u as migrateLegacyCronPayload } from "./webhook-url-_cSEQkJk.js";
|
|
83
83
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BlvVswOf.js";
|
|
84
84
|
import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-B7OftYJp.js";
|
|
85
|
-
import { c as loadChannelOutboundAdapter, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-
|
|
85
|
+
import { c as loadChannelOutboundAdapter, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-Ds0o_rCY.js";
|
|
86
86
|
import { n as resolveMessageChannelSelection } from "./channel-selection-ERVd9FwM.js";
|
|
87
|
-
import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, t as resolveOutboundSessionRoute } from "./outbound-session-
|
|
88
|
-
import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-
|
|
87
|
+
import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, t as resolveOutboundSessionRoute } from "./outbound-session-BG0ZMrIB.js";
|
|
88
|
+
import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-D5w2xNfi.js";
|
|
89
89
|
import { a as runAggregation, n as executeOrchestration, r as readStatusJson, t as executePipeline } from "./orchestration-pipeline-BBscBgru.js";
|
|
90
90
|
import { r as readManifest, t as completeManifest } from "./orchestration-manifest-ByxGsjSI.js";
|
|
91
|
-
import { i as startBrowserControlServiceFromConfig, r as createBrowserControlContext, t as createBrowserRouteDispatcher } from "./dispatcher-
|
|
91
|
+
import { i as startBrowserControlServiceFromConfig, r as createBrowserControlContext, t as createBrowserRouteDispatcher } from "./dispatcher-D8fgAnwH.js";
|
|
92
92
|
import { n as persistBrowserProxyFiles, t as applyBrowserProxyPaths } from "./proxy-files-BG6FSWAt.js";
|
|
93
93
|
import { r as cachedJson } from "./ttl-cache-D8U8y0By.js";
|
|
94
94
|
import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-_OH_n-zu.js";
|
|
@@ -97,32 +97,32 @@ import { t as WizardCancelledError } from "./prompts-E0FayNjJ.js";
|
|
|
97
97
|
import { t as resolveChannelDefaultAccountId } from "./helpers-BcEbnHmz.js";
|
|
98
98
|
import { t as applyPluginAutoEnable } from "./plugin-auto-enable-DARQAsaF.js";
|
|
99
99
|
import { t as buildChannelAccountSnapshot } from "./status-Dg720jp3.js";
|
|
100
|
-
import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-
|
|
101
|
-
import "./onboard-helpers-
|
|
100
|
+
import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-B9IGa3vx.js";
|
|
101
|
+
import "./onboard-helpers-HkYz_NGi.js";
|
|
102
102
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-C0ucbd84.js";
|
|
103
|
-
import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, s as setHeartbeatsEnabled, t as formatHealthChannelLines } from "./health-
|
|
103
|
+
import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, s as setHeartbeatsEnabled, t as formatHealthChannelLines } from "./health-BJbAa4df.js";
|
|
104
104
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BatXL6LW.js";
|
|
105
105
|
import { t as discoverGatewayBeacons } from "./bonjour-discovery-C1bt62Sk.js";
|
|
106
|
-
import { t as installSkill } from "./skills-install-
|
|
106
|
+
import { t as installSkill } from "./skills-install-DkZHLCih.js";
|
|
107
107
|
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-Do82z49r.js";
|
|
108
108
|
import { t as parsePort$1 } from "./parse-port-DA32M3gA.js";
|
|
109
|
-
import { n as addGatewayServiceCommands } from "./daemon-cli-
|
|
109
|
+
import { n as addGatewayServiceCommands } from "./daemon-cli-CHfZAu4w.js";
|
|
110
110
|
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-CnK9cDZ7.js";
|
|
111
|
-
import { a as resolveNodeCommandAllowlist, i as isNodeCommandAllowed, o as probeGateway } from "./audit-
|
|
112
|
-
import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-
|
|
111
|
+
import { a as resolveNodeCommandAllowlist, i as isNodeCommandAllowed, o as probeGateway } from "./audit-B8L_aShb.js";
|
|
112
|
+
import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-DyQwrglF.js";
|
|
113
113
|
import { a as resolveNpmChannelTag, n as compareSemverStrings, p as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-Dy4Ru8ir.js";
|
|
114
114
|
import { i as initCrypto, n as ProbeRegistry, r as SecretsManager, t as SecretStore } from "./store-BBswqFUs.js";
|
|
115
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
116
|
-
import { a as normalizeRpcAttachmentsToChatAttachments, c as logWs, d as setGatewayWsLogStyle, i as sendApnsBackgroundWake, l as shouldLogWs, o as parseMessageWithAttachments, r as resolveApnsAuthConfigFromEnv, s as formatForLog, t as loadApnsRegistration, u as summarizeAgentEventForWsLog } from "./push-apns-
|
|
117
|
-
import { h as resolveGmailPullRuntimeConfig } from "./gmail-
|
|
115
|
+
import { t as runOnboardingWizard } from "./onboarding-Cg42Uf0E.js";
|
|
116
|
+
import { a as normalizeRpcAttachmentsToChatAttachments, c as logWs, d as setGatewayWsLogStyle, i as sendApnsBackgroundWake, l as shouldLogWs, o as parseMessageWithAttachments, r as resolveApnsAuthConfigFromEnv, s as formatForLog, t as loadApnsRegistration, u as summarizeAgentEventForWsLog } from "./push-apns-BhtcU_Da.js";
|
|
117
|
+
import { h as resolveGmailPullRuntimeConfig } from "./gmail-BuCz-KEp.js";
|
|
118
118
|
import { t as createOutboundSendDeps$1 } from "./outbound-send-deps-BF7Fp5DR.js";
|
|
119
|
-
import { a as pruneAgentConfig, c as resolveAgentDeliveryPlan, d as loadAgentIdentityFromWorkspace, i as loadAgentIdentity, l as resolveAgentOutboundTarget, o as agentCommand, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-
|
|
119
|
+
import { a as pruneAgentConfig, c as resolveAgentDeliveryPlan, d as loadAgentIdentityFromWorkspace, i as loadAgentIdentity, l as resolveAgentOutboundTarget, o as agentCommand, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Di1Fb5KI.js";
|
|
120
120
|
import { n as validateSystemRunCommandConsistency, t as formatExecCommand } from "./system-run-command-BRxsVIll.js";
|
|
121
121
|
import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-COKJbLTF.js";
|
|
122
122
|
import { n as setEmbedConcurrency } from "./qmd-embed-semaphore-B8ApTrxs.js";
|
|
123
123
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
124
124
|
import * as fs$3 from "node:fs";
|
|
125
|
-
import fs, { constants, promises, readFileSync } from "node:fs";
|
|
125
|
+
import fs, { appendFileSync, constants, existsSync, mkdirSync, promises, readFileSync, statSync } from "node:fs";
|
|
126
126
|
import os, { homedir } from "node:os";
|
|
127
127
|
import * as path$1 from "node:path";
|
|
128
128
|
import path, { dirname, join } from "node:path";
|
|
@@ -147,8 +147,8 @@ import chokidar from "chokidar";
|
|
|
147
147
|
import { Type } from "@sinclair/typebox";
|
|
148
148
|
import { EventEmitter } from "node:events";
|
|
149
149
|
import Database from "better-sqlite3";
|
|
150
|
-
import { monitorEventLoopDelay } from "node:perf_hooks";
|
|
151
150
|
import { SignJWT, createRemoteJWKSet, jwtVerify } from "jose";
|
|
151
|
+
import { monitorEventLoopDelay } from "node:perf_hooks";
|
|
152
152
|
import { Cron } from "croner";
|
|
153
153
|
import { DatabaseSync } from "node:sqlite";
|
|
154
154
|
import { encode } from "gpt-tokenizer";
|
|
@@ -1398,177 +1398,8 @@ function scanForInterruptedOrchestrations(agentWorkspaces) {
|
|
|
1398
1398
|
return interrupted;
|
|
1399
1399
|
}
|
|
1400
1400
|
//#endregion
|
|
1401
|
-
//#region src/gateway/gateway-request-metrics.ts
|
|
1402
|
-
/**
|
|
1403
|
-
* Gateway request performance metrics.
|
|
1404
|
-
*
|
|
1405
|
-
* Records per-method handler latency at the request dispatch chokepoint and
|
|
1406
|
-
* samples Node's event-loop delay, then emits a single aggregated
|
|
1407
|
-
* `gateway.perf_snapshot` event per window (default 60s) into the unified
|
|
1408
|
-
* event store — the same surface the hub reliability dashboard reads.
|
|
1409
|
-
*
|
|
1410
|
-
* Why this exists: the legacy `gateway.ws_slow_response` event fired per-call
|
|
1411
|
-
* at a 50ms bar, flooding the dashboard with non-actionable noise while
|
|
1412
|
-
* measuring *total* WS round-trip time (which is dominated by event-loop
|
|
1413
|
-
* scheduling, not handler work). This module instead measures handler CPU
|
|
1414
|
-
* time per method AND event-loop delay separately, so slow responses can be
|
|
1415
|
-
* correctly attributed (heavy handler vs. a congested event loop) from
|
|
1416
|
-
* percentile aggregates rather than guesswork.
|
|
1417
|
-
*
|
|
1418
|
-
* Metric points emitted (in `gateway.perf_snapshot` metadata):
|
|
1419
|
-
* - requests — count + throughput (req/s) over the window
|
|
1420
|
-
* - errorRate — fraction of requests that responded `ok: false`
|
|
1421
|
-
* - latencyMs — p50 / p95 / p99 / max handler latency across all methods
|
|
1422
|
-
* - slowestMethods — top methods by p95 latency (count, p50, p95, max, errors)
|
|
1423
|
-
* - eventLoopDelayMs — mean / p50 / p99 / max event-loop lag over the window
|
|
1424
|
-
*
|
|
1425
|
-
* @module
|
|
1426
|
-
*/
|
|
1427
|
-
const log$26 = createSubsystemLogger("gateway/metrics");
|
|
1428
|
-
/** Cap on retained latency samples per method (reservoir) to bound memory. */
|
|
1429
|
-
const MAX_SAMPLES_PER_METHOD = 512;
|
|
1430
|
-
/** Default snapshot window. Matches the reliability rate-limiter granularity. */
|
|
1431
|
-
const DEFAULT_INTERVAL_MS = 6e4;
|
|
1432
|
-
const methodStats = /* @__PURE__ */ new Map();
|
|
1433
|
-
let reporterTimer = null;
|
|
1434
|
-
let eventLoopHist = null;
|
|
1435
|
-
let windowStartMs = 0;
|
|
1436
|
-
/**
|
|
1437
|
-
* Record one dispatched request's handler latency and outcome.
|
|
1438
|
-
* Called at the dispatch chokepoint. Best-effort — never throws.
|
|
1439
|
-
*/
|
|
1440
|
-
function recordMethodLatency(method, durationMs, ok) {
|
|
1441
|
-
if (!Number.isFinite(durationMs) || durationMs < 0) return;
|
|
1442
|
-
let stat = methodStats.get(method);
|
|
1443
|
-
if (!stat) {
|
|
1444
|
-
stat = {
|
|
1445
|
-
count: 0,
|
|
1446
|
-
errors: 0,
|
|
1447
|
-
samples: []
|
|
1448
|
-
};
|
|
1449
|
-
methodStats.set(method, stat);
|
|
1450
|
-
}
|
|
1451
|
-
stat.count += 1;
|
|
1452
|
-
if (!ok) stat.errors += 1;
|
|
1453
|
-
if (stat.samples.length < MAX_SAMPLES_PER_METHOD) stat.samples.push(durationMs);
|
|
1454
|
-
else stat.samples[Math.floor(Math.random() * MAX_SAMPLES_PER_METHOD)] = durationMs;
|
|
1455
|
-
}
|
|
1456
|
-
function percentiles(samples) {
|
|
1457
|
-
if (samples.length === 0) return {
|
|
1458
|
-
p50: 0,
|
|
1459
|
-
p95: 0,
|
|
1460
|
-
p99: 0,
|
|
1461
|
-
max: 0
|
|
1462
|
-
};
|
|
1463
|
-
const sorted = [...samples].sort((a, b) => a - b);
|
|
1464
|
-
const at = (q) => sorted[Math.min(Math.floor(sorted.length * q), sorted.length - 1)];
|
|
1465
|
-
return {
|
|
1466
|
-
p50: Math.round(at(.5)),
|
|
1467
|
-
p95: Math.round(at(.95)),
|
|
1468
|
-
p99: Math.round(at(.99)),
|
|
1469
|
-
max: Math.round(sorted[sorted.length - 1])
|
|
1470
|
-
};
|
|
1471
|
-
}
|
|
1472
|
-
/** Build a snapshot from the current window without resetting state. */
|
|
1473
|
-
function buildGatewayPerfSnapshot(windowMs, topN = 5) {
|
|
1474
|
-
const allSamples = [];
|
|
1475
|
-
let requests = 0;
|
|
1476
|
-
let errors = 0;
|
|
1477
|
-
const perMethod = [];
|
|
1478
|
-
for (const [method, stat] of methodStats) {
|
|
1479
|
-
requests += stat.count;
|
|
1480
|
-
errors += stat.errors;
|
|
1481
|
-
for (const s of stat.samples) allSamples.push(s);
|
|
1482
|
-
const p = percentiles(stat.samples);
|
|
1483
|
-
perMethod.push({
|
|
1484
|
-
method,
|
|
1485
|
-
count: stat.count,
|
|
1486
|
-
errors: stat.errors,
|
|
1487
|
-
p50: p.p50,
|
|
1488
|
-
p95: p.p95,
|
|
1489
|
-
max: p.max
|
|
1490
|
-
});
|
|
1491
|
-
}
|
|
1492
|
-
perMethod.sort((a, b) => b.p95 - a.p95 || b.max - a.max);
|
|
1493
|
-
const windowSec = windowMs > 0 ? windowMs / 1e3 : 1;
|
|
1494
|
-
const el = eventLoopHist;
|
|
1495
|
-
const elMs = (ns) => Math.round(ns / 1e6 * 100) / 100;
|
|
1496
|
-
return {
|
|
1497
|
-
windowMs,
|
|
1498
|
-
requests,
|
|
1499
|
-
throughputPerSec: Math.round(requests / windowSec * 100) / 100,
|
|
1500
|
-
errorRate: requests > 0 ? Math.round(errors / requests * 1e3) / 1e3 : 0,
|
|
1501
|
-
latencyMs: percentiles(allSamples),
|
|
1502
|
-
slowestMethods: perMethod.slice(0, topN),
|
|
1503
|
-
eventLoopDelayMs: el ? {
|
|
1504
|
-
mean: elMs(el.mean),
|
|
1505
|
-
p50: elMs(el.percentile(50)),
|
|
1506
|
-
p99: elMs(el.percentile(99)),
|
|
1507
|
-
max: elMs(el.max)
|
|
1508
|
-
} : {
|
|
1509
|
-
mean: 0,
|
|
1510
|
-
p50: 0,
|
|
1511
|
-
p99: 0,
|
|
1512
|
-
max: 0
|
|
1513
|
-
}
|
|
1514
|
-
};
|
|
1515
|
-
}
|
|
1516
|
-
function emitSnapshot(windowMs) {
|
|
1517
|
-
const snap = buildGatewayPerfSnapshot(windowMs);
|
|
1518
|
-
if (snap.requests === 0 && snap.eventLoopDelayMs.max < 100) return;
|
|
1519
|
-
const { latencyMs: lat, eventLoopDelayMs: el } = snap;
|
|
1520
|
-
emitEvent({
|
|
1521
|
-
category: "gateway",
|
|
1522
|
-
severity: "info",
|
|
1523
|
-
event: "gateway.perf_snapshot",
|
|
1524
|
-
message: `Gateway perf: ${snap.requests} req (${snap.throughputPerSec}/s), p95 ${lat.p95}ms / max ${lat.max}ms, evloop p99 ${el.p99}ms / max ${el.max}ms`,
|
|
1525
|
-
metadata: { ...snap },
|
|
1526
|
-
timestamp: Date.now()
|
|
1527
|
-
});
|
|
1528
|
-
}
|
|
1529
|
-
/**
|
|
1530
|
-
* Start the periodic metrics reporter and event-loop delay monitor.
|
|
1531
|
-
* Idempotent — a second call is a no-op until {@link stopGatewayRequestMetrics}.
|
|
1532
|
-
* Returns a stop function.
|
|
1533
|
-
*/
|
|
1534
|
-
function startGatewayRequestMetrics(opts) {
|
|
1535
|
-
if (reporterTimer) return stopGatewayRequestMetrics;
|
|
1536
|
-
const intervalMs = opts?.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
1537
|
-
try {
|
|
1538
|
-
eventLoopHist = monitorEventLoopDelay({ resolution: 20 });
|
|
1539
|
-
eventLoopHist.enable();
|
|
1540
|
-
} catch (err) {
|
|
1541
|
-
log$26.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
|
|
1542
|
-
eventLoopHist = null;
|
|
1543
|
-
}
|
|
1544
|
-
windowStartMs = Date.now();
|
|
1545
|
-
reporterTimer = setInterval(() => {
|
|
1546
|
-
const now = Date.now();
|
|
1547
|
-
try {
|
|
1548
|
-
emitSnapshot(now - windowStartMs);
|
|
1549
|
-
} catch (err) {
|
|
1550
|
-
log$26.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1551
|
-
}
|
|
1552
|
-
methodStats.clear();
|
|
1553
|
-
eventLoopHist?.reset();
|
|
1554
|
-
windowStartMs = now;
|
|
1555
|
-
}, intervalMs);
|
|
1556
|
-
reporterTimer.unref?.();
|
|
1557
|
-
return stopGatewayRequestMetrics;
|
|
1558
|
-
}
|
|
1559
|
-
/** Stop the reporter and clear accumulated state. */
|
|
1560
|
-
function stopGatewayRequestMetrics() {
|
|
1561
|
-
if (reporterTimer) {
|
|
1562
|
-
clearInterval(reporterTimer);
|
|
1563
|
-
reporterTimer = null;
|
|
1564
|
-
}
|
|
1565
|
-
eventLoopHist?.disable();
|
|
1566
|
-
eventLoopHist = null;
|
|
1567
|
-
methodStats.clear();
|
|
1568
|
-
}
|
|
1569
|
-
//#endregion
|
|
1570
1401
|
//#region src/infra/exec-approval-forwarder.ts
|
|
1571
|
-
const log$
|
|
1402
|
+
const log$26 = createSubsystemLogger("gateway/exec-approvals");
|
|
1572
1403
|
const DEFAULT_MODE = "session";
|
|
1573
1404
|
function normalizeMode(mode) {
|
|
1574
1405
|
return mode ?? DEFAULT_MODE;
|
|
@@ -1686,7 +1517,7 @@ async function deliverToTargets(params) {
|
|
|
1686
1517
|
payloads: [{ text: params.text }]
|
|
1687
1518
|
});
|
|
1688
1519
|
} catch (err) {
|
|
1689
|
-
log$
|
|
1520
|
+
log$26.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
|
|
1690
1521
|
}
|
|
1691
1522
|
});
|
|
1692
1523
|
await Promise.allSettled(deliveries);
|
|
@@ -1847,12 +1678,12 @@ function stopLedgerFlusher() {
|
|
|
1847
1678
|
}
|
|
1848
1679
|
//#endregion
|
|
1849
1680
|
//#region src/infra/message-ledger-hooks.ts
|
|
1850
|
-
const PLUGIN_ID$
|
|
1681
|
+
const PLUGIN_ID$3 = "minion:message-ledger";
|
|
1851
1682
|
const recentInbound = /* @__PURE__ */ new Map();
|
|
1852
1683
|
const keyFor = (channel, accountId, chatId) => `${channel}|${accountId ?? ""}|${chatId ?? ""}`;
|
|
1853
1684
|
function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
1854
1685
|
registry.typedHooks.push({
|
|
1855
|
-
pluginId: PLUGIN_ID$
|
|
1686
|
+
pluginId: PLUGIN_ID$3,
|
|
1856
1687
|
hookName: "gateway_start",
|
|
1857
1688
|
handler: () => {
|
|
1858
1689
|
openMessageLedger(dbPath);
|
|
@@ -1860,7 +1691,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1860
1691
|
},
|
|
1861
1692
|
source: "internal"
|
|
1862
1693
|
}, {
|
|
1863
|
-
pluginId: PLUGIN_ID$
|
|
1694
|
+
pluginId: PLUGIN_ID$3,
|
|
1864
1695
|
hookName: "gateway_stop",
|
|
1865
1696
|
handler: () => {
|
|
1866
1697
|
stopLedgerFlusher();
|
|
@@ -1868,7 +1699,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1868
1699
|
},
|
|
1869
1700
|
source: "internal"
|
|
1870
1701
|
}, {
|
|
1871
|
-
pluginId: PLUGIN_ID$
|
|
1702
|
+
pluginId: PLUGIN_ID$3,
|
|
1872
1703
|
hookName: "message_inbound",
|
|
1873
1704
|
handler: (event) => {
|
|
1874
1705
|
const row = record({
|
|
@@ -1893,7 +1724,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1893
1724
|
},
|
|
1894
1725
|
source: "internal"
|
|
1895
1726
|
}, {
|
|
1896
|
-
pluginId: PLUGIN_ID$
|
|
1727
|
+
pluginId: PLUGIN_ID$3,
|
|
1897
1728
|
hookName: "message_received",
|
|
1898
1729
|
handler: (_event, ctx) => {
|
|
1899
1730
|
if (!ctx.sessionKey) return;
|
|
@@ -1909,7 +1740,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1909
1740
|
},
|
|
1910
1741
|
source: "internal"
|
|
1911
1742
|
}, {
|
|
1912
|
-
pluginId: PLUGIN_ID$
|
|
1743
|
+
pluginId: PLUGIN_ID$3,
|
|
1913
1744
|
hookName: "message_sent",
|
|
1914
1745
|
handler: (event, ctx) => {
|
|
1915
1746
|
record({
|
|
@@ -2347,24 +2178,24 @@ function ensureWorkspaceSafely(userId) {
|
|
|
2347
2178
|
ensurePersonalAgentWorkspace(userId);
|
|
2348
2179
|
} catch {}
|
|
2349
2180
|
}
|
|
2350
|
-
const PLUGIN_ID$
|
|
2181
|
+
const PLUGIN_ID$2 = "minion:personal-agent-observations";
|
|
2351
2182
|
function registerPersonalAgentObservationHooks(registry, dbPath) {
|
|
2352
2183
|
registry.typedHooks.push({
|
|
2353
|
-
pluginId: PLUGIN_ID$
|
|
2184
|
+
pluginId: PLUGIN_ID$2,
|
|
2354
2185
|
hookName: "gateway_start",
|
|
2355
2186
|
handler: () => {
|
|
2356
2187
|
openObservationStore(dbPath);
|
|
2357
2188
|
},
|
|
2358
2189
|
source: "internal"
|
|
2359
2190
|
}, {
|
|
2360
|
-
pluginId: PLUGIN_ID$
|
|
2191
|
+
pluginId: PLUGIN_ID$2,
|
|
2361
2192
|
hookName: "gateway_stop",
|
|
2362
2193
|
handler: () => {
|
|
2363
2194
|
closeObservationStore();
|
|
2364
2195
|
},
|
|
2365
2196
|
source: "internal"
|
|
2366
2197
|
}, {
|
|
2367
|
-
pluginId: PLUGIN_ID$
|
|
2198
|
+
pluginId: PLUGIN_ID$2,
|
|
2368
2199
|
hookName: "message_inbound",
|
|
2369
2200
|
handler: (event) => {
|
|
2370
2201
|
if (event.isGroup) return;
|
|
@@ -2387,7 +2218,7 @@ function registerPersonalAgentObservationHooks(registry, dbPath) {
|
|
|
2387
2218
|
},
|
|
2388
2219
|
source: "internal"
|
|
2389
2220
|
}, {
|
|
2390
|
-
pluginId: PLUGIN_ID$
|
|
2221
|
+
pluginId: PLUGIN_ID$2,
|
|
2391
2222
|
hookName: "message_received",
|
|
2392
2223
|
handler: (event, ctx) => {
|
|
2393
2224
|
const channel = ctx.channelId;
|
|
@@ -2404,7 +2235,7 @@ function registerPersonalAgentObservationHooks(registry, dbPath) {
|
|
|
2404
2235
|
},
|
|
2405
2236
|
source: "internal"
|
|
2406
2237
|
}, {
|
|
2407
|
-
pluginId: PLUGIN_ID$
|
|
2238
|
+
pluginId: PLUGIN_ID$2,
|
|
2408
2239
|
hookName: "message_sent",
|
|
2409
2240
|
handler: (event, ctx) => {
|
|
2410
2241
|
const channel = ctx.channelId;
|
|
@@ -3146,6 +2977,86 @@ function asStringArray(v) {
|
|
|
3146
2977
|
return v.filter((x) => typeof x === "string");
|
|
3147
2978
|
}
|
|
3148
2979
|
//#endregion
|
|
2980
|
+
//#region src/trajectory/writer.ts
|
|
2981
|
+
const DEFAULT_MAX_BYTES$2 = 5 * 1024 * 1024;
|
|
2982
|
+
var TrajectoryWriter = class {
|
|
2983
|
+
constructor(file, opts) {
|
|
2984
|
+
this.file = file;
|
|
2985
|
+
this.bytes = 0;
|
|
2986
|
+
this.dropped = 0;
|
|
2987
|
+
this.maxBytes = opts?.maxBytes ?? DEFAULT_MAX_BYTES$2;
|
|
2988
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
2989
|
+
if (existsSync(file)) this.bytes = statSync(file).size;
|
|
2990
|
+
}
|
|
2991
|
+
append(event) {
|
|
2992
|
+
if (this.bytes >= this.maxBytes) {
|
|
2993
|
+
this.dropped += 1;
|
|
2994
|
+
return;
|
|
2995
|
+
}
|
|
2996
|
+
const line = `${JSON.stringify(event)}\n`;
|
|
2997
|
+
try {
|
|
2998
|
+
appendFileSync(this.file, line);
|
|
2999
|
+
this.bytes += Buffer.byteLength(line);
|
|
3000
|
+
} catch {
|
|
3001
|
+
this.dropped += 1;
|
|
3002
|
+
}
|
|
3003
|
+
}
|
|
3004
|
+
};
|
|
3005
|
+
//#endregion
|
|
3006
|
+
//#region src/trajectory/recorder.ts
|
|
3007
|
+
const PLUGIN_ID$1 = "trajectory-recorder";
|
|
3008
|
+
const writers = /* @__PURE__ */ new Map();
|
|
3009
|
+
const MAX_LIVE_SESSIONS = 500;
|
|
3010
|
+
function writerFor(sessionId, agentId) {
|
|
3011
|
+
let w = writers.get(sessionId);
|
|
3012
|
+
if (!w) {
|
|
3013
|
+
if (writers.size >= MAX_LIVE_SESSIONS) {
|
|
3014
|
+
const oldest = writers.keys().next().value;
|
|
3015
|
+
if (oldest !== void 0) writers.delete(oldest);
|
|
3016
|
+
}
|
|
3017
|
+
w = new TrajectoryWriter(join(resolveSessionTranscriptsDirForAgent(agentId), `trajectory-${sessionId}.jsonl`));
|
|
3018
|
+
writers.set(sessionId, w);
|
|
3019
|
+
}
|
|
3020
|
+
return w;
|
|
3021
|
+
}
|
|
3022
|
+
/** Idempotent: enable per-session JSONL trajectory recording via lifecycle hooks. */
|
|
3023
|
+
function enableTrajectoryRecording() {
|
|
3024
|
+
registerLifecycleHooks(PLUGIN_ID$1, {
|
|
3025
|
+
onSessionStart: async (s) => {
|
|
3026
|
+
writerFor(s.sessionId, s.agentId).append({
|
|
3027
|
+
kind: "session_start",
|
|
3028
|
+
sessionId: s.sessionId,
|
|
3029
|
+
agentId: s.agentId,
|
|
3030
|
+
channelType: s.channelType,
|
|
3031
|
+
timestamp: s.startedAt
|
|
3032
|
+
});
|
|
3033
|
+
},
|
|
3034
|
+
postLlmCall: async (ctx, result) => {
|
|
3035
|
+
writerFor(ctx.sessionId, ctx.agentId).append({
|
|
3036
|
+
kind: "llm_call",
|
|
3037
|
+
turn: ctx.turn,
|
|
3038
|
+
model: result.model,
|
|
3039
|
+
inputTokens: result.inputTokens,
|
|
3040
|
+
outputTokens: result.outputTokens,
|
|
3041
|
+
durationMs: result.durationMs,
|
|
3042
|
+
hasToolCalls: result.hasToolCalls,
|
|
3043
|
+
error: result.error,
|
|
3044
|
+
timestamp: ctx.timestamp
|
|
3045
|
+
});
|
|
3046
|
+
},
|
|
3047
|
+
onSessionEnd: async (s, summary) => {
|
|
3048
|
+
writerFor(s.sessionId, s.agentId).append({
|
|
3049
|
+
kind: "session_end",
|
|
3050
|
+
turns: summary.turns,
|
|
3051
|
+
durationMs: summary.durationMs,
|
|
3052
|
+
endReason: summary.endReason,
|
|
3053
|
+
timestamp: Date.now()
|
|
3054
|
+
});
|
|
3055
|
+
writers.delete(s.sessionId);
|
|
3056
|
+
}
|
|
3057
|
+
});
|
|
3058
|
+
}
|
|
3059
|
+
//#endregion
|
|
3149
3060
|
//#region src/gateway/auth/auth-jwt.ts
|
|
3150
3061
|
/**
|
|
3151
3062
|
* JWT validation module for the multi-tenant gateway.
|
|
@@ -3251,7 +3162,7 @@ async function validateGatewayJwt(token, config) {
|
|
|
3251
3162
|
}
|
|
3252
3163
|
//#endregion
|
|
3253
3164
|
//#region src/gateway/channel-health-monitor.ts
|
|
3254
|
-
const log$
|
|
3165
|
+
const log$25 = createSubsystemLogger("gateway/health-monitor");
|
|
3255
3166
|
const DEFAULT_CHECK_INTERVAL_MS$1 = 5 * 6e4;
|
|
3256
3167
|
const DEFAULT_STARTUP_GRACE_MS = 6e4;
|
|
3257
3168
|
const DEFAULT_COOLDOWN_CYCLES = 2;
|
|
@@ -3300,11 +3211,11 @@ function startChannelHealthMonitor(deps) {
|
|
|
3300
3211
|
if (now - record.lastRestartAt <= cooldownMs) continue;
|
|
3301
3212
|
pruneOldRestarts(record, now);
|
|
3302
3213
|
if (record.restartsThisHour.length >= maxRestartsPerHour) {
|
|
3303
|
-
log$
|
|
3214
|
+
log$25.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
|
|
3304
3215
|
continue;
|
|
3305
3216
|
}
|
|
3306
3217
|
const reason = !status.running ? status.reconnectAttempts && status.reconnectAttempts >= 10 ? "gave-up" : "stopped" : "stuck";
|
|
3307
|
-
log$
|
|
3218
|
+
log$25.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
|
|
3308
3219
|
try {
|
|
3309
3220
|
if (status.running) await channelManager.stopChannel(channelId, accountId);
|
|
3310
3221
|
channelManager.resetRestartAttempts(channelId, accountId);
|
|
@@ -3313,7 +3224,7 @@ function startChannelHealthMonitor(deps) {
|
|
|
3313
3224
|
record.restartsThisHour.push({ at: now });
|
|
3314
3225
|
restartRecords.set(key, record);
|
|
3315
3226
|
} catch (err) {
|
|
3316
|
-
log$
|
|
3227
|
+
log$25.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
|
|
3317
3228
|
}
|
|
3318
3229
|
}
|
|
3319
3230
|
}
|
|
@@ -3333,7 +3244,7 @@ function startChannelHealthMonitor(deps) {
|
|
|
3333
3244
|
abortSignal?.addEventListener("abort", stop, { once: true });
|
|
3334
3245
|
timer = setInterval(() => void runCheck(), checkIntervalMs);
|
|
3335
3246
|
if (typeof timer === "object" && "unref" in timer) timer.unref();
|
|
3336
|
-
log$
|
|
3247
|
+
log$25.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, grace: ${Math.round(startupGraceMs / 1e3)}s)`);
|
|
3337
3248
|
}
|
|
3338
3249
|
return { stop };
|
|
3339
3250
|
}
|
|
@@ -3827,7 +3738,7 @@ var ExecApprovalManager = class {
|
|
|
3827
3738
|
* Opens the SQLite database, applies WAL pragmas, and runs the
|
|
3828
3739
|
* 004_free_tier_users migration. Returns the DatabaseSync instance.
|
|
3829
3740
|
*/
|
|
3830
|
-
const log$
|
|
3741
|
+
const log$24 = createSubsystemLogger("free-tier/db");
|
|
3831
3742
|
const MIGRATION_SQL_PATH = join(dirname(fileURLToPath(import.meta.url)), "../../db/migrations/004_free_tier_users.sql");
|
|
3832
3743
|
function openFreeTierDb(dbPath) {
|
|
3833
3744
|
const { DatabaseSync } = requireNodeSqlite();
|
|
@@ -3836,9 +3747,9 @@ function openFreeTierDb(dbPath) {
|
|
|
3836
3747
|
try {
|
|
3837
3748
|
const sql = readFileSync(MIGRATION_SQL_PATH, "utf8");
|
|
3838
3749
|
db.exec(sql);
|
|
3839
|
-
log$
|
|
3750
|
+
log$24.info("free-tier DB migration applied", { dbPath });
|
|
3840
3751
|
} catch (err) {
|
|
3841
|
-
log$
|
|
3752
|
+
log$24.error("free-tier DB migration failed", {
|
|
3842
3753
|
dbPath,
|
|
3843
3754
|
error: String(err)
|
|
3844
3755
|
});
|
|
@@ -3977,13 +3888,13 @@ var UserRepository = class {
|
|
|
3977
3888
|
};
|
|
3978
3889
|
//#endregion
|
|
3979
3890
|
//#region src/gateway/free-tier/email.ts
|
|
3980
|
-
const log$
|
|
3891
|
+
const log$23 = createSubsystemLogger("free-tier/email");
|
|
3981
3892
|
const RESEND_API = "https://api.resend.com/emails";
|
|
3982
3893
|
const FROM = "OpenClaw <noreply@minion.ai>";
|
|
3983
3894
|
async function send$1(to, subject, html) {
|
|
3984
3895
|
const apiKey = process.env["RESEND_API_KEY"];
|
|
3985
3896
|
if (!apiKey) {
|
|
3986
|
-
log$
|
|
3897
|
+
log$23.warn("RESEND_API_KEY not set — email not sent", {
|
|
3987
3898
|
to,
|
|
3988
3899
|
subject
|
|
3989
3900
|
});
|
|
@@ -4004,7 +3915,7 @@ async function send$1(to, subject, html) {
|
|
|
4004
3915
|
});
|
|
4005
3916
|
if (!res.ok) {
|
|
4006
3917
|
const text = await res.text().catch(() => "");
|
|
4007
|
-
log$
|
|
3918
|
+
log$23.error("Resend API error", {
|
|
4008
3919
|
status: res.status,
|
|
4009
3920
|
body: text
|
|
4010
3921
|
});
|
|
@@ -4017,7 +3928,7 @@ async function sendVerificationEmail(email, token, baseUrl) {
|
|
|
4017
3928
|
}
|
|
4018
3929
|
//#endregion
|
|
4019
3930
|
//#region src/gateway/free-tier/auth-http.ts
|
|
4020
|
-
const log$
|
|
3931
|
+
const log$22 = createSubsystemLogger("free-tier/auth");
|
|
4021
3932
|
function json$1(res, status, body) {
|
|
4022
3933
|
res.statusCode = status;
|
|
4023
3934
|
res.setHeader("Content-Type", "application/json; charset=utf-8");
|
|
@@ -4079,7 +3990,7 @@ async function handleSignup(req, res, users) {
|
|
|
4079
3990
|
passwordHash
|
|
4080
3991
|
});
|
|
4081
3992
|
await sendVerificationEmail(email, verifyToken, process.env["HUB_BASE_URL"] ?? "https://hub.minion.ai").catch((e) => {
|
|
4082
|
-
log$
|
|
3993
|
+
log$22.error("failed to send verification email", {
|
|
4083
3994
|
userId: user.id,
|
|
4084
3995
|
error: String(e)
|
|
4085
3996
|
});
|
|
@@ -4386,6 +4297,175 @@ function createFreeTierApiHandler(db) {
|
|
|
4386
4297
|
};
|
|
4387
4298
|
}
|
|
4388
4299
|
//#endregion
|
|
4300
|
+
//#region src/gateway/gateway-request-metrics.ts
|
|
4301
|
+
/**
|
|
4302
|
+
* Gateway request performance metrics.
|
|
4303
|
+
*
|
|
4304
|
+
* Records per-method handler latency at the request dispatch chokepoint and
|
|
4305
|
+
* samples Node's event-loop delay, then emits a single aggregated
|
|
4306
|
+
* `gateway.perf_snapshot` event per window (default 60s) into the unified
|
|
4307
|
+
* event store — the same surface the hub reliability dashboard reads.
|
|
4308
|
+
*
|
|
4309
|
+
* Why this exists: the legacy `gateway.ws_slow_response` event fired per-call
|
|
4310
|
+
* at a 50ms bar, flooding the dashboard with non-actionable noise while
|
|
4311
|
+
* measuring *total* WS round-trip time (which is dominated by event-loop
|
|
4312
|
+
* scheduling, not handler work). This module instead measures handler CPU
|
|
4313
|
+
* time per method AND event-loop delay separately, so slow responses can be
|
|
4314
|
+
* correctly attributed (heavy handler vs. a congested event loop) from
|
|
4315
|
+
* percentile aggregates rather than guesswork.
|
|
4316
|
+
*
|
|
4317
|
+
* Metric points emitted (in `gateway.perf_snapshot` metadata):
|
|
4318
|
+
* - requests — count + throughput (req/s) over the window
|
|
4319
|
+
* - errorRate — fraction of requests that responded `ok: false`
|
|
4320
|
+
* - latencyMs — p50 / p95 / p99 / max handler latency across all methods
|
|
4321
|
+
* - slowestMethods — top methods by p95 latency (count, p50, p95, max, errors)
|
|
4322
|
+
* - eventLoopDelayMs — mean / p50 / p99 / max event-loop lag over the window
|
|
4323
|
+
*
|
|
4324
|
+
* @module
|
|
4325
|
+
*/
|
|
4326
|
+
const log$21 = createSubsystemLogger("gateway/metrics");
|
|
4327
|
+
/** Cap on retained latency samples per method (reservoir) to bound memory. */
|
|
4328
|
+
const MAX_SAMPLES_PER_METHOD = 512;
|
|
4329
|
+
/** Default snapshot window. Matches the reliability rate-limiter granularity. */
|
|
4330
|
+
const DEFAULT_INTERVAL_MS = 6e4;
|
|
4331
|
+
const methodStats = /* @__PURE__ */ new Map();
|
|
4332
|
+
let reporterTimer = null;
|
|
4333
|
+
let eventLoopHist = null;
|
|
4334
|
+
let windowStartMs = 0;
|
|
4335
|
+
/**
|
|
4336
|
+
* Record one dispatched request's handler latency and outcome.
|
|
4337
|
+
* Called at the dispatch chokepoint. Best-effort — never throws.
|
|
4338
|
+
*/
|
|
4339
|
+
function recordMethodLatency(method, durationMs, ok) {
|
|
4340
|
+
if (!Number.isFinite(durationMs) || durationMs < 0) return;
|
|
4341
|
+
let stat = methodStats.get(method);
|
|
4342
|
+
if (!stat) {
|
|
4343
|
+
stat = {
|
|
4344
|
+
count: 0,
|
|
4345
|
+
errors: 0,
|
|
4346
|
+
samples: []
|
|
4347
|
+
};
|
|
4348
|
+
methodStats.set(method, stat);
|
|
4349
|
+
}
|
|
4350
|
+
stat.count += 1;
|
|
4351
|
+
if (!ok) stat.errors += 1;
|
|
4352
|
+
if (stat.samples.length < MAX_SAMPLES_PER_METHOD) stat.samples.push(durationMs);
|
|
4353
|
+
else stat.samples[Math.floor(Math.random() * MAX_SAMPLES_PER_METHOD)] = durationMs;
|
|
4354
|
+
}
|
|
4355
|
+
function percentiles(samples) {
|
|
4356
|
+
if (samples.length === 0) return {
|
|
4357
|
+
p50: 0,
|
|
4358
|
+
p95: 0,
|
|
4359
|
+
p99: 0,
|
|
4360
|
+
max: 0
|
|
4361
|
+
};
|
|
4362
|
+
const sorted = [...samples].sort((a, b) => a - b);
|
|
4363
|
+
const at = (q) => sorted[Math.min(Math.floor(sorted.length * q), sorted.length - 1)];
|
|
4364
|
+
return {
|
|
4365
|
+
p50: Math.round(at(.5)),
|
|
4366
|
+
p95: Math.round(at(.95)),
|
|
4367
|
+
p99: Math.round(at(.99)),
|
|
4368
|
+
max: Math.round(sorted[sorted.length - 1])
|
|
4369
|
+
};
|
|
4370
|
+
}
|
|
4371
|
+
/** Build a snapshot from the current window without resetting state. */
|
|
4372
|
+
function buildGatewayPerfSnapshot(windowMs, topN = 5) {
|
|
4373
|
+
const allSamples = [];
|
|
4374
|
+
let requests = 0;
|
|
4375
|
+
let errors = 0;
|
|
4376
|
+
const perMethod = [];
|
|
4377
|
+
for (const [method, stat] of methodStats) {
|
|
4378
|
+
requests += stat.count;
|
|
4379
|
+
errors += stat.errors;
|
|
4380
|
+
for (const s of stat.samples) allSamples.push(s);
|
|
4381
|
+
const p = percentiles(stat.samples);
|
|
4382
|
+
perMethod.push({
|
|
4383
|
+
method,
|
|
4384
|
+
count: stat.count,
|
|
4385
|
+
errors: stat.errors,
|
|
4386
|
+
p50: p.p50,
|
|
4387
|
+
p95: p.p95,
|
|
4388
|
+
max: p.max
|
|
4389
|
+
});
|
|
4390
|
+
}
|
|
4391
|
+
perMethod.sort((a, b) => b.p95 - a.p95 || b.max - a.max);
|
|
4392
|
+
const windowSec = windowMs > 0 ? windowMs / 1e3 : 1;
|
|
4393
|
+
const el = eventLoopHist;
|
|
4394
|
+
const elMs = (ns) => Math.round(ns / 1e6 * 100) / 100;
|
|
4395
|
+
return {
|
|
4396
|
+
windowMs,
|
|
4397
|
+
requests,
|
|
4398
|
+
throughputPerSec: Math.round(requests / windowSec * 100) / 100,
|
|
4399
|
+
errorRate: requests > 0 ? Math.round(errors / requests * 1e3) / 1e3 : 0,
|
|
4400
|
+
latencyMs: percentiles(allSamples),
|
|
4401
|
+
slowestMethods: perMethod.slice(0, topN),
|
|
4402
|
+
eventLoopDelayMs: el ? {
|
|
4403
|
+
mean: elMs(el.mean),
|
|
4404
|
+
p50: elMs(el.percentile(50)),
|
|
4405
|
+
p99: elMs(el.percentile(99)),
|
|
4406
|
+
max: elMs(el.max)
|
|
4407
|
+
} : {
|
|
4408
|
+
mean: 0,
|
|
4409
|
+
p50: 0,
|
|
4410
|
+
p99: 0,
|
|
4411
|
+
max: 0
|
|
4412
|
+
}
|
|
4413
|
+
};
|
|
4414
|
+
}
|
|
4415
|
+
function emitSnapshot(windowMs) {
|
|
4416
|
+
const snap = buildGatewayPerfSnapshot(windowMs);
|
|
4417
|
+
if (snap.requests === 0 && snap.eventLoopDelayMs.max < 100) return;
|
|
4418
|
+
const { latencyMs: lat, eventLoopDelayMs: el } = snap;
|
|
4419
|
+
emitEvent({
|
|
4420
|
+
category: "gateway",
|
|
4421
|
+
severity: "info",
|
|
4422
|
+
event: "gateway.perf_snapshot",
|
|
4423
|
+
message: `Gateway perf: ${snap.requests} req (${snap.throughputPerSec}/s), p95 ${lat.p95}ms / max ${lat.max}ms, evloop p99 ${el.p99}ms / max ${el.max}ms`,
|
|
4424
|
+
metadata: { ...snap },
|
|
4425
|
+
timestamp: Date.now()
|
|
4426
|
+
});
|
|
4427
|
+
}
|
|
4428
|
+
/**
|
|
4429
|
+
* Start the periodic metrics reporter and event-loop delay monitor.
|
|
4430
|
+
* Idempotent — a second call is a no-op until {@link stopGatewayRequestMetrics}.
|
|
4431
|
+
* Returns a stop function.
|
|
4432
|
+
*/
|
|
4433
|
+
function startGatewayRequestMetrics(opts) {
|
|
4434
|
+
if (reporterTimer) return stopGatewayRequestMetrics;
|
|
4435
|
+
const intervalMs = opts?.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
4436
|
+
try {
|
|
4437
|
+
eventLoopHist = monitorEventLoopDelay({ resolution: 20 });
|
|
4438
|
+
eventLoopHist.enable();
|
|
4439
|
+
} catch (err) {
|
|
4440
|
+
log$21.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
|
|
4441
|
+
eventLoopHist = null;
|
|
4442
|
+
}
|
|
4443
|
+
windowStartMs = Date.now();
|
|
4444
|
+
reporterTimer = setInterval(() => {
|
|
4445
|
+
const now = Date.now();
|
|
4446
|
+
try {
|
|
4447
|
+
emitSnapshot(now - windowStartMs);
|
|
4448
|
+
} catch (err) {
|
|
4449
|
+
log$21.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
4450
|
+
}
|
|
4451
|
+
methodStats.clear();
|
|
4452
|
+
eventLoopHist?.reset();
|
|
4453
|
+
windowStartMs = now;
|
|
4454
|
+
}, intervalMs);
|
|
4455
|
+
reporterTimer.unref?.();
|
|
4456
|
+
return stopGatewayRequestMetrics;
|
|
4457
|
+
}
|
|
4458
|
+
/** Stop the reporter and clear accumulated state. */
|
|
4459
|
+
function stopGatewayRequestMetrics() {
|
|
4460
|
+
if (reporterTimer) {
|
|
4461
|
+
clearInterval(reporterTimer);
|
|
4462
|
+
reporterTimer = null;
|
|
4463
|
+
}
|
|
4464
|
+
eventLoopHist?.disable();
|
|
4465
|
+
eventLoopHist = null;
|
|
4466
|
+
methodStats.clear();
|
|
4467
|
+
}
|
|
4468
|
+
//#endregion
|
|
4389
4469
|
//#region src/gateway/http-utils.ts
|
|
4390
4470
|
function getHeader(req, name) {
|
|
4391
4471
|
const raw = req.headers[name.toLowerCase()];
|
|
@@ -18904,7 +18984,7 @@ const nodeHandlers = {
|
|
|
18904
18984
|
const p = params;
|
|
18905
18985
|
const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
|
|
18906
18986
|
await respondUnavailableOnThrow(respond, async () => {
|
|
18907
|
-
const { handleNodeEvent } = await import("./server-node-events-
|
|
18987
|
+
const { handleNodeEvent } = await import("./server-node-events-B6rUT0PE.js");
|
|
18908
18988
|
const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
|
|
18909
18989
|
const nodeConnId = client?.connId;
|
|
18910
18990
|
await handleNodeEvent({
|
|
@@ -26411,7 +26491,7 @@ function normalizeAgentPayload(payload) {
|
|
|
26411
26491
|
async function startBrowserControlServerIfEnabled() {
|
|
26412
26492
|
if (isTruthyEnvValue(process.env.MINION_SKIP_BROWSER_CONTROL_SERVER)) return null;
|
|
26413
26493
|
const override = process.env.MINION_BROWSER_CONTROL_MODULE?.trim();
|
|
26414
|
-
const mod = override ? await import(override) : await import("./dispatcher-
|
|
26494
|
+
const mod = override ? await import(override) : await import("./dispatcher-D8fgAnwH.js").then((n) => n.n);
|
|
26415
26495
|
const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
|
|
26416
26496
|
const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
|
|
26417
26497
|
if (!start) return null;
|
|
@@ -32270,7 +32350,7 @@ async function deliverFlowReply(sessionKey, reply) {
|
|
|
32270
32350
|
}
|
|
32271
32351
|
try {
|
|
32272
32352
|
const cfg = loadConfig();
|
|
32273
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
32353
|
+
const { deliverOutboundPayloads } = await import("./deliver-Ds0o_rCY.js").then((n) => n.n);
|
|
32274
32354
|
await deliverOutboundPayloads({
|
|
32275
32355
|
cfg,
|
|
32276
32356
|
channel: target.channel,
|
|
@@ -35638,6 +35718,10 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
35638
35718
|
key: "MINION_PERSONAL_AGENT_OBSERVATIONS_PATH",
|
|
35639
35719
|
description: "personal-agent observations database path override"
|
|
35640
35720
|
});
|
|
35721
|
+
if (cfgAtStart.gateway?.trajectory?.enabled === true) {
|
|
35722
|
+
enableTrajectoryRecording();
|
|
35723
|
+
log.info("trajectory recording enabled");
|
|
35724
|
+
}
|
|
35641
35725
|
}
|
|
35642
35726
|
const channelLogs = Object.fromEntries(listChannelPlugins().map((plugin) => [plugin.id, logChannels.child(plugin.id)]));
|
|
35643
35727
|
const channelRuntimeEnvs = Object.fromEntries(Object.entries(channelLogs).map(([id, logger]) => [id, runtimeForLogger(logger)]));
|
|
@@ -35936,8 +36020,8 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
35936
36020
|
});
|
|
35937
36021
|
if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
|
|
35938
36022
|
if (!minimalTestGateway) (async () => {
|
|
35939
|
-
const { recoverPendingDeliveries } = await import("./deliver-
|
|
35940
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
36023
|
+
const { recoverPendingDeliveries } = await import("./deliver-Ds0o_rCY.js").then((n) => n.s);
|
|
36024
|
+
const { deliverOutboundPayloads } = await import("./deliver-Ds0o_rCY.js").then((n) => n.n);
|
|
35941
36025
|
await recoverPendingDeliveries({
|
|
35942
36026
|
deliver: deliverOutboundPayloads,
|
|
35943
36027
|
log: log.child("delivery-recovery"),
|