@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.
Files changed (285) hide show
  1. package/dist/core/agent/agent_runtime.js +6 -11
  2. package/dist/core/agent/agent_runtime.js.map +1 -1
  3. package/dist/core/cli.js +2 -5
  4. package/dist/core/cli.js.map +1 -1
  5. package/dist/core/commands/registry.js +2 -1
  6. package/dist/core/commands/registry.js.map +1 -1
  7. package/dist/core/config/builtin_themes.js +0 -30
  8. package/dist/core/config/builtin_themes.js.map +1 -1
  9. package/dist/core/config/content_loader.js +19 -308
  10. package/dist/core/config/content_loader.js.map +1 -1
  11. package/dist/core/config/index.js +1 -1
  12. package/dist/core/config/index.js.map +1 -1
  13. package/dist/core/config/paths.js +0 -1
  14. package/dist/core/config/paths.js.map +1 -1
  15. package/dist/core/config/runtime.js +2 -3
  16. package/dist/core/config/runtime.js.map +1 -1
  17. package/dist/core/config/runtime_config_snapshot.js +0 -1
  18. package/dist/core/config/runtime_config_snapshot.js.map +1 -1
  19. package/dist/core/config/schema.js +17 -234
  20. package/dist/core/config/schema.js.map +1 -1
  21. package/dist/core/config/skills_loader.js +0 -8
  22. package/dist/core/config/skills_loader.js.map +1 -1
  23. package/dist/core/config/theme_variants.js.map +1 -1
  24. package/dist/core/config/virtual_bundle.js +3 -9
  25. package/dist/core/config/virtual_bundle.js.map +1 -1
  26. package/dist/core/config/virtual_defaults.js +0 -2
  27. package/dist/core/config/virtual_defaults.js.map +1 -1
  28. package/dist/core/debug.js +8 -25
  29. package/dist/core/debug.js.map +1 -1
  30. package/dist/core/diff_review/bridge.js +2 -24
  31. package/dist/core/diff_review/bridge.js.map +1 -1
  32. package/dist/core/index.js +0 -1
  33. package/dist/core/index.js.map +1 -1
  34. package/dist/core/models/catalog.js +2 -3
  35. package/dist/core/models/catalog.js.map +1 -1
  36. package/dist/core/personas.js +7 -89
  37. package/dist/core/personas.js.map +1 -1
  38. package/dist/core/runtime/agent_model.js +0 -2
  39. package/dist/core/runtime/agent_model.js.map +1 -1
  40. package/dist/core/runtime/chat_runtime.js +4 -6
  41. package/dist/core/runtime/chat_runtime.js.map +1 -1
  42. package/dist/core/runtime/session_prompt_composer.js +12 -27
  43. package/dist/core/runtime/session_prompt_composer.js.map +1 -1
  44. package/dist/core/static/index.js +4 -7
  45. package/dist/core/static/index.js.map +1 -1
  46. package/dist/core/static/tau_docs/client-tools.md +1 -1
  47. package/dist/core/static/tau_docs/config-reference.md +30 -153
  48. package/dist/core/static/tau_docs/configuration.md +9 -21
  49. package/dist/core/static/tau_docs/credentials.md +9 -28
  50. package/dist/core/static/tau_docs/image-generation.md +1 -1
  51. package/dist/core/static/tau_docs/node-sdk.md +1 -1
  52. package/dist/core/static/tau_docs/ownership-and-scope.md +5 -5
  53. package/dist/core/static/tau_docs/pdf-unpacking.md +1 -1
  54. package/dist/core/static/tau_docs/personas.md +9 -20
  55. package/dist/core/static/tau_docs/prompts-and-project-context.md +1 -11
  56. package/dist/core/static/tau_docs/remote-sessions.md +6 -22
  57. package/dist/core/static/tau_docs/security.md +2 -2
  58. package/dist/core/static/tau_docs/session-protocol-methods.md +1 -7
  59. package/dist/core/static/tau_docs/session-protocol.md +2 -0
  60. package/dist/core/static/tau_docs/sessions.md +2 -14
  61. package/dist/core/static/tau_docs/skills.md +1 -23
  62. package/dist/core/static/tau_docs/speech-generation.md +1 -1
  63. package/dist/core/static/tau_docs/subagents.md +26 -99
  64. package/dist/core/static/tau_docs/telegram.md +14 -22
  65. package/dist/core/static/tau_docs/tools.md +6 -6
  66. package/dist/core/static/tau_docs/troubleshooting.md +19 -20
  67. package/dist/core/static/tau_docs/tui.md +18 -44
  68. package/dist/core/subagents/agent_supervisor.js +5 -6
  69. package/dist/core/subagents/agent_supervisor.js.map +1 -1
  70. package/dist/core/subagents/format.js +1 -1
  71. package/dist/core/subagents/format.js.map +1 -1
  72. package/dist/core/subagents/prompt.js +7 -0
  73. package/dist/core/subagents/prompt.js.map +1 -0
  74. package/dist/core/subagents/registry.js +14 -43
  75. package/dist/core/subagents/registry.js.map +1 -1
  76. package/dist/core/subagents/types.js +2 -2
  77. package/dist/core/subagents/types.js.map +1 -1
  78. package/dist/core/telegram/adapter.js +23 -30
  79. package/dist/core/telegram/adapter.js.map +1 -1
  80. package/dist/core/telegram/cli.js +4 -5
  81. package/dist/core/telegram/cli.js.map +1 -1
  82. package/dist/core/telegram/config.js +32 -57
  83. package/dist/core/telegram/config.js.map +1 -1
  84. package/dist/core/telegram/local_session_client.js +0 -3
  85. package/dist/core/telegram/local_session_client.js.map +1 -1
  86. package/dist/core/telegram/runtime.js +3 -5
  87. package/dist/core/telegram/runtime.js.map +1 -1
  88. package/dist/core/telegram/session_manager.js +29 -52
  89. package/dist/core/telegram/session_manager.js.map +1 -1
  90. package/dist/core/telegram/tts.js +11 -9
  91. package/dist/core/telegram/tts.js.map +1 -1
  92. package/dist/core/telegram/workspace.js +13 -18
  93. package/dist/core/telegram/workspace.js.map +1 -1
  94. package/dist/core/tool/image_generate.js +37 -14
  95. package/dist/core/tool/image_generate.js.map +1 -1
  96. package/dist/core/tool/media.js +84 -4
  97. package/dist/core/tool/media.js.map +1 -1
  98. package/dist/core/tool/pdf_unpack.js +17 -10
  99. package/dist/core/tool/pdf_unpack.js.map +1 -1
  100. package/dist/core/tool/speech_generate.js +30 -13
  101. package/dist/core/tool/speech_generate.js.map +1 -1
  102. package/dist/core/tools/catalog.js +10 -5
  103. package/dist/core/tools/catalog.js.map +1 -1
  104. package/dist/core/tools/send_input_to_agent.js +1 -1
  105. package/dist/core/tools/send_input_to_agent.js.map +1 -1
  106. package/dist/core/tools/spawn_agent.js +13 -30
  107. package/dist/core/tools/spawn_agent.js.map +1 -1
  108. package/dist/core/tools/view_image.js +12 -17
  109. package/dist/core/tools/view_image.js.map +1 -1
  110. package/dist/core/types.js.map +1 -1
  111. package/dist/core/usage/logs.js.map +1 -1
  112. package/dist/core/utils/gemini_transcription.js +5 -95
  113. package/dist/core/utils/gemini_transcription.js.map +1 -1
  114. package/dist/core/utils/{gemini_speech.js → speech.js} +167 -428
  115. package/dist/core/utils/speech.js.map +1 -0
  116. package/dist/core/utils/speech_to_text.js +24 -52
  117. package/dist/core/utils/speech_to_text.js.map +1 -1
  118. package/dist/core/utils/speech_to_text_keywords.js +65 -0
  119. package/dist/core/utils/speech_to_text_keywords.js.map +1 -1
  120. package/dist/core/version.js +1 -1
  121. package/dist/diff_tool/app/dist/assets/{angular-html-BjHlbeCk.js → angular-html-CnO8qept.js} +1 -1
  122. package/dist/diff_tool/app/dist/assets/{angular-ts-5J5hsUV-.js → angular-ts-DPXUio9Z.js} +1 -1
  123. package/dist/diff_tool/app/dist/assets/{apl-ChIs51_N.js → apl-X8YsymsQ.js} +1 -1
  124. package/dist/diff_tool/app/dist/assets/{astro-RtGdbaIT.js → astro-BQ9k8AQ0.js} +1 -1
  125. package/dist/diff_tool/app/dist/assets/{blade-Cuc0ZzS1.js → blade-DZ1LYIzB.js} +1 -1
  126. package/dist/diff_tool/app/dist/assets/{c-IpjS3QEt.js → c-VLTwNh7z.js} +1 -1
  127. package/dist/diff_tool/app/dist/assets/{chapel-BvHOmF40.js → chapel-5s-sGN8D.js} +1 -1
  128. package/dist/diff_tool/app/dist/assets/{cobol-BWLkapNx.js → cobol-C9RzwrVu.js} +1 -1
  129. package/dist/diff_tool/app/dist/assets/{coffee-lfdf_MuK.js → coffee-BHvjZ343.js} +1 -1
  130. package/dist/diff_tool/app/dist/assets/{cpp-GvMfdutG.js → cpp-CBTVXbBp.js} +1 -1
  131. package/dist/diff_tool/app/dist/assets/{crystal--kdmUeXB.js → crystal-DQJua4y4.js} +1 -1
  132. package/dist/diff_tool/app/dist/assets/{css-CnlOazId.js → css-BQflXFb6.js} +1 -1
  133. package/dist/diff_tool/app/dist/assets/{edge-CwnxQiFe.js → edge-BmdmXGH4.js} +1 -1
  134. package/dist/diff_tool/app/dist/assets/{elixir-BVO19qQd.js → elixir-oiOLs98L.js} +1 -1
  135. package/dist/diff_tool/app/dist/assets/{elm-BK3istEo.js → elm-BgYuiU4E.js} +1 -1
  136. package/dist/diff_tool/app/dist/assets/{erb-CO4uKwKD.js → erb-CvFrXpyY.js} +1 -1
  137. package/dist/diff_tool/app/dist/assets/{git-rebase-CDrrgbGV.js → git-rebase-D3Zo1BLH.js} +1 -1
  138. package/dist/diff_tool/app/dist/assets/{glimmer-js-7CFSyo6c.js → glimmer-js-B4-8E3lJ.js} +1 -1
  139. package/dist/diff_tool/app/dist/assets/{glimmer-ts-Ofllf2Yo.js → glimmer-ts-CtKkD0t_.js} +1 -1
  140. package/dist/diff_tool/app/dist/assets/{glsl-K_36bq1K.js → glsl-BAqforx_.js} +1 -1
  141. package/dist/diff_tool/app/dist/assets/{graphql-BMZnssUN.js → graphql-DuE1RMyL.js} +1 -1
  142. package/dist/diff_tool/app/dist/assets/{hack-MG_t8QNs.js → hack-CHBcXjz1.js} +1 -1
  143. package/dist/diff_tool/app/dist/assets/{haml-0hDK-uCt.js → haml-DAs2z3tD.js} +1 -1
  144. package/dist/diff_tool/app/dist/assets/{handlebars-D4_MRJPB.js → handlebars-CfAla6QK.js} +1 -1
  145. package/dist/diff_tool/app/dist/assets/{html-BCi--7qp.js → html-D5co0BLD.js} +1 -1
  146. package/dist/diff_tool/app/dist/assets/{html-derivative-DYq2AWiD.js → html-derivative-BZaWEmAT.js} +1 -1
  147. package/dist/diff_tool/app/dist/assets/{http-BmLFm2Pm.js → http-Cii5MjJE.js} +1 -1
  148. package/dist/diff_tool/app/dist/assets/{hurl-CT71cK69.js → hurl-Bur-XdJO.js} +1 -1
  149. package/dist/diff_tool/app/dist/assets/index-CZUi_I-p.js +340 -0
  150. package/dist/diff_tool/app/dist/assets/{java-Bm2FCq-d.js → java-DN39wI4w.js} +1 -1
  151. package/dist/diff_tool/app/dist/assets/{javascript-C7oEny21.js → javascript-VUReF1H4.js} +1 -1
  152. package/dist/diff_tool/app/dist/assets/{jinja-igQBS-SS.js → jinja-BcrfV1JB.js} +1 -1
  153. package/dist/diff_tool/app/dist/assets/{jison-BrOUp4rK.js → jison-Bez5Mtmy.js} +1 -1
  154. package/dist/diff_tool/app/dist/assets/{json-DsuR7Nai.js → json-ChV8m0Le.js} +1 -1
  155. package/dist/diff_tool/app/dist/assets/{jsx-BdomFXcA.js → jsx-D0SXNtM0.js} +1 -1
  156. package/dist/diff_tool/app/dist/assets/{julia-DqOG4pbM.js → julia-DvhpcBwG.js} +1 -1
  157. package/dist/diff_tool/app/dist/assets/{just-ZrSTuT0n.js → just-BGwe8S6x.js} +1 -1
  158. package/dist/diff_tool/app/dist/assets/{latex-DbmtZIwN.js → latex-pWSag83P.js} +1 -1
  159. package/dist/diff_tool/app/dist/assets/{liquid-DKnUlRIp.js → liquid-UdnqDjKz.js} +1 -1
  160. package/dist/diff_tool/app/dist/assets/{lua-Cyq3f59a.js → lua-CjDHeHEr.js} +1 -1
  161. package/dist/diff_tool/app/dist/assets/{marko-hmOsFPHQ.js → marko-yLX6iW68.js} +1 -1
  162. package/dist/diff_tool/app/dist/assets/{mdc-BnnQmDC-.js → mdc-BOLj6Oyq.js} +1 -1
  163. package/dist/diff_tool/app/dist/assets/{nginx-C0zLUSna.js → nginx-5r5xPc2T.js} +1 -1
  164. package/dist/diff_tool/app/dist/assets/{nim-Oljl3c5n.js → nim-9exKQYMz.js} +1 -1
  165. package/dist/diff_tool/app/dist/assets/{org-Cp4CA-0c.js → org-B2fpAlbt.js} +1 -1
  166. package/dist/diff_tool/app/dist/assets/{perl-DstDVYmJ.js → perl-DV2fcwyY.js} +1 -1
  167. package/dist/diff_tool/app/dist/assets/{php-Cc3bNZ7J.js → php-D-AthX_E.js} +1 -1
  168. package/dist/diff_tool/app/dist/assets/{pug-B3xDUzl0.js → pug-DuKcQxFj.js} +1 -1
  169. package/dist/diff_tool/app/dist/assets/{qml-B9iDahKk.js → qml-C16b4SYx.js} +1 -1
  170. package/dist/diff_tool/app/dist/assets/{r-B7M5ZSBC.js → r-B1ZldnJf.js} +1 -1
  171. package/dist/diff_tool/app/dist/assets/{razor-BlfV6bjQ.js → razor-TYmslaAB.js} +1 -1
  172. package/dist/diff_tool/app/dist/assets/{regexp-BVT0NBj6.js → regexp-dWCffmDD.js} +1 -1
  173. package/dist/diff_tool/app/dist/assets/{rst-Cq-Mcher.js → rst-DEkLr2YR.js} +1 -1
  174. package/dist/diff_tool/app/dist/assets/{ruby-5uCK_s01.js → ruby-BJnJzr4u.js} +1 -1
  175. package/dist/diff_tool/app/dist/assets/{sas-m4dYluKN.js → sas-DeRsDbUE.js} +1 -1
  176. package/dist/diff_tool/app/dist/assets/{scss-DFiJcBQH.js → scss-SGV_CwKm.js} +1 -1
  177. package/dist/diff_tool/app/dist/assets/{shellscript-DCtSkJJQ.js → shellscript-BI7khmmR.js} +1 -1
  178. package/dist/diff_tool/app/dist/assets/{shellsession-_DntbpLM.js → shellsession-Nupw_Vvw.js} +1 -1
  179. package/dist/diff_tool/app/dist/assets/{soy-Dd1fWsG8.js → soy-B96cBzxv.js} +1 -1
  180. package/dist/diff_tool/app/dist/assets/{sql-Bygp5F-5.js → sql-CsIdKfaO.js} +1 -1
  181. package/dist/diff_tool/app/dist/assets/{stata-CqIA1VQD.js → stata-Dnq48cE6.js} +1 -1
  182. package/dist/diff_tool/app/dist/assets/{surrealql-C2-2C-z3.js → surrealql-D6lw4TiD.js} +1 -1
  183. package/dist/diff_tool/app/dist/assets/{svelte-CrTy7VSb.js → svelte-ChVoq9tB.js} +1 -1
  184. package/dist/diff_tool/app/dist/assets/{templ-B_h9AHFJ.js → templ-Dh1EXuHD.js} +1 -1
  185. package/dist/diff_tool/app/dist/assets/{tex-AwlGuBDG.js → tex-KTYusNFe.js} +1 -1
  186. package/dist/diff_tool/app/dist/assets/{ts-tags--oqU6stH.js → ts-tags-DC2RU1_R.js} +1 -1
  187. package/dist/diff_tool/app/dist/assets/{tsx-Cx-oUPFA.js → tsx-DtIM39Jy.js} +1 -1
  188. package/dist/diff_tool/app/dist/assets/{twig-DMQw3R9O.js → twig-C6D_TA3n.js} +1 -1
  189. package/dist/diff_tool/app/dist/assets/{typescript-BCtu9W7E.js → typescript-BGAE5iuw.js} +1 -1
  190. package/dist/diff_tool/app/dist/assets/{typst-jGrqJHSo.js → typst-nWoGZ22y.js} +1 -1
  191. package/dist/diff_tool/app/dist/assets/{vue-html-DTMalvg7.js → vue-html-prNdIjLu.js} +1 -1
  192. package/dist/diff_tool/app/dist/assets/{vue-GFZcsvXd.js → vue-iyHf-l4z.js} +1 -1
  193. package/dist/diff_tool/app/dist/assets/{vue-vine-BwDeqLrM.js → vue-vine-KSSlnVeg.js} +1 -1
  194. package/dist/diff_tool/app/dist/assets/{xml-CoXyuOzf.js → xml-DdCC83Xd.js} +1 -1
  195. package/dist/diff_tool/app/dist/assets/{xsl-BQFm34CN.js → xsl-DSqZxsez.js} +1 -1
  196. package/dist/diff_tool/app/dist/assets/{yaml-CbO2A_pF.js → yaml-CZcBUWvf.js} +1 -1
  197. package/dist/diff_tool/app/dist/index.html +1 -1
  198. package/dist/diff_tool/http_server.js +2 -9
  199. package/dist/diff_tool/http_server.js.map +1 -1
  200. package/dist/diff_tool/index.js +2 -2
  201. package/dist/diff_tool/index.js.map +1 -1
  202. package/dist/diff_tool/launcher.js +14 -8
  203. package/dist/diff_tool/launcher.js.map +1 -1
  204. package/dist/diff_tool/protocol_client.js +0 -7
  205. package/dist/diff_tool/protocol_client.js.map +1 -1
  206. package/dist/diff_tool/review_state.js +4 -10
  207. package/dist/diff_tool/review_state.js.map +1 -1
  208. package/dist/diff_tool/review_state_persistence.js +12 -7
  209. package/dist/diff_tool/review_state_persistence.js.map +1 -1
  210. package/dist/diff_tool/shared_types.js +0 -48
  211. package/dist/diff_tool/shared_types.js.map +1 -1
  212. package/dist/execution/fly_sprite_execution_environment.js +4 -2
  213. package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
  214. package/dist/host/execution_runtime.js +1 -1
  215. package/dist/host/execution_runtime.js.map +1 -1
  216. package/dist/host/hosted_ephemeral_agent_session.js +1 -1
  217. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  218. package/dist/host/local_session_host.js +8 -18
  219. package/dist/host/local_session_host.js.map +1 -1
  220. package/dist/main.js +7 -93
  221. package/dist/main.js.map +1 -1
  222. package/dist/protocol/index.d.ts +1 -1
  223. package/dist/protocol/index.js.map +1 -1
  224. package/dist/protocol/session_protocol.d.ts +4 -23
  225. package/dist/protocol/session_protocol.js +3 -30
  226. package/dist/protocol/session_protocol.js.map +1 -1
  227. package/dist/sdk/local_client.js +0 -6
  228. package/dist/sdk/local_client.js.map +1 -1
  229. package/dist/store/session_snapshot_migrations.js +32 -1
  230. package/dist/store/session_snapshot_migrations.js.map +1 -1
  231. package/dist/tui/chat_controller/diff_review_service.js +0 -15
  232. package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
  233. package/dist/tui/chat_view.js +6 -4
  234. package/dist/tui/chat_view.js.map +1 -1
  235. package/dist/tui/listen_capture.js +7 -26
  236. package/dist/tui/listen_capture.js.map +1 -1
  237. package/dist/tui/session_chat_app.js +4 -21
  238. package/dist/tui/session_chat_app.js.map +1 -1
  239. package/dist/tui/session_chat_controller.js +81 -59
  240. package/dist/tui/session_chat_controller.js.map +1 -1
  241. package/dist/tui/speech_playback.js +10 -8
  242. package/dist/tui/speech_playback.js.map +1 -1
  243. package/dist/tui/ui/custom_editor.js +21 -15
  244. package/dist/tui/ui/custom_editor.js.map +1 -1
  245. package/dist/tui/ui/pending_messages.js +2 -1
  246. package/dist/tui/ui/pending_messages.js.map +1 -1
  247. package/dist/tui/ui/slash_autocomplete.js +1 -8
  248. package/dist/tui/ui/slash_autocomplete.js.map +1 -1
  249. package/dist/tui/ui/subagent_panel.js +1 -12
  250. package/dist/tui/ui/subagent_panel.js.map +1 -1
  251. package/package.json +3 -3
  252. package/dist/core/config/diff_tool.js +0 -51
  253. package/dist/core/config/diff_tool.js.map +0 -1
  254. package/dist/core/install/cli.js +0 -260
  255. package/dist/core/install/cli.js.map +0 -1
  256. package/dist/core/models/tau_model_overrides.js +0 -4
  257. package/dist/core/models/tau_model_overrides.js.map +0 -1
  258. package/dist/core/subagents/default.js +0 -8
  259. package/dist/core/subagents/default.js.map +0 -1
  260. package/dist/core/utils/gemini_speech.js.map +0 -1
  261. package/dist/core/utils/openai_transcription.js +0 -594
  262. package/dist/core/utils/openai_transcription.js.map +0 -1
  263. package/dist/diff_tool/app/dist/assets/index-DyaXBald.js +0 -340
  264. package/dist/execution/cloudflare_sandbox_execution_environment.js +0 -563
  265. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +0 -1
  266. package/dist/execution/sandbox_tool_helpers.js +0 -30
  267. package/dist/execution/sandbox_tool_helpers.js.map +0 -1
  268. package/dist/starter/prompts/approval-review-branch.md +0 -7
  269. package/dist/starter/prompts/approval-review-current-changes.md +0 -7
  270. package/dist/starter/prompts/approval-review-last-commit.md +0 -7
  271. package/dist/starter/prompts/commit-all.md +0 -9
  272. package/dist/starter/prompts/commit-staged.md +0 -9
  273. package/dist/starter/prompts/guided-review-branch.md +0 -7
  274. package/dist/starter/prompts/guided-review-current-changes.md +0 -7
  275. package/dist/starter/prompts/guided-review-last-commit.md +0 -7
  276. package/dist/starter/prompts/plan.md +0 -7
  277. package/dist/starter/prompts/review-branch.md +0 -7
  278. package/dist/starter/prompts/review-current-changes.md +0 -7
  279. package/dist/starter/prompts/review-last-commit.md +0 -7
  280. package/dist/starter/prompts/rewrite-prompt.md +0 -89
  281. package/dist/starter/skills/approval-review/SKILL.md +0 -219
  282. package/dist/starter/skills/code-review/SKILL.md +0 -102
  283. package/dist/starter/skills/guided-review/SKILL.md +0 -152
  284. package/dist/starter/skills/plan/SKILL.md +0 -53
  285. /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 | Shipped default |
