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.
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/MANIFEST.in +2 -0
- tau_coding_agent-0.6.1/PKG-INFO +213 -0
- tau_coding_agent-0.6.1/README.md +175 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/inference-providers.md +22 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/installation.md +5 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/python-api.md +3 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/quickstart.md +5 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/sessions.md +3 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/themes.md +2 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/tools.md +9 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/tui.md +23 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/pyproject.toml +4 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/prompt/builder.py +12 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/service.py +28 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/auth/storage.py +4 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/__init__.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/component.py +17 -7
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/tool.py +3 -8
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/btw/__init__.py +15 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/__init__.py +11 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/git.py +15 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/model.py +23 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/__init__.py +3 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/__init__.py +2 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/base.py +25 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/ddgs_engine.py +36 -7
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/exa_engine.py +28 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/jina_engine.py +11 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/engines/tavily_engine.py +15 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/tools/fetch.py +14 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/tools/search.py +61 -13
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/text.py +74 -24
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/edit.py +178 -20
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/glob.py +4 -1
- tau_coding_agent-0.6.1/tau/builtins/tools/grep.py +176 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/read.py +44 -12
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/terminal.py +9 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/utils.py +82 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/write.py +6 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/loader.py +72 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/runtime.py +4 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/service.py +31 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/openai_audio.py +8 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/sarvam_audio.py +8 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/registry.py +14 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/gemini_generate.py +66 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/google_antigravity.py +3 -60
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/google_vertex.py +5 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/mistral_chat.py +2 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/ollama_chat.py +2 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_codex_responses.py +2 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_responses.py +2 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/service.py +10 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/utils.py +71 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/utils.py +1 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/utils.py +1 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/agent_hooks.py +73 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/app.py +17 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/appearance.py +20 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/context.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/command_palette.py +48 -24
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/config_selector.py +72 -40
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/extension_selector.py +24 -38
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/file_picker.py +20 -13
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/layout.py +92 -50
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/message_list.py +335 -66
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/model_selector.py +86 -42
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/oauth_selector.py +39 -42
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/overlays.py +107 -65
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/selector_controller.py +20 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/session_selector.py +91 -36
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/settings_selector.py +121 -48
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/theme_selector.py +29 -30
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/thinking_selector.py +29 -22
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/tree_selector.py +63 -62
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/trust_screen.py +36 -22
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/voice_selector.py +30 -32
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/input_handler.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/ui_context.py +53 -8
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/manager.py +11 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/runtime/service.py +28 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/runtime/types.py +29 -16
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/compaction.py +133 -23
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/utils.py +28 -11
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/telemetry/service.py +5 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/telemetry/types.py +5 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/themes/loader.py +41 -66
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/render.py +8 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/__init__.py +92 -6
- tau_coding_agent-0.6.1/tau/tui/ansi_bridge.py +327 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/autocomplete.py +42 -20
- tau_coding_agent-0.6.1/tau/tui/backend.py +124 -0
- tau_coding_agent-0.6.1/tau/tui/buffer.py +245 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/component.py +141 -137
- tau_coding_agent-0.6.1/tau/tui/components/box.py +118 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/editor.py +6 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/image.py +44 -16
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/select_list.py +106 -58
- tau_coding_agent-0.6.1/tau/tui/components/simple_picker.py +150 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/spinner.py +11 -6
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/text_input.py +32 -20
- tau_coding_agent-0.6.1/tau/tui/components/widget_bridge.py +49 -0
- tau_coding_agent-0.6.1/tau/tui/frame.py +526 -0
- tau_coding_agent-0.6.1/tau/tui/geometry.py +113 -0
- tau_coding_agent-0.6.1/tau/tui/layout.py +244 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/markdown.py +225 -49
- tau_coding_agent-0.6.1/tau/tui/palette.py +91 -0
- tau_coding_agent-0.5.7/tau/tui/tui.py → tau_coding_agent-0.6.1/tau/tui/service.py +147 -356
- tau_coding_agent-0.6.1/tau/tui/style.py +335 -0
- tau_coding_agent-0.6.1/tau/tui/testing.py +45 -0
- tau_coding_agent-0.6.1/tau/tui/text.py +150 -0
- tau_coding_agent-0.6.1/tau/tui/theme.py +214 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/utils.py +17 -0
- tau_coding_agent-0.6.1/tau/tui/widget.py +49 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/__init__.py +136 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/barchart.py +114 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/block.py +157 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/calendar.py +71 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/canvas.py +291 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/chart.py +166 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/clear.py +23 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/gauge.py +67 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/list.py +114 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/paragraph.py +158 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/scrollbar.py +74 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/sparkline.py +55 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/symbols.py +80 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/table.py +128 -0
- tau_coding_agent-0.6.1/tau/tui/widgets/tabs.py +67 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/http_proxy.py +5 -1
- tau_coding_agent-0.6.1/tau_coding_agent.egg-info/PKG-INFO +213 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/SOURCES.txt +43 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/requires.txt +3 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_agent_compaction.py +41 -0
- tau_coding_agent-0.6.1/tests/test_agent_hooks.py +99 -0
- tau_coding_agent-0.6.1/tests/test_ansi_bridge_legacy_image.py +108 -0
- tau_coding_agent-0.6.1/tests/test_ask_user_extension.py +50 -0
- tau_coding_agent-0.6.1/tests/test_audio_transcription_apis.py +119 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_builtin_tools.py +118 -6
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_compaction.py +61 -14
- tau_coding_agent-0.6.1/tests/test_component_buffer_bridge.py +112 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_editor_protocol.py +4 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_extension_api.py +15 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_extension_lifecycle.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_footer_model.py +6 -4
- tau_coding_agent-0.6.1/tests/test_gemini_generate.py +109 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_error_utils.py +6 -0
- tau_coding_agent-0.6.1/tests/test_layout_render_cells.py +112 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_markdown.py +33 -0
- tau_coding_agent-0.6.1/tests/test_mcp_extension.py +183 -0
- tau_coding_agent-0.6.1/tests/test_message_list_frozen.py +387 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_selector_modal.py +14 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_runtime_sdk.py +41 -0
- tau_coding_agent-0.6.1/tests/test_scrollback_raw_writes.py +119 -0
- tau_coding_agent-0.6.1/tests/test_scrollback_terminal.py +270 -0
- tau_coding_agent-0.6.1/tests/test_select_list_render_cells.py +68 -0
- tau_coding_agent-0.6.1/tests/test_selector_controller.py +152 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_storage.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_subagents_extension.py +7 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_text_input.py +20 -14
- tau_coding_agent-0.6.1/tests/test_text_input_render_cells.py +63 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_text_llm_invoke.py +3 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_theme_loader.py +24 -18
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_thinking_render.py +16 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tool_render.py +24 -0
- tau_coding_agent-0.6.1/tests/test_tui_child_rows.py +65 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_layout_sizing.py +27 -19
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_public_api.py +7 -2
- tau_coding_agent-0.6.1/tests/test_tui_renderer.py +137 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_theme.py +43 -32
- tau_coding_agent-0.6.1/tests/test_utils_hashline.py +63 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_voice_selector.py +2 -1
- tau_coding_agent-0.5.7/PKG-INFO +0 -189
- tau_coding_agent-0.5.7/README.md +0 -154
- tau_coding_agent-0.5.7/tau/builtins/tools/grep.py +0 -302
- tau_coding_agent-0.5.7/tau/tui/components/box.py +0 -107
- tau_coding_agent-0.5.7/tau/tui/theme.py +0 -218
- tau_coding_agent-0.5.7/tau_coding_agent.egg-info/PKG-INFO +0 -189
- tau_coding_agent-0.5.7/tests/test_ask_user_extension.py +0 -46
- tau_coding_agent-0.5.7/tests/test_selector_controller.py +0 -62
- tau_coding_agent-0.5.7/tests/test_tui_renderer.py +0 -206
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/LICENSE +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/architecture.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/auth.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/cli-reference.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/creating-tools.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/development.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/docs.json +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/engine.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/extensions.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/index.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/inference.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/messages.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/project-context.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/project-structure.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/prompts.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/settings.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/skills.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/docs/usage.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/setup.cfg +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/manifest.json +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/ask_user/schema.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/manifest.json +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/extensions/web/tools/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/ayu-dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/catppuccin.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/dracula.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/everforest.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/gruvbox.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/horizon.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/kanagawa.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/material-ocean.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/monokai.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/night-owl.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/nord.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/one-dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/rose-pine.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/solarized-dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/themes/tokyo-night.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/cli.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/engine/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/dialect.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/api/video/zai_video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/message/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/session/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/telemetry/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_autocomplete_modifiers.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_escape_behavior.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_dialect.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_peer_extension.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_telemetry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_select_list.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.1}/tests/test_version_check.py +0 -0
|
@@ -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
|
|
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.
|
|
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:
|
|
@@ -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,
|
|
14
|
-
|
|
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.
|
|
68
|
-
|
|
69
|
-
|
|
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
|
|
89
|
-
|
|
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
|
-
`
|
|
99
|
-
|
|
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
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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.
|
|
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 = """\
|