@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
@@ -14,16 +14,16 @@ import { a as trackToolExecution, c as flushSentry, f as startSentrySpan, i as t
14
14
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BLXsXccX.js";
15
15
  import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-CQQlHE0j.js";
16
16
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BYTEhHLM.js";
17
- import { i as resolveSkillsPromptForRun, l as assertSandboxPath, n as buildWorkspaceSkillSnapshot, o as resolvePluginSkillDirs, r as loadWorkspaceSkillEntries, t as buildWorkspaceSkillCommandSpecs, u as resolveSandboxInputPath } from "./workspace-CSBTFAxh.js";
18
- import { n as resolveSkillEnvMap, r as resolveSkillEnvMapFromSnapshot } from "./skills-DMPRReoe.js";
17
+ import { i as resolveSkillsPromptForRun, l as assertSandboxPath, n as buildWorkspaceSkillSnapshot, o as resolvePluginSkillDirs, r as loadWorkspaceSkillEntries, t as buildWorkspaceSkillCommandSpecs, u as resolveSandboxInputPath } from "./workspace-D5-DoTNR.js";
18
+ import { n as resolveSkillEnvMap, r as resolveSkillEnvMapFromSnapshot } from "./skills-DDhWBAii.js";
19
19
  import { c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isMemorySlotPlugin, i as discoverOpenClawPlugins, n as loadPluginManifestRegistry, o as emptyPluginConfigSchema, u as normalizePluginsConfig } from "./manifest-registry-DCVfom1u.js";
20
- import { E as parseDurationMs, n as validateConfigObjectWithPlugins, s as validateJsonSchemaValue } from "./validation-CG8Ui8_v.js";
21
- import { S as VERSION, _ as setConfigValueAtPath, d as getConfigOverrides, f as resetConfigOverrides, g as parseConfigPath, h as getConfigValueAtPath, i as loadConfig, l as writeConfigFile, m as unsetConfigOverride, o as readConfigFileSnapshot, p as setConfigOverride, v as unsetConfigValueAtPath } from "./io-TKYkFbcF.js";
22
- import "./config-ClkrcdId.js";
23
- import { n as callGateway } from "./call-DkT-xA-u.js";
20
+ import { E as parseDurationMs, n as validateConfigObjectWithPlugins, s as validateJsonSchemaValue } from "./validation-B-XaORq2.js";
21
+ import { S as VERSION, _ as setConfigValueAtPath, d as getConfigOverrides, f as resetConfigOverrides, g as parseConfigPath, h as getConfigValueAtPath, i as loadConfig, l as writeConfigFile, m as unsetConfigOverride, o as readConfigFileSnapshot, p as setConfigOverride, v as unsetConfigValueAtPath } from "./io-C_Q6AU5E.js";
22
+ import "./config-DHYot764.js";
23
+ import { n as callGateway } from "./call-BrDNyQiZ.js";
24
24
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-C02KGm4w.js";
25
25
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-ChJN5mZj.js";
26
- import { $ as mergeDeliveryContext, A as resolveThreadFlag, B as getChannelDock, D as resolveChannelResetConfig, E as evaluateSessionFreshness, G as resolveConversationLabel, H as resolveChannelGroupPolicy, I as resolveMainSessionKey, J as normalizeAtHashSlug, M as resolveFreshSessionTotalTokens, O as resolveSessionResetPolicy, Q as deliveryContextKey, R as deriveSessionMetaPatch, S as acquireSessionWriteLock, T as resolveSessionKey, U as resolveChannelGroupRequireMention, V as listChannelDocks, Z as deliveryContextFromSession, a as loadSessionStore, d as updateSessionStoreEntry, et as normalizeDeliveryContext, f as isCacheEnabled, h as archiveSessionTranscripts, j as DEFAULT_RESET_TRIGGERS, k as resolveSessionResetType, l as updateLastRoute, o as readSessionUpdatedAt, p as resolveCacheTtlMs, q as resolveGroupSessionKey, s as recordSessionMetaFromInbound, tt as normalizeSessionDeliveryFields, u as updateSessionStore, w as resolveSessionLockMaxHoldFromTimeout } from "./sessions-D_b2UXud.js";
26
+ import { $ as mergeDeliveryContext, A as resolveThreadFlag, B as getChannelDock, D as resolveChannelResetConfig, E as evaluateSessionFreshness, G as resolveConversationLabel, H as resolveChannelGroupPolicy, I as resolveMainSessionKey, J as normalizeAtHashSlug, M as resolveFreshSessionTotalTokens, O as resolveSessionResetPolicy, Q as deliveryContextKey, R as deriveSessionMetaPatch, S as acquireSessionWriteLock, T as resolveSessionKey, U as resolveChannelGroupRequireMention, V as listChannelDocks, Z as deliveryContextFromSession, a as loadSessionStore, d as updateSessionStoreEntry, et as normalizeDeliveryContext, f as isCacheEnabled, h as archiveSessionTranscripts, j as DEFAULT_RESET_TRIGGERS, k as resolveSessionResetType, l as updateLastRoute, o as readSessionUpdatedAt, p as resolveCacheTtlMs, q as resolveGroupSessionKey, s as recordSessionMetaFromInbound, tt as normalizeSessionDeliveryFields, u as updateSessionStore, w as resolveSessionLockMaxHoldFromTimeout } from "./sessions-C0Qs0Flz.js";
27
27
  import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-BkvS7DSy.js";
28
28
  import { _ as resolveDiscordAccount, b as normalizeChatType, c as resolveWhatsAppAccount, m as resolveSlackAccount, n as listChannelPlugins, r as normalizeChannelId$1, t as getChannelPlugin, u as resolveTelegramAccount, v as normalizeDiscordToken } from "./plugins-irMKpl65.js";
29
29
  import { t as resolveIMessageAccount } from "./accounts-BVGaPXBP.js";
@@ -33,51 +33,51 @@ import { i as resolveUserMemoryPath, n as resolveUserCredentialsPath } from "./u
33
33
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent, t as resolveDefaultSessionStorePath } from "./paths-D59m1grH.js";
34
34
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-Cti88ciS.js";
35
35
  import { a as stripHeartbeatToken, i as resolveHeartbeatPrompt, n as AGENT_LANE_SUBAGENT } from "./lanes-L5j3C7cx.js";
