@markusylisiurunen/tau 0.3.32 → 0.3.34

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 (343) hide show
  1. package/README.md +15 -20
  2. package/dist/core/agent/agent_runtime.js +1551 -0
  3. package/dist/core/agent/agent_runtime.js.map +1 -0
  4. package/dist/core/agent/events.js +2 -0
  5. package/dist/core/agent/events.js.map +1 -0
  6. package/dist/core/commands/registry.js +0 -42
  7. package/dist/core/commands/registry.js.map +1 -1
  8. package/dist/core/config/content_loader.js +7 -3
  9. package/dist/core/config/content_loader.js.map +1 -1
  10. package/dist/core/index.js +3 -2
  11. package/dist/core/index.js.map +1 -1
  12. package/dist/core/models/catalog.js +7 -1
  13. package/dist/core/models/catalog.js.map +1 -1
  14. package/dist/core/models/tau_model_overrides.js +10 -0
  15. package/dist/core/models/tau_model_overrides.js.map +1 -0
  16. package/dist/core/modes/index.js.map +1 -1
  17. package/dist/core/personas.js +4 -2
  18. package/dist/core/personas.js.map +1 -1
  19. package/dist/core/runtime/agent_model.js +50 -0
  20. package/dist/core/runtime/agent_model.js.map +1 -0
  21. package/dist/core/runtime/chat_runtime.js +175 -63
  22. package/dist/core/runtime/chat_runtime.js.map +1 -1
  23. package/dist/core/runtime/model_executor.js +2 -0
  24. package/dist/core/runtime/model_executor.js.map +1 -0
  25. package/dist/core/runtime/model_sampler.js +21 -0
  26. package/dist/core/runtime/model_sampler.js.map +1 -0
  27. package/dist/core/session/auto_compaction_archive.js +239 -0
  28. package/dist/core/session/auto_compaction_archive.js.map +1 -0
  29. package/dist/core/session/compaction.js +97 -29
  30. package/dist/core/session/compaction.js.map +1 -1
  31. package/dist/core/session/direct_bash.js.map +1 -1
  32. package/dist/core/session/message_accumulator.js +3 -5
  33. package/dist/core/session/message_accumulator.js.map +1 -1
  34. package/dist/core/session/runner.js +274 -102
  35. package/dist/core/session/runner.js.map +1 -1
  36. package/dist/core/subagents/agent_supervisor.js +378 -0
  37. package/dist/core/subagents/agent_supervisor.js.map +1 -0
  38. package/dist/core/subagents/format.js +101 -0
  39. package/dist/core/subagents/format.js.map +1 -0
  40. package/dist/core/subagents/registry.js +3 -1
  41. package/dist/core/subagents/registry.js.map +1 -1
  42. package/dist/core/subagents/types.js +1 -0
  43. package/dist/core/subagents/types.js.map +1 -1
  44. package/dist/core/tools/activity.js +2 -0
  45. package/dist/core/tools/activity.js.map +1 -0
  46. package/dist/core/tools/bash.js +64 -67
  47. package/dist/core/tools/bash.js.map +1 -1
  48. package/dist/core/tools/catalog.js +49 -25
  49. package/dist/core/tools/catalog.js.map +1 -1
  50. package/dist/core/tools/code_mode.js +65 -58
  51. package/dist/core/tools/code_mode.js.map +1 -1
  52. package/dist/core/tools/edit.js +11 -12
  53. package/dist/core/tools/edit.js.map +1 -1
  54. package/dist/core/tools/interrupt_agent.js +119 -0
  55. package/dist/core/tools/interrupt_agent.js.map +1 -0
  56. package/dist/core/tools/list_agents.js +64 -0
  57. package/dist/core/tools/list_agents.js.map +1 -0
  58. package/dist/core/tools/nook.js +3 -2
  59. package/dist/core/tools/nook.js.map +1 -1
  60. package/dist/core/tools/registry.js +27 -13
  61. package/dist/core/tools/registry.js.map +1 -1
  62. package/dist/core/tools/send_input_to_agent.js +77 -93
  63. package/dist/core/tools/send_input_to_agent.js.map +1 -1
  64. package/dist/core/tools/spawn_agent.js +94 -114
  65. package/dist/core/tools/spawn_agent.js.map +1 -1
  66. package/dist/core/tools/tool_names.js +4 -2
  67. package/dist/core/tools/tool_names.js.map +1 -1
  68. package/dist/core/tools/view_image.js +11 -16
  69. package/dist/core/tools/view_image.js.map +1 -1
  70. package/dist/core/tools/wait_for_agents.js +76 -137
  71. package/dist/core/tools/wait_for_agents.js.map +1 -1
  72. package/dist/core/tools/web.js +3 -3
  73. package/dist/core/tools/web.js.map +1 -1
  74. package/dist/core/tools/write.js +10 -11
  75. package/dist/core/tools/write.js.map +1 -1
  76. package/dist/core/usage/logs.js.map +1 -1
  77. package/dist/core/utils/compact.js +19 -10
  78. package/dist/core/utils/compact.js.map +1 -1
  79. package/dist/core/utils/subagent_utils.js.map +1 -1
  80. package/dist/core/version.js +1 -1
  81. package/dist/diff_tool/app/dist/assets/actionscript-3-Cs6JJXT5.js +1 -0
  82. package/dist/diff_tool/app/dist/assets/ahk-CA9gdOdF.js +1 -0
  83. package/dist/diff_tool/app/dist/assets/ahk2-_6rzW9BS.js +1 -0
  84. package/dist/diff_tool/app/dist/assets/{angular-html-DbgxQryr.js → angular-html-vSIwre92.js} +1 -1
  85. package/dist/diff_tool/app/dist/assets/{angular-ts-Dzjq8SvI.js → angular-ts-B9yWa-IT.js} +1 -1
  86. package/dist/diff_tool/app/dist/assets/apex-KFGFyKwG.js +1 -0
  87. package/dist/diff_tool/app/dist/assets/{apl-6AmEMJr-.js → apl-CBg9ewu1.js} +1 -1
  88. package/dist/diff_tool/app/dist/assets/asciidoc-SCjQUq34.js +1 -0
  89. package/dist/diff_tool/app/dist/assets/{astro-BM8EbfIg.js → astro-BVjxSYjj.js} +1 -1
  90. package/dist/diff_tool/app/dist/assets/{bat-Bo4NYOV-.js → bat-qdxAdBWQ.js} +1 -1
  91. package/dist/diff_tool/app/dist/assets/bird2-CYIUgYqB.js +1 -0
  92. package/dist/diff_tool/app/dist/assets/{blade-DiKMnN3e.js → blade-jvqV5kiv.js} +1 -1
  93. package/dist/diff_tool/app/dist/assets/bsl-_VjlB9mv.js +1 -0
  94. package/dist/diff_tool/app/dist/assets/{c-DMT5X-u9.js → c-DDAfW08c.js} +1 -1
  95. package/dist/diff_tool/app/dist/assets/c3-D0apG41V.js +1 -0
  96. package/dist/diff_tool/app/dist/assets/catppuccin-frappe-C9Q5zVZY.js +1 -0
  97. package/dist/diff_tool/app/dist/assets/catppuccin-latte-CtsyrtPq.js +1 -0
  98. package/dist/diff_tool/app/dist/assets/catppuccin-macchiato-R8nAf1vR.js +1 -0
  99. package/dist/diff_tool/app/dist/assets/catppuccin-mocha-DjuaAJKi.js +1 -0
  100. package/dist/diff_tool/app/dist/assets/chapel-Qflwfgbt.js +1 -0
  101. package/dist/diff_tool/app/dist/assets/clarity-CtfBBspg.js +1 -0
  102. package/dist/diff_tool/app/dist/assets/{cobol-CACNMc1O.js → cobol-4iJI1LUg.js} +1 -1
  103. package/dist/diff_tool/app/dist/assets/{coffee-D_WUFE0g.js → coffee-C9LbGGO3.js} +1 -1
  104. package/dist/diff_tool/app/dist/assets/coq-DuBRPxYg.js +1 -0
  105. package/dist/diff_tool/app/dist/assets/cpp-B-x6veTx.js +1 -0
  106. package/dist/diff_tool/app/dist/assets/{crystal-wh93mtUe.js → crystal-S06EUmKn.js} +1 -1
  107. package/dist/diff_tool/app/dist/assets/{css-CCfuUqEr.js → css-DA4RYriG.js} +1 -1
  108. package/dist/diff_tool/app/dist/assets/{edge-DP-spcJf.js → edge-7dx6BjGp.js} +1 -1
  109. package/dist/diff_tool/app/dist/assets/{elixir-BXBkaEtJ.js → elixir-DPywG97a.js} +1 -1
  110. package/dist/diff_tool/app/dist/assets/{elm-BXr8OwKP.js → elm-Dgo_WnqC.js} +1 -1
  111. package/dist/diff_tool/app/dist/assets/emacs-lisp-c_oH4hRZ.js +1 -0
  112. package/dist/diff_tool/app/dist/assets/{erb-Cu5Zacs_.js → erb-CVW4PjFl.js} +1 -1
  113. package/dist/diff_tool/app/dist/assets/{gdresource-C0sCabJj.js → gdresource-xMC7jr7x.js} +1 -1
  114. package/dist/diff_tool/app/dist/assets/gdscript-DYvRD3hg.js +1 -0
  115. package/dist/diff_tool/app/dist/assets/{git-rebase-DO8LWld4.js → git-rebase-CtU0gmBJ.js} +1 -1
  116. package/dist/diff_tool/app/dist/assets/{glimmer-js-Bh-OAIDW.js → glimmer-js-twAYiPP2.js} +1 -1
  117. package/dist/diff_tool/app/dist/assets/{glimmer-ts-DI9lHU4q.js → glimmer-ts-BfNoXayN.js} +1 -1
  118. package/dist/diff_tool/app/dist/assets/{glsl--zoY4RCO.js → glsl-D_XrtFF7.js} +1 -1
  119. package/dist/diff_tool/app/dist/assets/{graphql-C8h2T_SC.js → graphql-B_GeapzM.js} +1 -1
  120. package/dist/diff_tool/app/dist/assets/hack-BCaCVoSX.js +1 -0
  121. package/dist/diff_tool/app/dist/assets/{haml-C2BBBsDW.js → haml-z9Mz7I1O.js} +1 -1
  122. package/dist/diff_tool/app/dist/assets/{handlebars-cZMztphK.js → handlebars-D0FVYagc.js} +1 -1
  123. package/dist/diff_tool/app/dist/assets/haxe-C8oCnwJJ.js +1 -0
  124. package/dist/diff_tool/app/dist/assets/{html-BtccomkJ.js → html-BOM4tb7u.js} +1 -1
  125. package/dist/diff_tool/app/dist/assets/{html-derivative-qjeUe52-.js → html-derivative-CsSlhJgr.js} +1 -1
  126. package/dist/diff_tool/app/dist/assets/{http-Dv8OQO33.js → http-Cjy9oaQn.js} +1 -1
  127. package/dist/diff_tool/app/dist/assets/{hurl-B6Fnr2ae.js → hurl-CjLQ7ql5.js} +1 -1
  128. package/dist/diff_tool/app/dist/assets/hxml-Dcm88srW.js +1 -0
  129. package/dist/diff_tool/app/dist/assets/index-QO81yN6b.js +1550 -0
  130. package/dist/diff_tool/app/dist/assets/{java-BuadWMcp.js → java-cn8DiFD8.js} +1 -1
  131. package/dist/diff_tool/app/dist/assets/{javascript-BIKxmHeL.js → javascript-CEnHZaZM.js} +1 -1
  132. package/dist/diff_tool/app/dist/assets/{jinja-Cm_guvgu.js → jinja-DIp6kVk7.js} +1 -1
  133. package/dist/diff_tool/app/dist/assets/{jison-Sst29gJb.js → jison-Dx116ito.js} +1 -1
  134. package/dist/diff_tool/app/dist/assets/{json-Bg6l2vym.js → json-C6B9h0n5.js} +1 -1
  135. package/dist/diff_tool/app/dist/assets/{jsx-BiREAxkr.js → jsx-CDEGT2B2.js} +1 -1
  136. package/dist/diff_tool/app/dist/assets/{julia-DAhrWFzr.js → julia-CsIJA3Km.js} +1 -1
  137. package/dist/diff_tool/app/dist/assets/{just-xBwbf5aT.js → just-DZRYvkQw.js} +1 -1
  138. package/dist/diff_tool/app/dist/assets/kanagawa-dragon-Bozd7klA.js +1 -0
  139. package/dist/diff_tool/app/dist/assets/kanagawa-lotus-BmuOG9ZW.js +1 -0
  140. package/dist/diff_tool/app/dist/assets/kanagawa-wave-BML5mF2J.js +1 -0
  141. package/dist/diff_tool/app/dist/assets/latex-CeR-RQOI.js +1 -0
  142. package/dist/diff_tool/app/dist/assets/{liquid-BTsCzVvF.js → liquid-Dhf8N4mn.js} +1 -1
  143. package/dist/diff_tool/app/dist/assets/{llvm-Cm23YOpf.js → llvm-DqHOMS-s.js} +1 -1
  144. package/dist/diff_tool/app/dist/assets/{lua-BJt9x0JP.js → lua-zVTVaJzn.js} +1 -1
  145. package/dist/diff_tool/app/dist/assets/luau-C2pBCSgt.js +1 -0
  146. package/dist/diff_tool/app/dist/assets/{marko-CWdJkbvC.js → marko-BGPq5r3o.js} +1 -1
  147. package/dist/diff_tool/app/dist/assets/mdc-D8K78bym.js +1 -0
  148. package/dist/diff_tool/app/dist/assets/mermaid-BxpfTIzt.js +1 -0
  149. package/dist/diff_tool/app/dist/assets/mojo-CFuIV2fl.js +1 -0
  150. package/dist/diff_tool/app/dist/assets/monokai-B_bV9PQ9.js +1 -0
  151. package/dist/diff_tool/app/dist/assets/moonbit-DgjMoLWr.js +1 -0
  152. package/dist/diff_tool/app/dist/assets/move-BYnGhZoM.js +1 -0
  153. package/dist/diff_tool/app/dist/assets/{nginx-BwS0G4IK.js → nginx-Bo-bEa75.js} +1 -1
  154. package/dist/diff_tool/app/dist/assets/{nim-B2VFbcs9.js → nim-Bfy5M54r.js} +1 -1
  155. package/dist/diff_tool/app/dist/assets/nsis-CjNLYCLg.js +1 -0
  156. package/dist/diff_tool/app/dist/assets/nushell-DHYfO66s.js +1 -0
  157. package/dist/diff_tool/app/dist/assets/org-BKetN7sT.js +1 -0
  158. package/dist/diff_tool/app/dist/assets/{perl-BTeqR-l8.js → perl-WiwTOQTV.js} +1 -1
  159. package/dist/diff_tool/app/dist/assets/{php-Crua7nbA.js → php-CM2FzhGV.js} +1 -1
  160. package/dist/diff_tool/app/dist/assets/{powershell-DshXNtvi.js → powershell-CCSX75yM.js} +1 -1
  161. package/dist/diff_tool/app/dist/assets/prisma-DMgNhnYS.js +1 -0
  162. package/dist/diff_tool/app/dist/assets/{pug-CUlgPjMU.js → pug-D2WvUHZ-.js} +1 -1
  163. package/dist/diff_tool/app/dist/assets/{qml-DI0IjNUw.js → qml-DGPbc6TL.js} +1 -1
  164. package/dist/diff_tool/app/dist/assets/r-CCFYJ_KM.js +1 -0
  165. package/dist/diff_tool/app/dist/assets/{razor-DrkKtFm5.js → razor-D1JuQWQz.js} +1 -1
  166. package/dist/diff_tool/app/dist/assets/rbs-C0MpOrj4.js +1 -0
  167. package/dist/diff_tool/app/dist/assets/red-DX1BQOs8.js +1 -0
  168. package/dist/diff_tool/app/dist/assets/{regexp-DRmxJil7.js → regexp-zTiHwMow.js} +1 -1
  169. package/dist/diff_tool/app/dist/assets/rose-pine-aMsaMD1D.js +1 -0
  170. package/dist/diff_tool/app/dist/assets/rose-pine-dawn-8PwUyIlP.js +1 -0
  171. package/dist/diff_tool/app/dist/assets/rose-pine-moon-DO-qXg-I.js +1 -0
  172. package/dist/diff_tool/app/dist/assets/{rst-DiRke36z.js → rst-CuUAArfH.js} +1 -1
  173. package/dist/diff_tool/app/dist/assets/{ruby-t7r9jzAg.js → ruby-DznrLCoG.js} +1 -1
  174. package/dist/diff_tool/app/dist/assets/{sas-CR7Z4kg-.js → sas-D2hJmLva.js} +1 -1
  175. package/dist/diff_tool/app/dist/assets/{scala-DKOlJaKm.js → scala-BiFt_7mu.js} +1 -1
  176. package/dist/diff_tool/app/dist/assets/{scss--CnPWaDv.js → scss-Cjb3p_6n.js} +1 -1
  177. package/dist/diff_tool/app/dist/assets/{shellscript-Bz7H5174.js → shellscript-BtwI-tfX.js} +1 -1
  178. package/dist/diff_tool/app/dist/assets/{shellsession-mlKnHJfN.js → shellsession-BYirS1xP.js} +1 -1
  179. package/dist/diff_tool/app/dist/assets/smalltalk-BHpQb5nM.js +1 -0
  180. package/dist/diff_tool/app/dist/assets/smithy-Dgaz7aur.js +1 -0
  181. package/dist/diff_tool/app/dist/assets/solarized-dark-UdsmMDCL.js +1 -0
  182. package/dist/diff_tool/app/dist/assets/solarized-light-C1IUL_tW.js +1 -0
  183. package/dist/diff_tool/app/dist/assets/solidity-Bj7E1mRn.js +1 -0
  184. package/dist/diff_tool/app/dist/assets/{soy-CKu9y9G1.js → soy-D4Ndk7-j.js} +1 -1
  185. package/dist/diff_tool/app/dist/assets/{sql-DcvKi3Jj.js → sql-DbLQ5SJl.js} +1 -1
  186. package/dist/diff_tool/app/dist/assets/{stata-Yo25QZyV.js → stata-BXoNBosJ.js} +1 -1
  187. package/dist/diff_tool/app/dist/assets/surrealql-toyTYnAL.js +1 -0
  188. package/dist/diff_tool/app/dist/assets/{svelte-BIhEVbnP.js → svelte-BEpa7pAW.js} +1 -1
  189. package/dist/diff_tool/app/dist/assets/swift-CyEgAFGc.js +1 -0
  190. package/dist/diff_tool/app/dist/assets/system-verilog-Dh5ihWbf.js +1 -0
  191. package/dist/diff_tool/app/dist/assets/{templ-D6FrV4mZ.js → templ-CZfW_RJI.js} +1 -1
  192. package/dist/diff_tool/app/dist/assets/tex-COemmIIu.js +1 -0
  193. package/dist/diff_tool/app/dist/assets/theming-B5HubD5i.js +1 -0
  194. package/dist/diff_tool/app/dist/assets/theming-BTK0wyKj.js +1 -0
  195. package/dist/diff_tool/app/dist/assets/theming-BTUlzJFw.js +1 -0
  196. package/dist/diff_tool/app/dist/assets/theming-BURFlYfV.js +1 -0
  197. package/dist/diff_tool/app/dist/assets/theming-BVZjihoZ.js +1 -0
  198. package/dist/diff_tool/app/dist/assets/theming-BWSkzMBn.js +1 -0
  199. package/dist/diff_tool/app/dist/assets/theming-BchIqPOb.js +1 -0
  200. package/dist/diff_tool/app/dist/assets/theming-CeLfRn2P.js +1 -0
  201. package/dist/diff_tool/app/dist/assets/theming-DMjwMSwU.js +1 -0
  202. package/dist/diff_tool/app/dist/assets/theming-QWGGdlwd.js +1 -0
  203. package/dist/diff_tool/app/dist/assets/{ts-tags-Kqn1PP6m.js → ts-tags-CMVUY_BA.js} +1 -1
  204. package/dist/diff_tool/app/dist/assets/{tsx-L3TEJWGL.js → tsx-BTvP6uzd.js} +1 -1
  205. package/dist/diff_tool/app/dist/assets/twig-DzP5RjJc.js +1 -0
  206. package/dist/diff_tool/app/dist/assets/{typescript-Dvc5RX4H.js → typescript-CQaGlMoX.js} +1 -1
  207. package/dist/diff_tool/app/dist/assets/{v-DETTlOr0.js → v-DBj4K9d_.js} +1 -1
  208. package/dist/diff_tool/app/dist/assets/{vb-Djn5o6TS.js → vb-DOwzaHZ0.js} +1 -1
  209. package/dist/diff_tool/app/dist/assets/verilog-B2gwz-sJ.js +1 -0
  210. package/dist/diff_tool/app/dist/assets/{vue-X1uI3I2A.js → vue-DaVWTtvb.js} +1 -1
  211. package/dist/diff_tool/app/dist/assets/{vue-html-BMpHEoeQ.js → vue-html-BA_OH0Xt.js} +1 -1
  212. package/dist/diff_tool/app/dist/assets/{vue-vine-DnTGaA4r.js → vue-vine-C_H4XbNR.js} +1 -1
  213. package/dist/diff_tool/app/dist/assets/{xml-QlPQXP0d.js → xml-1JLzpunp.js} +1 -1
  214. package/dist/diff_tool/app/dist/assets/{xsl-JpRU16Li.js → xsl-GtZi0Erj.js} +1 -1
  215. package/dist/diff_tool/app/dist/assets/{yaml-Djukn3_s.js → yaml-LueTtDDo.js} +1 -1
  216. package/dist/diff_tool/app/dist/index.html +1 -1
  217. package/dist/execution/execution_environment.js.map +1 -1
  218. package/dist/execution/tool_backend_execution_environment.js +1 -7
  219. package/dist/execution/tool_backend_execution_environment.js.map +1 -1
  220. package/dist/host/client_tool_broker.js +28 -21
  221. package/dist/host/client_tool_broker.js.map +1 -1
  222. package/dist/host/hosted_ephemeral_agent_session.js +109 -167
  223. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  224. package/dist/host/local_session_host.js +340 -248
  225. package/dist/host/local_session_host.js.map +1 -1
  226. package/dist/host/session_host.js.map +1 -1
  227. package/dist/host/session_protocol_handler.js +125 -105
  228. package/dist/host/session_protocol_handler.js.map +1 -1
  229. package/dist/main.js +10 -2
  230. package/dist/main.js.map +1 -1
  231. package/dist/protocol/index.d.ts +1 -1
  232. package/dist/protocol/session_protocol.d.ts +70 -36
  233. package/dist/protocol/session_protocol.js +235 -80
  234. package/dist/protocol/session_protocol.js.map +1 -1
  235. package/dist/sdk/index.d.ts +1 -1
  236. package/dist/sdk/index.js.map +1 -1
  237. package/dist/sdk/session.js +8 -25
  238. package/dist/sdk/session.js.map +1 -1
  239. package/dist/sdk/types.d.ts +4 -9
  240. package/dist/starter/prompts/approval-review-branch.md +7 -0
  241. package/dist/starter/prompts/approval-review-current-changes.md +7 -0
  242. package/dist/starter/prompts/approval-review-last-commit.md +7 -0
  243. package/dist/starter/skills/approval-review/SKILL.md +219 -0
  244. package/dist/store/file_session_store.js +13 -9
  245. package/dist/store/file_session_store.js.map +1 -1
  246. package/dist/store/session_snapshot_migrations.js +152 -0
  247. package/dist/store/session_snapshot_migrations.js.map +1 -0
  248. package/dist/tui/chat_controller/command_hints.js +0 -6
  249. package/dist/tui/chat_controller/command_hints.js.map +1 -1
  250. package/dist/tui/chat_view.js +19 -12
  251. package/dist/tui/chat_view.js.map +1 -1
  252. package/dist/tui/session_chat_app.js +0 -8
  253. package/dist/tui/session_chat_app.js.map +1 -1
  254. package/dist/tui/session_chat_controller.js +122 -178
  255. package/dist/tui/session_chat_controller.js.map +1 -1
  256. package/dist/tui/tool_ui_router.js +12 -226
  257. package/dist/tui/tool_ui_router.js.map +1 -1
  258. package/dist/tui/ui/bash_execution.js +3 -3
  259. package/dist/tui/ui/bash_execution.js.map +1 -1
  260. package/dist/tui/ui/chat_message_model.js +2 -2
  261. package/dist/tui/ui/chat_message_model.js.map +1 -1
  262. package/dist/tui/ui/subagent_panel.js +59 -26
  263. package/dist/tui/ui/subagent_panel.js.map +1 -1
  264. package/dist/tui/ui/tool_ui_model.js +2 -0
  265. package/dist/tui/ui/tool_ui_model.js.map +1 -0
  266. package/dist/tui/ui/tool_ui_registry.js +310 -36
  267. package/dist/tui/ui/tool_ui_registry.js.map +1 -1
  268. package/package.json +4 -4
  269. package/dist/core/events/types.js +0 -2
  270. package/dist/core/events/types.js.map +0 -1
  271. package/dist/core/modes/mode_adapter.js +0 -2
  272. package/dist/core/modes/mode_adapter.js.map +0 -1
  273. package/dist/core/runtime/conversation_turn_runtime.js +0 -88
  274. package/dist/core/runtime/conversation_turn_runtime.js.map +0 -1
  275. package/dist/core/session/core_session.js +0 -86
  276. package/dist/core/session/core_session.js.map +0 -1
  277. package/dist/core/session/pruning.js +0 -587
  278. package/dist/core/session/pruning.js.map +0 -1
  279. package/dist/core/session/session_engine.js +0 -1246
  280. package/dist/core/session/session_engine.js.map +0 -1
  281. package/dist/core/subagents/control_plane.js +0 -339
  282. package/dist/core/subagents/control_plane.js.map +0 -1
  283. package/dist/core/subagents/subagent_engine.js +0 -258
  284. package/dist/core/subagents/subagent_engine.js.map +0 -1
  285. package/dist/core/tools/terminate_agent.js +0 -162
  286. package/dist/core/tools/terminate_agent.js.map +0 -1
  287. package/dist/diff_tool/app/dist/assets/actionscript-3--17pq3dv.js +0 -1
  288. package/dist/diff_tool/app/dist/assets/apex-VAyPSnFM.js +0 -1
  289. package/dist/diff_tool/app/dist/assets/asciidoc-DE70LPWp.js +0 -1
  290. package/dist/diff_tool/app/dist/assets/bird2-C6vDhewU.js +0 -1
  291. package/dist/diff_tool/app/dist/assets/bsl-BkkzgIyY.js +0 -1
  292. package/dist/diff_tool/app/dist/assets/c3-BFHwR3_K.js +0 -1
  293. package/dist/diff_tool/app/dist/assets/catppuccin-frappe-3VR1Za6u.js +0 -1
  294. package/dist/diff_tool/app/dist/assets/catppuccin-latte-DwIHMF0Q.js +0 -1
  295. package/dist/diff_tool/app/dist/assets/catppuccin-macchiato-DYnBP6_5.js +0 -1
  296. package/dist/diff_tool/app/dist/assets/catppuccin-mocha-DYhrFGRu.js +0 -1
  297. package/dist/diff_tool/app/dist/assets/clarity-SemFz856.js +0 -1
  298. package/dist/diff_tool/app/dist/assets/coq-BrsZFFmf.js +0 -1
  299. package/dist/diff_tool/app/dist/assets/cpp-BcU9r9kv.js +0 -1
  300. package/dist/diff_tool/app/dist/assets/emacs-lisp-B4R74twV.js +0 -1
  301. package/dist/diff_tool/app/dist/assets/gdscript-Cp2uCuqX.js +0 -1
  302. package/dist/diff_tool/app/dist/assets/hack-DAsjGmmw.js +0 -1
  303. package/dist/diff_tool/app/dist/assets/haxe-OTjmBuCE.js +0 -1
  304. package/dist/diff_tool/app/dist/assets/hxml-B0Qn7Nwc.js +0 -1
  305. package/dist/diff_tool/app/dist/assets/index-U7G4V3LV.js +0 -1579
  306. package/dist/diff_tool/app/dist/assets/kanagawa-dragon-CXtmUGW6.js +0 -1
  307. package/dist/diff_tool/app/dist/assets/kanagawa-lotus-BN08jTvb.js +0 -1
  308. package/dist/diff_tool/app/dist/assets/kanagawa-wave-CTweb8Dz.js +0 -1
  309. package/dist/diff_tool/app/dist/assets/latex-Bydg2zYo.js +0 -1
  310. package/dist/diff_tool/app/dist/assets/luau-FMPmPwt6.js +0 -1
  311. package/dist/diff_tool/app/dist/assets/mdc-B6ddHTKx.js +0 -1
  312. package/dist/diff_tool/app/dist/assets/mermaid-Bk4SNUv9.js +0 -1
  313. package/dist/diff_tool/app/dist/assets/mojo-BgCJLMeH.js +0 -1
  314. package/dist/diff_tool/app/dist/assets/monokai-CdkpiU2Y.js +0 -1
  315. package/dist/diff_tool/app/dist/assets/moonbit-CaWjb8XO.js +0 -1
  316. package/dist/diff_tool/app/dist/assets/move-B1IS1UjX.js +0 -1
  317. package/dist/diff_tool/app/dist/assets/nushell-DcLAeLz5.js +0 -1
  318. package/dist/diff_tool/app/dist/assets/pierre-dark-CpLgRqie.js +0 -1
  319. package/dist/diff_tool/app/dist/assets/pierre-dark-protanopia-deuteranopia-B35FxJx-.js +0 -1
  320. package/dist/diff_tool/app/dist/assets/pierre-dark-soft-kZQmAZld.js +0 -1
  321. package/dist/diff_tool/app/dist/assets/pierre-dark-tritanopia-CpjhbsIL.js +0 -1
  322. package/dist/diff_tool/app/dist/assets/pierre-dark-vibrant-CpQYzh95.js +0 -1
  323. package/dist/diff_tool/app/dist/assets/pierre-light-CoaEpmwp.js +0 -1
  324. package/dist/diff_tool/app/dist/assets/pierre-light-protanopia-deuteranopia-0fSaH845.js +0 -1
  325. package/dist/diff_tool/app/dist/assets/pierre-light-soft-lWLdNTOI.js +0 -1
  326. package/dist/diff_tool/app/dist/assets/pierre-light-tritanopia-CEbqgOJL.js +0 -1
  327. package/dist/diff_tool/app/dist/assets/pierre-light-vibrant-D80Fkn33.js +0 -1
  328. package/dist/diff_tool/app/dist/assets/prisma-BsRQq5mF.js +0 -1
  329. package/dist/diff_tool/app/dist/assets/r-DRexFFDh.js +0 -1
  330. package/dist/diff_tool/app/dist/assets/red-CJ3rzSJv.js +0 -1
  331. package/dist/diff_tool/app/dist/assets/rose-pine-BthvhNj6.js +0 -1
  332. package/dist/diff_tool/app/dist/assets/rose-pine-dawn-Dg85fqjY.js +0 -1
  333. package/dist/diff_tool/app/dist/assets/rose-pine-moon-hon4tzzS.js +0 -1
  334. package/dist/diff_tool/app/dist/assets/smalltalk-B16xEiuN.js +0 -1
  335. package/dist/diff_tool/app/dist/assets/solarized-dark-DV17i1UV.js +0 -1
  336. package/dist/diff_tool/app/dist/assets/solarized-light-DSh2HLQt.js +0 -1
  337. package/dist/diff_tool/app/dist/assets/solidity-CKzVLygQ.js +0 -1
  338. package/dist/diff_tool/app/dist/assets/surrealql-CUddZ4Qk.js +0 -1
  339. package/dist/diff_tool/app/dist/assets/swift-DonLKvLd.js +0 -1
  340. package/dist/diff_tool/app/dist/assets/system-verilog-DJ5XKQeo.js +0 -1
  341. package/dist/diff_tool/app/dist/assets/tex-BOTYELrL.js +0 -1
  342. package/dist/diff_tool/app/dist/assets/twig-BpzmhnWz.js +0 -1
  343. package/dist/diff_tool/app/dist/assets/verilog-CiiDBU1e.js +0 -1
