@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
|
@@ -8,18 +8,16 @@ Read [configuration](configuration.md) first for discovery and precedence. In th
|
|
|
8
8
|
|
|
9
9
|
These are defaults built into this Tau version, not a dump of the effective configuration:
|
|
10
10
|
|
|
11
|
-
| Behavior
|
|
12
|
-
|
|
|
13
|
-
| Default persona
|
|
14
|
-
| Default TUI theme
|
|
15
|
-
| Built-in personas
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Project and global content can change which ids are actually available. A configured default that is not loaded produces a warning rather than creating that persona or theme.
|
|
11
|
+
| Behavior | Shipped default |
|
|
12
|
+
| -------------------------------------- | -------------------- |
|
|
13
|
+
| Default persona | `sonnet-5.5-coder` |
|
|
14
|
+
| Default TUI theme | `gold` |
|
|
15
|
+
| Built-in personas | Enabled |
|
|
16
|
+
| Speech-to-text provider when unset | `openai` |
|
|
17
|
+
| Built-in diff tool code theme | `github-dark-dimmed` |
|
|
18
|
+
| Command client tool timeout when unset | `60000` ms |
|
|
19
|
+
|
|
20
|
+
Project and global content can change which persona ids are available. A configured default must match an available persona or built-in theme; otherwise Tau reports a warning.
|
|
23
21
|
|
|
24
22
|
## Field summary
|
|
25
23
|
|
|
@@ -27,19 +25,13 @@ Project and global content can change which ids are actually available. A config
|
|
|
27
25
|
| --- | --- | --- | --- | --- |
|
|
28
26
|
| `apiKeys` | Object of string values | Global, project | Merge by provider id | Host or feature consumer; `/reload` for session runtime keys, process restart for environment changes |
|
|
29
27
|
| `defaultPersona` | Non-empty string | Global, project | Most-specific wins | Session host; new session |
|
|
30
|
-
| `
|
|
31
|
-
| `disableBuiltinThemes` | Boolean | Global, project | Most-specific wins | TUI client; client restart |
|
|
28
|
+
| `speech` | Object with optional `voiceId` | Global, project | Merge by field | TUI client or Telegram runner; process restart |
|
|
32
29
|
| `defaultTheme` | Non-empty string | Global, project | Most-specific wins | TUI client; client restart |
|
|
33
|
-
| `diffTool` | Object | Global, project | Most-specific complete object | TUI client; client restart |
|
|
34
|
-
| `builtInDiffTool` | Object | Global, project | Most-specific complete object | TUI client; client restart |
|
|
35
30
|
| `clientTools` | Array of objects | Global only | One global definition list | Owning client; TUI restart or new Telegram session client |
|
|
36
31
|
| `enabledClientTools` | String array | Project only | Most-specific project list | Owning client; TUI restart or new Telegram session client |
|
|
37
32
|
| `agentContextFiles` | String array | Global, project | Additive, resolved and deduplicated | Execution environment and session host; `/reload` or new session |
|
|
38
33
|
| `subagents` | Object | Global, project | Field-wise, currently one selectable list | Session runtime; `/reload` or new session |
|
|
39
|
-
| `autoCompact` | Object | Global, project | Merge by field over shipped defaults | Session runtime; `/reload` or new session |
|
|
40
34
|
| `modelSystemNotices` | String map | Global, project | Merge by model target | Session runtime; `/reload`, affects later inputs |
|
|
41
|
-
| `speechToText` | Object | Global, project | Most-specific wins | TUI client or Telegram runner; process restart |
|
|
42
|
-
| `cloudflareSandbox` | Object | Global, project | Merge bridges by id | Host startup; host restart |
|
|
43
35
|
| `flySprites` | Object | Global, project | Merge APIs by id | Host startup; host restart |
|
|
44
36
|
| `nook` | Object | Global, project | Most-specific complete object | Host tool runtime; `/reload` or new session |
|
|
45
37
|
| `history` | Object | Global only | One global object | Host startup; host restart |
|
|
@@ -62,18 +54,6 @@ Allowed reasoning suffixes are `none`, `minimal`, `low`, `medium`, `high`, `xhig
|
|
|
62
54
|
|
|
63
55
|
`defaultPersona` selects a new session when no CLI or session-creation override is supplied. Reloading an existing session retains its current persona id when possible. See [personas](personas.md).
|
|
64
56
|
|
|
65
|
-
### `disableBuiltinPersonas`
|
|
66
|
-
|
|
67
|
-
A boolean that removes shipped personas from the loaded persona catalog:
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"disableBuiltinPersonas": true
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
The default is `false`. When enabled, at least one valid custom persona must be available or session startup fails. This field does not disable user or project personas.
|
|
76
|
-
|
|
77
57
|
### `agentContextFiles`
|
|
78
58
|
|
|
79
59
|
An array of non-empty paths to additional text files included as project context:
|
|
@@ -92,16 +72,16 @@ The startup flag `--no-agent-context-files` disables context injection independe
|
|
|
92
72
|
|
|
93
73
|
The top-level subagent configuration currently accepts one optional field:
|
|
94
74
|
|
|
95
|
-
| Nested field
|
|
96
|
-
|
|
|
97
|
-
| `
|
|
75
|
+
| Nested field | Type | Contract |
|
|
76
|
+
| -------------- | ------------ | -------------------------------------------- |
|
|
77
|
+
| `launchModels` | String array | Allowlist for launch overrides for subagents |
|
|
98
78
|
|
|
99
79
|
Each entry must use `<provider>/<model>:<effort>` and resolve against the merged model catalog:
|
|
100
80
|
|
|
101
81
|
```json
|
|
102
82
|
{
|
|
103
83
|
"subagents": {
|
|
104
|
-
"
|
|
84
|
+
"launchModels": [
|
|
105
85
|
"openai-codex/gpt-6.1-sol:high",
|
|
106
86
|
"anthropic/claude-haiku-4-5:low"
|
|
107
87
|
]
|
|
@@ -109,29 +89,7 @@ Each entry must use `<provider>/<model>:<effort>` and resolve against the merged
|
|
|
109
89
|
}
|
|
110
90
|
```
|
|
111
91
|
|
|
112
|
-
A more-specific list replaces the broader list.
|
|
113
|
-
|
|
114
|
-
### `autoCompact`
|
|
115
|
-
|
|
116
|
-
Automatic compaction settings:
|
|
117
|
-
|
|
118
|
-
| Nested field | Type | Default | Meaning |
|
|
119
|
-
| --- | --- | --- | --- |
|
|
120
|
-
| `enabled` | Boolean | `true` | Whether Tau checks and compacts before model subturns |
|
|
121
|
-
| `reserveTokens` | Positive integer | `16384` | Context reserved below the model's context-window limit |
|
|
122
|
-
| `keepRecentTokens` | Positive integer | `20000` | Target budget for the recent retained tail |
|
|
123
|
-
|
|
124
|
-
Fields merge independently across levels:
|
|
125
|
-
|
|
126
|
-
```json
|
|
127
|
-
{
|
|
128
|
-
"autoCompact": {
|
|
129
|
-
"reserveTokens": 24000
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
The omitted fields retain their broader or shipped values. This setting changes Tau's automatic policy; manual `/compact-all` and `/compact-keep-last` remain available. See [sessions](sessions.md).
|
|
92
|
+
A more-specific list replaces the broader list. The worker’s instructions and tools are inherited from the main persona; custom worker definitions are not supported. See [subagents](subagents.md).
|
|
135
93
|
|
|
136
94
|
### `modelSystemNotices`
|
|
137
95
|
|
|
@@ -175,23 +133,25 @@ Feature-specific helpers use different precedence: `EXA_API_KEY`, `GEMINI_API_KE
|
|
|
175
133
|
|
|
176
134
|
Credentials are consumed where the model or feature runs. In an attached session that is usually the host, not the TUI client. Avoid committing project API keys. See [credentials](credentials.md).
|
|
177
135
|
|
|
178
|
-
### `
|
|
179
|
-
|
|
180
|
-
An object with one required field when present:
|
|
136
|
+
### `speech`
|
|
181
137
|
|
|
182
|
-
|
|
183
|
-
| ------------ | ------ | -------------------- |
|
|
184
|
-
| `provider` | String | `gemini` or `openai` |
|
|
138
|
+
Controls `/speak` and Telegram `/tts_on` voice selection. Set `voiceId` to a non-empty ElevenLabs voice ID:
|
|
185
139
|
|
|
186
140
|
```json
|
|
187
141
|
{
|
|
188
|
-
"
|
|
189
|
-
"
|
|
142
|
+
"speech": {
|
|
143
|
+
"voiceId": "QtY3JBOUKEB5xzrRfOKc"
|
|
190
144
|
}
|
|
191
145
|
}
|
|
192
146
|
```
|
|
193
147
|
|
|
194
|
-
|
|
148
|
+
Without an override, Tau looks up Maisie (`QtY3JBOUKEB5xzrRfOKc`) before synthesis and tries Caleb (`AaOhDHYJ1XLZk74lXhdE`) only if ElevenLabs reports that Maisie was not found. If neither is available, speech fails. A configured voice is used exclusively: an unavailable custom voice is an error, not a request to use a default.
|
|
149
|
+
|
|
150
|
+
Voice lookup authentication, permission, rate-limit, and network errors do not trigger fallback. Successful metadata lookup fixes the voice for the entire reply; it does not guarantee synthesis permission. Synthesis failures never switch voices or automatically retry a potentially billable request.
|
|
151
|
+
|
|
152
|
+
Speech uses Eleven v4 Turbo, the delivery note `[Brisk but relaxed, speaking naturally to a colleague]`, and a 1.15× tempo adjustment. GPT-6 Luna rewrites the text with reasoning disabled before ElevenLabs synthesis, so both OpenAI and ElevenLabs credentials are required. Voice Library API access may require a paid ElevenLabs plan, and shared voices can become unavailable.
|
|
153
|
+
|
|
154
|
+
The TUI reads this setting from its client-side configuration, including during remote attachment. Telegram reads it from the runner's startup configuration, not individual session workspaces. Restart the respective process after changes. This setting does not affect the explicit voices supplied to `tau tool speech-generate`.
|
|
195
155
|
|
|
196
156
|
### `nook`
|
|
197
157
|
|
|
@@ -239,21 +199,9 @@ Credential precedence is `TAU_HISTORY_API_KEY`, then the variable named by `apiK
|
|
|
239
199
|
|
|
240
200
|
## TUI presentation and diff review
|
|
241
201
|
|
|
242
|
-
### `disableBuiltinThemes`
|
|
243
|
-
|
|
244
|
-
A boolean that removes shipped themes from the TUI client's loaded theme list. The default is `false`.
|
|
245
|
-
|
|
246
|
-
```json
|
|
247
|
-
{
|
|
248
|
-
"disableBuiltinThemes": true
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
If built-ins are disabled, provide a valid custom theme. This setting does not affect personas or model behavior.
|
|
253
|
-
|
|
254
202
|
### `defaultTheme`
|
|
255
203
|
|
|
256
|
-
The exact, case-sensitive id of a
|
|
204
|
+
The exact, case-sensitive id of a built-in theme. The shipped default is `gold`:
|
|
257
205
|
|
|
258
206
|
```json
|
|
259
207
|
{
|
|
@@ -261,49 +209,7 @@ The exact, case-sensitive id of a loaded theme. The shipped default is `gold`:
|
|
|
261
209
|
}
|
|
262
210
|
```
|
|
263
211
|
|
|
264
|
-
The attached TUI uses its client-local configuration
|
|
265
|
-
|
|
266
|
-
### `diffTool`
|
|
267
|
-
|
|
268
|
-
A custom client-local diff-review launcher:
|
|
269
|
-
|
|
270
|
-
| Nested field | Type | Required | Contract |
|
|
271
|
-
| --- | --- | --- | --- |
|
|
272
|
-
| `command` | Non-empty string | Yes | Executable name or path |
|
|
273
|
-
| `args` | String array | No | Arguments passed to the executable |
|
|
274
|
-
| `env` | Object of string values | No | Extra environment entries for the tool process |
|
|
275
|
-
|
|
276
|
-
```json
|
|
277
|
-
{
|
|
278
|
-
"diffTool": {
|
|
279
|
-
"command": "./tools/review-ui",
|
|
280
|
-
"args": ["--browser", "firefox"],
|
|
281
|
-
"env": {
|
|
282
|
-
"REVIEW_LOG_LEVEL": "warn"
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
The most-specific complete object wins. A relative command containing `/` resolves from the declaring level root; a bare command resolves through client `PATH`. The TUI launches this process on the client machine. If this field is absent, the TUI uses Tau's built-in diff tool. See [TUI](tui.md) and [client tools](client-tools.md) for the broader client-local distinction.
|
|
289
|
-
|
|
290
|
-
### `builtInDiffTool`
|
|
291
|
-
|
|
292
|
-
Settings for the built-in fallback diff tool:
|
|
293
|
-
|
|
294
|
-
```json
|
|
295
|
-
{
|
|
296
|
-
"builtInDiffTool": {
|
|
297
|
-
"codeTheme": "nord"
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
`codeTheme` defaults to `github-dark-dimmed`. Supported values are:
|
|
303
|
-
|
|
304
|
-
`andromeeda`, `aurora-x`, `ayu-dark`, `ayu-mirage`, `catppuccin-frappe`, `catppuccin-macchiato`, `catppuccin-mocha`, `dark-plus`, `dracula`, `dracula-soft`, `everforest-dark`, `github-dark`, `github-dark-default`, `github-dark-dimmed`, `github-dark-high-contrast`, `gruvbox-dark-hard`, `gruvbox-dark-medium`, `gruvbox-dark-soft`, `horizon`, `horizon-bright`, `houston`, `kanagawa-dragon`, `kanagawa-wave`, `laserwave`, `material-theme`, `material-theme-darker`, `material-theme-ocean`, `material-theme-palenight`, `min-dark`, `monokai`, `night-owl`, `nord`, `one-dark-pro`, `plastic`, `poimandres`, `red`, `rose-pine`, `rose-pine-moon`, `slack-dark`, `solarized-dark`, `synthwave-84`, `tokyo-night`, `vesper`, `vitesse-black`, and `vitesse-dark`.
|
|
305
|
-
|
|
306
|
-
This object does not configure a custom `diffTool` process.
|
|
212
|
+
The attached TUI uses its client-local configuration. `/theme:<id>` changes the current client only and is not persisted into the session. See [TUI](tui.md).
|
|
307
213
|
|
|
308
214
|
## Command client tools
|
|
309
215
|
|
|
@@ -362,36 +268,7 @@ The most-specific project list replaces broader project lists. Project configura
|
|
|
362
268
|
|
|
363
269
|
## Hosted execution environments
|
|
364
270
|
|
|
365
|
-
These fields configure resolvers owned by a host process. They do not provision
|
|
366
|
-
|
|
367
|
-
### `cloudflareSandbox`
|
|
368
|
-
|
|
369
|
-
An optional `bridges` map keyed by bridge id:
|
|
370
|
-
|
|
371
|
-
```json
|
|
372
|
-
{
|
|
373
|
-
"cloudflareSandbox": {
|
|
374
|
-
"bridges": {
|
|
375
|
-
"team": {
|
|
376
|
-
"url": "https://tau-sandbox.example.workers.dev",
|
|
377
|
-
"apiKeyEnv": "TAU_SANDBOX_BRIDGE_KEY",
|
|
378
|
-
"home": "/home/sandbox"
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
Each bridge accepts:
|
|
386
|
-
|
|
387
|
-
| Nested field | Type | Required | Default or behavior |
|
|
388
|
-
| --- | --- | --- | --- |
|
|
389
|
-
| `url` | Non-empty string | Yes | Bridge base URL; schema requires a string but does not perform general URL validation |
|
|
390
|
-
| `apiKey` | Non-empty string | No | Inline bridge key; takes precedence when present |
|
|
391
|
-
| `apiKeyEnv` | Non-empty string | No | Host environment variable used when `apiKey` is absent |
|
|
392
|
-
| `home` | Non-empty string | No | Execution-environment home, default `/home/sandbox` |
|
|
393
|
-
|
|
394
|
-
Bridge maps merge by id. A more-specific bridge replaces the complete entry with that id, so it must repeat the required `url`.
|
|
271
|
+
These fields configure resolvers owned by a host process. They do not provision Sprites. A client creating a session supplies an existing environment identity and `cwd` that references one of these host-known entries. See [remote sessions](remote-sessions.md).
|
|
395
272
|
|
|
396
273
|
### `flySprites`
|
|
397
274
|
|
|
@@ -47,8 +47,7 @@ In `~/.config/tau/config.json`:
|
|
|
47
47
|
|
|
48
48
|
```json
|
|
49
49
|
{
|
|
50
|
-
"defaultPersona": "
|
|
51
|
-
"speechToText": { "provider": "openai" }
|
|
50
|
+
"defaultPersona": "sonnet-5.5-coder"
|
|
52
51
|
}
|
|
53
52
|
```
|
|
54
53
|
|
|
@@ -56,23 +55,19 @@ In `~/work/ledger/.tau/config.json`:
|
|
|
56
55
|
|
|
57
56
|
```json
|
|
58
57
|
{
|
|
59
|
-
"defaultPersona": "gpt-6.1-sol-coder:high"
|
|
60
|
-
"speechToText": { "provider": "gemini" }
|
|
58
|
+
"defaultPersona": "gpt-6.1-sol-coder:high"
|
|
61
59
|
}
|
|
62
60
|
```
|
|
63
61
|
|
|
64
|
-
Within the project, the effective
|
|
62
|
+
Within the project, the effective default persona is `gpt-6.1-sol-coder:high`.
|
|
65
63
|
|
|
66
64
|
A few fields intentionally use other rules:
|
|
67
65
|
|
|
68
66
|
- `apiKeys` merges by provider id. A more-specific key replaces only the same provider's value.
|
|
69
|
-
- `autoCompact` merges by field on top of shipped defaults.
|
|
70
67
|
- `modelSystemNotices` merges by normalized `<provider>/<model>` key.
|
|
71
|
-
- `cloudflareSandbox.bridges` merges by bridge id. A more-specific bridge replaces the complete bridge with that id.
|
|
72
68
|
- `flySprites.apis` merges by API id. A more-specific API replaces the complete API entry with that id.
|
|
73
69
|
- `agentContextFiles` is additive across levels, resolves each entry at its owning level, and removes duplicate resolved paths while preserving order.
|
|
74
|
-
- `
|
|
75
|
-
- `subagents.defaultLaunchModels` selects the most-specific list.
|
|
70
|
+
- `subagents.launchModels` selects the most-specific list.
|
|
76
71
|
- `clientTools` is defined only at global scope. `enabledClientTools` at the most-specific project level is an exact selection from those definitions.
|
|
77
72
|
- `history` is accepted only at global scope.
|
|
78
73
|
|
|
@@ -92,22 +87,18 @@ Relative path bases belong to the level that declares the value:
|
|
|
92
87
|
|
|
93
88
|
- Global `agentContextFiles` entries resolve from home.
|
|
94
89
|
- Project `agentContextFiles` entries resolve from the directory containing `.tau`.
|
|
95
|
-
- A relative `diffTool.command` containing a slash resolves from the same level root.
|
|
96
90
|
- A global `clientTools[].command` containing a slash resolves from home.
|
|
97
|
-
- A bare command such as `
|
|
91
|
+
- A bare command such as `git` is left bare and resolves through the owning process's `PATH`.
|
|
98
92
|
|
|
99
93
|
For example, in `/home/ada/work/ledger/.tau/config.json`:
|
|
100
94
|
|
|
101
95
|
```json
|
|
102
96
|
{
|
|
103
|
-
"agentContextFiles": ["docs/AI_GUIDE.md"]
|
|
104
|
-
"diffTool": {
|
|
105
|
-
"command": "./tools/review-ui"
|
|
106
|
-
}
|
|
97
|
+
"agentContextFiles": ["docs/AI_GUIDE.md"]
|
|
107
98
|
}
|
|
108
99
|
```
|
|
109
100
|
|
|
110
|
-
Tau resolves the
|
|
101
|
+
Tau resolves the path as `/home/ada/work/ledger/docs/AI_GUIDE.md`.
|
|
111
102
|
|
|
112
103
|
Other strings that happen to contain paths are not automatically rebased unless their field contract says so. In particular, hosted execution-environment `home` values are passed as configured.
|
|
113
104
|
|
|
@@ -160,10 +151,8 @@ Never verify a secret by printing the full config or environment into a shared t
|
|
|
160
151
|
|
|
161
152
|
Tau loads startup configuration and content before opening the TUI. Restart the local TUI or `tau attach` to apply client-owned changes such as:
|
|
162
153
|
|
|
163
|
-
- `defaultTheme
|
|
164
|
-
- `diffTool` and `builtInDiffTool`
|
|
154
|
+
- `defaultTheme`
|
|
165
155
|
- `clientTools` and `enabledClientTools`
|
|
166
|
-
- `speechToText` for `/listen`
|
|
167
156
|
- client environment variables
|
|
168
157
|
|
|
169
158
|
Changing `/theme:<id>` updates only the current client presentation. Themes are not persisted in session snapshots.
|
|
@@ -180,7 +169,6 @@ A logical turn captures its persona, model settings, and tools when it starts. R
|
|
|
180
169
|
|
|
181
170
|
Restart the host process to apply settings used to construct host-wide services, including:
|
|
182
171
|
|
|
183
|
-
- `cloudflareSandbox.bridges`
|
|
184
172
|
- `flySprites.apis`
|
|
185
173
|
- `history`
|
|
186
174
|
- host environment variables and Codex account forcing
|
|
@@ -201,7 +189,7 @@ The Telegram runner loads its speech provider and separate runner config at star
|
|
|
201
189
|
|
|
202
190
|
**Editing the host filesystem for target content.** A hosted execution environment owns its project files and home. Put project `.tau` content on that target, not in a similarly named path on the host.
|
|
203
191
|
|
|
204
|
-
**Expecting nested objects to deep-merge.** A project
|
|
192
|
+
**Expecting nested objects to deep-merge.** A project Sprite API entry replaces the complete entry with the same id. Repeat any credentials and settings needed by that API.
|
|
205
193
|
|
|
206
194
|
**Expecting `/reload` to rebuild the client or server.** Reload is a current-session runtime operation. Restart the component that owns startup-only behavior.
|
|
207
195
|
|
|
@@ -17,7 +17,7 @@ Common cases are:
|
|
|
17
17
|
| Exa-backed `web.search` and `web.fetch` | Session host |
|
|
18
18
|
| Remote history replication and queries | Session host |
|
|
19
19
|
| Nook host tool | Session host |
|
|
20
|
-
|
|
|
20
|
+
| Fly Sprite API | Session host startup |
|
|
21
21
|
| `/listen` and `/speak` | TUI client |
|
|
22
22
|
| Telegram transcription and voice responses | Telegram runner |
|
|
23
23
|
| `tau tool pdf-unpack`, `image-generate`, and `speech-generate` | The process running that command |
|
|
@@ -61,16 +61,16 @@ Several Tau features share provider credentials but intentionally prefer a fixed
|
|
|
61
61
|
| Feature | Resolution order |
|
|
62
62
|
| --- | --- |
|
|
63
63
|
| Exa web search and fetch | `EXA_API_KEY`, then `apiKeys.exa` |
|
|
64
|
-
| Google image generation, speech
|
|
64
|
+
| Google image generation, speech-to-text, and Telegram transcription | `GEMINI_API_KEY`, then `apiKeys.google` |
|
|
65
65
|
| Mistral PDF OCR | `MISTRAL_API_KEY`, then `apiKeys.mistral` |
|
|
66
|
-
| OpenAI image generation, speech
|
|
67
|
-
| ElevenLabs speech generation and voice listing | `ELEVENLABS_API_KEY`, then `apiKeys.elevenlabs` |
|
|
66
|
+
| OpenAI image generation, speech rewriting, and transcription spelling hints | `OPENAI_API_KEY`, then `apiKeys.openai` |
|
|
67
|
+
| ElevenLabs speech generation, `/speak` synthesis, Telegram voice synthesis, and voice listing | `ELEVENLABS_API_KEY`, then `apiKeys.elevenlabs` |
|
|
68
68
|
|
|
69
69
|
The Google, Mistral, OpenAI, and ElevenLabs rows describe feature-specific helpers. Model calls follow the general model-authentication order instead, where the configured provider key wins over ambient environment authentication.
|
|
70
70
|
|
|
71
|
-
`web.discover` does not require Exa. `web.search` and `web.fetch` do. `/speak` and Telegram `/tts_on` voice responses
|
|
71
|
+
`web.discover` does not require Exa. `web.search` and `web.fetch` do. `/speak` and Telegram `/tts_on` voice responses require OpenAI for text rewriting and ElevenLabs for synthesis. `/listen` and incoming Telegram voice notes use Google, with optional OpenAI spelling hints. PDF OCR through `tau tool pdf-unpack` uses Mistral.
|
|
72
72
|
|
|
73
|
-
Set these variables on the process that owns the feature. For example, a remote TUI's `/speak` reads the attached client's `
|
|
73
|
+
Set these variables on the process that owns the feature. For example, a remote TUI's `/speak` reads the attached client's `OPENAI_API_KEY` and `ELEVENLABS_API_KEY`, while a Google model selected by the session reads credentials at the host.
|
|
74
74
|
|
|
75
75
|
For `tau tool` commands, credentials and configuration belong to the machine running the command. Tau's agent Bash removes inherited API-key environment variables, so commands invoked through it may need keys in private configuration on that machine. See [configuration](configuration.md) for configuration file locations and [security](security.md) for command environment handling.
|
|
76
76
|
|
|
@@ -153,26 +153,7 @@ If the named `accessClientSecretEnv` has a non-empty value, it wins over inline
|
|
|
153
153
|
|
|
154
154
|
## Hosted execution credentials
|
|
155
155
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
A Cloudflare bridge can use an inline key or name a host environment variable:
|
|
159
|
-
|
|
160
|
-
```json
|
|
161
|
-
{
|
|
162
|
-
"cloudflareSandbox": {
|
|
163
|
-
"bridges": {
|
|
164
|
-
"engineering": {
|
|
165
|
-
"url": "https://sandbox-bridge.example.workers.dev",
|
|
166
|
-
"apiKeyEnv": "TAU_SANDBOX_BRIDGE_KEY"
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
For a bridge, inline `apiKey` wins when present; `apiKeyEnv` is consulted only when no inline key exists. A bridge may also be configured without authentication.
|
|
174
|
-
|
|
175
|
-
A Fly API requires a token:
|
|
156
|
+
Fly Sprite APIs are host-owned resolver configuration. They must be available when the host starts, before a client asks it to create a Sprite session. Each API requires a token:
|
|
176
157
|
|
|
177
158
|
```json
|
|
178
159
|
{
|
|
@@ -189,7 +170,7 @@ A Fly API requires a token:
|
|
|
189
170
|
|
|
190
171
|
For Fly, inline `token` wins when present; `tokenEnv` is the fallback. Session creation fails if neither resolves.
|
|
191
172
|
|
|
192
|
-
These target definitions are read from the host's startup configuration, not from an attached client. `/reload` refreshes session runtime content but does not rebuild the host's execution-environment resolvers. Restart the host after changing
|
|
173
|
+
These target definitions are read from the host's startup configuration, not from an attached client. `/reload` refreshes session runtime content but does not rebuild the host's execution-environment resolvers. Restart the host after changing Sprite API definitions or their environment.
|
|
193
174
|
|
|
194
175
|
## Safe verification
|
|
195
176
|
|
|
@@ -198,7 +179,7 @@ Verify credentials through the operation that owns them, without printing secret
|
|
|
198
179
|
- Run `tau auth list` to check Codex identities, enabled state, refresh health, and quota windows.
|
|
199
180
|
- Run `/reload` while the session is idle after changing runtime `apiKeys`; review every configuration warning.
|
|
200
181
|
- Make a small request with the intended persona to verify model authentication and endpoint access.
|
|
201
|
-
- Exercise the specific feature after setting Exa, speech, History, Nook
|
|
182
|
+
- Exercise the specific feature after setting Exa, speech, History, Nook or Fly credentials. Their missing-credential errors name the accepted source.
|
|
202
183
|
- For remote sessions, first confirm which machine is the host and which process owns the feature.
|
|
203
184
|
|
|
204
185
|
Do not verify by printing the process environment, dumping `config.json`, or reading `auth.json` into a transcript. If a secret was exposed in shell history, logs, a session, or version control, rotate it at the provider and replace the compromised value. Broader handling guidance is in [security](security.md) and failure checks are in [troubleshooting](troubleshooting.md).
|
|
@@ -96,7 +96,7 @@ The output's parent directory must exist. Neither the output nor `<output>.parts
|
|
|
96
96
|
|
|
97
97
|
Original bytes and usage remain available if conversion fails. Conversion may discard embedded metadata; use the original when provenance matters.
|
|
98
98
|
|
|
99
|
-
Failures exit nonzero and
|
|
99
|
+
Failures exit nonzero and identify the invalid option or failed processing stage. Existing output or artifact paths require a fresh `--output` path; preserve retained recovery artifacts. Once generation starts, errors report the retained directory, which may be empty or incomplete. If final publication fails, the error points to the completed image to copy to a fresh path without generating again. Requests are not automatically retried because a failed request may already have incurred a charge; another generation request may incur another charge.
|
|
100
100
|
|
|
101
101
|
## Approximate cost
|
|
102
102
|
|
|
@@ -149,7 +149,7 @@ try {
|
|
|
149
149
|
|
|
150
150
|
`client.sessions.create(input)` sends `session.create`, then observes the new session before resolving. `client.sessions.observe(sessionId)` does the same observation handshake for an existing session. `client.sessions.list()` returns `{ sessionId, lifecycle }` summaries.
|
|
151
151
|
|
|
152
|
-
Creation requires complete execution-environment input and immutable attributes. The execution `cwd` must be absolute and belongs to the selected environment, not necessarily the SDK process.
|
|
152
|
+
Creation requires complete execution-environment input and immutable attributes. The execution `cwd` must be absolute and belongs to the selected environment, not necessarily the SDK process. Fly Sprite sessions refer to already-provisioned targets configured on the host. See [sessions](sessions.md) for creation attributes and [ownership and scope](ownership-and-scope.md) for path ownership.
|
|
153
153
|
|
|
154
154
|
`session.unobserve()` stops observation and makes that `TauSdkSession` facade terminal. It does not delete the hosted session. `client.close()` is idempotent and closes the whole client.
|
|
155
155
|
|
|
@@ -43,7 +43,7 @@ For repository and composite projects it prepares managed workspaces. A configur
|
|
|
43
43
|
| SDK over WebSocket | SDK caller | Remote server | Environment selected or restored by that host |
|
|
44
44
|
| `tau telegram` | Telegram runner | In-process on the runner machine | Prepared project workspace or persistent directory |
|
|
45
45
|
|
|
46
|
-
A
|
|
46
|
+
A Fly Sprite can place the execution environment on another target while the host stays on its own machine. The host keeps provider credentials and orchestration authority; the target owns its paths and commands.
|
|
47
47
|
|
|
48
48
|
## Who owns common paths and behavior
|
|
49
49
|
|
|
@@ -56,11 +56,11 @@ A Cloudflare Sandbox or Fly Sprite can place the execution environment on anothe
|
|
|
56
56
|
| Codex OAuth accounts | Host home | Run `tau auth …` on the host machine. Do not edit auth storage. |
|
|
57
57
|
| Session snapshots | Host home | Local defaults live under the host's Tau config directory. Do not edit session files. |
|
|
58
58
|
| Local transcript history and remote history outbox | Host home | History follows the host, not an attached TUI or execution target. |
|
|
59
|
-
| Terminal theme and `/theme` | TUI client | An attached client
|
|
60
|
-
| `/diff` process | TUI client |
|
|
59
|
+
| Terminal theme and `/theme` | TUI client | An attached client selects from Tau’s built-in themes. Themes are not session state. |
|
|
60
|
+
| `/diff` process | TUI client | Tau’s built-in browser tool runs on the client machine. Repository capture still runs through the session execution environment. |
|
|
61
61
|
| Configured command client tools | Owning client | Commands and their environment are client-local; their execution-environment facade reaches the session target explicitly. |
|
|
62
62
|
| `/listen` and `/speak` capture or playback | TUI client | Required programs, devices, and media credentials belong on the client machine. |
|
|
63
|
-
| Host execution-environment targets | Host startup |
|
|
63
|
+
| Host execution-environment targets | Host startup | Fly Sprite API definitions must be available to the host before it accepts sessions using them. |
|
|
64
64
|
| Telegram bot token, routing, workspaces, and generated runner state | Telegram runner | Manage these through the Telegram config and runner commands, not project `config.json`. |
|
|
65
65
|
|
|
66
66
|
## Decide where to edit configuration
|
|
@@ -84,7 +84,7 @@ tau attach --new --cwd /srv/ledger ws://devbox.example:8787
|
|
|
84
84
|
|
|
85
85
|
The path `/srv/ledger` is interpreted by the host and its local execution environment. Project personas and `.tau/config.json` are read from `/srv/ledger` and its ancestors on `devbox.example`. The laptop's current directory does not influence that session runtime.
|
|
86
86
|
|
|
87
|
-
The laptop still loads its own theme
|
|
87
|
+
The laptop still loads its own theme and command client tools before attaching. `/diff` launches Tau’s built-in browser tool on the laptop. Git snapshot commands for the review run through the session and therefore see `/srv/ledger` on the execution environment.
|
|
88
88
|
|
|
89
89
|
If the selected persona needs a provider credential, the host on `devbox.example` makes the model call. Export the provider environment variable for `tau serve` there, or make the appropriate runtime configuration available to that host. Setting it only in the laptop shell does not authenticate the remote host.
|
|
90
90
|
|
|
@@ -33,6 +33,6 @@ On success, stdout reports the persistent temporary output directory and a compl
|
|
|
33
33
|
|
|
34
34
|
OCR text can contain recognition mistakes. Embedded visuals that are not represented in Markdown are marked with placeholders pointing to the corresponding page patches. Read `document.md` for the whole document, use `pages/` for page-level work, and inspect `images/` before trusting or correcting uncertain OCR.
|
|
35
35
|
|
|
36
|
-
The command attempts to delete the remote upload after OCR. A deletion failure is reported in the command output. Successful local artifacts remain on disk for follow-up use; delete them when they are no longer needed. If processing fails, Tau attempts to remove the partial local output directory.
|
|
36
|
+
The command attempts to delete the remote upload after OCR. A deletion failure is reported in the command output. Successful local artifacts remain on disk for follow-up use; delete them when they are no longer needed. If processing fails, Tau attempts to remove the partial local output directory. The error identifies the failed stage and reports whether partial output was removed or cleanup failed. Partial output is not a complete result. Failures after the OCR request starts warn that another OCR request may incur another charge.
|
|
37
37
|
|
|
38
38
|
See [command-line tools](tools.md) for command discovery and execution ownership.
|
|
@@ -1,20 +1,22 @@
|
|
|
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 and skills. 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, skills, and
|
|
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, skills, 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
|
|
|
13
|
-
GPT-6 Sol, GPT-6
|
|
13
|
+
GPT-6.1 Sol, GPT-6 Luna, and GPT-6 Astra have API and ChatGPT variants for chat and coding. Fast ChatGPT variants use priority service and are available only for coding. They are available only when the effective catalog contains the matching model ID (`gpt-6.1-sol`, `gpt-6-luna`, or `gpt-6-astra`) for the corresponding provider.
|
|
14
|
+
|
|
15
|
+
All built-in personas default to medium reasoning. The startup default is `sonnet-5.5-coder`.
|
|
14
16
|
|
|
15
17
|
After a remote catalog refresh, `/reload` adopts the updated catalog for an existing session.
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
Built-in personas are always included in the catalog. Custom personas can replace a built-in by using the same ID.
|
|
18
20
|
|
|
19
21
|
Use one of these to inspect the current effective list:
|
|
20
22
|
|
|
@@ -65,14 +67,6 @@ tools:
|
|
|
65
67
|
- view_image
|
|
66
68
|
- web
|
|
67
69
|
- history
|
|
68
|
-
subagents:
|
|
69
|
-
default: false
|
|
70
|
-
verifier:
|
|
71
|
-
description: Verify release state independently. Trigger: balanced.
|
|
72
|
-
systemPrompt: Verify the requested release state and report concrete blockers.
|
|
73
|
-
tools:
|
|
74
|
-
- bash
|
|
75
|
-
- history
|
|
76
70
|
---
|
|
77
71
|
|
|
78
72
|
Work as a release engineer. Inspect repository policy before changing release state.
|
|
@@ -102,9 +96,8 @@ The frontmatter must be a YAML object between valid delimiters. Unknown fields a
|
|
|
102
96
|
| `allowedReasoningLevels` | Array of reasoning efforts offered by the TUI selector. |
|
|
103
97
|
| `skills` | `"*"`, a list of discovered skill names, or `[]`. |
|
|
104
98
|
| `tools` | Explicit list of persona-controlled tools. |
|
|
105
|
-
| `subagents` | Map of enabled subagent definitions. |
|
|
106
99
|
|
|
107
|
-
If a standalone custom persona omits `skills`, Tau selects all discovered skills with `"*"`. If it omits `
|
|
100
|
+
If a standalone custom persona omits `skills`, Tau selects all discovered skills with `"*"`. If it 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.
|
|
108
101
|
|
|
109
102
|
The persona-controlled tool names are:
|
|
110
103
|
|
|
@@ -133,10 +126,8 @@ Important boundaries are:
|
|
|
133
126
|
|
|
134
127
|
- `extends` resolves shipped built-ins, not another custom persona.
|
|
135
128
|
- Lookup of the built-in ID is case-insensitive.
|
|
136
|
-
- It remains available as an inheritance base even when `disableBuiltinPersonas` hides built-ins from the effective catalog.
|
|
137
129
|
- A non-empty Markdown body replaces the inherited base prompt.
|
|
138
130
|
- Explicit `skills` or `tools` replaces the inherited selection.
|
|
139
|
-
- Explicit `subagents` builds a new subagent map rather than merging custom entries into the inherited map. Unless that map contains `default: false`, Tau adds the built-in `default` subagent.
|
|
140
131
|
- `reasoning` and `serviceTier` override their individual inherited settings; omitted settings remain inherited.
|
|
141
132
|
|
|
142
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.
|
|
@@ -185,7 +176,7 @@ Run `/reload` while the TUI session is idle after editing personas, `models.json
|
|
|
185
176
|
|
|
186
177
|
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.
|
|
187
178
|
|
|
188
|
-
A reload does not alter a turn already in progress, and the TUI refuses the operation while one is running. Existing live subagent threads retain the runtime with which they were created; newly spawned subagents
|
|
179
|
+
A reload does not alter a turn already in progress, and the TUI refuses the operation while one is running. Existing live subagent threads retain the runtime with which they were created; newly spawned subagents inherit the reloaded persona. See [subagents](subagents.md).
|
|
189
180
|
|
|
190
181
|
## Validation and common mistakes
|
|
191
182
|
|
|
@@ -198,8 +189,6 @@ An invalid persona is skipped and reported as a configuration warning. Other val
|
|
|
198
189
|
- an `extends` target that is not a shipped built-in;
|
|
199
190
|
- an invalid reasoning effort or service tier;
|
|
200
191
|
- `skills` that is neither `"*"` nor a string list, or contains a blank entry;
|
|
201
|
-
- an unknown persona tool
|
|
202
|
-
- an invalid subagent name, missing custom `systemPrompt`, unsupported subagent tool, or invalid launch model; and
|
|
203
|
-
- attempting to override the built-in `default` subagent instead of using `default: false`.
|
|
192
|
+
- an unknown persona tool.
|
|
204
193
|
|
|
205
194
|
`/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.
|
|
@@ -64,16 +64,6 @@ After recording succeeds, the picker becomes non-actionable and shows the prompt
|
|
|
64
64
|
|
|
65
65
|
Only the newest picker in a chat is active. Pickers are bound to the session that opened them and expire after selection, session replacement, or runner restart. Duplicate taps do not record the same picker twice. Prompt selection does not consume pending attachments or group context.
|
|
66
66
|
|
|
67
|
-
### Install starter prompts
|
|
68
|
-
|
|
69
|
-
Use `tau install` to copy Tau's starter content:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
tau install --prompt commit-staged
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
The default target is `.tau/prompts/` under the current directory. Add `--global` for `~/.config/tau/prompts/`. Existing prompt files are skipped unless `--force` is supplied. Running `tau install` without `--prompt` or `--skill` installs all starter prompts and skills.
|
|
76
|
-
|
|
77
67
|
## `AGENTS.md` provides standing context
|
|
78
68
|
|
|
79
69
|
`AGENTS.md` is project context injected into the effective system prompt. It is suitable for repository conventions, architectural boundaries, verification commands, and instructions that should apply to every relevant request.
|
|
@@ -159,7 +149,7 @@ The alternate directory controls:
|
|
|
159
149
|
- target applicable `AGENTS.md` and `agentContextFiles`,
|
|
160
150
|
- target-discovered skills filtered by the parent persona.
|
|
161
151
|
|
|
162
|
-
The parent session remains the source of truth for the selected persona,
|
|
152
|
+
The parent session remains the source of truth for the selected persona, model catalog, model settings, and tool policy. Tau filters skills discovered at the alternate directory through the parent persona's skill selection. It does not replace the source persona with a persona found in the target directory. See [subagents](subagents.md) for the full launch contract.
|
|
163
153
|
|
|
164
154
|
## Leading hidden system blocks
|
|
165
155
|
|