@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
@@ -46,6 +46,7 @@ import readline, { createInterface } from "node:readline";
46
46
  import { Readable } from "node:stream";
47
47
  import chokidar from "chokidar";
48
48
  import { Type as Type$1 } from "@sinclair/typebox";
49
+ import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
49
50
  import fs$2 from "fs/promises";
50
51
  import os$1 from "os";
51
52
  import path$1 from "path";
@@ -1297,6 +1298,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
1297
1298
  ]).optional(),
1298
1299
  perSession: z.boolean().optional(),
1299
1300
  workspaceRoot: z.string().optional(),
1301
+ tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
1300
1302
  docker: SandboxDockerSchema,
1301
1303
  browser: SandboxBrowserSchema,
1302
1304
  prune: SandboxPruneSchema
@@ -1498,7 +1500,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
1498
1500
  exec: ToolExecSchema,
1499
1501
  fs: ToolFsSchema,
1500
1502
  subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
1501
- sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
1503
+ sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
1504
+ outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
1502
1505
  }).strict().superRefine((value, ctx) => {
1503
1506
  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)");
1504
1507
  }).optional();
@@ -2709,7 +2712,7 @@ function notifyMcpToolsChanged() {
2709
2712
  }
2710
2713
  }
2711
2714
  var tools$1, sseSubscribers, EMPTY_OBJECT_SCHEMA;
