@markusylisiurunen/tau 0.3.76 → 0.3.78
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/agent/agent_runtime.js +6 -11
- package/dist/core/agent/agent_runtime.js.map +1 -1
- package/dist/core/cli.js +2 -5
- package/dist/core/cli.js.map +1 -1
- package/dist/core/commands/registry.js +2 -1
- package/dist/core/commands/registry.js.map +1 -1
- package/dist/core/config/builtin_themes.js +0 -30
- package/dist/core/config/builtin_themes.js.map +1 -1
- package/dist/core/config/content_loader.js +19 -308
- package/dist/core/config/content_loader.js.map +1 -1
- package/dist/core/config/index.js +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/paths.js +0 -1
- package/dist/core/config/paths.js.map +1 -1
- package/dist/core/config/runtime.js +2 -3
- package/dist/core/config/runtime.js.map +1 -1
- package/dist/core/config/runtime_config_snapshot.js +0 -1
- package/dist/core/config/runtime_config_snapshot.js.map +1 -1
- package/dist/core/config/schema.js +17 -234
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/skills_loader.js +0 -8
- package/dist/core/config/skills_loader.js.map +1 -1
- package/dist/core/config/theme_variants.js.map +1 -1
- package/dist/core/config/virtual_bundle.js +3 -9
- package/dist/core/config/virtual_bundle.js.map +1 -1
- package/dist/core/config/virtual_defaults.js +0 -2
- package/dist/core/config/virtual_defaults.js.map +1 -1
- package/dist/core/debug.js +8 -25
- package/dist/core/debug.js.map +1 -1
- package/dist/core/diff_review/bridge.js +2 -24
- package/dist/core/diff_review/bridge.js.map +1 -1
- package/dist/core/index.js +0 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/models/catalog.js +2 -3
- package/dist/core/models/catalog.js.map +1 -1
- package/dist/core/personas.js +7 -89
- package/dist/core/personas.js.map +1 -1
- package/dist/core/runtime/agent_model.js +0 -2
- package/dist/core/runtime/agent_model.js.map +1 -1
- package/dist/core/runtime/chat_runtime.js +4 -6
- package/dist/core/runtime/chat_runtime.js.map +1 -1
- package/dist/core/runtime/session_prompt_composer.js +12 -27
- package/dist/core/runtime/session_prompt_composer.js.map +1 -1
- package/dist/core/static/index.js +4 -7
- package/dist/core/static/index.js.map +1 -1
- package/dist/core/static/tau_docs/client-tools.md +1 -1
- package/dist/core/static/tau_docs/config-reference.md +30 -153
- package/dist/core/static/tau_docs/configuration.md +9 -21
- package/dist/core/static/tau_docs/credentials.md +9 -28
- package/dist/core/static/tau_docs/image-generation.md +1 -1
- package/dist/core/static/tau_docs/node-sdk.md +1 -1
- package/dist/core/static/tau_docs/ownership-and-scope.md +5 -5
- package/dist/core/static/tau_docs/pdf-unpacking.md +1 -1
- package/dist/core/static/tau_docs/personas.md +9 -20
- package/dist/core/static/tau_docs/prompts-and-project-context.md +1 -11
- package/dist/core/static/tau_docs/remote-sessions.md +6 -22
- package/dist/core/static/tau_docs/security.md +2 -2
- package/dist/core/static/tau_docs/session-protocol-methods.md +1 -7
- package/dist/core/static/tau_docs/session-protocol.md +2 -0
- package/dist/core/static/tau_docs/sessions.md +2 -14
- package/dist/core/static/tau_docs/skills.md +1 -23
- package/dist/core/static/tau_docs/speech-generation.md +1 -1
- package/dist/core/static/tau_docs/subagents.md +26 -99
- package/dist/core/static/tau_docs/telegram.md +14 -22
- package/dist/core/static/tau_docs/tools.md +6 -6
- package/dist/core/static/tau_docs/troubleshooting.md +19 -20
- package/dist/core/static/tau_docs/tui.md +18 -44
- package/dist/core/subagents/agent_supervisor.js +5 -6
- package/dist/core/subagents/agent_supervisor.js.map +1 -1
- package/dist/core/subagents/format.js +1 -1
- package/dist/core/subagents/format.js.map +1 -1
- package/dist/core/subagents/prompt.js +7 -0
- package/dist/core/subagents/prompt.js.map +1 -0
- package/dist/core/subagents/registry.js +14 -43
- package/dist/core/subagents/registry.js.map +1 -1
- package/dist/core/subagents/types.js +2 -2
- package/dist/core/subagents/types.js.map +1 -1
- package/dist/core/telegram/adapter.js +23 -30
- package/dist/core/telegram/adapter.js.map +1 -1
- package/dist/core/telegram/cli.js +4 -5
- package/dist/core/telegram/cli.js.map +1 -1
- package/dist/core/telegram/config.js +32 -57
- package/dist/core/telegram/config.js.map +1 -1
- package/dist/core/telegram/local_session_client.js +0 -3
- package/dist/core/telegram/local_session_client.js.map +1 -1
- package/dist/core/telegram/runtime.js +3 -5
- package/dist/core/telegram/runtime.js.map +1 -1
- package/dist/core/telegram/session_manager.js +29 -52
- package/dist/core/telegram/session_manager.js.map +1 -1
- package/dist/core/telegram/tts.js +11 -9
- package/dist/core/telegram/tts.js.map +1 -1
- package/dist/core/telegram/workspace.js +13 -18
- package/dist/core/telegram/workspace.js.map +1 -1
- package/dist/core/tool/image_generate.js +37 -14
- package/dist/core/tool/image_generate.js.map +1 -1
- package/dist/core/tool/media.js +84 -4
- package/dist/core/tool/media.js.map +1 -1
- package/dist/core/tool/pdf_unpack.js +17 -10
- package/dist/core/tool/pdf_unpack.js.map +1 -1
- package/dist/core/tool/speech_generate.js +30 -13
- package/dist/core/tool/speech_generate.js.map +1 -1
- package/dist/core/tools/catalog.js +10 -5
- package/dist/core/tools/catalog.js.map +1 -1
- package/dist/core/tools/send_input_to_agent.js +1 -1
- package/dist/core/tools/send_input_to_agent.js.map +1 -1
- package/dist/core/tools/spawn_agent.js +13 -30
- package/dist/core/tools/spawn_agent.js.map +1 -1
- package/dist/core/tools/view_image.js +12 -17
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/usage/logs.js.map +1 -1
- package/dist/core/utils/gemini_transcription.js +5 -95
- package/dist/core/utils/gemini_transcription.js.map +1 -1
- package/dist/core/utils/{gemini_speech.js → speech.js} +167 -428
- package/dist/core/utils/speech.js.map +1 -0
- package/dist/core/utils/speech_to_text.js +24 -52
- package/dist/core/utils/speech_to_text.js.map +1 -1
- package/dist/core/utils/speech_to_text_keywords.js +65 -0
- package/dist/core/utils/speech_to_text_keywords.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-html-BjHlbeCk.js → angular-html-CnO8qept.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-ts-5J5hsUV-.js → angular-ts-DPXUio9Z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{apl-ChIs51_N.js → apl-X8YsymsQ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{astro-RtGdbaIT.js → astro-BQ9k8AQ0.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{blade-Cuc0ZzS1.js → blade-DZ1LYIzB.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{c-IpjS3QEt.js → c-VLTwNh7z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{chapel-BvHOmF40.js → chapel-5s-sGN8D.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cobol-BWLkapNx.js → cobol-C9RzwrVu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{coffee-lfdf_MuK.js → coffee-BHvjZ343.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cpp-GvMfdutG.js → cpp-CBTVXbBp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{crystal--kdmUeXB.js → crystal-DQJua4y4.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{css-CnlOazId.js → css-BQflXFb6.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{edge-CwnxQiFe.js → edge-BmdmXGH4.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elixir-BVO19qQd.js → elixir-oiOLs98L.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elm-BK3istEo.js → elm-BgYuiU4E.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{erb-CO4uKwKD.js → erb-CvFrXpyY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{git-rebase-CDrrgbGV.js → git-rebase-D3Zo1BLH.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-js-7CFSyo6c.js → glimmer-js-B4-8E3lJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-ts-Ofllf2Yo.js → glimmer-ts-CtKkD0t_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glsl-K_36bq1K.js → glsl-BAqforx_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{graphql-BMZnssUN.js → graphql-DuE1RMyL.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hack-MG_t8QNs.js → hack-CHBcXjz1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{haml-0hDK-uCt.js → haml-DAs2z3tD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{handlebars-D4_MRJPB.js → handlebars-CfAla6QK.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-BCi--7qp.js → html-D5co0BLD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-derivative-DYq2AWiD.js → html-derivative-BZaWEmAT.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{http-BmLFm2Pm.js → http-Cii5MjJE.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hurl-CT71cK69.js → hurl-Bur-XdJO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/index-CZUi_I-p.js +340 -0
- package/dist/diff_tool/app/dist/assets/{java-Bm2FCq-d.js → java-DN39wI4w.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{javascript-C7oEny21.js → javascript-VUReF1H4.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jinja-igQBS-SS.js → jinja-BcrfV1JB.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jison-BrOUp4rK.js → jison-Bez5Mtmy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{json-DsuR7Nai.js → json-ChV8m0Le.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jsx-BdomFXcA.js → jsx-D0SXNtM0.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{julia-DqOG4pbM.js → julia-DvhpcBwG.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{just-ZrSTuT0n.js → just-BGwe8S6x.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{latex-DbmtZIwN.js → latex-pWSag83P.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{liquid-DKnUlRIp.js → liquid-UdnqDjKz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{lua-Cyq3f59a.js → lua-CjDHeHEr.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{marko-hmOsFPHQ.js → marko-yLX6iW68.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{mdc-BnnQmDC-.js → mdc-BOLj6Oyq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nginx-C0zLUSna.js → nginx-5r5xPc2T.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nim-Oljl3c5n.js → nim-9exKQYMz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{org-Cp4CA-0c.js → org-B2fpAlbt.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{perl-DstDVYmJ.js → perl-DV2fcwyY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{php-Cc3bNZ7J.js → php-D-AthX_E.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{pug-B3xDUzl0.js → pug-DuKcQxFj.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{qml-B9iDahKk.js → qml-C16b4SYx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{r-B7M5ZSBC.js → r-B1ZldnJf.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{razor-BlfV6bjQ.js → razor-TYmslaAB.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{regexp-BVT0NBj6.js → regexp-dWCffmDD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{rst-Cq-Mcher.js → rst-DEkLr2YR.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ruby-5uCK_s01.js → ruby-BJnJzr4u.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sas-m4dYluKN.js → sas-DeRsDbUE.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{scss-DFiJcBQH.js → scss-SGV_CwKm.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellscript-DCtSkJJQ.js → shellscript-BI7khmmR.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellsession-_DntbpLM.js → shellsession-Nupw_Vvw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{soy-Dd1fWsG8.js → soy-B96cBzxv.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sql-Bygp5F-5.js → sql-CsIdKfaO.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{stata-CqIA1VQD.js → stata-Dnq48cE6.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{surrealql-C2-2C-z3.js → surrealql-D6lw4TiD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{svelte-CrTy7VSb.js → svelte-ChVoq9tB.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{templ-B_h9AHFJ.js → templ-Dh1EXuHD.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tex-AwlGuBDG.js → tex-KTYusNFe.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ts-tags--oqU6stH.js → ts-tags-DC2RU1_R.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tsx-Cx-oUPFA.js → tsx-DtIM39Jy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{twig-DMQw3R9O.js → twig-C6D_TA3n.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typescript-BCtu9W7E.js → typescript-BGAE5iuw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typst-jGrqJHSo.js → typst-nWoGZ22y.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-html-DTMalvg7.js → vue-html-prNdIjLu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-GFZcsvXd.js → vue-iyHf-l4z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-vine-BwDeqLrM.js → vue-vine-KSSlnVeg.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xml-CoXyuOzf.js → xml-DdCC83Xd.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xsl-BQFm34CN.js → xsl-DSqZxsez.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{yaml-CbO2A_pF.js → yaml-CZcBUWvf.js} +1 -1
- package/dist/diff_tool/app/dist/index.html +1 -1
- package/dist/diff_tool/http_server.js +2 -9
- package/dist/diff_tool/http_server.js.map +1 -1
- package/dist/diff_tool/index.js +2 -2
- package/dist/diff_tool/index.js.map +1 -1
- package/dist/diff_tool/launcher.js +14 -8
- package/dist/diff_tool/launcher.js.map +1 -1
- package/dist/diff_tool/protocol_client.js +0 -7
- package/dist/diff_tool/protocol_client.js.map +1 -1
- package/dist/diff_tool/review_state.js +4 -10
- package/dist/diff_tool/review_state.js.map +1 -1
- package/dist/diff_tool/review_state_persistence.js +12 -7
- package/dist/diff_tool/review_state_persistence.js.map +1 -1
- package/dist/diff_tool/shared_types.js +0 -48
- package/dist/diff_tool/shared_types.js.map +1 -1
- package/dist/execution/fly_sprite_execution_environment.js +4 -2
- package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
- package/dist/host/execution_runtime.js +1 -1
- package/dist/host/execution_runtime.js.map +1 -1
- package/dist/host/hosted_ephemeral_agent_session.js +1 -1
- package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
- package/dist/host/local_session_host.js +8 -18
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/main.js +7 -93
- package/dist/main.js.map +1 -1
- package/dist/protocol/index.d.ts +1 -1
- package/dist/protocol/index.js.map +1 -1
- package/dist/protocol/session_protocol.d.ts +4 -23
- package/dist/protocol/session_protocol.js +3 -30
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/sdk/local_client.js +0 -6
- package/dist/sdk/local_client.js.map +1 -1
- package/dist/store/session_snapshot_migrations.js +32 -1
- package/dist/store/session_snapshot_migrations.js.map +1 -1
- package/dist/tui/chat_controller/diff_review_service.js +0 -15
- package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
- package/dist/tui/chat_view.js +6 -4
- package/dist/tui/chat_view.js.map +1 -1
- package/dist/tui/listen_capture.js +7 -26
- package/dist/tui/listen_capture.js.map +1 -1
- package/dist/tui/session_chat_app.js +4 -21
- package/dist/tui/session_chat_app.js.map +1 -1
- package/dist/tui/session_chat_controller.js +81 -59
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/dist/tui/speech_playback.js +10 -8
- package/dist/tui/speech_playback.js.map +1 -1
- package/dist/tui/ui/custom_editor.js +21 -15
- package/dist/tui/ui/custom_editor.js.map +1 -1
- package/dist/tui/ui/pending_messages.js +2 -1
- package/dist/tui/ui/pending_messages.js.map +1 -1
- package/dist/tui/ui/slash_autocomplete.js +1 -8
- package/dist/tui/ui/slash_autocomplete.js.map +1 -1
- package/dist/tui/ui/subagent_panel.js +1 -12
- package/dist/tui/ui/subagent_panel.js.map +1 -1
- package/package.json +3 -3
- package/dist/core/config/diff_tool.js +0 -51
- package/dist/core/config/diff_tool.js.map +0 -1
- package/dist/core/install/cli.js +0 -260
- package/dist/core/install/cli.js.map +0 -1
- package/dist/core/models/tau_model_overrides.js +0 -4
- package/dist/core/models/tau_model_overrides.js.map +0 -1
- package/dist/core/subagents/default.js +0 -8
- package/dist/core/subagents/default.js.map +0 -1
- package/dist/core/utils/gemini_speech.js.map +0 -1
- package/dist/core/utils/openai_transcription.js +0 -594
- package/dist/core/utils/openai_transcription.js.map +0 -1
- package/dist/diff_tool/app/dist/assets/index-DyaXBald.js +0 -340
- package/dist/execution/cloudflare_sandbox_execution_environment.js +0 -563
- package/dist/execution/cloudflare_sandbox_execution_environment.js.map +0 -1
- package/dist/execution/sandbox_tool_helpers.js +0 -30
- package/dist/execution/sandbox_tool_helpers.js.map +0 -1
- package/dist/starter/prompts/approval-review-branch.md +0 -7
- package/dist/starter/prompts/approval-review-current-changes.md +0 -7
- package/dist/starter/prompts/approval-review-last-commit.md +0 -7
- package/dist/starter/prompts/commit-all.md +0 -9
- package/dist/starter/prompts/commit-staged.md +0 -9
- package/dist/starter/prompts/guided-review-branch.md +0 -7
- package/dist/starter/prompts/guided-review-current-changes.md +0 -7
- package/dist/starter/prompts/guided-review-last-commit.md +0 -7
- package/dist/starter/prompts/plan.md +0 -7
- package/dist/starter/prompts/review-branch.md +0 -7
- package/dist/starter/prompts/review-current-changes.md +0 -7
- package/dist/starter/prompts/review-last-commit.md +0 -7
- package/dist/starter/prompts/rewrite-prompt.md +0 -89
- package/dist/starter/skills/approval-review/SKILL.md +0 -219
- package/dist/starter/skills/code-review/SKILL.md +0 -102
- package/dist/starter/skills/guided-review/SKILL.md +0 -152
- package/dist/starter/skills/plan/SKILL.md +0 -53
- /package/dist/core/static/prompts/{default-subagent-wrapper.md → subagent-wrapper.md} +0 -0
|
@@ -91,7 +91,7 @@ Remote `--new` supplies the conventional creation attribute `source: "tui"`. It
|
|
|
91
91
|
|
|
92
92
|
## Select an execution environment
|
|
93
93
|
|
|
94
|
-
A session can use a local host directory
|
|
94
|
+
A session can use a local host directory or an already-provisioned Fly Sprite. In all cases, the execution cwd is an absolute path inside that environment.
|
|
95
95
|
|
|
96
96
|
### Host-local directory
|
|
97
97
|
|
|
@@ -103,22 +103,6 @@ tau attach --new --cwd /srv/workspaces/tau ws://host.example:8787
|
|
|
103
103
|
|
|
104
104
|
The host process executes agent-visible filesystem and command operations on its own machine. Tau does not clone, pull, or provision a repository.
|
|
105
105
|
|
|
106
|
-
### Cloudflare Sandbox
|
|
107
|
-
|
|
108
|
-
The host must already have a named bridge in `cloudflareSandbox.bridges`, and the sandbox must already exist:
|
|
109
|
-
|
|
110
|
-
```sh
|
|
111
|
-
tau attach \
|
|
112
|
-
--new \
|
|
113
|
-
--execution-kind cloudflare-sandbox \
|
|
114
|
-
--cloudflare-bridge production \
|
|
115
|
-
--cloudflare-sandbox sandbox-42 \
|
|
116
|
-
--cwd /workspace/tau \
|
|
117
|
-
wss://tau.example.com
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
`--cloudflare-bridge` identifies host configuration. `--cloudflare-sandbox` identifies an existing sandbox reachable through that bridge. Tau does not create the sandbox or copy a repository into it.
|
|
121
|
-
|
|
122
106
|
### Fly Sprite
|
|
123
107
|
|
|
124
108
|
The host must already have a named API target in `flySprites.apis`, and the Sprite must already exist:
|
|
@@ -166,7 +150,7 @@ An attached session spans three logical machines even when two happen to share o
|
|
|
166
150
|
- command execution, platform, PATH, and runtime dependencies
|
|
167
151
|
- automatic-compaction archives and other target-side temporary files
|
|
168
152
|
|
|
169
|
-
This is why changing a host theme does not affect a remote TUI, why `!git status` runs against the execution environment, and why
|
|
153
|
+
This is why changing a host’s theme selection does not affect a remote TUI, why `!git status` runs against the execution environment, and why the built-in diff review tool opens on the attaching machine. [Ownership and scope](ownership-and-scope.md) applies the same model across Tau.
|
|
170
154
|
|
|
171
155
|
## Reload or restart the correct process
|
|
172
156
|
|
|
@@ -177,8 +161,8 @@ Different changes have different owners:
|
|
|
177
161
|
| Project config, model overlays, personas, prompts, skills, or AGENTS.md in the execution environment | Wait for idle, then run `/reload`. |
|
|
178
162
|
| Effective model `apiKeys` in execution-environment or session configuration | Wait for idle, then run `/reload`; new sessions also resolve the current values. |
|
|
179
163
|
| Managed Codex auth changed with `tau auth` | No host restart; auth storage is read again on later credential resolutions. |
|
|
180
|
-
| Attaching themes,
|
|
181
|
-
| Host process environment variables, history target, WebSocket listener,
|
|
164
|
+
| Attaching themes, speech config, or configured client tools | Restart `tau attach`. |
|
|
165
|
+
| Host process environment variables, history target, WebSocket listener, Fly API target, or host startup flags | Restart `tau serve`. |
|
|
182
166
|
| Host Tau package, built-in tools, protocol, session recovery code, or built-in documentation | Upgrade and restart the host. |
|
|
183
167
|
| TUI package, keybindings, rendering, local speech, or client-tool implementation | Upgrade and restart the attaching client. |
|
|
184
168
|
|
|
@@ -215,9 +199,9 @@ Avoid downgrading a host that has already written sessions with a newer storage
|
|
|
215
199
|
The host lists only stored sessions whose execution-environment kind it can currently restore. Confirm that:
|
|
216
200
|
|
|
217
201
|
- the connection uses the same host user and home directory as the original process
|
|
218
|
-
- the
|
|
202
|
+
- the Fly API id still exists in host configuration
|
|
219
203
|
- host credentials are available to the restarted process
|
|
220
|
-
- the target
|
|
204
|
+
- the target Sprite or local directory still exists
|
|
221
205
|
- the session was created on this host rather than another machine with a different store
|
|
222
206
|
|
|
223
207
|
Do not edit the session JSON to change environment identity. Restore the owning configuration or target instead.
|
|
@@ -26,7 +26,7 @@ The execution environment supplies more than source files. Tau can load project
|
|
|
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
|
-
- persona system prompts, tool lists,
|
|
29
|
+
- persona system prompts, tool lists, and model launch allowlists;
|
|
30
30
|
- skill instructions and any scripts they direct the agent to run;
|
|
31
31
|
- model overlays that replace endpoints, headers, capabilities, or token limits;
|
|
32
32
|
- project configuration that supplies API keys, Nook targets, model notices, or hosted-environment definitions;
|
|
@@ -100,7 +100,7 @@ Before enabling one:
|
|
|
100
100
|
|
|
101
101
|
A project `enabledClientTools` list is permission to select an already trusted global definition. Unknown selected names are ignored, so verify effective advertisement after changes. Start an untrusted project with `--no-client-tools` until its selection has been reviewed.
|
|
102
102
|
|
|
103
|
-
The TUI's diff
|
|
103
|
+
The TUI's built-in diff review tool is also a client-local process.
|
|
104
104
|
|
|
105
105
|
## Use code mode as a capability boundary
|
|
106
106
|
|
|
@@ -63,12 +63,6 @@ Creates a session in one explicitly selected execution environment.
|
|
|
63
63
|
params: {
|
|
64
64
|
executionEnvironment:
|
|
65
65
|
| { kind: "local"; cwd: string; env?: Record<string, string> }
|
|
66
|
-
| {
|
|
67
|
-
kind: "cloudflare-sandbox";
|
|
68
|
-
bridgeId: string;
|
|
69
|
-
sandboxId: string;
|
|
70
|
-
cwd: string;
|
|
71
|
-
}
|
|
72
66
|
| {
|
|
73
67
|
kind: "fly-sprite";
|
|
74
68
|
apiId: string;
|
|
@@ -83,7 +77,7 @@ params: {
|
|
|
83
77
|
result: { sessionId: string }
|
|
84
78
|
```
|
|
85
79
|
|
|
86
|
-
`cwd` must be absolute inside the selected execution environment.
|
|
80
|
+
`cwd` must be absolute inside the selected execution environment. Fly Sprites must already exist and be reachable through a host-configured resolver. Tau does not provision a target or repository.
|
|
87
81
|
|
|
88
82
|
`attributes` is required, including when empty. It accepts at most 32 immutable pairs; keys are 1 to 64 characters and values at most 1,024 characters. Tau stores the supplied strings without inferring missing provenance. Conventional attributes and their use are covered in [sessions](sessions.md) and [history](history.md).
|
|
89
83
|
|
|
@@ -108,6 +108,8 @@ Observation controls delivery, not session ownership. `session.unobserve` stops
|
|
|
108
108
|
| `tools`, `operations`, `agents` | Mutable semantic state referenced by timeline items or client views. |
|
|
109
109
|
| `facets` | Versioned client-facing metadata. Unknown facet kinds and versions should be ignored. |
|
|
110
110
|
|
|
111
|
+
`bootstrap.prompt.subagentSystemPrompt` is present when subagent launches are enabled. Each catalog persona has a `subagentLaunchModels` allowlist. Subagent records have task titles and IDs, not worker-type names.
|
|
112
|
+
|
|
111
113
|
Render active transcript order from `timeline.items`, not by sorting or filtering `messages`. A timeline item either contains a notice or references a message, tool, or operation in the corresponding snapshot collection. Some model-visible messages intentionally have no timeline item.
|
|
112
114
|
|
|
113
115
|
The timeline has an `epoch`, a per-epoch sequence high-water mark, and ordered items. Successful compaction replaces the active recoverable timeline and advances the epoch. Rewind stays in the same epoch, removes later items, and preserves the sequence high-water mark so sequence numbers are not reused.
|
|
@@ -36,7 +36,7 @@ Only one logical turn runs at a time. Input sent during active work has two usef
|
|
|
36
36
|
- A queued message waits for the session to become idle, then starts an independent turn.
|
|
37
37
|
- Steering joins the active logical turn at a safe continuation boundary.
|
|
38
38
|
|
|
39
|
-
In the TUI, Enter
|
|
39
|
+
In the TUI, Enter steers and Ctrl+Enter queues while work is active. When idle, either starts a normal turn. Pending messages are visible to every observer of the same live hosted session. Alt+Up cancels queued messages and steering that has not been applied and restores the text to the editor.
|
|
40
40
|
|
|
41
41
|
A turn captures its model, persona, reasoning, system prompt, tools, retry policy, and compaction policy when it starts. Tool subturns and steering continuations keep that captured specification even if reasoning or host configuration changes meanwhile. A queued turn captures the then-current specification when it later starts.
|
|
42
42
|
|
|
@@ -107,7 +107,7 @@ Compaction replaces older model-visible conversation context with a synthetic su
|
|
|
107
107
|
|
|
108
108
|
### Automatic compaction
|
|
109
109
|
|
|
110
|
-
Automatic compaction runs before a model subturn when fresh provider usage plus newly added estimated context exceeds the
|
|
110
|
+
Automatic compaction runs before a model subturn when fresh provider usage plus newly added estimated context exceeds the fixed threshold. The threshold is the model context window minus 16,384 tokens. Tau keeps a recent tail with a target budget of 20,000 tokens, capped by that threshold, summarizes older context, and can compact more than once during a long logical turn.
|
|
111
111
|
|
|
112
112
|
The summary model may copy important original user messages verbatim into the summary. Recent retained messages stay available to the model, although unusually large textual tool and recovery results may be truncated in retained context. Tau records the compaction as a new active context segment.
|
|
113
113
|
|
|
@@ -119,18 +119,6 @@ The continuation also requires the archive guide to be present in model context
|
|
|
119
119
|
|
|
120
120
|
These archives are temporary recovery aids, not backups. Archive failure does not block compaction, and execution-environment cleanup may remove them.
|
|
121
121
|
|
|
122
|
-
Configure the policy in [configuration](configuration.md):
|
|
123
|
-
|
|
124
|
-
```json
|
|
125
|
-
{
|
|
126
|
-
"autoCompact": {
|
|
127
|
-
"enabled": true,
|
|
128
|
-
"reserveTokens": 16384,
|
|
129
|
-
"keepRecentTokens": 20000
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
122
|
### Intermediate system instructions
|
|
135
123
|
|
|
136
124
|
Tau supports plain-text system instructions in conversation history separately from the persona/base prompt. These records are hidden in the TUI, persisted for recovery, recorded as system entries in searchable transcript history, and sent to the model in conversation order. The initial persona/base prompt is not recorded in transcript history. Providers that cannot represent intermediate system messages may fold their instructions into the leading prompt through the model adapter.
|
|
@@ -79,7 +79,7 @@ The frontmatter contract is:
|
|
|
79
79
|
| `metadata` | Optional map whose keys and values are strings. |
|
|
80
80
|
| `allowed-tools` | Optional non-empty string. It is accepted for skills-format compatibility but currently ignored by Tau. |
|
|
81
81
|
|
|
82
|
-
Unknown frontmatter fields are discarded. `allowed-tools` does not enable, disable, or restrict any tool. Tool availability comes from the active persona
|
|
82
|
+
Unknown frontmatter fields are discarded. `allowed-tools` does not enable, disable, or restrict any tool. Tool availability comes from the active persona; subagents inherit its eligible tools. See [tools](tools.md) and [subagents](subagents.md).
|
|
83
83
|
|
|
84
84
|
Keep the description useful without copying the full workflow into it. Tau initially exposes the name, description, and `SKILL.md` path. The agent opens the file after activation, then reads only the referenced resources needed for the task.
|
|
85
85
|
|
|
@@ -133,28 +133,6 @@ Skill references compose. If `release-check` instructs the agent to use `@@skill
|
|
|
133
133
|
|
|
134
134
|
After activation, the agent reads `SKILL.md` from the path in the discovered index. It should load only relevant files from `references/` or `assets/`, and prefer provided scripts when they implement the required workflow. Skills are treated as read-only unless the user explicitly asks to edit them.
|
|
135
135
|
|
|
136
|
-
## Installing starter skills
|
|
137
|
-
|
|
138
|
-
Tau ships starter prompts and skills that can be copied into a project:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
tau install
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
By default this installs all starter prompts and skills under the current directory's `.tau/`. To install one skill:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
tau install --skill code-review
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
To install under `~/.config/tau/` instead:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
tau install --global --skill commit
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Existing skill directories are skipped. `--force` replaces the entire same-named target directory, including files that are not present in the starter copy, so use it only when replacement is intended. `--prompt` and `--skill` are mutually exclusive. See [prompts and project context](prompts-and-project-context.md) for the prompt side of `tau install`.
|
|
157
|
-
|
|
158
136
|
## Applying changes and checking discovery
|
|
159
137
|
|
|
160
138
|
A running TUI session keeps its current content catalog and prompt context until it reloads. Run:
|
|
@@ -152,7 +152,7 @@ The output parent directory must exist. Neither the requested WAV nor `<output>.
|
|
|
152
152
|
|
|
153
153
|
Stdout on success is one JSON object with absolute `output`, `artifacts`, and the number of `batches`. The manifest contains the script text; keep artifacts private for sensitive scripts.
|
|
154
154
|
|
|
155
|
-
Failures exit nonzero and report the retained directory. Requests are not automatically retried because a failed request may already have incurred a charge.
|
|
155
|
+
Failures exit nonzero and identify invalid script fields, chunks, or turns before generation, or the failed batch and processing stage afterward. Existing output or artifact paths require a fresh `--output` path; preserve recovery artifacts. Errors after output preparation report the retained directory, which may be incomplete. If final publication fails, copy the completed `assembled.wav` to a fresh path instead of generating again. Requests are not automatically retried because a failed request may already have incurred a charge; another generation request may incur another charge.
|
|
156
156
|
|
|
157
157
|
To recover after a later batch fails, inspect the manifest's `completed` flags and chunk mapping. Generate only the unfinished chunks to a fresh output path, then assemble the completed PCM files from both runs in script order. Request stitching does not carry over between invocations.
|
|
158
158
|
|
|
@@ -1,87 +1,24 @@
|
|
|
1
1
|
# Subagents
|
|
2
2
|
|
|
3
|
-
Subagents are host-supervised background agent threads created by the main agent. They are useful when work can proceed independently
|
|
3
|
+
Subagents are host-supervised background agent threads created by the main agent. They are useful when work can proceed independently or needs a separate context. A subagent is not a second session and does not have its own persona file.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Background workers
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Subagents are general-purpose background workers with no named types. Multiple instances can run concurrently, each with its own task and conversation.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
The worker inherits the active main persona's model-facing behavior through Tau's maintained wrapper. Its instructions and description are not configuration surfaces. Supply task-specific instructions in the launch prompt, including any relevant skill guidance.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Disable it explicitly when a persona should expose only named custom workers or no subagents:
|
|
14
|
-
|
|
15
|
-
```yaml
|
|
16
|
-
subagents:
|
|
17
|
-
default: false
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
If `subagents` is omitted by a persona that extends a built-in, Tau inherits the base persona's entire subagent map. If a persona supplies a `subagents` map, Tau builds a new map from it and adds `default` unless the map says `default: false`.
|
|
21
|
-
|
|
22
|
-
## Defining custom subagents
|
|
23
|
-
|
|
24
|
-
Custom definitions live under `subagents` in a [persona](personas.md):
|
|
25
|
-
|
|
26
|
-
```yaml
|
|
27
|
-
subagents:
|
|
28
|
-
default: false
|
|
29
|
-
dependency-auditor:
|
|
30
|
-
description: Audit dependency changes and report concrete risks. Trigger: explicit.
|
|
31
|
-
systemPrompt: >-
|
|
32
|
-
Inspect the requested dependency change. Verify lockfile and release implications,
|
|
33
|
-
then return prioritized findings with paths.
|
|
34
|
-
tools:
|
|
35
|
-
- bash
|
|
36
|
-
- history
|
|
37
|
-
launchModels:
|
|
38
|
-
- anthropic/claude-haiku-4-5:low
|
|
39
|
-
- openai/gpt-6.1-sol:high
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
A custom subagent name must:
|
|
43
|
-
|
|
44
|
-
- contain 1 to 64 characters;
|
|
45
|
-
- use lowercase letters and digits;
|
|
46
|
-
- use single dashes between segments; and
|
|
47
|
-
- begin and end with a letter or digit.
|
|
48
|
-
|
|
49
|
-
`dependency-auditor` and `review2` are valid. `DependencyAuditor`, `dependency_auditor`, and `-review` are not.
|
|
50
|
-
|
|
51
|
-
Each custom definition accepts:
|
|
52
|
-
|
|
53
|
-
| Field | Contract |
|
|
54
|
-
| --- | --- |
|
|
55
|
-
| `systemPrompt` | Required non-empty string containing the subagent's base instructions. |
|
|
56
|
-
| `description` | Optional non-empty catalog description. Include trigger sensitivity here when needed. |
|
|
57
|
-
| `tools` | Optional list of eligible subagent tools. Omission inherits eligible tools from the main persona. |
|
|
58
|
-
| `launchModels` | Optional allowlist of exact model overrides accepted by `spawn_agent`. |
|
|
59
|
-
|
|
60
|
-
Unknown fields are discarded. In particular, `provider`, `model`, `reasoning`, and `serviceTier` inside a subagent definition do not configure its runtime. Use `launchModels` for approved launch-time model changes.
|
|
61
|
-
|
|
62
|
-
A custom entry cannot be `false`; only `default: false` has disable semantics. Every custom entry requires `systemPrompt`.
|
|
11
|
+
Availability follows the main persona's tool list. Built-in personas and standalone custom personas that omit `tools` enable the five supervision tools. A custom persona can prevent launches by providing an explicit `tools` list without `spawn_agent`; omit all five supervision tools when no subagent interaction is wanted. There is no separate subagent enable or disable setting. See [personas](personas.md).
|
|
63
12
|
|
|
64
13
|
## Trigger sensitivity
|
|
65
14
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- **eager**: use proactively whenever the capability would help;
|
|
69
|
-
- **balanced**: use when the request clearly matches, which is the default when no trigger is stated;
|
|
70
|
-
- **explicit**: use only when an active instruction names the subagent.
|
|
71
|
-
|
|
72
|
-
Use a clear phrase such as `Trigger: explicit.`. An exact user reference looks like:
|
|
73
|
-
|
|
74
|
-
```text
|
|
75
|
-
@@agent:dependency-auditor
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
An exact reference in the user request, an active `AGENTS.md` instruction, or the instructions of an already-active skill explicitly activates that subagent. A subagent reference tells the main agent which capability to use; it does not itself create a thread. The main agent still calls `spawn_agent`.
|
|
15
|
+
The main agent launches subagents only when the user or active instructions explicitly request delegation. Ask for a subagent in ordinary language; no named agent tag is needed. A request does not itself create a thread: the main agent still calls `spawn_agent`.
|
|
79
16
|
|
|
80
|
-
|
|
17
|
+
This is agent-facing policy. The host validates launches but does not infer whether a prompt semantically authorized delegation.
|
|
81
18
|
|
|
82
19
|
## Tool inheritance and restriction
|
|
83
20
|
|
|
84
|
-
The
|
|
21
|
+
The eligible inherited tools are:
|
|
85
22
|
|
|
86
23
|
- `bash`
|
|
87
24
|
- `write`
|
|
@@ -89,14 +26,13 @@ The persona-configurable subagent tool subset contains only:
|
|
|
89
26
|
- `view_image`
|
|
90
27
|
- `web`
|
|
91
28
|
- `history`
|
|
29
|
+
- `nook`, when Nook is configured
|
|
92
30
|
|
|
93
|
-
Tau then adds intrinsic `tau_docs` to every subagent registry, independently of this subset.
|
|
31
|
+
Tau then adds intrinsic `tau_docs` to every subagent registry, independently of this subset. A persona’s `tools` list cannot disable it. Apart from `tau_docs`, subagents do not receive goal controls, subagent supervision tools, client tools, or TUI-local tools.
|
|
94
32
|
|
|
95
|
-
|
|
33
|
+
The worker inherits the intersection of the main persona's tools and those seven eligible names. For example, a main persona with `bash`, `edit`, `history`, and `spawn_agent` gives the child `bash`, `edit`, and `history`, plus intrinsic `tau_docs`. There is no separate child tool allowlist.
|
|
96
34
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
The main persona must itself expose the subagent supervision tools for the model to operate subagents. Defining a subagent while omitting `spawn_agent` from an explicit persona `tools` list leaves the definition present but not launchable by the main agent. See [tools](tools.md) for the broader availability contract.
|
|
35
|
+
Subagents cannot launch other subagents: supervision tools are never included in a child's registry. See [tools](tools.md) for the broader availability contract.
|
|
100
36
|
|
|
101
37
|
## Models and settings
|
|
102
38
|
|
|
@@ -110,18 +46,18 @@ A launch override must use exact form:
|
|
|
110
46
|
|
|
111
47
|
The provider is normalized to lowercase. The model ID remains exact and case-sensitive. Effort is one of `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, or `max`.
|
|
112
48
|
|
|
113
|
-
|
|
49
|
+
The configured launch-model list is an allowlist, not a default selection. The main agent should normally omit the `model` argument to `spawn_agent`; when omitted, the subagent inherits the active persona model and reasoning. When supplied, the normalized value must exactly match an entry in the configured allowlist. The override changes provider, model, and reasoning. Other inherited settings remain.
|
|
114
50
|
|
|
115
|
-
Model IDs may be unbundled when their provider is known, following the synthesis rules in [models](models.md). Invalid provider, model, effort, or format rejects the
|
|
51
|
+
Model IDs may be unbundled when their provider is known, following the synthesis rules in [models](models.md). Invalid provider, model, effort, or format rejects the configuration field. Duplicate normalized entries are removed.
|
|
116
52
|
|
|
117
|
-
### Allowing overrides
|
|
53
|
+
### Allowing model overrides
|
|
118
54
|
|
|
119
|
-
|
|
55
|
+
Configure the built-in worker’s launch allowlist through `subagents.launchModels` in `config.json`:
|
|
120
56
|
|
|
121
57
|
```json
|
|
122
58
|
{
|
|
123
59
|
"subagents": {
|
|
124
|
-
"
|
|
60
|
+
"launchModels": [
|
|
125
61
|
"anthropic/claude-haiku-4-5:low",
|
|
126
62
|
"openai/gpt-6.1-sol:high"
|
|
127
63
|
]
|
|
@@ -129,7 +65,7 @@ The built-in `default` definition cannot be edited in persona frontmatter. Confi
|
|
|
129
65
|
}
|
|
130
66
|
```
|
|
131
67
|
|
|
132
|
-
This list is layered configuration. The nearest defined `
|
|
68
|
+
This list is layered configuration. The nearest defined `launchModels` array replaces the broader array rather than appending to it. Tau applies the effective list to every persona that exposes `spawn_agent`.
|
|
133
69
|
|
|
134
70
|
## Working-directory context
|
|
135
71
|
|
|
@@ -137,7 +73,7 @@ This list is layered configuration. The nearest defined `defaultLaunchModels` ar
|
|
|
137
73
|
|
|
138
74
|
When the resolved path differs from the parent `cwd`, Tau rebuilds prompt context from that target directory. It discovers the target platform and repository metadata, reads applicable `AGENTS.md` and configured context files, discovers target skills, and filters those skills through the parent persona's skill selection.
|
|
139
75
|
|
|
140
|
-
The target directory does **not** select a different persona,
|
|
76
|
+
The target directory does **not** select a different persona, model catalog, runtime configuration, credential source, or tool policy for the child. Those remain under parent-session authority. Target configuration is consulted only where needed to rebuild target prompt context, such as target `agentContextFiles` and skill discovery.
|
|
141
77
|
|
|
142
78
|
This distinction matters in monorepos and hosted environments. `workingDirectory` is an execution-environment path. The host and attached client must not reinterpret it against their own filesystems.
|
|
143
79
|
|
|
@@ -145,11 +81,11 @@ A launch is blocked if Tau cannot build target context, the directory is invalid
|
|
|
145
81
|
|
|
146
82
|
## Lifecycle and supervision tools
|
|
147
83
|
|
|
148
|
-
Subagent threads are addressed by host-generated IDs.
|
|
84
|
+
Subagent threads are addressed by host-generated IDs. IDs identify individual live thread records.
|
|
149
85
|
|
|
150
86
|
### Spawn
|
|
151
87
|
|
|
152
|
-
`spawn_agent`
|
|
88
|
+
`spawn_agent` accepts a title, prompt, optional launch model, and optional working directory. The prompt is the child's only initial user input, so it should be self-contained. A successful call returns immediately with the new ID while the child continues in the background.
|
|
153
89
|
|
|
154
90
|
At most eight subagent runs may be active concurrently within one main session. Completed or interrupted idle threads do not consume active capacity.
|
|
155
91
|
|
|
@@ -165,7 +101,7 @@ The host also publishes bounded live subagent activity to observing clients. Tha
|
|
|
165
101
|
|
|
166
102
|
`send_input_to_agent` starts another run on an existing idle thread. The thread retains its conversation state, model, settings, tools, and working directory. It must finish or be interrupted before another input is accepted.
|
|
167
103
|
|
|
168
|
-
Starting a follow-up replaces the previously retained response in the thread's latest-run state. Read any needed result before sending the next input. Follow-ups do not reread a changed persona definition or adopt a newly reloaded launch
|
|
104
|
+
Starting a follow-up replaces the previously retained response in the thread's latest-run state. Read any needed result before sending the next input. Follow-ups do not reread a changed persona definition or adopt a newly reloaded launch allowlist.
|
|
169
105
|
|
|
170
106
|
### Interrupt
|
|
171
107
|
|
|
@@ -185,19 +121,10 @@ Plan durable work accordingly. Important conclusions should be returned to the m
|
|
|
185
121
|
|
|
186
122
|
## Reloading and validation
|
|
187
123
|
|
|
188
|
-
Persona and
|
|
189
|
-
|
|
190
|
-
An invalid subagent definition rejects its containing persona. Common content warnings include:
|
|
124
|
+
Persona tool selections and launch-policy changes take effect after `/reload` in an idle TUI session or in a newly created session. Reload updates new launches without reconfiguring already spawned threads. Follow-ups continue on their captured runtime.
|
|
191
125
|
|
|
192
|
-
|
|
193
|
-
- `subagents` that is not an object;
|
|
194
|
-
- `default` set to anything other than `false`;
|
|
195
|
-
- a custom entry set to `false` or missing `systemPrompt`;
|
|
196
|
-
- blank descriptions, prompts, or list entries;
|
|
197
|
-
- unknown subagent tools;
|
|
198
|
-
- `launchModels` or `defaultLaunchModels` that is not a string array; and
|
|
199
|
-
- an unknown provider or model, invalid effort, or malformed `<provider>/<model>:<effort>` value.
|
|
126
|
+
`subagents.launchModels` must be a string array of valid `<provider>/<model>:<effort>` values. Unknown providers, invalid efforts, and malformed entries produce configuration diagnostics.
|
|
200
127
|
|
|
201
|
-
At execution time, launches can
|
|
128
|
+
At execution time, launches can be blocked by invalid arguments, a model outside the allowlist, exhausted concurrency, missing prompt composition, or target-context failure. Follow-up, wait, and interrupt calls reject unknown IDs; follow-up also rejects a thread that is still running.
|
|
202
129
|
|
|
203
|
-
Use `tau --debug --persona <id>` before starting a local TUI to inspect effective
|
|
130
|
+
Use `tau --debug --persona <id>` before starting a local TUI to inspect effective tool availability, inherited model and settings, and the child tool list. In a running session, `/reload` reports file warnings and `list_agents` shows live thread state.
|
|
@@ -56,7 +56,6 @@ Unknown object fields are stripped, so a misspelled field can have no effect wit
|
|
|
56
56
|
| `projects` | Yes | Object keyed by project ID. Bots select from these definitions. |
|
|
57
57
|
| `workspaceRoot` | No | Base for managed workspaces; defaults to `.tau/telegram-workspaces` beside the Telegram config file. |
|
|
58
58
|
| `maxSessions` | No | Positive integer cap on active sessions across the whole runner. |
|
|
59
|
-
| `systemMessage` | No | Non-empty model-facing instruction prepended to every Telegram turn. |
|
|
60
59
|
|
|
61
60
|
A relative top-level `workspaceRoot` resolves from the Telegram config file's directory. Tau persists runner session records at `<workspaceRoot>-sessions.json` and per-chat preferences at `<workspaceRoot>-project-preferences.json`. These are runner-owned state files, not operator editing surfaces. Session snapshots remain in the normal host store under the runner user's Tau home.
|
|
62
61
|
|
|
@@ -74,8 +73,8 @@ Each `bots.<id>` object supports:
|
|
|
74
73
|
| `allowedChatIds` | No | Integer chat IDs allowed to interact with the bot; also opts groups in. |
|
|
75
74
|
| `defaultProjectId` | No | Initial project preference, and must be allowed for this bot. |
|
|
76
75
|
| `systemMessage` | No | Additional instruction for turns from this bot. |
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
|
|
77
|
+
The runner retries failed polling after 1,000 ms and uses a 30-second Telegram long-poll timeout.
|
|
79
78
|
|
|
80
79
|
An absent or empty `allowedUserIds` means no user restriction. An absent or empty `allowedChatIds` allows DMs but allows no groups. When `allowedChatIds` is non-empty, it restricts DMs to listed chat IDs and enables only listed groups. Group IDs are usually negative integers.
|
|
81
80
|
|
|
@@ -95,7 +94,7 @@ platform_api
|
|
|
95
94
|
release2026
|
|
96
95
|
```
|
|
97
96
|
|
|
98
|
-
Every project can have an optional non-empty `description`. Repository and persistent-directory projects can select `persona` as `<id>` or `<id>:<reasoning
|
|
97
|
+
Every project can have an optional non-empty `description`. Repository and persistent-directory projects can select `persona` as `<id>` or `<id>:<reasoning>`. Composite projects require their own persona. Sessions load applicable `AGENTS.md` instructions.
|
|
99
98
|
|
|
100
99
|
Each project must define exactly one workspace source: `repo`, `directory`, or `projectIds`.
|
|
101
100
|
|
|
@@ -110,9 +109,7 @@ A repository project clones one GitHub repository into a session-specific manage
|
|
|
110
109
|
"repo": "acme/ledger",
|
|
111
110
|
"ref": "main",
|
|
112
111
|
"workingDirectory": "packages/api",
|
|
113
|
-
"
|
|
114
|
-
"persona": "gpt-6.1-sol-coder",
|
|
115
|
-
"noAgentContextFiles": false
|
|
112
|
+
"persona": "gpt-6.1-sol-coder"
|
|
116
113
|
}
|
|
117
114
|
}
|
|
118
115
|
}
|
|
@@ -120,7 +117,7 @@ A repository project clones one GitHub repository into a session-specific manage
|
|
|
120
117
|
|
|
121
118
|
`repo` must use GitHub `owner/repo` syntax. Arbitrary Git URLs are not accepted. The runner needs `gh` and `git` on its login-shell `PATH`, and `gh` must already be authenticated for the repository.
|
|
122
119
|
|
|
123
|
-
|
|
120
|
+
All managed projects use the top-level `workspaceRoot`. A session workspace is:
|
|
124
121
|
|
|
125
122
|
```text
|
|
126
123
|
<effective-workspace-root>/<project-id>/<telegram-session-id>
|
|
@@ -179,7 +176,7 @@ A composite project creates a root containing multiple repositories:
|
|
|
179
176
|
"persona": "gpt-6.1-sol-coder:high",
|
|
180
177
|
"instructions": "Keep shared contracts synchronized.",
|
|
181
178
|
"subagents": {
|
|
182
|
-
"
|
|
179
|
+
"launchModels": ["openai/gpt-6.1-sol:high"]
|
|
183
180
|
}
|
|
184
181
|
}
|
|
185
182
|
}
|
|
@@ -190,11 +187,11 @@ A composite project creates a root containing multiple repositories:
|
|
|
190
187
|
|
|
191
188
|
Members live at `<composite-root>/<member-project-id>` and use each repository's cache, ref, and working directory. The root is the session `cwd`. At creation, Tau writes a root `AGENTS.md` listing the members and optional `instructions`, plus root `.tau/config.json` containing `subagents` or `{}`. These are workspace files, not synchronized mirrors of Telegram configuration, and are not regenerated when a preserved session reconnects.
|
|
192
189
|
|
|
193
|
-
`subagents.
|
|
190
|
+
`subagents.launchModels` sets the subagent launch override allowlist. Runtime config resolves and enforces entries. See [subagents](subagents.md) for model syntax and inheritance.
|
|
194
191
|
|
|
195
192
|
The composite owns the parent persona, subagents, model catalog, config, settings, and tools. Child `.tau/config.json` files are not merged. A subagent in a member directory rebuilds only target context: environment and repository metadata, applicable `AGENTS.md` and `agentContextFiles`, and skills filtered by the parent persona.
|
|
196
193
|
|
|
197
|
-
Composite preparation is all-or-nothing. If one member cannot be prepared, Tau removes the generated composite workspace.
|
|
194
|
+
Composite preparation is all-or-nothing. If one member cannot be prepared, Tau removes the generated composite workspace. Composite workspaces and member repository caches use the top-level `workspaceRoot`.
|
|
198
195
|
|
|
199
196
|
## Managed workspace lifecycle
|
|
200
197
|
|
|
@@ -218,13 +215,13 @@ New and reconstructed workspaces run their hooks; preserved workspaces and persi
|
|
|
218
215
|
|
|
219
216
|
After preparation, Tau creates an ordinary local session at the workspace `cwd`. Runtime discovery reads normal `~/.config/tau` and ancestor `.tau` content visible from that path: models, personas, prompts, skills, project context, host tools, and other session settings work as they do in the TUI.
|
|
220
217
|
|
|
221
|
-
A project `persona` overrides the normal default for that session.
|
|
218
|
+
A project `persona` overrides the normal default for that session. Sessions include applicable `AGENTS.md` instructions. Composite root context is generated deliberately and uses its required persona.
|
|
222
219
|
|
|
223
220
|
Every Telegram turn starts with hidden `<system>` guidance identifying Telegram as the source and reply destination. It favors direct simple answers and brief acknowledgements or meaningful progress updates for tool-driven or multi-step work, since users cannot see tool activity.
|
|
224
221
|
|
|
225
|
-
|
|
222
|
+
A per-bot `systemMessage` appears in a second hidden block after the default. Audio transcripts receive another warning that they may contain noise or errors. Unlike project context, hidden guidance is persisted with user turns and can appear in history, so never put credentials in configured messages.
|
|
226
223
|
|
|
227
|
-
The runner's speech
|
|
224
|
+
The runner's speech credentials and `speech.voiceId` are loaded at startup from its environment and normal Tau config, based on the runner process's startup `cwd`. Restart the runner after changing those settings.
|
|
228
225
|
|
|
229
226
|
## Chat commands
|
|
230
227
|
|
|
@@ -280,14 +277,9 @@ Uploads only queue files; captions are metadata. The next text or voice transcri
|
|
|
280
277
|
|
|
281
278
|
Files use native temporary directories in the execution environment; OS cleanup can invalidate their paths. Pending queues and group context clear on shutdown. File contents and metadata are untrusted.
|
|
282
279
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
- Gemini: `GEMINI_API_KEY`, then `apiKeys.google`
|
|
286
|
-
- OpenAI: `OPENAI_API_KEY`, then `apiKeys.openai`
|
|
287
|
-
|
|
288
|
-
Gemini extracts spelling hints with Gemini 3.8 Flash and transcribes uploaded audio verbatim with `gemini-3.5-transcribe`, using English (`en-US`) and Finnish (`fi-FI`) hints. It attempts remote file deletion afterward. OpenAI normalizes downloaded audio with runner-side `ffmpeg` and uploads it to `gpt-transcribe`. Missing keys prevent transcription, not file delivery. See [credentials](credentials.md).
|
|
280
|
+
Voice transcription uses Gemini with `GEMINI_API_KEY`, then `apiKeys.google`. Optional hints use GPT-6 Luna (reasoning disabled) and OpenAI credentials. Gemini transcribes audio verbatim with `gemini-3.5-transcribe`, using English (`en-US`) and Finnish (`fi-FI`) hints. It attempts remote file deletion. File delivery needs no Google key. See [credentials](credentials.md).
|
|
289
281
|
|
|
290
|
-
`/tts_on`
|
|
282
|
+
`/tts_on` rewrites text with `gpt-6-luna` (reasoning disabled) and generates speech with Eleven v4 Turbo. It requires both OpenAI and ElevenLabs credentials and runner `ffmpeg` with Opus. Voice notes use brisk delivery and 1.15× speed. See [`speech` configuration](config-reference.md#speech) for default and custom voice selection. Source and rewritten text each allow 10,000 Unicode characters; audio allows 32 MiB. Rewrite and job timeouts are one and five minutes. Jobs are ephemeral. Failure sends `voice response failed. please try again.` without affecting text; details stay in logs.
|
|
291
283
|
|
|
292
284
|
## Command client tools
|
|
293
285
|
|
|
@@ -338,7 +330,7 @@ Do not verify bot tokens, provider keys, Access secrets, transcript contents, or
|
|
|
338
330
|
|
|
339
331
|
**A persistent-directory session fails recovery.** Restore the configured directory and its original path, or return the project config to the snapshot's durable `cwd`. Tau does not migrate an existing session to a new persistent directory.
|
|
340
332
|
|
|
341
|
-
**Audio reports a missing key.** Set the credential for the
|
|
333
|
+
**Audio reports a missing key.** Set the credential for the Gemini in the runner process and restart it. A workspace-only environment change does not update the runner's startup speech configuration.
|
|
342
334
|
|
|
343
335
|
**A message sent during active work changes direction.** Telegram uses steering, not ordinary queueing, while a turn is running. Wait for completion before sending an independent next task, or use `/interrupt` to stop the current run first.
|
|
344
336
|
|
|
@@ -47,7 +47,7 @@ list_agents
|
|
|
47
47
|
interrupt_agent
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
When a custom persona extends another persona and omits `tools`, it inherits the base persona's list. A non-extending custom persona that omits `tools` enables `bash`, `write`, `edit`, `view_image`, `web`, `nook`, and `history`.
|
|
50
|
+
When a custom persona extends another persona and omits `tools`, it inherits the base persona's list. A non-extending custom persona that omits `tools` enables `bash`, `write`, `edit`, `view_image`, `web`, `nook`, and `history`. It also enables the five subagent-management tools. Built-in personas enable the same base and subagent tool sets.
|
|
51
51
|
|
|
52
52
|
An empty list disables every persona-controlled host tool:
|
|
53
53
|
|
|
@@ -131,7 +131,7 @@ Neither tool provides a general read operation. Use a scoped non-interactive Bas
|
|
|
131
131
|
|
|
132
132
|
`view_image` reads an image from the execution environment and returns it to a multimodal model. Tau's built-in instruction limits use to cases where the user explicitly asks to view or analyze an image.
|
|
133
133
|
|
|
134
|
-
The supported formats are JPEG, PNG, and WebP. Source reads are capped at 50 MiB. Images
|
|
134
|
+
The supported formats are JPEG, PNG, and WebP. Source reads are capped at 50 MiB. Images with both dimensions at most 4,096 pixels and a model payload at most 3.5 MiB are returned unchanged. Images exceeding the dimension limit are resized to fit within 4,096 pixels while preserving aspect ratio, without upscaling. Tau tries lossless encoding before lossy compression and reduces dimensions further only if needed to meet the payload limit. Transparency is preserved. If Tau cannot reduce a valid image below the model payload limit, the call fails. Relative paths resolve from the execution-environment working directory.
|
|
135
135
|
|
|
136
136
|
## Command-line tools
|
|
137
137
|
|
|
@@ -175,7 +175,7 @@ The effective history query may be machine-local or backed by a configured remot
|
|
|
175
175
|
|
|
176
176
|
### Nook
|
|
177
177
|
|
|
178
|
-
`nook` manages the configured Nook static mini-app platform. It is available
|
|
178
|
+
`nook` manages the configured Nook static mini-app platform. It is available when the main persona lists `nook` and Nook is configured. Subagents inherit it under the same conditions.
|
|
179
179
|
|
|
180
180
|
The tool is intended for explicit requests to inspect or manage Nook, publish a static artifact or mini-app, or work with Nook KV. Once the built-in documentation is visible, app-authoring work requires a second separate documentation-only call that prints the Nook authoring skill. The agent reads that guide before creating or modifying app files. Nook setup and platform behavior are covered in [Nook](nook.md).
|
|
181
181
|
|
|
@@ -184,12 +184,12 @@ The tool is intended for explicit requests to inspect or manage Nook, publish a
|
|
|
184
184
|
A subagent can receive only:
|
|
185
185
|
|
|
186
186
|
```text
|
|
187
|
-
bash write edit view_image web history
|
|
187
|
+
bash write edit view_image web history nook
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
Tau inherits the intersection of the main persona’s tools and those seven eligible names. `tau_docs` is then added intrinsically. There is no separate child tool selection. Nook is bound only when configured, just as for the parent.
|
|
191
191
|
|
|
192
|
-
Subagents do not receive
|
|
192
|
+
Subagents do not receive goal tools, subagent-management tools, or client-provided tools. Their Bash and file tools are scoped to the subagent working directory, including an alternate directory selected at launch. See [subagents](subagents.md) for configuration and working-directory context rebuilding.
|
|
193
193
|
|
|
194
194
|
## Client-owned tools
|
|
195
195
|
|