@markusylisiurunen/tau 0.3.31 → 0.3.33

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 (262) hide show
  1. package/README.md +9 -14
  2. package/dist/core/agent/agent_runtime.js +1505 -0
  3. package/dist/core/agent/agent_runtime.js.map +1 -0
  4. package/dist/core/agent/events.js +2 -0
  5. package/dist/core/agent/events.js.map +1 -0
  6. package/dist/core/auth/auth_manager.js.map +1 -1
  7. package/dist/core/auth/auth_storage.js +1 -4
  8. package/dist/core/auth/auth_storage.js.map +1 -1
  9. package/dist/core/auth/credential_store.js.map +1 -1
  10. package/dist/core/commands/registry.js +0 -42
  11. package/dist/core/commands/registry.js.map +1 -1
  12. package/dist/core/config/content_loader.js +3 -1
  13. package/dist/core/config/content_loader.js.map +1 -1
  14. package/dist/core/diff_review/bridge.js.map +1 -1
  15. package/dist/core/diff_review/snapshot.js.map +1 -1
  16. package/dist/core/index.js +1 -1
  17. package/dist/core/index.js.map +1 -1
  18. package/dist/core/install/cli.js.map +1 -1
  19. package/dist/core/models/catalog.js +7 -1
  20. package/dist/core/models/catalog.js.map +1 -1
  21. package/dist/core/models/tau_extensions.js.map +1 -1
  22. package/dist/core/models/tau_model_overrides.js +10 -0
  23. package/dist/core/models/tau_model_overrides.js.map +1 -0
  24. package/dist/core/modes/index.js.map +1 -1
  25. package/dist/core/modes/websocket_server.js.map +1 -1
  26. package/dist/core/nook/cli.js.map +1 -1
  27. package/dist/core/nook/client.js +57 -10
  28. package/dist/core/nook/client.js.map +1 -1
  29. package/dist/core/nook/deploy.js +24 -7
  30. package/dist/core/nook/deploy.js.map +1 -1
  31. package/dist/core/nook/setup.js.map +1 -1
  32. package/dist/core/personas.js +2 -1
  33. package/dist/core/personas.js.map +1 -1
  34. package/dist/core/runtime/agent_model.js +50 -0
  35. package/dist/core/runtime/agent_model.js.map +1 -0
  36. package/dist/core/runtime/chat_runtime.js +173 -63
  37. package/dist/core/runtime/chat_runtime.js.map +1 -1
  38. package/dist/core/runtime/model_executor.js +2 -0
  39. package/dist/core/runtime/model_executor.js.map +1 -0
  40. package/dist/core/runtime/model_sampler.js +21 -0
  41. package/dist/core/runtime/model_sampler.js.map +1 -0
  42. package/dist/core/session/compaction.js +1 -1
  43. package/dist/core/session/compaction.js.map +1 -1
  44. package/dist/core/session/direct_bash.js.map +1 -1
  45. package/dist/core/session/message_accumulator.js +3 -5
  46. package/dist/core/session/message_accumulator.js.map +1 -1
  47. package/dist/core/session/runner.js +197 -98
  48. package/dist/core/session/runner.js.map +1 -1
  49. package/dist/core/static/code_mode/nook/documentation.md +214 -0
  50. package/dist/core/static/code_mode/nook/sandbox_runner.mjs +144 -0
  51. package/dist/core/static/index.js.map +1 -1
  52. package/dist/core/subagents/agent_supervisor.js +337 -0
  53. package/dist/core/subagents/agent_supervisor.js.map +1 -0
  54. package/dist/core/telegram/adapter.js +2 -5
  55. package/dist/core/telegram/adapter.js.map +1 -1
  56. package/dist/core/telegram/cli.js.map +1 -1
  57. package/dist/core/telegram/session_manager.js.map +1 -1
  58. package/dist/core/tool/cli.js.map +1 -1
  59. package/dist/core/tool/pdf_unpack.js.map +1 -1
  60. package/dist/core/tools/activity.js +2 -0
  61. package/dist/core/tools/activity.js.map +1 -0
  62. package/dist/core/tools/bash.js +64 -67
  63. package/dist/core/tools/bash.js.map +1 -1
  64. package/dist/core/tools/catalog.js +46 -24
  65. package/dist/core/tools/catalog.js.map +1 -1
  66. package/dist/core/tools/code_mode.js +65 -58
  67. package/dist/core/tools/code_mode.js.map +1 -1
  68. package/dist/core/tools/code_mode_worker.js +182 -0
  69. package/dist/core/tools/code_mode_worker.js.map +1 -0
  70. package/dist/core/tools/edit.js +11 -12
  71. package/dist/core/tools/edit.js.map +1 -1
  72. package/dist/core/tools/nook.js +234 -217
  73. package/dist/core/tools/nook.js.map +1 -1
  74. package/dist/core/tools/registry.js +27 -13
  75. package/dist/core/tools/registry.js.map +1 -1
  76. package/dist/core/tools/send_input_to_agent.js +75 -90
  77. package/dist/core/tools/send_input_to_agent.js.map +1 -1
  78. package/dist/core/tools/spawn_agent.js +95 -100
  79. package/dist/core/tools/spawn_agent.js.map +1 -1
  80. package/dist/core/tools/terminate_agent.js +75 -82
  81. package/dist/core/tools/terminate_agent.js.map +1 -1
  82. package/dist/core/tools/view_image.js +11 -16
  83. package/dist/core/tools/view_image.js.map +1 -1
  84. package/dist/core/tools/wait_for_agents.js +61 -68
  85. package/dist/core/tools/wait_for_agents.js.map +1 -1
  86. package/dist/core/tools/web.js +10 -147
  87. package/dist/core/tools/web.js.map +1 -1
  88. package/dist/core/tools/write.js +10 -11
  89. package/dist/core/tools/write.js.map +1 -1
  90. package/dist/core/usage/cli.js.map +1 -1
  91. package/dist/core/usage/logs.js.map +1 -1
  92. package/dist/core/utils/model_stream.js.map +1 -1
  93. package/dist/core/utils/project_files.js.map +1 -1
  94. package/dist/core/utils/spawn_capture.js.map +1 -1
  95. package/dist/core/utils/subagent_utils.js.map +1 -1
  96. package/dist/core/utils/tool_preview.js.map +1 -1
  97. package/dist/core/version.js +1 -1
  98. package/dist/diff_tool/app/dist/assets/{angular-html-D8c6NJtn.js → angular-html-DbgxQryr.js} +1 -1
  99. package/dist/diff_tool/app/dist/assets/{angular-ts-CKOHcqki.js → angular-ts-Dzjq8SvI.js} +1 -1
  100. package/dist/diff_tool/app/dist/assets/{apl-CQNGWx_V.js → apl-6AmEMJr-.js} +1 -1
  101. package/dist/diff_tool/app/dist/assets/{astro-DtaLiRs1.js → astro-BM8EbfIg.js} +1 -1
  102. package/dist/diff_tool/app/dist/assets/{blade-8lF6vUn0.js → blade-DiKMnN3e.js} +1 -1
  103. package/dist/diff_tool/app/dist/assets/{c-C4UbPC2L.js → c-DMT5X-u9.js} +1 -1
  104. package/dist/diff_tool/app/dist/assets/{cobol-B-SqiS-l.js → cobol-CACNMc1O.js} +1 -1
  105. package/dist/diff_tool/app/dist/assets/{coffee-Dd1E2KHP.js → coffee-D_WUFE0g.js} +1 -1
  106. package/dist/diff_tool/app/dist/assets/{cpp-fmh9U4o8.js → cpp-BcU9r9kv.js} +1 -1
  107. package/dist/diff_tool/app/dist/assets/{crystal-ZMQ-EyMz.js → crystal-wh93mtUe.js} +1 -1
  108. package/dist/diff_tool/app/dist/assets/{css-3Sj4Fmhw.js → css-CCfuUqEr.js} +1 -1
  109. package/dist/diff_tool/app/dist/assets/{edge-CwGnyfEm.js → edge-DP-spcJf.js} +1 -1
  110. package/dist/diff_tool/app/dist/assets/{elixir-B4YFjqQ-.js → elixir-BXBkaEtJ.js} +1 -1
  111. package/dist/diff_tool/app/dist/assets/{elm-DmUdvg9q.js → elm-BXr8OwKP.js} +1 -1
  112. package/dist/diff_tool/app/dist/assets/{erb-CMpzjtLy.js → erb-Cu5Zacs_.js} +1 -1
  113. package/dist/diff_tool/app/dist/assets/{git-rebase-EqdynY_f.js → git-rebase-DO8LWld4.js} +1 -1
  114. package/dist/diff_tool/app/dist/assets/{glimmer-js-C04Hkqrn.js → glimmer-js-Bh-OAIDW.js} +1 -1
  115. package/dist/diff_tool/app/dist/assets/{glimmer-ts-BYuV-E66.js → glimmer-ts-DI9lHU4q.js} +1 -1
  116. package/dist/diff_tool/app/dist/assets/{glsl-Dw8Wzaba.js → glsl--zoY4RCO.js} +1 -1
  117. package/dist/diff_tool/app/dist/assets/{graphql-CKOWRasR.js → graphql-C8h2T_SC.js} +1 -1
  118. package/dist/diff_tool/app/dist/assets/{hack-DSoYuKAw.js → hack-DAsjGmmw.js} +1 -1
  119. package/dist/diff_tool/app/dist/assets/{haml-CW2clvKn.js → haml-C2BBBsDW.js} +1 -1
  120. package/dist/diff_tool/app/dist/assets/{handlebars-Dt42oUMG.js → handlebars-cZMztphK.js} +1 -1
  121. package/dist/diff_tool/app/dist/assets/{html-BssM8xm3.js → html-BtccomkJ.js} +1 -1
  122. package/dist/diff_tool/app/dist/assets/{html-derivative-7ty0Z2kF.js → html-derivative-qjeUe52-.js} +1 -1
  123. package/dist/diff_tool/app/dist/assets/{http-CzGxCb-E.js → http-Dv8OQO33.js} +1 -1
  124. package/dist/diff_tool/app/dist/assets/{hurl-DMjbA1F9.js → hurl-B6Fnr2ae.js} +1 -1
  125. package/dist/diff_tool/app/dist/assets/index-U7G4V3LV.js +1579 -0
  126. package/dist/diff_tool/app/dist/assets/{java-BVtLVPoR.js → java-BuadWMcp.js} +1 -1
  127. package/dist/diff_tool/app/dist/assets/{javascript-CmzoS6sL.js → javascript-BIKxmHeL.js} +1 -1
  128. package/dist/diff_tool/app/dist/assets/{jinja-MpkGgATF.js → jinja-Cm_guvgu.js} +1 -1
  129. package/dist/diff_tool/app/dist/assets/{jison-BJkiJV2g.js → jison-Sst29gJb.js} +1 -1
  130. package/dist/diff_tool/app/dist/assets/{json-ByAo1NYt.js → json-Bg6l2vym.js} +1 -1
  131. package/dist/diff_tool/app/dist/assets/{jsx-DNzVmx9w.js → jsx-BiREAxkr.js} +1 -1
  132. package/dist/diff_tool/app/dist/assets/{julia-rksgfDyz.js → julia-DAhrWFzr.js} +1 -1
  133. package/dist/diff_tool/app/dist/assets/{just-Bf6HaeeV.js → just-xBwbf5aT.js} +1 -1
  134. package/dist/diff_tool/app/dist/assets/{latex-Cql66cfm.js → latex-Bydg2zYo.js} +1 -1
  135. package/dist/diff_tool/app/dist/assets/{liquid-wULyfiX7.js → liquid-BTsCzVvF.js} +1 -1
  136. package/dist/diff_tool/app/dist/assets/{lua-B1VfQC3R.js → lua-BJt9x0JP.js} +1 -1
  137. package/dist/diff_tool/app/dist/assets/{marko-D8Hd5-bx.js → marko-CWdJkbvC.js} +1 -1
  138. package/dist/diff_tool/app/dist/assets/{mdc-DmQ944Ag.js → mdc-B6ddHTKx.js} +1 -1
  139. package/dist/diff_tool/app/dist/assets/{nginx-BDob-g0F.js → nginx-BwS0G4IK.js} +1 -1
  140. package/dist/diff_tool/app/dist/assets/{nim-Det1uggZ.js → nim-B2VFbcs9.js} +1 -1
  141. package/dist/diff_tool/app/dist/assets/{perl-Dcgc5L27.js → perl-BTeqR-l8.js} +1 -1
  142. package/dist/diff_tool/app/dist/assets/{php-BjwNWaG2.js → php-Crua7nbA.js} +1 -1
  143. package/dist/diff_tool/app/dist/assets/{pug-BNSHQAJG.js → pug-CUlgPjMU.js} +1 -1
  144. package/dist/diff_tool/app/dist/assets/{qml-5kU4d63S.js → qml-DI0IjNUw.js} +1 -1
  145. package/dist/diff_tool/app/dist/assets/{r-T1WpUQOu.js → r-DRexFFDh.js} +1 -1
  146. package/dist/diff_tool/app/dist/assets/{razor-Dp-yzXAB.js → razor-DrkKtFm5.js} +1 -1
  147. package/dist/diff_tool/app/dist/assets/{regexp-CIsu-B9m.js → regexp-DRmxJil7.js} +1 -1
  148. package/dist/diff_tool/app/dist/assets/{rst-ro17CyW2.js → rst-DiRke36z.js} +1 -1
  149. package/dist/diff_tool/app/dist/assets/{ruby-DU34BtJN.js → ruby-t7r9jzAg.js} +1 -1
  150. package/dist/diff_tool/app/dist/assets/{sas-DvM2ogJU.js → sas-CR7Z4kg-.js} +1 -1
  151. package/dist/diff_tool/app/dist/assets/{scss-lF64kkIV.js → scss--CnPWaDv.js} +1 -1
  152. package/dist/diff_tool/app/dist/assets/{shellscript-WmDXBLCa.js → shellscript-Bz7H5174.js} +1 -1
  153. package/dist/diff_tool/app/dist/assets/{shellsession--GggGr4o.js → shellsession-mlKnHJfN.js} +1 -1
  154. package/dist/diff_tool/app/dist/assets/{soy-CxEGzs-_.js → soy-CKu9y9G1.js} +1 -1
  155. package/dist/diff_tool/app/dist/assets/{sql-D8qrGuIn.js → sql-DcvKi3Jj.js} +1 -1
  156. package/dist/diff_tool/app/dist/assets/{stata-5W1sjsQI.js → stata-Yo25QZyV.js} +1 -1
  157. package/dist/diff_tool/app/dist/assets/{surrealql-DprXW366.js → surrealql-CUddZ4Qk.js} +1 -1
  158. package/dist/diff_tool/app/dist/assets/{svelte-CzjcC8Mf.js → svelte-BIhEVbnP.js} +1 -1
  159. package/dist/diff_tool/app/dist/assets/{templ-BOYl0ITc.js → templ-D6FrV4mZ.js} +1 -1
  160. package/dist/diff_tool/app/dist/assets/{tex-fc_nK7Hm.js → tex-BOTYELrL.js} +1 -1
  161. package/dist/diff_tool/app/dist/assets/{ts-tags-q7RBsUYS.js → ts-tags-Kqn1PP6m.js} +1 -1
  162. package/dist/diff_tool/app/dist/assets/{tsx-4vmj3sX4.js → tsx-L3TEJWGL.js} +1 -1
  163. package/dist/diff_tool/app/dist/assets/{twig-67g55beP.js → twig-BpzmhnWz.js} +1 -1
  164. package/dist/diff_tool/app/dist/assets/{typescript-Bx4zhx0M.js → typescript-Dvc5RX4H.js} +1 -1
  165. package/dist/diff_tool/app/dist/assets/{vue-G4plfR7G.js → vue-X1uI3I2A.js} +1 -1
  166. package/dist/diff_tool/app/dist/assets/{vue-html-BiigD-BR.js → vue-html-BMpHEoeQ.js} +1 -1
  167. package/dist/diff_tool/app/dist/assets/{vue-vine-Cbdk3EZl.js → vue-vine-DnTGaA4r.js} +1 -1
  168. package/dist/diff_tool/app/dist/assets/{xml-B3vUkid0.js → xml-QlPQXP0d.js} +1 -1
  169. package/dist/diff_tool/app/dist/assets/{xsl-ClW1O00E.js → xsl-JpRU16Li.js} +1 -1
  170. package/dist/diff_tool/app/dist/assets/{yaml-DBUv6oV4.js → yaml-Djukn3_s.js} +1 -1
  171. package/dist/diff_tool/app/dist/index.html +1 -1
  172. package/dist/diff_tool/http_server.js.map +1 -1
  173. package/dist/diff_tool/index.js.map +1 -1
  174. package/dist/diff_tool/protocol_client.js.map +1 -1
  175. package/dist/diff_tool/review_state.js.map +1 -1
  176. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -1
  177. package/dist/execution/execution_environment.js.map +1 -1
  178. package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
  179. package/dist/execution/tool_backend_execution_environment.js +1 -7
  180. package/dist/execution/tool_backend_execution_environment.js.map +1 -1
  181. package/dist/host/client_tool_broker.js +26 -20
  182. package/dist/host/client_tool_broker.js.map +1 -1
  183. package/dist/host/hosted_ephemeral_agent_session.js +104 -167
  184. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  185. package/dist/host/local_session_host.js +313 -197
  186. package/dist/host/local_session_host.js.map +1 -1
  187. package/dist/host/session_host.js.map +1 -1
  188. package/dist/host/session_protocol_handler.js +121 -101
  189. package/dist/host/session_protocol_handler.js.map +1 -1
  190. package/dist/main.js +10 -2
  191. package/dist/main.js.map +1 -1
  192. package/dist/nook/README.md +1 -1
  193. package/dist/protocol/index.d.ts +1 -1
  194. package/dist/protocol/index.js.map +1 -1
  195. package/dist/protocol/session_protocol.d.ts +19 -21
  196. package/dist/protocol/session_protocol.js +150 -56
  197. package/dist/protocol/session_protocol.js.map +1 -1
  198. package/dist/sdk/client.js.map +1 -1
  199. package/dist/sdk/index.d.ts +1 -1
  200. package/dist/sdk/index.js.map +1 -1
  201. package/dist/sdk/session.js +4 -21
  202. package/dist/sdk/session.js.map +1 -1
  203. package/dist/sdk/types.d.ts +2 -7
  204. package/dist/store/file_session_store.js +13 -9
  205. package/dist/store/file_session_store.js.map +1 -1
  206. package/dist/store/memory_session_store.js.map +1 -1
  207. package/dist/store/session_snapshot_migrations.js +133 -0
  208. package/dist/store/session_snapshot_migrations.js.map +1 -0
  209. package/dist/store/session_store.js.map +1 -1
  210. package/dist/transport/session_protocol_transport_helpers.js.map +1 -1
  211. package/dist/tui/chat_controller/command_hints.js +0 -6
  212. package/dist/tui/chat_controller/command_hints.js.map +1 -1
  213. package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
  214. package/dist/tui/chat_view.js +19 -12
  215. package/dist/tui/chat_view.js.map +1 -1
  216. package/dist/tui/session_chat_app.js +0 -8
  217. package/dist/tui/session_chat_app.js.map +1 -1
  218. package/dist/tui/session_chat_controller.js +94 -115
  219. package/dist/tui/session_chat_controller.js.map +1 -1
  220. package/dist/tui/terminal.js.map +1 -1
  221. package/dist/tui/tool_ui_router.js +12 -226
  222. package/dist/tui/tool_ui_router.js.map +1 -1
  223. package/dist/tui/ui/bash_execution.js +3 -3
  224. package/dist/tui/ui/bash_execution.js.map +1 -1
  225. package/dist/tui/ui/chat_message_model.js +2 -2
  226. package/dist/tui/ui/chat_message_model.js.map +1 -1
  227. package/dist/tui/ui/components/dynamic_border.js.map +1 -1
  228. package/dist/tui/ui/components/editor.js.map +1 -1
  229. package/dist/tui/ui/components/header_box.js.map +1 -1
  230. package/dist/tui/ui/components/header_line.js.map +1 -1
  231. package/dist/tui/ui/components/one_line_segments.js.map +1 -1
  232. package/dist/tui/ui/components/padded_container.js.map +1 -1
  233. package/dist/tui/ui/footer.js.map +1 -1
  234. package/dist/tui/ui/pending_messages.js.map +1 -1
  235. package/dist/tui/ui/session_divider.js.map +1 -1
  236. package/dist/tui/ui/slash_autocomplete.js.map +1 -1
  237. package/dist/tui/ui/subagent_editor_pane.js.map +1 -1
  238. package/dist/tui/ui/subagent_panel.js +39 -2
  239. package/dist/tui/ui/subagent_panel.js.map +1 -1
  240. package/dist/tui/ui/theme/theme.js.map +1 -1
  241. package/dist/tui/ui/tool_ui_model.js +2 -0
  242. package/dist/tui/ui/tool_ui_model.js.map +1 -0
  243. package/dist/tui/ui/tool_ui_registry.js +256 -31
  244. package/dist/tui/ui/tool_ui_registry.js.map +1 -1
  245. package/package.json +10 -10
  246. package/dist/core/events/types.js +0 -2
  247. package/dist/core/events/types.js.map +0 -1
  248. package/dist/core/modes/mode_adapter.js +0 -2
  249. package/dist/core/modes/mode_adapter.js.map +0 -1
  250. package/dist/core/runtime/conversation_turn_runtime.js +0 -88
  251. package/dist/core/runtime/conversation_turn_runtime.js.map +0 -1
  252. package/dist/core/session/core_session.js +0 -86
  253. package/dist/core/session/core_session.js.map +0 -1
  254. package/dist/core/session/pruning.js +0 -587
  255. package/dist/core/session/pruning.js.map +0 -1
  256. package/dist/core/session/session_engine.js +0 -1246
  257. package/dist/core/session/session_engine.js.map +0 -1
  258. package/dist/core/subagents/control_plane.js +0 -339
  259. package/dist/core/subagents/control_plane.js.map +0 -1
  260. package/dist/core/subagents/subagent_engine.js +0 -258
  261. package/dist/core/subagents/subagent_engine.js.map +0 -1
  262. package/dist/diff_tool/app/dist/assets/index-BiNqgTgO.js +0 -1579
