@markusylisiurunen/tau 0.3.78 → 0.3.80
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/code_mode/images.d.ts +3 -0
- package/dist/code_mode/images.js +37 -0
- package/dist/code_mode/images.js.map +1 -0
- package/dist/code_mode/output.d.ts +22 -0
- package/dist/code_mode/output.js +109 -0
- package/dist/code_mode/output.js.map +1 -0
- package/dist/code_mode/runtime.d.ts +2 -1
- package/dist/code_mode/runtime.js +92 -12
- package/dist/code_mode/runtime.js.map +1 -1
- package/dist/core/agent/agent_runtime.js +68 -76
- package/dist/core/agent/agent_runtime.js.map +1 -1
- package/dist/core/auth/auth_manager.js +3 -7
- package/dist/core/auth/auth_manager.js.map +1 -1
- package/dist/core/auth/auth_messages.js +1 -1
- package/dist/core/auth/auth_messages.js.map +1 -1
- package/dist/core/auth/auth_storage.js +71 -7
- package/dist/core/auth/auth_storage.js.map +1 -1
- package/dist/core/auth/cli.js +8 -7
- package/dist/core/auth/cli.js.map +1 -1
- package/dist/core/auth/credential_store.js +88 -186
- package/dist/core/auth/credential_store.js.map +1 -1
- package/dist/core/auth/index.js +1 -1
- package/dist/core/auth/index.js.map +1 -1
- package/dist/core/auth/providers/openai_codex.js +51 -229
- package/dist/core/auth/providers/openai_codex.js.map +1 -1
- package/dist/core/cli.js +1 -2
- package/dist/core/cli.js.map +1 -1
- package/dist/core/client_tools/command_client_tools.js +2 -2
- package/dist/core/commands/registry.js +16 -1
- package/dist/core/commands/registry.js.map +1 -1
- package/dist/core/config/content_loader.js +30 -131
- package/dist/core/config/content_loader.js.map +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/mcp.js +68 -0
- package/dist/core/config/mcp.js.map +1 -0
- package/dist/core/config/paths.js +0 -1
- package/dist/core/config/paths.js.map +1 -1
- package/dist/core/config/runtime.js +3 -2
- package/dist/core/config/runtime.js.map +1 -1
- package/dist/core/config/runtime_config_snapshot.js +23 -9
- package/dist/core/config/runtime_config_snapshot.js.map +1 -1
- package/dist/core/config/schema.js +39 -73
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/skills_loader.js +6 -2
- package/dist/core/config/skills_loader.js.map +1 -1
- package/dist/core/debug.js +1 -16
- package/dist/core/debug.js.map +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/manager.js +245 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/search.js +77 -0
- package/dist/core/mcp/search.js.map +1 -0
- package/dist/core/models/catalog.js +2 -239
- package/dist/core/models/catalog.js.map +1 -1
- package/dist/core/personas.js +2 -15
- package/dist/core/personas.js.map +1 -1
- package/dist/core/runtime/agent_model.js +0 -3
- package/dist/core/runtime/agent_model.js.map +1 -1
- package/dist/core/runtime/chat_runtime.js +19 -13
- package/dist/core/runtime/chat_runtime.js.map +1 -1
- package/dist/core/runtime/runtime_bootstrap.js +12 -59
- package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
- package/dist/core/session/auto_compaction_archive.js +1 -1
- package/dist/core/session/auto_compaction_archive.js.map +1 -1
- package/dist/core/session/compaction.js +79 -506
- package/dist/core/session/compaction.js.map +1 -1
- package/dist/core/static/code_mode/mcp/documentation.md +113 -0
- package/dist/core/static/code_mode/sandbox_runner.mjs +58 -3
- package/dist/core/static/tau_docs/client-tools.md +32 -30
- package/dist/core/static/tau_docs/config-reference.md +60 -38
- package/dist/core/static/tau_docs/configuration.md +3 -16
- package/dist/core/static/tau_docs/credentials.md +20 -50
- package/dist/core/static/tau_docs/index.md +2 -1
- package/dist/core/static/tau_docs/manifest.json +1 -0
- package/dist/core/static/tau_docs/models.md +8 -159
- package/dist/core/static/tau_docs/node-sdk.md +4 -2
- package/dist/core/static/tau_docs/openrouter.md +165 -0
- package/dist/core/static/tau_docs/ownership-and-scope.md +5 -3
- package/dist/core/static/tau_docs/personas.md +11 -43
- package/dist/core/static/tau_docs/prompts-and-project-context.md +10 -44
- package/dist/core/static/tau_docs/remote-sessions.md +6 -7
- package/dist/core/static/tau_docs/security.md +17 -6
- package/dist/core/static/tau_docs/session-protocol-methods.md +8 -4
- package/dist/core/static/tau_docs/session-protocol.md +12 -10
- package/dist/core/static/tau_docs/sessions.md +8 -6
- package/dist/core/static/tau_docs/skills.md +8 -32
- package/dist/core/static/tau_docs/subagents.md +4 -3
- package/dist/core/static/tau_docs/telegram.md +2 -2
- package/dist/core/static/tau_docs/tools.md +22 -6
- package/dist/core/static/tau_docs/troubleshooting.md +11 -12
- package/dist/core/static/tau_docs/tui.md +10 -3
- package/dist/core/subagents/agent_supervisor.js +1 -2
- package/dist/core/subagents/agent_supervisor.js.map +1 -1
- package/dist/core/subagents/registry.js +2 -1
- package/dist/core/subagents/registry.js.map +1 -1
- package/dist/core/subagents/types.js +2 -1
- package/dist/core/subagents/types.js.map +1 -1
- package/dist/core/telegram/adapter.js +1 -1
- package/dist/core/telegram/adapter.js.map +1 -1
- package/dist/core/tool/cli.js +10 -2
- package/dist/core/tool/cli.js.map +1 -1
- package/dist/core/tool/openrouter.js +291 -0
- package/dist/core/tool/openrouter.js.map +1 -0
- package/dist/core/tool/openrouter_decisions.js +97 -0
- package/dist/core/tool/openrouter_decisions.js.map +1 -0
- package/dist/core/tool/openrouter_media.js +180 -0
- package/dist/core/tool/openrouter_media.js.map +1 -0
- package/dist/core/tools/catalog.js +14 -2
- package/dist/core/tools/catalog.js.map +1 -1
- package/dist/core/tools/code_mode.js +5 -2
- package/dist/core/tools/code_mode.js.map +1 -1
- package/dist/core/tools/code_mode_worker.js +33 -1
- package/dist/core/tools/code_mode_worker.js.map +1 -1
- package/dist/core/tools/history.js +1 -1
- package/dist/core/tools/history.js.map +1 -1
- package/dist/core/tools/mcp.js +167 -0
- package/dist/core/tools/mcp.js.map +1 -0
- package/dist/core/tools/nook.js +1 -1
- package/dist/core/tools/nook.js.map +1 -1
- package/dist/core/tools/spawn_agent.js +1 -0
- package/dist/core/tools/spawn_agent.js.map +1 -1
- package/dist/core/tools/tau_docs.js +1 -0
- package/dist/core/tools/tau_docs.js.map +1 -1
- package/dist/core/tools/tool_names.js +2 -0
- package/dist/core/tools/tool_names.js.map +1 -1
- package/dist/core/tools/view_image.js +1 -105
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/tools/web.js +1 -1
- package/dist/core/tools/web.js.map +1 -1
- package/dist/core/utils/bm25.js +74 -0
- package/dist/core/utils/bm25.js.map +1 -0
- package/dist/core/utils/model_image.js +106 -0
- package/dist/core/utils/model_image.js.map +1 -0
- package/dist/core/utils/model_stream.js +47 -34
- package/dist/core/utils/model_stream.js.map +1 -1
- package/dist/core/utils/user_metadata.js +2 -27
- package/dist/core/utils/user_metadata.js.map +1 -1
- package/dist/core/version.js +2 -2
- package/dist/core/version.js.map +1 -1
- package/dist/diff_tool/app/dist/assets/{ada-C5qYipkI.js → ada-X3Y2mlq2.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ahk-CA9gdOdF.js → ahk-DwADkxyd.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-html-CnO8qept.js → angular-html-BbLgbIhq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-ts-DPXUio9Z.js → angular-ts-DXk17TRM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{apl-X8YsymsQ.js → apl-BsvksCXR.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{astro-BQ9k8AQ0.js → astro-DH775E4V.js} +1 -1
- package/dist/diff_tool/app/dist/assets/beancount-C2IN4Vk8.js +1 -0
- package/dist/diff_tool/app/dist/assets/{blade-DZ1LYIzB.js → blade-Ck99Rm59.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{c-VLTwNh7z.js → c-DJpHqu5J.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{chapel-5s-sGN8D.js → chapel-Owff0Csy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cobol-C9RzwrVu.js → cobol-Cv2gZuhO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{coffee-BHvjZ343.js → coffee-Bji0YCf_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/coq-CGaSfhwR.js +1 -0
- package/dist/diff_tool/app/dist/assets/{cpp-CBTVXbBp.js → cpp-DTjA_yFF.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{crystal-DQJua4y4.js → crystal-Dd00NOeb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/csharp-dmMxLVLW.js +1 -0
- package/dist/diff_tool/app/dist/assets/css-D44TN1V6.js +1 -0
- package/dist/diff_tool/app/dist/assets/dart-CHZY9Xhz.js +1 -0
- package/dist/diff_tool/app/dist/assets/dotenv-CuH5my32.js +1 -0
- package/dist/diff_tool/app/dist/assets/{edge-BmdmXGH4.js → edge-CVmGSi2m.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elixir-oiOLs98L.js → elixir-B8Mq7no2.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elm-BgYuiU4E.js → elm-CXS0I3Z2.js} +1 -1
- package/dist/diff_tool/app/dist/assets/emacs-lisp-DR2vtWaj.js +1 -0
- package/dist/diff_tool/app/dist/assets/{erb-CvFrXpyY.js → erb-B9oDKaUo.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{git-rebase-D3Zo1BLH.js → git-rebase-DT-YFebH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-js-B4-8E3lJ.js → glimmer-js-s0DXlNjq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-ts-CtKkD0t_.js → glimmer-ts-QgEB5S2z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glsl-BAqforx_.js → glsl-NA0icwbY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/gn-CAXYAgV-.js +1 -0
- package/dist/diff_tool/app/dist/assets/{graphql-DuE1RMyL.js → graphql-0_dOlfV0.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hack-CHBcXjz1.js → hack-D-mr7l1l.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{haml-DAs2z3tD.js → haml-B0-oQmz7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/handlebars-Yq9bXpWN.js +1 -0
- package/dist/diff_tool/app/dist/assets/{html-D5co0BLD.js → html-B8bMmdRK.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-derivative-BZaWEmAT.js → html-derivative-BpxSlQb_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{http-Cii5MjJE.js → http-hS_53mxt.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hurl-Bur-XdJO.js → hurl-B2ST1kwl.js} +1 -1
- package/dist/diff_tool/app/dist/assets/index-CBT_sNIz.js +340 -0
- package/dist/diff_tool/app/dist/assets/{java-DN39wI4w.js → java-D4mj0lZJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{javascript-VUReF1H4.js → javascript-wC7rrKiV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jinja-BcrfV1JB.js → jinja-DbQ3o87F.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jison-Bez5Mtmy.js → jison-CrE9FdvP.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{json-ChV8m0Le.js → json-xjicDyWN.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jsx-D0SXNtM0.js → jsx-m28lXojQ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{julia-DvhpcBwG.js → julia-19xkOmop.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{just-BGwe8S6x.js → just-Cf7OorTr.js} +1 -1
- package/dist/diff_tool/app/dist/assets/latex-DDb7GQOy.js +1 -0
- package/dist/diff_tool/app/dist/assets/{liquid-UdnqDjKz.js → liquid-DHOuQ0rf.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{lua-CjDHeHEr.js → lua-BGyIvonw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/luau-VGWVLoqX.js +1 -0
- package/dist/diff_tool/app/dist/assets/marko-DB5OqI1C.js +1 -0
- package/dist/diff_tool/app/dist/assets/{mdc-BOLj6Oyq.js → mdc-DTyNMupO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/monokai-BscAjiQZ.js +1 -0
- package/dist/diff_tool/app/dist/assets/moonbit-D9W784E_.js +1 -0
- package/dist/diff_tool/app/dist/assets/nextflow-CSgcYZcx.js +1 -0
- package/dist/diff_tool/app/dist/assets/{nextflow-groovy-DJMQeKeT.js → nextflow-groovy-D7IRt6Pp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nginx-5r5xPc2T.js → nginx-DfF0fMYD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nim-9exKQYMz.js → nim-BbwsXuZD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/nushell--0fT3PI1.js +1 -0
- package/dist/diff_tool/app/dist/assets/one-dark-pro-C6YyR8OD.js +1 -0
- package/dist/diff_tool/app/dist/assets/{org-B2fpAlbt.js → org-BkOBBl1f.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{perl-DV2fcwyY.js → perl-BTXTOl4K.js} +1 -1
- package/dist/diff_tool/app/dist/assets/php-DIMVQWiA.js +1 -0
- package/dist/diff_tool/app/dist/assets/{powershell-CCSX75yM.js → powershell-QtSnmXcu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{pug-DuKcQxFj.js → pug-B_nrb4dJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{qml-C16b4SYx.js → qml-1PXi8G8Z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{r-B1ZldnJf.js → r-CJrAkc2Z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{razor-TYmslaAB.js → razor-DgPUftNd.js} +1 -1
- package/dist/diff_tool/app/dist/assets/red-CYlAq2b0.js +1 -0
- package/dist/diff_tool/app/dist/assets/{regexp-dWCffmDD.js → regexp-C2hS8XvL.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{rst-DEkLr2YR.js → rst-CDouhKnc.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ruby-BJnJzr4u.js → ruby-CAjKW1uO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/rust-DpiIf5JO.js +1 -0
- package/dist/diff_tool/app/dist/assets/{sas-DeRsDbUE.js → sas-qAHkHLc1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{scss-SGV_CwKm.js → scss-Bfx2Ydid.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellscript-BI7khmmR.js → shellscript-Bu76R8y2.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellsession-Nupw_Vvw.js → shellsession-BU8BL0oL.js} +1 -1
- package/dist/diff_tool/app/dist/assets/solarized-dark-b97czJOk.js +1 -0
- package/dist/diff_tool/app/dist/assets/solarized-light-DFPxpIYQ.js +1 -0
- package/dist/diff_tool/app/dist/assets/{soy-B96cBzxv.js → soy-FRl8ozP-.js} +1 -1
- package/dist/diff_tool/app/dist/assets/sql-BacQgsEs.js +1 -0
- package/dist/diff_tool/app/dist/assets/{stata-Dnq48cE6.js → stata-B9kkG-ET.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{surrealql-D6lw4TiD.js → surrealql-qvETr7iY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{svelte-ChVoq9tB.js → svelte-B0z1MgHc.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{templ-Dh1EXuHD.js → templ-DTnPshKb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tex-KTYusNFe.js → tex-Cosab9_H.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ts-tags-DC2RU1_R.js → ts-tags-DNYvLFUH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tsx-DtIM39Jy.js → tsx-Dstq6j1a.js} +1 -1
- package/dist/diff_tool/app/dist/assets/twig-BzqZdwaX.js +1 -0
- package/dist/diff_tool/app/dist/assets/{typescript-BGAE5iuw.js → typescript-YOQ_oE25.js} +1 -1
- package/dist/diff_tool/app/dist/assets/typespec-BGhR2SqG.js +1 -0
- package/dist/diff_tool/app/dist/assets/{typst-nWoGZ22y.js → typst-DTffwfpc.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-iyHf-l4z.js → vue-D4OMj_C5.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-html-prNdIjLu.js → vue-html-kT4WrHGK.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-vine-KSSlnVeg.js → vue-vine-CxeapeMO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xml-DdCC83Xd.js → xml-DWVpuurg.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xsl-DSqZxsez.js → xsl-C0ciup5a.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{yaml-CZcBUWvf.js → yaml-98Fvyfpc.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/fly_sprite_execution_environment.js +5 -10
- package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
- package/dist/execution/tool_backend_execution_environment.js +0 -2
- package/dist/execution/tool_backend_execution_environment.js.map +1 -1
- package/dist/host/client_tool_broker.js +1 -1
- package/dist/host/client_tool_broker.js.map +1 -1
- package/dist/host/execution_runtime.js +5 -4
- package/dist/host/execution_runtime.js.map +1 -1
- package/dist/host/hosted_ephemeral_agent_session.js +0 -2
- package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
- package/dist/host/local_session_host.js +26 -32
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/host/session_host.js.map +1 -1
- package/dist/main.js +15 -29
- package/dist/main.js.map +1 -1
- package/dist/protocol/session_protocol.d.ts +14 -12
- package/dist/protocol/session_protocol.js +30 -7
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/sdk/client_tool_command.d.ts +12 -11
- package/dist/sdk/client_tool_command.js +8 -8
- package/dist/sdk/client_tool_command.js.map +1 -1
- package/dist/sdk/code_mode.js +1 -1
- package/dist/sdk/code_mode.js.map +1 -1
- package/dist/sdk/local_client.js +4 -3
- package/dist/sdk/local_client.js.map +1 -1
- package/dist/sdk/session.js +1 -1
- package/dist/sdk/session.js.map +1 -1
- package/dist/sdk/types.d.ts +2 -1
- package/dist/store/session_snapshot_migrations.js +28 -1
- package/dist/store/session_snapshot_migrations.js.map +1 -1
- package/dist/tui/chat_view.js +3 -1
- package/dist/tui/chat_view.js.map +1 -1
- package/dist/tui/session_chat_app.js +2 -4
- package/dist/tui/session_chat_app.js.map +1 -1
- package/dist/tui/session_chat_controller.js +121 -6
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/dist/tui/ui/custom_editor.js +49 -10
- package/dist/tui/ui/custom_editor.js.map +1 -1
- package/dist/tui/ui/footer.js +4 -2
- package/dist/tui/ui/footer.js.map +1 -1
- package/dist/tui/ui/slash_autocomplete.js +5 -1
- package/dist/tui/ui/slash_autocomplete.js.map +1 -1
- package/package.json +10 -9
- package/dist/diff_tool/app/dist/assets/beancount-D-usSTwE.js +0 -1
- package/dist/diff_tool/app/dist/assets/coq-DuBRPxYg.js +0 -1
- package/dist/diff_tool/app/dist/assets/csharp-oqKa8noW.js +0 -1
- package/dist/diff_tool/app/dist/assets/css-BQflXFb6.js +0 -1
- package/dist/diff_tool/app/dist/assets/dart-CnvKMtbv.js +0 -1
- package/dist/diff_tool/app/dist/assets/dotenv-_5a1GRtc.js +0 -1
- package/dist/diff_tool/app/dist/assets/emacs-lisp-c_oH4hRZ.js +0 -1
- package/dist/diff_tool/app/dist/assets/gn-ilITqXS6.js +0 -1
- package/dist/diff_tool/app/dist/assets/handlebars-CfAla6QK.js +0 -1
- package/dist/diff_tool/app/dist/assets/index-CZUi_I-p.js +0 -340
- package/dist/diff_tool/app/dist/assets/latex-pWSag83P.js +0 -1
- package/dist/diff_tool/app/dist/assets/luau-C2pBCSgt.js +0 -1
- package/dist/diff_tool/app/dist/assets/marko-yLX6iW68.js +0 -1
- package/dist/diff_tool/app/dist/assets/monokai-B_bV9PQ9.js +0 -1
- package/dist/diff_tool/app/dist/assets/moonbit-DgjMoLWr.js +0 -1
- package/dist/diff_tool/app/dist/assets/nextflow-BJtWHP5T.js +0 -1
- package/dist/diff_tool/app/dist/assets/nushell-DHYfO66s.js +0 -1
- package/dist/diff_tool/app/dist/assets/one-dark-pro-CLwyXe_n.js +0 -1
- package/dist/diff_tool/app/dist/assets/php-D-AthX_E.js +0 -1
- package/dist/diff_tool/app/dist/assets/red-DX1BQOs8.js +0 -1
- package/dist/diff_tool/app/dist/assets/rust-Cfkwpbl8.js +0 -1
- package/dist/diff_tool/app/dist/assets/solarized-dark-UdsmMDCL.js +0 -1
- package/dist/diff_tool/app/dist/assets/solarized-light-C1IUL_tW.js +0 -1
- package/dist/diff_tool/app/dist/assets/sql-CsIdKfaO.js +0 -1
- package/dist/diff_tool/app/dist/assets/twig-C6D_TA3n.js +0 -1
- package/dist/diff_tool/app/dist/assets/typespec-BRdr0IET.js +0 -1
|
@@ -345,7 +345,7 @@ The handler receives `sessionId`, owning `agentId`, `callId`, an `AbortSignal`,
|
|
|
345
345
|
|
|
346
346
|
`describe` is optional. When present, the SDK calls it with the arguments and a reduced context containing `sessionId`, `agentId`, `callId`, and `signal` before acknowledgement. This context deliberately has no execution-environment facade. It may return a partial running presentation containing `subject`, `subjectWrap`, `details`, or `metadata`. Tau owns action and operation, fills every omitted field, and acknowledges the resolved presentation before calling `execute`.
|
|
347
347
|
|
|
348
|
-
The execution result may independently include the same partial shape for the terminal card. Return a string or `{ content, presentation? }` for success, or `{ ok: false, error, presentation? }` for a structured failure. Omitted presentation fields use Tau's terminal defaults; empty detail or metadata arrays suppress those defaults. If `describe` throws, the SDK reports a preparation error without calling `execute`. If the client never returns a result because of cancellation, timeout, detach, or another failure, the host produces a complete fallback presentation.
|
|
348
|
+
The execution result may independently include the same partial shape for the terminal card. Return a string or `{ content, presentation? }` for success, or `{ ok: false, error, presentation? }` for a structured failure. Successful `content` may be a string or an ordered array of text/image blocks. Strings are delivered as one text block. Omitted presentation fields use Tau's terminal defaults; empty detail or metadata arrays suppress those defaults. If `describe` throws, the SDK reports a preparation error without calling `execute`. If the client never returns a result because of cancellation, timeout, detach, or another failure, the host produces a complete fallback presentation.
|
|
349
349
|
|
|
350
350
|
Tau preserves every explicit presentation field up to the protocol safety limits; it does not apply display truncation or normalize client text. `truncateTauClientToolText` provides optional caller-controlled line, character, and head or middle truncation. Use its result directly for a subject. For a block of detail text, split the result on `\n` and map each line to one `details` entry; use `maxLines: 1` when assigning it directly to one detail or metadata entry. The helper shapes text but does not replace protocol validation. The SDK aborts handlers on host cancellation, client close, or terminal transport failure. `client.close()` waits for active handlers to settle.
|
|
351
351
|
|
|
@@ -375,7 +375,9 @@ const tickets = createTauCodeModeClientTool({
|
|
|
375
375
|
});
|
|
376
376
|
```
|
|
377
377
|
|
|
378
|
-
Pass `tickets` in `clientTools`. Generated code receives the declared API namespace, progressively disclosed `docs`, console output, live `Date` and `Math`, and agent-scoped scratch files when invoked as a client tool. API calls cross a bounded JSON bridge. The submitted code appears, concisely truncated and character-wrapped, as the running and terminal tool-card subject. The tool description remains explicit caller input; the builder is optional.
|
|
378
|
+
Pass `tickets` in `clientTools`. Generated code receives the declared API namespace, progressively disclosed `docs`, console output, the asynchronous `image(block)` output helper, live `Date` and `Math`, and agent-scoped scratch files when invoked as a client tool. API calls cross a bounded JSON bridge. The submitted code appears, concisely truncated and character-wrapped, as the running and terminal tool-card subject. The tool description remains explicit caller input; the builder is optional.
|
|
379
|
+
|
|
380
|
+
Use `await image({ type: "image", data, mimeType })` to forward a base64 image. Successful code-mode results contain an ordered `content` array of text/image blocks. SDK client tools preserve that order: adjacent console writes form one text block, and each awaited image separates the preceding and following text. The helper validates and prepares JPEG, PNG, or WebP images outside the sandbox, creates no files, and shares the limits described in [tools](tools.md).
|
|
379
381
|
|
|
380
382
|
The SDK also exports `executeTauCodeMode` for standalone execution. The separate `@markusylisiurunen/tau/code-mode` entry point additionally exports file-capability types, `runTauClientToolCommand`, and `runTauCodeModeCommand` for command-backed tools. Use the helpers instead of implementing their framing manually.
|
|
381
383
|
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# OpenRouter
|
|
2
|
+
|
|
3
|
+
`tau tool openrouter` provides standalone, single-request utilities for typed decisions and text or media understanding. They work from a shell inside or outside Tau, without a session, persona, conversation, tools, or session accounting. Only explicitly supplied content is sent to OpenRouter and its selected provider. Judgments are advisory model output, not a security or permission boundary.
|
|
4
|
+
|
|
5
|
+
## Credentials and requirements
|
|
6
|
+
|
|
7
|
+
Install Tau and configure `OPENROUTER_API_KEY`, or put `apiKeys.openrouter` in the global `~/.config/tau/config.json` on the machine running the command. A nonblank environment key takes precedence. Project configuration cannot supply API keys. There is no key flag.
|
|
8
|
+
|
|
9
|
+
Tau's local Bash removes inherited credential-shaped environment variables. When invoking through Bash, configure the key on that machine through global configuration or its own supported environment setup. See [credentials](credentials.md) and [tools](tools.md).
|
|
10
|
+
|
|
11
|
+
Audio and video require `ffprobe` from FFmpeg on `PATH`: `brew install ffmpeg` on macOS or `apt install ffmpeg` on Debian/Ubuntu. Text and images do not require FFmpeg. Media is validated locally, not transcoded.
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
tau tool openrouter --help
|
|
15
|
+
tau tool openrouter decisions --help
|
|
16
|
+
tau tool openrouter chat --help
|
|
17
|
+
tau tool openrouter decisions --list-models
|
|
18
|
+
tau tool openrouter chat --list-models
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Help and model listing require neither credentials nor network access and never read stdin. `--list-models` is a separate mode, incompatible with request flags, and prints one JSON object containing `models`, with each model's `id`, `inputs`, `reasoning` settings, and `role` guidance. `--help` and `-h` print text help.
|
|
22
|
+
|
|
23
|
+
## Fixed model choices
|
|
24
|
+
|
|
25
|
+
An actual request requires an exact `--model` ID from this table. There is no default, arbitrary-ID escape hatch, live discovery, refresh, or automatic model substitution. A versioned ID is not necessarily an immutable provider snapshot; output records the returned model separately.
|
|
26
|
+
|
|
27
|
+
| Operation | Model | Inputs and suggested role | Reasoning efforts |
|
|
28
|
+
| --- | --- | --- | --- |
|
|
29
|
+
| `decisions` | `typesafe/jev-1.13` | Structured state and questions; classification, scoring, verification with probabilities | Not supported |
|
|
30
|
+
| `chat` | `google/gemini-3.8-flash` | Text, images, audio, video; first choice for audio/video and image-heavy analysis | `low`, `medium`, `high` |
|
|
31
|
+
| `chat` | `openai/gpt-6-luna` | Text and images; cheap everyday extraction, summarization, and routine questions | `none`, `low`, `medium`, `high`, `xhigh`, `max` |
|
|
32
|
+
| `chat` | `openai/gpt-6.1-sol` | Text and images; coding, debugging, technical reasoning | `low`, `medium`, `high`, `xhigh`, `max` |
|
|
33
|
+
| `chat` | `anthropic/claude-opus-5.5` | Text and images; premium generalist for writing, synthesis, difficult reasoning, and second opinions | `low`, `medium`, `high`, `xhigh`, `max` |
|
|
34
|
+
|
|
35
|
+
Roles are selection guidance, not benchmark guarantees or restrictions on tasks. Unsupported settings and modalities fail locally rather than switching models, transcribing audio, or extracting video frames.
|
|
36
|
+
|
|
37
|
+
## Input and examples
|
|
38
|
+
|
|
39
|
+
### Decisions
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
tau tool openrouter decisions --model typesafe/jev-1.13 --input ./decision.json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`--input` is required. A file path reads a UTF-8 JSON document. Exactly `--input -` reads one complete document from stdin until EOF:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
tau tool openrouter decisions --model typesafe/jev-1.13 --input - <<'JSON'
|
|
49
|
+
{
|
|
50
|
+
"state": { "ticket": "The checkout page crashes when I click Pay." },
|
|
51
|
+
"questions": {
|
|
52
|
+
"is_bug": {
|
|
53
|
+
"type": "noul",
|
|
54
|
+
"instructions": "Does this report describe broken product behavior?"
|
|
55
|
+
},
|
|
56
|
+
"team": {
|
|
57
|
+
"type": "choice",
|
|
58
|
+
"instructions": "Which team should own this ticket?",
|
|
59
|
+
"criteria": {
|
|
60
|
+
"payments": "Checkout or billing problems",
|
|
61
|
+
"other": "Problems unrelated to payments"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"urgency": {
|
|
65
|
+
"type": "score",
|
|
66
|
+
"instructions": "How urgent is the issue?",
|
|
67
|
+
"criteria": ["Can wait", "Fix soon", "Blocking revenue"]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
JSON
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Stdin must not be a terminal and must reach EOF within 30 seconds. Empty input, malformed JSON, multiple documents, invalid UTF-8, and oversized input fail before any request.
|
|
75
|
+
|
|
76
|
+
The input contains exactly `state` and `questions`. The model belongs only in `--model`, not the document. `state` is a string, JSON object, or array. `questions` is a nonempty map of nonempty names to questions:
|
|
77
|
+
|
|
78
|
+
- `noul`: required `instructions`; optional `criteria` with both `true` and `false`. The answer's `noul` is a probability from zero to one, not a boolean.
|
|
79
|
+
- `choice`: required `instructions` and a nonempty `criteria` object mapping category names to guidance. The answer's `choice` names a supplied category; optional `probabilities` and `confidence` retain provider probabilities.
|
|
80
|
+
- `score`: required `instructions` and a nonempty ordered `criteria` array. The answer's `score` is a numeric position from zero to the last rubric index, possibly fractional. Optional `legend`, `probabilities`, and `confidence` retain distribution details.
|
|
81
|
+
|
|
82
|
+
Instructions and criterion guidance accept strings, JSON objects, or arrays; choice criterion values may also be `null`. Unknown question fields and the reserved question/category name `__proto__` are rejected. Arbitrary keys within state and guidance are preserved. Several independent questions can share one state; dependent questions require separate calls.
|
|
83
|
+
|
|
84
|
+
The command posts once to OpenRouter's alpha Decisions endpoint. It validates answer names, types, categories, rubric ranges, and probability bounds. Successful output is one JSON object:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"requested_model": "typesafe/jev-1.13",
|
|
89
|
+
"model": "typesafe/jev-1.13-20260917",
|
|
90
|
+
"answers": { "is_bug": { "type": "noul", "noul": 0.96 } },
|
|
91
|
+
"usage": { "input_tokens": 100, "output_tokens": 10, "cost": 0.00001 }
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
This illustrates a single-question response; every submitted question must have an answer. Provider `id` and `provider` are included when supplied. Usage contains reported token counts and optional reported cost, never an estimated cost. Negative judgments and low confidence still exit successfully. No thresholds or prose explanations are invented.
|
|
96
|
+
|
|
97
|
+
### Chat
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
tau tool openrouter chat \
|
|
101
|
+
--model openai/gpt-6.1-sol \
|
|
102
|
+
--system 'Review carefully. Separate observations from assumptions.' \
|
|
103
|
+
--prompt-file ./review-context.txt \
|
|
104
|
+
--image ./error.png \
|
|
105
|
+
--reasoning high
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Flags belong after `chat`. No positional arguments are accepted.
|
|
109
|
+
|
|
110
|
+
| Flag | Contract |
|
|
111
|
+
| --- | --- |
|
|
112
|
+
| `--model <id>` | Required exact shipped chat model ID |
|
|
113
|
+
| `--prompt <text>` or `--prompt-file <path>` | Exactly one required; nonblank UTF-8 user prompt |
|
|
114
|
+
| `--system <text>` or `--system-file <path>` | Optional, mutually exclusive, nonblank explicit system instructions |
|
|
115
|
+
| `--image <path>` | Repeatable local PNG, JPEG, or WebP image |
|
|
116
|
+
| `--audio <path>` | Repeatable local WAV or MP3 audio; Gemini only |
|
|
117
|
+
| `--video <path>` | Local MP4 video; Gemini only |
|
|
118
|
+
| `--reasoning <effort>` | Optional model-supported effort from the table |
|
|
119
|
+
|
|
120
|
+
All file paths resolve relative to the invoking working directory. Prompt/system files name regular files; `-` has special stdin meaning only for decisions. Omitting system instructions sends no system message. Omitting reasoning leaves that parameter to the provider, not necessarily disabled. Effort does not request a written reasoning trace.
|
|
121
|
+
|
|
122
|
+
Media flags may be mixed; the request contains the prompt first, followed by attachments in command-line order. Files are embedded inline as data URLs or base64 audio, not uploaded to public hosting. There are no remote URL inputs, generated media, automatic resizing, clipping, conversion, chunking, conversation history, or tool execution.
|
|
123
|
+
|
|
124
|
+
```sh
|
|
125
|
+
tau tool openrouter chat \
|
|
126
|
+
--model google/gemini-3.8-flash \
|
|
127
|
+
--prompt 'Compare this recording with the reference and spoken requirements.' \
|
|
128
|
+
--video ./recording.mp4 \
|
|
129
|
+
--image ./reference.png \
|
|
130
|
+
--audio ./requirements.wav > ./analysis.json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Chat sends one non-streaming completion request. It imposes no output token cap: neither `max_tokens` nor `max_completion_tokens` is sent, and there is no `--max-tokens` flag. Provider defaults, remaining context, and model limits still apply; omission does not mean unlimited output.
|
|
134
|
+
|
|
135
|
+
Successful stdout contains one JSON object with `requested_model`, returned `model`, `answer` (text or `null`), and `finish_reason`. Reported `id`, `provider`, `usage` (including cost and token details), `native_finish_reason`, and `refusal` appear when supplied. Missing optional metadata is not fabricated. Reasoning is never substituted for the answer or returned as answer text.
|
|
136
|
+
|
|
137
|
+
- `stop` with no refusal is a complete answer.
|
|
138
|
+
- `length` is truncated output, even if answer text is empty.
|
|
139
|
+
- `content_filter` or a nonempty `refusal` indicates refusal, not a complete answer.
|
|
140
|
+
|
|
141
|
+
These are successful exchanges with distinguishable outcomes; scripts must inspect them. Provider errors, malformed responses, unexpected tool calls, and a normal stop with neither answer nor refusal fail instead of masquerading as an answer.
|
|
142
|
+
|
|
143
|
+
## Outputs and recovery
|
|
144
|
+
|
|
145
|
+
These are conservative utility safety limits, not promises of every provider's maximum capacity. All byte limits use decimal bytes.
|
|
146
|
+
|
|
147
|
+
| Resource | Limit |
|
|
148
|
+
| --- | --- |
|
|
149
|
+
| Decisions JSON, each prompt or system input | 1,000,000 UTF-8 bytes |
|
|
150
|
+
| Attachments per request | 16 total, including at most 4 audio files and 1 video |
|
|
151
|
+
| Each image | 5,000,000 bytes, 8,000 pixels per edge, 32 megapixels; one frame |
|
|
152
|
+
| Each audio or video | 12,000,000 bytes |
|
|
153
|
+
| Audio formats | Single-stream PCM 16-bit little-endian WAV or MP3 |
|
|
154
|
+
| Video format | H.264 MP4 up to 3840×2160 with optional AAC audio |
|
|
155
|
+
| Audio/video duration | Known positive duration; 600 seconds combined |
|
|
156
|
+
| Complete encoded JSON request | 20,000,000 bytes, including base64 expansion and text |
|
|
157
|
+
| Response | 8,000,000 bytes |
|
|
158
|
+
| Local media probe | 15 seconds per file |
|
|
159
|
+
| HTTP request and response | 10 minutes |
|
|
160
|
+
|
|
161
|
+
Oversized or unsupported inputs fail before sending. Audio/video validation uses private temporary copies of the exact bytes being submitted and removes those copies after probing. Keep FFmpeg current when handling untrusted media.
|
|
162
|
+
|
|
163
|
+
Diagnostics go to stderr and failures exit nonzero. Authentication, insufficient credits, permission failures, rate limits, and provider/service failures report distinct status diagnostics without dumping provider bodies. There are no automatic retries, including after timeouts or interrupted connections: the provider may already have charged for an unknown outcome. A response exceeding the safety bound can fail after a billable request.
|
|
164
|
+
|
|
165
|
+
No paid inference compatibility guarantee follows from local validation. OpenRouter's alpha Decisions contract and provider availability can change independently of Tau. Review the actual output and current service errors rather than treating model judgments as verified facts.
|
|
@@ -16,11 +16,13 @@ The **host** creates, observes, persists, and recovers sessions. It owns model c
|
|
|
16
16
|
|
|
17
17
|
The host's home owns data such as session snapshots, authentication storage, usage logs, and the local history database. Use Tau commands and session operations to manage these stores rather than editing their files directly.
|
|
18
18
|
|
|
19
|
+
MCP connections are host-owned. Configure servers on the host; stdio servers run there, with host credentials and host resource access, not in the session execution environment.
|
|
20
|
+
|
|
19
21
|
The intrinsic `tau_docs` tool is also host-owned. It reads documentation packaged with the installed host version.
|
|
20
22
|
|
|
21
23
|
### Execution environment
|
|
22
24
|
|
|
23
|
-
The **execution environment** is the machine the agent can act on. It owns the agent-visible working directory (`cwd`), home, platform, environment, filesystem, processes, project repository, project configuration and content, `AGENTS.md` files,
|
|
25
|
+
The **execution environment** is the machine the agent can act on. It owns the agent-visible working directory (`cwd`), home, platform, environment, filesystem, processes, project repository, project configuration and content, `AGENTS.md` files, skills, and command resolution.
|
|
24
26
|
|
|
25
27
|
Tau asks the execution environment to read or execute against those resources. The host must not treat its own filesystem as a shortcut, even when a local execution environment happens to share it.
|
|
26
28
|
|
|
@@ -50,9 +52,9 @@ A Fly Sprite can place the execution environment on another target while the hos
|
|
|
50
52
|
| Resource or behavior | Canonical owner | Consequence |
|
|
51
53
|
| --- | --- | --- |
|
|
52
54
|
| Agent `cwd`, home, repository, files, and commands | Execution environment | Use target paths in prompts, `session.create`, and agent tool calls. |
|
|
53
|
-
| `.tau/config.json`,
|
|
55
|
+
| `.tau/config.json`, personas, prompts, skills, and `AGENTS.md` used by a session | Execution environment | Edit them on the target and relative to the session `cwd`. |
|
|
54
56
|
| Global runtime content for a session | Execution-environment home | `~/.config/tau` is the target user's home when runtime content is collected. |
|
|
55
|
-
| Model and host-tool credentials | Host | Set environment secrets where the host process runs.
|
|
57
|
+
| Model and host-tool credentials | Host | Set environment secrets where the host process runs. API keys come from the host environment or private global host configuration. |
|
|
56
58
|
| Codex OAuth accounts | Host home | Run `tau auth …` on the host machine. Do not edit auth storage. |
|
|
57
59
|
| Session snapshots | Host home | Local defaults live under the host's Tau config directory. Do not edit session files. |
|
|
58
60
|
| Local transcript history and remote history outbox | Host home | History follows the host, not an attached TUI or execution target. |
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Personas
|
|
2
2
|
|
|
3
|
-
A persona is Tau's complete model-facing working profile. It chooses a provider and model, supplies the base system prompt, sets reasoning and service behavior, and selects tools
|
|
3
|
+
A persona is Tau's complete model-facing working profile. It chooses a provider and model, supplies the base system prompt, sets reasoning and service behavior, and selects tools. Changing persona changes how future turns run without creating a new session.
|
|
4
4
|
|
|
5
5
|
Tau ships generated built-in personas and discovers custom persona Markdown from the execution environment. The effective list is version-specific and scope-specific, so inspect the current catalog rather than relying on a memorized list of names.
|
|
6
6
|
|
|
7
7
|
## Built-in and effective personas
|
|
8
8
|
|
|
9
|
-
Built-in personas are generated from Tau's current model catalog. Most model families have separate chat and coder variants; some families expose only the variants Tau supports. Built-ins carry Tau-maintained prompts, defaults, tool selections
|
|
9
|
+
Built-in personas are generated from Tau's current model catalog. Most model families have separate chat and coder variants; some families expose only the variants Tau supports. Built-ins carry Tau-maintained prompts, defaults, tool selections and subagent supervision tools.
|
|
10
10
|
|
|
11
11
|
The Opus 5.5 chat and coder personas are available only when `anthropic/claude-opus-5-5` is present in the effective model catalog. The Sonnet 5.5 variants (`sonnet-5.5-chat` and `sonnet-5.5-coder`) likewise require `anthropic/claude-sonnet-5-5`.
|
|
12
12
|
|
|
@@ -44,7 +44,7 @@ These locations belong to the execution environment. An attached TUI does not co
|
|
|
44
44
|
|
|
45
45
|
## Persona file contract
|
|
46
46
|
|
|
47
|
-
A persona is Markdown with YAML frontmatter. `id`, `provider`, and `model` are required.
|
|
47
|
+
A persona is Markdown with YAML frontmatter. `id`, `provider`, and `model` are required. A non-empty Markdown body is required and supplies the persona's own base system prompt.
|
|
48
48
|
|
|
49
49
|
```markdown
|
|
50
50
|
---
|
|
@@ -58,8 +58,6 @@ allowedReasoningLevels:
|
|
|
58
58
|
- medium
|
|
59
59
|
- high
|
|
60
60
|
- xhigh
|
|
61
|
-
skills:
|
|
62
|
-
- release-check
|
|
63
61
|
tools:
|
|
64
62
|
- bash
|
|
65
63
|
- write
|
|
@@ -82,55 +80,27 @@ The frontmatter must be a YAML object between valid delimiters. Unknown fields a
|
|
|
82
80
|
| `provider` | Non-empty provider ID from the installed [model catalog](models.md). |
|
|
83
81
|
| `model` | Non-empty model ID for that provider. The ID may be unbundled when the provider is known. |
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
Each custom persona is self-contained: it supplies its provider, model, prompt, and optional settings.
|
|
86
84
|
|
|
87
85
|
### Optional fields
|
|
88
86
|
|
|
89
87
|
| Field | Contract |
|
|
90
88
|
| --- | --- |
|
|
91
|
-
| `
|
|
92
|
-
| `label` | Display label. A blank or omitted label falls back to the base label or `custom`. |
|
|
89
|
+
| `label` | Display label. A blank or omitted label falls back to `custom`. |
|
|
93
90
|
| `description` | Short catalog description. |
|
|
94
91
|
| `reasoning` | Default effort: `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, or `max`. |
|
|
95
92
|
| `serviceTier` | `priority` or `flex`. Currently meaningful for `openai` and `openai-codex`. |
|
|
96
93
|
| `allowedReasoningLevels` | Array of reasoning efforts offered by the TUI selector. |
|
|
97
|
-
| `skills` | `"*"`, a list of discovered skill names, or `[]`. |
|
|
98
94
|
| `tools` | Explicit list of persona-controlled tools. |
|
|
99
95
|
|
|
100
|
-
|
|
96
|
+
Every persona exposes all discovered skills. If a custom persona omits `tools`, Tau enables the ordinary host tools plus subagent supervision tools. An explicit `tools` list without `spawn_agent` prevents subagent launches. See [skills](skills.md) and [subagents](subagents.md) for those contracts.
|
|
101
97
|
|
|
102
98
|
The persona-controlled tool names are:
|
|
103
99
|
|
|
104
|
-
- `bash`, `write`, `edit`, `view_image`, `web`, `nook`, and `
|
|
100
|
+
- `bash`, `write`, `edit`, `view_image`, `web`, `nook`, `history`, and `mcp`;
|
|
105
101
|
- `spawn_agent`, `send_input_to_agent`, `wait_for_agents`, `list_agents`, and `interrupt_agent`.
|
|
106
102
|
|
|
107
|
-
An explicit `tools` array replaces defaults. Names are normalized to lowercase, duplicates are removed, and unknown names reject the persona. `tools: []` leaves the persona without these persona-controlled tools. Some host capabilities, such as goal management, are supplied independently of this list. Listing `nook` does not make it usable without effective Nook configuration. [Tools](tools.md) explains eligibility and ownership.
|
|
108
|
-
|
|
109
|
-
## Extending a built-in
|
|
110
|
-
|
|
111
|
-
`extends` reuses one shipped built-in persona as a base while still requiring an explicit provider and model:
|
|
112
|
-
|
|
113
|
-
```markdown
|
|
114
|
-
---
|
|
115
|
-
id: concise-haiku-coder
|
|
116
|
-
extends: opus-5.5-coder
|
|
117
|
-
provider: anthropic
|
|
118
|
-
model: claude-haiku-4-5
|
|
119
|
-
reasoning: low
|
|
120
|
-
---
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Because the body is empty, this persona inherits the built-in's base prompt. It also inherits the base label, description, settings not explicitly overridden, allowed reasoning levels, skills, tools, and subagent map.
|
|
124
|
-
|
|
125
|
-
Important boundaries are:
|
|
126
|
-
|
|
127
|
-
- `extends` resolves shipped built-ins, not another custom persona.
|
|
128
|
-
- Lookup of the built-in ID is case-insensitive.
|
|
129
|
-
- A non-empty Markdown body replaces the inherited base prompt.
|
|
130
|
-
- Explicit `skills` or `tools` replaces the inherited selection.
|
|
131
|
-
- `reasoning` and `serviceTier` override their individual inherited settings; omitted settings remain inherited.
|
|
132
|
-
|
|
133
|
-
Extending a built-in is useful when Tau's maintained behavior is the desired base. A standalone body is more stable when the persona must not change as Tau updates its built-in prompts.
|
|
103
|
+
An explicit `tools` array replaces defaults. Names are normalized to lowercase, duplicates are removed, and unknown names reject the persona. `tools: []` leaves the persona without these persona-controlled tools. Some host capabilities, such as goal management, are supplied independently of this list. Listing `nook` does not make it usable without effective Nook configuration. Listing `mcp` requires enabled MCP servers configured on the host. [Tools](tools.md) explains eligibility and ownership.
|
|
134
104
|
|
|
135
105
|
## Selecting a persona
|
|
136
106
|
|
|
@@ -166,13 +136,13 @@ The TUI resolves that command against the session catalog case-insensitively. `C
|
|
|
166
136
|
|
|
167
137
|
`allowedReasoningLevels` controls which values the TUI cycles for that persona. It is a presentation allowlist, not a protocol-level prohibition. When omitted, the TUI offers the standard reasoning enum for a reasoning-capable model. For a model whose catalog entry says `reasoning: false`, the selector resolves to `none`.
|
|
168
138
|
|
|
169
|
-
An empty `allowedReasoningLevels` does not create an empty selector.
|
|
139
|
+
An empty `allowedReasoningLevels` does not create an empty selector. The TUI uses its normal model-aware choices.
|
|
170
140
|
|
|
171
141
|
`serviceTier` is passed with supported OpenAI and OpenAI Codex requests. `priority` requests the provider's priority service and `flex` requests flex service. Availability, billing, and rejection behavior remain provider-account concerns. Other providers do not currently use this setting.
|
|
172
142
|
|
|
173
143
|
## Reloading changes
|
|
174
144
|
|
|
175
|
-
Run `/reload` while the TUI session is idle after editing personas,
|
|
145
|
+
Run `/reload` while the TUI session is idle after editing personas, skills, or project context. Reload re-discovers the effective catalog and rebuilds the current session prompt and tools.
|
|
176
146
|
|
|
177
147
|
If the current persona ID still exists, Tau applies its newly loaded definition. This can reset runtime settings such as reasoning or service tier to the definition's values. If the ID disappeared, Tau selects the first effective persona. Existing session messages remain; changing a persona does not rewrite prior model-facing history.
|
|
178
148
|
|
|
@@ -183,12 +153,10 @@ A reload does not alter a turn already in progress, and the TUI refuses the oper
|
|
|
183
153
|
An invalid persona is skipped and reported as a configuration warning. Other valid personas still load. Frequent causes are:
|
|
184
154
|
|
|
185
155
|
- malformed YAML, missing frontmatter delimiters, or frontmatter that is not an object;
|
|
186
|
-
- missing `id`, `provider`, or
|
|
156
|
+
- missing `id`, `provider`, `model`, or a non-empty prompt body;
|
|
187
157
|
- an `id` that does not exactly match the filename;
|
|
188
158
|
- an unknown provider or an unresolved model;
|
|
189
|
-
- an `extends` target that is not a shipped built-in;
|
|
190
159
|
- an invalid reasoning effort or service tier;
|
|
191
|
-
- `skills` that is neither `"*"` nor a string list, or contains a blank entry;
|
|
192
160
|
- an unknown persona tool.
|
|
193
161
|
|
|
194
162
|
`/reload` surfaces warning paths directly in the transcript. For a new local TUI session, `tau --debug --persona <id>` shows the selected model, settings, skills, subagents, tools, and complete effective prompt. If a remote edit appears to have no effect, confirm the session execution environment and `cwd` before changing another copy of the file. [Troubleshooting](troubleshooting.md) covers that check in more detail.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Prompts and project context
|
|
2
2
|
|
|
3
|
-
Tau has several ways to provide instructions or reusable text, and they enter a session at different points. Prompt templates fill the editor on demand. `AGENTS.md` files provide standing project instructions.
|
|
3
|
+
Tau has several ways to provide instructions or reusable text, and they enter a session at different points. Prompt templates fill the editor on demand. `AGENTS.md` files provide standing project instructions. Leading hidden system blocks attach model-facing instructions to one user message.
|
|
4
4
|
|
|
5
|
-
These mechanisms do not choose models or tool access. [Personas](personas.md) own the base system prompt, model settings
|
|
5
|
+
These mechanisms do not choose models or tool access. [Personas](personas.md) own the base system prompt, model settings and tool allowlist. Model-specific system notices are configured separately in the [configuration reference](config-reference.md).
|
|
6
6
|
|
|
7
7
|
## Prompt templates fill the editor
|
|
8
8
|
|
|
@@ -17,27 +17,19 @@ Tau discovers prompt files from:
|
|
|
17
17
|
|
|
18
18
|
The global location is in scope only when the execution-environment working directory is inside its home directory. Tau walks project levels from the working directory toward home, or toward the filesystem root when outside home. The nearest project definition wins over parent and global definitions. Prompt IDs are compared case-insensitively for precedence and lookup.
|
|
19
19
|
|
|
20
|
-
A prompt file
|
|
20
|
+
A prompt's ID is its filename without `.md`. Each file requires YAML frontmatter with a non-empty display `label`. For example, `release-summary.md`:
|
|
21
21
|
|
|
22
22
|
```markdown
|
|
23
23
|
---
|
|
24
|
-
id: release-summary
|
|
25
24
|
label: release summary
|
|
26
|
-
description: Summarize changes for a release announcement.
|
|
27
25
|
---
|
|
28
26
|
|
|
29
27
|
Summarize the changes since the previous release. Separate user-visible changes from internal maintenance, and call out any migration steps.
|
|
30
28
|
```
|
|
31
29
|
|
|
32
|
-
The fields are
|
|
30
|
+
The required `label` appears in TUI autocomplete and the Telegram prompt picker. Unknown frontmatter fields are discarded. The Markdown body is the text inserted into the editor.
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
- `label`: optional display label.
|
|
36
|
-
- `description`: optional catalog and autocomplete description.
|
|
37
|
-
|
|
38
|
-
Unknown fields are discarded. The Markdown body is the text inserted into the editor.
|
|
39
|
-
|
|
40
|
-
Only files ending in lowercase `.md` are discovered. Invalid YAML, non-object frontmatter, a missing `id`, or an ID/filename mismatch causes Tau to skip the file and report a warning.
|
|
32
|
+
Only files ending in lowercase `.md` are discovered. Invalid YAML, non-object frontmatter, or a missing or invalid label causes Tau to skip the file and report a warning.
|
|
41
33
|
|
|
42
34
|
### Invoke a prompt
|
|
43
35
|
|
|
@@ -101,32 +93,6 @@ When scanning directly from the execution home, Tau also skips direct children m
|
|
|
101
93
|
|
|
102
94
|
It additionally skips the direct `Library` child on macOS and `snap` on Linux. A project directory with one of these names is still scanned when it is not a direct child of home.
|
|
103
95
|
|
|
104
|
-
The limits and exclusions apply only to automatic descendant discovery. They do not constrain explicitly configured context files.
|
|
105
|
-
|
|
106
|
-
## Add explicit context files
|
|
107
|
-
|
|
108
|
-
`agentContextFiles` adds specific text files to the full injected context. The files can use any name:
|
|
109
|
-
|
|
110
|
-
```json
|
|
111
|
-
{
|
|
112
|
-
"agentContextFiles": ["docs/AI_GUIDE.md", "services/api/AGENTS.md"]
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Paths are resolved from the level that declares them:
|
|
117
|
-
|
|
118
|
-
- A global path in `~/.config/tau/config.json` is relative to home.
|
|
119
|
-
- A project path in `<project>/.tau/config.json` is relative to `<project>`, the directory containing `.tau/`.
|
|
120
|
-
- Absolute paths remain absolute.
|
|
121
|
-
|
|
122
|
-
Values are additive across configuration levels, from global through the nearest project level. Tau resolves them to paths and removes exact duplicates while preserving order.
|
|
123
|
-
|
|
124
|
-
An explicit path must resolve to a real file whose directory is an ancestor or descendant of the working directory. An in-home session cannot escape home through a path or symlink. Sibling files, missing files, and ineligible files are not injected.
|
|
125
|
-
|
|
126
|
-
Explicit files bypass the automatic child scan's depth, directory-count, and excluded-directory rules. Tau still discovers only `AGENTS.md` automatically; every other filename must be configured explicitly.
|
|
127
|
-
|
|
128
|
-
Use this setting when important project instructions live outside the ordinary `AGENTS.md` hierarchy. Every included file is sent to the model as project context, so do not include secrets or unrelated content.
|
|
129
|
-
|
|
130
96
|
## Disable project context
|
|
131
97
|
|
|
132
98
|
Start Tau with:
|
|
@@ -135,7 +101,7 @@ Start Tau with:
|
|
|
135
101
|
tau --no-agent-context-files
|
|
136
102
|
```
|
|
137
103
|
|
|
138
|
-
This disables ancestor `AGENTS.md` injection
|
|
104
|
+
This disables ancestor `AGENTS.md` injection and the descendant paths-only scan. It does not disable personas, prompt templates, or [skills](skills.md).
|
|
139
105
|
|
|
140
106
|
The option applies to local TUI sessions and to hosts started with `tau serve`. For the Node SDK, `noAgentContextFiles: true` provides the same host-level behavior. An attached client cannot retroactively change how an existing remote host session was created.
|
|
141
107
|
|
|
@@ -146,10 +112,10 @@ A subagent normally inherits the parent session's working directory and composed
|
|
|
146
112
|
The alternate directory controls:
|
|
147
113
|
|
|
148
114
|
- target environment and repository metadata,
|
|
149
|
-
- target applicable `AGENTS.md
|
|
150
|
-
- target-discovered skills
|
|
115
|
+
- target applicable `AGENTS.md`,
|
|
116
|
+
- all target-discovered skills.
|
|
151
117
|
|
|
152
|
-
The parent session remains the source of truth for the selected persona, model catalog, model settings, and tool policy.
|
|
118
|
+
The parent session remains the source of truth for the selected persona, model catalog, model settings, and tool policy. It does not replace the source persona with a persona found in the target directory. See [subagents](subagents.md) for the full launch contract.
|
|
153
119
|
|
|
154
120
|
## Leading hidden system blocks
|
|
155
121
|
|
|
@@ -176,4 +142,4 @@ tau --debug --persona release-coder
|
|
|
176
142
|
|
|
177
143
|
Add `--no-agent-context-files` to verify the context-free variant. Debug mode is TUI startup functionality and is not available with `tau serve`.
|
|
178
144
|
|
|
179
|
-
If expected context is missing, verify the execution-environment `cwd` and `home`, not just the attached client's current directory. Then check exact filenames, canonical path eligibility,
|
|
145
|
+
If expected context is missing, verify the execution-environment `cwd` and `home`, not just the attached client's current directory. Then check exact filenames, canonical path eligibility, scan exclusions, and reload warnings. See [troubleshooting](troubleshooting.md) for broader diagnostics.
|
|
@@ -105,19 +105,18 @@ The host process executes agent-visible filesystem and command operations on its
|
|
|
105
105
|
|
|
106
106
|
### Fly Sprite
|
|
107
107
|
|
|
108
|
-
The host must already have a
|
|
108
|
+
The host must already have a connection configured in `flySprites`, and the Sprite must already exist:
|
|
109
109
|
|
|
110
110
|
```sh
|
|
111
111
|
tau attach \
|
|
112
112
|
--new \
|
|
113
113
|
--execution-kind fly-sprite \
|
|
114
|
-
--fly-api production \
|
|
115
114
|
--fly-sprite tau-build-7 \
|
|
116
115
|
--cwd /home/sprite/tau \
|
|
117
116
|
wss://tau.example.com
|
|
118
117
|
```
|
|
119
118
|
|
|
120
|
-
`--fly-
|
|
119
|
+
`--fly-sprite` names an existing Sprite. Tau does not provision it or prepare its repository.
|
|
121
120
|
|
|
122
121
|
Bridge URLs, API targets, home paths, and credential environment variables are host-owned [configuration](configuration.md). Session creation resolves Tau project configuration and content from the execution cwd through the selected environment. The execution environment itself remains a generic filesystem and process target; it does not own Tau’s configuration precedence or session policy.
|
|
123
122
|
|
|
@@ -146,7 +145,7 @@ An attached session spans three logical machines even when two happen to share o
|
|
|
146
145
|
### The execution environment owns
|
|
147
146
|
|
|
148
147
|
- the agent-visible cwd, home, files, and repository
|
|
149
|
-
- project `.tau` content,
|
|
148
|
+
- project `.tau` content, prompts, skills, and AGENTS.md files
|
|
150
149
|
- command execution, platform, PATH, and runtime dependencies
|
|
151
150
|
- automatic-compaction archives and other target-side temporary files
|
|
152
151
|
|
|
@@ -158,15 +157,15 @@ Different changes have different owners:
|
|
|
158
157
|
|
|
159
158
|
| Change | Action |
|
|
160
159
|
| --- | --- |
|
|
161
|
-
| Project config,
|
|
162
|
-
|
|
|
160
|
+
| Project config, personas, prompts, skills, or AGENTS.md in the execution environment | Wait for idle, then run `/reload`. |
|
|
161
|
+
| Global model `apiKeys` on the host | Restart the host. |
|
|
163
162
|
| Managed Codex auth changed with `tau auth` | No host restart; auth storage is read again on later credential resolutions. |
|
|
164
163
|
| Attaching themes, speech config, or configured client tools | Restart `tau attach`. |
|
|
165
164
|
| Host process environment variables, history target, WebSocket listener, Fly API target, or host startup flags | Restart `tau serve`. |
|
|
166
165
|
| Host Tau package, built-in tools, protocol, session recovery code, or built-in documentation | Upgrade and restart the host. |
|
|
167
166
|
| TUI package, keybindings, rendering, local speech, or client-tool implementation | Upgrade and restart the attaching client. |
|
|
168
167
|
|
|
169
|
-
`/reload` is a session operation. It asks the host to resolve session-owned content,
|
|
168
|
+
`/reload` is a session operation. It asks the host to resolve session-owned content, from the execution environment and does not reload either process’s executable code or environment. Managed Codex auth storage is separate and is read again on later credential resolutions. For a long-running WebSocket host, restarting only the client cannot update the model-facing built-in docs or host tools. For an old client against a new host, restarting only the host cannot update local TUI behavior. See [credentials](credentials.md) for complete precedence and apply boundaries.
|
|
170
169
|
|
|
171
170
|
## Reconnect and observe safely
|
|
172
171
|
|
|
@@ -22,26 +22,25 @@ Interruption, timeouts, output limits, and process-group termination bound execu
|
|
|
22
22
|
|
|
23
23
|
## Treat project content as executable policy
|
|
24
24
|
|
|
25
|
-
The execution environment supplies more than source files. Tau can load project `.tau/config.json`,
|
|
25
|
+
The execution environment supplies more than source files. Tau can load project `.tau/config.json`, personas, prompts, skills, `.agents/skills`, and `AGENTS.md` from the working directory and its discovery path. This content can select models and tools, add instructions, define workflows, or alter which globally trusted client tools are advertised.
|
|
26
26
|
|
|
27
27
|
A repository checkout is therefore part of Tau's trust boundary. Before using it with meaningful credentials or write access, inspect relevant `.tau/`, `.agents/`, and `AGENTS.md` content, including nearer nested levels. Pay particular attention to:
|
|
28
28
|
|
|
29
29
|
- persona system prompts, tool lists, and model launch allowlists;
|
|
30
30
|
- skill instructions and any scripts they direct the agent to run;
|
|
31
|
-
- model overlays that replace endpoints, headers, capabilities, or token limits;
|
|
32
31
|
- project configuration that supplies API keys, Nook targets, model notices, or hosted-environment definitions;
|
|
33
32
|
- `enabledClientTools`, which can select commands previously trusted in the user's global configuration; and
|
|
34
33
|
- provision scripts or other repository automation used by integrations such as Telegram.
|
|
35
34
|
|
|
36
35
|
Project configuration cannot define a command client-tool executable. It can only select definitions from global configuration. That restriction prevents a checkout from directly introducing a new client process, but it does not make a selected command harmless.
|
|
37
36
|
|
|
38
|
-
`--no-agent-context-files` disables `AGENTS.md` and
|
|
37
|
+
`--no-agent-context-files` disables automatic `AGENTS.md` injection and descendant path discovery. It does not disable project configuration, personas, skills, or tools. `--no-client-tools` disables TUI-provided tools, not host tools. Use the appropriate control rather than treating either flag as a general safe mode.
|
|
39
38
|
|
|
40
39
|
Prompt templates are inserted into the editor for review rather than submitted automatically. Leading `<system>` blocks, persona prompts, model notices, and committed session messages are model-facing and may become durable session content. Do not place secrets in instructions, prompts, or model notices.
|
|
41
40
|
|
|
42
41
|
## Trust remote model metadata as routing configuration
|
|
43
42
|
|
|
44
|
-
A model-owning Tau host refreshes compatible provider catalogs from `pi.dev` and caches them in `~/.config/tau/models-store.json`. This is a trusted software-update channel, not informational discovery: a remote model record can replace its API adapter, endpoint, headers, compatibility behavior, limits, and pricing
|
|
43
|
+
A model-owning Tau host refreshes compatible provider catalogs from `pi.dev` and caches them in `~/.config/tau/models-store.json`. This is a trusted software-update channel, not informational discovery: a remote model record can replace its API adapter, endpoint, headers, compatibility behavior, limits, and pricing. Compromise or misconfiguration of that service could redirect provider requests and credentials. Set `TAU_OFFLINE` to disable automatic catalog requests.
|
|
45
44
|
|
|
46
45
|
## Keep secrets with the process that needs them
|
|
47
46
|
|
|
@@ -53,7 +52,7 @@ Prefer host process environment variables or private global configuration over p
|
|
|
53
52
|
|
|
54
53
|
Never put credentials in:
|
|
55
54
|
|
|
56
|
-
- committed
|
|
55
|
+
- committed project files;
|
|
57
56
|
- persona, prompt, skill, `AGENTS.md`, or model-notice text;
|
|
58
57
|
- Bash command lines likely to enter shell history or process listings;
|
|
59
58
|
- tool results, session messages, issue comments, or debug output; or
|
|
@@ -104,7 +103,7 @@ The TUI's built-in diff review tool is also a client-local process.
|
|
|
104
103
|
|
|
105
104
|
## Use code mode as a capability boundary
|
|
106
105
|
|
|
107
|
-
The generated JavaScript used by `web`, `history`, `nook`, and code-mode client tools runs in Tau's bounded worker runtime. It receives only a declared API, `docs`, console output, live `Date`, `Math.random()`, and, when configured, agent-scoped UTF-8 scratch files. Generated code has no direct imports, process, environment, credentials, timers, `fetch`, or arbitrary network access.
|
|
106
|
+
The generated JavaScript used by `web`, `history`, `nook`, `mcp`, and code-mode client tools runs in Tau's bounded worker runtime. It receives only a declared API, `docs`, console output, the asynchronous `image(block)` output helper, live `Date`, `Math.random()`, and, when configured, agent-scoped UTF-8 scratch files. Generated code has no direct imports, process, environment, credentials, timers, `fetch`, or arbitrary network access.
|
|
108
107
|
|
|
109
108
|
API handlers run outside that worker and retain the authority deliberately exposed by the tool. The boundary therefore limits generated code to declared capabilities, but it does not make an overpowered API safe. Tool authors should validate every argument, expose narrow operations, keep credentials in the parent, enforce cancellation, and avoid returning secrets.
|
|
110
109
|
|
|
@@ -112,6 +111,18 @@ Scratch files live in a private execution-environment temporary directory derive
|
|
|
112
111
|
|
|
113
112
|
The `history` code-mode API is read-only, but it can see transcripts across repositories and execution environments in the configured collection. Its agent policy requires a direct user or active-instruction request before use. That policy does not replace access control on the history service.
|
|
114
113
|
|
|
114
|
+
## Trust MCP servers
|
|
115
|
+
|
|
116
|
+
MCP server definitions come from the host launch directory's global and ancestor/project configuration layers. Launching a host inside a repository trusts those layers to introduce host commands and use host credentials; there is no approval dialog. MCP capabilities apply to all sessions on that host whose persona allows `mcp`, and their supervised subagents; they are not isolated per repository or client. Session execution-environment configuration cannot introduce servers.
|
|
117
|
+
|
|
118
|
+
A stdio MCP server is trusted host code. It runs outside the code-mode sandbox with the host account's filesystem and process permissions and full inherited environment, including credentials. Review executables and arguments before configuring them. HTTP servers receive configured headers and the arguments sent to their tools. Use HTTPS for remote services and grant only the access needed.
|
|
119
|
+
|
|
120
|
+
MCP does not add a confirmation layer. Tools can mutate external systems or host resources immediately. Interrupting a call cannot undo a completed effect, and an unknown outcome does not make retrying a mutation safe. Server descriptions, instructions, annotations, and results are untrusted data. Annotations such as `readOnlyHint` are not enforced permissions.
|
|
121
|
+
|
|
122
|
+
Stdio shutdown depends on the MCP transport. Descendants that ignore `SIGTERM` can survive when the server process exits first; do not rely on shutdown to contain untrusted server processes.
|
|
123
|
+
|
|
124
|
+
The execution environment does not sandbox a host-run MCP server. A server that exposes host files or commands gives the agent that host authority even when Bash runs in a remote sandbox. Disable `mcp` in the persona or disable the server if that authority is inappropriate. Connections and credentials stay outside the generated JavaScript, but the configured server remains responsible for what its tools return.
|
|
125
|
+
|
|
115
126
|
## Protect remote session transports
|
|
116
127
|
|
|
117
128
|
`tau serve` binds to loopback by default. Keep that default unless remote network access is required. A WebSocket server without `--auth-token` or `TAU_WS_AUTH_TOKEN` is unauthenticated, and any connected client can observe and mutate hosted sessions.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Session protocol method reference
|
|
2
2
|
|
|
3
|
-
This page defines every request method in protocol version
|
|
3
|
+
This page defines every request method in protocol version 15. It is the compact wire reference for clients that already understand connection, observation, and delta application from the [session protocol](session-protocol.md).
|
|
4
4
|
|
|
5
5
|
Every request uses `{ version, type: "request", id, method, params }`. Every successful response uses `{ version, type: "response", id, ok: true, result }`. `params` is required even when empty, and unknown object fields are stripped.
|
|
6
6
|
|
|
@@ -47,7 +47,7 @@ params: {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
result: {
|
|
50
|
-
protocolVersion:
|
|
50
|
+
protocolVersion: 15;
|
|
51
51
|
methods: string[];
|
|
52
52
|
alreadyInitialized: boolean;
|
|
53
53
|
}
|
|
@@ -65,7 +65,6 @@ params: {
|
|
|
65
65
|
| { kind: "local"; cwd: string; env?: Record<string, string> }
|
|
66
66
|
| {
|
|
67
67
|
kind: "fly-sprite";
|
|
68
|
-
apiId: string;
|
|
69
68
|
spriteName: string;
|
|
70
69
|
cwd: string;
|
|
71
70
|
};
|
|
@@ -594,7 +593,10 @@ params:
|
|
|
594
593
|
sessionId: string;
|
|
595
594
|
callId: string;
|
|
596
595
|
ok: true;
|
|
597
|
-
content:
|
|
596
|
+
content: Array<
|
|
597
|
+
| { type: "text"; text: string; textSignature?: string }
|
|
598
|
+
| { type: "image"; data: string; mimeType: "image/jpeg" | "image/png" | "image/webp" }
|
|
599
|
+
>;
|
|
598
600
|
presentation?: PresentationOverride;
|
|
599
601
|
}
|
|
600
602
|
| {
|
|
@@ -607,6 +609,8 @@ params:
|
|
|
607
609
|
result: { accepted: boolean };
|
|
608
610
|
```
|
|
609
611
|
|
|
612
|
+
`content` preserves text/image block order in the model-facing result, snapshots, and deltas. It may be empty and allows at most 1,024 blocks, including at most 16 images with valid padded base64 representing at most 3.5 MiB each. Image bytes are not presentation content.
|
|
613
|
+
|
|
610
614
|
The optional result presentation applies only to the reported terminal state and is resolved independently from the running presentation. The host preserves explicit fields unchanged after safety validation and supplies canonical display-truncated defaults for omitted fields. If no client result arrives, the host uses a complete fallback for timeout, cancellation, detach, or another terminal outcome.
|
|
611
615
|
|
|
612
616
|
A successful result is accepted only after the host has accepted the acknowledgement. An error sent before acknowledgement records a preparation failure, such as an error from `describe`, without authorizing execution. An error sent afterward records an execution failure.
|