@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
|
@@ -14,16 +14,16 @@ import { a as trackToolExecution, c as flushSentry, f as startSentrySpan, i as t
|
|
|
14
14
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BLXsXccX.js";
|
|
15
15
|
import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-CQQlHE0j.js";
|
|
16
16
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BYTEhHLM.js";
|
|
17
|
-
import { i as resolveSkillsPromptForRun, l as assertSandboxPath, n as buildWorkspaceSkillSnapshot, o as resolvePluginSkillDirs, r as loadWorkspaceSkillEntries, t as buildWorkspaceSkillCommandSpecs, u as resolveSandboxInputPath } from "./workspace-
|
|
18
|
-
import { n as resolveSkillEnvMap, r as resolveSkillEnvMapFromSnapshot } from "./skills-
|
|
17
|
+
import { i as resolveSkillsPromptForRun, l as assertSandboxPath, n as buildWorkspaceSkillSnapshot, o as resolvePluginSkillDirs, r as loadWorkspaceSkillEntries, t as buildWorkspaceSkillCommandSpecs, u as resolveSandboxInputPath } from "./workspace-D5-DoTNR.js";
|
|
18
|
+
import { n as resolveSkillEnvMap, r as resolveSkillEnvMapFromSnapshot } from "./skills-DDhWBAii.js";
|
|
19
19
|
import { c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isMemorySlotPlugin, i as discoverOpenClawPlugins, n as loadPluginManifestRegistry, o as emptyPluginConfigSchema, u as normalizePluginsConfig } from "./manifest-registry-DCVfom1u.js";
|
|
20
|
-
import { E as parseDurationMs, n as validateConfigObjectWithPlugins, s as validateJsonSchemaValue } from "./validation-
|
|
21
|
-
import { S as VERSION, _ as setConfigValueAtPath, d as getConfigOverrides, f as resetConfigOverrides, g as parseConfigPath, h as getConfigValueAtPath, i as loadConfig, l as writeConfigFile, m as unsetConfigOverride, o as readConfigFileSnapshot, p as setConfigOverride, v as unsetConfigValueAtPath } from "./io-
|
|
22
|
-
import "./config-
|
|
23
|
-
import { n as callGateway } from "./call-
|
|
20
|
+
import { E as parseDurationMs, n as validateConfigObjectWithPlugins, s as validateJsonSchemaValue } from "./validation-B-XaORq2.js";
|
|
21
|
+
import { S as VERSION, _ as setConfigValueAtPath, d as getConfigOverrides, f as resetConfigOverrides, g as parseConfigPath, h as getConfigValueAtPath, i as loadConfig, l as writeConfigFile, m as unsetConfigOverride, o as readConfigFileSnapshot, p as setConfigOverride, v as unsetConfigValueAtPath } from "./io-C_Q6AU5E.js";
|
|
22
|
+
import "./config-DHYot764.js";
|
|
23
|
+
import { n as callGateway } from "./call-BrDNyQiZ.js";
|
|
24
24
|
import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-C02KGm4w.js";
|
|
25
25
|
import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-ChJN5mZj.js";
|
|
26
|
-
import { $ as mergeDeliveryContext, A as resolveThreadFlag, B as getChannelDock, D as resolveChannelResetConfig, E as evaluateSessionFreshness, G as resolveConversationLabel, H as resolveChannelGroupPolicy, I as resolveMainSessionKey, J as normalizeAtHashSlug, M as resolveFreshSessionTotalTokens, O as resolveSessionResetPolicy, Q as deliveryContextKey, R as deriveSessionMetaPatch, S as acquireSessionWriteLock, T as resolveSessionKey, U as resolveChannelGroupRequireMention, V as listChannelDocks, Z as deliveryContextFromSession, a as loadSessionStore, d as updateSessionStoreEntry, et as normalizeDeliveryContext, f as isCacheEnabled, h as archiveSessionTranscripts, j as DEFAULT_RESET_TRIGGERS, k as resolveSessionResetType, l as updateLastRoute, o as readSessionUpdatedAt, p as resolveCacheTtlMs, q as resolveGroupSessionKey, s as recordSessionMetaFromInbound, tt as normalizeSessionDeliveryFields, u as updateSessionStore, w as resolveSessionLockMaxHoldFromTimeout } from "./sessions-
|
|
26
|
+
import { $ as mergeDeliveryContext, A as resolveThreadFlag, B as getChannelDock, D as resolveChannelResetConfig, E as evaluateSessionFreshness, G as resolveConversationLabel, H as resolveChannelGroupPolicy, I as resolveMainSessionKey, J as normalizeAtHashSlug, M as resolveFreshSessionTotalTokens, O as resolveSessionResetPolicy, Q as deliveryContextKey, R as deriveSessionMetaPatch, S as acquireSessionWriteLock, T as resolveSessionKey, U as resolveChannelGroupRequireMention, V as listChannelDocks, Z as deliveryContextFromSession, a as loadSessionStore, d as updateSessionStoreEntry, et as normalizeDeliveryContext, f as isCacheEnabled, h as archiveSessionTranscripts, j as DEFAULT_RESET_TRIGGERS, k as resolveSessionResetType, l as updateLastRoute, o as readSessionUpdatedAt, p as resolveCacheTtlMs, q as resolveGroupSessionKey, s as recordSessionMetaFromInbound, tt as normalizeSessionDeliveryFields, u as updateSessionStore, w as resolveSessionLockMaxHoldFromTimeout } from "./sessions-C0Qs0Flz.js";
|
|
27
27
|
import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-BkvS7DSy.js";
|
|
28
28
|
import { _ as resolveDiscordAccount, b as normalizeChatType, c as resolveWhatsAppAccount, m as resolveSlackAccount, n as listChannelPlugins, r as normalizeChannelId$1, t as getChannelPlugin, u as resolveTelegramAccount, v as normalizeDiscordToken } from "./plugins-irMKpl65.js";
|
|
29
29
|
import { t as resolveIMessageAccount } from "./accounts-BVGaPXBP.js";
|
|
@@ -33,51 +33,51 @@ import { i as resolveUserMemoryPath, n as resolveUserCredentialsPath } from "./u
|
|
|
33
33
|
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent, t as resolveDefaultSessionStorePath } from "./paths-D59m1grH.js";
|
|
34
34
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-Cti88ciS.js";
|
|
35
35
|
import { a as stripHeartbeatToken, i as resolveHeartbeatPrompt, n as AGENT_LANE_SUBAGENT } from "./lanes-L5j3C7cx.js";
|
|
36
|
-
import { d as resolveChannelMessageToolHints, f as resolveTelegramInlineButtonsScope, l as listChannelAgentTools, n as resolveAgentRoute, o as resolveSessionDeliveryTarget, u as listChannelSupportedActions } from "./resolve-route-
|
|
37
|
-
import { n as getMachineDisplayName, t as withTimeout$
|
|
36
|
+
import { d as resolveChannelMessageToolHints, f as resolveTelegramInlineButtonsScope, l as listChannelAgentTools, n as resolveAgentRoute, o as resolveSessionDeliveryTarget, u as listChannelSupportedActions } from "./resolve-route-0arQsERr.js";
|
|
37
|
+
import { n as getMachineDisplayName, t as withTimeout$3 } from "./with-timeout-BVhDEOTB.js";
|
|
38
38
|
import { a as logMessageProcessed, d as isDiagnosticsEnabled, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as emitDiagnosticEvent } from "./diagnostic-BEEvI8Zw.js";
|
|
39
39
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-BnA8DWCj.js";
|
|
40
|
-
import { _ as initializeGlobalHookRunner, a as isRenderablePayload, c as resolveReplyToMode, d as normalizeTargetForProvider, f as parseReplyDirectives, g as getGlobalHookRunner, h as parseInlineDirectives$1, i as filterMessagingToolMediaDuplicates, m as splitMediaFromOutput, n as applyReplyThreading, o as shouldSuppressMessagingToolReplies, p as MEDIA_TOKEN_RE, r as filterMessagingToolDuplicates, s as createReplyToModeFilterForChannel, t as applyReplyTagsToPayload } from "./reply-payloads-
|
|
41
|
-
import { S as textToSpeechTelephony, _ as setTtsEnabled, a as isSummarizationEnabled, b as stripTtsDirectivesFromText, c as maybeApplyTtsToPayload, d as resolveTtsAutoMode, f as resolveTtsConfig, g as setSummarizationEnabled, h as setLastTtsAttempt, i as getTtsProvider, l as normalizeTtsAutoMode, n as getLastTtsAttempt, o as isTtsEnabled, p as resolveTtsPrefsPath, r as getTtsMaxLength, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, v as setTtsMaxLength, x as textToSpeech, y as setTtsProvider } from "./tts-
|
|
40
|
+
import { _ as initializeGlobalHookRunner, a as isRenderablePayload, c as resolveReplyToMode, d as normalizeTargetForProvider, f as parseReplyDirectives, g as getGlobalHookRunner, h as parseInlineDirectives$1, i as filterMessagingToolMediaDuplicates, m as splitMediaFromOutput, n as applyReplyThreading, o as shouldSuppressMessagingToolReplies, p as MEDIA_TOKEN_RE, r as filterMessagingToolDuplicates, s as createReplyToModeFilterForChannel, t as applyReplyTagsToPayload } from "./reply-payloads-Dk-zLmJC.js";
|
|
41
|
+
import { S as textToSpeechTelephony, _ as setTtsEnabled, a as isSummarizationEnabled, b as stripTtsDirectivesFromText, c as maybeApplyTtsToPayload, d as resolveTtsAutoMode, f as resolveTtsConfig, g as setSummarizationEnabled, h as setLastTtsAttempt, i as getTtsProvider, l as normalizeTtsAutoMode, n as getLastTtsAttempt, o as isTtsEnabled, p as resolveTtsPrefsPath, r as getTtsMaxLength, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, v as setTtsMaxLength, x as textToSpeech, y as setTtsProvider } from "./tts-DrFhyLnB.js";
|
|
42
42
|
import { c as detectMime, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, m as kindFromMime, s as resizeToJpeg, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-QvmG4zb9.js";
|
|
43
43
|
import { n as isVoiceCompatibleAudio } from "./audio-COkH8CV-.js";
|
|
44
|
-
import { A as formatAssistantErrorText, B as isTimeoutErrorMessage, C as isGoogleModelApi, D as isFailoverAssistantError, E as isBillingAssistantError, F as isRawApiErrorPayload, G as ensureSessionHeader, H as parseImageDimensionError, I as isCloudCodeAssistFormatError, J as sanitizeGoogleTurnOrdering, K as resolveBootstrapMaxChars, L as isCompactionFailureError, M as formatRawAssistantErrorForUi, N as sanitizeUserFacingText, O as isFailoverErrorMessage, P as getApiErrorPayloadFingerprint, R as isContextOverflowError, S as isAntigravityClaude, T as isAuthAssistantError, U as parseImageSizeError, V as isTransientHttpError, W as buildBootstrapContextFiles, _ as normalizeTextForComparison, a as formatXHighModelHint, b as extractToolResultId, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, g as isMessagingToolDuplicateNormalized, i as formatThinkingLevels, j as formatBillingErrorMessage, k as isRateLimitAssistantError, l as normalizeReasoningLevel, m as supportsXHighThinking, n as validateGeminiTurns, p as resolveResponseUsageMode, q as resolveBootstrapTotalMaxChars, r as pickFallbackThinkingLevel, t as validateAnthropicTurns, u as normalizeThinkLevel, v as sanitizeSessionMessagesImages, w as classifyFailoverReason, x as downgradeOpenAIReasoningBlocks, y as extractToolCallsFromAssistant, z as isLikelyContextOverflowError } from "./pi-embedded-helpers-
|
|
45
|
-
import { C as compileGlobPatterns, S as stripPluginOnlyAllowlist, _ as expandPolicyWithPluginGroups, a as ensureSandboxWorkspaceForSession, b as normalizeToolName, c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, h as buildPluginToolGroups, m as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, u as resolveSandboxConfigForAgent, w as matchesAnyGlobPattern, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-
|
|
44
|
+
import { A as formatAssistantErrorText, B as isTimeoutErrorMessage, C as isGoogleModelApi, D as isFailoverAssistantError, E as isBillingAssistantError, F as isRawApiErrorPayload, G as ensureSessionHeader, H as parseImageDimensionError, I as isCloudCodeAssistFormatError, J as sanitizeGoogleTurnOrdering, K as resolveBootstrapMaxChars, L as isCompactionFailureError, M as formatRawAssistantErrorForUi, N as sanitizeUserFacingText, O as isFailoverErrorMessage, P as getApiErrorPayloadFingerprint, R as isContextOverflowError, S as isAntigravityClaude, T as isAuthAssistantError, U as parseImageSizeError, V as isTransientHttpError, W as buildBootstrapContextFiles, _ as normalizeTextForComparison, a as formatXHighModelHint, b as extractToolResultId, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, g as isMessagingToolDuplicateNormalized, i as formatThinkingLevels, j as formatBillingErrorMessage, k as isRateLimitAssistantError, l as normalizeReasoningLevel, m as supportsXHighThinking, n as validateGeminiTurns, p as resolveResponseUsageMode, q as resolveBootstrapTotalMaxChars, r as pickFallbackThinkingLevel, t as validateAnthropicTurns, u as normalizeThinkLevel, v as sanitizeSessionMessagesImages, w as classifyFailoverReason, x as downgradeOpenAIReasoningBlocks, y as extractToolCallsFromAssistant, z as isLikelyContextOverflowError } from "./pi-embedded-helpers-BsRnajNh.js";
|
|
45
|
+
import { C as compileGlobPatterns, S as stripPluginOnlyAllowlist, _ as expandPolicyWithPluginGroups, a as ensureSandboxWorkspaceForSession, b as normalizeToolName, c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, h as buildPluginToolGroups, m as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, u as resolveSandboxConfigForAgent, w as matchesAnyGlobPattern, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-CDGF9AVA.js";
|
|
46
46
|
import { l as safeEqualSecret } from "./auth-CFiHbm6v.js";
|
|
47
47
|
import { r as formatUncaughtError, t as extractErrorCode } from "./errors-iV4-NKRR.js";
|
|
48
48
|
import { a as isPrivateIpAddress, i as isBlockedHostname } from "./ssrf-DWqM0QRy.js";
|
|
49
49
|
import { n as getMediaDir, r as saveMediaBuffer } from "./store-CoD1VHWb.js";
|
|
50
50
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-BeP6oYp4.js";
|
|
51
|
-
import { n as ensureOpenClawModelsJson, t as ensureMinionModelsJson } from "./models-config-
|
|
51
|
+
import { n as ensureOpenClawModelsJson, t as ensureMinionModelsJson } from "./models-config-ChIAfklN.js";
|
|
52
52
|
import { a as traceGatewayEvent, i as traceChatEvent, t as deriveTraceId } from "./chat-trace-BMcJ2gl7.js";
|
|
53
53
|
import { n as createAuditStore, r as getToolPrivacyDeclaration } from "./audit-store-DJPME7n7.js";
|
|
54
54
|
import { t as wrapToolWithTracking } from "./tool-tracking-cC4VNDsZ.js";
|
|
55
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
55
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-ilkHc_D4.js";
|
|
56
56
|
import { a as resolveMemorySearchConfig, i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-BRl2NvLA.js";
|
|
57
57
|
import { h as runTasksWithConcurrency } from "./session-files-CzSsU7Yu.js";
|
|
58
58
|
import { a as readNumberParam, i as jsonResult, s as readStringParam } from "./common-BHzo6lXS.js";
|
|
59
59
|
import { a as chunkByNewline, c as chunkMarkdownTextWithMode, d as resolveChunkMode, f as resolveTextChunkLimit, h as parseFenceSpans, i as resolveMarkdownTableMode, l as chunkText, m as isSafeFenceBreak, p as findFenceSpanAt, s as chunkMarkdownText, u as chunkTextWithMode } from "./ir-CWeDtRRp.js";
|
|
60
|
-
import { i as shouldHandleTextCommands, n as listChatCommandsForConfig, r as normalizeCommandBody, t as listChatCommands } from "./commands-registry-
|
|
61
|
-
import { a as stripToolMessages, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, i as sanitizeTextContent, p as resolveMainSessionAlias, r as extractAssistantText } from "./sessions-helpers-
|
|
62
|
-
import { a as formatReasoningMessage, c as promoteThinkingTagsToBlocks, f as extractTextFromChatContent, i as extractThinkingFromTaggedText, l as stripDowngradedToolCallText, n as extractAssistantThinking, o as inferToolMetaFromArgs, r as extractThinkingFromTaggedStream, s as isAssistantMessage, t as extractAssistantText$1 } from "./pi-embedded-utils-
|
|
60
|
+
import { i as shouldHandleTextCommands, n as listChatCommandsForConfig, r as normalizeCommandBody, t as listChatCommands } from "./commands-registry-UnBqSA67.js";
|
|
61
|
+
import { a as stripToolMessages, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, i as sanitizeTextContent, p as resolveMainSessionAlias, r as extractAssistantText } from "./sessions-helpers-xH-u6Byb.js";
|
|
62
|
+
import { a as formatReasoningMessage, c as promoteThinkingTagsToBlocks, f as extractTextFromChatContent, i as extractThinkingFromTaggedText, l as stripDowngradedToolCallText, n as extractAssistantThinking, o as inferToolMetaFromArgs, r as extractThinkingFromTaggedStream, s as isAssistantMessage, t as extractAssistantText$1 } from "./pi-embedded-utils-Bql42QTv.js";
|
|
63
63
|
import { n as resolveToolDisplay } from "./tool-display-DQ7I53Xn.js";
|
|
64
64
|
import { n as formatTimeAgo } from "./format-relative-Bjc3l98W.js";
|
|
65
65
|
import { n as detectSuspiciousPatterns } from "./external-content-Css-cJoz.js";
|
|
66
|
-
import { a as isTimeoutError, l as resolveWorkspaceRoot, m as minimaxUnderstandImage, n as runWithModelFallback, o as resolveFailoverReasonFromError, r as FailoverError, s as resolveFailoverStatus, u as coerceImageAssistantText } from "./model-fallback-
|
|
66
|
+
import { a as isTimeoutError, l as resolveWorkspaceRoot, m as minimaxUnderstandImage, n as runWithModelFallback, o as resolveFailoverReasonFromError, r as FailoverError, s as resolveFailoverStatus, u as coerceImageAssistantText } from "./model-fallback-DXR7ZbvM.js";
|
|
67
67
|
import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-DyZRVfXm.js";
|
|
68
68
|
import { t as fetchWithSsrFGuard } from "./fetch-guard-2x6L37KS.js";
|
|
69
69
|
import { a as fetchRemoteMedia, i as MediaFetchError, n as loadWebMedia, o as readResponseWithLimit } from "./load-DKN9eCoe.js";
|
|
70
|
-
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-
|
|
71
|
-
import { f as lookupContextTokens, o as loadSessionEntry } from "./session-utils-
|
|
72
|
-
import { a as resolveSubagentToolPolicy, c as SCOPE_DECLARED_TOOL_NAMES, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, l as isRestrictedAgent, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, s as archetypeDefault, t as filterToolsByPolicy, u as shouldForceWorkspaceOnly } from "./pi-tools.policy-
|
|
70
|
+
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-7Ew4iFgU.js";
|
|
71
|
+
import { f as lookupContextTokens, o as loadSessionEntry } from "./session-utils-DDCd8HC9.js";
|
|
72
|
+
import { a as resolveSubagentToolPolicy, c as SCOPE_DECLARED_TOOL_NAMES, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, l as isRestrictedAgent, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, s as archetypeDefault, t as filterToolsByPolicy, u as shouldForceWorkspaceOnly } from "./pi-tools.policy-DDJ31-0E.js";
|
|
73
73
|
import { t as resolveFetch } from "./fetch-79DaZarF.js";
|
|
74
74
|
import { n as fetchDiscord, t as normalizeDiscordSlug } from "./allow-list-B-j8hjG8.js";
|
|
75
75
|
import { t as createSlackWebClient } from "./client-B0alQSqy.js";
|
|
76
76
|
import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-msaEKSLt.js";
|
|
77
77
|
import { d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, v as buildSafeBinsShellCommand, y as buildSafeShellCommand } from "./exec-approvals-9-5NQEhL.js";
|
|
78
78
|
import { i as buildNodeShellCommand, n as mergePathPrepend, r as normalizePathPrepend, t as applyPathPrepend } from "./path-prepend-DJZoKorq.js";
|
|
79
|
-
import { t as callGatewayTool } from "./gateway-
|
|
80
|
-
import { r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-
|
|
79
|
+
import { t as callGatewayTool } from "./gateway-D_kwhuup.js";
|
|
80
|
+
import { r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-DVNKajNN.js";
|
|
81
81
|
import { t as formatDurationCompact$1 } from "./format-duration-DxxnRZtB.js";
|
|
82
82
|
import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-b8aNuBYW.js";
|
|
83
83
|
import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format--dK3YoXf.js";
|
|
@@ -105,6 +105,7 @@ import { Type } from "@sinclair/typebox";
|
|
|
105
105
|
import { createJiti } from "jiti";
|
|
106
106
|
import { Type as Type$1 } from "typebox";
|
|
107
107
|
import chokidar from "chokidar";
|
|
108
|
+
import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
|
|
108
109
|
import { EventEmitter } from "node:events";
|
|
109
110
|
//#region src/infra/agent-events.ts
|
|
110
111
|
const seqByRun = /* @__PURE__ */ new Map();
|
|
@@ -3060,7 +3061,7 @@ async function routeReply(params) {
|
|
|
3060
3061
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
3061
3062
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
3062
3063
|
try {
|
|
3063
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
3064
|
+
const { deliverOutboundPayloads } = await import("./deliver-BCijF1xe.js").then((n) => n.n);
|
|
3064
3065
|
return {
|
|
3065
3066
|
ok: true,
|
|
3066
3067
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -11323,6 +11324,189 @@ function buildLandlockSandboxEnv(workdir) {
|
|
|
11323
11324
|
};
|
|
11324
11325
|
}
|
|
11325
11326
|
//#endregion
|
|
11327
|
+
//#region src/agents/sandbox/tier0/router.ts
|
|
11328
|
+
/**
|
|
11329
|
+
* Tier-0 routing + interpreter-limitation heuristics.
|
|
11330
|
+
*
|
|
11331
|
+
* `shouldTryTier0` decides — cheaply, before running anything — whether a command
|
|
11332
|
+
* is a candidate for the in-process virtual sandbox. It is CONSERVATIVE: anything
|
|
11333
|
+
* that needs the network, a real runtime/toolchain, a privileged syscall, or an
|
|
11334
|
+
* external binary that lives outside the virtual command set escalates straight
|
|
11335
|
+
* to Docker. When tier-0 is tried and just-bash can't serve it, the exec result
|
|
11336
|
+
* is flagged `unsupported` (see isInterpreterLimitation) and the caller escalates.
|
|
11337
|
+
*/
|
|
11338
|
+
const ESCALATE_PATTERNS = [
|
|
11339
|
+
/\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
|
|
11340
|
+
/\b(python3?|pip3?|node|npm|pnpm|yarn|bun|deno|ruby|perl|php|cargo|rustc|go|gcc|g\+\+|cc|clang|make|cmake|java|javac|dotnet)\b/,
|
|
11341
|
+
/\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
|
|
11342
|
+
/\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
|
|
11343
|
+
/(^|\s|=)\/(dev|proc|sys)\//,
|
|
11344
|
+
/<\(|>\(/
|
|
11345
|
+
];
|
|
11346
|
+
function shouldTryTier0(command) {
|
|
11347
|
+
const cmd = command.trim();
|
|
11348
|
+
if (!cmd) return false;
|
|
11349
|
+
for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
|
|
11350
|
+
return true;
|
|
11351
|
+
}
|
|
11352
|
+
/**
|
|
11353
|
+
* Distinguish "just-bash can't do this" from "the user's command legitimately
|
|
11354
|
+
* failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
|
|
11355
|
+
* expansion (trips its own defense-in-depth `node:module` guard) and any
|
|
11356
|
+
* unimplemented builtin. These must escalate to Docker, not surface as failures.
|
|
11357
|
+
*/
|
|
11358
|
+
function isInterpreterLimitation(stderr) {
|
|
11359
|
+
if (!stderr) return false;
|
|
11360
|
+
return /security violation/i.test(stderr) || /indicates a bug in just-bash/i.test(stderr) || /\bcommand not found\b/i.test(stderr) || /not (yet )?(supported|implemented)/i.test(stderr) || /unknown command/i.test(stderr);
|
|
11361
|
+
}
|
|
11362
|
+
//#endregion
|
|
11363
|
+
//#region src/agents/sandbox/tier0/virtual-sandbox.ts
|
|
11364
|
+
/**
|
|
11365
|
+
* Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
|
|
11366
|
+
*
|
|
11367
|
+
* This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
|
|
11368
|
+
* "safe" majority of agent shell calls (string munging, fs reads/writes in the
|
|
11369
|
+
* workspace, grep/sed/jq-style pipelines) it runs the command in-process against
|
|
11370
|
+
* an in-memory shell with the real workspace dir mounted — no container spawn.
|
|
11371
|
+
*
|
|
11372
|
+
* Correctness: the agent's real workspace dir is mounted (read-write, symlink-
|
|
11373
|
+
* blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
|
|
11374
|
+
* file visibility is identical to the Docker path. `/tmp` etc. live on an
|
|
11375
|
+
* InMemoryFs base. Network and python are OFF by default (just-bash defaults).
|
|
11376
|
+
*
|
|
11377
|
+
* Anything just-bash can't serve (an unimplemented builtin, an internal error)
|
|
11378
|
+
* sets `unsupported: true`; callers MUST escalate those to the Docker backend.
|
|
11379
|
+
* See ./router.ts for the routing + interpreter-limitation heuristics.
|
|
11380
|
+
*/
|
|
11381
|
+
var Tier0VirtualSandbox = class {
|
|
11382
|
+
constructor() {
|
|
11383
|
+
this.instances = /* @__PURE__ */ new Map();
|
|
11384
|
+
}
|
|
11385
|
+
getInstance(req) {
|
|
11386
|
+
const existing = this.instances.get(req.scopeKey);
|
|
11387
|
+
if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
|
|
11388
|
+
existing.lastUsed = Date.now();
|
|
11389
|
+
return existing.bash;
|
|
11390
|
+
}
|
|
11391
|
+
const fs = new MountableFs({ base: new InMemoryFs() });
|
|
11392
|
+
fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
|
|
11393
|
+
const bash = new Bash({
|
|
11394
|
+
fs,
|
|
11395
|
+
cwd: req.workdir,
|
|
11396
|
+
env: {
|
|
11397
|
+
LANG: "C.UTF-8",
|
|
11398
|
+
...req.env
|
|
11399
|
+
},
|
|
11400
|
+
executionLimits: {
|
|
11401
|
+
maxCommandCount: 1e4,
|
|
11402
|
+
maxLoopIterations: 1e6
|
|
11403
|
+
}
|
|
11404
|
+
});
|
|
11405
|
+
const inst = {
|
|
11406
|
+
bash,
|
|
11407
|
+
workspaceHostDir: req.workspaceHostDir,
|
|
11408
|
+
workdir: req.workdir,
|
|
11409
|
+
lastUsed: Date.now()
|
|
11410
|
+
};
|
|
11411
|
+
this.instances.set(req.scopeKey, inst);
|
|
11412
|
+
return bash;
|
|
11413
|
+
}
|
|
11414
|
+
async exec(req) {
|
|
11415
|
+
const startedAt = Date.now();
|
|
11416
|
+
let bash;
|
|
11417
|
+
try {
|
|
11418
|
+
bash = this.getInstance(req);
|
|
11419
|
+
} catch {
|
|
11420
|
+
return {
|
|
11421
|
+
status: "failed",
|
|
11422
|
+
exitCode: null,
|
|
11423
|
+
durationMs: Date.now() - startedAt,
|
|
11424
|
+
aggregated: "",
|
|
11425
|
+
timedOut: false,
|
|
11426
|
+
unsupported: true
|
|
11427
|
+
};
|
|
11428
|
+
}
|
|
11429
|
+
try {
|
|
11430
|
+
const result = await withTimeout$2(bash.exec(req.command, {
|
|
11431
|
+
cwd: req.workdir,
|
|
11432
|
+
env: req.env
|
|
11433
|
+
}), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
|
|
11434
|
+
const durationMs = Date.now() - startedAt;
|
|
11435
|
+
const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
|
|
11436
|
+
if (result.exitCode === 0) return {
|
|
11437
|
+
status: "completed",
|
|
11438
|
+
exitCode: 0,
|
|
11439
|
+
durationMs,
|
|
11440
|
+
aggregated: combined,
|
|
11441
|
+
timedOut: false,
|
|
11442
|
+
unsupported: false
|
|
11443
|
+
};
|
|
11444
|
+
return {
|
|
11445
|
+
status: "failed",
|
|
11446
|
+
exitCode: result.exitCode,
|
|
11447
|
+
durationMs,
|
|
11448
|
+
aggregated: combined,
|
|
11449
|
+
timedOut: false,
|
|
11450
|
+
unsupported: isInterpreterLimitation(result.stderr)
|
|
11451
|
+
};
|
|
11452
|
+
} catch (err) {
|
|
11453
|
+
const timedOut = err instanceof TimeoutError;
|
|
11454
|
+
return {
|
|
11455
|
+
status: "failed",
|
|
11456
|
+
exitCode: null,
|
|
11457
|
+
durationMs: Date.now() - startedAt,
|
|
11458
|
+
aggregated: "",
|
|
11459
|
+
timedOut,
|
|
11460
|
+
unsupported: !timedOut
|
|
11461
|
+
};
|
|
11462
|
+
}
|
|
11463
|
+
}
|
|
11464
|
+
dispose(scopeKey) {
|
|
11465
|
+
if (scopeKey) this.instances.delete(scopeKey);
|
|
11466
|
+
else this.instances.clear();
|
|
11467
|
+
}
|
|
11468
|
+
/** test/inspection helper */
|
|
11469
|
+
get liveInstances() {
|
|
11470
|
+
return this.instances.size;
|
|
11471
|
+
}
|
|
11472
|
+
};
|
|
11473
|
+
var TimeoutError = class extends Error {};
|
|
11474
|
+
function withTimeout$2(p, ms) {
|
|
11475
|
+
if (!ms) return p;
|
|
11476
|
+
return new Promise((resolve, reject) => {
|
|
11477
|
+
const timer = setTimeout(() => reject(new TimeoutError()), ms);
|
|
11478
|
+
p.then((value) => {
|
|
11479
|
+
clearTimeout(timer);
|
|
11480
|
+
resolve(value);
|
|
11481
|
+
}, (error) => {
|
|
11482
|
+
clearTimeout(timer);
|
|
11483
|
+
reject(error);
|
|
11484
|
+
});
|
|
11485
|
+
});
|
|
11486
|
+
}
|
|
11487
|
+
//#endregion
|
|
11488
|
+
//#region src/agents/sandbox/tier0/registry.ts
|
|
11489
|
+
let singleton$1;
|
|
11490
|
+
function getTier0Sandbox() {
|
|
11491
|
+
if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
|
|
11492
|
+
return singleton$1;
|
|
11493
|
+
}
|
|
11494
|
+
/**
|
|
11495
|
+
* Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
|
|
11496
|
+
* path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
|
|
11497
|
+
* Docker container too), so tier-0 sees the same files.
|
|
11498
|
+
*/
|
|
11499
|
+
function resolveTier0Binding(params) {
|
|
11500
|
+
if (!params.workspaceHostDir) return;
|
|
11501
|
+
const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
|
|
11502
|
+
if (!sandboxCfg.tier0.enabled) return;
|
|
11503
|
+
if (sandboxCfg.workspaceAccess === "ro") return;
|
|
11504
|
+
return {
|
|
11505
|
+
backend: getTier0Sandbox(),
|
|
11506
|
+
workspaceHostDir: params.workspaceHostDir
|
|
11507
|
+
};
|
|
11508
|
+
}
|
|
11509
|
+
//#endregion
|
|
11326
11510
|
//#region src/infra/heartbeat-reason.ts
|
|
11327
11511
|
function trimReason(reason) {
|
|
11328
11512
|
return typeof reason === "string" ? reason.trim() : "";
|
|
@@ -12523,10 +12707,112 @@ function emitExecSystemEvent(text, opts) {
|
|
|
12523
12707
|
});
|
|
12524
12708
|
requestHeartbeatNow({ reason: "exec-event" });
|
|
12525
12709
|
}
|
|
12710
|
+
/**
|
|
12711
|
+
* Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
|
|
12712
|
+
* a completed ExecProcessHandle on success, or null when just-bash can't serve
|
|
12713
|
+
* the command (so the caller escalates to Docker). Output is sanitized and a
|
|
12714
|
+
* ProcessSession is registered exactly like the normal path, so downstream
|
|
12715
|
+
* session listing / tailing is unaffected.
|
|
12716
|
+
*/
|
|
12717
|
+
async function tryTier0Exec(args) {
|
|
12718
|
+
const { opts, sessionId, startedAt, execCommand } = args;
|
|
12719
|
+
const tier0 = opts.tier0;
|
|
12720
|
+
const sandbox = opts.sandbox;
|
|
12721
|
+
if (!tier0 || !sandbox) return null;
|
|
12722
|
+
const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
|
|
12723
|
+
let outcome;
|
|
12724
|
+
try {
|
|
12725
|
+
outcome = await tier0.backend.exec({
|
|
12726
|
+
command: execCommand,
|
|
12727
|
+
workdir,
|
|
12728
|
+
workspaceHostDir: tier0.workspaceHostDir,
|
|
12729
|
+
env: opts.env,
|
|
12730
|
+
scopeKey: sandbox.containerName,
|
|
12731
|
+
timeoutSec: opts.timeoutSec
|
|
12732
|
+
});
|
|
12733
|
+
} catch {
|
|
12734
|
+
return null;
|
|
12735
|
+
}
|
|
12736
|
+
if (outcome.unsupported) return null;
|
|
12737
|
+
const session = {
|
|
12738
|
+
id: sessionId,
|
|
12739
|
+
command: opts.command,
|
|
12740
|
+
scopeKey: opts.scopeKey,
|
|
12741
|
+
sessionKey: opts.sessionKey,
|
|
12742
|
+
notifyOnExit: opts.notifyOnExit,
|
|
12743
|
+
notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
|
|
12744
|
+
exitNotified: false,
|
|
12745
|
+
child: void 0,
|
|
12746
|
+
stdin: void 0,
|
|
12747
|
+
pid: void 0,
|
|
12748
|
+
startedAt,
|
|
12749
|
+
cwd: opts.workdir,
|
|
12750
|
+
maxOutputChars: opts.maxOutput,
|
|
12751
|
+
pendingMaxOutputChars: opts.pendingMaxOutput,
|
|
12752
|
+
totalOutputChars: 0,
|
|
12753
|
+
pendingStdout: [],
|
|
12754
|
+
pendingStderr: [],
|
|
12755
|
+
pendingStdoutChars: 0,
|
|
12756
|
+
pendingStderrChars: 0,
|
|
12757
|
+
aggregated: "",
|
|
12758
|
+
tail: "",
|
|
12759
|
+
exited: false,
|
|
12760
|
+
exitCode: void 0,
|
|
12761
|
+
exitSignal: void 0,
|
|
12762
|
+
truncated: false,
|
|
12763
|
+
backgrounded: false
|
|
12764
|
+
};
|
|
12765
|
+
addSession(session);
|
|
12766
|
+
const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
|
|
12767
|
+
for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
|
|
12768
|
+
const status = outcome.status === "completed" ? "completed" : "failed";
|
|
12769
|
+
markExited(session, outcome.exitCode ?? 0, null, status);
|
|
12770
|
+
const durationMs = Date.now() - startedAt;
|
|
12771
|
+
const aggregated = session.aggregated.trim();
|
|
12772
|
+
let result;
|
|
12773
|
+
if (status === "completed") {
|
|
12774
|
+
const exitCode = outcome.exitCode ?? 0;
|
|
12775
|
+
result = {
|
|
12776
|
+
status: "completed",
|
|
12777
|
+
exitCode,
|
|
12778
|
+
exitSignal: null,
|
|
12779
|
+
durationMs,
|
|
12780
|
+
aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
|
|
12781
|
+
timedOut: false
|
|
12782
|
+
};
|
|
12783
|
+
} else {
|
|
12784
|
+
const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
|
|
12785
|
+
result = {
|
|
12786
|
+
status: "failed",
|
|
12787
|
+
exitCode: outcome.exitCode,
|
|
12788
|
+
exitSignal: null,
|
|
12789
|
+
durationMs,
|
|
12790
|
+
aggregated,
|
|
12791
|
+
timedOut: outcome.timedOut,
|
|
12792
|
+
reason: aggregated ? `${aggregated}\n\n${reason}` : reason
|
|
12793
|
+
};
|
|
12794
|
+
}
|
|
12795
|
+
return {
|
|
12796
|
+
session,
|
|
12797
|
+
startedAt,
|
|
12798
|
+
pid: void 0,
|
|
12799
|
+
promise: Promise.resolve(result),
|
|
12800
|
+
kill: () => {}
|
|
12801
|
+
};
|
|
12802
|
+
}
|
|
12526
12803
|
async function runExecProcess(opts) {
|
|
12527
12804
|
const startedAt = Date.now();
|
|
12528
12805
|
const sessionId = createSessionSlug();
|
|
12529
12806
|
const execCommand = opts.execCommand ?? opts.command;
|
|
12807
|
+
if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
|
|
12808
|
+
const tier0Handle = await tryTier0Exec({
|
|
12809
|
+
opts,
|
|
12810
|
+
sessionId,
|
|
12811
|
+
startedAt,
|
|
12812
|
+
execCommand
|
|
12813
|
+
});
|
|
12814
|
+
if (tier0Handle) return tier0Handle;
|
|
12815
|
+
}
|
|
12530
12816
|
const supervisor = getProcessSupervisor();
|
|
12531
12817
|
const session = {
|
|
12532
12818
|
id: sessionId,
|
|
@@ -13306,7 +13592,11 @@ function createExecTool(defaults) {
|
|
|
13306
13592
|
scopeKey: defaults?.scopeKey,
|
|
13307
13593
|
sessionKey: notifySessionKey,
|
|
13308
13594
|
timeoutSec: effectiveTimeout,
|
|
13309
|
-
onUpdate
|
|
13595
|
+
onUpdate,
|
|
13596
|
+
tier0: sandbox ? resolveTier0Binding({
|
|
13597
|
+
agentId,
|
|
13598
|
+
workspaceHostDir: sandbox.workspaceDir
|
|
13599
|
+
}) : void 0
|
|
13310
13600
|
});
|
|
13311
13601
|
let yielded = false;
|
|
13312
13602
|
let yieldTimer = null;
|
|
@@ -15973,11 +16263,12 @@ const AGENT_TYPE_SECTIONS = [
|
|
|
15973
16263
|
if (!trimmed) return [];
|
|
15974
16264
|
return [
|
|
15975
16265
|
"## Skills (mandatory)",
|
|
15976
|
-
"Before replying: scan <available_skills>
|
|
15977
|
-
|
|
15978
|
-
"- If multiple could apply: choose the most specific one, then
|
|
15979
|
-
"- If none clearly apply: do not
|
|
15980
|
-
|
|
16266
|
+
"Before replying: scan the <available_skills> entries.",
|
|
16267
|
+
"- If exactly one skill clearly applies: load its full instructions, then follow it.",
|
|
16268
|
+
"- If multiple could apply: choose the most specific one, then load/follow it.",
|
|
16269
|
+
"- If none clearly apply: do not load any skill.",
|
|
16270
|
+
`To load a skill's full instructions: if they aren't already shown, call the \`skill_view\` tool with the skill name; otherwise read its SKILL.md at <location> with \`${ctx.readToolName}\`.`,
|
|
16271
|
+
"Constraints: never load more than one skill up front; only load after selecting.",
|
|
15981
16272
|
trimmed,
|
|
15982
16273
|
""
|
|
15983
16274
|
];
|
|
@@ -16122,6 +16413,40 @@ const AGENT_TYPE_SECTIONS = [
|
|
|
16122
16413
|
}
|
|
16123
16414
|
];
|
|
16124
16415
|
//#endregion
|
|
16416
|
+
//#region src/agents/sections/behaviour.ts
|
|
16417
|
+
/**
|
|
16418
|
+
* Identity-layer section that injects the agent's self-maintained operating
|
|
16419
|
+
* rules. The rules live at `<workspaceDir>/prompts/behaviour.md` and are
|
|
16420
|
+
* written by the `update_behaviour` tool. There is intentionally no global
|
|
16421
|
+
* fallback file — the section renders nothing unless the agent has authored
|
|
16422
|
+
* its own behaviour.md.
|
|
16423
|
+
*/
|
|
16424
|
+
const BEHAVIOUR_SECTIONS = [{
|
|
16425
|
+
id: "behaviour",
|
|
16426
|
+
layer: "identity",
|
|
16427
|
+
order: 2200,
|
|
16428
|
+
modes: ["full", "minimal"],
|
|
16429
|
+
cacheable: false,
|
|
16430
|
+
header: "## Operating Rules (self-maintained)",
|
|
16431
|
+
source: "file",
|
|
16432
|
+
render: (ctx) => {
|
|
16433
|
+
const workspaceDir = ctx.params.workspaceDir;
|
|
16434
|
+
if (!workspaceDir) return [];
|
|
16435
|
+
const content = resolveProse({
|
|
16436
|
+
layer: "identity",
|
|
16437
|
+
id: "behaviour",
|
|
16438
|
+
agentWorkspaceDir: workspaceDir
|
|
16439
|
+
})?.content.trim();
|
|
16440
|
+
if (!content) return [];
|
|
16441
|
+
return [
|
|
16442
|
+
"## Operating Rules (self-maintained)",
|
|
16443
|
+
"",
|
|
16444
|
+
content,
|
|
16445
|
+
""
|
|
16446
|
+
];
|
|
16447
|
+
}
|
|
16448
|
+
}];
|
|
16449
|
+
//#endregion
|
|
16125
16450
|
//#region src/agents/sections/identity.ts
|
|
16126
16451
|
/** Identity-layer section definitions (3 sections). */
|
|
16127
16452
|
const IDENTITY_SECTIONS = [
|
|
@@ -17137,6 +17462,7 @@ function getBuiltinRegistry() {
|
|
|
17137
17462
|
_registry.registerAll(PLATFORM_SECTIONS);
|
|
17138
17463
|
_registry.registerAll(AGENT_TYPE_SECTIONS);
|
|
17139
17464
|
_registry.registerAll(IDENTITY_SECTIONS);
|
|
17465
|
+
_registry.registerAll(BEHAVIOUR_SECTIONS);
|
|
17140
17466
|
_registry.registerAll(USER_SECTIONS);
|
|
17141
17467
|
_registry.registerAll(SESSION_SECTIONS);
|
|
17142
17468
|
return _registry;
|
|
@@ -23063,7 +23389,7 @@ const TOOL_REGISTRY = {
|
|
|
23063
23389
|
},
|
|
23064
23390
|
contextKeys: ["agentSessionKey"]
|
|
23065
23391
|
},
|
|
23066
|
-
load: () => import("./cron-tool-
|
|
23392
|
+
load: () => import("./cron-tool-Dcr3QMih.js")
|
|
23067
23393
|
},
|
|
23068
23394
|
"gateway": {
|
|
23069
23395
|
meta: {
|
|
@@ -23080,7 +23406,7 @@ const TOOL_REGISTRY = {
|
|
|
23080
23406
|
},
|
|
23081
23407
|
contextKeys: ["agentSessionKey", "config"]
|
|
23082
23408
|
},
|
|
23083
|
-
load: () => import("./gateway-tool-
|
|
23409
|
+
load: () => import("./gateway-tool-Bi96OPGe.js")
|
|
23084
23410
|
},
|
|
23085
23411
|
"crm_search": {
|
|
23086
23412
|
meta: {
|
|
@@ -23146,7 +23472,7 @@ const TOOL_REGISTRY = {
|
|
|
23146
23472
|
],
|
|
23147
23473
|
condition: "hasAgentDir"
|
|
23148
23474
|
},
|
|
23149
|
-
load: () => import("./image-tool-
|
|
23475
|
+
load: () => import("./image-tool-D_dhIXLT.js")
|
|
23150
23476
|
},
|
|
23151
23477
|
"tts": {
|
|
23152
23478
|
meta: {
|
|
@@ -23160,7 +23486,7 @@ const TOOL_REGISTRY = {
|
|
|
23160
23486
|
},
|
|
23161
23487
|
contextKeys: ["agentChannel", "config"]
|
|
23162
23488
|
},
|
|
23163
|
-
load: () => import("./tts-tool-
|
|
23489
|
+
load: () => import("./tts-tool-CdaKVWBM.js")
|
|
23164
23490
|
},
|
|
23165
23491
|
"message": {
|
|
23166
23492
|
meta: {
|
|
@@ -23418,7 +23744,7 @@ const TOOL_REGISTRY = {
|
|
|
23418
23744
|
],
|
|
23419
23745
|
condition: "messageEnabled"
|
|
23420
23746
|
},
|
|
23421
|
-
load: () => import("./message-tool-
|
|
23747
|
+
load: () => import("./message-tool-GTRrYMuR.js")
|
|
23422
23748
|
},
|
|
23423
23749
|
"agents_list": {
|
|
23424
23750
|
meta: {
|
|
@@ -23432,7 +23758,7 @@ const TOOL_REGISTRY = {
|
|
|
23432
23758
|
},
|
|
23433
23759
|
contextKeys: ["agentSessionKey", "requesterAgentIdOverride"]
|
|
23434
23760
|
},
|
|
23435
|
-
load: () => import("./agents-list-tool-
|
|
23761
|
+
load: () => import("./agents-list-tool-CzUTgXov.js")
|
|
23436
23762
|
},
|
|
23437
23763
|
"architect_pipeline": {
|
|
23438
23764
|
meta: {
|
|
@@ -23518,7 +23844,7 @@ const TOOL_REGISTRY = {
|
|
|
23518
23844
|
},
|
|
23519
23845
|
contextKeys: ["agentSessionKey", "config"]
|
|
23520
23846
|
},
|
|
23521
|
-
load: () => import("./nodes-tool-
|
|
23847
|
+
load: () => import("./nodes-tool-BkgixWxk.js")
|
|
23522
23848
|
},
|
|
23523
23849
|
"venture_studio": {
|
|
23524
23850
|
meta: {
|
|
@@ -23546,7 +23872,7 @@ const TOOL_REGISTRY = {
|
|
|
23546
23872
|
},
|
|
23547
23873
|
contextKeys: ["agentSessionKey", "config"]
|
|
23548
23874
|
},
|
|
23549
|
-
load: () => import("./session-status-tool-
|
|
23875
|
+
load: () => import("./session-status-tool-CtbF1-VI.js")
|
|
23550
23876
|
},
|
|
23551
23877
|
"sessions_history": {
|
|
23552
23878
|
meta: {
|
|
@@ -23564,7 +23890,7 @@ const TOOL_REGISTRY = {
|
|
|
23564
23890
|
},
|
|
23565
23891
|
contextKeys: ["agentSessionKey", "sandboxed"]
|
|
23566
23892
|
},
|
|
23567
|
-
load: () => import("./sessions-history-tool-
|
|
23893
|
+
load: () => import("./sessions-history-tool-DKXNjv5X.js")
|
|
23568
23894
|
},
|
|
23569
23895
|
"sessions_list": {
|
|
23570
23896
|
meta: {
|
|
@@ -23583,7 +23909,7 @@ const TOOL_REGISTRY = {
|
|
|
23583
23909
|
},
|
|
23584
23910
|
contextKeys: ["agentSessionKey", "sandboxed"]
|
|
23585
23911
|
},
|
|
23586
|
-
load: () => import("./sessions-list-tool-
|
|
23912
|
+
load: () => import("./sessions-list-tool-6DJtypdD.js")
|
|
23587
23913
|
},
|
|
23588
23914
|
"sessions_send": {
|
|
23589
23915
|
meta: {
|
|
@@ -23606,7 +23932,7 @@ const TOOL_REGISTRY = {
|
|
|
23606
23932
|
"sandboxed"
|
|
23607
23933
|
]
|
|
23608
23934
|
},
|
|
23609
|
-
load: () => import("./sessions-send-tool-
|
|
23935
|
+
load: () => import("./sessions-send-tool-C3ggqtMe.js")
|
|
23610
23936
|
},
|
|
23611
23937
|
"sessions_spawn": {
|
|
23612
23938
|
meta: {
|
|
@@ -23639,7 +23965,7 @@ const TOOL_REGISTRY = {
|
|
|
23639
23965
|
"requesterAgentIdOverride"
|
|
23640
23966
|
]
|
|
23641
23967
|
},
|
|
23642
|
-
load: () => import("./sessions-spawn-tool-
|
|
23968
|
+
load: () => import("./sessions-spawn-tool-BgkkNWMg.js")
|
|
23643
23969
|
},
|
|
23644
23970
|
"subagents": {
|
|
23645
23971
|
meta: {
|
|
@@ -23666,7 +23992,7 @@ const TOOL_REGISTRY = {
|
|
|
23666
23992
|
},
|
|
23667
23993
|
contextKeys: ["agentSessionKey"]
|
|
23668
23994
|
},
|
|
23669
|
-
load: () => import("./subagents-tool-
|
|
23995
|
+
load: () => import("./subagents-tool-BdWYv7Mb.js")
|
|
23670
23996
|
},
|
|
23671
23997
|
"browser": {
|
|
23672
23998
|
meta: {
|
|
@@ -23756,7 +24082,7 @@ const TOOL_REGISTRY = {
|
|
|
23756
24082
|
},
|
|
23757
24083
|
contextKeys: ["sandboxBrowserBridgeUrl", "allowHostBrowserControl"]
|
|
23758
24084
|
},
|
|
23759
|
-
load: () => import("./browser-tool-
|
|
24085
|
+
load: () => import("./browser-tool-BVAlCkv9.js")
|
|
23760
24086
|
},
|
|
23761
24087
|
"canvas": {
|
|
23762
24088
|
meta: {
|
|
@@ -23819,7 +24145,7 @@ const TOOL_REGISTRY = {
|
|
|
23819
24145
|
},
|
|
23820
24146
|
contextKeys: ["config"]
|
|
23821
24147
|
},
|
|
23822
|
-
load: () => import("./canvas-tool-
|
|
24148
|
+
load: () => import("./canvas-tool-C8kJ8X6t.js")
|
|
23823
24149
|
},
|
|
23824
24150
|
"web_fetch": {
|
|
23825
24151
|
meta: {
|
|
@@ -23851,7 +24177,7 @@ const TOOL_REGISTRY = {
|
|
|
23851
24177
|
},
|
|
23852
24178
|
contextKeys: ["config", "sandboxed"]
|
|
23853
24179
|
},
|
|
23854
|
-
load: () => import("./web-search-
|
|
24180
|
+
load: () => import("./web-search-CCeGZMBD.js")
|
|
23855
24181
|
}
|
|
23856
24182
|
};
|
|
23857
24183
|
//#endregion
|
|
@@ -28011,7 +28337,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
28011
28337
|
return;
|
|
28012
28338
|
}
|
|
28013
28339
|
try {
|
|
28014
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
28340
|
+
const { deliverOutboundPayloads } = await import("./deliver-BCijF1xe.js").then((n) => n.n);
|
|
28015
28341
|
await deliverOutboundPayloads({
|
|
28016
28342
|
cfg: params.cfg,
|
|
28017
28343
|
channel,
|
|
@@ -34130,7 +34456,7 @@ function guardSessionManager(sessionManager, opts) {
|
|
|
34130
34456
|
//#region src/agents/pi-embedded-runner/compaction-safety-timeout.ts
|
|
34131
34457
|
const EMBEDDED_COMPACTION_TIMEOUT_MS = 3e5;
|
|
34132
34458
|
async function compactWithSafetyTimeout(compact, timeoutMs = EMBEDDED_COMPACTION_TIMEOUT_MS) {
|
|
34133
|
-
return await withTimeout$
|
|
34459
|
+
return await withTimeout$3(() => compact(), timeoutMs, "Compaction");
|
|
34134
34460
|
}
|
|
34135
34461
|
//#endregion
|
|
34136
34462
|
//#region src/agents/pi-extensions/session-manager-runtime-registry.ts
|
|
@@ -36858,6 +37184,13 @@ function resolvePrivacyModeOverride(currentProvider, currentModelId) {
|
|
|
36858
37184
|
//#region src/agents/pi-embedded-runner/lifecycle-hooks.ts
|
|
36859
37185
|
const hookRegistry = /* @__PURE__ */ new Map();
|
|
36860
37186
|
/**
|
|
37187
|
+
* Register lifecycle hooks for a plugin.
|
|
37188
|
+
* Replaces any previously registered hooks for the same pluginId.
|
|
37189
|
+
*/
|
|
37190
|
+
function registerLifecycleHooks(pluginId, hooks) {
|
|
37191
|
+
hookRegistry.set(pluginId, hooks);
|
|
37192
|
+
}
|
|
37193
|
+
/**
|
|
36861
37194
|
* Fire preLlmCall hooks in registration order.
|
|
36862
37195
|
* If any hook returns a modified context, subsequent hooks receive the modified version.
|
|
36863
37196
|
* Errors in individual hooks are caught and logged (never block the LLM call).
|
|
@@ -40106,6 +40439,35 @@ async function prepareSessionManagerForRun(params) {
|
|
|
40106
40439
|
}
|
|
40107
40440
|
}
|
|
40108
40441
|
//#endregion
|
|
40442
|
+
//#region src/agents/pi-embedded-runner/tool-result-reduce.ts
|
|
40443
|
+
/** Pure text reducer for oversized/repetitive tool output. Never throws. */
|
|
40444
|
+
function reduceToolOutputText(text, opts) {
|
|
40445
|
+
let lines = text.split("\n");
|
|
40446
|
+
if (opts.collapseRuns) {
|
|
40447
|
+
const collapsed = [];
|
|
40448
|
+
let i = 0;
|
|
40449
|
+
while (i < lines.length) {
|
|
40450
|
+
let j = i + 1;
|
|
40451
|
+
while (j < lines.length && lines[j] === lines[i]) j += 1;
|
|
40452
|
+
const run = j - i;
|
|
40453
|
+
if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
|
|
40454
|
+
else for (let k = i; k < j; k++) collapsed.push(lines[k]);
|
|
40455
|
+
i = j;
|
|
40456
|
+
}
|
|
40457
|
+
lines = collapsed;
|
|
40458
|
+
}
|
|
40459
|
+
if (lines.length <= opts.maxLines) return lines.join("\n");
|
|
40460
|
+
if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
|
|
40461
|
+
const head = lines.slice(0, opts.headLines);
|
|
40462
|
+
const tail = lines.slice(lines.length - opts.tailLines);
|
|
40463
|
+
const elided = lines.length - head.length - tail.length;
|
|
40464
|
+
return [
|
|
40465
|
+
...head,
|
|
40466
|
+
`… ${elided} lines elided …`,
|
|
40467
|
+
...tail
|
|
40468
|
+
].join("\n");
|
|
40469
|
+
}
|
|
40470
|
+
//#endregion
|
|
40109
40471
|
//#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
|
|
40110
40472
|
const CHARS_PER_TOKEN_ESTIMATE = 4;
|
|
40111
40473
|
const CONTEXT_INPUT_HEADROOM_RATIO = .75;
|
|
@@ -40248,8 +40610,31 @@ function applyMessageMutationInPlace(target, source) {
|
|
|
40248
40610
|
for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
|
|
40249
40611
|
Object.assign(targetRecord, sourceRecord);
|
|
40250
40612
|
}
|
|
40613
|
+
const REDUCE_MAX_LINES = 200;
|
|
40614
|
+
const REDUCE_HEAD_LINES = 40;
|
|
40615
|
+
const REDUCE_TAIL_LINES = 40;
|
|
40616
|
+
/**
|
|
40617
|
+
* Run the pure line-reducer over each tool-result message's text content,
|
|
40618
|
+
* mutating messages in place. Skips reductions that wouldn't shrink the text.
|
|
40619
|
+
*/
|
|
40620
|
+
function reduceToolResultOutputsInPlace(messages) {
|
|
40621
|
+
for (const message of messages) {
|
|
40622
|
+
if (!isToolResultMessage(message)) continue;
|
|
40623
|
+
const rawText = getToolResultText(message);
|
|
40624
|
+
if (!rawText) continue;
|
|
40625
|
+
const reduced = reduceToolOutputText(rawText, {
|
|
40626
|
+
maxLines: REDUCE_MAX_LINES,
|
|
40627
|
+
headLines: REDUCE_HEAD_LINES,
|
|
40628
|
+
tailLines: REDUCE_TAIL_LINES,
|
|
40629
|
+
collapseRuns: true
|
|
40630
|
+
});
|
|
40631
|
+
if (reduced === rawText) continue;
|
|
40632
|
+
applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
|
|
40633
|
+
}
|
|
40634
|
+
}
|
|
40251
40635
|
function enforceToolResultContextBudgetInPlace(params) {
|
|
40252
|
-
const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
|
|
40636
|
+
const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
|
|
40637
|
+
if (reduceOutput) reduceToolResultOutputsInPlace(messages);
|
|
40253
40638
|
for (const message of messages) {
|
|
40254
40639
|
if (!isToolResultMessage(message)) continue;
|
|
40255
40640
|
applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
|
|
@@ -40271,6 +40656,7 @@ function enforceToolResultContextBudgetInPlace(params) {
|
|
|
40271
40656
|
* @returns An async function suitable for use as Agent's transformContext callback.
|
|
40272
40657
|
*/
|
|
40273
40658
|
function createToolResultContextGuardTransform(params) {
|
|
40659
|
+
const reduceOutput = params.reduceOutput !== false;
|
|
40274
40660
|
const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
|
|
40275
40661
|
const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
|
|
40276
40662
|
const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
|
|
@@ -40281,7 +40667,8 @@ function createToolResultContextGuardTransform(params) {
|
|
|
40281
40667
|
enforceToolResultContextBudgetInPlace({
|
|
40282
40668
|
messages: contextMessages,
|
|
40283
40669
|
contextBudgetChars,
|
|
40284
|
-
maxSingleToolResultChars
|
|
40670
|
+
maxSingleToolResultChars,
|
|
40671
|
+
reduceOutput
|
|
40285
40672
|
});
|
|
40286
40673
|
return contextMessages;
|
|
40287
40674
|
};
|
|
@@ -40377,7 +40764,10 @@ async function createRunSession(params, env) {
|
|
|
40377
40764
|
applySystemPromptOverrideToSession(session, env.systemPromptText);
|
|
40378
40765
|
if (!session) throw new Error("Embedded agent session missing");
|
|
40379
40766
|
const activeSession = session;
|
|
40380
|
-
const contextGuardTransform = createToolResultContextGuardTransform({
|
|
40767
|
+
const contextGuardTransform = createToolResultContextGuardTransform({
|
|
40768
|
+
contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
|
|
40769
|
+
reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
|
|
40770
|
+
});
|
|
40381
40771
|
activeSession.agent.transformContext = contextGuardTransform;
|
|
40382
40772
|
const cacheTrace = createCacheTrace({
|
|
40383
40773
|
cfg: params.config,
|
|
@@ -43610,4 +44000,4 @@ function initSubagentRegistry() {
|
|
|
43610
44000
|
restoreSubagentRunsOnce();
|
|
43611
44001
|
}
|
|
43612
44002
|
//#endregion
|
|
43613
|
-
export {
|
|
44003
|
+
export { debugStepContinue as $, resolveEffectiveMessagesConfig as $n, removeRemoteNodeInfo as $t, loadMinionPlugins as A, installUnhandledRejectionHandler as An, resolveUserContext as At, createReplyDispatcher as B, transcribeOpenAiCompatibleAudio as Bn, formatChannelAllowFrom as Bt, readConsolidationState as C, applyModelOverrideToSessionEntry as Cn, loadProviderUsageSummary as Ct, buildDefaultToolPolicyPipelineSteps as D, isSystemEventContextChanged as Dn, resolveModelAuthLabel as Dt, applyToolPolicyPipeline as E, enqueueSystemEvent as En, resolveUsageProviderId as Et, markSynced as F, extractFileContentFromSource as Fn, _clearProseCache as Ft, BARE_SESSION_RESET_PROMPT as G, isAbortTrigger as Gn, resolveHeartbeatReasonKind as Gt, sanitizeOutboundText as H, formatUserTime as Hn, resolveCommitHash as Ht, openMessageLedger as I, extractImageContentFromSource as In, buildSystemPromptParams as It, getCliSessionId as J, getFollowupQueueDepth as Jn, getRemoteSkillEligibility as Jt, appendCronStyleCurrentTimeLine as K, stopSubagentsForRequester as Kn, normalizeSendPolicy as Kt, patchRouting as L, normalizeMimeList as Ln, buildSystemPromptReport as Lt, claimBatch as M, DEFAULT_INPUT_IMAGE_MAX_BYTES as Mn, buildToolSummaryMap as Mt, closeMessageLedger as N, DEFAULT_INPUT_IMAGE_MIMES as Nn, PromptSectionRegistry as Nt, getPluginToolMeta as O, peekSystemEventEntries as On, assembleAgentSystemPromptWithSections as Ot, markFailed as P, DEFAULT_INPUT_TIMEOUT_MS as Pn, PROSE_GLOBAL_ROOT as Pt, debugSkipAll as Q, resolveAgentIdentity as Qn, refreshRemoteNodeBins as Qt, record as R, resolveInputFileLimits as Rn, buildChannelSummary as Rt, openInFlightTurnsStore as S, formatRemainingShort as Sn, normalizeGroupActivation as St, sniffMimeFromBase64 as T, parseVerboseOverride as Tn, formatUsageWindowSummary as Tt, createDedupeCache as U, resolveUserTimeFormat as Un, requestHeartbeatNow as Ut, getTotalPendingReplies as V, formatZonedTimestamp as Vn, buildStatusMessage as Vt, getReplyFromConfig as W, resolveUserTimezone as Wn, setHeartbeatWakeHandler as Wt, runCliAgent as X, clearSessionQueues as Xn, recordRemoteNodeInfo as Xt, setCliSessionId as Y, extractShortModelName as Yn, primeRemoteSkillsCache as Yt, sha256HexPrefix as Z, CURRENT_MESSAGE_MARKER as Zn, refreshRemoteBinsForConnectedNodes as Zt, deleteRow as _, registerSkillsChangeListener as _n, validateTemplate as _t, listSubagentRunsForRequester as a, requestNodePairing as an, resetAllLanes as ar, formatDurationCompact as at, markInterrupted as b, DEFAULT_OAUTH_WARN_MS as bn, resolveSubagentTargetFromRuns as bt, replaceSubagentRunAfterSteer as c, generatePairingToken as cn, resolveAgentTimeoutMs as cr, truncateLine as ct, abortEmbeddedPiRun as d, pruneExpiredPending as dn, getAgentRunContext as dr, getTemplate as dt, setSkillsRemoteRegistry as en, resolveIdentityName as er, isSteppedBuildEnabled as et, getActiveEmbeddedRunCount as f, resolvePairingPaths as fn, onAgentEvent as fr, getTemplateCache as ft, closeInFlightTurnsStore as g, getSkillsSnapshotVersion as gn, stopTemplateWatcher as gt, registerLifecycleHooks as h, createAsyncLock as hn, initTemplateLoader as ht, listDescendantRunsForRequester as i, renamePairedNode as in, getTotalQueueSize as ir, TOOL_REGISTRY as it, loadOpenClawPlugins as j, registerUnhandledRejectionHandler as jn, buildSectionRenderContext as jt, createPluginLoaderLogger as k, peekSystemEvents as kn, getBuiltinSectionRegistry as kt, runSubagentAnnounceFlow as l, hashToken as ln, clearAgentRunContext as lr, spawnSubagentDirect as lt, waitForEmbeddedPiRunEnd as m, writeJsonAtomic as mn, getTemplateUsageStats as mt, countActiveDescendantRuns as n, listNodePairing as nn, getActiveTaskCount as nr, setSteppedBuild as nt, markSubagentRunForSteerRestart as o, updatePairedNodeMetadata as on, setCommandLaneConcurrency as or, formatTokenUsageDisplay as ot, queueEmbeddedPiMessage as p, readJsonFile as pn, registerAgentRunContext as pr, getTemplateLoadErrors as pt, resolveCronStyleNow as q, resolveQueueSettings as qn, resolveSendPolicy as qt, initSubagentRegistry as r, rejectNodePairing as rn, getQueueSize as rr, createOpenClawTools as rt, markSubagentRunTerminated as s, verifyNodeToken as sn, waitForActiveTasks as sr, resolveTotalTokens as st, clearSubagentRunSteerRestart as t, approveNodePairing as tn, resolveBootstrapContextForRun as tr, setDebugStepBroadcaster as tt, runEmbeddedPiAgent as u, verifyPairingToken as un, emitAgentEvent as ur, getLastReloadAt as ut, listForCurrentInstance as v, clearSessionAuthProfileOverride as vn, getSubagentDepthFromSessionStore as vt, createOpenClawCodingTools as w, applyVerboseOverride as wn, formatUsageReportLines as wt, markRecoveryAttempt as x, buildAuthHealthSummary as xn, sortSubagentRuns as xt, listFromOtherInstances as y, maskApiKey as yn, resolveSubagentLabel as yt, dispatchInboundMessage as z, estimateBase64DecodedBytes as zn, buildChannelAccountSnapshot as zt };
|