tau-coding-agent 0.4.7__tar.gz → 0.4.8__tar.gz

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 (372) hide show
  1. {tau_coding_agent-0.4.7/tau_coding_agent.egg-info → tau_coding_agent-0.4.8}/PKG-INFO +2 -1
  2. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/architecture.md +10 -8
  3. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/auth.md +9 -9
  4. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/cli-reference.md +14 -6
  5. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/development.md +5 -5
  6. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/docs.json +8 -0
  7. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/extensions.md +14 -1
  8. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/http-proxy.md +1 -1
  9. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/index.md +2 -3
  10. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/inference-providers.md +13 -64
  11. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/installation.md +6 -11
  12. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/keybindings.md +24 -8
  13. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/messages.md +24 -25
  14. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/project-structure.md +16 -20
  15. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/prompts.md +2 -5
  16. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/quickstart.md +8 -13
  17. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/sessions.md +5 -10
  18. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/settings.md +11 -5
  19. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/skills.md +2 -7
  20. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/themes.md +9 -25
  21. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/tools.md +58 -2
  22. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/usage.md +2 -14
  23. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/pyproject.toml +2 -2
  24. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/text.py +436 -86
  25. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/text.py +1 -3
  26. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/edit.py +51 -1
  27. tau_coding_agent-0.4.8/tau/builtins/tools/grep.py +302 -0
  28. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/engine/service.py +0 -4
  29. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/api.py +8 -3
  30. tau_coding_agent-0.4.8/tau/inference/api/text/dialect.py +144 -0
  31. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/github_copilot_chat.py +1 -1
  32. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_completions.py +12 -21
  33. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_vertex.py +1 -1
  34. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/utils.py +24 -7
  35. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/model/types.py +1 -0
  36. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/app.py +99 -19
  37. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/appearance.py +17 -2
  38. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/auth.py +1 -1
  39. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/model.py +1 -3
  40. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/command_palette.py +4 -3
  41. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/config_selector.py +0 -1
  42. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/file_picker.py +4 -3
  43. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/layout.py +35 -29
  44. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/message_list.py +11 -9
  45. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/overlays.py +2 -1
  46. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/session_selector.py +4 -7
  47. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/manager.py +15 -4
  48. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/types.py +3 -2
  49. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/autocomplete.py +4 -3
  50. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/select_list.py +40 -0
  51. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/text_input.py +191 -25
  52. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/input.py +41 -31
  53. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/tui.py +15 -3
  54. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/ui_context.py +30 -0
  55. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/utils.py +33 -2
  56. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8/tau_coding_agent.egg-info}/PKG-INFO +2 -1
  57. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/SOURCES.txt +6 -1
  58. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/requires.txt +1 -0
  59. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_ansi.py +12 -1
  60. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_auth_command.py +1 -0
  61. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_auth_manager.py +5 -0
  62. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_auth_storage.py +12 -3
  63. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_builtin_tools.py +46 -0
  64. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_diff.py +3 -8
  65. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_editor_protocol.py +2 -0
  66. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_engine_types.py +1 -0
  67. tau_coding_agent-0.4.8/tests/test_escape_behavior.py +39 -0
  68. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_extension_api.py +71 -1
  69. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_footer_utils.py +1 -0
  70. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_fuzzy.py +1 -0
  71. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_http_proxy.py +10 -2
  72. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_image_processing.py +43 -12
  73. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_api_text_utils.py +11 -5
  74. tau_coding_agent-0.4.8/tests/test_inference_dialect.py +31 -0
  75. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_error_utils.py +2 -0
  76. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_types.py +1 -0
  77. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_utils.py +20 -11
  78. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_keybindings.py +6 -2
  79. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_markdown.py +4 -1
  80. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_message_types.py +20 -4
  81. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_message_utils.py +8 -1
  82. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_availability.py +1 -0
  83. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_registry.py +9 -0
  84. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_types.py +1 -0
  85. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_oauth_utils.py +1 -0
  86. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_packages_utils.py +6 -0
  87. tau_coding_agent-0.4.8/tests/test_peer_extension.py +46 -0
  88. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_pkce.py +1 -0
  89. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_prompts_expand.py +1 -0
  90. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_prompts_loader.py +1 -0
  91. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_prompts_registry.py +7 -2
  92. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_provider_registry.py +1 -0
  93. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_rpc_mode.py +1 -0
  94. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_secrets.py +1 -0
  95. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_trust_persist.py +2 -3
  96. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_types.py +6 -1
  97. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_utils.py +7 -1
  98. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_paths.py +7 -0
  99. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_storage.py +10 -1
  100. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_utils.py +1 -0
  101. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_skills_loader.py +4 -1
  102. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_skills_registry.py +1 -0
  103. tau_coding_agent-0.4.8/tests/test_text_input.py +229 -0
  104. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_text_llm_invoke.py +49 -19
  105. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_theme_loader.py +1 -0
  106. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_themes_registry.py +14 -0
  107. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tool_render.py +55 -0
  108. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_trust_manager.py +2 -0
  109. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_trust_utils.py +6 -0
  110. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_capabilities.py +1 -0
  111. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_input.py +48 -10
  112. tau_coding_agent-0.4.8/tests/test_tui_renderer.py +117 -0
  113. tau_coding_agent-0.4.8/tests/test_tui_select_list.py +40 -0
  114. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_theme.py +1 -0
  115. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_utils.py +1 -0
  116. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_version_check.py +1 -0
  117. tau_coding_agent-0.4.7/docs/IMPLEMENTATION_SUMMARY.md +0 -163
  118. tau_coding_agent-0.4.7/tau/builtins/tools/grep.py +0 -178
  119. tau_coding_agent-0.4.7/tests/test_text_input.py +0 -17
  120. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/LICENSE +0 -0
  121. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/MANIFEST.in +0 -0
  122. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/README.md +0 -0
  123. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/extension-settings.md +0 -0
  124. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/project-context.md +0 -0
  125. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/python-api.md +0 -0
  126. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/setup.cfg +0 -0
  127. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/__init__.py +0 -0
  128. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/__init__.py +0 -0
  129. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/prompt/__init__.py +0 -0
  130. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/prompt/builder.py +0 -0
  131. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/prompt/types.py +0 -0
  132. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/service.py +0 -0
  133. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/types.py +0 -0
  134. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/auth/manager.py +0 -0
  135. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/auth/storage.py +0 -0
  136. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/auth/types.py +0 -0
  137. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/__init__.py +0 -0
  138. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/__init__.py +0 -0
  139. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/clear.py +0 -0
  140. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/compact.py +0 -0
  141. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/reload.py +0 -0
  142. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/session.py +0 -0
  143. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/btw/__init__.py +0 -0
  144. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/__init__.py +0 -0
  145. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/git.py +0 -0
  146. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/model.py +0 -0
  147. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/utils.py +0 -0
  148. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/header/__init__.py +0 -0
  149. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/watch/__init__.py +0 -0
  150. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/__init__.py +0 -0
  151. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/audio.py +0 -0
  152. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/image.py +0 -0
  153. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/video.py +0 -0
  154. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/commit.md +0 -0
  155. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/docs.md +0 -0
  156. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/explain.md +0 -0
  157. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/fix.md +0 -0
  158. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/refactor.md +0 -0
  159. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/review.md +0 -0
  160. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/test.md +0 -0
  161. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/__init__.py +0 -0
  162. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/audio.py +0 -0
  163. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/image.py +0 -0
  164. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/video.py +0 -0
  165. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/skills/code-review/SKILL.md +0 -0
  166. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/skills/debug/SKILL.md +0 -0
  167. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/skills/git-commit/SKILL.md +0 -0
  168. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/themes/dark.yaml +0 -0
  169. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/themes/light.yaml +0 -0
  170. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/__init__.py +0 -0
  171. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/glob.py +0 -0
  172. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/ls.py +0 -0
  173. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/read.py +0 -0
  174. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/terminal.py +0 -0
  175. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/utils.py +0 -0
  176. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/write.py +0 -0
  177. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/commands/__init__.py +0 -0
  178. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/commands/registry.py +0 -0
  179. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/commands/types.py +0 -0
  180. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/__init__.py +0 -0
  181. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/cli.py +0 -0
  182. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/__init__.py +0 -0
  183. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/auth.py +0 -0
  184. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/packages.py +0 -0
  185. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/update.py +0 -0
  186. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/core/__init__.py +0 -0
  187. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/core/registry.py +0 -0
  188. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/engine/__init__.py +0 -0
  189. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/engine/types.py +0 -0
  190. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/__init__.py +0 -0
  191. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/context.py +0 -0
  192. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/loader.py +0 -0
  193. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/runtime.py +0 -0
  194. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/settings.py +0 -0
  195. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/__init__.py +0 -0
  196. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/engine.py +0 -0
  197. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/inference.py +0 -0
  198. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/runtime.py +0 -0
  199. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/service.py +0 -0
  200. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/session.py +0 -0
  201. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/tui.py +0 -0
  202. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/types.py +0 -0
  203. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/__init__.py +0 -0
  204. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/__init__.py +0 -0
  205. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/__init__.py +0 -0
  206. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/base.py +0 -0
  207. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/builtins.py +0 -0
  208. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
  209. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/gemini_audio.py +0 -0
  210. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/openai_audio.py +0 -0
  211. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/registry.py +0 -0
  212. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/sarvam_audio.py +0 -0
  213. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/service.py +0 -0
  214. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/utils.py +0 -0
  215. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/availability.py +0 -0
  216. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/__init__.py +0 -0
  217. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/base.py +0 -0
  218. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/builtins.py +0 -0
  219. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/gemini_image.py +0 -0
  220. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/openai_image.py +0 -0
  221. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/openrouter.py +0 -0
  222. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/registry.py +0 -0
  223. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/service.py +0 -0
  224. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/registry.py +0 -0
  225. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/__init__.py +0 -0
  226. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/anthropic_claude_code.py +0 -0
  227. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/anthropic_messages.py +0 -0
  228. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/anthropic_vertex.py +0 -0
  229. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/base.py +0 -0
  230. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/builtins.py +0 -0
  231. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/gemini_generate.py +0 -0
  232. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/google_antigravity.py +0 -0
  233. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/google_vertex.py +0 -0
  234. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/mistral_chat.py +0 -0
  235. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/ollama_chat.py +0 -0
  236. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_codex_responses.py +0 -0
  237. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_responses.py +0 -0
  238. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/registry.py +0 -0
  239. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/service.py +0 -0
  240. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/types.py +0 -0
  241. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/__init__.py +0 -0
  242. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/base.py +0 -0
  243. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/builtins.py +0 -0
  244. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/fal_video.py +0 -0
  245. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/openrouter_video.py +0 -0
  246. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/registry.py +0 -0
  247. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/service.py +0 -0
  248. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/model/__init__.py +0 -0
  249. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/model/registry.py +0 -0
  250. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/__init__.py +0 -0
  251. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/__init__.py +0 -0
  252. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
  253. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/github_copilot.py +0 -0
  254. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/google_antigravity.py +0 -0
  255. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/openai_codex.py +0 -0
  256. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/pkce.py +0 -0
  257. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/types.py +0 -0
  258. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/utils.py +0 -0
  259. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/registry.py +0 -0
  260. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/types.py +0 -0
  261. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/types.py +0 -0
  262. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/utils.py +0 -0
  263. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/message/__init__.py +0 -0
  264. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/message/types.py +0 -0
  265. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/message/utils.py +0 -0
  266. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/__init__.py +0 -0
  267. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/__init__.py +0 -0
  268. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/agent_hooks.py +0 -0
  269. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/__init__.py +0 -0
  270. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/context.py +0 -0
  271. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/extensions.py +0 -0
  272. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/misc.py +0 -0
  273. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/session.py +0 -0
  274. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/__init__.py +0 -0
  275. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/extension_selector.py +0 -0
  276. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/model_selector.py +0 -0
  277. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/oauth_selector.py +0 -0
  278. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/selector_controller.py +0 -0
  279. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/settings_selector.py +0 -0
  280. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/theme_selector.py +0 -0
  281. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/thinking_selector.py +0 -0
  282. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/tree_selector.py +0 -0
  283. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/trust_screen.py +0 -0
  284. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/voice_selector.py +0 -0
  285. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/input_handler.py +0 -0
  286. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/print/__init__.py +0 -0
  287. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/rpc/__init__.py +0 -0
  288. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/rpc/mode.py +0 -0
  289. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/rpc/types.py +0 -0
  290. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/__init__.py +0 -0
  291. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/manager.py +0 -0
  292. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/types.py +0 -0
  293. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/utils.py +0 -0
  294. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/expand.py +0 -0
  295. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/loader.py +0 -0
  296. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/registry.py +0 -0
  297. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/types.py +0 -0
  298. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/resources/__init__.py +0 -0
  299. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/resources/loader.py +0 -0
  300. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/resources/types.py +0 -0
  301. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/runtime/dependencies.py +0 -0
  302. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/runtime/service.py +0 -0
  303. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/runtime/types.py +0 -0
  304. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/branch_summarization.py +0 -0
  305. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/compaction.py +0 -0
  306. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/manager.py +0 -0
  307. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/types.py +0 -0
  308. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/utils.py +0 -0
  309. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/paths.py +0 -0
  310. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/storage.py +0 -0
  311. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/utils.py +0 -0
  312. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/skills/loader.py +0 -0
  313. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/skills/registry.py +0 -0
  314. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/skills/types.py +0 -0
  315. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/themes/loader.py +0 -0
  316. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/themes/registry.py +0 -0
  317. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/themes/types.py +0 -0
  318. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/__init__.py +0 -0
  319. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/registry.py +0 -0
  320. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/render.py +0 -0
  321. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/types.py +0 -0
  322. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/__init__.py +0 -0
  323. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/manager.py +0 -0
  324. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/types.py +0 -0
  325. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/utils.py +0 -0
  326. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/__init__.py +0 -0
  327. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/component.py +0 -0
  328. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/__init__.py +0 -0
  329. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/box.py +0 -0
  330. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/editor.py +0 -0
  331. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/image.py +0 -0
  332. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/spinner.py +0 -0
  333. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/keybinding_hints.py +0 -0
  334. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/markdown.py +0 -0
  335. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/terminal.py +0 -0
  336. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/theme.py +0 -0
  337. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/__init__.py +0 -0
  338. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/http_proxy.py +0 -0
  339. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/image_processing.py +0 -0
  340. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/secrets.py +0 -0
  341. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/version_check.py +0 -0
  342. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
  343. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/entry_points.txt +0 -0
  344. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/top_level.txt +0 -0
  345. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_agent_compaction.py +0 -0
  346. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_agent_prompt.py +0 -0
  347. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_agent_types.py +0 -0
  348. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_branch_navigation.py +0 -0
  349. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_branch_summarization.py +0 -0
  350. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_builtin_watch.py +0 -0
  351. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_cli_inputs.py +0 -0
  352. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_command_execution_policy.py +0 -0
  353. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_command_registry.py +0 -0
  354. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_compaction.py +0 -0
  355. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_engine_execution.py +0 -0
  356. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_engine_steering.py +0 -0
  357. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_extension_lifecycle.py +0 -0
  358. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_footer_model.py +0 -0
  359. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_command.py +0 -0
  360. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_selector_modal.py +0 -0
  361. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_package_resources.py +0 -0
  362. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_resource_loader.py +0 -0
  363. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_runtime_sdk.py +0 -0
  364. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_selector_controller.py +0 -0
  365. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_manager.py +0 -0
  366. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_manager.py +0 -0
  367. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_subagents_extension.py +0 -0
  368. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_thinking_render.py +0 -0
  369. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tool_registry.py +0 -0
  370. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_layout_sizing.py +1 -1
  371. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_ui_context.py +0 -0
  372. {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_voice_selector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tau-coding-agent
3
- Version: 0.4.7
3
+ Version: 0.4.8
4
4
  Summary: A self-extensible agent CLI with terminal UI, multi-provider LLM support, session management with branching, and a plugin system for tools and commands
5
5
  Requires-Python: >=3.12
6
6
  Description-Content-Type: text/markdown
@@ -29,6 +29,7 @@ Requires-Dist: grapheme==0.6.0
29
29
  Requires-Dist: arrow==1.4.0
30
30
  Provides-Extra: tools
31
31
  Requires-Dist: ripgrep>=14.0.0; extra == "tools"
32
+ Requires-Dist: ast-grep-cli>=0.44.0; extra == "tools"
32
33
  Dynamic: license-file
33
34
 
34
35
  # Tau (τ)
@@ -183,8 +183,9 @@ Extensions can react to lifecycle events:
183
183
  - `session_start` - Session begins
184
184
  - `turn_start` - New inference turn starts
185
185
  - `turn_end` - Turn completes (before rendering)
186
- - `tool_execute` - Tool is about to execute
187
- - `tool_complete` - Tool execution finished
186
+ - `tool_call` - Tool call can be inspected, rewritten, or blocked
187
+ - `tool_result` - Tool result can be inspected or rewritten
188
+ - `tool_execution_start` / `tool_execution_end` - Tool handler lifecycle
188
189
  - `tui_ready` - TUI is ready for input
189
190
  - `tui_exit` - TUI is exiting
190
191
  - `compaction_start` - Compaction begins
@@ -194,12 +195,13 @@ Hooks allow extensions to inspect state, modify messages, or react to events.
194
195
 
195
196
  ## Provider Abstraction
196
197
 
197
- All LLM providers (Anthropic, OpenAI, Google, Mistral, Ollama, Azure) implement a common interface:
198
+ Providers describe authentication, endpoints, and the API adapter used for a
199
+ request. Adapters stream normalized `LLMEvent` objects:
198
200
 
199
201
  ```python
200
- class Provider:
201
- async def call(messages, tools, model) -> Response
202
- async def stream(messages, tools, model) -> AsyncIterator[Event]
202
+ class BaseAPI:
203
+ async def stream(self, context, model, options) -> AsyncIterator[LLMEvent]:
204
+ ...
203
205
  ```
204
206
 
205
207
  The inference module handles provider-specific details (API keys, endpoints, format conversions).
@@ -289,9 +291,9 @@ React to lifecycle events:
289
291
 
290
292
  ```python
291
293
  def register(tau):
292
- async def on_tool_complete(event):
294
+ async def on_tool_end(event, ctx):
293
295
  print(f"Tool {event.tool_name} finished")
294
- tau.on_hook("tool_complete", on_tool_complete)
296
+ tau.on("tool_execution_end", on_tool_end)
295
297
  ```
296
298
 
297
299
  ### Dialogs
@@ -6,7 +6,7 @@ Tau stores credentials for LLM providers in `~/.tau/auth.json`. This page explai
6
6
 
7
7
  For each provider, tau resolves credentials in this order:
8
8
 
9
- 1. **Runtime override** — set via `--api-key` on the CLI (not persisted)
9
+ 1. **Runtime override** — set programmatically through `AuthManager` (not persisted)
10
10
  2. **Stored credential** — read from `~/.tau/auth.json`
11
11
  3. **Environment variable** — `{PROVIDER}_API_KEY` (e.g. `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`)
12
12
 
@@ -69,13 +69,11 @@ export OPENAI_API_KEY="sk-..."
69
69
 
70
70
  No file is needed — tau picks these up automatically.
71
71
 
72
- ### CLI flag (one-off override)
72
+ ### Runtime override
73
73
 
74
- ```bash
75
- tau --api-key sk-ant-...
76
- ```
77
-
78
- Not stored. Only applies to the current session.
74
+ Embedding applications may call
75
+ `auth_manager.set_runtime_api_key(provider, key)`. The main Tau CLI does not
76
+ provide an `--api-key` flag.
79
77
 
80
78
  ### Auth file (direct edit)
81
79
 
@@ -91,7 +89,9 @@ Run `/login` from within a session. Tau asks which authentication type to use:
91
89
 
92
90
  ### `/logout` command
93
91
 
94
- Run `/logout` to open a list of providers that have credentials stored in `~/.tau/auth.json`. Select one to remove it. Environment variables and CLI `--api-key` flags are unaffected.
92
+ Run `/logout` to open a list of providers that have credentials stored in
93
+ `~/.tau/auth.json`. Select one to remove it. Environment variables and
94
+ programmatic runtime overrides are unaffected.
95
95
 
96
96
  ## Auth File Format
97
97
 
@@ -120,7 +120,7 @@ From Python (e.g. in an extension):
120
120
  status = auth_manager.get_auth_status("anthropic")
121
121
  # status.configured → True / False
122
122
  # status.source → "stored" | "runtime" | "env" | None
123
- # status.label → env var name or "--api-key" if runtime
123
+ # status.label → env var name or "runtime override"
124
124
  ```
125
125
 
126
126
  ## Security
@@ -3,7 +3,7 @@
3
3
  ## Usage
4
4
 
5
5
  ```bash
6
- tau [OPTIONS] [MESSAGE]
6
+ tau [OPTIONS] COMMAND [ARGS]...
7
7
  ```
8
8
 
9
9
  Use `--prompt TEXT` for a non-interactive prompt. Piped stdin can supply or
@@ -13,14 +13,20 @@ augment it.
13
13
 
14
14
  | Option | Short | Description |
15
15
  |--------|-------|-------------|
16
+ | `--version` | `-v` | Print the installed version |
17
+ | `--debug` | `-d` | Enable debug logging |
18
+ | `--cwd PATH` | `-c` | Set the working directory |
16
19
  | `--prompt` | `-p` | Run a non-interactive prompt |
20
+ | `--output-format` | `-f` | Non-interactive output: `text` or `json` |
21
+ | `--quiet` | `-q` | Hide the non-interactive spinner |
17
22
  | `--provider` | | Provider to use, e.g. `anthropic`, `openai`, `groq` |
18
23
  | `--model` | | Model ID, or `provider/model` shorthand (e.g. `groq/llama-3.3-70b-versatile`) |
19
- | `--theme` | `-t` | UI theme: `default`, `dracula`, `nord`, `gruvbox`, `catppuccin`, `ayu-dark`, `everforest`, `horizon`, `kanagawa`, `material-ocean`, `monokai`, `night-owl`, `one-dark`, `rose-pine`, `solarized-dark`, `tokyo-night`, or a custom name |
24
+ | `--theme` | `-t` | UI theme: `dark`, `light`, or an installed custom theme |
20
25
  | `--resume [ID]` | `-r` | Resume the most recent or a specified session |
21
26
  | `--fork ID` | | Fork a specified session at startup |
22
27
  | `--session-dir PATH` | | Override session storage |
23
28
  | `--name NAME` | | Set the session display name at startup |
29
+ | `--system TEXT` | `-s` | Replace the generated system prompt |
24
30
  | `--ephemeral` | `-e` | Don't save this session to disk |
25
31
  | `--approve` | `-a` | Trust project-local files (extensions, settings, context files) for this run |
26
32
  | `--no-approve` | `-na` | Don't trust project-local files for this run |
@@ -66,7 +72,7 @@ that order.
66
72
  Emit a JSON event stream on stdout:
67
73
 
68
74
  ```bash
69
- tau --mode json "Your prompt"
75
+ tau --mode json --prompt "Your prompt"
70
76
  ```
71
77
 
72
78
  Each line is a JSON object representing a lifecycle event (`agent_start`, `message_end`, etc.).
@@ -345,8 +351,7 @@ An explicit `--provider` always overrides the inferred provider.
345
351
 
346
352
  ```bash
347
353
  tau --resume # continue most recent session
348
- tau --session abc123 # resume by session ID
349
- tau --session ~/.tau/sessions/proj/file.jsonl # resume by file path
354
+ tau --resume abc123 # resume by session ID
350
355
  tau --ephemeral # temporary session, nothing saved
351
356
  ```
352
357
 
@@ -360,13 +365,16 @@ Manage provider credentials.
360
365
  tau auth --help
361
366
  ```
362
367
 
368
+ Package management is available through `tau install`, `tau remove`,
369
+ `tau list`, and `tau update`.
370
+
363
371
  ## Environment Variables
364
372
 
365
373
  | Variable | Effect |
366
374
  |----------|--------|
367
375
  | `ANTHROPIC_API_KEY` | Anthropic API key |
368
376
  | `OPENAI_API_KEY` | OpenAI API key |
369
- | `GEMINI_API_KEY` | Google Gemini key |
377
+ | `GOOGLE_API_KEY` | Google Gemini key |
370
378
  | `<PROVIDER>_API_KEY` | API key for any provider (uppercased provider name) |
371
379
 
372
380
  Provider and model can also be set permanently in `settings.json` — see [Settings](settings.md).
@@ -4,15 +4,15 @@ This page covers setting up a development environment for tau.
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - Python 3.13 or higher
7
+ - Python 3.12 or higher
8
8
  - git
9
9
  - pip or uv (Python package manager)
10
10
 
11
11
  ## Clone the Repository
12
12
 
13
13
  ```bash
14
- git clone https://github.com/yourusername/tau.git
15
- cd tau
14
+ git clone https://github.com/Jeomon/Tau.git
15
+ cd Tau
16
16
  ```
17
17
 
18
18
  ## Install Dependencies
@@ -63,7 +63,7 @@ tau --theme dark
63
63
  ### Run with Debug Logging
64
64
 
65
65
  ```bash
66
- TAU_LOG_LEVEL=DEBUG tau
66
+ tau --debug
67
67
  ```
68
68
 
69
69
  ### Run Tests
@@ -215,7 +215,7 @@ logger.error("Error message")
215
215
  Enable debug logging:
216
216
 
217
217
  ```bash
218
- TAU_LOG_LEVEL=DEBUG tau
218
+ tau --debug
219
219
  ```
220
220
 
221
221
  ## IDE Setup
@@ -61,6 +61,10 @@
61
61
  "title": "Extensions",
62
62
  "path": "extensions.md"
63
63
  },
