tau-coding-agent 0.5.1__tar.gz → 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tau_coding_agent-0.5.1/tau_coding_agent.egg-info → tau_coding_agent-0.5.2}/PKG-INFO +1 -1
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/pyproject.toml +1 -1
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/rpc/mode.py +10 -5
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/terminal.py +146 -2
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/tui.py +56 -2
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2/tau_coding_agent.egg-info}/PKG-INFO +1 -1
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/LICENSE +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/MANIFEST.in +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/README.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/architecture.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/auth.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/cli-reference.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/creating-tools.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/development.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/docs.json +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/engine.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/extensions.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/index.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/inference-providers.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/inference.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/installation.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/messages.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/project-context.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/project-structure.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/prompts.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/python-api.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/quickstart.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/sessions.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/settings.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/skills.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/themes.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/tools.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/tui.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/docs/usage.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/setup.cfg +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/agent/prompt/builder.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/btw/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/model.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/models/text.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/edit.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/grep.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/read.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/terminal.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/console/cli.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/engine/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/extensions/loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/extensions/runtime.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/dialect.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/google_antigravity.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_codex_responses.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_responses.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/text/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/api/video/zai_video.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/message/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/app.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/appearance.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/command_palette.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/config_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/extension_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/file_picker.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/layout.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/message_list.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/model_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/oauth_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/overlays.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/selector_controller.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/session_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/settings_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/theme_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/thinking_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/voice_selector.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/interactive/ui_context.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/runtime/service.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/runtime/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/session/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/settings/manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/settings/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/autocomplete.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/components/select_list.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/components/text_input.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/markdown.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/theme.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/tui/utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/utils/http_proxy.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/utils/telemetry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/SOURCES.txt +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/requires.txt +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_ask_user_extension.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_autocomplete_modifiers.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_builtin_tools.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_editor_protocol.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_escape_behavior.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_extension_api.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_inference_dialect.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_markdown.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_model_selector_modal.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_peer_extension.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_runtime_sdk.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_selector_controller.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_settings_storage.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_subagents_extension.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_telemetry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_text_input.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_text_llm_invoke.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_theme_loader.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_thinking_render.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tool_render.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_layout_sizing.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_public_api.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_renderer.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_select_list.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_theme.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tests/test_version_check.py +0 -0
- {tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/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.5.
|
|
3
|
+
Version: 0.5.2
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tau-coding-agent"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.2"
|
|
8
8
|
description = "A self-extensible agent CLI with terminal UI, multi-provider LLM support, session management with branching, and a plugin system for tools and commands"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -790,11 +790,16 @@ async def run_rpc_mode(runtime: Runtime) -> None:
|
|
|
790
790
|
|
|
791
791
|
import signal as _signal
|
|
792
792
|
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
793
|
+
# SIGHUP does not exist on Windows (AttributeError), and add_signal_handler
|
|
794
|
+
# is unsupported on the Proactor loop (NotImplementedError). Skip whatever the
|
|
795
|
+
# platform lacks instead of failing.
|
|
796
|
+
for _sig_name in ("SIGTERM", "SIGHUP"):
|
|
797
|
+
_sig = getattr(_signal, _sig_name, None)
|
|
798
|
+
if _sig is None:
|
|
799
|
+
continue
|
|
800
|
+
# Windows / unsupported event loop → add_signal_handler raises.
|
|
801
|
+
with contextlib.suppress(NotImplementedError, OSError):
|
|
802
|
+
loop.add_signal_handler(_sig, _on_signal)
|
|
798
803
|
|
|
799
804
|
# ── Announce ready ───────────────────────────────────────────────────────
|
|
800
805
|
sm = runtime.session_manager
|
|
@@ -4,12 +4,24 @@ import asyncio
|
|
|
4
4
|
import os
|
|
5
5
|
import signal
|
|
6
6
|
import sys
|
|
7
|
-
import
|
|
8
|
-
import tty
|
|
7
|
+
import threading
|
|
9
8
|
from collections.abc import Callable
|
|
10
9
|
from dataclasses import dataclass
|
|
11
10
|
from typing import Any, Literal
|
|
12
11
|
|
|
12
|
+
# termios/tty are POSIX-only. On Windows the console is driven through the
|
|
13
|
+
# Win32 console API instead (see the _*_windows helpers on Terminal).
|
|
14
|
+
# The guard tests ``sys.platform`` directly so type checkers can statically
|
|
15
|
+
# narrow the import as bound on POSIX targets.
|
|
16
|
+
_IS_WINDOWS = sys.platform == "win32"
|
|
17
|
+
|
|
18
|
+
if sys.platform != "win32":
|
|
19
|
+
import termios
|
|
20
|
+
import tty
|
|
21
|
+
|
|
22
|
+
# Windows has no SIGWINCH, so resize is detected by polling the console size.
|
|
23
|
+
_WIN_RESIZE_POLL_INTERVAL = 0.25
|
|
24
|
+
|
|
13
25
|
# ── Terminal Capabilities ─────────────────────────────────────────────────────
|
|
14
26
|
|
|
15
27
|
ImageProtocol = Literal["kitty", "iterm2"] | None
|
|
@@ -178,6 +190,13 @@ class Terminal:
|
|
|
178
190
|
self._original_termios: list | None = None
|
|
179
191
|
self._resize_callbacks: list[Callable[[], None]] = []
|
|
180
192
|
self._prev_sigwinch: Any = None
|
|
193
|
+
# Saved Windows console modes (restored on exit); unused on POSIX.
|
|
194
|
+
self._win_stdin_mode: int | None = None
|
|
195
|
+
self._win_stdout_mode: int | None = None
|
|
196
|
+
# Windows resize poller (no SIGWINCH there); unused on POSIX.
|
|
197
|
+
self._win_resize_thread: threading.Thread | None = None
|
|
198
|
+
self._win_resize_stop: threading.Event | None = None
|
|
199
|
+
self._loop: asyncio.AbstractEventLoop | None = None
|
|
181
200
|
self.width, self.height = self._get_size()
|
|
182
201
|
|
|
183
202
|
# -------------------------------------------------------------------------
|
|
@@ -192,6 +211,9 @@ class Terminal:
|
|
|
192
211
|
Characters are sent immediately without waiting for Enter.
|
|
193
212
|
Also saves the original terminal settings and signal handlers for later restoration.
|
|
194
213
|
"""
|
|
214
|
+
if _IS_WINDOWS:
|
|
215
|
+
self._enter_raw_mode_windows()
|
|
216
|
+
return
|
|
195
217
|
fd = sys.stdin.fileno()
|
|
196
218
|
self._original_termios = termios.tcgetattr(fd) # Save original settings
|
|
197
219
|
tty.setraw(fd) # Switch to raw mode (no echo, no buffering)
|
|
@@ -207,6 +229,9 @@ class Terminal:
|
|
|
207
229
|
- Restores original terminal settings (echo, buffering, signals re-enabled)
|
|
208
230
|
- Restores the original signal handler for terminal resize events
|
|
209
231
|
"""
|
|
232
|
+
if _IS_WINDOWS:
|
|
233
|
+
self._exit_raw_mode_windows()
|
|
234
|
+
return
|
|
210
235
|
if self._original_termios is not None:
|
|
211
236
|
# TCSADRAIN: wait for pending output to finish before restoring
|
|
212
237
|
termios.tcsetattr(sys.stdin.fileno(), termios.TCSADRAIN, self._original_termios)
|
|
@@ -216,6 +241,125 @@ class Terminal:
|
|
|
216
241
|
signal.signal(signal.SIGWINCH, self._prev_sigwinch)
|
|
217
242
|
self._prev_sigwinch = None
|
|
218
243
|
|
|
244
|
+
# -------------------------------------------------------------------------
|
|
245
|
+
# Windows console backend
|
|
246
|
+
# -------------------------------------------------------------------------
|
|
247
|
+
|
|
248
|
+
# Win32 console-mode flags (see docs.microsoft.com SetConsoleMode).
|
|
249
|
+
_WIN_ENABLE_PROCESSED_INPUT = 0x0001
|
|
250
|
+
_WIN_ENABLE_LINE_INPUT = 0x0002
|
|
251
|
+
_WIN_ENABLE_ECHO_INPUT = 0x0004
|
|
252
|
+
_WIN_ENABLE_VIRTUAL_TERMINAL_INPUT = 0x0200
|
|
253
|
+
_WIN_ENABLE_PROCESSED_OUTPUT = 0x0001
|
|
254
|
+
_WIN_ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004
|
|
255
|
+
_WIN_STD_INPUT_HANDLE = -10
|
|
256
|
+
_WIN_STD_OUTPUT_HANDLE = -11
|
|
257
|
+
|
|
258
|
+
def _enter_raw_mode_windows(self) -> None:
|
|
259
|
+
"""Put the Windows console into raw + VT mode via the Win32 console API.
|
|
260
|
+
|
|
261
|
+
termios/tty/SIGWINCH do not exist on Windows, so instead we clear the
|
|
262
|
+
console's line-input/echo/processing flags (raw keyboard input) and turn
|
|
263
|
+
on virtual-terminal processing so ANSI escape sequences are honoured on
|
|
264
|
+
both input and output. Resize is not delivered as a signal on Windows;
|
|
265
|
+
the size is re-read lazily by ``_get_size()``.
|
|
266
|
+
"""
|
|
267
|
+
import ctypes
|
|
268
|
+
|
|
269
|
+
if sys.platform != "win32": # pragma: no cover - keeps type checkers on win32 stubs
|
|
270
|
+
return
|
|
271
|
+
|
|
272
|
+
k32 = ctypes.windll.kernel32
|
|
273
|
+
hin = k32.GetStdHandle(self._WIN_STD_INPUT_HANDLE)
|
|
274
|
+
hout = k32.GetStdHandle(self._WIN_STD_OUTPUT_HANDLE)
|
|
275
|
+
|
|
276
|
+
in_mode = ctypes.c_uint32()
|
|
277
|
+
if k32.GetConsoleMode(hin, ctypes.byref(in_mode)):
|
|
278
|
+
self._win_stdin_mode = in_mode.value
|
|
279
|
+
new_in = (
|
|
280
|
+
in_mode.value
|
|
281
|
+
& ~(
|
|
282
|
+
self._WIN_ENABLE_PROCESSED_INPUT
|
|
283
|
+
| self._WIN_ENABLE_LINE_INPUT
|
|
284
|
+
| self._WIN_ENABLE_ECHO_INPUT
|
|
285
|
+
)
|
|
286
|
+
) | self._WIN_ENABLE_VIRTUAL_TERMINAL_INPUT
|
|
287
|
+
k32.SetConsoleMode(hin, new_in)
|
|
288
|
+
|
|
289
|
+
out_mode = ctypes.c_uint32()
|
|
290
|
+
if k32.GetConsoleMode(hout, ctypes.byref(out_mode)):
|
|
291
|
+
self._win_stdout_mode = out_mode.value
|
|
292
|
+
k32.SetConsoleMode(
|
|
293
|
+
hout,
|
|
294
|
+
out_mode.value
|
|
295
|
+
| self._WIN_ENABLE_PROCESSED_OUTPUT
|
|
296
|
+
| self._WIN_ENABLE_VIRTUAL_TERMINAL_PROCESSING,
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
self._start_resize_poller_windows()
|
|
300
|
+
|
|
301
|
+
def _exit_raw_mode_windows(self) -> None:
|
|
302
|
+
"""Restore the Windows console modes saved by _enter_raw_mode_windows."""
|
|
303
|
+
import ctypes
|
|
304
|
+
|
|
305
|
+
if sys.platform != "win32": # pragma: no cover - keeps type checkers on win32 stubs
|
|
306
|
+
return
|
|
307
|
+
|
|
308
|
+
self._stop_resize_poller_windows()
|
|
309
|
+
|
|
310
|
+
k32 = ctypes.windll.kernel32
|
|
311
|
+
if self._win_stdin_mode is not None:
|
|
312
|
+
k32.SetConsoleMode(k32.GetStdHandle(self._WIN_STD_INPUT_HANDLE), self._win_stdin_mode)
|
|
313
|
+
self._win_stdin_mode = None
|
|
314
|
+
if self._win_stdout_mode is not None:
|
|
315
|
+
k32.SetConsoleMode(k32.GetStdHandle(self._WIN_STD_OUTPUT_HANDLE), self._win_stdout_mode)
|
|
316
|
+
self._win_stdout_mode = None
|
|
317
|
+
|
|
318
|
+
def _start_resize_poller_windows(self) -> None:
|
|
319
|
+
"""Start a daemon thread that polls the console size (Windows has no SIGWINCH).
|
|
320
|
+
|
|
321
|
+
Windows delivers no resize signal, so a background thread samples
|
|
322
|
+
``_get_size()`` on an interval and fires the registered resize callbacks
|
|
323
|
+
(on the event loop thread) whenever the dimensions change.
|
|
324
|
+
"""
|
|
325
|
+
try:
|
|
326
|
+
self._loop = asyncio.get_running_loop()
|
|
327
|
+
except RuntimeError:
|
|
328
|
+
self._loop = None
|
|
329
|
+
self._win_resize_stop = threading.Event()
|
|
330
|
+
self._win_resize_thread = threading.Thread(
|
|
331
|
+
target=self._win_resize_poll_loop,
|
|
332
|
+
args=(self._win_resize_stop,),
|
|
333
|
+
name="tau-tui-resize",
|
|
334
|
+
daemon=True,
|
|
335
|
+
)
|
|
336
|
+
self._win_resize_thread.start()
|
|
337
|
+
|
|
338
|
+
def _stop_resize_poller_windows(self) -> None:
|
|
339
|
+
if self._win_resize_stop is not None:
|
|
340
|
+
self._win_resize_stop.set()
|
|
341
|
+
self._win_resize_thread = None
|
|
342
|
+
self._win_resize_stop = None
|
|
343
|
+
self._loop = None
|
|
344
|
+
|
|
345
|
+
def _win_resize_poll_loop(self, stop: threading.Event) -> None:
|
|
346
|
+
"""Poll the terminal size and fire callbacks on change until ``stop`` is set."""
|
|
347
|
+
while not stop.wait(_WIN_RESIZE_POLL_INTERVAL):
|
|
348
|
+
new_size = self._get_size()
|
|
349
|
+
if new_size == (self.width, self.height):
|
|
350
|
+
continue
|
|
351
|
+
self.width, self.height = new_size
|
|
352
|
+
loop = self._loop
|
|
353
|
+
if loop is None:
|
|
354
|
+
for cb in list(self._resize_callbacks):
|
|
355
|
+
cb()
|
|
356
|
+
continue
|
|
357
|
+
for cb in list(self._resize_callbacks):
|
|
358
|
+
try:
|
|
359
|
+
loop.call_soon_threadsafe(cb)
|
|
360
|
+
except RuntimeError:
|
|
361
|
+
return # event loop already closed
|
|
362
|
+
|
|
219
363
|
def enter_alt_screen(self) -> None:
|
|
220
364
|
"""
|
|
221
365
|
Switch to alternate screen buffer (like vim or less does).
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import logging
|
|
5
5
|
import sys
|
|
6
|
+
import threading
|
|
6
7
|
import time
|
|
7
8
|
from collections.abc import Awaitable, Callable
|
|
8
9
|
from dataclasses import dataclass, field
|
|
@@ -15,6 +16,10 @@ from tau.tui.utils import set_window_focused
|
|
|
15
16
|
|
|
16
17
|
_log = logging.getLogger(__name__)
|
|
17
18
|
|
|
19
|
+
# The asyncio event loops on Windows can't watch a console handle with
|
|
20
|
+
# add_reader, so stdin is pumped from a background thread there instead.
|
|
21
|
+
_IS_WINDOWS = sys.platform == "win32"
|
|
22
|
+
|
|
18
23
|
if TYPE_CHECKING:
|
|
19
24
|
pass
|
|
20
25
|
|
|
@@ -805,6 +810,7 @@ class TUI(Container):
|
|
|
805
810
|
self._render_timer: asyncio.TimerHandle | None = None
|
|
806
811
|
self._render_requested = False
|
|
807
812
|
self._esc_timer: asyncio.TimerHandle | None = None
|
|
813
|
+
self._stdin_thread: threading.Thread | None = None
|
|
808
814
|
|
|
809
815
|
self._input_handlers: list[EventHandler] = []
|
|
810
816
|
self._intercept_handlers: list[EventHandler] = []
|
|
@@ -878,7 +884,19 @@ class TUI(Container):
|
|
|
878
884
|
self._request_render()
|
|
879
885
|
|
|
880
886
|
self._terminal.enable_kitty_keyboard()
|
|
881
|
-
|
|
887
|
+
if _IS_WINDOWS:
|
|
888
|
+
# Windows event loops can't add_reader() a console handle, so a
|
|
889
|
+
# daemon thread does the blocking read and hands each chunk back
|
|
890
|
+
# to the loop thread.
|
|
891
|
+
self._stdin_thread = threading.Thread(
|
|
892
|
+
target=self._win_stdin_loop,
|
|
893
|
+
args=(loop,),
|
|
894
|
+
name="tau-tui-stdin",
|
|
895
|
+
daemon=True,
|
|
896
|
+
)
|
|
897
|
+
self._stdin_thread.start()
|
|
898
|
+
else:
|
|
899
|
+
loop.add_reader(sys.stdin.fileno(), self._on_stdin_ready)
|
|
882
900
|
|
|
883
901
|
# Query terminal background colour for theme hints, then notify any
|
|
884
902
|
# listener (e.g. auto light/dark theme selection).
|
|
@@ -891,7 +909,13 @@ class TUI(Container):
|
|
|
891
909
|
try:
|
|
892
910
|
await self._stop_event.wait()
|
|
893
911
|
finally:
|
|
894
|
-
|
|
912
|
+
if _IS_WINDOWS:
|
|
913
|
+
# The daemon reader observes _stop_event and exits after its
|
|
914
|
+
# next read returns (or dies with the process); nothing to
|
|
915
|
+
# unregister from the loop.
|
|
916
|
+
self._stdin_thread = None
|
|
917
|
+
else:
|
|
918
|
+
loop.remove_reader(sys.stdin.fileno())
|
|
895
919
|
self._cancel_timers()
|
|
896
920
|
self._terminal.disable_kitty_keyboard()
|
|
897
921
|
self._terminal.disable_bracketed_paste()
|
|
@@ -1175,11 +1199,20 @@ class TUI(Container):
|
|
|
1175
1199
|
# -------------------------------------------------------------------------
|
|
1176
1200
|
|
|
1177
1201
|
def _on_stdin_ready(self) -> None:
|
|
1202
|
+
"""Loop-thread callback (POSIX add_reader): read stdin and process it."""
|
|
1178
1203
|
try:
|
|
1179
1204
|
data = self._terminal.read_raw()
|
|
1180
1205
|
except OSError:
|
|
1181
1206
|
return
|
|
1207
|
+
self._process_input(data)
|
|
1182
1208
|
|
|
1209
|
+
def _process_input(self, data: str) -> None:
|
|
1210
|
+
"""Feed raw input bytes through the parser and dispatch resulting events.
|
|
1211
|
+
|
|
1212
|
+
Runs on the event-loop thread. On POSIX it is called directly from the
|
|
1213
|
+
add_reader callback; on Windows it is scheduled via call_soon_threadsafe
|
|
1214
|
+
from the stdin reader thread.
|
|
1215
|
+
"""
|
|
1183
1216
|
if not data:
|
|
1184
1217
|
return
|
|
1185
1218
|
|
|
@@ -1194,6 +1227,27 @@ class TUI(Container):
|
|
|
1194
1227
|
if events:
|
|
1195
1228
|
self._request_render()
|
|
1196
1229
|
|
|
1230
|
+
def _win_stdin_loop(self, loop: asyncio.AbstractEventLoop) -> None:
|
|
1231
|
+
"""Windows stdin pump: blocking-read on a daemon thread.
|
|
1232
|
+
|
|
1233
|
+
Reads keystrokes with the console in raw/VT mode (set by Terminal) and
|
|
1234
|
+
marshals each chunk onto the event loop via call_soon_threadsafe, since
|
|
1235
|
+
Windows event loops cannot watch a console handle with add_reader.
|
|
1236
|
+
"""
|
|
1237
|
+
while not self._stop_event.is_set():
|
|
1238
|
+
try:
|
|
1239
|
+
data = self._terminal.read_raw()
|
|
1240
|
+
except OSError:
|
|
1241
|
+
break
|
|
1242
|
+
if not data:
|
|
1243
|
+
continue
|
|
1244
|
+
if self._stop_event.is_set():
|
|
1245
|
+
break
|
|
1246
|
+
try:
|
|
1247
|
+
loop.call_soon_threadsafe(self._process_input, data)
|
|
1248
|
+
except RuntimeError:
|
|
1249
|
+
break # event loop already closed
|
|
1250
|
+
|
|
1197
1251
|
def _schedule_esc_flush(self) -> None:
|
|
1198
1252
|
if self._esc_timer is not None:
|
|
1199
1253
|
self._esc_timer.cancel()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tau-coding-agent
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.2
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/extensions/header/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/skills/skill-creator/LICENSE.txt
RENAMED
|
File without changes
|
{tau_coding_agent-0.5.1 → tau_coding_agent-0.5.2}/tau/builtins/skills/skill-creator/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|