tau-coding-agent 0.4.5__tar.gz → 0.4.6__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.5/tau_coding_agent.egg-info → tau_coding_agent-0.4.6}/PKG-INFO +1 -1
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/architecture.md +33 -2
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/extensions.md +48 -2
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/project-structure.md +19 -6
- tau_coding_agent-0.4.6/docs/python-api.md +501 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/usage.md +6 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/pyproject.toml +1 -1
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/agent/prompt/builder.py +25 -4
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/agent/prompt/types.py +4 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/commands/types.py +6 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/console/cli.py +1 -1
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/extensions/__init__.py +6 -2
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/extensions/api.py +19 -4
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/extensions/context.py +46 -2
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/extensions/loader.py +43 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/extensions/runtime.py +14 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/service.py +14 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/app.py +5 -8
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/input_handler.py +16 -10
- tau_coding_agent-0.4.6/tau/resources/__init__.py +18 -0
- tau_coding_agent-0.4.6/tau/resources/loader.py +480 -0
- tau_coding_agent-0.4.6/tau/resources/types.py +57 -0
- tau_coding_agent-0.4.6/tau/runtime/dependencies.py +58 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/runtime/service.py +253 -72
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/runtime/types.py +189 -140
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/themes/registry.py +15 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6/tau_coding_agent.egg-info}/PKG-INFO +1 -1
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau_coding_agent.egg-info/SOURCES.txt +8 -0
- tau_coding_agent-0.4.6/tests/test_command_execution_policy.py +55 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_command_registry.py +1 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_extension_api.py +89 -0
- tau_coding_agent-0.4.6/tests/test_extension_lifecycle.py +234 -0
- tau_coding_agent-0.4.6/tests/test_resource_loader.py +334 -0
- tau_coding_agent-0.4.6/tests/test_runtime_sdk.py +286 -0
- tau_coding_agent-0.4.5/docs/python-api.md +0 -274
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/LICENSE +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/MANIFEST.in +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/README.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/IMPLEMENTATION_SUMMARY.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/auth.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/cli-reference.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/development.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/docs.json +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/index.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/inference-providers.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/installation.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/messages.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/project-context.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/prompts.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/quickstart.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/sessions.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/settings.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/skills.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/themes.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/docs/tools.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/setup.cfg +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/extensions/footer/model.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/models/text.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/edit.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/grep.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/read.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/terminal.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/engine/service.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/openai_codex_responses.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/openai_responses.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/text/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/message/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/appearance.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/command_palette.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/config_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/extension_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/file_picker.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/layout.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/message_list.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/model_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/oauth_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/overlays.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/selector_controller.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/session_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/settings_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/theme_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/thinking_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/session/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/settings/manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/settings/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/autocomplete.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/components/select_list.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/components/text_input.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/markdown.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/theme.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/tui.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/ui_context.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/tui/utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/utils/http_proxy.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau_coding_agent.egg-info/requires.txt +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_builtin_tools.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_editor_protocol.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_markdown.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_model_selector_modal.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_selector_controller.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_settings_storage.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_text_input.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_text_llm_invoke.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_theme_loader.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_thinking_render.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_tool_render.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_tui_layout_sizing.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_tui_theme.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.4.5 → tau_coding_agent-0.4.6}/tests/test_version_check.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tau-coding-agent
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6
|
|
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
|
|
@@ -70,6 +70,7 @@ User input flows through these stages:
|
|
|
70
70
|
|--------|---------|
|
|
71
71
|
| `session/` | Session JSONL persistence, compaction, branching |
|
|
72
72
|
| `settings/` | Configuration from JSON files |
|
|
73
|
+
| `resources/` | Unified discovery of extensions, skills, prompts, and themes |
|
|
73
74
|
| `auth/` | Credential storage and resolution |
|
|
74
75
|
| `message/` | Message type definitions |
|
|
75
76
|
| `trust/` | Trust and permission checks |
|
|
@@ -97,7 +98,7 @@ User input flows through these stages:
|
|
|
97
98
|
|
|
98
99
|
| Module | Purpose |
|
|
99
100
|
|--------|---------|
|
|
100
|
-
| `packages/` |
|
|
101
|
+
| `packages/` | Installed package and dependency management |
|
|
101
102
|
| `rpc/` | JSON-RPC protocol for IDE integration |
|
|
102
103
|
|
|
103
104
|
## Agent Execution State Machine
|
|
@@ -141,6 +142,11 @@ TUI overlays participate in focus lifecycle. Hiding or closing a capturing
|
|
|
141
142
|
overlay restores the next visible overlay or its previous focus target.
|
|
142
143
|
Components exposing `dispose()` are disposed when their overlay closes.
|
|
143
144
|
|
|
145
|
+
Slash commands declare whether they require an idle agent. Idle-only commands
|
|
146
|
+
are deferred until the current turn settles; UI-only and read-only commands may
|
|
147
|
+
opt into immediate dispatch during a turn. Normal Enter input remains steering,
|
|
148
|
+
and Alt+Enter remains a post-turn follow-up message.
|
|
149
|
+
|
|
144
150
|
## Message Types and Context
|
|
145
151
|
|
|
146
152
|
Messages in sessions are typed:
|
|
@@ -211,12 +217,37 @@ Tools are executed in a sandboxed environment:
|
|
|
211
217
|
6. Result is serialized and added to context
|
|
212
218
|
```
|
|
213
219
|
|
|
214
|
-
Built-in tools (bash, read, write, edit, glob, grep, ls) are
|
|
220
|
+
Built-in tools (bash, read, write, edit, glob, grep, ls) are enabled by default.
|
|
221
|
+
`RuntimeConfig` can allow or exclude tools by name. Custom tools are registered
|
|
222
|
+
via extensions or passed directly to the runtime.
|
|
223
|
+
|
|
224
|
+
Programmatic runtimes can replace constructed services through
|
|
225
|
+
`RuntimeDependencies`. Typed factories cover settings, LLM/model/auth wiring,
|
|
226
|
+
session storage, hooks, and the tool registry. Session-bound factories run
|
|
227
|
+
again when the active session is replaced.
|
|
228
|
+
|
|
229
|
+
`Runtime.create_with_result()` returns the initialized runtime together with
|
|
230
|
+
resource diagnostics, extension errors, and requested-versus-selected
|
|
231
|
+
model/provider resolution. `Runtime.create()` remains the convenience API when
|
|
232
|
+
the caller does not need startup details.
|
|
233
|
+
|
|
234
|
+
Extension reloads pass through a serialized coordinator. Callback-triggered or
|
|
235
|
+
mid-turn requests wait until extension dispatch and the agent lifecycle settle.
|
|
236
|
+
Runtime generations invalidate contexts captured before reload, session
|
|
237
|
+
replacement, or shutdown, and shutdown detaches the extension runtime from its
|
|
238
|
+
hook bus.
|
|
215
239
|
|
|
216
240
|
## Extension Points
|
|
217
241
|
|
|
218
242
|
Tau is designed to be extended without modifying core code. Key extension points via the `tau` parameter in `register()`:
|
|
219
243
|
|
|
244
|
+
Resource discovery is centralized behind the replaceable `ResourceLoader`
|
|
245
|
+
protocol. `DefaultResourceLoader` supports per-resource overrides. Startup and
|
|
246
|
+
`/reload` consume one `ResourceSnapshot`, keeping extensions, skills, prompts,
|
|
247
|
+
themes, context files, and structured diagnostics consistent. Diagnostics
|
|
248
|
+
identify invalid configured paths, package manifests/resources, hook paths, and
|
|
249
|
+
context read failures without preventing valid resources from loading.
|
|
250
|
+
|
|
220
251
|
### Tools
|
|
221
252
|
|
|
222
253
|
Register custom tools that the agent can call:
|
|
@@ -89,6 +89,34 @@ def register(tau):
|
|
|
89
89
|
pass
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
+
### Inline extension factories
|
|
93
|
+
|
|
94
|
+
Python API users can supply the same registration function directly through
|
|
95
|
+
`RuntimeConfig`, without creating or installing an extension file:
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
from tau.extensions import ExtensionAPI
|
|
99
|
+
from tau.runtime.types import RuntimeConfig
|
|
100
|
+
|
|
101
|
+
def configure(tau: ExtensionAPI) -> None:
|
|
102
|
+
tau.register_tool(MyTool())
|
|
103
|
+
tau.append_prompt("Use the embedding application's workflow.")
|
|
104
|
+
|
|
105
|
+
config = RuntimeConfig(
|
|
106
|
+
cwd=Path.cwd(),
|
|
107
|
+
extension_factories=[configure],
|
|
108
|
+
)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Inline factories receive the normal `ExtensionAPI`, can be synchronous or
|
|
112
|
+
asynchronous, and load after file-based extensions. They participate in the
|
|
113
|
+
same tool, command, hook, provider, service, prompt, theme, and UI registration
|
|
114
|
+
systems. Factory failures are isolated and reported as `ExtensionError`.
|
|
115
|
+
|
|
116
|
+
`/reload` unloads the old inline extensions and executes the factories again,
|
|
117
|
+
preventing duplicate hook subscriptions. Session replacement reuses the active
|
|
118
|
+
extension runtime and does not rerun factories.
|
|
119
|
+
|
|
92
120
|
`register` may be `async` if setup requires awaiting:
|
|
93
121
|
|
|
94
122
|
```python
|
|
@@ -786,7 +814,7 @@ def register(tau):
|
|
|
786
814
|
| Method | Description |
|
|
787
815
|
|--------|-------------|
|
|
788
816
|
| `tau.register_tool(tool)` | Add a tool the agent can call |
|
|
789
|
-
| `tau.register_command(name, desc, handler, aliases=[], get_argument_completions=None)` | Add a `/name` slash command
|
|
817
|
+
| `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 |
|
|
790
818
|
| `tau.on(event, handler)` / `@tau.on(event)` | Subscribe to a lifecycle event |
|
|
791
819
|
| `tau.register_shortcut(key, desc, handler)` | Bind a keyboard shortcut |
|
|
792
820
|
| `tau.append_prompt(text)` | Append text to the system prompt |
|
|
@@ -1423,6 +1451,18 @@ async def on_start(event, ctx):
|
|
|
1423
1451
|
`/reload` re-discovers and hot-reloads all extensions, skills, prompts, and
|
|
1424
1452
|
settings without restarting the session.
|
|
1425
1453
|
|
|
1454
|
+
Reload requests are serialized. A request made from an extension callback or
|
|
1455
|
+
while the agent is processing is queued until the callback pipeline and complete
|
|
1456
|
+
agent lifecycle settle. Multiple queued requests are coalesced. Consequently,
|
|
1457
|
+
`await ctx.reload()` acknowledges a request but does not guarantee that a
|
|
1458
|
+
deferred reload has already completed.
|
|
1459
|
+
|
|
1460
|
+
Contexts are generation-bound. An `ExtensionContext` captured before `/reload`,
|
|
1461
|
+
`/new`, `/resume`, `/clone`, or runtime shutdown raises
|
|
1462
|
+
`StaleExtensionContextError` when reused. Do not retain contexts in long-lived
|
|
1463
|
+
background tasks; capture immutable values or acquire a fresh context from a
|
|
1464
|
+
new callback.
|
|
1465
|
+
|
|
1426
1466
|
**What gets picked up:**
|
|
1427
1467
|
- New or modified extension files
|
|
1428
1468
|
- New or modified skill and prompt template files
|
|
@@ -1432,10 +1472,16 @@ settings without restarting the session.
|
|
|
1432
1472
|
**What persists across reload:**
|
|
1433
1473
|
- The current session (messages, branching state)
|
|
1434
1474
|
- Auth credentials
|
|
1435
|
-
-
|
|
1475
|
+
- Normally imported third-party Python modules, which remain cached in `sys.modules`
|
|
1476
|
+
- External state not explicitly released by the extension
|
|
1436
1477
|
|
|
1437
1478
|
**What resets:**
|
|
1438
1479
|
- All registered tools, commands, shortcuts, and event handlers — re-registered from scratch
|
|
1439
1480
|
- The system prompt — rebuilt from SYSTEM.md and all `append_prompt` calls
|
|
1481
|
+
- Extension entry-module globals and inline factory state
|
|
1482
|
+
|
|
1483
|
+
Tau emits `extension_unload` before replacing an extension runtime and
|
|
1484
|
+
`runtime_stop` before shutdown. Use those events to release subprocesses,
|
|
1485
|
+
background tasks, sockets, and registrations outside Tau.
|
|
1440
1486
|
|
|
1441
1487
|
After reload, new tools are available to the model immediately in the next turn.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Project Structure
|
|
2
2
|
|
|
3
|
-
Tau consists of
|
|
3
|
+
Tau consists of 230 Python modules organized into 25 main packages. This page documents the codebase organization and provides module-by-module reference for contributors and agents.
|
|
4
4
|
|
|
5
5
|
## Directory Structure
|
|
6
6
|
|
|
7
7
|
```
|
|
8
|
-
tau/ # Main package (
|
|
8
|
+
tau/ # Main package (230 modules)
|
|
9
9
|
├── __init__.py
|
|
10
10
|
├── content_registry.py # Content registry abstractions
|
|
11
11
|
├── agent/ # Agent execution service
|
|
@@ -31,6 +31,7 @@ tau/ # Main package (205 modules)
|
|
|
31
31
|
├── message/ # Message types and utilities
|
|
32
32
|
├── packages/ # Package/dependency management
|
|
33
33
|
├── prompts/ # Prompt template system
|
|
34
|
+
├── resources/ # Unified runtime resource discovery
|
|
34
35
|
├── rpc/ # JSON-RPC protocol for IDE integration
|
|
35
36
|
├── runtime/ # Agent runtime service
|
|
36
37
|
├── session/ # Session management and persistence
|
|
@@ -154,12 +155,22 @@ Message data structures and utilities.
|
|
|
154
155
|
|
|
155
156
|
### `packages/` - Package Management
|
|
156
157
|
|
|
157
|
-
|
|
158
|
+
Installed package and dependency management.
|
|
158
159
|
|
|
159
160
|
- `manager.py` - Package management
|
|
160
161
|
- `types.py` - Package types
|
|
161
162
|
- `utils.py` - Package utilities
|
|
162
163
|
|
|
164
|
+
### `resources/` - Resource Discovery
|
|
165
|
+
|
|
166
|
+
The replaceable loader builds one immutable snapshot from built-in, global,
|
|
167
|
+
project, installed-package, hook-provided, and context-file resources. It
|
|
168
|
+
supports focused overrides and structured diagnostics. Runtime startup and
|
|
169
|
+
`/reload` both consume it.
|
|
170
|
+
|
|
171
|
+
- `loader.py` - Resource loader protocol, default discovery, and registry application
|
|
172
|
+
- `types.py` - `ResourceContext`, immutable `ResourceSnapshot`, context files, and diagnostics
|
|
173
|
+
|
|
163
174
|
### `prompts/` - Prompt Template System
|
|
164
175
|
|
|
165
176
|
Prompt loading and variable substitution.
|
|
@@ -178,10 +189,12 @@ JSON-RPC server for IDE integration.
|
|
|
178
189
|
|
|
179
190
|
### `runtime/` - Agent Runtime
|
|
180
191
|
|
|
181
|
-
Wires together agent, session, engine, and extensions
|
|
192
|
+
Wires together agent, session, engine, and extensions with replaceable service
|
|
193
|
+
factories for programmatic embedding.
|
|
182
194
|
|
|
195
|
+
- `dependencies.py` - Typed dependency factories and creation contexts
|
|
183
196
|
- `service.py` - Main runtime orchestration
|
|
184
|
-
- `types.py` - Runtime state types
|
|
197
|
+
- `types.py` - Runtime state, configuration, and structured startup result types
|
|
185
198
|
|
|
186
199
|
### `session/` - Session Management
|
|
187
200
|
|
|
@@ -400,7 +413,7 @@ See [Extensions Guide](extensions.md) for detailed examples.
|
|
|
400
413
|
## Code Statistics
|
|
401
414
|
|
|
402
415
|
- **Total modules**: 205 Python files
|
|
403
|
-
- **Main package**: tau/ (
|
|
416
|
+
- **Main package**: tau/ (25 subpackages)
|
|
404
417
|
- **Test coverage**: tests/ directory
|
|
405
418
|
- **Lines of code**: ~8,000 LOC (excluding tests and docs)
|
|
406
419
|
- **Type hints**: Full type coverage with mypy/pyright
|