@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
@@ -51,6 +51,7 @@ import chokidar from "chokidar";
51
51
  import MarkdownIt from "markdown-it";
52
52
  import { WebClient } from "@slack/web-api";
53
53
  import { Type as Type$1 } from "@sinclair/typebox";
54
+ import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
54
55
  import fs$2 from "fs/promises";
55
56
  import os$1 from "os";
56
57
  import path$1 from "path";
@@ -182,7 +183,7 @@ function notifyMcpToolsChanged() {
182
183
  }
183
184
  }
184
185
  var tools, sseSubscribers, EMPTY_OBJECT_SCHEMA;
185
- var init_registry$6 = __esmMin((() => {
186
+ var init_registry$7 = __esmMin((() => {
186
187
  tools = /* @__PURE__ */ new Map();
187
188
  sseSubscribers = /* @__PURE__ */ new Set();
188
189
  EMPTY_OBJECT_SCHEMA = {
@@ -1727,9 +1728,9 @@ function createPluginRegistry(registryParams) {
1727
1728
  registerTypedHook
1728
1729
  };
1729
1730
  }
1730
- var init_registry$5 = __esmMin((() => {
1731
+ var init_registry$6 = __esmMin((() => {
1731
1732
  init_instant_commands();
1732
- init_registry$6();
1733
+ init_registry$7();
1733
1734
  init_internal_hooks();
1734
1735
  init_utils$2();
1735
1736
  init_channel_link_runtime();
@@ -1763,7 +1764,7 @@ function setActivePluginRuntime(runtime) {
1763
1764
  }
1764
1765
  var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$3, configState, runtimeState;
1765
1766
  var init_runtime$3 = __esmMin((() => {
1766
- init_registry$5();
1767
+ init_registry$6();
1767
1768
  REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
1768
1769
  CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
1769
1770
  RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
@@ -1810,7 +1811,7 @@ function normalizeAnyChannelId(raw) {
1810
1811
  })?.plugin.id ?? null;
1811
1812
  }
1812
1813
  var CHAT_CHANNEL_ORDER, CHANNEL_IDS, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
1813
- var init_registry$4 = __esmMin((() => {
1814
+ var init_registry$5 = __esmMin((() => {
1814
1815
  init_runtime$3();
1815
1816
  CHAT_CHANNEL_ORDER = [
1816
1817
  "telegram",
@@ -2224,7 +2225,7 @@ function createSubsystemLogger(subsystem) {
2224
2225
  }
2225
2226
  var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
2226
2227
  var init_subsystem = __esmMin((() => {
2227
- init_registry$4();
2228
+ init_registry$5();
2228
2229
  init_globals();
2229
2230
  init_runtime$2();
2230
2231
  init_progress_line();
@@ -3479,7 +3480,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
3479
3480
  }
3480
3481
  var init_bindings = __esmMin((() => {
3481
3482
  init_agent_scope();
3482
- init_registry$4();
3483
+ init_registry$5();
3483
3484
  init_session_key$1();
3484
3485
  }));
3485
3486
  //#endregion
@@ -5141,6 +5142,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
5141
5142
  ]).optional(),
5142
5143
  perSession: z.boolean().optional(),
5143
5144
  workspaceRoot: z.string().optional(),
5145
+ tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
5144
5146
  docker: SandboxDockerSchema,
5145
5147
  browser: SandboxBrowserSchema,
5146
5148
  prune: SandboxPruneSchema
@@ -5342,7 +5344,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
5342
5344
  exec: ToolExecSchema,
5343
5345
  fs: ToolFsSchema,
5344
5346
  subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
5345
- sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
5347
+ sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
5348
+ outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
5346
5349
  }).strict().superRefine((value, ctx) => {
5347
5350
  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)");
5348
5351
  }).optional();
@@ -5838,7 +5841,7 @@ var init_shell_env = __esmMin((() => {
5838
5841
  //#region src/version.ts
5839
5842
  var VERSION;
5840
5843
  var init_version$1 = __esmMin((() => {
5841
- VERSION = "2026.6.14-dev.20260616061802";
5844
+ VERSION = "2026.6.16-dev";
5842
5845
  }));
5843
5846
  //#endregion
5844
5847
  //#region src/config/agent-dirs.ts
@@ -15558,6 +15561,7 @@ var init_zod_schema = __esmMin((() => {
15558
15561
  importContacts: z.boolean().optional()
15559
15562
  }).strict().optional(),
15560
15563
  memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
15564
+ trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
15561
15565
  personalAgentObservations: z.object({
15562
15566
  enabled: z.boolean().optional(),
15563
15567
  dbPath: z.string().optional()
@@ -15670,6 +15674,7 @@ var init_zod_schema = __esmMin((() => {
15670
15674
  memory: MemorySchema,
15671
15675
  skills: z.object({
15672
15676
  allowBundled: z.array(z.string()).optional(),
15677
+ progressiveDisclosure: z.boolean().optional(),
15673
15678
  load: z.object({
15674
15679
  extraDirs: z.array(z.string()).optional(),
15675
15680
  watch: z.boolean().optional(),
@@ -16045,7 +16050,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
16045
16050
  var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
16046
16051
  var init_validation = __esmMin((() => {
16047
16052
  init_agent_scope();
16048
- init_registry$4();
16053
+ init_registry$5();
16049
16054
  init_config_state();
16050
16055
  init_manifest_registry();
16051
16056
  init_schema_validator();
@@ -17432,7 +17437,7 @@ function isMarkdownCapableMessageChannel(raw) {
17432
17437
  }
17433
17438
  var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
17434
17439
  var init_message_channel = __esmMin((() => {
17435
- init_registry$4();
17440
+ init_registry$5();
17436
17441
  init_client_info();
17437
17442
  init_runtime$3();
17438
17443
  INTERNAL_MESSAGE_CHANNEL = "webchat";
@@ -18603,7 +18608,7 @@ function normalizeChannelId(raw) {
18603
18608
  }
18604
18609
  var init_plugins = __esmMin((() => {
18605
18610
  init_runtime$3();
18606
- init_registry$4();
18611
+ init_registry$5();
18607
18612
  init_directory_config();
18608
18613
  }));
18609
18614
  //#endregion
@@ -20824,6 +20829,24 @@ var init_bundled_dir = __esmMin((() => {
20824
20829
  init_minion_root();
20825
20830
  }));
20826
20831
  //#endregion
20832
+ //#region src/agents/skills/compact-prompt.ts
20833
+ /**
20834
+ * Render a compact, name+description-only skills listing for progressive
20835
+ * disclosure. The full SKILL.md body is deliberately omitted; the agent is
20836
+ * instructed to load it on demand via the `skill_view` tool. This keeps the
20837
+ * system prompt small when many skills are available.
20838
+ */
20839
+ function formatSkillsCompact(skills) {
20840
+ if (skills.length === 0) return "";
20841
+ return [
20842
+ "<available_skills>",
20843
+ ...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
20844
+ "</available_skills>",
20845
+ "Call the `skill_view` tool with a skill name to load its full instructions before using it."
20846
+ ].join("\n");
20847
+ }
20848
+ var init_compact_prompt = __esmMin((() => {}));
20849
+ //#endregion
20827
20850
  //#region src/shared/config-eval.ts
20828
20851
  function isTruthyValue(value) {
20829
20852
  if (value === void 0 || value === null) return false;
@@ -21574,6 +21597,35 @@ function applySkillsPromptLimits(params) {
21574
21597
  truncatedReason
21575
21598
  };
21576
21599
  }
21600
+ /**
21601
+ * Resolve whether progressive disclosure is enabled. Default is ON; only an
21602
+ * explicit `false` disables it (inlining full skill bodies in the prompt).
21603
+ */
21604
+ function resolveProgressiveDisclosure(config, override) {
21605
+ if (override !== void 0) return override;
21606
+ return config?.skills?.progressiveDisclosure !== false;
21607
+ }
21608
+ /**
21609
+ * Map prompt-eligible skill entries to compact `{ name, description, body }`
21610
+ * records. The body is the full SKILL.md text, read from disk on demand; if the
21611
+ * file can't be read we fall back to an empty body (compact mode omits bodies
21612
+ * from the prompt anyway, so this only affects callers that inspect `body`).
21613
+ */
21614
+ function toCompactSkills(skills) {
21615
+ return skills.map((skill) => {
21616
+ let body = "";
21617
+ try {
21618
+ body = fs.readFileSync(skill.filePath, "utf-8");
21619
+ } catch {
21620
+ body = "";
21621
+ }
21622
+ return {
21623
+ name: skill.name,
21624
+ description: skill.description ?? "",
21625
+ body
21626
+ };
21627
+ });
21628
+ }
21577
21629
  function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
21578
21630
  const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
21579
21631
  const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
@@ -21585,7 +21637,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
21585
21637
  const prompt = [
21586
21638
  remoteNote,
21587
21639
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
21588
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21640
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21589
21641
  ].filter(Boolean).join("\n");
21590
21642
  const skillFilter = normalizeSkillFilter(opts?.skillFilter);
21591
21643
  const denyFilter = normalizeSkillFilter(opts?.denyFilter);
@@ -21612,7 +21664,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
21612
21664
  return [
21613
21665
  remoteNote,
21614
21666
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
21615
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21667
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21616
21668
  ].filter(Boolean).join("\n");
21617
21669
  }
21618
21670
  function resolveSkillsPromptForRun(params) {
@@ -21765,6 +21817,7 @@ var init_workspace$1 = __esmMin((() => {
21765
21817
  init_utils$2();
21766
21818
  init_sandbox_paths();
21767
21819
  init_bundled_dir();
21820
+ init_compact_prompt();
21768
21821
  init_config$3();
21769
21822
  init_filter();
21770
21823
  init_frontmatter();
@@ -23495,7 +23548,7 @@ var init_parse$2 = __esmMin((() => {
23495
23548
  ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
23496
23549
  })), 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;
23497
23550
  var init_constants$2 = __esmMin((() => {
23498
- init_registry$4();
23551
+ init_registry$5();
23499
23552
  DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
23500
23553
  DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
23501
23554
  DEFAULT_TOOL_ALLOW = [
@@ -23999,6 +24052,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
23999
24052
  scope,
24000
24053
  workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
24001
24054
  workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
24055
+ tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
24002
24056
  docker: resolveSandboxDockerConfig({
24003
24057
  scope,
24004
24058
  globalDocker: agent?.docker,
@@ -32179,7 +32233,7 @@ async function removeBrowserRegistryEntry(containerName) {
32179
32233
  return next;
32180
32234
  });
32181
32235
  }
32182
- var init_registry$3 = __esmMin((() => {
32236
+ var init_registry$4 = __esmMin((() => {
32183
32237
  init_session_write_lock();
32184
32238
  init_constants$2();
32185
32239
  }));
@@ -32640,7 +32694,7 @@ var init_docker = __esmMin((() => {
32640
32694
  init_runtime$2();
32641
32695
  init_config_hash();
32642
32696
  init_constants$2();
32643
- init_registry$3();
32697
+ init_registry$4();
32644
32698
  init_shared$1();
32645
32699
  init_validate_sandbox_security();
32646
32700
  log$46 = createSubsystemLogger("sandbox/docker");
@@ -32866,7 +32920,7 @@ var init_browser = __esmMin((() => {
32866
32920
  init_config$2();
32867
32921
  init_constants$2();
32868
32922
  init_docker();
32869
- init_registry$3();
32923
+ init_registry$4();
32870
32924
  init_shared$1();
32871
32925
  init_tool_policy();
32872
32926
  HOT_BROWSER_WINDOW_MS = 300 * 1e3;
@@ -33232,7 +33286,7 @@ var init_prune = __esmMin((() => {
33232
33286
  init_runtime$2();
33233
33287
  init_browser_bridges();
33234
33288
  init_docker();
33235
- init_registry$3();
33289
+ init_registry$4();
33236
33290
  lastPruneAtMs = 0;
33237
33291
  }));
33238
33292
  //#endregion
@@ -33851,7 +33905,7 @@ var init_dock = __esmMin((() => {
33851
33905
  init_utils$2();
33852
33906
  init_group_mentions();
33853
33907
  init_signal$1();
33854
- init_registry$4();
33908
+ init_registry$5();
33855
33909
  formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
33856
33910
  formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
33857
33911
  DOCKS = {
@@ -35927,7 +35981,7 @@ var init_manage = __esmMin((() => {
35927
35981
  init_config$4();
35928
35982
  init_config$2();
35929
35983
  init_docker();
35930
- init_registry$3();
35984
+ init_registry$4();
35931
35985
  init_shared$1();
35932
35986
  }));
35933
35987
  //#endregion
@@ -37235,7 +37289,7 @@ var loggedListActionErrors;
37235
37289
  var init_channel_tools = __esmMin((() => {
37236
37290
  init_dock();
37237
37291
  init_plugins();
37238
- init_registry$4();
37292
+ init_registry$5();
37239
37293
  init_runtime$2();
37240
37294
  loggedListActionErrors = /* @__PURE__ */ new Set();
37241
37295
  }));
@@ -51843,7 +51897,7 @@ function resolveCommandAuthorization(params) {
51843
51897
  }
51844
51898
  var init_command_auth = __esmMin((() => {
51845
51899
  init_dock();
51846
- init_registry$4();
51900
+ init_registry$5();
51847
51901
  init_message_channel();
51848
51902
  }));
51849
51903
  //#endregion
@@ -59083,7 +59137,7 @@ var init_commands_allowlist = __esmMin((() => {
59083
59137
  init_resolve_users();
59084
59138
  init_config_writes();
59085
59139
  init_pairing();
59086
- init_registry$4();
59140
+ init_registry$5();
59087
59141
  init_accounts$5();
59088
59142
  init_accounts$1();
59089
59143
  init_config$4();
@@ -63388,6 +63442,198 @@ var init_landlock = __esmMin((() => {
63388
63442
  _caps = null;
63389
63443
  }));
63390
63444
  //#endregion
63445
+ //#region src/agents/sandbox/tier0/router.ts
63446
+ function shouldTryTier0(command) {
63447
+ const cmd = command.trim();
63448
+ if (!cmd) return false;
63449
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
63450
+ return true;
63451
+ }
63452
+ /**
63453
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
63454
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
63455
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
63456
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
63457
+ */
63458
+ function isInterpreterLimitation(stderr) {
63459
+ if (!stderr) return false;
63460
+ 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);
63461
+ }
63462
+ var ESCALATE_PATTERNS;
63463
+ var init_router = __esmMin((() => {
63464
+ ESCALATE_PATTERNS = [
63465
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
63466
+ /\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/,
63467
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
63468
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
63469
+ /(^|\s|=)\/(dev|proc|sys)\//,
63470
+ /<\(|>\(/
63471
+ ];
63472
+ }));
63473
+ //#endregion
63474
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
63475
+ /**
63476
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
63477
+ *
63478
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
63479
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
63480
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
63481
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
63482
+ *
63483
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
63484
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
63485
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
63486
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
63487
+ *
63488
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
63489
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
63490
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
63491
+ */
63492
+ function withTimeout$4(p, ms) {
63493
+ if (!ms) return p;
63494
+ return new Promise((resolve, reject) => {
63495
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
63496
+ p.then((value) => {
63497
+ clearTimeout(timer);
63498
+ resolve(value);
63499
+ }, (error) => {
63500
+ clearTimeout(timer);
63501
+ reject(error);
63502
+ });
63503
+ });
63504
+ }
63505
+ var Tier0VirtualSandbox, TimeoutError;
63506
+ var init_virtual_sandbox = __esmMin((() => {
63507
+ init_router();
63508
+ Tier0VirtualSandbox = class {
63509
+ constructor() {
63510
+ this.instances = /* @__PURE__ */ new Map();
63511
+ }
63512
+ getInstance(req) {
63513
+ const existing = this.instances.get(req.scopeKey);
63514
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
63515
+ existing.lastUsed = Date.now();
63516
+ return existing.bash;
63517
+ }
63518
+ const fs = new MountableFs({ base: new InMemoryFs() });
63519
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
63520
+ const bash = new Bash({
63521
+ fs,
63522
+ cwd: req.workdir,
63523
+ env: {
63524
+ LANG: "C.UTF-8",
63525
+ ...req.env
63526
+ },
63527
+ executionLimits: {
63528
+ maxCommandCount: 1e4,
63529
+ maxLoopIterations: 1e6
63530
+ }
63531
+ });
63532
+ const inst = {
63533
+ bash,
63534
+ workspaceHostDir: req.workspaceHostDir,
63535
+ workdir: req.workdir,
63536
+ lastUsed: Date.now()
63537
+ };
63538
+ this.instances.set(req.scopeKey, inst);
63539
+ return bash;
63540
+ }
63541
+ async exec(req) {
63542
+ const startedAt = Date.now();
63543
+ let bash;
63544
+ try {
63545
+ bash = this.getInstance(req);
63546
+ } catch {
63547
+ return {
63548
+ status: "failed",
63549
+ exitCode: null,
63550
+ durationMs: Date.now() - startedAt,
63551
+ aggregated: "",
63552
+ timedOut: false,
63553
+ unsupported: true
63554
+ };
63555
+ }
63556
+ try {
63557
+ const result = await withTimeout$4(bash.exec(req.command, {
63558
+ cwd: req.workdir,
63559
+ env: req.env
63560
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
63561
+ const durationMs = Date.now() - startedAt;
63562
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
63563
+ if (result.exitCode === 0) return {
63564
+ status: "completed",
63565
+ exitCode: 0,
63566
+ durationMs,
63567
+ aggregated: combined,
63568
+ timedOut: false,
63569
+ unsupported: false
63570
+ };
63571
+ return {
63572
+ status: "failed",
63573
+ exitCode: result.exitCode,
63574
+ durationMs,
63575
+ aggregated: combined,
63576
+ timedOut: false,
63577
+ unsupported: isInterpreterLimitation(result.stderr)
63578
+ };
63579
+ } catch (err) {
63580
+ const timedOut = err instanceof TimeoutError;
63581
+ return {
63582
+ status: "failed",
63583
+ exitCode: null,
63584
+ durationMs: Date.now() - startedAt,
63585
+ aggregated: "",
63586
+ timedOut,
63587
+ unsupported: !timedOut
63588
+ };
63589
+ }
63590
+ }
63591
+ dispose(scopeKey) {
63592
+ if (scopeKey) this.instances.delete(scopeKey);
63593
+ else this.instances.clear();
63594
+ }
63595
+ /** test/inspection helper */
63596
+ get liveInstances() {
63597
+ return this.instances.size;
63598
+ }
63599
+ };
63600
+ TimeoutError = class extends Error {};
63601
+ }));
63602
+ //#endregion
63603
+ //#region src/agents/sandbox/tier0/registry.ts
63604
+ function getTier0Sandbox() {
63605
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
63606
+ return singleton$1;
63607
+ }
63608
+ /**
63609
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
63610
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
63611
+ * Docker container too), so tier-0 sees the same files.
63612
+ */
63613
+ function resolveTier0Binding(params) {
63614
+ if (!params.workspaceHostDir) return;
63615
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
63616
+ if (!sandboxCfg.tier0.enabled) return;
63617
+ if (sandboxCfg.workspaceAccess === "ro") return;
63618
+ return {
63619
+ backend: getTier0Sandbox(),
63620
+ workspaceHostDir: params.workspaceHostDir
63621
+ };
63622
+ }
63623
+ var singleton$1;
63624
+ var init_registry$3 = __esmMin((() => {
63625
+ init_config$4();
63626
+ init_config$2();
63627
+ init_virtual_sandbox();
63628
+ }));
63629
+ //#endregion
63630
+ //#region src/agents/sandbox/tier0/index.ts
63631
+ var init_tier0 = __esmMin((() => {
63632
+ init_router();
63633
+ init_registry$3();
63634
+ init_virtual_sandbox();
63635
+ }));
63636
+ //#endregion
63391
63637
  //#region src/agents/tools/automation/gateway.ts
63392
63638
  function readGatewayCallOptions(params) {
63393
63639
  return {
@@ -64762,10 +65008,112 @@ function emitExecSystemEvent(text, opts) {
64762
65008
  });
64763
65009
  requestHeartbeatNow({ reason: "exec-event" });
64764
65010
  }
65011
+ /**
65012
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
65013
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
65014
+ * the command (so the caller escalates to Docker). Output is sanitized and a
65015
+ * ProcessSession is registered exactly like the normal path, so downstream
65016
+ * session listing / tailing is unaffected.
65017
+ */
65018
+ async function tryTier0Exec(args) {
65019
+ const { opts, sessionId, startedAt, execCommand } = args;
65020
+ const tier0 = opts.tier0;
65021
+ const sandbox = opts.sandbox;
65022
+ if (!tier0 || !sandbox) return null;
65023
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
65024
+ let outcome;
65025
+ try {
65026
+ outcome = await tier0.backend.exec({
65027
+ command: execCommand,
65028
+ workdir,
65029
+ workspaceHostDir: tier0.workspaceHostDir,
65030
+ env: opts.env,
65031
+ scopeKey: sandbox.containerName,
65032
+ timeoutSec: opts.timeoutSec
65033
+ });
65034
+ } catch {
65035
+ return null;
65036
+ }
65037
+ if (outcome.unsupported) return null;
65038
+ const session = {
65039
+ id: sessionId,
65040
+ command: opts.command,
65041
+ scopeKey: opts.scopeKey,
65042
+ sessionKey: opts.sessionKey,
65043
+ notifyOnExit: opts.notifyOnExit,
65044
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
65045
+ exitNotified: false,
65046
+ child: void 0,
65047
+ stdin: void 0,
65048
+ pid: void 0,
65049
+ startedAt,
65050
+ cwd: opts.workdir,
65051
+ maxOutputChars: opts.maxOutput,
65052
+ pendingMaxOutputChars: opts.pendingMaxOutput,
65053
+ totalOutputChars: 0,
65054
+ pendingStdout: [],
65055
+ pendingStderr: [],
65056
+ pendingStdoutChars: 0,
65057
+ pendingStderrChars: 0,
65058
+ aggregated: "",
65059
+ tail: "",
65060
+ exited: false,
65061
+ exitCode: void 0,
65062
+ exitSignal: void 0,
65063
+ truncated: false,
65064
+ backgrounded: false
65065
+ };
65066
+ addSession(session);
65067
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
65068
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
65069
+ const status = outcome.status === "completed" ? "completed" : "failed";
65070
+ markExited(session, outcome.exitCode ?? 0, null, status);
65071
+ const durationMs = Date.now() - startedAt;
65072
+ const aggregated = session.aggregated.trim();
65073
+ let result;
65074
+ if (status === "completed") {
65075
+ const exitCode = outcome.exitCode ?? 0;
65076
+ result = {
65077
+ status: "completed",
65078
+ exitCode,
65079
+ exitSignal: null,
65080
+ durationMs,
65081
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
65082
+ timedOut: false
65083
+ };
65084
+ } else {
65085
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
65086
+ result = {
65087
+ status: "failed",
65088
+ exitCode: outcome.exitCode,
65089
+ exitSignal: null,
65090
+ durationMs,
65091
+ aggregated,
65092
+ timedOut: outcome.timedOut,
65093
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
65094
+ };
65095
+ }
65096
+ return {
65097
+ session,
65098
+ startedAt,
65099
+ pid: void 0,
65100
+ promise: Promise.resolve(result),
65101
+ kill: () => {}
65102
+ };
65103
+ }
64765
65104
  async function runExecProcess(opts) {
64766
65105
  const startedAt = Date.now();
64767
65106
  const sessionId = createSessionSlug();
64768
65107
  const execCommand = opts.execCommand ?? opts.command;
65108
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
65109
+ const tier0Handle = await tryTier0Exec({
65110
+ opts,
65111
+ sessionId,
65112
+ startedAt,
65113
+ execCommand
65114
+ });
65115
+ if (tier0Handle) return tier0Handle;
65116
+ }
64769
65117
  const supervisor = getProcessSupervisor();
64770
65118
  const session = {
64771
65119
  id: sessionId,
@@ -64996,6 +65344,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
64996
65344
  init_supervisor();
64997
65345
  init_pty_dsr();
64998
65346
  init_shell_utils();
65347
+ init_tier0();
64999
65348
  init_bash_process_registry();
65000
65349
  init_bash_tools_shared();
65001
65350
  DANGEROUS_HOST_ENV_VARS = new Set([
@@ -65599,7 +65948,11 @@ function createExecTool(defaults) {
65599
65948
  scopeKey: defaults?.scopeKey,
65600
65949
  sessionKey: notifySessionKey,
65601
65950
  timeoutSec: effectiveTimeout,
65602
- onUpdate
65951
+ onUpdate,
65952
+ tier0: sandbox ? resolveTier0Binding({
65953
+ agentId,
65954
+ workspaceHostDir: sandbox.workspaceDir
65955
+ }) : void 0
65603
65956
  });
65604
65957
  let yielded = false;
65605
65958
  let yieldTimer = null;
@@ -65674,6 +66027,7 @@ var init_bash_tools_exec = __esmMin((() => {
65674
66027
  init_logger$2();
65675
66028
  init_session_key$1();
65676
66029
  init_landlock();
66030
+ init_tier0();
65677
66031
  init_gateway();
65678
66032
  init_nodes_utils();
65679
66033
  init_bash_process_registry();
@@ -67852,7 +68206,7 @@ var init_debug_commands = __esmMin((() => {
67852
68206
  var handleConfigCommand, handleDebugCommand;
67853
68207
  var init_commands_config = __esmMin((() => {
67854
68208
  init_config_writes();
67855
- init_registry$4();
68209
+ init_registry$5();
67856
68210
  init_config_paths();
67857
68211
  init_config$4();
67858
68212
  init_runtime_overrides();
@@ -68497,11 +68851,12 @@ var init_agent_type = __esmMin((() => {
68497
68851
  if (!trimmed) return [];
68498
68852
  return [
68499
68853
  "## Skills (mandatory)",
68500
- "Before replying: scan <available_skills> <description> entries.",
68501
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
68502
- "- If multiple could apply: choose the most specific one, then read/follow it.",
68503
- "- If none clearly apply: do not read any SKILL.md.",
68504
- "Constraints: never read more than one skill up front; only read after selecting.",
68854
+ "Before replying: scan the <available_skills> entries.",
68855
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
68856
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
68857
+ "- If none clearly apply: do not load any skill.",
68858
+ `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}\`.`,
68859
+ "Constraints: never load more than one skill up front; only load after selecting.",
68505
68860
  trimmed,
68506
68861
  ""
68507
68862
  ];
@@ -68647,6 +69002,37 @@ var init_agent_type = __esmMin((() => {
68647
69002
  ];
68648
69003
  }));
68649
69004
  //#endregion
69005
+ //#region src/agents/sections/behaviour.ts
69006
+ var BEHAVIOUR_SECTIONS;
69007
+ var init_behaviour = __esmMin((() => {
69008
+ init_prose_loader();
69009
+ BEHAVIOUR_SECTIONS = [{
69010
+ id: "behaviour",
69011
+ layer: "identity",
69012
+ order: 2200,
69013
+ modes: ["full", "minimal"],
69014
+ cacheable: false,
69015
+ header: "## Operating Rules (self-maintained)",
69016
+ source: "file",
69017
+ render: (ctx) => {
69018
+ const workspaceDir = ctx.params.workspaceDir;
69019
+ if (!workspaceDir) return [];
69020
+ const content = resolveProse({
69021
+ layer: "identity",
69022
+ id: "behaviour",
69023
+ agentWorkspaceDir: workspaceDir
69024
+ })?.content.trim();
69025
+ if (!content) return [];
69026
+ return [
69027
+ "## Operating Rules (self-maintained)",
69028
+ "",
69029
+ content,
69030
+ ""
69031
+ ];
69032
+ }
69033
+ }];
69034
+ }));
69035
+ //#endregion
68650
69036
  //#region src/agents/personal-agent-id.ts
68651
69037
  /**
68652
69038
  * Personal-agent ID helpers.
@@ -69681,6 +70067,7 @@ function getBuiltinRegistry() {
69681
70067
  _registry$1.registerAll(PLATFORM_SECTIONS);
69682
70068
  _registry$1.registerAll(AGENT_TYPE_SECTIONS);
69683
70069
  _registry$1.registerAll(IDENTITY_SECTIONS);
70070
+ _registry$1.registerAll(BEHAVIOUR_SECTIONS);
69684
70071
  _registry$1.registerAll(USER_SECTIONS);
69685
70072
  _registry$1.registerAll(SESSION_SECTIONS);
69686
70073
  return _registry$1;
@@ -69699,6 +70086,7 @@ function assembleAgentSystemPrompt(params) {
69699
70086
  var _registry$1;
69700
70087
  var init_assemble = __esmMin((() => {
69701
70088
  init_agent_type();
70089
+ init_behaviour();
69702
70090
  init_identity$1();
69703
70091
  init_platform();
69704
70092
  init_registry$1();
@@ -77531,7 +77919,7 @@ var init_reply_elevated = __esmMin((() => {
77531
77919
  init_agent_scope();
77532
77920
  init_dock();
77533
77921
  init_plugins();
77534
- init_registry$4();
77922
+ init_registry$5();
77535
77923
  init_message_channel();
77536
77924
  init_string_normalization();
77537
77925
  init_elevated_unavailable();
@@ -87671,7 +88059,7 @@ function resolvePingPongTurns(cfg) {
87671
88059
  var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
87672
88060
  var init_sessions_send_helpers = __esmMin((() => {
87673
88061
  init_plugins();
87674
- init_registry$4();
88062
+ init_registry$5();
87675
88063
  ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
87676
88064
  REPLY_SKIP_TOKEN = "REPLY_SKIP";
87677
88065
  DEFAULT_PING_PONG_TURNS = 5;
@@ -95412,7 +95800,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
95412
95800
  var init_agent_runner_utils = __esmMin((() => {
95413
95801
  init_agent_scope();
95414
95802
  init_dock();
95415
- init_registry$4();
95803
+ init_registry$5();
95416
95804
  init_sessions$1();
95417
95805
  init_provider_utils();
95418
95806
  init_usage_format();
@@ -101609,7 +101997,7 @@ function loadOpenClawPlugins(options = {}) {
101609
101997
  }
101610
101998
  var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
101611
101999
  var init_loader = __esmMin((() => {
101612
- init_registry$6();
102000
+ init_registry$7();
101613
102001
  init_subsystem();
101614
102002
  init_utils$2();
101615
102003
  init_version$1();
@@ -101621,7 +102009,7 @@ var init_loader = __esmMin((() => {
101621
102009
  init_discovery();
101622
102010
  init_hook_runner_global();
101623
102011
  init_manifest_registry();
101624
- init_registry$5();
102012
+ init_registry$6();
101625
102013
  init_runtime$3();
101626
102014
  init_runtime$1();
101627
102015
  init_schema_validator();
@@ -112606,6 +112994,36 @@ async function prepareSessionManagerForRun(params) {
112606
112994
  }
112607
112995
  var init_session_manager_init = __esmMin((() => {}));
112608
112996
  //#endregion
112997
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
112998
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
112999
+ function reduceToolOutputText(text, opts) {
113000
+ let lines = text.split("\n");
113001
+ if (opts.collapseRuns) {
113002
+ const collapsed = [];
113003
+ let i = 0;
113004
+ while (i < lines.length) {
113005
+ let j = i + 1;
113006
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
113007
+ const run = j - i;
113008
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
113009
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
113010
+ i = j;
113011
+ }
113012
+ lines = collapsed;
113013
+ }
113014
+ if (lines.length <= opts.maxLines) return lines.join("\n");
113015
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
113016
+ const head = lines.slice(0, opts.headLines);
113017
+ const tail = lines.slice(lines.length - opts.tailLines);
113018
+ const elided = lines.length - head.length - tail.length;
113019
+ return [
113020
+ ...head,
113021
+ `… ${elided} lines elided …`,
113022
+ ...tail
113023
+ ].join("\n");
113024
+ }
113025
+ var init_tool_result_reduce = __esmMin((() => {}));
113026
+ //#endregion
112609
113027
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
112610
113028
  function isTextBlock(block) {
112611
113029
  return !!block && typeof block === "object" && block.type === "text";
@@ -112740,8 +113158,28 @@ function applyMessageMutationInPlace(target, source) {
112740
113158
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
112741
113159
  Object.assign(targetRecord, sourceRecord);
112742
113160
  }
113161
+ /**
113162
+ * Run the pure line-reducer over each tool-result message's text content,
113163
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
113164
+ */
113165
+ function reduceToolResultOutputsInPlace(messages) {
113166
+ for (const message of messages) {
113167
+ if (!isToolResultMessage(message)) continue;
113168
+ const rawText = getToolResultText(message);
113169
+ if (!rawText) continue;
113170
+ const reduced = reduceToolOutputText(rawText, {
113171
+ maxLines: REDUCE_MAX_LINES,
113172
+ headLines: REDUCE_HEAD_LINES,
113173
+ tailLines: REDUCE_TAIL_LINES,
113174
+ collapseRuns: true
113175
+ });
113176
+ if (reduced === rawText) continue;
113177
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
113178
+ }
113179
+ }
112743
113180
  function enforceToolResultContextBudgetInPlace(params) {
112744
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
113181
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
113182
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
112745
113183
  for (const message of messages) {
112746
113184
  if (!isToolResultMessage(message)) continue;
112747
113185
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -112763,6 +113201,7 @@ function enforceToolResultContextBudgetInPlace(params) {
112763
113201
  * @returns An async function suitable for use as Agent's transformContext callback.
112764
113202
  */
112765
113203
  function createToolResultContextGuardTransform(params) {
113204
+ const reduceOutput = params.reduceOutput !== false;
112766
113205
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
112767
113206
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
112768
113207
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -112773,13 +113212,15 @@ function createToolResultContextGuardTransform(params) {
112773
113212
  enforceToolResultContextBudgetInPlace({
112774
113213
  messages: contextMessages,
112775
113214
  contextBudgetChars,
112776
- maxSingleToolResultChars
113215
+ maxSingleToolResultChars,
113216
+ reduceOutput
112777
113217
  });
112778
113218
  return contextMessages;
112779
113219
  };
112780
113220
  }
112781
- 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;
113221
+ 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;
112782
113222
  var init_tool_result_context_guard = __esmMin((() => {
113223
+ init_tool_result_reduce();
112783
113224
  CHARS_PER_TOKEN_ESTIMATE = 4;
112784
113225
  CONTEXT_INPUT_HEADROOM_RATIO = .75;
112785
113226
  SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
@@ -112788,6 +113229,9 @@ var init_tool_result_context_guard = __esmMin((() => {
112788
113229
  CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
112789
113230
  CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
112790
113231
  PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
113232
+ REDUCE_MAX_LINES = 200;
113233
+ REDUCE_HEAD_LINES = 40;
113234
+ REDUCE_TAIL_LINES = 40;
112791
113235
  }));
112792
113236
  //#endregion
112793
113237
  //#region src/agents/pi-embedded-runner/run/attempt-session.ts
@@ -112880,7 +113324,10 @@ async function createRunSession(params, env) {
112880
113324
  applySystemPromptOverrideToSession(session, env.systemPromptText);
112881
113325
  if (!session) throw new Error("Embedded agent session missing");
112882
113326
  const activeSession = session;
112883
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
113327
+ const contextGuardTransform = createToolResultContextGuardTransform({
113328
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
113329
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
113330
+ });
112884
113331
  activeSession.agent.transformContext = contextGuardTransform;
112885
113332
  const cacheTrace = createCacheTrace({
112886
113333
  cfg: params.config,