tau-coding-agent 0.5.7__tar.gz → 0.6.1__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 (465) hide show
  1. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/MANIFEST.in +2 -0
  2. tau_coding_agent-0.6.1/PKG-INFO +213 -0
  3. tau_coding_agent-0.6.1/README.md +175 -0
  4. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/inference-providers.md +22 -2
  5. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/installation.md +5 -2
  6. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/python-api.md +3 -0
  7. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/quickstart.md +5 -0
  8. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/sessions.md +3 -0
  9. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/themes.md +2 -0
  10. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/tools.md +9 -5
  11. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/tui.md +23 -9
  12. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/pyproject.toml +4 -1
  13. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/prompt/builder.py +12 -0
  14. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/service.py +28 -1
  15. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/auth/storage.py +4 -2
  16. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/__init__.py +1 -1
  17. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/component.py +17 -7
  18. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/tool.py +3 -8
  19. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/btw/__init__.py +15 -4
  20. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/__init__.py +11 -0
  21. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/git.py +15 -5
  22. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/model.py +23 -9
  23. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/__init__.py +3 -3
  24. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/__init__.py +2 -1
  25. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/base.py +25 -2
  26. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/ddgs_engine.py +36 -7
  27. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/exa_engine.py +28 -3
  28. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/jina_engine.py +11 -2
  29. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/tavily_engine.py +15 -4
  30. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/tools/fetch.py +14 -4
  31. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/tools/search.py +61 -13
  32. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/text.py +74 -24
  33. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/edit.py +178 -20
  34. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/glob.py +4 -1
  35. tau_coding_agent-0.6.1/tau/builtins/tools/grep.py +176 -0
  36. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/read.py +44 -12
  37. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/terminal.py +9 -5
  38. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/utils.py +82 -0
  39. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/write.py +6 -3
  40. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/loader.py +72 -5
  41. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/runtime.py +4 -0
  42. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/service.py +31 -4
  43. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/openai_audio.py +8 -2
  44. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/sarvam_audio.py +8 -2
  45. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/registry.py +14 -0
  46. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/gemini_generate.py +66 -9
  47. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/google_antigravity.py +3 -60
  48. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/google_vertex.py +5 -2
  49. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/mistral_chat.py +2 -1
  50. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/ollama_chat.py +2 -2
  51. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_codex_responses.py +2 -2
  52. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_responses.py +2 -2
  53. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/service.py +10 -0
  54. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/utils.py +71 -2
  55. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/utils.py +1 -0
  56. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/utils.py +1 -0
  57. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/agent_hooks.py +73 -3
  58. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/app.py +17 -5
  59. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/appearance.py +20 -1
  60. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/context.py +1 -1
  61. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/command_palette.py +48 -24
  62. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/config_selector.py +72 -40
  63. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/extension_selector.py +24 -38
  64. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/file_picker.py +20 -13
  65. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/layout.py +92 -50
  66. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/message_list.py +335 -66
  67. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/model_selector.py +86 -42
  68. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/oauth_selector.py +39 -42
  69. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/overlays.py +107 -65
  70. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/selector_controller.py +20 -4
  71. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/session_selector.py +91 -36
  72. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/settings_selector.py +121 -48
  73. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/theme_selector.py +29 -30
  74. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/thinking_selector.py +29 -22
  75. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/tree_selector.py +63 -62
  76. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/trust_screen.py +36 -22
  77. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/voice_selector.py +30 -32
  78. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/input_handler.py +1 -1
  79. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/ui_context.py +53 -8
  80. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/manager.py +11 -3
  81. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/runtime/service.py +28 -9
  82. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/runtime/types.py +29 -16
  83. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/compaction.py +133 -23
  84. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/utils.py +28 -11
  85. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/telemetry/service.py +5 -5
  86. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/telemetry/types.py +5 -1
  87. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/themes/loader.py +41 -66
  88. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/render.py +8 -1
  89. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/__init__.py +92 -6
  90. tau_coding_agent-0.6.1/tau/tui/ansi_bridge.py +327 -0
  91. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/autocomplete.py +42 -20
  92. tau_coding_agent-0.6.1/tau/tui/backend.py +124 -0
  93. tau_coding_agent-0.6.1/tau/tui/buffer.py +245 -0
  94. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/component.py +141 -137
  95. tau_coding_agent-0.6.1/tau/tui/components/box.py +118 -0
  96. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/editor.py +6 -2
  97. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/image.py +44 -16
  98. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/select_list.py +106 -58
  99. tau_coding_agent-0.6.1/tau/tui/components/simple_picker.py +150 -0
  100. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/spinner.py +11 -6
  101. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/text_input.py +32 -20
  102. tau_coding_agent-0.6.1/tau/tui/components/widget_bridge.py +49 -0
  103. tau_coding_agent-0.6.1/tau/tui/frame.py +526 -0
  104. tau_coding_agent-0.6.1/tau/tui/geometry.py +113 -0
  105. tau_coding_agent-0.6.1/tau/tui/layout.py +244 -0
  106. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/markdown.py +225 -49
  107. tau_coding_agent-0.6.1/tau/tui/palette.py +91 -0
  108. tau_coding_agent-0.5.7/tau/tui/tui.py → tau_coding_agent-0.6.1/tau/tui/service.py +147 -356
  109. tau_coding_agent-0.6.1/tau/tui/style.py +335 -0
  110. tau_coding_agent-0.6.1/tau/tui/testing.py +45 -0
  111. tau_coding_agent-0.6.1/tau/tui/text.py +150 -0
  112. tau_coding_agent-0.6.1/tau/tui/theme.py +214 -0
  113. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/utils.py +17 -0
  114. tau_coding_agent-0.6.1/tau/tui/widget.py +49 -0
  115. tau_coding_agent-0.6.1/tau/tui/widgets/__init__.py +136 -0
  116. tau_coding_agent-0.6.1/tau/tui/widgets/barchart.py +114 -0
  117. tau_coding_agent-0.6.1/tau/tui/widgets/block.py +157 -0
  118. tau_coding_agent-0.6.1/tau/tui/widgets/calendar.py +71 -0
  119. tau_coding_agent-0.6.1/tau/tui/widgets/canvas.py +291 -0
  120. tau_coding_agent-0.6.1/tau/tui/widgets/chart.py +166 -0
  121. tau_coding_agent-0.6.1/tau/tui/widgets/clear.py +23 -0
  122. tau_coding_agent-0.6.1/tau/tui/widgets/gauge.py +67 -0
  123. tau_coding_agent-0.6.1/tau/tui/widgets/list.py +114 -0
  124. tau_coding_agent-0.6.1/tau/tui/widgets/paragraph.py +158 -0
  125. tau_coding_agent-0.6.1/tau/tui/widgets/scrollbar.py +74 -0
  126. tau_coding_agent-0.6.1/tau/tui/widgets/sparkline.py +55 -0
  127. tau_coding_agent-0.6.1/tau/tui/widgets/symbols.py +80 -0
  128. tau_coding_agent-0.6.1/tau/tui/widgets/table.py +128 -0
  129. tau_coding_agent-0.6.1/tau/tui/widgets/tabs.py +67 -0
  130. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/http_proxy.py +5 -1
  131. tau_coding_agent-0.6.1/tau_coding_agent.egg-info/PKG-INFO +213 -0
  132. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/SOURCES.txt +43 -1
  133. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/requires.txt +3 -0
  134. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_agent_compaction.py +41 -0
  135. tau_coding_agent-0.6.1/tests/test_agent_hooks.py +99 -0
  136. tau_coding_agent-0.6.1/tests/test_ansi_bridge_legacy_image.py +108 -0
  137. tau_coding_agent-0.6.1/tests/test_ask_user_extension.py +50 -0
  138. tau_coding_agent-0.6.1/tests/test_audio_transcription_apis.py +119 -0
  139. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_builtin_tools.py +118 -6
  140. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_compaction.py +61 -14
  141. tau_coding_agent-0.6.1/tests/test_component_buffer_bridge.py +112 -0
  142. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_editor_protocol.py +4 -4
  143. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_extension_api.py +15 -0
  144. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_extension_lifecycle.py +1 -1
  145. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_footer_model.py +6 -4
  146. tau_coding_agent-0.6.1/tests/test_gemini_generate.py +109 -0
  147. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_error_utils.py +6 -0
  148. tau_coding_agent-0.6.1/tests/test_layout_render_cells.py +112 -0
  149. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_markdown.py +33 -0
  150. tau_coding_agent-0.6.1/tests/test_mcp_extension.py +183 -0
  151. tau_coding_agent-0.6.1/tests/test_message_list_frozen.py +387 -0
  152. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_selector_modal.py +14 -9
  153. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_runtime_sdk.py +41 -0
  154. tau_coding_agent-0.6.1/tests/test_scrollback_raw_writes.py +119 -0
  155. tau_coding_agent-0.6.1/tests/test_scrollback_terminal.py +270 -0
  156. tau_coding_agent-0.6.1/tests/test_select_list_render_cells.py +68 -0
  157. tau_coding_agent-0.6.1/tests/test_selector_controller.py +152 -0
  158. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_storage.py +1 -1
  159. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_subagents_extension.py +7 -3
  160. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_text_input.py +20 -14
  161. tau_coding_agent-0.6.1/tests/test_text_input_render_cells.py +63 -0
  162. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_text_llm_invoke.py +3 -3
  163. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_theme_loader.py +24 -18
  164. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_thinking_render.py +16 -2
  165. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tool_render.py +24 -0
  166. tau_coding_agent-0.6.1/tests/test_tui_child_rows.py +65 -0
  167. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_layout_sizing.py +27 -19
  168. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_public_api.py +7 -2
  169. tau_coding_agent-0.6.1/tests/test_tui_renderer.py +137 -0
  170. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_theme.py +43 -32
  171. tau_coding_agent-0.6.1/tests/test_utils_hashline.py +63 -0
  172. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_voice_selector.py +2 -1
  173. tau_coding_agent-0.5.7/PKG-INFO +0 -189
  174. tau_coding_agent-0.5.7/README.md +0 -154
  175. tau_coding_agent-0.5.7/tau/builtins/tools/grep.py +0 -302
  176. tau_coding_agent-0.5.7/tau/tui/components/box.py +0 -107
  177. tau_coding_agent-0.5.7/tau/tui/theme.py +0 -218
  178. tau_coding_agent-0.5.7/tau_coding_agent.egg-info/PKG-INFO +0 -189
  179. tau_coding_agent-0.5.7/tests/test_ask_user_extension.py +0 -46
  180. tau_coding_agent-0.5.7/tests/test_selector_controller.py +0 -62
  181. tau_coding_agent-0.5.7/tests/test_tui_renderer.py +0 -206
  182. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/LICENSE +0 -0
  183. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/architecture.md +0 -0
  184. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/auth.md +0 -0
  185. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/cli-reference.md +0 -0
  186. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/creating-tools.md +0 -0
  187. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/development.md +0 -0
  188. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/docs.json +0 -0
  189. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/engine.md +0 -0
  190. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/extension-settings.md +0 -0
  191. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/extensions.md +0 -0
  192. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/http-proxy.md +0 -0
  193. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/index.md +0 -0
  194. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/inference.md +0 -0
  195. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/keybindings.md +0 -0
  196. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/messages.md +0 -0
  197. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/project-context.md +0 -0
  198. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/project-structure.md +0 -0
  199. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/prompts.md +0 -0
  200. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/settings.md +0 -0
  201. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/skills.md +0 -0
  202. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/usage.md +0 -0
  203. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/setup.cfg +0 -0
  204. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/__init__.py +0 -0
  205. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/__init__.py +0 -0
  206. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/prompt/__init__.py +0 -0
  207. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/prompt/types.py +0 -0
  208. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/types.py +0 -0
  209. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/auth/manager.py +0 -0
  210. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/auth/types.py +0 -0
  211. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/__init__.py +0 -0
  212. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/__init__.py +0 -0
  213. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/clear.py +0 -0
  214. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/compact.py +0 -0
  215. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/reload.py +0 -0
  216. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/session.py +0 -0
  217. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/manifest.json +0 -0
  218. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/schema.py +0 -0
  219. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/utils.py +0 -0
  220. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/header/__init__.py +0 -0
  221. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/watch/__init__.py +0 -0
  222. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/manifest.json +0 -0
  223. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/tools/__init__.py +0 -0
  224. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/__init__.py +0 -0
  225. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/audio.py +0 -0
  226. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/image.py +0 -0
  227. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/video.py +0 -0
  228. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/commit.md +0 -0
  229. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/docs.md +0 -0
  230. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/explain.md +0 -0
  231. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/fix.md +0 -0
  232. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/refactor.md +0 -0
  233. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/review.md +0 -0
  234. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/test.md +0 -0
  235. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/__init__.py +0 -0
  236. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/audio.py +0 -0
  237. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/image.py +0 -0
  238. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/text.py +0 -0
  239. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/video.py +0 -0
  240. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/code-review/SKILL.md +0 -0
  241. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/debug/SKILL.md +0 -0
  242. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/git-commit/SKILL.md +0 -0
  243. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
  244. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
  245. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/ayu-dark.yaml +0 -0
  246. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/catppuccin.yaml +0 -0
  247. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/dark.yaml +0 -0
  248. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/dracula.yaml +0 -0
  249. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/everforest.yaml +0 -0
  250. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/gruvbox.yaml +0 -0
  251. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/horizon.yaml +0 -0
  252. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/kanagawa.yaml +0 -0
  253. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/light.yaml +0 -0
  254. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/material-ocean.yaml +0 -0
  255. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/monokai.yaml +0 -0
  256. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/night-owl.yaml +0 -0
  257. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/nord.yaml +0 -0
  258. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/one-dark.yaml +0 -0
  259. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/rose-pine.yaml +0 -0
  260. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/solarized-dark.yaml +0 -0
  261. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/tokyo-night.yaml +0 -0
  262. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/__init__.py +0 -0
  263. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/ls.py +0 -0
  264. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/commands/__init__.py +0 -0
  265. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/commands/registry.py +0 -0
  266. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/commands/types.py +0 -0
  267. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/__init__.py +0 -0
  268. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/cli.py +0 -0
  269. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/__init__.py +0 -0
  270. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/auth.py +0 -0
  271. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/packages.py +0 -0
  272. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/update.py +0 -0
  273. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/core/__init__.py +0 -0
  274. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/core/registry.py +0 -0
  275. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/engine/__init__.py +0 -0
  276. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/engine/service.py +0 -0
  277. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/engine/types.py +0 -0
  278. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/__init__.py +0 -0
  279. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/api.py +0 -0
  280. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/context.py +0 -0
  281. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/settings.py +0 -0
  282. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/__init__.py +0 -0
  283. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/engine.py +0 -0
  284. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/inference.py +0 -0
  285. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/runtime.py +0 -0
  286. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/session.py +0 -0
  287. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/tui.py +0 -0
  288. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/types.py +0 -0
  289. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/__init__.py +0 -0
  290. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/__init__.py +0 -0
  291. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/__init__.py +0 -0
  292. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/base.py +0 -0
  293. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/builtins.py +0 -0
  294. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
  295. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/gemini_audio.py +0 -0
  296. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/registry.py +0 -0
  297. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/service.py +0 -0
  298. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/utils.py +0 -0
  299. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/availability.py +0 -0
  300. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/__init__.py +0 -0
  301. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/base.py +0 -0
  302. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/builtins.py +0 -0
  303. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/gemini_image.py +0 -0
  304. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/openai_image.py +0 -0
  305. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/openrouter.py +0 -0
  306. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/registry.py +0 -0
  307. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/service.py +0 -0
  308. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/__init__.py +0 -0
  309. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/anthropic_claude_code.py +0 -0
  310. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/anthropic_messages.py +0 -0
  311. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/anthropic_vertex.py +0 -0
  312. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/base.py +0 -0
  313. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/builtins.py +0 -0
  314. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/dialect.py +0 -0
  315. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/github_copilot_chat.py +0 -0
  316. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_completions.py +0 -0
  317. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_vertex.py +0 -0
  318. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/registry.py +0 -0
  319. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/types.py +0 -0
  320. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/__init__.py +0 -0
  321. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/base.py +0 -0
  322. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/builtins.py +0 -0
  323. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/fal_video.py +0 -0
  324. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/openrouter_video.py +0 -0
  325. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/registry.py +0 -0
  326. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/service.py +0 -0
  327. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/zai_video.py +0 -0
  328. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/model/__init__.py +0 -0
  329. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/model/registry.py +0 -0
  330. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/model/types.py +0 -0
  331. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/__init__.py +0 -0
  332. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/__init__.py +0 -0
  333. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
  334. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/github_copilot.py +0 -0
  335. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/google_antigravity.py +0 -0
  336. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/openai_codex.py +0 -0
  337. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/pkce.py +0 -0
  338. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/types.py +0 -0
  339. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/registry.py +0 -0
  340. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/types.py +0 -0
  341. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/types.py +0 -0
  342. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/message/__init__.py +0 -0
  343. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/message/types.py +0 -0
  344. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/message/utils.py +0 -0
  345. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/__init__.py +0 -0
  346. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/__init__.py +0 -0
  347. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/__init__.py +0 -0
  348. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/auth.py +0 -0
  349. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/extensions.py +0 -0
  350. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/misc.py +0 -0
  351. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/model.py +0 -0
  352. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/session.py +0 -0
  353. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/__init__.py +0 -0
  354. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/print/__init__.py +0 -0
  355. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/rpc/__init__.py +0 -0
  356. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/rpc/mode.py +0 -0
  357. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/rpc/types.py +0 -0
  358. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/__init__.py +0 -0
  359. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/types.py +0 -0
  360. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/utils.py +0 -0
  361. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/expand.py +0 -0
  362. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/loader.py +0 -0
  363. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/registry.py +0 -0
  364. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/types.py +0 -0
  365. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/resources/__init__.py +0 -0
  366. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/resources/loader.py +0 -0
  367. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/resources/types.py +0 -0
  368. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/runtime/dependencies.py +0 -0
  369. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/branch_summarization.py +0 -0
  370. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/manager.py +0 -0
  371. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/types.py +0 -0
  372. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/manager.py +0 -0
  373. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/paths.py +0 -0
  374. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/storage.py +0 -0
  375. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/types.py +0 -0
  376. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/utils.py +0 -0
  377. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/skills/loader.py +0 -0
  378. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/skills/registry.py +0 -0
  379. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/skills/types.py +0 -0
  380. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/telemetry/__init__.py +0 -0
  381. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/themes/registry.py +0 -0
  382. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/themes/types.py +0 -0
  383. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/__init__.py +0 -0
  384. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/registry.py +0 -0
  385. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/types.py +0 -0
  386. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/__init__.py +0 -0
  387. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/manager.py +0 -0
  388. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/types.py +0 -0
  389. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/utils.py +0 -0
  390. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/__init__.py +0 -0
  391. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/input.py +0 -0
  392. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/keybinding_hints.py +0 -0
  393. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/terminal.py +0 -0
  394. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/__init__.py +0 -0
  395. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/image_processing.py +0 -0
  396. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/secrets.py +0 -0
  397. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/version_check.py +0 -0
  398. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
  399. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/entry_points.txt +0 -0
  400. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/top_level.txt +0 -0
  401. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_agent_prompt.py +0 -0
  402. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_agent_types.py +0 -0
  403. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_ansi.py +0 -0
  404. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_auth_command.py +0 -0
  405. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_auth_manager.py +0 -0
  406. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_auth_storage.py +0 -0
  407. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_autocomplete_modifiers.py +0 -0
  408. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_branch_navigation.py +0 -0
  409. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_branch_summarization.py +0 -0
  410. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_builtin_watch.py +0 -0
  411. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_cli_inputs.py +0 -0
  412. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_command_execution_policy.py +0 -0
  413. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_command_registry.py +0 -0
  414. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_diff.py +0 -0
  415. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_engine_execution.py +0 -0
  416. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_engine_steering.py +0 -0
  417. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_engine_types.py +0 -0
  418. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_escape_behavior.py +0 -0
  419. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_footer_utils.py +0 -0
  420. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_fuzzy.py +0 -0
  421. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_http_proxy.py +0 -0
  422. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_image_processing.py +0 -0
  423. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_api_text_utils.py +0 -0
  424. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_dialect.py +0 -0
  425. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_types.py +0 -0
  426. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_utils.py +0 -0
  427. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_keybindings.py +0 -0
  428. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_message_types.py +0 -0
  429. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_message_utils.py +0 -0
  430. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_availability.py +0 -0
  431. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_command.py +0 -0
  432. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_registry.py +0 -0
  433. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_types.py +0 -0
  434. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_oauth_utils.py +0 -0
  435. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_package_resources.py +0 -0
  436. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_packages_utils.py +0 -0
  437. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_peer_extension.py +0 -0
  438. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_pkce.py +0 -0
  439. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_prompts_expand.py +0 -0
  440. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_prompts_loader.py +0 -0
  441. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_prompts_registry.py +0 -0
  442. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_provider_registry.py +0 -0
  443. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_resource_loader.py +0 -0
  444. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_rpc_mode.py +0 -0
  445. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_secrets.py +0 -0
  446. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_manager.py +0 -0
  447. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_trust_persist.py +0 -0
  448. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_types.py +0 -0
  449. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_utils.py +0 -0
  450. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_manager.py +0 -0
  451. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_paths.py +0 -0
  452. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_utils.py +0 -0
  453. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_skills_loader.py +0 -0
  454. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_skills_registry.py +0 -0
  455. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_telemetry.py +0 -0
  456. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_themes_registry.py +0 -0
  457. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tool_registry.py +0 -0
  458. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_trust_manager.py +0 -0
  459. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_trust_utils.py +0 -0
  460. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_capabilities.py +0 -0
  461. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_input.py +0 -0
  462. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_select_list.py +0 -0
  463. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_utils.py +0 -0
  464. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_ui_context.py +0 -0
  465. {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_version_check.py +0 -0
@@ -2,3 +2,5 @@ recursive-include tau/builtins *
2
2
  recursive-include docs *
3
3
  include README.md
4
4
  include LICENSE
5
+ global-exclude *.py[cod]
6
+ global-exclude __pycache__
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: tau-coding-agent
3
+ Version: 0.6.1
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).
@@ -60,7 +60,9 @@ tau --model openai/gpt-4o -p "Say hello"
60
60
 
