@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 { Type as Type$1 } from "@sinclair/typebox";
46
46
  import MarkdownIt from "markdown-it";
47
47
  import { spinner } from "@clack/prompts";
48
48
  import { createOscProgressController, supportsOscProgress } from "osc-progress";
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";
@@ -1383,7 +1384,7 @@ function notifyMcpToolsChanged() {
1383
1384
  }
1384
1385
  }
1385
1386
  var tools, sseSubscribers, EMPTY_OBJECT_SCHEMA;
1386
- var init_registry$6 = __esmMin((() => {
1387
+ var init_registry$7 = __esmMin((() => {
1387
1388
  tools = /* @__PURE__ */ new Map();
1388
1389
  sseSubscribers = /* @__PURE__ */ new Set();
1389
1390
  EMPTY_OBJECT_SCHEMA = {
@@ -2137,9 +2138,9 @@ function createPluginRegistry(registryParams) {
2137
2138
  registerTypedHook
2138
2139
  };
2139
2140
  }
2140
- var init_registry$5 = __esmMin((() => {
2141
+ var init_registry$6 = __esmMin((() => {
2141
2142
  init_instant_commands();
2142
- init_registry$6();
2143
+ init_registry$7();
2143
2144
  init_internal_hooks();
2144
2145
  init_utils$2();
2145
2146
  init_channel_link_runtime();
@@ -2182,7 +2183,7 @@ function getActivePluginRuntime() {
2182
2183
  }
2183
2184
  var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$4, configState, runtimeState;
2184
2185
  var init_runtime$3 = __esmMin((() => {
2185
- init_registry$5();
2186
+ init_registry$6();
2186
2187
  REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
2187
2188
  CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
2188
2189
  RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
@@ -2229,7 +2230,7 @@ function normalizeAnyChannelId(raw) {
2229
2230
  })?.plugin.id ?? null;
2230
2231
  }
2231
2232
  var CHAT_CHANNEL_ORDER, CHANNEL_IDS, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
2232
- var init_registry$4 = __esmMin((() => {
2233
+ var init_registry$5 = __esmMin((() => {
2233
2234
  init_runtime$3();
2234
2235
  CHAT_CHANNEL_ORDER = [
2235
2236
  "telegram",
@@ -2576,7 +2577,7 @@ function createSubsystemLogger(subsystem) {
2576
2577
  }
2577
2578
  var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
2578
2579
  var init_subsystem = __esmMin((() => {
2579
- init_registry$4();
2580
+ init_registry$5();
2580
2581
  init_globals();
2581
2582
  init_runtime$2();
2582
2583
  init_progress_line();
@@ -10276,6 +10277,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
10276
10277
  ]).optional(),
10277
10278
  perSession: z.boolean().optional(),
10278
10279
  workspaceRoot: z.string().optional(),
10280
+ tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
10279
10281
  docker: SandboxDockerSchema,
10280
10282
  browser: SandboxBrowserSchema,
10281
10283
  prune: SandboxPruneSchema
@@ -10477,7 +10479,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
10477
10479
  exec: ToolExecSchema,
10478
10480
  fs: ToolFsSchema,
10479
10481
  subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
10480
- sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
10482
+ sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
10483
+ outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
10481
10484
  }).strict().superRefine((value, ctx) => {
10482
10485
  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)");
10483
10486
  }).optional();
@@ -10830,7 +10833,7 @@ var init_dotenv = __esmMin((() => {
10830
10833
  //#region src/version.ts
10831
10834
  var VERSION;
10832
10835
  var init_version$1 = __esmMin((() => {
10833
- VERSION = "2026.6.14-dev.20260616061802";
10836
+ VERSION = "2026.6.16-dev";
10834
10837
  }));
10835
10838
  //#endregion
10836
10839
  //#region src/config/agent-dirs.ts
@@ -15942,6 +15945,7 @@ var init_zod_schema = __esmMin((() => {
15942
15945
  importContacts: z.boolean().optional()
15943
15946
  }).strict().optional(),
15944
15947
  memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
15948
+ trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
15945
15949
  personalAgentObservations: z.object({
15946
15950
  enabled: z.boolean().optional(),
15947
15951
  dbPath: z.string().optional()
@@ -16054,6 +16058,7 @@ var init_zod_schema = __esmMin((() => {
16054
16058
  memory: MemorySchema,
16055
16059
  skills: z.object({
16056
16060
  allowBundled: z.array(z.string()).optional(),
16061
+ progressiveDisclosure: z.boolean().optional(),
16057
16062
  load: z.object({
16058
16063
  extraDirs: z.array(z.string()).optional(),
16059
16064
  watch: z.boolean().optional(),
@@ -16429,7 +16434,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
16429
16434
  var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
16430
16435
  var init_validation = __esmMin((() => {
16431
16436
  init_agent_scope();
16432
- init_registry$4();
16437
+ init_registry$5();
16433
16438
  init_config_state();
16434
16439
  init_manifest_registry();
16435
16440
  init_schema_validator();
@@ -19788,7 +19793,7 @@ var init_parse$2 = __esmMin((() => {
19788
19793
  ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
19789
19794
  })), 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;
19790
19795
  var init_constants$3 = __esmMin((() => {
19791
- init_registry$4();
19796
+ init_registry$5();
19792
19797
  init_config$4();
19793
19798
  DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
19794
19799
  DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
@@ -20293,6 +20298,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
20293
20298
  scope,
20294
20299
  workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
20295
20300
  workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
20301
+ tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
20296
20302
  docker: resolveSandboxDockerConfig({
20297
20303
  scope,
20298
20304
  globalDocker: agent?.docker,
@@ -21317,6 +21323,24 @@ var init_bundled_dir = __esmMin((() => {
21317
21323
  init_minion_root();
21318
21324
  }));
21319
21325
  //#endregion
21326
+ //#region src/agents/skills/compact-prompt.ts
21327
+ /**
21328
+ * Render a compact, name+description-only skills listing for progressive
21329
+ * disclosure. The full SKILL.md body is deliberately omitted; the agent is
21330
+ * instructed to load it on demand via the `skill_view` tool. This keeps the
21331
+ * system prompt small when many skills are available.
21332
+ */
21333
+ function formatSkillsCompact(skills) {
21334
+ if (skills.length === 0) return "";
21335
+ return [
21336
+ "<available_skills>",
21337
+ ...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
21338
+ "</available_skills>",
21339
+ "Call the `skill_view` tool with a skill name to load its full instructions before using it."
21340
+ ].join("\n");
21341
+ }
21342
+ var init_compact_prompt = __esmMin((() => {}));
21343
+ //#endregion
21320
21344
  //#region src/agents/skills/plugin-skills.ts
21321
21345
  function resolvePluginSkillDirs(params) {
21322
21346
  const workspaceDir = params.workspaceDir.trim();
@@ -21662,6 +21686,35 @@ function applySkillsPromptLimits(params) {
21662
21686
  truncatedReason
21663
21687
  };
21664
21688
  }
21689
+ /**
21690
+ * Resolve whether progressive disclosure is enabled. Default is ON; only an
21691
+ * explicit `false` disables it (inlining full skill bodies in the prompt).
21692
+ */
21693
+ function resolveProgressiveDisclosure(config, override) {
21694
+ if (override !== void 0) return override;
21695
+ return config?.skills?.progressiveDisclosure !== false;
21696
+ }
21697
+ /**
21698
+ * Map prompt-eligible skill entries to compact `{ name, description, body }`
21699
+ * records. The body is the full SKILL.md text, read from disk on demand; if the
21700
+ * file can't be read we fall back to an empty body (compact mode omits bodies
21701
+ * from the prompt anyway, so this only affects callers that inspect `body`).
21702
+ */
21703
+ function toCompactSkills(skills) {
21704
+ return skills.map((skill) => {
21705
+ let body = "";
21706
+ try {
21707
+ body = fs.readFileSync(skill.filePath, "utf-8");
21708
+ } catch {
21709
+ body = "";
21710
+ }
21711
+ return {
21712
+ name: skill.name,
21713
+ description: skill.description ?? "",
21714
+ body
21715
+ };
21716
+ });
21717
+ }
21665
21718
  function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
21666
21719
  const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
21667
21720
  const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
@@ -21673,7 +21726,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
21673
21726
  const prompt = [
21674
21727
  remoteNote,
21675
21728
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
21676
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21729
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21677
21730
  ].filter(Boolean).join("\n");
21678
21731
  const skillFilter = normalizeSkillFilter(opts?.skillFilter);
21679
21732
  const denyFilter = normalizeSkillFilter(opts?.denyFilter);
@@ -21700,7 +21753,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
21700
21753
  return [
21701
21754
  remoteNote,
21702
21755
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
21703
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21756
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
21704
21757
  ].filter(Boolean).join("\n");
21705
21758
  }
21706
21759
  function resolveSkillsPromptForRun(params) {
@@ -21853,6 +21906,7 @@ var init_workspace$1 = __esmMin((() => {
21853
21906
  init_utils$2();
21854
21907
  init_sandbox_paths();
21855
21908
  init_bundled_dir();
21909
+ init_compact_prompt();
21856
21910
  init_config$2();
21857
21911
  init_filter();
21858
21912
  init_frontmatter();
@@ -29761,7 +29815,7 @@ async function removeBrowserRegistryEntry(containerName) {
29761
29815
  return next;
29762
29816
  });
29763
29817
  }
29764
- var init_registry$3 = __esmMin((() => {
29818
+ var init_registry$4 = __esmMin((() => {
29765
29819
  init_session_write_lock();
29766
29820
  init_constants$3();
29767
29821
  }));
@@ -30222,7 +30276,7 @@ var init_docker = __esmMin((() => {
30222
30276
  init_runtime$2();
30223
30277
  init_config_hash();
30224
30278
  init_constants$3();
30225
- init_registry$3();
30279
+ init_registry$4();
30226
30280
  init_shared$1();
30227
30281
  init_validate_sandbox_security();
30228
30282
  log$49 = createSubsystemLogger("sandbox/docker");
@@ -30448,7 +30502,7 @@ var init_browser = __esmMin((() => {
30448
30502
  init_config$3();
30449
30503
  init_constants$3();
30450
30504
  init_docker();
30451
- init_registry$3();
30505
+ init_registry$4();
30452
30506
  init_shared$1();
30453
30507
  init_tool_policy();
30454
30508
  HOT_BROWSER_WINDOW_MS = 300 * 1e3;
@@ -30814,7 +30868,7 @@ var init_prune = __esmMin((() => {
30814
30868
  init_runtime$2();
30815
30869
  init_browser_bridges();
30816
30870
  init_docker();
30817
- init_registry$3();
30871
+ init_registry$4();
30818
30872
  lastPruneAtMs = 0;
30819
30873
  })), GATEWAY_CLIENT_IDS, GATEWAY_CLIENT_NAMES, GATEWAY_CLIENT_MODES;
30820
30874
  var init_client_info = __esmMin((() => {
@@ -30882,7 +30936,7 @@ function isMarkdownCapableMessageChannel(raw) {
30882
30936
  }
30883
30937
  var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
30884
30938
  var init_message_channel = __esmMin((() => {
30885
- init_registry$4();
30939
+ init_registry$5();
30886
30940
  init_client_info();
30887
30941
  init_runtime$3();
30888
30942
  INTERNAL_MESSAGE_CHANNEL = "webchat";
@@ -31271,7 +31325,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
31271
31325
  }
31272
31326
  var init_bindings = __esmMin((() => {
31273
31327
  init_agent_scope();
31274
- init_registry$4();
31328
+ init_registry$5();
31275
31329
  init_session_key$1();
31276
31330
  }));
31277
31331
  //#endregion
@@ -31901,7 +31955,7 @@ var init_dock = __esmMin((() => {
31901
31955
  init_utils$2();
31902
31956
  init_group_mentions();
31903
31957
  init_signal$1();
31904
- init_registry$4();
31958
+ init_registry$5();
31905
31959
  formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
31906
31960
  formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
31907
31961
  DOCKS = {
@@ -32357,7 +32411,7 @@ function normalizeChannelId(raw) {
32357
32411
  }
32358
32412
  var init_plugins = __esmMin((() => {
32359
32413
  init_runtime$3();
32360
- init_registry$4();
32414
+ init_registry$5();
32361
32415
  init_directory_config();
32362
32416
  }));
32363
32417
  //#endregion
@@ -34139,7 +34193,7 @@ var init_manage = __esmMin((() => {
34139
34193
  init_config$4();
34140
34194
  init_config$3();
34141
34195
  init_docker();
34142
- init_registry$3();
34196
+ init_registry$4();
34143
34197
  init_shared$1();
34144
34198
  }));
34145
34199
  //#endregion
@@ -38975,7 +39029,7 @@ function resolveCommandAuthorization(params) {
38975
39029
  }
38976
39030
  var init_command_auth = __esmMin((() => {
38977
39031
  init_dock();
38978
- init_registry$4();
39032
+ init_registry$5();
38979
39033
  init_message_channel();
38980
39034
  }));
38981
39035
  //#endregion
@@ -44148,7 +44202,7 @@ var loggedListActionErrors;
44148
44202
  var init_channel_tools = __esmMin((() => {
44149
44203
  init_dock();
44150
44204
  init_plugins();
44151
- init_registry$4();
44205
+ init_registry$5();
44152
44206
  init_runtime$2();
44153
44207
  loggedListActionErrors = /* @__PURE__ */ new Set();
44154
44208
  }));
@@ -63487,7 +63541,7 @@ function loadOpenClawPlugins(options = {}) {
63487
63541
  }
63488
63542
  var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
63489
63543
  var init_loader = __esmMin((() => {
63490
- init_registry$6();
63544
+ init_registry$7();
63491
63545
  init_subsystem();
63492
63546
  init_utils$2();
63493
63547
  init_version$1();
@@ -63499,7 +63553,7 @@ var init_loader = __esmMin((() => {
63499
63553
  init_discovery();
63500
63554
  init_hook_runner_global();
63501
63555
  init_manifest_registry();
63502
- init_registry$5();
63556
+ init_registry$6();
63503
63557
  init_runtime$3();
63504
63558
  init_runtime$1();
63505
63559
  init_schema_validator();
@@ -64972,6 +65026,198 @@ var init_landlock = __esmMin((() => {
64972
65026
  _caps = null;
64973
65027
  }));
64974
65028
  //#endregion
65029
+ //#region src/agents/sandbox/tier0/router.ts
65030
+ function shouldTryTier0(command) {
65031
+ const cmd = command.trim();
65032
+ if (!cmd) return false;
65033
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
65034
+ return true;
65035
+ }
65036
+ /**
65037
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
65038
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
65039
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
65040
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
65041
+ */
65042
+ function isInterpreterLimitation(stderr) {
65043
+ if (!stderr) return false;
65044
+ 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);
65045
+ }
65046
+ var ESCALATE_PATTERNS;
65047
+ var init_router = __esmMin((() => {
65048
+ ESCALATE_PATTERNS = [
65049
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
65050
+ /\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/,
65051
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
65052
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
65053
+ /(^|\s|=)\/(dev|proc|sys)\//,
65054
+ /<\(|>\(/
65055
+ ];
65056
+ }));
65057
+ //#endregion
65058
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
65059
+ /**
65060
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
65061
+ *
65062
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
65063
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
65064
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
65065
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
65066
+ *
65067
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
65068
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
65069
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
65070
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
65071
+ *
65072
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
65073
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
65074
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
65075
+ */
65076
+ function withTimeout$4(p, ms) {
65077
+ if (!ms) return p;
65078
+ return new Promise((resolve, reject) => {
65079
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
65080
+ p.then((value) => {
65081
+ clearTimeout(timer);
65082
+ resolve(value);
65083
+ }, (error) => {
65084
+ clearTimeout(timer);
65085
+ reject(error);
65086
+ });
65087
+ });
65088
+ }
65089
+ var Tier0VirtualSandbox, TimeoutError;
65090
+ var init_virtual_sandbox = __esmMin((() => {
65091
+ init_router();
65092
+ Tier0VirtualSandbox = class {
65093
+ constructor() {
65094
+ this.instances = /* @__PURE__ */ new Map();
65095
+ }
65096
+ getInstance(req) {
65097
+ const existing = this.instances.get(req.scopeKey);
65098
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
65099
+ existing.lastUsed = Date.now();
65100
+ return existing.bash;
65101
+ }
65102
+ const fs = new MountableFs({ base: new InMemoryFs() });
65103
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
65104
+ const bash = new Bash({
65105
+ fs,
65106
+ cwd: req.workdir,
65107
+ env: {
65108
+ LANG: "C.UTF-8",
65109
+ ...req.env
65110
+ },
65111
+ executionLimits: {
65112
+ maxCommandCount: 1e4,
65113
+ maxLoopIterations: 1e6
65114
+ }
65115
+ });
65116
+ const inst = {
65117
+ bash,
65118
+ workspaceHostDir: req.workspaceHostDir,
65119
+ workdir: req.workdir,
65120
+ lastUsed: Date.now()
65121
+ };
65122
+ this.instances.set(req.scopeKey, inst);
65123
+ return bash;
65124
+ }
65125
+ async exec(req) {
65126
+ const startedAt = Date.now();
65127
+ let bash;
65128
+ try {
65129
+ bash = this.getInstance(req);
65130
+ } catch {
65131
+ return {
65132
+ status: "failed",
65133
+ exitCode: null,
65134
+ durationMs: Date.now() - startedAt,
65135
+ aggregated: "",
65136
+ timedOut: false,
65137
+ unsupported: true
65138
+ };
65139
+ }
65140
+ try {
65141
+ const result = await withTimeout$4(bash.exec(req.command, {
65142
+ cwd: req.workdir,
65143
+ env: req.env
65144
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
65145
+ const durationMs = Date.now() - startedAt;
65146
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
65147
+ if (result.exitCode === 0) return {
65148
+ status: "completed",
65149
+ exitCode: 0,
65150
+ durationMs,
65151
+ aggregated: combined,
65152
+ timedOut: false,
65153
+ unsupported: false
65154
+ };
65155
+ return {
65156
+ status: "failed",
65157
+ exitCode: result.exitCode,
65158
+ durationMs,
65159
+ aggregated: combined,
65160
+ timedOut: false,
65161
+ unsupported: isInterpreterLimitation(result.stderr)
65162
+ };
65163
+ } catch (err) {
65164
+ const timedOut = err instanceof TimeoutError;
65165
+ return {
65166
+ status: "failed",
65167
+ exitCode: null,
65168
+ durationMs: Date.now() - startedAt,
65169
+ aggregated: "",
65170
+ timedOut,
65171
+ unsupported: !timedOut
65172
+ };
65173
+ }
65174
+ }
65175
+ dispose(scopeKey) {
65176
+ if (scopeKey) this.instances.delete(scopeKey);
65177
+ else this.instances.clear();
65178
+ }
65179
+ /** test/inspection helper */
65180
+ get liveInstances() {
65181
+ return this.instances.size;
65182
+ }
65183
+ };
65184
+ TimeoutError = class extends Error {};
65185
+ }));
65186
+ //#endregion
65187
+ //#region src/agents/sandbox/tier0/registry.ts
65188
+ function getTier0Sandbox() {
65189
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
65190
+ return singleton$1;
65191
+ }
65192
+ /**
65193
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
65194
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
65195
+ * Docker container too), so tier-0 sees the same files.
65196
+ */
65197
+ function resolveTier0Binding(params) {
65198
+ if (!params.workspaceHostDir) return;
65199
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
65200
+ if (!sandboxCfg.tier0.enabled) return;
65201
+ if (sandboxCfg.workspaceAccess === "ro") return;
65202
+ return {
65203
+ backend: getTier0Sandbox(),
65204
+ workspaceHostDir: params.workspaceHostDir
65205
+ };
65206
+ }
65207
+ var singleton$1;
65208
+ var init_registry$3 = __esmMin((() => {
65209
+ init_config$4();
65210
+ init_config$3();
65211
+ init_virtual_sandbox();
65212
+ }));
65213
+ //#endregion
65214
+ //#region src/agents/sandbox/tier0/index.ts
65215
+ var init_tier0 = __esmMin((() => {
65216
+ init_router();
65217
+ init_registry$3();
65218
+ init_virtual_sandbox();
65219
+ }));
65220
+ //#endregion
64975
65221
  //#region src/agents/tools/automation/gateway.ts
64976
65222
  function readGatewayCallOptions(params) {
64977
65223
  return {
@@ -66654,10 +66900,112 @@ function emitExecSystemEvent(text, opts) {
66654
66900
  });
66655
66901
  requestHeartbeatNow({ reason: "exec-event" });
66656
66902
  }
66903
+ /**
66904
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
66905
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
66906
+ * the command (so the caller escalates to Docker). Output is sanitized and a
66907
+ * ProcessSession is registered exactly like the normal path, so downstream
66908
+ * session listing / tailing is unaffected.
66909
+ */
66910
+ async function tryTier0Exec(args) {
66911
+ const { opts, sessionId, startedAt, execCommand } = args;
66912
+ const tier0 = opts.tier0;
66913
+ const sandbox = opts.sandbox;
66914
+ if (!tier0 || !sandbox) return null;
66915
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
66916
+ let outcome;
66917
+ try {
66918
+ outcome = await tier0.backend.exec({
66919
+ command: execCommand,
66920
+ workdir,
66921
+ workspaceHostDir: tier0.workspaceHostDir,
66922
+ env: opts.env,
66923
+ scopeKey: sandbox.containerName,
66924
+ timeoutSec: opts.timeoutSec
66925
+ });
66926
+ } catch {
66927
+ return null;
66928
+ }
66929
+ if (outcome.unsupported) return null;
66930
+ const session = {
66931
+ id: sessionId,
66932
+ command: opts.command,
66933
+ scopeKey: opts.scopeKey,
66934
+ sessionKey: opts.sessionKey,
66935
+ notifyOnExit: opts.notifyOnExit,
66936
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
66937
+ exitNotified: false,
66938
+ child: void 0,
66939
+ stdin: void 0,
66940
+ pid: void 0,
66941
+ startedAt,
66942
+ cwd: opts.workdir,
66943
+ maxOutputChars: opts.maxOutput,
66944
+ pendingMaxOutputChars: opts.pendingMaxOutput,
66945
+ totalOutputChars: 0,
66946
+ pendingStdout: [],
66947
+ pendingStderr: [],
66948
+ pendingStdoutChars: 0,
66949
+ pendingStderrChars: 0,
66950
+ aggregated: "",
66951
+ tail: "",
66952
+ exited: false,
66953
+ exitCode: void 0,
66954
+ exitSignal: void 0,
66955
+ truncated: false,
66956
+ backgrounded: false
66957
+ };
66958
+ addSession(session);
66959
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
66960
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
66961
+ const status = outcome.status === "completed" ? "completed" : "failed";
66962
+ markExited(session, outcome.exitCode ?? 0, null, status);
66963
+ const durationMs = Date.now() - startedAt;
66964
+ const aggregated = session.aggregated.trim();
66965
+ let result;
66966
+ if (status === "completed") {
66967
+ const exitCode = outcome.exitCode ?? 0;
66968
+ result = {
66969
+ status: "completed",
66970
+ exitCode,
66971
+ exitSignal: null,
66972
+ durationMs,
66973
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
66974
+ timedOut: false
66975
+ };
66976
+ } else {
66977
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
66978
+ result = {
66979
+ status: "failed",
66980
+ exitCode: outcome.exitCode,
66981
+ exitSignal: null,
66982
+ durationMs,
66983
+ aggregated,
66984
+ timedOut: outcome.timedOut,
66985
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
66986
+ };
66987
+ }
66988
+ return {
66989
+ session,
66990
+ startedAt,
66991
+ pid: void 0,
66992
+ promise: Promise.resolve(result),
66993
+ kill: () => {}
66994
+ };
66995
+ }
66657
66996
  async function runExecProcess(opts) {
66658
66997
  const startedAt = Date.now();
66659
66998
  const sessionId = createSessionSlug();
66660
66999
  const execCommand = opts.execCommand ?? opts.command;
67000
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
67001
+ const tier0Handle = await tryTier0Exec({
67002
+ opts,
67003
+ sessionId,
67004
+ startedAt,
67005
+ execCommand
67006
+ });
67007
+ if (tier0Handle) return tier0Handle;
67008
+ }
66661
67009
  const supervisor = getProcessSupervisor();
66662
67010
  const session = {
66663
67011
  id: sessionId,
@@ -66888,6 +67236,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
66888
67236
  init_supervisor();
66889
67237
  init_pty_dsr();
66890
67238
  init_shell_utils();
67239
+ init_tier0();
66891
67240
  init_bash_process_registry();
66892
67241
  init_bash_tools_shared();
66893
67242
  DANGEROUS_HOST_ENV_VARS = new Set([
@@ -67491,7 +67840,11 @@ function createExecTool(defaults) {
67491
67840
  scopeKey: defaults?.scopeKey,
67492
67841
  sessionKey: notifySessionKey,
67493
67842
  timeoutSec: effectiveTimeout,
67494
- onUpdate
67843
+ onUpdate,
67844
+ tier0: sandbox ? resolveTier0Binding({
67845
+ agentId,
67846
+ workspaceHostDir: sandbox.workspaceDir
67847
+ }) : void 0
67495
67848
  });
67496
67849
  let yielded = false;
67497
67850
  let yieldTimer = null;
@@ -67566,6 +67919,7 @@ var init_bash_tools_exec = __esmMin((() => {
67566
67919
  init_logger$2();
67567
67920
  init_session_key$1();
67568
67921
  init_landlock();
67922
+ init_tier0();
67569
67923
  init_gateway();
67570
67924
  init_nodes_utils();
67571
67925
  init_bash_process_registry();
@@ -79716,7 +80070,7 @@ function resolvePingPongTurns(cfg) {
79716
80070
  var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
79717
80071
  var init_sessions_send_helpers = __esmMin((() => {
79718
80072
  init_plugins();
79719
- init_registry$4();
80073
+ init_registry$5();
79720
80074
  ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
79721
80075
  REPLY_SKIP_TOKEN = "REPLY_SKIP";
79722
80076
  DEFAULT_PING_PONG_TURNS = 5;
@@ -92211,11 +92565,12 @@ var init_agent_type = __esmMin((() => {
92211
92565
  if (!trimmed) return [];
92212
92566
  return [
92213
92567
  "## Skills (mandatory)",
92214
- "Before replying: scan <available_skills> <description> entries.",
92215
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
92216
- "- If multiple could apply: choose the most specific one, then read/follow it.",
92217
- "- If none clearly apply: do not read any SKILL.md.",
92218
- "Constraints: never read more than one skill up front; only read after selecting.",
92568
+ "Before replying: scan the <available_skills> entries.",
92569
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
92570
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
92571
+ "- If none clearly apply: do not load any skill.",
92572
+ `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}\`.`,
92573
+ "Constraints: never load more than one skill up front; only load after selecting.",
92219
92574
  trimmed,
92220
92575
  ""
92221
92576
  ];
@@ -92361,6 +92716,37 @@ var init_agent_type = __esmMin((() => {
92361
92716
  ];
92362
92717
  }));
92363
92718
  //#endregion
92719
+ //#region src/agents/sections/behaviour.ts
92720
+ var BEHAVIOUR_SECTIONS;
92721
+ var init_behaviour = __esmMin((() => {
92722
+ init_prose_loader();
92723
+ BEHAVIOUR_SECTIONS = [{
92724
+ id: "behaviour",
92725
+ layer: "identity",
92726
+ order: 2200,
92727
+ modes: ["full", "minimal"],
92728
+ cacheable: false,
92729
+ header: "## Operating Rules (self-maintained)",
92730
+ source: "file",
92731
+ render: (ctx) => {
92732
+ const workspaceDir = ctx.params.workspaceDir;
92733
+ if (!workspaceDir) return [];
92734
+ const content = resolveProse({
92735
+ layer: "identity",
92736
+ id: "behaviour",
92737
+ agentWorkspaceDir: workspaceDir
92738
+ })?.content.trim();
92739
+ if (!content) return [];
92740
+ return [
92741
+ "## Operating Rules (self-maintained)",
92742
+ "",
92743
+ content,
92744
+ ""
92745
+ ];
92746
+ }
92747
+ }];
92748
+ }));
92749
+ //#endregion
92364
92750
  //#region src/agents/sections/identity.ts
92365
92751
  var IDENTITY_SECTIONS;
92366
92752
  var init_identity = __esmMin((() => {
@@ -93329,6 +93715,7 @@ function getBuiltinRegistry() {
93329
93715
  _registry.registerAll(PLATFORM_SECTIONS);
93330
93716
  _registry.registerAll(AGENT_TYPE_SECTIONS);
93331
93717
  _registry.registerAll(IDENTITY_SECTIONS);
93718
+ _registry.registerAll(BEHAVIOUR_SECTIONS);
93332
93719
  _registry.registerAll(USER_SECTIONS);
93333
93720
  _registry.registerAll(SESSION_SECTIONS);
93334
93721
  return _registry;
@@ -93347,6 +93734,7 @@ function assembleAgentSystemPrompt(params) {
93347
93734
  var _registry;
93348
93735
  var init_assemble = __esmMin((() => {
93349
93736
  init_agent_type();
93737
+ init_behaviour();
93350
93738
  init_identity();
93351
93739
  init_platform();
93352
93740
  init_registry$1();
@@ -99069,6 +99457,36 @@ async function prepareSessionManagerForRun(params) {
99069
99457
  }
99070
99458
  var init_session_manager_init = __esmMin((() => {}));
99071
99459
  //#endregion
99460
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
99461
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
99462
+ function reduceToolOutputText(text, opts) {
99463
+ let lines = text.split("\n");
99464
+ if (opts.collapseRuns) {
99465
+ const collapsed = [];
99466
+ let i = 0;
99467
+ while (i < lines.length) {
99468
+ let j = i + 1;
99469
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
99470
+ const run = j - i;
99471
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
99472
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
99473
+ i = j;
99474
+ }
99475
+ lines = collapsed;
99476
+ }
99477
+ if (lines.length <= opts.maxLines) return lines.join("\n");
99478
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
99479
+ const head = lines.slice(0, opts.headLines);
99480
+ const tail = lines.slice(lines.length - opts.tailLines);
99481
+ const elided = lines.length - head.length - tail.length;
99482
+ return [
99483
+ ...head,
99484
+ `… ${elided} lines elided …`,
99485
+ ...tail
99486
+ ].join("\n");
99487
+ }
99488
+ var init_tool_result_reduce = __esmMin((() => {}));
99489
+ //#endregion
99072
99490
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
99073
99491
  function isTextBlock(block) {
99074
99492
  return !!block && typeof block === "object" && block.type === "text";
@@ -99203,8 +99621,28 @@ function applyMessageMutationInPlace(target, source) {
99203
99621
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
99204
99622
  Object.assign(targetRecord, sourceRecord);
99205
99623
  }
99624
+ /**
99625
+ * Run the pure line-reducer over each tool-result message's text content,
99626
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
99627
+ */
99628
+ function reduceToolResultOutputsInPlace(messages) {
99629
+ for (const message of messages) {
99630
+ if (!isToolResultMessage(message)) continue;
99631
+ const rawText = getToolResultText(message);
99632
+ if (!rawText) continue;
99633
+ const reduced = reduceToolOutputText(rawText, {
99634
+ maxLines: REDUCE_MAX_LINES,
99635
+ headLines: REDUCE_HEAD_LINES,
99636
+ tailLines: REDUCE_TAIL_LINES,
99637
+ collapseRuns: true
99638
+ });
99639
+ if (reduced === rawText) continue;
99640
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
99641
+ }
99642
+ }
99206
99643
  function enforceToolResultContextBudgetInPlace(params) {
99207
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
99644
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
99645
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
99208
99646
  for (const message of messages) {
99209
99647
  if (!isToolResultMessage(message)) continue;
99210
99648
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -99226,6 +99664,7 @@ function enforceToolResultContextBudgetInPlace(params) {
99226
99664
  * @returns An async function suitable for use as Agent's transformContext callback.
99227
99665
  */
99228
99666
  function createToolResultContextGuardTransform(params) {
99667
+ const reduceOutput = params.reduceOutput !== false;
99229
99668
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
99230
99669
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
99231
99670
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -99236,13 +99675,15 @@ function createToolResultContextGuardTransform(params) {
99236
99675
  enforceToolResultContextBudgetInPlace({
99237
99676
  messages: contextMessages,
99238
99677
  contextBudgetChars,
99239
- maxSingleToolResultChars
99678
+ maxSingleToolResultChars,
99679
+ reduceOutput
99240
99680
  });
99241
99681
  return contextMessages;
99242
99682
  };
99243
99683
  }
99244
- 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;
99684
+ 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;
99245
99685
  var init_tool_result_context_guard = __esmMin((() => {
99686
+ init_tool_result_reduce();
99246
99687
  CHARS_PER_TOKEN_ESTIMATE = 4;
99247
99688
  CONTEXT_INPUT_HEADROOM_RATIO = .75;
99248
99689
  SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
@@ -99251,6 +99692,9 @@ var init_tool_result_context_guard = __esmMin((() => {
99251
99692
  CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
99252
99693
  CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
99253
99694
  PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
99695
+ REDUCE_MAX_LINES = 200;
99696
+ REDUCE_HEAD_LINES = 40;
99697
+ REDUCE_TAIL_LINES = 40;
99254
99698
  }));
99255
99699
  //#endregion
99256
99700
  //#region src/agents/pi-embedded-runner/run/attempt-session.ts
@@ -99343,7 +99787,10 @@ async function createRunSession(params, env) {
99343
99787
  applySystemPromptOverrideToSession(session, env.systemPromptText);
99344
99788
  if (!session) throw new Error("Embedded agent session missing");
99345
99789
  const activeSession = session;
99346
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
99790
+ const contextGuardTransform = createToolResultContextGuardTransform({
99791
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
99792
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
99793
+ });
99347
99794
  activeSession.agent.transformContext = contextGuardTransform;
99348
99795
  const cacheTrace = createCacheTrace({
99349
99796
  cfg: params.config,
@@ -103549,7 +103996,7 @@ var init_commands_allowlist = __esmMin((() => {
103549
103996
  init_resolve_users();
103550
103997
  init_config_writes();
103551
103998
  init_pairing();
103552
- init_registry$4();
103999
+ init_registry$5();
103553
104000
  init_accounts();
103554
104001
  init_accounts$5();
103555
104002
  init_config$4();
@@ -104889,7 +105336,7 @@ var init_debug_commands = __esmMin((() => {
104889
105336
  var handleConfigCommand, handleDebugCommand;
104890
105337
  var init_commands_config = __esmMin((() => {
104891
105338
  init_config_writes();
104892
- init_registry$4();
105339
+ init_registry$5();
104893
105340
  init_config_paths();
104894
105341
  init_config$4();
104895
105342
  init_runtime_overrides();
@@ -109070,7 +109517,7 @@ var init_reply_elevated = __esmMin((() => {
109070
109517
  init_agent_scope();
109071
109518
  init_dock();
109072
109519
  init_plugins();
109073
- init_registry$4();
109520
+ init_registry$5();
109074
109521
  init_message_channel();
109075
109522
  init_string_normalization();
109076
109523
  init_elevated_unavailable();
@@ -110671,7 +111118,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
110671
111118
  var init_agent_runner_utils = __esmMin((() => {
110672
111119
  init_agent_scope();
110673
111120
  init_dock();
110674
- init_registry$4();
111121
+ init_registry$5();
110675
111122
  init_sessions$1();
110676
111123
  init_provider_utils();
110677
111124
  init_usage_format();
@@ -114323,7 +114770,7 @@ var init_reply = __esmMin((() => {
114323
114770
  //#region src/channels/plugins/whatsapp-heartbeat.ts
114324
114771
  init_sessions$1();
114325
114772
  init_utils$2();
114326
- init_registry$4();
114773
+ init_registry$5();
114327
114774
  function getSessionRecipients(cfg) {
114328
114775
  if ((cfg.session?.scope ?? "per-sender") === "global") return [];
114329
114776
  const store = loadSessionStore(resolveStorePath$1(cfg.session?.store));