package/README.md CHANGED
@@ -105,7 +105,7 @@ then attach the terminal UI from another machine:
105
105
  tau attach --auth-token "$TAU_WS_AUTH_TOKEN" ws://vps:8787
106
106
  ```
107
107
 
108
- Without `--session` or `--new`, attach lists hosted sessions and prompts for the session to open. Use `--session <id>` to attach to an existing persisted session directly:
108
+ Without `--session` or `--new`, attach lists hosted sessions and prompts for the session to open. Persisted session files use a versioned storage format and older unwrapped snapshots are migrated during recovery. Use `--session <id>` to attach to an existing persisted session directly:
109
109
 
110
110
  ```sh
111
111
  tau attach --session 0195d6e4-4cf9-7f44-a2d8-f8f7f49ee9d3 --auth-token "$TAU_WS_AUTH_TOKEN" ws://vps:8787
@@ -136,7 +136,7 @@ For stdio attach, use `--session <id>` before `--`:
136
136
  tau attach --session 0195d6e4-4cf9-7f44-a2d8-f8f7f49ee9d3 -- ssh vps 'cd /path/to/repo && tau rpc'
137
137
  ```
138
138
 
139
- Session attach renders the authoritative session snapshot, streams recoverable `session.delta` updates and independently revisioned, non-persisted `session.pendingUserMessages` replacements, submits normal user input through `session.submit`, `session.queue`, and `session.steer`, supports steering/interruption, runs `!`/`!!` Bash commands in the session execution environment, records `/listen` from the local microphone, speaks `/speak` locally, reloads session content with `/reload`, switches session personas with `/persona:<id>` or `Ctrl+P`, inserts session prompt templates with `/prompt:<id>`, compacts or prunes the session with `/compact:*` and `/prune:*`, creates a new session with `/new`, and exits with `/exit` or `Ctrl+C` twice.
139
+ Session attach renders the authoritative session snapshot, streams recoverable `session.delta` updates and independently revisioned, non-persisted `session.pendingUserMessages` replacements, submits normal user input through `session.submit`, `session.queue`, and `session.steer`, supports steering/interruption, runs `!`/`!!` Bash commands in the session execution environment, records `/listen` from the local microphone, speaks `/speak` locally, reloads session content with `/reload`, switches session personas with `/persona:<id>` or `Ctrl+P`, inserts session prompt templates with `/prompt:<id>`, compacts the session with `/compact:*`, creates a new session with `/new`, and exits with `/exit` or `Ctrl+C` twice.
140
140
 
141
141
  Model `bash` tool calls, `!`/`!!`, `session.exec`, and Tau-controlled command helpers each run in a fresh, non-interactive login Bash belonging to the session execution environment. Tau sets `HOME` to the execution environment home, so Bash reads `/etc/profile` and then the first available user login file (`~/.bash_profile`, `~/.bash_login`, or `~/.profile`). Bash also reads inherited `BASH_ENV` when set; otherwise `.bashrc` is loaded only when the login configuration sources it. Login startup files must be automation-safe: they must not write to stdout or stderr, read stdin, require a TTY, or terminate the shell unexpectedly. Tau does not filter or frame startup output. Commands start from the backend's target-side environment and apply explicit execution-environment overrides; the local backend filters sensitive variables inherited from the Tau host. Node, Git, and other helper executables resolve from the same login-configured `PATH` as model commands. Shell state such as `cd`, exports, aliases, functions, and `nvm use` does not persist between calls.
142
142
 
@@ -202,7 +202,7 @@ Add a single configured target to Tau config after deploying the Worker and crea
202
202
  }
203
203
  ```