61
61
  ## Google Gemini
62
62
 
63
- Google provides Gemini models with multimodal capabilities.
63
+ Google AI Studio provides API-key access to Gemini models through the Google
64
+ Gen AI SDK. Tau's `google` provider uses the Gemini Developer API; it is
65
+ separate from the `google-vertex` provider, which uses Google Cloud.
64
66
 
65
67
  ### Setup
66
68
 
@@ -75,9 +77,16 @@ export GOOGLE_API_KEY=...
75
77
  ### Verify
76
78
 
77
79
  ```bash
78
- tau --model google/gemini-2.0-flash -p "Say hello"
80
+ tau --model google/gemini-2.5-flash -p "Say hello"
79
81
  ```
80
82
 
83
+ Current Google AI Studio model IDs include:
84
+
85
+ - `gemini-3.5-flash` (stable)
86
+ - `gemini-3.1-flash-lite` (stable)
87
+ - `gemini-3.1-pro-preview` (preview)
88
+ - `gemini-2.5-pro`, `gemini-2.5-flash`, and `gemini-2.5-flash-lite`
89
+
81
90
  ## Mistral AI
82
91
 
83
92
  Mistral offers efficient open-source-based models.
@@ -152,6 +161,17 @@ tau --model ollama/mistral -p "Say hello"
152
161
 
