@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
|
@@ -10,51 +10,51 @@ import { n as getEventStore, r as initEventSystem, t as emitEvent } from "./emit
|
|
|
10
10
|
import { t as applySqlitePragmas } from "./sqlite-pragmas-C_o_lU6a.js";
|
|
11
11
|
import { t as requireNodeSqlite } from "./sqlite-C3xwcWJn.js";
|
|
12
12
|
import { d as setSentryTag, n as getReliabilityUptimeStartMs, r as initReliability, t as emitReliabilityEvent, u as setSentryContext } from "./reliability-L4etAGQV.js";
|
|
13
|
-
import { n as buildWorkspaceSkillSnapshot, r as loadWorkspaceSkillEntries } from "./workspace-
|
|
14
|
-
import "./skills-
|
|
13
|
+
import { n as buildWorkspaceSkillSnapshot, r as loadWorkspaceSkillEntries } from "./workspace-D5-DoTNR.js";
|
|
14
|
+
import "./skills-DDhWBAii.js";
|
|
15
15
|
import { l as isTestDefaultMemorySlotDisabled, n as loadPluginManifestRegistry } from "./manifest-registry-DCVfom1u.js";
|
|
16
|
-
import { t as buildWorkspaceSkillStatus } from "./skills-status-
|
|
17
|
-
import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-
|
|
18
|
-
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 { n as migrateLegacyConfig } from "./config-
|
|
16
|
+
import { t as buildWorkspaceSkillStatus } from "./skills-status-CBTT87BN.js";
|
|
17
|
+
import { E as parseDurationMs, c as applyLegacyMigrations, i as MinionSchema, n as validateConfigObjectWithPlugins, v as resolveAgentMaxConcurrent, w as sensitive, y as resolveSubagentMaxConcurrent } from "./validation-B-XaORq2.js";
|
|
18
|
+
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-C_Q6AU5E.js";
|
|
19
|
+
import { n as migrateLegacyConfig } from "./config-DHYot764.js";
|
|
20
20
|
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-DaLwaG9G.js";
|
|
21
21
|
import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-C0DLwT7t.js";
|
|
22
|
-
import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-
|
|
22
|
+
import { n as callGateway, o as loadGatewayTlsRuntime$1 } from "./call-BrDNyQiZ.js";
|
|
23
23
|
import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-C02KGm4w.js";
|
|
24
24
|
import { c as pickPrimaryLanIPv4, d as resolveGatewayListenHosts, f as resolveHostName, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, p as rawDataToString, r as isPrivateOrLoopbackAddress, t as isLoopbackAddress, u as resolveGatewayClientIp } from "./net-C0W-QK7p.js";
|
|
25
25
|
import { i as normalizeInputProvenance } from "./input-provenance-ChJN5mZj.js";
|
|
26
|
-
import { $ as
|
|
27
|
-
import { $ as mergeDeliveryContext, C as cleanStaleLockFiles, E as evaluateSessionFreshness, F as resolveExplicitAgentSessionKey, I as resolveMainSessionKey, L as resolveMainSessionKeyFromConfig, M as resolveFreshSessionTotalTokens, N as canonicalizeMainSessionAlias, O as resolveSessionResetPolicy, P as resolveAgentMainSessionKey, Z as deliveryContextFromSession, _ as readSessionMessages, a as loadSessionStore, b as resolveSessionTranscriptCandidates, g as capArrayByJsonBytes, h as archiveSessionTranscripts, m as archiveFileOnDisk, n as parseSessionThreadInfo, t as extractDeliveryInfo, tt as normalizeSessionDeliveryFields, u as updateSessionStore, v as readSessionPreviewItemsFromTranscript, x as stripEnvelopeFromMessages, z as snapshotSessionOrigin } from "./sessions-
|
|
26
|
+
import { $ as debugStepContinue, $t as removeRemoteNodeInfo, A as loadMinionPlugins, B as createReplyDispatcher, Bn as transcribeOpenAiCompatibleAudio, C as readConsolidationState, Cn as applyModelOverrideToSessionEntry, Ct as loadProviderUsageSummary, D as buildDefaultToolPolicyPipelineSteps, Dn as isSystemEventContextChanged, E as applyToolPolicyPipeline, En as enqueueSystemEvent, F as markSynced, Fn as extractFileContentFromSource, Ft as _clearProseCache, G as BARE_SESSION_RESET_PROMPT, Gn as isAbortTrigger, I as openMessageLedger, In as extractImageContentFromSource, It as buildSystemPromptParams, J as getCliSessionId, Jt as getRemoteSkillEligibility, Kn as stopSubagentsForRequester, Kt as normalizeSendPolicy, L as patchRouting, Ln as normalizeMimeList, Lt as buildSystemPromptReport, M as claimBatch, Mt as buildToolSummaryMap, N as closeMessageLedger, Nn as DEFAULT_INPUT_IMAGE_MIMES, Nt as PromptSectionRegistry, O as getPluginToolMeta, Ot as assembleAgentSystemPromptWithSections, P as markFailed, Pt as PROSE_GLOBAL_ROOT, Q as debugSkipAll, Qn as resolveAgentIdentity, Qt as refreshRemoteNodeBins, R as record, Rn as resolveInputFileLimits, S as openInFlightTurnsStore, St as normalizeGroupActivation, Tn as parseVerboseOverride, Ut as requestHeartbeatNow, V as getTotalPendingReplies, Vn as formatZonedTimestamp, Wn as resolveUserTimezone, X as runCliAgent, Xn as clearSessionQueues, Xt as recordRemoteNodeInfo, Y as setCliSessionId, Yt as primeRemoteSkillsCache, Zt as refreshRemoteBinsForConnectedNodes, _ as deleteRow, _n as registerSkillsChangeListener, an as requestNodePairing, ar as resetAllLanes, b as markInterrupted, cn as generatePairingToken, cr as resolveAgentTimeoutMs, d as abortEmbeddedPiRun, dn as pruneExpiredPending, dr as getAgentRunContext, dt as getTemplate, en as setSkillsRemoteRegistry, et as isSteppedBuildEnabled, f as getActiveEmbeddedRunCount, fn as resolvePairingPaths, fr as onAgentEvent, ft as getTemplateCache, g as closeInFlightTurnsStore, gn as getSkillsSnapshotVersion, gt as stopTemplateWatcher, h as registerLifecycleHooks, hn as createAsyncLock, ht as initTemplateLoader, i as listDescendantRunsForRequester, in as renamePairedNode, ir as getTotalQueueSize, it as TOOL_REGISTRY, j as loadOpenClawPlugins, jn as registerUnhandledRejectionHandler, jt as buildSectionRenderContext, kt as getBuiltinSectionRegistry, l as runSubagentAnnounceFlow, ln as hashToken, lr as clearAgentRunContext, lt as spawnSubagentDirect, m as waitForEmbeddedPiRunEnd, mn as writeJsonAtomic, mt as getTemplateUsageStats, n as countActiveDescendantRuns, nn as listNodePairing, nr as getActiveTaskCount, nt as setSteppedBuild, on as updatePairedNodeMetadata, or as setCommandLaneConcurrency, p as queueEmbeddedPiMessage, pn as readJsonFile, pr as registerAgentRunContext, pt as getTemplateLoadErrors, q as resolveCronStyleNow, qt as resolveSendPolicy, r as initSubagentRegistry, rn as rejectNodePairing, rt as createOpenClawTools, s as markSubagentRunTerminated, sn as verifyNodeToken, sr as waitForActiveTasks, tn as approveNodePairing, tr as resolveBootstrapContextForRun, tt as setDebugStepBroadcaster, u as runEmbeddedPiAgent, un as verifyPairingToken, ur as emitAgentEvent, ut as getLastReloadAt, v as listForCurrentInstance, w as createOpenClawCodingTools, wn as applyVerboseOverride, x as markRecoveryAttempt, xn as buildAuthHealthSummary, y as listFromOtherInstances, z as dispatchInboundMessage } from "./subagent-registry-C_UHFYRY.js";
|
|
27
|
+
import { $ as mergeDeliveryContext, C as cleanStaleLockFiles, E as evaluateSessionFreshness, F as resolveExplicitAgentSessionKey, I as resolveMainSessionKey, L as resolveMainSessionKeyFromConfig, M as resolveFreshSessionTotalTokens, N as canonicalizeMainSessionAlias, O as resolveSessionResetPolicy, P as resolveAgentMainSessionKey, Z as deliveryContextFromSession, _ as readSessionMessages, a as loadSessionStore, b as resolveSessionTranscriptCandidates, g as capArrayByJsonBytes, h as archiveSessionTranscripts, m as archiveFileOnDisk, n as parseSessionThreadInfo, t as extractDeliveryInfo, tt as normalizeSessionDeliveryFields, u as updateSessionStore, v as readSessionPreviewItemsFromTranscript, x as stripEnvelopeFromMessages, z as snapshotSessionOrigin } from "./sessions-C0Qs0Flz.js";
|
|
28
28
|
import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-BkvS7DSy.js";
|
|
29
29
|
import { d as buildChannelAccountBindings, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-irMKpl65.js";
|
|
30
30
|
import "./logging-D43UWj1X.js";
|
|
31
31
|
import { r as resolveUserDir } from "./user-directory-D27je39W.js";
|
|
32
32
|
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-D59m1grH.js";
|
|
33
33
|
import { a as stripHeartbeatToken } from "./lanes-L5j3C7cx.js";
|
|
34
|
-
import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget } from "./resolve-route-
|
|
34
|
+
import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget } from "./resolve-route-0arQsERr.js";
|
|
35
35
|
import { n as getMachineDisplayName } from "./with-timeout-BVhDEOTB.js";
|
|
36
36
|
import { c as startDiagnosticHeartbeat, d as isDiagnosticsEnabled, l as stopDiagnosticHeartbeat } from "./diagnostic-BEEvI8Zw.js";
|
|
37
|
-
import { g as getGlobalHookRunner, v as runGlobalGatewayStopSafely } from "./reply-payloads-
|
|
38
|
-
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-
|
|
37
|
+
import { g as getGlobalHookRunner, v as runGlobalGatewayStopSafely } from "./reply-payloads-Dk-zLmJC.js";
|
|
38
|
+
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-DrFhyLnB.js";
|
|
39
39
|
import { c as detectMime } from "./image-ops-QvmG4zb9.js";
|
|
40
|
-
import { a as defineDrone, i as runDrone, t as createGatewayDroneHost } from "./host-
|
|
41
|
-
import { K as resolveBootstrapMaxChars, a as formatXHighModelHint, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, i as formatThinkingLevels, l as normalizeReasoningLevel, m as supportsXHighThinking, q as resolveBootstrapTotalMaxChars, s as listThinkingLevels, u as normalizeThinkLevel } from "./pi-embedded-helpers-
|
|
42
|
-
import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-
|
|
40
|
+
import { a as defineDrone, i as runDrone, t as createGatewayDroneHost } from "./host-DCfZcVR_.js";
|
|
41
|
+
import { K as resolveBootstrapMaxChars, a as formatXHighModelHint, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, i as formatThinkingLevels, l as normalizeReasoningLevel, m as supportsXHighThinking, q as resolveBootstrapTotalMaxChars, s as listThinkingLevels, u as normalizeThinkLevel } from "./pi-embedded-helpers-BsRnajNh.js";
|
|
42
|
+
import { c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, p as TOOL_GROUPS, v as expandToolGroups, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-CDGF9AVA.js";
|
|
43
43
|
import { a as enableTailscaleServeFunnel, i as enableTailscaleServe, n as disableTailscaleServe, r as enableTailscaleFunnel, s as getTailnetHostname, t as disableTailscaleFunnel } from "./tailscale-DztQ748s.js";
|
|
44
44
|
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-CFiHbm6v.js";
|
|
45
|
-
import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-
|
|
45
|
+
import { h as mergeGatewayTailscaleConfig, m as ensureGatewayStartupAuth } from "./server-context-BRKaxwJB.js";
|
|
46
46
|
import { a as isErrno, n as formatErrorMessage } from "./errors-iV4-NKRR.js";
|
|
47
47
|
import { i as formatPortDiagnostics, n as inspectPortUsage, t as ensurePortAvailable } from "./ports-CWP9QmS6.js";
|
|
48
48
|
import { t as movePathToTrash } from "./trash-DPd6fFGH.js";
|
|
49
49
|
import { a as traceGatewayEvent, n as pruneOldTraceFiles } from "./chat-trace-BMcJ2gl7.js";
|
|
50
|
-
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-
|
|
50
|
+
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-ilkHc_D4.js";
|
|
51
51
|
import { t as ToolInputError } from "./common-BHzo6lXS.js";
|
|
52
52
|
import { i as isExternalHookSession, n as detectSuspiciousPatterns, r as getHookType, t as buildSafeExternalPrompt } from "./external-content-Css-cJoz.js";
|
|
53
|
-
import { n as runWithModelFallback } from "./model-fallback-
|
|
53
|
+
import { n as runWithModelFallback } from "./model-fallback-DXR7ZbvM.js";
|
|
54
54
|
import { t as fetchWithSsrFGuard } from "./fetch-guard-2x6L37KS.js";
|
|
55
|
-
import { n as loadModelCatalog } from "./model-catalog-
|
|
56
|
-
import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, d as orgScopeVisible, f as lookupContextTokens, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as normalizeOrgIds } from "./session-utils-
|
|
57
|
-
import { a as resolveSubagentToolPolicy, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-
|
|
55
|
+
import { n as loadModelCatalog } from "./model-catalog-7Ew4iFgU.js";
|
|
56
|
+
import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, d as orgScopeVisible, f as lookupContextTokens, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as normalizeOrgIds } from "./session-utils-DDCd8HC9.js";
|
|
57
|
+
import { a as resolveSubagentToolPolicy, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-DDJ31-0E.js";
|
|
58
58
|
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-9-5NQEhL.js";
|
|
59
59
|
import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-b8aNuBYW.js";
|
|
60
60
|
import { n as formatTokenCount, r as formatUsd } from "./usage-format--dK3YoXf.js";
|
|
@@ -70,18 +70,18 @@ import { n as setGoogleAdcClient, t as getGoogleAdcClient } from "./hub-credenti
|
|
|
70
70
|
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-DQ4SDf3R.js";
|
|
71
71
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BlvVswOf.js";
|
|
72
72
|
import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-CFtgrOm4.js";
|
|
73
|
-
import { c as loadChannelOutboundAdapter, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-
|
|
73
|
+
import { c as loadChannelOutboundAdapter, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BCijF1xe.js";
|
|
74
74
|
import { n as resolveMessageChannelSelection } from "./channel-selection-Bzg2Xpo4.js";
|
|
75
|
-
import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, t as resolveOutboundSessionRoute } from "./outbound-session-
|
|
75
|
+
import { a as resetDirectoryCache, n as ensureOutboundSessionEntry, t as resolveOutboundSessionRoute } from "./outbound-session-BCNTkSVV.js";
|
|
76
76
|
import { t as normalizePollInput } from "./polls-8i6CJXI7.js";
|
|
77
|
-
import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-
|
|
77
|
+
import { c as resolveAnnounceTargetFromKey, t as readLatestAssistantReply } from "./agent-step-DnVo1ws9.js";
|
|
78
78
|
import { a as runAggregation, n as executeOrchestration, r as readStatusJson, t as executePipeline } from "./orchestration-pipeline-Bi3YT3Jf.js";
|
|
79
79
|
import { r as readManifest, t as completeManifest } from "./orchestration-manifest-DXWf2_x7.js";
|
|
80
|
-
import { i as startBrowserControlServiceFromConfig, r as createBrowserControlContext, t as createBrowserRouteDispatcher } from "./dispatcher-
|
|
80
|
+
import { i as startBrowserControlServiceFromConfig, r as createBrowserControlContext, t as createBrowserRouteDispatcher } from "./dispatcher-D46WCdTe.js";
|
|
81
81
|
import { n as persistBrowserProxyFiles, t as applyBrowserProxyPaths } from "./proxy-files-DtQxHMjp.js";
|
|
82
82
|
import { r as cachedJson } from "./ttl-cache-CEaNnSl4.js";
|
|
83
83
|
import { i as onHeartbeatEvent, r as getLastHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-BqNH_1lC.js";
|
|
84
|
-
import { a as initUserSubsystem, d as sleepWithAbort, i as handleHubAssignmentChanged, l as buildHistoryContextFromEntries, n as resolveChannelSenderIdentity, r as getActiveUserSubsystem, s as mapRoleToScopes, t as createReplyPrefixOptions, u as computeBackoff } from "./reply-prefix-
|
|
84
|
+
import { a as initUserSubsystem, d as sleepWithAbort, i as handleHubAssignmentChanged, l as buildHistoryContextFromEntries, n as resolveChannelSenderIdentity, r as getActiveUserSubsystem, s as mapRoleToScopes, t as createReplyPrefixOptions, u as computeBackoff } from "./reply-prefix-D9MQ_veY.js";
|
|
85
85
|
import { t as ensureMinionCliOnPath } from "./path-env-DpsCNe2h.js";
|
|
86
86
|
import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-_OH_n-zu.js";
|
|
87
87
|
import { n as inheritOptionFromParent } from "./command-options-Dhjl7AMa.js";
|
|
@@ -90,27 +90,27 @@ import { t as WizardCancelledError } from "./prompts-E0FayNjJ.js";
|
|
|
90
90
|
import { t as resolveChannelDefaultAccountId } from "./helpers-HNAIOJ_3.js";
|
|
91
91
|
import { t as applyPluginAutoEnable } from "./plugin-auto-enable-CEWEwQIw.js";
|
|
92
92
|
import { t as buildChannelAccountSnapshot } from "./status-Dg720jp3.js";
|
|
93
|
-
import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-
|
|
94
|
-
import "./onboard-helpers-
|
|
93
|
+
import { C as resolveAssistantAvatarUrl, S as normalizeControlUiBasePath, b as CONTROL_UI_AVATAR_PREFIX, c as handleReset, x as buildControlUiAvatarUrl } from "./onboard-helpers-DP2LE5Oh.js";
|
|
94
|
+
import "./onboard-helpers-BKca3qU4.js";
|
|
95
95
|
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, s as loadAgentIdentityFromWorkspace, t as applyAgentConfig } from "./agents.config-DMloABxR.js";
|
|
96
96
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Cx6dCwYR.js";
|
|
97
|
-
import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as formatHealthChannelLines, r as getHealthSnapshot, s as runHeartbeatOnce } from "./health-
|
|
97
|
+
import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as formatHealthChannelLines, r as getHealthSnapshot, s as runHeartbeatOnce } from "./health-6TTjEZoo.js";
|
|
98
98
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-76BDB4BP.js";
|
|
99
99
|
import { t as discoverGatewayBeacons } from "./bonjour-discovery-COG6-6UR.js";
|
|
100
|
-
import { t as installSkill } from "./skills-install-
|
|
100
|
+
import { t as installSkill } from "./skills-install-Bo9PwVmT.js";
|
|
101
101
|
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-B2N-dnoC.js";
|
|
102
102
|
import { a as resolveNpmChannelTag, n as compareSemverStrings, p as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-DUIvch0v.js";
|
|
103
|
-
import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-
|
|
104
|
-
import { a as probeGateway, i as resolveNodeCommandAllowlist, r as isNodeCommandAllowed } from "./audit-
|
|
103
|
+
import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-Dz_-4ATW.js";
|
|
104
|
+
import { a as probeGateway, i as resolveNodeCommandAllowlist, r as isNodeCommandAllowed } from "./audit-Ck6MCUxx.js";
|
|
105
105
|
import { t as parsePort$1 } from "./parse-port-DA32M3gA.js";
|
|
106
|
-
import { n as addGatewayServiceCommands } from "./daemon-cli-
|
|
106
|
+
import { n as addGatewayServiceCommands } from "./daemon-cli-D7K6zRR6.js";
|
|
107
107
|
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-C-PEQv_O.js";
|
|
108
|
-
import { n as createDefaultDeps, r as createOutboundSendDeps$1, t as createOutboundSendDeps } from "./outbound-send-deps-
|
|
108
|
+
import { n as createDefaultDeps, r as createOutboundSendDeps$1, t as createOutboundSendDeps } from "./outbound-send-deps-Dg8cSoFv.js";
|
|
109
109
|
import { i as initCrypto, n as ProbeRegistry, r as SecretsManager, t as SecretStore } from "./store-CCYsWl7_.js";
|
|
110
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
111
|
-
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-
|
|
112
|
-
import { h as resolveGmailPullRuntimeConfig } from "./gmail-
|
|
113
|
-
import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-
|
|
110
|
+
import { t as runOnboardingWizard } from "./onboarding-nPyIyp8f.js";
|
|
111
|
+
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-D69Af97u.js";
|
|
112
|
+
import { h as resolveGmailPullRuntimeConfig } from "./gmail-C1O6grHu.js";
|
|
113
|
+
import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-CZq9c4BW.js";
|
|
114
114
|
import { n as validateSystemRunCommandConsistency, t as formatExecCommand } from "./system-run-command-BRxsVIll.js";
|
|
115
115
|
import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-B0q97NF_.js";
|
|
116
116
|
import { n as setEmbedConcurrency } from "./qmd-embed-semaphore-CLBO94qU.js";
|
|
@@ -120,7 +120,7 @@ import os, { homedir } from "node:os";
|
|
|
120
120
|
import * as path$1 from "node:path";
|
|
121
121
|
import path, { dirname, join } from "node:path";
|
|
122
122
|
import * as fs$3 from "node:fs";
|
|
123
|
-
import fs, { constants, promises, readFileSync } from "node:fs";
|
|
123
|
+
import fs, { appendFileSync, constants, existsSync, mkdirSync, promises, readFileSync, statSync } from "node:fs";
|
|
124
124
|
import { promisify } from "node:util";
|
|
125
125
|
import chalk from "chalk";
|
|
126
126
|
import JSON5 from "json5";
|
|
@@ -142,8 +142,8 @@ import { lookup } from "node:dns/promises";
|
|
|
142
142
|
import chokidar from "chokidar";
|
|
143
143
|
import { EventEmitter } from "node:events";
|
|
144
144
|
import Database from "better-sqlite3";
|
|
145
|
-
import { monitorEventLoopDelay } from "node:perf_hooks";
|
|
146
145
|
import { SignJWT, createRemoteJWKSet, jwtVerify } from "jose";
|
|
146
|
+
import { monitorEventLoopDelay } from "node:perf_hooks";
|
|
147
147
|
import { Cron } from "croner";
|
|
148
148
|
import { DatabaseSync } from "node:sqlite";
|
|
149
149
|
import { encode } from "gpt-tokenizer";
|
|
@@ -1393,177 +1393,8 @@ function scanForInterruptedOrchestrations(agentWorkspaces) {
|
|
|
1393
1393
|
return interrupted;
|
|
1394
1394
|
}
|
|
1395
1395
|
//#endregion
|
|
1396
|
-
//#region src/gateway/gateway-request-metrics.ts
|
|
1397
|
-
/**
|
|
1398
|
-
* Gateway request performance metrics.
|
|
1399
|
-
*
|
|
1400
|
-
* Records per-method handler latency at the request dispatch chokepoint and
|
|
1401
|
-
* samples Node's event-loop delay, then emits a single aggregated
|
|
1402
|
-
* `gateway.perf_snapshot` event per window (default 60s) into the unified
|
|
1403
|
-
* event store — the same surface the hub reliability dashboard reads.
|
|
1404
|
-
*
|
|
1405
|
-
* Why this exists: the legacy `gateway.ws_slow_response` event fired per-call
|
|
1406
|
-
* at a 50ms bar, flooding the dashboard with non-actionable noise while
|
|
1407
|
-
* measuring *total* WS round-trip time (which is dominated by event-loop
|
|
1408
|
-
* scheduling, not handler work). This module instead measures handler CPU
|
|
1409
|
-
* time per method AND event-loop delay separately, so slow responses can be
|
|
1410
|
-
* correctly attributed (heavy handler vs. a congested event loop) from
|
|
1411
|
-
* percentile aggregates rather than guesswork.
|
|
1412
|
-
*
|
|
1413
|
-
* Metric points emitted (in `gateway.perf_snapshot` metadata):
|
|
1414
|
-
* - requests — count + throughput (req/s) over the window
|
|
1415
|
-
* - errorRate — fraction of requests that responded `ok: false`
|
|
1416
|
-
* - latencyMs — p50 / p95 / p99 / max handler latency across all methods
|
|
1417
|
-
* - slowestMethods — top methods by p95 latency (count, p50, p95, max, errors)
|
|
1418
|
-
* - eventLoopDelayMs — mean / p50 / p99 / max event-loop lag over the window
|
|
1419
|
-
*
|
|
1420
|
-
* @module
|
|
1421
|
-
*/
|
|
1422
|
-
const log$26 = createSubsystemLogger("gateway/metrics");
|
|
1423
|
-
/** Cap on retained latency samples per method (reservoir) to bound memory. */
|
|
1424
|
-
const MAX_SAMPLES_PER_METHOD = 512;
|
|
1425
|
-
/** Default snapshot window. Matches the reliability rate-limiter granularity. */
|
|
1426
|
-
const DEFAULT_INTERVAL_MS = 6e4;
|
|
1427
|
-
const methodStats = /* @__PURE__ */ new Map();
|
|
1428
|
-
let reporterTimer = null;
|
|
1429
|
-
let eventLoopHist = null;
|
|
1430
|
-
let windowStartMs = 0;
|
|
1431
|
-
/**
|
|
1432
|
-
* Record one dispatched request's handler latency and outcome.
|
|
1433
|
-
* Called at the dispatch chokepoint. Best-effort — never throws.
|
|
1434
|
-
*/
|
|
1435
|
-
function recordMethodLatency(method, durationMs, ok) {
|
|
1436
|
-
if (!Number.isFinite(durationMs) || durationMs < 0) return;
|
|
1437
|
-
let stat = methodStats.get(method);
|
|
1438
|
-
if (!stat) {
|
|
1439
|
-
stat = {
|
|
1440
|
-
count: 0,
|
|
1441
|
-
errors: 0,
|
|
1442
|
-
samples: []
|
|
1443
|
-
};
|
|
1444
|
-
methodStats.set(method, stat);
|
|
1445
|
-
}
|
|
1446
|
-
stat.count += 1;
|
|
1447
|
-
if (!ok) stat.errors += 1;
|
|
1448
|
-
if (stat.samples.length < MAX_SAMPLES_PER_METHOD) stat.samples.push(durationMs);
|
|
1449
|
-
else stat.samples[Math.floor(Math.random() * MAX_SAMPLES_PER_METHOD)] = durationMs;
|
|
1450
|
-
}
|
|
1451
|
-
function percentiles(samples) {
|
|
1452
|
-
if (samples.length === 0) return {
|
|
1453
|
-
p50: 0,
|
|
1454
|
-
p95: 0,
|
|
1455
|
-
p99: 0,
|
|
1456
|
-
max: 0
|
|
1457
|
-
};
|
|
1458
|
-
const sorted = [...samples].sort((a, b) => a - b);
|
|
1459
|
-
const at = (q) => sorted[Math.min(Math.floor(sorted.length * q), sorted.length - 1)];
|
|
1460
|
-
return {
|
|
1461
|
-
p50: Math.round(at(.5)),
|
|
1462
|
-
p95: Math.round(at(.95)),
|
|
1463
|
-
p99: Math.round(at(.99)),
|
|
1464
|
-
max: Math.round(sorted[sorted.length - 1])
|
|
1465
|
-
};
|
|
1466
|
-
}
|
|
1467
|
-
/** Build a snapshot from the current window without resetting state. */
|
|
1468
|
-
function buildGatewayPerfSnapshot(windowMs, topN = 5) {
|
|
1469
|
-
const allSamples = [];
|
|
1470
|
-
let requests = 0;
|
|
1471
|
-
let errors = 0;
|
|
1472
|
-
const perMethod = [];
|
|
1473
|
-
for (const [method, stat] of methodStats) {
|
|
1474
|
-
requests += stat.count;
|
|
1475
|
-
errors += stat.errors;
|
|
1476
|
-
for (const s of stat.samples) allSamples.push(s);
|
|
1477
|
-
const p = percentiles(stat.samples);
|
|
1478
|
-
perMethod.push({
|
|
1479
|
-
method,
|
|
1480
|
-
count: stat.count,
|
|
1481
|
-
errors: stat.errors,
|
|
1482
|
-
p50: p.p50,
|
|
1483
|
-
p95: p.p95,
|
|
1484
|
-
max: p.max
|
|
1485
|
-
});
|
|
1486
|
-
}
|
|
1487
|
-
perMethod.sort((a, b) => b.p95 - a.p95 || b.max - a.max);
|
|
1488
|
-
const windowSec = windowMs > 0 ? windowMs / 1e3 : 1;
|
|
1489
|
-
const el = eventLoopHist;
|
|
1490
|
-
const elMs = (ns) => Math.round(ns / 1e6 * 100) / 100;
|
|
1491
|
-
return {
|
|
1492
|
-
windowMs,
|
|
1493
|
-
requests,
|
|
1494
|
-
throughputPerSec: Math.round(requests / windowSec * 100) / 100,
|
|
1495
|
-
errorRate: requests > 0 ? Math.round(errors / requests * 1e3) / 1e3 : 0,
|
|
1496
|
-
latencyMs: percentiles(allSamples),
|
|
1497
|
-
slowestMethods: perMethod.slice(0, topN),
|
|
1498
|
-
eventLoopDelayMs: el ? {
|
|
1499
|
-
mean: elMs(el.mean),
|
|
1500
|
-
p50: elMs(el.percentile(50)),
|
|
1501
|
-
p99: elMs(el.percentile(99)),
|
|
1502
|
-
max: elMs(el.max)
|
|
1503
|
-
} : {
|
|
1504
|
-
mean: 0,
|
|
1505
|
-
p50: 0,
|
|
1506
|
-
p99: 0,
|
|
1507
|
-
max: 0
|
|
1508
|
-
}
|
|
1509
|
-
};
|
|
1510
|
-
}
|
|
1511
|
-
function emitSnapshot(windowMs) {
|
|
1512
|
-
const snap = buildGatewayPerfSnapshot(windowMs);
|
|
1513
|
-
if (snap.requests === 0 && snap.eventLoopDelayMs.max < 100) return;
|
|
1514
|
-
const { latencyMs: lat, eventLoopDelayMs: el } = snap;
|
|
1515
|
-
emitEvent({
|
|
1516
|
-
category: "gateway",
|
|
1517
|
-
severity: "info",
|
|
1518
|
-
event: "gateway.perf_snapshot",
|
|
1519
|
-
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`,
|
|
1520
|
-
metadata: { ...snap },
|
|
1521
|
-
timestamp: Date.now()
|
|
1522
|
-
});
|
|
1523
|
-
}
|
|
1524
|
-
/**
|
|
1525
|
-
* Start the periodic metrics reporter and event-loop delay monitor.
|
|
1526
|
-
* Idempotent — a second call is a no-op until {@link stopGatewayRequestMetrics}.
|
|
1527
|
-
* Returns a stop function.
|
|
1528
|
-
*/
|
|
1529
|
-
function startGatewayRequestMetrics(opts) {
|
|
1530
|
-
if (reporterTimer) return stopGatewayRequestMetrics;
|
|
1531
|
-
const intervalMs = opts?.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
1532
|
-
try {
|
|
1533
|
-
eventLoopHist = monitorEventLoopDelay({ resolution: 20 });
|
|
1534
|
-
eventLoopHist.enable();
|
|
1535
|
-
} catch (err) {
|
|
1536
|
-
log$26.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
|
|
1537
|
-
eventLoopHist = null;
|
|
1538
|
-
}
|
|
1539
|
-
windowStartMs = Date.now();
|
|
1540
|
-
reporterTimer = setInterval(() => {
|
|
1541
|
-
const now = Date.now();
|
|
1542
|
-
try {
|
|
1543
|
-
emitSnapshot(now - windowStartMs);
|
|
1544
|
-
} catch (err) {
|
|
1545
|
-
log$26.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1546
|
-
}
|
|
1547
|
-
methodStats.clear();
|
|
1548
|
-
eventLoopHist?.reset();
|
|
1549
|
-
windowStartMs = now;
|
|
1550
|
-
}, intervalMs);
|
|
1551
|
-
reporterTimer.unref?.();
|
|
1552
|
-
return stopGatewayRequestMetrics;
|
|
1553
|
-
}
|
|
1554
|
-
/** Stop the reporter and clear accumulated state. */
|
|
1555
|
-
function stopGatewayRequestMetrics() {
|
|
1556
|
-
if (reporterTimer) {
|
|
1557
|
-
clearInterval(reporterTimer);
|
|
1558
|
-
reporterTimer = null;
|
|
1559
|
-
}
|
|
1560
|
-
eventLoopHist?.disable();
|
|
1561
|
-
eventLoopHist = null;
|
|
1562
|
-
methodStats.clear();
|
|
1563
|
-
}
|
|
1564
|
-
//#endregion
|
|
1565
1396
|
//#region src/infra/exec-approval-forwarder.ts
|
|
1566
|
-
const log$
|
|
1397
|
+
const log$26 = createSubsystemLogger("gateway/exec-approvals");
|
|
1567
1398
|
const DEFAULT_MODE = "session";
|
|
1568
1399
|
function normalizeMode(mode) {
|
|
1569
1400
|
return mode ?? DEFAULT_MODE;
|
|
@@ -1681,7 +1512,7 @@ async function deliverToTargets(params) {
|
|
|
1681
1512
|
payloads: [{ text: params.text }]
|
|
1682
1513
|
});
|
|
1683
1514
|
} catch (err) {
|
|
1684
|
-
log$
|
|
1515
|
+
log$26.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
|
|
1685
1516
|
}
|
|
1686
1517
|
});
|
|
1687
1518
|
await Promise.allSettled(deliveries);
|
|
@@ -1842,12 +1673,12 @@ function stopLedgerFlusher() {
|
|
|
1842
1673
|
}
|
|
1843
1674
|
//#endregion
|
|
1844
1675
|
//#region src/infra/message-ledger-hooks.ts
|
|
1845
|
-
const PLUGIN_ID$
|
|
1676
|
+
const PLUGIN_ID$3 = "minion:message-ledger";
|
|
1846
1677
|
const recentInbound = /* @__PURE__ */ new Map();
|
|
1847
1678
|
const keyFor = (channel, accountId, chatId) => `${channel}|${accountId ?? ""}|${chatId ?? ""}`;
|
|
1848
1679
|
function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
1849
1680
|
registry.typedHooks.push({
|
|
1850
|
-
pluginId: PLUGIN_ID$
|
|
1681
|
+
pluginId: PLUGIN_ID$3,
|
|
1851
1682
|
hookName: "gateway_start",
|
|
1852
1683
|
handler: () => {
|
|
1853
1684
|
openMessageLedger(dbPath);
|
|
@@ -1855,7 +1686,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1855
1686
|
},
|
|
1856
1687
|
source: "internal"
|
|
1857
1688
|
}, {
|
|
1858
|
-
pluginId: PLUGIN_ID$
|
|
1689
|
+
pluginId: PLUGIN_ID$3,
|
|
1859
1690
|
hookName: "gateway_stop",
|
|
1860
1691
|
handler: () => {
|
|
1861
1692
|
stopLedgerFlusher();
|
|
@@ -1863,7 +1694,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1863
1694
|
},
|
|
1864
1695
|
source: "internal"
|
|
1865
1696
|
}, {
|
|
1866
|
-
pluginId: PLUGIN_ID$
|
|
1697
|
+
pluginId: PLUGIN_ID$3,
|
|
1867
1698
|
hookName: "message_inbound",
|
|
1868
1699
|
handler: (event) => {
|
|
1869
1700
|
const row = record({
|
|
@@ -1888,7 +1719,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1888
1719
|
},
|
|
1889
1720
|
source: "internal"
|
|
1890
1721
|
}, {
|
|
1891
|
-
pluginId: PLUGIN_ID$
|
|
1722
|
+
pluginId: PLUGIN_ID$3,
|
|
1892
1723
|
hookName: "message_received",
|
|
1893
1724
|
handler: (_event, ctx) => {
|
|
1894
1725
|
if (!ctx.sessionKey) return;
|
|
@@ -1904,7 +1735,7 @@ function registerMessageLedgerHooks(registry, dbPath, flusher) {
|
|
|
1904
1735
|
},
|
|
1905
1736
|
source: "internal"
|
|
1906
1737
|
}, {
|
|
1907
|
-
pluginId: PLUGIN_ID$
|
|
1738
|
+
pluginId: PLUGIN_ID$3,
|
|
1908
1739
|
hookName: "message_sent",
|
|
1909
1740
|
handler: (event, ctx) => {
|
|
1910
1741
|
record({
|
|
@@ -2342,24 +2173,24 @@ function ensureWorkspaceSafely(userId) {
|
|
|
2342
2173
|
ensurePersonalAgentWorkspace(userId);
|
|
2343
2174
|
} catch {}
|
|
2344
2175
|
}
|
|
2345
|
-
const PLUGIN_ID$
|
|
2176
|
+
const PLUGIN_ID$2 = "minion:personal-agent-observations";
|
|
2346
2177
|
function registerPersonalAgentObservationHooks(registry, dbPath) {
|
|
2347
2178
|
registry.typedHooks.push({
|
|
2348
|
-
pluginId: PLUGIN_ID$
|
|
2179
|
+
pluginId: PLUGIN_ID$2,
|
|
2349
2180
|
hookName: "gateway_start",
|
|
2350
2181
|
handler: () => {
|
|
2351
2182
|
openObservationStore(dbPath);
|
|
2352
2183
|
},
|
|
2353
2184
|
source: "internal"
|
|
2354
2185
|
}, {
|
|
2355
|
-
pluginId: PLUGIN_ID$
|
|
2186
|
+
pluginId: PLUGIN_ID$2,
|
|
2356
2187
|
hookName: "gateway_stop",
|
|
2357
2188
|
handler: () => {
|
|
2358
2189
|
closeObservationStore();
|
|
2359
2190
|
},
|
|
2360
2191
|
source: "internal"
|
|
2361
2192
|
}, {
|
|
2362
|
-
pluginId: PLUGIN_ID$
|
|
2193
|
+
pluginId: PLUGIN_ID$2,
|
|
2363
2194
|
hookName: "message_inbound",
|
|
2364
2195
|
handler: (event) => {
|
|
2365
2196
|
if (event.isGroup) return;
|
|
@@ -2382,7 +2213,7 @@ function registerPersonalAgentObservationHooks(registry, dbPath) {
|
|
|
2382
2213
|
},
|
|
2383
2214
|
source: "internal"
|
|
2384
2215
|
}, {
|
|
2385
|
-
pluginId: PLUGIN_ID$
|
|
2216
|
+
pluginId: PLUGIN_ID$2,
|
|
2386
2217
|
hookName: "message_received",
|
|
2387
2218
|
handler: (event, ctx) => {
|
|
2388
2219
|
const channel = ctx.channelId;
|
|
@@ -2399,7 +2230,7 @@ function registerPersonalAgentObservationHooks(registry, dbPath) {
|
|
|
2399
2230
|
},
|
|
2400
2231
|
source: "internal"
|
|
2401
2232
|
}, {
|
|
2402
|
-
pluginId: PLUGIN_ID$
|
|
2233
|
+
pluginId: PLUGIN_ID$2,
|
|
2403
2234
|
hookName: "message_sent",
|
|
2404
2235
|
handler: (event, ctx) => {
|
|
2405
2236
|
const channel = ctx.channelId;
|
|
@@ -3141,6 +2972,86 @@ function asStringArray(v) {
|
|
|
3141
2972
|
return v.filter((x) => typeof x === "string");
|
|
3142
2973
|
}
|
|
3143
2974
|
//#endregion
|
|
2975
|
+
//#region src/trajectory/writer.ts
|
|
2976
|
+
const DEFAULT_MAX_BYTES$2 = 5 * 1024 * 1024;
|
|
2977
|
+
var TrajectoryWriter = class {
|
|
2978
|
+
constructor(file, opts) {
|
|
2979
|
+
this.file = file;
|
|
2980
|
+
this.bytes = 0;
|
|
2981
|
+
this.dropped = 0;
|
|
2982
|
+
this.maxBytes = opts?.maxBytes ?? DEFAULT_MAX_BYTES$2;
|
|
2983
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
2984
|
+
if (existsSync(file)) this.bytes = statSync(file).size;
|
|
2985
|
+
}
|
|
2986
|
+
append(event) {
|
|
2987
|
+
if (this.bytes >= this.maxBytes) {
|
|
2988
|
+
this.dropped += 1;
|
|
2989
|
+
return;
|
|
2990
|
+
}
|
|
2991
|
+
const line = `${JSON.stringify(event)}\n`;
|
|
2992
|
+
try {
|
|
2993
|
+
appendFileSync(this.file, line);
|
|
2994
|
+
this.bytes += Buffer.byteLength(line);
|
|
2995
|
+
} catch {
|
|
2996
|
+
this.dropped += 1;
|
|
2997
|
+
}
|
|
2998
|
+
}
|
|
2999
|
+
};
|
|
3000
|
+
//#endregion
|
|
3001
|
+
//#region src/trajectory/recorder.ts
|
|
3002
|
+
const PLUGIN_ID$1 = "trajectory-recorder";
|
|
3003
|
+
const writers = /* @__PURE__ */ new Map();
|
|
3004
|
+
const MAX_LIVE_SESSIONS = 500;
|
|
3005
|
+
function writerFor(sessionId, agentId) {
|
|
3006
|
+
let w = writers.get(sessionId);
|
|
3007
|
+
if (!w) {
|
|
3008
|
+
if (writers.size >= MAX_LIVE_SESSIONS) {
|
|
3009
|
+
const oldest = writers.keys().next().value;
|
|
3010
|
+
if (oldest !== void 0) writers.delete(oldest);
|
|
3011
|
+
}
|
|
3012
|
+
w = new TrajectoryWriter(join(resolveSessionTranscriptsDirForAgent(agentId), `trajectory-${sessionId}.jsonl`));
|
|
3013
|
+
writers.set(sessionId, w);
|
|
3014
|
+
}
|
|
3015
|
+
return w;
|
|
3016
|
+
}
|
|
3017
|
+
/** Idempotent: enable per-session JSONL trajectory recording via lifecycle hooks. */
|
|
3018
|
+
function enableTrajectoryRecording() {
|
|
3019
|
+
registerLifecycleHooks(PLUGIN_ID$1, {
|
|
3020
|
+
onSessionStart: async (s) => {
|
|
3021
|
+
writerFor(s.sessionId, s.agentId).append({
|
|
3022
|
+
kind: "session_start",
|
|
3023
|
+
sessionId: s.sessionId,
|
|
3024
|
+
agentId: s.agentId,
|
|
3025
|
+
channelType: s.channelType,
|
|
3026
|
+
timestamp: s.startedAt
|
|
3027
|
+
});
|
|
3028
|
+
},
|
|
3029
|
+
postLlmCall: async (ctx, result) => {
|
|
3030
|
+
writerFor(ctx.sessionId, ctx.agentId).append({
|
|
3031
|
+
kind: "llm_call",
|
|
3032
|
+
turn: ctx.turn,
|
|
3033
|
+
model: result.model,
|
|
3034
|
+
inputTokens: result.inputTokens,
|
|
3035
|
+
outputTokens: result.outputTokens,
|
|
3036
|
+
durationMs: result.durationMs,
|
|
3037
|
+
hasToolCalls: result.hasToolCalls,
|
|
3038
|
+
error: result.error,
|
|
3039
|
+
timestamp: ctx.timestamp
|
|
3040
|
+
});
|
|
3041
|
+
},
|
|
3042
|
+
onSessionEnd: async (s, summary) => {
|
|
3043
|
+
writerFor(s.sessionId, s.agentId).append({
|
|
3044
|
+
kind: "session_end",
|
|
3045
|
+
turns: summary.turns,
|
|
3046
|
+
durationMs: summary.durationMs,
|
|
3047
|
+
endReason: summary.endReason,
|
|
3048
|
+
timestamp: Date.now()
|
|
3049
|
+
});
|
|
3050
|
+
writers.delete(s.sessionId);
|
|
3051
|
+
}
|
|
3052
|
+
});
|
|
3053
|
+
}
|
|
3054
|
+
//#endregion
|
|
3144
3055
|
//#region src/gateway/auth/auth-jwt.ts
|
|
3145
3056
|
/**
|
|
3146
3057
|
* JWT validation module for the multi-tenant gateway.
|
|
@@ -3246,7 +3157,7 @@ async function validateGatewayJwt(token, config) {
|
|
|
3246
3157
|
}
|
|
3247
3158
|
//#endregion
|
|
3248
3159
|
//#region src/gateway/channel-health-monitor.ts
|
|
3249
|
-
const log$
|
|
3160
|
+
const log$25 = createSubsystemLogger("gateway/health-monitor");
|
|
3250
3161
|
const DEFAULT_CHECK_INTERVAL_MS$1 = 5 * 6e4;
|
|
3251
3162
|
const DEFAULT_STARTUP_GRACE_MS = 6e4;
|
|
3252
3163
|
const DEFAULT_COOLDOWN_CYCLES = 2;
|
|
@@ -3295,11 +3206,11 @@ function startChannelHealthMonitor(deps) {
|
|
|
3295
3206
|
if (now - record.lastRestartAt <= cooldownMs) continue;
|
|
3296
3207
|
pruneOldRestarts(record, now);
|
|
3297
3208
|
if (record.restartsThisHour.length >= maxRestartsPerHour) {
|
|
3298
|
-
log$
|
|
3209
|
+
log$25.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
|
|
3299
3210
|
continue;
|
|
3300
3211
|
}
|
|
3301
3212
|
const reason = !status.running ? status.reconnectAttempts && status.reconnectAttempts >= 10 ? "gave-up" : "stopped" : "stuck";
|
|
3302
|
-
log$
|
|
3213
|
+
log$25.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
|
|
3303
3214
|
try {
|
|
3304
3215
|
if (status.running) await channelManager.stopChannel(channelId, accountId);
|
|
3305
3216
|
channelManager.resetRestartAttempts(channelId, accountId);
|
|
@@ -3308,7 +3219,7 @@ function startChannelHealthMonitor(deps) {
|
|
|
3308
3219
|
record.restartsThisHour.push({ at: now });
|
|
3309
3220
|
restartRecords.set(key, record);
|
|
3310
3221
|
} catch (err) {
|
|
3311
|
-
log$
|
|
3222
|
+
log$25.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
|
|
3312
3223
|
}
|
|
3313
3224
|
}
|
|
3314
3225
|
}
|
|
@@ -3328,7 +3239,7 @@ function startChannelHealthMonitor(deps) {
|
|
|
3328
3239
|
abortSignal?.addEventListener("abort", stop, { once: true });
|
|
3329
3240
|
timer = setInterval(() => void runCheck(), checkIntervalMs);
|
|
3330
3241
|
if (typeof timer === "object" && "unref" in timer) timer.unref();
|
|
3331
|
-
log$
|
|
3242
|
+
log$25.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, grace: ${Math.round(startupGraceMs / 1e3)}s)`);
|
|
3332
3243
|
}
|
|
3333
3244
|
return { stop };
|
|
3334
3245
|
}
|
|
@@ -3822,7 +3733,7 @@ var ExecApprovalManager = class {
|
|
|
3822
3733
|
* Opens the SQLite database, applies WAL pragmas, and runs the
|
|
3823
3734
|
* 004_free_tier_users migration. Returns the DatabaseSync instance.
|
|
3824
3735
|
*/
|
|
3825
|
-
const log$
|
|
3736
|
+
const log$24 = createSubsystemLogger("free-tier/db");
|
|
3826
3737
|
const MIGRATION_SQL_PATH = join(dirname(fileURLToPath(import.meta.url)), "../../db/migrations/004_free_tier_users.sql");
|
|
3827
3738
|
function openFreeTierDb(dbPath) {
|
|
3828
3739
|
const { DatabaseSync } = requireNodeSqlite();
|
|
@@ -3831,9 +3742,9 @@ function openFreeTierDb(dbPath) {
|
|
|
3831
3742
|
try {
|
|
3832
3743
|
const sql = readFileSync(MIGRATION_SQL_PATH, "utf8");
|
|
3833
3744
|
db.exec(sql);
|
|
3834
|
-
log$
|
|
3745
|
+
log$24.info("free-tier DB migration applied", { dbPath });
|
|
3835
3746
|
} catch (err) {
|
|
3836
|
-
log$
|
|
3747
|
+
log$24.error("free-tier DB migration failed", {
|
|
3837
3748
|
dbPath,
|
|
3838
3749
|
error: String(err)
|
|
3839
3750
|
});
|
|
@@ -3972,13 +3883,13 @@ var UserRepository = class {
|
|
|
3972
3883
|
};
|
|
3973
3884
|
//#endregion
|
|
3974
3885
|
//#region src/gateway/free-tier/email.ts
|
|
3975
|
-
const log$
|
|
3886
|
+
const log$23 = createSubsystemLogger("free-tier/email");
|
|
3976
3887
|
const RESEND_API = "https://api.resend.com/emails";
|
|
3977
3888
|
const FROM = "OpenClaw <noreply@minion.ai>";
|
|
3978
3889
|
async function send$1(to, subject, html) {
|
|
3979
3890
|
const apiKey = process.env["RESEND_API_KEY"];
|
|
3980
3891
|
if (!apiKey) {
|
|
3981
|
-
log$
|
|
3892
|
+
log$23.warn("RESEND_API_KEY not set — email not sent", {
|
|
3982
3893
|
to,
|
|
3983
3894
|
subject
|
|
3984
3895
|
});
|
|
@@ -3999,7 +3910,7 @@ async function send$1(to, subject, html) {
|
|
|
3999
3910
|
});
|
|
4000
3911
|
if (!res.ok) {
|
|
4001
3912
|
const text = await res.text().catch(() => "");
|
|
4002
|
-
log$
|
|
3913
|
+
log$23.error("Resend API error", {
|
|
4003
3914
|
status: res.status,
|
|
4004
3915
|
body: text
|
|
4005
3916
|
});
|
|
@@ -4012,7 +3923,7 @@ async function sendVerificationEmail(email, token, baseUrl) {
|
|
|
4012
3923
|
}
|
|
4013
3924
|
//#endregion
|
|
4014
3925
|
//#region src/gateway/free-tier/auth-http.ts
|
|
4015
|
-
const log$
|
|
3926
|
+
const log$22 = createSubsystemLogger("free-tier/auth");
|
|
4016
3927
|
function json$1(res, status, body) {
|
|
4017
3928
|
res.statusCode = status;
|
|
4018
3929
|
res.setHeader("Content-Type", "application/json; charset=utf-8");
|
|
@@ -4074,7 +3985,7 @@ async function handleSignup(req, res, users) {
|
|
|
4074
3985
|
passwordHash
|
|
4075
3986
|
});
|
|
4076
3987
|
await sendVerificationEmail(email, verifyToken, process.env["HUB_BASE_URL"] ?? "https://hub.minion.ai").catch((e) => {
|
|
4077
|
-
log$
|
|
3988
|
+
log$22.error("failed to send verification email", {
|
|
4078
3989
|
userId: user.id,
|
|
4079
3990
|
error: String(e)
|
|
4080
3991
|
});
|
|
@@ -4381,6 +4292,175 @@ function createFreeTierApiHandler(db) {
|
|
|
4381
4292
|
};
|
|
4382
4293
|
}
|
|
4383
4294
|
//#endregion
|
|
4295
|
+
//#region src/gateway/gateway-request-metrics.ts
|
|
4296
|
+
/**
|
|
4297
|
+
* Gateway request performance metrics.
|
|
4298
|
+
*
|
|
4299
|
+
* Records per-method handler latency at the request dispatch chokepoint and
|
|
4300
|
+
* samples Node's event-loop delay, then emits a single aggregated
|
|
4301
|
+
* `gateway.perf_snapshot` event per window (default 60s) into the unified
|
|
4302
|
+
* event store — the same surface the hub reliability dashboard reads.
|
|
4303
|
+
*
|
|
4304
|
+
* Why this exists: the legacy `gateway.ws_slow_response` event fired per-call
|
|
4305
|
+
* at a 50ms bar, flooding the dashboard with non-actionable noise while
|
|
4306
|
+
* measuring *total* WS round-trip time (which is dominated by event-loop
|
|
4307
|
+
* scheduling, not handler work). This module instead measures handler CPU
|
|
4308
|
+
* time per method AND event-loop delay separately, so slow responses can be
|
|
4309
|
+
* correctly attributed (heavy handler vs. a congested event loop) from
|
|
4310
|
+
* percentile aggregates rather than guesswork.
|
|
4311
|
+
*
|
|
4312
|
+
* Metric points emitted (in `gateway.perf_snapshot` metadata):
|
|
4313
|
+
* - requests — count + throughput (req/s) over the window
|
|
4314
|
+
* - errorRate — fraction of requests that responded `ok: false`
|
|
4315
|
+
* - latencyMs — p50 / p95 / p99 / max handler latency across all methods
|
|
4316
|
+
* - slowestMethods — top methods by p95 latency (count, p50, p95, max, errors)
|
|
4317
|
+
* - eventLoopDelayMs — mean / p50 / p99 / max event-loop lag over the window
|
|
4318
|
+
*
|
|
4319
|
+
* @module
|
|
4320
|
+
*/
|
|
4321
|
+
const log$21 = createSubsystemLogger("gateway/metrics");
|
|
4322
|
+
/** Cap on retained latency samples per method (reservoir) to bound memory. */
|
|
4323
|
+
const MAX_SAMPLES_PER_METHOD = 512;
|
|
4324
|
+
/** Default snapshot window. Matches the reliability rate-limiter granularity. */
|
|
4325
|
+
const DEFAULT_INTERVAL_MS = 6e4;
|
|
4326
|
+
const methodStats = /* @__PURE__ */ new Map();
|
|
4327
|
+
let reporterTimer = null;
|
|
4328
|
+
let eventLoopHist = null;
|
|
4329
|
+
let windowStartMs = 0;
|
|
4330
|
+
/**
|
|
4331
|
+
* Record one dispatched request's handler latency and outcome.
|
|
4332
|
+
* Called at the dispatch chokepoint. Best-effort — never throws.
|
|
4333
|
+
*/
|
|
4334
|
+
function recordMethodLatency(method, durationMs, ok) {
|
|
4335
|
+
if (!Number.isFinite(durationMs) || durationMs < 0) return;
|
|
4336
|
+
let stat = methodStats.get(method);
|
|
4337
|
+
if (!stat) {
|
|
4338
|
+
stat = {
|
|
4339
|
+
count: 0,
|
|
4340
|
+
errors: 0,
|
|
4341
|
+
samples: []
|
|
4342
|
+
};
|
|
4343
|
+
methodStats.set(method, stat);
|
|
4344
|
+
}
|
|
4345
|
+
stat.count += 1;
|
|
4346
|
+
if (!ok) stat.errors += 1;
|
|
4347
|
+
if (stat.samples.length < MAX_SAMPLES_PER_METHOD) stat.samples.push(durationMs);
|
|
4348
|
+
else stat.samples[Math.floor(Math.random() * MAX_SAMPLES_PER_METHOD)] = durationMs;
|
|
4349
|
+
}
|
|
4350
|
+
function percentiles(samples) {
|
|
4351
|
+
if (samples.length === 0) return {
|
|
4352
|
+
p50: 0,
|
|
4353
|
+
p95: 0,
|
|
4354
|
+
p99: 0,
|
|
4355
|
+
max: 0
|
|
4356
|
+
};
|
|
4357
|
+
const sorted = [...samples].sort((a, b) => a - b);
|
|
4358
|
+
const at = (q) => sorted[Math.min(Math.floor(sorted.length * q), sorted.length - 1)];
|
|
4359
|
+
return {
|
|
4360
|
+
p50: Math.round(at(.5)),
|
|
4361
|
+
p95: Math.round(at(.95)),
|
|
4362
|
+
p99: Math.round(at(.99)),
|
|
4363
|
+
max: Math.round(sorted[sorted.length - 1])
|
|
4364
|
+
};
|
|
4365
|
+
}
|
|
4366
|
+
/** Build a snapshot from the current window without resetting state. */
|
|
4367
|
+
function buildGatewayPerfSnapshot(windowMs, topN = 5) {
|
|
4368
|
+
const allSamples = [];
|
|
4369
|
+
let requests = 0;
|
|
4370
|
+
let errors = 0;
|
|
4371
|
+
const perMethod = [];
|
|
4372
|
+
for (const [method, stat] of methodStats) {
|
|
4373
|
+
requests += stat.count;
|
|
4374
|
+
errors += stat.errors;
|
|
4375
|
+
for (const s of stat.samples) allSamples.push(s);
|
|
4376
|
+
const p = percentiles(stat.samples);
|
|
4377
|
+
perMethod.push({
|
|
4378
|
+
method,
|
|
4379
|
+
count: stat.count,
|
|
4380
|
+
errors: stat.errors,
|
|
4381
|
+
p50: p.p50,
|
|
4382
|
+
p95: p.p95,
|
|
4383
|
+
max: p.max
|
|
4384
|
+
});
|
|
4385
|
+
}
|
|
4386
|
+
perMethod.sort((a, b) => b.p95 - a.p95 || b.max - a.max);
|
|
4387
|
+
const windowSec = windowMs > 0 ? windowMs / 1e3 : 1;
|
|
4388
|
+
const el = eventLoopHist;
|
|
4389
|
+
const elMs = (ns) => Math.round(ns / 1e6 * 100) / 100;
|
|
4390
|
+
return {
|
|
4391
|
+
windowMs,
|
|
4392
|
+
requests,
|
|
4393
|
+
throughputPerSec: Math.round(requests / windowSec * 100) / 100,
|
|
4394
|
+
errorRate: requests > 0 ? Math.round(errors / requests * 1e3) / 1e3 : 0,
|
|
4395
|
+
latencyMs: percentiles(allSamples),
|
|
4396
|
+
slowestMethods: perMethod.slice(0, topN),
|
|
4397
|
+
eventLoopDelayMs: el ? {
|
|
4398
|
+
mean: elMs(el.mean),
|
|
4399
|
+
p50: elMs(el.percentile(50)),
|
|
4400
|
+
p99: elMs(el.percentile(99)),
|
|
4401
|
+
max: elMs(el.max)
|
|
4402
|
+
} : {
|
|
4403
|
+
mean: 0,
|
|
4404
|
+
p50: 0,
|
|
4405
|
+
p99: 0,
|
|
4406
|
+
max: 0
|
|
4407
|
+
}
|
|
4408
|
+
};
|
|
4409
|
+
}
|
|
4410
|
+
function emitSnapshot(windowMs) {
|
|
4411
|
+
const snap = buildGatewayPerfSnapshot(windowMs);
|
|
4412
|
+
if (snap.requests === 0 && snap.eventLoopDelayMs.max < 100) return;
|
|
4413
|
+
const { latencyMs: lat, eventLoopDelayMs: el } = snap;
|
|
4414
|
+
emitEvent({
|
|
4415
|
+
category: "gateway",
|
|
4416
|
+
severity: "info",
|
|
4417
|
+
event: "gateway.perf_snapshot",
|
|
4418
|
+
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`,
|
|
4419
|
+
metadata: { ...snap },
|
|
4420
|
+
timestamp: Date.now()
|
|
4421
|
+
});
|
|
4422
|
+
}
|
|
4423
|
+
/**
|
|
4424
|
+
* Start the periodic metrics reporter and event-loop delay monitor.
|
|
4425
|
+
* Idempotent — a second call is a no-op until {@link stopGatewayRequestMetrics}.
|
|
4426
|
+
* Returns a stop function.
|
|
4427
|
+
*/
|
|
4428
|
+
function startGatewayRequestMetrics(opts) {
|
|
4429
|
+
if (reporterTimer) return stopGatewayRequestMetrics;
|
|
4430
|
+
const intervalMs = opts?.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
4431
|
+
try {
|
|
4432
|
+
eventLoopHist = monitorEventLoopDelay({ resolution: 20 });
|
|
4433
|
+
eventLoopHist.enable();
|
|
4434
|
+
} catch (err) {
|
|
4435
|
+
log$21.debug(`event-loop delay monitor unavailable: ${err instanceof Error ? err.message : String(err)}`);
|
|
4436
|
+
eventLoopHist = null;
|
|
4437
|
+
}
|
|
4438
|
+
windowStartMs = Date.now();
|
|
4439
|
+
reporterTimer = setInterval(() => {
|
|
4440
|
+
const now = Date.now();
|
|
4441
|
+
try {
|
|
4442
|
+
emitSnapshot(now - windowStartMs);
|
|
4443
|
+
} catch (err) {
|
|
4444
|
+
log$21.debug(`perf snapshot emit failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
4445
|
+
}
|
|
4446
|
+
methodStats.clear();
|
|
4447
|
+
eventLoopHist?.reset();
|
|
4448
|
+
windowStartMs = now;
|
|
4449
|
+
}, intervalMs);
|
|
4450
|
+
reporterTimer.unref?.();
|
|
4451
|
+
return stopGatewayRequestMetrics;
|
|
4452
|
+
}
|
|
4453
|
+
/** Stop the reporter and clear accumulated state. */
|
|
4454
|
+
function stopGatewayRequestMetrics() {
|
|
4455
|
+
if (reporterTimer) {
|
|
4456
|
+
clearInterval(reporterTimer);
|
|
4457
|
+
reporterTimer = null;
|
|
4458
|
+
}
|
|
4459
|
+
eventLoopHist?.disable();
|
|
4460
|
+
eventLoopHist = null;
|
|
4461
|
+
methodStats.clear();
|
|
4462
|
+
}
|
|
4463
|
+
//#endregion
|
|
4384
4464
|
//#region src/gateway/http-utils.ts
|
|
4385
4465
|
function getHeader(req, name) {
|
|
4386
4466
|
const raw = req.headers[name.toLowerCase()];
|
|
@@ -18899,7 +18979,7 @@ const nodeHandlers = {
|
|
|
18899
18979
|
const p = params;
|
|
18900
18980
|
const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
|
|
18901
18981
|
await respondUnavailableOnThrow(respond, async () => {
|
|
18902
|
-
const { handleNodeEvent } = await import("./server-node-events-
|
|
18982
|
+
const { handleNodeEvent } = await import("./server-node-events-D90DAPI1.js");
|
|
18903
18983
|
const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
|
|
18904
18984
|
const nodeConnId = client?.connId;
|
|
18905
18985
|
await handleNodeEvent({
|
|
@@ -26406,7 +26486,7 @@ function normalizeAgentPayload(payload) {
|
|
|
26406
26486
|
async function startBrowserControlServerIfEnabled() {
|
|
26407
26487
|
if (isTruthyEnvValue(process.env.MINION_SKIP_BROWSER_CONTROL_SERVER)) return null;
|
|
26408
26488
|
const override = process.env.MINION_BROWSER_CONTROL_MODULE?.trim();
|
|
26409
|
-
const mod = override ? await import(override) : await import("./dispatcher-
|
|
26489
|
+
const mod = override ? await import(override) : await import("./dispatcher-D46WCdTe.js").then((n) => n.n);
|
|
26410
26490
|
const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
|
|
26411
26491
|
const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
|
|
26412
26492
|
if (!start) return null;
|
|
@@ -32265,7 +32345,7 @@ async function deliverFlowReply(sessionKey, reply) {
|
|
|
32265
32345
|
}
|
|
32266
32346
|
try {
|
|
32267
32347
|
const cfg = loadConfig();
|
|
32268
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
32348
|
+
const { deliverOutboundPayloads } = await import("./deliver-BCijF1xe.js").then((n) => n.n);
|
|
32269
32349
|
await deliverOutboundPayloads({
|
|
32270
32350
|
cfg,
|
|
32271
32351
|
channel: target.channel,
|
|
@@ -33948,7 +34028,7 @@ function attachGatewayWsMessageHandler(params) {
|
|
|
33948
34028
|
mtUserRole = matchedSvc.role;
|
|
33949
34029
|
mtOrgId = "service";
|
|
33950
34030
|
mtAssignedAgentIds = matchedSvc.agentIds;
|
|
33951
|
-
const { mapRoleToScopes: mapRole } = await import("./reply-prefix-
|
|
34031
|
+
const { mapRoleToScopes: mapRole } = await import("./reply-prefix-D9MQ_veY.js").then((n) => n.c);
|
|
33952
34032
|
scopes = mapRole(matchedSvc.role);
|
|
33953
34033
|
connectParams.scopes = scopes;
|
|
33954
34034
|
authOk = true;
|
|
@@ -33989,7 +34069,7 @@ function attachGatewayWsMessageHandler(params) {
|
|
|
33989
34069
|
scopes = jwtResult.scopes;
|
|
33990
34070
|
connectParams.scopes = scopes;
|
|
33991
34071
|
if (jwtResult.jti) {
|
|
33992
|
-
const { getActiveUserSubsystem } = await import("./reply-prefix-
|
|
34072
|
+
const { getActiveUserSubsystem } = await import("./reply-prefix-D9MQ_veY.js").then((n) => n.o);
|
|
33993
34073
|
if (getActiveUserSubsystem()?.tokenRevocationStore.isRevoked(jwtResult.jti)) {
|
|
33994
34074
|
markHandshakeFailure("token-revoked", {
|
|
33995
34075
|
userId: mtUserId,
|
|
@@ -34037,7 +34117,7 @@ function attachGatewayWsMessageHandler(params) {
|
|
|
34037
34117
|
return;
|
|
34038
34118
|
}
|
|
34039
34119
|
if (mtUserId) {
|
|
34040
|
-
const { provisionOnConnect } = await import("./reply-prefix-
|
|
34120
|
+
const { provisionOnConnect } = await import("./reply-prefix-D9MQ_veY.js").then((n) => n.o);
|
|
34041
34121
|
const { resolveStateDir } = await import("./paths-aEg9UgoF.js").then((n) => n.i);
|
|
34042
34122
|
provisionOnConnect({
|
|
34043
34123
|
stateDir: resolveStateDir(process.env),
|
|
@@ -35633,6 +35713,10 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
35633
35713
|
key: "MINION_PERSONAL_AGENT_OBSERVATIONS_PATH",
|
|
35634
35714
|
description: "personal-agent observations database path override"
|
|
35635
35715
|
});
|
|
35716
|
+
if (cfgAtStart.gateway?.trajectory?.enabled === true) {
|
|
35717
|
+
enableTrajectoryRecording();
|
|
35718
|
+
log.info("trajectory recording enabled");
|
|
35719
|
+
}
|
|
35636
35720
|
}
|
|
35637
35721
|
const channelLogs = Object.fromEntries(listChannelPlugins().map((plugin) => [plugin.id, logChannels.child(plugin.id)]));
|
|
35638
35722
|
const channelRuntimeEnvs = Object.fromEntries(Object.entries(channelLogs).map(([id, logger]) => [id, runtimeForLogger(logger)]));
|
|
@@ -35931,8 +36015,8 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
35931
36015
|
});
|
|
35932
36016
|
if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
|
|
35933
36017
|
if (!minimalTestGateway) (async () => {
|
|
35934
|
-
const { recoverPendingDeliveries } = await import("./deliver-
|
|
35935
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
36018
|
+
const { recoverPendingDeliveries } = await import("./deliver-BCijF1xe.js").then((n) => n.s);
|
|
36019
|
+
const { deliverOutboundPayloads } = await import("./deliver-BCijF1xe.js").then((n) => n.n);
|
|
35936
36020
|
await recoverPendingDeliveries({
|
|
35937
36021
|
deliver: deliverOutboundPayloads,
|
|
35938
36022
|
log: log.child("delivery-recovery"),
|