@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.
Files changed (393) hide show
  1. package/dist/{acp-cli-Du7NWZu3.js → acp-cli-2xKZfd6v.js} +3 -3
  2. package/dist/{acp-cli-BmKOFno7.js → acp-cli-q8e4aJoa.js} +3 -3
  3. package/dist/{agent-6dzad4Vk.js → agent-CZq9c4BW.js} +13 -13
  4. package/dist/{agent-step-C3wXb9Cx.js → agent-step-D5w2xNfi.js} +2 -2
  5. package/dist/{agent-step-Bf1GImWB.js → agent-step-DnVo1ws9.js} +2 -2
  6. package/dist/{agents-Dw2xlB7X.js → agents-3owoMugG.js} +7 -7
  7. package/dist/{agents-list-tool-Dq0lIpTn.js → agents-list-tool-Bjcc4I_6.js} +3 -3
  8. package/dist/{agents-list-tool-D9mHFLLa.js → agents-list-tool-CzUTgXov.js} +3 -3
  9. package/dist/{agents.config-1imA1H12.js → agents.config-Di1Fb5KI.js} +12 -12
  10. package/dist/{audit-DmbpL3cv.js → audit-B8L_aShb.js} +10 -10
  11. package/dist/{audit-DmJGMt0j.js → audit-Ck6MCUxx.js} +10 -10
  12. package/dist/{auth-choice-neer30p3.js → auth-choice-B6U5biA7.js} +4 -4
  13. package/dist/{auth-choice-CAmZkQLg.js → auth-choice-DmpOyRlb.js} +4 -4
  14. package/dist/{banner-DpI_geg3.js → banner-Be2ToLay.js} +1 -1
  15. package/dist/{browser-cli-z39mB4Us.js → browser-cli-BvtSNPci.js} +3 -3
  16. package/dist/{browser-cli-DDHEGwdS.js → browser-cli-De-S5eSp.js} +3 -3
  17. package/dist/{browser-tool-CWG74LXa.js → browser-tool-BVAlCkv9.js} +7 -7
  18. package/dist/{browser-tool-CZsdYOyF.js → browser-tool-CTNhVzit.js} +7 -7
  19. package/dist/build-info.json +3 -3
  20. package/dist/bundled/boot-md/handler.js +489 -42
  21. package/dist/bundled/kg-message-sync/handler.js +6 -2
  22. package/dist/bundled/session-memory/handler.js +47 -1
  23. package/dist/{call-DkT-xA-u.js → call-BrDNyQiZ.js} +2 -2
  24. package/dist/{call-COjGFB_A.js → call-Di0NGY7s.js} +2 -2
  25. package/dist/{call-BKa0221r.js → call-QNmBuec5.js} +1 -1
  26. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  27. package/dist/{canvas-tool-yqzOmVk8.js → canvas-tool-C8kJ8X6t.js} +2 -2
  28. package/dist/{canvas-tool-D7utVUj9.js → canvas-tool-v_tDod0l.js} +2 -2
  29. package/dist/{channel-options-DDJR7t6c.js → channel-options-BgB_XE_R.js} +1 -1
  30. package/dist/{channel-options-wAeX19Sd.js → channel-options-C3G3uvc8.js} +1 -1
  31. package/dist/{channel-web-B731iz_S.js → channel-web-C7erWB8c.js} +7 -7
  32. package/dist/{channels-cli-DyZ1QjyT.js → channels-cli-CWL9_dUC.js} +9 -9
  33. package/dist/{channels-cli-B2lgO976.js → channels-cli-D0WU7aEW.js} +9 -9
  34. package/dist/{chrome-BYfNS8BB.js → chrome-BUH9jMtc.js} +1 -1
  35. package/dist/{chrome-DKRiholg.js → chrome-WqxB18cs.js} +2 -2
  36. package/dist/{chrome-C3MXJRdA.js → chrome-xmfH0ICu.js} +2 -2
  37. package/dist/{clawbot-cli-ByrTjcjf.js → clawbot-cli-BqvWmOf2.js} +1 -1
  38. package/dist/{clawbot-cli-C-8EFRKv.js → clawbot-cli-Cy4xxEwA.js} +1 -1
  39. package/dist/cli/daemon-cli.js +1 -1
  40. package/dist/{cli-DNiohgQu.js → cli-C6-qelzK.js} +3 -3
  41. package/dist/{cli-D-m3umOT.js → cli-COPy2u3N.js} +3 -3
  42. package/dist/{client-D2hf2jQ7.js → client-BIS2Uayk.js} +4 -4
  43. package/dist/{client-BQN-LuPk.js → client-BoM5FwV4.js} +4 -4
  44. package/dist/{client-xu3whbFC.js → client-CTr2olAS.js} +4 -4
  45. package/dist/{command-registry-CB0tYTNA.js → command-registry-BSAY6wdm.js} +14 -14
  46. package/dist/{commands-registry-PW7IInMR.js → commands-registry-SXjoCA7i.js} +2 -2
  47. package/dist/{commands-registry-dia3m7-M.js → commands-registry-UnBqSA67.js} +2 -2
  48. package/dist/{completion-cli-Dg5pvBMY.js → completion-cli--3eqgAwK.js} +1 -1
  49. package/dist/{completion-cli-CSzxM5wY.js → completion-cli-RDTl_9qR.js} +2 -2
  50. package/dist/{config-BBoAK0dA.js → config-CkMQunWU.js} +6 -2
  51. package/dist/{config-ClkrcdId.js → config-DHYot764.js} +2 -2
  52. package/dist/{config-BgqD6SVw.js → config-DJTLRK5S.js} +2 -2
  53. package/dist/{config-cli-Denu0eEu.js → config-cli-BUCeVfP_.js} +4 -4
  54. package/dist/{config-cli-DtAjejub.js → config-cli-C1RrXpz0.js} +4 -4
  55. package/dist/{config-guard-DF1WNs2e.js → config-guard-CVx36OOi.js} +3 -3
  56. package/dist/config-guard-Csz0-uEX.js +2 -0
  57. package/dist/{config-validation-mmyHFUrK.js → config-validation-BVN3OEOd.js} +2 -2
  58. package/dist/{config-validation-lm5BwYiy.js → config-validation-C3jULSMI.js} +2 -2
  59. package/dist/{configure-CxrB1V4C.js → configure-CQEz5KQ3.js} +15 -15
  60. package/dist/{configure-CroxylRT.js → configure-akx6bWAt.js} +15 -15
  61. package/dist/{cron-cli-CYFkAl-f.js → cron-cli-BoMJUHUX.js} +2 -2
  62. package/dist/{cron-cli-CMjG3iLg.js → cron-cli-DvtMDSN2.js} +1 -1
  63. package/dist/{cron-tool-B3ffaxAO.js → cron-tool-Dcr3QMih.js} +5 -5
  64. package/dist/{cron-tool-BnUUPLV3.js → cron-tool-DllqQBKI.js} +5 -5
  65. package/dist/{daemon-cli-Bs0GD5xF.js → daemon-cli-CHfZAu4w.js} +9 -9
  66. package/dist/{daemon-cli-dauqwBcE.js → daemon-cli-D7K6zRR6.js} +9 -9
  67. package/dist/daemon-cli.js +6 -2
  68. package/dist/daemon-install-helpers-Ls_foXgf.js +2 -0
  69. package/dist/daemon-install-helpers-VzSaKa-j.js +2 -0
  70. package/dist/{daemon-runtime-C-XyxJRT.js → daemon-runtime--L-FasK6.js} +1 -1
  71. package/dist/{daemon-runtime-BLp3uThx.js → daemon-runtime-DKTkFmdZ.js} +1 -1
  72. package/dist/{deliver-C40KRMzm.js → deliver-BCijF1xe.js} +4 -4
  73. package/dist/{deliver-C5vVViLg.js → deliver-DiDYkpmh.js} +5 -5
  74. package/dist/{deliver-Dhut24vc.js → deliver-Ds0o_rCY.js} +3 -3
  75. package/dist/{deps-DRyTOIPO.js → deps-DFeGFeii.js} +6 -6
  76. package/dist/{devices-cli-DFPiK0W5.js → devices-cli-C9OvVBEs.js} +1 -1
  77. package/dist/{devices-cli-BfwxECLu.js → devices-cli-D4YJarjz.js} +1 -1
  78. package/dist/{diagnostic-Bzd3eHBU.js → diagnostic-CVAiT8Yi.js} +2 -2
  79. package/dist/{diagnostic-session-state-C8e7GxAm.js → diagnostic-session-state-Cj5nMvNL.js} +1 -1
  80. package/dist/{directory-cli-BX_a06o7.js → directory-cli--LuldZqc.js} +2 -2
  81. package/dist/{directory-cli-BQlGeeQK.js → directory-cli-DHpksyLI.js} +2 -2
  82. package/dist/{dispatcher-BWcYLowQ.js → dispatcher-D46WCdTe.js} +7 -7
  83. package/dist/{dispatcher-DefEQC4n.js → dispatcher-D8fgAnwH.js} +7 -7
  84. package/dist/{dm-policy-shared-Dm70u4Yr.js → dm-policy-shared-CEUsAI0F.js} +1 -1
  85. package/dist/{dm-policy-shared-DeX6SUMT.js → dm-policy-shared-DZglJJMa.js} +1 -1
  86. package/dist/{dns-cli-CxMaD4cI.js → dns-cli-C4L7EzEY.js} +2 -2
  87. package/dist/{dns-cli-DAdvx6qq.js → dns-cli-wSFONc42.js} +2 -2
  88. package/dist/{docs-cli-BR1YXIH4.js → docs-cli-4Dzg7LrJ.js} +1 -1
  89. package/dist/{docs-cli-BR8IKtP3.js → docs-cli-BWUGypxO.js} +1 -1
  90. package/dist/doctor-completion-B4bzzPyA.js +2 -0
  91. package/dist/doctor-completion-CE9xjPcf.js +2 -0
  92. package/dist/{doctor-completion-C3YAoPkP.js → doctor-completion-COKl8-PU.js} +1 -1
  93. package/dist/{doctor-completion-CkIy7FpB.js → doctor-completion-DPjvm1G7.js} +1 -1
  94. package/dist/{doctor-config-flow-CsP66Ij5.js → doctor-config-flow-CCqETtju.js} +4 -4
  95. package/dist/{doctor-config-flow-D_WRZLT3.js → doctor-config-flow-CRibe33c.js} +4 -4
  96. package/dist/entry.js +1 -1
  97. package/dist/{exec-approvals-cli-CLIzgYS8.js → exec-approvals-cli-CCqVDSOe.js} +2 -2
  98. package/dist/{exec-approvals-cli-DW2-7TEV.js → exec-approvals-cli-RRZ5wIP0.js} +2 -2
  99. package/dist/extensionAPI.d.ts +36 -2
  100. package/dist/extensionAPI.js +263 -20
  101. package/dist/{gateway-Duqy39t3.js → gateway-Bvd5CqY4.js} +3 -3
  102. package/dist/{gateway-CqhiWZQd.js → gateway-D_kwhuup.js} +3 -3
  103. package/dist/{gateway-cli-CUrxOlB4.js → gateway-cli-BbuSOWKq.js} +328 -244
  104. package/dist/{gateway-cli-BrM4d8E7.js → gateway-cli-C-AMSwgo.js} +324 -240
  105. package/dist/{gateway-0sVK3Rjy.js → gateway-q_fM0u-m.js} +2 -2
  106. package/dist/{gateway-rpc-BGgh3mTl.js → gateway-rpc-Ed0F1N_m.js} +1 -1
  107. package/dist/{gateway-rpc-9WQJwkTJ.js → gateway-rpc-J14XBNuM.js} +1 -1
  108. package/dist/{gateway-tool-DtlbDV6N.js → gateway-tool-Bi96OPGe.js} +3 -3
  109. package/dist/{gateway-tool-CMd3r3O5.js → gateway-tool-CNaxsMbd.js} +3 -3
  110. package/dist/{github-copilot-auth-Dh5sombA.js → github-copilot-auth-BmlL3P7c.js} +2 -2
  111. package/dist/{github-copilot-auth-ClDHXpfT.js → github-copilot-auth-DhjScF3O.js} +2 -2
  112. package/dist/{gmail-Dkq3kngs.js → gmail-BuCz-KEp.js} +1 -1
  113. package/dist/{gmail-DpPYd91j.js → gmail-C1O6grHu.js} +1 -1
  114. package/dist/{health-BlZEOPXK.js → health-6TTjEZoo.js} +8 -8
  115. package/dist/{health-BJ-Irw3K.js → health-BJbAa4df.js} +8 -8
  116. package/dist/{hooks-cli-Bqd1BR2r.js → hooks-cli-C0Z9dRtP.js} +2 -2
  117. package/dist/{hooks-cli-CR_bwhdf.js → hooks-cli-DFrRHJ1j.js} +2 -2
  118. package/dist/{host-D3VZGype.js → host-C8oRBLB6.js} +1 -1
  119. package/dist/{host-CafVbu36.js → host-DCfZcVR_.js} +1 -1
  120. package/dist/{image-tool-CwCxITcF.js → image-tool-D_dhIXLT.js} +2 -2
  121. package/dist/{image-tool-BY8NbIQs.js → image-tool-y-FDf6-M.js} +2 -2
  122. package/dist/index.d.ts +36 -2
  123. package/dist/index.js +10 -10
  124. package/dist/{io-TKYkFbcF.js → io-C_Q6AU5E.js} +2 -2
  125. package/dist/{io-oiyyZuuG.js → io-CpUiX-Lv.js} +2 -2
  126. package/dist/{ir-CP9ltYx0.js → ir-D0vxg3iM.js} +2 -2
  127. package/dist/{knowledge-graph-Dd0rSl0Q.js → knowledge-graph-BFnL_feN.js} +1 -1
  128. package/dist/{lifecycle-core-C7W7YZwn.js → lifecycle-core-CCUOBmZs.js} +3 -3
  129. package/dist/{lifecycle-core-BQztQGrv.js → lifecycle-core-CX37YE4Z.js} +3 -3
  130. package/dist/llm-slug-generator.js +47 -1
  131. package/dist/{logs-cli-CdAJHTuP.js → logs-cli-BYdqoMkJ.js} +2 -2
  132. package/dist/{logs-cli-lcuW5kPv.js → logs-cli-Comxq7pP.js} +2 -2
  133. package/dist/{manager-DeR0znMP.js → manager-DvUEsXx3.js} +1 -1
  134. package/dist/{memory-cli-BxVGlaEm.js → memory-cli-Bz--RMDo.js} +3 -3
  135. package/dist/{memory-cli-Y_w-AsVt.js → memory-cli-ilkHc_D4.js} +3 -3
  136. package/dist/{message-action-runner-CE4bDq6V.js → message-action-runner-BZQOV03k.js} +9 -9
  137. package/dist/{message-action-runner-BdclEzxx.js → message-action-runner-J8W9BPhj.js} +9 -9
  138. package/dist/{message-tool-BpFLUe6E.js → message-tool-BHJpugQ6.js} +6 -6
  139. package/dist/{message-tool-_MODnjgC.js → message-tool-GTRrYMuR.js} +6 -6
  140. package/dist/{model-catalog-AiXYmm_2.js → model-catalog-7Ew4iFgU.js} +3 -3
  141. package/dist/{model-catalog-CIgjk707.js → model-catalog-B1R3eepi.js} +3 -3
  142. package/dist/{model-fallback-DsefSc26.js → model-fallback--afWtYyY.js} +2 -2
  143. package/dist/{model-fallback-C92G-WUW.js → model-fallback-DXR7ZbvM.js} +2 -2
  144. package/dist/{model-fallback-Dwkt7imi.js → model-fallback-GSMox3YK.js} +3 -3
  145. package/dist/{model-picker-B_SEgewv.js → model-picker--bqpbxbC.js} +2 -2
  146. package/dist/{model-picker-DLr3xagY.js → model-picker-DJpEjKZT.js} +2 -2
  147. package/dist/{models-YFKEQsfy.js → models-CETV4zZ3.js} +12 -12
  148. package/dist/{models-cli-DuHCNW7r.js → models-cli-B5caj79x.js} +2 -2
  149. package/dist/{models-cli-yoQKaR0X.js → models-cli-DPT6gYJm.js} +12 -12
  150. package/dist/{models-config-BWzVL4DK.js → models-config-CX3wpMrd.js} +2 -2
  151. package/dist/{models-config-Df7nRCU-.js → models-config-ChIAfklN.js} +2 -2
  152. package/dist/{node-cli-D4pCYQMW.js → node-cli-4VRhz_1P.js} +7 -7
  153. package/dist/{node-cli-DzvdQBVp.js → node-cli-DyoQqYo1.js} +7 -7
  154. package/dist/{nodes-cli-CHWJMLm6.js → nodes-cli-CNQ633Hz.js} +5 -5
  155. package/dist/{nodes-cli-cjiOPFLH.js → nodes-cli-Dl3KtKoX.js} +5 -5
  156. package/dist/{nodes-tool-CR8MmpTZ.js → nodes-tool-BkgixWxk.js} +3 -3
  157. package/dist/{nodes-tool-DxMgloLr.js → nodes-tool-BmT8LWTt.js} +3 -3
  158. package/dist/{nodes-utils-BHrOJOWk.js → nodes-utils-B1jr4oHE.js} +1 -1
  159. package/dist/{nodes-utils-BRFzmJmB.js → nodes-utils-CVaBTJ5V.js} +1 -1
  160. package/dist/{nodes-utils-Eo4ilZ36.js → nodes-utils-DVNKajNN.js} +1 -1
  161. package/dist/{onboard-D3EkmOs0.js → onboard-BSb-bXtw.js} +9 -9
  162. package/dist/{onboard-DdguleAq.js → onboard-DHzBfhN9.js} +9 -9
  163. package/dist/{onboard-channels-DBltNYY2.js → onboard-channels-BP5oQVqD.js} +1 -1
  164. package/dist/{onboard-channels-cSzxNqaz.js → onboard-channels-CNmc5fTo.js} +1 -1
  165. package/dist/{onboard-channels-CeAsHBgW.js → onboard-channels-DHeOj8d6.js} +1 -1
  166. package/dist/{onboard-channels-ZDMAODeW.js → onboard-channels-DqoegMtk.js} +1 -1
  167. package/dist/{onboard-custom-DqkrqRdv.js → onboard-custom-B7OO328d.js} +2 -2
  168. package/dist/{onboard-custom-DMHUJH5-.js → onboard-custom-BODmfSpC.js} +1 -1
  169. package/dist/{onboard-custom-Vb7K9679.js → onboard-custom-BZv_tJxB.js} +1 -1
  170. package/dist/{onboard-custom-DOEx3xcN.js → onboard-custom-D7LvDFdH.js} +2 -2
  171. package/dist/{onboard-helpers-D60Qp1ne.js → onboard-helpers-B9IGa3vx.js} +5 -5
  172. package/dist/{onboard-helpers-7fbTU2tq.js → onboard-helpers-BKca3qU4.js} +1 -1
  173. package/dist/{onboard-helpers-DCve32jF.js → onboard-helpers-DP2LE5Oh.js} +5 -5
  174. package/dist/{onboard-helpers-xGGsG9to.js → onboard-helpers-HkYz_NGi.js} +1 -1
  175. package/dist/{onboard-remote-B13DRLJa.js → onboard-remote-DQrtJWPJ.js} +1 -1
  176. package/dist/{onboard-remote-C6s3bR7X.js → onboard-remote-kBPMv7zo.js} +1 -1
  177. package/dist/{onboard-skills-BU0OKpqj.js → onboard-skills-Cd2WeuBn.js} +3 -3
  178. package/dist/{onboard-skills-CKzdl2Ph.js → onboard-skills-KRXxu17b.js} +3 -3
  179. package/dist/{onboarding-BkiZ3JkU.js → onboarding-Cg42Uf0E.js} +11 -11
  180. package/dist/{onboarding-C--TfoeE.js → onboarding-nPyIyp8f.js} +11 -11
  181. package/dist/{onboarding.finalize-CUkOVH_E.js → onboarding.finalize-B8gctARP.js} +9 -9
  182. package/dist/{onboarding.finalize-Damz4ET-.js → onboarding.finalize-BoMhnz3U.js} +9 -9
  183. package/dist/{onboarding.gateway-config-BA3PQJBL.js → onboarding.gateway-config-Co5c5Jsj.js} +2 -2
  184. package/dist/{onboarding.gateway-config-4wtmgfdq.js → onboarding.gateway-config-DkkPCpUx.js} +2 -2
  185. package/dist/{outbound-send-deps-BmDpImVK.js → outbound-send-deps-Dg8cSoFv.js} +6 -6
  186. package/dist/{outbound-session-B9B7Vsxm.js → outbound-session-BCNTkSVV.js} +3 -3
  187. package/dist/{outbound-session-pZGUQ4vz.js → outbound-session-BG0ZMrIB.js} +3 -3
  188. package/dist/{pairing-cli-CRnZKVjx.js → pairing-cli-B_sfgSbk.js} +2 -2
  189. package/dist/{pairing-cli-aoyKpG0L.js → pairing-cli-mUAKj093.js} +2 -2
  190. package/dist/{pi-embedded-helpers-D-m7pmXE.js → pi-embedded-helpers-BsRnajNh.js} +1 -1
  191. package/dist/{pi-embedded-helpers-CkhQP2gU.js → pi-embedded-helpers-CSxJBpFl.js} +1 -1
  192. package/dist/{pi-embedded-helpers-BbHYim54.js → pi-embedded-helpers-CUfPWD_N.js} +6 -5
  193. package/dist/{pi-embedded-utils-C6MaVLHj.js → pi-embedded-utils-BlNfBen_.js} +1 -1
  194. package/dist/{pi-embedded-utils-DIGchmzO.js → pi-embedded-utils-Bql42QTv.js} +1 -1
  195. package/dist/{pi-embedded-utils-Ip0GsjWb.js → pi-embedded-utils-BtyCE2ZK.js} +1 -1
  196. package/dist/{pi-model-discovery-Ot_Q_yYa.js → pi-model-discovery-BV73T1am.js} +1 -1
  197. package/dist/{pi-tools.policy-Dt2kTSid.js → pi-tools.policy-DDJ31-0E.js} +3 -3
  198. package/dist/{plugin-registry-BZCSZFQn.js → plugin-registry-Dq33ZU89.js} +3 -3
  199. package/dist/{plugin-registry-DMRnpxA2.js → plugin-registry-RoPLmlrM.js} +3 -3
  200. package/dist/plugin-sdk/agents/bash/bash-tools.exec-runtime.d.ts +4 -0
  201. package/dist/plugin-sdk/agents/pi-embedded-runner/tool-result-context-guard.d.ts +5 -0
  202. package/dist/plugin-sdk/agents/pi-embedded-runner/tool-result-reduce.d.ts +8 -0
  203. package/dist/plugin-sdk/agents/sandbox/tier0/index.d.ts +3 -0
  204. package/dist/plugin-sdk/agents/sandbox/tier0/registry.d.ts +28 -0
  205. package/dist/plugin-sdk/agents/sandbox/tier0/router.d.ts +18 -0
  206. package/dist/plugin-sdk/agents/sandbox/tier0/virtual-sandbox.d.ts +30 -0
  207. package/dist/plugin-sdk/agents/sandbox/types.d.ts +5 -0
  208. package/dist/plugin-sdk/agents/sections/behaviour.d.ts +9 -0
  209. package/dist/plugin-sdk/agents/skills/compact-prompt.d.ts +12 -0
  210. package/dist/plugin-sdk/agents/skills/workspace.d.ts +4 -0
  211. package/dist/plugin-sdk/channels/discord.js +487 -40
  212. package/dist/plugin-sdk/channels/googlechat.js +3 -1
  213. package/dist/plugin-sdk/channels/imessage.js +487 -40
  214. package/dist/plugin-sdk/channels/line.js +489 -42
  215. package/dist/plugin-sdk/channels/msteams.js +3 -1
  216. package/dist/plugin-sdk/channels/signal.js +487 -40
  217. package/dist/plugin-sdk/channels/slack.js +487 -40
  218. package/dist/plugin-sdk/channels/telegram.js +487 -40
  219. package/dist/plugin-sdk/channels/whatsapp.js +488 -41
  220. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +8 -0
  221. package/dist/plugin-sdk/config/types.agents.d.ts +4 -0
  222. package/dist/plugin-sdk/config/types.gateway.d.ts +8 -0
  223. package/dist/plugin-sdk/config/types.skills.d.ts +7 -0
  224. package/dist/plugin-sdk/config/types.tools.d.ts +8 -0
  225. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +3 -0
  226. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +9 -0
  227. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +6 -0
  228. package/dist/plugin-sdk/config/zod-schema.d.ts +26 -0
  229. package/dist/plugin-sdk/core.js +6 -2
  230. package/dist/plugin-sdk/index.js +501 -54
  231. package/dist/{plugins-cli-BKMBY-np.js → plugins-cli-BA0wJM-k.js} +3 -3
  232. package/dist/{plugins-cli-D3_BCsVN.js → plugins-cli-a-DWljrI.js} +3 -3
  233. package/dist/{program-context-CVLR19jJ.js → program-context-CUZUPsiC.js} +43 -43
  234. package/dist/{program-DFvYiOXj.js → program-gbYi5UIa.js} +7 -7
  235. package/dist/{prompt-select-styled-D-axSDjg.js → prompt-select-styled-DAdqH32e.js} +17 -17
  236. package/dist/{prompt-select-styled-n1nMLPsI.js → prompt-select-styled-lKRNiihE.js} +17 -17
  237. package/dist/{push-apns-Dh6xZki_.js → push-apns-BhtcU_Da.js} +1 -1
  238. package/dist/{push-apns-D4wjtIOe.js → push-apns-D69Af97u.js} +1 -1
  239. package/dist/{pw-ai-2VhRhF2B.js → pw-ai-Ba9xJlWV.js} +2 -2
  240. package/dist/{pw-ai-Blk_s6D5.js → pw-ai-Cvjg4UOk.js} +2 -2
  241. package/dist/{pw-ai-B6oeo1wI.js → pw-ai-DiwvYyv3.js} +2 -2
  242. package/dist/{pw-session-Crb06R5v.js → pw-session-BZ1pAX5r.js} +1 -1
  243. package/dist/{pw-session-DmaV4mTM.js → pw-session-BxiZ6YYh.js} +1 -1
  244. package/dist/{pw-session-CATqkBLI.js → pw-session-EHew9i-n.js} +1 -1
  245. package/dist/{qr-cli-B3IWV_8b.js → qr-cli-CFsUuFR-.js} +2 -2
  246. package/dist/{qr-cli-SfioxAM_.js → qr-cli-SfzcWdI0.js} +2 -2
  247. package/dist/{register.agent-DDVZDpQC.js → register.agent-B4bNkRtB.js} +11 -11
  248. package/dist/{register.agent-Dfk70LYq.js → register.agent-DHCAqxWX.js} +8 -8
  249. package/dist/{register.channel-BvMvb6ip.js → register.channel-B1vKkWV7.js} +2 -2
  250. package/dist/{register.channel-BJtyCgD7.js → register.channel-D0lVq7dU.js} +2 -2
  251. package/dist/{register.configure-WQlTjNyz.js → register.configure-DFSJd0YH.js} +1 -1
  252. package/dist/{register.configure-BdKChDnl.js → register.configure-DIHFldND.js} +1 -1
  253. package/dist/{register.drone-B-xrDJpJ.js → register.drone-Do4i5ZE9.js} +2 -2
  254. package/dist/{register.drone-DSHJ5vq1.js → register.drone-Tckr0QFo.js} +2 -2
  255. package/dist/{register.maintenance-DoMoBeyF.js → register.maintenance-Bw9G1eZ0.js} +5 -5
  256. package/dist/{register.maintenance-DnP_N0ye.js → register.maintenance-D5LVEuKI.js} +5 -5
  257. package/dist/{register.message-Xl-pZILp.js → register.message-BsGRyTVT.js} +7 -7
  258. package/dist/{register.message-Cdp8TM0J.js → register.message-C_51tZCE.js} +8 -8
  259. package/dist/{register.onboard-BzZPizJ0.js → register.onboard-CMusJAzJ.js} +1 -1
  260. package/dist/{register.onboard-IPqLR5Zb.js → register.onboard-Ngaw9ikW.js} +1 -1
  261. package/dist/{register.setup-DLzSctB1.js → register.setup-aKi_hurQ.js} +4 -4
  262. package/dist/{register.setup-BX8Ya9qY.js → register.setup-xpiPRct8.js} +4 -4
  263. package/dist/{register.status-health-sessions-CXIHidz6.js → register.status-health-sessions-B87H-g0g.js} +6 -6
  264. package/dist/{register.status-health-sessions-DnNAMB3T.js → register.status-health-sessions-D2rMUW_t.js} +4 -4
  265. package/dist/{register.subclis-DAt5WEzu.js → register.subclis-DB0kFld6.js} +30 -30
  266. package/dist/{reply-D_uwJ_hb.js → reply-CNJWciSj.js} +442 -52
  267. package/dist/{reply-payloads-BBHotu7W.js → reply-payloads-BS889lPA.js} +2 -2
  268. package/dist/{reply-payloads-CikGrhVL.js → reply-payloads-Dk-zLmJC.js} +2 -2
  269. package/dist/{reply-prefix-eSF5kXs5.js → reply-prefix-CfrIMbCM.js} +1 -1
  270. package/dist/{reply-prefix-CYbvVBOV.js → reply-prefix-D9MQ_veY.js} +1 -1
  271. package/dist/{resolve-route-FLi7kFo1.js → resolve-route-0arQsERr.js} +1 -1
  272. package/dist/{resolve-route-DiiBj8NL.js → resolve-route-DwDSX3mI.js} +2 -2
  273. package/dist/{routes-DFLRIpty.js → routes-DubNFADQ.js} +4 -4
  274. package/dist/{routes-CagC77kh.js → routes-hcdbDZ60.js} +4 -4
  275. package/dist/{rpc-DxdMMngu.js → rpc-CpEGWO4f.js} +1 -1
  276. package/dist/{rpc-dZcSayi6.js → rpc-DShIx1il.js} +1 -1
  277. package/dist/{run-main-Cw7JO4bk.js → run-main-CgrHeBpO.js} +20 -20
  278. package/dist/{sandbox-DX1DKAJb.js → sandbox-BYK6Qgnd.js} +9 -8
  279. package/dist/{sandbox-pZvVQZ-a.js → sandbox-CDGF9AVA.js} +9 -8
  280. package/dist/{sandbox-cli-DsFqky0Y.js → sandbox-cli-3v8NFyXC.js} +4 -4
  281. package/dist/{sandbox-cli--NZU5yHm.js → sandbox-cli-DmXP8NkD.js} +4 -4
  282. package/dist/{security-cli-B9rFqAom.js → security-cli-B23Rjmu8.js} +3 -3
  283. package/dist/{security-cli-DUGFqvJc.js → security-cli-C7jxF7EW.js} +3 -3
  284. package/dist/{send-OcwoynpB.js → send-B3EXtlyb.js} +2 -2
  285. package/dist/{send-BUUHmWJ3.js → send-Boe93Q4V.js} +2 -2
  286. package/dist/{send-Czh3Yz38.js → send-Br1IcpxR.js} +2 -2
  287. package/dist/{send-mztwgKny.js → send-BrvRGJ0_.js} +3 -3
  288. package/dist/{send-CRNffLsb.js → send-BuiJlYF8.js} +2 -2
  289. package/dist/{send-DTQ_lSWv.js → send-DPURnZWZ.js} +2 -2
  290. package/dist/{send-Bh69NFd_.js → send-DT-x-IFQ.js} +3 -3
  291. package/dist/{send-CuFw68zk.js → send-D_PQuZ3x.js} +2 -2
  292. package/dist/{send-Ckq83rOO.js → send-DhuPDKRX.js} +2 -2
  293. package/dist/{server-context-D-VUH9Bz.js → server-context-BRKaxwJB.js} +6 -6
  294. package/dist/{server-context-BlUcP_zF.js → server-context-CvEQbenq.js} +6 -6
  295. package/dist/{server-context-BNI2cc_e.js → server-context-nyYhGUmI.js} +5 -5
  296. package/dist/{server-node-events-DQqHB_8B.js → server-node-events-B6rUT0PE.js} +8 -8
  297. package/dist/{server-node-events-BqG45BMs.js → server-node-events-D90DAPI1.js} +10 -10
  298. package/dist/{session-status-tool-CN-Juxjq.js → session-status-tool-BIN4ooy0.js} +6 -6
  299. package/dist/{session-status-tool-DnD354sJ.js → session-status-tool-CtbF1-VI.js} +7 -7
  300. package/dist/{session-utils-0BYkk3f_.js → session-utils-DDCd8HC9.js} +4 -4
  301. package/dist/{sessions-CismtNoo.js → sessions-ByNQiqr2.js} +1 -1
  302. package/dist/{sessions-D_b2UXud.js → sessions-C0Qs0Flz.js} +3 -3
  303. package/dist/{sessions-0d-dBE8D.js → sessions-CPoA3oJo.js} +4 -4
  304. package/dist/{sessions-Z8JCL_sa.js → sessions-CW4tzKA-.js} +3 -3
  305. package/dist/{sessions-helpers-Crh_NTSX.js → sessions-helpers-DdqQiSR6.js} +3 -3
  306. package/dist/{sessions-helpers-JsbUTHcP.js → sessions-helpers-vwVJ1Vy4.js} +3 -3
  307. package/dist/{sessions-helpers-uZ0Taeh3.js → sessions-helpers-xH-u6Byb.js} +3 -3
  308. package/dist/{sessions-history-tool-6VYdT_kc.js → sessions-history-tool-BO81rMTT.js} +5 -5
  309. package/dist/{sessions-history-tool-6WMcHpxy.js → sessions-history-tool-DKXNjv5X.js} +5 -5
  310. package/dist/{sessions-list-tool-CwTLRwGc.js → sessions-list-tool-6DJtypdD.js} +5 -5
  311. package/dist/{sessions-list-tool-CwGp-l3S.js → sessions-list-tool-s_y-_4Uv.js} +5 -5
  312. package/dist/{sessions-send-tool-BKNgicV5.js → sessions-send-tool-C3ggqtMe.js} +5 -5
  313. package/dist/{sessions-send-tool-Dl4HKGgL.js → sessions-send-tool-roh-kyNw.js} +5 -5
  314. package/dist/{sessions-spawn-tool-DqfoPFrK.js → sessions-spawn-tool-BgkkNWMg.js} +1 -1
  315. package/dist/{sessions-spawn-tool-Bguo3O1I.js → sessions-spawn-tool-UAd65WIb.js} +1 -1
  316. package/dist/{shared-Cr0N9iap.js → shared-BysrBqEi.js} +2 -2
  317. package/dist/{shared-B7QVxDsn.js → shared-CjEFJgna.js} +2 -2
  318. package/dist/{skills-DkeUrhAT.js → skills-Bf4ZPGHe.js} +1 -1
  319. package/dist/{skills-DMPRReoe.js → skills-DDhWBAii.js} +1 -1
  320. package/dist/{skills-cli--8zG3UQk.js → skills-cli-DnO1g2oN.js} +6 -6
  321. package/dist/{skills-cli-D334Q0dM.js → skills-cli-DxFMRja6.js} +6 -6
  322. package/dist/{skills-install-DAphGXoj.js → skills-install-Bo9PwVmT.js} +2 -2
  323. package/dist/{skills-install-BNR2Nfa3.js → skills-install-DkZHLCih.js} +2 -2
  324. package/dist/{skills-status-D54inzOP.js → skills-status-8p-KrlIF.js} +2 -2
  325. package/dist/{skills-status-DDzkv-Rj.js → skills-status-CBTT87BN.js} +2 -2
  326. package/dist/{status-BIvJQtxV.js → status-BpgCPxM4.js} +3 -3
  327. package/dist/{status-JJ8BdlhI.js → status-Db6PPdwI.js} +3 -3
  328. package/dist/{status-DosDYGut.js → status-DyQwrglF.js} +12 -12
  329. package/dist/{status-gWt5DmvD.js → status-Dz_-4ATW.js} +13 -13
  330. package/dist/{status.update-BnYycijV.js → status.update-BBLk_Q3P.js} +1 -1
  331. package/dist/{status.update-D0KmfrNX.js → status.update-OhQ3FS7R.js} +1 -1
  332. package/dist/{subagent-registry-0zv9UyYz.js → subagent-registry-C_UHFYRY.js} +443 -53
  333. package/dist/{subagents-tool-usr_WpP2.js → subagents-tool-BdWYv7Mb.js} +6 -6
  334. package/dist/{subagents-tool-m92Kjy1x.js → subagents-tool-DjPwvSat.js} +6 -6
  335. package/dist/{system-cli-t4Qk2mcC.js → system-cli-BQJK1EiV.js} +1 -1
  336. package/dist/{system-cli-BxYnYU05.js → system-cli-Cj6oDS1q.js} +1 -1
  337. package/dist/{systemd-hints-JlNoKkcf.js → systemd-hints-BKM-UvY_.js} +1 -1
  338. package/dist/{systemd-hints-C21GmUrX.js → systemd-hints-BdVIEvO3.js} +1 -1
  339. package/dist/{targets-BWPxk4rU.js → targets-BpZ7t54u.js} +1 -1
  340. package/dist/{tools-F4g3knJE.js → tools-D3fRPoa3.js} +421 -38
  341. package/dist/{tools-cli-Cmg7InJT.js → tools-cli-CjniP2oD.js} +3 -3
  342. package/dist/{tools-cli-BPV7GpBg.js → tools-cli-DLPn3_f-.js} +3 -3
  343. package/dist/{tts-CC3WSaW9.js → tts-BhWpmVdG.js} +1 -1
  344. package/dist/{tts-CRpGlsYO.js → tts-DrFhyLnB.js} +1 -1
  345. package/dist/{tts-OJZ7iSKo.js → tts-DyQvwyVi.js} +1 -1
  346. package/dist/{tts-tool-DsLN8-ZT.js → tts-tool-CdaKVWBM.js} +3 -3
  347. package/dist/{tts-tool-B73xs8Vs.js → tts-tool-CfEs7ebD.js} +3 -3
  348. package/dist/{tui-BRdOjXJy.js → tui-CNuz7tKz.js} +5 -5
  349. package/dist/{tui-PSDwA6SF.js → tui-DJvjN1xV.js} +5 -5
  350. package/dist/{tui-cli-DMD7clw2.js → tui-cli-CLoyYSXd.js} +1 -1
  351. package/dist/{tui-cli-DHWrleUP.js → tui-cli-DhhA87TG.js} +1 -1
  352. package/dist/{update-cli-DlxYgSAN.js → update-cli-0lBEnFj5.js} +8 -8
  353. package/dist/{update-cli-Du5BbYfl.js → update-cli-Cc4jgBsG.js} +8 -8
  354. package/dist/{validation-CG8Ui8_v.js → validation-B-XaORq2.js} +5 -1
  355. package/dist/{validation-T0CNq_JP.js → validation-DuFmPzCB.js} +5 -1
  356. package/dist/web-BUkj8HIz.js +2 -0
  357. package/dist/{web-CtwxKIvO.js → web-BY79LufL.js} +8 -8
  358. package/dist/{web-search-B5d6ODyB.js → web-search-CCeGZMBD.js} +4 -4
  359. package/dist/{web-search-CV42wG57.js → web-search-D1pX-Tuc.js} +4 -4
  360. package/dist/{webhooks-cli-tSv_Pzzq.js → webhooks-cli-B3LP9UKY.js} +5 -5
  361. package/dist/{webhooks-cli-BeHnKv6z.js → webhooks-cli-C5xR4Wu5.js} +5 -5
  362. package/dist/{workspace-Dov1_dCF.js → workspace-BwzunhL2.js} +49 -3
  363. package/dist/{workspace-CSGZ3DZ_.js → workspace-CVAkpBJa.js} +48 -2
  364. package/dist/{workspace-CSBTFAxh.js → workspace-D5-DoTNR.js} +48 -2
  365. package/dist/{workspace-dirs-Yo4RZm7s.js → workspace-dirs-CJDJUlno.js} +3 -3
  366. package/docs/superpowers/plans/2026-06-10-phase1-quick-wins.md +1260 -0
  367. package/docs/superpowers/specs/2026-06-10-recon-quick-wins-and-silent-agent-design.md +151 -0
  368. package/extensions/alert-watcher/index.js +47 -1
  369. package/extensions/bluebubbles/index.js +5 -1
  370. package/extensions/feishu/index.js +5 -1
  371. package/extensions/flows/index.js +52 -2
  372. package/extensions/gmail-calendar/index.js +47 -1
  373. package/extensions/googlechat/index.js +5 -1
  374. package/extensions/irc/index.js +5 -1
  375. package/extensions/llm-task/index.js +47 -1
  376. package/extensions/matrix/{credentials-B1q3x-N0.mjs → credentials-BtiLgiNR.mjs} +5 -1
  377. package/extensions/matrix/index.js +3 -3
  378. package/extensions/matrix/{matrix-B9amoffh.mjs → matrix-CWlUSNSh.mjs} +2 -2
  379. package/extensions/matrix/{resolve-targets-Dw7tv-7K.mjs → resolve-targets-ml4iU4Bd.mjs} +2 -2
  380. package/extensions/mattermost/index.js +5 -1
  381. package/extensions/nextcloud-talk/index.js +5 -1
  382. package/extensions/tlon/index.js +47 -1
  383. package/extensions/wati/index.js +5 -1
  384. package/extensions/weixin/index.js +5 -1
  385. package/extensions/zalo/index.js +5 -1
  386. package/extensions/zalouser/index.js +5 -1
  387. package/package.json +3 -2
  388. package/dist/config-guard-BfdkKYAa.js +0 -2
  389. package/dist/daemon-install-helpers-4gMthp-_.js +0 -2
  390. package/dist/daemon-install-helpers-BLXYJ3C5.js +0 -2
  391. package/dist/doctor-completion-DKJRw1m1.js +0 -2
  392. package/dist/doctor-completion-DMcJXsi0.js +0 -2
  393. package/dist/web-Dj8nR4rt.js +0 -2
@@ -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 as WebSocket$1, WebSocketServer } from "ws";
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$6 = __esmMin((() => {
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$5 = __esmMin((() => {
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$5();
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$4 = __esmMin((() => {
2647
+ var init_registry$5 = __esmMin((() => {
2647
2648
  init_instant_commands();
2648
- init_registry$6();
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$4();
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$5();
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$5();
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$5();
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$5();
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.14-dev.20260616061802";
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$5();
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$5();
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$5();
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$3 = __esmMin((() => {
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$3();
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$3();
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$3();
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$3();
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$5();
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$5();
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$5();
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$1(url, wsOptions);
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$1.OPEN) throw new Error("gateway not connected");
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$5();
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> <description> entries.",
76349
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
76350
- "- If multiple could apply: choose the most specific one, then read/follow it.",
76351
- "- If none clearly apply: do not read any SKILL.md.",
76352
- "Constraints: never read more than one skill up front; only read after selecting.",
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$5();
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$5();
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$5();
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$6();
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$4();
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({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
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$5();
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({