153
162
  ## Switching Providers
154
163
 
164
+ ## Speech-to-Text Timestamps
165
+
166
+ Pass `TimestampGranularity.Word` or `TimestampGranularity.Segment` in
167
+ `STTContext.timestamp_granularities` when using the Python API.
168
+
169
+ - OpenAI `whisper-1` and Groq Whisper models support word and segment timestamps.
170
+ - OpenAI GPT-4o transcription models return plain JSON and do not expose detailed
171
+ timestamps through this API.
172
+ - ElevenLabs Scribe and Sarvam Saaras support word timestamps. Sarvam receives
173
+ `with_timestamps=true` when word timestamps are requested.
174
+
155
175
  ### Command Line
156
176
 
157
177
  Use a specific provider for a single session:
@@ -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/`.
@@ -325,6 +325,9 @@ await runtime.execute_terminal("git status")
325
325
  | `runtime.settings_manager` | `SettingsManager` | Settings access |
326
326
  | `runtime.extension_runtime` | `ExtensionRuntime \| None` | Loaded extensions |
327
327
 
328
+ `ExtensionRuntime.get_extensions()` returns the loaded extensions in
329
+ registration order as a read-only tuple.
330
+
328
331
  ## Listening to Events
329
332
 
330
333
  Subscribe to the hook bus directly to observe what the agent does:
@@ -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:
@@ -63,6 +63,9 @@ Or the short form:
63
63
  tau -r
64
64
  ```