64
+ {
65
+ "title": "Extension Settings",
66
+ "path": "extension-settings.md"
67
+ },
64
68
  {
65
69
  "title": "Themes",
66
70
  "path": "themes.md"
@@ -80,6 +84,10 @@
80
84
  {
81
85
  "title": "Authentication",
82
86
  "path": "auth.md"
87
+ },
88
+ {
89
+ "title": "HTTP Proxy",
90
+ "path": "http-proxy.md"
83
91
  }
84
92
  ]
85
93
  },
@@ -656,6 +656,19 @@ def register(tau):
656
656
 
657
657
  ## Keyboard shortcuts
658
658
 
659
+ `register_shortcut` takes a literal key combination. Tau compares extension
660
+ shortcuts with the effective `KeyMap`.
661
+ Safety-critical editor and application bindings are reserved and cannot be
662
+ replaced by extensions. An extension may replace a non-reserved global
663
+ application binding, with a warning. If multiple extensions register the same
664
+ key, the last loaded extension wins and Tau reports a warning.
665
+
666
+ Some low-level editor operations that are not exposed as `KeyMap` actions,
667
+ such as cursor movement, are still consumed directly by the focused editor.
668
+ Registering an extension shortcut does not replace those operations. See
669
+ [Customising keybindings](keybindings.md#customising-keybindings) for the
670
+ available actions.
671
+
659
672
  ```python
660
673
  def register(tau):
661
674
  @tau.register_shortcut("ctrl+g", "Open greeter")
@@ -844,7 +857,7 @@ def register(tau):
844
857
  | `tau.register_tool(tool)` | Add a tool the agent can call |
845
858
  | `tau.register_command(name, desc, handler, aliases=[], get_argument_completions=None, argument_hint=None, requires_idle=True)` | Add a `/name` slash command; set `requires_idle=False` only for UI-only or read-only handlers safe during an active turn |
846
859
  | `tau.on(event, handler)` / `@tau.on(event)` | Subscribe to a lifecycle event |
847
- | `tau.register_shortcut(key, desc, handler)` | Bind a keyboard shortcut |
860
+ | `tau.register_shortcut(key, desc, handler)` | Bind a literal keyboard shortcut |
848
861
  | `tau.append_prompt(text)` | Append text to the system prompt |
849
862
  | `tau.register_theme(name, theme)` | Add a named theme to the picker |
850
863
  | `tau.register_message_renderer(type, fn)` | Render custom message types in the TUI |
@@ -378,4 +378,4 @@ OAuth login/refresh operations (e.g., GitHub Copilot, OpenAI, Anthropic) also re
378
378
 
379
379
  - [Settings](settings.md) — Main settings reference
380
380
  - [Extensions](extensions.md) — Extensions can also use proxy settings via SettingsManager
381
- - [Providers](providers.md) — Model provider configuration (some may have custom proxy handling)
381
+ - [Inference Providers](inference-providers.md) — Model provider configuration
@@ -6,7 +6,7 @@ Tau is a Python CLI framework for building interactive agent applications. It pr
6
6
 
7
7
  Tau allows you to:
8
8
  - Chat with LLMs (Claude, GPT, Gemini, Mistral, Ollama) in a terminal UI
9
- - Execute tools (terminal commands, read/write files, fetch web content) within conversations
9
+ - Execute tools (terminal commands, file operations, search) within conversations
10
10
  - Save and resume sessions with branching and forking
11
11
  - Extend Tau with custom tools, commands, themes, and skills
12
12
  - Embed Tau in Python applications as a library
@@ -53,14 +53,13 @@ Tau allows you to:
53
53
 
54
54
  - [Project Structure](project-structure.md) - Codebase organization and module breakdown
55
55
  - [Development Setup](development.md) - Local development environment and testing
56
- - [Implementation Summary](IMPLEMENTATION_SUMMARY.md) - Recent changes and features
57
56
 
58
57
  ## Reference
59
58
 
60
59
  - [CLI Reference](cli-reference.md) - All flags, modes (interactive/print/json/rpc)
61
60
  - [Settings Reference](settings.md) - Complete settings schema
62
61
  - [Session Format](sessions.md) - JSONL file format and structure
63
- - [Hooks & Events](extensions.md#hooks) - All available hooks and events
62
+ - [Hooks & Events](extensions.md#event-hooks) - All available hooks and events
64
63
 
65
64
  ---
66
65
 
@@ -6,22 +6,22 @@ This page documents all supported LLM inference providers and their setup.
6
6
 
7
7
  Tau supports the following inference providers:
8
8
 
9
- | Provider | Auth Type | Free Tier | Setup |
10
- |----------|-----------|-----------|-------|
11
- | Anthropic | API Key | Limited | [Link](#anthropic) |
12
- | OpenAI | API Key | No | [Link](#openai) |
13
- | Google Gemini | API Key | Yes | [Link](#google-gemini) |
14
- | Mistral AI | API Key | Limited | [Link](#mistral-ai) |
15
- | Fireworks AI | API Key | No | [Link](#fireworks-ai) |
16
- | Ollama | None | Yes | [Link](#ollama-local) |
17
- | Azure OpenAI | API Key | No | [Link](#azure-openai) |
9
+ Built-in API-key providers are `openai`, `anthropic`, `google`, `nvidia`,
10
+ `groq`, `openrouter`, `perplexity`, `xai`, `bedrock`, `kimi`, `minimax`,
11
+ `cerebras`, `deepseek`, `kilocode`, `fireworks`, and `mistral`.
12
+
13
+ Tau also includes local `ollama`, Google/Anthropic/OpenAI-compatible Vertex AI
14
+ providers, and OAuth providers for OpenAI Codex, Claude Code, GitHub Copilot,
15
+ and Google Antigravity. Extensions can register additional providers.
16
+
17
+ The model picker is the authoritative model catalogue. Built-in model metadata
18
+ changes more frequently than this guide, so model IDs and pricing are not
19
+ enumerated here.
18
20
 
19
21
  ## Anthropic
20
22
 
21
23
  Anthropic provides Claude models with best-in-class reasoning and code generation.
22
24
 
23
- **Models**: `claude-3-5-sonnet`, `claude-3-opus`, `claude-3-haiku`, `claude-3-5-haiku`
24
-
25
25
  ### Setup
26
26
 
27
27
  1. Create an account at [Anthropic Console](https://console.anthropic.com)
@@ -42,8 +42,6 @@ tau --model anthropic/claude-3-5-sonnet -p "Say hello"
42
42
 
43
43
  OpenAI provides GPT models optimized for a wide range of tasks.
44
44
 
45
- **Models**: `gpt-4`, `gpt-4-turbo`, `gpt-4o`, `gpt-3.5-turbo`
46
-
47
45
  ### Setup
48
46
 
49
47
  1. Create an account at [OpenAI Platform](https://platform.openai.com)
@@ -64,8 +62,6 @@ tau --model openai/gpt-4o -p "Say hello"
64
62
 
65
63
  Google provides Gemini models with multimodal capabilities.
66
64
 
67
- **Models**: `gemini-2.0-flash`, `gemini-1.5-pro`, `gemini-1.5-flash`
68
-
69
65
  ### Setup
70
66
 
71
67
  1. Visit [Google AI Studio](https://aistudio.google.com)
@@ -73,7 +69,7 @@ Google provides Gemini models with multimodal capabilities.
73
69
  3. Set the environment variable:
74
70
 
75
71
  ```bash
76
- export GEMINI_API_KEY=...
72
+ export GOOGLE_API_KEY=...
77
73
  ```
78
74
 
79
75
  ### Verify
@@ -86,8 +82,6 @@ tau --model google/gemini-2.0-flash -p "Say hello"
86
82
 
87
83
  Mistral offers efficient open-source-based models.
88
84
 
89
- **Models**: `mistral-large`, `mistral-medium`, `mistral-small`
90
-
91
85
  ### Setup
92
86
 
93
87
  1. Create an account at [Mistral Console](https://console.mistral.ai)
@@ -108,21 +102,6 @@ tau --model mistral/mistral-large -p "Say hello"
108
102
 
109
103
  Fireworks AI provides fast, cost-efficient inference for open-source models including Llama, DeepSeek, Qwen, and Mixtral — with OpenAI-compatible APIs.
110
104
 
111
- **Text models**:
112
-
113
- | Model | Context | Pricing (in/out per M tokens) |
114
- |-------|---------|-------------------------------|
115
- | `accounts/fireworks/models/llama-v3p3-70b-instruct` | 131K | $0.90 / $0.90 |
116
- | `accounts/fireworks/models/llama-v3p1-405b-instruct` | 131K | $3.00 / $3.00 |
117
- | `accounts/fireworks/models/deepseek-r1` *(thinking)* | 160K | $3.00 / $7.00 |
118
- | `accounts/fireworks/models/deepseek-v3` | 131K | $0.90 / $0.90 |
119
- | `accounts/fireworks/models/qwen3-235b-a22b` *(thinking)* | 131K | $0.22 / $0.88 |
120
- | `accounts/fireworks/models/qwen3-30b-a3b` *(thinking)* | 131K | $0.15 / $0.60 |
121
- | `accounts/fireworks/models/mixtral-8x22b-instruct` | 65K | $0.90 / $0.90 |
122
- | `accounts/fireworks/models/gemma2-9b-it` | 8K | $0.20 / $0.20 |
123
-
124
- **Image models**: Flux 1 Schnell FP8, Flux 1 Dev FP8
125
-
126
105
  ### Setup
127
106
 
128
107
  1. Create an account at [Fireworks AI](https://fireworks.ai)
@@ -148,8 +127,6 @@ tau --model fireworks/accounts/fireworks/models/llama-v3p3-70b-instruct -p "Say
148
127
 
149
128
  Run open-source models locally without API keys or internet.
150
129
 
151
- **Models**: `llama2`, `mistral`, `neural-chat`, `qwen3.5:cloud` (262K context, thinking), and [others](https://ollama.ai/library)
152
-
153
130
  ### Setup
154
131
 
155
132
  1. Install [Ollama](https://ollama.ai)
@@ -165,11 +142,7 @@ ollama pull mistral
165
142
  ollama serve
166
143
  ```
167
144
 
168
- 4. Set the endpoint (default works if running locally):
169
-
170
- ```bash
171
- export OLLAMA_BASE_URL=http://localhost:11434
172
- ```
145
+ Tau connects to `http://localhost:11434` by default.
173
146
 
174
147
  ### Verify
175
148
 
@@ -177,30 +150,6 @@ export OLLAMA_BASE_URL=http://localhost:11434
177
150
  tau --model ollama/mistral -p "Say hello"
178
151
  ```
179
152
 
180
- ## Azure OpenAI
181
-
182
- Use OpenAI models hosted on Azure infrastructure.
183
-
184
- **Models**: Same as OpenAI (gpt-4, gpt-3.5-turbo, etc.)
185
-
186
- ### Setup
187
-
188
- 1. Create an Azure OpenAI resource in the Azure Portal
189
- 2. Deploy a model (e.g., gpt-4)
190
- 3. Set environment variables:
191
-
192
- ```bash
193
- export AZURE_OPENAI_API_KEY=...
194
- export AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com
195
- export AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4
196
- ```
197
-
198
- ### Verify
199
-
200
- ```bash
201
- tau --model azure/gpt-4 -p "Say hello"
202
- ```
203
-
204
153
  ## Switching Providers
205
154
 
206
155
  ### Command Line
@@ -4,7 +4,7 @@ This page covers installation and authentication setup for Tau and its inference
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - Python 3.13 or higher
7
+ - Python 3.12 or higher
8
8
  - pip, uv, or another Python package manager
9
9
  - An API key or subscription from at least one inference provider
10
10
 
@@ -60,7 +60,7 @@ Get your API key from [OpenAI's platform](https://platform.openai.com/account/ap
60
60
  ### Google Gemini
61
61
 
62
62
  ```bash
63
- export GEMINI_API_KEY=...
63
+ export GOOGLE_API_KEY=...
64
64
  ```
65
65
 
66
66
  Create a key at [Google AI Studio](https://aistudio.google.com).
@@ -75,13 +75,8 @@ Get your key from [Mistral's console](https://console.mistral.ai).
75
75
 
76
76
  ### Ollama (Local)
77
77
 
78
- If running Ollama locally, set the endpoint:
79
-
80
- ```bash
81
- export OLLAMA_BASE_URL=http://localhost:11434
82
- ```
83
-
84
- Ollama does not require an API key.
78
+ Ollama uses `http://localhost:11434` by default and does not require an API
79
+ key. Configure a different endpoint through a provider extension.
85
80
 
86
81
  ## Configure Authentication
87
82
 
@@ -103,7 +98,7 @@ Store credentials in `~/.tau/auth.json`:
103
98
  {
104
99
  "anthropic": { "type": "api_key", "key": "sk-ant-..." },
105
100
  "openai": { "type": "api_key", "key": "sk-..." },
106
- "gemini": { "type": "api_key", "key": "..." }
101
+ "google": { "type": "api_key", "key": "..." }
107
102
  }
108
103
  ```
109
104
 
@@ -182,7 +177,7 @@ If using Ollama, ensure the service is running:
182
177
  ollama serve
183
178
  ```
184
179
 
185
- And verify the endpoint matches your `OLLAMA_BASE_URL` setting.
180
+ Tau currently expects the service at `http://localhost:11434`.
186
181
 
187
182
  ## Next Steps
188
183
 
@@ -27,7 +27,7 @@
27
27
 
28
28
  | Shortcut | Action |
29
29
  |----------|--------|
30
- | Escape | Abort current turn; restore queued messages |
30
+ | Escape | Abort the active operation; double-press while idle to clear TUI messages |
31
31
  | Ctrl+C | Abort turn; double-press to quit |
32
32
  | Ctrl+D | Quit (on empty input) |
33
33
  | Ctrl+O | Toggle expand/collapse for thinking and tool-result blocks |
@@ -56,11 +56,10 @@ Pass a `KeyMap` to `App.create()` at startup:
56
56
  from tau.tui import KeyMap
57
57
 
58
58
  overrides: KeyMap = {
59
- "tui.app.quit": ["ctrl+q"],
60
- "tui.input.submit": ["enter"],
61
- "app.message.followup": ["alt+enter"],
62
- "app.details.toggle": ["ctrl+o"],
63
- "app.invocations.toggle": ["ctrl+e"],
59
+ "app.details.toggle": ["ctrl+t"],
60
+ "app.invocations.toggle": ["ctrl+r"],
61
+ "tui.select.up": ["up", "ctrl+k"],
62
+ "tui.select.down": ["down", "ctrl+j"],
64
63
  }
65
64
 
66
65
  app = await App.create(runtime, keybindings=overrides)
@@ -81,7 +80,7 @@ A `KeyMap` is `dict[str, list[str]]` — action name → list of key combos that
81
80
  | `app.details.toggle` | `ctrl+o` | Toggle thinking and tool-result previews |
82
81
  | `app.invocations.toggle` | `ctrl+e` | Toggle template and skill blocks |
83
82
  | `tui.app.quit` | `ctrl+c`, `ctrl+d` | Quit tau |
84
- | `tui.app.abort` | `ctrl+c` | Abort the current turn |
83
+ | `tui.app.abort` | `escape`, `ctrl+c` | Abort the current turn |
85
84
  | `tui.select.up` | `up`, `ctrl+p` | Move selection up |
86
85
  | `tui.select.down` | `down`, `ctrl+n` | Move selection down |
87
86
  | `tui.select.page_up` | `page_up` | Move up a page |
@@ -90,6 +89,20 @@ A `KeyMap` is `dict[str, list[str]]` — action name → list of key combos that
90
89
  | `tui.select.bottom` | `end` | Jump to bottom |
91
90
  | `tui.select.confirm` | `enter`, `tab` | Confirm selection |
92
91
  | `tui.select.dismiss` | `escape` | Dismiss picker |
92
+ | `tui.scroll.up` | `page_up` | Scroll messages up one page |
93
+ | `tui.scroll.down` | `page_down` | Scroll messages down one page |
94
+ | `tui.scroll.top` | `home` | Scroll to the first message |
95
+ | `tui.scroll.bottom` | `end` | Scroll to the latest message |
96
+
97
+ The `tui.select.*` actions apply to components built on Tau's reusable
98
+ `SelectList` and to the corresponding navigation operations in specialized
99
+ pickers. A specialized picker may not support every operation; for example, a
100
+ compact autocomplete list only supports up and down.
101
+
102
+ Extension shortcuts are literal key combinations rather than `KeyMap` actions.
103
+ Tau checks them against the effective map and prevents extensions from
104
+ replacing reserved editor and application bindings. See
105
+ [Keyboard shortcuts](extensions.md#keyboard-shortcuts).
93
106
 
94
107
  ### Key notation
95
108
 
@@ -125,7 +138,10 @@ If a binding doesn't work, choose a different combination.
125
138
 
126
139
  ## Reloading
127
140
 
128
- Keybinding overrides are applied at startup. To pick up changes, restart tau or run `/reload`.
141
+ `App.create(keybindings=...)` applies overrides at startup. Because these
142
+ overrides are supplied by the embedding application rather than loaded from a
143
+ settings file, `/reload` does not change them. Restart the application with a
144
+ new `KeyMap` to apply different overrides.
129
145
 
130
146
  ---
131
147
 
@@ -12,9 +12,11 @@ A message from the user. Contains the prompt text and optionally referenced file
12
12
 
13
13
  ```python
14
14
  {
15
- "type": "user",
16
- "content": "Transcribe this audio",
17
- "references": ["@audio.mp3"]
15
+ "role": "user",
16
+ "contents": [
17
+ {"type": "text", "content": "Transcribe this audio"},
18
+ {"type": "audio", "audio": ["...base64..."]}
19
+ ]
18
20
  }
19
21
  ```
20
22
 
@@ -36,13 +38,14 @@ counting the same tokens twice.
36
38
 
37
39
  ```python
38
40
  {
39
- "type": "assistant",
40
- "content": "Here's a summary...",
41
- "tool_calls": [
41
+ "role": "assistant",
42
+ "contents": [
43
+ {"type": "text", "content": "Here's a summary..."},
42
44
  {
45
+ "type": "tool_call",
43
46
  "id": "call_123",
44
- "tool": "read",
45
- "input": {"path": "src/main.py"}
47
+ "name": "read",
48
+ "args": {"path": "src/main.py"}
46
49
  }
47
50
  ]
48
51
  }
@@ -54,11 +57,14 @@ Output from executing a tool.
54
57
 
55
58
  ```python
56
59
  {
57
- "type": "tool_result",
58
- "tool": "read",
59
- "call_id": "call_123",
60
- "content": "File contents here",
61
- "error": null
60
+ "role": "tool",
61
+ "contents": [{
62
+ "type": "tool_result",
63
+ "id": "call_123",
64
+ "tool_name": "read",
65
+ "content": "File contents here",
66
+ "is_error": false
67
+ }]
62
68
  }
63
69
  ```
64
70
 
@@ -93,15 +99,8 @@ Cost: ~$0.012 (estimated)
93
99
 
94
100
  ### Token Limits
95
101
 
96
- Each model has a maximum context window:
97
-
98
- | Model | Context | Max Output |
99
- |-------|---------|-----------|
100
- | claude-3-5-sonnet | 200k | 4k |
101
- | gpt-4 | 8k | 4k |
102
- | gemini-2.0-flash | 1M | 8k |
103
- | mistral-large | 32k | 32k |
104
- | ollama/mistral | 32k | 32k |
102
+ Context and output limits come from the active model metadata. Use `/model`
103
+ and `/session` rather than relying on a static table.
105
104
 
106
105
  ### Context Compression
107
106
 
@@ -120,10 +119,10 @@ Run `/session` to see:
120
119
 
121
120
  ### Clear History
122
121
 
123
- Start a new session:
122
+ Start a new session inside the TUI:
124
123
 
125
- ```bash
126
- tau --new
124
+ ```text
125
+ /new
127
126
  ```
128
127
 
129
128
  Resume from a specific point: