@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 chokidar from "chokidar";
48
48
  import MarkdownIt from "markdown-it";
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";
@@ -379,7 +380,7 @@ function notifyMcpToolsChanged() {
379
380
  }
380
381
  }
381
382
  var tools$1, sseSubscribers, EMPTY_OBJECT_SCHEMA;
382
- var init_registry$6 = __esmMin((() => {
383
+ var init_registry$7 = __esmMin((() => {
383
384
  tools$1 = /* @__PURE__ */ new Map();
384
385
  sseSubscribers = /* @__PURE__ */ new Set();
385
386
  EMPTY_OBJECT_SCHEMA = {
@@ -1320,7 +1321,7 @@ function createSubsystemLogger(subsystem) {
1320
1321
  }
1321
1322
  var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
1322
1323
  var init_subsystem = __esmMin((() => {
1323
- init_registry$4();
1324
+ init_registry$5();
1324
1325
  init_globals();
1325
1326
  init_runtime$3();
1326
1327
  init_progress_line();
@@ -2254,9 +2255,9 @@ function createPluginRegistry(registryParams) {
2254
2255
  registerTypedHook
2255
2256
  };
2256
2257
  }
2257
- var init_registry$5 = __esmMin((() => {
2258
+ var init_registry$6 = __esmMin((() => {
2258
2259
  init_instant_commands();
2259
- init_registry$6();
2260
+ init_registry$7();
2260
2261
  init_internal_hooks();
2261
2262
  init_utils$2();
2262
2263
  init_channel_link_runtime();
@@ -2290,7 +2291,7 @@ function setActivePluginRuntime(runtime) {
2290
2291
  }
2291
2292
  var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$3, configState, runtimeState;
2292
2293
  var init_runtime$2 = __esmMin((() => {
2293
- init_registry$5();
2294
+ init_registry$6();
2294
2295
  REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
2295
2296
  CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
2296
2297
  RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
@@ -2337,7 +2338,7 @@ function normalizeAnyChannelId(raw) {
2337
2338
  })?.plugin.id ?? null;
2338
2339
  }
2339
2340
  var CHAT_CHANNEL_ORDER, CHANNEL_IDS, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
2340
- var init_registry$4 = __esmMin((() => {
2341
+ var init_registry$5 = __esmMin((() => {
2341
2342
  init_runtime$2();
2342
2343
  CHAT_CHANNEL_ORDER = [
2343
2344
  "telegram",
@@ -2510,7 +2511,7 @@ function isMarkdownCapableMessageChannel(raw) {
2510
2511
  }
2511
2512
  var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
2512
2513
  var init_message_channel = __esmMin((() => {
2513
- init_registry$4();
2514
+ init_registry$5();
2514
2515
  init_client_info();
2515
2516
  init_runtime$2();
2516
2517
  INTERNAL_MESSAGE_CHANNEL = "webchat";
@@ -4135,7 +4136,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
4135
4136
  }
4136
4137
  var init_bindings = __esmMin((() => {
4137
4138
  init_agent_scope();
4138
- init_registry$4();
4139
+ init_registry$5();
4139
4140
  init_session_key$1();
4140
4141
  }));
4141
4142
  //#endregion
@@ -5020,7 +5021,7 @@ var init_dock = __esmMin((() => {
5020
5021
  init_utils$2();
5021
5022
  init_group_mentions();
5022
5023
  init_signal$1();
5023
- init_registry$4();
5024
+ init_registry$5();
5024
5025
  formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
5025
5026
  formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
5026
5027
  DOCKS = {
@@ -5445,7 +5446,7 @@ function normalizeChannelId(raw) {
5445
5446
  }
5446
5447
  var init_plugins = __esmMin((() => {
5447
5448
  init_runtime$2();
5448
- init_registry$4();
5449
+ init_registry$5();
5449
5450
  init_directory_config();
5450
5451
  }));
5451
5452
  //#endregion
@@ -6445,6 +6446,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
6445
6446
  ]).optional(),
6446
6447
  perSession: z.boolean().optional(),
6447
6448
  workspaceRoot: z.string().optional(),
6449
+ tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
6448
6450
  docker: SandboxDockerSchema,
6449
6451
  browser: SandboxBrowserSchema,
6450
6452
  prune: SandboxPruneSchema
@@ -6646,7 +6648,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
6646
6648
  exec: ToolExecSchema,
6647
6649
  fs: ToolFsSchema,
6648
6650
  subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
6649
- sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
6651
+ sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
6652
+ outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
6650
6653
  }).strict().superRefine((value, ctx) => {
6651
6654
  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)");
6652
6655
  }).optional();
@@ -7142,7 +7145,7 @@ var init_shell_env = __esmMin((() => {
7142
7145
  //#region src/version.ts
7143
7146
  var VERSION;
7144
7147
  var init_version$1 = __esmMin((() => {
7145
- VERSION = "2026.6.14-dev.20260616061802";
7148
+ VERSION = "2026.6.16-dev";
7146
7149
  }));
7147
7150
  //#endregion
7148
7151
  //#region src/config/agent-dirs.ts
@@ -16865,6 +16868,7 @@ var init_zod_schema = __esmMin((() => {
16865
16868
  importContacts: z.boolean().optional()
16866
16869
  }).strict().optional(),
16867
16870
  memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
16871
+ trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
16868
16872
  personalAgentObservations: z.object({
16869
16873
  enabled: z.boolean().optional(),
16870
16874
  dbPath: z.string().optional()
@@ -16977,6 +16981,7 @@ var init_zod_schema = __esmMin((() => {
16977
16981
  memory: MemorySchema,
16978
16982
  skills: z.object({
16979
16983
  allowBundled: z.array(z.string()).optional(),
16984
+ progressiveDisclosure: z.boolean().optional(),
16980
16985
  load: z.object({
16981
16986
  extraDirs: z.array(z.string()).optional(),
16982
16987
  watch: z.boolean().optional(),
@@ -17352,7 +17357,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
17352
17357
  var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
17353
17358
  var init_validation = __esmMin((() => {
17354
17359
  init_agent_scope();
17355
- init_registry$4();
17360
+ init_registry$5();
17356
17361
  init_config_state();
17357
17362
  init_manifest_registry();
17358
17363
  init_schema_validator();
@@ -22749,6 +22754,24 @@ var init_bundled_dir = __esmMin((() => {
22749
22754
  init_minion_root();
22750
22755
  }));
22751
22756
  //#endregion
22757
+ //#region src/agents/skills/compact-prompt.ts
22758
+ /**
22759
+ * Render a compact, name+description-only skills listing for progressive
22760
+ * disclosure. The full SKILL.md body is deliberately omitted; the agent is
22761
+ * instructed to load it on demand via the `skill_view` tool. This keeps the
22762
+ * system prompt small when many skills are available.
22763
+ */
22764
+ function formatSkillsCompact(skills) {
22765
+ if (skills.length === 0) return "";
22766
+ return [
22767
+ "<available_skills>",
22768
+ ...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
22769
+ "</available_skills>",
22770
+ "Call the `skill_view` tool with a skill name to load its full instructions before using it."
22771
+ ].join("\n");
22772
+ }
22773
+ var init_compact_prompt = __esmMin((() => {}));
22774
+ //#endregion
22752
22775
  //#region src/shared/config-eval.ts
22753
22776
  function isTruthyValue(value) {
22754
22777
  if (value === void 0 || value === null) return false;
@@ -23499,6 +23522,35 @@ function applySkillsPromptLimits(params) {
23499
23522
  truncatedReason
23500
23523
  };
23501
23524
  }
23525
+ /**
23526
+ * Resolve whether progressive disclosure is enabled. Default is ON; only an
23527
+ * explicit `false` disables it (inlining full skill bodies in the prompt).
23528
+ */
23529
+ function resolveProgressiveDisclosure(config, override) {
23530
+ if (override !== void 0) return override;
23531
+ return config?.skills?.progressiveDisclosure !== false;
23532
+ }
23533
+ /**
23534
+ * Map prompt-eligible skill entries to compact `{ name, description, body }`
23535
+ * records. The body is the full SKILL.md text, read from disk on demand; if the
23536
+ * file can't be read we fall back to an empty body (compact mode omits bodies
23537
+ * from the prompt anyway, so this only affects callers that inspect `body`).
23538
+ */
23539
+ function toCompactSkills(skills) {
23540
+ return skills.map((skill) => {
23541
+ let body = "";
23542
+ try {
23543
+ body = fs.readFileSync(skill.filePath, "utf-8");
23544
+ } catch {
23545
+ body = "";
23546
+ }
23547
+ return {
23548
+ name: skill.name,
23549
+ description: skill.description ?? "",
23550
+ body
23551
+ };
23552
+ });
23553
+ }
23502
23554
  function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
23503
23555
  const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
23504
23556
  const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
@@ -23510,7 +23562,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
23510
23562
  const prompt = [
23511
23563
  remoteNote,
23512
23564
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
23513
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23565
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23514
23566
  ].filter(Boolean).join("\n");
23515
23567
  const skillFilter = normalizeSkillFilter(opts?.skillFilter);
23516
23568
  const denyFilter = normalizeSkillFilter(opts?.denyFilter);
@@ -23537,7 +23589,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
23537
23589
  return [
23538
23590
  remoteNote,
23539
23591
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
23540
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23592
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23541
23593
  ].filter(Boolean).join("\n");
23542
23594
  }
23543
23595
  function resolveSkillsPromptForRun(params) {
@@ -23690,6 +23742,7 @@ var init_workspace$1 = __esmMin((() => {
23690
23742
  init_utils$2();
23691
23743
  init_sandbox_paths();
23692
23744
  init_bundled_dir();
23745
+ init_compact_prompt();
23693
23746
  init_config$3();
23694
23747
  init_filter();
23695
23748
  init_frontmatter();
@@ -25420,7 +25473,7 @@ var init_parse$2 = __esmMin((() => {
25420
25473
  ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
25421
25474
  })), 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;
25422
25475
  var init_constants$2 = __esmMin((() => {
25423
- init_registry$4();
25476
+ init_registry$5();
25424
25477
  DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
25425
25478
  DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
25426
25479
  DEFAULT_TOOL_ALLOW = [
@@ -25924,6 +25977,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
25924
25977
  scope,
25925
25978
  workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
25926
25979
  workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
25980
+ tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
25927
25981
  docker: resolveSandboxDockerConfig({
25928
25982
  scope,
25929
25983
  globalDocker: agent?.docker,
@@ -33929,7 +33983,7 @@ async function removeBrowserRegistryEntry(containerName) {
33929
33983
  return next;
33930
33984
  });
33931
33985
  }
33932
- var init_registry$3 = __esmMin((() => {
33986
+ var init_registry$4 = __esmMin((() => {
33933
33987
  init_session_write_lock();
33934
33988
  init_constants$2();
33935
33989
  }));
@@ -34390,7 +34444,7 @@ var init_docker = __esmMin((() => {
34390
34444
  init_runtime$3();
34391
34445
  init_config_hash();
34392
34446
  init_constants$2();
34393
- init_registry$3();
34447
+ init_registry$4();
34394
34448
  init_shared$1();
34395
34449
  init_validate_sandbox_security();
34396
34450
  log$44 = createSubsystemLogger("sandbox/docker");
@@ -34616,7 +34670,7 @@ var init_browser = __esmMin((() => {
34616
34670
  init_config$2();
34617
34671
  init_constants$2();
34618
34672
  init_docker();
34619
- init_registry$3();
34673
+ init_registry$4();
34620
34674
  init_shared$1();
34621
34675
  init_tool_policy();
34622
34676
  HOT_BROWSER_WINDOW_MS = 300 * 1e3;
@@ -34982,7 +35036,7 @@ var init_prune = __esmMin((() => {
34982
35036
  init_runtime$3();
34983
35037
  init_browser_bridges();
34984
35038
  init_docker();
34985
- init_registry$3();
35039
+ init_registry$4();
34986
35040
  lastPruneAtMs = 0;
34987
35041
  }));
34988
35042
  //#endregion
@@ -36852,7 +36906,7 @@ var init_manage = __esmMin((() => {
36852
36906
  init_config$4();
36853
36907
  init_config$2();
36854
36908
  init_docker();
36855
- init_registry$3();
36909
+ init_registry$4();
36856
36910
  init_shared$1();
36857
36911
  }));
36858
36912
  //#endregion
@@ -37952,7 +38006,7 @@ var loggedListActionErrors;
37952
38006
  var init_channel_tools = __esmMin((() => {
37953
38007
  init_dock();
37954
38008
  init_plugins();
37955
- init_registry$4();
38009
+ init_registry$5();
37956
38010
  init_runtime$3();
37957
38011
  loggedListActionErrors = /* @__PURE__ */ new Set();
37958
38012
  }));
@@ -51395,7 +51449,7 @@ function resolveCommandAuthorization(params) {
51395
51449
  }
51396
51450
  var init_command_auth = __esmMin((() => {
51397
51451
  init_dock();
51398
- init_registry$4();
51452
+ init_registry$5();
51399
51453
  init_message_channel();
51400
51454
  }));
51401
51455
  //#endregion
@@ -58415,7 +58469,7 @@ var init_commands_allowlist = __esmMin((() => {
58415
58469
  init_resolve_users();
58416
58470
  init_config_writes();
58417
58471
  init_pairing();
58418
- init_registry$4();
58472
+ init_registry$5();
58419
58473
  init_accounts$1();
58420
58474
  init_accounts();
58421
58475
  init_config$4();
@@ -62720,6 +62774,198 @@ var init_landlock = __esmMin((() => {
62720
62774
  _caps = null;
62721
62775
  }));
62722
62776
  //#endregion
62777
+ //#region src/agents/sandbox/tier0/router.ts
62778
+ function shouldTryTier0(command) {
62779
+ const cmd = command.trim();
62780
+ if (!cmd) return false;
62781
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
62782
+ return true;
62783
+ }
62784
+ /**
62785
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
62786
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
62787
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
62788
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
62789
+ */
62790
+ function isInterpreterLimitation(stderr) {
62791
+ if (!stderr) return false;
62792
+ 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);
62793
+ }
62794
+ var ESCALATE_PATTERNS;
62795
+ var init_router = __esmMin((() => {
62796
+ ESCALATE_PATTERNS = [
62797
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
62798
+ /\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/,
62799
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
62800
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
62801
+ /(^|\s|=)\/(dev|proc|sys)\//,
62802
+ /<\(|>\(/
62803
+ ];
62804
+ }));
62805
+ //#endregion
62806
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
62807
+ /**
62808
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
62809
+ *
62810
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
62811
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
62812
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
62813
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
62814
+ *
62815
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
62816
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
62817
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
62818
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
62819
+ *
62820
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
62821
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
62822
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
62823
+ */
62824
+ function withTimeout$5(p, ms) {
62825
+ if (!ms) return p;
62826
+ return new Promise((resolve, reject) => {
62827
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
62828
+ p.then((value) => {
62829
+ clearTimeout(timer);
62830
+ resolve(value);
62831
+ }, (error) => {
62832
+ clearTimeout(timer);
62833
+ reject(error);
62834
+ });
62835
+ });
62836
+ }
62837
+ var Tier0VirtualSandbox, TimeoutError;
62838
+ var init_virtual_sandbox = __esmMin((() => {
62839
+ init_router();
62840
+ Tier0VirtualSandbox = class {
62841
+ constructor() {
62842
+ this.instances = /* @__PURE__ */ new Map();
62843
+ }
62844
+ getInstance(req) {
62845
+ const existing = this.instances.get(req.scopeKey);
62846
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
62847
+ existing.lastUsed = Date.now();
62848
+ return existing.bash;
62849
+ }
62850
+ const fs = new MountableFs({ base: new InMemoryFs() });
62851
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
62852
+ const bash = new Bash({
62853
+ fs,
62854
+ cwd: req.workdir,
62855
+ env: {
62856
+ LANG: "C.UTF-8",
62857
+ ...req.env
62858
+ },
62859
+ executionLimits: {
62860
+ maxCommandCount: 1e4,
62861
+ maxLoopIterations: 1e6
62862
+ }
62863
+ });
62864
+ const inst = {
62865
+ bash,
62866
+ workspaceHostDir: req.workspaceHostDir,
62867
+ workdir: req.workdir,
62868
+ lastUsed: Date.now()
62869
+ };
62870
+ this.instances.set(req.scopeKey, inst);
62871
+ return bash;
62872
+ }
62873
+ async exec(req) {
62874
+ const startedAt = Date.now();
62875
+ let bash;
62876
+ try {
62877
+ bash = this.getInstance(req);
62878
+ } catch {
62879
+ return {
62880
+ status: "failed",
62881
+ exitCode: null,
62882
+ durationMs: Date.now() - startedAt,
62883
+ aggregated: "",
62884
+ timedOut: false,
62885
+ unsupported: true
62886
+ };
62887
+ }
62888
+ try {
62889
+ const result = await withTimeout$5(bash.exec(req.command, {
62890
+ cwd: req.workdir,
62891
+ env: req.env
62892
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
62893
+ const durationMs = Date.now() - startedAt;
62894
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
62895
+ if (result.exitCode === 0) return {
62896
+ status: "completed",
62897
+ exitCode: 0,
62898
+ durationMs,
62899
+ aggregated: combined,
62900
+ timedOut: false,
62901
+ unsupported: false
62902
+ };
62903
+ return {
62904
+ status: "failed",
62905
+ exitCode: result.exitCode,
62906
+ durationMs,
62907
+ aggregated: combined,
62908
+ timedOut: false,
62909
+ unsupported: isInterpreterLimitation(result.stderr)
62910
+ };
62911
+ } catch (err) {
62912
+ const timedOut = err instanceof TimeoutError;
62913
+ return {
62914
+ status: "failed",
62915
+ exitCode: null,
62916
+ durationMs: Date.now() - startedAt,
62917
+ aggregated: "",
62918
+ timedOut,
62919
+ unsupported: !timedOut
62920
+ };
62921
+ }
62922
+ }
62923
+ dispose(scopeKey) {
62924
+ if (scopeKey) this.instances.delete(scopeKey);
62925
+ else this.instances.clear();
62926
+ }
62927
+ /** test/inspection helper */
62928
+ get liveInstances() {
62929
+ return this.instances.size;
62930
+ }
62931
+ };
62932
+ TimeoutError = class extends Error {};
62933
+ }));
62934
+ //#endregion
62935
+ //#region src/agents/sandbox/tier0/registry.ts
62936
+ function getTier0Sandbox() {
62937
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
62938
+ return singleton$1;
62939
+ }
62940
+ /**
62941
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
62942
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
62943
+ * Docker container too), so tier-0 sees the same files.
62944
+ */
62945
+ function resolveTier0Binding(params) {
62946
+ if (!params.workspaceHostDir) return;
62947
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
62948
+ if (!sandboxCfg.tier0.enabled) return;
62949
+ if (sandboxCfg.workspaceAccess === "ro") return;
62950
+ return {
62951
+ backend: getTier0Sandbox(),
62952
+ workspaceHostDir: params.workspaceHostDir
62953
+ };
62954
+ }
62955
+ var singleton$1;
62956
+ var init_registry$3 = __esmMin((() => {
62957
+ init_config$4();
62958
+ init_config$2();
62959
+ init_virtual_sandbox();
62960
+ }));
62961
+ //#endregion
62962
+ //#region src/agents/sandbox/tier0/index.ts
62963
+ var init_tier0 = __esmMin((() => {
62964
+ init_router();
62965
+ init_registry$3();
62966
+ init_virtual_sandbox();
62967
+ }));
62968
+ //#endregion
62723
62969
  //#region src/agents/tools/automation/gateway.ts
62724
62970
  function readGatewayCallOptions(params) {
62725
62971
  return {
@@ -64094,10 +64340,112 @@ function emitExecSystemEvent(text, opts) {
64094
64340
  });
64095
64341
  requestHeartbeatNow({ reason: "exec-event" });
64096
64342
  }
64343
+ /**
64344
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
64345
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
64346
+ * the command (so the caller escalates to Docker). Output is sanitized and a
64347
+ * ProcessSession is registered exactly like the normal path, so downstream
64348
+ * session listing / tailing is unaffected.
64349
+ */
64350
+ async function tryTier0Exec(args) {
64351
+ const { opts, sessionId, startedAt, execCommand } = args;
64352
+ const tier0 = opts.tier0;
64353
+ const sandbox = opts.sandbox;
64354
+ if (!tier0 || !sandbox) return null;
64355
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
64356
+ let outcome;
64357
+ try {
64358
+ outcome = await tier0.backend.exec({
64359
+ command: execCommand,
64360
+ workdir,
64361
+ workspaceHostDir: tier0.workspaceHostDir,
64362
+ env: opts.env,
64363
+ scopeKey: sandbox.containerName,
64364
+ timeoutSec: opts.timeoutSec
64365
+ });
64366
+ } catch {
64367
+ return null;
64368
+ }
64369
+ if (outcome.unsupported) return null;
64370
+ const session = {
64371
+ id: sessionId,
64372
+ command: opts.command,
64373
+ scopeKey: opts.scopeKey,
64374
+ sessionKey: opts.sessionKey,
64375
+ notifyOnExit: opts.notifyOnExit,
64376
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
64377
+ exitNotified: false,
64378
+ child: void 0,
64379
+ stdin: void 0,
64380
+ pid: void 0,
64381
+ startedAt,
64382
+ cwd: opts.workdir,
64383
+ maxOutputChars: opts.maxOutput,
64384
+ pendingMaxOutputChars: opts.pendingMaxOutput,
64385
+ totalOutputChars: 0,
64386
+ pendingStdout: [],
64387
+ pendingStderr: [],
64388
+ pendingStdoutChars: 0,
64389
+ pendingStderrChars: 0,
64390
+ aggregated: "",
64391
+ tail: "",
64392
+ exited: false,
64393
+ exitCode: void 0,
64394
+ exitSignal: void 0,
64395
+ truncated: false,
64396
+ backgrounded: false
64397
+ };
64398
+ addSession(session);
64399
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
64400
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
64401
+ const status = outcome.status === "completed" ? "completed" : "failed";
64402
+ markExited(session, outcome.exitCode ?? 0, null, status);
64403
+ const durationMs = Date.now() - startedAt;
64404
+ const aggregated = session.aggregated.trim();
64405
+ let result;
64406
+ if (status === "completed") {
64407
+ const exitCode = outcome.exitCode ?? 0;
64408
+ result = {
64409
+ status: "completed",
64410
+ exitCode,
64411
+ exitSignal: null,
64412
+ durationMs,
64413
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
64414
+ timedOut: false
64415
+ };
64416
+ } else {
64417
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
64418
+ result = {
64419
+ status: "failed",
64420
+ exitCode: outcome.exitCode,
64421
+ exitSignal: null,
64422
+ durationMs,
64423
+ aggregated,
64424
+ timedOut: outcome.timedOut,
64425
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
64426
+ };
64427
+ }
64428
+ return {
64429
+ session,
64430
+ startedAt,
64431
+ pid: void 0,
64432
+ promise: Promise.resolve(result),
64433
+ kill: () => {}
64434
+ };
64435
+ }
64097
64436
  async function runExecProcess(opts) {
64098
64437
  const startedAt = Date.now();
64099
64438
  const sessionId = createSessionSlug();
64100
64439
  const execCommand = opts.execCommand ?? opts.command;
64440
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
64441
+ const tier0Handle = await tryTier0Exec({
64442
+ opts,
64443
+ sessionId,
64444
+ startedAt,
64445
+ execCommand
64446
+ });
64447
+ if (tier0Handle) return tier0Handle;
64448
+ }
64101
64449
  const supervisor = getProcessSupervisor();
64102
64450
  const session = {
64103
64451
  id: sessionId,
@@ -64328,6 +64676,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
64328
64676
  init_supervisor();
64329
64677
  init_pty_dsr();
64330
64678
  init_shell_utils();
64679
+ init_tier0();
64331
64680
  init_bash_process_registry();
64332
64681
  init_bash_tools_shared();
64333
64682
  DANGEROUS_HOST_ENV_VARS = new Set([
@@ -64931,7 +65280,11 @@ function createExecTool(defaults) {
64931
65280
  scopeKey: defaults?.scopeKey,
64932
65281
  sessionKey: notifySessionKey,
64933
65282
  timeoutSec: effectiveTimeout,
64934
- onUpdate
65283
+ onUpdate,
65284
+ tier0: sandbox ? resolveTier0Binding({
65285
+ agentId,
65286
+ workspaceHostDir: sandbox.workspaceDir
65287
+ }) : void 0
64935
65288
  });
64936
65289
  let yielded = false;
64937
65290
  let yieldTimer = null;
@@ -65006,6 +65359,7 @@ var init_bash_tools_exec = __esmMin((() => {
65006
65359
  init_logger$2();
65007
65360
  init_session_key$1();
65008
65361
  init_landlock();
65362
+ init_tier0();
65009
65363
  init_gateway();
65010
65364
  init_nodes_utils();
65011
65365
  init_bash_process_registry();
@@ -67210,7 +67564,7 @@ var init_debug_commands = __esmMin((() => {
67210
67564
  var handleConfigCommand, handleDebugCommand;
67211
67565
  var init_commands_config = __esmMin((() => {
67212
67566
  init_config_writes();
67213
- init_registry$4();
67567
+ init_registry$5();
67214
67568
  init_config_paths();
67215
67569
  init_config$4();
67216
67570
  init_runtime_overrides();
@@ -67855,11 +68209,12 @@ var init_agent_type = __esmMin((() => {
67855
68209
  if (!trimmed) return [];
67856
68210
  return [
67857
68211
  "## Skills (mandatory)",
67858
- "Before replying: scan <available_skills> <description> entries.",
67859
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
67860
- "- If multiple could apply: choose the most specific one, then read/follow it.",
67861
- "- If none clearly apply: do not read any SKILL.md.",
67862
- "Constraints: never read more than one skill up front; only read after selecting.",
68212
+ "Before replying: scan the <available_skills> entries.",
68213
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
68214
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
68215
+ "- If none clearly apply: do not load any skill.",
68216
+ `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}\`.`,
68217
+ "Constraints: never load more than one skill up front; only load after selecting.",
67863
68218
  trimmed,
67864
68219
  ""
67865
68220
  ];
@@ -68005,6 +68360,37 @@ var init_agent_type = __esmMin((() => {
68005
68360
  ];
68006
68361
  }));
68007
68362
  //#endregion
68363
+ //#region src/agents/sections/behaviour.ts
68364
+ var BEHAVIOUR_SECTIONS;
68365
+ var init_behaviour = __esmMin((() => {
68366
+ init_prose_loader();
68367
+ BEHAVIOUR_SECTIONS = [{
68368
+ id: "behaviour",
68369
+ layer: "identity",
68370
+ order: 2200,
68371
+ modes: ["full", "minimal"],
68372
+ cacheable: false,
68373
+ header: "## Operating Rules (self-maintained)",
68374
+ source: "file",
68375
+ render: (ctx) => {
68376
+ const workspaceDir = ctx.params.workspaceDir;
68377
+ if (!workspaceDir) return [];
68378
+ const content = resolveProse({
68379
+ layer: "identity",
68380
+ id: "behaviour",
68381
+ agentWorkspaceDir: workspaceDir
68382
+ })?.content.trim();
68383
+ if (!content) return [];
68384
+ return [
68385
+ "## Operating Rules (self-maintained)",
68386
+ "",
68387
+ content,
68388
+ ""
68389
+ ];
68390
+ }
68391
+ }];
68392
+ }));
68393
+ //#endregion
68008
68394
  //#region src/agents/personal-agent-id.ts
68009
68395
  /**
68010
68396
  * Personal-agent ID helpers.
@@ -69039,6 +69425,7 @@ function getBuiltinRegistry() {
69039
69425
  _registry$1.registerAll(PLATFORM_SECTIONS);
69040
69426
  _registry$1.registerAll(AGENT_TYPE_SECTIONS);
69041
69427
  _registry$1.registerAll(IDENTITY_SECTIONS);
69428
+ _registry$1.registerAll(BEHAVIOUR_SECTIONS);
69042
69429
  _registry$1.registerAll(USER_SECTIONS);
69043
69430
  _registry$1.registerAll(SESSION_SECTIONS);
69044
69431
  return _registry$1;
@@ -69057,6 +69444,7 @@ function assembleAgentSystemPrompt(params) {
69057
69444
  var _registry$1;
69058
69445
  var init_assemble = __esmMin((() => {
69059
69446
  init_agent_type();
69447
+ init_behaviour();
69060
69448
  init_identity();
69061
69449
  init_platform();
69062
69450
  init_registry$1();
@@ -76887,7 +77275,7 @@ var init_reply_elevated = __esmMin((() => {
76887
77275
  init_agent_scope();
76888
77276
  init_dock();
76889
77277
  init_plugins();
76890
- init_registry$4();
77278
+ init_registry$5();
76891
77279
  init_message_channel();
76892
77280
  init_string_normalization();
76893
77281
  init_elevated_unavailable();
@@ -86590,7 +86978,7 @@ function resolvePingPongTurns(cfg) {
86590
86978
  var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
86591
86979
  var init_sessions_send_helpers = __esmMin((() => {
86592
86980
  init_plugins();
86593
- init_registry$4();
86981
+ init_registry$5();
86594
86982
  ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
86595
86983
  REPLY_SKIP_TOKEN = "REPLY_SKIP";
86596
86984
  DEFAULT_PING_PONG_TURNS = 5;
@@ -94331,7 +94719,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
94331
94719
  var init_agent_runner_utils = __esmMin((() => {
94332
94720
  init_agent_scope();
94333
94721
  init_dock();
94334
- init_registry$4();
94722
+ init_registry$5();
94335
94723
  init_sessions$1();
94336
94724
  init_usage_format();
94337
94725
  BUN_FETCH_SOCKET_ERROR_RE = /socket connection was closed unexpectedly/i;
@@ -100537,7 +100925,7 @@ function loadOpenClawPlugins(options = {}) {
100537
100925
  }
100538
100926
  var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
100539
100927
  var init_loader = __esmMin((() => {
100540
- init_registry$6();
100928
+ init_registry$7();
100541
100929
  init_subsystem();
100542
100930
  init_utils$2();
100543
100931
  init_version$1();
@@ -100547,7 +100935,7 @@ var init_loader = __esmMin((() => {
100547
100935
  init_discovery();
100548
100936
  init_hook_runner_global();
100549
100937
  init_manifest_registry();
100550
- init_registry$5();
100938
+ init_registry$6();
100551
100939
  init_runtime$2();
100552
100940
  init_runtime$1();
100553
100941
  init_schema_validator();
@@ -111527,6 +111915,36 @@ async function prepareSessionManagerForRun(params) {
111527
111915
  }
111528
111916
  var init_session_manager_init = __esmMin((() => {}));
111529
111917
  //#endregion
111918
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
111919
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
111920
+ function reduceToolOutputText(text, opts) {
111921
+ let lines = text.split("\n");
111922
+ if (opts.collapseRuns) {
111923
+ const collapsed = [];
111924
+ let i = 0;
111925
+ while (i < lines.length) {
111926
+ let j = i + 1;
111927
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
111928
+ const run = j - i;
111929
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
111930
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
111931
+ i = j;
111932
+ }
111933
+ lines = collapsed;
111934
+ }
111935
+ if (lines.length <= opts.maxLines) return lines.join("\n");
111936
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
111937
+ const head = lines.slice(0, opts.headLines);
111938
+ const tail = lines.slice(lines.length - opts.tailLines);
111939
+ const elided = lines.length - head.length - tail.length;
111940
+ return [
111941
+ ...head,
111942
+ `… ${elided} lines elided …`,
111943
+ ...tail
111944
+ ].join("\n");
111945
+ }
111946
+ var init_tool_result_reduce = __esmMin((() => {}));
111947
+ //#endregion
111530
111948
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
111531
111949
  function isTextBlock(block) {
111532
111950
  return !!block && typeof block === "object" && block.type === "text";
@@ -111661,8 +112079,28 @@ function applyMessageMutationInPlace(target, source) {
111661
112079
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
111662
112080
  Object.assign(targetRecord, sourceRecord);
111663
112081
  }
112082
+ /**
112083
+ * Run the pure line-reducer over each tool-result message's text content,
112084
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
112085
+ */
112086
+ function reduceToolResultOutputsInPlace(messages) {
112087
+ for (const message of messages) {
112088
+ if (!isToolResultMessage(message)) continue;
112089
+ const rawText = getToolResultText(message);
112090
+ if (!rawText) continue;
112091
+ const reduced = reduceToolOutputText(rawText, {
112092
+ maxLines: REDUCE_MAX_LINES,
112093
+ headLines: REDUCE_HEAD_LINES,
112094
+ tailLines: REDUCE_TAIL_LINES,
112095
+ collapseRuns: true
112096
+ });
112097
+ if (reduced === rawText) continue;
112098
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
112099
+ }
112100
+ }
111664
112101
  function enforceToolResultContextBudgetInPlace(params) {
111665
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
112102
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
112103
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
111666
112104
  for (const message of messages) {
111667
112105
  if (!isToolResultMessage(message)) continue;
111668
112106
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -111684,6 +112122,7 @@ function enforceToolResultContextBudgetInPlace(params) {
111684
112122
  * @returns An async function suitable for use as Agent's transformContext callback.
111685
112123
  */
111686
112124
  function createToolResultContextGuardTransform(params) {
112125
+ const reduceOutput = params.reduceOutput !== false;
111687
112126
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
111688
112127
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
111689
112128
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -111694,13 +112133,15 @@ function createToolResultContextGuardTransform(params) {
111694
112133
  enforceToolResultContextBudgetInPlace({
111695
112134
  messages: contextMessages,
111696
112135
  contextBudgetChars,
111697
- maxSingleToolResultChars
112136
+ maxSingleToolResultChars,
112137
+ reduceOutput
111698
112138
  });
111699
112139
  return contextMessages;
111700
112140
  };
111701
112141
  }
111702
- 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;
112142
+ 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;
111703
112143
  var init_tool_result_context_guard = __esmMin((() => {
112144
+ init_tool_result_reduce();
111704
112145
  CHARS_PER_TOKEN_ESTIMATE = 4;
111705
112146
  CONTEXT_INPUT_HEADROOM_RATIO = .75;
111706
112147
  SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
@@ -111709,6 +112150,9 @@ var init_tool_result_context_guard = __esmMin((() => {
111709
112150
  CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
111710
112151
  CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
111711
112152
  PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
112153
+ REDUCE_MAX_LINES = 200;
112154
+ REDUCE_HEAD_LINES = 40;
112155
+ REDUCE_TAIL_LINES = 40;
111712
112156
  }));
111713
112157
  //#endregion
111714
112158
  //#region src/agents/pi-embedded-runner/run/attempt-session.ts
@@ -111801,7 +112245,10 @@ async function createRunSession(params, env) {
111801
112245
  applySystemPromptOverrideToSession(session, env.systemPromptText);
111802
112246
  if (!session) throw new Error("Embedded agent session missing");
111803
112247
  const activeSession = session;
111804
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
112248
+ const contextGuardTransform = createToolResultContextGuardTransform({
112249
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
112250
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
112251
+ });
111805
112252
  activeSession.agent.transformContext = contextGuardTransform;
111806
112253
  const cacheTrace = createCacheTrace({
111807
112254
  cfg: params.config,