tau-coding-agent 0.6.9__tar.gz → 0.7.1__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.6.9/tau_coding_agent.egg-info → tau_coding_agent-0.7.1}/PKG-INFO +1 -1
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/pyproject.toml +1 -1
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/sandbox/__init__.py +8 -1
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/models/text.py +88 -26
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/console/commands/update.py +57 -2
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/anthropic_claude_code.py +123 -6
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/google_antigravity.py +61 -4
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/anthropic_claude_code.py +8 -14
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1/tau_coding_agent.egg-info}/PKG-INFO +1 -1
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/LICENSE +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/MANIFEST.in +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/README.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/architecture.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/auth.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/cli-reference.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/creating-tools.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/development.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/docs.json +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/engine.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/extension-settings.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/extensions.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/http-proxy.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/index.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/inference-providers.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/inference.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/installation.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/keybindings.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/messages.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/project-context.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/project-structure.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/prompts.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/python-api.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/quickstart.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/sessions.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/settings.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/skills.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/themes.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/tools.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/tui.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/docs/usage.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/setup.cfg +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/agent/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/agent/embedded.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/agent/prompt/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/agent/prompt/builder.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/agent/prompt/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/agent/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/agent/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/auth/manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/auth/storage.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/auth/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/commands/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/commands/clear.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/commands/compact.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/commands/reload.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/commands/session.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/ask_user/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/ask_user/component.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/ask_user/manifest.json +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/ask_user/schema.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/ask_user/tool.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/btw/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/footer/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/footer/git.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/footer/model.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/footer/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/header/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/loop/README.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/loop/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/loop/dispatch.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/loop/duration.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/loop/state.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/sandbox/manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/sandbox/manifest.json +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/sandbox/sandbox_tool.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/context-builder.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/delegate.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/oracle.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/planner.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/researcher.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/reviewer.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/scout.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents/worker.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/agents.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/manifest.json +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/subagent_schema.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/subagent/subagent_tool.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/todo/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/todo/manifest.json +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/todo/todo_schema.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/todo/todo_tool.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/watch/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/engines/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/engines/base.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/engines/ddgs_engine.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/engines/exa_engine.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/engines/jina_engine.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/engines/tavily_engine.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/manifest.json +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/tools/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/tools/fetch.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/web/tools/search.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/workflow/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/workflow/agent_discovery.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/workflow/manifest.json +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/workflow/model.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/workflow/runner.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/workflow/skills/create-workflows/SKILL.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/workflow/store.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/models/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/models/audio.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/models/image.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/models/video.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/prompts/commit.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/prompts/docs.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/prompts/explain.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/prompts/fix.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/prompts/refactor.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/prompts/review.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/prompts/test.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/providers/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/providers/audio.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/providers/image.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/providers/text.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/providers/video.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/skills/code-review/SKILL.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/skills/debug/SKILL.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/skills/git-commit/SKILL.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/ayu-dark.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/catppuccin.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/dark.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/dracula.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/everforest.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/gruvbox.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/horizon.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/kanagawa.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/light.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/material-ocean.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/monokai.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/night-owl.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/nord.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/one-dark.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/rose-pine.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/solarized-dark.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/themes/tokyo-night.yaml +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/edit.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/glob.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/grep.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/ls.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/read.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/terminal.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/tools/write.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/commands/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/commands/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/commands/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/console/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/console/cli.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/console/commands/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/console/commands/auth.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/console/commands/packages.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/core/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/core/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/engine/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/engine/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/engine/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/extensions/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/extensions/api.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/extensions/context.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/extensions/loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/extensions/runtime.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/extensions/settings.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/engine.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/inference.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/runtime.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/session.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/tui.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/hooks/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/base.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/builtins.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/gemini_audio.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/openai_audio.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/sarvam_audio.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/audio/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/availability.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/base.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/builtins.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/gemini_image.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/openai_image.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/openrouter.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/image/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/anthropic_messages.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/anthropic_vertex.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/base.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/builtins.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/dialect.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/gemini_generate.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/github_copilot_chat.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/google_vertex.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/mistral_chat.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/ollama_chat.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/openai_codex_responses.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/openai_completions.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/openai_responses.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/openai_vertex.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/xai_responses.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/base.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/builtins.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/fal_video.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/openrouter_video.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/video/zai_video.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/model/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/model/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/model/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/github_copilot.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/google_antigravity.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/openai_codex.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/pkce.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/oauth/xai_grok.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/provider/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/message/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/message/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/message/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/agent_hooks.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/app.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/appearance.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/auth.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/context.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/extensions.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/misc.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/model.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/commands/session.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/command_palette.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/config_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/extension_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/file_picker.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/layout.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/message_list.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/model_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/oauth_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/overlays.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/selector_controller.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/session_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/settings_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/theme_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/thinking_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/tree_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/trust_screen.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/components/voice_selector.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/input_handler.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/interactive/ui_context.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/print/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/rpc/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/rpc/mode.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/modes/rpc/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/packages/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/packages/manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/packages/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/packages/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/prompts/expand.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/prompts/loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/prompts/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/prompts/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/resources/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/resources/loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/resources/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/runtime/dependencies.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/runtime/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/runtime/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/session/branch_summarization.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/session/compaction.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/session/manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/session/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/session/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/settings/manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/settings/paths.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/settings/storage.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/settings/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/settings/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/skills/loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/skills/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/skills/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/telemetry/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/telemetry/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/telemetry/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/themes/loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/themes/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/themes/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tool/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tool/registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tool/render.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tool/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/trust/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/trust/manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/trust/types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/trust/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/ansi_bridge.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/autocomplete.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/backend.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/buffer.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/component.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/box.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/editor.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/image.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/select_list.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/simple_picker.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/spinner.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/text_input.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/components/widget_bridge.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/frame.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/geometry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/input.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/keybinding_hints.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/layout.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/markdown.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/palette.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/service.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/style.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/terminal.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/testing.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/text.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/theme.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widget.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/barchart.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/block.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/calendar.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/canvas.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/chart.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/clear.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/gauge.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/list.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/paragraph.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/scrollbar.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/sparkline.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/symbols.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/table.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/tui/widgets/tabs.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/utils/__init__.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/utils/format.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/utils/http_proxy.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/utils/image_processing.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/utils/secrets.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/utils/version_check.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau_coding_agent.egg-info/SOURCES.txt +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau_coding_agent.egg-info/entry_points.txt +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau_coding_agent.egg-info/requires.txt +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau_coding_agent.egg-info/top_level.txt +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_agent_compaction.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_agent_hooks.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_agent_prompt.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_agent_types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_ansi.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_ansi_bridge_legacy_image.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_anthropic_tool_history.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_ask_user_extension.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_audio_transcription_apis.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_auth_command.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_auth_manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_auth_storage.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_autocomplete_modifiers.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_branch_navigation.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_branch_summarization.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_builtin_tools.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_builtin_watch.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_cli_inputs.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_cmd_copy.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_command_execution_policy.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_command_registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_compaction.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_component_buffer_bridge.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_diff.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_editor_protocol.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_engine_execution.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_engine_length_and_live_tools.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_engine_steering.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_engine_types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_escape_behavior.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_extension_api.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_extension_lifecycle.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_footer_model.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_footer_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_fuzzy.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_gemini_generate.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_google_antigravity.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_google_vertex.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_http_proxy.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_image_processing.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_inference_api_text_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_inference_dialect.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_inference_error_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_inference_types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_inference_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_keybindings.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_layout_render_cells.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_markdown.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_message_list_frozen.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_message_types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_message_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_model_availability.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_model_command.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_model_registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_model_selector_modal.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_model_types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_oauth_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_package_resources.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_packages_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_peer_extension.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_pkce.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_prompts_expand.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_prompts_loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_prompts_registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_provider_registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_resource_loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_rpc_mode.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_runtime_sdk.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_scrollback_raw_writes.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_scrollback_terminal.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_secrets.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_select_list_render_cells.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_selector_controller.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_session_manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_session_trust_persist.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_session_types.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_session_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_settings_manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_settings_paths.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_settings_storage.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_settings_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_skills_loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_skills_registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_strip_control_chars.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_subagent_context.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_telemetry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_text_input.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_text_input_render_cells.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_text_llm_invoke.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_text_llm_model_resolution.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_theme_loader.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_themes_registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_thinking_render.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tool_registry.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tool_render.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tree_branch_restore.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_trust_manager.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_trust_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_capabilities.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_child_rows.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_input.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_layout_sizing.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_public_api.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_renderer.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_select_list.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_theme.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_tui_utils.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_ui_context.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_utils_hashline.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tests/test_version_check.py +0 -0
- {tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/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.
|
|
3
|
+
Version: 0.7.1
|
|
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
|
+
version = "0.7.1"
|
|
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"
|
{tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/builtins/extensions/sandbox/__init__.py
RENAMED
|
@@ -74,7 +74,14 @@ def register(tau: ExtensionAPI) -> None:
|
|
|
74
74
|
asyncio.ensure_future(_prewarm())
|
|
75
75
|
|
|
76
76
|
@tau.on("session_shutdown")
|
|
77
|
-
async def
|
|
77
|
+
async def _on_session_shutdown(_event: Any, _ctx: ExtensionContext) -> None:
|
|
78
|
+
await manager.stop()
|
|
79
|
+
|
|
80
|
+
@tau.on("runtime_stop")
|
|
81
|
+
async def _on_runtime_stop(_event: Any, _ctx: ExtensionContext) -> None:
|
|
82
|
+
# session_shutdown only fires on session transitions (new/resume/clone),
|
|
83
|
+
# not on actual process exit, so the microVM would otherwise keep running
|
|
84
|
+
# until its own idle_timeout — reap it here too, same as the lsp extension.
|
|
78
85
|
await manager.stop()
|
|
79
86
|
|
|
80
87
|
async def cmd_sandbox(ctx: ExtensionContext, args: list[str]) -> None:
|
|
@@ -75,13 +75,33 @@ models = [
|
|
|
75
75
|
output=_TEXT,
|
|
76
76
|
),
|
|
77
77
|
# Anthropic Claude Code (OAuth)
|
|
78
|
+
Model(
|
|
79
|
+
id="claude-fable-5",
|
|
80
|
+
name="Claude Fable 5",
|
|
81
|
+
provider="anthropic-claude-code",
|
|
82
|
+
cost=Cost(),
|
|
83
|
+
thinking=True,
|
|
84
|
+
context_window=1_048_576,
|
|
85
|
+
input=_TEXT_IMAGE,
|
|
86
|
+
output=_TEXT,
|
|
87
|
+
),
|
|
88
|
+
Model(
|
|
89
|
+
id="claude-opus-4-8",
|
|
90
|
+
name="Claude Opus 4.8",
|
|
91
|
+
provider="anthropic-claude-code",
|
|
92
|
+
cost=Cost(),
|
|
93
|
+
thinking=True,
|
|
94
|
+
context_window=1_048_576,
|
|
95
|
+
input=_TEXT_IMAGE,
|
|
96
|
+
output=_TEXT,
|
|
97
|
+
),
|
|
78
98
|
Model(
|
|
79
99
|
id="claude-opus-4-7",
|
|
80
100
|
name="Claude Opus 4.7",
|
|
81
101
|
provider="anthropic-claude-code",
|
|
82
102
|
cost=Cost(),
|
|
83
103
|
thinking=True,
|
|
84
|
-
context_window=
|
|
104
|
+
context_window=1_048_576,
|
|
85
105
|
input=_TEXT_IMAGE,
|
|
86
106
|
output=_TEXT,
|
|
87
107
|
),
|
|
@@ -91,7 +111,7 @@ models = [
|
|
|
91
111
|
provider="anthropic-claude-code",
|
|
92
112
|
cost=Cost(),
|
|
93
113
|
thinking=True,
|
|
94
|
-
context_window=
|
|
114
|
+
context_window=1_048_576,
|
|
95
115
|
input=_TEXT_IMAGE,
|
|
96
116
|
output=_TEXT,
|
|
97
117
|
),
|
|
@@ -101,6 +121,16 @@ models = [
|
|
|
101
121
|
provider="anthropic-claude-code",
|
|
102
122
|
cost=Cost(),
|
|
103
123
|
thinking=True,
|
|
124
|
+
context_window=1_048_576,
|
|
125
|
+
input=_TEXT_IMAGE,
|
|
126
|
+
output=_TEXT,
|
|
127
|
+
),
|
|
128
|
+
Model(
|
|
129
|
+
id="claude-sonnet-4-5-20250929",
|
|
130
|
+
name="Claude Sonnet 4.5",
|
|
131
|
+
provider="anthropic-claude-code",
|
|
132
|
+
cost=Cost(),
|
|
133
|
+
thinking=True,
|
|
104
134
|
context_window=200_000,
|
|
105
135
|
input=_TEXT_IMAGE,
|
|
106
136
|
output=_TEXT,
|
|
@@ -122,26 +152,29 @@ models = [
|
|
|
122
152
|
cost=Cost(),
|
|
123
153
|
thinking=True,
|
|
124
154
|
context_window=1_048_576,
|
|
155
|
+
max_output_tokens=65_536,
|
|
125
156
|
input=_TEXT_IMAGE_VIDEO,
|
|
126
157
|
output=_TEXT,
|
|
127
158
|
),
|
|
128
159
|
Model(
|
|
129
|
-
id="gemini-3.1-pro-
|
|
130
|
-
name="Gemini 3.1 Pro",
|
|
160
|
+
id="gemini-3.1-pro-high",
|
|
161
|
+
name="Gemini 3.1 Pro (High)",
|
|
131
162
|
provider="google-antigravity",
|
|
132
163
|
cost=Cost(),
|
|
133
164
|
thinking=True,
|
|
134
165
|
context_window=1_048_576,
|
|
166
|
+
max_output_tokens=65_535,
|
|
135
167
|
input=_TEXT_IMAGE_VIDEO,
|
|
136
168
|
output=_TEXT,
|
|
137
169
|
),
|
|
138
170
|
Model(
|
|
139
|
-
id="gemini-3-flash-
|
|
140
|
-
name="Gemini 3 Flash
|
|
171
|
+
id="gemini-3-flash-agent",
|
|
172
|
+
name="Gemini 3.5 Flash (High)",
|
|
141
173
|
provider="google-antigravity",
|
|
142
174
|
cost=Cost(),
|
|
143
175
|
thinking=True,
|
|
144
176
|
context_window=1_048_576,
|
|
177
|
+
max_output_tokens=65_536,
|
|
145
178
|
input=_TEXT_IMAGE_VIDEO,
|
|
146
179
|
output=_TEXT,
|
|
147
180
|
),
|
|
@@ -151,6 +184,7 @@ models = [
|
|
|
151
184
|
provider="google-antigravity",
|
|
152
185
|
cost=Cost(),
|
|
153
186
|
context_window=1_048_576,
|
|
187
|
+
max_output_tokens=65_535,
|
|
154
188
|
input=_TEXT_IMAGE_VIDEO,
|
|
155
189
|
output=_TEXT,
|
|
156
190
|
),
|
|
@@ -161,6 +195,7 @@ models = [
|
|
|
161
195
|
cost=Cost(),
|
|
162
196
|
thinking=True,
|
|
163
197
|
context_window=1_048_576,
|
|
198
|
+
max_output_tokens=65_535,
|
|
164
199
|
input=_TEXT_IMAGE_VIDEO,
|
|
165
200
|
output=_TEXT,
|
|
166
201
|
),
|
|
@@ -171,6 +206,7 @@ models = [
|
|
|
171
206
|
cost=Cost(),
|
|
172
207
|
thinking=True,
|
|
173
208
|
context_window=1_048_576,
|
|
209
|
+
max_output_tokens=65_535,
|
|
174
210
|
input=_TEXT_IMAGE_VIDEO,
|
|
175
211
|
output=_TEXT,
|
|
176
212
|
),
|
|
@@ -180,36 +216,41 @@ models = [
|
|
|
180
216
|
provider="google-antigravity",
|
|
181
217
|
cost=Cost(),
|
|
182
218
|
context_window=1_048_576,
|
|
219
|
+
max_output_tokens=65_535,
|
|
183
220
|
input=_TEXT_IMAGE_VIDEO,
|
|
184
221
|
output=_TEXT,
|
|
185
222
|
),
|
|
186
223
|
Model(
|
|
187
|
-
id="claude-sonnet-4-
|
|
224
|
+
id="claude-sonnet-4-6",
|
|
188
225
|
name="Claude Sonnet 4.6 (Thinking)",
|
|
189
226
|
provider="google-antigravity",
|
|
190
227
|
cost=Cost(),
|
|
191
228
|
thinking=True,
|
|
192
|
-
context_window=
|
|
229
|
+
context_window=250_000,
|
|
230
|
+
max_output_tokens=64_000,
|
|
193
231
|
input=_TEXT_IMAGE,
|
|
194
232
|
output=_TEXT,
|
|
195
233
|
),
|
|
196
234
|
Model(
|
|
197
|
-
id="claude-opus-4-
|
|
235
|
+
id="claude-opus-4-6-thinking",
|
|
198
236
|
name="Claude Opus 4.6 (Thinking)",
|
|
199
237
|
provider="google-antigravity",
|
|
200
238
|
cost=Cost(),
|
|
201
239
|
thinking=True,
|
|
202
|
-
context_window=
|
|
240
|
+
context_window=250_000,
|
|
241
|
+
max_output_tokens=64_000,
|
|
203
242
|
input=_TEXT_IMAGE,
|
|
204
243
|
output=_TEXT,
|
|
205
244
|
),
|
|
206
245
|
Model(
|
|
207
|
-
id="gpt-oss-
|
|
208
|
-
name="GPT-OSS
|
|
246
|
+
id="gpt-oss-120b-medium",
|
|
247
|
+
name="GPT-OSS 120B (Medium)",
|
|
209
248
|
provider="google-antigravity",
|
|
210
249
|
cost=Cost(),
|
|
211
|
-
|
|
212
|
-
|
|
250
|
+
thinking=True,
|
|
251
|
+
context_window=131_072,
|
|
252
|
+
max_output_tokens=32_768,
|
|
253
|
+
input=_TEXT,
|
|
213
254
|
output=_TEXT,
|
|
214
255
|
),
|
|
215
256
|
# Google AI Studio (Gemini Developer API — API key)
|
|
@@ -370,7 +411,7 @@ models = [
|
|
|
370
411
|
id="claude-fable-5",
|
|
371
412
|
name="Claude Fable 5",
|
|
372
413
|
provider="anthropic-vertex",
|
|
373
|
-
cost=Cost(input=
|
|
414
|
+
cost=Cost(input=10.0, output=50.0, cache_read=1.0),
|
|
374
415
|
thinking=True,
|
|
375
416
|
context_window=1_048_576,
|
|
376
417
|
input=_TEXT_IMAGE,
|
|
@@ -380,7 +421,7 @@ models = [
|
|
|
380
421
|
id="claude-opus-4-8",
|
|
381
422
|
name="Claude Opus 4.8",
|
|
382
423
|
provider="anthropic-vertex",
|
|
383
|
-
cost=Cost(input=
|
|
424
|
+
cost=Cost(input=5.0, output=25.0, cache_read=0.5),
|
|
384
425
|
thinking=True,
|
|
385
426
|
context_window=1_048_576,
|
|
386
427
|
input=_TEXT_IMAGE,
|
|
@@ -390,7 +431,7 @@ models = [
|
|
|
390
431
|
id="claude-opus-4-7",
|
|
391
432
|
name="Claude Opus 4.7",
|
|
392
433
|
provider="anthropic-vertex",
|
|
393
|
-
cost=Cost(input=
|
|
434
|
+
cost=Cost(input=5.0, output=25.0, cache_read=0.5),
|
|
394
435
|
thinking=True,
|
|
395
436
|
context_window=1_048_576,
|
|
396
437
|
input=_TEXT_IMAGE,
|
|
@@ -400,7 +441,7 @@ models = [
|
|
|
400
441
|
id="claude-opus-4-6",
|
|
401
442
|
name="Claude Opus 4.6",
|
|
402
443
|
provider="anthropic-vertex",
|
|
403
|
-
cost=Cost(input=
|
|
444
|
+
cost=Cost(input=5.0, output=25.0, cache_read=0.5),
|
|
404
445
|
thinking=True,
|
|
405
446
|
context_window=1_048_576,
|
|
406
447
|
input=_TEXT_IMAGE,
|
|
@@ -430,7 +471,7 @@ models = [
|
|
|
430
471
|
id="claude-opus-4-5@20251101",
|
|
431
472
|
name="Claude Opus 4.5",
|
|
432
473
|
provider="anthropic-vertex",
|
|
433
|
-
cost=Cost(input=
|
|
474
|
+
cost=Cost(input=5.0, output=25.0, cache_read=0.5),
|
|
434
475
|
thinking=True,
|
|
435
476
|
context_window=200_000,
|
|
436
477
|
input=_TEXT_IMAGE,
|
|
@@ -449,7 +490,7 @@ models = [
|
|
|
449
490
|
id="claude-haiku-4-5@20251001",
|
|
450
491
|
name="Claude Haiku 4.5",
|
|
451
492
|
provider="anthropic-vertex",
|
|
452
|
-
cost=Cost(input=0
|
|
493
|
+
cost=Cost(input=1.0, output=5.0, cache_read=0.10),
|
|
453
494
|
context_window=200_000,
|
|
454
495
|
input=_TEXT_IMAGE,
|
|
455
496
|
output=_TEXT,
|
|
@@ -620,13 +661,33 @@ models = [
|
|
|
620
661
|
output=_TEXT,
|
|
621
662
|
),
|
|
622
663
|
# Anthropic (API key)
|
|
664
|
+
Model(
|
|
665
|
+
id="claude-fable-5",
|
|
666
|
+
name="Claude Fable 5",
|
|
667
|
+
provider="anthropic",
|
|
668
|
+
cost=Cost(input=10.0, output=50.0, cache_read=1.0, cache_write=12.5),
|
|
669
|
+
thinking=True,
|
|
670
|
+
context_window=1_048_576,
|
|
671
|
+
input=_TEXT_IMAGE,
|
|
672
|
+
output=_TEXT,
|
|
673
|
+
),
|
|
674
|
+
Model(
|
|
675
|
+
id="claude-opus-4-8",
|
|
676
|
+
name="Claude Opus 4.8",
|
|
677
|
+
provider="anthropic",
|
|
678
|
+
cost=Cost(input=5.0, output=25.0, cache_read=0.5, cache_write=6.25),
|
|
679
|
+
thinking=True,
|
|
680
|
+
context_window=1_048_576,
|
|
681
|
+
input=_TEXT_IMAGE,
|
|
682
|
+
output=_TEXT,
|
|
683
|
+
),
|
|
623
684
|
Model(
|
|
624
685
|
id="claude-opus-4-7",
|
|
625
686
|
name="Claude Opus 4.7",
|
|
626
687
|
provider="anthropic",
|
|
627
|
-
cost=Cost(input=
|
|
688
|
+
cost=Cost(input=5.0, output=25.0, cache_read=0.5, cache_write=6.25),
|
|
628
689
|
thinking=True,
|
|
629
|
-
context_window=
|
|
690
|
+
context_window=1_048_576,
|
|
630
691
|
input=_TEXT_IMAGE,
|
|
631
692
|
output=_TEXT,
|
|
632
693
|
),
|
|
@@ -634,9 +695,10 @@ models = [
|
|
|
634
695
|
id="claude-sonnet-5",
|
|
635
696
|
name="Claude Sonnet 5",
|
|
636
697
|
provider="anthropic",
|
|
637
|
-
|
|
698
|
+
# Introductory pricing through 2026-08-31; standard rate is $3/$15 after.
|
|
699
|
+
cost=Cost(input=2.0, output=10.0, cache_read=0.20, cache_write=2.5),
|
|
638
700
|
thinking=True,
|
|
639
|
-
context_window=
|
|
701
|
+
context_window=1_048_576,
|
|
640
702
|
input=_TEXT_IMAGE,
|
|
641
703
|
output=_TEXT,
|
|
642
704
|
),
|
|
@@ -646,7 +708,7 @@ models = [
|
|
|
646
708
|
provider="anthropic",
|
|
647
709
|
cost=Cost(input=3.0, output=15.0, cache_read=0.30, cache_write=3.75),
|
|
648
710
|
thinking=True,
|
|
649
|
-
context_window=
|
|
711
|
+
context_window=1_048_576,
|
|
650
712
|
input=_TEXT_IMAGE,
|
|
651
713
|
output=_TEXT,
|
|
652
714
|
),
|
|
@@ -654,7 +716,7 @@ models = [
|
|
|
654
716
|
id="claude-haiku-4-5-20251001",
|
|
655
717
|
name="Claude Haiku 4.5",
|
|
656
718
|
provider="anthropic",
|
|
657
|
-
cost=Cost(input=0
|
|
719
|
+
cost=Cost(input=1.0, output=5.0, cache_read=0.10, cache_write=1.25),
|
|
658
720
|
context_window=200_000,
|
|
659
721
|
input=_TEXT_IMAGE,
|
|
660
722
|
output=_TEXT,
|
|
@@ -2,11 +2,17 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import sys
|
|
5
|
+
import threading
|
|
6
|
+
from collections.abc import Callable, Iterator
|
|
7
|
+
from contextlib import contextmanager
|
|
5
8
|
from pathlib import Path
|
|
6
9
|
from typing import TYPE_CHECKING
|
|
7
10
|
|
|
8
11
|
import click
|
|
9
12
|
|
|
13
|
+
from tau.tui.style import RESET, Style
|
|
14
|
+
from tau.tui.widgets.symbols import FILL_HORIZONTAL
|
|
15
|
+
|
|
10
16
|
if TYPE_CHECKING:
|
|
11
17
|
from tau.packages.manager import PackageManager
|
|
12
18
|
from tau.settings.manager import SettingsManager
|
|
@@ -88,7 +94,6 @@ def _update_tau() -> None:
|
|
|
88
94
|
from tau.settings.paths import get_app_name, get_package_name
|
|
89
95
|
|
|
90
96
|
app = get_package_name()
|
|
91
|
-
click.echo(f"Updating {get_app_name()}…")
|
|
92
97
|
|
|
93
98
|
# Pick the upgrade tool that matches how this copy was installed, inferred
|
|
94
99
|
# from the venv it runs in, so we upgrade the right managed environment.
|
|
@@ -103,8 +108,58 @@ def _update_tau() -> None:
|
|
|
103
108
|
else:
|
|
104
109
|
cmd = [sys.executable, "-m", "pip", "install", "--upgrade", app]
|
|
105
110
|
|
|
106
|
-
|
|
111
|
+
with _progress_bar(f"Updating {get_app_name()}…"):
|
|
112
|
+
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
113
|
+
|
|
107
114
|
if result.returncode == 0:
|
|
108
115
|
click.echo(click.style(f"✓ {get_app_name()} updated successfully", fg="green"))
|
|
109
116
|
else:
|
|
110
117
|
raise click.ClickException(result.stderr.strip() or "Update failed.")
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
# Width of the sweep track and the highlighted window within it, in cells.
|
|
121
|
+
_BAR_WIDTH = 24
|
|
122
|
+
_SWEEP_WIDTH = 8
|
|
123
|
+
_FRAME_INTERVAL = 0.08
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def _sweep_frame(frame: int) -> str:
|
|
127
|
+
"""Render one frame of an indeterminate progress bar: a filled window that
|
|
128
|
+
bounces back and forth across the track, built from the same fill glyph
|
|
129
|
+
and Style the tui's own ``LineGauge`` widget uses (tau/tui/widgets/gauge.py)."""
|
|
130
|
+
track_len = max(1, _BAR_WIDTH - _SWEEP_WIDTH)
|
|
131
|
+
period = track_len * 2
|
|
132
|
+
t = frame % period
|
|
133
|
+
pos = t if t <= track_len else period - t
|
|
134
|
+
fill = FILL_HORIZONTAL[-1]
|
|
135
|
+
cells = [fill if pos <= i < pos + _SWEEP_WIDTH else " " for i in range(_BAR_WIDTH)]
|
|
136
|
+
style = Style().with_fg("bright_cyan")
|
|
137
|
+
return f"[{style.sgr()}{''.join(cells)}{RESET}]"
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
@contextmanager
|
|
141
|
+
def _progress_bar(message: str) -> Iterator[Callable[[], None]]:
|
|
142
|
+
"""Show an indeterminate sweep bar on stderr while a blocking call runs.
|
|
143
|
+
|
|
144
|
+
``subprocess.run(capture_output=True)`` gives no feedback until it
|
|
145
|
+
returns, which can be tens of seconds for an installer download — animate
|
|
146
|
+
on a background thread so the terminal doesn't look hung, then erase it
|
|
147
|
+
in favor of the caller's own result line.
|
|
148
|
+
"""
|
|
149
|
+
stop = threading.Event()
|
|
150
|
+
|
|
151
|
+
def _animate() -> None:
|
|
152
|
+
frame = 0
|
|
153
|
+
while not stop.is_set():
|
|
154
|
+
click.echo(f"\r{_sweep_frame(frame)} {message}", nl=False, err=True)
|
|
155
|
+
frame += 1
|
|
156
|
+
stop.wait(_FRAME_INTERVAL)
|
|
157
|
+
click.echo("\r" + " " * (_BAR_WIDTH + len(message) + 3) + "\r", nl=False, err=True)
|
|
158
|
+
|
|
159
|
+
thread = threading.Thread(target=_animate, daemon=True)
|
|
160
|
+
thread.start()
|
|
161
|
+
try:
|
|
162
|
+
yield stop.set
|
|
163
|
+
finally:
|
|
164
|
+
stop.set()
|
|
165
|
+
thread.join()
|
{tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/anthropic_claude_code.py
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import hashlib
|
|
4
|
+
import os
|
|
3
5
|
from collections.abc import AsyncGenerator
|
|
4
6
|
from typing import TYPE_CHECKING, Any
|
|
5
7
|
|
|
@@ -55,11 +57,127 @@ _DEFAULT_MAX_TOKENS = 8096
|
|
|
55
57
|
|
|
56
58
|
|
|
57
59
|
_OAUTH_HEADERS = {
|
|
58
|
-
"anthropic-beta": "oauth-2025-04-20",
|
|
59
60
|
"x-app": "cli",
|
|
60
61
|
"User-Agent": "claude-cli/2.1.122 (external, sdk-cli)",
|
|
61
62
|
}
|
|
62
63
|
|
|
64
|
+
# System identity that Anthropic's API requires as its own system[] entry for
|
|
65
|
+
# OAuth-authenticated (Claude Pro/Max) requests to be accepted and billed
|
|
66
|
+
# against the subscription rather than rejected with a 400.
|
|
67
|
+
_SYSTEM_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude."
|
|
68
|
+
|
|
69
|
+
_CC_VERSION = "2.1.185"
|
|
70
|
+
_BILLING_SALT = "59cf53e54c78"
|
|
71
|
+
|
|
72
|
+
# Beta flags Claude Code itself sends on every OAuth request.
|
|
73
|
+
_BASE_BETAS = [
|
|
74
|
+
"claude-code-20250219",
|
|
75
|
+
"oauth-2025-04-20",
|
|
76
|
+
"interleaved-thinking-2025-05-14",
|
|
77
|
+
"prompt-caching-scope-2026-01-05",
|
|
78
|
+
"context-management-2025-06-27",
|
|
79
|
+
"advisor-tool-2026-03-01",
|
|
80
|
+
"thinking-token-count-2026-05-13",
|
|
81
|
+
"extended-cache-ttl-2025-04-11",
|
|
82
|
+
"effort-2025-11-24",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
# Per-model beta overrides, matched by substring against the lowercased model id.
|
|
86
|
+
_MODEL_BETA_OVERRIDES: dict[str, dict[str, list[str]]] = {
|
|
87
|
+
"haiku": {"exclude": ["interleaved-thinking-2025-05-14"]},
|
|
88
|
+
"4-6": {"add": ["effort-2025-11-24"]},
|
|
89
|
+
"4-7": {"add": ["effort-2025-11-24"]},
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def _model_betas(model_id: str) -> list[str]:
|
|
94
|
+
"""Return the anthropic-beta flags for `model_id`, applying per-model overrides."""
|
|
95
|
+
betas = list(_BASE_BETAS)
|
|
96
|
+
lower = model_id.lower()
|
|
97
|
+
for pattern, override in _MODEL_BETA_OVERRIDES.items():
|
|
98
|
+
if pattern in lower:
|
|
99
|
+
exclude = override.get("exclude", [])
|
|
100
|
+
betas = [b for b in betas if b not in exclude]
|
|
101
|
+
for b in override.get("add", []):
|
|
102
|
+
if b not in betas:
|
|
103
|
+
betas.append(b)
|
|
104
|
+
break
|
|
105
|
+
return betas
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def _first_user_message_text(messages: list[dict[str, Any]]) -> str:
|
|
109
|
+
"""Extract the text of the first user message's first text block."""
|
|
110
|
+
for message in messages:
|
|
111
|
+
if message.get("role") != "user":
|
|
112
|
+
continue
|
|
113
|
+
content = message.get("content")
|
|
114
|
+
if isinstance(content, str):
|
|
115
|
+
return content
|
|
116
|
+
if isinstance(content, list):
|
|
117
|
+
for block in content:
|
|
118
|
+
if isinstance(block, dict) and block.get("type") == "text":
|
|
119
|
+
return block.get("text", "")
|
|
120
|
+
return ""
|
|
121
|
+
return ""
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def _billing_header_value(messages: list[dict[str, Any]], entrypoint: str) -> str:
|
|
125
|
+
"""Build the `x-anthropic-billing-header` value Claude Code embeds as system[0].
|
|
126
|
+
|
|
127
|
+
Mirrors Claude Code's internal cch/version-suffix computation so OAuth
|
|
128
|
+
requests are billed against the subscription instead of being rejected.
|
|
129
|
+
"""
|
|
130
|
+
text = _first_user_message_text(messages)
|
|
131
|
+
version = os.environ.get("ANTHROPIC_CLI_VERSION", _CC_VERSION)
|
|
132
|
+
sampled = "".join(text[i] if i < len(text) else "0" for i in (4, 7, 20))
|
|
133
|
+
suffix = hashlib.sha256(f"{_BILLING_SALT}{sampled}{version}".encode()).hexdigest()[:3]
|
|
134
|
+
cch = hashlib.sha256(text.encode()).hexdigest()[:5]
|
|
135
|
+
return (
|
|
136
|
+
f"x-anthropic-billing-header: cc_version={version}.{suffix}; "
|
|
137
|
+
f"cc_entrypoint={entrypoint}; cch={cch};"
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def _build_system_blocks(
|
|
142
|
+
system_text: str | None, messages: list[dict[str, Any]]
|
|
143
|
+
) -> tuple[list[dict[str, Any]], list[dict[str, Any]]]:
|
|
144
|
+
"""Split the system prompt for OAuth requests.
|
|
145
|
+
|
|
146
|
+
Anthropic's API validates the system[] array for OAuth-authenticated
|
|
147
|
+
requests: only the billing header and the Claude Code identity string may
|
|
148
|
+
live there. Any other system content triggers a 400 ("out of extra
|
|
149
|
+
usage"). Everything else is relocated to the front of the first user
|
|
150
|
+
message, which is functionally equivalent for the model.
|
|
151
|
+
|
|
152
|
+
Returns (system_blocks, patched_messages).
|
|
153
|
+
"""
|
|
154
|
+
entrypoint = os.environ.get("CLAUDE_CODE_ENTRYPOINT", "sdk-cli")
|
|
155
|
+
system_blocks: list[dict[str, Any]] = [
|
|
156
|
+
{"type": "text", "text": _billing_header_value(messages, entrypoint)},
|
|
157
|
+
{"type": "text", "text": _SYSTEM_IDENTITY, "cache_control": {"type": "ephemeral"}},
|
|
158
|
+
]
|
|
159
|
+
|
|
160
|
+
if not system_text:
|
|
161
|
+
return system_blocks, messages
|
|
162
|
+
|
|
163
|
+
patched = list(messages)
|
|
164
|
+
prefix = system_text
|
|
165
|
+
for i, message in enumerate(patched):
|
|
166
|
+
if message.get("role") != "user":
|
|
167
|
+
continue
|
|
168
|
+
content = message.get("content")
|
|
169
|
+
if isinstance(content, str):
|
|
170
|
+
patched[i] = {**message, "content": f"{prefix}\n\n{content}"}
|
|
171
|
+
elif isinstance(content, list):
|
|
172
|
+
patched[i] = {
|
|
173
|
+
**message,
|
|
174
|
+
"content": [{"type": "text", "text": prefix}, *content],
|
|
175
|
+
}
|
|
176
|
+
else:
|
|
177
|
+
patched[i] = {**message, "content": prefix}
|
|
178
|
+
break
|
|
179
|
+
return system_blocks, patched
|
|
180
|
+
|
|
63
181
|
|
|
64
182
|
class AnthropicClaudeCodeAPI(BaseAPI):
|
|
65
183
|
"""Anthropic Messages API using OAuth token auth (Claude Pro/Max).
|
|
@@ -100,10 +218,8 @@ class AnthropicClaudeCodeAPI(BaseAPI):
|
|
|
100
218
|
}
|
|
101
219
|
if not _suppress_temp:
|
|
102
220
|
params["temperature"] = self.options.temperature
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
{"type": "text", "text": system, "cache_control": {"type": "ephemeral"}}
|
|
106
|
-
]
|
|
221
|
+
system_blocks, params["messages"] = _build_system_blocks(system, params["messages"])
|
|
222
|
+
params["system"] = system_blocks
|
|
107
223
|
if (
|
|
108
224
|
self.options.thinking_level is not None
|
|
109
225
|
and self.options.thinking_level != ThinkingLevel.Off
|
|
@@ -186,7 +302,8 @@ class AnthropicClaudeCodeAPI(BaseAPI):
|
|
|
186
302
|
|
|
187
303
|
yield StartEvent()
|
|
188
304
|
|
|
189
|
-
|
|
305
|
+
extra_headers = {"anthropic-beta": ",".join(_model_betas(model.id))}
|
|
306
|
+
async with self._client.messages.stream(**params, extra_headers=extra_headers) as stream:
|
|
190
307
|
async for event in stream:
|
|
191
308
|
if self._cancelled():
|
|
192
309
|
yield ErrorEvent(reason=StopReason.Abort, error="Cancelled")
|
{tau_coding_agent-0.6.9 → tau_coding_agent-0.7.1}/tau/inference/api/text/google_antigravity.py
RENAMED
|
@@ -181,7 +181,48 @@ def _requires_tool_call_id(model_id: str) -> bool:
|
|
|
181
181
|
omitting it fails multi-turn tool use with ``tool_use.id: Field required``.
|
|
182
182
|
Gemini models tolerate name-based correlation without it.
|
|
183
183
|
"""
|
|
184
|
-
return
|
|
184
|
+
return "claude" in model_id
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def _claude_strict_schema(node: Any) -> Any:
|
|
188
|
+
"""Recursively adapt a tool schema for Claude's strict JSON Schema draft
|
|
189
|
+
2020-12 validation, which Gemini tolerates violating but Claude 400s on:
|
|
190
|
+
|
|
191
|
+
- every object-shaped node needs an explicit ``type: "object"``, at any depth
|
|
192
|
+
- genuine multi-branch unions (``anyOf``/``oneOf``/``allOf`` with more than
|
|
193
|
+
one surviving branch, e.g. a Pydantic ``str | SomeModel`` field) are
|
|
194
|
+
rejected outright by Claude's tool-use engine — collapsed to an untyped
|
|
195
|
+
(permissive) schema, since Claude has no equivalent of a JSON Schema
|
|
196
|
+
union for structured tool input.
|
|
197
|
+
"""
|
|
198
|
+
if isinstance(node, list):
|
|
199
|
+
return [_claude_strict_schema(item) for item in node]
|
|
200
|
+
if not isinstance(node, dict):
|
|
201
|
+
return node
|
|
202
|
+
|
|
203
|
+
fixed = dict(node)
|
|
204
|
+
for key in ("anyOf", "oneOf", "allOf"):
|
|
205
|
+
if key in fixed and isinstance(fixed[key], list):
|
|
206
|
+
branches = [_claude_strict_schema(item) for item in fixed[key]]
|
|
207
|
+
if len(branches) == 1:
|
|
208
|
+
fixed.pop(key)
|
|
209
|
+
fixed.update(branches[0])
|
|
210
|
+
else:
|
|
211
|
+
# Claude rejects real unions; drop the constraint, keep the
|
|
212
|
+
# description so the model still knows what shape to send.
|
|
213
|
+
fixed.pop(key)
|
|
214
|
+
fixed.pop("type", None)
|
|
215
|
+
if "properties" in fixed and isinstance(fixed["properties"], dict):
|
|
216
|
+
fixed["properties"] = {
|
|
217
|
+
key: _claude_strict_schema(value) for key, value in fixed["properties"].items()
|
|
218
|
+
}
|
|
219
|
+
fixed.setdefault("type", "object")
|
|
220
|
+
if "items" in fixed:
|
|
221
|
+
fixed["items"] = _claude_strict_schema(fixed["items"])
|
|
222
|
+
if fixed.get("type") == "object" and "properties" not in fixed:
|
|
223
|
+
fixed["properties"] = {}
|
|
224
|
+
return fixed
|
|
225
|
+
|
|
185
226
|
|
|
186
227
|
def _messages_to_contents(
|
|
187
228
|
messages: list[LLMMessage],
|
|
@@ -337,9 +378,19 @@ class GoogleAntigravityAPI(BaseAPI):
|
|
|
337
378
|
return self._project_id
|
|
338
379
|
|
|
339
380
|
@staticmethod
|
|
340
|
-
def _tools_to_declarations(tools: list[Tool]) -> list[dict[str, Any]]:
|
|
341
|
-
"""Convert Tool objects to Gemini functionDeclarations format.
|
|
381
|
+
def _tools_to_declarations(tools: list[Tool], model_id: str = "") -> list[dict[str, Any]]:
|
|
382
|
+
"""Convert Tool objects to Gemini functionDeclarations format.
|
|
383
|
+
|
|
384
|
+
The wire envelope always uses ``functionDeclarations[].parameters`` —
|
|
385
|
+
cloudcode-pa rejects an ``input_schema`` key outright, even when the
|
|
386
|
+
model routes to Claude server-side. But Claude's backend validates that
|
|
387
|
+
schema strictly against JSON Schema draft 2020-12 and 400s if any node
|
|
388
|
+
with `properties` is missing `type: object` — including nested nodes
|
|
389
|
+
inside `items`/`anyOf`/`oneOf`/`allOf`, which Gemini tolerates but
|
|
390
|
+
Claude does not — so the fix has to walk the whole tree, not just the root.
|
|
391
|
+
"""
|
|
342
392
|
check_strict_tools_supported(tools)
|
|
393
|
+
is_claude = "claude" in model_id
|
|
343
394
|
seen: set[str] = set()
|
|
344
395
|
decls = []
|
|
345
396
|
for t in tools:
|
|
@@ -348,6 +399,8 @@ class GoogleAntigravityAPI(BaseAPI):
|
|
|
348
399
|
seen.add(t.name)
|
|
349
400
|
raw = t.schema.model_json_schema() if t.schema else {}
|
|
350
401
|
schema = gemini_tool_schema(raw)
|
|
402
|
+
if is_claude:
|
|
403
|
+
schema = _claude_strict_schema(schema)
|
|
351
404
|
decls.append({"name": t.name, "description": t.description or "", "parameters": schema})
|
|
352
405
|
return decls
|
|
353
406
|
|
|
@@ -388,7 +441,7 @@ class GoogleAntigravityAPI(BaseAPI):
|
|
|
388
441
|
if generation_config:
|
|
389
442
|
inner["generationConfig"] = generation_config
|
|
390
443
|
if tools:
|
|
391
|
-
decls = self._tools_to_declarations(tools)
|
|
444
|
+
decls = self._tools_to_declarations(tools, model.id)
|
|
392
445
|
if decls:
|
|
393
446
|
inner["tools"] = [{"functionDeclarations": decls}]
|
|
394
447
|
|
|
@@ -411,6 +464,10 @@ class GoogleAntigravityAPI(BaseAPI):
|
|
|
411
464
|
response_format=context.response_format,
|
|
412
465
|
)
|
|
413
466
|
headers = _antigravity_headers(self.options.api_key or "")
|
|
467
|
+
if "claude" in model.id and model.thinking:
|
|
468
|
+
# Antigravity's Claude backend disables interleaved thinking (thinking
|
|
469
|
+
# between tool calls) unless this beta flag is explicitly present.
|
|
470
|
+
headers["anthropic-beta"] = "interleaved-thinking-2025-05-14"
|
|
414
471
|
|
|
415
472
|
if self.options.on_payload:
|
|
416
473
|
modified = self.options.on_payload(body)
|