tau-coding-agent 0.4.6__tar.gz → 0.4.7__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.4.6/tau_coding_agent.egg-info → tau_coding_agent-0.4.7}/PKG-INFO +2 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/cli-reference.md +7 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/docs.json +4 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/extensions.md +28 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/index.md +1 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/messages.md +16 -9
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/project-context.md +20 -13
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/python-api.md +26 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/settings.md +16 -4
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/tools.md +34 -18
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/usage.md +13 -3
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/pyproject.toml +2 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/agent/prompt/builder.py +93 -44
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/agent/prompt/types.py +4 -3
- tau_coding_agent-0.4.7/tau/builtins/extensions/btw/__init__.py +303 -0
- tau_coding_agent-0.4.7/tau/builtins/extensions/watch/__init__.py +219 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/models/text.py +42 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/edit.py +12 -4
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/glob.py +7 -3
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/grep.py +6 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/ls.py +7 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/read.py +7 -5
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/terminal.py +4 -4
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/write.py +1 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/console/cli.py +1 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/engine/service.py +16 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/engine/types.py +9 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/engine.py +2 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/anthropic_claude_code.py +9 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/anthropic_messages.py +9 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/anthropic_vertex.py +9 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/service.py +2 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/types.py +1 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/app.py +2 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/appearance.py +85 -69
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/model.py +44 -4
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/config_selector.py +15 -21
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/extension_selector.py +5 -5
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/layout.py +35 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/message_list.py +43 -6
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/model_selector.py +99 -46
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/oauth_selector.py +5 -5
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/overlays.py +201 -30
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/selector_controller.py +12 -5
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/session_selector.py +95 -83
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/settings_selector.py +85 -38
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/theme_selector.py +5 -5
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/thinking_selector.py +3 -4
- tau_coding_agent-0.4.7/tau/modes/interactive/components/voice_selector.py +96 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/session/manager.py +2 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/session/utils.py +33 -25
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/settings/manager.py +14 -3
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/settings/types.py +2 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/markdown.py +17 -4
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/terminal.py +27 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/theme.py +5 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/tui.py +19 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7/tau_coding_agent.egg-info}/PKG-INFO +2 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau_coding_agent.egg-info/SOURCES.txt +8 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau_coding_agent.egg-info/requires.txt +1 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_agent_prompt.py +51 -10
- tau_coding_agent-0.4.7/tests/test_builtin_watch.py +64 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_engine_execution.py +2 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_engine_steering.py +26 -0
- tau_coding_agent-0.4.7/tests/test_model_command.py +72 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_model_selector_modal.py +119 -6
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_selector_controller.py +26 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_session_manager.py +32 -2
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_settings_manager.py +15 -1
- tau_coding_agent-0.4.7/tests/test_subagents_extension.py +267 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_thinking_render.py +22 -1
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_tool_render.py +55 -1
- tau_coding_agent-0.4.7/tests/test_voice_selector.py +46 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/LICENSE +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/MANIFEST.in +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/README.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/IMPLEMENTATION_SUMMARY.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/architecture.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/auth.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/development.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/inference-providers.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/installation.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/project-structure.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/prompts.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/quickstart.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/sessions.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/skills.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/docs/themes.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/setup.cfg +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/extensions/footer/model.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/extensions/loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/extensions/runtime.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/openai_codex_responses.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/openai_responses.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/text/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/message/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/command_palette.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/file_picker.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/runtime/service.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/runtime/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/session/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/autocomplete.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/components/select_list.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/components/text_input.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/ui_context.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/tui/utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/utils/http_proxy.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_builtin_tools.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_editor_protocol.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_extension_api.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_markdown.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_runtime_sdk.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_settings_storage.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_text_input.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_text_llm_invoke.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_theme_loader.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_tui_layout_sizing.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_tui_theme.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.4.6 → tau_coding_agent-0.4.7}/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.4.
|
|
3
|
+
Version: 0.4.7
|
|
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
|
|
@@ -26,6 +26,7 @@ Requires-Dist: pygments==2.20.0
|
|
|
26
26
|
Requires-Dist: pathspec==1.1.1
|
|
27
27
|
Requires-Dist: gitpython==3.1.50
|
|
28
28
|
Requires-Dist: grapheme==0.6.0
|
|
29
|
+
Requires-Dist: arrow==1.4.0
|
|
29
30
|
Provides-Extra: tools
|
|
30
31
|
Requires-Dist: ripgrep>=14.0.0; extra == "tools"
|
|
31
32
|
Dynamic: license-file
|
|
@@ -31,6 +31,13 @@ augment it.
|
|
|
31
31
|
|
|
32
32
|
## Run Modes
|
|
33
33
|
|
|
34
|
+
## Interactive Commands
|
|
35
|
+
|
|
36
|
+
`/watch <url> [question]` loads metadata and available English captions for a
|
|
37
|
+
public video through `yt-dlp`, then sends them to the active model. Install
|
|
38
|
+
`yt-dlp` separately and ensure it is available on `PATH`. Video frames and
|
|
39
|
+
audio transcription are not performed.
|
|
40
|
+
|
|
34
41
|
### Interactive (default)
|
|
35
42
|
|
|
36
43
|
Start the full terminal UI:
|
|
@@ -487,6 +487,34 @@ def register(tau):
|
|
|
487
487
|
| `input` | `text`, `source` | `InputEventResult` | New user message received. `source`: `interactive \| rpc \| extension \| queue`. Return `action="transform"` with `text=` to replace, or `action="handled"` to suppress |
|
|
488
488
|
| `context` | `messages` | `ContextEventResult` | Full message history about to be sent to LLM. Return `messages=` to rewrite it |
|
|
489
489
|
|
|
490
|
+
For dynamic browser or computer-use state that must be refreshed before every
|
|
491
|
+
LLM request without being persisted, return `ephemeral_messages` from a
|
|
492
|
+
`context` handler:
|
|
493
|
+
|
|
494
|
+
```python
|
|
495
|
+
from tau.hooks import ContextEventResult
|
|
496
|
+
from tau.message.types import UserMessage
|
|
497
|
+
|
|
498
|
+
def register(tau):
|
|
499
|
+
@tau.on("context")
|
|
500
|
+
async def inject_state(event, ctx):
|
|
501
|
+
screenshot = await capture_screen()
|
|
502
|
+
return ContextEventResult(
|
|
503
|
+
ephemeral_messages=[
|
|
504
|
+
UserMessage.with_images(
|
|
505
|
+
"Current browser state",
|
|
506
|
+
images=[screenshot],
|
|
507
|
+
)
|
|
508
|
+
]
|
|
509
|
+
)
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
The hook runs before every inference, including after tool execution.
|
|
513
|
+
`ephemeral_messages` must contain only `UserMessage` objects. They are appended
|
|
514
|
+
only to the provider request, are not persisted, and are excluded from
|
|
515
|
+
Anthropic prompt-cache breakpoints. Use `messages=` in the same result to
|
|
516
|
+
replace the stable request context.
|
|
517
|
+
|
|
490
518
|
**Streaming & messages**
|
|
491
519
|
|
|
492
520
|
| Event | Payload fields | Result type | Description |
|
|
@@ -27,6 +27,7 @@ Tau allows you to:
|
|
|
27
27
|
- [Sessions](sessions.md) - Session persistence, branching, compaction, JSONL format
|
|
28
28
|
- [Inference Providers](inference-providers.md) - Supported LLMs and provider setup
|
|
29
29
|
- [Tools](tools.md) - Tool registry, built-in tools, execution model
|
|
30
|
+
- [Project Context Files](project-context.md) - Repository-specific agent instructions
|
|
30
31
|
- [CLI Reference](cli-reference.md) - All command-line options and run modes
|
|
31
32
|
|
|
32
33
|
## Configuration & Customization
|
|
@@ -62,9 +62,14 @@ Output from executing a tool.
|
|
|
62
62
|
}
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
Assistant text and thinking content are rendered as Markdown in the interactive
|
|
66
|
+
TUI, including while content is streaming. Tool results remain plain text unless
|
|
67
|
+
the tool explicitly marks a successful result for Markdown rendering.
|
|
68
|
+
|
|
65
69
|
### System Message
|
|
66
70
|
|
|
67
|
-
Context and instructions for the agent.
|
|
71
|
+
Context and instructions for the agent. Tau constructs this separately from
|
|
72
|
+
persisted session messages and may include trusted project context files.
|
|
68
73
|
|
|
69
74
|
```python
|
|
70
75
|
{
|
|
@@ -145,17 +150,18 @@ Use `@` in the editor to fuzzy-search files.
|
|
|
145
150
|
|
|
146
151
|
## System Instructions
|
|
147
152
|
|
|
148
|
-
Tau loads
|
|
153
|
+
Tau loads project instructions from context files:
|
|
154
|
+
|
|
155
|
+
**Within a Git repository:**
|
|
149
156
|
|
|
150
|
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
157
|
+
- `AGENTS.md` or `CLAUDE.md`, matched case-insensitively
|
|
158
|
+
- One file per directory from the repository root through the current directory
|
|
159
|
+
- Files closer to the current directory take precedence
|
|
153
160
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
- Used as fallback for all projects
|
|
161
|
+
Outside a Git repository, only the current directory is checked. Context files
|
|
162
|
+
are loaded only for trusted projects.
|
|
157
163
|
|
|
158
|
-
Example
|
|
164
|
+
Example `AGENTS.md`:
|
|
159
165
|
|
|
160
166
|
```markdown
|
|
161
167
|
# Project Instructions
|
|
@@ -167,6 +173,7 @@ Example `.agents.md`:
|
|
|
167
173
|
```
|
|
168
174
|
|
|
169
175
|
Instructions are automatically injected into every turn sent to the LLM.
|
|
176
|
+
See [Project Context Files](project-context.md) for complete behavior.
|
|
170
177
|
|
|
171
178
|
## Message Delivery
|
|
172
179
|
|
|
@@ -5,9 +5,13 @@ Tau automatically discovers and includes project-specific instructions from `AGE
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
7
|
When you run Tau in a project directory, it:
|
|
8
|
+
|
|
8
9
|
1. Looks for `AGENTS.md` or `CLAUDE.md` (case-insensitive)
|
|
9
|
-
2.
|
|
10
|
-
3.
|
|
10
|
+
2. Walks from the Git repository root through the current directory
|
|
11
|
+
3. If the project is trusted, includes one context file from each directory
|
|
12
|
+
4. Prioritizes the closest file above parent files, general Tau rules, and tool guidelines
|
|
13
|
+
|
|
14
|
+
Outside a Git repository, Tau checks only the current directory.
|
|
11
15
|
|
|
12
16
|
This is useful for:
|
|
13
17
|
- **Coding standards** — Define how the agent should write code
|
|
@@ -53,13 +57,14 @@ Or use `CLAUDE.md` for the same purpose (they're equivalent).
|
|
|
53
57
|
|
|
54
58
|
### File priority
|
|
55
59
|
|
|
56
|
-
Tau checks for these
|
|
60
|
+
Tau checks for these names case-insensitively, in this order:
|
|
61
|
+
|
|
57
62
|
1. `AGENTS.md`
|
|
58
|
-
2. `
|
|
59
|
-
3. `CLAUDE.md`
|
|
60
|
-
4. `CLAUDE.MD`
|
|
63
|
+
2. `CLAUDE.md`
|
|
61
64
|
|
|
62
|
-
The first one found is used.
|
|
65
|
+
The first one found in each directory is used. When multiple directories provide
|
|
66
|
+
instructions, Tau orders them from the repository root to the current directory.
|
|
67
|
+
The closest file takes precedence if instructions conflict.
|
|
63
68
|
|
|
64
69
|
## Trust & Security
|
|
65
70
|
|
|
@@ -140,7 +145,8 @@ Project-specific guidelines and rules (from AGENTS.md):
|
|
|
140
145
|
|
|
141
146
|
[Content of AGENTS.md here]
|
|
142
147
|
|
|
143
|
-
|
|
148
|
+
Files are ordered from the repository root toward the current directory; later
|
|
149
|
+
files take precedence.
|
|
144
150
|
```
|
|
145
151
|
|
|
146
152
|
The agent sees this and prioritizes project instructions when making decisions.
|
|
@@ -220,14 +226,15 @@ The agent sees this and prioritizes project instructions when making decisions.
|
|
|
220
226
|
## Common Issues
|
|
221
227
|
|
|
222
228
|
**Project context not appearing**
|
|
223
|
-
|
|
224
|
-
-
|
|
229
|
+
|
|
230
|
+
- Check the file exists between the repository root and current directory
|
|
231
|
+
- Verify the filename is `AGENTS.md` or `CLAUDE.md`, in any letter case
|
|
225
232
|
- Check project trust: `tau --approve` or `/trust` command
|
|
226
233
|
- Use `--no-context-files` to confirm it's being loaded
|
|
227
234
|
|
|
228
235
|
**Want to see if it's loaded**
|
|
229
|
-
|
|
230
|
-
-
|
|
236
|
+
|
|
237
|
+
- Inspect the effective system prompt through the Python API or an extension context
|
|
231
238
|
|
|
232
239
|
**Trust decisions not persisting**
|
|
233
240
|
- By default, trust decisions are stored in `~/.tau/trust.json`
|
|
@@ -239,7 +246,7 @@ The agent sees this and prioritizes project instructions when making decisions.
|
|
|
239
246
|
| Approach | When to use | Pros | Cons |
|
|
240
247
|
|----------|-----------|------|------|
|
|
241
248
|
| **AGENTS.md/CLAUDE.md** | Team project guidelines | Lightweight, auto-discovered, version-controlled | Limited to per-project |
|
|
242
|
-
| **Custom prompt (`--system
|
|
249
|
+
| **Custom prompt (`--system`)** | Complete one-off prompt replacement | Flexible | Bypasses generated tools, project context, skills, Git, environment, and append sections |
|
|
243
250
|
| **settings.json** | User/global preferences | Persistent | Not project-specific |
|
|
244
251
|
| **Environment variables** | Sensitive data, deployment-specific | Secure, flexible | Not human-readable |
|
|
245
252
|
|
|
@@ -46,7 +46,7 @@ asyncio.run(main())
|
|
|
46
46
|
| `tools` | `list[Tool]` | Extra tools registered as `"runtime"` source |
|
|
47
47
|
| `tool_allowlist` | `set[str] \| None` | Enable only these built-in, runtime, or extension tool names |
|
|
48
48
|
| `exclude_tools` | `set[str]` | Tool names disabled after applying the allowlist |
|
|
49
|
-
| `system_prompt` | `str` |
|
|
49
|
+
| `system_prompt` | `str` | Complete system-prompt replacement; bypasses generated tools, project context, skills, Git, environment, and append sections |
|
|
50
50
|
| `disable_context_files` | `bool` | Skip AGENTS.md / CLAUDE.md discovery and loading |
|
|
51
51
|
| `project_trusted` | `bool \| None` | Override project trust detection (`None` uses trust-store and policy defaults) |
|
|
52
52
|
| `resource_loader` | `ResourceLoader \| None` | Replace resource discovery and registry loading |
|
|
@@ -451,6 +451,31 @@ await runtime.invoke("What is 2 + 2?")
|
|
|
451
451
|
print(last_response)
|
|
452
452
|
```
|
|
453
453
|
|
|
454
|
+
## Ephemeral Context Injection
|
|
455
|
+
|
|
456
|
+
Browser and computer-use agents can inject current state before every model
|
|
457
|
+
request without persisting it in the session by configuring the engine:
|
|
458
|
+
|
|
459
|
+
```python
|
|
460
|
+
from tau.engine import Agent as Engine, Options as EngineOptions
|
|
461
|
+
from tau.message.types import UserMessage
|
|
462
|
+
|
|
463
|
+
async def current_browser_state() -> list[UserMessage]:
|
|
464
|
+
return [UserMessage.with_images("Current browser state", images=[screenshot])]
|
|
465
|
+
|
|
466
|
+
engine = Engine(
|
|
467
|
+
cwd=Path.cwd(),
|
|
468
|
+
llm=llm,
|
|
469
|
+
tools=tools,
|
|
470
|
+
options=EngineOptions(ephemeral_injection=current_browser_state),
|
|
471
|
+
)
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
The callback runs after context transformation and before each inference,
|
|
475
|
+
including inference after tool execution. Failures are logged and ignored.
|
|
476
|
+
Injected messages are appended only to the request copy. Anthropic prompt-cache
|
|
477
|
+
breakpoints exclude this transient tail.
|
|
478
|
+
|
|
454
479
|
## Example: Batch Processing
|
|
455
480
|
|
|
456
481
|
```python
|
|
@@ -79,8 +79,7 @@ All field names use `snake_case`.
|
|
|
79
79
|
|
|
80
80
|
| Field | Type | Description |
|
|
81
81
|
|-------|------|-------------|
|
|
82
|
-
| `
|
|
83
|
-
| `model` | string | Default model ID, e.g. `"claude-sonnet-4-6"` |
|
|
82
|
+
| `model` | object | Per-modality model selections: `text`, `voice`, `speak`, `image`, and `video` |
|
|
84
83
|
| `thinking_level` | string | Extended thinking budget level (see below) |
|
|
85
84
|
| `transport` | string | Transport layer override (`"streaming"` or `"polling"`) |
|
|
86
85
|
| `enabled_models` | list[string] | Restrict the model picker to these model IDs |
|
|
@@ -88,12 +87,25 @@ All field names use `snake_case`.
|
|
|
88
87
|
|
|
89
88
|
```json
|
|
90
89
|
{
|
|
91
|
-
"
|
|
92
|
-
|
|
90
|
+
"model": {
|
|
91
|
+
"text": {
|
|
92
|
+
"id": "claude-sonnet-4-6",
|
|
93
|
+
"provider": "anthropic"
|
|
94
|
+
},
|
|
95
|
+
"speak": {
|
|
96
|
+
"id": "tts-1",
|
|
97
|
+
"provider": "openai",
|
|
98
|
+
"voice": "coral"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
93
101
|
"thinking_level": "low"
|
|
94
102
|
}
|
|
95
103
|
```
|
|
96
104
|
|
|
105
|
+
Each model reference contains `id` and `provider`. The `speak` reference may
|
|
106
|
+
also contain `voice`; `/model` prompts for it after selecting a text-to-speech
|
|
107
|
+
model that declares supported voices.
|
|
108
|
+
|
|
97
109
|
#### Extended thinking
|
|
98
110
|
|
|
99
111
|
Extended thinking gives the model a private scratchpad — a reasoning trace it works through before producing its response. It trades token budget (and cost) for accuracy on complex tasks like multi-step reasoning, planning, and math.
|
|
@@ -8,13 +8,15 @@ Tau ships with seven built-in tools covering file I/O, search, and shell executi
|
|
|
8
8
|
|
|
9
9
|
### read
|
|
10
10
|
|
|
11
|
-
Read
|
|
12
|
-
|
|
11
|
+
Read a UTF-8 text file. Invalid byte sequences are replaced during decoding.
|
|
12
|
+
Every returned line is prefixed with a content-based hashline anchor in the form
|
|
13
|
+
`<line>:<hash>|<content>`. Duplicate content, including blank lines, can share a
|
|
14
|
+
hash; the line number acts as a proximity hint when `edit` resolves an anchor.
|
|
13
15
|
|
|
14
16
|
| Parameter | Type | Required | Default | Description |
|
|
15
17
|
|-----------|------|----------|---------|-------------|
|
|
16
18
|
| `path` | string | Yes | — | Absolute path to the file to read |
|
|
17
|
-
| `offset` | integer | No | `0` |
|
|
19
|
+
| `offset` | integer | No | `0` | Number of lines to skip; `0` starts at the first line |
|
|
18
20
|
| `limit` | integer | No | `2000` | Maximum number of lines to return |
|
|
19
21
|
|
|
20
22
|
### write
|
|
@@ -24,14 +26,16 @@ Create a new file or overwrite an existing file entirely.
|
|
|
24
26
|
| Parameter | Type | Required | Description |
|
|
25
27
|
|-----------|------|----------|-------------|
|
|
26
28
|
| `path` | string | Yes | Absolute path to write |
|
|
27
|
-
| `content` | string | Yes |
|
|
29
|
+
| `content` | string | Yes | Exact complete UTF-8 text content |
|
|
28
30
|
|
|
29
31
|
### edit
|
|
30
32
|
|
|
31
33
|
Replace an inclusive line range using hashline anchors returned by `read`.
|
|
32
|
-
The content hash
|
|
34
|
+
The content hash can let an anchor survive line insertions or deletions elsewhere
|
|
33
35
|
in the file; when content occurs more than once, its original line number is
|
|
34
|
-
used as a proximity hint
|
|
36
|
+
used as a proximity hint and the closest occurrence is selected. An empty
|
|
37
|
+
`new_content` deletes the selected range. Because the complete file is rewritten,
|
|
38
|
+
an edit may normalize line endings. Edit-result diffs also display hashline anchors:
|
|
35
39
|
removed lines use their old hashes, while added and context lines use current hashes.
|
|
36
40
|
|
|
37
41
|
| Parameter | Type | Required | Default | Description |
|
|
@@ -39,50 +43,55 @@ removed lines use their old hashes, while added and context lines use current ha
|
|
|
39
43
|
| `path` | string | Yes | — | Absolute path to the file |
|
|
40
44
|
| `start_anchor` | string | Yes | — | First line to replace, formatted `<line>:<hash>` |
|
|
41
45
|
| `end_anchor` | string | Yes | — | Last line to replace; use the start anchor for a single-line edit |
|
|
42
|
-
| `new_content` | string | Yes | — |
|
|
46
|
+
| `new_content` | string | Yes | — | UTF-8 text replacing the range; empty text deletes it |
|
|
43
47
|
|
|
44
48
|
### terminal
|
|
45
49
|
|
|
46
|
-
Execute a shell command and return combined stdout + stderr
|
|
50
|
+
Execute a non-interactive shell command and return the combined stdout + stderr
|
|
51
|
+
tail. At most 50 KiB or 2,000 lines are retained.
|
|
47
52
|
|
|
48
53
|
| Parameter | Type | Required | Default | Description |
|
|
49
54
|
|-----------|------|----------|---------|-------------|
|
|
50
|
-
`
|
|
51
|
-
`timeout` | integer | No | `30` | Timeout in seconds (max 600)
|
|
55
|
+
| `cmd` | string | Yes | — | Non-interactive shell command to execute |
|
|
56
|
+
| `timeout` | integer | No | `30` | Timeout in seconds (max 600) |
|
|
52
57
|
|
|
53
58
|
Commands run in the agent's current working directory.
|
|
54
59
|
|
|
55
60
|
### glob
|
|
56
61
|
|
|
57
|
-
Find files matching a glob pattern.
|
|
62
|
+
Find files matching a glob pattern. Patterns are evaluated relative to `path`.
|
|
63
|
+
Ripgrep's default filtering excludes hidden files and files matched by ignore
|
|
64
|
+
rules.
|
|
58
65
|
|
|
59
66
|
Requires `rg` (ripgrep); the tool returns an error when `rg` is unavailable.
|
|
60
67
|
|
|
61
68
|
| Parameter | Type | Required | Default | Description |
|
|
62
69
|
|-----------|------|----------|---------|-------------|
|
|
63
70
|
| `pattern` | string | Yes | — | Glob pattern, e.g. `src/**/*.py` |
|
|
64
|
-
| `path` | string | No | cwd | Base directory
|
|
71
|
+
| `path` | string | No | cwd | Base directory; relative values use Tau's process working directory |
|
|
65
72
|
|
|
66
73
|
### grep
|
|
67
74
|
|
|
68
|
-
Search for a regular expression across files.
|
|
75
|
+
Search for a regular expression across files. Directory searches are recursive.
|
|
76
|
+
Ripgrep's default filtering excludes hidden files and files matched by ignore
|
|
77
|
+
rules.
|
|
69
78
|
|
|
70
79
|
Requires `rg` (ripgrep); the tool returns an error when `rg` is unavailable.
|
|
71
80
|
|
|
72
81
|
| Parameter | Type | Required | Default | Description |
|
|
73
82
|
|-----------|------|----------|---------|-------------|
|
|
74
83
|
| `pattern` | string | Yes | — | Regular expression to search for |
|
|
75
|
-
| `path` | string | No | cwd | File or directory
|
|
84
|
+
| `path` | string | No | cwd | File or directory; relative values use Tau's process working directory |
|
|
76
85
|
| `include` | string | No | `""` | Glob filter for files, e.g. `*.py` (only applies when `path` is a directory) |
|
|
77
86
|
| `case_sensitive` | boolean | No | `true` | Whether the pattern is case-sensitive |
|
|
78
87
|
|
|
79
88
|
### ls
|
|
80
89
|
|
|
81
|
-
List
|
|
90
|
+
List a directory's immediate contents without recursing.
|
|
82
91
|
|
|
83
92
|
| Parameter | Type | Required | Default | Description |
|
|
84
93
|
|-----------|------|----------|---------|-------------|
|
|
85
|
-
| `path` | string | No | cwd | Directory
|
|
94
|
+
| `path` | string | No | cwd | Directory; relative values use Tau's process working directory |
|
|
86
95
|
|
|
87
96
|
---
|
|
88
97
|
|
|
@@ -120,6 +129,11 @@ threshold or `result_expandable=False` to always show their complete rendered
|
|
|
120
129
|
output. Custom renderers should return their complete semantic output and must
|
|
121
130
|
not add expand/collapse hints.
|
|
122
131
|
|
|
132
|
+
Tool results render as plain text by default. A tool can opt an individual
|
|
133
|
+
successful result into Markdown rendering with
|
|
134
|
+
`metadata={"_render_format": "markdown"}`. Tau renders the Markdown before
|
|
135
|
+
applying the standard preview/collapse shell. Error results remain plain text.
|
|
136
|
+
|
|
123
137
|
---
|
|
124
138
|
|
|
125
139
|
## Adding Custom Tools
|
|
@@ -137,7 +151,7 @@ path and committed with an atomic replacement.
|
|
|
137
151
|
|
|
138
152
|
## Tool Constraints
|
|
139
153
|
|
|
140
|
-
Add
|
|
154
|
+
Add an `AGENTS.md` file to your project to give the agent standing instructions about tool usage:
|
|
141
155
|
|
|
142
156
|
```markdown
|
|
143
157
|
# Project Instructions
|
|
@@ -148,7 +162,9 @@ Add a `.agents.md` file to your project root to give the agent standing instruct
|
|
|
148
162
|
- Use `edit` for small changes, `write` for new files
|
|
149
163
|
```
|
|
150
164
|
|
|
151
|
-
Tau searches for
|
|
165
|
+
Tau searches case-insensitively for `AGENTS.md` or `CLAUDE.md` from the Git
|
|
166
|
+
repository root through the current directory. See
|
|
167
|
+
[Project Context Files](project-context.md) for precedence and trust behavior.
|
|
152
168
|
|
|
153
169
|
---
|
|
154
170
|
|
|
@@ -46,7 +46,7 @@ Type `/` to open the command palette. Commands are fuzzy-searchable — type a f
|
|
|
46
46
|
|
|
47
47
|
| Command | Description |
|
|
48
48
|
|---------|-------------|
|
|
49
|
-
| `/model` |
|
|
49
|
+
| `/model` | Pick a model by modality; Speak models with declared voices open a second voice picker |
|
|
50
50
|
| `/theme` | Open the theme picker |
|
|
51
51
|
| `/effort` | Set the thinking effort level |
|
|
52
52
|
|
|
@@ -65,11 +65,16 @@ Type `/` to open the command palette. Commands are fuzzy-searchable — type a f
|
|
|
65
65
|
| `/copy` | Copy the last assistant message to the clipboard |
|
|
66
66
|
| `/reload` | Reload extensions, skills, prompts, and settings |
|
|
67
67
|
| `/settings` | Show current settings |
|
|
68
|
+
| `/watch <url> [question]` | Load public video metadata and captions using `yt-dlp` |
|
|
68
69
|
| `/help` or `/?` | List all commands and keyboard shortcuts |
|
|
69
70
|
| `/quit` or `/q` or `/exit` | Exit tau |
|
|
70
71
|
|
|
71
72
|
Extensions and prompts also appear in the command palette. Type `/` and browse to see everything available.
|
|
72
73
|
|
|
74
|
+
`/watch` requires `yt-dlp` on `PATH`. It reads metadata and English captions
|
|
75
|
+
from public URLs supported by `yt-dlp`; it does not download or inspect video
|
|
76
|
+
frames. When captions are unavailable, the agent receives metadata only.
|
|
77
|
+
|
|
73
78
|
---
|
|
74
79
|
|
|
75
80
|
## Command Details
|
|
@@ -166,8 +171,13 @@ tau --ephemeral # temporary session, nothing saved
|
|
|
166
171
|
|
|
167
172
|
Tau loads context files at startup to give the agent standing instructions. It searches for:
|
|
168
173
|
|
|
169
|
-
1.
|
|
170
|
-
2.
|
|
174
|
+
1. `AGENTS.md` or `CLAUDE.md`, matched case-insensitively
|
|
175
|
+
2. Every directory from the Git repository root through the current directory
|
|
176
|
+
|
|
177
|
+
Outside a Git repository, Tau checks only the current directory. It loads at most
|
|
178
|
+
one context file per directory, preferring `AGENTS.md` over `CLAUDE.md`. Files
|
|
179
|
+
closer to the current directory take precedence over files closer to the repository
|
|
180
|
+
root.
|
|
171
181
|
|
|
172
182
|
Use context files to provide system-level instructions:
|
|
173
183
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tau-coding-agent"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.7"
|
|
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"
|
|
@@ -30,6 +30,7 @@ dependencies = [
|
|
|
30
30
|
"pathspec==1.1.1",
|
|
31
31
|
"gitpython==3.1.50",
|
|
32
32
|
"grapheme==0.6.0",
|
|
33
|
+
"arrow==1.4.0",
|
|
33
34
|
]
|
|
34
35
|
|
|
35
36
|
[project.scripts]
|