204
204
 
205
- Template copies require a destination directory that already exists and is empty. The Worker validates Cloudflare Access JWTs against the Access JWKS with the configured issuer and audience. Tau sends service-token headers to Cloudflare Access for CLI/API calls, but the Worker does not treat those raw headers as authentication. When `nook` is configured, Tau automatically exposes a model tool named `nook`. Detailed setup, deploy, template, Worker, browser SDK, and V0 scope notes live in [src/nook/README.md](src/nook/README.md).
205
+ Template copies require a destination directory that already exists and is empty. The Worker validates Cloudflare Access JWTs against the Access JWKS with the configured issuer and audience. Tau sends service-token headers to Cloudflare Access for CLI/API calls, but the Worker does not treat those raw headers as authentication. When `nook` is configured and selected by the active persona, Tau exposes a code-mode model tool named `nook`. Generated JavaScript receives a bounded Nook management SDK, static SDK documentation through `docs`, and the deployment-served app-authoring guide through `nook.skill()`; authenticated HTTP and execution-environment file access remain host-owned. Detailed setup, deploy, template, Worker, browser SDK, and V0 scope notes live in [src/nook/README.md](src/nook/README.md).
206
206
 
207
207
  ## SDK usage (Node)
208
208
 
@@ -337,7 +337,7 @@ and in config (`.tau/config.json` or `~/.config/tau/config.json`):
337
337
 
