@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.
- package/README.md +15 -20
- package/dist/core/agent/agent_runtime.js +1551 -0
- package/dist/core/agent/agent_runtime.js.map +1 -0
- package/dist/core/agent/events.js +2 -0
- package/dist/core/agent/events.js.map +1 -0
- package/dist/core/commands/registry.js +0 -42
- package/dist/core/commands/registry.js.map +1 -1
- package/dist/core/config/content_loader.js +7 -3
- package/dist/core/config/content_loader.js.map +1 -1
- package/dist/core/index.js +3 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/models/catalog.js +7 -1
- package/dist/core/models/catalog.js.map +1 -1
- package/dist/core/models/tau_model_overrides.js +10 -0
- package/dist/core/models/tau_model_overrides.js.map +1 -0
- package/dist/core/modes/index.js.map +1 -1
- package/dist/core/personas.js +4 -2
- package/dist/core/personas.js.map +1 -1
- package/dist/core/runtime/agent_model.js +50 -0
- package/dist/core/runtime/agent_model.js.map +1 -0
- package/dist/core/runtime/chat_runtime.js +175 -63
- package/dist/core/runtime/chat_runtime.js.map +1 -1
- package/dist/core/runtime/model_executor.js +2 -0
- package/dist/core/runtime/model_executor.js.map +1 -0
- package/dist/core/runtime/model_sampler.js +21 -0
- package/dist/core/runtime/model_sampler.js.map +1 -0
- package/dist/core/session/auto_compaction_archive.js +239 -0
- package/dist/core/session/auto_compaction_archive.js.map +1 -0
- package/dist/core/session/compaction.js +97 -29
- package/dist/core/session/compaction.js.map +1 -1
- package/dist/core/session/direct_bash.js.map +1 -1
- package/dist/core/session/message_accumulator.js +3 -5
- package/dist/core/session/message_accumulator.js.map +1 -1
- package/dist/core/session/runner.js +274 -102
- package/dist/core/session/runner.js.map +1 -1
- package/dist/core/subagents/agent_supervisor.js +378 -0
- package/dist/core/subagents/agent_supervisor.js.map +1 -0
- package/dist/core/subagents/format.js +101 -0
- package/dist/core/subagents/format.js.map +1 -0
- package/dist/core/subagents/registry.js +3 -1
- package/dist/core/subagents/registry.js.map +1 -1
- package/dist/core/subagents/types.js +1 -0
- package/dist/core/subagents/types.js.map +1 -1
- package/dist/core/tools/activity.js +2 -0
- package/dist/core/tools/activity.js.map +1 -0
- package/dist/core/tools/bash.js +64 -67
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/catalog.js +49 -25
- package/dist/core/tools/catalog.js.map +1 -1
- package/dist/core/tools/code_mode.js +65 -58
- package/dist/core/tools/code_mode.js.map +1 -1
- package/dist/core/tools/edit.js +11 -12
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/interrupt_agent.js +119 -0
- package/dist/core/tools/interrupt_agent.js.map +1 -0
- package/dist/core/tools/list_agents.js +64 -0
- package/dist/core/tools/list_agents.js.map +1 -0
- package/dist/core/tools/nook.js +3 -2
- package/dist/core/tools/nook.js.map +1 -1
- package/dist/core/tools/registry.js +27 -13
- package/dist/core/tools/registry.js.map +1 -1
- package/dist/core/tools/send_input_to_agent.js +77 -93
- package/dist/core/tools/send_input_to_agent.js.map +1 -1
- package/dist/core/tools/spawn_agent.js +94 -114
- package/dist/core/tools/spawn_agent.js.map +1 -1
- package/dist/core/tools/tool_names.js +4 -2
- package/dist/core/tools/tool_names.js.map +1 -1
- package/dist/core/tools/view_image.js +11 -16
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/tools/wait_for_agents.js +76 -137
- package/dist/core/tools/wait_for_agents.js.map +1 -1
- package/dist/core/tools/web.js +3 -3
- package/dist/core/tools/web.js.map +1 -1
- package/dist/core/tools/write.js +10 -11
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/usage/logs.js.map +1 -1
- package/dist/core/utils/compact.js +19 -10
- package/dist/core/utils/compact.js.map +1 -1
- package/dist/core/utils/subagent_utils.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/diff_tool/app/dist/assets/actionscript-3-Cs6JJXT5.js +1 -0
- package/dist/diff_tool/app/dist/assets/ahk-CA9gdOdF.js +1 -0
- package/dist/diff_tool/app/dist/assets/ahk2-_6rzW9BS.js +1 -0
- package/dist/diff_tool/app/dist/assets/{angular-html-DbgxQryr.js → angular-html-vSIwre92.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-ts-Dzjq8SvI.js → angular-ts-B9yWa-IT.js} +1 -1
- package/dist/diff_tool/app/dist/assets/apex-KFGFyKwG.js +1 -0
- package/dist/diff_tool/app/dist/assets/{apl-6AmEMJr-.js → apl-CBg9ewu1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/asciidoc-SCjQUq34.js +1 -0
- package/dist/diff_tool/app/dist/assets/{astro-BM8EbfIg.js → astro-BVjxSYjj.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{bat-Bo4NYOV-.js → bat-qdxAdBWQ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/bird2-CYIUgYqB.js +1 -0
- package/dist/diff_tool/app/dist/assets/{blade-DiKMnN3e.js → blade-jvqV5kiv.js} +1 -1
- package/dist/diff_tool/app/dist/assets/bsl-_VjlB9mv.js +1 -0
- package/dist/diff_tool/app/dist/assets/{c-DMT5X-u9.js → c-DDAfW08c.js} +1 -1
- package/dist/diff_tool/app/dist/assets/c3-D0apG41V.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-frappe-C9Q5zVZY.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-latte-CtsyrtPq.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-macchiato-R8nAf1vR.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-mocha-DjuaAJKi.js +1 -0
- package/dist/diff_tool/app/dist/assets/chapel-Qflwfgbt.js +1 -0
- package/dist/diff_tool/app/dist/assets/clarity-CtfBBspg.js +1 -0
- package/dist/diff_tool/app/dist/assets/{cobol-CACNMc1O.js → cobol-4iJI1LUg.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{coffee-D_WUFE0g.js → coffee-C9LbGGO3.js} +1 -1
- package/dist/diff_tool/app/dist/assets/coq-DuBRPxYg.js +1 -0
- package/dist/diff_tool/app/dist/assets/cpp-B-x6veTx.js +1 -0
- package/dist/diff_tool/app/dist/assets/{crystal-wh93mtUe.js → crystal-S06EUmKn.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{css-CCfuUqEr.js → css-DA4RYriG.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{edge-DP-spcJf.js → edge-7dx6BjGp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elixir-BXBkaEtJ.js → elixir-DPywG97a.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elm-BXr8OwKP.js → elm-Dgo_WnqC.js} +1 -1
- package/dist/diff_tool/app/dist/assets/emacs-lisp-c_oH4hRZ.js +1 -0
- package/dist/diff_tool/app/dist/assets/{erb-Cu5Zacs_.js → erb-CVW4PjFl.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{gdresource-C0sCabJj.js → gdresource-xMC7jr7x.js} +1 -1
- package/dist/diff_tool/app/dist/assets/gdscript-DYvRD3hg.js +1 -0
- package/dist/diff_tool/app/dist/assets/{git-rebase-DO8LWld4.js → git-rebase-CtU0gmBJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-js-Bh-OAIDW.js → glimmer-js-twAYiPP2.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-ts-DI9lHU4q.js → glimmer-ts-BfNoXayN.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glsl--zoY4RCO.js → glsl-D_XrtFF7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{graphql-C8h2T_SC.js → graphql-B_GeapzM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/hack-BCaCVoSX.js +1 -0
- package/dist/diff_tool/app/dist/assets/{haml-C2BBBsDW.js → haml-z9Mz7I1O.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{handlebars-cZMztphK.js → handlebars-D0FVYagc.js} +1 -1
- package/dist/diff_tool/app/dist/assets/haxe-C8oCnwJJ.js +1 -0
- package/dist/diff_tool/app/dist/assets/{html-BtccomkJ.js → html-BOM4tb7u.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-derivative-qjeUe52-.js → html-derivative-CsSlhJgr.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{http-Dv8OQO33.js → http-Cjy9oaQn.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hurl-B6Fnr2ae.js → hurl-CjLQ7ql5.js} +1 -1
- package/dist/diff_tool/app/dist/assets/hxml-Dcm88srW.js +1 -0
- package/dist/diff_tool/app/dist/assets/index-QO81yN6b.js +1550 -0
- package/dist/diff_tool/app/dist/assets/{java-BuadWMcp.js → java-cn8DiFD8.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{javascript-BIKxmHeL.js → javascript-CEnHZaZM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jinja-Cm_guvgu.js → jinja-DIp6kVk7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jison-Sst29gJb.js → jison-Dx116ito.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{json-Bg6l2vym.js → json-C6B9h0n5.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jsx-BiREAxkr.js → jsx-CDEGT2B2.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{julia-DAhrWFzr.js → julia-CsIJA3Km.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{just-xBwbf5aT.js → just-DZRYvkQw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/kanagawa-dragon-Bozd7klA.js +1 -0
- package/dist/diff_tool/app/dist/assets/kanagawa-lotus-BmuOG9ZW.js +1 -0
- package/dist/diff_tool/app/dist/assets/kanagawa-wave-BML5mF2J.js +1 -0
- package/dist/diff_tool/app/dist/assets/latex-CeR-RQOI.js +1 -0
- package/dist/diff_tool/app/dist/assets/{liquid-BTsCzVvF.js → liquid-Dhf8N4mn.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{llvm-Cm23YOpf.js → llvm-DqHOMS-s.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{lua-BJt9x0JP.js → lua-zVTVaJzn.js} +1 -1
- package/dist/diff_tool/app/dist/assets/luau-C2pBCSgt.js +1 -0
- package/dist/diff_tool/app/dist/assets/{marko-CWdJkbvC.js → marko-BGPq5r3o.js} +1 -1
- package/dist/diff_tool/app/dist/assets/mdc-D8K78bym.js +1 -0
- package/dist/diff_tool/app/dist/assets/mermaid-BxpfTIzt.js +1 -0
- package/dist/diff_tool/app/dist/assets/mojo-CFuIV2fl.js +1 -0
- package/dist/diff_tool/app/dist/assets/monokai-B_bV9PQ9.js +1 -0
- package/dist/diff_tool/app/dist/assets/moonbit-DgjMoLWr.js +1 -0
- package/dist/diff_tool/app/dist/assets/move-BYnGhZoM.js +1 -0
- package/dist/diff_tool/app/dist/assets/{nginx-BwS0G4IK.js → nginx-Bo-bEa75.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nim-B2VFbcs9.js → nim-Bfy5M54r.js} +1 -1
- package/dist/diff_tool/app/dist/assets/nsis-CjNLYCLg.js +1 -0
- package/dist/diff_tool/app/dist/assets/nushell-DHYfO66s.js +1 -0
- package/dist/diff_tool/app/dist/assets/org-BKetN7sT.js +1 -0
- package/dist/diff_tool/app/dist/assets/{perl-BTeqR-l8.js → perl-WiwTOQTV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{php-Crua7nbA.js → php-CM2FzhGV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{powershell-DshXNtvi.js → powershell-CCSX75yM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/prisma-DMgNhnYS.js +1 -0
- package/dist/diff_tool/app/dist/assets/{pug-CUlgPjMU.js → pug-D2WvUHZ-.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{qml-DI0IjNUw.js → qml-DGPbc6TL.js} +1 -1
- package/dist/diff_tool/app/dist/assets/r-CCFYJ_KM.js +1 -0
- package/dist/diff_tool/app/dist/assets/{razor-DrkKtFm5.js → razor-D1JuQWQz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/rbs-C0MpOrj4.js +1 -0
- package/dist/diff_tool/app/dist/assets/red-DX1BQOs8.js +1 -0
- package/dist/diff_tool/app/dist/assets/{regexp-DRmxJil7.js → regexp-zTiHwMow.js} +1 -1
- package/dist/diff_tool/app/dist/assets/rose-pine-aMsaMD1D.js +1 -0
- package/dist/diff_tool/app/dist/assets/rose-pine-dawn-8PwUyIlP.js +1 -0
- package/dist/diff_tool/app/dist/assets/rose-pine-moon-DO-qXg-I.js +1 -0
- package/dist/diff_tool/app/dist/assets/{rst-DiRke36z.js → rst-CuUAArfH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ruby-t7r9jzAg.js → ruby-DznrLCoG.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sas-CR7Z4kg-.js → sas-D2hJmLva.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{scala-DKOlJaKm.js → scala-BiFt_7mu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{scss--CnPWaDv.js → scss-Cjb3p_6n.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellscript-Bz7H5174.js → shellscript-BtwI-tfX.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellsession-mlKnHJfN.js → shellsession-BYirS1xP.js} +1 -1
- package/dist/diff_tool/app/dist/assets/smalltalk-BHpQb5nM.js +1 -0
- package/dist/diff_tool/app/dist/assets/smithy-Dgaz7aur.js +1 -0
- package/dist/diff_tool/app/dist/assets/solarized-dark-UdsmMDCL.js +1 -0
- package/dist/diff_tool/app/dist/assets/solarized-light-C1IUL_tW.js +1 -0
- package/dist/diff_tool/app/dist/assets/solidity-Bj7E1mRn.js +1 -0
- package/dist/diff_tool/app/dist/assets/{soy-CKu9y9G1.js → soy-D4Ndk7-j.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sql-DcvKi3Jj.js → sql-DbLQ5SJl.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{stata-Yo25QZyV.js → stata-BXoNBosJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/surrealql-toyTYnAL.js +1 -0
- package/dist/diff_tool/app/dist/assets/{svelte-BIhEVbnP.js → svelte-BEpa7pAW.js} +1 -1
- package/dist/diff_tool/app/dist/assets/swift-CyEgAFGc.js +1 -0
- package/dist/diff_tool/app/dist/assets/system-verilog-Dh5ihWbf.js +1 -0
- package/dist/diff_tool/app/dist/assets/{templ-D6FrV4mZ.js → templ-CZfW_RJI.js} +1 -1
- package/dist/diff_tool/app/dist/assets/tex-COemmIIu.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-B5HubD5i.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-BTK0wyKj.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-BTUlzJFw.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-BURFlYfV.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-BVZjihoZ.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-BWSkzMBn.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-BchIqPOb.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-CeLfRn2P.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-DMjwMSwU.js +1 -0
- package/dist/diff_tool/app/dist/assets/theming-QWGGdlwd.js +1 -0
- package/dist/diff_tool/app/dist/assets/{ts-tags-Kqn1PP6m.js → ts-tags-CMVUY_BA.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tsx-L3TEJWGL.js → tsx-BTvP6uzd.js} +1 -1
- package/dist/diff_tool/app/dist/assets/twig-DzP5RjJc.js +1 -0
- package/dist/diff_tool/app/dist/assets/{typescript-Dvc5RX4H.js → typescript-CQaGlMoX.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{v-DETTlOr0.js → v-DBj4K9d_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vb-Djn5o6TS.js → vb-DOwzaHZ0.js} +1 -1
- package/dist/diff_tool/app/dist/assets/verilog-B2gwz-sJ.js +1 -0
- package/dist/diff_tool/app/dist/assets/{vue-X1uI3I2A.js → vue-DaVWTtvb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-html-BMpHEoeQ.js → vue-html-BA_OH0Xt.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-vine-DnTGaA4r.js → vue-vine-C_H4XbNR.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xml-QlPQXP0d.js → xml-1JLzpunp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xsl-JpRU16Li.js → xsl-GtZi0Erj.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{yaml-Djukn3_s.js → yaml-LueTtDDo.js} +1 -1
- package/dist/diff_tool/app/dist/index.html +1 -1
- package/dist/execution/execution_environment.js.map +1 -1
- package/dist/execution/tool_backend_execution_environment.js +1 -7
- package/dist/execution/tool_backend_execution_environment.js.map +1 -1
- package/dist/host/client_tool_broker.js +28 -21
- package/dist/host/client_tool_broker.js.map +1 -1
- package/dist/host/hosted_ephemeral_agent_session.js +109 -167
- package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
- package/dist/host/local_session_host.js +340 -248
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/host/session_host.js.map +1 -1
- package/dist/host/session_protocol_handler.js +125 -105
- package/dist/host/session_protocol_handler.js.map +1 -1
- package/dist/main.js +10 -2
- package/dist/main.js.map +1 -1
- package/dist/protocol/index.d.ts +1 -1
- package/dist/protocol/session_protocol.d.ts +70 -36
- package/dist/protocol/session_protocol.js +235 -80
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/session.js +8 -25
- package/dist/sdk/session.js.map +1 -1
- package/dist/sdk/types.d.ts +4 -9
- package/dist/starter/prompts/approval-review-branch.md +7 -0
- package/dist/starter/prompts/approval-review-current-changes.md +7 -0
- package/dist/starter/prompts/approval-review-last-commit.md +7 -0
- package/dist/starter/skills/approval-review/SKILL.md +219 -0
- package/dist/store/file_session_store.js +13 -9
- package/dist/store/file_session_store.js.map +1 -1
- package/dist/store/session_snapshot_migrations.js +152 -0
- package/dist/store/session_snapshot_migrations.js.map +1 -0
- package/dist/tui/chat_controller/command_hints.js +0 -6
- package/dist/tui/chat_controller/command_hints.js.map +1 -1
- package/dist/tui/chat_view.js +19 -12
- package/dist/tui/chat_view.js.map +1 -1
- package/dist/tui/session_chat_app.js +0 -8
- package/dist/tui/session_chat_app.js.map +1 -1
- package/dist/tui/session_chat_controller.js +122 -178
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/dist/tui/tool_ui_router.js +12 -226
- package/dist/tui/tool_ui_router.js.map +1 -1
- package/dist/tui/ui/bash_execution.js +3 -3
- package/dist/tui/ui/bash_execution.js.map +1 -1
- package/dist/tui/ui/chat_message_model.js +2 -2
- package/dist/tui/ui/chat_message_model.js.map +1 -1
- package/dist/tui/ui/subagent_panel.js +59 -26
- package/dist/tui/ui/subagent_panel.js.map +1 -1
- package/dist/tui/ui/tool_ui_model.js +2 -0
- package/dist/tui/ui/tool_ui_model.js.map +1 -0
- package/dist/tui/ui/tool_ui_registry.js +310 -36
- package/dist/tui/ui/tool_ui_registry.js.map +1 -1
- package/package.json +4 -4
- package/dist/core/events/types.js +0 -2
- package/dist/core/events/types.js.map +0 -1
- package/dist/core/modes/mode_adapter.js +0 -2
- package/dist/core/modes/mode_adapter.js.map +0 -1
- package/dist/core/runtime/conversation_turn_runtime.js +0 -88
- package/dist/core/runtime/conversation_turn_runtime.js.map +0 -1
- package/dist/core/session/core_session.js +0 -86
- package/dist/core/session/core_session.js.map +0 -1
- package/dist/core/session/pruning.js +0 -587
- package/dist/core/session/pruning.js.map +0 -1
- package/dist/core/session/session_engine.js +0 -1246
- package/dist/core/session/session_engine.js.map +0 -1
- package/dist/core/subagents/control_plane.js +0 -339
- package/dist/core/subagents/control_plane.js.map +0 -1
- package/dist/core/subagents/subagent_engine.js +0 -258
- package/dist/core/subagents/subagent_engine.js.map +0 -1
- package/dist/core/tools/terminate_agent.js +0 -162
- package/dist/core/tools/terminate_agent.js.map +0 -1
- package/dist/diff_tool/app/dist/assets/actionscript-3--17pq3dv.js +0 -1
- package/dist/diff_tool/app/dist/assets/apex-VAyPSnFM.js +0 -1
- package/dist/diff_tool/app/dist/assets/asciidoc-DE70LPWp.js +0 -1
- package/dist/diff_tool/app/dist/assets/bird2-C6vDhewU.js +0 -1
- package/dist/diff_tool/app/dist/assets/bsl-BkkzgIyY.js +0 -1
- package/dist/diff_tool/app/dist/assets/c3-BFHwR3_K.js +0 -1
- package/dist/diff_tool/app/dist/assets/catppuccin-frappe-3VR1Za6u.js +0 -1
- package/dist/diff_tool/app/dist/assets/catppuccin-latte-DwIHMF0Q.js +0 -1
- package/dist/diff_tool/app/dist/assets/catppuccin-macchiato-DYnBP6_5.js +0 -1
- package/dist/diff_tool/app/dist/assets/catppuccin-mocha-DYhrFGRu.js +0 -1
- package/dist/diff_tool/app/dist/assets/clarity-SemFz856.js +0 -1
- package/dist/diff_tool/app/dist/assets/coq-BrsZFFmf.js +0 -1
- package/dist/diff_tool/app/dist/assets/cpp-BcU9r9kv.js +0 -1
- package/dist/diff_tool/app/dist/assets/emacs-lisp-B4R74twV.js +0 -1
- package/dist/diff_tool/app/dist/assets/gdscript-Cp2uCuqX.js +0 -1
- package/dist/diff_tool/app/dist/assets/hack-DAsjGmmw.js +0 -1
- package/dist/diff_tool/app/dist/assets/haxe-OTjmBuCE.js +0 -1
- package/dist/diff_tool/app/dist/assets/hxml-B0Qn7Nwc.js +0 -1
- package/dist/diff_tool/app/dist/assets/index-U7G4V3LV.js +0 -1579
- package/dist/diff_tool/app/dist/assets/kanagawa-dragon-CXtmUGW6.js +0 -1
- package/dist/diff_tool/app/dist/assets/kanagawa-lotus-BN08jTvb.js +0 -1
- package/dist/diff_tool/app/dist/assets/kanagawa-wave-CTweb8Dz.js +0 -1
- package/dist/diff_tool/app/dist/assets/latex-Bydg2zYo.js +0 -1
- package/dist/diff_tool/app/dist/assets/luau-FMPmPwt6.js +0 -1
- package/dist/diff_tool/app/dist/assets/mdc-B6ddHTKx.js +0 -1
- package/dist/diff_tool/app/dist/assets/mermaid-Bk4SNUv9.js +0 -1
- package/dist/diff_tool/app/dist/assets/mojo-BgCJLMeH.js +0 -1
- package/dist/diff_tool/app/dist/assets/monokai-CdkpiU2Y.js +0 -1
- package/dist/diff_tool/app/dist/assets/moonbit-CaWjb8XO.js +0 -1
- package/dist/diff_tool/app/dist/assets/move-B1IS1UjX.js +0 -1
- package/dist/diff_tool/app/dist/assets/nushell-DcLAeLz5.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-dark-CpLgRqie.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-dark-protanopia-deuteranopia-B35FxJx-.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-dark-soft-kZQmAZld.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-dark-tritanopia-CpjhbsIL.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-dark-vibrant-CpQYzh95.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-light-CoaEpmwp.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-light-protanopia-deuteranopia-0fSaH845.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-light-soft-lWLdNTOI.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-light-tritanopia-CEbqgOJL.js +0 -1
- package/dist/diff_tool/app/dist/assets/pierre-light-vibrant-D80Fkn33.js +0 -1
- package/dist/diff_tool/app/dist/assets/prisma-BsRQq5mF.js +0 -1
- package/dist/diff_tool/app/dist/assets/r-DRexFFDh.js +0 -1
- package/dist/diff_tool/app/dist/assets/red-CJ3rzSJv.js +0 -1
- package/dist/diff_tool/app/dist/assets/rose-pine-BthvhNj6.js +0 -1
- package/dist/diff_tool/app/dist/assets/rose-pine-dawn-Dg85fqjY.js +0 -1
- package/dist/diff_tool/app/dist/assets/rose-pine-moon-hon4tzzS.js +0 -1
- package/dist/diff_tool/app/dist/assets/smalltalk-B16xEiuN.js +0 -1
- package/dist/diff_tool/app/dist/assets/solarized-dark-DV17i1UV.js +0 -1
- package/dist/diff_tool/app/dist/assets/solarized-light-DSh2HLQt.js +0 -1
- package/dist/diff_tool/app/dist/assets/solidity-CKzVLygQ.js +0 -1
- package/dist/diff_tool/app/dist/assets/surrealql-CUddZ4Qk.js +0 -1
- package/dist/diff_tool/app/dist/assets/swift-DonLKvLd.js +0 -1
- package/dist/diff_tool/app/dist/assets/system-verilog-DJ5XKQeo.js +0 -1
- package/dist/diff_tool/app/dist/assets/tex-BOTYELrL.js +0 -1
- package/dist/diff_tool/app/dist/assets/twig-BpzmhnWz.js +0 -1
- 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, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
583
|
-
}
|
|
584
|
-
function escapeXmlAttribute(text) {
|
|
585
|
-
return escapeXml(text).replace(/"/g, """).replace(/'/g, "'");
|
|
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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"}
|