tau-coding-agent 0.6.0__tar.gz → 0.6.2__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 (485) hide show
  1. tau_coding_agent-0.6.2/PKG-INFO +213 -0
  2. tau_coding_agent-0.6.2/README.md +175 -0
  3. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/installation.md +5 -2
  4. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/quickstart.md +5 -0
  5. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/tools.md +4 -2
  6. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/pyproject.toml +2 -1
  7. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/agent/prompt/builder.py +12 -0
  8. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/agent/service.py +29 -9
  9. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/auth/storage.py +4 -2
  10. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/ask_user/component.py +178 -69
  11. tau_coding_agent-0.6.2/tau/builtins/extensions/ask_user/schema.py +142 -0
  12. tau_coding_agent-0.6.2/tau/builtins/extensions/ask_user/tool.py +181 -0
  13. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/footer/__init__.py +11 -0
  14. tau_coding_agent-0.6.2/tau/builtins/extensions/sandbox/__init__.py +109 -0
  15. tau_coding_agent-0.6.2/tau/builtins/extensions/sandbox/manager.py +138 -0
  16. tau_coding_agent-0.6.2/tau/builtins/extensions/sandbox/manifest.json +69 -0
  17. tau_coding_agent-0.6.2/tau/builtins/extensions/sandbox/sandbox_tool.py +232 -0
  18. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/__init__.py +28 -0
  19. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/context-builder.md +47 -0
  20. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/delegate.md +9 -0
  21. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/oracle.md +68 -0
  22. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/planner.md +49 -0
  23. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/researcher.md +48 -0
  24. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/reviewer.md +72 -0
  25. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/scout.md +41 -0
  26. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents/worker.md +36 -0
  27. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/agents.py +118 -0
  28. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/manifest.json +18 -0
  29. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/subagent_schema.py +75 -0
  30. tau_coding_agent-0.6.2/tau/builtins/extensions/subagent/subagent_tool.py +813 -0
  31. tau_coding_agent-0.6.2/tau/builtins/extensions/todo/__init__.py +165 -0
  32. tau_coding_agent-0.6.2/tau/builtins/extensions/todo/manifest.json +18 -0
  33. tau_coding_agent-0.6.2/tau/builtins/extensions/todo/todo_schema.py +69 -0
  34. tau_coding_agent-0.6.2/tau/builtins/extensions/todo/todo_tool.py +425 -0
  35. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/engines/__init__.py +2 -1
  36. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/engines/base.py +25 -2
  37. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/engines/ddgs_engine.py +33 -4
  38. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/engines/exa_engine.py +27 -2
  39. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/engines/jina_engine.py +11 -2
  40. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/engines/tavily_engine.py +11 -2
  41. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/tools/fetch.py +9 -10
  42. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/tools/search.py +39 -5
  43. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/skills/code-review/SKILL.md +1 -0
  44. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/skills/debug/SKILL.md +1 -0
  45. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/skills/git-commit/SKILL.md +1 -0
  46. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/edit.py +133 -18
  47. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/glob.py +4 -1
  48. tau_coding_agent-0.6.2/tau/builtins/tools/grep.py +176 -0
  49. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/read.py +36 -7
  50. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/terminal.py +8 -3
  51. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/utils.py +27 -8
  52. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/write.py +6 -3
  53. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/console/cli.py +17 -0
  54. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/extensions/loader.py +7 -1
  55. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/service.py +31 -4
  56. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/registry.py +14 -0
  57. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/service.py +10 -0
  58. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/utils.py +1 -0
  59. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/agent_hooks.py +1 -1
  60. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/app.py +13 -3
  61. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/context.py +1 -1
  62. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/extensions.py +21 -2
  63. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/session.py +6 -26
  64. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/config_selector.py +1 -1
  65. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/extension_selector.py +1 -0
  66. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/layout.py +26 -3
  67. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/message_list.py +129 -27
  68. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/model_selector.py +4 -11
  69. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/oauth_selector.py +1 -0
  70. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/selector_controller.py +1 -1
  71. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/session_selector.py +6 -9
  72. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/settings_selector.py +3 -3
  73. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/theme_selector.py +1 -0
  74. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/thinking_selector.py +1 -0
  75. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/voice_selector.py +1 -0
  76. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/input_handler.py +1 -1
  77. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/ui_context.py +42 -3
  78. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/packages/manager.py +11 -3
  79. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/runtime/service.py +23 -7
  80. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/runtime/types.py +29 -16
  81. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/session/compaction.py +133 -23
  82. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/session/manager.py +8 -6
  83. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/session/utils.py +28 -11
  84. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/themes/loader.py +1 -0
  85. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/__init__.py +5 -5
  86. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/buffer.py +1 -1
  87. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/simple_picker.py +2 -1
  88. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/spinner.py +1 -1
  89. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/text_input.py +1 -1
  90. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/frame.py +2 -2
  91. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/markdown.py +128 -33
  92. tau_coding_agent-0.6.0/tau/tui/tui.py → tau_coding_agent-0.6.2/tau/tui/service.py +38 -4
  93. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/theme.py +7 -0
  94. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/clear.py +1 -1
  95. tau_coding_agent-0.6.2/tau/utils/format.py +40 -0
  96. tau_coding_agent-0.6.2/tau_coding_agent.egg-info/PKG-INFO +213 -0
  97. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau_coding_agent.egg-info/SOURCES.txt +25 -2
  98. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau_coding_agent.egg-info/requires.txt +1 -0
  99. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_agent_compaction.py +41 -0
  100. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_ask_user_extension.py +1 -1
  101. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_builtin_tools.py +21 -0
  102. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_compaction.py +61 -14
  103. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_extension_lifecycle.py +1 -1
  104. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_gemini_generate.py +2 -1
  105. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_inference_error_utils.py +6 -0
  106. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_layout_render_cells.py +1 -1
  107. tau_coding_agent-0.6.2/tests/test_mcp_extension.py +183 -0
  108. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_session_manager.py +21 -0
  109. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_session_trust_persist.py +50 -0
  110. tau_coding_agent-0.6.2/tests/test_subagent_context.py +288 -0
  111. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_child_rows.py +2 -2
  112. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_renderer.py +2 -2
  113. tau_coding_agent-0.6.0/PKG-INFO +0 -191
  114. tau_coding_agent-0.6.0/README.md +0 -154
  115. tau_coding_agent-0.6.0/tau/builtins/extensions/ask_user/schema.py +0 -41
  116. tau_coding_agent-0.6.0/tau/builtins/extensions/ask_user/tool.py +0 -129
  117. tau_coding_agent-0.6.0/tau/builtins/tools/grep.py +0 -298
  118. tau_coding_agent-0.6.0/tau_coding_agent.egg-info/PKG-INFO +0 -191
  119. tau_coding_agent-0.6.0/tests/test_subagents_extension.py +0 -271
  120. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/LICENSE +0 -0
  121. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/MANIFEST.in +0 -0
  122. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/architecture.md +0 -0
  123. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/auth.md +0 -0
  124. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/cli-reference.md +0 -0
  125. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/creating-tools.md +0 -0
  126. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/development.md +0 -0
  127. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/docs.json +0 -0
  128. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/engine.md +0 -0
  129. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/extension-settings.md +0 -0
  130. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/extensions.md +0 -0
  131. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/http-proxy.md +0 -0
  132. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/index.md +0 -0
  133. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/inference-providers.md +0 -0
  134. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/inference.md +0 -0
  135. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/keybindings.md +0 -0
  136. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/messages.md +0 -0
  137. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/project-context.md +0 -0
  138. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/project-structure.md +0 -0
  139. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/prompts.md +0 -0
  140. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/python-api.md +0 -0
  141. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/sessions.md +0 -0
  142. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/settings.md +0 -0
  143. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/skills.md +0 -0
  144. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/themes.md +0 -0
  145. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/tui.md +0 -0
  146. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/docs/usage.md +0 -0
  147. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/setup.cfg +0 -0
  148. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/__init__.py +0 -0
  149. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/agent/__init__.py +0 -0
  150. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/agent/prompt/__init__.py +0 -0
  151. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/agent/prompt/types.py +0 -0
  152. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/agent/types.py +0 -0
  153. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/auth/manager.py +0 -0
  154. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/auth/types.py +0 -0
  155. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/__init__.py +0 -0
  156. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/commands/__init__.py +0 -0
  157. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/commands/clear.py +0 -0
  158. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/commands/compact.py +0 -0
  159. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/commands/reload.py +0 -0
  160. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/commands/session.py +0 -0
  161. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/ask_user/__init__.py +0 -0
  162. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/ask_user/manifest.json +0 -0
  163. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/btw/__init__.py +0 -0
  164. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/footer/git.py +0 -0
  165. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/footer/model.py +0 -0
  166. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/footer/utils.py +0 -0
  167. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/header/__init__.py +0 -0
  168. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/watch/__init__.py +0 -0
  169. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/__init__.py +0 -0
  170. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/manifest.json +0 -0
  171. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/extensions/web/tools/__init__.py +0 -0
  172. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/models/__init__.py +0 -0
  173. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/models/audio.py +0 -0
  174. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/models/image.py +0 -0
  175. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/models/text.py +0 -0
  176. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/models/video.py +0 -0
  177. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/prompts/commit.md +0 -0
  178. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/prompts/docs.md +0 -0
  179. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/prompts/explain.md +0 -0
  180. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/prompts/fix.md +0 -0
  181. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/prompts/refactor.md +0 -0
  182. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/prompts/review.md +0 -0
  183. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/prompts/test.md +0 -0
  184. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/providers/__init__.py +0 -0
  185. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/providers/audio.py +0 -0
  186. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/providers/image.py +0 -0
  187. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/providers/text.py +0 -0
  188. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/providers/video.py +0 -0
  189. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
  190. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
  191. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/ayu-dark.yaml +0 -0
  192. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/catppuccin.yaml +0 -0
  193. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/dark.yaml +0 -0
  194. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/dracula.yaml +0 -0
  195. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/everforest.yaml +0 -0
  196. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/gruvbox.yaml +0 -0
  197. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/horizon.yaml +0 -0
  198. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/kanagawa.yaml +0 -0
  199. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/light.yaml +0 -0
  200. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/material-ocean.yaml +0 -0
  201. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/monokai.yaml +0 -0
  202. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/night-owl.yaml +0 -0
  203. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/nord.yaml +0 -0
  204. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/one-dark.yaml +0 -0
  205. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/rose-pine.yaml +0 -0
  206. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/solarized-dark.yaml +0 -0
  207. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/themes/tokyo-night.yaml +0 -0
  208. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/__init__.py +0 -0
  209. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/builtins/tools/ls.py +0 -0
  210. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/commands/__init__.py +0 -0
  211. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/commands/registry.py +0 -0
  212. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/commands/types.py +0 -0
  213. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/console/__init__.py +0 -0
  214. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/console/commands/__init__.py +0 -0
  215. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/console/commands/auth.py +0 -0
  216. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/console/commands/packages.py +0 -0
  217. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/console/commands/update.py +0 -0
  218. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/core/__init__.py +0 -0
  219. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/core/registry.py +0 -0
  220. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/engine/__init__.py +0 -0
  221. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/engine/service.py +0 -0
  222. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/engine/types.py +0 -0
  223. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/extensions/__init__.py +0 -0
  224. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/extensions/api.py +0 -0
  225. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/extensions/context.py +0 -0
  226. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/extensions/runtime.py +0 -0
  227. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/extensions/settings.py +0 -0
  228. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/__init__.py +0 -0
  229. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/engine.py +0 -0
  230. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/inference.py +0 -0
  231. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/runtime.py +0 -0
  232. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/session.py +0 -0
  233. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/tui.py +0 -0
  234. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/hooks/types.py +0 -0
  235. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/__init__.py +0 -0
  236. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/__init__.py +0 -0
  237. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/__init__.py +0 -0
  238. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/base.py +0 -0
  239. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/builtins.py +0 -0
  240. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
  241. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/gemini_audio.py +0 -0
  242. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/openai_audio.py +0 -0
  243. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/registry.py +0 -0
  244. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/sarvam_audio.py +0 -0
  245. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/service.py +0 -0
  246. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/audio/utils.py +0 -0
  247. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/availability.py +0 -0
  248. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/__init__.py +0 -0
  249. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/base.py +0 -0
  250. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/builtins.py +0 -0
  251. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/gemini_image.py +0 -0
  252. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/openai_image.py +0 -0
  253. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/openrouter.py +0 -0
  254. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/registry.py +0 -0
  255. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/image/service.py +0 -0
  256. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/__init__.py +0 -0
  257. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/anthropic_claude_code.py +0 -0
  258. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/anthropic_messages.py +0 -0
  259. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/anthropic_vertex.py +0 -0
  260. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/base.py +0 -0
  261. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/builtins.py +0 -0
  262. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/dialect.py +0 -0
  263. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/gemini_generate.py +0 -0
  264. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/github_copilot_chat.py +0 -0
  265. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/google_antigravity.py +0 -0
  266. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/google_vertex.py +0 -0
  267. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/mistral_chat.py +0 -0
  268. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/ollama_chat.py +0 -0
  269. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/openai_codex_responses.py +0 -0
  270. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/openai_completions.py +0 -0
  271. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/openai_responses.py +0 -0
  272. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/openai_vertex.py +0 -0
  273. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/registry.py +0 -0
  274. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/types.py +0 -0
  275. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/text/utils.py +0 -0
  276. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/__init__.py +0 -0
  277. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/base.py +0 -0
  278. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/builtins.py +0 -0
  279. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/fal_video.py +0 -0
  280. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/openrouter_video.py +0 -0
  281. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/registry.py +0 -0
  282. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/service.py +0 -0
  283. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/api/video/zai_video.py +0 -0
  284. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/model/__init__.py +0 -0
  285. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/model/registry.py +0 -0
  286. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/model/types.py +0 -0
  287. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/__init__.py +0 -0
  288. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/__init__.py +0 -0
  289. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
  290. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/github_copilot.py +0 -0
  291. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/google_antigravity.py +0 -0
  292. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/openai_codex.py +0 -0
  293. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/pkce.py +0 -0
  294. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/types.py +0 -0
  295. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/oauth/utils.py +0 -0
  296. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/registry.py +0 -0
  297. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/provider/types.py +0 -0
  298. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/inference/types.py +0 -0
  299. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/message/__init__.py +0 -0
  300. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/message/types.py +0 -0
  301. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/message/utils.py +0 -0
  302. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/__init__.py +0 -0
  303. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/__init__.py +0 -0
  304. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/__init__.py +0 -0
  305. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/appearance.py +0 -0
  306. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/auth.py +0 -0
  307. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/misc.py +0 -0
  308. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/commands/model.py +0 -0
  309. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/__init__.py +0 -0
  310. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/command_palette.py +0 -0
  311. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/file_picker.py +0 -0
  312. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/overlays.py +0 -0
  313. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/tree_selector.py +0 -0
  314. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/interactive/components/trust_screen.py +0 -0
  315. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/print/__init__.py +0 -0
  316. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/rpc/__init__.py +0 -0
  317. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/rpc/mode.py +0 -0
  318. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/modes/rpc/types.py +0 -0
  319. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/packages/__init__.py +0 -0
  320. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/packages/types.py +0 -0
  321. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/packages/utils.py +0 -0
  322. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/prompts/expand.py +0 -0
  323. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/prompts/loader.py +0 -0
  324. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/prompts/registry.py +0 -0
  325. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/prompts/types.py +0 -0
  326. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/resources/__init__.py +0 -0
  327. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/resources/loader.py +0 -0
  328. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/resources/types.py +0 -0
  329. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/runtime/dependencies.py +0 -0
  330. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/session/branch_summarization.py +0 -0
  331. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/session/types.py +0 -0
  332. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/settings/manager.py +0 -0
  333. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/settings/paths.py +0 -0
  334. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/settings/storage.py +0 -0
  335. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/settings/types.py +0 -0
  336. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/settings/utils.py +0 -0
  337. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/skills/loader.py +0 -0
  338. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/skills/registry.py +0 -0
  339. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/skills/types.py +0 -0
  340. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/telemetry/__init__.py +0 -0
  341. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/telemetry/service.py +0 -0
  342. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/telemetry/types.py +0 -0
  343. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/themes/registry.py +0 -0
  344. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/themes/types.py +0 -0
  345. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tool/__init__.py +0 -0
  346. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tool/registry.py +0 -0
  347. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tool/render.py +0 -0
  348. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tool/types.py +0 -0
  349. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/trust/__init__.py +0 -0
  350. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/trust/manager.py +0 -0
  351. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/trust/types.py +0 -0
  352. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/trust/utils.py +0 -0
  353. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/ansi_bridge.py +0 -0
  354. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/autocomplete.py +0 -0
  355. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/backend.py +0 -0
  356. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/component.py +0 -0
  357. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/__init__.py +0 -0
  358. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/box.py +0 -0
  359. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/editor.py +0 -0
  360. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/image.py +0 -0
  361. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/select_list.py +0 -0
  362. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/components/widget_bridge.py +0 -0
  363. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/geometry.py +0 -0
  364. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/input.py +0 -0
  365. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/keybinding_hints.py +0 -0
  366. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/layout.py +0 -0
  367. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/palette.py +0 -0
  368. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/style.py +0 -0
  369. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/terminal.py +0 -0
  370. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/testing.py +0 -0
  371. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/text.py +0 -0
  372. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/utils.py +0 -0
  373. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widget.py +0 -0
  374. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/__init__.py +0 -0
  375. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/barchart.py +0 -0
  376. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/block.py +0 -0
  377. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/calendar.py +0 -0
  378. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/canvas.py +0 -0
  379. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/chart.py +0 -0
  380. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/gauge.py +0 -0
  381. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/list.py +0 -0
  382. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/paragraph.py +0 -0
  383. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/scrollbar.py +0 -0
  384. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/sparkline.py +0 -0
  385. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/symbols.py +0 -0
  386. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/table.py +0 -0
  387. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/tui/widgets/tabs.py +0 -0
  388. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/utils/__init__.py +0 -0
  389. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/utils/http_proxy.py +0 -0
  390. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/utils/image_processing.py +0 -0
  391. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/utils/secrets.py +0 -0
  392. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau/utils/version_check.py +0 -0
  393. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
  394. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau_coding_agent.egg-info/entry_points.txt +0 -0
  395. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tau_coding_agent.egg-info/top_level.txt +0 -0
  396. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_agent_hooks.py +0 -0
  397. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_agent_prompt.py +0 -0
  398. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_agent_types.py +0 -0
  399. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_ansi.py +0 -0
  400. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_ansi_bridge_legacy_image.py +0 -0
  401. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_audio_transcription_apis.py +0 -0
  402. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_auth_command.py +0 -0
  403. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_auth_manager.py +0 -0
  404. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_auth_storage.py +0 -0
  405. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_autocomplete_modifiers.py +0 -0
  406. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_branch_navigation.py +0 -0
  407. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_branch_summarization.py +0 -0
  408. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_builtin_watch.py +0 -0
  409. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_cli_inputs.py +0 -0
  410. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_command_execution_policy.py +0 -0
  411. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_command_registry.py +0 -0
  412. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_component_buffer_bridge.py +0 -0
  413. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_diff.py +0 -0
  414. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_editor_protocol.py +0 -0
  415. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_engine_execution.py +0 -0
  416. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_engine_steering.py +0 -0
  417. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_engine_types.py +0 -0
  418. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_escape_behavior.py +0 -0
  419. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_extension_api.py +0 -0
  420. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_footer_model.py +0 -0
  421. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_footer_utils.py +0 -0
  422. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_fuzzy.py +0 -0
  423. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_http_proxy.py +0 -0
  424. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_image_processing.py +0 -0
  425. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_inference_api_text_utils.py +0 -0
  426. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_inference_dialect.py +0 -0
  427. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_inference_types.py +0 -0
  428. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_inference_utils.py +0 -0
  429. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_keybindings.py +0 -0
  430. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_markdown.py +0 -0
  431. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_message_list_frozen.py +0 -0
  432. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_message_types.py +0 -0
  433. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_message_utils.py +0 -0
  434. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_model_availability.py +0 -0
  435. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_model_command.py +0 -0
  436. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_model_registry.py +0 -0
  437. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_model_selector_modal.py +0 -0
  438. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_model_types.py +0 -0
  439. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_oauth_utils.py +0 -0
  440. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_package_resources.py +0 -0
  441. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_packages_utils.py +0 -0
  442. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_peer_extension.py +0 -0
  443. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_pkce.py +0 -0
  444. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_prompts_expand.py +0 -0
  445. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_prompts_loader.py +0 -0
  446. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_prompts_registry.py +0 -0
  447. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_provider_registry.py +0 -0
  448. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_resource_loader.py +0 -0
  449. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_rpc_mode.py +0 -0
  450. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_runtime_sdk.py +0 -0
  451. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_scrollback_raw_writes.py +0 -0
  452. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_scrollback_terminal.py +0 -0
  453. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_secrets.py +0 -0
  454. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_select_list_render_cells.py +0 -0
  455. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_selector_controller.py +0 -0
  456. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_session_types.py +0 -0
  457. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_session_utils.py +0 -0
  458. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_settings_manager.py +0 -0
  459. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_settings_paths.py +0 -0
  460. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_settings_storage.py +0 -0
  461. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_settings_utils.py +0 -0
  462. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_skills_loader.py +0 -0
  463. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_skills_registry.py +0 -0
  464. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_telemetry.py +0 -0
  465. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_text_input.py +0 -0
  466. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_text_input_render_cells.py +0 -0
  467. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_text_llm_invoke.py +0 -0
  468. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_theme_loader.py +0 -0
  469. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_themes_registry.py +0 -0
  470. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_thinking_render.py +0 -0
  471. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tool_registry.py +0 -0
  472. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tool_render.py +0 -0
  473. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_trust_manager.py +0 -0
  474. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_trust_utils.py +0 -0
  475. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_capabilities.py +0 -0
  476. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_input.py +0 -0
  477. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_layout_sizing.py +0 -0
  478. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_public_api.py +0 -0
  479. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_select_list.py +0 -0
  480. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_theme.py +0 -0
  481. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_tui_utils.py +0 -0
  482. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_ui_context.py +0 -0
  483. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_utils_hashline.py +0 -0
  484. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_version_check.py +0 -0
  485. {tau_coding_agent-0.6.0 → tau_coding_agent-0.6.2}/tests/test_voice_selector.py +0 -0
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: tau-coding-agent
3
+ Version: 0.6.2
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
+ Requires-Python: >=3.12
6
+ Description-Content-Type: text/markdown
7
+ License-File: LICENSE
8
+ Requires-Dist: anthropic==0.109.1
9
+ Requires-Dist: certifi==2026.5.20
10
+ Requires-Dist: click==8.4.1
11
+ Requires-Dist: filelock==3.29.3
12
+ Requires-Dist: google-genai==2.8.0
13
+ Requires-Dist: httpx==0.28.1
14
+ Requires-Dist: mistralai==2.4.9
15
+ Requires-Dist: ollama==0.6.2
16
+ Requires-Dist: openai==2.41.1
17
+ Requires-Dist: packaging==26.2
18
+ Requires-Dist: pillow==12.2.0
19
+ Requires-Dist: pydantic==2.13.4
20
+ Requires-Dist: python-dotenv==1.2.2
21
+ Requires-Dist: uuid7==0.1.0
22
+ Requires-Dist: websockets==16.0
23
+ Requires-Dist: mistletoe==1.5.1
24
+ Requires-Dist: pyyaml==6.0.2
25
+ Requires-Dist: pygments==2.20.0
26
+ Requires-Dist: pathspec==1.1.1
27
+ Requires-Dist: posthog==7.21.3
28
+ Requires-Dist: pylatexenc==2.10
29
+ Requires-Dist: gitpython==3.1.50
30
+ Requires-Dist: grapheme==0.6.0
31
+ Requires-Dist: arrow==1.4.0
32
+ Requires-Dist: kiwisolver==1.5.0
33
+ Requires-Dist: tiktoken==0.13.0
34
+ Provides-Extra: tools
35
+ Requires-Dist: ripgrep>=14.0.0; extra == "tools"
36
+ Requires-Dist: ast-grep-cli>=0.44.0; extra == "tools"
37
+ Dynamic: license-file
38
+
39
+ # Tau (τ)
40
+
41
+ Tau is a Python agent framework and terminal coding assistant. It combines an
42
+ interactive terminal UI, multiple model providers, persistent sessions, tool
43
+ execution, and an extension system in one package.
44
+
45
+ <p align="center">
46
+ <img src="assets/tui.jpeg" alt="Tau interactive terminal interface" width="700">
47
+ </p>
48
+
49
+ ## Quick start
50
+
51
+ Tau requires Python 3.12 or later.
52
+
53
+ ```bash
54
+ pip install tau-coding-agent
55
+ ```
56
+
57
+ Set a provider API key and start Tau:
58
+
59
+ ```bash
60
+ export ANTHROPIC_API_KEY=sk-ant-...
61
+ tau
62
+ ```
63
+
64
+ Google AI Studio works through the `google` provider:
65
+
66
+ ```bash
67
+ export GOOGLE_API_KEY=...
68
+ tau --model google/gemini-2.5-flash
69
+ ```
70
+
71
+ You can also run `/login` inside Tau to save provider credentials.
72
+
73
+ Then ask Tau to work in the current directory:
74
+
75
+ ```text
76
+ Explain this repository, run its tests, and fix any failures.
77
+ ```
78
+
79
+ ## Common workflows
80
+
81
+ ```bash
82
+ tau # Start an interactive session
83
+ tau --resume # Resume the latest session
84
+ tau --model claude-sonnet-4-6 # Start with a specific model
85
+ tau --print "Summarize this repository" # Run once and print the result
86
+ tau --mode json "Summarize this repo" # Emit structured JSON events
87
+ tau --mode rpc # Start JSON-RPC mode for IDE clients
88
+ ```
89
+
90
+ Inside an interactive session:
91
+
92
+ ```text
93
+ /model Choose a model
94
+ /resume Resume another session
95
+ /tree Navigate session branches
96
+ /compact Compact a long conversation
97
+ /theme Change the terminal theme
98
+ /login Save provider credentials
99
+ /help Show commands and shortcuts
100
+ ```
101
+
102
+ See the [CLI reference](docs/cli-reference.md) for every option and command.
103
+
104
+ ## What Tau provides
105
+
106
+ - **Interactive terminal UI** with multiline editing, searchable pickers,
107
+ syntax highlighting, Markdown, and terminal-readable LaTeX math.
108
+ - **Multiple model providers**, including Anthropic, OpenAI, Google Gemini,
109
+ Mistral, Ollama, Groq, xAI, Bedrock, OpenRouter, and others.
110
+ - **Persistent session trees** with resume, fork, clone, branch navigation,
111
+ summarization, and automatic context compaction.
112
+ - **Built-in tools** for terminal commands, file operations, globbing, and
113
+ search. Long-running terminal commands stream into one persistent output
114
+ block.
115
+ - **Media support** for images, audio, video, and text files through file
116
+ references, clipboard input, and the Python API.
117
+ - **Speech APIs** for text-to-speech and speech-to-text, including word or
118
+ segment timestamps when supported by the selected provider.
119
+ - **Extensibility** through custom tools, slash commands, hooks, themes,
120
+ skills, prompts, and in-memory Python extensions.
121
+ - **Embedding and integration** through the Python API, JSON event mode, and
122
+ bidirectional JSON-RPC.
123
+
124
+ ## Referencing files
125
+
126
+ Type `@` in the interactive editor to search for a project file:
127
+
128
+ ```text
129
+ Review @src/service.py and add tests for its error handling.
130
+ ```
131
+
132
+ For one-shot execution, attach a file explicitly:
133
+
134
+ ```bash
135
+ tau --print --prompt "Explain this file" --file src/service.py
136
+ ```
137
+
138
+ Tau also discovers project instructions from `AGENTS.md` and `CLAUDE.md`.
139
+ See [Project Context Files](docs/project-context.md) for trust and discovery
140
+ behavior.
141
+
142
+ ## Authentication and configuration
143
+
144
+ Tau resolves provider credentials in this order:
145
+
146
+ 1. A programmatic runtime override
147
+ 2. A credential saved in `~/.tau/auth.json` (including keys saved by `/login`)
148
+ 3. A provider environment variable such as `ANTHROPIC_API_KEY`,
149
+ `OPENAI_API_KEY`, and `GOOGLE_API_KEY`
150
+
151
+ Settings are merged in this order:
152
+
153
+ 1. Built-in defaults
154
+ 2. `~/.tau/settings.json`
155
+ 3. `.tau/settings.json`
156
+ 4. Environment variables
157
+ 5. Command-line options
158
+
159
+ See [Authentication](docs/auth.md), [Installation](docs/installation.md), and
160
+ [Inference Providers](docs/inference-providers.md) for provider-specific
161
+ setup.
162
+
163
+ ## Documentation
164
+
165
+ - [Quickstart](docs/quickstart.md) — First session in five minutes
166
+ - [Usage](docs/usage.md) — Interactive workflows and commands
167
+ - [CLI Reference](docs/cli-reference.md) — Command-line options and modes
168
+ - [Inference Providers](docs/inference-providers.md) — Providers and speech timestamps
169
+ - [Sessions](docs/sessions.md) — Persistence, branching, and compaction
170
+ - [Tools](docs/tools.md) — Built-in and custom tools
171
+ - [Extensions](docs/extensions.md) — Tools, commands, hooks, and plugins
172
+ - [Terminal UI](docs/tui.md) — Rendering, Markdown, math, and components
173
+ - [Python API](docs/python-api.md) — Embed Tau in another application
174
+ - [Architecture](docs/architecture.md) — Internal design and data flow
175
+
176
+ The complete documentation index is available at [docs/index.md](docs/index.md).
177
+
178
+ ## Install from source
179
+
180
+ ```bash
181
+ git clone https://github.com/Jeomon/Tau.git
182
+ cd Tau
183
+ pip install -e .
184
+ tau
185
+ ```
186
+
187
+ ## Security
188
+
189
+ Tau executes enabled tools with the operating-system permissions of the process
190
+ that launched it. Review project instructions and commands before approving
191
+ work in untrusted repositories. Use a container or external sandbox when
192
+ stronger isolation is required.
193
+
194
+ Dependency versions are pinned and recorded in `uv.lock`. See
195
+ [SECURITY.md](SECURITY.md) for vulnerability reporting and supply-chain
196
+ practices.
197
+
198
+ ## Development
199
+
200
+ ```bash
201
+ mypy tau/
202
+ pyright tau/
203
+ ruff check tau/
204
+ ruff format tau/
205
+ python -m pytest
206
+ ```
207
+
208
+ See [Development Setup](docs/development.md) and
209
+ [Contributing](CONTRIBUTING.md).
210
+
211
+ ## License
212
+
213
+ Tau is licensed under the [MIT License](LICENSE).
@@ -0,0 +1,175 @@
1
+ # Tau (τ)
2
+
3
+ Tau is a Python agent framework and terminal coding assistant. It combines an
4
+ interactive terminal UI, multiple model providers, persistent sessions, tool
5
+ execution, and an extension system in one package.
6
+
7
+ <p align="center">
8
+ <img src="assets/tui.jpeg" alt="Tau interactive terminal interface" width="700">
9
+ </p>
10
+
11
+ ## Quick start
12
+
13
+ Tau requires Python 3.12 or later.
14
+
15
+ ```bash
16
+ pip install tau-coding-agent
17
+ ```
18
+
19
+ Set a provider API key and start Tau:
20
+
21
+ ```bash
22
+ export ANTHROPIC_API_KEY=sk-ant-...
23
+ tau
24
+ ```
25
+
26
+ Google AI Studio works through the `google` provider:
27
+
28
+ ```bash
29
+ export GOOGLE_API_KEY=...
30
+ tau --model google/gemini-2.5-flash
31
+ ```
32
+
33
+ You can also run `/login` inside Tau to save provider credentials.
34
+
35
+ Then ask Tau to work in the current directory:
36
+
37
+ ```text
38
+ Explain this repository, run its tests, and fix any failures.
39
+ ```
40
+
41
+ ## Common workflows
42
+
43
+ ```bash
44
+ tau # Start an interactive session
45
+ tau --resume # Resume the latest session
46
+ tau --model claude-sonnet-4-6 # Start with a specific model
47
+ tau --print "Summarize this repository" # Run once and print the result
48
+ tau --mode json "Summarize this repo" # Emit structured JSON events
49
+ tau --mode rpc # Start JSON-RPC mode for IDE clients
50
+ ```
51
+
52
+ Inside an interactive session:
53
+
54
+ ```text
55
+ /model Choose a model
56
+ /resume Resume another session
57
+ /tree Navigate session branches
58
+ /compact Compact a long conversation
59
+ /theme Change the terminal theme
60
+ /login Save provider credentials
61
+ /help Show commands and shortcuts
62
+ ```
63
+
64
+ See the [CLI reference](docs/cli-reference.md) for every option and command.
65
+
66
+ ## What Tau provides
67
+
68
+ - **Interactive terminal UI** with multiline editing, searchable pickers,
69
+ syntax highlighting, Markdown, and terminal-readable LaTeX math.
70
+ - **Multiple model providers**, including Anthropic, OpenAI, Google Gemini,
71
+ Mistral, Ollama, Groq, xAI, Bedrock, OpenRouter, and others.
72
+ - **Persistent session trees** with resume, fork, clone, branch navigation,
73
+ summarization, and automatic context compaction.
74
+ - **Built-in tools** for terminal commands, file operations, globbing, and
75
+ search. Long-running terminal commands stream into one persistent output
76
+ block.
77
+ - **Media support** for images, audio, video, and text files through file
78
+ references, clipboard input, and the Python API.
79
+ - **Speech APIs** for text-to-speech and speech-to-text, including word or
80
+ segment timestamps when supported by the selected provider.
81
+ - **Extensibility** through custom tools, slash commands, hooks, themes,
82
+ skills, prompts, and in-memory Python extensions.
83
+ - **Embedding and integration** through the Python API, JSON event mode, and
84
+ bidirectional JSON-RPC.
85
+
86
+ ## Referencing files
87
+
88
+ Type `@` in the interactive editor to search for a project file:
89
+
90
+ ```text
91
+ Review @src/service.py and add tests for its error handling.
92
+ ```
93
+
94
+ For one-shot execution, attach a file explicitly:
95
+
96
+ ```bash
97
+ tau --print --prompt "Explain this file" --file src/service.py
98
+ ```
99
+
100
+ Tau also discovers project instructions from `AGENTS.md` and `CLAUDE.md`.
101
+ See [Project Context Files](docs/project-context.md) for trust and discovery
102
+ behavior.
103
+
104
+ ## Authentication and configuration
105
+
106
+ Tau resolves provider credentials in this order:
107
+
108
+ 1. A programmatic runtime override
109
+ 2. A credential saved in `~/.tau/auth.json` (including keys saved by `/login`)
110
+ 3. A provider environment variable such as `ANTHROPIC_API_KEY`,
111
+ `OPENAI_API_KEY`, and `GOOGLE_API_KEY`
112
+
113
+ Settings are merged in this order:
114
+
115
+ 1. Built-in defaults
116
+ 2. `~/.tau/settings.json`
117
+ 3. `.tau/settings.json`
118
+ 4. Environment variables
119
+ 5. Command-line options
120
+
121
+ See [Authentication](docs/auth.md), [Installation](docs/installation.md), and
122
+ [Inference Providers](docs/inference-providers.md) for provider-specific
123
+ setup.
124
+
125
+ ## Documentation
126
+
127
+ - [Quickstart](docs/quickstart.md) — First session in five minutes
128
+ - [Usage](docs/usage.md) — Interactive workflows and commands
129
+ - [CLI Reference](docs/cli-reference.md) — Command-line options and modes
130
+ - [Inference Providers](docs/inference-providers.md) — Providers and speech timestamps
131
+ - [Sessions](docs/sessions.md) — Persistence, branching, and compaction
132
+ - [Tools](docs/tools.md) — Built-in and custom tools
133
+ - [Extensions](docs/extensions.md) — Tools, commands, hooks, and plugins
134
+ - [Terminal UI](docs/tui.md) — Rendering, Markdown, math, and components
135
+ - [Python API](docs/python-api.md) — Embed Tau in another application
136
+ - [Architecture](docs/architecture.md) — Internal design and data flow
137
+
138
+ The complete documentation index is available at [docs/index.md](docs/index.md).
139
+
140
+ ## Install from source
141
+
142
+ ```bash
143
+ git clone https://github.com/Jeomon/Tau.git
144
+ cd Tau
145
+ pip install -e .
146
+ tau
147
+ ```
148
+
149
+ ## Security
150
+
151
+ Tau executes enabled tools with the operating-system permissions of the process
152
+ that launched it. Review project instructions and commands before approving
153
+ work in untrusted repositories. Use a container or external sandbox when
154
+ stronger isolation is required.
155
+
156
+ Dependency versions are pinned and recorded in `uv.lock`. See
157
+ [SECURITY.md](SECURITY.md) for vulnerability reporting and supply-chain
158
+ practices.
159
+
160
+ ## Development
161
+
162
+ ```bash
163
+ mypy tau/
164
+ pyright tau/
165
+ ruff check tau/
166
+ ruff format tau/
167
+ python -m pytest
168
+ ```
169
+
170
+ See [Development Setup](docs/development.md) and
171
+ [Contributing](CONTRIBUTING.md).
172
+
173
+ ## License
174
+
175
+ Tau is licensed under the [MIT License](LICENSE).
@@ -61,9 +61,12 @@ Get your API key from [OpenAI's platform](https://platform.openai.com/account/ap
61
61
 
62
62
  ```bash
63
63
  export GOOGLE_API_KEY=...
64
+ tau --model google/gemini-2.5-flash
64
65
  ```
65
66
 
66
- Create a key at [Google AI Studio](https://aistudio.google.com).
67
+ Create a key at [Google AI Studio](https://aistudio.google.com). The `google`
68
+ provider uses the Gemini Developer API and is separate from the Google Vertex
69
+ AI provider.
67
70
 
68
71
  ### Mistral AI
69
72
 
@@ -144,7 +147,7 @@ When you start Tau, it will load your models. Press `/model` to see all availabl
144
147
  To remove Tau:
145
148
 
146
149
  ```bash
147
- pip uninstall tau
150
+ pip uninstall tau-coding-agent
148
151
  ```
149
152
 
150
153
  This removes the tau command but leaves configuration and session data in `~/.tau/`.
@@ -33,6 +33,7 @@ export OPENAI_API_KEY=sk-...
33
33
 
34
34
  ```bash
35
35
  export GOOGLE_API_KEY=...
36
+ tau --model google/gemini-2.5-flash
36
37
  ```
37
38
 
38
39
  ### Other Providers
@@ -66,6 +67,10 @@ Summarize this repository and tell me how to run its checks.
66
67
 
67
68
  The agent will read files, run commands, and respond with a summary.
68
69
 
70
+ Markdown responses support terminal-readable inline and display LaTeX math.
71
+ Long-running terminal tools update their existing output block while streaming
72
+ instead of printing a new block for every chunk.
73
+
69
74
  ### Media Support
70
75
 
71
76
  Tau can process multiple file types. Reference them with `@` during input:
@@ -10,8 +10,8 @@ Tau ships with seven built-in tools covering file I/O, search, and shell executi
10
10
 
11
11
  Read a UTF-8 text file. Invalid byte sequences are replaced during decoding.
12
12
  Every returned line is prefixed with a content-based hashline anchor in the form
13
- `<line>:<hash>|<content>`. Duplicate content, including blank lines, can share a
14
- hash; the line number acts as a proximity hint when `edit` resolves an anchor.
13
+ `<line>:<hash>|<content>`. Duplicate content, including blank lines, receives
14
+ distinct anchors so `edit` can target the exact displayed line.
15
15
 
16
16
  | Parameter | Type | Required | Default | Description |
17
17
  |-----------|------|----------|---------|-------------|
@@ -37,6 +37,8 @@ used as a proximity hint and the closest occurrence is selected. An empty
37
37
  `new_content` deletes the selected range. Because the complete file is rewritten,
38
38
  an edit may normalize line endings. Edit-result diffs also display hashline anchors:
39
39
  removed lines use their old hashes, while added and context lines use current hashes.
40
+ If an anchor hash is stale or invalid, the model-visible error includes current
41
+ nearby hashline-anchored file content and asks the agent to re-read before retrying.
40
42
  Edit diffs always show every changed line. By default they include three unchanged
41
43
  lines around each change and collapse larger unchanged gaps into `… (+N lines)`;
42
44
  Ctrl+O expands those gaps to show the complete file context.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tau-coding-agent"
7
- version = "0.6.0"
7
+ version = "0.6.2"
8
8
  description = "A self-extensible agent CLI with terminal UI, multi-provider LLM support, session management with branching, and a plugin system for tools and commands"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -34,6 +34,7 @@ dependencies = [
34
34
  "grapheme==0.6.0",
35
35
  "arrow==1.4.0",
36
36
  "kiwisolver==1.5.0",
37
+ "tiktoken==0.13.0",
37
38
  ]
38
39
 
39
40
  [project.scripts]
@@ -146,6 +146,18 @@ _GENERAL_GUIDELINES = [
146
146
  "Prioritize accuracy over agreement — investigate before confirming, and "
147
147
  "disagree when the evidence calls for it."
148
148
  ),
149
+ (
150
+ "Verify before reporting a task done: run the tests, build, or command that "
151
+ "exercises the change. Don't present untested, partial, or stubbed-out work as complete."
152
+ ),
153
+ (
154
+ "When fixing a bug, reproduce it before changing code. If the same fix attempt "
155
+ "fails twice, stop and investigate the root cause instead of retrying it."
156
+ ),
157
+ (
158
+ "Treat git history as shared: never force-push, amend a commit that isn't yours, "
159
+ "or skip hooks (--no-verify) without the user's explicit go-ahead."
160
+ ),
149
161
  ]
150
162
 
151
163
  _PRECEDENCE_GUIDELINES = """\
@@ -20,6 +20,7 @@ from tau.message.utils import strip_unusable_trailing_assistant
20
20
  from tau.session.compaction import CompactionSettings
21
21
  from tau.session.utils import to_llm_messages as _to_llm_messages
22
22
  from tau.tool.types import ToolInvocation, ToolResult
23
+ from tau.utils.format import human_size as _fmt_size
23
24
 
24
25
  _log = logging.getLogger(__name__)
25
26
 
@@ -33,14 +34,6 @@ _TOOL_CAP_LINES = 2000 # DEFAULT_MAX_LINES
33
34
  _TOOL_LINE_CAP_BYTES = 2 * 1024 # 2 KB — max bytes for a single line
34
35
 
35
36
 
36
- def _fmt_size(n: int) -> str:
37
- if n < 1024:
38
- return f"{n}B"
39
- if n < 1024 * 1024:
40
- return f"{n / 1024:.1f}KB"
41
- return f"{n / (1024 * 1024):.1f}MB"
42
-
43
-
44
37
  if TYPE_CHECKING:
45
38
  from tau.engine.service import Engine
46
39
  from tau.runtime.service import Runtime
@@ -509,6 +502,31 @@ class Agent:
509
502
  self._record_compaction_failure("Auto-compaction failed")
510
503
  return False
511
504
 
505
+ def _estimate_indicates_overflow(self) -> bool:
506
+ """Numeric fallback for overflow detection, independent of error text.
507
+
508
+ A failed request never gets a provider-reported usage back, so there's
509
+ no "provider said input tokens exceeded the window" signal to check —
510
+ only Tau's own pre-send estimate for what was just sent. Some providers
511
+ reject an over-window request with phrasing that matches none of
512
+ _CONTEXT_OVERFLOW_PATTERNS (tau/inference/utils.py) — NVIDIA's
513
+ "max_tokens must be at least 1, got -128" was one instance, where the
514
+ gateway computed context_window - prompt_tokens server-side and
515
+ rejected the negative result. If Tau's own estimate for the request
516
+ that just failed already reached the model's context window, treat it
517
+ as overflow regardless of how the provider phrased the rejection.
518
+ """
519
+ from tau.session.compaction import estimate_context_tokens
520
+
521
+ if self._context_window <= 0:
522
+ return False
523
+ session_ctx = self._session_manager.build_session_context()
524
+ llm_messages = _to_llm_messages(session_ctx.messages)
525
+ usage = estimate_context_tokens(
526
+ llm_messages, system_prompt=self._system_prompt, tools=self._engine.tools
527
+ )
528
+ return usage.tokens >= self._context_window
529
+
512
530
  async def _try_overflow_recovery(self) -> bool:
513
531
  """If the last turn died with a context-overflow error, compact once and signal a retry.
514
532
 
@@ -524,7 +542,9 @@ class Agent:
524
542
  return False
525
543
 
526
544
  last = self._session_manager.find_last_assistant_message()
527
- if last is None or last.error_kind != ErrorKind.CONTEXT_OVERFLOW:
545
+ if last is None:
546
+ return False
547
+ if last.error_kind != ErrorKind.CONTEXT_OVERFLOW and not self._estimate_indicates_overflow():
528
548
  return False
529
549
 
530
550
  # Model-switch guard: the overflow error is from a different model if it predates
@@ -2,8 +2,6 @@ from abc import ABC, abstractmethod
2
2
  from collections.abc import Awaitable, Callable
3
3
  from pathlib import Path
4
4
 
5
- from filelock import FileLock
6
-
7
5
  from tau.auth.types import LockResult
8
6
 
9
7
 
@@ -45,6 +43,8 @@ class FileAuthStorage(AuthStorage):
45
43
 
46
44
  def with_lock(self, fn: Callable[[str | None], LockResult]) -> LockResult:
47
45
  """Execute fn with exclusive access to storage."""
46
+ from filelock import FileLock
47
+
48
48
  with FileLock(self.lock_path):
49
49
  current = (
50
50
  self.store_path.read_text(encoding="utf-8") if self.store_path.exists() else None
@@ -59,6 +59,8 @@ class FileAuthStorage(AuthStorage):
59
59
  self, fn: Callable[[str | None], Awaitable[LockResult]]
60
60
  ) -> LockResult:
61
61
  """Execute async fn with exclusive access to storage."""
62
+ from filelock import FileLock
63
+
62
64
  with FileLock(self.lock_path):
63
65
  current = (
64
66
  self.store_path.read_text(encoding="utf-8") if self.store_path.exists() else None