338
338
  ## tool access
339
339
 
340
- enabled tools execute directly. persona and sub-agent tool lists determine which tools are available.
340
+ enabled tools execute directly. persona and sub-agent tool lists determine which tools are available. main sessions, background sub-agents, and ephemeral review threads all execute through the same stateful agent runtime, with identical streaming, retries, tool recovery, context accounting, steering boundaries, and automatic compaction. each context binds its tool dependencies before a turn starts; session persistence, child supervision, ephemeral thread forks, progress presentation, and usage attribution remain outside the runtime.
341
341
 
342
342
  ## power management (macOS)
343
343
 
@@ -402,7 +402,7 @@ some models support extended thinking, where they reason through problems before
402
402
  tau --persona opus-4.8-chat:high
403
403
  ```
404
404
 
405
- reasoning changes made while the assistant is working apply to the next user-message turn. the active turn keeps the reasoning level it captured when that user message started, including any tool-call subturns.
405
+ reasoning changes made while the assistant is working apply to the next independently submitted or queued turn. the active turn keeps the full execution spec it captured when it started, including tool-call subturns and steering continuations.
406
406
 
407
407
  toggle visibility of the model's thinking with `ctrl+t`.
408
408
 
@@ -460,9 +460,6 @@ tau supports slash commands for common actions:
460
460
  | `/diff [git diff args...]` | open the local diff review tool for the current session; git snapshot and review-agent work run on the session host |
461
461
  | `/compact:summary-only` | compress history into one synthetic user summary message |
462
462
  | `/compact:summary-and-last` | compress history and include the last assistant message verbatim when present |
463
- | `/prune:earliest` | prune bash tool results from oldest to newest and compact edit payloads/results |
464
- | `/prune:largest` | prune largest bash tool results first and compact edit payloads/results |
465
- | `/prune:smart` | prune bash tool results via model selection and compact edit payloads/results |
466
463
  | `/persona:<id>` | switch to a different persona |
467
464
  | `/prompt:<id>` | insert a saved prompt template |
468
465
  | `/theme:<id>` | switch to a loaded theme |
@@ -473,8 +470,6 @@ tau automatically compacts long sessions when the latest successful provider-rep
473
470
 
474
471
  the compact commands are manual and useful when you want to force context replacement. they replace prior context with a single synthetic user summary message, including compaction-model-selected original user messages verbatim inside that summary, and do not retain a recent tail. compaction prompts middle-truncate each textual tool result to roughly 2,048 estimated tokens without changing live history. `/compact:summary-and-last` also includes the last assistant message verbatim when present.
475
472
 
476
- the prune commands drop bash tool results from the active context without summarizing and compact edit call payloads/results. all three accept an optional fraction between `0` and `1` (for example, `/prune:largest 0.4`) and default to `0.25` when omitted. `/prune:smart` also accepts optional guidance text, either after a fraction (for example, `/prune:smart 0.3 keep only repetitive output`) or by itself (for example, `/prune:smart keep build logs`).
477
-
478
473
  `/listen` (or `ctrl+y`) starts microphone recording on macOS, including while the assistant is working. while recording, editor typing is disabled, and `ctrl+y` stops recording and starts transcription at the cursor using the configured speech-to-text provider. `esc` stops recording first without interrupting the assistant; press it again to interrupt active work. recording also auto-stops after 5 minutes. on Linux, `/listen` is currently unavailable and tau shows a warning.
479
474
 
480
475
  `/speak` rewrites the last assistant message into naturally speakable text with Gemini 3.6 Flash, synthesizes audio with Gemini 3.1 Flash TTS, and starts playing on macOS at 1.4x speed as soon as the first speech chunk is ready.
@@ -591,7 +586,7 @@ the `subagents.defaultLaunchModels` field configures allowed `spawn_agent` launc
591
586
 
592
587
  `autoCompact` controls automatic session compaction and merges field-by-field across config levels. it is enabled by default with `reserveTokens: 16384` and `keepRecentTokens: 20000`. before every model subturn, Tau compares the latest successful provider-reported assistant usage from the active model plus an estimated token count for model-visible messages appended since that response against the model context window minus the reserve. when the threshold is crossed, Tau summarizes older context, asks the compaction model to select original user messages to append verbatim inside the summary by history id, and retains recent messages verbatim (capped at that threshold). manual `/compact:*` commands remain summary-replacement commands.
593
588
 
594
- the `modelSystemNotices` field maps `<provider>/<model>` to a notice string. provider ids must be known and model ids are exact/case-sensitive against the merged configured model catalog (built-in + layered `models.json`). when a message is sent to that model, tau prepends the notice as a `<system>...</system>` block before the user content. this applies to main-session user messages and sub-agent prompts, regardless of persona id.
589
+ the `modelSystemNotices` field maps `<provider>/<model>` to a notice string. provider ids must be known and model ids are exact/case-sensitive against the merged configured model catalog (built-in + layered `models.json`). when Tau commits a main-session or sub-agent input, it prepends the notice for the active model as an ordinary `<system>...</system>` block. the persisted block is subsequently treated like any other system prefix, so compaction sees notices already present in the source history. tau does not prepend the current notice to the compaction prompt or to synthetic compaction messages, and the generated summary is not required to reproduce it. ephemeral agents never receive model system notices, and maintenance model calls do not resolve or add fresh notices.
595
590
 
596
591
  session snapshots store raw recoverable user message text. tau-internal metadata is persisted in that text but stripped before model calls and user display. leading exact `<system>...</system>\n` blocks in user messages are hidden from user-facing renderers but remain model-facing instructions.
597
592
 
@@ -666,7 +661,7 @@ optional frontmatter fields:
666
661
  - `serviceTier`: `priority` or `flex` for providers that support service tiers (currently `openai` and `openai-codex`)
667
662
  - `allowedReasoningLevels`: list of reasoning levels shown in the ui
668
663
  - `skills`: list of enabled skill names (matched by `name` in skill frontmatter), or `"*"` to enable all discovered skills. if omitted, custom personas default to `"*"`. set `skills: []` to disable skills completely.
669
- - `tools`: optional list of persona-selected host tools. Nook is not selected here; when effective config contains `nook`, Tau exposes the `nook` tool automatically.
664
+ - `tools`: optional list of persona-selected host tools. `nook` additionally requires effective Nook configuration before it becomes available.
670
665
  - `subagents`: optional map of subagent definitions. the built-in `default` sub-agent is implicit unless `default: false` is provided. custom subagents must include `systemPrompt` and may include `description`, `provider`+`model`, `reasoning`, `serviceTier`, `tools`, and `launchModels` (when specifying a model, `provider` and `model` must be provided together). names must be lowercase with dashes (max 64 chars). `launchModels` entries must use `<provider>/<model>:<effort>` and are used to allowlist launch-time `spawn_agent` overrides. example:
671
666
  ```yaml