2712
- var init_registry$6 = __esmMin((() => {
2715
+ var init_registry$7 = __esmMin((() => {
2713
2716
  tools$1 = /* @__PURE__ */ new Map();
2714
2717
  sseSubscribers = /* @__PURE__ */ new Set();
2715
2718
  EMPTY_OBJECT_SCHEMA = {
@@ -3463,9 +3466,9 @@ function createPluginRegistry(registryParams) {
3463
3466
  registerTypedHook
3464
3467
  };
3465
3468
  }
3466
- var init_registry$5 = __esmMin((() => {
3469
+ var init_registry$6 = __esmMin((() => {
3467
3470
  init_instant_commands();
3468
- init_registry$6();
3471
+ init_registry$7();
3469
3472
  init_internal_hooks();
3470
3473
  init_utils$2();
3471
3474
  init_channel_link_runtime();
@@ -3499,7 +3502,7 @@ function setActivePluginRuntime(runtime) {
3499
3502
  }
3500
3503
  var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$3, configState, runtimeState;
3501
3504
  var init_runtime$3 = __esmMin((() => {
3502
- init_registry$5();
3505
+ init_registry$6();
3503
3506
  REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
3504
3507
  CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
3505
3508
  RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
@@ -3546,7 +3549,7 @@ function normalizeAnyChannelId(raw) {
3546
3549
  })?.plugin.id ?? null;
3547
3550
  }
3548
3551
  var CHAT_CHANNEL_ORDER, CHANNEL_IDS, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
3549
- var init_registry$4 = __esmMin((() => {
3552
+ var init_registry$5 = __esmMin((() => {
3550
3553
  init_runtime$3();
3551
3554
  CHAT_CHANNEL_ORDER = [
3552
3555
  "telegram",
@@ -3968,7 +3971,7 @@ function createSubsystemLogger(subsystem) {
3968
3971
  }
3969
3972
  var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
3970
3973
  var init_subsystem = __esmMin((() => {
3971
- init_registry$4();
3974
+ init_registry$5();
3972
3975
  init_globals();
3973
3976
  init_runtime$2();
3974
3977
  init_progress_line();
@@ -4197,7 +4200,7 @@ var init_shell_env = __esmMin((() => {
4197
4200
  //#region src/version.ts
4198
4201
  var VERSION;
4199
4202
  var init_version$1 = __esmMin((() => {
4200
- VERSION = "2026.6.14-dev.20260616061802";
4203
+ VERSION = "2026.6.16-dev";
4201
4204
  }));
4202
4205
  //#endregion
4203
4206
  //#region src/config/agent-dirs.ts
@@ -14903,6 +14906,7 @@ var init_zod_schema = __esmMin((() => {
14903
14906
  importContacts: z.boolean().optional()
14904
14907
  }).strict().optional(),
14905
14908
  memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
14909
+ trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
14906
14910
  personalAgentObservations: z.object({
14907
14911
  enabled: z.boolean().optional(),
14908
14912
  dbPath: z.string().optional()
@@ -15015,6 +15019,7 @@ var init_zod_schema = __esmMin((() => {
15015
15019
  memory: MemorySchema,
15016
15020
  skills: z.object({
15017
15021
  allowBundled: z.array(z.string()).optional(),
15022
+ progressiveDisclosure: z.boolean().optional(),
15018
15023
  load: z.object({
15019
15024
  extraDirs: z.array(z.string()).optional(),
15020
15025
  watch: z.boolean().optional(),
@@ -15390,7 +15395,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
15390
15395
  var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
15391
15396
  var init_validation = __esmMin((() => {
15392
15397
  init_agent_scope();
15393
- init_registry$4();
15398
+ init_registry$5();
15394
15399
  init_config_state();
15395
15400
  init_manifest_registry();
15396
15401
  init_schema_validator();
@@ -16598,7 +16603,7 @@ function isMarkdownCapableMessageChannel(raw) {
16598
16603
  }
16599
16604
  var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
16600
16605
  var init_message_channel = __esmMin((() => {
16601
- init_registry$4();
16606
+ init_registry$5();
16602
16607
  init_client_info();
16603
16608
  init_runtime$3();
16604
16609
  INTERNAL_MESSAGE_CHANNEL = "webchat";
@@ -17032,7 +17037,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
17032
17037
  }
17033
17038
  var init_bindings = __esmMin((() => {
17034
17039
  init_agent_scope();
17035
- init_registry$4();
17040
+ init_registry$5();
17036
17041
  init_session_key$1();
17037
17042
  }));
17038
17043
  //#endregion
@@ -17687,7 +17692,7 @@ function normalizeChannelId(raw) {
17687
17692
  }
17688
17693
  var init_plugins = __esmMin((() => {
17689
17694
  init_runtime$3();
17690
- init_registry$4();
17695
+ init_registry$5();
17691
17696
  init_directory_config();
17692
17697
  init_channel_config();
17693
17698
  init_allowlist_match();
@@ -20834,7 +20839,7 @@ var init_dock = __esmMin((() => {
20834
20839
  init_utils$2();
20835
20840
  init_group_mentions();
20836
20841
  init_signal$1();
20837
- init_registry$4();
20842
+ init_registry$5();
20838
20843
  formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
20839
20844
  formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
20840
20845
  DOCKS = {
@@ -28441,6 +28446,24 @@ var init_bundled_dir = __esmMin((() => {
28441
28446
  init_minion_root();
28442
28447
  }));
28443
28448
  //#endregion
28449
+ //#region src/agents/skills/compact-prompt.ts
28450
+ /**
28451
+ * Render a compact, name+description-only skills listing for progressive
28452
+ * disclosure. The full SKILL.md body is deliberately omitted; the agent is
28453
+ * instructed to load it on demand via the `skill_view` tool. This keeps the
28454
+ * system prompt small when many skills are available.
28455
+ */
28456
+ function formatSkillsCompact(skills) {
28457
+ if (skills.length === 0) return "";
28458
+ return [
28459
+ "<available_skills>",
28460
+ ...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
28461
+ "</available_skills>",
28462
+ "Call the `skill_view` tool with a skill name to load its full instructions before using it."
28463
+ ].join("\n");
28464
+ }
28465
+ var init_compact_prompt = __esmMin((() => {}));
28466
+ //#endregion
28444
28467
  //#region src/shared/config-eval.ts
28445
28468
  function isTruthyValue(value) {
28446
28469
  if (value === void 0 || value === null) return false;
@@ -29191,6 +29214,35 @@ function applySkillsPromptLimits(params) {
29191
29214
  truncatedReason
29192
29215
  };
29193
29216
  }
29217
+ /**
29218
+ * Resolve whether progressive disclosure is enabled. Default is ON; only an
29219
+ * explicit `false` disables it (inlining full skill bodies in the prompt).
29220
+ */
29221
+ function resolveProgressiveDisclosure(config, override) {
29222
+ if (override !== void 0) return override;
29223
+ return config?.skills?.progressiveDisclosure !== false;
29224
+ }
29225
+ /**
29226
+ * Map prompt-eligible skill entries to compact `{ name, description, body }`
29227
+ * records. The body is the full SKILL.md text, read from disk on demand; if the
29228
+ * file can't be read we fall back to an empty body (compact mode omits bodies
29229
+ * from the prompt anyway, so this only affects callers that inspect `body`).
29230
+ */
29231
+ function toCompactSkills(skills) {
29232
+ return skills.map((skill) => {
29233
+ let body = "";
29234
+ try {
29235
+ body = fs.readFileSync(skill.filePath, "utf-8");
29236
+ } catch {
29237
+ body = "";
29238
+ }
29239
+ return {
29240
+ name: skill.name,
29241
+ description: skill.description ?? "",
29242
+ body
29243
+ };
29244
+ });
29245
+ }
29194
29246
  function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
29195
29247
  const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
29196
29248
  const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
@@ -29202,7 +29254,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
29202
29254
  const prompt = [
29203
29255
  remoteNote,
29204
29256
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
29205
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
29257
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
29206
29258
  ].filter(Boolean).join("\n");
29207
29259
  const skillFilter = normalizeSkillFilter(opts?.skillFilter);
29208
29260
  const denyFilter = normalizeSkillFilter(opts?.denyFilter);
@@ -29229,7 +29281,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
29229
29281
  return [
29230
29282
  remoteNote,
29231
29283
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
29232
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
29284
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
29233
29285
  ].filter(Boolean).join("\n");
29234
29286
  }
29235
29287
  function resolveSkillsPromptForRun(params) {
@@ -29382,6 +29434,7 @@ var init_workspace$1 = __esmMin((() => {
29382
29434
  init_utils$2();
29383
29435
  init_sandbox_paths();
29384
29436
  init_bundled_dir();
29437
+ init_compact_prompt();
29385
29438
  init_config$3();
29386
29439
  init_filter();
29387
29440
  init_frontmatter();
@@ -31112,7 +31165,7 @@ var init_parse$2 = __esmMin((() => {
31112
31165
  ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
31113
31166
  })), 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;
31114
31167
  var init_constants$2 = __esmMin((() => {
31115
- init_registry$4();
31168
+ init_registry$5();
31116
31169
  init_config$4();
31117
31170
  DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
31118
31171
  DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
@@ -31617,6 +31670,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
31617
31670
  scope,
31618
31671
  workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
31619
31672
  workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
31673
+ tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
31620
31674
  docker: resolveSandboxDockerConfig({
31621
31675
  scope,
31622
31676
  globalDocker: agent?.docker,
@@ -39095,7 +39149,7 @@ async function removeBrowserRegistryEntry(containerName) {
39095
39149
  return next;
39096
39150
  });
39097
39151
  }
39098
- var init_registry$3 = __esmMin((() => {
39152
+ var init_registry$4 = __esmMin((() => {
39099
39153
  init_session_write_lock();
39100
39154
  init_constants$2();
39101
39155
  }));
@@ -39556,7 +39610,7 @@ var init_docker = __esmMin((() => {
39556
39610
  init_runtime$2();
39557
39611
  init_config_hash();
39558
39612
  init_constants$2();
39559
- init_registry$3();
39613
+ init_registry$4();
39560
39614
  init_shared$1();
39561
39615
  init_validate_sandbox_security();
39562
39616
  log$43 = createSubsystemLogger("sandbox/docker");
@@ -39782,7 +39836,7 @@ var init_browser = __esmMin((() => {
39782
39836
  init_config$2();
39783
39837
  init_constants$2();
39784
39838
  init_docker();
39785
- init_registry$3();
39839
+ init_registry$4();
39786
39840
  init_shared$1();
39787
39841
  init_tool_policy();
39788
39842
  HOT_BROWSER_WINDOW_MS = 300 * 1e3;
@@ -40148,7 +40202,7 @@ var init_prune = __esmMin((() => {
40148
40202
  init_runtime$2();
40149
40203
  init_browser_bridges();
40150
40204
  init_docker();
40151
- init_registry$3();
40205
+ init_registry$4();
40152
40206
  lastPruneAtMs = 0;
40153
40207
  }));
40154
40208
  //#endregion
@@ -40454,7 +40508,7 @@ var init_manage = __esmMin((() => {
40454
40508
  init_config$4();
40455
40509
  init_config$2();
40456
40510
  init_docker();
40457
- init_registry$3();
40511
+ init_registry$4();
40458
40512
  init_shared$1();
40459
40513
  }));
40460
40514
  //#endregion
@@ -41554,7 +41608,7 @@ var loggedListActionErrors;
41554
41608
  var init_channel_tools = __esmMin((() => {
41555
41609
  init_dock();
41556
41610
  init_plugins();
41557
- init_registry$4();
41611
+ init_registry$5();
41558
41612
  init_runtime$2();
41559
41613
  loggedListActionErrors = /* @__PURE__ */ new Set();
41560
41614
  }));
@@ -54833,7 +54887,7 @@ function resolveCommandAuthorization(params) {
54833
54887
  }
54834
54888
  var init_command_auth = __esmMin((() => {
54835
54889
  init_dock();
54836
- init_registry$4();
54890
+ init_registry$5();
54837
54891
  init_message_channel();
54838
54892
  }));
54839
54893
  //#endregion
@@ -60764,7 +60818,7 @@ var init_commands_allowlist = __esmMin((() => {
60764
60818
  init_accounts$5();
60765
60819
  init_config_writes();
60766
60820
  init_pairing();
60767
- init_registry$4();
60821
+ init_registry$5();
60768
60822
  init_accounts$3();
60769
60823
  init_accounts$2();
60770
60824
  init_config$4();
@@ -65069,6 +65123,198 @@ var init_landlock = __esmMin((() => {
65069
65123
  _caps = null;
65070
65124
  }));
65071
65125
  //#endregion
65126
+ //#region src/agents/sandbox/tier0/router.ts
65127
+ function shouldTryTier0(command) {
65128
+ const cmd = command.trim();
65129
+ if (!cmd) return false;
65130
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
65131
+ return true;
65132
+ }
65133
+ /**
65134
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
65135
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
65136
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
65137
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
65138
+ */
65139
+ function isInterpreterLimitation(stderr) {
65140
+ if (!stderr) return false;
65141
+ 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);
65142
+ }
65143
+ var ESCALATE_PATTERNS;
65144
+ var init_router = __esmMin((() => {
65145
+ ESCALATE_PATTERNS = [
65146
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
65147
+ /\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/,
65148
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
65149
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
65150
+ /(^|\s|=)\/(dev|proc|sys)\//,
65151
+ /<\(|>\(/
65152
+ ];
65153
+ }));
65154
+ //#endregion
65155
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
65156
+ /**
65157
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
65158
+ *
65159
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
65160
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
65161
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
65162
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
65163
+ *
65164
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
65165
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
65166
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
65167
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
65168
+ *
65169
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
65170
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
65171
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
65172
+ */
65173
+ function withTimeout$5(p, ms) {
65174
+ if (!ms) return p;
65175
+ return new Promise((resolve, reject) => {
65176
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
65177
+ p.then((value) => {
65178
+ clearTimeout(timer);
65179
+ resolve(value);
65180
+ }, (error) => {
65181
+ clearTimeout(timer);
65182
+ reject(error);
65183
+ });
65184
+ });
65185
+ }
65186
+ var Tier0VirtualSandbox, TimeoutError;
65187
+ var init_virtual_sandbox = __esmMin((() => {
65188
+ init_router();
65189
+ Tier0VirtualSandbox = class {
65190
+ constructor() {
65191
+ this.instances = /* @__PURE__ */ new Map();
65192
+ }
65193
+ getInstance(req) {
65194
+ const existing = this.instances.get(req.scopeKey);
65195
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
65196
+ existing.lastUsed = Date.now();
65197
+ return existing.bash;
65198
+ }
65199
+ const fs = new MountableFs({ base: new InMemoryFs() });
65200
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
65201
+ const bash = new Bash({
65202
+ fs,
65203
+ cwd: req.workdir,
65204
+ env: {
65205
+ LANG: "C.UTF-8",
65206
+ ...req.env
65207
+ },
65208
+ executionLimits: {
65209
+ maxCommandCount: 1e4,
65210
+ maxLoopIterations: 1e6
65211
+ }
65212
+ });
65213
+ const inst = {
65214
+ bash,
65215
+ workspaceHostDir: req.workspaceHostDir,
65216
+ workdir: req.workdir,
65217
+ lastUsed: Date.now()
65218
+ };
65219
+ this.instances.set(req.scopeKey, inst);
65220
+ return bash;
65221
+ }
65222
+ async exec(req) {
65223
+ const startedAt = Date.now();
65224
+ let bash;
65225
+ try {
65226
+ bash = this.getInstance(req);
65227
+ } catch {
65228
+ return {
65229
+ status: "failed",
65230
+ exitCode: null,
65231
+ durationMs: Date.now() - startedAt,
65232
+ aggregated: "",
65233
+ timedOut: false,
65234
+ unsupported: true
65235
+ };
65236
+ }
65237
+ try {
65238
+ const result = await withTimeout$5(bash.exec(req.command, {
65239
+ cwd: req.workdir,
65240
+ env: req.env
65241
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
65242
+ const durationMs = Date.now() - startedAt;
65243
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
65244
+ if (result.exitCode === 0) return {
65245
+ status: "completed",
65246
+ exitCode: 0,
65247
+ durationMs,
65248
+ aggregated: combined,
65249
+ timedOut: false,
65250
+ unsupported: false
65251
+ };
65252
+ return {
65253
+ status: "failed",
65254
+ exitCode: result.exitCode,
65255
+ durationMs,
65256
+ aggregated: combined,
65257
+ timedOut: false,
65258
+ unsupported: isInterpreterLimitation(result.stderr)
65259
+ };
65260
+ } catch (err) {
65261
+ const timedOut = err instanceof TimeoutError;
65262
+ return {
65263
+ status: "failed",
65264
+ exitCode: null,
65265
+ durationMs: Date.now() - startedAt,
65266
+ aggregated: "",
65267
+ timedOut,
65268
+ unsupported: !timedOut
65269
+ };
65270
+ }
65271
+ }
65272
+ dispose(scopeKey) {
65273
+ if (scopeKey) this.instances.delete(scopeKey);
65274
+ else this.instances.clear();
65275
+ }
65276
+ /** test/inspection helper */
65277
+ get liveInstances() {
65278
+ return this.instances.size;
65279
+ }
65280
+ };
65281
+ TimeoutError = class extends Error {};
65282
+ }));
65283
+ //#endregion
65284
+ //#region src/agents/sandbox/tier0/registry.ts
65285
+ function getTier0Sandbox() {
65286
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
65287
+ return singleton$1;
65288
+ }
65289
+ /**
65290
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
65291
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
65292
+ * Docker container too), so tier-0 sees the same files.
65293
+ */
65294
+ function resolveTier0Binding(params) {
65295
+ if (!params.workspaceHostDir) return;
65296
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
65297
+ if (!sandboxCfg.tier0.enabled) return;
65298
+ if (sandboxCfg.workspaceAccess === "ro") return;
65299
+ return {
65300
+ backend: getTier0Sandbox(),
65301
+ workspaceHostDir: params.workspaceHostDir
65302
+ };
65303
+ }
65304
+ var singleton$1;
65305
+ var init_registry$3 = __esmMin((() => {
65306
+ init_config$4();
65307
+ init_config$2();
65308
+ init_virtual_sandbox();
65309
+ }));
65310
+ //#endregion
65311
+ //#region src/agents/sandbox/tier0/index.ts
65312
+ var init_tier0 = __esmMin((() => {
65313
+ init_router();
65314
+ init_registry$3();
65315
+ init_virtual_sandbox();
65316
+ }));
65317
+ //#endregion
65072
65318
  //#region src/agents/tools/automation/gateway.ts
65073
65319
  function readGatewayCallOptions(params) {
65074
65320
  return {
@@ -66443,10 +66689,112 @@ function emitExecSystemEvent(text, opts) {
66443
66689
  });
66444
66690
  requestHeartbeatNow({ reason: "exec-event" });
66445
66691
  }
66692
+ /**
66693
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
66694
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
66695
+ * the command (so the caller escalates to Docker). Output is sanitized and a
66696
+ * ProcessSession is registered exactly like the normal path, so downstream
66697
+ * session listing / tailing is unaffected.
66698
+ */
66699
+ async function tryTier0Exec(args) {
66700
+ const { opts, sessionId, startedAt, execCommand } = args;
66701
+ const tier0 = opts.tier0;
66702
+ const sandbox = opts.sandbox;
66703
+ if (!tier0 || !sandbox) return null;
66704
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
66705
+ let outcome;
66706
+ try {
66707
+ outcome = await tier0.backend.exec({
66708
+ command: execCommand,
66709
+ workdir,
66710
+ workspaceHostDir: tier0.workspaceHostDir,
66711
+ env: opts.env,
66712
+ scopeKey: sandbox.containerName,
66713
+ timeoutSec: opts.timeoutSec
66714
+ });
66715
+ } catch {
66716
+ return null;
66717
+ }
66718
+ if (outcome.unsupported) return null;
66719
+ const session = {
66720
+ id: sessionId,
66721
+ command: opts.command,
66722
+ scopeKey: opts.scopeKey,
66723
+ sessionKey: opts.sessionKey,
66724
+ notifyOnExit: opts.notifyOnExit,
66725
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
66726
+ exitNotified: false,
66727
+ child: void 0,
66728
+ stdin: void 0,
66729
+ pid: void 0,
66730
+ startedAt,
66731
+ cwd: opts.workdir,
66732
+ maxOutputChars: opts.maxOutput,
66733
+ pendingMaxOutputChars: opts.pendingMaxOutput,
66734
+ totalOutputChars: 0,
66735
+ pendingStdout: [],
66736
+ pendingStderr: [],
66737
+ pendingStdoutChars: 0,
66738
+ pendingStderrChars: 0,
66739
+ aggregated: "",
66740
+ tail: "",
66741
+ exited: false,
66742
+ exitCode: void 0,
66743
+ exitSignal: void 0,
66744
+ truncated: false,
66745
+ backgrounded: false
66746
+ };
66747
+ addSession(session);
66748
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
66749
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
66750
+ const status = outcome.status === "completed" ? "completed" : "failed";
66751
+ markExited(session, outcome.exitCode ?? 0, null, status);
66752
+ const durationMs = Date.now() - startedAt;
66753
+ const aggregated = session.aggregated.trim();
66754
+ let result;
66755
+ if (status === "completed") {
66756
+ const exitCode = outcome.exitCode ?? 0;
66757
+ result = {
66758
+ status: "completed",
66759
+ exitCode,
66760
+ exitSignal: null,
66761
+ durationMs,
66762
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
66763
+ timedOut: false
66764
+ };
66765
+ } else {
66766
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
66767
+ result = {
66768
+ status: "failed",
66769
+ exitCode: outcome.exitCode,
66770
+ exitSignal: null,
66771
+ durationMs,
66772
+ aggregated,
66773
+ timedOut: outcome.timedOut,
66774
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
66775
+ };
66776
+ }
66777
+ return {
66778
+ session,
66779
+ startedAt,
66780
+ pid: void 0,
66781
+ promise: Promise.resolve(result),
66782
+ kill: () => {}
66783
+ };
66784
+ }
66446
66785
  async function runExecProcess(opts) {
66447
66786
  const startedAt = Date.now();
66448
66787
  const sessionId = createSessionSlug();
66449
66788
  const execCommand = opts.execCommand ?? opts.command;
66789
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
66790
+ const tier0Handle = await tryTier0Exec({
66791
+ opts,
66792
+ sessionId,
66793
+ startedAt,
66794
+ execCommand
66795
+ });
66796
+ if (tier0Handle) return tier0Handle;
66797
+ }
66450
66798
  const supervisor = getProcessSupervisor();
66451
66799
  const session = {
66452
66800
  id: sessionId,
@@ -66677,6 +67025,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
66677
67025
  init_supervisor();
66678
67026
  init_pty_dsr();
66679
67027
  init_shell_utils();
67028
+ init_tier0();
66680
67029
  init_bash_process_registry();
66681
67030
  init_bash_tools_shared();
66682
67031
  DANGEROUS_HOST_ENV_VARS = new Set([
@@ -67280,7 +67629,11 @@ function createExecTool(defaults) {
67280
67629
  scopeKey: defaults?.scopeKey,
67281
67630
  sessionKey: notifySessionKey,
67282
67631
  timeoutSec: effectiveTimeout,
67283
- onUpdate
67632
+ onUpdate,
67633
+ tier0: sandbox ? resolveTier0Binding({
67634
+ agentId,
67635
+ workspaceHostDir: sandbox.workspaceDir
67636
+ }) : void 0
67284
67637
  });
67285
67638
  let yielded = false;
67286
67639
  let yieldTimer = null;
@@ -67355,6 +67708,7 @@ var init_bash_tools_exec = __esmMin((() => {
67355
67708
  init_logger$2();
67356
67709
  init_session_key$1();
67357
67710
  init_landlock();
67711
+ init_tier0();
67358
67712
  init_gateway();
67359
67713
  init_nodes_utils();
67360
67714
  init_bash_process_registry();
@@ -69559,7 +69913,7 @@ var init_debug_commands = __esmMin((() => {
69559
69913
  var handleConfigCommand, handleDebugCommand;
69560
69914
  var init_commands_config = __esmMin((() => {
69561
69915
  init_config_writes();
69562
- init_registry$4();
69916
+ init_registry$5();
69563
69917
  init_config_paths();
69564
69918
  init_config$4();
69565
69919
  init_runtime_overrides();
@@ -70204,11 +70558,12 @@ var init_agent_type = __esmMin((() => {
70204
70558
  if (!trimmed) return [];
70205
70559
  return [
70206
70560
  "## Skills (mandatory)",
70207
- "Before replying: scan <available_skills> <description> entries.",
70208
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
70209
- "- If multiple could apply: choose the most specific one, then read/follow it.",
70210
- "- If none clearly apply: do not read any SKILL.md.",
70211
- "Constraints: never read more than one skill up front; only read after selecting.",
70561
+ "Before replying: scan the <available_skills> entries.",
70562
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
70563
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
70564
+ "- If none clearly apply: do not load any skill.",
70565
+ `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}\`.`,
70566
+ "Constraints: never load more than one skill up front; only load after selecting.",
70212
70567
  trimmed,
70213
70568
  ""
70214
70569
  ];
@@ -70354,6 +70709,37 @@ var init_agent_type = __esmMin((() => {
70354
70709
  ];
70355
70710
  }));
70356
70711
  //#endregion
70712
+ //#region src/agents/sections/behaviour.ts
70713
+ var BEHAVIOUR_SECTIONS;
70714
+ var init_behaviour = __esmMin((() => {
70715
+ init_prose_loader();
70716
+ BEHAVIOUR_SECTIONS = [{
70717
+ id: "behaviour",
70718
+ layer: "identity",
70719
+ order: 2200,
70720
+ modes: ["full", "minimal"],
70721
+ cacheable: false,
70722
+ header: "## Operating Rules (self-maintained)",
70723
+ source: "file",
70724
+ render: (ctx) => {
70725
+ const workspaceDir = ctx.params.workspaceDir;
70726
+ if (!workspaceDir) return [];
70727
+ const content = resolveProse({
70728
+ layer: "identity",
70729
+ id: "behaviour",
70730
+ agentWorkspaceDir: workspaceDir
70731
+ })?.content.trim();
70732
+ if (!content) return [];
70733
+ return [
70734
+ "## Operating Rules (self-maintained)",
70735
+ "",
70736
+ content,
70737
+ ""
70738
+ ];
70739
+ }
70740
+ }];
70741
+ }));
70742
+ //#endregion
70357
70743
  //#region src/agents/personal-agent-id.ts
70358
70744
  /**
70359
70745
  * Personal-agent ID helpers.
@@ -71368,6 +71754,7 @@ function getBuiltinRegistry() {
71368
71754
  _registry$1.registerAll(PLATFORM_SECTIONS);
71369
71755
  _registry$1.registerAll(AGENT_TYPE_SECTIONS);
71370
71756
  _registry$1.registerAll(IDENTITY_SECTIONS);
71757
+ _registry$1.registerAll(BEHAVIOUR_SECTIONS);
71371
71758
  _registry$1.registerAll(USER_SECTIONS);
71372
71759
  _registry$1.registerAll(SESSION_SECTIONS);
71373
71760
  return _registry$1;
@@ -71386,6 +71773,7 @@ function assembleAgentSystemPrompt(params) {
71386
71773
  var _registry$1;
71387
71774
  var init_assemble = __esmMin((() => {
71388
71775
  init_agent_type();
71776
+ init_behaviour();
71389
71777
  init_identity$1();
71390
71778
  init_platform();
71391
71779
  init_registry$1();
@@ -79216,7 +79604,7 @@ var init_reply_elevated = __esmMin((() => {
79216
79604
  init_agent_scope();
79217
79605
  init_dock();
79218
79606
  init_plugins();
79219
- init_registry$4();
79607
+ init_registry$5();
79220
79608
  init_message_channel();
79221
79609
  init_string_normalization();
79222
79610
  init_elevated_unavailable();
@@ -88950,7 +89338,7 @@ function resolvePingPongTurns(cfg) {
88950
89338
  var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
88951
89339
  var init_sessions_send_helpers = __esmMin((() => {
88952
89340
  init_plugins();
88953
- init_registry$4();
89341
+ init_registry$5();
88954
89342
  ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
88955
89343
  REPLY_SKIP_TOKEN = "REPLY_SKIP";
88956
89344
  DEFAULT_PING_PONG_TURNS = 5;
@@ -96691,7 +97079,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
96691
97079
  var init_agent_runner_utils = __esmMin((() => {
96692
97080
  init_agent_scope();
96693
97081
  init_dock();
96694
- init_registry$4();
97082
+ init_registry$5();
96695
97083
  init_sessions$1();
96696
97084
  init_usage_format();
96697
97085
  BUN_FETCH_SOCKET_ERROR_RE = /socket connection was closed unexpectedly/i;
@@ -102758,7 +103146,7 @@ function loadOpenClawPlugins(options = {}) {
102758
103146
  }
102759
103147
  var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
102760
103148
  var init_loader = __esmMin((() => {
102761
- init_registry$6();
103149
+ init_registry$7();
102762
103150
  init_subsystem();
102763
103151
  init_utils$2();
102764
103152
  init_version$1();
@@ -102768,7 +103156,7 @@ var init_loader = __esmMin((() => {
102768
103156
  init_discovery();
102769
103157
  init_hook_runner_global();
102770
103158
  init_manifest_registry();
102771
- init_registry$5();
103159
+ init_registry$6();
102772
103160
  init_runtime$3();
102773
103161
  init_runtime$1();
102774
103162
  init_schema_validator();
@@ -113748,6 +114136,36 @@ async function prepareSessionManagerForRun(params) {
113748
114136
  }
113749
114137
  var init_session_manager_init = __esmMin((() => {}));
113750
114138
  //#endregion
114139
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
114140
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
114141
+ function reduceToolOutputText(text, opts) {
114142
+ let lines = text.split("\n");
114143
+ if (opts.collapseRuns) {
114144
+ const collapsed = [];
114145
+ let i = 0;
114146
+ while (i < lines.length) {
114147
+ let j = i + 1;
114148
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
114149
+ const run = j - i;
114150
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
114151
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
114152
+ i = j;
114153
+ }
114154
+ lines = collapsed;
114155
+ }
114156
+ if (lines.length <= opts.maxLines) return lines.join("\n");
114157
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
114158
+ const head = lines.slice(0, opts.headLines);
114159
+ const tail = lines.slice(lines.length - opts.tailLines);
114160
+ const elided = lines.length - head.length - tail.length;
114161
+ return [
114162
+ ...head,
114163
+ `… ${elided} lines elided …`,
114164
+ ...tail
114165
+ ].join("\n");
114166
+ }
114167
+ var init_tool_result_reduce = __esmMin((() => {}));
114168
+ //#endregion
113751
114169
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
113752
114170
  function isTextBlock(block) {
113753
114171
  return !!block && typeof block === "object" && block.type === "text";
@@ -113882,8 +114300,28 @@ function applyMessageMutationInPlace(target, source) {
113882
114300
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
113883
114301
  Object.assign(targetRecord, sourceRecord);
113884
114302
  }
114303
+ /**
114304
+ * Run the pure line-reducer over each tool-result message's text content,
114305
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
114306
+ */
114307
+ function reduceToolResultOutputsInPlace(messages) {
114308
+ for (const message of messages) {
114309
+ if (!isToolResultMessage(message)) continue;
114310
+ const rawText = getToolResultText(message);
114311
+ if (!rawText) continue;
114312
+ const reduced = reduceToolOutputText(rawText, {
114313
+ maxLines: REDUCE_MAX_LINES,
114314
+ headLines: REDUCE_HEAD_LINES,
114315
+ tailLines: REDUCE_TAIL_LINES,
114316
+ collapseRuns: true
114317
+ });
114318
+ if (reduced === rawText) continue;
114319
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
114320
+ }
114321
+ }
113885
114322
  function enforceToolResultContextBudgetInPlace(params) {
113886
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
114323
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
114324
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
113887
114325
  for (const message of messages) {
113888
114326
  if (!isToolResultMessage(message)) continue;
113889
114327
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -113905,6 +114343,7 @@ function enforceToolResultContextBudgetInPlace(params) {
113905
114343
  * @returns An async function suitable for use as Agent's transformContext callback.
113906
114344
  */
113907
114345
  function createToolResultContextGuardTransform(params) {
114346
+ const reduceOutput = params.reduceOutput !== false;
113908
114347
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
113909
114348
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
113910
114349
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -113915,13 +114354,15 @@ function createToolResultContextGuardTransform(params) {
113915
114354
  enforceToolResultContextBudgetInPlace({
113916
114355
  messages: contextMessages,
113917
114356
  contextBudgetChars,
113918
- maxSingleToolResultChars
114357
+ maxSingleToolResultChars,
114358
+ reduceOutput
113919
114359
  });
113920
114360
  return contextMessages;
113921
114361
  };
113922
114362
  }
113923
- 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;
114363
+ 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;
113924
114364
  var init_tool_result_context_guard = __esmMin((() => {
114365
+ init_tool_result_reduce();
113925
114366
  CHARS_PER_TOKEN_ESTIMATE = 4;
113926
114367
  CONTEXT_INPUT_HEADROOM_RATIO = .75;
113927
114368
  SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
@@ -113930,6 +114371,9 @@ var init_tool_result_context_guard = __esmMin((() => {
113930
114371
  CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
113931
114372
  CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
113932
114373
  PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
114374
+ REDUCE_MAX_LINES = 200;
114375
+ REDUCE_HEAD_LINES = 40;
114376
+ REDUCE_TAIL_LINES = 40;
113933
114377
  }));
113934
114378
  //#endregion
113935
114379
  //#region src/agents/pi-embedded-runner/run/attempt-session.ts
@@ -114022,7 +114466,10 @@ async function createRunSession(params, env) {
114022
114466
  applySystemPromptOverrideToSession(session, env.systemPromptText);
114023
114467
  if (!session) throw new Error("Embedded agent session missing");
114024
114468
  const activeSession = session;
114025
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
114469
+ const contextGuardTransform = createToolResultContextGuardTransform({
114470
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
114471
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
114472
+ });
114026
114473
  activeSession.agent.transformContext = contextGuardTransform;
114027
114474
  const cacheTrace = createCacheTrace({
114028
114475
  cfg: params.config,