12
- | --- | --- |
13
- | Default persona | `opus-5.5-chat` |
14
- | Default TUI theme | `gold` |
15
- | Built-in personas | Enabled |
16
- | Built-in themes | Enabled |
17
- | Automatic compaction | `{ "enabled": true, "reserveTokens": 16384, "keepRecentTokens": 20000 }` |
18
- | Speech-to-text provider when unset | `openai` |
19
- | Built-in diff tool code theme | `github-dark-dimmed` |
20
- | Command client tool timeout when unset | `60000` ms |
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
- | `disableBuiltinPersonas` | Boolean | Global, project | Most-specific wins | Session runtime; `/reload` or new session |
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 | Type | Contract |
96
- | --- | --- | --- |
97
- | `defaultLaunchModels` | String array | Allowlist for launch overrides of the built-in `default` subagent |
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
- "defaultLaunchModels": [
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. Custom subagent definitions belong in persona frontmatter, not this object. See [subagents](subagents.md).
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
- ### `speechToText`
179
-
180
- An object with one required field when present:
136
+ ### `speech`
181
137
 
182
- | Nested field | Type | Values |
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
- "speechToText": {
189
- "provider": "gemini"
142
+ "speech": {
143
+ "voiceId": "QtY3JBOUKEB5xzrRfOKc"
190
144
  }
191
145
  }
192
146
  ```
193
147
 
194
- When the object is absent, `/listen` and Telegram transcription use `openai`. The TUI consumes this setting for client-local recording; the Telegram runner consumes it for Telegram audio. Restart the owning process after changing it.
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 loaded theme. The shipped default is `gold`:
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 and theme files. `/theme:<id>` changes the current client only and is not persisted into the session. See [TUI](tui.md).
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 sandboxes or 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).
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": "opus-5.5-chat",
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 values are the coder persona and the Gemini speech provider. Tau does not recursively combine `speechToText`; the project object replaces the global object.
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
- - `diffTool` and `builtInDiffTool` select the complete object from the most-specific level that defines them.
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 `review-ui` is left bare and resolves through the owning process's `PATH`.
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 paths as `/home/ada/work/ledger/docs/AI_GUIDE.md` and `/home/ada/work/ledger/tools/review-ui`. In an attached session, `diffTool` used by the TUI comes from the client-local load, so this resolved command is a client path.
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`, `disableBuiltinThemes`, and theme files
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 bridge or Sprite API entry replaces the complete entry with the same id. Repeat required fields such as a Cloudflare bridge `url`.
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
- | Cloudflare Sandbox bridge and Fly Sprite API | Session host startup |
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, Gemini speech-to-text, Telegram Gemini transcription, and Telegram voice responses | `GEMINI_API_KEY`, then `apiKeys.google` |
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-to-text, and Telegram OpenAI transcription | `OPENAI_API_KEY`, then `apiKeys.openai` |
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 use Google. `/listen` and incoming Telegram voice notes use the configured `speechToText.provider`, which is `openai` unless configuration selects `gemini`. PDF OCR through `tau tool pdf-unpack` uses Mistral.
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 `GEMINI_API_KEY`, while a Google model selected by the session reads credentials at the host.
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
- Cloudflare Sandbox bridges and Fly Sprite APIs are host-owned resolver configuration. They must be available when the host is constructed, before a client asks it to create one of those execution environments.
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 bridge definitions, Sprite API definitions, or their environment.
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, Cloudflare, or Fly credentials. Their missing-credential errors name the accepted source.
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 report the retained artifact directory when generation has started. Requests are not automatically retried because a failed request may already have incurred a charge.
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. Cloudflare Sandbox and 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.
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 Cloudflare Sandbox or 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.
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 uses themes loaded on the client machine. Themes are not session state. |
60
- | `/diff` process | TUI client | `diffTool.command` must exist on the client machine. Repository capture still runs through the session execution environment. |
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 | Cloudflare bridge and Fly Sprite API definitions must be available to the host before it accepts sessions using them. |
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, `diffTool`, and command client tools before attaching. If `/diff` launches `review-ui`, that executable must exist on the laptop. Git snapshot commands for the review run through the session and therefore see `/srv/ledger` on the execution environment.
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, skills, and subagents. Changing persona changes how future turns run without creating a new session.
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 the built-in `default` subagent.
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.1 Sol, and GPT-6 Luna have API, ChatGPT, and fast ChatGPT variants. They are available only when the effective catalog contains the matching model ID (`gpt-6-sol`, `gpt-6.1-sol`, or `gpt-6-luna`) for the corresponding provider.
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
- Set `disableBuiltinPersonas: true` in `config.json` to omit built-ins from the effective catalog. Custom personas can also replace a built-in by using the same ID. A shipped built-in is therefore not necessarily available in a particular session.
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 `subagents`, Tau enables the built-in `default` subagent. Tool defaults then include the ordinary host tools plus subagent supervision tools. See [skills](skills.md) and [subagents](subagents.md) for those contracts.
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 use the reloaded persona definition. See [subagents](subagents.md).
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, subagent definition, 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.
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