@markusylisiurunen/tau 0.3.88 → 0.3.90
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/dist/core/code_mode/models.js +4 -2
- package/dist/core/code_mode/models.js.map +1 -1
- package/dist/core/diff_review/snapshot.js +1 -1
- package/dist/core/diff_review/snapshot.js.map +1 -1
- package/dist/core/diff_review/tool.js +17 -1
- package/dist/core/diff_review/tool.js.map +1 -1
- package/dist/core/models/openrouter.js +5 -5
- package/dist/core/models/openrouter.js.map +1 -1
- package/dist/core/models/openrouter_media.js +10 -1
- package/dist/core/models/openrouter_media.js.map +1 -1
- package/dist/core/static/code_mode/mcp/documentation.md +77 -0
- package/dist/core/static/tau_docs/credentials.md +4 -1
- package/dist/core/static/tau_docs/node-sdk.md +2 -0
- package/dist/core/static/tau_docs/openrouter.md +6 -2
- package/dist/core/static/tau_docs/ownership-and-scope.md +2 -0
- package/dist/core/static/tau_docs/security.md +2 -0
- package/dist/core/static/tau_docs/session-protocol-methods.md +2 -1
- package/dist/core/static/tau_docs/subagents.md +54 -8
- package/dist/core/static/tau_docs/tui.md +2 -0
- package/dist/core/subagents/agent_supervisor.js +158 -37
- package/dist/core/subagents/agent_supervisor.js.map +1 -1
- package/dist/core/subagents/claude_code_models.js +11 -0
- package/dist/core/subagents/claude_code_models.js.map +1 -0
- package/dist/core/subagents/claude_code_protocol.js +44 -0
- package/dist/core/subagents/claude_code_protocol.js.map +1 -0
- package/dist/core/subagents/claude_code_runner.js +226 -0
- package/dist/core/subagents/claude_code_runner.js.map +1 -0
- package/dist/core/subagents/claude_code_runner.mjs +176 -0
- package/dist/core/subagents/claude_code_runtime.js +145 -0
- package/dist/core/subagents/claude_code_runtime.js.map +1 -0
- package/dist/core/subagents/format.js +3 -1
- package/dist/core/subagents/format.js.map +1 -1
- package/dist/core/subagents/launch_model.js +23 -7
- package/dist/core/subagents/launch_model.js.map +1 -1
- package/dist/core/subagents/registry.js +10 -1
- package/dist/core/subagents/registry.js.map +1 -1
- package/dist/core/subagents/types.js.map +1 -1
- package/dist/core/tool/openrouter.js +2 -1
- package/dist/core/tool/openrouter.js.map +1 -1
- package/dist/core/tools/spawn_agent.js +31 -26
- package/dist/core/tools/spawn_agent.js.map +1 -1
- package/dist/core/version.js +2 -2
- package/dist/diff_tool/app/dist/assets/andromeeda-BJLMrMlp.js +1 -0
- package/dist/diff_tool/app/dist/assets/angular-html-DbefOYVd.js +1 -0
- package/dist/diff_tool/app/dist/assets/{angular-ts-Be7v5l9m.js → angular-ts-CvKvjrwq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{apl-ViTyH3GA.js → apl-oXhhIufm.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{astro-MH_YPNQ5.js → astro-BSfvy1I6.js} +1 -1
- package/dist/diff_tool/app/dist/assets/aurora-x-BCChoRpm.js +1 -0
- package/dist/diff_tool/app/dist/assets/ayu-dark-DzFZPuMV.js +1 -0
- package/dist/diff_tool/app/dist/assets/ayu-light-DSkcX_XD.js +1 -0
- package/dist/diff_tool/app/dist/assets/ayu-mirage-DSve0zuE.js +1 -0
- package/dist/diff_tool/app/dist/assets/{blade-BTHr6rPo.js → blade-BPJIqBv7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/c-NZxYjD9R.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-frappe-DbLkF0J2.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-latte-b6208YQK.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-macchiato-CNNBbV1L.js +1 -0
- package/dist/diff_tool/app/dist/assets/catppuccin-mocha-DHkNF0Mp.js +1 -0
- package/dist/diff_tool/app/dist/assets/{chapel-BOjP8ed5.js → chapel-C_yIxKK6.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cobol-D31khKkM.js → cobol-DJ9emjzS.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{coffee-DWazuGJd.js → coffee-DCXaW2x4.js} +1 -1
- package/dist/diff_tool/app/dist/assets/core-DVIaxTZj.js +1 -0
- package/dist/diff_tool/app/dist/assets/cpp-Y8tBED_W.js +1 -0
- package/dist/diff_tool/app/dist/assets/{crystal-Cg6VJOYc.js → crystal-BGOEqbwF.js} +1 -1
- package/dist/diff_tool/app/dist/assets/css-28T6ABEL.js +1 -0
- package/dist/diff_tool/app/dist/assets/dark-plus-BVZ_4wTZ.js +1 -0
- package/dist/diff_tool/app/dist/assets/dracula-BoZgXveB.js +1 -0
- package/dist/diff_tool/app/dist/assets/dracula-soft-D-Kgh5gw.js +1 -0
- package/dist/diff_tool/app/dist/assets/{edge-CkEOaUM3.js → edge-CQJH3_5t.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elixir-Czy3hX4S.js → elixir-BQwyj_cP.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elm-CVW_nMpy.js → elm-x2IF6yQx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/engine-javascript-DKxkqixV.js +141 -0
- package/dist/diff_tool/app/dist/assets/{erb-CoX4XK-D.js → erb-DZNowPeY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/everforest-dark-Y6tr-2zD.js +1 -0
- package/dist/diff_tool/app/dist/assets/everforest-light-CA0Ol4Qu.js +1 -0
- package/dist/diff_tool/app/dist/assets/{git-rebase-C4iJkeqt.js → git-rebase-WKrMcflD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/github-dark-C895GGrm.js +1 -0
- package/dist/diff_tool/app/dist/assets/github-dark-default-adAWTKmX.js +1 -0
- package/dist/diff_tool/app/dist/assets/github-dark-dimmed-jPx1V1fR.js +1 -0
- package/dist/diff_tool/app/dist/assets/github-dark-high-contrast-UN5YjL_Z.js +1 -0
- package/dist/diff_tool/app/dist/assets/github-light-B4HDwToD.js +1 -0
- package/dist/diff_tool/app/dist/assets/github-light-default-CfC59JYV.js +1 -0
- package/dist/diff_tool/app/dist/assets/github-light-high-contrast-C3edEHcK.js +1 -0
- package/dist/diff_tool/app/dist/assets/{glimmer-js-D7nc0vBC.js → glimmer-js-jxYiQSCJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-ts-mQx9cDM0.js → glimmer-ts-DoFbDDKI.js} +1 -1
- package/dist/diff_tool/app/dist/assets/glsl-DBf8kQxW.js +1 -0
- package/dist/diff_tool/app/dist/assets/graphql-CA_BX0d6.js +1 -0
- package/dist/diff_tool/app/dist/assets/gruvbox-dark-hard-BdGOuxq8.js +1 -0
- package/dist/diff_tool/app/dist/assets/gruvbox-dark-medium-CmygtSMi.js +1 -0
- package/dist/diff_tool/app/dist/assets/gruvbox-dark-soft-BJH4XuY9.js +1 -0
- package/dist/diff_tool/app/dist/assets/gruvbox-light-hard-BkSILF4E.js +1 -0
- package/dist/diff_tool/app/dist/assets/gruvbox-light-medium-DiZUfgdz.js +1 -0
- package/dist/diff_tool/app/dist/assets/gruvbox-light-soft-CRCTnbIj.js +1 -0
- package/dist/diff_tool/app/dist/assets/{hack-BU-2JcaJ.js → hack-gtYgwEcA.js} +1 -1
- package/dist/diff_tool/app/dist/assets/haml-MvCfcv0X.js +1 -0
- package/dist/diff_tool/app/dist/assets/{handlebars-OmqCwMQx.js → handlebars-Bumg1nhL.js} +1 -1
- package/dist/diff_tool/app/dist/assets/highlights-BKf96Xcr.js +3 -0
- package/dist/diff_tool/app/dist/assets/horizon-DUI96lQn.js +1 -0
- package/dist/diff_tool/app/dist/assets/horizon-bright-COxh1lHf.js +1 -0
- package/dist/diff_tool/app/dist/assets/houston-DduE73P7.js +1 -0
- package/dist/diff_tool/app/dist/assets/{html-derivative-ZrmCX6Fo.js → html-derivative-zG1x8fML.js} +1 -1
- package/dist/diff_tool/app/dist/assets/html-xg5kwvwR.js +1 -0
- package/dist/diff_tool/app/dist/assets/{http-J3E0mLZO.js → http-Dt-6KBlS.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hurl-B30CnAJ8.js → hurl-DUghBkZb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/index-DKDNDuYd.js +202 -0
- package/dist/diff_tool/app/dist/assets/java-DmZF03nx.js +1 -0
- package/dist/diff_tool/app/dist/assets/javascript-DF6j-435.js +1 -0
- package/dist/diff_tool/app/dist/assets/{jinja-Diu6P0Bc.js → jinja-B2nuVHF1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jison-BZQ7ygp6.js → jison-CZsiyrSO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/json-42mipy3Q.js +1 -0
- package/dist/diff_tool/app/dist/assets/jsx-vimVRUsC.js +1 -0
- package/dist/diff_tool/app/dist/assets/{julia-Bg4s-EyP.js → julia-CRQfdd-b.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{just-Tl9ujeOY.js → just-CePkuXj4.js} +1 -1
- package/dist/diff_tool/app/dist/assets/kanagawa-dragon-BHDhSKDf.js +1 -0
- package/dist/diff_tool/app/dist/assets/kanagawa-lotus-NJjGXXql.js +1 -0
- package/dist/diff_tool/app/dist/assets/kanagawa-wave-DsGe2Uqk.js +1 -0
- package/dist/diff_tool/app/dist/assets/langs-D3RgqfNW.js +1 -0
- package/dist/diff_tool/app/dist/assets/laserwave-DYV0fvJ_.js +1 -0
- package/dist/diff_tool/app/dist/assets/{latex-DB-cAndI.js → latex-CdMZza0I.js} +1 -1
- package/dist/diff_tool/app/dist/assets/lib-BFrBoEqQ.js +9 -0
- package/dist/diff_tool/app/dist/assets/light-plus-FTnIShls.js +1 -0
- package/dist/diff_tool/app/dist/assets/{liquid-B4gSehXt.js → liquid-DBxKJhTy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/loader-DrMMfKhl.js +1 -0
- package/dist/diff_tool/app/dist/assets/lua-CxMwO_Mz.js +1 -0
- package/dist/diff_tool/app/dist/assets/{marko-C86diGdv.js → marko-CjRgUMoV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/material-theme-IcIb8QNx.js +1 -0
- package/dist/diff_tool/app/dist/assets/material-theme-darker-B_f2vxdL.js +1 -0
- package/dist/diff_tool/app/dist/assets/material-theme-lighter-CR2Q-4Hp.js +1 -0
- package/dist/diff_tool/app/dist/assets/material-theme-ocean-BX6hAJ_y.js +1 -0
- package/dist/diff_tool/app/dist/assets/material-theme-palenight-B6DWAotd.js +1 -0
- package/dist/diff_tool/app/dist/assets/{mdc-BO2FvtJH.js → mdc-AoEkrSRV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/min-dark-DECtZcqS.js +1 -0
- package/dist/diff_tool/app/dist/assets/min-light-qRIVcaqf.js +1 -0
- package/dist/diff_tool/app/dist/assets/monokai-CLmrJ-8t.js +1 -0
- package/dist/diff_tool/app/dist/assets/{nginx-CFhFHcIt.js → nginx-BiHSRcGz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/night-owl-eR4AsyAP.js +1 -0
- package/dist/diff_tool/app/dist/assets/night-owl-light-C74n5ti-.js +1 -0
- package/dist/diff_tool/app/dist/assets/{nim-xj-jYFW_.js → nim-CdOSsVN7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/nord-D4wy7NEP.js +1 -0
- package/dist/diff_tool/app/dist/assets/one-dark-pro-28TLzoS8.js +1 -0
- package/dist/diff_tool/app/dist/assets/one-light-C0UY_Fh7.js +1 -0
- package/dist/diff_tool/app/dist/assets/{org-C13GmC5V.js → org-wLn5ov6u.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{perl-rQ_kENHN.js → perl-D1d-UYsx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{php--ah40kY3.js → php-BXtg-e-b.js} +1 -1
- package/dist/diff_tool/app/dist/assets/pierre-dark-fPlffE7i.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-dark-protanopia-deuteranopia-BmjibgrW.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-dark-soft-Cng2SYKc.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-dark-tritanopia-DneQ5i7L.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-dark-vibrant-BUK9Y-N_.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-light-BvcXQJIj.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-light-protanopia-deuteranopia-Cd5nk0bp.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-light-soft-BvU23vks.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-light-tritanopia-BSHccQzI.js +1 -0
- package/dist/diff_tool/app/dist/assets/pierre-light-vibrant-BgMZEwQI.js +1 -0
- package/dist/diff_tool/app/dist/assets/plastic-B2V_PDVk.js +1 -0
- package/dist/diff_tool/app/dist/assets/poimandres-DB9-pI6r.js +1 -0
- package/dist/diff_tool/app/dist/assets/preload-helper-CRzLMJPS.js +1 -0
- package/dist/diff_tool/app/dist/assets/{pug-DLBf55FZ.js → pug-CueMe1Oe.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{qml-BmywcKuq.js → qml-BQ_VstfA.js} +1 -1
- package/dist/diff_tool/app/dist/assets/r-C0eHyz6n.js +1 -0
- package/dist/diff_tool/app/dist/assets/{razor-DFgjiScD.js → razor-DKbaSFqp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/red-CqYzoXtd.js +1 -0
- package/dist/diff_tool/app/dist/assets/regexp-CCN76yWg.js +1 -0
- package/dist/diff_tool/app/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
- package/dist/diff_tool/app/dist/assets/rose-pine-C3zjVKxG.js +1 -0
- package/dist/diff_tool/app/dist/assets/rose-pine-dawn-C72QYfqa.js +1 -0
- package/dist/diff_tool/app/dist/assets/rose-pine-moon-CSM8ewhO.js +1 -0
- package/dist/diff_tool/app/dist/assets/{rst-D3bgw8s-.js → rst-D9EQsBp-.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ruby-CvvPNPNu.js → ruby-DAY5ZYSg.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sas-DboUhRut.js → sas-DC4F9y1U.js} +1 -1
- package/dist/diff_tool/app/dist/assets/scss-CNJYx4G4.js +1 -0
- package/dist/diff_tool/app/dist/assets/shellscript-DG0er0mb.js +1 -0
- package/dist/diff_tool/app/dist/assets/{shellsession-B8hgVli7.js → shellsession-DZdJuHd_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/shiki-DmA--L4w.js +2 -0
- package/dist/diff_tool/app/dist/assets/slack-dark-Dtzi51su.js +1 -0
- package/dist/diff_tool/app/dist/assets/slack-ochin-Bb7oPExa.js +1 -0
- package/dist/diff_tool/app/dist/assets/snazzy-light-DXgiwzKu.js +1 -0
- package/dist/diff_tool/app/dist/assets/solarized-dark-BKOT3ICq.js +1 -0
- package/dist/diff_tool/app/dist/assets/solarized-light--Lk5pOfE.js +1 -0
- package/dist/diff_tool/app/dist/assets/{soy-BN8bv00M.js → soy-DBgMV_3R.js} +1 -1
- package/dist/diff_tool/app/dist/assets/sql-BJYzzGx2.js +1 -0
- package/dist/diff_tool/app/dist/assets/{stata-Bo21VCmU.js → stata-CANxZdMU.js} +1 -1
- package/dist/diff_tool/app/dist/assets/stream-tokenizer-5ezp0vCr.js +4 -0
- package/dist/diff_tool/app/dist/assets/{surrealql-CQV6x_M7.js → surrealql-h0PQCFLw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{svelte-NG5GkV3-.js → svelte-CouSRXXN.js} +1 -1
- package/dist/diff_tool/app/dist/assets/synthwave-84-BJJFg-sc.js +1 -0
- package/dist/diff_tool/app/dist/assets/{templ-D5z_pSJh.js → templ-nHebsoOx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/tex-Bmmg45Le.js +1 -0
- package/dist/diff_tool/app/dist/assets/themes-BNoMSXBX.js +2 -0
- package/dist/diff_tool/app/dist/assets/tokyo-night-DvpptEDd.js +1 -0
- package/dist/diff_tool/app/dist/assets/{ts-tags-DBNduNlb.js → ts-tags-ByyA0QCx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/tsx-r6-X8vM1.js +1 -0
- package/dist/diff_tool/app/dist/assets/{twig-DyCOQ6jQ.js → twig-DUDRwdST.js} +1 -1
- package/dist/diff_tool/app/dist/assets/typescript-Dvuj33DD.js +1 -0
- package/dist/diff_tool/app/dist/assets/{typst-pyR7tNhl.js → typst-DE5bnHEE.js} +1 -1
- package/dist/diff_tool/app/dist/assets/vesper-C1rBZbON.js +1 -0
- package/dist/diff_tool/app/dist/assets/vitesse-black-Sqvrs2Sw.js +1 -0
- package/dist/diff_tool/app/dist/assets/vitesse-dark-BWf_ZQtP.js +1 -0
- package/dist/diff_tool/app/dist/assets/vitesse-light-Cqenv4Qv.js +1 -0
- package/dist/diff_tool/app/dist/assets/{vue-DekfgCeK.js → vue-BMcQkxhM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-html-B4ZBhbWG.js → vue-html-BBM4UO8W.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-vine-GuRc3TmG.js → vue-vine-CEJFhGMr.js} +1 -1
- package/dist/diff_tool/app/dist/assets/xml-CJx_hAt3.js +1 -0
- package/dist/diff_tool/app/dist/assets/{xsl-BHk7hTF5.js → xsl-Bd7alYZi.js} +1 -1
- package/dist/diff_tool/app/dist/assets/yaml-BY1dOrT3.js +1 -0
- package/dist/diff_tool/app/dist/index.html +4 -1
- package/dist/host/hosted_ephemeral_agent_session.js +40 -35
- package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
- package/dist/host/local_session_host.js +35 -28
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/host/session_protocol_handler.js +3 -0
- package/dist/host/session_protocol_handler.js.map +1 -1
- package/dist/protocol/session_protocol.d.ts +1 -0
- package/dist/protocol/session_protocol.js +1 -0
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/sdk/diff_review.js +1 -0
- package/dist/sdk/diff_review.js.map +1 -1
- package/dist/sdk/session.js.map +1 -1
- package/dist/sdk/types.d.ts +1 -0
- package/dist/tui/chat_controller/diff_review_service.js +3 -0
- package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
- package/dist/tui/session_chat_controller.js +2 -0
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/package.json +11 -9
- package/dist/diff_tool/app/dist/assets/angular-html-5fOwkWyd.js +0 -1
- package/dist/diff_tool/app/dist/assets/c-DYj9dO8E.js +0 -1
- package/dist/diff_tool/app/dist/assets/cpp-8i9ji6Kd.js +0 -1
- package/dist/diff_tool/app/dist/assets/css-BV65WUAK.js +0 -1
- package/dist/diff_tool/app/dist/assets/glsl-CoRDWwaA.js +0 -1
- package/dist/diff_tool/app/dist/assets/graphql-CpNQg4PT.js +0 -1
- package/dist/diff_tool/app/dist/assets/haml-BNJ9RuER.js +0 -1
- package/dist/diff_tool/app/dist/assets/html-MIjxmLMB.js +0 -1
- package/dist/diff_tool/app/dist/assets/index-CiAU1PwB.js +0 -341
- package/dist/diff_tool/app/dist/assets/java-DpW7eZfy.js +0 -1
- package/dist/diff_tool/app/dist/assets/javascript-CvLcUIy_.js +0 -1
- package/dist/diff_tool/app/dist/assets/json-C37-IgA9.js +0 -1
- package/dist/diff_tool/app/dist/assets/jsx-ohUwvKS6.js +0 -1
- package/dist/diff_tool/app/dist/assets/lua-CWWrDAOB.js +0 -1
- package/dist/diff_tool/app/dist/assets/r-BwiwO_Xr.js +0 -1
- package/dist/diff_tool/app/dist/assets/regexp-Cn-Hl0aP.js +0 -1
- package/dist/diff_tool/app/dist/assets/scss-CNj55azm.js +0 -1
- package/dist/diff_tool/app/dist/assets/shellscript-Dq_hJ1RB.js +0 -1
- package/dist/diff_tool/app/dist/assets/sql-J7vPdoQR.js +0 -1
- package/dist/diff_tool/app/dist/assets/tex-DwaU-qNm.js +0 -1
- package/dist/diff_tool/app/dist/assets/tsx-DO7eKGYw.js +0 -1
- package/dist/diff_tool/app/dist/assets/typescript-D3g-W4bt.js +0 -1
- package/dist/diff_tool/app/dist/assets/xml-CO_gq7Lx.js +0 -1
- package/dist/diff_tool/app/dist/assets/yaml-DegPhFhK.js +0 -1
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { accessSync, constants } from "node:fs";
|
|
2
|
+
import { delimiter, join } from "node:path";
|
|
3
|
+
import { query, } from "@anthropic-ai/claude-agent-sdk";
|
|
4
|
+
import { claudeCodeInputSchema, } from "./claude_code_protocol.js";
|
|
5
|
+
export function claudeCodeTools(tools) {
|
|
6
|
+
const selected = new Set();
|
|
7
|
+
if (tools.includes("bash") || tools.includes("view_image")) {
|
|
8
|
+
for (const name of ["Read", "Glob", "Grep"])
|
|
9
|
+
selected.add(name);
|
|
10
|
+
}
|
|
11
|
+
if (tools.includes("bash"))
|
|
12
|
+
selected.add("Bash");
|
|
13
|
+
if (tools.includes("write"))
|
|
14
|
+
selected.add("Write");
|
|
15
|
+
if (tools.includes("edit"))
|
|
16
|
+
selected.add("Edit");
|
|
17
|
+
if (tools.includes("web")) {
|
|
18
|
+
selected.add("WebSearch");
|
|
19
|
+
selected.add("WebFetch");
|
|
20
|
+
}
|
|
21
|
+
return [...selected];
|
|
22
|
+
}
|
|
23
|
+
export function claudeCodeOptions(input, executable) {
|
|
24
|
+
const env = { ...process.env };
|
|
25
|
+
for (const key of Object.keys(env)) {
|
|
26
|
+
if (key.startsWith("ANTHROPIC_") ||
|
|
27
|
+
key.startsWith("CLAUDE_CODE_USE_") ||
|
|
28
|
+
key === "CLAUDE_CODE_OAUTH_TOKEN" ||
|
|
29
|
+
key === "CLAUDE_CODE_SUBAGENT_MODEL")
|
|
30
|
+
delete env[key];
|
|
31
|
+
}
|
|
32
|
+
const tools = [...claudeCodeTools(input.tools), "Skill"];
|
|
33
|
+
return {
|
|
34
|
+
cwd: input.cwd,
|
|
35
|
+
model: input.model,
|
|
36
|
+
effort: input.effort,
|
|
37
|
+
maxTurns: 1024,
|
|
38
|
+
includePartialMessages: true,
|
|
39
|
+
pathToClaudeCodeExecutable: executable,
|
|
40
|
+
env,
|
|
41
|
+
tools,
|
|
42
|
+
permissionMode: "bypassPermissions",
|
|
43
|
+
allowDangerouslySkipPermissions: true,
|
|
44
|
+
disallowedTools: ["Agent", "Task", "AskUserQuestion"],
|
|
45
|
+
settingSources: ["user", "project", "local"],
|
|
46
|
+
skills: "all",
|
|
47
|
+
settings: {
|
|
48
|
+
fastMode: false,
|
|
49
|
+
autoMemoryEnabled: false,
|
|
50
|
+
disableAllHooks: true,
|
|
51
|
+
sandbox: { enabled: false },
|
|
52
|
+
},
|
|
53
|
+
persistSession: true,
|
|
54
|
+
...(input.sessionId ? { resume: input.sessionId } : {}),
|
|
55
|
+
systemPrompt: {
|
|
56
|
+
type: "preset",
|
|
57
|
+
preset: "claude_code",
|
|
58
|
+
append: [
|
|
59
|
+
"You are a headless subagent supporting a parent agent. Complete the assigned task autonomously, including any verification it requires. No user or parent agent is available to answer questions or approve intermediate steps. Resolve minor ambiguities with reasonable assumptions and continue. If missing information or authority prevents safe progress, report the blocker clearly instead of attempting brittle or risky workarounds.",
|
|
60
|
+
"Read and follow applicable project instructions wherever you work. Use the skills available in this session when relevant.",
|
|
61
|
+
"Other agents may be modifying the same worktree. Never revert, discard, or overwrite changes you did not make. Avoid mutating Git operations unless explicitly instructed by the task. Do not launch other agents.",
|
|
62
|
+
"Your final response is what the parent agent receives from your work. Make it self-contained and include everything important for the parent to understand and use the result. Do not rely on intermediate messages or tool output being visible.",
|
|
63
|
+
].join("\n\n"),
|
|
64
|
+
},
|
|
65
|
+
stderr: () => { },
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function findClaudeExecutable() {
|
|
69
|
+
for (const directory of (process.env.PATH ?? "").split(delimiter)) {
|
|
70
|
+
if (!directory)
|
|
71
|
+
continue;
|
|
72
|
+
const path = join(directory, "claude");
|
|
73
|
+
try {
|
|
74
|
+
accessSync(path, constants.X_OK);
|
|
75
|
+
return path;
|
|
76
|
+
}
|
|
77
|
+
catch { }
|
|
78
|
+
}
|
|
79
|
+
throw new Error("Claude Code is not installed on the execution environment. Install it and sign in there with your Claude subscription before launching a Claude Code subagent.");
|
|
80
|
+
}
|
|
81
|
+
export async function runClaudeCode(raw, emit) {
|
|
82
|
+
const input = claudeCodeInputSchema.parse(raw);
|
|
83
|
+
let authorized = false;
|
|
84
|
+
let allowPrompt;
|
|
85
|
+
const ready = new Promise((resolve) => {
|
|
86
|
+
allowPrompt = resolve;
|
|
87
|
+
});
|
|
88
|
+
let finishPrompt;
|
|
89
|
+
const finished = new Promise((resolve) => {
|
|
90
|
+
finishPrompt = resolve;
|
|
91
|
+
});
|
|
92
|
+
async function* prompts() {
|
|
93
|
+
await ready;
|
|
94
|
+
if (!authorized)
|
|
95
|
+
return;
|
|
96
|
+
yield {
|
|
97
|
+
type: "user",
|
|
98
|
+
session_id: input.sessionId ?? "",
|
|
99
|
+
parent_tool_use_id: null,
|
|
100
|
+
message: { role: "user", content: input.prompt },
|
|
101
|
+
};
|
|
102
|
+
// Keep the control channel open until the context summary has been read.
|
|
103
|
+
await finished;
|
|
104
|
+
}
|
|
105
|
+
const conversation = query({
|
|
106
|
+
prompt: prompts(),
|
|
107
|
+
options: claudeCodeOptions(input, findClaudeExecutable()),
|
|
108
|
+
});
|
|
109
|
+
const calls = new Map();
|
|
110
|
+
let streamedMessage;
|
|
111
|
+
const emitUsage = (message) => {
|
|
112
|
+
emit({
|
|
113
|
+
type: "usage",
|
|
114
|
+
messageId: message.id,
|
|
115
|
+
usage: {
|
|
116
|
+
input: message.usage.input_tokens,
|
|
117
|
+
output: message.usage.output_tokens,
|
|
118
|
+
cacheRead: message.usage.cache_read_input_tokens ?? 0,
|
|
119
|
+
cacheWrite: message.usage.cache_creation_input_tokens ?? 0,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
try {
|
|
124
|
+
const initialization = await conversation.initializationResult();
|
|
125
|
+
const account = initialization.account;
|
|
126
|
+
if (!account.subscriptionType || (account.apiKeySource && account.apiKeySource !== "none")) {
|
|
127
|
+
throw new Error("Claude Code requires a subscription login on the execution environment; API-key billing is not used by this launch model.");
|
|
128
|
+
}
|
|
129
|
+
authorized = true;
|
|
130
|
+
allowPrompt();
|
|
131
|
+
for await (const message of conversation) {
|
|
132
|
+
if (message.type === "system" && message.subtype === "init") {
|
|
133
|
+
emit({ type: "session", id: message.session_id });
|
|
134
|
+
}
|
|
135
|
+
else if (message.type === "stream_event" && message.parent_tool_use_id === null) {
|
|
136
|
+
const event = message.event;
|
|
137
|
+
if (event.type === "message_start") {
|
|
138
|
+
streamedMessage = { id: event.message.id, usage: event.message.usage };
|
|
139
|
+
}
|
|
140
|
+
else if (event.type === "message_delta" && streamedMessage) {
|
|
141
|
+
const usage = streamedMessage.usage;
|
|
142
|
+
streamedMessage.usage = {
|
|
143
|
+
...usage,
|
|
144
|
+
input_tokens: event.usage.input_tokens ?? usage.input_tokens,
|
|
145
|
+
output_tokens: event.usage.output_tokens ?? usage.output_tokens,
|
|
146
|
+
cache_read_input_tokens: event.usage.cache_read_input_tokens ?? usage.cache_read_input_tokens,
|
|
147
|
+
cache_creation_input_tokens: event.usage.cache_creation_input_tokens ?? usage.cache_creation_input_tokens,
|
|
148
|
+
};
|
|
149
|
+
emitUsage(streamedMessage);
|
|
150
|
+
}
|
|
151
|
+
else if (event.type === "message_stop") {
|
|
152
|
+
streamedMessage = undefined;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (message.type === "assistant" && message.parent_tool_use_id === null) {
|
|
156
|
+
emitUsage(message.message);
|
|
157
|
+
for (const block of message.message.content) {
|
|
158
|
+
if (block.type === "text" && block.text) {
|
|
159
|
+
emit({ type: "assistant", text: block.text.slice(0, 8192) });
|
|
160
|
+
}
|
|
161
|
+
else if (block.type === "tool_use") {
|
|
162
|
+
const args = block.input !== null && typeof block.input === "object" && !Array.isArray(block.input)
|
|
163
|
+
? block.input
|
|
164
|
+
: {};
|
|
165
|
+
const subject = [args.file_path, args.command, args.pattern, args.url].find((value) => typeof value === "string") ?? block.name;
|
|
166
|
+
calls.set(block.id, {
|
|
167
|
+
name: block.name.slice(0, 256),
|
|
168
|
+
subject: subject.slice(0, 1024),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else if (message.type === "user" &&
|
|
174
|
+
!("isReplay" in message) &&
|
|
175
|
+
message.parent_tool_use_id === null &&
|
|
176
|
+
Array.isArray(message.message.content)) {
|
|
177
|
+
for (const block of message.message.content) {
|
|
178
|
+
if (block.type !== "tool_result")
|
|
179
|
+
continue;
|
|
180
|
+
const call = calls.get(block.tool_use_id);
|
|
181
|
+
if (!call)
|
|
182
|
+
continue;
|
|
183
|
+
calls.delete(block.tool_use_id);
|
|
184
|
+
emit({ type: "tool", ...call, failed: block.is_error === true });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else if (message.type === "result") {
|
|
188
|
+
const totals = Object.values(message.modelUsage);
|
|
189
|
+
const failed = message.is_error || message.subtype !== "success";
|
|
190
|
+
const context = failed
|
|
191
|
+
? undefined
|
|
192
|
+
: await conversation.getContextUsage({ detail: "summary" });
|
|
193
|
+
const usage = {
|
|
194
|
+
input: 0,
|
|
195
|
+
output: 0,
|
|
196
|
+
cacheRead: 0,
|
|
197
|
+
cacheWrite: 0,
|
|
198
|
+
contextWindowUsageTokens: context?.totalTokens ?? 0,
|
|
199
|
+
contextWindow: context?.maxTokens ?? 0,
|
|
200
|
+
};
|
|
201
|
+
for (const model of totals) {
|
|
202
|
+
usage.input += model.inputTokens;
|
|
203
|
+
usage.output += model.outputTokens;
|
|
204
|
+
usage.cacheRead += model.cacheReadInputTokens;
|
|
205
|
+
usage.cacheWrite += model.cacheCreationInputTokens;
|
|
206
|
+
}
|
|
207
|
+
emit({
|
|
208
|
+
type: "result",
|
|
209
|
+
response: message.subtype === "success"
|
|
210
|
+
? message.result
|
|
211
|
+
: [message.subtype, ...message.errors].join("\n"),
|
|
212
|
+
failed,
|
|
213
|
+
cost: message.total_cost_usd,
|
|
214
|
+
usage,
|
|
215
|
+
});
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
finally {
|
|
221
|
+
finishPrompt();
|
|
222
|
+
conversation.close();
|
|
223
|
+
allowPrompt();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=claude_code_runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude_code_runner.js","sourceRoot":"","sources":["../../../src/core/subagents/claude_code_runner.ts"],"names":[],"mappings":"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"}
|