@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
@@ -48,6 +48,7 @@ import { Readable } from "node:stream";
48
48
  import chokidar from "chokidar";
49
49
  import { WebClient } from "@slack/web-api";
50
50
  import { Type as Type$1 } from "@sinclair/typebox";
51
+ import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
51
52
  import fs$2 from "fs/promises";
52
53
  import os$1 from "os";
53
54
  import path$1 from "path";
@@ -1989,6 +1990,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
1989
1990
  ]).optional(),
1990
1991
  perSession: z.boolean().optional(),
1991
1992
  workspaceRoot: z.string().optional(),
1993
+ tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
1992
1994
  docker: SandboxDockerSchema,
1993
1995
  browser: SandboxBrowserSchema,
1994
1996
  prune: SandboxPruneSchema
@@ -2190,7 +2192,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
2190
2192
  exec: ToolExecSchema,
2191
2193
  fs: ToolFsSchema,
2192
2194
  subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
2193
- sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
2195
+ sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
2196
+ outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
2194
2197
  }).strict().superRefine((value, ctx) => {
2195
2198
  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)");
2196
2199
  }).optional();
@@ -2619,7 +2622,7 @@ function notifyMcpToolsChanged() {
2619
2622
  }
2620
2623
  }
2621
2624
  var tools, sseSubscribers, EMPTY_OBJECT_SCHEMA;