65
65
 
66
+ After resuming, `/new` always starts an empty session; the startup resume
67
+ selection is not reused for later session changes.
68
+
66
69
  ### Browse Sessions
67
70
 
68
71
  Choose from a list of previous sessions interactively:
@@ -39,6 +39,8 @@ Set your default theme in `~/.tau/settings.json` or `.tau/settings.json`:
39
39
  ```
40
40
 
41
41
  Opens an interactive picker. Use ↑↓ to preview, Enter to apply.
42
+ The theme submenu in `/settings` uses the same ↑/↓ live preview. Press Enter to
43
+ apply or Escape to restore the previous theme.
42
44
 
43
45
  ---
44
46
 
@@ -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.
@@ -64,9 +66,11 @@ Commands run in the agent's current working directory.
64
66
 
65
67
  Output is streamed through tool-update events while the command runs. Updates
66
68
  are throttled to at most once every 100 milliseconds, with guaranteed initial
67
- and final updates. Timeout and cancellation terminate the command's complete
68
- process tree. Programs may still buffer their own output; use an unbuffered mode
69
- such as `python -u` when immediate output is required.
69
+ and final updates. The interactive TUI refreshes the existing result block for
70
+ each update; when a long result is collapsed, its newest lines remain visible
71
+ while the command is running. Timeout and cancellation terminate the command's
72
+ complete process tree. Programs may still buffer their own output; use an
73
+ unbuffered mode such as `python -u` when immediate output is required.
70
74
 
71
75
  ### glob
72
76
 
@@ -32,6 +32,14 @@ from tau.tui import (
32
32
  | Overlays | `OverlayOptions`, `OverlayHandle` |
33
33
  | Styling | Theme dataclasses, color helpers, `render_markdown` |
34
34
 
35
+ ### Markdown math
36
+
37
+ `render_markdown` converts inline (`$...$`) and display (`$$...$$`) LaTeX math
38
+ to terminal-readable Unicode text through `pylatexenc`. Display math is placed
39
+ on separate lines. Code spans and fenced code blocks retain their original
40
+ LaTeX source. This is a readable plain-text representation, not fully typeset
41
+ mathematical layout.
42
+
35
43
  ## Minimal Application
36
44
 
37
45
  ```python