36
- import { d as resolveChannelMessageToolHints, f as resolveTelegramInlineButtonsScope, l as listChannelAgentTools, n as resolveAgentRoute, o as resolveSessionDeliveryTarget, u as listChannelSupportedActions } from "./resolve-route-FLi7kFo1.js";
37
- import { n as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-BVhDEOTB.js";
36
+ import { d as resolveChannelMessageToolHints, f as resolveTelegramInlineButtonsScope, l as listChannelAgentTools, n as resolveAgentRoute, o as resolveSessionDeliveryTarget, u as listChannelSupportedActions } from "./resolve-route-0arQsERr.js";
37
+ import { n as getMachineDisplayName, t as withTimeout$3 } from "./with-timeout-BVhDEOTB.js";
38
38
  import { a as logMessageProcessed, d as isDiagnosticsEnabled, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as emitDiagnosticEvent } from "./diagnostic-BEEvI8Zw.js";
39
39
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-BnA8DWCj.js";
40
- import { _ as initializeGlobalHookRunner, a as isRenderablePayload, c as resolveReplyToMode, d as normalizeTargetForProvider, f as parseReplyDirectives, g as getGlobalHookRunner, h as parseInlineDirectives$1, i as filterMessagingToolMediaDuplicates, m as splitMediaFromOutput, n as applyReplyThreading, o as shouldSuppressMessagingToolReplies, p as MEDIA_TOKEN_RE, r as filterMessagingToolDuplicates, s as createReplyToModeFilterForChannel, t as applyReplyTagsToPayload } from "./reply-payloads-CikGrhVL.js";
41
- import { S as textToSpeechTelephony, _ as setTtsEnabled, a as isSummarizationEnabled, b as stripTtsDirectivesFromText, c as maybeApplyTtsToPayload, d as resolveTtsAutoMode, f as resolveTtsConfig, g as setSummarizationEnabled, h as setLastTtsAttempt, i as getTtsProvider, l as normalizeTtsAutoMode, n as getLastTtsAttempt, o as isTtsEnabled, p as resolveTtsPrefsPath, r as getTtsMaxLength, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, v as setTtsMaxLength, x as textToSpeech, y as setTtsProvider } from "./tts-CRpGlsYO.js";
40
+ import { _ as initializeGlobalHookRunner, a as isRenderablePayload, c as resolveReplyToMode, d as normalizeTargetForProvider, f as parseReplyDirectives, g as getGlobalHookRunner, h as parseInlineDirectives$1, i as filterMessagingToolMediaDuplicates, m as splitMediaFromOutput, n as applyReplyThreading, o as shouldSuppressMessagingToolReplies, p as MEDIA_TOKEN_RE, r as filterMessagingToolDuplicates, s as createReplyToModeFilterForChannel, t as applyReplyTagsToPayload } from "./reply-payloads-Dk-zLmJC.js";
41
+ import { S as textToSpeechTelephony, _ as setTtsEnabled, a as isSummarizationEnabled, b as stripTtsDirectivesFromText, c as maybeApplyTtsToPayload, d as resolveTtsAutoMode, f as resolveTtsConfig, g as setSummarizationEnabled, h as setLastTtsAttempt, i as getTtsProvider, l as normalizeTtsAutoMode, n as getLastTtsAttempt, o as isTtsEnabled, p as resolveTtsPrefsPath, r as getTtsMaxLength, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, v as setTtsMaxLength, x as textToSpeech, y as setTtsProvider } from "./tts-DrFhyLnB.js";
42
42
  import { c as detectMime, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, m as kindFromMime, s as resizeToJpeg, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-QvmG4zb9.js";
43
43
  import { n as isVoiceCompatibleAudio } from "./audio-COkH8CV-.js";
44
- import { A as formatAssistantErrorText, B as isTimeoutErrorMessage, C as isGoogleModelApi, D as isFailoverAssistantError, E as isBillingAssistantError, F as isRawApiErrorPayload, G as ensureSessionHeader, H as parseImageDimensionError, I as isCloudCodeAssistFormatError, J as sanitizeGoogleTurnOrdering, K as resolveBootstrapMaxChars, L as isCompactionFailureError, M as formatRawAssistantErrorForUi, N as sanitizeUserFacingText, O as isFailoverErrorMessage, P as getApiErrorPayloadFingerprint, R as isContextOverflowError, S as isAntigravityClaude, T as isAuthAssistantError, U as parseImageSizeError, V as isTransientHttpError, W as buildBootstrapContextFiles, _ as normalizeTextForComparison, a as formatXHighModelHint, b as extractToolResultId, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, g as isMessagingToolDuplicateNormalized, i as formatThinkingLevels, j as formatBillingErrorMessage, k as isRateLimitAssistantError, l as normalizeReasoningLevel, m as supportsXHighThinking, n as validateGeminiTurns, p as resolveResponseUsageMode, q as resolveBootstrapTotalMaxChars, r as pickFallbackThinkingLevel, t as validateAnthropicTurns, u as normalizeThinkLevel, v as sanitizeSessionMessagesImages, w as classifyFailoverReason, x as downgradeOpenAIReasoningBlocks, y as extractToolCallsFromAssistant, z as isLikelyContextOverflowError } from "./pi-embedded-helpers-D-m7pmXE.js";
45
- import { C as compileGlobPatterns, S as stripPluginOnlyAllowlist, _ as expandPolicyWithPluginGroups, a as ensureSandboxWorkspaceForSession, b as normalizeToolName, c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, h as buildPluginToolGroups, m as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, u as resolveSandboxConfigForAgent, w as matchesAnyGlobPattern, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-pZvVQZ-a.js";
44
+ import { A as formatAssistantErrorText, B as isTimeoutErrorMessage, C as isGoogleModelApi, D as isFailoverAssistantError, E as isBillingAssistantError, F as isRawApiErrorPayload, G as ensureSessionHeader, H as parseImageDimensionError, I as isCloudCodeAssistFormatError, J as sanitizeGoogleTurnOrdering, K as resolveBootstrapMaxChars, L as isCompactionFailureError, M as formatRawAssistantErrorForUi, N as sanitizeUserFacingText, O as isFailoverErrorMessage, P as getApiErrorPayloadFingerprint, R as isContextOverflowError, S as isAntigravityClaude, T as isAuthAssistantError, U as parseImageSizeError, V as isTransientHttpError, W as buildBootstrapContextFiles, _ as normalizeTextForComparison, a as formatXHighModelHint, b as extractToolResultId, c as normalizeElevatedLevel, d as normalizeUsageDisplay, f as normalizeVerboseLevel, g as isMessagingToolDuplicateNormalized, i as formatThinkingLevels, j as formatBillingErrorMessage, k as isRateLimitAssistantError, l as normalizeReasoningLevel, m as supportsXHighThinking, n as validateGeminiTurns, p as resolveResponseUsageMode, q as resolveBootstrapTotalMaxChars, r as pickFallbackThinkingLevel, t as validateAnthropicTurns, u as normalizeThinkLevel, v as sanitizeSessionMessagesImages, w as classifyFailoverReason, x as downgradeOpenAIReasoningBlocks, y as extractToolCallsFromAssistant, z as isLikelyContextOverflowError } from "./pi-embedded-helpers-BsRnajNh.js";
45
+ import { C as compileGlobPatterns, S as stripPluginOnlyAllowlist, _ as expandPolicyWithPluginGroups, a as ensureSandboxWorkspaceForSession, b as normalizeToolName, c as resolveSandboxRuntimeStatus, g as collectExplicitAllowlist, h as buildPluginToolGroups, m as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, u as resolveSandboxConfigForAgent, w as matchesAnyGlobPattern, x as resolveToolProfilePolicy, y as mergeAlsoAllowPolicy } from "./sandbox-CDGF9AVA.js";
46
46
  import { l as safeEqualSecret } from "./auth-CFiHbm6v.js";
47
47
  import { r as formatUncaughtError, t as extractErrorCode } from "./errors-iV4-NKRR.js";
48
48
  import { a as isPrivateIpAddress, i as isBlockedHostname } from "./ssrf-DWqM0QRy.js";
49
49
  import { n as getMediaDir, r as saveMediaBuffer } from "./store-CoD1VHWb.js";
50
50
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-BeP6oYp4.js";
51
- import { n as ensureOpenClawModelsJson, t as ensureMinionModelsJson } from "./models-config-Df7nRCU-.js";
51
+ import { n as ensureOpenClawModelsJson, t as ensureMinionModelsJson } from "./models-config-ChIAfklN.js";
52
52
  import { a as traceGatewayEvent, i as traceChatEvent, t as deriveTraceId } from "./chat-trace-BMcJ2gl7.js";
53
53
  import { n as createAuditStore, r as getToolPrivacyDeclaration } from "./audit-store-DJPME7n7.js";
54
54
  import { t as wrapToolWithTracking } from "./tool-tracking-cC4VNDsZ.js";
55
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-Y_w-AsVt.js";
55
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-ilkHc_D4.js";
56
56
  import { a as resolveMemorySearchConfig, i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-BRl2NvLA.js";
57
57
  import { h as runTasksWithConcurrency } from "./session-files-CzSsU7Yu.js";
58
58
  import { a as readNumberParam, i as jsonResult, s as readStringParam } from "./common-BHzo6lXS.js";
59
59
  import { a as chunkByNewline, c as chunkMarkdownTextWithMode, d as resolveChunkMode, f as resolveTextChunkLimit, h as parseFenceSpans, i as resolveMarkdownTableMode, l as chunkText, m as isSafeFenceBreak, p as findFenceSpanAt, s as chunkMarkdownText, u as chunkTextWithMode } from "./ir-CWeDtRRp.js";
60
- import { i as shouldHandleTextCommands, n as listChatCommandsForConfig, r as normalizeCommandBody, t as listChatCommands } from "./commands-registry-dia3m7-M.js";
61
- import { a as stripToolMessages, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, i as sanitizeTextContent, p as resolveMainSessionAlias, r as extractAssistantText } from "./sessions-helpers-uZ0Taeh3.js";
62
- import { a as formatReasoningMessage, c as promoteThinkingTagsToBlocks, f as extractTextFromChatContent, i as extractThinkingFromTaggedText, l as stripDowngradedToolCallText, n as extractAssistantThinking, o as inferToolMetaFromArgs, r as extractThinkingFromTaggedStream, s as isAssistantMessage, t as extractAssistantText$1 } from "./pi-embedded-utils-DIGchmzO.js";
60
+ import { i as shouldHandleTextCommands, n as listChatCommandsForConfig, r as normalizeCommandBody, t as listChatCommands } from "./commands-registry-UnBqSA67.js";
61
+ import { a as stripToolMessages, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, i as sanitizeTextContent, p as resolveMainSessionAlias, r as extractAssistantText } from "./sessions-helpers-xH-u6Byb.js";
62
+ import { a as formatReasoningMessage, c as promoteThinkingTagsToBlocks, f as extractTextFromChatContent, i as extractThinkingFromTaggedText, l as stripDowngradedToolCallText, n as extractAssistantThinking, o as inferToolMetaFromArgs, r as extractThinkingFromTaggedStream, s as isAssistantMessage, t as extractAssistantText$1 } from "./pi-embedded-utils-Bql42QTv.js";
63
63
  import { n as resolveToolDisplay } from "./tool-display-DQ7I53Xn.js";
64
64
  import { n as formatTimeAgo } from "./format-relative-Bjc3l98W.js";
65
65
  import { n as detectSuspiciousPatterns } from "./external-content-Css-cJoz.js";
66
- import { a as isTimeoutError, l as resolveWorkspaceRoot, m as minimaxUnderstandImage, n as runWithModelFallback, o as resolveFailoverReasonFromError, r as FailoverError, s as resolveFailoverStatus, u as coerceImageAssistantText } from "./model-fallback-C92G-WUW.js";
66
+ import { a as isTimeoutError, l as resolveWorkspaceRoot, m as minimaxUnderstandImage, n as runWithModelFallback, o as resolveFailoverReasonFromError, r as FailoverError, s as resolveFailoverStatus, u as coerceImageAssistantText } from "./model-fallback-DXR7ZbvM.js";
67
67
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-DyZRVfXm.js";
68
68
  import { t as fetchWithSsrFGuard } from "./fetch-guard-2x6L37KS.js";
69
69
  import { a as fetchRemoteMedia, i as MediaFetchError, n as loadWebMedia, o as readResponseWithLimit } from "./load-DKN9eCoe.js";
70
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-AiXYmm_2.js";
71
- import { f as lookupContextTokens, o as loadSessionEntry } from "./session-utils-0BYkk3f_.js";
72
- import { a as resolveSubagentToolPolicy, c as SCOPE_DECLARED_TOOL_NAMES, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, l as isRestrictedAgent, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, s as archetypeDefault, t as filterToolsByPolicy, u as shouldForceWorkspaceOnly } from "./pi-tools.policy-Dt2kTSid.js";
70
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-7Ew4iFgU.js";
71
+ import { f as lookupContextTokens, o as loadSessionEntry } from "./session-utils-DDCd8HC9.js";
72
+ import { a as resolveSubagentToolPolicy, c as SCOPE_DECLARED_TOOL_NAMES, d as listAgentWorkspaceDirs, i as resolveGroupToolPolicy, l as isRestrictedAgent, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, s as archetypeDefault, t as filterToolsByPolicy, u as shouldForceWorkspaceOnly } from "./pi-tools.policy-DDJ31-0E.js";
73
73
  import { t as resolveFetch } from "./fetch-79DaZarF.js";
74
74
  import { n as fetchDiscord, t as normalizeDiscordSlug } from "./allow-list-B-j8hjG8.js";
75
75
  import { t as createSlackWebClient } from "./client-B0alQSqy.js";
76
76
  import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-msaEKSLt.js";
77
77
  import { d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, v as buildSafeBinsShellCommand, y as buildSafeShellCommand } from "./exec-approvals-9-5NQEhL.js";
78
78
  import { i as buildNodeShellCommand, n as mergePathPrepend, r as normalizePathPrepend, t as applyPathPrepend } from "./path-prepend-DJZoKorq.js";
79
- import { t as callGatewayTool } from "./gateway-CqhiWZQd.js";
80
- import { r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-Eo4ilZ36.js";
79
+ import { t as callGatewayTool } from "./gateway-D_kwhuup.js";
80
+ import { r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-DVNKajNN.js";
81
81
  import { t as formatDurationCompact$1 } from "./format-duration-DxxnRZtB.js";
82
82
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-b8aNuBYW.js";
83
83
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format--dK3YoXf.js";
@@ -105,6 +105,7 @@ import { Type } from "@sinclair/typebox";
105
105
  import { createJiti } from "jiti";
106
106
  import { Type as Type$1 } from "typebox";
107
107
  import chokidar from "chokidar";
108
+ import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
108
109
  import { EventEmitter } from "node:events";
109
110
  //#region src/infra/agent-events.ts
110
111
  const seqByRun = /* @__PURE__ */ new Map();
@@ -3060,7 +3061,7 @@ async function routeReply(params) {
3060
3061
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
3061
3062
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
3062
3063
  try {
3063
- const { deliverOutboundPayloads } = await import("./deliver-C40KRMzm.js").then((n) => n.n);
3064
+ const { deliverOutboundPayloads } = await import("./deliver-BCijF1xe.js").then((n) => n.n);
3064
3065
  return {
3065
3066
  ok: true,
3066
3067
  messageId: (await deliverOutboundPayloads({
@@ -11323,6 +11324,189 @@ function buildLandlockSandboxEnv(workdir) {
11323
11324
  };
11324
11325
  }
11325
11326
  //#endregion
11327
+ //#region src/agents/sandbox/tier0/router.ts
11328
+ /**
11329
+ * Tier-0 routing + interpreter-limitation heuristics.
11330
+ *
11331
+ * `shouldTryTier0` decides — cheaply, before running anything — whether a command
11332
+ * is a candidate for the in-process virtual sandbox. It is CONSERVATIVE: anything
11333
+ * that needs the network, a real runtime/toolchain, a privileged syscall, or an
11334
+ * external binary that lives outside the virtual command set escalates straight
11335
+ * to Docker. When tier-0 is tried and just-bash can't serve it, the exec result
11336
+ * is flagged `unsupported` (see isInterpreterLimitation) and the caller escalates.
11337
+ */
11338
+ const ESCALATE_PATTERNS = [
11339
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
11340
+ /\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/,
11341
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
11342
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
11343
+ /(^|\s|=)\/(dev|proc|sys)\//,
11344
+ /<\(|>\(/
11345
+ ];
11346
+ function shouldTryTier0(command) {
11347
+ const cmd = command.trim();
11348
+ if (!cmd) return false;
11349
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
11350
+ return true;
11351
+ }
11352
+ /**
11353
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
11354
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
11355
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
11356
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
11357
+ */
11358
+ function isInterpreterLimitation(stderr) {
11359
+ if (!stderr) return false;
11360
+ 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);
11361
+ }
11362
+ //#endregion
11363
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
11364
+ /**
11365
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
11366
+ *
11367
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
11368
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
11369
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
11370
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
11371
+ *
11372
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
11373
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
11374
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
11375
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
11376
+ *
11377
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
11378
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
11379
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
11380
+ */
11381
+ var Tier0VirtualSandbox = class {
11382
+ constructor() {
11383
+ this.instances = /* @__PURE__ */ new Map();
11384
+ }
11385
+ getInstance(req) {
11386
+ const existing = this.instances.get(req.scopeKey);
11387
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
11388
+ existing.lastUsed = Date.now();
11389
+ return existing.bash;
11390
+ }
11391
+ const fs = new MountableFs({ base: new InMemoryFs() });
11392
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
11393
+ const bash = new Bash({
11394
+ fs,
11395
+ cwd: req.workdir,
11396
+ env: {
11397
+ LANG: "C.UTF-8",
11398
+ ...req.env
11399
+ },
11400
+ executionLimits: {
11401
+ maxCommandCount: 1e4,
11402
+ maxLoopIterations: 1e6
11403
+ }
11404
+ });
11405
+ const inst = {
11406
+ bash,
11407
+ workspaceHostDir: req.workspaceHostDir,
11408
+ workdir: req.workdir,
11409
+ lastUsed: Date.now()
11410
+ };
11411
+ this.instances.set(req.scopeKey, inst);
11412
+ return bash;
11413
+ }
11414
+ async exec(req) {
11415
+ const startedAt = Date.now();
11416
+ let bash;
11417
+ try {
11418
+ bash = this.getInstance(req);
11419
+ } catch {
11420
+ return {
11421
+ status: "failed",
11422
+ exitCode: null,
11423
+ durationMs: Date.now() - startedAt,
11424
+ aggregated: "",
11425
+ timedOut: false,
11426
+ unsupported: true
11427
+ };
11428
+ }
11429
+ try {
11430
+ const result = await withTimeout$2(bash.exec(req.command, {
11431
+ cwd: req.workdir,
11432
+ env: req.env
11433
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
11434
+ const durationMs = Date.now() - startedAt;
11435
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
11436
+ if (result.exitCode === 0) return {
11437
+ status: "completed",
11438
+ exitCode: 0,
11439
+ durationMs,
11440
+ aggregated: combined,
11441
+ timedOut: false,
11442
+ unsupported: false
11443
+ };
11444
+ return {
11445
+ status: "failed",
11446
+ exitCode: result.exitCode,
11447
+ durationMs,
11448
+ aggregated: combined,
11449
+ timedOut: false,
11450
+ unsupported: isInterpreterLimitation(result.stderr)
11451
+ };
11452
+ } catch (err) {
11453
+ const timedOut = err instanceof TimeoutError;
11454
+ return {
11455
+ status: "failed",
11456
+ exitCode: null,
11457
+ durationMs: Date.now() - startedAt,
11458
+ aggregated: "",
11459
+ timedOut,
11460
+ unsupported: !timedOut
11461
+ };
11462
+ }
11463
+ }
11464
+ dispose(scopeKey) {
11465
+ if (scopeKey) this.instances.delete(scopeKey);
11466
+ else this.instances.clear();
11467
+ }
11468
+ /** test/inspection helper */
11469
+ get liveInstances() {
11470
+ return this.instances.size;
11471
+ }
11472
+ };
11473
+ var TimeoutError = class extends Error {};
11474
+ function withTimeout$2(p, ms) {
11475
+ if (!ms) return p;
11476
+ return new Promise((resolve, reject) => {
11477
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
11478
+ p.then((value) => {
11479
+ clearTimeout(timer);
11480
+ resolve(value);
11481
+ }, (error) => {
11482
+ clearTimeout(timer);
11483
+ reject(error);
11484
+ });
11485
+ });
11486
+ }
11487
+ //#endregion
11488
+ //#region src/agents/sandbox/tier0/registry.ts
11489
+ let singleton$1;
11490
+ function getTier0Sandbox() {
11491
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
11492
+ return singleton$1;
11493
+ }
11494
+ /**
11495
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
11496
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
11497
+ * Docker container too), so tier-0 sees the same files.
11498
+ */
11499
+ function resolveTier0Binding(params) {
11500
+ if (!params.workspaceHostDir) return;
11501
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
11502
+ if (!sandboxCfg.tier0.enabled) return;
11503
+ if (sandboxCfg.workspaceAccess === "ro") return;
11504
+ return {
11505
+ backend: getTier0Sandbox(),
11506
+ workspaceHostDir: params.workspaceHostDir
11507
+ };
11508
+ }
11509
+ //#endregion
11326
11510
  //#region src/infra/heartbeat-reason.ts
11327
11511
  function trimReason(reason) {
11328
11512
  return typeof reason === "string" ? reason.trim() : "";
@@ -12523,10 +12707,112 @@ function emitExecSystemEvent(text, opts) {
12523
12707
  });
12524
12708
  requestHeartbeatNow({ reason: "exec-event" });
12525
12709
  }
12710
+ /**
12711
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
12712
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
12713
+ * the command (so the caller escalates to Docker). Output is sanitized and a
12714
+ * ProcessSession is registered exactly like the normal path, so downstream
12715
+ * session listing / tailing is unaffected.
12716
+ */
12717
+ async function tryTier0Exec(args) {
12718
+ const { opts, sessionId, startedAt, execCommand } = args;
12719
+ const tier0 = opts.tier0;
12720
+ const sandbox = opts.sandbox;
12721
+ if (!tier0 || !sandbox) return null;
12722
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
12723
+ let outcome;
12724
+ try {
12725
+ outcome = await tier0.backend.exec({
12726
+ command: execCommand,
12727
+ workdir,
12728
+ workspaceHostDir: tier0.workspaceHostDir,
12729
+ env: opts.env,
12730
+ scopeKey: sandbox.containerName,
12731
+ timeoutSec: opts.timeoutSec
12732
+ });
12733
+ } catch {
12734
+ return null;
12735
+ }
12736
+ if (outcome.unsupported) return null;
12737
+ const session = {
12738
+ id: sessionId,
12739
+ command: opts.command,
12740
+ scopeKey: opts.scopeKey,
12741
+ sessionKey: opts.sessionKey,
12742
+ notifyOnExit: opts.notifyOnExit,
12743
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
12744
+ exitNotified: false,
12745
+ child: void 0,
12746
+ stdin: void 0,
12747
+ pid: void 0,
12748
+ startedAt,
12749
+ cwd: opts.workdir,
12750
+ maxOutputChars: opts.maxOutput,
12751
+ pendingMaxOutputChars: opts.pendingMaxOutput,
12752
+ totalOutputChars: 0,
12753
+ pendingStdout: [],
12754
+ pendingStderr: [],
12755
+ pendingStdoutChars: 0,
12756
+ pendingStderrChars: 0,
12757
+ aggregated: "",
12758
+ tail: "",
12759
+ exited: false,
12760
+ exitCode: void 0,
12761
+ exitSignal: void 0,
12762
+ truncated: false,
12763
+ backgrounded: false
12764
+ };
12765
+ addSession(session);
12766
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
12767
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
12768
+ const status = outcome.status === "completed" ? "completed" : "failed";
12769
+ markExited(session, outcome.exitCode ?? 0, null, status);
12770
+ const durationMs = Date.now() - startedAt;
12771
+ const aggregated = session.aggregated.trim();
12772
+ let result;
12773
+ if (status === "completed") {
12774
+ const exitCode = outcome.exitCode ?? 0;
12775
+ result = {
12776
+ status: "completed",
12777
+ exitCode,
12778
+ exitSignal: null,
12779
+ durationMs,
12780
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
12781
+ timedOut: false
12782
+ };
12783
+ } else {
12784
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
12785
+ result = {
12786
+ status: "failed",
12787
+ exitCode: outcome.exitCode,
12788
+ exitSignal: null,
12789
+ durationMs,
12790
+ aggregated,
12791
+ timedOut: outcome.timedOut,
12792
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
12793
+ };
12794
+ }
12795
+ return {
12796
+ session,
12797
+ startedAt,
12798
+ pid: void 0,
12799
+ promise: Promise.resolve(result),
12800
+ kill: () => {}
12801
+ };
12802
+ }
12526
12803
  async function runExecProcess(opts) {
12527
12804
  const startedAt = Date.now();
12528
12805
  const sessionId = createSessionSlug();
12529
12806
  const execCommand = opts.execCommand ?? opts.command;
12807
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
12808
+ const tier0Handle = await tryTier0Exec({
12809
+ opts,
12810
+ sessionId,
12811
+ startedAt,
12812
+ execCommand
12813
+ });
12814
+ if (tier0Handle) return tier0Handle;
12815
+ }
12530
12816
  const supervisor = getProcessSupervisor();
12531
12817
  const session = {
12532
12818
  id: sessionId,
@@ -13306,7 +13592,11 @@ function createExecTool(defaults) {
13306
13592
  scopeKey: defaults?.scopeKey,
13307
13593
  sessionKey: notifySessionKey,
13308
13594
  timeoutSec: effectiveTimeout,
13309
- onUpdate
13595
+ onUpdate,
13596
+ tier0: sandbox ? resolveTier0Binding({
13597
+ agentId,
13598
+ workspaceHostDir: sandbox.workspaceDir
13599
+ }) : void 0
13310
13600
  });
13311
13601
  let yielded = false;
13312
13602
  let yieldTimer = null;
@@ -15973,11 +16263,12 @@ const AGENT_TYPE_SECTIONS = [
15973
16263
  if (!trimmed) return [];
15974
16264
  return [
15975
16265
  "## Skills (mandatory)",
15976
- "Before replying: scan <available_skills> <description> entries.",
15977
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
15978
- "- If multiple could apply: choose the most specific one, then read/follow it.",
15979
- "- If none clearly apply: do not read any SKILL.md.",
15980
- "Constraints: never read more than one skill up front; only read after selecting.",
16266
+ "Before replying: scan the <available_skills> entries.",
16267
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
16268
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
16269
+ "- If none clearly apply: do not load any skill.",
16270
+ `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}\`.`,
16271
+ "Constraints: never load more than one skill up front; only load after selecting.",
15981
16272
  trimmed,
15982
16273
  ""
15983
16274
  ];
@@ -16122,6 +16413,40 @@ const AGENT_TYPE_SECTIONS = [
16122
16413
  }
16123
16414
  ];
16124
16415
  //#endregion
16416
+ //#region src/agents/sections/behaviour.ts
16417
+ /**
16418
+ * Identity-layer section that injects the agent's self-maintained operating
16419
+ * rules. The rules live at `<workspaceDir>/prompts/behaviour.md` and are
16420
+ * written by the `update_behaviour` tool. There is intentionally no global
16421
+ * fallback file — the section renders nothing unless the agent has authored
16422
+ * its own behaviour.md.
16423
+ */
16424
+ const BEHAVIOUR_SECTIONS = [{
16425
+ id: "behaviour",
16426
+ layer: "identity",
16427
+ order: 2200,
16428
+ modes: ["full", "minimal"],
16429
+ cacheable: false,
16430
+ header: "## Operating Rules (self-maintained)",
16431
+ source: "file",
16432
+ render: (ctx) => {
16433
+ const workspaceDir = ctx.params.workspaceDir;
16434
+ if (!workspaceDir) return [];
16435
+ const content = resolveProse({
16436
+ layer: "identity",
16437
+ id: "behaviour",
16438
+ agentWorkspaceDir: workspaceDir
16439
+ })?.content.trim();
16440
+ if (!content) return [];
16441
+ return [
16442
+ "## Operating Rules (self-maintained)",
16443
+ "",
16444
+ content,
16445
+ ""
16446
+ ];
16447
+ }
16448
+ }];
16449
+ //#endregion
16125
16450
  //#region src/agents/sections/identity.ts
16126
16451
  /** Identity-layer section definitions (3 sections). */
16127
16452
  const IDENTITY_SECTIONS = [
@@ -17137,6 +17462,7 @@ function getBuiltinRegistry() {
17137
17462
  _registry.registerAll(PLATFORM_SECTIONS);
17138
17463
  _registry.registerAll(AGENT_TYPE_SECTIONS);
17139
17464
  _registry.registerAll(IDENTITY_SECTIONS);
17465
+ _registry.registerAll(BEHAVIOUR_SECTIONS);
17140
17466
  _registry.registerAll(USER_SECTIONS);
17141
17467
  _registry.registerAll(SESSION_SECTIONS);
17142
17468
  return _registry;
@@ -23063,7 +23389,7 @@ const TOOL_REGISTRY = {
23063
23389
  },
23064
23390
  contextKeys: ["agentSessionKey"]
23065
23391
  },
23066
- load: () => import("./cron-tool-B3ffaxAO.js")
23392
+ load: () => import("./cron-tool-Dcr3QMih.js")
23067
23393
  },
23068
23394
  "gateway": {
23069
23395
  meta: {
@@ -23080,7 +23406,7 @@ const TOOL_REGISTRY = {
23080
23406
  },
23081
23407
  contextKeys: ["agentSessionKey", "config"]
23082
23408
  },
23083
- load: () => import("./gateway-tool-DtlbDV6N.js")
23409
+ load: () => import("./gateway-tool-Bi96OPGe.js")
23084
23410
  },
23085
23411
  "crm_search": {
23086
23412
  meta: {
@@ -23146,7 +23472,7 @@ const TOOL_REGISTRY = {
23146
23472
  ],
23147
23473
  condition: "hasAgentDir"
23148
23474
  },
23149
- load: () => import("./image-tool-CwCxITcF.js")
23475
+ load: () => import("./image-tool-D_dhIXLT.js")
23150
23476
  },
23151
23477
  "tts": {
23152
23478
  meta: {
@@ -23160,7 +23486,7 @@ const TOOL_REGISTRY = {
23160
23486
  },
23161
23487
  contextKeys: ["agentChannel", "config"]
23162
23488
  },
23163
- load: () => import("./tts-tool-DsLN8-ZT.js")
23489
+ load: () => import("./tts-tool-CdaKVWBM.js")
23164
23490
  },
23165
23491
  "message": {
23166
23492
  meta: {
@@ -23418,7 +23744,7 @@ const TOOL_REGISTRY = {
23418
23744
  ],
23419
23745
  condition: "messageEnabled"
23420
23746
  },
23421
- load: () => import("./message-tool-_MODnjgC.js")
23747
+ load: () => import("./message-tool-GTRrYMuR.js")
23422
23748
  },
23423
23749
  "agents_list": {
23424
23750
  meta: {
@@ -23432,7 +23758,7 @@ const TOOL_REGISTRY = {
23432
23758
  },
23433
23759
  contextKeys: ["agentSessionKey", "requesterAgentIdOverride"]
23434
23760
  },
23435
- load: () => import("./agents-list-tool-D9mHFLLa.js")
23761
+ load: () => import("./agents-list-tool-CzUTgXov.js")
23436
23762
  },
23437
23763
  "architect_pipeline": {
23438
23764
  meta: {
@@ -23518,7 +23844,7 @@ const TOOL_REGISTRY = {
23518
23844
  },
23519
23845
  contextKeys: ["agentSessionKey", "config"]
23520
23846
  },
23521
- load: () => import("./nodes-tool-CR8MmpTZ.js")
23847
+ load: () => import("./nodes-tool-BkgixWxk.js")
23522
23848
  },
23523
23849
  "venture_studio": {
23524
23850
  meta: {
@@ -23546,7 +23872,7 @@ const TOOL_REGISTRY = {
23546
23872
  },
23547
23873
  contextKeys: ["agentSessionKey", "config"]
23548
23874
  },
23549
- load: () => import("./session-status-tool-DnD354sJ.js")
23875
+ load: () => import("./session-status-tool-CtbF1-VI.js")
23550
23876
  },
23551
23877
  "sessions_history": {
23552
23878
  meta: {
@@ -23564,7 +23890,7 @@ const TOOL_REGISTRY = {
23564
23890
  },
23565
23891
  contextKeys: ["agentSessionKey", "sandboxed"]
23566
23892
  },
23567
- load: () => import("./sessions-history-tool-6WMcHpxy.js")
23893
+ load: () => import("./sessions-history-tool-DKXNjv5X.js")
23568
23894
  },
23569
23895
  "sessions_list": {
23570
23896
  meta: {
@@ -23583,7 +23909,7 @@ const TOOL_REGISTRY = {
23583
23909
  },
23584
23910
  contextKeys: ["agentSessionKey", "sandboxed"]
23585
23911
  },
23586
- load: () => import("./sessions-list-tool-CwTLRwGc.js")
23912
+ load: () => import("./sessions-list-tool-6DJtypdD.js")
23587
23913
  },
23588
23914
  "sessions_send": {
23589
23915
  meta: {
@@ -23606,7 +23932,7 @@ const TOOL_REGISTRY = {
23606
23932
  "sandboxed"
23607
23933
  ]
23608
23934
  },
23609
- load: () => import("./sessions-send-tool-BKNgicV5.js")
23935
+ load: () => import("./sessions-send-tool-C3ggqtMe.js")
23610
23936
  },
23611
23937
  "sessions_spawn": {
23612
23938
  meta: {
@@ -23639,7 +23965,7 @@ const TOOL_REGISTRY = {
23639
23965
  "requesterAgentIdOverride"
23640
23966
  ]
23641
23967
  },
23642
- load: () => import("./sessions-spawn-tool-DqfoPFrK.js")
23968
+ load: () => import("./sessions-spawn-tool-BgkkNWMg.js")
23643
23969
  },
23644
23970
  "subagents": {
23645
23971
  meta: {
@@ -23666,7 +23992,7 @@ const TOOL_REGISTRY = {
23666
23992
  },
23667
23993
  contextKeys: ["agentSessionKey"]
23668
23994
  },
23669
- load: () => import("./subagents-tool-usr_WpP2.js")
23995
+ load: () => import("./subagents-tool-BdWYv7Mb.js")
23670
23996
  },
23671
23997
  "browser": {
23672
23998
  meta: {
@@ -23756,7 +24082,7 @@ const TOOL_REGISTRY = {
23756
24082
  },
23757
24083
  contextKeys: ["sandboxBrowserBridgeUrl", "allowHostBrowserControl"]
23758
24084
  },
23759
- load: () => import("./browser-tool-CWG74LXa.js")
24085
+ load: () => import("./browser-tool-BVAlCkv9.js")
23760
24086
  },
23761
24087
  "canvas": {
23762
24088
  meta: {
@@ -23819,7 +24145,7 @@ const TOOL_REGISTRY = {
23819
24145
  },
23820
24146
  contextKeys: ["config"]
23821
24147
  },
23822
- load: () => import("./canvas-tool-yqzOmVk8.js")
24148
+ load: () => import("./canvas-tool-C8kJ8X6t.js")
23823
24149
  },
23824
24150
  "web_fetch": {
23825
24151
  meta: {
@@ -23851,7 +24177,7 @@ const TOOL_REGISTRY = {
23851
24177
  },
23852
24178
  contextKeys: ["config", "sandboxed"]
23853
24179
  },
23854
- load: () => import("./web-search-B5d6ODyB.js")
24180
+ load: () => import("./web-search-CCeGZMBD.js")
23855
24181
  }
23856
24182
  };
23857
24183
  //#endregion
@@ -28011,7 +28337,7 @@ async function deliverSessionMaintenanceWarning(params) {
28011
28337
  return;
28012
28338
  }
28013
28339
  try {
28014
- const { deliverOutboundPayloads } = await import("./deliver-C40KRMzm.js").then((n) => n.n);
28340
+ const { deliverOutboundPayloads } = await import("./deliver-BCijF1xe.js").then((n) => n.n);
28015
28341
  await deliverOutboundPayloads({
28016
28342
  cfg: params.cfg,
28017
28343
  channel,
@@ -34130,7 +34456,7 @@ function guardSessionManager(sessionManager, opts) {
34130
34456
  //#region src/agents/pi-embedded-runner/compaction-safety-timeout.ts
34131
34457
  const EMBEDDED_COMPACTION_TIMEOUT_MS = 3e5;
34132
34458
  async function compactWithSafetyTimeout(compact, timeoutMs = EMBEDDED_COMPACTION_TIMEOUT_MS) {
34133
- return await withTimeout$2(() => compact(), timeoutMs, "Compaction");
34459
+ return await withTimeout$3(() => compact(), timeoutMs, "Compaction");
34134
34460
  }
34135
34461
  //#endregion
34136
34462
  //#region src/agents/pi-extensions/session-manager-runtime-registry.ts
@@ -36858,6 +37184,13 @@ function resolvePrivacyModeOverride(currentProvider, currentModelId) {
36858
37184
  //#region src/agents/pi-embedded-runner/lifecycle-hooks.ts
36859
37185
  const hookRegistry = /* @__PURE__ */ new Map();
36860
37186
  /**
37187
+ * Register lifecycle hooks for a plugin.
37188
+ * Replaces any previously registered hooks for the same pluginId.
37189
+ */
37190
+ function registerLifecycleHooks(pluginId, hooks) {
37191
+ hookRegistry.set(pluginId, hooks);
37192
+ }
37193
+ /**
36861
37194
  * Fire preLlmCall hooks in registration order.
36862
37195
  * If any hook returns a modified context, subsequent hooks receive the modified version.
36863
37196
  * Errors in individual hooks are caught and logged (never block the LLM call).
@@ -40106,6 +40439,35 @@ async function prepareSessionManagerForRun(params) {
40106
40439
  }
40107
40440
  }
40108
40441
  //#endregion
40442
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
40443
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
40444
+ function reduceToolOutputText(text, opts) {
40445
+ let lines = text.split("\n");
40446
+ if (opts.collapseRuns) {
40447
+ const collapsed = [];
40448
+ let i = 0;
40449
+ while (i < lines.length) {
40450
+ let j = i + 1;
40451
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
40452
+ const run = j - i;
40453
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
40454
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
40455
+ i = j;
40456
+ }
40457
+ lines = collapsed;
40458
+ }
40459
+ if (lines.length <= opts.maxLines) return lines.join("\n");
40460
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
40461
+ const head = lines.slice(0, opts.headLines);
40462
+ const tail = lines.slice(lines.length - opts.tailLines);
40463
+ const elided = lines.length - head.length - tail.length;
40464
+ return [
40465
+ ...head,
40466
+ `… ${elided} lines elided …`,
40467
+ ...tail
40468
+ ].join("\n");
40469
+ }
40470
+ //#endregion
40109
40471
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
40110
40472
  const CHARS_PER_TOKEN_ESTIMATE = 4;
40111
40473
  const CONTEXT_INPUT_HEADROOM_RATIO = .75;
@@ -40248,8 +40610,31 @@ function applyMessageMutationInPlace(target, source) {
40248
40610
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
40249
40611
  Object.assign(targetRecord, sourceRecord);
40250
40612
  }
40613
+ const REDUCE_MAX_LINES = 200;
40614
+ const REDUCE_HEAD_LINES = 40;
40615
+ const REDUCE_TAIL_LINES = 40;
40616
+ /**
40617
+ * Run the pure line-reducer over each tool-result message's text content,
40618
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
40619
+ */
40620
+ function reduceToolResultOutputsInPlace(messages) {
40621
+ for (const message of messages) {
40622
+ if (!isToolResultMessage(message)) continue;
40623
+ const rawText = getToolResultText(message);
40624
+ if (!rawText) continue;
40625
+ const reduced = reduceToolOutputText(rawText, {
40626
+ maxLines: REDUCE_MAX_LINES,
40627
+ headLines: REDUCE_HEAD_LINES,
40628
+ tailLines: REDUCE_TAIL_LINES,
40629
+ collapseRuns: true
40630
+ });
40631
+ if (reduced === rawText) continue;
40632
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
40633
+ }
40634
+ }
40251
40635
  function enforceToolResultContextBudgetInPlace(params) {
40252
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
40636
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
40637
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
40253
40638
  for (const message of messages) {
40254
40639
  if (!isToolResultMessage(message)) continue;
40255
40640
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -40271,6 +40656,7 @@ function enforceToolResultContextBudgetInPlace(params) {
40271
40656
  * @returns An async function suitable for use as Agent's transformContext callback.
40272
40657
  */
40273
40658
  function createToolResultContextGuardTransform(params) {
40659
+ const reduceOutput = params.reduceOutput !== false;
40274
40660
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
40275
40661
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
40276
40662
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -40281,7 +40667,8 @@ function createToolResultContextGuardTransform(params) {
40281
40667
  enforceToolResultContextBudgetInPlace({
40282
40668
  messages: contextMessages,
40283
40669
  contextBudgetChars,
40284
- maxSingleToolResultChars
40670
+ maxSingleToolResultChars,
40671
+ reduceOutput
40285
40672
  });
40286
40673
  return contextMessages;
40287
40674
  };
@@ -40377,7 +40764,10 @@ async function createRunSession(params, env) {
40377
40764
  applySystemPromptOverrideToSession(session, env.systemPromptText);
40378
40765
  if (!session) throw new Error("Embedded agent session missing");
40379
40766
  const activeSession = session;
40380
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
40767
+ const contextGuardTransform = createToolResultContextGuardTransform({
40768
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
40769
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
40770
+ });
40381
40771
  activeSession.agent.transformContext = contextGuardTransform;
40382
40772
  const cacheTrace = createCacheTrace({
40383
40773
  cfg: params.config,
@@ -43610,4 +44000,4 @@ function initSubagentRegistry() {
43610
44000
  restoreSubagentRunsOnce();
43611
44001
  }
43612
44002
  //#endregion
43613
- export { isSteppedBuildEnabled as $, resolveIdentityName as $n, setSkillsRemoteRegistry as $t, loadOpenClawPlugins as A, registerUnhandledRejectionHandler as An, buildSectionRenderContext as At, getTotalPendingReplies as B, formatZonedTimestamp as Bn, buildStatusMessage as Bt, createOpenClawCodingTools as C, applyVerboseOverride as Cn, formatUsageReportLines as Ct, getPluginToolMeta as D, peekSystemEventEntries as Dn, assembleAgentSystemPromptWithSections as Dt, buildDefaultToolPolicyPipelineSteps as E, isSystemEventContextChanged as En, resolveModelAuthLabel as Et, openMessageLedger as F, extractImageContentFromSource as Fn, buildSystemPromptParams as Ft, appendCronStyleCurrentTimeLine as G, stopSubagentsForRequester as Gn, normalizeSendPolicy as Gt, createDedupeCache as H, resolveUserTimeFormat as Hn, requestHeartbeatNow as Ht, patchRouting as I, normalizeMimeList as In, buildSystemPromptReport as It, setCliSessionId as J, extractShortModelName as Jn, primeRemoteSkillsCache as Jt, resolveCronStyleNow as K, resolveQueueSettings as Kn, resolveSendPolicy as Kt, record as L, resolveInputFileLimits as Ln, buildChannelSummary as Lt, closeMessageLedger as M, DEFAULT_INPUT_IMAGE_MIMES as Mn, PromptSectionRegistry as Mt, markFailed as N, DEFAULT_INPUT_TIMEOUT_MS as Nn, PROSE_GLOBAL_ROOT as Nt, createPluginLoaderLogger as O, peekSystemEvents as On, getBuiltinSectionRegistry as Ot, markSynced as P, extractFileContentFromSource as Pn, _clearProseCache as Pt, debugStepContinue as Q, resolveEffectiveMessagesConfig as Qn, removeRemoteNodeInfo as Qt, dispatchInboundMessage as R, estimateBase64DecodedBytes as Rn, buildChannelAccountSnapshot as Rt, readConsolidationState as S, applyModelOverrideToSessionEntry as Sn, loadProviderUsageSummary as St, applyToolPolicyPipeline as T, enqueueSystemEvent as Tn, resolveUsageProviderId as Tt, getReplyFromConfig as U, resolveUserTimezone as Un, setHeartbeatWakeHandler as Ut, sanitizeOutboundText as V, formatUserTime as Vn, resolveCommitHash as Vt, BARE_SESSION_RESET_PROMPT as W, isAbortTrigger as Wn, resolveHeartbeatReasonKind as Wt, sha256HexPrefix as X, CURRENT_MESSAGE_MARKER as Xn, refreshRemoteBinsForConnectedNodes as Xt, runCliAgent as Y, clearSessionQueues as Yn, recordRemoteNodeInfo as Yt, debugSkipAll as Z, resolveAgentIdentity as Zn, refreshRemoteNodeBins as Zt, listForCurrentInstance as _, clearSessionAuthProfileOverride as _n, getSubagentDepthFromSessionStore as _t, listSubagentRunsForRequester as a, updatePairedNodeMetadata as an, setCommandLaneConcurrency as ar, formatTokenUsageDisplay as at, markRecoveryAttempt as b, buildAuthHealthSummary as bn, sortSubagentRuns as bt, replaceSubagentRunAfterSteer as c, hashToken as cn, clearAgentRunContext as cr, spawnSubagentDirect as ct, abortEmbeddedPiRun as d, resolvePairingPaths as dn, onAgentEvent as dr, getTemplateCache as dt, approveNodePairing as en, resolveBootstrapContextForRun as er, setDebugStepBroadcaster as et, getActiveEmbeddedRunCount as f, readJsonFile as fn, registerAgentRunContext as fr, getTemplateLoadErrors as ft, deleteRow as g, registerSkillsChangeListener as gn, validateTemplate as gt, closeInFlightTurnsStore as h, getSkillsSnapshotVersion as hn, stopTemplateWatcher as ht, listDescendantRunsForRequester as i, requestNodePairing as in, resetAllLanes as ir, formatDurationCompact as it, claimBatch as j, DEFAULT_INPUT_IMAGE_MAX_BYTES as jn, buildToolSummaryMap as jt, loadMinionPlugins as k, installUnhandledRejectionHandler as kn, resolveUserContext as kt, runSubagentAnnounceFlow as l, verifyPairingToken as ln, emitAgentEvent as lr, getLastReloadAt as lt, waitForEmbeddedPiRunEnd as m, createAsyncLock as mn, initTemplateLoader as mt, countActiveDescendantRuns as n, rejectNodePairing as nn, getQueueSize as nr, createOpenClawTools as nt, markSubagentRunForSteerRestart as o, verifyNodeToken as on, waitForActiveTasks as or, resolveTotalTokens as ot, queueEmbeddedPiMessage as p, writeJsonAtomic as pn, getTemplateUsageStats as pt, getCliSessionId as q, getFollowupQueueDepth as qn, getRemoteSkillEligibility as qt, initSubagentRegistry as r, renamePairedNode as rn, getTotalQueueSize as rr, TOOL_REGISTRY as rt, markSubagentRunTerminated as s, generatePairingToken as sn, resolveAgentTimeoutMs as sr, truncateLine as st, clearSubagentRunSteerRestart as t, listNodePairing as tn, getActiveTaskCount as tr, setSteppedBuild as tt, runEmbeddedPiAgent as u, pruneExpiredPending as un, getAgentRunContext as ur, getTemplate as ut, listFromOtherInstances as v, maskApiKey as vn, resolveSubagentLabel as vt, sniffMimeFromBase64 as w, parseVerboseOverride as wn, formatUsageWindowSummary as wt, openInFlightTurnsStore as x, formatRemainingShort as xn, normalizeGroupActivation as xt, markInterrupted as y, DEFAULT_OAUTH_WARN_MS as yn, resolveSubagentTargetFromRuns as yt, createReplyDispatcher as z, transcribeOpenAiCompatibleAudio as zn, formatChannelAllowFrom as zt };
44003
+ export { debugStepContinue as $, resolveEffectiveMessagesConfig as $n, removeRemoteNodeInfo as $t, loadMinionPlugins as A, installUnhandledRejectionHandler as An, resolveUserContext as At, createReplyDispatcher as B, transcribeOpenAiCompatibleAudio as Bn, formatChannelAllowFrom as Bt, readConsolidationState as C, applyModelOverrideToSessionEntry as Cn, loadProviderUsageSummary as Ct, buildDefaultToolPolicyPipelineSteps as D, isSystemEventContextChanged as Dn, resolveModelAuthLabel as Dt, applyToolPolicyPipeline as E, enqueueSystemEvent as En, resolveUsageProviderId as Et, markSynced as F, extractFileContentFromSource as Fn, _clearProseCache as Ft, BARE_SESSION_RESET_PROMPT as G, isAbortTrigger as Gn, resolveHeartbeatReasonKind as Gt, sanitizeOutboundText as H, formatUserTime as Hn, resolveCommitHash as Ht, openMessageLedger as I, extractImageContentFromSource as In, buildSystemPromptParams as It, getCliSessionId as J, getFollowupQueueDepth as Jn, getRemoteSkillEligibility as Jt, appendCronStyleCurrentTimeLine as K, stopSubagentsForRequester as Kn, normalizeSendPolicy as Kt, patchRouting as L, normalizeMimeList as Ln, buildSystemPromptReport as Lt, claimBatch as M, DEFAULT_INPUT_IMAGE_MAX_BYTES as Mn, buildToolSummaryMap as Mt, closeMessageLedger as N, DEFAULT_INPUT_IMAGE_MIMES as Nn, PromptSectionRegistry as Nt, getPluginToolMeta as O, peekSystemEventEntries as On, assembleAgentSystemPromptWithSections as Ot, markFailed as P, DEFAULT_INPUT_TIMEOUT_MS as Pn, PROSE_GLOBAL_ROOT as Pt, debugSkipAll as Q, resolveAgentIdentity as Qn, refreshRemoteNodeBins as Qt, record as R, resolveInputFileLimits as Rn, buildChannelSummary as Rt, openInFlightTurnsStore as S, formatRemainingShort as Sn, normalizeGroupActivation as St, sniffMimeFromBase64 as T, parseVerboseOverride as Tn, formatUsageWindowSummary as Tt, createDedupeCache as U, resolveUserTimeFormat as Un, requestHeartbeatNow as Ut, getTotalPendingReplies as V, formatZonedTimestamp as Vn, buildStatusMessage as Vt, getReplyFromConfig as W, resolveUserTimezone as Wn, setHeartbeatWakeHandler as Wt, runCliAgent as X, clearSessionQueues as Xn, recordRemoteNodeInfo as Xt, setCliSessionId as Y, extractShortModelName as Yn, primeRemoteSkillsCache as Yt, sha256HexPrefix as Z, CURRENT_MESSAGE_MARKER as Zn, refreshRemoteBinsForConnectedNodes as Zt, deleteRow as _, registerSkillsChangeListener as _n, validateTemplate as _t, listSubagentRunsForRequester as a, requestNodePairing as an, resetAllLanes as ar, formatDurationCompact as at, markInterrupted as b, DEFAULT_OAUTH_WARN_MS as bn, resolveSubagentTargetFromRuns as bt, replaceSubagentRunAfterSteer as c, generatePairingToken as cn, resolveAgentTimeoutMs as cr, truncateLine as ct, abortEmbeddedPiRun as d, pruneExpiredPending as dn, getAgentRunContext as dr, getTemplate as dt, setSkillsRemoteRegistry as en, resolveIdentityName as er, isSteppedBuildEnabled as et, getActiveEmbeddedRunCount as f, resolvePairingPaths as fn, onAgentEvent as fr, getTemplateCache as ft, closeInFlightTurnsStore as g, getSkillsSnapshotVersion as gn, stopTemplateWatcher as gt, registerLifecycleHooks as h, createAsyncLock as hn, initTemplateLoader as ht, listDescendantRunsForRequester as i, renamePairedNode as in, getTotalQueueSize as ir, TOOL_REGISTRY as it, loadOpenClawPlugins as j, registerUnhandledRejectionHandler as jn, buildSectionRenderContext as jt, createPluginLoaderLogger as k, peekSystemEvents as kn, getBuiltinSectionRegistry as kt, runSubagentAnnounceFlow as l, hashToken as ln, clearAgentRunContext as lr, spawnSubagentDirect as lt, waitForEmbeddedPiRunEnd as m, writeJsonAtomic as mn, getTemplateUsageStats as mt, countActiveDescendantRuns as n, listNodePairing as nn, getActiveTaskCount as nr, setSteppedBuild as nt, markSubagentRunForSteerRestart as o, updatePairedNodeMetadata as on, setCommandLaneConcurrency as or, formatTokenUsageDisplay as ot, queueEmbeddedPiMessage as p, readJsonFile as pn, registerAgentRunContext as pr, getTemplateLoadErrors as pt, resolveCronStyleNow as q, resolveQueueSettings as qn, resolveSendPolicy as qt, initSubagentRegistry as r, rejectNodePairing as rn, getQueueSize as rr, createOpenClawTools as rt, markSubagentRunTerminated as s, verifyNodeToken as sn, waitForActiveTasks as sr, resolveTotalTokens as st, clearSubagentRunSteerRestart as t, approveNodePairing as tn, resolveBootstrapContextForRun as tr, setDebugStepBroadcaster as tt, runEmbeddedPiAgent as u, verifyPairingToken as un, emitAgentEvent as ur, getLastReloadAt as ut, listForCurrentInstance as v, clearSessionAuthProfileOverride as vn, getSubagentDepthFromSessionStore as vt, createOpenClawCodingTools as w, applyVerboseOverride as wn, formatUsageReportLines as wt, markRecoveryAttempt as x, buildAuthHealthSummary as xn, sortSubagentRuns as xt, listFromOtherInstances as y, maskApiKey as yn, resolveSubagentLabel as yt, dispatchInboundMessage as z, estimateBase64DecodedBytes as zn, buildChannelAccountSnapshot as zt };