2622
- var init_registry$6 = __esmMin((() => {
2625
+ var init_registry$7 = __esmMin((() => {
2623
2626
  tools = /* @__PURE__ */ new Map();
2624
2627
  sseSubscribers = /* @__PURE__ */ new Set();
2625
2628
  EMPTY_OBJECT_SCHEMA = {
@@ -3373,9 +3376,9 @@ function createPluginRegistry(registryParams) {
3373
3376
  registerTypedHook
3374
3377
  };
3375
3378
  }
3376
- var init_registry$5 = __esmMin((() => {
3379
+ var init_registry$6 = __esmMin((() => {
3377
3380
  init_instant_commands();
3378
- init_registry$6();
3381
+ init_registry$7();
3379
3382
  init_internal_hooks();
3380
3383
  init_utils$2();
3381
3384
  init_channel_link_runtime();
@@ -3409,7 +3412,7 @@ function setActivePluginRuntime(runtime) {
3409
3412
  }
3410
3413
  var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$3, configState, runtimeState;
3411
3414
  var init_runtime$3 = __esmMin((() => {
3412
- init_registry$5();
3415
+ init_registry$6();
3413
3416
  REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
3414
3417
  CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
3415
3418
  RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
@@ -3456,7 +3459,7 @@ function normalizeAnyChannelId(raw) {
3456
3459
  })?.plugin.id ?? null;
3457
3460
  }
3458
3461
  var CHAT_CHANNEL_ORDER, CHANNEL_IDS, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
3459
- var init_registry$4 = __esmMin((() => {
3462
+ var init_registry$5 = __esmMin((() => {
3460
3463
  init_runtime$3();
3461
3464
  CHAT_CHANNEL_ORDER = [
3462
3465
  "telegram",
@@ -3878,7 +3881,7 @@ function createSubsystemLogger(subsystem) {
3878
3881
  }
3879
3882
  var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
3880
3883
  var init_subsystem = __esmMin((() => {
3881
- init_registry$4();
3884
+ init_registry$5();
3882
3885
  init_globals();
3883
3886
  init_runtime$2();
3884
3887
  init_progress_line();
@@ -4107,7 +4110,7 @@ var init_shell_env = __esmMin((() => {
4107
4110
  //#region src/version.ts
4108
4111
  var VERSION;
4109
4112
  var init_version$1 = __esmMin((() => {
4110
- VERSION = "2026.6.14-dev.20260616061802";
4113
+ VERSION = "2026.6.16-dev";
4111
4114
  }));
4112
4115
  //#endregion
4113
4116
  //#region src/config/agent-dirs.ts
@@ -14813,6 +14816,7 @@ var init_zod_schema = __esmMin((() => {
14813
14816
  importContacts: z.boolean().optional()
14814
14817
  }).strict().optional(),
14815
14818
  memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
14819
+ trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
14816
14820
  personalAgentObservations: z.object({
14817
14821
  enabled: z.boolean().optional(),
14818
14822
  dbPath: z.string().optional()
@@ -14925,6 +14929,7 @@ var init_zod_schema = __esmMin((() => {
14925
14929
  memory: MemorySchema,
14926
14930
  skills: z.object({
14927
14931
  allowBundled: z.array(z.string()).optional(),
14932
+ progressiveDisclosure: z.boolean().optional(),
14928
14933
  load: z.object({
14929
14934
  extraDirs: z.array(z.string()).optional(),
14930
14935
  watch: z.boolean().optional(),
@@ -15300,7 +15305,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
15300
15305
  var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
15301
15306
  var init_validation = __esmMin((() => {
15302
15307
  init_agent_scope();
15303
- init_registry$4();
15308
+ init_registry$5();
15304
15309
  init_config_state();
15305
15310
  init_manifest_registry();
15306
15311
  init_schema_validator();
@@ -17801,7 +17806,7 @@ function isMarkdownCapableMessageChannel(raw) {
17801
17806
  }
17802
17807
  var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
17803
17808
  var init_message_channel = __esmMin((() => {
17804
- init_registry$4();
17809
+ init_registry$5();
17805
17810
  init_client_info();
17806
17811
  init_runtime$3();
17807
17812
  INTERNAL_MESSAGE_CHANNEL = "webchat";
@@ -19987,7 +19992,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
19987
19992
  }
19988
19993
  var init_bindings = __esmMin((() => {
19989
19994
  init_agent_scope();
19990
- init_registry$4();
19995
+ init_registry$5();
19991
19996
  init_session_key$1();
19992
19997
  }));
19993
19998
  //#endregion
@@ -20485,7 +20490,7 @@ function normalizeChannelId(raw) {
20485
20490
  }
20486
20491
  var init_plugins = __esmMin((() => {
20487
20492
  init_runtime$3();
20488
- init_registry$4();
20493
+ init_registry$5();
20489
20494
  init_directory_config();
20490
20495
  init_channel_config();
20491
20496
  init_allowlist_match();
@@ -25549,7 +25554,7 @@ var init_dock = __esmMin((() => {
25549
25554
  init_utils$2();
25550
25555
  init_group_mentions();
25551
25556
  init_signal$1();
25552
- init_registry$4();
25557
+ init_registry$5();
25553
25558
  formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
25554
25559
  formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
25555
25560
  DOCKS = {
@@ -29457,6 +29462,24 @@ var init_bundled_dir = __esmMin((() => {
29457
29462
  init_minion_root();
29458
29463
  }));
29459
29464
  //#endregion
29465
+ //#region src/agents/skills/compact-prompt.ts
29466
+ /**
29467
+ * Render a compact, name+description-only skills listing for progressive
29468
+ * disclosure. The full SKILL.md body is deliberately omitted; the agent is
29469
+ * instructed to load it on demand via the `skill_view` tool. This keeps the
29470
+ * system prompt small when many skills are available.
29471
+ */
29472
+ function formatSkillsCompact(skills) {
29473
+ if (skills.length === 0) return "";
29474
+ return [
29475
+ "<available_skills>",
29476
+ ...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
29477
+ "</available_skills>",
29478
+ "Call the `skill_view` tool with a skill name to load its full instructions before using it."
29479
+ ].join("\n");
29480
+ }
29481
+ var init_compact_prompt = __esmMin((() => {}));
29482
+ //#endregion
29460
29483
  //#region src/shared/config-eval.ts
29461
29484
  function isTruthyValue(value) {
29462
29485
  if (value === void 0 || value === null) return false;
@@ -30207,6 +30230,35 @@ function applySkillsPromptLimits(params) {
30207
30230
  truncatedReason
30208
30231
  };
30209
30232
  }
30233
+ /**
30234
+ * Resolve whether progressive disclosure is enabled. Default is ON; only an
30235
+ * explicit `false` disables it (inlining full skill bodies in the prompt).
30236
+ */
30237
+ function resolveProgressiveDisclosure(config, override) {
30238
+ if (override !== void 0) return override;
30239
+ return config?.skills?.progressiveDisclosure !== false;
30240
+ }
30241
+ /**
30242
+ * Map prompt-eligible skill entries to compact `{ name, description, body }`
30243
+ * records. The body is the full SKILL.md text, read from disk on demand; if the
30244
+ * file can't be read we fall back to an empty body (compact mode omits bodies
30245
+ * from the prompt anyway, so this only affects callers that inspect `body`).
30246
+ */
30247
+ function toCompactSkills(skills) {
30248
+ return skills.map((skill) => {
30249
+ let body = "";
30250
+ try {
30251
+ body = fs.readFileSync(skill.filePath, "utf-8");
30252
+ } catch {
30253
+ body = "";
30254
+ }
30255
+ return {
30256
+ name: skill.name,
30257
+ description: skill.description ?? "",
30258
+ body
30259
+ };
30260
+ });
30261
+ }
30210
30262
  function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
30211
30263
  const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
30212
30264
  const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
@@ -30218,7 +30270,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
30218
30270
  const prompt = [
30219
30271
  remoteNote,
30220
30272
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
30221
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
30273
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
30222
30274
  ].filter(Boolean).join("\n");
30223
30275
  const skillFilter = normalizeSkillFilter(opts?.skillFilter);
30224
30276
  const denyFilter = normalizeSkillFilter(opts?.denyFilter);
@@ -30245,7 +30297,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
30245
30297
  return [
30246
30298
  remoteNote,
30247
30299
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
30248
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
30300
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
30249
30301
  ].filter(Boolean).join("\n");
30250
30302
  }
30251
30303
  function resolveSkillsPromptForRun(params) {
@@ -30398,6 +30450,7 @@ var init_workspace$1 = __esmMin((() => {
30398
30450
  init_utils$2();
30399
30451
  init_sandbox_paths();
30400
30452
  init_bundled_dir();
30453
+ init_compact_prompt();
30401
30454
  init_config$3();
30402
30455
  init_filter();
30403
30456
  init_frontmatter();
@@ -32128,7 +32181,7 @@ var init_parse$2 = __esmMin((() => {
32128
32181
  ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
32129
32182
  })), 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;
32130
32183
  var init_constants$2 = __esmMin((() => {
32131
- init_registry$4();
32184
+ init_registry$5();
32132
32185
  init_config$4();
32133
32186
  DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
32134
32187
  DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
@@ -32633,6 +32686,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
32633
32686
  scope,
32634
32687
  workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
32635
32688
  workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
32689
+ tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
32636
32690
  docker: resolveSandboxDockerConfig({
32637
32691
  scope,
32638
32692
  globalDocker: agent?.docker,
@@ -40165,7 +40219,7 @@ async function removeBrowserRegistryEntry(containerName) {
40165
40219
  return next;
40166
40220
  });
40167
40221
  }
40168
- var init_registry$3 = __esmMin((() => {
40222
+ var init_registry$4 = __esmMin((() => {
40169
40223
  init_session_write_lock();
40170
40224
  init_constants$2();
40171
40225
  }));
@@ -40626,7 +40680,7 @@ var init_docker = __esmMin((() => {
40626
40680
  init_runtime$2();
40627
40681
  init_config_hash();
40628
40682
  init_constants$2();
40629
- init_registry$3();
40683
+ init_registry$4();
40630
40684
  init_shared$1();
40631
40685
  init_validate_sandbox_security();
40632
40686
  log$45 = createSubsystemLogger("sandbox/docker");
@@ -40852,7 +40906,7 @@ var init_browser = __esmMin((() => {
40852
40906
  init_config$2();
40853
40907
  init_constants$2();
40854
40908
  init_docker();
40855
- init_registry$3();
40909
+ init_registry$4();
40856
40910
  init_shared$1();
40857
40911
  init_tool_policy();
40858
40912
  HOT_BROWSER_WINDOW_MS = 300 * 1e3;
@@ -41218,7 +41272,7 @@ var init_prune = __esmMin((() => {
41218
41272
  init_runtime$2();
41219
41273
  init_browser_bridges();
41220
41274
  init_docker();
41221
- init_registry$3();
41275
+ init_registry$4();
41222
41276
  lastPruneAtMs = 0;
41223
41277
  }));
41224
41278
  //#endregion
@@ -43064,7 +43118,7 @@ var init_manage = __esmMin((() => {
43064
43118
  init_config$4();
43065
43119
  init_config$2();
43066
43120
  init_docker();
43067
- init_registry$3();
43121
+ init_registry$4();
43068
43122
  init_shared$1();
43069
43123
  }));
43070
43124
  //#endregion
@@ -44164,7 +44218,7 @@ var loggedListActionErrors;
44164
44218
  var init_channel_tools = __esmMin((() => {
44165
44219
  init_dock();
44166
44220
  init_plugins();
44167
- init_registry$4();
44221
+ init_registry$5();
44168
44222
  init_runtime$2();
44169
44223
  loggedListActionErrors = /* @__PURE__ */ new Set();
44170
44224
  }));
@@ -57275,7 +57329,7 @@ function resolveCommandAuthorization(params) {
57275
57329
  }
57276
57330
  var init_command_auth = __esmMin((() => {
57277
57331
  init_dock();
57278
- init_registry$4();
57332
+ init_registry$5();
57279
57333
  init_message_channel();
57280
57334
  }));
57281
57335
  //#endregion
@@ -63215,7 +63269,7 @@ var init_commands_allowlist = __esmMin((() => {
63215
63269
  init_resolve_users();
63216
63270
  init_config_writes();
63217
63271
  init_pairing();
63218
- init_registry$4();
63272
+ init_registry$5();
63219
63273
  init_accounts$3();
63220
63274
  init_accounts$2();
63221
63275
  init_config$4();
@@ -67520,6 +67574,198 @@ var init_landlock = __esmMin((() => {
67520
67574
  _caps = null;
67521
67575
  }));
67522
67576
  //#endregion
67577
+ //#region src/agents/sandbox/tier0/router.ts
67578
+ function shouldTryTier0(command) {
67579
+ const cmd = command.trim();
67580
+ if (!cmd) return false;
67581
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
67582
+ return true;
67583
+ }
67584
+ /**
67585
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
67586
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
67587
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
67588
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
67589
+ */
67590
+ function isInterpreterLimitation(stderr) {
67591
+ if (!stderr) return false;
67592
+ 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);
67593
+ }
67594
+ var ESCALATE_PATTERNS;
67595
+ var init_router = __esmMin((() => {
67596
+ ESCALATE_PATTERNS = [
67597
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
67598
+ /\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/,
67599
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
67600
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
67601
+ /(^|\s|=)\/(dev|proc|sys)\//,
67602
+ /<\(|>\(/
67603
+ ];
67604
+ }));
67605
+ //#endregion
67606
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
67607
+ /**
67608
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
67609
+ *
67610
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
67611
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
67612
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
67613
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
67614
+ *
67615
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
67616
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
67617
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
67618
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
67619
+ *
67620
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
67621
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
67622
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
67623
+ */
67624
+ function withTimeout$4(p, ms) {
67625
+ if (!ms) return p;
67626
+ return new Promise((resolve, reject) => {
67627
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
67628
+ p.then((value) => {
67629
+ clearTimeout(timer);
67630
+ resolve(value);
67631
+ }, (error) => {
67632
+ clearTimeout(timer);
67633
+ reject(error);
67634
+ });
67635
+ });
67636
+ }
67637
+ var Tier0VirtualSandbox, TimeoutError;
67638
+ var init_virtual_sandbox = __esmMin((() => {
67639
+ init_router();
67640
+ Tier0VirtualSandbox = class {
67641
+ constructor() {
67642
+ this.instances = /* @__PURE__ */ new Map();
67643
+ }
67644
+ getInstance(req) {
67645
+ const existing = this.instances.get(req.scopeKey);
67646
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
67647
+ existing.lastUsed = Date.now();
67648
+ return existing.bash;
67649
+ }
67650
+ const fs = new MountableFs({ base: new InMemoryFs() });
67651
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
67652
+ const bash = new Bash({
67653
+ fs,
67654
+ cwd: req.workdir,
67655
+ env: {
67656
+ LANG: "C.UTF-8",
67657
+ ...req.env
67658
+ },
67659
+ executionLimits: {
67660
+ maxCommandCount: 1e4,
67661
+ maxLoopIterations: 1e6
67662
+ }
67663
+ });
67664
+ const inst = {
67665
+ bash,
67666
+ workspaceHostDir: req.workspaceHostDir,
67667
+ workdir: req.workdir,
67668
+ lastUsed: Date.now()
67669
+ };
67670
+ this.instances.set(req.scopeKey, inst);
67671
+ return bash;
67672
+ }
67673
+ async exec(req) {
67674
+ const startedAt = Date.now();
67675
+ let bash;
67676
+ try {
67677
+ bash = this.getInstance(req);
67678
+ } catch {
67679
+ return {
67680
+ status: "failed",
67681
+ exitCode: null,
67682
+ durationMs: Date.now() - startedAt,
67683
+ aggregated: "",
67684
+ timedOut: false,
67685
+ unsupported: true
67686
+ };
67687
+ }
67688
+ try {
67689
+ const result = await withTimeout$4(bash.exec(req.command, {
67690
+ cwd: req.workdir,
67691
+ env: req.env
67692
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
67693
+ const durationMs = Date.now() - startedAt;
67694
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
67695
+ if (result.exitCode === 0) return {
67696
+ status: "completed",
67697
+ exitCode: 0,
67698
+ durationMs,
67699
+ aggregated: combined,
67700
+ timedOut: false,
67701
+ unsupported: false
67702
+ };
67703
+ return {
67704
+ status: "failed",
67705
+ exitCode: result.exitCode,
67706
+ durationMs,
67707
+ aggregated: combined,
67708
+ timedOut: false,
67709
+ unsupported: isInterpreterLimitation(result.stderr)
67710
+ };
67711
+ } catch (err) {
67712
+ const timedOut = err instanceof TimeoutError;
67713
+ return {
67714
+ status: "failed",
67715
+ exitCode: null,
67716
+ durationMs: Date.now() - startedAt,
67717
+ aggregated: "",
67718
+ timedOut,
67719
+ unsupported: !timedOut
67720
+ };
67721
+ }
67722
+ }
67723
+ dispose(scopeKey) {
67724
+ if (scopeKey) this.instances.delete(scopeKey);
67725
+ else this.instances.clear();
67726
+ }
67727
+ /** test/inspection helper */
67728
+ get liveInstances() {
67729
+ return this.instances.size;
67730
+ }
67731
+ };
67732
+ TimeoutError = class extends Error {};
67733
+ }));
67734
+ //#endregion
67735
+ //#region src/agents/sandbox/tier0/registry.ts
67736
+ function getTier0Sandbox() {
67737
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
67738
+ return singleton$1;
67739
+ }
67740
+ /**
67741
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
67742
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
67743
+ * Docker container too), so tier-0 sees the same files.
67744
+ */
67745
+ function resolveTier0Binding(params) {
67746
+ if (!params.workspaceHostDir) return;
67747
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
67748
+ if (!sandboxCfg.tier0.enabled) return;
67749
+ if (sandboxCfg.workspaceAccess === "ro") return;
67750
+ return {
67751
+ backend: getTier0Sandbox(),
67752
+ workspaceHostDir: params.workspaceHostDir
67753
+ };
67754
+ }
67755
+ var singleton$1;
67756
+ var init_registry$3 = __esmMin((() => {
67757
+ init_config$4();
67758
+ init_config$2();
67759
+ init_virtual_sandbox();
67760
+ }));
67761
+ //#endregion
67762
+ //#region src/agents/sandbox/tier0/index.ts
67763
+ var init_tier0 = __esmMin((() => {
67764
+ init_router();
67765
+ init_registry$3();
67766
+ init_virtual_sandbox();
67767
+ }));
67768
+ //#endregion
67523
67769
  //#region src/agents/tools/automation/gateway.ts
67524
67770
  function readGatewayCallOptions(params) {
67525
67771
  return {
@@ -68894,10 +69140,112 @@ function emitExecSystemEvent(text, opts) {
68894
69140
  });
68895
69141
  requestHeartbeatNow({ reason: "exec-event" });
68896
69142
  }
69143
+ /**
69144
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
69145
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
69146
+ * the command (so the caller escalates to Docker). Output is sanitized and a
69147
+ * ProcessSession is registered exactly like the normal path, so downstream
69148
+ * session listing / tailing is unaffected.
69149
+ */
69150
+ async function tryTier0Exec(args) {
69151
+ const { opts, sessionId, startedAt, execCommand } = args;
69152
+ const tier0 = opts.tier0;
69153
+ const sandbox = opts.sandbox;
69154
+ if (!tier0 || !sandbox) return null;
69155
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
69156
+ let outcome;
69157
+ try {
69158
+ outcome = await tier0.backend.exec({
69159
+ command: execCommand,
69160
+ workdir,
69161
+ workspaceHostDir: tier0.workspaceHostDir,
69162
+ env: opts.env,
69163
+ scopeKey: sandbox.containerName,
69164
+ timeoutSec: opts.timeoutSec
69165
+ });
69166
+ } catch {
69167
+ return null;
69168
+ }
69169
+ if (outcome.unsupported) return null;
69170
+ const session = {
69171
+ id: sessionId,
69172
+ command: opts.command,
69173
+ scopeKey: opts.scopeKey,
69174
+ sessionKey: opts.sessionKey,
69175
+ notifyOnExit: opts.notifyOnExit,
69176
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
69177
+ exitNotified: false,
69178
+ child: void 0,
69179
+ stdin: void 0,
69180
+ pid: void 0,
69181
+ startedAt,
69182
+ cwd: opts.workdir,
69183
+ maxOutputChars: opts.maxOutput,
69184
+ pendingMaxOutputChars: opts.pendingMaxOutput,
69185
+ totalOutputChars: 0,
69186
+ pendingStdout: [],
69187
+ pendingStderr: [],
69188
+ pendingStdoutChars: 0,
69189
+ pendingStderrChars: 0,
69190
+ aggregated: "",
69191
+ tail: "",
69192
+ exited: false,
69193
+ exitCode: void 0,
69194
+ exitSignal: void 0,
69195
+ truncated: false,
69196
+ backgrounded: false
69197
+ };
69198
+ addSession(session);
69199
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
69200
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
69201
+ const status = outcome.status === "completed" ? "completed" : "failed";
69202
+ markExited(session, outcome.exitCode ?? 0, null, status);
69203
+ const durationMs = Date.now() - startedAt;
69204
+ const aggregated = session.aggregated.trim();
69205
+ let result;
69206
+ if (status === "completed") {
69207
+ const exitCode = outcome.exitCode ?? 0;
69208
+ result = {
69209
+ status: "completed",
69210
+ exitCode,
69211
+ exitSignal: null,
69212
+ durationMs,
69213
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
69214
+ timedOut: false
69215
+ };
69216
+ } else {
69217
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
69218
+ result = {
69219
+ status: "failed",
69220
+ exitCode: outcome.exitCode,
69221
+ exitSignal: null,
69222
+ durationMs,
69223
+ aggregated,
69224
+ timedOut: outcome.timedOut,
69225
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
69226
+ };
69227
+ }
69228
+ return {
69229
+ session,
69230
+ startedAt,
69231
+ pid: void 0,
69232
+ promise: Promise.resolve(result),
69233
+ kill: () => {}
69234
+ };
69235
+ }
68897
69236
  async function runExecProcess(opts) {
68898
69237
  const startedAt = Date.now();
68899
69238
  const sessionId = createSessionSlug();
68900
69239
  const execCommand = opts.execCommand ?? opts.command;
69240
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
69241
+ const tier0Handle = await tryTier0Exec({
69242
+ opts,
69243
+ sessionId,
69244
+ startedAt,
69245
+ execCommand
69246
+ });
69247
+ if (tier0Handle) return tier0Handle;
69248
+ }
68901
69249
  const supervisor = getProcessSupervisor();
68902
69250
  const session = {
68903
69251
  id: sessionId,
@@ -69128,6 +69476,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
69128
69476
  init_supervisor();
69129
69477
  init_pty_dsr();
69130
69478
  init_shell_utils();
69479
+ init_tier0();
69131
69480
  init_bash_process_registry();
69132
69481
  init_bash_tools_shared();
69133
69482
  DANGEROUS_HOST_ENV_VARS = new Set([
@@ -69731,7 +70080,11 @@ function createExecTool(defaults) {
69731
70080
  scopeKey: defaults?.scopeKey,
69732
70081
  sessionKey: notifySessionKey,
69733
70082
  timeoutSec: effectiveTimeout,
69734
- onUpdate
70083
+ onUpdate,
70084
+ tier0: sandbox ? resolveTier0Binding({
70085
+ agentId,
70086
+ workspaceHostDir: sandbox.workspaceDir
70087
+ }) : void 0
69735
70088
  });
69736
70089
  let yielded = false;
69737
70090
  let yieldTimer = null;
@@ -69806,6 +70159,7 @@ var init_bash_tools_exec = __esmMin((() => {
69806
70159
  init_logger$2();
69807
70160
  init_session_key$1();
69808
70161
  init_landlock();
70162
+ init_tier0();
69809
70163
  init_gateway();
69810
70164
  init_nodes_utils();
69811
70165
  init_bash_process_registry();
@@ -71985,7 +72339,7 @@ var init_debug_commands = __esmMin((() => {
71985
72339
  var handleConfigCommand, handleDebugCommand;
71986
72340
  var init_commands_config = __esmMin((() => {
71987
72341
  init_config_writes();
71988
- init_registry$4();
72342
+ init_registry$5();
71989
72343
  init_config_paths();
71990
72344
  init_config$4();
71991
72345
  init_runtime_overrides();
@@ -72630,11 +72984,12 @@ var init_agent_type = __esmMin((() => {
72630
72984
  if (!trimmed) return [];
72631
72985
  return [
72632
72986
  "## Skills (mandatory)",
72633
- "Before replying: scan <available_skills> <description> entries.",
72634
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
72635
- "- If multiple could apply: choose the most specific one, then read/follow it.",
72636
- "- If none clearly apply: do not read any SKILL.md.",
72637
- "Constraints: never read more than one skill up front; only read after selecting.",
72987
+ "Before replying: scan the <available_skills> entries.",
72988
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
72989
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
72990
+ "- If none clearly apply: do not load any skill.",
72991
+ `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}\`.`,
72992
+ "Constraints: never load more than one skill up front; only load after selecting.",
72638
72993
  trimmed,
72639
72994
  ""
72640
72995
  ];
@@ -72780,6 +73135,37 @@ var init_agent_type = __esmMin((() => {
72780
73135
  ];
72781
73136
  }));
72782
73137
  //#endregion
73138
+ //#region src/agents/sections/behaviour.ts
73139
+ var BEHAVIOUR_SECTIONS;
73140
+ var init_behaviour = __esmMin((() => {
73141
+ init_prose_loader();
73142
+ BEHAVIOUR_SECTIONS = [{
73143
+ id: "behaviour",
73144
+ layer: "identity",
73145
+ order: 2200,
73146
+ modes: ["full", "minimal"],
73147
+ cacheable: false,
73148
+ header: "## Operating Rules (self-maintained)",
73149
+ source: "file",
73150
+ render: (ctx) => {
73151
+ const workspaceDir = ctx.params.workspaceDir;
73152
+ if (!workspaceDir) return [];
73153
+ const content = resolveProse({
73154
+ layer: "identity",
73155
+ id: "behaviour",
73156
+ agentWorkspaceDir: workspaceDir
73157
+ })?.content.trim();
73158
+ if (!content) return [];
73159
+ return [
73160
+ "## Operating Rules (self-maintained)",
73161
+ "",
73162
+ content,
73163
+ ""
73164
+ ];
73165
+ }
73166
+ }];
73167
+ }));
73168
+ //#endregion
72783
73169
  //#region src/agents/sections/identity.ts
72784
73170
  var IDENTITY_SECTIONS;
72785
73171
  var init_identity$1 = __esmMin((() => {
@@ -73748,6 +74134,7 @@ function getBuiltinRegistry() {
73748
74134
  _registry$1.registerAll(PLATFORM_SECTIONS);
73749
74135
  _registry$1.registerAll(AGENT_TYPE_SECTIONS);
73750
74136
  _registry$1.registerAll(IDENTITY_SECTIONS);
74137
+ _registry$1.registerAll(BEHAVIOUR_SECTIONS);
73751
74138
  _registry$1.registerAll(USER_SECTIONS);
73752
74139
  _registry$1.registerAll(SESSION_SECTIONS);
73753
74140
  return _registry$1;
@@ -73766,6 +74153,7 @@ function assembleAgentSystemPrompt(params) {
73766
74153
  var _registry$1;
73767
74154
  var init_assemble = __esmMin((() => {
73768
74155
  init_agent_type();
74156
+ init_behaviour();
73769
74157
  init_identity$1();
73770
74158
  init_platform();
73771
74159
  init_registry$1();
@@ -81598,7 +81986,7 @@ var init_reply_elevated = __esmMin((() => {
81598
81986
  init_agent_scope();
81599
81987
  init_dock();
81600
81988
  init_plugins();
81601
- init_registry$4();
81989
+ init_registry$5();
81602
81990
  init_message_channel();
81603
81991
  init_string_normalization();
81604
81992
  init_elevated_unavailable();
@@ -90984,7 +91372,7 @@ function resolvePingPongTurns(cfg) {
90984
91372
  var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
90985
91373
  var init_sessions_send_helpers = __esmMin((() => {
90986
91374
  init_plugins();
90987
- init_registry$4();
91375
+ init_registry$5();
90988
91376
  ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
90989
91377
  REPLY_SKIP_TOKEN = "REPLY_SKIP";
90990
91378
  DEFAULT_PING_PONG_TURNS = 5;
@@ -98725,7 +99113,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
98725
99113
  var init_agent_runner_utils = __esmMin((() => {
98726
99114
  init_agent_scope();
98727
99115
  init_dock();
98728
- init_registry$4();
99116
+ init_registry$5();
98729
99117
  init_sessions$1();
98730
99118
  init_provider_utils();
98731
99119
  init_usage_format();
@@ -104747,7 +105135,7 @@ function loadOpenClawPlugins(options = {}) {
104747
105135
  }
104748
105136
  var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
104749
105137
  var init_loader = __esmMin((() => {
104750
- init_registry$6();
105138
+ init_registry$7();
104751
105139
  init_subsystem();
104752
105140
  init_utils$2();
104753
105141
  init_version$1();
@@ -104759,7 +105147,7 @@ var init_loader = __esmMin((() => {
104759
105147
  init_discovery();
104760
105148
  init_hook_runner_global();
104761
105149
  init_manifest_registry();
104762
- init_registry$5();
105150
+ init_registry$6();
104763
105151
  init_runtime$3();
104764
105152
  init_runtime$1();
104765
105153
  init_schema_validator();
@@ -115744,6 +116132,36 @@ async function prepareSessionManagerForRun(params) {
115744
116132
  }
115745
116133
  var init_session_manager_init = __esmMin((() => {}));
115746
116134
  //#endregion
116135
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
116136
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
116137
+ function reduceToolOutputText(text, opts) {
116138
+ let lines = text.split("\n");
116139
+ if (opts.collapseRuns) {
116140
+ const collapsed = [];
116141
+ let i = 0;
116142
+ while (i < lines.length) {
116143
+ let j = i + 1;
116144
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
116145
+ const run = j - i;
116146
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
116147
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
116148
+ i = j;
116149
+ }
116150
+ lines = collapsed;
116151
+ }
116152
+ if (lines.length <= opts.maxLines) return lines.join("\n");
116153
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
116154
+ const head = lines.slice(0, opts.headLines);
116155
+ const tail = lines.slice(lines.length - opts.tailLines);
116156
+ const elided = lines.length - head.length - tail.length;
116157
+ return [
116158
+ ...head,
116159
+ `… ${elided} lines elided …`,
116160
+ ...tail
116161
+ ].join("\n");
116162
+ }
116163
+ var init_tool_result_reduce = __esmMin((() => {}));
116164
+ //#endregion
115747
116165
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
115748
116166
  function isTextBlock(block) {
115749
116167
  return !!block && typeof block === "object" && block.type === "text";
@@ -115878,8 +116296,28 @@ function applyMessageMutationInPlace(target, source) {
115878
116296
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
115879
116297
  Object.assign(targetRecord, sourceRecord);
115880
116298
  }
116299
+ /**
116300
+ * Run the pure line-reducer over each tool-result message's text content,
116301
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
116302
+ */
116303
+ function reduceToolResultOutputsInPlace(messages) {
116304
+ for (const message of messages) {
116305
+ if (!isToolResultMessage(message)) continue;
116306
+ const rawText = getToolResultText(message);
116307
+ if (!rawText) continue;
116308
+ const reduced = reduceToolOutputText(rawText, {
116309
+ maxLines: REDUCE_MAX_LINES,
116310
+ headLines: REDUCE_HEAD_LINES,
116311
+ tailLines: REDUCE_TAIL_LINES,
116312
+ collapseRuns: true
116313
+ });
116314
+ if (reduced === rawText) continue;
116315
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
116316
+ }
116317
+ }
115881
116318
  function enforceToolResultContextBudgetInPlace(params) {
115882
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
116319
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
116320
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
115883
116321
  for (const message of messages) {
115884
116322
  if (!isToolResultMessage(message)) continue;
115885
116323
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -115901,6 +116339,7 @@ function enforceToolResultContextBudgetInPlace(params) {
115901
116339
  * @returns An async function suitable for use as Agent's transformContext callback.
115902
116340
  */
115903
116341
  function createToolResultContextGuardTransform(params) {
116342
+ const reduceOutput = params.reduceOutput !== false;
115904
116343
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
115905
116344
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
115906
116345
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -115911,13 +116350,15 @@ function createToolResultContextGuardTransform(params) {
115911
116350
  enforceToolResultContextBudgetInPlace({
115912
116351
  messages: contextMessages,
115913
116352
  contextBudgetChars,
115914
- maxSingleToolResultChars
116353
+ maxSingleToolResultChars,
116354
+ reduceOutput
115915
116355
  });
115916
116356
  return contextMessages;
115917
116357
  };
115918
116358
  }
115919
- 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;
116359
+ 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;
115920
116360
  var init_tool_result_context_guard = __esmMin((() => {
116361
+ init_tool_result_reduce();
115921
116362
  CHARS_PER_TOKEN_ESTIMATE = 4;
115922
116363
  CONTEXT_INPUT_HEADROOM_RATIO = .75;
115923
116364
  SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
@@ -115926,6 +116367,9 @@ var init_tool_result_context_guard = __esmMin((() => {
115926
116367
  CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
115927
116368
  CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
115928
116369
  PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
116370
+ REDUCE_MAX_LINES = 200;
116371
+ REDUCE_HEAD_LINES = 40;
116372
+ REDUCE_TAIL_LINES = 40;
115929
116373
  }));
115930
116374
  //#endregion
115931
116375
  //#region src/agents/pi-embedded-runner/run/attempt-session.ts
@@ -116018,7 +116462,10 @@ async function createRunSession(params, env) {
116018
116462
  applySystemPromptOverrideToSession(session, env.systemPromptText);
116019
116463
  if (!session) throw new Error("Embedded agent session missing");
116020
116464
  const activeSession = session;
116021
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
116465
+ const contextGuardTransform = createToolResultContextGuardTransform({
116466
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
116467
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
116468
+ });
116022
116469
  activeSession.agent.transformContext = contextGuardTransform;
116023
116470
  const cacheTrace = createCacheTrace({
116024
116471
  cfg: params.config,