tau-coding-agent 0.4.8__tar.gz → 0.5.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.4.8/tau_coding_agent.egg-info → tau_coding_agent-0.5.0}/PKG-INFO +6 -6
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/README.md +5 -5
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/architecture.md +1 -1
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/cli-reference.md +2 -2
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/development.md +13 -26
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/extension-settings.md +1 -1
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/extensions.md +1 -1
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/http-proxy.md +9 -6
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/inference-providers.md +11 -22
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/messages.md +1 -1
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/project-structure.md +6 -6
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/python-api.md +1 -1
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/quickstart.md +3 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/sessions.md +9 -7
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/settings.md +23 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/skills.md +11 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/usage.md +6 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/pyproject.toml +1 -1
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/models/audio.py +10 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/models/image.py +19 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/models/text.py +228 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/models/video.py +65 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/providers/audio.py +6 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/providers/image.py +6 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/providers/text.py +6 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/providers/video.py +6 -0
- tau_coding_agent-0.5.0/tau/builtins/skills/skill-creator/LICENSE.txt +13 -0
- tau_coding_agent-0.5.0/tau/builtins/skills/skill-creator/SKILL.md +153 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/video/builtins.py +1 -0
- tau_coding_agent-0.5.0/tau/inference/api/video/zai_video.py +139 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/appearance.py +8 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/runtime/service.py +18 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/settings/manager.py +15 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/settings/types.py +1 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/markdown.py +33 -9
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/tui.py +15 -3
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/utils.py +40 -4
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/utils/http_proxy.py +4 -2
- tau_coding_agent-0.5.0/tau/utils/telemetry.py +42 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0/tau_coding_agent.egg-info}/PKG-INFO +6 -6
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau_coding_agent.egg-info/SOURCES.txt +5 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_markdown.py +30 -14
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_settings_manager.py +7 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_skills_registry.py +14 -0
- tau_coding_agent-0.5.0/tests/test_telemetry.py +75 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tui_renderer.py +33 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/LICENSE +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/MANIFEST.in +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/auth.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/docs.json +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/index.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/installation.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/project-context.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/prompts.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/themes.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/docs/tools.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/setup.cfg +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/agent/prompt/builder.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/extensions/btw/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/extensions/footer/model.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/edit.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/grep.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/read.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/terminal.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/console/cli.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/engine/service.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/extensions/loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/extensions/runtime.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/dialect.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/openai_codex_responses.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/openai_responses.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/service.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/text/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/message/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/app.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/command_palette.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/config_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/extension_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/file_picker.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/layout.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/message_list.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/model_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/oauth_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/overlays.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/selector_controller.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/session_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/settings_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/theme_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/thinking_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/components/voice_selector.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/runtime/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/session/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/autocomplete.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/components/select_list.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/components/text_input.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/theme.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/tui/ui_context.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau_coding_agent.egg-info/requires.txt +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_builtin_tools.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_editor_protocol.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_escape_behavior.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_extension_api.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_inference_dialect.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_model_selector_modal.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_peer_extension.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_runtime_sdk.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_selector_controller.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_settings_storage.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_subagents_extension.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_text_input.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_text_llm_invoke.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_theme_loader.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_thinking_render.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tool_render.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tui_layout_sizing.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tui_select_list.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tui_theme.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_version_check.py +0 -0
- {tau_coding_agent-0.4.8 → tau_coding_agent-0.5.0}/tests/test_voice_selector.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.5.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
|
|
@@ -75,7 +75,7 @@ tau # Interactive mode
|
|
|
75
75
|
tau --resume # Resume most recent session
|
|
76
76
|
tau --model claude-sonnet-4-6 # Use specific model
|
|
77
77
|
tau --print "Summarize this repo" # One-shot mode
|
|
78
|
-
tau
|
|
78
|
+
tau --provider anthropic --print "Explain this code" # Print mode with provider
|
|
79
79
|
tau --mode rpc # RPC mode for IDE extensions
|
|
80
80
|
```
|
|
81
81
|
|
|
@@ -83,13 +83,13 @@ tau --mode rpc # RPC mode for IDE extensions
|
|
|
83
83
|
|
|
84
84
|
## Features
|
|
85
85
|
|
|
86
|
-
- **Multi-provider LLM support** — Anthropic
|
|
86
|
+
- **Multi-provider LLM support** — Anthropic, OpenAI, Google Gemini, Mistral AI, Ollama, Groq, xAI, AWS Bedrock, OpenRouter, Z.ai, and more
|
|
87
87
|
- **Terminal UI** — Built-in chat interface with syntax highlighting, markdown rendering, and keyboard navigation
|
|
88
88
|
- **Rich media support** — Work with text files, images, audio files, and video files via file references or clipboard input
|
|
89
89
|
- **Session management** — Persistent sessions with branching, forking, and resuming capabilities
|
|
90
|
-
- **Tool execution** — Built-in tools (terminal, file I/O,
|
|
90
|
+
- **Tool execution** — Built-in tools (terminal, file I/O, search) with full user permissions and extensibility
|
|
91
91
|
- **Plugin system** — Add custom tools, slash commands, hooks, themes, and skills without modifying core code
|
|
92
|
-
- **
|
|
92
|
+
- **Themes** — Dark and light base themes, customizable and extensible via YAML
|
|
93
93
|
- **Context management** — Automatic context compaction and branch summarization for long conversations
|
|
94
94
|
- **Python API** — Embed Tau in your own applications programmatically
|
|
95
95
|
- **Multiple run modes** — Interactive TUI, print mode (one-shot), JSON event stream, and JSON-RPC for IDE integration
|
|
@@ -174,7 +174,7 @@ See [SECURITY.md](SECURITY.md) for detailed practices and vulnerability reportin
|
|
|
174
174
|
```bash
|
|
175
175
|
python -m pytest # Run tests
|
|
176
176
|
pyright tau/ # Type checking
|
|
177
|
-
python -m tau
|
|
177
|
+
python -m tau # Launch from source
|
|
178
178
|
```
|
|
179
179
|
|
|
180
180
|
See [Development Setup](docs/development.md) for detailed instructions.
|
|
@@ -41,7 +41,7 @@ tau # Interactive mode
|
|
|
41
41
|
tau --resume # Resume most recent session
|
|
42
42
|
tau --model claude-sonnet-4-6 # Use specific model
|
|
43
43
|
tau --print "Summarize this repo" # One-shot mode
|
|
44
|
-
tau
|
|
44
|
+
tau --provider anthropic --print "Explain this code" # Print mode with provider
|
|
45
45
|
tau --mode rpc # RPC mode for IDE extensions
|
|
46
46
|
```
|
|
47
47
|
|
|
@@ -49,13 +49,13 @@ tau --mode rpc # RPC mode for IDE extensions
|
|
|
49
49
|
|
|
50
50
|
## Features
|
|
51
51
|
|
|
52
|
-
- **Multi-provider LLM support** — Anthropic
|
|
52
|
+
- **Multi-provider LLM support** — Anthropic, OpenAI, Google Gemini, Mistral AI, Ollama, Groq, xAI, AWS Bedrock, OpenRouter, Z.ai, and more
|
|
53
53
|
- **Terminal UI** — Built-in chat interface with syntax highlighting, markdown rendering, and keyboard navigation
|
|
54
54
|
- **Rich media support** — Work with text files, images, audio files, and video files via file references or clipboard input
|
|
55
55
|
- **Session management** — Persistent sessions with branching, forking, and resuming capabilities
|
|
56
|
-
- **Tool execution** — Built-in tools (terminal, file I/O,
|
|
56
|
+
- **Tool execution** — Built-in tools (terminal, file I/O, search) with full user permissions and extensibility
|
|
57
57
|
- **Plugin system** — Add custom tools, slash commands, hooks, themes, and skills without modifying core code
|
|
58
|
-
- **
|
|
58
|
+
- **Themes** — Dark and light base themes, customizable and extensible via YAML
|
|
59
59
|
- **Context management** — Automatic context compaction and branch summarization for long conversations
|
|
60
60
|
- **Python API** — Embed Tau in your own applications programmatically
|
|
61
61
|
- **Multiple run modes** — Interactive TUI, print mode (one-shot), JSON event stream, and JSON-RPC for IDE integration
|
|
@@ -140,7 +140,7 @@ See [SECURITY.md](SECURITY.md) for detailed practices and vulnerability reportin
|
|
|
140
140
|
```bash
|
|
141
141
|
python -m pytest # Run tests
|
|
142
142
|
pyright tau/ # Type checking
|
|
143
|
-
python -m tau
|
|
143
|
+
python -m tau # Launch from source
|
|
144
144
|
```
|
|
145
145
|
|
|
146
146
|
See [Development Setup](docs/development.md) for detailed instructions.
|
|
@@ -219,7 +219,7 @@ Tools are executed in a sandboxed environment:
|
|
|
219
219
|
6. Result is serialized and added to context
|
|
220
220
|
```
|
|
221
221
|
|
|
222
|
-
Built-in tools (
|
|
222
|
+
Built-in tools (terminal, read, write, edit, glob, grep, ls) are enabled by default.
|
|
223
223
|
`RuntimeConfig` can allow or exclude tools by name. Custom tools are registered
|
|
224
224
|
via extensions or passed directly to the runtime.
|
|
225
225
|
|
|
@@ -206,8 +206,8 @@ Events do **not** have an `id` field. Only responses do.
|
|
|
206
206
|
|
|
207
207
|
| Command | Key fields | Description |
|
|
208
208
|
|---------|-----------|-------------|
|
|
209
|
-
| `
|
|
210
|
-
| `
|
|
209
|
+
| `terminal` | `command` (required), `excludeFromContext?` | Run a shell command; output is added to the next LLM context |
|
|
210
|
+
| `abort_terminal` | — | Abort a running terminal subprocess |
|
|
211
211
|
|
|
212
212
|
##### Session
|
|
213
213
|
|
|
@@ -128,40 +128,30 @@ ruff format tau/
|
|
|
128
128
|
4. Test manually:
|
|
129
129
|
```bash
|
|
130
130
|
tau -p "test prompt"
|
|
131
|
-
tau --list-models
|
|
132
131
|
```
|
|
133
132
|
|
|
134
133
|
## Testing
|
|
135
134
|
|
|
136
135
|
### Test Structure
|
|
137
136
|
|
|
138
|
-
Tests are organized by module:
|
|
137
|
+
Tests are organized by module, with granular filenames per submodule:
|
|
139
138
|
|
|
140
139
|
```text
|
|
141
140
|
tests/
|
|
142
|
-
├──
|
|
143
|
-
├──
|
|
144
|
-
├──
|
|
145
|
-
|
|
141
|
+
├── test_agent_compaction.py
|
|
142
|
+
├── test_agent_prompt.py
|
|
143
|
+
├── test_agent_types.py
|
|
144
|
+
├── test_inference_dialect.py
|
|
145
|
+
├── test_inference_types.py
|
|
146
|
+
├── test_engine_execution.py
|
|
147
|
+
├── test_engine_steering.py
|
|
148
|
+
├── test_tui_renderer.py
|
|
149
|
+
└── ...
|
|
146
150
|
```
|
|
147
151
|
|
|
148
152
|
### Writing Tests
|
|
149
153
|
|
|
150
|
-
Use pytest
|
|
151
|
-
|
|
152
|
-
```python
|
|
153
|
-
import pytest
|
|
154
|
-
from tau.agent import Agent
|
|
155
|
-
|
|
156
|
-
def test_agent_creation():
|
|
157
|
-
agent = Agent(client=MockClient())
|
|
158
|
-
assert agent is not None
|
|
159
|
-
|
|
160
|
-
def test_agent_run():
|
|
161
|
-
agent = Agent(client=MockClient())
|
|
162
|
-
result = agent.run("test prompt")
|
|
163
|
-
assert "result" in result.lower()
|
|
164
|
-
```
|
|
154
|
+
Use pytest, following the existing patterns in `tests/`.
|
|
165
155
|
|
|
166
156
|
### Running Tests
|
|
167
157
|
|
|
@@ -172,11 +162,8 @@ python -m pytest
|
|
|
172
162
|
# Run with verbose output
|
|
173
163
|
python -m pytest -v
|
|
174
164
|
|
|
175
|
-
# Run
|
|
176
|
-
python -m pytest
|
|
177
|
-
|
|
178
|
-
# Run specific test file
|
|
179
|
-
python -m pytest tests/test_agent.py
|
|
165
|
+
# Run a specific module's tests
|
|
166
|
+
python -m pytest tests/test_agent_compaction.py
|
|
180
167
|
```
|
|
181
168
|
|
|
182
169
|
## Debugging
|
|
@@ -445,7 +445,7 @@ Use the explicit `group` type when you want the sub-panel to have a header label
|
|
|
445
445
|
#### Basic example
|
|
446
446
|
|
|
447
447
|
```python
|
|
448
|
-
from tau.
|
|
448
|
+
from tau.modes.interactive.components.settings_selector import SettingItem
|
|
449
449
|
|
|
450
450
|
def register(tau):
|
|
451
451
|
def on_change(key, value):
|
|
@@ -1328,7 +1328,7 @@ ctx.ui.paste_to_editor("@file.py ") # insert at cursor position
|
|
|
1328
1328
|
|
|
1329
1329
|
```python
|
|
1330
1330
|
names = ctx.ui.get_all_themes() # list[str] of theme names
|
|
1331
|
-
ok = ctx.ui.set_theme("
|
|
1331
|
+
ok = ctx.ui.set_theme("dark") # True on success, False if unknown
|
|
1332
1332
|
theme = ctx.ui.theme # LayoutTheme — current active theme
|
|
1333
1333
|
```
|
|
1334
1334
|
|
|
@@ -124,7 +124,8 @@ api_base = "https://api.example.com"
|
|
|
124
124
|
proxies = get_proxies_for_client(api_base, settings_manager)
|
|
125
125
|
headers = get_proxy_headers(settings_manager)
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
mounts = {s: httpx.AsyncHTTPTransport(proxy=u) for s, u in proxies.items()} if proxies else None
|
|
128
|
+
async with httpx.AsyncClient(mounts=mounts, headers=headers) as client:
|
|
128
129
|
response = await client.get(f"{api_base}/v1/models")
|
|
129
130
|
```
|
|
130
131
|
|
|
@@ -144,7 +145,8 @@ headers = {
|
|
|
144
145
|
**proxy_headers, # Include custom proxy headers
|
|
145
146
|
}
|
|
146
147
|
|
|
147
|
-
|
|
148
|
+
mounts = {s: httpx.AsyncHTTPTransport(proxy=u) for s, u in proxies.items()} if proxies else None
|
|
149
|
+
async with httpx.AsyncClient(mounts=mounts, headers=headers) as client:
|
|
148
150
|
response = await client.get(f"{api_base}/v1/models")
|
|
149
151
|
```
|
|
150
152
|
|
|
@@ -159,9 +161,9 @@ proxy_url = get_proxy_url_for_target(api_base)
|
|
|
159
161
|
|
|
160
162
|
client_kwargs = {}
|
|
161
163
|
if proxy_url:
|
|
162
|
-
client_kwargs["
|
|
163
|
-
"http://": proxy_url,
|
|
164
|
-
"https://": proxy_url,
|
|
164
|
+
client_kwargs["mounts"] = {
|
|
165
|
+
"http://": httpx.AsyncHTTPTransport(proxy=proxy_url),
|
|
166
|
+
"https://": httpx.AsyncHTTPTransport(proxy=proxy_url),
|
|
165
167
|
}
|
|
166
168
|
|
|
167
169
|
async with httpx.AsyncClient(**client_kwargs) as client:
|
|
@@ -334,7 +336,8 @@ from tau.utils.http_proxy import get_proxies_for_client
|
|
|
334
336
|
import httpx
|
|
335
337
|
|
|
336
338
|
proxies = get_proxies_for_client("https://api.example.com")
|
|
337
|
-
|
|
339
|
+
mounts = {s: httpx.AsyncHTTPTransport(proxy=u) for s, u in proxies.items()} if proxies else None
|
|
340
|
+
async with httpx.AsyncClient(mounts=mounts) as client:
|
|
338
341
|
response = await client.get("...")
|
|
339
342
|
```
|
|
340
343
|
|
|
@@ -8,7 +8,7 @@ Tau supports the following inference providers:
|
|
|
8
8
|
|
|
9
9
|
Built-in API-key providers are `openai`, `anthropic`, `google`, `nvidia`,
|
|
10
10
|
`groq`, `openrouter`, `perplexity`, `xai`, `bedrock`, `kimi`, `minimax`,
|
|
11
|
-
`cerebras`, `deepseek`, `kilocode`, `fireworks`, and `mistral`.
|
|
11
|
+
`cerebras`, `deepseek`, `zai`, `kilocode`, `fireworks`, and `mistral`.
|
|
12
12
|
|
|
13
13
|
Tau also includes local `ollama`, Google/Anthropic/OpenAI-compatible Vertex AI
|
|
14
14
|
providers, and OAuth providers for OpenAI Codex, Claude Code, GitHub Copilot,
|
|
@@ -159,44 +159,33 @@ Use a specific provider for a single session:
|
|
|
159
159
|
```bash
|
|
160
160
|
tau --provider anthropic
|
|
161
161
|
tau --model openai/gpt-4o
|
|
162
|
-
tau --
|
|
162
|
+
tau --model ollama/mistral
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
### Interactive
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
Use the `/model` slash command during a session to switch models.
|
|
168
168
|
|
|
169
169
|
### Default
|
|
170
170
|
|
|
171
|
-
Set your default provider in `~/.tau/settings.json`:
|
|
171
|
+
Set your default provider and model in `~/.tau/settings.json`:
|
|
172
172
|
|
|
173
173
|
```json
|
|
174
174
|
{
|
|
175
|
-
"
|
|
176
|
-
|
|
175
|
+
"model": {
|
|
176
|
+
"text": {
|
|
177
|
+
"provider": "anthropic",
|
|
178
|
+
"id": "claude-sonnet-4-6"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
177
181
|
}
|
|
178
182
|
```
|
|
179
183
|
|
|
180
|
-
## Model Listing
|
|
181
|
-
|
|
182
|
-
List all available models:
|
|
183
|
-
|
|
184
|
-
```bash
|
|
185
|
-
tau --list-models
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Filter by provider:
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
tau --list-models anthropic
|
|
192
|
-
tau --list-models openai
|
|
193
|
-
```
|
|
194
|
-
|
|
195
184
|
## Troubleshooting
|
|
196
185
|
|
|
197
186
|
### Provider Not Found
|
|
198
187
|
|
|
199
|
-
If a provider
|
|
188
|
+
If a provider isn't picking up credentials, check:
|
|
200
189
|
|
|
201
190
|
1. **API key is set**: `env | grep API_KEY`
|
|
202
191
|
2. **Provider is supported**: Verify it's in the list above
|
|
@@ -180,7 +180,7 @@ Configure how steering and follow-up messages are delivered in [Settings](settin
|
|
|
180
180
|
|
|
181
181
|
| Mode | Behavior |
|
|
182
182
|
|------|----------|
|
|
183
|
-
| `
|
|
183
|
+
| `one_at_a_time` | Each message queued and sent separately |
|
|
184
184
|
| `all` | All queued messages sent together |
|
|
185
185
|
|
|
186
186
|
## Next Steps
|
|
@@ -11,9 +11,9 @@ tau/ # Main package
|
|
|
11
11
|
├── agent/ # Agent execution service
|
|
12
12
|
├── auth/ # Authentication & credential management
|
|
13
13
|
├── builtins/ # Built-in tools, commands, themes, skills
|
|
14
|
-
│ ├── tools/ # Pre-installed tools (
|
|
14
|
+
│ ├── tools/ # Pre-installed tools (terminal, read, write, etc.)
|
|
15
15
|
│ ├── commands/ # Built-in slash commands
|
|
16
|
-
│ ├── themes/ # Default themes (
|
|
16
|
+
│ ├── themes/ # Default themes (dark, light)
|
|
17
17
|
│ ├── providers/ # Built-in LLM provider configurations
|
|
18
18
|
│ ├── prompts/ # Built-in prompt templates
|
|
19
19
|
│ └── skills/ # Built-in skills
|
|
@@ -113,7 +113,7 @@ Executes tools with sandboxing and result collection.
|
|
|
113
113
|
|
|
114
114
|
Loading and API for custom extensions.
|
|
115
115
|
|
|
116
|
-
- `api.py` - Extension API (
|
|
116
|
+
- `api.py` - Extension API (main extension interface)
|
|
117
117
|
- `loader.py` - Extension discovery and loading
|
|
118
118
|
- `context.py` - Extension runtime context
|
|
119
119
|
- `runtime.py` - Runtime context management
|
|
@@ -179,7 +179,7 @@ Prompt loading and variable substitution.
|
|
|
179
179
|
- `expand.py` - Argument substitution
|
|
180
180
|
- `types.py` - Prompt types
|
|
181
181
|
|
|
182
|
-
### `rpc/` - JSON-RPC Protocol
|
|
182
|
+
### `modes/rpc/` - JSON-RPC Protocol
|
|
183
183
|
|
|
184
184
|
JSON-RPC server for IDE integration.
|
|
185
185
|
|
|
@@ -408,10 +408,10 @@ See [Extensions Guide](extensions.md) for detailed examples.
|
|
|
408
408
|
|
|
409
409
|
## Code Statistics
|
|
410
410
|
|
|
411
|
-
- **Total modules**:
|
|
411
|
+
- **Total modules**: 235 Python files
|
|
412
412
|
- **Main package**: tau/ (25 subpackages)
|
|
413
413
|
- **Test coverage**: tests/ directory
|
|
414
|
-
- **Lines of code**: ~
|
|
414
|
+
- **Lines of code**: ~58,000 LOC (excluding tests and docs)
|
|
415
415
|
- **Type hints**: Full type coverage with mypy/pyright
|
|
416
416
|
|
|
417
417
|
## Next Steps
|
|
@@ -54,6 +54,9 @@ You will be prompted to select a model from your configured providers. By defaul
|
|
|
54
54
|
- `write` - create or overwrite files
|
|
55
55
|
- `edit` - patch files
|
|
56
56
|
- `terminal` - run shell commands
|
|
57
|
+
- `glob` - find files by pattern
|
|
58
|
+
- `grep` - search file contents
|
|
59
|
+
- `ls` - list directory contents
|
|
57
60
|
|
|
58
61
|
Type a prompt and press Enter:
|
|
59
62
|
|
|
@@ -25,13 +25,15 @@ Sessions are stored per-project. The working directory is encoded into a safe su
|
|
|
25
25
|
```text
|
|
26
26
|
~/.tau/sessions/
|
|
27
27
|
├── --Users-alice-projects-myapp--/
|
|
28
|
-
│ ├── 2024-01-
|
|
29
|
-
│ ├── 2024-01-
|
|
30
|
-
│ └── 2024-01-
|
|
28
|
+
│ ├── 2024-01-15T10-30-45-123456_01912e4a-6b3f-7a21-9c88-4f2e6d1a9b3c.jsonl
|
|
29
|
+
│ ├── 2024-01-15T14-22-19-654321_01912e6f-2c1a-70e3-8a4d-9b1e5c7f2d0a.jsonl
|
|
30
|
+
│ └── 2024-01-16T09-15-33-789012_01912ea3-5d8b-71f4-b2c3-6a9e4f0d1c8b.jsonl
|
|
31
31
|
└── --Users-alice-projects-other--/
|
|
32
|
-
└── 2024-01-
|
|
32
|
+
└── 2024-01-16T11-45-22-345678_01912ec1-9a4f-72b5-c3d6-8e1a5b0f4d2c.jsonl
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
Each filename is `<timestamp>_<session-id>.jsonl`, where the timestamp is `strftime("%Y-%m-%dT%H-%M-%S-%f")` and the session ID is a UUIDv7.
|
|
36
|
+
|
|
35
37
|
The subdirectory name is derived from the absolute path of the working directory (`/Users/alice/projects/myapp` → `--Users-alice-projects-myapp--`). This keeps sessions from different projects completely separate, so browsing with `/resume` always shows only the sessions relevant to the current project.
|
|
36
38
|
|
|
37
39
|
Files are in JSONL format (one JSON object per line), allowing efficient appending and compression.
|
|
@@ -200,7 +202,7 @@ Shows a read-only overlay (Esc to close) with:
|
|
|
200
202
|
To delete a session, remove the session file:
|
|
201
203
|
|
|
202
204
|
```bash
|
|
203
|
-
rm ~/.tau/sessions/path_to_project/2024-01-
|
|
205
|
+
rm ~/.tau/sessions/path_to_project/2024-01-15T10-30-45-123456_01912e4a-6b3f-7a21-9c88-4f2e6d1a9b3c.jsonl
|
|
204
206
|
```
|
|
205
207
|
|
|
206
208
|
## Backup Sessions
|
|
@@ -218,7 +220,7 @@ Session files are JSONL — one JSON object per line. The first line is always a
|
|
|
218
220
|
### Header
|
|
219
221
|
|
|
220
222
|
```json
|
|
221
|
-
{"type": "session", "version": 3, "id": "
|
|
223
|
+
{"type": "session", "version": 3, "id": "01912e4a-6b3f-7a21-9c88-4f2e6d1a9b3c", "cwd": "/home/user/project", "timestamp": 1718000000.0}
|
|
222
224
|
```
|
|
223
225
|
|
|
224
226
|
### Entry types
|
|
@@ -241,7 +243,7 @@ All entries share `id`, `timestamp`, and `parent_id` fields. `parent_id` is null
|
|
|
241
243
|
### Example
|
|
242
244
|
|
|
243
245
|
```jsonl
|
|
244
|
-
{"type": "session", "version": 3, "id": "
|
|
246
|
+
{"type": "session", "version": 3, "id": "01912e4a-6b3f-7a21-9c88-4f2e6d1a9b3c", "cwd": "/home/user/myproject", "timestamp": 1718000000.0}
|
|
245
247
|
{"type": "message", "id": "e5f6g7h8", "parent_id": null, "timestamp": 1718000001.0, "message": {"role": "user", ...}}
|
|
246
248
|
{"type": "message", "id": "i9j0k1l2", "parent_id": "e5f6g7h8", "timestamp": 1718000005.0, "message": {"role": "assistant", ...}}
|
|
247
249
|
{"type": "compaction", "id": "m3n4o5p6", "parent_id": "i9j0k1l2", "summary": "## Goal\n...", "first_kept_entry_id": "i9j0k1l2", "tokens_before": 94000, "timestamp": 1718000010.0}
|
|
@@ -53,6 +53,7 @@ All settings documented in the reference below are editable from the TUI. Settin
|
|
|
53
53
|
| Setting | Panel location |
|
|
54
54
|
|---------|----------------|
|
|
55
55
|
| `project_trust` | Top level — cycles `"ask"` / `"always"` / `"never"` |
|
|
56
|
+
| `telemetry` | Top level — boolean toggle |
|
|
56
57
|
| `double_escape_action` | Top level — cycles `"clear"` / `"fork"` / `"tree"` / `"none"` |
|
|
57
58
|
| `tree_filter_mode` | Top level — cycles all five modes |
|
|
58
59
|
| `show_hardware_cursor` | Top level — boolean toggle |
|
|
@@ -142,6 +143,28 @@ Toggle during a session with `/effort` or the effort picker.
|
|
|
142
143
|
| `double_escape_action` | string | `"clear"` | What happens when Escape is pressed twice while idle: `"clear"` clears TUI messages, `"fork"` clones the current branch, `"tree"` opens the branch navigator, `"none"` does nothing |
|
|
143
144
|
| `tree_filter_mode` | string | `"default"` | Default message filter when `/tree` opens: `"default"`, `"no-tools"`, `"user-only"`, `"labeled-only"`, `"all"` |
|
|
144
145
|
|
|
146
|
+
### Telemetry
|
|
147
|
+
|
|
148
|
+
| Field | Type | Default | Description |
|
|
149
|
+
|-------|------|---------|-------------|
|
|
150
|
+
| `telemetry` | boolean | `true` | Send one anonymous version-only install/update count |
|
|
151
|
+
|
|
152
|
+
Telemetry sends only the installed Tau version to Tau's Cloudflare Worker once
|
|
153
|
+
per version. Tau does not persist identifiers or IP addresses and does not send
|
|
154
|
+
prompts, paths, models, authentication state, session data, or tool activity.
|
|
155
|
+
As with any HTTP request, Cloudflare necessarily processes the source IP under
|
|
156
|
+
its own privacy policy. Failed requests are ignored and never block startup.
|
|
157
|
+
|
|
158
|
+
This is a global preference: project settings cannot enable telemetry after it
|
|
159
|
+
has been disabled globally. Disable it in `/settings` or in
|
|
160
|
+
`~/.tau/settings.json`:
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"telemetry": false
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
145
168
|
#### Hardware Cursor & Editor Padding
|
|
146
169
|
|
|
147
170
|
**`show_hardware_cursor`** — Enable this if you're using IME (input method editor) for CJK, Arabic, or other languages. When enabled, the terminal cursor remains visible as it's repositioned for text input, improving the IME experience. Default is `false` for standard keyboard input.
|
|
@@ -20,6 +20,17 @@ Skills are loaded from three sources:
|
|
|
20
20
|
|
|
21
21
|
Higher-priority skills override lower-priority ones with the same name.
|
|
22
22
|
|
|
23
|
+
## Built-in Skills
|
|
24
|
+
|
|
25
|
+
Tau includes these skills:
|
|
26
|
+
|
|
27
|
+
| Skill | Purpose |
|
|
28
|
+
|-------|---------|
|
|
29
|
+
| `code-review` | Review code for correctness, security, and maintainability |
|
|
30
|
+
| `debug` | Diagnose failures systematically and verify fixes |
|
|
31
|
+
| `git-commit` | Prepare focused commits with conventional messages |
|
|
32
|
+
| `skill-creator` | Create or update Tau skills and reusable resources |
|
|
33
|
+
|
|
23
34
|
## Creating a Skill
|
|
24
35
|
|
|
25
36
|
### Single-file skill
|
|
@@ -10,6 +10,12 @@ Run `tau` to open the terminal UI. The interface has three areas:
|
|
|
10
10
|
- **Messages** — conversation history, tool calls, results
|
|
11
11
|
- **Editor** — where you type prompts
|
|
12
12
|
|
|
13
|
+
Named Markdown links display their label without repeating the destination URL.
|
|
14
|
+
In terminals with OSC 8 support, use the terminal's link gesture (commonly
|
|
15
|
+
Alt+click or Cmd+click) to open the destination. Autolinks remain visible as URLs.
|
|
16
|
+
Markdown images render as linked placeholders when inline image display is not
|
|
17
|
+
available; local image paths link through an absolute `file://` URI.
|
|
18
|
+
|
|
13
19
|
## Editor Features
|
|
14
20
|
|
|
15
21
|
| Feature | How |
|
|
@@ -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.5.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"
|
|
@@ -257,4 +257,14 @@ models = [
|
|
|
257
257
|
output=_TEXT,
|
|
258
258
|
api="openai-audio",
|
|
259
259
|
),
|
|
260
|
+
# Z.ai STT (no TTS/voice-generation endpoint offered)
|
|
261
|
+
Model(
|
|
262
|
+
id="glm-asr-2512",
|
|
263
|
+
name="GLM-ASR-2512",
|
|
264
|
+
provider="zai",
|
|
265
|
+
cost=Cost(input=0.03),
|
|
266
|
+
input=_AUDIO,
|
|
267
|
+
output=_TEXT,
|
|
268
|
+
api="openai-audio",
|
|
269
|
+
),
|
|
260
270
|
]
|
|
@@ -225,4 +225,23 @@ models = [
|
|
|
225
225
|
input=_TEXT_IMAGE,
|
|
226
226
|
output=_IMAGE,
|
|
227
227
|
),
|
|
228
|
+
# Z.ai — cost is flat $/image (0.01 / 0.015), not per-million-token
|
|
229
|
+
Model(
|
|
230
|
+
id="cogview-4-250304",
|
|
231
|
+
name="CogView-4",
|
|
232
|
+
provider="zai",
|
|
233
|
+
cost=Cost(input=0.01),
|
|
234
|
+
input=_TEXT,
|
|
235
|
+
output=_IMAGE,
|
|
236
|
+
api="openai-image",
|
|
237
|
+
),
|
|
238
|
+
Model(
|
|
239
|
+
id="glm-image",
|
|
240
|
+
name="GLM-Image",
|
|
241
|
+
provider="zai",
|
|
242
|
+
cost=Cost(input=0.015),
|
|
243
|
+
input=_TEXT,
|
|
244
|
+
output=_IMAGE,
|
|
245
|
+
api="openai-image",
|
|
246
|
+
),
|
|
228
247
|
]
|