@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
@@ -47,6 +47,7 @@ import { Type as Type$1 } from "@sinclair/typebox";
47
47
  import MarkdownIt from "markdown-it";
48
48
  import { spinner } from "@clack/prompts";
49
49
  import { createOscProgressController, supportsOscProgress } from "osc-progress";
50
+ import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
50
51
  import fs$1 from "fs/promises";
51
52
  import os$1 from "os";
52
53
  import path$1 from "path";
@@ -464,7 +465,7 @@ function notifyMcpToolsChanged() {
464
465
  }
465
466
  }
466
467
  var tools, sseSubscribers, EMPTY_OBJECT_SCHEMA;
467
- var init_registry$6 = __esmMin((() => {
468
+ var init_registry$7 = __esmMin((() => {
468
469
  tools = /* @__PURE__ */ new Map();
469
470
  sseSubscribers = /* @__PURE__ */ new Set();
470
471
  EMPTY_OBJECT_SCHEMA = {
@@ -1811,9 +1812,9 @@ function createPluginRegistry(registryParams) {
1811
1812
  registerTypedHook
1812
1813
  };
1813
1814
  }
1814
- var init_registry$5 = __esmMin((() => {
1815
+ var init_registry$6 = __esmMin((() => {
1815
1816
  init_instant_commands();
1816
- init_registry$6();
1817
+ init_registry$7();
1817
1818
  init_internal_hooks();
1818
1819
  init_utils$2();
1819
1820
  init_channel_link_runtime();
@@ -1847,7 +1848,7 @@ function setActivePluginRuntime(runtime) {
1847
1848
  }
1848
1849
  var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$4, configState, runtimeState;
1849
1850
  var init_runtime$3 = __esmMin((() => {
1850
- init_registry$5();
1851
+ init_registry$6();
1851
1852
  REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
1852
1853
  CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
1853
1854
  RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
@@ -1894,7 +1895,7 @@ function normalizeAnyChannelId(raw) {
1894
1895
  })?.plugin.id ?? null;
1895
1896
  }
1896
1897
  var CHAT_CHANNEL_ORDER, CHANNEL_IDS, DEFAULT_CHAT_CHANNEL, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
1897
- var init_registry$4 = __esmMin((() => {
1898
+ var init_registry$5 = __esmMin((() => {
1898
1899
  init_runtime$3();
1899
1900
  CHAT_CHANNEL_ORDER = [
1900
1901
  "telegram",
@@ -2309,7 +2310,7 @@ function createSubsystemLogger(subsystem) {
2309
2310
  }
2310
2311
  var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
2311
2312
  var init_subsystem = __esmMin((() => {
2312
- init_registry$4();
2313
+ init_registry$5();
2313
2314
  init_globals();
2314
2315
  init_runtime$2();
2315
2316
  init_progress_line();
@@ -10069,6 +10070,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
10069
10070
  ]).optional(),
10070
10071
  perSession: z.boolean().optional(),
10071
10072
  workspaceRoot: z.string().optional(),
10073
+ tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
10072
10074
  docker: SandboxDockerSchema,
10073
10075
  browser: SandboxBrowserSchema,
10074
10076
  prune: SandboxPruneSchema
@@ -10270,7 +10272,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
10270
10272
  exec: ToolExecSchema,
10271
10273
  fs: ToolFsSchema,
10272
10274
  subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
10273
- sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
10275
+ sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
10276
+ outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
10274
10277
  }).strict().superRefine((value, ctx) => {
10275
10278
  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)");
10276
10279
  }).optional();
@@ -10623,7 +10626,7 @@ var init_dotenv = __esmMin((() => {
10623
10626
  //#region src/version.ts
10624
10627
  var VERSION;
10625
10628
  var init_version$1 = __esmMin((() => {
10626
- VERSION = "2026.6.14-dev.20260616061802";
10629
+ VERSION = "2026.6.16-dev";
10627
10630
  }));
10628
10631
  //#endregion
10629
10632
  //#region src/config/agent-dirs.ts
@@ -15735,6 +15738,7 @@ var init_zod_schema = __esmMin((() => {
15735
15738
  importContacts: z.boolean().optional()
15736
15739
  }).strict().optional(),
15737
15740
  memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
15741
+ trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
15738
15742
  personalAgentObservations: z.object({
15739
15743
  enabled: z.boolean().optional(),
15740
15744
  dbPath: z.string().optional()
@@ -15847,6 +15851,7 @@ var init_zod_schema = __esmMin((() => {
15847
15851
  memory: MemorySchema,
15848
15852
  skills: z.object({
15849
15853
  allowBundled: z.array(z.string()).optional(),
15854
+ progressiveDisclosure: z.boolean().optional(),
15850
15855
  load: z.object({
15851
15856
  extraDirs: z.array(z.string()).optional(),
15852
15857
  watch: z.boolean().optional(),
@@ -16222,7 +16227,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
16222
16227
  var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
16223
16228
  var init_validation = __esmMin((() => {
16224
16229
  init_agent_scope();
16225
- init_registry$4();
16230
+ init_registry$5();
16226
16231
  init_config_state();
16227
16232
  init_manifest_registry();
16228
16233
  init_schema_validator();
@@ -19581,7 +19586,7 @@ var init_parse$2 = __esmMin((() => {
19581
19586
  ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
19582
19587
  })), 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;
19583
19588
  var init_constants$4 = __esmMin((() => {
19584
- init_registry$4();
19589
+ init_registry$5();
19585
19590
  init_config$4();
19586
19591
  DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
19587
19592
  DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
@@ -20086,6 +20091,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
20086
20091
  scope,
20087
20092
  workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
20088
20093
  workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
20094
+ tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
20089
20095
  docker: resolveSandboxDockerConfig({
20090
20096
  scope,
20091
20097
  globalDocker: agent?.docker,
@@ -21110,6 +21116,24 @@ var init_bundled_dir = __esmMin((() => {
21110
21116
  init_minion_root();
21111
21117
  }));
21112
21118
  //#endregion
21119
+ //#region src/agents/skills/compact-prompt.ts
21120
+ /**
21121
+ * Render a compact, name+description-only skills listing for progressive
21122
+ * disclosure. The full SKILL.md body is deliberately omitted; the agent is
21123
+ * instructed to load it on demand via the `skill_view` tool. This keeps the
21124
+ * system prompt small when many skills are available.
21125
+ */
21126
+ function formatSkillsCompact(skills) {
21127
+ if (skills.length === 0) return "";
21128
+ return [
21129
+ "<available_skills>",
21130
+ ...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
21131
+ "</available_skills>",
21132
+ "Call the `skill_view` tool with a skill name to load its full instructions before using it."
21133
+ ].join("\n");
21134
+ }
21135
+ var init_compact_prompt = __esmMin((() => {}));
21136
+ //#endregion
21113
21137
  //#region src/agents/skills/plugin-skills.ts
21114
21138
  function resolvePluginSkillDirs(params) {
21115
21139
  const workspaceDir = params.workspaceDir.trim();
@@ -21455,6 +21479,35 @@ function applySkillsPromptLimits(params) {
21455
21479
  truncatedReason
21456
21480
  };
21457
21481
  }
21482
+ /**
21483
+ * Resolve whether progressive disclosure is enabled. Default is ON; only an
21484
+ * explicit `false` disables it (inlining full skill bodies in the prompt).
21485
+ */
21486
+ function resolveProgressiveDisclosure(config, override) {
21487
+ if (override !== void 0) return override;
21488
+ return config?.skills?.progressiveDisclosure !== false;
21489
+ }
21490
+ /**
21491
+ * Map prompt-eligible skill entries to compact `{ name, description, body }`
21492
+ * records. The body is the full SKILL.md text, read from disk on demand; if the
21493
+ * file can't be read we fall back to an empty body (compact mode omits bodies
21494
+ * from the prompt anyway, so this only affects callers that inspect `body`).
21495
+ */
21496
+ function toCompactSkills(skills) {
21497
+ return skills.map((skill) => {
21498
+ let body = "";
21499
+ try {
21500
+ body = fsSync.readFileSync(skill.filePath, "utf-8");
21501
+ } catch {
21502
+ body = "";
21503
+ }
21504
+ return {
21505
+ name: skill.name,
21506
+ description: skill.description ?? "",
21507
+ body
21508
+ };
21509
+ });
21510
+ }
21458
21511
  function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
21459
21512
  const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
21460
21513
  const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
@@ -21466,7 +21519,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
21466
21519
  const prompt = [
21467
21520
  remoteNote,
21468
21521
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
21469
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21522
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21470
21523
  ].filter(Boolean).join("\n");
21471
21524
  const skillFilter = normalizeSkillFilter(opts?.skillFilter);
21472
21525
  const denyFilter = normalizeSkillFilter(opts?.denyFilter);
@@ -21493,7 +21546,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
21493
21546
  return [
21494
21547
  remoteNote,
21495
21548
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
21496
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21549
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21497
21550
  ].filter(Boolean).join("\n");
21498
21551
  }
21499
21552
  function resolveSkillsPromptForRun(params) {
@@ -21646,6 +21699,7 @@ var init_workspace$1 = __esmMin((() => {
21646
21699
  init_utils$2();
21647
21700
  init_sandbox_paths();
21648
21701
  init_bundled_dir();
21702
+ init_compact_prompt();
21649
21703
  init_config$2();
21650
21704
  init_filter();
21651
21705
  init_frontmatter();
@@ -29563,7 +29617,7 @@ async function removeBrowserRegistryEntry(containerName) {
29563
29617
  return next;
29564
29618
  });
29565
29619
  }
29566
- var init_registry$3 = __esmMin((() => {
29620
+ var init_registry$4 = __esmMin((() => {
29567
29621
  init_session_write_lock();
29568
29622
  init_constants$4();
29569
29623
  }));
@@ -30024,7 +30078,7 @@ var init_docker = __esmMin((() => {
30024
30078
  init_runtime$2();
30025
30079
  init_config_hash();
30026
30080
  init_constants$4();
30027
- init_registry$3();
30081
+ init_registry$4();
30028
30082
  init_shared$1();
30029
30083
  init_validate_sandbox_security();
30030
30084
  log$53 = createSubsystemLogger("sandbox/docker");
@@ -30250,7 +30304,7 @@ var init_browser = __esmMin((() => {
30250
30304
  init_config$3();
30251
30305
  init_constants$4();
30252
30306
  init_docker();
30253
- init_registry$3();
30307
+ init_registry$4();
30254
30308
  init_shared$1();
30255
30309
  init_tool_policy();
30256
30310
  HOT_BROWSER_WINDOW_MS = 300 * 1e3;
@@ -30616,7 +30670,7 @@ var init_prune = __esmMin((() => {
30616
30670
  init_runtime$2();
30617
30671
  init_browser_bridges();
30618
30672
  init_docker();
30619
- init_registry$3();
30673
+ init_registry$4();
30620
30674
  lastPruneAtMs = 0;
30621
30675
  })), GATEWAY_CLIENT_IDS, GATEWAY_CLIENT_NAMES, GATEWAY_CLIENT_MODES;
30622
30676
  var init_client_info = __esmMin((() => {
@@ -30684,7 +30738,7 @@ function isMarkdownCapableMessageChannel(raw) {
30684
30738
  }
30685
30739
  var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
30686
30740
  var init_message_channel = __esmMin((() => {
30687
- init_registry$4();
30741
+ init_registry$5();
30688
30742
  init_client_info();
30689
30743
  init_runtime$3();
30690
30744
  INTERNAL_MESSAGE_CHANNEL = "webchat";
@@ -31100,7 +31154,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
31100
31154
  }
31101
31155
  var init_bindings = __esmMin((() => {
31102
31156
  init_agent_scope();
31103
- init_registry$4();
31157
+ init_registry$5();
31104
31158
  init_session_key$1();
31105
31159
  }));
31106
31160
  //#endregion
@@ -31868,7 +31922,7 @@ var init_dock = __esmMin((() => {
31868
31922
  init_utils$2();
31869
31923
  init_group_mentions();
31870
31924
  init_signal$1();
31871
- init_registry$4();
31925
+ init_registry$5();
31872
31926
  formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
31873
31927
  formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
31874
31928
  DOCKS = {
@@ -32293,7 +32347,7 @@ function normalizeChannelId(raw) {
32293
32347
  }
32294
32348
  var init_plugins = __esmMin((() => {
32295
32349
  init_runtime$3();
32296
- init_registry$4();
32350
+ init_registry$5();
32297
32351
  init_directory_config();
32298
32352
  }));
32299
32353
  //#endregion
@@ -34083,7 +34137,7 @@ var init_manage = __esmMin((() => {
34083
34137
  init_config$4();
34084
34138
  init_config$3();
34085
34139
  init_docker();
34086
- init_registry$3();
34140
+ init_registry$4();
34087
34141
  init_shared$1();
34088
34142
  }));
34089
34143
  //#endregion
@@ -38919,7 +38973,7 @@ function resolveCommandAuthorization(params) {
38919
38973
  }
38920
38974
  var init_command_auth = __esmMin((() => {
38921
38975
  init_dock();
38922
- init_registry$4();
38976
+ init_registry$5();
38923
38977
  init_message_channel();
38924
38978
  }));
38925
38979
  //#endregion
@@ -44469,7 +44523,7 @@ var loggedListActionErrors;
44469
44523
  var init_channel_tools = __esmMin((() => {
44470
44524
  init_dock();
44471
44525
  init_plugins();
44472
- init_registry$4();
44526
+ init_registry$5();
44473
44527
  init_runtime$2();
44474
44528
  loggedListActionErrors = /* @__PURE__ */ new Set();
44475
44529
  }));
@@ -63854,7 +63908,7 @@ function loadOpenClawPlugins(options = {}) {
63854
63908
  }
63855
63909
  var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
63856
63910
  var init_loader = __esmMin((() => {
63857
- init_registry$6();
63911
+ init_registry$7();
63858
63912
  init_subsystem();
63859
63913
  init_utils$2();
63860
63914
  init_version$1();
@@ -63866,7 +63920,7 @@ var init_loader = __esmMin((() => {
63866
63920
  init_discovery();
63867
63921
  init_hook_runner_global();
63868
63922
  init_manifest_registry();
63869
- init_registry$5();
63923
+ init_registry$6();
63870
63924
  init_runtime$3();
63871
63925
  init_runtime$1();
63872
63926
  init_schema_validator();
@@ -65339,6 +65393,198 @@ var init_landlock = __esmMin((() => {
65339
65393
  _caps = null;
65340
65394
  }));
65341
65395
  //#endregion
65396
+ //#region src/agents/sandbox/tier0/router.ts
65397
+ function shouldTryTier0(command) {
65398
+ const cmd = command.trim();
65399
+ if (!cmd) return false;
65400
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
65401
+ return true;
65402
+ }
65403
+ /**
65404
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
65405
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
65406
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
65407
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
65408
+ */
65409
+ function isInterpreterLimitation(stderr) {
65410
+ if (!stderr) return false;
65411
+ 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);
65412
+ }
65413
+ var ESCALATE_PATTERNS;
65414
+ var init_router = __esmMin((() => {
65415
+ ESCALATE_PATTERNS = [
65416
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
65417
+ /\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/,
65418
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
65419
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
65420
+ /(^|\s|=)\/(dev|proc|sys)\//,
65421
+ /<\(|>\(/
65422
+ ];
65423
+ }));
65424
+ //#endregion
65425
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
65426
+ /**
65427
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
65428
+ *
65429
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
65430
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
65431
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
65432
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
65433
+ *
65434
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
65435
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
65436
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
65437
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
65438
+ *
65439
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
65440
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
65441
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
65442
+ */
65443
+ function withTimeout$4(p, ms) {
65444
+ if (!ms) return p;
65445
+ return new Promise((resolve, reject) => {
65446
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
65447
+ p.then((value) => {
65448
+ clearTimeout(timer);
65449
+ resolve(value);
65450
+ }, (error) => {
65451
+ clearTimeout(timer);
65452
+ reject(error);
65453
+ });
65454
+ });
65455
+ }
65456
+ var Tier0VirtualSandbox, TimeoutError;
65457
+ var init_virtual_sandbox = __esmMin((() => {
65458
+ init_router();
65459
+ Tier0VirtualSandbox = class {
65460
+ constructor() {
65461
+ this.instances = /* @__PURE__ */ new Map();
65462
+ }
65463
+ getInstance(req) {
65464
+ const existing = this.instances.get(req.scopeKey);
65465
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
65466
+ existing.lastUsed = Date.now();
65467
+ return existing.bash;
65468
+ }
65469
+ const fs = new MountableFs({ base: new InMemoryFs() });
65470
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
65471
+ const bash = new Bash({
65472
+ fs,
65473
+ cwd: req.workdir,
65474
+ env: {
65475
+ LANG: "C.UTF-8",
65476
+ ...req.env
65477
+ },
65478
+ executionLimits: {
65479
+ maxCommandCount: 1e4,
65480
+ maxLoopIterations: 1e6
65481
+ }
65482
+ });
65483
+ const inst = {
65484
+ bash,
65485
+ workspaceHostDir: req.workspaceHostDir,
65486
+ workdir: req.workdir,
65487
+ lastUsed: Date.now()
65488
+ };
65489
+ this.instances.set(req.scopeKey, inst);
65490
+ return bash;
65491
+ }
65492
+ async exec(req) {
65493
+ const startedAt = Date.now();
65494
+ let bash;
65495
+ try {
65496
+ bash = this.getInstance(req);
65497
+ } catch {
65498
+ return {
65499
+ status: "failed",
65500
+ exitCode: null,
65501
+ durationMs: Date.now() - startedAt,
65502
+ aggregated: "",
65503
+ timedOut: false,
65504
+ unsupported: true
65505
+ };
65506
+ }
65507
+ try {
65508
+ const result = await withTimeout$4(bash.exec(req.command, {
65509
+ cwd: req.workdir,
65510
+ env: req.env
65511
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
65512
+ const durationMs = Date.now() - startedAt;
65513
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
65514
+ if (result.exitCode === 0) return {
65515
+ status: "completed",
65516
+ exitCode: 0,
65517
+ durationMs,
65518
+ aggregated: combined,
65519
+ timedOut: false,
65520
+ unsupported: false
65521
+ };
65522
+ return {
65523
+ status: "failed",
65524
+ exitCode: result.exitCode,
65525
+ durationMs,
65526
+ aggregated: combined,
65527
+ timedOut: false,
65528
+ unsupported: isInterpreterLimitation(result.stderr)
65529
+ };
65530
+ } catch (err) {
65531
+ const timedOut = err instanceof TimeoutError;
65532
+ return {
65533
+ status: "failed",
65534
+ exitCode: null,
65535
+ durationMs: Date.now() - startedAt,
65536
+ aggregated: "",
65537
+ timedOut,
65538
+ unsupported: !timedOut
65539
+ };
65540
+ }
65541
+ }
65542
+ dispose(scopeKey) {
65543
+ if (scopeKey) this.instances.delete(scopeKey);
65544
+ else this.instances.clear();
65545
+ }
65546
+ /** test/inspection helper */
65547
+ get liveInstances() {
65548
+ return this.instances.size;
65549
+ }
65550
+ };
65551
+ TimeoutError = class extends Error {};
65552
+ }));
65553
+ //#endregion
65554
+ //#region src/agents/sandbox/tier0/registry.ts
65555
+ function getTier0Sandbox() {
65556
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
65557
+ return singleton$1;
65558
+ }
65559
+ /**
65560
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
65561
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
65562
+ * Docker container too), so tier-0 sees the same files.
65563
+ */
65564
+ function resolveTier0Binding(params) {
65565
+ if (!params.workspaceHostDir) return;
65566
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
65567
+ if (!sandboxCfg.tier0.enabled) return;
65568
+ if (sandboxCfg.workspaceAccess === "ro") return;
65569
+ return {
65570
+ backend: getTier0Sandbox(),
65571
+ workspaceHostDir: params.workspaceHostDir
65572
+ };
65573
+ }
65574
+ var singleton$1;
65575
+ var init_registry$3 = __esmMin((() => {
65576
+ init_config$4();
65577
+ init_config$3();
65578
+ init_virtual_sandbox();
65579
+ }));
65580
+ //#endregion
65581
+ //#region src/agents/sandbox/tier0/index.ts
65582
+ var init_tier0 = __esmMin((() => {
65583
+ init_router();
65584
+ init_registry$3();
65585
+ init_virtual_sandbox();
65586
+ }));
65587
+ //#endregion
65342
65588
  //#region src/agents/tools/automation/gateway.ts
65343
65589
  function readGatewayCallOptions(params) {
65344
65590
  return {
@@ -67021,10 +67267,112 @@ function emitExecSystemEvent(text, opts) {
67021
67267
  });
67022
67268
  requestHeartbeatNow({ reason: "exec-event" });
67023
67269
  }
67270
+ /**
67271
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
67272
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
67273
+ * the command (so the caller escalates to Docker). Output is sanitized and a
67274
+ * ProcessSession is registered exactly like the normal path, so downstream
67275
+ * session listing / tailing is unaffected.
67276
+ */
67277
+ async function tryTier0Exec(args) {
67278
+ const { opts, sessionId, startedAt, execCommand } = args;
67279
+ const tier0 = opts.tier0;
67280
+ const sandbox = opts.sandbox;
67281
+ if (!tier0 || !sandbox) return null;
67282
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
67283
+ let outcome;
67284
+ try {
67285
+ outcome = await tier0.backend.exec({
67286
+ command: execCommand,
67287
+ workdir,
67288
+ workspaceHostDir: tier0.workspaceHostDir,
67289
+ env: opts.env,
67290
+ scopeKey: sandbox.containerName,
67291
+ timeoutSec: opts.timeoutSec
67292
+ });
67293
+ } catch {
67294
+ return null;
67295
+ }
67296
+ if (outcome.unsupported) return null;
67297
+ const session = {
67298
+ id: sessionId,
67299
+ command: opts.command,
67300
+ scopeKey: opts.scopeKey,
67301
+ sessionKey: opts.sessionKey,
67302
+ notifyOnExit: opts.notifyOnExit,
67303
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
67304
+ exitNotified: false,
67305
+ child: void 0,
67306
+ stdin: void 0,
67307
+ pid: void 0,
67308
+ startedAt,
67309
+ cwd: opts.workdir,
67310
+ maxOutputChars: opts.maxOutput,
67311
+ pendingMaxOutputChars: opts.pendingMaxOutput,
67312
+ totalOutputChars: 0,
67313
+ pendingStdout: [],
67314
+ pendingStderr: [],
67315
+ pendingStdoutChars: 0,
67316
+ pendingStderrChars: 0,
67317
+ aggregated: "",
67318
+ tail: "",
67319
+ exited: false,
67320
+ exitCode: void 0,
67321
+ exitSignal: void 0,
67322
+ truncated: false,
67323
+ backgrounded: false
67324
+ };
67325
+ addSession(session);
67326
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
67327
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
67328
+ const status = outcome.status === "completed" ? "completed" : "failed";
67329
+ markExited(session, outcome.exitCode ?? 0, null, status);
67330
+ const durationMs = Date.now() - startedAt;
67331
+ const aggregated = session.aggregated.trim();
67332
+ let result;
67333
+ if (status === "completed") {
67334
+ const exitCode = outcome.exitCode ?? 0;
67335
+ result = {
67336
+ status: "completed",
67337
+ exitCode,
67338
+ exitSignal: null,
67339
+ durationMs,
67340
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
67341
+ timedOut: false
67342
+ };
67343
+ } else {
67344
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
67345
+ result = {
67346
+ status: "failed",
67347
+ exitCode: outcome.exitCode,
67348
+ exitSignal: null,
67349
+ durationMs,
67350
+ aggregated,
67351
+ timedOut: outcome.timedOut,
67352
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
67353
+ };
67354
+ }
67355
+ return {
67356
+ session,
67357
+ startedAt,
67358
+ pid: void 0,
67359
+ promise: Promise.resolve(result),
67360
+ kill: () => {}
67361
+ };
67362
+ }
67024
67363
  async function runExecProcess(opts) {
67025
67364
  const startedAt = Date.now();
67026
67365
  const sessionId = createSessionSlug();
67027
67366
  const execCommand = opts.execCommand ?? opts.command;
67367
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
67368
+ const tier0Handle = await tryTier0Exec({
67369
+ opts,
67370
+ sessionId,
67371
+ startedAt,
67372
+ execCommand
67373
+ });
67374
+ if (tier0Handle) return tier0Handle;
67375
+ }
67028
67376
  const supervisor = getProcessSupervisor();
67029
67377
  const session = {
67030
67378
  id: sessionId,
@@ -67255,6 +67603,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
67255
67603
  init_supervisor();
67256
67604
  init_pty_dsr();
67257
67605
  init_shell_utils();
67606
+ init_tier0();
67258
67607
  init_bash_process_registry();
67259
67608
  init_bash_tools_shared();
67260
67609
  DANGEROUS_HOST_ENV_VARS = new Set([
@@ -67858,7 +68207,11 @@ function createExecTool(defaults) {
67858
68207
  scopeKey: defaults?.scopeKey,
67859
68208
  sessionKey: notifySessionKey,
67860
68209
  timeoutSec: effectiveTimeout,
67861
- onUpdate
68210
+ onUpdate,
68211
+ tier0: sandbox ? resolveTier0Binding({
68212
+ agentId,
68213
+ workspaceHostDir: sandbox.workspaceDir
68214
+ }) : void 0
67862
68215
  });
67863
68216
  let yielded = false;
67864
68217
  let yieldTimer = null;
@@ -67933,6 +68286,7 @@ var init_bash_tools_exec = __esmMin((() => {
67933
68286
  init_logger$2();
67934
68287
  init_session_key$1();
67935
68288
  init_landlock();
68289
+ init_tier0();
67936
68290
  init_gateway();
67937
68291
  init_nodes_utils();
67938
68292
  init_bash_process_registry();
@@ -80229,7 +80583,7 @@ function resolvePingPongTurns(cfg) {
80229
80583
  var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
80230
80584
  var init_sessions_send_helpers = __esmMin((() => {
80231
80585
  init_plugins();
80232
- init_registry$4();
80586
+ init_registry$5();
80233
80587
  ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
80234
80588
  REPLY_SKIP_TOKEN = "REPLY_SKIP";
80235
80589
  DEFAULT_PING_PONG_TURNS = 5;
@@ -92724,11 +93078,12 @@ var init_agent_type = __esmMin((() => {
92724
93078
  if (!trimmed) return [];
92725
93079
  return [
92726
93080
  "## Skills (mandatory)",
92727
- "Before replying: scan <available_skills> <description> entries.",
92728
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
92729
- "- If multiple could apply: choose the most specific one, then read/follow it.",
92730
- "- If none clearly apply: do not read any SKILL.md.",
92731
- "Constraints: never read more than one skill up front; only read after selecting.",
93081
+ "Before replying: scan the <available_skills> entries.",
93082
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
93083
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
93084
+ "- If none clearly apply: do not load any skill.",
93085
+ `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}\`.`,
93086
+ "Constraints: never load more than one skill up front; only load after selecting.",
92732
93087
  trimmed,
92733
93088
  ""
92734
93089
  ];
@@ -92874,6 +93229,37 @@ var init_agent_type = __esmMin((() => {
92874
93229
  ];
92875
93230
  }));
92876
93231
  //#endregion
93232
+ //#region src/agents/sections/behaviour.ts
93233
+ var BEHAVIOUR_SECTIONS;
93234
+ var init_behaviour = __esmMin((() => {
93235
+ init_prose_loader();
93236
+ BEHAVIOUR_SECTIONS = [{
93237
+ id: "behaviour",
93238
+ layer: "identity",
93239
+ order: 2200,
93240
+ modes: ["full", "minimal"],
93241
+ cacheable: false,
93242
+ header: "## Operating Rules (self-maintained)",
93243
+ source: "file",
93244
+ render: (ctx) => {
93245
+ const workspaceDir = ctx.params.workspaceDir;
93246
+ if (!workspaceDir) return [];
93247
+ const content = resolveProse({
93248
+ layer: "identity",
93249
+ id: "behaviour",
93250
+ agentWorkspaceDir: workspaceDir
93251
+ })?.content.trim();
93252
+ if (!content) return [];
93253
+ return [
93254
+ "## Operating Rules (self-maintained)",
93255
+ "",
93256
+ content,
93257
+ ""
93258
+ ];
93259
+ }
93260
+ }];
93261
+ }));
93262
+ //#endregion
92877
93263
  //#region src/agents/sections/identity.ts
92878
93264
  var IDENTITY_SECTIONS;
92879
93265
  var init_identity = __esmMin((() => {
@@ -93842,6 +94228,7 @@ function getBuiltinRegistry() {
93842
94228
  _registry.registerAll(PLATFORM_SECTIONS);
93843
94229
  _registry.registerAll(AGENT_TYPE_SECTIONS);
93844
94230
  _registry.registerAll(IDENTITY_SECTIONS);
94231
+ _registry.registerAll(BEHAVIOUR_SECTIONS);
93845
94232
  _registry.registerAll(USER_SECTIONS);
93846
94233
  _registry.registerAll(SESSION_SECTIONS);
93847
94234
  return _registry;
@@ -93860,6 +94247,7 @@ function assembleAgentSystemPrompt(params) {
93860
94247
  var _registry;
93861
94248
  var init_assemble = __esmMin((() => {
93862
94249
  init_agent_type();
94250
+ init_behaviour();
93863
94251
  init_identity();
93864
94252
  init_platform();
93865
94253
  init_registry$1();
@@ -99582,6 +99970,36 @@ async function prepareSessionManagerForRun(params) {
99582
99970
  }
99583
99971
  var init_session_manager_init = __esmMin((() => {}));
99584
99972
  //#endregion
99973
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
99974
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
99975
+ function reduceToolOutputText(text, opts) {
99976
+ let lines = text.split("\n");
99977
+ if (opts.collapseRuns) {
99978
+ const collapsed = [];
99979
+ let i = 0;
99980
+ while (i < lines.length) {
99981
+ let j = i + 1;
99982
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
99983
+ const run = j - i;
99984
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
99985
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
99986
+ i = j;
99987
+ }
99988
+ lines = collapsed;
99989
+ }
99990
+ if (lines.length <= opts.maxLines) return lines.join("\n");
99991
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
99992
+ const head = lines.slice(0, opts.headLines);
99993
+ const tail = lines.slice(lines.length - opts.tailLines);
99994
+ const elided = lines.length - head.length - tail.length;
99995
+ return [
99996
+ ...head,
99997
+ `… ${elided} lines elided …`,
99998
+ ...tail
99999
+ ].join("\n");
100000
+ }
100001
+ var init_tool_result_reduce = __esmMin((() => {}));
100002
+ //#endregion
99585
100003
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
99586
100004
  function isTextBlock(block) {
99587
100005
  return !!block && typeof block === "object" && block.type === "text";
@@ -99716,8 +100134,28 @@ function applyMessageMutationInPlace(target, source) {
99716
100134
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
99717
100135
  Object.assign(targetRecord, sourceRecord);
99718
100136
  }
100137
+ /**
100138
+ * Run the pure line-reducer over each tool-result message's text content,
100139
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
100140
+ */
100141
+ function reduceToolResultOutputsInPlace(messages) {
100142
+ for (const message of messages) {
100143
+ if (!isToolResultMessage(message)) continue;
100144
+ const rawText = getToolResultText(message);
100145
+ if (!rawText) continue;
100146
+ const reduced = reduceToolOutputText(rawText, {
100147
+ maxLines: REDUCE_MAX_LINES,
100148
+ headLines: REDUCE_HEAD_LINES,
100149
+ tailLines: REDUCE_TAIL_LINES,
100150
+ collapseRuns: true
100151
+ });
100152
+ if (reduced === rawText) continue;
100153
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
100154
+ }
100155
+ }
99719
100156
  function enforceToolResultContextBudgetInPlace(params) {
99720
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
100157
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
100158
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
99721
100159
  for (const message of messages) {
99722
100160
  if (!isToolResultMessage(message)) continue;
99723
100161
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -99739,6 +100177,7 @@ function enforceToolResultContextBudgetInPlace(params) {
99739
100177
  * @returns An async function suitable for use as Agent's transformContext callback.
99740
100178
  */
99741
100179
  function createToolResultContextGuardTransform(params) {
100180
+ const reduceOutput = params.reduceOutput !== false;
99742
100181
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
99743
100182
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
99744
100183
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -99749,13 +100188,15 @@ function createToolResultContextGuardTransform(params) {
99749
100188
  enforceToolResultContextBudgetInPlace({
99750
100189
  messages: contextMessages,
99751
100190
  contextBudgetChars,
99752
- maxSingleToolResultChars
100191
+ maxSingleToolResultChars,
100192
+ reduceOutput
99753
100193
  });
99754
100194
  return contextMessages;
99755
100195
  };
99756
100196
  }
99757
- 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;
100197
+ 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;
99758
100198
  var init_tool_result_context_guard = __esmMin((() => {
100199
+ init_tool_result_reduce();
99759
100200
  CHARS_PER_TOKEN_ESTIMATE = 4;
99760
100201
  CONTEXT_INPUT_HEADROOM_RATIO = .75;
99761
100202
  SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
@@ -99764,6 +100205,9 @@ var init_tool_result_context_guard = __esmMin((() => {
99764
100205
  CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
99765
100206
  CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
99766
100207
  PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
100208
+ REDUCE_MAX_LINES = 200;
100209
+ REDUCE_HEAD_LINES = 40;
100210
+ REDUCE_TAIL_LINES = 40;
99767
100211
  }));
99768
100212
  //#endregion
99769
100213
  //#region src/agents/pi-embedded-runner/run/attempt-session.ts
@@ -99856,7 +100300,10 @@ async function createRunSession(params, env) {
99856
100300
  applySystemPromptOverrideToSession(session, env.systemPromptText);
99857
100301
  if (!session) throw new Error("Embedded agent session missing");
99858
100302
  const activeSession = session;
99859
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
100303
+ const contextGuardTransform = createToolResultContextGuardTransform({
100304
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
100305
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
100306
+ });
99860
100307
  activeSession.agent.transformContext = contextGuardTransform;
99861
100308
  const cacheTrace = createCacheTrace({
99862
100309
  cfg: params.config,
@@ -104062,7 +104509,7 @@ var init_commands_allowlist = __esmMin((() => {
104062
104509
  init_resolve_users();
104063
104510
  init_config_writes();
104064
104511
  init_pairing();
104065
- init_registry$4();
104512
+ init_registry$5();
104066
104513
  init_accounts$1();
104067
104514
  init_accounts();
104068
104515
  init_config$4();
@@ -105402,7 +105849,7 @@ var init_debug_commands = __esmMin((() => {
105402
105849
  var handleConfigCommand, handleDebugCommand;
105403
105850
  var init_commands_config = __esmMin((() => {
105404
105851
  init_config_writes();
105405
- init_registry$4();
105852
+ init_registry$5();
105406
105853
  init_config_paths();
105407
105854
  init_config$4();
105408
105855
  init_runtime_overrides();
@@ -109583,7 +110030,7 @@ var init_reply_elevated = __esmMin((() => {
109583
110030
  init_agent_scope();
109584
110031
  init_dock();
109585
110032
  init_plugins();
109586
- init_registry$4();
110033
+ init_registry$5();
109587
110034
  init_message_channel();
109588
110035
  init_string_normalization();
109589
110036
  init_elevated_unavailable();
@@ -111184,7 +111631,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
111184
111631
  var init_agent_runner_utils = __esmMin((() => {
111185
111632
  init_agent_scope();
111186
111633
  init_dock();
111187
- init_registry$4();
111634
+ init_registry$5();
111188
111635
  init_sessions$1();
111189
111636
  init_provider_utils();
111190
111637
  init_usage_format();
@@ -114837,7 +115284,7 @@ var init_reply = __esmMin((() => {
114837
115284
  var init_whatsapp_heartbeat = __esmMin((() => {
114838
115285
  init_sessions$1();
114839
115286
  init_utils$2();
114840
- init_registry$4();
115287
+ init_registry$5();
114841
115288
  }));
114842
115289
  //#endregion
114843
115290
  //#region src/infra/heartbeat-events.ts
@@ -122951,7 +123398,7 @@ function createOutboundSendDeps(deps) {
122951
123398
  }
122952
123399
  //#endregion
122953
123400
  //#region src/infra/outbound/agent-delivery.ts
122954
- init_registry$4();
123401
+ init_registry$5();
122955
123402
  init_account_id();
122956
123403
  init_message_channel();
122957
123404
  init_targets$2();