@@ -1,587 +0,0 @@
1
- import { TOOL_NAME_BASH, TOOL_NAME_EDIT } from "../tools/tool_names.js";
2
- import { buildLineDiff, collapseLongUnchangedDiffRuns } from "../utils/line_diff.js";
3
- import { extractAllFencedCodeBlocks } from "../utils/messages.js";
4
- import { bytesToTokens, formatTokenEstimate, tokensToBytes } from "../utils/token.js";
5
- import { truncateToBytesFromStart } from "../utils/truncate.js";
6
- import { stripTauUserMetadata } from "../utils/user_metadata.js";
7
- const DEFAULT_PRUNE_FRACTION = 0.25;
8
- const PRUNED_TOOL_RESULT_PREFIX = "[Tool result pruned]";
9
- const PRUNED_EDIT_RESULT_PREFIX = "[Tool result pruned] Edit diff";
10
- const PRUNED_EDIT_ARGUMENT_MARKER = "[Content pruned]";
11
- const PRUNE_EDIT_UNCHANGED_CONTEXT_LINES = 4;
12
- const PRUNE_PREVIEW_MAX_TOKENS = 512;
13
- const PRUNE_MAX_OVERAGE_RATIO = 0.1;
14
- export function defaultSessionPruneFraction() {
15
- return DEFAULT_PRUNE_FRACTION;
16
- }
17
- export function parseSessionPruneFraction(extra) {
18
- if (!extra) {
19
- return DEFAULT_PRUNE_FRACTION;
20
- }
21
- const parsed = Number(extra);
22
- if (!Number.isFinite(parsed)) {
23
- return null;
24
- }
25
- if (parsed < 0 || parsed > 1) {
26
- return null;
27
- }
28
- return parsed;
29
- }
30
- export function parseSessionPruneFractionAndGuidance(extra) {
31
- if (!extra) {
32
- return { fraction: DEFAULT_PRUNE_FRACTION };
33
- }
34
- const trimmed = extra.trim();
35
- if (!trimmed) {
36
- return { fraction: DEFAULT_PRUNE_FRACTION };
37
- }
38
- const [firstToken, ...rest] = trimmed.split(/\s+/);
39
- const parsed = Number(firstToken);
40
- if (Number.isFinite(parsed)) {
41
- if (parsed < 0 || parsed > 1) {
42
- return { fraction: null };
43
- }
44
- const guidance = rest.join(" ").trim();
45
- return guidance ? { fraction: parsed, guidance } : { fraction: parsed };
46
- }
47
- return { fraction: DEFAULT_PRUNE_FRACTION, guidance: trimmed };
48
- }
49
- export function prepareSessionSmartPrunePrompt(args) {
50
- validatePruneFraction(args.fraction);
51
- if (args.fraction === 0 || args.historyEntries.length === 0) {
52
- return undefined;
53
- }
54
- const preparation = preparePruneCandidates(args.historyEntries, args.fraction);
55
- if (preparation.candidates.length === 0 || preparation.totalTokens === 0) {
56
- return undefined;
57
- }
58
- if (preparation.targetTokens <= 0) {
59
- return undefined;
60
- }
61
- return {
62
- prompt: buildSmartPrunePrompt({
63
- history: args.historyEntries.map((entry) => entry.message),
64
- targetTokens: preparation.targetTokens,
65
- guidance: args.guidance,
66
- }),
67
- targetTokens: preparation.targetTokens,
68
- };
69
- }
70
- export function buildSmartPruneSystemPrompt() {
71
- return [
72
- "You are a context pruning assistant.",
73
- "Your task is to select which bash tool outputs should be pruned from the conversation history.",
74
- "Analyze the conversation to understand what the user is working on and which tool outputs are most relevant.",
75
- "Prioritize keeping outputs that contain important information, errors, or results that may be referenced later.",
76
- "Prefer pruning outputs that are verbose, redundant, or contain routine information that can be regenerated if needed.",
77
- "Follow the user's guidance carefully when provided.",
78
- ].join(" ");
79
- }
80
- export function clampPruneReasoning(reasoning) {
81
- switch (reasoning) {
82
- case undefined:
83
- case "none":
84
- return undefined;
85
- case "minimal":
86
- return "low";
87
- case "low":
88
- case "medium":
89
- return reasoning;
90
- default:
91
- return "medium";
92
- }
93
- }
94
- export function parseSmartPruneResponse(raw) {
95
- const trimmed = raw.trim();
96
- if (!trimmed) {
97
- return [];
98
- }
99
- const fenced = extractAllFencedCodeBlocks(trimmed);
100
- const source = (fenced ?? trimmed).trim();
101
- const start = source.indexOf("{");
102
- const end = source.lastIndexOf("}");
103
- if (start === -1 || end === -1 || end < start) {
104
- return null;
105
- }
106
- const jsonText = source.slice(start, end + 1);
107
- let parsed;
108
- try {
109
- parsed = JSON.parse(jsonText);
110
- }
111
- catch {
112
- return null;
113
- }
114
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
115
- return null;
116
- }
117
- const prune = parsed.prune;
118
- if (!Array.isArray(prune) || prune.some((item) => typeof item !== "string")) {
119
- return null;
120
- }
121
- return prune;
122
- }
123
- export function pruneSessionHistory(args) {
124
- validatePruneFraction(args.options.fraction);
125
- if (args.options.fraction === 0) {
126
- return emptyPruneResult("prune fraction is 0, nothing to prune.");
127
- }
128
- if (args.historyEntries.length === 0) {
129
- return emptyPruneResult("no conversation to prune.");
130
- }
131
- const editSummary = pruneEditToolHistory(args.historyEntries, args.replaceMessageById);
132
- const preparation = preparePruneCandidates(args.historyEntries, args.options.fraction);
133
- const fallbackMessage = args.options.strategy === "smart" && args.options.smartSelection?.length === 0
134
- ? "model returned no prune candidates."
135
- : "no bash tool results or edit tool calls to prune.";
136
- if (preparation.candidates.length === 0 || preparation.totalTokens === 0) {
137
- return buildNoopOrEditResult(editSummary, fallbackMessage);
138
- }
139
- if (preparation.targetTokens <= 0) {
140
- return buildNoopOrEditResult(editSummary, "prune fraction is too small to remove anything.");
141
- }
142
- const toPrune = args.options.strategy === "smart"
143
- ? selectSmartPruneCandidates(args.options.smartSelection ?? [], preparation.candidates, preparation.targetTokens)
144
- : selectPruneCandidatesByStrategy(preparation, args.options.strategy);
145
- if (toPrune.length === 0) {
146
- return buildNoopOrEditResult(editSummary, fallbackMessage);
147
- }
148
- const applied = applyBashPruneCandidates(toPrune, args.replaceMessageById);
149
- const message = buildPruneSummaryMessage(editSummary, applied.resultsPruned, applied.bytesPruned);
150
- return {
151
- message,
152
- noop: false,
153
- bashResultsPruned: applied.resultsPruned,
154
- editCallsPruned: editSummary.callsPruned,
155
- editResultsPruned: editSummary.resultsPruned,
156
- bytesPruned: applied.bytesPruned + editSummary.bytesRemoved,
157
- prunedToolResults: [...editSummary.prunedToolResults, ...applied.prunedToolResults],
158
- };
159
- }
160
- function validatePruneFraction(fraction) {
161
- if (!Number.isFinite(fraction) || fraction < 0 || fraction > 1) {
162
- throw new Error("invalid prune fraction. use a number between 0 and 1.");
163
- }
164
- }
165
- function emptyPruneResult(message) {
166
- return {
167
- message,
168
- noop: true,
169
- bashResultsPruned: 0,
170
- editCallsPruned: 0,
171
- editResultsPruned: 0,
172
- bytesPruned: 0,
173
- prunedToolResults: [],
174
- };
175
- }
176
- function buildNoopOrEditResult(editSummary, fallbackMessage) {
177
- if (!hasAnyPrunedEditChanges(editSummary)) {
178
- return emptyPruneResult(fallbackMessage);
179
- }
180
- return {
181
- message: buildPruneSummaryMessage(editSummary),
182
- noop: false,
183
- bashResultsPruned: 0,
184
- editCallsPruned: editSummary.callsPruned,
185
- editResultsPruned: editSummary.resultsPruned,
186
- bytesPruned: editSummary.bytesRemoved,
187
- prunedToolResults: editSummary.prunedToolResults,
188
- };
189
- }
190
- function preparePruneCandidates(historyEntries, fraction) {
191
- const candidates = [];
192
- let totalTokens = 0;
193
- for (const entry of historyEntries) {
194
- const message = entry.message;
195
- if (message.role !== "toolResult") {
196
- continue;
197
- }
198
- const toolResult = message;
199
- if (toolResult.toolName !== TOOL_NAME_BASH) {
200
- continue;
201
- }
202
- const inspection = inspectToolResultContent(toolResult);
203
- if (inspection.firstText?.startsWith(PRUNED_TOOL_RESULT_PREFIX) || inspection.hasImage) {
204
- continue;
205
- }
206
- const tokens = bytesToTokens(inspection.textBytes);
207
- candidates.push({
208
- historyEntryId: entry.id,
209
- toolResult,
210
- bytes: inspection.textBytes,
211
- tokens,
212
- order: candidates.length,
213
- });
214
- totalTokens += tokens;
215
- }
216
- return {
217
- candidates,
218
- totalTokens,
219
- targetTokens: Math.ceil(totalTokens * fraction),
220
- };
221
- }
222
- function selectPruneCandidatesByStrategy(preparation, strategy) {
223
- const ordered = strategy === "largest"
224
- ? [...preparation.candidates].sort((a, b) => b.tokens - a.tokens || b.bytes - a.bytes || a.order - b.order)
225
- : preparation.candidates;
226
- const selected = [];
227
- let selectedTokens = 0;
228
- for (const candidate of ordered) {
229
- if (selectedTokens >= preparation.targetTokens) {
230
- break;
231
- }
232
- selected.push(candidate);
233
- selectedTokens += candidate.tokens;
234
- }
235
- return selected;
236
- }
237
- function selectSmartPruneCandidates(ids, candidates, targetTokens) {
238
- const candidatesById = new Map();
239
- for (const candidate of candidates) {
240
- candidatesById.set(candidate.toolResult.toolCallId, candidate);
241
- }
242
- const selected = [];
243
- const seen = new Set();
244
- let tokens = 0;
245
- const maxTokens = Math.ceil(targetTokens * (1 + PRUNE_MAX_OVERAGE_RATIO));
246
- for (const id of ids) {
247
- if (seen.has(id))
248
- continue;
249
- const candidate = candidatesById.get(id);
250
- if (!candidate)
251
- continue;
252
- if (tokens + candidate.tokens > maxTokens)
253
- continue;
254
- selected.push(candidate);
255
- seen.add(id);
256
- tokens += candidate.tokens;
257
- if (tokens >= targetTokens) {
258
- break;
259
- }
260
- }
261
- return selected;
262
- }
263
- function applyBashPruneCandidates(candidates, replaceMessageById) {
264
- let bytesPruned = 0;
265
- const prunedToolResults = [];
266
- for (const candidate of candidates) {
267
- bytesPruned += candidate.bytes;
268
- const noticeText = buildPrunedToolResultNotice(candidate.toolResult, candidate.bytes);
269
- const prunedResult = {
270
- ...candidate.toolResult,
271
- content: [{ type: "text", text: noticeText }],
272
- };
273
- replacePrunedMessageOrThrow(replaceMessageById, candidate.historyEntryId, prunedResult, "bash tool result");
274
- prunedToolResults.push({ toolCallId: prunedResult.toolCallId, content: noticeText });
275
- }
276
- return { resultsPruned: candidates.length, bytesPruned, prunedToolResults };
277
- }
278
- function hasAnyPrunedEditChanges(summary) {
279
- return summary.callsPruned > 0 || summary.resultsPruned > 0;
280
- }
281
- function buildPruneSummaryMessage(editSummary, bashResultsPruned = 0, bashBytesPruned = 0) {
282
- const editSummaryText = formatPrunedEditSummary(editSummary);
283
- if (bashResultsPruned <= 0) {
284
- if (!editSummaryText) {
285
- return "no bash tool results or edit tool calls to prune.";
286
- }
287
- return `pruned ${editSummaryText}.`;
288
- }
289
- const bashLabel = formatTokenEstimate(bashBytesPruned);
290
- const bashNoun = bashResultsPruned === 1 ? "result" : "results";
291
- if (!editSummaryText) {
292
- return `pruned ${bashResultsPruned} bash tool ${bashNoun} (${bashLabel}).`;
293
- }
294
- return `pruned ${bashResultsPruned} bash tool ${bashNoun} (${bashLabel}) and ${editSummaryText}.`;
295
- }
296
- function formatPrunedEditSummary(summary) {
297
- if (!hasAnyPrunedEditChanges(summary)) {
298
- return "";
299
- }
300
- const parts = [];
301
- if (summary.callsPruned > 0) {
302
- const noun = summary.callsPruned === 1 ? "call" : "calls";
303
- parts.push(`${summary.callsPruned} edit tool ${noun}`);
304
- }
305
- if (summary.resultsPruned > 0) {
306
- const noun = summary.resultsPruned === 1 ? "result" : "results";
307
- parts.push(`${summary.resultsPruned} edit tool ${noun}`);
308
- }
309
- const tokenEstimate = formatTokenEstimate(summary.bytesRemoved);
310
- return `${parts.join(" and ")} (${tokenEstimate})`;
311
- }
312
- function pruneEditToolHistory(historyEntries, replaceMessageById) {
313
- const summary = {
314
- callsPruned: 0,
315
- resultsPruned: 0,
316
- bytesRemoved: 0,
317
- prunedToolResults: [],
318
- };
319
- const editCallsById = new Map();
320
- for (const entry of historyEntries) {
321
- const message = entry.message;
322
- if (message.role !== "assistant") {
323
- continue;
324
- }
325
- const assistant = message;
326
- const assistantContent = getAssistantContentOrThrow(assistant, "pruning edit tool calls");
327
- let changed = false;
328
- const nextContent = assistantContent.map((block) => {
329
- if (block.type !== "toolCall") {
330
- return block;
331
- }
332
- const toolCall = block;
333
- if (toolCall.name !== TOOL_NAME_EDIT) {
334
- return block;
335
- }
336
- const args = toolCall.arguments;
337
- if (!args || typeof args !== "object" || Array.isArray(args)) {
338
- return block;
339
- }
340
- const { oldText, newText } = args;
341
- if (typeof oldText !== "string" || typeof newText !== "string") {
342
- return block;
343
- }
344
- if (oldText === PRUNED_EDIT_ARGUMENT_MARKER && newText === PRUNED_EDIT_ARGUMENT_MARKER) {
345
- return block;
346
- }
347
- changed = true;
348
- summary.callsPruned += 1;
349
- const oldBytes = Buffer.byteLength(oldText, "utf8");
350
- const newBytes = Buffer.byteLength(newText, "utf8");
351
- const markerBytes = Buffer.byteLength(PRUNED_EDIT_ARGUMENT_MARKER, "utf8") * 2;
352
- summary.bytesRemoved += Math.max(0, oldBytes + newBytes - markerBytes);
353
- editCallsById.set(toolCall.id, { oldText, newText });
354
- return {
355
- ...toolCall,
356
- arguments: {
357
- ...args,
358
- oldText: PRUNED_EDIT_ARGUMENT_MARKER,
359
- newText: PRUNED_EDIT_ARGUMENT_MARKER,
360
- },
361
- };
362
- });
363
- if (changed) {
364
- replacePrunedMessageOrThrow(replaceMessageById, entry.id, { ...assistant, content: nextContent }, "edit tool call");
365
- }
366
- }
367
- if (editCallsById.size === 0) {
368
- return summary;
369
- }
370
- for (const entry of historyEntries) {
371
- const message = entry.message;
372
- if (message.role !== "toolResult") {
373
- continue;
374
- }
375
- const toolResult = message;
376
- if (toolResult.toolName !== TOOL_NAME_EDIT) {
377
- continue;
378
- }
379
- if (toolResult.isError) {
380
- continue;
381
- }
382
- const callDiff = editCallsById.get(toolResult.toolCallId);
383
- if (!callDiff) {
384
- continue;
385
- }
386
- const inspection = inspectToolResultContent(toolResult);
387
- if (inspection.firstText?.startsWith(PRUNED_EDIT_RESULT_PREFIX)) {
388
- continue;
389
- }
390
- const prunedText = buildPrunedEditToolResult(callDiff);
391
- const prunedResult = {
392
- ...toolResult,
393
- content: [{ type: "text", text: prunedText }],
394
- };
395
- replacePrunedMessageOrThrow(replaceMessageById, entry.id, prunedResult, "edit tool result");
396
- summary.prunedToolResults.push({ toolCallId: prunedResult.toolCallId, content: prunedText });
397
- summary.resultsPruned += 1;
398
- }
399
- return summary;
400
- }
401
- function replacePrunedMessageOrThrow(replaceMessageById, historyEntryId, message, label) {
402
- if (!replaceMessageById(historyEntryId, message)) {
403
- throw new Error(`failed to replace pruned ${label} '${historyEntryId}'`);
404
- }
405
- }
406
- function getAssistantContentOrThrow(assistant, context) {
407
- if (!Array.isArray(assistant.content)) {
408
- throw new Error(`invalid assistant message content while ${context}`);
409
- }
410
- return assistant.content;
411
- }
412
- function buildPrunedEditToolResult(diff) {
413
- const diffText = buildPrunedEditDiff(diff.oldText, diff.newText);
414
- return `${PRUNED_EDIT_RESULT_PREFIX}\n${diffText}`;
415
- }
416
- function buildPrunedEditDiff(oldText, newText) {
417
- const diff = buildLineDiff(oldText, newText);
418
- if (diff.added === 0 && diff.removed === 0) {
419
- return "(No textual changes)";
420
- }
421
- const collapsed = collapseLongUnchangedDiffRuns({
422
- diffLines: diff.lines,
423
- maxUnchangedLines: PRUNE_EDIT_UNCHANGED_CONTEXT_LINES,
424
- });
425
- return collapsed.length > 0 ? collapsed.join("\n") : "(No textual changes)";
426
- }
427
- function buildPrunedToolResultNotice(toolResult, bytes) {
428
- const tokenEstimate = formatTokenEstimate(bytes);
429
- return `${PRUNED_TOOL_RESULT_PREFIX} ${toolResult.toolName} output removed (${tokenEstimate}). Re-run the command if needed.`;
430
- }
431
- function inspectToolResultContent(toolResult) {
432
- const parts = [];
433
- let textBytes = 0;
434
- let hasImage = false;
435
- let firstText;
436
- for (const block of toolResult.content) {
437
- if (block.type === "text") {
438
- if (firstText === undefined) {
439
- firstText = block.text;
440
- }
441
- parts.push(block.text);
442
- textBytes += Buffer.byteLength(block.text, "utf8");
443
- continue;
444
- }
445
- if (block.type === "image") {
446
- hasImage = true;
447
- }
448
- }
449
- return {
450
- text: parts.join("\n").trimEnd(),
451
- textBytes,
452
- hasImage,
453
- firstText,
454
- };
455
- }
456
- function buildSmartPrunePrompt(args) {
457
- const lines = [];
458
- lines.push(`Target pruning token budget: ${args.targetTokens}`);
459
- lines.push([
460
- "The budget is the total tokens to prune.",
461
- "It is better to slightly exceed it than to be significantly below it.",
462
- ].join(" "));
463
- lines.push('Return only JSON: {"prune":[...]} with tool_call_id values from the conversation history.');
464
- lines.push("Only include tool_call_id values for bash tool results.");
465
- if (args.guidance?.trim()) {
466
- lines.push(`Guidance (prioritize this): ${args.guidance.trim()}`);
467
- }
468
- else {
469
- lines.push("Guidance: (none provided, use your best judgment)");
470
- }
471
- lines.push("");
472
- lines.push("Conversation history:");
473
- lines.push("<conversation>");
474
- lines.push(...formatPruneConversationHistory(args.history));
475
- lines.push("</conversation>");
476
- return lines.join("\n");
477
- }
478
- function formatPruneConversationHistory(history) {
479
- const lines = [];
480
- for (const message of history) {
481
- if (message.role === "user") {
482
- lines.push("<user>");
483
- appendPruneUserContentLines(lines, message.content);
484
- lines.push("</user>");
485
- lines.push("");
486
- continue;
487
- }
488
- if (message.role === "assistant") {
489
- lines.push("<assistant>");
490
- const assistant = message;
491
- const assistantContent = getAssistantContentOrThrow(assistant, "building smart prune prompt");
492
- for (const block of assistantContent) {
493
- if (block.type === "text") {
494
- appendPruneText(lines, block.text);
495
- continue;
496
- }
497
- if (block.type === "toolCall") {
498
- const toolCall = block;
499
- lines.push(buildPruneToolCallTag(toolCall));
500
- }
501
- }
502
- lines.push("</assistant>");
503
- lines.push("");
504
- continue;
505
- }
506
- if (message.role === "toolResult") {
507
- const toolResult = message;
508
- lines.push(...buildPruneToolResultLines(toolResult));
509
- lines.push("");
510
- }
511
- }
512
- if (lines[lines.length - 1] === "") {
513
- lines.pop();
514
- }
515
- return lines;
516
- }
517
- function appendPruneUserContentLines(lines, content) {
518
- if (typeof content === "string") {
519
- appendPruneText(lines, stripTauUserMetadata(content));
520
- return;
521
- }
522
- if (!Array.isArray(content)) {
523
- return;
524
- }
525
- for (const block of content) {
526
- if (block.type === "text") {
527
- appendPruneText(lines, stripTauUserMetadata(block.text));
528
- }
529
- }
530
- }
531
- function appendPruneText(lines, text) {
532
- const escaped = escapeXml(text);
533
- const parts = escaped.split(/\r?\n/);
534
- for (const part of parts) {
535
- lines.push(part);
536
- }
537
- }
538
- function buildPruneToolCallTag(toolCall) {
539
- const name = escapeXmlAttribute(toolCall.name);
540
- const id = escapeXmlAttribute(toolCall.id);
541
- const argsValue = JSON.stringify(toolCall.arguments);
542
- const args = escapeXmlAttribute(argsValue);
543
- return `<tool-call name="${name}" id="${id}" args="${args}" />`;
544
- }
545
- function buildPruneToolResultLines(toolResult) {
546
- const lines = [];
547
- const name = escapeXmlAttribute(toolResult.toolName);
548
- const toolCallId = escapeXmlAttribute(toolResult.toolCallId);
549
- const inspection = inspectToolResultContent(toolResult);
550
- if (inspection.hasImage) {
551
- lines.push(`<tool-result name="${name}" tool_call_id="${toolCallId}">`);
552
- lines.push("<preview>[image omitted]</preview>");
553
- lines.push("</tool-result>");
554
- return lines;
555
- }
556
- const preview = buildPruneToolResultPreview(inspection.text);
557
- lines.push(`<tool-result name="${name}" tool_call_id="${toolCallId}" total_tokens="${preview.totalTokens}">`);
558
- lines.push(`<preview max_tokens="${PRUNE_PREVIEW_MAX_TOKENS}">`);
559
- lines.push(...preview.lines);
560
- lines.push("</preview>");
561
- lines.push("</tool-result>");
562
- return lines;
563
- }
564
- function buildPruneToolResultPreview(text) {
565
- const normalized = text.trimEnd();
566
- const totalBytes = Buffer.byteLength(normalized, "utf8");
567
- const totalTokens = bytesToTokens(totalBytes);
568
- if (totalTokens <= PRUNE_PREVIEW_MAX_TOKENS) {
569
- const escaped = escapeXml(normalized);
570
- const lines = escaped ? escaped.split(/\r?\n/) : [""];
571
- return { lines, totalTokens };
572
- }
573
- const head = truncateToBytesFromStart(normalized, tokensToBytes(PRUNE_PREVIEW_MAX_TOKENS));
574
- const remainingTokens = Math.max(0, totalTokens - PRUNE_PREVIEW_MAX_TOKENS);
575
- const suffix = `...${remainingTokens} more tokens...`;
576
- const previewText = head.endsWith("\n") || head === "" ? `${head}${suffix}` : `${head}\n${suffix}`;
577
- const escaped = escapeXml(previewText);
578
- const lines = escaped ? escaped.split(/\r?\n/) : [""];
579
- return { lines, totalTokens };
580
- }
581
- function escapeXml(text) {
582
- return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
583
- }
584
- function escapeXmlAttribute(text) {
585
- return escapeXml(text).replace(/"/g, "&quot;").replace(/'/g, "&apos;");
586
- }
587
- //# sourceMappingURL=pruning.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pruning.js","sourceRoot":"","sources":["../../../src/core/session/pruning.ts"],"names":[],"mappings":"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"}