tau-coding-agent 0.7.6__tar.gz → 0.7.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tau_coding_agent-0.7.6/tau_coding_agent.egg-info → tau_coding_agent-0.7.8}/PKG-INFO +7 -6
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/README.md +6 -5
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/cli-reference.md +19 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/installation.md +11 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/pyproject.toml +2 -1
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/__init__.py +75 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/computer.py +306 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/ax/README.md +941 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/ax/__init__.py +396 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/ax/controls.py +2284 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/ax/core.py +2056 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/ax/enums.py +982 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/ax/events.py +416 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/ax/patterns.py +478 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/desktop/__init__.py +3 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/desktop/config.py +26 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/desktop/service.py +222 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/tree/__init__.py +12 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/tree/config.py +109 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/tree/service.py +410 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/tree/views.py +122 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/watchdog/__init__.py +3 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/macos/watchdog/service.py +98 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/manifest.json +33 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/router.py +41 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/state.py +53 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/types.py +199 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/desktop/__init__.py +3 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/desktop/service.py +252 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/tree/__init__.py +13 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/tree/cache_utils.py +121 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/tree/config.py +74 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/tree/service.py +737 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/tree/utils.py +18 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/tree/views.py +155 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/uia/__init__.py +5 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/uia/controls.py +5803 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/uia/core.py +2575 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/uia/enums.py +2120 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/uia/events.py +84 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/uia/exceptions.py +102 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/uia/patterns.py +2158 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/watchdog/__init__.py +1 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/watchdog/event_handlers.py +66 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/computer_use/windows/watchdog/service.py +236 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/footer/model.py +8 -6
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/__init__.py +4 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/engines/base.py +8 -0
- tau_coding_agent-0.7.8/tau/builtins/extensions/web/engines/ddgs_engine.py +166 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/engines/tavily_engine.py +5 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/console/cli.py +42 -0
- tau_coding_agent-0.7.8/tau/console/commands/doctor.py +647 -0
- tau_coding_agent-0.7.8/tau/console/commands/serve.py +41 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/engine/service.py +1 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/openai_codex_responses.py +11 -4
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/openai_responses.py +32 -2
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/utils.py +16 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/session.py +7 -2
- tau_coding_agent-0.7.8/tau/modes/serve/mode.py +72 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/packages/manager.py +12 -1
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/runtime/types.py +7 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/settings/paths.py +12 -0
- tau_coding_agent-0.7.8/tau/tui/components/__init__.py +0 -0
- tau_coding_agent-0.7.8/tau/utils/__init__.py +0 -0
- tau_coding_agent-0.7.8/tau/utils/logging.py +33 -0
- tau_coding_agent-0.7.8/tau/utils/timing.py +58 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8/tau_coding_agent.egg-info}/PKG-INFO +7 -6
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau_coding_agent.egg-info/SOURCES.txt +51 -0
- tau_coding_agent-0.7.8/tests/test_doctor.py +629 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_openai_codex_responses_lite.py +15 -1
- tau_coding_agent-0.7.8/tests/test_openai_responses_extra_body.py +43 -0
- tau_coding_agent-0.7.8/tests/test_package_manager_venv.py +70 -0
- tau_coding_agent-0.7.8/tests/test_startup_timing.py +95 -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.8}/LICENSE +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/MANIFEST.in +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/architecture.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/auth.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/creating-tools.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/development.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/docs.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/engine.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/extensions.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/index.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/inference-providers.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/inference.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/messages.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/project-context.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/project-structure.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/prompts.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/python-api.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/quickstart.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/sessions.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/settings.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/skills.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/themes.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/tools.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/tui.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/docs/usage.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/setup.cfg +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/agent/embedded.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/agent/prompt/builder.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/ask_user/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/ask_user/component.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/ask_user/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/ask_user/schema.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/ask_user/tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/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.8/tau/builtins/extensions/computer_use/macos/ax/py.typed +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/loop/README.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/loop/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/loop/dispatch.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/loop/duration.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/loop/state.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/sandbox/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/sandbox/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/sandbox/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/sandbox/sandbox_tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/context-builder.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/delegate.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/oracle.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/planner.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/researcher.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/reviewer.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/scout.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents/worker.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/agents.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/subagent_schema.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/subagent/subagent_tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/todo/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/todo/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/todo/todo_schema.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/todo/todo_tool.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/engines/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/engines/exa_engine.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/engines/jina_engine.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/manifest.json +0 -0
- {tau_coding_agent-0.7.6/tau/builtins/models → tau_coding_agent-0.7.8/tau/builtins/extensions/web/tools}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/tools/fetch.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/web/tools/search.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/workflow/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/workflow/agent_discovery.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/workflow/manifest.json +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/workflow/model.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/workflow/runner.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/workflow/skills/create-workflows/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/extensions/workflow/store.py +0 -0
- {tau_coding_agent-0.7.6/tau/builtins/providers → tau_coding_agent-0.7.8/tau/builtins/models}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/models/text.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.7.6/tau/console → tau_coding_agent-0.7.8/tau/builtins/providers}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/ayu-dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/catppuccin.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/dracula.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/everforest.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/gruvbox.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/horizon.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/kanagawa.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/material-ocean.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/monokai.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/night-owl.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/nord.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/one-dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/rose-pine.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/solarized-dark.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/themes/tokyo-night.yaml +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/edit.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/grep.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/read.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/terminal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.7.6/tau/console/commands → tau_coding_agent-0.7.8/tau/console}/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/core → tau_coding_agent-0.7.8/tau/console/commands}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/console/commands/update.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api → tau_coding_agent-0.7.8/tau/core}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/extensions/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/extensions/runtime.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/audio → tau_coding_agent-0.7.8/tau/inference/api}/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/image → tau_coding_agent-0.7.8/tau/inference/api/audio}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/text → tau_coding_agent-0.7.8/tau/inference/api/image}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/api/video → tau_coding_agent-0.7.8/tau/inference/api/text}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/dialect.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/google_antigravity.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/text/xai_responses.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/model → tau_coding_agent-0.7.8/tau/inference/api/video}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/api/video/zai_video.py +0 -0
- {tau_coding_agent-0.7.6/tau/inference/provider → tau_coding_agent-0.7.8/tau/inference/model}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/model/local/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/model/local/llamacpp.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/model/local/lmstudio.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/model/local/ollama.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/model/local/vllm.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.7.6/tau/message → tau_coding_agent-0.7.8/tau/inference/provider}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/oauth/xai_grok.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes → tau_coding_agent-0.7.8/tau/message}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/message/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes/interactive → tau_coding_agent-0.7.8/tau/modes}/__init__.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes/interactive/components → tau_coding_agent-0.7.8/tau/modes/interactive}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/app.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/appearance.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.7.6/tau/modes/print → tau_coding_agent-0.7.8/tau/modes/interactive/components}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/command_palette.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/config_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/extension_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/file_picker.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/layout.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/message_list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/model_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/oauth_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/overlays.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/selector_controller.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/session_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/settings_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/theme_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/thinking_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/components/voice_selector.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/interactive/ui_context.py +0 -0
- {tau_coding_agent-0.7.6/tau/tui/components → tau_coding_agent-0.7.8/tau/modes/print}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.7.6/tau/utils → tau_coding_agent-0.7.8/tau/modes/serve}/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/runtime/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/session/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/settings/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/settings/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/telemetry/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/telemetry/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/telemetry/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/ansi_bridge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/autocomplete.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/backend.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/buffer.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/select_list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/simple_picker.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/text_input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/components/widget_bridge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/frame.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/geometry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/layout.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/markdown.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/palette.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/service.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/style.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/testing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/text.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/theme.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widget.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/__init__.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/barchart.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/block.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/calendar.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/canvas.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/chart.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/clear.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/gauge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/paragraph.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/scrollbar.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/sparkline.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/symbols.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/table.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/tui/widgets/tabs.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/utils/format.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/utils/http_proxy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau_coding_agent.egg-info/requires.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_agent_hooks.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_ansi_bridge_legacy_image.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_anthropic_tool_history.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_ask_user_extension.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_audio_transcription_apis.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_autocomplete_modifiers.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_builtin_tools.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_cmd_copy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_component_buffer_bridge.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_editor_protocol.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_engine_length_and_live_tools.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_escape_behavior.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_extension_api.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_gemini_generate.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_google_antigravity.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_google_vertex.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_inference_dialect.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_input_handler_paste.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_layout_render_cells.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_local_model_discovery.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_markdown.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_message_list_frozen.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_model_audio_modality.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_model_file_modality.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_model_selector_modal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_peer_extension.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_provider_audio_content.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_provider_file_content.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_runtime_sdk.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_scrollback_raw_writes.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_scrollback_terminal.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_select_list_render_cells.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_selector_controller.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_settings_storage.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_strip_control_chars.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_subagent_context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_telemetry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_text_input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_text_input_render_cells.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_text_llm_invoke.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_text_llm_model_resolution.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_theme_loader.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_thinking_render.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tool_render.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tree_branch_restore.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_child_rows.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_layout_sizing.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_public_api.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_renderer.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_select_list.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_theme.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_utils_hashline.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_version_check.py +0 -0
- {tau_coding_agent-0.7.6 → tau_coding_agent-0.7.8}/tests/test_voice_selector.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tau-coding-agent
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.8
|
|
4
4
|
Summary: A self-extensible agent CLI with terminal UI, multi-provider LLM support, session management with branching, and a plugin system for tools and commands
|
|
5
5
|
Requires-Python: >=3.12
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -141,11 +141,12 @@ Full flag list, environment variables, and exit codes: [CLI reference](docs/cli-
|
|
|
141
141
|
### Subcommands
|
|
142
142
|
|
|
143
143
|
```bash
|
|
144
|
-
tau auth
|
|
145
|
-
tau
|
|
146
|
-
tau
|
|
147
|
-
tau
|
|
148
|
-
tau
|
|
144
|
+
tau auth # Manage provider credentials (login/logout, list)
|
|
145
|
+
tau doctor # Diagnose config, auth, models, extensions, sessions, packages (--fix to repair)
|
|
146
|
+
tau install # Install a package (extension/skill/theme)
|
|
147
|
+
tau remove # Remove an installed package
|
|
148
|
+
tau list # List installed packages
|
|
149
|
+
tau update # Update installed packages
|
|
149
150
|
```
|
|
150
151
|
|
|
151
152
|
### Interactive slash commands
|
|
@@ -102,11 +102,12 @@ Full flag list, environment variables, and exit codes: [CLI reference](docs/cli-
|
|
|
102
102
|
### Subcommands
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
|
-
tau auth
|
|
106
|
-
tau
|
|
107
|
-
tau
|
|
108
|
-
tau
|
|
109
|
-
tau
|
|
105
|
+
tau auth # Manage provider credentials (login/logout, list)
|
|
106
|
+
tau doctor # Diagnose config, auth, models, extensions, sessions, packages (--fix to repair)
|
|
107
|
+
tau install # Install a package (extension/skill/theme)
|
|
108
|
+
tau remove # Remove an installed package
|
|
109
|
+
tau list # List installed packages
|
|
110
|
+
tau update # Update installed packages
|
|
110
111
|
```
|
|
111
112
|
|
|
112
113
|
### Interactive slash commands
|
|
@@ -15,6 +15,7 @@ augment it.
|
|
|
15
15
|
|--------|-------|-------------|
|
|
16
16
|
| `--version` | `-v` | Print the installed version |
|
|
17
17
|
| `--debug` | `-d` | Enable debug logging |
|
|
18
|
+
| `--startup` | | Print per-phase startup timing diagnostics to stderr (settings, model/LLM, session manager, resources, extensions, agent) |
|
|
18
19
|
| `--cwd PATH` | `-c` | Set the working directory |
|
|
19
20
|
| `--prompt` | `-p` | Run a non-interactive prompt |
|
|
20
21
|
| `--output-format` | `-f` | Non-interactive output: `text` or `json` |
|
|
@@ -384,6 +385,24 @@ Manage provider credentials.
|
|
|
384
385
|
tau auth --help
|
|
385
386
|
```
|
|
386
387
|
|
|
388
|
+
### `tau doctor`
|
|
389
|
+
|
|
390
|
+
Diagnose Tau's configuration, credentials, model setup, extensions, session
|
|
391
|
+
storage, logs, environment, and installed packages. Reports each check as
|
|
392
|
+
pass/warn/fail; exits non-zero if anything failed.
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
tau doctor # report only
|
|
396
|
+
tau doctor --json # machine-readable output
|
|
397
|
+
tau doctor --fix # apply safe, reversible repairs:
|
|
398
|
+
# - refresh expired OAuth tokens
|
|
399
|
+
# - remove dangling extension entries
|
|
400
|
+
# - quarantine corrupt session files into .corrupt/
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
`--fix` never rewrites `settings.json`/`auth.json` directly, reinstalls
|
|
404
|
+
packages, or touches anything that isn't easily reversible.
|
|
405
|
+
|
|
387
406
|
Package management is available through `tau install`, `tau remove`,
|
|
388
407
|
`tau list`, and `tau update`.
|
|
389
408
|
|
|
@@ -154,6 +154,17 @@ This removes the tau command but leaves configuration and session data in `~/.ta
|
|
|
154
154
|
|
|
155
155
|
## Troubleshooting
|
|
156
156
|
|
|
157
|
+
Run `tau doctor` first — it checks settings/auth file integrity, credential
|
|
158
|
+
status (including whether stored OAuth tokens are still valid), model/provider
|
|
159
|
+
resolution, extensions, session storage, logs, and installed packages in one
|
|
160
|
+
pass. Add `--fix` to auto-repair the safe, reversible cases (expired OAuth
|
|
161
|
+
tokens, dangling extension entries, corrupt session files).
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
tau doctor
|
|
165
|
+
tau doctor --fix
|
|
166
|
+
```
|
|
167
|
+
|
|
157
168
|
### No Models Found
|
|
158
169
|
|
|
159
170
|
Check that your API key is set correctly:
|
|
@@ -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.8"
|
|
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"
|
|
@@ -84,4 +84,5 @@ dev = [
|
|
|
84
84
|
"ruff>=0.4.0",
|
|
85
85
|
"mypy==1.19.1",
|
|
86
86
|
"pyright>=1.1.360",
|
|
87
|
+
"pytest-asyncio==1.3.0",
|
|
87
88
|
]
|
|
@@ -0,0 +1,75 @@
|
|
|
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 is injected ephemerally into LLM context at the
|
|
20
|
+
start of every turn, the same way the todo extension re-asserts its live
|
|
21
|
+
list: via the "context" hook returning
|
|
22
|
+
ContextEventResult(ephemeral_messages=[...]). It is never written to session
|
|
23
|
+
history, so it always reflects the current screen rather than a stale
|
|
24
|
+
snapshot from whenever the model last looked.
|
|
25
|
+
|
|
26
|
+
The `mode` setting (see manifest.json) controls what that summary contains:
|
|
27
|
+
"screenshot" (an image of the screen), "accessibility_tree" (the default —
|
|
28
|
+
focused/open windows plus accessible interactive elements, see state.py), or
|
|
29
|
+
"both". The screenshot is only ever included if the active model actually
|
|
30
|
+
accepts image input (checked fresh every turn against Modality.Image, since
|
|
31
|
+
/model can switch models mid-session); otherwise the accessibility tree is
|
|
32
|
+
used instead so the turn still gets a usable observation.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
from __future__ import annotations
|
|
36
|
+
|
|
37
|
+
from typing import TYPE_CHECKING
|
|
38
|
+
|
|
39
|
+
from .computer import ComputerTool
|
|
40
|
+
from .router import get_desktop_class
|
|
41
|
+
from .state import build_state_message
|
|
42
|
+
|
|
43
|
+
if TYPE_CHECKING:
|
|
44
|
+
from tau.extensions.api import ExtensionAPI
|
|
45
|
+
from tau.extensions.context import ExtensionContext
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def register(tau: ExtensionAPI) -> None:
|
|
49
|
+
config = tau.config or {}
|
|
50
|
+
if not config.get("enabled", False):
|
|
51
|
+
return
|
|
52
|
+
try:
|
|
53
|
+
desktop = get_desktop_class()()
|
|
54
|
+
except RuntimeError:
|
|
55
|
+
return # unsupported platform (e.g. Linux)
|
|
56
|
+
|
|
57
|
+
tau.register_tool(ComputerTool(desktop))
|
|
58
|
+
|
|
59
|
+
mode = config.get("mode", "accessibility_tree")
|
|
60
|
+
|
|
61
|
+
def _inject_desktop_state(_event, _ctx: ExtensionContext):
|
|
62
|
+
from tau.hooks.engine import ContextEventResult
|
|
63
|
+
from tau.inference.model.types import Modality
|
|
64
|
+
|
|
65
|
+
model = getattr(_ctx.llm, "model", None)
|
|
66
|
+
supports_image = model is not None and Modality.Image in model.input
|
|
67
|
+
message = build_state_message(desktop, mode, supports_image)
|
|
68
|
+
return ContextEventResult(ephemeral_messages=[message] if message is not None else [])
|
|
69
|
+
|
|
70
|
+
tau.on("context", _inject_desktop_state)
|
|
71
|
+
|
|
72
|
+
@tau.on("extension_unload")
|
|
73
|
+
async def _close_desktop(_event, _ctx: ExtensionContext) -> None:
|
|
74
|
+
if desktop.is_open:
|
|
75
|
+
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
|