tau-coding-agent 0.4.7__tar.gz → 0.4.8__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.7/tau_coding_agent.egg-info → tau_coding_agent-0.4.8}/PKG-INFO +2 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/architecture.md +10 -8
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/auth.md +9 -9
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/cli-reference.md +14 -6
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/development.md +5 -5
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/docs.json +8 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/extensions.md +14 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/http-proxy.md +1 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/index.md +2 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/inference-providers.md +13 -64
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/installation.md +6 -11
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/keybindings.md +24 -8
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/messages.md +24 -25
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/project-structure.md +16 -20
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/prompts.md +2 -5
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/quickstart.md +8 -13
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/sessions.md +5 -10
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/settings.md +11 -5
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/skills.md +2 -7
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/themes.md +9 -25
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/tools.md +58 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/usage.md +2 -14
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/pyproject.toml +2 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/text.py +436 -86
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/text.py +1 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/edit.py +51 -1
- tau_coding_agent-0.4.8/tau/builtins/tools/grep.py +302 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/engine/service.py +0 -4
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/api.py +8 -3
- tau_coding_agent-0.4.8/tau/inference/api/text/dialect.py +144 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/github_copilot_chat.py +1 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_completions.py +12 -21
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_vertex.py +1 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/utils.py +24 -7
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/model/types.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/app.py +99 -19
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/appearance.py +17 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/auth.py +1 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/model.py +1 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/command_palette.py +4 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/config_selector.py +0 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/file_picker.py +4 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/layout.py +35 -29
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/message_list.py +11 -9
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/overlays.py +2 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/session_selector.py +4 -7
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/manager.py +15 -4
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/types.py +3 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/autocomplete.py +4 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/select_list.py +40 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/text_input.py +191 -25
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/input.py +41 -31
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/tui.py +15 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/ui_context.py +30 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/utils.py +33 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8/tau_coding_agent.egg-info}/PKG-INFO +2 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/SOURCES.txt +6 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/requires.txt +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_ansi.py +12 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_auth_command.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_auth_manager.py +5 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_auth_storage.py +12 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_builtin_tools.py +46 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_diff.py +3 -8
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_editor_protocol.py +2 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_engine_types.py +1 -0
- tau_coding_agent-0.4.8/tests/test_escape_behavior.py +39 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_extension_api.py +71 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_footer_utils.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_fuzzy.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_http_proxy.py +10 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_image_processing.py +43 -12
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_api_text_utils.py +11 -5
- tau_coding_agent-0.4.8/tests/test_inference_dialect.py +31 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_error_utils.py +2 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_types.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_inference_utils.py +20 -11
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_keybindings.py +6 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_markdown.py +4 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_message_types.py +20 -4
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_message_utils.py +8 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_availability.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_registry.py +9 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_types.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_oauth_utils.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_packages_utils.py +6 -0
- tau_coding_agent-0.4.8/tests/test_peer_extension.py +46 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_pkce.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_prompts_expand.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_prompts_loader.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_prompts_registry.py +7 -2
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_provider_registry.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_rpc_mode.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_secrets.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_trust_persist.py +2 -3
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_types.py +6 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_utils.py +7 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_paths.py +7 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_storage.py +10 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_utils.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_skills_loader.py +4 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_skills_registry.py +1 -0
- tau_coding_agent-0.4.8/tests/test_text_input.py +229 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_text_llm_invoke.py +49 -19
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_theme_loader.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_themes_registry.py +14 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tool_render.py +55 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_trust_manager.py +2 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_trust_utils.py +6 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_capabilities.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_input.py +48 -10
- tau_coding_agent-0.4.8/tests/test_tui_renderer.py +117 -0
- tau_coding_agent-0.4.8/tests/test_tui_select_list.py +40 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_theme.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_utils.py +1 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_version_check.py +1 -0
- tau_coding_agent-0.4.7/docs/IMPLEMENTATION_SUMMARY.md +0 -163
- tau_coding_agent-0.4.7/tau/builtins/tools/grep.py +0 -178
- tau_coding_agent-0.4.7/tests/test_text_input.py +0 -17
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/LICENSE +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/MANIFEST.in +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/README.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/project-context.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/docs/python-api.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/setup.cfg +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/prompt/builder.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/btw/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/model.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/read.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/terminal.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/cli.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/loader.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/runtime.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_codex_responses.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/openai_responses.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/service.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/message/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/extension_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/model_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/oauth_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/selector_controller.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/settings_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/theme_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/thinking_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/components/voice_selector.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/runtime/service.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/runtime/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/markdown.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/tui/theme.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/http_proxy.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_model_selector_modal.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_runtime_sdk.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_selector_controller.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_subagents_extension.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_thinking_render.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_tui_layout_sizing.py +1 -1
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.4.7 → tau_coding_agent-0.4.8}/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.4.
|
|
3
|
+
Version: 0.4.8
|
|
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
|
|
@@ -29,6 +29,7 @@ Requires-Dist: grapheme==0.6.0
|
|
|
29
29
|
Requires-Dist: arrow==1.4.0
|
|
30
30
|
Provides-Extra: tools
|
|
31
31
|
Requires-Dist: ripgrep>=14.0.0; extra == "tools"
|
|
32
|
+
Requires-Dist: ast-grep-cli>=0.44.0; extra == "tools"
|
|
32
33
|
Dynamic: license-file
|
|
33
34
|
|
|
34
35
|
# Tau (τ)
|
|
@@ -183,8 +183,9 @@ Extensions can react to lifecycle events:
|
|
|
183
183
|
- `session_start` - Session begins
|
|
184
184
|
- `turn_start` - New inference turn starts
|
|
185
185
|
- `turn_end` - Turn completes (before rendering)
|
|
186
|
-
- `
|
|
187
|
-
- `
|
|
186
|
+
- `tool_call` - Tool call can be inspected, rewritten, or blocked
|
|
187
|
+
- `tool_result` - Tool result can be inspected or rewritten
|
|
188
|
+
- `tool_execution_start` / `tool_execution_end` - Tool handler lifecycle
|
|
188
189
|
- `tui_ready` - TUI is ready for input
|
|
189
190
|
- `tui_exit` - TUI is exiting
|
|
190
191
|
- `compaction_start` - Compaction begins
|
|
@@ -194,12 +195,13 @@ Hooks allow extensions to inspect state, modify messages, or react to events.
|
|
|
194
195
|
|
|
195
196
|
## Provider Abstraction
|
|
196
197
|
|
|
197
|
-
|
|
198
|
+
Providers describe authentication, endpoints, and the API adapter used for a
|
|
199
|
+
request. Adapters stream normalized `LLMEvent` objects:
|
|
198
200
|
|
|
199
201
|
```python
|
|
200
|
-
class
|
|
201
|
-
async def
|
|
202
|
-
|
|
202
|
+
class BaseAPI:
|
|
203
|
+
async def stream(self, context, model, options) -> AsyncIterator[LLMEvent]:
|
|
204
|
+
...
|
|
203
205
|
```
|
|
204
206
|
|
|
205
207
|
The inference module handles provider-specific details (API keys, endpoints, format conversions).
|
|
@@ -289,9 +291,9 @@ React to lifecycle events:
|
|
|
289
291
|
|
|
290
292
|
```python
|
|
291
293
|
def register(tau):
|
|
292
|
-
async def
|
|
294
|
+
async def on_tool_end(event, ctx):
|
|
293
295
|
print(f"Tool {event.tool_name} finished")
|
|
294
|
-
tau.
|
|
296
|
+
tau.on("tool_execution_end", on_tool_end)
|
|
295
297
|
```
|
|
296
298
|
|
|
297
299
|
### Dialogs
|
|
@@ -6,7 +6,7 @@ Tau stores credentials for LLM providers in `~/.tau/auth.json`. This page explai
|
|
|
6
6
|
|
|
7
7
|
For each provider, tau resolves credentials in this order:
|
|
8
8
|
|
|
9
|
-
1. **Runtime override** — set
|
|
9
|
+
1. **Runtime override** — set programmatically through `AuthManager` (not persisted)
|
|
10
10
|
2. **Stored credential** — read from `~/.tau/auth.json`
|
|
11
11
|
3. **Environment variable** — `{PROVIDER}_API_KEY` (e.g. `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`)
|
|
12
12
|
|
|
@@ -69,13 +69,11 @@ export OPENAI_API_KEY="sk-..."
|
|
|
69
69
|
|
|
70
70
|
No file is needed — tau picks these up automatically.
|
|
71
71
|
|
|
72
|
-
###
|
|
72
|
+
### Runtime override
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
Not stored. Only applies to the current session.
|
|
74
|
+
Embedding applications may call
|
|
75
|
+
`auth_manager.set_runtime_api_key(provider, key)`. The main Tau CLI does not
|
|
76
|
+
provide an `--api-key` flag.
|
|
79
77
|
|
|
80
78
|
### Auth file (direct edit)
|
|
81
79
|
|
|
@@ -91,7 +89,9 @@ Run `/login` from within a session. Tau asks which authentication type to use:
|
|
|
91
89
|
|
|
92
90
|
### `/logout` command
|
|
93
91
|
|
|
94
|
-
Run `/logout` to open a list of providers that have credentials stored in
|
|
92
|
+
Run `/logout` to open a list of providers that have credentials stored in
|
|
93
|
+
`~/.tau/auth.json`. Select one to remove it. Environment variables and
|
|
94
|
+
programmatic runtime overrides are unaffected.
|
|
95
95
|
|
|
96
96
|
## Auth File Format
|
|
97
97
|
|
|
@@ -120,7 +120,7 @@ From Python (e.g. in an extension):
|
|
|
120
120
|
status = auth_manager.get_auth_status("anthropic")
|
|
121
121
|
# status.configured → True / False
|
|
122
122
|
# status.source → "stored" | "runtime" | "env" | None
|
|
123
|
-
# status.label → env var name or "
|
|
123
|
+
# status.label → env var name or "runtime override"
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
## Security
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Usage
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
tau [OPTIONS] [
|
|
6
|
+
tau [OPTIONS] COMMAND [ARGS]...
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Use `--prompt TEXT` for a non-interactive prompt. Piped stdin can supply or
|
|
@@ -13,14 +13,20 @@ augment it.
|
|
|
13
13
|
|
|
14
14
|
| Option | Short | Description |
|
|
15
15
|
|--------|-------|-------------|
|
|
16
|
+
| `--version` | `-v` | Print the installed version |
|
|
17
|
+
| `--debug` | `-d` | Enable debug logging |
|
|
18
|
+
| `--cwd PATH` | `-c` | Set the working directory |
|
|
16
19
|
| `--prompt` | `-p` | Run a non-interactive prompt |
|
|
20
|
+
| `--output-format` | `-f` | Non-interactive output: `text` or `json` |
|
|
21
|
+
| `--quiet` | `-q` | Hide the non-interactive spinner |
|
|
17
22
|
| `--provider` | | Provider to use, e.g. `anthropic`, `openai`, `groq` |
|
|
18
23
|
| `--model` | | Model ID, or `provider/model` shorthand (e.g. `groq/llama-3.3-70b-versatile`) |
|
|
19
|
-
| `--theme` | `-t` | UI theme: `
|
|
24
|
+
| `--theme` | `-t` | UI theme: `dark`, `light`, or an installed custom theme |
|
|
20
25
|
| `--resume [ID]` | `-r` | Resume the most recent or a specified session |
|
|
21
26
|
| `--fork ID` | | Fork a specified session at startup |
|
|
22
27
|
| `--session-dir PATH` | | Override session storage |
|
|
23
28
|
| `--name NAME` | | Set the session display name at startup |
|
|
29
|
+
| `--system TEXT` | `-s` | Replace the generated system prompt |
|
|
24
30
|
| `--ephemeral` | `-e` | Don't save this session to disk |
|
|
25
31
|
| `--approve` | `-a` | Trust project-local files (extensions, settings, context files) for this run |
|
|
26
32
|
| `--no-approve` | `-na` | Don't trust project-local files for this run |
|
|
@@ -66,7 +72,7 @@ that order.
|
|
|
66
72
|
Emit a JSON event stream on stdout:
|
|
67
73
|
|
|
68
74
|
```bash
|
|
69
|
-
tau --mode json "Your prompt"
|
|
75
|
+
tau --mode json --prompt "Your prompt"
|
|
70
76
|
```
|
|
71
77
|
|
|
72
78
|
Each line is a JSON object representing a lifecycle event (`agent_start`, `message_end`, etc.).
|
|
@@ -345,8 +351,7 @@ An explicit `--provider` always overrides the inferred provider.
|
|
|
345
351
|
|
|
346
352
|
```bash
|
|
347
353
|
tau --resume # continue most recent session
|
|
348
|
-
tau --
|
|
349
|
-
tau --session ~/.tau/sessions/proj/file.jsonl # resume by file path
|
|
354
|
+
tau --resume abc123 # resume by session ID
|
|
350
355
|
tau --ephemeral # temporary session, nothing saved
|
|
351
356
|
```
|
|
352
357
|
|
|
@@ -360,13 +365,16 @@ Manage provider credentials.
|
|
|
360
365
|
tau auth --help
|
|
361
366
|
```
|
|
362
367
|
|
|
368
|
+
Package management is available through `tau install`, `tau remove`,
|
|
369
|
+
`tau list`, and `tau update`.
|
|
370
|
+
|
|
363
371
|
## Environment Variables
|
|
364
372
|
|
|
365
373
|
| Variable | Effect |
|
|
366
374
|
|----------|--------|
|
|
367
375
|
| `ANTHROPIC_API_KEY` | Anthropic API key |
|
|
368
376
|
| `OPENAI_API_KEY` | OpenAI API key |
|
|
369
|
-
| `
|
|
377
|
+
| `GOOGLE_API_KEY` | Google Gemini key |
|
|
370
378
|
| `<PROVIDER>_API_KEY` | API key for any provider (uppercased provider name) |
|
|
371
379
|
|
|
372
380
|
Provider and model can also be set permanently in `settings.json` — see [Settings](settings.md).
|
|
@@ -4,15 +4,15 @@ This page covers setting up a development environment for tau.
|
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
|
-
- Python 3.
|
|
7
|
+
- Python 3.12 or higher
|
|
8
8
|
- git
|
|
9
9
|
- pip or uv (Python package manager)
|
|
10
10
|
|
|
11
11
|
## Clone the Repository
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
git clone https://github.com/
|
|
15
|
-
cd
|
|
14
|
+
git clone https://github.com/Jeomon/Tau.git
|
|
15
|
+
cd Tau
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Install Dependencies
|
|
@@ -63,7 +63,7 @@ tau --theme dark
|
|
|
63
63
|
### Run with Debug Logging
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
|
|
66
|
+
tau --debug
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
### Run Tests
|
|
@@ -215,7 +215,7 @@ logger.error("Error message")
|
|
|
215
215
|
Enable debug logging:
|
|
216
216
|
|
|
217
217
|
```bash
|
|
218
|
-
|
|
218
|
+
tau --debug
|
|
219
219
|
```
|
|
220
220
|
|
|
221
221
|
## IDE Setup
|
|
@@ -61,6 +61,10 @@
|
|
|
61
61
|
"title": "Extensions",
|
|
62
62
|
"path": "extensions.md"
|
|
63
63
|
},
|
|
64
|
+
{
|
|
65
|
+
"title": "Extension Settings",
|
|
66
|
+
"path": "extension-settings.md"
|
|
67
|
+
},
|
|
64
68
|
{
|
|
65
69
|
"title": "Themes",
|
|
66
70
|
"path": "themes.md"
|
|
@@ -80,6 +84,10 @@
|
|
|
80
84
|
{
|
|
81
85
|
"title": "Authentication",
|
|
82
86
|
"path": "auth.md"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"title": "HTTP Proxy",
|
|
90
|
+
"path": "http-proxy.md"
|
|
83
91
|
}
|
|
84
92
|
]
|
|
85
93
|
},
|
|
@@ -656,6 +656,19 @@ def register(tau):
|
|
|
656
656
|
|
|
657
657
|
## Keyboard shortcuts
|
|
658
658
|
|
|
659
|
+
`register_shortcut` takes a literal key combination. Tau compares extension
|
|
660
|
+
shortcuts with the effective `KeyMap`.
|
|
661
|
+
Safety-critical editor and application bindings are reserved and cannot be
|
|
662
|
+
replaced by extensions. An extension may replace a non-reserved global
|
|
663
|
+
application binding, with a warning. If multiple extensions register the same
|
|
664
|
+
key, the last loaded extension wins and Tau reports a warning.
|
|
665
|
+
|
|
666
|
+
Some low-level editor operations that are not exposed as `KeyMap` actions,
|
|
667
|
+
such as cursor movement, are still consumed directly by the focused editor.
|
|
668
|
+
Registering an extension shortcut does not replace those operations. See
|
|
669
|
+
[Customising keybindings](keybindings.md#customising-keybindings) for the
|
|
670
|
+
available actions.
|
|
671
|
+
|
|
659
672
|
```python
|
|
660
673
|
def register(tau):
|
|
661
674
|
@tau.register_shortcut("ctrl+g", "Open greeter")
|
|
@@ -844,7 +857,7 @@ def register(tau):
|
|
|
844
857
|
| `tau.register_tool(tool)` | Add a tool the agent can call |
|
|
845
858
|
| `tau.register_command(name, desc, handler, aliases=[], get_argument_completions=None, argument_hint=None, requires_idle=True)` | Add a `/name` slash command; set `requires_idle=False` only for UI-only or read-only handlers safe during an active turn |
|
|
846
859
|
| `tau.on(event, handler)` / `@tau.on(event)` | Subscribe to a lifecycle event |
|
|
847
|
-
| `tau.register_shortcut(key, desc, handler)` | Bind a keyboard shortcut |
|
|
860
|
+
| `tau.register_shortcut(key, desc, handler)` | Bind a literal keyboard shortcut |
|
|
848
861
|
| `tau.append_prompt(text)` | Append text to the system prompt |
|
|
849
862
|
| `tau.register_theme(name, theme)` | Add a named theme to the picker |
|
|
850
863
|
| `tau.register_message_renderer(type, fn)` | Render custom message types in the TUI |
|
|
@@ -378,4 +378,4 @@ OAuth login/refresh operations (e.g., GitHub Copilot, OpenAI, Anthropic) also re
|
|
|
378
378
|
|
|
379
379
|
- [Settings](settings.md) — Main settings reference
|
|
380
380
|
- [Extensions](extensions.md) — Extensions can also use proxy settings via SettingsManager
|
|
381
|
-
- [Providers](providers.md) — Model provider configuration
|
|
381
|
+
- [Inference Providers](inference-providers.md) — Model provider configuration
|
|
@@ -6,7 +6,7 @@ Tau is a Python CLI framework for building interactive agent applications. It pr
|
|
|
6
6
|
|
|
7
7
|
Tau allows you to:
|
|
8
8
|
- Chat with LLMs (Claude, GPT, Gemini, Mistral, Ollama) in a terminal UI
|
|
9
|
-
- Execute tools (terminal commands,
|
|
9
|
+
- Execute tools (terminal commands, file operations, search) within conversations
|
|
10
10
|
- Save and resume sessions with branching and forking
|
|
11
11
|
- Extend Tau with custom tools, commands, themes, and skills
|
|
12
12
|
- Embed Tau in Python applications as a library
|
|
@@ -53,14 +53,13 @@ Tau allows you to:
|
|
|
53
53
|
|
|
54
54
|
- [Project Structure](project-structure.md) - Codebase organization and module breakdown
|
|
55
55
|
- [Development Setup](development.md) - Local development environment and testing
|
|
56
|
-
- [Implementation Summary](IMPLEMENTATION_SUMMARY.md) - Recent changes and features
|
|
57
56
|
|
|
58
57
|
## Reference
|
|
59
58
|
|
|
60
59
|
- [CLI Reference](cli-reference.md) - All flags, modes (interactive/print/json/rpc)
|
|
61
60
|
- [Settings Reference](settings.md) - Complete settings schema
|
|
62
61
|
- [Session Format](sessions.md) - JSONL file format and structure
|
|
63
|
-
- [Hooks & Events](extensions.md#hooks) - All available hooks and events
|
|
62
|
+
- [Hooks & Events](extensions.md#event-hooks) - All available hooks and events
|
|
64
63
|
|
|
65
64
|
---
|
|
66
65
|
|
|
@@ -6,22 +6,22 @@ This page documents all supported LLM inference providers and their setup.
|
|
|
6
6
|
|
|
7
7
|
Tau supports the following inference providers:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
Built-in API-key providers are `openai`, `anthropic`, `google`, `nvidia`,
|
|
10
|
+
`groq`, `openrouter`, `perplexity`, `xai`, `bedrock`, `kimi`, `minimax`,
|
|
11
|
+
`cerebras`, `deepseek`, `kilocode`, `fireworks`, and `mistral`.
|
|
12
|
+
|
|
13
|
+
Tau also includes local `ollama`, Google/Anthropic/OpenAI-compatible Vertex AI
|
|
14
|
+
providers, and OAuth providers for OpenAI Codex, Claude Code, GitHub Copilot,
|
|
15
|
+
and Google Antigravity. Extensions can register additional providers.
|
|
16
|
+
|
|
17
|
+
The model picker is the authoritative model catalogue. Built-in model metadata
|
|
18
|
+
changes more frequently than this guide, so model IDs and pricing are not
|
|
19
|
+
enumerated here.
|
|
18
20
|
|
|
19
21
|
## Anthropic
|
|
20
22
|
|
|
21
23
|
Anthropic provides Claude models with best-in-class reasoning and code generation.
|
|
22
24
|
|
|
23
|
-
**Models**: `claude-3-5-sonnet`, `claude-3-opus`, `claude-3-haiku`, `claude-3-5-haiku`
|
|
24
|
-
|
|
25
25
|
### Setup
|
|
26
26
|
|
|
27
27
|
1. Create an account at [Anthropic Console](https://console.anthropic.com)
|
|
@@ -42,8 +42,6 @@ tau --model anthropic/claude-3-5-sonnet -p "Say hello"
|
|
|
42
42
|
|
|
43
43
|
OpenAI provides GPT models optimized for a wide range of tasks.
|
|
44
44
|
|
|
45
|
-
**Models**: `gpt-4`, `gpt-4-turbo`, `gpt-4o`, `gpt-3.5-turbo`
|
|
46
|
-
|
|
47
45
|
### Setup
|
|
48
46
|
|
|
49
47
|
1. Create an account at [OpenAI Platform](https://platform.openai.com)
|
|
@@ -64,8 +62,6 @@ tau --model openai/gpt-4o -p "Say hello"
|
|
|
64
62
|
|
|
65
63
|
Google provides Gemini models with multimodal capabilities.
|
|
66
64
|
|
|
67
|
-
**Models**: `gemini-2.0-flash`, `gemini-1.5-pro`, `gemini-1.5-flash`
|
|
68
|
-
|
|
69
65
|
### Setup
|
|
70
66
|
|
|
71
67
|
1. Visit [Google AI Studio](https://aistudio.google.com)
|
|
@@ -73,7 +69,7 @@ Google provides Gemini models with multimodal capabilities.
|
|
|
73
69
|
3. Set the environment variable:
|
|
74
70
|
|
|
75
71
|
```bash
|
|
76
|
-
export
|
|
72
|
+
export GOOGLE_API_KEY=...
|
|
77
73
|
```
|
|
78
74
|
|
|
79
75
|
### Verify
|
|
@@ -86,8 +82,6 @@ tau --model google/gemini-2.0-flash -p "Say hello"
|
|
|
86
82
|
|
|
87
83
|
Mistral offers efficient open-source-based models.
|
|
88
84
|
|
|
89
|
-
**Models**: `mistral-large`, `mistral-medium`, `mistral-small`
|
|
90
|
-
|
|
91
85
|
### Setup
|
|
92
86
|
|
|
93
87
|
1. Create an account at [Mistral Console](https://console.mistral.ai)
|
|
@@ -108,21 +102,6 @@ tau --model mistral/mistral-large -p "Say hello"
|
|
|
108
102
|
|
|
109
103
|
Fireworks AI provides fast, cost-efficient inference for open-source models including Llama, DeepSeek, Qwen, and Mixtral — with OpenAI-compatible APIs.
|
|
110
104
|
|
|
111
|
-
**Text models**:
|
|
112
|
-
|
|
113
|
-
| Model | Context | Pricing (in/out per M tokens) |
|
|
114
|
-
|-------|---------|-------------------------------|
|
|
115
|
-
| `accounts/fireworks/models/llama-v3p3-70b-instruct` | 131K | $0.90 / $0.90 |
|
|
116
|
-
| `accounts/fireworks/models/llama-v3p1-405b-instruct` | 131K | $3.00 / $3.00 |
|
|
117
|
-
| `accounts/fireworks/models/deepseek-r1` *(thinking)* | 160K | $3.00 / $7.00 |
|
|
118
|
-
| `accounts/fireworks/models/deepseek-v3` | 131K | $0.90 / $0.90 |
|
|
119
|
-
| `accounts/fireworks/models/qwen3-235b-a22b` *(thinking)* | 131K | $0.22 / $0.88 |
|
|
120
|
-
| `accounts/fireworks/models/qwen3-30b-a3b` *(thinking)* | 131K | $0.15 / $0.60 |
|
|
121
|
-
| `accounts/fireworks/models/mixtral-8x22b-instruct` | 65K | $0.90 / $0.90 |
|
|
122
|
-
| `accounts/fireworks/models/gemma2-9b-it` | 8K | $0.20 / $0.20 |
|
|
123
|
-
|
|
124
|
-
**Image models**: Flux 1 Schnell FP8, Flux 1 Dev FP8
|
|
125
|
-
|
|
126
105
|
### Setup
|
|
127
106
|
|
|
128
107
|
1. Create an account at [Fireworks AI](https://fireworks.ai)
|
|
@@ -148,8 +127,6 @@ tau --model fireworks/accounts/fireworks/models/llama-v3p3-70b-instruct -p "Say
|
|
|
148
127
|
|
|
149
128
|
Run open-source models locally without API keys or internet.
|
|
150
129
|
|
|
151
|
-
**Models**: `llama2`, `mistral`, `neural-chat`, `qwen3.5:cloud` (262K context, thinking), and [others](https://ollama.ai/library)
|
|
152
|
-
|
|
153
130
|
### Setup
|
|
154
131
|
|
|
155
132
|
1. Install [Ollama](https://ollama.ai)
|
|
@@ -165,11 +142,7 @@ ollama pull mistral
|
|
|
165
142
|
ollama serve
|
|
166
143
|
```
|
|
167
144
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
export OLLAMA_BASE_URL=http://localhost:11434
|
|
172
|
-
```
|
|
145
|
+
Tau connects to `http://localhost:11434` by default.
|
|
173
146
|
|
|
174
147
|
### Verify
|
|
175
148
|
|
|
@@ -177,30 +150,6 @@ export OLLAMA_BASE_URL=http://localhost:11434
|
|
|
177
150
|
tau --model ollama/mistral -p "Say hello"
|
|
178
151
|
```
|
|
179
152
|
|
|
180
|
-
## Azure OpenAI
|
|
181
|
-
|
|
182
|
-
Use OpenAI models hosted on Azure infrastructure.
|
|
183
|
-
|
|
184
|
-
**Models**: Same as OpenAI (gpt-4, gpt-3.5-turbo, etc.)
|
|
185
|
-
|
|
186
|
-
### Setup
|
|
187
|
-
|
|
188
|
-
1. Create an Azure OpenAI resource in the Azure Portal
|
|
189
|
-
2. Deploy a model (e.g., gpt-4)
|
|
190
|
-
3. Set environment variables:
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
export AZURE_OPENAI_API_KEY=...
|
|
194
|
-
export AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com
|
|
195
|
-
export AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### Verify
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
tau --model azure/gpt-4 -p "Say hello"
|
|
202
|
-
```
|
|
203
|
-
|
|
204
153
|
## Switching Providers
|
|
205
154
|
|
|
206
155
|
### Command Line
|
|
@@ -4,7 +4,7 @@ This page covers installation and authentication setup for Tau and its inference
|
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
|
-
- Python 3.
|
|
7
|
+
- Python 3.12 or higher
|
|
8
8
|
- pip, uv, or another Python package manager
|
|
9
9
|
- An API key or subscription from at least one inference provider
|
|
10
10
|
|
|
@@ -60,7 +60,7 @@ Get your API key from [OpenAI's platform](https://platform.openai.com/account/ap
|
|
|
60
60
|
### Google Gemini
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
export
|
|
63
|
+
export GOOGLE_API_KEY=...
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
Create a key at [Google AI Studio](https://aistudio.google.com).
|
|
@@ -75,13 +75,8 @@ Get your key from [Mistral's console](https://console.mistral.ai).
|
|
|
75
75
|
|
|
76
76
|
### Ollama (Local)
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
export OLLAMA_BASE_URL=http://localhost:11434
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Ollama does not require an API key.
|
|
78
|
+
Ollama uses `http://localhost:11434` by default and does not require an API
|
|
79
|
+
key. Configure a different endpoint through a provider extension.
|
|
85
80
|
|
|
86
81
|
## Configure Authentication
|
|
87
82
|
|
|
@@ -103,7 +98,7 @@ Store credentials in `~/.tau/auth.json`:
|
|
|
103
98
|
{
|
|
104
99
|
"anthropic": { "type": "api_key", "key": "sk-ant-..." },
|
|
105
100
|
"openai": { "type": "api_key", "key": "sk-..." },
|
|
106
|
-
"
|
|
101
|
+
"google": { "type": "api_key", "key": "..." }
|
|
107
102
|
}
|
|
108
103
|
```
|
|
109
104
|
|
|
@@ -182,7 +177,7 @@ If using Ollama, ensure the service is running:
|
|
|
182
177
|
ollama serve
|
|
183
178
|
```
|
|
184
179
|
|
|
185
|
-
|
|
180
|
+
Tau currently expects the service at `http://localhost:11434`.
|
|
186
181
|
|
|
187
182
|
## Next Steps
|
|
188
183
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
| Shortcut | Action |
|
|
29
29
|
|----------|--------|
|
|
30
|
-
| Escape | Abort
|
|
30
|
+
| Escape | Abort the active operation; double-press while idle to clear TUI messages |
|
|
31
31
|
| Ctrl+C | Abort turn; double-press to quit |
|
|
32
32
|
| Ctrl+D | Quit (on empty input) |
|
|
33
33
|
| Ctrl+O | Toggle expand/collapse for thinking and tool-result blocks |
|
|
@@ -56,11 +56,10 @@ Pass a `KeyMap` to `App.create()` at startup:
|
|
|
56
56
|
from tau.tui import KeyMap
|
|
57
57
|
|
|
58
58
|
overrides: KeyMap = {
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"app.invocations.toggle": ["ctrl+e"],
|
|
59
|
+
"app.details.toggle": ["ctrl+t"],
|
|
60
|
+
"app.invocations.toggle": ["ctrl+r"],
|
|
61
|
+
"tui.select.up": ["up", "ctrl+k"],
|
|
62
|
+
"tui.select.down": ["down", "ctrl+j"],
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
app = await App.create(runtime, keybindings=overrides)
|
|
@@ -81,7 +80,7 @@ A `KeyMap` is `dict[str, list[str]]` — action name → list of key combos that
|
|
|
81
80
|
| `app.details.toggle` | `ctrl+o` | Toggle thinking and tool-result previews |
|
|
82
81
|
| `app.invocations.toggle` | `ctrl+e` | Toggle template and skill blocks |
|
|
83
82
|
| `tui.app.quit` | `ctrl+c`, `ctrl+d` | Quit tau |
|
|
84
|
-
| `tui.app.abort` | `ctrl+c` | Abort the current turn |
|
|
83
|
+
| `tui.app.abort` | `escape`, `ctrl+c` | Abort the current turn |
|
|
85
84
|
| `tui.select.up` | `up`, `ctrl+p` | Move selection up |
|
|
86
85
|
| `tui.select.down` | `down`, `ctrl+n` | Move selection down |
|
|
87
86
|
| `tui.select.page_up` | `page_up` | Move up a page |
|
|
@@ -90,6 +89,20 @@ A `KeyMap` is `dict[str, list[str]]` — action name → list of key combos that
|
|
|
90
89
|
| `tui.select.bottom` | `end` | Jump to bottom |
|
|
91
90
|
| `tui.select.confirm` | `enter`, `tab` | Confirm selection |
|
|
92
91
|
| `tui.select.dismiss` | `escape` | Dismiss picker |
|
|
92
|
+
| `tui.scroll.up` | `page_up` | Scroll messages up one page |
|
|
93
|
+
| `tui.scroll.down` | `page_down` | Scroll messages down one page |
|
|
94
|
+
| `tui.scroll.top` | `home` | Scroll to the first message |
|
|
95
|
+
| `tui.scroll.bottom` | `end` | Scroll to the latest message |
|
|
96
|
+
|
|
97
|
+
The `tui.select.*` actions apply to components built on Tau's reusable
|
|
98
|
+
`SelectList` and to the corresponding navigation operations in specialized
|
|
99
|
+
pickers. A specialized picker may not support every operation; for example, a
|
|
100
|
+
compact autocomplete list only supports up and down.
|
|
101
|
+
|
|
102
|
+
Extension shortcuts are literal key combinations rather than `KeyMap` actions.
|
|
103
|
+
Tau checks them against the effective map and prevents extensions from
|
|
104
|
+
replacing reserved editor and application bindings. See
|
|
105
|
+
[Keyboard shortcuts](extensions.md#keyboard-shortcuts).
|
|
93
106
|
|
|
94
107
|
### Key notation
|
|
95
108
|
|
|
@@ -125,7 +138,10 @@ If a binding doesn't work, choose a different combination.
|
|
|
125
138
|
|
|
126
139
|
## Reloading
|
|
127
140
|
|
|
128
|
-
|
|
141
|
+
`App.create(keybindings=...)` applies overrides at startup. Because these
|
|
142
|
+
overrides are supplied by the embedding application rather than loaded from a
|
|
143
|
+
settings file, `/reload` does not change them. Restart the application with a
|
|
144
|
+
new `KeyMap` to apply different overrides.
|
|
129
145
|
|
|
130
146
|
---
|
|
131
147
|
|
|
@@ -12,9 +12,11 @@ A message from the user. Contains the prompt text and optionally referenced file
|
|
|
12
12
|
|
|
13
13
|
```python
|
|
14
14
|
{
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
15
|
+
"role": "user",
|
|
16
|
+
"contents": [
|
|
17
|
+
{"type": "text", "content": "Transcribe this audio"},
|
|
18
|
+
{"type": "audio", "audio": ["...base64..."]}
|
|
19
|
+
]
|
|
18
20
|
}
|
|
19
21
|
```
|
|
20
22
|
|
|
@@ -36,13 +38,14 @@ counting the same tokens twice.
|
|
|
36
38
|
|
|
37
39
|
```python
|
|
38
40
|
{
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
41
|
+
"role": "assistant",
|
|
42
|
+
"contents": [
|
|
43
|
+
{"type": "text", "content": "Here's a summary..."},
|
|
42
44
|
{
|
|
45
|
+
"type": "tool_call",
|
|
43
46
|
"id": "call_123",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
47
|
+
"name": "read",
|
|
48
|
+
"args": {"path": "src/main.py"}
|
|
46
49
|
}
|
|
47
50
|
]
|
|
48
51
|
}
|
|
@@ -54,11 +57,14 @@ Output from executing a tool.
|
|
|
54
57
|
|
|
55
58
|
```python
|
|
56
59
|
{
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
"role": "tool",
|
|
61
|
+
"contents": [{
|
|
62
|
+
"type": "tool_result",
|
|
63
|
+
"id": "call_123",
|
|
64
|
+
"tool_name": "read",
|
|
65
|
+
"content": "File contents here",
|
|
66
|
+
"is_error": false
|
|
67
|
+
}]
|
|
62
68
|
}
|
|
63
69
|
```
|
|
64
70
|
|
|
@@ -93,15 +99,8 @@ Cost: ~$0.012 (estimated)
|
|
|
93
99
|
|
|
94
100
|
### Token Limits
|
|
95
101
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
| Model | Context | Max Output |
|
|
99
|
-
|-------|---------|-----------|
|
|
100
|
-
| claude-3-5-sonnet | 200k | 4k |
|
|
101
|
-
| gpt-4 | 8k | 4k |
|
|
102
|
-
| gemini-2.0-flash | 1M | 8k |
|
|
103
|
-
| mistral-large | 32k | 32k |
|
|
104
|
-
| ollama/mistral | 32k | 32k |
|
|
102
|
+
Context and output limits come from the active model metadata. Use `/model`
|
|
103
|
+
and `/session` rather than relying on a static table.
|
|
105
104
|
|
|
106
105
|
### Context Compression
|
|
107
106
|
|
|
@@ -120,10 +119,10 @@ Run `/session` to see:
|
|
|
120
119
|
|
|
121
120
|
### Clear History
|
|
122
121
|
|
|
123
|
-
Start a new session:
|
|
122
|
+
Start a new session inside the TUI:
|
|
124
123
|
|
|
125
|
-
```
|
|
126
|
-
|
|
124
|
+
```text
|
|
125
|
+
/new
|
|
127
126
|
```
|
|
128
127
|
|
|
129
128
|
Resume from a specific point:
|