@@ -78,15 +86,17 @@ automatically during shutdown.
78
86
  Subclass `Component` to create a reusable view:
79
87
 
80
88
  ```python
81
- from tau.tui import Component, KeyEvent
89
+ from tau.tui import Buffer, Component, KeyEvent, Line, Rect, Span
82
90
 
83
91
 
84
92
  class Counter(Component):
85
93
  def __init__(self) -> None:
86
94
  self.value = 0
87
95
 
88
- def render(self, width: int) -> list[str]:
89
- return [f"Count: {self.value}"[:width]]
96
+ def render_cells(self, area: Rect, buf: Buffer) -> int:
97
+ buf.grow_to(area.y + 1)
98
+ buf.set_line(area.x, area.y, Line([Span(f"Count: {self.value}")]), area.width)
99
+ return 1
90
100
 
91
101
  def handle_input(self, event: object) -> bool:
92
102
  if isinstance(event, KeyEvent) and event.matches("up"):
@@ -95,8 +105,9 @@ class Counter(Component):
95
105
  return False
96
106
  ```
97
107
 
98
- `render()` returns one string per terminal row. Components must respect the
99
- provided width and must not include newline characters inside a returned line.
108
+ `render_cells()` writes styled cells into the provided `Buffer` and returns the
109
+ number of rows written. Components must grow dynamic buffers before writing and
110
+ must respect the provided `Rect`.
100
111
 
