@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
package/dist/plugin-sdk/index.js
CHANGED
|
@@ -45,13 +45,14 @@ import * as net$1 from "node:net";
|
|
|
45
45
|
import net from "node:net";
|
|
46
46
|
import express from "express";
|
|
47
47
|
import { chromium, devices } from "playwright-core";
|
|
48
|
-
import WebSocket, { WebSocket
|
|
48
|
+
import WebSocket$1, { WebSocket, WebSocketServer } from "ws";
|
|
49
49
|
import { createJiti } from "jiti";
|
|
50
50
|
import readline, { createInterface } from "node:readline";
|
|
51
51
|
import { Readable, Transform } from "node:stream";
|
|
52
52
|
import chokidar from "chokidar";
|
|
53
53
|
import { WebClient } from "@slack/web-api";
|
|
54
54
|
import { Type as Type$1 } from "@sinclair/typebox";
|
|
55
|
+
import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
|
|
55
56
|
import fs$2 from "fs/promises";
|
|
56
57
|
import os$1 from "os";
|
|
57
58
|
import path$1 from "path";
|
|
@@ -535,7 +536,7 @@ function notifyMcpToolsChanged() {
|
|
|
535
536
|
}
|
|
536
537
|
}
|
|
537
538
|
var tools, sseSubscribers, EMPTY_OBJECT_SCHEMA;
|
|
538
|
-
var init_registry$
|
|
539
|
+
var init_registry$7 = __esmMin((() => {
|
|
539
540
|
tools = /* @__PURE__ */ new Map();
|
|
540
541
|
sseSubscribers = /* @__PURE__ */ new Set();
|
|
541
542
|
EMPTY_OBJECT_SCHEMA = {
|
|
@@ -568,7 +569,7 @@ function normalizeAnyChannelId(raw) {
|
|
|
568
569
|
})?.plugin.id ?? null;
|
|
569
570
|
}
|
|
570
571
|
var CHAT_CHANNEL_ORDER, CHANNEL_IDS, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
|
|
571
|
-
var init_registry$
|
|
572
|
+
var init_registry$6 = __esmMin((() => {
|
|
572
573
|
init_runtime$2();
|
|
573
574
|
CHAT_CHANNEL_ORDER = [
|
|
574
575
|
"telegram",
|
|
@@ -1635,7 +1636,7 @@ function createSubsystemLogger(subsystem) {
|
|
|
1635
1636
|
}
|
|
1636
1637
|
var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
|
|
1637
1638
|
var init_subsystem = __esmMin((() => {
|
|
1638
|
-
init_registry$
|
|
1639
|
+
init_registry$6();
|
|
1639
1640
|
init_globals();
|
|
1640
1641
|
init_runtime$3();
|
|
1641
1642
|
init_progress_line();
|
|
@@ -2643,9 +2644,9 @@ function createPluginRegistry(registryParams) {
|
|
|
2643
2644
|
registerTypedHook
|
|
2644
2645
|
};
|
|
2645
2646
|
}
|
|
2646
|
-
var init_registry$
|
|
2647
|
+
var init_registry$5 = __esmMin((() => {
|
|
2647
2648
|
init_instant_commands();
|
|
2648
|
-
init_registry$
|
|
2649
|
+
init_registry$7();
|
|
2649
2650
|
init_internal_hooks();
|
|
2650
2651
|
init_utils$2();
|
|
2651
2652
|
init_channel_link_runtime();
|
|
@@ -2688,7 +2689,7 @@ function getActivePluginRuntime() {
|
|
|
2688
2689
|
}
|
|
2689
2690
|
var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$4, configState, runtimeState$1;
|
|
2690
2691
|
var init_runtime$2 = __esmMin((() => {
|
|
2691
|
-
init_registry$
|
|
2692
|
+
init_registry$5();
|
|
2692
2693
|
REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
|
|
2693
2694
|
CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
|
|
2694
2695
|
RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
|
|
@@ -3869,6 +3870,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
|
|
|
3869
3870
|
]).optional(),
|
|
3870
3871
|
perSession: z.boolean().optional(),
|
|
3871
3872
|
workspaceRoot: z.string().optional(),
|
|
3873
|
+
tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
|
|
3872
3874
|
docker: SandboxDockerSchema,
|
|
3873
3875
|
browser: SandboxBrowserSchema,
|
|
3874
3876
|
prune: SandboxPruneSchema
|
|
@@ -4070,7 +4072,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
|
|
|
4070
4072
|
exec: ToolExecSchema,
|
|
4071
4073
|
fs: ToolFsSchema,
|
|
4072
4074
|
subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
|
|
4073
|
-
sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
|
|
4075
|
+
sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
|
|
4076
|
+
outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
|
|
4074
4077
|
}).strict().superRefine((value, ctx) => {
|
|
4075
4078
|
addAllowAlsoAllowConflictIssue(value, ctx, "tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)");
|
|
4076
4079
|
}).optional();
|
|
@@ -7231,7 +7234,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
|
|
|
7231
7234
|
}
|
|
7232
7235
|
var init_bindings = __esmMin((() => {
|
|
7233
7236
|
init_agent_scope();
|
|
7234
|
-
init_registry$
|
|
7237
|
+
init_registry$6();
|
|
7235
7238
|
init_session_key$1();
|
|
7236
7239
|
}));
|
|
7237
7240
|
//#endregion
|
|
@@ -8179,7 +8182,7 @@ var init_dock = __esmMin((() => {
|
|
|
8179
8182
|
init_utils$2();
|
|
8180
8183
|
init_group_mentions();
|
|
8181
8184
|
init_signal$1();
|
|
8182
|
-
init_registry$
|
|
8185
|
+
init_registry$6();
|
|
8183
8186
|
formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
|
|
8184
8187
|
formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
|
|
8185
8188
|
DOCKS = {
|
|
@@ -8914,7 +8917,7 @@ function normalizeChannelId(raw) {
|
|
|
8914
8917
|
}
|
|
8915
8918
|
var init_plugins = __esmMin((() => {
|
|
8916
8919
|
init_runtime$2();
|
|
8917
|
-
init_registry$
|
|
8920
|
+
init_registry$6();
|
|
8918
8921
|
init_directory_config();
|
|
8919
8922
|
init_channel_config();
|
|
8920
8923
|
init_allowlist_match();
|
|
@@ -9502,7 +9505,7 @@ function isMarkdownCapableMessageChannel(raw) {
|
|
|
9502
9505
|
}
|
|
9503
9506
|
var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
|
|
9504
9507
|
var init_message_channel = __esmMin((() => {
|
|
9505
|
-
init_registry$
|
|
9508
|
+
init_registry$6();
|
|
9506
9509
|
init_client_info();
|
|
9507
9510
|
init_runtime$2();
|
|
9508
9511
|
INTERNAL_MESSAGE_CHANNEL = "webchat";
|
|
@@ -10185,7 +10188,7 @@ var init_shell_env = __esmMin((() => {
|
|
|
10185
10188
|
//#region src/version.ts
|
|
10186
10189
|
var VERSION;
|
|
10187
10190
|
var init_version$1 = __esmMin((() => {
|
|
10188
|
-
VERSION = "2026.6.
|
|
10191
|
+
VERSION = "2026.6.16-dev";
|
|
10189
10192
|
}));
|
|
10190
10193
|
//#endregion
|
|
10191
10194
|
//#region src/config/agent-dirs.ts
|
|
@@ -19748,6 +19751,7 @@ var init_zod_schema = __esmMin((() => {
|
|
|
19748
19751
|
importContacts: z.boolean().optional()
|
|
19749
19752
|
}).strict().optional(),
|
|
19750
19753
|
memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
|
|
19754
|
+
trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
|
|
19751
19755
|
personalAgentObservations: z.object({
|
|
19752
19756
|
enabled: z.boolean().optional(),
|
|
19753
19757
|
dbPath: z.string().optional()
|
|
@@ -19860,6 +19864,7 @@ var init_zod_schema = __esmMin((() => {
|
|
|
19860
19864
|
memory: MemorySchema,
|
|
19861
19865
|
skills: z.object({
|
|
19862
19866
|
allowBundled: z.array(z.string()).optional(),
|
|
19867
|
+
progressiveDisclosure: z.boolean().optional(),
|
|
19863
19868
|
load: z.object({
|
|
19864
19869
|
extraDirs: z.array(z.string()).optional(),
|
|
19865
19870
|
watch: z.boolean().optional(),
|
|
@@ -20235,7 +20240,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
|
|
|
20235
20240
|
var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
|
|
20236
20241
|
var init_validation = __esmMin((() => {
|
|
20237
20242
|
init_agent_scope();
|
|
20238
|
-
init_registry$
|
|
20243
|
+
init_registry$6();
|
|
20239
20244
|
init_config_state();
|
|
20240
20245
|
init_manifest_registry();
|
|
20241
20246
|
init_schema_validator();
|
|
@@ -24627,7 +24632,7 @@ init_http_path();
|
|
|
24627
24632
|
init_config_schema();
|
|
24628
24633
|
init_channel_link();
|
|
24629
24634
|
init_file_lock$1();
|
|
24630
|
-
init_registry$
|
|
24635
|
+
init_registry$6();
|
|
24631
24636
|
init_zod_schema_core();
|
|
24632
24637
|
init_zod_schema_agent_runtime();
|
|
24633
24638
|
init_session_key$1();
|
|
@@ -35440,6 +35445,24 @@ var init_bundled_dir = __esmMin((() => {
|
|
|
35440
35445
|
init_minion_root();
|
|
35441
35446
|
}));
|
|
35442
35447
|
//#endregion
|
|
35448
|
+
//#region src/agents/skills/compact-prompt.ts
|
|
35449
|
+
/**
|
|
35450
|
+
* Render a compact, name+description-only skills listing for progressive
|
|
35451
|
+
* disclosure. The full SKILL.md body is deliberately omitted; the agent is
|
|
35452
|
+
* instructed to load it on demand via the `skill_view` tool. This keeps the
|
|
35453
|
+
* system prompt small when many skills are available.
|
|
35454
|
+
*/
|
|
35455
|
+
function formatSkillsCompact(skills) {
|
|
35456
|
+
if (skills.length === 0) return "";
|
|
35457
|
+
return [
|
|
35458
|
+
"<available_skills>",
|
|
35459
|
+
...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
|
|
35460
|
+
"</available_skills>",
|
|
35461
|
+
"Call the `skill_view` tool with a skill name to load its full instructions before using it."
|
|
35462
|
+
].join("\n");
|
|
35463
|
+
}
|
|
35464
|
+
var init_compact_prompt = __esmMin((() => {}));
|
|
35465
|
+
//#endregion
|
|
35443
35466
|
//#region src/shared/config-eval.ts
|
|
35444
35467
|
function isTruthyValue(value) {
|
|
35445
35468
|
if (value === void 0 || value === null) return false;
|
|
@@ -36190,6 +36213,35 @@ function applySkillsPromptLimits(params) {
|
|
|
36190
36213
|
truncatedReason
|
|
36191
36214
|
};
|
|
36192
36215
|
}
|
|
36216
|
+
/**
|
|
36217
|
+
* Resolve whether progressive disclosure is enabled. Default is ON; only an
|
|
36218
|
+
* explicit `false` disables it (inlining full skill bodies in the prompt).
|
|
36219
|
+
*/
|
|
36220
|
+
function resolveProgressiveDisclosure(config, override) {
|
|
36221
|
+
if (override !== void 0) return override;
|
|
36222
|
+
return config?.skills?.progressiveDisclosure !== false;
|
|
36223
|
+
}
|
|
36224
|
+
/**
|
|
36225
|
+
* Map prompt-eligible skill entries to compact `{ name, description, body }`
|
|
36226
|
+
* records. The body is the full SKILL.md text, read from disk on demand; if the
|
|
36227
|
+
* file can't be read we fall back to an empty body (compact mode omits bodies
|
|
36228
|
+
* from the prompt anyway, so this only affects callers that inspect `body`).
|
|
36229
|
+
*/
|
|
36230
|
+
function toCompactSkills(skills) {
|
|
36231
|
+
return skills.map((skill) => {
|
|
36232
|
+
let body = "";
|
|
36233
|
+
try {
|
|
36234
|
+
body = fs.readFileSync(skill.filePath, "utf-8");
|
|
36235
|
+
} catch {
|
|
36236
|
+
body = "";
|
|
36237
|
+
}
|
|
36238
|
+
return {
|
|
36239
|
+
name: skill.name,
|
|
36240
|
+
description: skill.description ?? "",
|
|
36241
|
+
body
|
|
36242
|
+
};
|
|
36243
|
+
});
|
|
36244
|
+
}
|
|
36193
36245
|
function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
|
|
36194
36246
|
const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
|
|
36195
36247
|
const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
|
|
@@ -36201,7 +36253,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
|
|
|
36201
36253
|
const prompt = [
|
|
36202
36254
|
remoteNote,
|
|
36203
36255
|
truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
|
|
36204
|
-
formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
|
|
36256
|
+
resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
|
|
36205
36257
|
].filter(Boolean).join("\n");
|
|
36206
36258
|
const skillFilter = normalizeSkillFilter(opts?.skillFilter);
|
|
36207
36259
|
const denyFilter = normalizeSkillFilter(opts?.denyFilter);
|
|
@@ -36228,7 +36280,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
|
|
|
36228
36280
|
return [
|
|
36229
36281
|
remoteNote,
|
|
36230
36282
|
truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
|
|
36231
|
-
formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
|
|
36283
|
+
resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
|
|
36232
36284
|
].filter(Boolean).join("\n");
|
|
36233
36285
|
}
|
|
36234
36286
|
function resolveSkillsPromptForRun(params) {
|
|
@@ -36381,6 +36433,7 @@ var init_workspace$1 = __esmMin((() => {
|
|
|
36381
36433
|
init_utils$2();
|
|
36382
36434
|
init_sandbox_paths();
|
|
36383
36435
|
init_bundled_dir();
|
|
36436
|
+
init_compact_prompt();
|
|
36384
36437
|
init_config$3();
|
|
36385
36438
|
init_filter();
|
|
36386
36439
|
init_frontmatter();
|
|
@@ -38111,7 +38164,7 @@ var init_parse$2 = __esmMin((() => {
|
|
|
38111
38164
|
ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
|
|
38112
38165
|
})), DEFAULT_SANDBOX_WORKSPACE_ROOT, DEFAULT_SANDBOX_IMAGE, DEFAULT_TOOL_ALLOW, DEFAULT_TOOL_DENY, SANDBOX_AGENT_WORKSPACE_MOUNT, SANDBOX_STATE_DIR, SANDBOX_REGISTRY_PATH, SANDBOX_BROWSER_REGISTRY_PATH;
|
|
38113
38166
|
var init_constants$2 = __esmMin((() => {
|
|
38114
|
-
init_registry$
|
|
38167
|
+
init_registry$6();
|
|
38115
38168
|
init_config$4();
|
|
38116
38169
|
DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
|
|
38117
38170
|
DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
|
|
@@ -38616,6 +38669,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
|
|
|
38616
38669
|
scope,
|
|
38617
38670
|
workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
|
|
38618
38671
|
workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
|
|
38672
|
+
tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
|
|
38619
38673
|
docker: resolveSandboxDockerConfig({
|
|
38620
38674
|
scope,
|
|
38621
38675
|
globalDocker: agent?.docker,
|
|
@@ -39245,7 +39299,7 @@ async function ensureChromeExtensionRelayServer(opts) {
|
|
|
39245
39299
|
let nextExtensionId = 1;
|
|
39246
39300
|
const sendToExtension = async (payload) => {
|
|
39247
39301
|
const ws = extensionWs;
|
|
39248
|
-
if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
|
|
39302
|
+
if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
|
|
39249
39303
|
ws.send(JSON.stringify(payload));
|
|
39250
39304
|
return await new Promise((resolve, reject) => {
|
|
39251
39305
|
const timer = setTimeout(() => {
|
|
@@ -39262,12 +39316,12 @@ async function ensureChromeExtensionRelayServer(opts) {
|
|
|
39262
39316
|
const broadcastToCdpClients = (evt) => {
|
|
39263
39317
|
const msg = JSON.stringify(evt);
|
|
39264
39318
|
for (const ws of cdpClients) {
|
|
39265
|
-
if (ws.readyState !== WebSocket.OPEN) continue;
|
|
39319
|
+
if (ws.readyState !== WebSocket$1.OPEN) continue;
|
|
39266
39320
|
ws.send(msg);
|
|
39267
39321
|
}
|
|
39268
39322
|
};
|
|
39269
39323
|
const sendResponseToCdp = (ws, res) => {
|
|
39270
|
-
if (ws.readyState !== WebSocket.OPEN) return;
|
|
39324
|
+
if (ws.readyState !== WebSocket$1.OPEN) return;
|
|
39271
39325
|
ws.send(JSON.stringify(res));
|
|
39272
39326
|
};
|
|
39273
39327
|
const ensureTargetEventsForClient = (ws, mode) => {
|
|
@@ -39496,7 +39550,7 @@ async function ensureChromeExtensionRelayServer(opts) {
|
|
|
39496
39550
|
wssExtension.on("connection", (ws) => {
|
|
39497
39551
|
extensionWs = ws;
|
|
39498
39552
|
const ping = setInterval(() => {
|
|
39499
|
-
if (ws.readyState !== WebSocket.OPEN) return;
|
|
39553
|
+
if (ws.readyState !== WebSocket$1.OPEN) return;
|
|
39500
39554
|
ws.send(JSON.stringify({ method: "ping" }));
|
|
39501
39555
|
}, 5e3);
|
|
39502
39556
|
ws.on("message", (data) => {
|
|
@@ -39827,7 +39881,7 @@ async function fetchOk(url, timeoutMs = 1500, init) {
|
|
|
39827
39881
|
}
|
|
39828
39882
|
async function withCdpSocket(wsUrl, fn, opts) {
|
|
39829
39883
|
const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
|
|
39830
|
-
const ws = new WebSocket(wsUrl, {
|
|
39884
|
+
const ws = new WebSocket$1(wsUrl, {
|
|
39831
39885
|
handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
|
|
39832
39886
|
...Object.keys(headers).length ? { headers } : {}
|
|
39833
39887
|
});
|
|
@@ -40707,7 +40761,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
|
|
|
40707
40761
|
async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
|
|
40708
40762
|
return await new Promise((resolve) => {
|
|
40709
40763
|
const headers = getHeadersWithAuth(wsUrl);
|
|
40710
|
-
const ws = new WebSocket(wsUrl, {
|
|
40764
|
+
const ws = new WebSocket$1(wsUrl, {
|
|
40711
40765
|
handshakeTimeout: timeoutMs,
|
|
40712
40766
|
...Object.keys(headers).length ? { headers } : {}
|
|
40713
40767
|
});
|
|
@@ -45890,7 +45944,7 @@ async function removeBrowserRegistryEntry(containerName) {
|
|
|
45890
45944
|
return next;
|
|
45891
45945
|
});
|
|
45892
45946
|
}
|
|
45893
|
-
var init_registry$
|
|
45947
|
+
var init_registry$4 = __esmMin((() => {
|
|
45894
45948
|
init_session_write_lock();
|
|
45895
45949
|
init_constants$2();
|
|
45896
45950
|
}));
|
|
@@ -46351,7 +46405,7 @@ var init_docker = __esmMin((() => {
|
|
|
46351
46405
|
init_runtime$3();
|
|
46352
46406
|
init_config_hash();
|
|
46353
46407
|
init_constants$2();
|
|
46354
|
-
init_registry$
|
|
46408
|
+
init_registry$4();
|
|
46355
46409
|
init_shared$1();
|
|
46356
46410
|
init_validate_sandbox_security();
|
|
46357
46411
|
log$48 = createSubsystemLogger("sandbox/docker");
|
|
@@ -46577,7 +46631,7 @@ var init_browser = __esmMin((() => {
|
|
|
46577
46631
|
init_config$2();
|
|
46578
46632
|
init_constants$2();
|
|
46579
46633
|
init_docker();
|
|
46580
|
-
init_registry$
|
|
46634
|
+
init_registry$4();
|
|
46581
46635
|
init_shared$1();
|
|
46582
46636
|
init_tool_policy();
|
|
46583
46637
|
HOT_BROWSER_WINDOW_MS = 300 * 1e3;
|
|
@@ -46943,7 +46997,7 @@ var init_prune = __esmMin((() => {
|
|
|
46943
46997
|
init_runtime$3();
|
|
46944
46998
|
init_browser_bridges();
|
|
46945
46999
|
init_docker();
|
|
46946
|
-
init_registry$
|
|
47000
|
+
init_registry$4();
|
|
46947
47001
|
lastPruneAtMs = 0;
|
|
46948
47002
|
}));
|
|
46949
47003
|
//#endregion
|
|
@@ -47249,7 +47303,7 @@ var init_manage = __esmMin((() => {
|
|
|
47249
47303
|
init_config$4();
|
|
47250
47304
|
init_config$2();
|
|
47251
47305
|
init_docker();
|
|
47252
|
-
init_registry$
|
|
47306
|
+
init_registry$4();
|
|
47253
47307
|
init_shared$1();
|
|
47254
47308
|
}));
|
|
47255
47309
|
//#endregion
|
|
@@ -48168,7 +48222,7 @@ var loggedListActionErrors;
|
|
|
48168
48222
|
var init_channel_tools = __esmMin((() => {
|
|
48169
48223
|
init_dock();
|
|
48170
48224
|
init_plugins();
|
|
48171
|
-
init_registry$
|
|
48225
|
+
init_registry$6();
|
|
48172
48226
|
init_runtime$3();
|
|
48173
48227
|
loggedListActionErrors = /* @__PURE__ */ new Set();
|
|
48174
48228
|
}));
|
|
@@ -61115,7 +61169,7 @@ function resolveCommandAuthorization(params) {
|
|
|
61115
61169
|
}
|
|
61116
61170
|
var init_command_auth = __esmMin((() => {
|
|
61117
61171
|
init_dock();
|
|
61118
|
-
init_registry$
|
|
61172
|
+
init_registry$6();
|
|
61119
61173
|
init_message_channel();
|
|
61120
61174
|
}));
|
|
61121
61175
|
//#endregion
|
|
@@ -66945,7 +66999,7 @@ var init_commands_allowlist = __esmMin((() => {
|
|
|
66945
66999
|
init_resolve_users();
|
|
66946
67000
|
init_config_writes();
|
|
66947
67001
|
init_pairing();
|
|
66948
|
-
init_registry$
|
|
67002
|
+
init_registry$6();
|
|
66949
67003
|
init_accounts$1();
|
|
66950
67004
|
init_accounts();
|
|
66951
67005
|
init_config$4();
|
|
@@ -69092,7 +69146,7 @@ var init_client$1 = __esmMin((() => {
|
|
|
69092
69146
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
69093
69147
|
};
|
|
69094
69148
|
}
|
|
69095
|
-
this.ws = new WebSocket
|
|
69149
|
+
this.ws = new WebSocket(url, wsOptions);
|
|
69096
69150
|
this.ws.on("open", () => {
|
|
69097
69151
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
69098
69152
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -69307,7 +69361,7 @@ var init_client$1 = __esmMin((() => {
|
|
|
69307
69361
|
return null;
|
|
69308
69362
|
}
|
|
69309
69363
|
async request(method, params, opts) {
|
|
69310
|
-
if (!this.ws || this.ws.readyState !== WebSocket
|
|
69364
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
69311
69365
|
const id = randomUUID();
|
|
69312
69366
|
const frame = {
|
|
69313
69367
|
type: "req",
|
|
@@ -71235,6 +71289,198 @@ var init_landlock = __esmMin((() => {
|
|
|
71235
71289
|
_caps = null;
|
|
71236
71290
|
}));
|
|
71237
71291
|
//#endregion
|
|
71292
|
+
//#region src/agents/sandbox/tier0/router.ts
|
|
71293
|
+
function shouldTryTier0(command) {
|
|
71294
|
+
const cmd = command.trim();
|
|
71295
|
+
if (!cmd) return false;
|
|
71296
|
+
for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
|
|
71297
|
+
return true;
|
|
71298
|
+
}
|
|
71299
|
+
/**
|
|
71300
|
+
* Distinguish "just-bash can't do this" from "the user's command legitimately
|
|
71301
|
+
* failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
|
|
71302
|
+
* expansion (trips its own defense-in-depth `node:module` guard) and any
|
|
71303
|
+
* unimplemented builtin. These must escalate to Docker, not surface as failures.
|
|
71304
|
+
*/
|
|
71305
|
+
function isInterpreterLimitation(stderr) {
|
|
71306
|
+
if (!stderr) return false;
|
|
71307
|
+
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);
|
|
71308
|
+
}
|
|
71309
|
+
var ESCALATE_PATTERNS;
|
|
71310
|
+
var init_router = __esmMin((() => {
|
|
71311
|
+
ESCALATE_PATTERNS = [
|
|
71312
|
+
/\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
|
|
71313
|
+
/\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/,
|
|
71314
|
+
/\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
|
|
71315
|
+
/\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
|
|
71316
|
+
/(^|\s|=)\/(dev|proc|sys)\//,
|
|
71317
|
+
/<\(|>\(/
|
|
71318
|
+
];
|
|
71319
|
+
}));
|
|
71320
|
+
//#endregion
|
|
71321
|
+
//#region src/agents/sandbox/tier0/virtual-sandbox.ts
|
|
71322
|
+
/**
|
|
71323
|
+
* Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
|
|
71324
|
+
*
|
|
71325
|
+
* This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
|
|
71326
|
+
* "safe" majority of agent shell calls (string munging, fs reads/writes in the
|
|
71327
|
+
* workspace, grep/sed/jq-style pipelines) it runs the command in-process against
|
|
71328
|
+
* an in-memory shell with the real workspace dir mounted — no container spawn.
|
|
71329
|
+
*
|
|
71330
|
+
* Correctness: the agent's real workspace dir is mounted (read-write, symlink-
|
|
71331
|
+
* blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
|
|
71332
|
+
* file visibility is identical to the Docker path. `/tmp` etc. live on an
|
|
71333
|
+
* InMemoryFs base. Network and python are OFF by default (just-bash defaults).
|
|
71334
|
+
*
|
|
71335
|
+
* Anything just-bash can't serve (an unimplemented builtin, an internal error)
|
|
71336
|
+
* sets `unsupported: true`; callers MUST escalate those to the Docker backend.
|
|
71337
|
+
* See ./router.ts for the routing + interpreter-limitation heuristics.
|
|
71338
|
+
*/
|
|
71339
|
+
function withTimeout$6(p, ms) {
|
|
71340
|
+
if (!ms) return p;
|
|
71341
|
+
return new Promise((resolve, reject) => {
|
|
71342
|
+
const timer = setTimeout(() => reject(new TimeoutError()), ms);
|
|
71343
|
+
p.then((value) => {
|
|
71344
|
+
clearTimeout(timer);
|
|
71345
|
+
resolve(value);
|
|
71346
|
+
}, (error) => {
|
|
71347
|
+
clearTimeout(timer);
|
|
71348
|
+
reject(error);
|
|
71349
|
+
});
|
|
71350
|
+
});
|
|
71351
|
+
}
|
|
71352
|
+
var Tier0VirtualSandbox, TimeoutError;
|
|
71353
|
+
var init_virtual_sandbox = __esmMin((() => {
|
|
71354
|
+
init_router();
|
|
71355
|
+
Tier0VirtualSandbox = class {
|
|
71356
|
+
constructor() {
|
|
71357
|
+
this.instances = /* @__PURE__ */ new Map();
|
|
71358
|
+
}
|
|
71359
|
+
getInstance(req) {
|
|
71360
|
+
const existing = this.instances.get(req.scopeKey);
|
|
71361
|
+
if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
|
|
71362
|
+
existing.lastUsed = Date.now();
|
|
71363
|
+
return existing.bash;
|
|
71364
|
+
}
|
|
71365
|
+
const fs = new MountableFs({ base: new InMemoryFs() });
|
|
71366
|
+
fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
|
|
71367
|
+
const bash = new Bash({
|
|
71368
|
+
fs,
|
|
71369
|
+
cwd: req.workdir,
|
|
71370
|
+
env: {
|
|
71371
|
+
LANG: "C.UTF-8",
|
|
71372
|
+
...req.env
|
|
71373
|
+
},
|
|
71374
|
+
executionLimits: {
|
|
71375
|
+
maxCommandCount: 1e4,
|
|
71376
|
+
maxLoopIterations: 1e6
|
|
71377
|
+
}
|
|
71378
|
+
});
|
|
71379
|
+
const inst = {
|
|
71380
|
+
bash,
|
|
71381
|
+
workspaceHostDir: req.workspaceHostDir,
|
|
71382
|
+
workdir: req.workdir,
|
|
71383
|
+
lastUsed: Date.now()
|
|
71384
|
+
};
|
|
71385
|
+
this.instances.set(req.scopeKey, inst);
|
|
71386
|
+
return bash;
|
|
71387
|
+
}
|
|
71388
|
+
async exec(req) {
|
|
71389
|
+
const startedAt = Date.now();
|
|
71390
|
+
let bash;
|
|
71391
|
+
try {
|
|
71392
|
+
bash = this.getInstance(req);
|
|
71393
|
+
} catch {
|
|
71394
|
+
return {
|
|
71395
|
+
status: "failed",
|
|
71396
|
+
exitCode: null,
|
|
71397
|
+
durationMs: Date.now() - startedAt,
|
|
71398
|
+
aggregated: "",
|
|
71399
|
+
timedOut: false,
|
|
71400
|
+
unsupported: true
|
|
71401
|
+
};
|
|
71402
|
+
}
|
|
71403
|
+
try {
|
|
71404
|
+
const result = await withTimeout$6(bash.exec(req.command, {
|
|
71405
|
+
cwd: req.workdir,
|
|
71406
|
+
env: req.env
|
|
71407
|
+
}), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
|
|
71408
|
+
const durationMs = Date.now() - startedAt;
|
|
71409
|
+
const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
|
|
71410
|
+
if (result.exitCode === 0) return {
|
|
71411
|
+
status: "completed",
|
|
71412
|
+
exitCode: 0,
|
|
71413
|
+
durationMs,
|
|
71414
|
+
aggregated: combined,
|
|
71415
|
+
timedOut: false,
|
|
71416
|
+
unsupported: false
|
|
71417
|
+
};
|
|
71418
|
+
return {
|
|
71419
|
+
status: "failed",
|
|
71420
|
+
exitCode: result.exitCode,
|
|
71421
|
+
durationMs,
|
|
71422
|
+
aggregated: combined,
|
|
71423
|
+
timedOut: false,
|
|
71424
|
+
unsupported: isInterpreterLimitation(result.stderr)
|
|
71425
|
+
};
|
|
71426
|
+
} catch (err) {
|
|
71427
|
+
const timedOut = err instanceof TimeoutError;
|
|
71428
|
+
return {
|
|
71429
|
+
status: "failed",
|
|
71430
|
+
exitCode: null,
|
|
71431
|
+
durationMs: Date.now() - startedAt,
|
|
71432
|
+
aggregated: "",
|
|
71433
|
+
timedOut,
|
|
71434
|
+
unsupported: !timedOut
|
|
71435
|
+
};
|
|
71436
|
+
}
|
|
71437
|
+
}
|
|
71438
|
+
dispose(scopeKey) {
|
|
71439
|
+
if (scopeKey) this.instances.delete(scopeKey);
|
|
71440
|
+
else this.instances.clear();
|
|
71441
|
+
}
|
|
71442
|
+
/** test/inspection helper */
|
|
71443
|
+
get liveInstances() {
|
|
71444
|
+
return this.instances.size;
|
|
71445
|
+
}
|
|
71446
|
+
};
|
|
71447
|
+
TimeoutError = class extends Error {};
|
|
71448
|
+
}));
|
|
71449
|
+
//#endregion
|
|
71450
|
+
//#region src/agents/sandbox/tier0/registry.ts
|
|
71451
|
+
function getTier0Sandbox() {
|
|
71452
|
+
if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
|
|
71453
|
+
return singleton$1;
|
|
71454
|
+
}
|
|
71455
|
+
/**
|
|
71456
|
+
* Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
|
|
71457
|
+
* path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
|
|
71458
|
+
* Docker container too), so tier-0 sees the same files.
|
|
71459
|
+
*/
|
|
71460
|
+
function resolveTier0Binding(params) {
|
|
71461
|
+
if (!params.workspaceHostDir) return;
|
|
71462
|
+
const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
|
|
71463
|
+
if (!sandboxCfg.tier0.enabled) return;
|
|
71464
|
+
if (sandboxCfg.workspaceAccess === "ro") return;
|
|
71465
|
+
return {
|
|
71466
|
+
backend: getTier0Sandbox(),
|
|
71467
|
+
workspaceHostDir: params.workspaceHostDir
|
|
71468
|
+
};
|
|
71469
|
+
}
|
|
71470
|
+
var singleton$1;
|
|
71471
|
+
var init_registry$3 = __esmMin((() => {
|
|
71472
|
+
init_config$4();
|
|
71473
|
+
init_config$2();
|
|
71474
|
+
init_virtual_sandbox();
|
|
71475
|
+
}));
|
|
71476
|
+
//#endregion
|
|
71477
|
+
//#region src/agents/sandbox/tier0/index.ts
|
|
71478
|
+
var init_tier0 = __esmMin((() => {
|
|
71479
|
+
init_router();
|
|
71480
|
+
init_registry$3();
|
|
71481
|
+
init_virtual_sandbox();
|
|
71482
|
+
}));
|
|
71483
|
+
//#endregion
|
|
71238
71484
|
//#region src/agents/tools/automation/gateway.ts
|
|
71239
71485
|
function readGatewayCallOptions(params) {
|
|
71240
71486
|
return {
|
|
@@ -72609,10 +72855,112 @@ function emitExecSystemEvent(text, opts) {
|
|
|
72609
72855
|
});
|
|
72610
72856
|
requestHeartbeatNow({ reason: "exec-event" });
|
|
72611
72857
|
}
|
|
72858
|
+
/**
|
|
72859
|
+
* Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
|
|
72860
|
+
* a completed ExecProcessHandle on success, or null when just-bash can't serve
|
|
72861
|
+
* the command (so the caller escalates to Docker). Output is sanitized and a
|
|
72862
|
+
* ProcessSession is registered exactly like the normal path, so downstream
|
|
72863
|
+
* session listing / tailing is unaffected.
|
|
72864
|
+
*/
|
|
72865
|
+
async function tryTier0Exec(args) {
|
|
72866
|
+
const { opts, sessionId, startedAt, execCommand } = args;
|
|
72867
|
+
const tier0 = opts.tier0;
|
|
72868
|
+
const sandbox = opts.sandbox;
|
|
72869
|
+
if (!tier0 || !sandbox) return null;
|
|
72870
|
+
const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
|
|
72871
|
+
let outcome;
|
|
72872
|
+
try {
|
|
72873
|
+
outcome = await tier0.backend.exec({
|
|
72874
|
+
command: execCommand,
|
|
72875
|
+
workdir,
|
|
72876
|
+
workspaceHostDir: tier0.workspaceHostDir,
|
|
72877
|
+
env: opts.env,
|
|
72878
|
+
scopeKey: sandbox.containerName,
|
|
72879
|
+
timeoutSec: opts.timeoutSec
|
|
72880
|
+
});
|
|
72881
|
+
} catch {
|
|
72882
|
+
return null;
|
|
72883
|
+
}
|
|
72884
|
+
if (outcome.unsupported) return null;
|
|
72885
|
+
const session = {
|
|
72886
|
+
id: sessionId,
|
|
72887
|
+
command: opts.command,
|
|
72888
|
+
scopeKey: opts.scopeKey,
|
|
72889
|
+
sessionKey: opts.sessionKey,
|
|
72890
|
+
notifyOnExit: opts.notifyOnExit,
|
|
72891
|
+
notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
|
|
72892
|
+
exitNotified: false,
|
|
72893
|
+
child: void 0,
|
|
72894
|
+
stdin: void 0,
|
|
72895
|
+
pid: void 0,
|
|
72896
|
+
startedAt,
|
|
72897
|
+
cwd: opts.workdir,
|
|
72898
|
+
maxOutputChars: opts.maxOutput,
|
|
72899
|
+
pendingMaxOutputChars: opts.pendingMaxOutput,
|
|
72900
|
+
totalOutputChars: 0,
|
|
72901
|
+
pendingStdout: [],
|
|
72902
|
+
pendingStderr: [],
|
|
72903
|
+
pendingStdoutChars: 0,
|
|
72904
|
+
pendingStderrChars: 0,
|
|
72905
|
+
aggregated: "",
|
|
72906
|
+
tail: "",
|
|
72907
|
+
exited: false,
|
|
72908
|
+
exitCode: void 0,
|
|
72909
|
+
exitSignal: void 0,
|
|
72910
|
+
truncated: false,
|
|
72911
|
+
backgrounded: false
|
|
72912
|
+
};
|
|
72913
|
+
addSession(session);
|
|
72914
|
+
const sanitized = stripAnsi$1(sanitizeBinaryOutput(outcome.aggregated));
|
|
72915
|
+
for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
|
|
72916
|
+
const status = outcome.status === "completed" ? "completed" : "failed";
|
|
72917
|
+
markExited(session, outcome.exitCode ?? 0, null, status);
|
|
72918
|
+
const durationMs = Date.now() - startedAt;
|
|
72919
|
+
const aggregated = session.aggregated.trim();
|
|
72920
|
+
let result;
|
|
72921
|
+
if (status === "completed") {
|
|
72922
|
+
const exitCode = outcome.exitCode ?? 0;
|
|
72923
|
+
result = {
|
|
72924
|
+
status: "completed",
|
|
72925
|
+
exitCode,
|
|
72926
|
+
exitSignal: null,
|
|
72927
|
+
durationMs,
|
|
72928
|
+
aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
|
|
72929
|
+
timedOut: false
|
|
72930
|
+
};
|
|
72931
|
+
} else {
|
|
72932
|
+
const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
|
|
72933
|
+
result = {
|
|
72934
|
+
status: "failed",
|
|
72935
|
+
exitCode: outcome.exitCode,
|
|
72936
|
+
exitSignal: null,
|
|
72937
|
+
durationMs,
|
|
72938
|
+
aggregated,
|
|
72939
|
+
timedOut: outcome.timedOut,
|
|
72940
|
+
reason: aggregated ? `${aggregated}\n\n${reason}` : reason
|
|
72941
|
+
};
|
|
72942
|
+
}
|
|
72943
|
+
return {
|
|
72944
|
+
session,
|
|
72945
|
+
startedAt,
|
|
72946
|
+
pid: void 0,
|
|
72947
|
+
promise: Promise.resolve(result),
|
|
72948
|
+
kill: () => {}
|
|
72949
|
+
};
|
|
72950
|
+
}
|
|
72612
72951
|
async function runExecProcess(opts) {
|
|
72613
72952
|
const startedAt = Date.now();
|
|
72614
72953
|
const sessionId = createSessionSlug();
|
|
72615
72954
|
const execCommand = opts.execCommand ?? opts.command;
|
|
72955
|
+
if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
|
|
72956
|
+
const tier0Handle = await tryTier0Exec({
|
|
72957
|
+
opts,
|
|
72958
|
+
sessionId,
|
|
72959
|
+
startedAt,
|
|
72960
|
+
execCommand
|
|
72961
|
+
});
|
|
72962
|
+
if (tier0Handle) return tier0Handle;
|
|
72963
|
+
}
|
|
72616
72964
|
const supervisor = getProcessSupervisor();
|
|
72617
72965
|
const session = {
|
|
72618
72966
|
id: sessionId,
|
|
@@ -72843,6 +73191,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
|
|
|
72843
73191
|
init_supervisor();
|
|
72844
73192
|
init_pty_dsr();
|
|
72845
73193
|
init_shell_utils();
|
|
73194
|
+
init_tier0();
|
|
72846
73195
|
init_bash_process_registry();
|
|
72847
73196
|
init_bash_tools_shared();
|
|
72848
73197
|
DANGEROUS_HOST_ENV_VARS = new Set([
|
|
@@ -73446,7 +73795,11 @@ function createExecTool(defaults) {
|
|
|
73446
73795
|
scopeKey: defaults?.scopeKey,
|
|
73447
73796
|
sessionKey: notifySessionKey,
|
|
73448
73797
|
timeoutSec: effectiveTimeout,
|
|
73449
|
-
onUpdate
|
|
73798
|
+
onUpdate,
|
|
73799
|
+
tier0: sandbox ? resolveTier0Binding({
|
|
73800
|
+
agentId,
|
|
73801
|
+
workspaceHostDir: sandbox.workspaceDir
|
|
73802
|
+
}) : void 0
|
|
73450
73803
|
});
|
|
73451
73804
|
let yielded = false;
|
|
73452
73805
|
let yieldTimer = null;
|
|
@@ -73521,6 +73874,7 @@ var init_bash_tools_exec = __esmMin((() => {
|
|
|
73521
73874
|
init_logger$2();
|
|
73522
73875
|
init_session_key$1();
|
|
73523
73876
|
init_landlock();
|
|
73877
|
+
init_tier0();
|
|
73524
73878
|
init_gateway();
|
|
73525
73879
|
init_nodes_utils();
|
|
73526
73880
|
init_bash_process_registry();
|
|
@@ -75700,7 +76054,7 @@ var init_debug_commands = __esmMin((() => {
|
|
|
75700
76054
|
var handleConfigCommand, handleDebugCommand;
|
|
75701
76055
|
var init_commands_config = __esmMin((() => {
|
|
75702
76056
|
init_config_writes();
|
|
75703
|
-
init_registry$
|
|
76057
|
+
init_registry$6();
|
|
75704
76058
|
init_config_paths();
|
|
75705
76059
|
init_config$4();
|
|
75706
76060
|
init_runtime_overrides();
|
|
@@ -76345,11 +76699,12 @@ var init_agent_type = __esmMin((() => {
|
|
|
76345
76699
|
if (!trimmed) return [];
|
|
76346
76700
|
return [
|
|
76347
76701
|
"## Skills (mandatory)",
|
|
76348
|
-
"Before replying: scan <available_skills>
|
|
76349
|
-
|
|
76350
|
-
"- If multiple could apply: choose the most specific one, then
|
|
76351
|
-
"- If none clearly apply: do not
|
|
76352
|
-
|
|
76702
|
+
"Before replying: scan the <available_skills> entries.",
|
|
76703
|
+
"- If exactly one skill clearly applies: load its full instructions, then follow it.",
|
|
76704
|
+
"- If multiple could apply: choose the most specific one, then load/follow it.",
|
|
76705
|
+
"- If none clearly apply: do not load any skill.",
|
|
76706
|
+
`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}\`.`,
|
|
76707
|
+
"Constraints: never load more than one skill up front; only load after selecting.",
|
|
76353
76708
|
trimmed,
|
|
76354
76709
|
""
|
|
76355
76710
|
];
|
|
@@ -76495,6 +76850,37 @@ var init_agent_type = __esmMin((() => {
|
|
|
76495
76850
|
];
|
|
76496
76851
|
}));
|
|
76497
76852
|
//#endregion
|
|
76853
|
+
//#region src/agents/sections/behaviour.ts
|
|
76854
|
+
var BEHAVIOUR_SECTIONS;
|
|
76855
|
+
var init_behaviour = __esmMin((() => {
|
|
76856
|
+
init_prose_loader();
|
|
76857
|
+
BEHAVIOUR_SECTIONS = [{
|
|
76858
|
+
id: "behaviour",
|
|
76859
|
+
layer: "identity",
|
|
76860
|
+
order: 2200,
|
|
76861
|
+
modes: ["full", "minimal"],
|
|
76862
|
+
cacheable: false,
|
|
76863
|
+
header: "## Operating Rules (self-maintained)",
|
|
76864
|
+
source: "file",
|
|
76865
|
+
render: (ctx) => {
|
|
76866
|
+
const workspaceDir = ctx.params.workspaceDir;
|
|
76867
|
+
if (!workspaceDir) return [];
|
|
76868
|
+
const content = resolveProse({
|
|
76869
|
+
layer: "identity",
|
|
76870
|
+
id: "behaviour",
|
|
76871
|
+
agentWorkspaceDir: workspaceDir
|
|
76872
|
+
})?.content.trim();
|
|
76873
|
+
if (!content) return [];
|
|
76874
|
+
return [
|
|
76875
|
+
"## Operating Rules (self-maintained)",
|
|
76876
|
+
"",
|
|
76877
|
+
content,
|
|
76878
|
+
""
|
|
76879
|
+
];
|
|
76880
|
+
}
|
|
76881
|
+
}];
|
|
76882
|
+
}));
|
|
76883
|
+
//#endregion
|
|
76498
76884
|
//#region src/agents/sections/identity.ts
|
|
76499
76885
|
var IDENTITY_SECTIONS;
|
|
76500
76886
|
var init_identity$1 = __esmMin((() => {
|
|
@@ -77463,6 +77849,7 @@ function getBuiltinRegistry() {
|
|
|
77463
77849
|
_registry$1.registerAll(PLATFORM_SECTIONS);
|
|
77464
77850
|
_registry$1.registerAll(AGENT_TYPE_SECTIONS);
|
|
77465
77851
|
_registry$1.registerAll(IDENTITY_SECTIONS);
|
|
77852
|
+
_registry$1.registerAll(BEHAVIOUR_SECTIONS);
|
|
77466
77853
|
_registry$1.registerAll(USER_SECTIONS);
|
|
77467
77854
|
_registry$1.registerAll(SESSION_SECTIONS);
|
|
77468
77855
|
return _registry$1;
|
|
@@ -77481,6 +77868,7 @@ function assembleAgentSystemPrompt(params) {
|
|
|
77481
77868
|
var _registry$1;
|
|
77482
77869
|
var init_assemble = __esmMin((() => {
|
|
77483
77870
|
init_agent_type();
|
|
77871
|
+
init_behaviour();
|
|
77484
77872
|
init_identity$1();
|
|
77485
77873
|
init_platform();
|
|
77486
77874
|
init_registry$1();
|
|
@@ -85313,7 +85701,7 @@ var init_reply_elevated = __esmMin((() => {
|
|
|
85313
85701
|
init_agent_scope();
|
|
85314
85702
|
init_dock();
|
|
85315
85703
|
init_plugins();
|
|
85316
|
-
init_registry$
|
|
85704
|
+
init_registry$6();
|
|
85317
85705
|
init_message_channel();
|
|
85318
85706
|
init_string_normalization();
|
|
85319
85707
|
init_elevated_unavailable();
|
|
@@ -94987,7 +95375,7 @@ function resolvePingPongTurns(cfg) {
|
|
|
94987
95375
|
var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
|
|
94988
95376
|
var init_sessions_send_helpers = __esmMin((() => {
|
|
94989
95377
|
init_plugins();
|
|
94990
|
-
init_registry$
|
|
95378
|
+
init_registry$6();
|
|
94991
95379
|
ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
|
|
94992
95380
|
REPLY_SKIP_TOKEN = "REPLY_SKIP";
|
|
94993
95381
|
DEFAULT_PING_PONG_TURNS = 5;
|
|
@@ -102728,7 +103116,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
|
|
|
102728
103116
|
var init_agent_runner_utils = __esmMin((() => {
|
|
102729
103117
|
init_agent_scope();
|
|
102730
103118
|
init_dock();
|
|
102731
|
-
init_registry$
|
|
103119
|
+
init_registry$6();
|
|
102732
103120
|
init_sessions$1();
|
|
102733
103121
|
init_provider_utils();
|
|
102734
103122
|
init_usage_format();
|
|
@@ -108579,7 +108967,7 @@ function loadOpenClawPlugins(options = {}) {
|
|
|
108579
108967
|
}
|
|
108580
108968
|
var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
|
|
108581
108969
|
var init_loader = __esmMin((() => {
|
|
108582
|
-
init_registry$
|
|
108970
|
+
init_registry$7();
|
|
108583
108971
|
init_subsystem();
|
|
108584
108972
|
init_utils$2();
|
|
108585
108973
|
init_version$1();
|
|
@@ -108591,7 +108979,7 @@ var init_loader = __esmMin((() => {
|
|
|
108591
108979
|
init_discovery();
|
|
108592
108980
|
init_hook_runner_global();
|
|
108593
108981
|
init_manifest_registry();
|
|
108594
|
-
init_registry$
|
|
108982
|
+
init_registry$5();
|
|
108595
108983
|
init_runtime$2();
|
|
108596
108984
|
init_runtime$1();
|
|
108597
108985
|
init_schema_validator();
|
|
@@ -119541,6 +119929,36 @@ async function prepareSessionManagerForRun(params) {
|
|
|
119541
119929
|
}
|
|
119542
119930
|
var init_session_manager_init = __esmMin((() => {}));
|
|
119543
119931
|
//#endregion
|
|
119932
|
+
//#region src/agents/pi-embedded-runner/tool-result-reduce.ts
|
|
119933
|
+
/** Pure text reducer for oversized/repetitive tool output. Never throws. */
|
|
119934
|
+
function reduceToolOutputText(text, opts) {
|
|
119935
|
+
let lines = text.split("\n");
|
|
119936
|
+
if (opts.collapseRuns) {
|
|
119937
|
+
const collapsed = [];
|
|
119938
|
+
let i = 0;
|
|
119939
|
+
while (i < lines.length) {
|
|
119940
|
+
let j = i + 1;
|
|
119941
|
+
while (j < lines.length && lines[j] === lines[i]) j += 1;
|
|
119942
|
+
const run = j - i;
|
|
119943
|
+
if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
|
|
119944
|
+
else for (let k = i; k < j; k++) collapsed.push(lines[k]);
|
|
119945
|
+
i = j;
|
|
119946
|
+
}
|
|
119947
|
+
lines = collapsed;
|
|
119948
|
+
}
|
|
119949
|
+
if (lines.length <= opts.maxLines) return lines.join("\n");
|
|
119950
|
+
if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
|
|
119951
|
+
const head = lines.slice(0, opts.headLines);
|
|
119952
|
+
const tail = lines.slice(lines.length - opts.tailLines);
|
|
119953
|
+
const elided = lines.length - head.length - tail.length;
|
|
119954
|
+
return [
|
|
119955
|
+
...head,
|
|
119956
|
+
`… ${elided} lines elided …`,
|
|
119957
|
+
...tail
|
|
119958
|
+
].join("\n");
|
|
119959
|
+
}
|
|
119960
|
+
var init_tool_result_reduce = __esmMin((() => {}));
|
|
119961
|
+
//#endregion
|
|
119544
119962
|
//#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
|
|
119545
119963
|
function isTextBlock(block) {
|
|
119546
119964
|
return !!block && typeof block === "object" && block.type === "text";
|
|
@@ -119675,8 +120093,28 @@ function applyMessageMutationInPlace(target, source) {
|
|
|
119675
120093
|
for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
|
|
119676
120094
|
Object.assign(targetRecord, sourceRecord);
|
|
119677
120095
|
}
|
|
120096
|
+
/**
|
|
120097
|
+
* Run the pure line-reducer over each tool-result message's text content,
|
|
120098
|
+
* mutating messages in place. Skips reductions that wouldn't shrink the text.
|
|
120099
|
+
*/
|
|
120100
|
+
function reduceToolResultOutputsInPlace(messages) {
|
|
120101
|
+
for (const message of messages) {
|
|
120102
|
+
if (!isToolResultMessage(message)) continue;
|
|
120103
|
+
const rawText = getToolResultText(message);
|
|
120104
|
+
if (!rawText) continue;
|
|
120105
|
+
const reduced = reduceToolOutputText(rawText, {
|
|
120106
|
+
maxLines: REDUCE_MAX_LINES,
|
|
120107
|
+
headLines: REDUCE_HEAD_LINES,
|
|
120108
|
+
tailLines: REDUCE_TAIL_LINES,
|
|
120109
|
+
collapseRuns: true
|
|
120110
|
+
});
|
|
120111
|
+
if (reduced === rawText) continue;
|
|
120112
|
+
applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
|
|
120113
|
+
}
|
|
120114
|
+
}
|
|
119678
120115
|
function enforceToolResultContextBudgetInPlace(params) {
|
|
119679
|
-
const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
|
|
120116
|
+
const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
|
|
120117
|
+
if (reduceOutput) reduceToolResultOutputsInPlace(messages);
|
|
119680
120118
|
for (const message of messages) {
|
|
119681
120119
|
if (!isToolResultMessage(message)) continue;
|
|
119682
120120
|
applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
|
|
@@ -119698,6 +120136,7 @@ function enforceToolResultContextBudgetInPlace(params) {
|
|
|
119698
120136
|
* @returns An async function suitable for use as Agent's transformContext callback.
|
|
119699
120137
|
*/
|
|
119700
120138
|
function createToolResultContextGuardTransform(params) {
|
|
120139
|
+
const reduceOutput = params.reduceOutput !== false;
|
|
119701
120140
|
const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
|
|
119702
120141
|
const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
|
|
119703
120142
|
const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
|
|
@@ -119708,13 +120147,15 @@ function createToolResultContextGuardTransform(params) {
|
|
|
119708
120147
|
enforceToolResultContextBudgetInPlace({
|
|
119709
120148
|
messages: contextMessages,
|
|
119710
120149
|
contextBudgetChars,
|
|
119711
|
-
maxSingleToolResultChars
|
|
120150
|
+
maxSingleToolResultChars,
|
|
120151
|
+
reduceOutput
|
|
119712
120152
|
});
|
|
119713
120153
|
return contextMessages;
|
|
119714
120154
|
};
|
|
119715
120155
|
}
|
|
119716
|
-
var CHARS_PER_TOKEN_ESTIMATE, CONTEXT_INPUT_HEADROOM_RATIO, SINGLE_TOOL_RESULT_CONTEXT_SHARE, TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE, IMAGE_CHAR_ESTIMATE, CONTEXT_LIMIT_TRUNCATION_NOTICE, CONTEXT_LIMIT_TRUNCATION_SUFFIX, PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER;
|
|
120156
|
+
var CHARS_PER_TOKEN_ESTIMATE, CONTEXT_INPUT_HEADROOM_RATIO, SINGLE_TOOL_RESULT_CONTEXT_SHARE, TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE, IMAGE_CHAR_ESTIMATE, CONTEXT_LIMIT_TRUNCATION_NOTICE, CONTEXT_LIMIT_TRUNCATION_SUFFIX, PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER, REDUCE_MAX_LINES, REDUCE_HEAD_LINES, REDUCE_TAIL_LINES;
|
|
119717
120157
|
var init_tool_result_context_guard = __esmMin((() => {
|
|
120158
|
+
init_tool_result_reduce();
|
|
119718
120159
|
CHARS_PER_TOKEN_ESTIMATE = 4;
|
|
119719
120160
|
CONTEXT_INPUT_HEADROOM_RATIO = .75;
|
|
119720
120161
|
SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
|
|
@@ -119723,6 +120164,9 @@ var init_tool_result_context_guard = __esmMin((() => {
|
|
|
119723
120164
|
CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
|
|
119724
120165
|
CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
|
|
119725
120166
|
PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
|
|
120167
|
+
REDUCE_MAX_LINES = 200;
|
|
120168
|
+
REDUCE_HEAD_LINES = 40;
|
|
120169
|
+
REDUCE_TAIL_LINES = 40;
|
|
119726
120170
|
}));
|
|
119727
120171
|
//#endregion
|
|
119728
120172
|
//#region src/agents/pi-embedded-runner/run/attempt-session.ts
|
|
@@ -119815,7 +120259,10 @@ async function createRunSession(params, env) {
|
|
|
119815
120259
|
applySystemPromptOverrideToSession(session, env.systemPromptText);
|
|
119816
120260
|
if (!session) throw new Error("Embedded agent session missing");
|
|
119817
120261
|
const activeSession = session;
|
|
119818
|
-
const contextGuardTransform = createToolResultContextGuardTransform({
|
|
120262
|
+
const contextGuardTransform = createToolResultContextGuardTransform({
|
|
120263
|
+
contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
|
|
120264
|
+
reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
|
|
120265
|
+
});
|
|
119819
120266
|
activeSession.agent.transformContext = contextGuardTransform;
|
|
119820
120267
|
const cacheTrace = createCacheTrace({
|
|
119821
120268
|
cfg: params.config,
|
|
@@ -126563,7 +127010,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
126563
127010
|
super(options);
|
|
126564
127011
|
}
|
|
126565
127012
|
createWebSocket(url) {
|
|
126566
|
-
return new WebSocket(url, { agent });
|
|
127013
|
+
return new WebSocket$1(url, { agent });
|
|
126567
127014
|
}
|
|
126568
127015
|
}
|
|
126569
127016
|
return new ProxyGatewayPlugin();
|
|
@@ -128668,7 +129115,7 @@ const DEFAULT_WEB_MEDIA_BYTES = 5 * 1024 * 1024;
|
|
|
128668
129115
|
//#region src/channels/plugins/whatsapp-heartbeat.ts
|
|
128669
129116
|
init_sessions$1();
|
|
128670
129117
|
init_utils$2();
|
|
128671
|
-
init_registry$
|
|
129118
|
+
init_registry$6();
|
|
128672
129119
|
function getSessionRecipients(cfg) {
|
|
128673
129120
|
if ((cfg.session?.scope ?? "per-sender") === "global") return [];
|
|
128674
129121
|
const store = loadSessionStore(resolveStorePath$1(cfg.session?.store));
|
|
@@ -131032,7 +131479,7 @@ async function runRealtimeSession(params) {
|
|
|
131032
131479
|
log$3.info(`Connecting to ${url}`);
|
|
131033
131480
|
let ws;
|
|
131034
131481
|
try {
|
|
131035
|
-
ws = new WebSocket(url, {
|
|
131482
|
+
ws = new WebSocket$1(url, {
|
|
131036
131483
|
headers: {
|
|
131037
131484
|
Authorization: `Bearer ${apiKey}`,
|
|
131038
131485
|
"OpenAI-Beta": "realtime=v1"
|
|
@@ -131065,7 +131512,7 @@ async function runRealtimeSession(params) {
|
|
|
131065
131512
|
} catch {}
|
|
131066
131513
|
}
|
|
131067
131514
|
function send(event) {
|
|
131068
|
-
if (ws.readyState === WebSocket.OPEN) ws.send(JSON.stringify(event));
|
|
131515
|
+
if (ws.readyState === WebSocket$1.OPEN) ws.send(JSON.stringify(event));
|
|
131069
131516
|
}
|
|
131070
131517
|
function sendAudioChunks() {
|
|
131071
131518
|
for (let offset = 0; offset < pcmData.length; offset += CHUNK_BYTES) send({
|