672
667
  subagents:
@@ -683,7 +678,7 @@ optional frontmatter fields:
683
678
  - openai/gpt-5.5:high
684
679
  - anthropic/claude-haiku-4-5:medium
685
680
  ```
686
- - `tools`: list of tool names to enable for this persona. allowed: `bash`, `write`, `edit`, `view_image`, `web`, `spawn_agent`, `send_input_to_agent`, `wait_for_agents`, `terminate_agent`. if omitted, defaults to `bash`, `write`, `edit`, `view_image`, `web` (and subagent tools when subagents are enabled).
681
+ - `tools`: list of tool names to enable for this persona. allowed: `bash`, `write`, `edit`, `view_image`, `web`, `nook`, `spawn_agent`, `send_input_to_agent`, `wait_for_agents`, `terminate_agent`. if omitted, defaults to `bash`, `write`, `edit`, `view_image`, `web`, `nook` (and subagent tools when subagents are enabled). `nook` is available only when effective Nook configuration is also present.
687
682
 
688
683
  the markdown body becomes the system prompt.
689
684
 
@@ -739,7 +734,7 @@ tau connects your terminal to large language models, giving them tools to intera
739
734
 
740
735
  the model sees your messages, any file contents you've shared, and the results of tool calls. it doesn't have ambient access to your filesystem; it only sees what you show it or what it explicitly requests through tools.
741
736
 
742
- tool calls are displayed as soon as the model identifies the tool, before its arguments finish streaming, so you can see what the model is preparing and executing. use `ctrl+o` to toggle between compact and detailed views.
737
+ tool calls are displayed as soon as the model identifies the tool, before its arguments finish streaming. every built-in and client-provided tool uses the same `preparing` → `queued` → `running` → terminal lifecycle; tools with clear action wording present those states naturally, such as `writing` and `wrote`, while other tools use generic labels. tool-specific output enriches the card without replacing that lifecycle. use `ctrl+o` to toggle between compact and detailed views.
743
738
 
744
739
  ## tool output truncation
745
740