tau-coding-agent 0.5.7__tar.gz → 0.6.0__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.0}/MANIFEST.in +2 -0
- {tau_coding_agent-0.5.7/tau_coding_agent.egg-info → tau_coding_agent-0.6.0}/PKG-INFO +4 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/README.md +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/inference-providers.md +22 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/python-api.md +3 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/sessions.md +3 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/themes.md +2 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/tools.md +5 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/tui.md +23 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/pyproject.toml +3 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/ask_user/__init__.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/ask_user/component.py +23 -7
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/ask_user/tool.py +2 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/btw/__init__.py +15 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/footer/git.py +15 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/footer/model.py +23 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/__init__.py +3 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/engines/ddgs_engine.py +3 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/engines/exa_engine.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/engines/tavily_engine.py +4 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/tools/fetch.py +6 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/tools/search.py +24 -10
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/models/text.py +74 -24
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/edit.py +54 -11
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/grep.py +2 -6
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/read.py +11 -8
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/terminal.py +1 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/utils.py +54 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/extensions/loader.py +65 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/extensions/runtime.py +4 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/openai_audio.py +8 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/sarvam_audio.py +8 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/gemini_generate.py +66 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/google_antigravity.py +3 -60
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/google_vertex.py +5 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/mistral_chat.py +2 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/ollama_chat.py +2 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/openai_codex_responses.py +2 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/openai_responses.py +2 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/utils.py +71 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/utils.py +1 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/agent_hooks.py +72 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/app.py +4 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/appearance.py +20 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/command_palette.py +48 -24
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/config_selector.py +72 -40
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/extension_selector.py +24 -38
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/file_picker.py +20 -13
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/layout.py +66 -47
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/message_list.py +245 -58
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/model_selector.py +86 -42
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/oauth_selector.py +39 -42
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/overlays.py +107 -65
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/selector_controller.py +19 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/session_selector.py +91 -36
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/settings_selector.py +121 -48
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/theme_selector.py +29 -30
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/thinking_selector.py +29 -22
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/tree_selector.py +63 -62
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/trust_screen.py +36 -22
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/voice_selector.py +30 -32
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/ui_context.py +11 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/runtime/service.py +5 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/telemetry/service.py +5 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/telemetry/types.py +5 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/themes/loader.py +41 -66
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tool/render.py +8 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/__init__.py +87 -1
- tau_coding_agent-0.6.0/tau/tui/ansi_bridge.py +327 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/autocomplete.py +42 -20
- tau_coding_agent-0.6.0/tau/tui/backend.py +124 -0
- tau_coding_agent-0.6.0/tau/tui/buffer.py +245 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/component.py +141 -137
- tau_coding_agent-0.6.0/tau/tui/components/box.py +118 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/components/editor.py +6 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/components/image.py +44 -16
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/components/select_list.py +106 -58
- tau_coding_agent-0.6.0/tau/tui/components/simple_picker.py +150 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/components/spinner.py +10 -5
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/components/text_input.py +31 -19
- tau_coding_agent-0.6.0/tau/tui/components/widget_bridge.py +49 -0
- tau_coding_agent-0.6.0/tau/tui/frame.py +526 -0
- tau_coding_agent-0.6.0/tau/tui/geometry.py +113 -0
- tau_coding_agent-0.6.0/tau/tui/layout.py +244 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/markdown.py +107 -25
- tau_coding_agent-0.6.0/tau/tui/palette.py +91 -0
- tau_coding_agent-0.6.0/tau/tui/style.py +335 -0
- tau_coding_agent-0.6.0/tau/tui/testing.py +45 -0
- tau_coding_agent-0.6.0/tau/tui/text.py +150 -0
- tau_coding_agent-0.6.0/tau/tui/theme.py +214 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/tui.py +112 -355
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/utils.py +17 -0
- tau_coding_agent-0.6.0/tau/tui/widget.py +49 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/__init__.py +136 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/barchart.py +114 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/block.py +157 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/calendar.py +71 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/canvas.py +291 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/chart.py +166 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/clear.py +23 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/gauge.py +67 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/list.py +114 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/paragraph.py +158 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/scrollbar.py +74 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/sparkline.py +55 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/symbols.py +80 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/table.py +128 -0
- tau_coding_agent-0.6.0/tau/tui/widgets/tabs.py +67 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/utils/http_proxy.py +5 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0/tau_coding_agent.egg-info}/PKG-INFO +4 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau_coding_agent.egg-info/SOURCES.txt +41 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau_coding_agent.egg-info/requires.txt +2 -0
- tau_coding_agent-0.6.0/tests/test_agent_hooks.py +99 -0
- tau_coding_agent-0.6.0/tests/test_ansi_bridge_legacy_image.py +108 -0
- tau_coding_agent-0.6.0/tests/test_ask_user_extension.py +50 -0
- tau_coding_agent-0.6.0/tests/test_audio_transcription_apis.py +119 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_builtin_tools.py +96 -5
- tau_coding_agent-0.6.0/tests/test_component_buffer_bridge.py +112 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_editor_protocol.py +4 -4
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_extension_api.py +15 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_footer_model.py +6 -4
- tau_coding_agent-0.6.0/tests/test_gemini_generate.py +109 -0
- tau_coding_agent-0.6.0/tests/test_layout_render_cells.py +112 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_markdown.py +33 -0
- tau_coding_agent-0.6.0/tests/test_message_list_frozen.py +387 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_model_selector_modal.py +14 -9
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_runtime_sdk.py +41 -0
- tau_coding_agent-0.6.0/tests/test_scrollback_raw_writes.py +119 -0
- tau_coding_agent-0.6.0/tests/test_scrollback_terminal.py +270 -0
- tau_coding_agent-0.6.0/tests/test_select_list_render_cells.py +68 -0
- tau_coding_agent-0.6.0/tests/test_selector_controller.py +152 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_settings_storage.py +1 -1
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_subagents_extension.py +7 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_text_input.py +20 -14
- tau_coding_agent-0.6.0/tests/test_text_input_render_cells.py +63 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_text_llm_invoke.py +3 -3
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_theme_loader.py +24 -18
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_thinking_render.py +16 -2
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tool_render.py +24 -0
- tau_coding_agent-0.6.0/tests/test_tui_child_rows.py +65 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tui_layout_sizing.py +27 -19
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tui_public_api.py +7 -2
- tau_coding_agent-0.6.0/tests/test_tui_renderer.py +137 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tui_theme.py +43 -32
- tau_coding_agent-0.6.0/tests/test_utils_hashline.py +63 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_voice_selector.py +2 -1
- 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/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.0}/LICENSE +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/architecture.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/auth.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/cli-reference.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/creating-tools.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/development.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/docs.json +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/engine.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/extensions.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/index.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/inference.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/installation.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/messages.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/project-context.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/project-structure.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/prompts.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/quickstart.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/settings.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/skills.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/docs/usage.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/setup.cfg +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/agent/prompt/builder.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/ask_user/manifest.json +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/ask_user/schema.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/engines/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/engines/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/engines/jina_engine.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/manifest.json +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/tools/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/ayu-dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/catppuccin.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/dracula.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/everforest.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/gruvbox.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/horizon.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/kanagawa.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/material-ocean.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/monokai.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/night-owl.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/nord.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/one-dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/rose-pine.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/solarized-dark.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/themes/tokyo-night.yaml +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/console/cli.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/engine/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/dialect.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/api/video/zai_video.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/message/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/runtime/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/session/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/settings/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/settings/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/telemetry/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_autocomplete_modifiers.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_escape_behavior.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_inference_dialect.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_peer_extension.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_telemetry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tui_select_list.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tests/test_version_check.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tau-coding-agent
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: A self-extensible agent CLI with terminal UI, multi-provider LLM support, session management with branching, and a plugin system for tools and commands
|
|
5
5
|
Requires-Python: >=3.12
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -25,9 +25,11 @@ Requires-Dist: pyyaml==6.0.2
|
|
|
25
25
|
Requires-Dist: pygments==2.20.0
|
|
26
26
|
Requires-Dist: pathspec==1.1.1
|
|
27
27
|
Requires-Dist: posthog==7.21.3
|
|
28
|
+
Requires-Dist: pylatexenc==2.10
|
|
28
29
|
Requires-Dist: gitpython==3.1.50
|
|
29
30
|
Requires-Dist: grapheme==0.6.0
|
|
30
31
|
Requires-Dist: arrow==1.4.0
|
|
32
|
+
Requires-Dist: kiwisolver==1.5.0
|
|
31
33
|
Provides-Extra: tools
|
|
32
34
|
Requires-Dist: ripgrep>=14.0.0; extra == "tools"
|
|
33
35
|
Requires-Dist: ast-grep-cli>=0.44.0; extra == "tools"
|
|
@@ -50,7 +52,7 @@ Start a conversation with the agent in the terminal.
|
|
|
50
52
|
### Installation
|
|
51
53
|
|
|
52
54
|
```bash
|
|
53
|
-
|
|
55
|
+
pip install tau-coding-agent
|
|
54
56
|
```
|
|
55
57
|
|
|
56
58
|
Or install from source:
|
|
@@ -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:
|
|
@@ -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:
|
|
@@ -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
|
|
|
@@ -64,9 +64,11 @@ Commands run in the agent's current working directory.
|
|
|
64
64
|
|
|
65
65
|
Output is streamed through tool-update events while the command runs. Updates
|
|
66
66
|
are throttled to at most once every 100 milliseconds, with guaranteed initial
|
|
67
|
-
and final updates.
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
and final updates. The interactive TUI refreshes the existing result block for
|
|
68
|
+
each update; when a long result is collapsed, its newest lines remain visible
|
|
69
|
+
while the command is running. Timeout and cancellation terminate the command's
|
|
70
|
+
complete process tree. Programs may still buffer their own output; use an
|
|
71
|
+
unbuffered mode such as `python -u` when immediate output is required.
|
|
70
72
|
|
|
71
73
|
### glob
|
|
72
74
|
|
|
@@ -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.0"
|
|
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,11 @@ 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",
|
|
35
37
|
]
|
|
36
38
|
|
|
37
39
|
[project.scripts]
|
{tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/ask_user/__init__.py
RENAMED
|
@@ -6,7 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
# Add this directory to sys.path to allow easy resolution of schema, component, and tool.
|
|
7
7
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
8
8
|
|
|
9
|
-
from tool import AskUserTool
|
|
9
|
+
from tool import AskUserTool # type: ignore[import-not-found]
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def register(tau) -> None:
|
{tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/ask_user/component.py
RENAMED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import TYPE_CHECKING, Any
|
|
4
4
|
|
|
5
|
-
from schema import AskUserOption
|
|
5
|
+
from schema import AskUserOption # type: ignore[import-not-found]
|
|
6
6
|
|
|
7
7
|
from tau.tui.component import Component
|
|
8
8
|
from tau.tui.input import InputEvent, KeyEvent
|
|
9
9
|
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from tau.tui.buffer import Buffer
|
|
12
|
+
from tau.tui.geometry import Rect
|
|
13
|
+
|
|
10
14
|
FREEFORM_LABEL = "Type something…"
|
|
11
15
|
|
|
12
16
|
|
|
@@ -81,8 +85,20 @@ class _AskUserComponent(Component):
|
|
|
81
85
|
|
|
82
86
|
# ── Render ────────────────────────────────────────────────────────────
|
|
83
87
|
|
|
84
|
-
def
|
|
85
|
-
from tau.modes.interactive.components.overlays import
|
|
88
|
+
def render_cells(self, area: Rect, buf: Buffer) -> int:
|
|
89
|
+
from tau.modes.interactive.components.overlays import _box_cells
|
|
90
|
+
from tau.tui.ansi_bridge import parse_ansi_wrapped_into
|
|
91
|
+
from tau.tui.buffer import Buffer as _Buffer
|
|
92
|
+
from tau.tui.geometry import Rect as _Rect
|
|
93
|
+
|
|
94
|
+
inner_w = max(1, area.width - 4)
|
|
95
|
+
|
|
96
|
+
def _boxed(lines: list[str]) -> int:
|
|
97
|
+
inner_buf = _Buffer.empty(_Rect(0, 0, inner_w, 0))
|
|
98
|
+
row = 0
|
|
99
|
+
for line in lines:
|
|
100
|
+
row += parse_ansi_wrapped_into(inner_buf, 0, row, line, inner_w)
|
|
101
|
+
return _box_cells(buf, area, inner_buf, row, "", None)
|
|
86
102
|
|
|
87
103
|
inner: list[str] = []
|
|
88
104
|
if self._context:
|
|
@@ -120,14 +136,14 @@ class _AskUserComponent(Component):
|
|
|
120
136
|
" \x1b[2mEnter to submit · \\+Enter or Shift+Enter for newline · "
|
|
121
137
|
f"{back}\x1b[0m"
|
|
122
138
|
)
|
|
123
|
-
return
|
|
139
|
+
return _boxed(inner)
|
|
124
140
|
|
|
125
141
|
if self._mode == "freeform":
|
|
126
142
|
inner.append(f" {self._freeform_value}█")
|
|
127
143
|
inner.append("")
|
|
128
144
|
back = "Esc to cancel" if not self._options else "Esc to go back"
|
|
129
145
|
inner.append(f" \x1b[2mEnter to submit · {back}\x1b[0m")
|
|
130
|
-
return
|
|
146
|
+
return _boxed(inner)
|
|
131
147
|
|
|
132
148
|
for i in range(self._row_count):
|
|
133
149
|
is_freeform_row = i == self._freeform_index
|
|
@@ -164,7 +180,7 @@ class _AskUserComponent(Component):
|
|
|
164
180
|
if self._allow_multiple:
|
|
165
181
|
hints.insert(1, "Space toggle")
|
|
166
182
|
inner.append(" \x1b[2m" + " · ".join(hints) + "\x1b[0m")
|
|
167
|
-
return
|
|
183
|
+
return _boxed(inner)
|
|
168
184
|
|
|
169
185
|
# ── Input ─────────────────────────────────────────────────────────────
|
|
170
186
|
|
|
@@ -3,8 +3,8 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
|
-
from component import _AskUserComponent
|
|
7
|
-
from schema import AskUserParams, normalize_options
|
|
6
|
+
from component import _AskUserComponent # type: ignore[import-not-found]
|
|
7
|
+
from schema import AskUserParams, normalize_options # type: ignore[import-not-found]
|
|
8
8
|
|
|
9
9
|
from tau.tool.render import call_line
|
|
10
10
|
from tau.tool.types import (
|
|
@@ -21,6 +21,8 @@ if TYPE_CHECKING:
|
|
|
21
21
|
from tau.extensions.api import ExtensionAPI
|
|
22
22
|
from tau.extensions.context import ExtensionContext
|
|
23
23
|
from tau.inference.api.text.service import TextLLM
|
|
24
|
+
from tau.tui.buffer import Buffer
|
|
25
|
+
from tau.tui.geometry import Rect
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
# ── Widget component ───────────────────────────────────────────────────────────
|
|
@@ -35,11 +37,20 @@ class BtwWidget(Component):
|
|
|
35
37
|
def set_lines(self, lines: list[str]) -> None:
|
|
36
38
|
self._lines = list(lines)
|
|
37
39
|
|
|
38
|
-
def
|
|
39
|
-
from tau.modes.interactive.components.overlays import
|
|
40
|
+
def render_cells(self, area: Rect, buf: Buffer) -> int:
|
|
41
|
+
from tau.modes.interactive.components.overlays import _box_cells
|
|
42
|
+
from tau.tui.ansi_bridge import parse_ansi_wrapped_into
|
|
43
|
+
from tau.tui.buffer import Buffer as _Buffer
|
|
44
|
+
from tau.tui.geometry import Rect as _Rect
|
|
40
45
|
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
inner_w = max(1, area.width - 4)
|
|
47
|
+
inner = _Buffer.empty(_Rect(0, 0, inner_w, 0))
|
|
48
|
+
lines = list(self._lines) or [" (empty)"]
|
|
49
|
+
row = 0
|
|
50
|
+
for line in lines:
|
|
51
|
+
row += parse_ansi_wrapped_into(inner, 0, row, line, inner_w)
|
|
52
|
+
|
|
53
|
+
return _box_cells(buf, area, inner, row, "btw", None)
|
|
43
54
|
|
|
44
55
|
def handle_input(self, event: Any) -> bool:
|
|
45
56
|
return False # never captures input — editor stays focused
|
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from tau.tui.component import Component
|
|
8
|
+
from tau.tui.style import Style
|
|
9
|
+
from tau.tui.text import Line, Span
|
|
10
|
+
|
|
5
11
|
from .utils import read_branch, shorten_home
|
|
6
12
|
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from tau.tui.buffer import Buffer
|
|
15
|
+
from tau.tui.geometry import Rect
|
|
7
16
|
|
|
8
|
-
|
|
17
|
+
|
|
18
|
+
class GitBadge(Component):
|
|
9
19
|
"""Renders ``~/path (branch)`` for the footer Row left slot."""
|
|
10
20
|
|
|
11
21
|
def __init__(self) -> None:
|
|
@@ -16,10 +26,10 @@ class GitBadge:
|
|
|
16
26
|
display = shorten_home(cwd)
|
|
17
27
|
self._text = f"{display} ({branch})" if branch else display
|
|
18
28
|
|
|
19
|
-
def
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return
|
|
29
|
+
def render_cells(self, area: Rect, buf: Buffer) -> int:
|
|
30
|
+
buf.grow_to(area.y + 1)
|
|
31
|
+
buf.set_line(area.x, area.y, Line([Span(self._text, Style().dim())]), area.width)
|
|
32
|
+
return 1
|
|
23
33
|
|
|
24
34
|
def handle_input(self, event: object) -> bool: # noqa: ARG002
|
|
25
35
|
return False
|
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
from tau.tui.component import Component
|
|
8
|
+
from tau.tui.style import Style
|
|
9
|
+
from tau.tui.text import Line, Span
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from tau.tui.buffer import Buffer
|
|
13
|
+
from tau.tui.geometry import Rect
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ModelBadge(Component):
|
|
7
17
|
"""Renders ``(provider) model ∙ Level|context%`` for the footer Row right slot.
|
|
8
18
|
|
|
9
19
|
The ``∙ Level`` segment only appears when the active model supports
|
|
@@ -73,21 +83,25 @@ class ModelBadge:
|
|
|
73
83
|
else:
|
|
74
84
|
self.update_context_from_ctx(ctx)
|
|
75
85
|
|
|
76
|
-
def
|
|
77
|
-
from tau.tui.utils import DIM, RESET
|
|
78
|
-
|
|
86
|
+
def _text(self) -> str:
|
|
79
87
|
if not self._provider and not self._model:
|
|
80
|
-
return
|
|
81
|
-
|
|
88
|
+
return ""
|
|
82
89
|
left = f"({self._provider}) {self._model}" if self._provider else self._model
|
|
83
90
|
if self._thinking and self._thinking_level and self._thinking_level != "off":
|
|
84
91
|
left += f" ∙ {self._thinking_level.title()}"
|
|
85
|
-
|
|
86
92
|
if self._context_window > 0 and self._tokens > 0:
|
|
87
93
|
pct = self._tokens / self._context_window * 100
|
|
88
94
|
label = f"{pct:.1f}%" if pct < 1 else f"{int(round(pct))}%"
|
|
89
|
-
return
|
|
90
|
-
return
|
|
95
|
+
return f"{left}|{label}"
|
|
96
|
+
return left
|
|
97
|
+
|
|
98
|
+
def render_cells(self, area: Rect, buf: Buffer) -> int:
|
|
99
|
+
text = self._text()
|
|
100
|
+
if not text:
|
|
101
|
+
return 0
|
|
102
|
+
buf.grow_to(area.y + 1)
|
|
103
|
+
buf.set_line(area.x, area.y, Line([Span(text, Style().dim())]), area.width)
|
|
104
|
+
return 1
|
|
91
105
|
|
|
92
106
|
def handle_input(self, event: object) -> bool: # noqa: ARG002
|
|
93
107
|
return False
|
|
@@ -40,9 +40,9 @@ from pathlib import Path
|
|
|
40
40
|
|
|
41
41
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
42
42
|
|
|
43
|
-
from engines import build_engine
|
|
44
|
-
from tools.fetch import WebFetchTool
|
|
45
|
-
from tools.search import WebSearchTool
|
|
43
|
+
from engines import build_engine # type: ignore[import-not-found]
|
|
44
|
+
from tools.fetch import WebFetchTool # type: ignore[import-not-found]
|
|
45
|
+
from tools.search import WebSearchTool # type: ignore[import-not-found]
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
def register(tau) -> None:
|
{tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/engines/ddgs_engine.py
RENAMED
|
@@ -27,7 +27,7 @@ class DDGSearchEngine(BaseSearchEngine):
|
|
|
27
27
|
region, safe = self._region, self._safesearch
|
|
28
28
|
|
|
29
29
|
if mode is SearchMode.books:
|
|
30
|
-
from ddgs import DDGS
|
|
30
|
+
from ddgs import DDGS # type: ignore[import-not-found]
|
|
31
31
|
|
|
32
32
|
raw = await asyncio.to_thread(
|
|
33
33
|
lambda: DDGS().books(query, max_results=max_results) or []
|
|
@@ -43,7 +43,7 @@ class DDGSearchEngine(BaseSearchEngine):
|
|
|
43
43
|
for r in raw
|
|
44
44
|
]
|
|
45
45
|
|
|
46
|
-
from asyncddgs import aDDGS
|
|
46
|
+
from asyncddgs import aDDGS # type: ignore[import-not-found]
|
|
47
47
|
|
|
48
48
|
async with aDDGS() as d:
|
|
49
49
|
match mode:
|
|
@@ -106,7 +106,7 @@ class DDGSearchEngine(BaseSearchEngine):
|
|
|
106
106
|
]
|
|
107
107
|
|
|
108
108
|
async def fetch(self, url: str, timeout: int) -> str:
|
|
109
|
-
from ddgs import DDGS
|
|
109
|
+
from ddgs import DDGS # type: ignore[import-not-found]
|
|
110
110
|
|
|
111
111
|
def _fetch() -> str:
|
|
112
112
|
ddgs = DDGS(timeout=timeout)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
"""Tavily engine (LLM-oriented search, https://tavily.com).
|
|
1
|
+
"""Tavily engine (LLM-oriented search, https://tavily.com).
|
|
2
|
+
Requires an API key + ``tavily-python``.
|
|
3
|
+
"""
|
|
2
4
|
|
|
3
5
|
from __future__ import annotations
|
|
4
6
|
|
|
@@ -20,7 +22,7 @@ class TavilySearchEngine(BaseSearchEngine):
|
|
|
20
22
|
|
|
21
23
|
def _get_client(self):
|
|
22
24
|
if self._client is None:
|
|
23
|
-
from tavily import TavilyClient
|
|
25
|
+
from tavily import TavilyClient # type: ignore[import-not-found]
|
|
24
26
|
|
|
25
27
|
self._client = TavilyClient(api_key=self._api_key)
|
|
26
28
|
return self._client
|
{tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/tools/fetch.py
RENAMED
|
@@ -71,8 +71,12 @@ def _human_size(n: int) -> str:
|
|
|
71
71
|
def _render_web_fetch(content: str, opts: Any) -> list[str]:
|
|
72
72
|
# Style via the theme passed on the render options — the stable surface for
|
|
73
73
|
# extensions — rather than importing ANSI codes from Tau internals.
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
from tau.tui.style import Style, apply_style
|
|
75
|
+
|
|
76
|
+
error_style = getattr(opts.theme, "error", Style())
|
|
77
|
+
|
|
78
|
+
def error(text: str) -> str:
|
|
79
|
+
return apply_style(error_style, text)
|
|
76
80
|
|
|
77
81
|
if opts.is_error:
|
|
78
82
|
return [error(content.strip())]
|
{tau_coding_agent-0.5.7 → tau_coding_agent-0.6.0}/tau/builtins/extensions/web/tools/search.py
RENAMED
|
@@ -2,8 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
|
-
from engines import BaseSearchEngine
|
|
6
|
-
from engines import SearchMode as _SearchMode
|
|
5
|
+
from engines import BaseSearchEngine # type: ignore[import-not-found]
|
|
6
|
+
from engines import SearchMode as _SearchMode # type: ignore[import-not-found]
|
|
7
7
|
from pydantic import BaseModel, Field
|
|
8
8
|
|
|
9
9
|
from tau.tool.render import call_line
|
|
@@ -42,7 +42,7 @@ class _WebSearchSchema(BaseModel):
|
|
|
42
42
|
)
|
|
43
43
|
max_results: int = Field(
|
|
44
44
|
default=10,
|
|
45
|
-
description="
|
|
45
|
+
description=("Results to return (default 10). Increase to 20+ for broader coverage."),
|
|
46
46
|
examples=[10, 20],
|
|
47
47
|
)
|
|
48
48
|
|
|
@@ -70,14 +70,18 @@ def _result_lines(r: dict, mode: _SearchMode) -> tuple[str, str]:
|
|
|
70
70
|
def _render_web_search(content: str, opts: Any) -> list[str]:
|
|
71
71
|
# Style via the theme on the render options (stable extension surface)
|
|
72
72
|
# instead of importing ANSI codes from Tau internals.
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
from tau.tui.style import Style, apply_style
|
|
74
|
+
|
|
75
|
+
muted_style = getattr(opts.theme, "muted", Style())
|
|
76
|
+
|
|
77
|
+
def muted(text: str) -> str:
|
|
78
|
+
return apply_style(muted_style, text)
|
|
75
79
|
|
|
76
80
|
metadata = opts.metadata or {}
|
|
77
|
-
query = metadata.get("query", "")
|
|
78
81
|
mode = metadata.get("mode", "text")
|
|
79
82
|
result_count = metadata.get("result_count", 0)
|
|
80
83
|
results = metadata.get("results", [])
|
|
84
|
+
results = metadata.get("results", [])
|
|
81
85
|
|
|
82
86
|
mode_tag = f" {muted(mode)}" if mode != "text" else ""
|
|
83
87
|
result_word = "result" if result_count == 1 else "results"
|
|
@@ -132,7 +136,10 @@ class WebSearchTool(Tool):
|
|
|
132
136
|
render_result=_render_web_search,
|
|
133
137
|
render_call=_render_web_search_call,
|
|
134
138
|
render_shell="default",
|
|
135
|
-
prompt_guidelines=
|
|
139
|
+
prompt_guidelines=(
|
|
140
|
+
"Use for current information not in the codebase. "
|
|
141
|
+
"Follow up with web_fetch to read a full page from the results."
|
|
142
|
+
),
|
|
136
143
|
)
|
|
137
144
|
|
|
138
145
|
async def execute(
|
|
@@ -150,10 +157,11 @@ class WebSearchTool(Tool):
|
|
|
150
157
|
max_results = invocation.params.get("max_results", 10)
|
|
151
158
|
|
|
152
159
|
if not self._engine.supports(mode):
|
|
160
|
+
modes_list = ", ".join(sorted(m.value for m in self._engine.supported_modes))
|
|
153
161
|
return ToolResult.error(
|
|
154
162
|
invocation.id,
|
|
155
163
|
f"The '{self._engine.name}' engine does not support '{mode}' mode. "
|
|
156
|
-
f"Supported modes: {
|
|
164
|
+
f"Supported modes: {modes_list}.",
|
|
157
165
|
)
|
|
158
166
|
|
|
159
167
|
try:
|
|
@@ -171,8 +179,14 @@ class WebSearchTool(Tool):
|
|
|
171
179
|
}
|
|
172
180
|
|
|
173
181
|
if not results:
|
|
174
|
-
return ToolResult.ok(
|
|
182
|
+
return ToolResult.ok(
|
|
183
|
+
invocation.id,
|
|
184
|
+
f"No results found for: {query}",
|
|
185
|
+
metadata=metadata,
|
|
186
|
+
)
|
|
175
187
|
|
|
176
188
|
return ToolResult.ok(
|
|
177
|
-
invocation.id,
|
|
189
|
+
invocation.id,
|
|
190
|
+
_format_results(mode, query, results),
|
|
191
|
+
metadata=metadata,
|
|
178
192
|
)
|