@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
|
@@ -6,7 +6,7 @@ import { captureDiffReviewSnapshot, DiffReviewBridge, } from "../core/diff_revie
|
|
|
6
6
|
import { buildDiffReviewInstructions } from "../core/diff_review/review_instructions.js";
|
|
7
7
|
import { createDefaultCoreDeps } from "../core/runtime/deps.js";
|
|
8
8
|
import { runDirectBashCommand } from "../core/session/direct_bash.js";
|
|
9
|
-
import {
|
|
9
|
+
import { SUBAGENT_ACTIVITY_FACET_KIND } from "../core/subagents/types.js";
|
|
10
10
|
import { REASONING_LEVELS } from "../core/types.js";
|
|
11
11
|
import { formatAdaptiveNumber, formatTokenWindow } from "../core/utils/format.js";
|
|
12
12
|
import { extractAssistantText } from "../core/utils/messages.js";
|
|
@@ -103,9 +103,6 @@ export class SessionChatController {
|
|
|
103
103
|
diff: (argsText) => this.startDiffReview(argsText),
|
|
104
104
|
compactSummaryOnly: (extra) => this.compactSession("summary-only", extra),
|
|
105
105
|
compactSummaryAndLast: (extra) => this.compactSession("summary-and-last", extra),
|
|
106
|
-
pruneEarliest: (extra) => this.pruneSession("earliest", extra),
|
|
107
|
-
pruneLargest: (extra) => this.pruneSession("largest", extra),
|
|
108
|
-
pruneSmart: (extra) => this.pruneSession("smart", extra),
|
|
109
106
|
reload: () => this.reloadContent(),
|
|
110
107
|
listen: () => this.startListenCaptureFromCommand(),
|
|
111
108
|
speak: () => this.speakLastAssistantMessage(),
|
|
@@ -170,7 +167,7 @@ export class SessionChatController {
|
|
|
170
167
|
onCtrlP: () => void this.cyclePersonality(),
|
|
171
168
|
onCtrlS: () => void this.stashEditorToClipboard(),
|
|
172
169
|
onCtrlY: () => void this.toggleListenCapture(),
|
|
173
|
-
onCtrlG: () => this.
|
|
170
|
+
onCtrlG: () => this.interruptSelectedSubagent(),
|
|
174
171
|
onEscape: () => void this.interrupt(),
|
|
175
172
|
beforeSubmit: (text) => this.beforeSubmit(text),
|
|
176
173
|
onChange: (text) => this.handleEditorChange(text),
|
|
@@ -409,12 +406,18 @@ export class SessionChatController {
|
|
|
409
406
|
this.isStreaming = true;
|
|
410
407
|
this.startTurnTimer();
|
|
411
408
|
this.view.startWorkingIcon();
|
|
412
|
-
this.view.
|
|
413
|
-
type: "bash_started",
|
|
409
|
+
this.view.updateLocalToolUi({
|
|
414
410
|
toolCallId,
|
|
415
|
-
|
|
411
|
+
toolName: "bash",
|
|
412
|
+
status: "running",
|
|
416
413
|
headerTarget,
|
|
417
|
-
|
|
414
|
+
activity: {
|
|
415
|
+
type: "bash_started",
|
|
416
|
+
toolCallId,
|
|
417
|
+
command,
|
|
418
|
+
headerTarget,
|
|
419
|
+
},
|
|
420
|
+
});
|
|
418
421
|
this.refreshStatus();
|
|
419
422
|
try {
|
|
420
423
|
const backend = createSdkToolExecutionBackend({
|
|
@@ -436,27 +439,42 @@ export class SessionChatController {
|
|
|
436
439
|
this.hiddenHistoryEntryIds.add(result.userHistoryEntryId);
|
|
437
440
|
this.renderedMessageIds.push(result.userHistoryEntryId);
|
|
438
441
|
}
|
|
439
|
-
this.view.
|
|
440
|
-
type: "bash_execution",
|
|
442
|
+
this.view.updateLocalToolUi({
|
|
441
443
|
toolCallId,
|
|
442
|
-
|
|
444
|
+
toolName: "bash",
|
|
445
|
+
status: result.exitCode === 0 ? "succeeded" : "failed",
|
|
443
446
|
headerTarget,
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
447
|
+
activity: {
|
|
448
|
+
type: "bash_execution",
|
|
449
|
+
toolCallId,
|
|
450
|
+
command: result.command,
|
|
451
|
+
headerTarget,
|
|
452
|
+
exitCode: result.exitCode,
|
|
453
|
+
truncationInfo: result.truncationInfo,
|
|
454
|
+
uiText: result.uiText,
|
|
455
|
+
durationMs: result.durationMs,
|
|
456
|
+
labelOverride: options.labelOverride,
|
|
457
|
+
},
|
|
458
|
+
resultText: result.uiText.fullLines.map((line) => line.text).join("\n"),
|
|
459
|
+
});
|
|
450
460
|
await this.syncFromSessionSnapshot();
|
|
451
461
|
}
|
|
452
462
|
catch (error) {
|
|
453
|
-
|
|
454
|
-
|
|
463
|
+
const reason = error.message || "bash failed";
|
|
464
|
+
this.view.updateLocalToolUi({
|
|
455
465
|
toolCallId,
|
|
456
|
-
|
|
466
|
+
toolName: "bash",
|
|
467
|
+
status: "blocked",
|
|
457
468
|
headerTarget,
|
|
458
|
-
|
|
459
|
-
|
|
469
|
+
activity: {
|
|
470
|
+
type: "bash_blocked",
|
|
471
|
+
toolCallId,
|
|
472
|
+
command,
|
|
473
|
+
headerTarget,
|
|
474
|
+
reason,
|
|
475
|
+
},
|
|
476
|
+
resultText: reason,
|
|
477
|
+
});
|
|
460
478
|
await this.syncFromSessionSnapshot();
|
|
461
479
|
}
|
|
462
480
|
finally {
|
|
@@ -492,9 +510,7 @@ export class SessionChatController {
|
|
|
492
510
|
});
|
|
493
511
|
}
|
|
494
512
|
submitSteeringText(text) {
|
|
495
|
-
void this.session
|
|
496
|
-
.steer(text, { historyEntryId: `session-steer-${randomUUID()}` })
|
|
497
|
-
.catch((error) => {
|
|
513
|
+
void this.session.steer(text).catch((error) => {
|
|
498
514
|
if (!this.isPendingMessageCancellation(error)) {
|
|
499
515
|
this.view.addSystemMessage(`steering failed: ${error.message}`, "error");
|
|
500
516
|
}
|
|
@@ -941,7 +957,7 @@ export class SessionChatController {
|
|
|
941
957
|
if (this.tryApplyFastContentAppendDelta(delta)) {
|
|
942
958
|
return true;
|
|
943
959
|
}
|
|
944
|
-
if (this.
|
|
960
|
+
if (this.tryApplyFastToolUiDelta(delta)) {
|
|
945
961
|
return true;
|
|
946
962
|
}
|
|
947
963
|
if (this.tryApplyFastAgentDelta(delta)) {
|
|
@@ -1015,30 +1031,19 @@ export class SessionChatController {
|
|
|
1015
1031
|
this.refreshStatus();
|
|
1016
1032
|
return true;
|
|
1017
1033
|
}
|
|
1018
|
-
|
|
1019
|
-
if (delta.delta.type !== "snapshot.patch"
|
|
1020
|
-
|
|
1021
|
-
}
|
|
1022
|
-
const facetChanges = delta.delta.changes.filter((change) => change.type === "facet.set");
|
|
1023
|
-
if (facetChanges.length !== 1 ||
|
|
1034
|
+
tryApplyFastToolUiDelta(delta) {
|
|
1035
|
+
if (delta.delta.type !== "snapshot.patch" ||
|
|
1036
|
+
delta.delta.changes.length === 0 ||
|
|
1024
1037
|
delta.delta.changes.some((change) => change.type !== "tool.set" && change.type !== "facet.set")) {
|
|
1025
1038
|
return false;
|
|
1026
1039
|
}
|
|
1027
|
-
const
|
|
1028
|
-
|
|
1029
|
-
if (nextFacet.kind !== "tau.tool-ui-events" || nextFacet.subject.type !== "tool") {
|
|
1030
|
-
return false;
|
|
1031
|
-
}
|
|
1032
|
-
const previousEvents = toolUiEventsFromFacet(this.snapshot.facets[nextFacet.id]);
|
|
1033
|
-
const nextEvents = toolUiEventsFromFacet(nextFacet);
|
|
1034
|
-
if (!canAppendToolUiEvents(nextEvents, previousEvents)) {
|
|
1040
|
+
const facetChanges = delta.delta.changes.filter((change) => change.type === "facet.set");
|
|
1041
|
+
if (facetChanges.some(({ facet }) => facet.kind !== "tau.tool-ui-events" || facet.subject.type !== "tool")) {
|
|
1035
1042
|
return false;
|
|
1036
1043
|
}
|
|
1037
1044
|
this.snapshot = applySessionProtocolDelta(this.snapshot, delta);
|
|
1038
1045
|
this.observedSessionRevision = Math.max(this.observedSessionRevision, this.snapshot.revision);
|
|
1039
|
-
|
|
1040
|
-
this.view.handleToolUiEvent(event, "session");
|
|
1041
|
-
}
|
|
1046
|
+
this.view.reconcileToolUiSession(getToolUiModelsInModelOrder(this.snapshot));
|
|
1042
1047
|
this.refreshStatus();
|
|
1043
1048
|
return true;
|
|
1044
1049
|
}
|
|
@@ -1127,7 +1132,7 @@ export class SessionChatController {
|
|
|
1127
1132
|
};
|
|
1128
1133
|
}
|
|
1129
1134
|
if (message.message.role === "toolResult" &&
|
|
1130
|
-
|
|
1135
|
+
this.snapshot.tools[message.message.toolCallId]) {
|
|
1131
1136
|
return undefined;
|
|
1132
1137
|
}
|
|
1133
1138
|
if (isCoreMessage(message.message)) {
|
|
@@ -1143,15 +1148,11 @@ export class SessionChatController {
|
|
|
1143
1148
|
this.finishObservedSessionTurn();
|
|
1144
1149
|
}
|
|
1145
1150
|
syncSnapshotToolAndAgentUi(snapshot) {
|
|
1146
|
-
this.view.reconcileToolUiSession(
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
for (const event of subagentUiEventsFromAgentRun(agent)) {
|
|
1152
|
-
this.view.handleSubagentEvent(event);
|
|
1153
|
-
}
|
|
1154
|
-
}
|
|
1151
|
+
this.view.reconcileToolUiSession(getToolUiModelsInModelOrder(snapshot));
|
|
1152
|
+
this.view.reconcileSubagentUiSession(Object.values(snapshot.agents).map((agent) => ({
|
|
1153
|
+
state: structuredClone(agent),
|
|
1154
|
+
activity: getSubagentActivity(snapshot, agent.id),
|
|
1155
|
+
})));
|
|
1155
1156
|
}
|
|
1156
1157
|
collectAssistantMessages(snapshot) {
|
|
1157
1158
|
const messages = [];
|
|
@@ -1425,37 +1426,6 @@ export class SessionChatController {
|
|
|
1425
1426
|
this.refreshStatus();
|
|
1426
1427
|
}
|
|
1427
1428
|
}
|
|
1428
|
-
async pruneSession(strategy, extraText) {
|
|
1429
|
-
if (this.isSessionOperationActive()) {
|
|
1430
|
-
this.view.addSystemMessage("cannot prune while a session turn is running", "warn");
|
|
1431
|
-
return;
|
|
1432
|
-
}
|
|
1433
|
-
const extra = extraText?.trim() ?? "";
|
|
1434
|
-
const parsed = strategy === "smart"
|
|
1435
|
-
? parseSessionPruneFractionAndGuidance(extra)
|
|
1436
|
-
: { fraction: parseSessionPruneFraction(extra) };
|
|
1437
|
-
if (parsed.fraction === null) {
|
|
1438
|
-
this.view.addSystemMessage("invalid prune fraction. use a number between 0 and 1.", "error");
|
|
1439
|
-
return;
|
|
1440
|
-
}
|
|
1441
|
-
if (strategy === "smart" && parsed.fraction !== 0) {
|
|
1442
|
-
this.view.addSystemMessage("sampling prune candidates...", "success");
|
|
1443
|
-
}
|
|
1444
|
-
try {
|
|
1445
|
-
const result = await this.session.pruneToolResults(strategy, {
|
|
1446
|
-
fraction: parsed.fraction,
|
|
1447
|
-
...("guidance" in parsed && parsed.guidance !== undefined
|
|
1448
|
-
? { guidance: parsed.guidance }
|
|
1449
|
-
: {}),
|
|
1450
|
-
});
|
|
1451
|
-
this.syncRenderedHistory(result.snapshot);
|
|
1452
|
-
this.refreshStatus();
|
|
1453
|
-
this.view.addSystemMessage(result.message, result.noop ? "warn" : "success");
|
|
1454
|
-
}
|
|
1455
|
-
catch (error) {
|
|
1456
|
-
this.view.addSystemMessage(`prune failed: ${error.message}`, "error");
|
|
1457
|
-
}
|
|
1458
|
-
}
|
|
1459
1429
|
async speakLastAssistantMessage() {
|
|
1460
1430
|
if (this.speakTask) {
|
|
1461
1431
|
this.view.addSystemMessage("speech playback already in progress", "warn");
|
|
@@ -1870,21 +1840,21 @@ export class SessionChatController {
|
|
|
1870
1840
|
this.view.addSystemMessage("rewind failed.", "error");
|
|
1871
1841
|
}
|
|
1872
1842
|
}
|
|
1873
|
-
|
|
1843
|
+
interruptSelectedSubagent() {
|
|
1874
1844
|
const selectedId = this.view.getSelectedSubagentId();
|
|
1875
1845
|
if (!selectedId) {
|
|
1876
1846
|
this.view.addSystemMessage("no active subagent selected", "warn");
|
|
1877
1847
|
return;
|
|
1878
1848
|
}
|
|
1879
1849
|
void this.session
|
|
1880
|
-
.
|
|
1850
|
+
.interruptSubagent(selectedId)
|
|
1881
1851
|
.then((result) => {
|
|
1882
1852
|
if (!result.found) {
|
|
1883
1853
|
this.view.addSystemMessage(`unknown subagent id: ${selectedId}`, "warn");
|
|
1884
1854
|
}
|
|
1885
1855
|
})
|
|
1886
1856
|
.catch((err) => {
|
|
1887
|
-
this.view.addSystemMessage(`failed to
|
|
1857
|
+
this.view.addSystemMessage(`failed to interrupt subagent: ${err.message}`, "error");
|
|
1888
1858
|
});
|
|
1889
1859
|
}
|
|
1890
1860
|
async stashEditorToClipboard() {
|
|
@@ -1922,11 +1892,6 @@ function getTimelineMessages(snapshot) {
|
|
|
1922
1892
|
function isMessageInTimeline(snapshot, messageId) {
|
|
1923
1893
|
return snapshot.timeline.some((item) => item.type === "message" && item.messageId === messageId);
|
|
1924
1894
|
}
|
|
1925
|
-
function hasToolUiFacetForToolCall(snapshot, toolCallId) {
|
|
1926
|
-
return Object.values(snapshot.facets).some((facet) => facet.kind === "tau.tool-ui-events" &&
|
|
1927
|
-
facet.subject.type === "tool" &&
|
|
1928
|
-
facet.subject.id === toolCallId);
|
|
1929
|
-
}
|
|
1930
1895
|
function assistantPartialFromProtocolMessage(message) {
|
|
1931
1896
|
if (message.message.role !== "assistant") {
|
|
1932
1897
|
return { text: "", thinking: "" };
|
|
@@ -2017,30 +1982,54 @@ function isToolUiEvent(value) {
|
|
|
2017
1982
|
"toolCallId" in value &&
|
|
2018
1983
|
typeof value.toolCallId === "string");
|
|
2019
1984
|
}
|
|
2020
|
-
function
|
|
1985
|
+
function getToolUiModelsInModelOrder(snapshot) {
|
|
2021
1986
|
const facetsByToolId = new Map();
|
|
2022
1987
|
for (const facet of Object.values(snapshot.facets)) {
|
|
2023
1988
|
if (facet.kind === "tau.tool-ui-events" && facet.subject.type === "tool") {
|
|
2024
1989
|
facetsByToolId.set(facet.subject.id, facet);
|
|
2025
1990
|
}
|
|
2026
1991
|
}
|
|
2027
|
-
const
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
const
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
1992
|
+
const messagesById = new Map(snapshot.messages.map((message) => [message.id, message]));
|
|
1993
|
+
return getToolIdsInModelOrder(snapshot).map((toolId) => {
|
|
1994
|
+
const tool = snapshot.tools[toolId];
|
|
1995
|
+
const activities = toolUiEventsFromFacet(facetsByToolId.get(toolId));
|
|
1996
|
+
const activity = activities.at(-1);
|
|
1997
|
+
const resultMessage = tool.status === "streaming" ? undefined : messagesById.get(tool.resultMessageId ?? "");
|
|
1998
|
+
const resultMessageText = resultMessage?.message.role === "toolResult"
|
|
1999
|
+
? resultMessage.message.content
|
|
2000
|
+
.flatMap((content) => (content.type === "text" ? [content.text] : []))
|
|
2001
|
+
.join("\n")
|
|
2002
|
+
: undefined;
|
|
2003
|
+
const resultText = resultMessageText || (tool.status === "streaming" ? undefined : (tool.error ?? tool.summary));
|
|
2004
|
+
const activityCode = activity && "code" in activity ? activity.code : undefined;
|
|
2005
|
+
const code = activityCode ?? getToolCallCode(tool, messagesById);
|
|
2006
|
+
return {
|
|
2007
|
+
toolCallId: tool.toolCallId,
|
|
2008
|
+
toolName: tool.toolName,
|
|
2009
|
+
status: tool.status,
|
|
2010
|
+
headerTarget: activity?.headerTarget ?? tool.toolName,
|
|
2011
|
+
...(code !== undefined ? { code } : {}),
|
|
2012
|
+
...(activity ? { activity } : {}),
|
|
2013
|
+
...(resultText ? { resultText } : {}),
|
|
2014
|
+
};
|
|
2015
|
+
});
|
|
2016
|
+
}
|
|
2017
|
+
function getToolCallCode(tool, messagesById) {
|
|
2018
|
+
if (tool.status === "streaming")
|
|
2019
|
+
return undefined;
|
|
2020
|
+
const message = messagesById.get(tool.call.messageId);
|
|
2021
|
+
if (message?.message.role !== "assistant")
|
|
2022
|
+
return undefined;
|
|
2023
|
+
const content = message.message.content[tool.call.contentIndex];
|
|
2024
|
+
if (content?.type !== "toolCall" ||
|
|
2025
|
+
content.id !== tool.toolCallId ||
|
|
2026
|
+
typeof content.arguments !== "object" ||
|
|
2027
|
+
content.arguments === null ||
|
|
2028
|
+
!("code" in content.arguments) ||
|
|
2029
|
+
typeof content.arguments.code !== "string") {
|
|
2030
|
+
return undefined;
|
|
2042
2031
|
}
|
|
2043
|
-
return
|
|
2032
|
+
return content.arguments.code;
|
|
2044
2033
|
}
|
|
2045
2034
|
function getToolIdsInModelOrder(snapshot) {
|
|
2046
2035
|
const messageOrder = new Map(snapshot.messages.map((message, index) => [message.id, index]));
|
|
@@ -2061,25 +2050,19 @@ function toolUiEventsFromFacet(facet) {
|
|
|
2061
2050
|
}
|
|
2062
2051
|
return facet.data.events.filter(isToolUiEvent);
|
|
2063
2052
|
}
|
|
2064
|
-
function
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
return true;
|
|
2070
|
-
}
|
|
2071
|
-
return previousEvents.every((event, index) => JSON.stringify(event) === JSON.stringify(events[index]));
|
|
2053
|
+
function getSubagentActivity(snapshot, agentId) {
|
|
2054
|
+
const facet = Object.values(snapshot.facets).find((candidate) => candidate.kind === SUBAGENT_ACTIVITY_FACET_KIND &&
|
|
2055
|
+
candidate.subject.type === "agent" &&
|
|
2056
|
+
candidate.subject.id === agentId);
|
|
2057
|
+
return typeof facet?.data.text === "string" ? facet.data.text : undefined;
|
|
2072
2058
|
}
|
|
2073
|
-
function subagentUiEventsFromAgentRun(agent) {
|
|
2074
|
-
const state =
|
|
2075
|
-
const events = [{ type:
|
|
2076
|
-
if (agent.
|
|
2077
|
-
events.push(
|
|
2078
|
-
}
|
|
2079
|
-
if (agent.abortRequested) {
|
|
2080
|
-
events.push({ type: "subagent_abort_requested", id: agent.id });
|
|
2059
|
+
function subagentUiEventsFromAgentRun(agent, startedType = "subagent_spawned") {
|
|
2060
|
+
const state = structuredClone(agent);
|
|
2061
|
+
const events = [{ type: startedType, state }];
|
|
2062
|
+
if (agent.run.interruptRequested) {
|
|
2063
|
+
events.push({ type: "subagent_interrupt_requested", state });
|
|
2081
2064
|
}
|
|
2082
|
-
if (agent.status !== "running") {
|
|
2065
|
+
if (agent.run.status !== "running") {
|
|
2083
2066
|
events.push({ type: "subagent_finished", state });
|
|
2084
2067
|
}
|
|
2085
2068
|
return events;
|
|
@@ -2088,64 +2071,25 @@ function subagentUiEventsForAgentDelta(previous, next) {
|
|
|
2088
2071
|
if (!previous) {
|
|
2089
2072
|
return subagentUiEventsFromAgentRun(next);
|
|
2090
2073
|
}
|
|
2074
|
+
if (previous.run.revision !== next.run.revision) {
|
|
2075
|
+
return subagentUiEventsFromAgentRun(next, "subagent_run_started");
|
|
2076
|
+
}
|
|
2077
|
+
const state = structuredClone(next);
|
|
2091
2078
|
const events = [];
|
|
2092
|
-
if (!previous.
|
|
2093
|
-
events.push({ type: "
|
|
2079
|
+
if (!previous.run.interruptRequested && next.run.interruptRequested) {
|
|
2080
|
+
events.push({ type: "subagent_interrupt_requested", state });
|
|
2094
2081
|
}
|
|
2095
|
-
if (next.status !== "running") {
|
|
2096
|
-
events.push({
|
|
2097
|
-
type: "subagent_finished",
|
|
2098
|
-
state: subagentStateFromAgentRun(next),
|
|
2099
|
-
});
|
|
2082
|
+
if (previous.run.status === "running" && next.run.status !== "running") {
|
|
2083
|
+
events.push({ type: "subagent_finished", state });
|
|
2100
2084
|
return events;
|
|
2101
2085
|
}
|
|
2102
|
-
if (
|
|
2103
|
-
events.push(
|
|
2086
|
+
if (agentStateChanged(previous, next)) {
|
|
2087
|
+
events.push({ type: "subagent_updated", state });
|
|
2104
2088
|
}
|
|
2105
2089
|
return events;
|
|
2106
2090
|
}
|
|
2107
|
-
function
|
|
2108
|
-
|
|
2109
|
-
? "success"
|
|
2110
|
-
: agent.status === "failed"
|
|
2111
|
-
? "error"
|
|
2112
|
-
: agent.status === "cancelled"
|
|
2113
|
-
? "aborted"
|
|
2114
|
-
: "running";
|
|
2115
|
-
const state = {
|
|
2116
|
-
id: agent.id,
|
|
2117
|
-
name: agent.name,
|
|
2118
|
-
title: agent.title,
|
|
2119
|
-
status,
|
|
2120
|
-
...(agent.modelLabel !== undefined ? { modelLabel: agent.modelLabel } : {}),
|
|
2121
|
-
costTotal: agent.costTotal,
|
|
2122
|
-
turns: agent.turns,
|
|
2123
|
-
toolCalls: agent.toolCalls,
|
|
2124
|
-
usage: { ...agent.usage },
|
|
2125
|
-
startedAt: agent.startedAt,
|
|
2126
|
-
...(agent.finishedAt !== undefined ? { finishedAt: agent.finishedAt } : {}),
|
|
2127
|
-
abortRequested: agent.abortRequested,
|
|
2128
|
-
...(agent.error !== undefined ? { error: agent.error } : {}),
|
|
2129
|
-
...(agent.finalText !== undefined ? { finalText: agent.finalText } : {}),
|
|
2130
|
-
};
|
|
2131
|
-
return state;
|
|
2132
|
-
}
|
|
2133
|
-
function subagentProgressEventFromAgentRun(agent) {
|
|
2134
|
-
return {
|
|
2135
|
-
type: "subagent_progress",
|
|
2136
|
-
id: agent.id,
|
|
2137
|
-
text: agent.progress ?? "",
|
|
2138
|
-
costTotal: agent.costTotal,
|
|
2139
|
-
turns: agent.turns,
|
|
2140
|
-
toolCalls: agent.toolCalls,
|
|
2141
|
-
usage: { ...agent.usage },
|
|
2142
|
-
};
|
|
2143
|
-
}
|
|
2144
|
-
function agentProgressChanged(previous, next) {
|
|
2145
|
-
return (previous.progress !== next.progress ||
|
|
2146
|
-
previous.costTotal !== next.costTotal ||
|
|
2147
|
-
previous.turns !== next.turns ||
|
|
2148
|
-
previous.toolCalls !== next.toolCalls ||
|
|
2091
|
+
function agentStateChanged(previous, next) {
|
|
2092
|
+
return (previous.costTotal !== next.costTotal ||
|
|
2149
2093
|
previous.usage.input !== next.usage.input ||
|
|
2150
2094
|
previous.usage.output !== next.usage.output ||
|
|
2151
2095
|
previous.usage.cacheRead !== next.usage.cacheRead ||
|