101
112
  ## Layout
102
113
 
@@ -106,6 +117,8 @@ provided width and must not include newline characters inside a returned line.
106
117
  - `Columns` creates multi-line fixed and flexible columns.
107
118
  - `Rows` distributes a fixed terminal height across children.
108
119
  - `Constrained` places a child at an absolute or percentage width.
120
+ - `Box` wraps a child `Component` with horizontal/vertical padding and an
121
+ optional background `Style`.
109
122
 
110
123
  ## Focus and Input
111
124
 
@@ -166,7 +179,8 @@ Runtime-aware behavior belongs in `tau.modes.interactive`.
166
179
 
167
180
  This boundary is enforced by `tests/test_tui_public_api.py`.
168
181
 
169
- The renderer retains only the current transcript frame and its current
170
- line-wrapping cache. Unchanged lines reuse width calculations across frames so
171
- streaming updates do not repeatedly parse ANSI styling across the complete
172
- session.
182
+ The renderer retains only the current transcript frame. Styled content that
183
+ exceeds its available width wraps directly into Buffer rows without losing
184
+ content, and reflows when the terminal is resized. Finalized message rows are
185
+ cached as cells so streaming updates do not repeatedly parse ANSI styling
186
+ across the complete session.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tau-coding-agent"
7
- version = "0.5.7"
7
+ version = "0.6.1"
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"
@@ -29,9 +29,12 @@ dependencies = [
29
29
  "pygments==2.20.0",
30
30
  "pathspec==1.1.1",
31
31
  "posthog==7.21.3",
32
+ "pylatexenc==2.10",
32
33
  "gitpython==3.1.50",
33
34
  "grapheme==0.6.0",
34
35
  "arrow==1.4.0",
36
+ "kiwisolver==1.5.0",
37
+ "tiktoken==0.13.0",
35
38
  ]
36
39
 
37
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 = """\