tau-coding-agent 0.7.6__tar.gz → 0.7.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tau_coding_agent-0.7.6/tau_coding_agent.egg-info → tau_coding_agent-0.7.7}/PKG-INFO +1 -1
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/pyproject.toml +1 -1
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/__init__.py +66 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/computer.py +306 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/README.md +941 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/__init__.py +396 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/controls.py +2284 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/core.py +2056 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/enums.py +982 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/events.py +416 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/patterns.py +478 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/desktop/__init__.py +3 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/desktop/config.py +26 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/desktop/service.py +217 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/tree/__init__.py +12 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/tree/config.py +109 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/tree/service.py +410 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/tree/views.py +122 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/watchdog/__init__.py +3 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/watchdog/service.py +98 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/manifest.json +25 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/router.py +41 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/state.py +28 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/types.py +192 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/desktop/__init__.py +3 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/desktop/service.py +243 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/tree/__init__.py +13 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/tree/cache_utils.py +121 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/tree/config.py +74 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/tree/service.py +737 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/tree/utils.py +18 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/tree/views.py +155 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/uia/__init__.py +5 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/uia/controls.py +5803 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/uia/core.py +2575 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/uia/enums.py +2120 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/uia/events.py +84 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/uia/exceptions.py +102 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/uia/patterns.py +2158 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/watchdog/__init__.py +1 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/watchdog/event_handlers.py +66 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/windows/watchdog/service.py +236 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/__init__.py +4 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/engines/base.py +8 -0
- tau_coding_agent-0.7.7/tau/builtins/extensions/web/engines/ddgs_engine.py +166 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/engines/tavily_engine.py +5 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/console/cli.py +20 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/engine/service.py +1 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/settings/paths.py +12 -0
- tau_coding_agent-0.7.7/tau/utils/__init__.py +0 -0
- tau_coding_agent-0.7.7/tau/utils/logging.py +33 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7/tau_coding_agent.egg-info}/PKG-INFO +1 -1
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau_coding_agent.egg-info/SOURCES.txt +42 -0
- tau_coding_agent-0.7.6/tau/builtins/extensions/web/engines/ddgs_engine.py +0 -146
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/LICENSE +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/MANIFEST.in +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/README.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/architecture.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/auth.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/cli-reference.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/creating-tools.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/development.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/docs.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/engine.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/extensions.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/index.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/inference-providers.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/inference.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/installation.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/messages.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/project-context.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/project-structure.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/prompts.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/python-api.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/quickstart.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/sessions.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/settings.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/skills.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/themes.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/tools.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/tui.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/docs/usage.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/setup.cfg +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/agent/embedded.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/agent/prompt/builder.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/ask_user/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/ask_user/component.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/ask_user/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/ask_user/schema.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/ask_user/tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/btw/__init__.py +0 -0
- /tau_coding_agent-0.7.6/tau/builtins/extensions/web/tools/__init__.py → /tau_coding_agent-0.7.7/tau/builtins/extensions/computer_use/macos/ax/py.typed +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/footer/model.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/loop/README.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/loop/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/loop/dispatch.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/loop/duration.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/loop/state.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/sandbox/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/sandbox/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/sandbox/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/sandbox/sandbox_tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/context-builder.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/delegate.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/oracle.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/planner.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/researcher.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/reviewer.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/scout.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents/worker.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/agents.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/subagent_schema.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/subagent/subagent_tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/todo/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/todo/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/todo/todo_schema.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/todo/todo_tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/engines/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/engines/exa_engine.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/engines/jina_engine.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/manifest.json +0 -0
- {tau_coding_agent-0.7.6/tau/builtins/models → tau_coding_agent-0.7.7/tau/builtins/extensions/web/tools}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/tools/fetch.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/web/tools/search.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/workflow/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/workflow/agent_discovery.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/workflow/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/workflow/model.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/workflow/runner.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/workflow/skills/create-workflows/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/extensions/workflow/store.py +0 -0
- {tau_coding_agent-0.7.6/tau/builtins/providers → tau_coding_agent-0.7.7/tau/builtins/models}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/models/text.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.7.6/tau/console → tau_coding_agent-0.7.7/tau/builtins/providers}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/ayu-dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/catppuccin.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/dracula.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/everforest.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/gruvbox.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/horizon.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/kanagawa.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/material-ocean.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/monokai.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/night-owl.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/nord.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/one-dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/rose-pine.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/solarized-dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/themes/tokyo-night.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/edit.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/grep.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/read.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/terminal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.7.6/tau/console/commands → tau_coding_agent-0.7.7/tau/console}/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/core → tau_coding_agent-0.7.7/tau/console/commands}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api → tau_coding_agent-0.7.7/tau/core}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/extensions/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/extensions/runtime.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/audio → tau_coding_agent-0.7.7/tau/inference/api}/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/image → tau_coding_agent-0.7.7/tau/inference/api/audio}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/text → tau_coding_agent-0.7.7/tau/inference/api/image}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/video → tau_coding_agent-0.7.7/tau/inference/api/text}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/dialect.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/google_antigravity.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/openai_codex_responses.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/openai_responses.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/text/xai_responses.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/model → tau_coding_agent-0.7.7/tau/inference/api/video}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/api/video/zai_video.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/provider → tau_coding_agent-0.7.7/tau/inference/model}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/model/local/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/model/local/llamacpp.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/model/local/lmstudio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/model/local/ollama.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/model/local/vllm.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.7.6/tau/message → tau_coding_agent-0.7.7/tau/inference/provider}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/oauth/xai_grok.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes → tau_coding_agent-0.7.7/tau/message}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/message/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes/interactive → tau_coding_agent-0.7.7/tau/modes}/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes/interactive/components → tau_coding_agent-0.7.7/tau/modes/interactive}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/app.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/appearance.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes/print → tau_coding_agent-0.7.7/tau/modes/interactive/components}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/command_palette.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/config_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/extension_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/file_picker.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/layout.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/message_list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/model_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/oauth_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/overlays.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/selector_controller.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/session_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/settings_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/theme_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/thinking_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/components/voice_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/interactive/ui_context.py +0 -0
- {tau_coding_agent-0.7.6/tau/tui/components → tau_coding_agent-0.7.7/tau/modes/print}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/runtime/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/runtime/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/session/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/settings/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/settings/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/telemetry/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/telemetry/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/telemetry/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/ansi_bridge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/autocomplete.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/backend.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/buffer.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.7.6/tau/utils → tau_coding_agent-0.7.7/tau/tui/components}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/select_list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/simple_picker.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/text_input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/components/widget_bridge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/frame.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/geometry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/layout.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/markdown.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/palette.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/style.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/testing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/text.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/theme.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widget.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/barchart.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/block.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/calendar.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/canvas.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/chart.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/clear.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/gauge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/paragraph.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/scrollbar.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/sparkline.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/symbols.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/table.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/tui/widgets/tabs.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/utils/format.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/utils/http_proxy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau_coding_agent.egg-info/requires.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_agent_hooks.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_ansi_bridge_legacy_image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_anthropic_tool_history.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_ask_user_extension.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_audio_transcription_apis.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_autocomplete_modifiers.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_builtin_tools.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_cmd_copy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_component_buffer_bridge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_editor_protocol.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_engine_length_and_live_tools.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_escape_behavior.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_extension_api.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_gemini_generate.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_google_antigravity.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_google_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_inference_dialect.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_input_handler_paste.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_layout_render_cells.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_local_model_discovery.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_markdown.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_message_list_frozen.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_model_audio_modality.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_model_file_modality.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_model_selector_modal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_openai_codex_responses_lite.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_peer_extension.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_provider_audio_content.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_provider_file_content.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_runtime_sdk.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_scrollback_raw_writes.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_scrollback_terminal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_select_list_render_cells.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_selector_controller.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_settings_storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_strip_control_chars.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_subagent_context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_telemetry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_text_input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_text_input_render_cells.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_text_llm_invoke.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_text_llm_model_resolution.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_theme_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_thinking_render.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tool_render.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tree_branch_restore.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_child_rows.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_layout_sizing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_public_api.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_renderer.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_select_list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_theme.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_utils_hashline.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/tests/test_version_check.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.7}/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.7.
|
|
3
|
+
Version: 0.7.7
|
|
4
4
|
Summary: A self-extensible agent CLI with terminal UI, multi-provider LLM support, session management with branching, and a plugin system for tools and commands
|
|
5
5
|
Requires-Python: >=3.12
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tau-coding-agent"
|
|
7
|
-
version = "0.7.
|
|
7
|
+
version = "0.7.7"
|
|
8
8
|
description = "A self-extensible agent CLI with terminal UI, multi-provider LLM support, session management with branching, and a plugin system for tools and commands"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""computer_use — control the local desktop (macOS Accessibility API / Windows UI Automation).
|
|
2
|
+
|
|
3
|
+
Registers a single ``computer`` tool that drives the mouse, keyboard, and
|
|
4
|
+
application windows through a platform-neutral ``Desktop`` interface (see
|
|
5
|
+
``types.py``); the concrete implementation is picked at registration time by
|
|
6
|
+
``router.get_desktop_class()`` based on the host OS.
|
|
7
|
+
|
|
8
|
+
Disabled by default (see manifest.json) — this tool controls the real mouse
|
|
9
|
+
and keyboard, so it should be turned on deliberately via /settings or
|
|
10
|
+
extensions.list settings.
|
|
11
|
+
|
|
12
|
+
{
|
|
13
|
+
"extensions": {
|
|
14
|
+
"list": [{ "path": "computer_use", "settings": { "enabled": true } }]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
While the desktop session is open (after a computer action='open' call), a
|
|
19
|
+
compact desktop-state summary — focused/open windows plus the accessible
|
|
20
|
+
interactive elements on screen (see state.py) — is injected ephemerally into
|
|
21
|
+
LLM context at the start of every turn, the same way the todo extension
|
|
22
|
+
re-asserts its live list: via the "context" hook returning
|
|
23
|
+
ContextEventResult(ephemeral_messages=[...]). It is never written to session
|
|
24
|
+
history, so it always reflects the current screen rather than a stale
|
|
25
|
+
snapshot from whenever the model last looked.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
from __future__ import annotations
|
|
29
|
+
|
|
30
|
+
from typing import TYPE_CHECKING
|
|
31
|
+
|
|
32
|
+
from .computer import ComputerTool
|
|
33
|
+
from .router import get_desktop_class
|
|
34
|
+
from .state import build_state_message
|
|
35
|
+
|
|
36
|
+
if TYPE_CHECKING:
|
|
37
|
+
from tau.extensions.api import ExtensionAPI
|
|
38
|
+
from tau.extensions.context import ExtensionContext
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def register(tau: ExtensionAPI) -> None:
|
|
42
|
+
config = tau.config or {}
|
|
43
|
+
if not config.get("enabled", False):
|
|
44
|
+
return
|
|
45
|
+
try:
|
|
46
|
+
desktop = get_desktop_class()()
|
|
47
|
+
except RuntimeError:
|
|
48
|
+
return # unsupported platform (e.g. Linux)
|
|
49
|
+
|
|
50
|
+
tau.register_tool(ComputerTool(desktop))
|
|
51
|
+
|
|
52
|
+
def _inject_desktop_state(_event, _ctx: ExtensionContext):
|
|
53
|
+
text = build_state_message(desktop)
|
|
54
|
+
if text is not None:
|
|
55
|
+
from tau.hooks.engine import ContextEventResult
|
|
56
|
+
from tau.message.types import UserMessage
|
|
57
|
+
message = UserMessage.from_text(text)
|
|
58
|
+
return ContextEventResult(ephemeral_messages=[message])
|
|
59
|
+
return ContextEventResult(ephemeral_messages=[])
|
|
60
|
+
|
|
61
|
+
tau.on("context", _inject_desktop_state)
|
|
62
|
+
|
|
63
|
+
@tau.on("extension_unload")
|
|
64
|
+
async def _close_desktop(_event, _ctx: ExtensionContext) -> None:
|
|
65
|
+
if desktop.is_open:
|
|
66
|
+
desktop.close()
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"""computer — control the local desktop (click, type, scroll, window management, screenshots)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel, Field, model_validator
|
|
9
|
+
|
|
10
|
+
from tau.tool.render import call_line
|
|
11
|
+
from tau.tool.types import (
|
|
12
|
+
AbortSignal,
|
|
13
|
+
Tool,
|
|
14
|
+
ToolContext,
|
|
15
|
+
ToolExecutionUpdateCallback,
|
|
16
|
+
ToolInvocation,
|
|
17
|
+
ToolKind,
|
|
18
|
+
ToolResult,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from .types import Desktop
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ComputerAction(str, Enum):
|
|
26
|
+
"""Desktop automation action: open, close, click, type, wait, app, scroll, move, drag, shortcut."""
|
|
27
|
+
|
|
28
|
+
open = "open"
|
|
29
|
+
close = "close"
|
|
30
|
+
click = "click"
|
|
31
|
+
type = "type"
|
|
32
|
+
wait = "wait"
|
|
33
|
+
app = "app"
|
|
34
|
+
scroll = "scroll"
|
|
35
|
+
move = "move"
|
|
36
|
+
drag = "drag"
|
|
37
|
+
shortcut = "shortcut"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class AppMode(str, Enum):
|
|
41
|
+
launch = "launch"
|
|
42
|
+
switch = "switch"
|
|
43
|
+
resize = "resize"
|
|
44
|
+
move = "move"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class MouseButton(str, Enum):
|
|
48
|
+
left = "left"
|
|
49
|
+
right = "right"
|
|
50
|
+
middle = "middle"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ScrollOrientation(str, Enum):
|
|
54
|
+
vertical = "vertical"
|
|
55
|
+
horizontal = "horizontal"
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class ScrollDirection(str, Enum):
|
|
59
|
+
up = "up"
|
|
60
|
+
down = "down"
|
|
61
|
+
left = "left"
|
|
62
|
+
right = "right"
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class CaretPosition(str, Enum):
|
|
66
|
+
start = "start"
|
|
67
|
+
idle = "idle"
|
|
68
|
+
end = "end"
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class ComputerSchema(BaseModel):
|
|
72
|
+
"""Input schema for computer; action-specific required fields validated via model_validator."""
|
|
73
|
+
|
|
74
|
+
action: ComputerAction = Field(
|
|
75
|
+
description=(
|
|
76
|
+
"Computer action to perform: open (enable desktop access), "
|
|
77
|
+
"close (release desktop access), click, type, wait, app, "
|
|
78
|
+
"scroll, move, drag, or shortcut."
|
|
79
|
+
)
|
|
80
|
+
)
|
|
81
|
+
loc: tuple[int, int] | None = Field(default=None, description="Target screen coordinate as [x, y].")
|
|
82
|
+
x: int | None = Field(default=None, description="Target x coordinate. Used when loc is omitted.")
|
|
83
|
+
y: int | None = Field(default=None, description="Target y coordinate. Used when loc is omitted.")
|
|
84
|
+
text: str | None = Field(default=None, description="Text to type. Required for action=type.")
|
|
85
|
+
duration: float = Field(default=1.0, ge=0, le=60, description="Seconds to wait for action=wait.")
|
|
86
|
+
button: MouseButton = Field(default=MouseButton.left, description="Mouse button for action=click.")
|
|
87
|
+
clicks: int = Field(default=1, ge=0, le=3, description="Number of clicks. Use 0 to only move the pointer.")
|
|
88
|
+
clear: bool = Field(default=False, description="Clear focused text before typing.")
|
|
89
|
+
press_enter: bool = Field(default=False, description="Press Enter after typing.")
|
|
90
|
+
caret_position: CaretPosition = Field(default=CaretPosition.idle, description="Caret movement before typing.")
|
|
91
|
+
app_mode: AppMode = Field(default=AppMode.launch, description="Application operation for action=app.")
|
|
92
|
+
name: str | None = Field(default=None, description="Application name for action=app.")
|
|
93
|
+
size: tuple[int, int] | None = Field(default=None, description="Window size as [width, height] for app resize.")
|
|
94
|
+
orientation: ScrollOrientation = Field(default=ScrollOrientation.vertical, description="Scroll axis.")
|
|
95
|
+
direction: ScrollDirection = Field(default=ScrollDirection.down, description="Scroll direction.")
|
|
96
|
+
wheel_times: int = Field(default=1, ge=1, le=20, description="Number of wheel ticks for action=scroll.")
|
|
97
|
+
shortcut: str | None = Field(default=None, description="Keyboard shortcut such as command+c or ctrl+c.")
|
|
98
|
+
|
|
99
|
+
@model_validator(mode="after")
|
|
100
|
+
def _check_action_fields(self) -> ComputerSchema:
|
|
101
|
+
loc = self.loc or ((self.x, self.y) if self.x is not None and self.y is not None else None)
|
|
102
|
+
if (
|
|
103
|
+
self.action in {ComputerAction.click, ComputerAction.type, ComputerAction.move, ComputerAction.drag}
|
|
104
|
+
and loc is None
|
|
105
|
+
):
|
|
106
|
+
raise ValueError("'loc' or both 'x' and 'y' are required for this action")
|
|
107
|
+
if self.action == ComputerAction.type and self.text is None:
|
|
108
|
+
raise ValueError("'text' is required when action='type'")
|
|
109
|
+
if self.action == ComputerAction.shortcut and not self.shortcut:
|
|
110
|
+
raise ValueError("'shortcut' is required when action='shortcut'")
|
|
111
|
+
if self.action == ComputerAction.app:
|
|
112
|
+
if self.app_mode in {AppMode.launch, AppMode.switch} and not self.name:
|
|
113
|
+
raise ValueError("'name' is required when action='app' with launch or switch")
|
|
114
|
+
if self.app_mode == AppMode.resize and self.size is None:
|
|
115
|
+
raise ValueError("'size' is required when action='app' with resize")
|
|
116
|
+
if self.app_mode == AppMode.move and loc is None:
|
|
117
|
+
raise ValueError("'loc' or both 'x' and 'y' are required when action='app' with move")
|
|
118
|
+
return self
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _render_call(args: dict, _streaming: bool = False) -> list[str]:
|
|
122
|
+
action = args.get("action", "")
|
|
123
|
+
detail = {
|
|
124
|
+
"type": args.get("text", ""),
|
|
125
|
+
"app": args.get("name", ""),
|
|
126
|
+
"shortcut": args.get("shortcut", ""),
|
|
127
|
+
}.get(action, "")
|
|
128
|
+
return call_line("computer", action, detail)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class ComputerTool(Tool):
|
|
132
|
+
"""Desktop automation tool that drives mouse, keyboard, and application management."""
|
|
133
|
+
|
|
134
|
+
def __init__(self, desktop: Desktop) -> None:
|
|
135
|
+
self._desktop = desktop
|
|
136
|
+
super().__init__(
|
|
137
|
+
name="computer",
|
|
138
|
+
description=(
|
|
139
|
+
"Control the local desktop through one action-based computer tool. "
|
|
140
|
+
"Use open to enable desktop access (required before any other action) and "
|
|
141
|
+
"close to release it. Use click/type/scroll/move/drag for pointer and text input, "
|
|
142
|
+
"shortcut for keyboard shortcuts, wait for delays, and app for "
|
|
143
|
+
"launching, switching, resizing, or moving applications."
|
|
144
|
+
),
|
|
145
|
+
schema=ComputerSchema,
|
|
146
|
+
kind=ToolKind.Execute,
|
|
147
|
+
render_call=_render_call,
|
|
148
|
+
prompt_guidelines=(
|
|
149
|
+
"Call action='open' once before any other computer action, and action='close' "
|
|
150
|
+
"when finished controlling the desktop. Prefer the dedicated read/write/edit/"
|
|
151
|
+
"terminal tools over the computer tool for anything achievable without a GUI."
|
|
152
|
+
),
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
def get_display_name(self, args: dict) -> str:
|
|
156
|
+
action = args.get("action", "")
|
|
157
|
+
text = args.get("text") or ""
|
|
158
|
+
name = args.get("name") or ""
|
|
159
|
+
app_mode = args.get("app_mode") or ""
|
|
160
|
+
shortcut = args.get("shortcut") or ""
|
|
161
|
+
duration = args.get("duration", "")
|
|
162
|
+
if action == "open":
|
|
163
|
+
return "Opening desktop"
|
|
164
|
+
if action == "close":
|
|
165
|
+
return "Closing desktop"
|
|
166
|
+
if action == "click":
|
|
167
|
+
return "Clicking"
|
|
168
|
+
if action == "type":
|
|
169
|
+
return f"Typing: {text[:30]}" if text else "Typing"
|
|
170
|
+
if action == "wait":
|
|
171
|
+
return f"Waiting {duration}s" if duration else "Waiting"
|
|
172
|
+
if action == "app":
|
|
173
|
+
if app_mode == "launch":
|
|
174
|
+
return f"Launching: {name}" if name else "Launching app"
|
|
175
|
+
if app_mode == "switch":
|
|
176
|
+
return f"Switching to: {name}" if name else "Switching app"
|
|
177
|
+
return f"App: {app_mode}" if app_mode else "App"
|
|
178
|
+
if action == "scroll":
|
|
179
|
+
return "Scrolling"
|
|
180
|
+
if action == "move":
|
|
181
|
+
return "Moving cursor"
|
|
182
|
+
if action == "drag":
|
|
183
|
+
return "Dragging"
|
|
184
|
+
if action == "shortcut":
|
|
185
|
+
return f"Shortcut: {shortcut}" if shortcut else "Shortcut"
|
|
186
|
+
return "Computer"
|
|
187
|
+
|
|
188
|
+
async def execute(
|
|
189
|
+
self,
|
|
190
|
+
invocation: ToolInvocation,
|
|
191
|
+
tool_execution_update_callback: ToolExecutionUpdateCallback | None = None,
|
|
192
|
+
signal: AbortSignal | None = None,
|
|
193
|
+
context: ToolContext | None = None,
|
|
194
|
+
) -> ToolResult:
|
|
195
|
+
try:
|
|
196
|
+
params = ComputerSchema.model_validate(invocation.params)
|
|
197
|
+
except Exception as exc:
|
|
198
|
+
return ToolResult.error(id=invocation.id, content=f"computer: {exc}")
|
|
199
|
+
|
|
200
|
+
async def update(text: str) -> None:
|
|
201
|
+
if tool_execution_update_callback is not None:
|
|
202
|
+
await tool_execution_update_callback(ToolResult.ok(invocation.id, text))
|
|
203
|
+
|
|
204
|
+
desktop = self._desktop
|
|
205
|
+
try:
|
|
206
|
+
if params.action == ComputerAction.open:
|
|
207
|
+
if desktop.is_open:
|
|
208
|
+
return ToolResult.ok(id=invocation.id, content="Desktop is already open.")
|
|
209
|
+
await update("Opening desktop…")
|
|
210
|
+
desktop.open()
|
|
211
|
+
return ToolResult.ok(id=invocation.id, content="Desktop access enabled.")
|
|
212
|
+
|
|
213
|
+
if params.action == ComputerAction.close:
|
|
214
|
+
if not desktop.is_open:
|
|
215
|
+
return ToolResult.ok(id=invocation.id, content="Desktop is not open.")
|
|
216
|
+
await update("Closing desktop…")
|
|
217
|
+
desktop.close()
|
|
218
|
+
return ToolResult.ok(id=invocation.id, content="Desktop access released.")
|
|
219
|
+
|
|
220
|
+
if not desktop.is_open:
|
|
221
|
+
return ToolResult.error(
|
|
222
|
+
id=invocation.id,
|
|
223
|
+
content="Desktop is not accessible. Use action='open' to enable desktop control first.",
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
await self._announce(update, params)
|
|
227
|
+
content = self._run_action(desktop, params)
|
|
228
|
+
return ToolResult.ok(id=invocation.id, content=content)
|
|
229
|
+
except Exception as exc:
|
|
230
|
+
return ToolResult.error(id=invocation.id, content=f"computer: {exc}")
|
|
231
|
+
|
|
232
|
+
async def _announce(self, update, params: ComputerSchema) -> None:
|
|
233
|
+
loc = self._loc(params)
|
|
234
|
+
if params.action == ComputerAction.click:
|
|
235
|
+
coord = f"({loc[0]}, {loc[1]})" if loc else ""
|
|
236
|
+
clicks = f" ×{params.clicks}" if params.clicks > 1 else ""
|
|
237
|
+
await update(f"Clicking {params.button.value}{clicks} at {coord}…")
|
|
238
|
+
elif params.action == ComputerAction.type:
|
|
239
|
+
preview = (params.text or "")[:40]
|
|
240
|
+
preview += "…" if len(params.text or "") > 40 else ""
|
|
241
|
+
await update(f'Typing "{preview}"…')
|
|
242
|
+
elif params.action == ComputerAction.wait:
|
|
243
|
+
await update(f"Waiting {params.duration:g}s…")
|
|
244
|
+
elif params.action == ComputerAction.app:
|
|
245
|
+
label = params.name or params.app_mode.value
|
|
246
|
+
await update(f"App {params.app_mode.value}: {label}…")
|
|
247
|
+
elif params.action == ComputerAction.scroll:
|
|
248
|
+
await update(f"Scrolling {params.direction.value} {params.wheel_times}×…")
|
|
249
|
+
elif params.action == ComputerAction.move:
|
|
250
|
+
coord = f"({loc[0]}, {loc[1]})" if loc else ""
|
|
251
|
+
await update(f"Moving pointer to {coord}…")
|
|
252
|
+
elif params.action == ComputerAction.drag:
|
|
253
|
+
coord = f"({loc[0]}, {loc[1]})" if loc else ""
|
|
254
|
+
await update(f"Dragging to {coord}…")
|
|
255
|
+
elif params.action == ComputerAction.shortcut:
|
|
256
|
+
await update(f"Shortcut {params.shortcut}…")
|
|
257
|
+
|
|
258
|
+
def _run_action(self, desktop: Desktop, params: ComputerSchema) -> str:
|
|
259
|
+
loc = self._loc(params)
|
|
260
|
+
if params.action == ComputerAction.click:
|
|
261
|
+
assert loc is not None
|
|
262
|
+
desktop.click(loc, button=params.button.value, clicks=params.clicks)
|
|
263
|
+
return f"Clicked {params.button.value} at {loc[0]},{loc[1]}."
|
|
264
|
+
if params.action == ComputerAction.type:
|
|
265
|
+
assert loc is not None
|
|
266
|
+
desktop.type(
|
|
267
|
+
loc,
|
|
268
|
+
text=params.text or "",
|
|
269
|
+
caret_position=params.caret_position.value,
|
|
270
|
+
clear=params.clear,
|
|
271
|
+
press_enter=params.press_enter,
|
|
272
|
+
)
|
|
273
|
+
return "Typed text."
|
|
274
|
+
if params.action == ComputerAction.wait:
|
|
275
|
+
desktop.wait(params.duration)
|
|
276
|
+
return f"Waited {params.duration:g} seconds."
|
|
277
|
+
if params.action == ComputerAction.app:
|
|
278
|
+
result = desktop.app(mode=params.app_mode.value, name=params.name, loc=loc, size=params.size)
|
|
279
|
+
return str(result or "App action completed.")
|
|
280
|
+
if params.action == ComputerAction.scroll:
|
|
281
|
+
desktop.scroll(
|
|
282
|
+
loc=loc,
|
|
283
|
+
orientation=params.orientation.value,
|
|
284
|
+
direction=params.direction.value,
|
|
285
|
+
wheel_times=params.wheel_times,
|
|
286
|
+
)
|
|
287
|
+
return "Scrolled."
|
|
288
|
+
if params.action == ComputerAction.move:
|
|
289
|
+
assert loc is not None
|
|
290
|
+
desktop.move(loc)
|
|
291
|
+
return f"Moved pointer to {loc[0]},{loc[1]}."
|
|
292
|
+
if params.action == ComputerAction.drag:
|
|
293
|
+
assert loc is not None
|
|
294
|
+
desktop.drag(loc)
|
|
295
|
+
return f"Dragged pointer to {loc[0]},{loc[1]}."
|
|
296
|
+
if params.action == ComputerAction.shortcut:
|
|
297
|
+
desktop.shortcut(params.shortcut or "")
|
|
298
|
+
return f"Pressed shortcut {params.shortcut}."
|
|
299
|
+
return f"Unknown action: {params.action.value}"
|
|
300
|
+
|
|
301
|
+
def _loc(self, params: ComputerSchema) -> tuple[int, int] | None:
|
|
302
|
+
if params.loc is not None:
|
|
303
|
+
return params.loc
|
|
304
|
+
if params.x is not None and params.y is not None:
|
|
305
|
+
return (params.x, params.y)
|
|
306
|
+
return None
|