tau-coding-agent 0.6.7__tar.gz → 0.6.9__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.
Files changed (500) hide show
  1. {tau_coding_agent-0.6.7/tau_coding_agent.egg-info → tau_coding_agent-0.6.9}/PKG-INFO +2 -2
  2. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/pyproject.toml +3 -2
  3. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/agent/prompt/builder.py +14 -1
  4. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/models/text.py +100 -14
  5. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/providers/text.py +2 -0
  6. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/console/cli.py +4 -1
  7. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/extensions/loader.py +26 -5
  8. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/builtins.py +1 -0
  9. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/openai_responses.py +31 -33
  10. tau_coding_agent-0.6.9/tau/inference/api/text/xai_responses.py +31 -0
  11. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/__init__.py +6 -0
  12. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/anthropic_claude_code.py +3 -5
  13. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/github_copilot.py +3 -5
  14. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/google_antigravity.py +3 -5
  15. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/openai_codex.py +3 -5
  16. tau_coding_agent-0.6.9/tau/inference/provider/oauth/xai_grok.py +284 -0
  17. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/types.py +4 -2
  18. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/utils.py +19 -10
  19. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/utils/version_check.py +24 -11
  20. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9/tau_coding_agent.egg-info}/PKG-INFO +2 -2
  21. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau_coding_agent.egg-info/SOURCES.txt +2 -0
  22. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau_coding_agent.egg-info/requires.txt +1 -1
  23. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/LICENSE +0 -0
  24. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/MANIFEST.in +0 -0
  25. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/README.md +0 -0
  26. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/architecture.md +0 -0
  27. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/auth.md +0 -0
  28. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/cli-reference.md +0 -0
  29. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/creating-tools.md +0 -0
  30. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/development.md +0 -0
  31. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/docs.json +0 -0
  32. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/engine.md +0 -0
  33. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/extension-settings.md +0 -0
  34. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/extensions.md +0 -0
  35. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/http-proxy.md +0 -0
  36. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/index.md +0 -0
  37. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/inference-providers.md +0 -0
  38. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/inference.md +0 -0
  39. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/installation.md +0 -0
  40. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/keybindings.md +0 -0
  41. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/messages.md +0 -0
  42. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/project-context.md +0 -0
  43. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/project-structure.md +0 -0
  44. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/prompts.md +0 -0
  45. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/python-api.md +0 -0
  46. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/quickstart.md +0 -0
  47. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/sessions.md +0 -0
  48. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/settings.md +0 -0
  49. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/skills.md +0 -0
  50. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/themes.md +0 -0
  51. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/tools.md +0 -0
  52. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/tui.md +0 -0
  53. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/docs/usage.md +0 -0
  54. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/setup.cfg +0 -0
  55. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/__init__.py +0 -0
  56. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/agent/__init__.py +0 -0
  57. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/agent/embedded.py +0 -0
  58. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/agent/prompt/__init__.py +0 -0
  59. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/agent/prompt/types.py +0 -0
  60. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/agent/service.py +0 -0
  61. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/agent/types.py +0 -0
  62. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/auth/manager.py +0 -0
  63. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/auth/storage.py +0 -0
  64. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/auth/types.py +0 -0
  65. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/__init__.py +0 -0
  66. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/commands/__init__.py +0 -0
  67. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/commands/clear.py +0 -0
  68. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/commands/compact.py +0 -0
  69. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/commands/reload.py +0 -0
  70. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/commands/session.py +0 -0
  71. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/ask_user/__init__.py +0 -0
  72. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/ask_user/component.py +0 -0
  73. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/ask_user/manifest.json +0 -0
  74. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/ask_user/schema.py +0 -0
  75. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/ask_user/tool.py +0 -0
  76. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/btw/__init__.py +0 -0
  77. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/footer/__init__.py +0 -0
  78. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/footer/git.py +0 -0
  79. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/footer/model.py +0 -0
  80. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/footer/utils.py +0 -0
  81. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/header/__init__.py +0 -0
  82. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/loop/README.md +0 -0
  83. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/loop/__init__.py +0 -0
  84. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/loop/dispatch.py +0 -0
  85. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/loop/duration.py +0 -0
  86. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/loop/state.py +0 -0
  87. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/sandbox/__init__.py +0 -0
  88. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/sandbox/manager.py +0 -0
  89. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/sandbox/manifest.json +0 -0
  90. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/sandbox/sandbox_tool.py +0 -0
  91. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/__init__.py +0 -0
  92. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/context-builder.md +0 -0
  93. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/delegate.md +0 -0
  94. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/oracle.md +0 -0
  95. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/planner.md +0 -0
  96. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/researcher.md +0 -0
  97. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/reviewer.md +0 -0
  98. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/scout.md +0 -0
  99. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents/worker.md +0 -0
  100. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/agents.py +0 -0
  101. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/manifest.json +0 -0
  102. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/subagent_schema.py +0 -0
  103. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/subagent/subagent_tool.py +0 -0
  104. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/todo/__init__.py +0 -0
  105. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/todo/manifest.json +0 -0
  106. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/todo/todo_schema.py +0 -0
  107. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/todo/todo_tool.py +0 -0
  108. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/watch/__init__.py +0 -0
  109. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/__init__.py +0 -0
  110. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/engines/__init__.py +0 -0
  111. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/engines/base.py +0 -0
  112. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/engines/ddgs_engine.py +0 -0
  113. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/engines/exa_engine.py +0 -0
  114. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/engines/jina_engine.py +0 -0
  115. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/engines/tavily_engine.py +0 -0
  116. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/manifest.json +0 -0
  117. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/tools/__init__.py +0 -0
  118. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/tools/fetch.py +0 -0
  119. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/web/tools/search.py +0 -0
  120. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/workflow/__init__.py +0 -0
  121. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/workflow/agent_discovery.py +0 -0
  122. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/workflow/manifest.json +0 -0
  123. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/workflow/model.py +0 -0
  124. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/workflow/runner.py +0 -0
  125. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/workflow/skills/create-workflows/SKILL.md +0 -0
  126. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/extensions/workflow/store.py +0 -0
  127. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/models/__init__.py +0 -0
  128. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/models/audio.py +0 -0
  129. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/models/image.py +0 -0
  130. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/models/video.py +0 -0
  131. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/prompts/commit.md +0 -0
  132. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/prompts/docs.md +0 -0
  133. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/prompts/explain.md +0 -0
  134. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/prompts/fix.md +0 -0
  135. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/prompts/refactor.md +0 -0
  136. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/prompts/review.md +0 -0
  137. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/prompts/test.md +0 -0
  138. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/providers/__init__.py +0 -0
  139. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/providers/audio.py +0 -0
  140. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/providers/image.py +0 -0
  141. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/providers/video.py +0 -0
  142. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/skills/code-review/SKILL.md +0 -0
  143. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/skills/debug/SKILL.md +0 -0
  144. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/skills/git-commit/SKILL.md +0 -0
  145. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
  146. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
  147. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/ayu-dark.yaml +0 -0
  148. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/catppuccin.yaml +0 -0
  149. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/dark.yaml +0 -0
  150. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/dracula.yaml +0 -0
  151. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/everforest.yaml +0 -0
  152. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/gruvbox.yaml +0 -0
  153. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/horizon.yaml +0 -0
  154. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/kanagawa.yaml +0 -0
  155. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/light.yaml +0 -0
  156. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/material-ocean.yaml +0 -0
  157. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/monokai.yaml +0 -0
  158. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/night-owl.yaml +0 -0
  159. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/nord.yaml +0 -0
  160. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/one-dark.yaml +0 -0
  161. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/rose-pine.yaml +0 -0
  162. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/solarized-dark.yaml +0 -0
  163. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/themes/tokyo-night.yaml +0 -0
  164. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/__init__.py +0 -0
  165. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/edit.py +0 -0
  166. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/glob.py +0 -0
  167. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/grep.py +0 -0
  168. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/ls.py +0 -0
  169. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/read.py +0 -0
  170. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/terminal.py +0 -0
  171. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/utils.py +0 -0
  172. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/builtins/tools/write.py +0 -0
  173. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/commands/__init__.py +0 -0
  174. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/commands/registry.py +0 -0
  175. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/commands/types.py +0 -0
  176. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/console/__init__.py +0 -0
  177. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/console/commands/__init__.py +0 -0
  178. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/console/commands/auth.py +0 -0
  179. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/console/commands/packages.py +0 -0
  180. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/console/commands/update.py +0 -0
  181. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/core/__init__.py +0 -0
  182. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/core/registry.py +0 -0
  183. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/engine/__init__.py +0 -0
  184. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/engine/service.py +0 -0
  185. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/engine/types.py +0 -0
  186. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/extensions/__init__.py +0 -0
  187. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/extensions/api.py +0 -0
  188. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/extensions/context.py +0 -0
  189. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/extensions/runtime.py +0 -0
  190. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/extensions/settings.py +0 -0
  191. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/__init__.py +0 -0
  192. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/engine.py +0 -0
  193. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/inference.py +0 -0
  194. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/runtime.py +0 -0
  195. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/service.py +0 -0
  196. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/session.py +0 -0
  197. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/tui.py +0 -0
  198. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/hooks/types.py +0 -0
  199. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/__init__.py +0 -0
  200. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/__init__.py +0 -0
  201. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/__init__.py +0 -0
  202. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/base.py +0 -0
  203. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/builtins.py +0 -0
  204. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
  205. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/gemini_audio.py +0 -0
  206. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/openai_audio.py +0 -0
  207. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/registry.py +0 -0
  208. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/sarvam_audio.py +0 -0
  209. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/service.py +0 -0
  210. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/audio/utils.py +0 -0
  211. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/availability.py +0 -0
  212. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/__init__.py +0 -0
  213. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/base.py +0 -0
  214. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/builtins.py +0 -0
  215. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/gemini_image.py +0 -0
  216. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/openai_image.py +0 -0
  217. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/openrouter.py +0 -0
  218. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/registry.py +0 -0
  219. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/image/service.py +0 -0
  220. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/registry.py +0 -0
  221. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/__init__.py +0 -0
  222. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/anthropic_claude_code.py +0 -0
  223. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/anthropic_messages.py +0 -0
  224. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/anthropic_vertex.py +0 -0
  225. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/base.py +0 -0
  226. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/dialect.py +0 -0
  227. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/gemini_generate.py +0 -0
  228. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/github_copilot_chat.py +0 -0
  229. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/google_antigravity.py +0 -0
  230. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/google_vertex.py +0 -0
  231. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/mistral_chat.py +0 -0
  232. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/ollama_chat.py +0 -0
  233. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/openai_codex_responses.py +0 -0
  234. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/openai_completions.py +0 -0
  235. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/openai_vertex.py +0 -0
  236. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/registry.py +0 -0
  237. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/service.py +0 -0
  238. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/types.py +0 -0
  239. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/text/utils.py +0 -0
  240. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/__init__.py +0 -0
  241. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/base.py +0 -0
  242. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/builtins.py +0 -0
  243. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/fal_video.py +0 -0
  244. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/openrouter_video.py +0 -0
  245. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/registry.py +0 -0
  246. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/service.py +0 -0
  247. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/api/video/zai_video.py +0 -0
  248. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/model/__init__.py +0 -0
  249. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/model/registry.py +0 -0
  250. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/model/types.py +0 -0
  251. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/__init__.py +0 -0
  252. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/pkce.py +0 -0
  253. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/types.py +0 -0
  254. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/oauth/utils.py +0 -0
  255. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/provider/registry.py +0 -0
  256. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/types.py +0 -0
  257. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/inference/utils.py +0 -0
  258. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/message/__init__.py +0 -0
  259. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/message/types.py +0 -0
  260. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/message/utils.py +0 -0
  261. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/__init__.py +0 -0
  262. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/__init__.py +0 -0
  263. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/agent_hooks.py +0 -0
  264. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/app.py +0 -0
  265. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/__init__.py +0 -0
  266. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/appearance.py +0 -0
  267. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/auth.py +0 -0
  268. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/context.py +0 -0
  269. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/extensions.py +0 -0
  270. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/misc.py +0 -0
  271. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/model.py +0 -0
  272. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/commands/session.py +0 -0
  273. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/__init__.py +0 -0
  274. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/command_palette.py +0 -0
  275. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/config_selector.py +0 -0
  276. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/extension_selector.py +0 -0
  277. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/file_picker.py +0 -0
  278. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/layout.py +0 -0
  279. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/message_list.py +0 -0
  280. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/model_selector.py +0 -0
  281. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/oauth_selector.py +0 -0
  282. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/overlays.py +0 -0
  283. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/selector_controller.py +0 -0
  284. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/session_selector.py +0 -0
  285. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/settings_selector.py +0 -0
  286. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/theme_selector.py +0 -0
  287. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/thinking_selector.py +0 -0
  288. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/tree_selector.py +0 -0
  289. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/trust_screen.py +0 -0
  290. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/components/voice_selector.py +0 -0
  291. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/input_handler.py +0 -0
  292. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/interactive/ui_context.py +0 -0
  293. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/print/__init__.py +0 -0
  294. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/rpc/__init__.py +0 -0
  295. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/rpc/mode.py +0 -0
  296. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/modes/rpc/types.py +0 -0
  297. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/packages/__init__.py +0 -0
  298. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/packages/manager.py +0 -0
  299. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/packages/types.py +0 -0
  300. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/packages/utils.py +0 -0
  301. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/prompts/expand.py +0 -0
  302. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/prompts/loader.py +0 -0
  303. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/prompts/registry.py +0 -0
  304. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/prompts/types.py +0 -0
  305. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/resources/__init__.py +0 -0
  306. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/resources/loader.py +0 -0
  307. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/resources/types.py +0 -0
  308. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/runtime/dependencies.py +0 -0
  309. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/runtime/service.py +0 -0
  310. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/runtime/types.py +0 -0
  311. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/session/branch_summarization.py +0 -0
  312. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/session/compaction.py +0 -0
  313. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/session/manager.py +0 -0
  314. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/session/types.py +0 -0
  315. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/session/utils.py +0 -0
  316. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/settings/manager.py +0 -0
  317. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/settings/paths.py +0 -0
  318. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/settings/storage.py +0 -0
  319. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/settings/types.py +0 -0
  320. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/settings/utils.py +0 -0
  321. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/skills/loader.py +0 -0
  322. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/skills/registry.py +0 -0
  323. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/skills/types.py +0 -0
  324. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/telemetry/__init__.py +0 -0
  325. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/telemetry/service.py +0 -0
  326. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/telemetry/types.py +0 -0
  327. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/themes/loader.py +0 -0
  328. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/themes/registry.py +0 -0
  329. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/themes/types.py +0 -0
  330. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tool/__init__.py +0 -0
  331. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tool/registry.py +0 -0
  332. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tool/render.py +0 -0
  333. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tool/types.py +0 -0
  334. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/trust/__init__.py +0 -0
  335. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/trust/manager.py +0 -0
  336. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/trust/types.py +0 -0
  337. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/trust/utils.py +0 -0
  338. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/__init__.py +0 -0
  339. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/ansi_bridge.py +0 -0
  340. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/autocomplete.py +0 -0
  341. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/backend.py +0 -0
  342. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/buffer.py +0 -0
  343. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/component.py +0 -0
  344. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/__init__.py +0 -0
  345. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/box.py +0 -0
  346. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/editor.py +0 -0
  347. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/image.py +0 -0
  348. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/select_list.py +0 -0
  349. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/simple_picker.py +0 -0
  350. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/spinner.py +0 -0
  351. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/text_input.py +0 -0
  352. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/components/widget_bridge.py +0 -0
  353. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/frame.py +0 -0
  354. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/geometry.py +0 -0
  355. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/input.py +0 -0
  356. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/keybinding_hints.py +0 -0
  357. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/layout.py +0 -0
  358. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/markdown.py +0 -0
  359. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/palette.py +0 -0
  360. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/service.py +0 -0
  361. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/style.py +0 -0
  362. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/terminal.py +0 -0
  363. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/testing.py +0 -0
  364. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/text.py +0 -0
  365. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/theme.py +0 -0
  366. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widget.py +0 -0
  367. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/__init__.py +0 -0
  368. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/barchart.py +0 -0
  369. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/block.py +0 -0
  370. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/calendar.py +0 -0
  371. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/canvas.py +0 -0
  372. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/chart.py +0 -0
  373. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/clear.py +0 -0
  374. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/gauge.py +0 -0
  375. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/list.py +0 -0
  376. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/paragraph.py +0 -0
  377. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/scrollbar.py +0 -0
  378. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/sparkline.py +0 -0
  379. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/symbols.py +0 -0
  380. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/table.py +0 -0
  381. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/tui/widgets/tabs.py +0 -0
  382. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/utils/__init__.py +0 -0
  383. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/utils/format.py +0 -0
  384. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/utils/http_proxy.py +0 -0
  385. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/utils/image_processing.py +0 -0
  386. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau/utils/secrets.py +0 -0
  387. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
  388. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau_coding_agent.egg-info/entry_points.txt +0 -0
  389. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tau_coding_agent.egg-info/top_level.txt +0 -0
  390. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_agent_compaction.py +0 -0
  391. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_agent_hooks.py +0 -0
  392. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_agent_prompt.py +0 -0
  393. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_agent_types.py +0 -0
  394. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_ansi.py +0 -0
  395. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_ansi_bridge_legacy_image.py +0 -0
  396. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_anthropic_tool_history.py +0 -0
  397. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_ask_user_extension.py +0 -0
  398. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_audio_transcription_apis.py +0 -0
  399. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_auth_command.py +0 -0
  400. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_auth_manager.py +0 -0
  401. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_auth_storage.py +0 -0
  402. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_autocomplete_modifiers.py +0 -0
  403. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_branch_navigation.py +0 -0
  404. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_branch_summarization.py +0 -0
  405. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_builtin_tools.py +0 -0
  406. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_builtin_watch.py +0 -0
  407. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_cli_inputs.py +0 -0
  408. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_cmd_copy.py +0 -0
  409. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_command_execution_policy.py +0 -0
  410. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_command_registry.py +0 -0
  411. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_compaction.py +0 -0
  412. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_component_buffer_bridge.py +0 -0
  413. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_diff.py +0 -0
  414. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_editor_protocol.py +0 -0
  415. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_engine_execution.py +0 -0
  416. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_engine_length_and_live_tools.py +0 -0
  417. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_engine_steering.py +0 -0
  418. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_engine_types.py +0 -0
  419. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_escape_behavior.py +0 -0
  420. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_extension_api.py +0 -0
  421. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_extension_lifecycle.py +0 -0
  422. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_footer_model.py +0 -0
  423. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_footer_utils.py +0 -0
  424. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_fuzzy.py +0 -0
  425. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_gemini_generate.py +0 -0
  426. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_google_antigravity.py +0 -0
  427. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_google_vertex.py +0 -0
  428. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_http_proxy.py +0 -0
  429. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_image_processing.py +0 -0
  430. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_inference_api_text_utils.py +0 -0
  431. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_inference_dialect.py +0 -0
  432. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_inference_error_utils.py +0 -0
  433. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_inference_types.py +0 -0
  434. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_inference_utils.py +0 -0
  435. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_keybindings.py +0 -0
  436. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_layout_render_cells.py +0 -0
  437. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_markdown.py +0 -0
  438. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_message_list_frozen.py +0 -0
  439. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_message_types.py +0 -0
  440. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_message_utils.py +0 -0
  441. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_model_availability.py +0 -0
  442. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_model_command.py +0 -0
  443. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_model_registry.py +0 -0
  444. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_model_selector_modal.py +0 -0
  445. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_model_types.py +0 -0
  446. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_oauth_utils.py +0 -0
  447. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_package_resources.py +0 -0
  448. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_packages_utils.py +0 -0
  449. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_peer_extension.py +0 -0
  450. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_pkce.py +0 -0
  451. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_prompts_expand.py +0 -0
  452. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_prompts_loader.py +0 -0
  453. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_prompts_registry.py +0 -0
  454. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_provider_registry.py +0 -0
  455. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_resource_loader.py +0 -0
  456. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_rpc_mode.py +0 -0
  457. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_runtime_sdk.py +0 -0
  458. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_scrollback_raw_writes.py +0 -0
  459. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_scrollback_terminal.py +0 -0
  460. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_secrets.py +0 -0
  461. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_select_list_render_cells.py +0 -0
  462. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_selector_controller.py +0 -0
  463. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_session_manager.py +0 -0
  464. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_session_trust_persist.py +0 -0
  465. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_session_types.py +0 -0
  466. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_session_utils.py +0 -0
  467. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_settings_manager.py +0 -0
  468. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_settings_paths.py +0 -0
  469. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_settings_storage.py +0 -0
  470. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_settings_utils.py +0 -0
  471. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_skills_loader.py +0 -0
  472. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_skills_registry.py +0 -0
  473. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_strip_control_chars.py +0 -0
  474. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_subagent_context.py +0 -0
  475. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_telemetry.py +0 -0
  476. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_text_input.py +0 -0
  477. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_text_input_render_cells.py +0 -0
  478. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_text_llm_invoke.py +0 -0
  479. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_text_llm_model_resolution.py +0 -0
  480. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_theme_loader.py +0 -0
  481. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_themes_registry.py +0 -0
  482. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_thinking_render.py +0 -0
  483. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tool_registry.py +0 -0
  484. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tool_render.py +0 -0
  485. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tree_branch_restore.py +0 -0
  486. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_trust_manager.py +0 -0
  487. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_trust_utils.py +0 -0
  488. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_capabilities.py +0 -0
  489. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_child_rows.py +0 -0
  490. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_input.py +0 -0
  491. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_layout_sizing.py +0 -0
  492. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_public_api.py +0 -0
  493. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_renderer.py +0 -0
  494. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_select_list.py +0 -0
  495. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_theme.py +0 -0
  496. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_tui_utils.py +0 -0
  497. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_ui_context.py +0 -0
  498. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_utils_hashline.py +0 -0
  499. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/tests/test_version_check.py +0 -0
  500. {tau_coding_agent-0.6.7 → tau_coding_agent-0.6.9}/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.6.7
3
+ Version: 0.6.9
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
@@ -31,9 +31,9 @@ Requires-Dist: grapheme==0.6.0
31
31
  Requires-Dist: arrow==1.4.0
32
32
  Requires-Dist: kiwisolver==1.5.0
33
33
  Requires-Dist: tiktoken==0.13.0
34
+ Requires-Dist: rapidfuzz==3.14.3
34
35
  Provides-Extra: tools
35
36
  Requires-Dist: ripgrep>=14.0.0; extra == "tools"
36
- Requires-Dist: ast-grep-cli>=0.44.0; extra == "tools"
37
37
  Dynamic: license-file
38
38
 
39
39
  <div align="center">
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tau-coding-agent"
7
- version = "0.6.7"
7
+ version = "0.6.9"
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"
@@ -35,6 +35,7 @@ dependencies = [
35
35
  "arrow==1.4.0",
36
36
  "kiwisolver==1.5.0",
37
37
  "tiktoken==0.13.0",
38
+ "rapidfuzz==3.14.3",
38
39
  ]
39
40
 
40
41
  [project.scripts]
@@ -74,7 +75,7 @@ tau = [
74
75
  testpaths = ["tests"]
75
76
 
76
77
  [project.optional-dependencies]
77
- tools = ["ripgrep>=14.0.0", "ast-grep-cli>=0.44.0"]
78
+ tools = ["ripgrep>=14.0.0"]
78
79
 
79
80
  [dependency-groups]
80
81
  dev = [
@@ -212,10 +212,23 @@ def _detect_machine() -> str:
212
212
 
213
213
 
214
214
  def _detect_shell() -> str:
215
- """Detect the user's shell from $SHELL, falling back to common shells on PATH."""
215
+ """Detect the user's shell from $SHELL, falling back to common shells on PATH.
216
+
217
+ On Windows, ``$SHELL`` is a POSIX convention and is essentially never set,
218
+ so this used to fall through to up to 4 ``shutil.which()`` calls, each
219
+ scanning every ``PATH`` entry against every ``PATHEXT`` suffix for shells
220
+ (zsh, fish, sh) that don't exist on Windows. We instead resolve the native
221
+ shell directly from environment variables the OS always sets, with no
222
+ PATH scan.
223
+ """
216
224
  shell = os.environ.get("SHELL", "")
217
225
  if shell:
218
226
  return Path(shell).name
227
+ if sys.platform == "win32":
228
+ if os.environ.get("PSModulePath"):
229
+ return "powershell"
230
+ comspec = os.environ.get("COMSPEC", "")
231
+ return Path(comspec).stem if comspec else "cmd"
219
232
  for candidate in ("bash", "zsh", "fish", "sh"):
220
233
  if shutil.which(candidate):
221
234
  return candidate
@@ -1008,6 +1008,16 @@ models = [
1008
1008
  output=_TEXT,
1009
1009
  ),
1010
1010
  # xAI
1011
+ Model(
1012
+ id="grok-4.5",
1013
+ name="Grok 4.5",
1014
+ provider="xai",
1015
+ cost=Cost(input=2.00, output=6.00),
1016
+ thinking=True,
1017
+ context_window=500_000,
1018
+ input=_TEXT_IMAGE,
1019
+ output=_TEXT,
1020
+ ),
1011
1021
  Model(
1012
1022
  id="grok-4.3",
1013
1023
  name="Grok 4.3",
@@ -1028,6 +1038,42 @@ models = [
1028
1038
  input=_TEXT_IMAGE,
1029
1039
  output=_TEXT,
1030
1040
  ),
1041
+ # xAI Grok CLI (OAuth — SuperGrok/X Premium+ subscription quota via
1042
+ # cli-chat-proxy.grok.com, the same backend the official Grok CLI uses).
1043
+ # grok-4.3 and grok-build are recognized by the proxy alongside grok-4.5
1044
+ # (confirmed live: HTTP 402 "need subscription" rather than 404/401 when
1045
+ # the account isn't entitled to them) — same models as the "xai" API-key
1046
+ # provider, just billed against subscription quota instead of per-token.
1047
+ Model(
1048
+ id="grok-4.5",
1049
+ name="Grok 4.5",
1050
+ provider="xai-grok",
1051
+ cost=Cost(),
1052
+ thinking=True,
1053
+ context_window=500_000,
1054
+ input=_TEXT_IMAGE,
1055
+ output=_TEXT,
1056
+ ),
1057
+ Model(
1058
+ id="grok-4.3",
1059
+ name="Grok 4.3",
1060
+ provider="xai-grok",
1061
+ cost=Cost(),
1062
+ thinking=True,
1063
+ context_window=1_000_000,
1064
+ input=_TEXT_IMAGE,
1065
+ output=_TEXT,
1066
+ ),
1067
+ Model(
1068
+ id="grok-build",
1069
+ name="Grok Build",
1070
+ provider="xai-grok",
1071
+ cost=Cost(),
1072
+ thinking=True,
1073
+ context_window=256_000,
1074
+ input=_TEXT_IMAGE,
1075
+ output=_TEXT,
1076
+ ),
1031
1077
  # AWS Bedrock
1032
1078
  Model(
1033
1079
  id="openai.gpt-oss-120b",
@@ -1552,7 +1598,8 @@ models = [
1552
1598
  input=_TEXT,
1553
1599
  output=_TEXT,
1554
1600
  ),
1555
- # Mistral
1601
+ # Mistral. Magistral (reasoning-only line) is deprecated — Medium 3.5 and
1602
+ # Small 4 absorbed its reasoning mode behind the reasoning_effort param.
1556
1603
  Model(
1557
1604
  id="mistral-large-latest",
1558
1605
  name="Mistral Large 3",
@@ -1566,8 +1613,9 @@ models = [
1566
1613
  id="mistral-medium-latest",
1567
1614
  name="Mistral Medium 3.5",
1568
1615
  provider="mistral",
1569
- cost=Cost(input=0.40, output=2.0),
1570
- context_window=131_072,
1616
+ cost=Cost(input=1.50, output=7.50),
1617
+ thinking=True,
1618
+ context_window=262_144,
1571
1619
  input=_TEXT_IMAGE,
1572
1620
  output=_TEXT,
1573
1621
  ),
@@ -1575,27 +1623,26 @@ models = [
1575
1623
  id="mistral-small-latest",
1576
1624
  name="Mistral Small 4",
1577
1625
  provider="mistral",
1578
- cost=Cost(input=0.10, output=0.30),
1626
+ cost=Cost(input=0.15, output=0.60),
1579
1627
  thinking=True,
1580
- context_window=131_072,
1628
+ context_window=262_144,
1581
1629
  input=_TEXT_IMAGE,
1582
1630
  output=_TEXT,
1583
1631
  ),
1584
1632
  Model(
1585
- id="magistral-medium-latest",
1586
- name="Magistral Medium 1.2",
1633
+ id="devstral-medium-latest",
1634
+ name="Devstral 2",
1587
1635
  provider="mistral",
1588
- cost=Cost(input=2.0, output=5.0),
1589
- thinking=True,
1590
- context_window=128_000,
1591
- input=_TEXT_IMAGE,
1636
+ cost=Cost(input=0.40, output=2.0),
1637
+ context_window=262_144,
1638
+ input=_TEXT,
1592
1639
  output=_TEXT,
1593
1640
  ),
1594
1641
  Model(
1595
- id="devstral-latest",
1596
- name="Devstral 2",
1642
+ id="devstral-small-latest",
1643
+ name="Devstral Small 2",
1597
1644
  provider="mistral",
1598
- cost=Cost(input=0.40, output=2.0),
1645
+ cost=Cost(input=0.10, output=0.30),
1599
1646
  context_window=262_144,
1600
1647
  input=_TEXT,
1601
1648
  output=_TEXT,
@@ -1609,6 +1656,45 @@ models = [
1609
1656
  input=_TEXT,
1610
1657
  output=_TEXT,
1611
1658
  ),
1659
+ # Labs (free/experimental) — code agent for Lean 4 formal proof engineering
1660
+ # and automated theorem proving, not a general chat model.
1661
+ Model(
1662
+ id="labs-leanstral-1-5",
1663
+ name="Leanstral 1.5",
1664
+ provider="mistral",
1665
+ cost=Cost(),
1666
+ thinking=True,
1667
+ context_window=256_000,
1668
+ input=_TEXT,
1669
+ output=_TEXT,
1670
+ ),
1671
+ Model(
1672
+ id="ministral-3-14b-2512",
1673
+ name="Ministral 3 14B",
1674
+ provider="mistral",
1675
+ cost=Cost(input=0.20, output=0.20),
1676
+ context_window=128_000,
1677
+ input=_TEXT_IMAGE,
1678
+ output=_TEXT,
1679
+ ),
1680
+ Model(
1681
+ id="ministral-3-8b-2512",
1682
+ name="Ministral 3 8B",
1683
+ provider="mistral",
1684
+ cost=Cost(input=0.15, output=0.15),
1685
+ context_window=128_000,
1686
+ input=_TEXT_IMAGE,
1687
+ output=_TEXT,
1688
+ ),
1689
+ Model(
1690
+ id="ministral-3-3b-2512",
1691
+ name="Ministral 3 3B",
1692
+ provider="mistral",
1693
+ cost=Cost(input=0.10, output=0.10),
1694
+ context_window=128_000,
1695
+ input=_TEXT_IMAGE,
1696
+ output=_TEXT,
1697
+ ),
1612
1698
  # Ollama Cloud (catalog from models.dev / ollama-cloud — https://ollama.com/v1)
1613
1699
  Model(
1614
1700
  id="cogito-2.1:671b-cloud",
@@ -4,6 +4,7 @@ from tau.inference.provider.oauth.anthropic_claude_code import AnthropicClaudeCo
4
4
  from tau.inference.provider.oauth.github_copilot import GitHubCopilotOAuthProvider
5
5
  from tau.inference.provider.oauth.google_antigravity import GoogleAntigravityOAuthProvider
6
6
  from tau.inference.provider.oauth.openai_codex import OpenAICodexOAuthProvider
7
+ from tau.inference.provider.oauth.xai_grok import XAIGrokOAuthProvider
7
8
  from tau.inference.provider.types import APIProvider
8
9
  from tau.inference.types import AuthType, LLMOptions
9
10
 
@@ -129,6 +130,7 @@ oauth_providers = [
129
130
  AnthropicClaudeCodeOAuthProvider(),
130
131
  GitHubCopilotOAuthProvider(),
131
132
  GoogleAntigravityOAuthProvider(),
133
+ XAIGrokOAuthProvider(),
132
134
  ]
133
135
 
134
136
  providers = api_providers + oauth_providers
@@ -5,15 +5,18 @@ import logging
5
5
  import os
6
6
  import sys
7
7
  from pathlib import Path
8
+ from typing import TYPE_CHECKING
8
9
 
9
10
  import click
10
11
 
11
12
  from tau.console.commands.auth import auth
12
13
  from tau.console.commands.packages import install, list_packages, remove
13
14
  from tau.console.commands.update import update
14
- from tau.runtime.service import Runtime
15
15
  from tau.settings.paths import get_app_version
16
16
 
17
+ if TYPE_CHECKING:
18
+ from tau.runtime.service import Runtime
19
+
17
20
  _MODES = ("interactive", "print", "json", "rpc")
18
21
  _OUTPUT_FORMATS = ("text", "json")
19
22
 
@@ -409,7 +409,11 @@ class ExtensionLoader:
409
409
  """Install an extension's declared dependencies, once per dependency set.
410
410
 
411
411
  Runs synchronously (called via ``asyncio.to_thread``) so the blocking
412
- subprocess install doesn't stall the event loop.
412
+ subprocess install doesn't stall the event loop. A failed install is
413
+ cached too, not just successes — otherwise a dependency that can never
414
+ build on this interpreter (e.g. no wheel for a free-threaded Python
415
+ build, missing compiler) retries the full failing subprocess on every
416
+ single startup instead of failing fast after the first attempt.
413
417
  """
414
418
  from tau.packages.manager import PackageManager
415
419
 
@@ -424,7 +428,7 @@ class ExtensionLoader:
424
428
 
425
429
  digest = hashlib.sha256("\n".join(sorted(deps)).encode("utf-8")).hexdigest()
426
430
  cache_file = venv_dir / ".tau_ext_deps.json"
427
- cache: dict[str, str] = {}
431
+ cache: dict[str, Any] = {}
428
432
  if cache_file.is_file():
429
433
  try:
430
434
  cache = json.loads(cache_file.read_text(encoding="utf-8"))
@@ -433,12 +437,29 @@ class ExtensionLoader:
433
437
  cache = {}
434
438
 
435
439
  key = str(subdir.resolve())
436
- if cache.get(key) != digest:
437
- _log.info("Installing dependencies for extension %r: %s", subdir.name, ", ".join(deps))
440
+ entry = cache.get(key)
441
+ # Older cache files stored the digest directly as a bare string (success-only).
442
+ cached_digest = entry.get("digest") if isinstance(entry, dict) else entry
443
+ if cached_digest == digest:
444
+ if isinstance(entry, dict) and not entry.get("ok", True):
445
+ raise RuntimeError(
446
+ f"Dependencies for extension {subdir.name!r} previously failed to "
447
+ f"install: {entry.get('error', 'unknown error')}"
448
+ )
449
+ add_site_packages_path(pkg_mgr.site_packages())
450
+ return
451
+
452
+ _log.info("Installing dependencies for extension %r: %s", subdir.name, ", ".join(deps))
453
+ try:
438
454
  pkg_mgr.install_requirements(deps)
439
- cache[key] = digest
455
+ except Exception as exc:
456
+ cache[key] = {"digest": digest, "ok": False, "error": str(exc)}
440
457
  cache_file.parent.mkdir(parents=True, exist_ok=True)
441
458
  cache_file.write_text(json.dumps(cache, indent=2), encoding="utf-8")
459
+ raise
460
+ cache[key] = {"digest": digest, "ok": True}
461
+ cache_file.parent.mkdir(parents=True, exist_ok=True)
462
+ cache_file.write_text(json.dumps(cache, indent=2), encoding="utf-8")
442
463
 
443
464
  add_site_packages_path(pkg_mgr.site_packages())
444
465
 
@@ -22,6 +22,7 @@ LLM_APIS: list[tuple[str, str]] = [
22
22
  ("google_vertex", "tau.inference.api.text.google_vertex:GoogleVertexAPI"),
23
23
  ("anthropic_vertex", "tau.inference.api.text.anthropic_vertex:AnthropicVertexAPI"),
24
24
  ("openai_vertex", "tau.inference.api.text.openai_vertex:OpenAIVertexAPI"),
25
+ ("xai", "tau.inference.api.text.xai_responses:XAIAPIResponses"),
25
26
  ]
26
27
 
27
28
  # Backward-compat alias
@@ -88,15 +88,9 @@ def _content_to_openai(content_items: list, supports_thinking: bool = True) -> l
88
88
  else f"data:{mime or 'image/png'};base64,{b64}"
89
89
  )
90
90
  other_parts.append({"type": "input_image", "image_url": url})
91
- case ToolCallContent():
92
- other_parts.append(
93
- {
94
- "type": "function_call",
95
- "call_id": item.id,
96
- "name": item.name,
97
- "arguments": json.dumps(item.args),
98
- }
99
- )
91
+ # ToolCallContent is handled by _messages_to_input, which hoists
92
+ # it out to a top-level function_call item — see the comment
93
+ # on the supports_thinking=True branch below.
100
94
  parts: list[dict[str, Any]] = []
101
95
  if thinking_parts or text_parts:
102
96
  merged = "\n".join(thinking_parts + text_parts)
@@ -104,6 +98,11 @@ def _content_to_openai(content_items: list, supports_thinking: bool = True) -> l
104
98
  parts.extend(other_parts)
105
99
  return parts
106
100
 
101
+ # ThinkingContent and ToolCallContent are intentionally not handled here:
102
+ # the Responses API has no "thinking" content-part type (reasoning is
103
+ # ephemeral and isn't replayed on later turns — see openai_codex_responses.py),
104
+ # and function_call is a top-level input item, not nested inside a
105
+ # message's content array. _messages_to_input hoists it out separately.
107
106
  parts = []
108
107
  for item in content_items:
109
108
  match item:
@@ -117,23 +116,6 @@ def _content_to_openai(content_items: list, supports_thinking: bool = True) -> l
117
116
  else f"data:{mime or 'image/png'};base64,{b64}"
118
117
  )
119
118
  parts.append({"type": "input_image", "image_url": url})
120
- case ThinkingContent():
121
- parts.append(
122
- {
123
- "type": "thinking",
124
- "thinking": item.content,
125
- "signature": item.signature,
126
- }
127
- )
128
- case ToolCallContent():
129
- parts.append(
130
- {
131
- "type": "function_call",
132
- "call_id": item.id,
133
- "name": item.name,
134
- "arguments": json.dumps(item.args),
135
- }
136
- )
137
119
  return parts
138
120
 
139
121
 
@@ -167,6 +149,19 @@ def _messages_to_input(
167
149
  parts = _content_to_openai(msg.contents, supports_thinking=supports_thinking)
168
150
  if parts:
169
151
  input_items.append({"role": role, "content": parts})
152
+ # function_call is a top-level input item in the Responses API,
153
+ # not nested inside a message's content array. It must precede
154
+ # its matching function_call_output (emitted by the ToolMessage).
155
+ for content in msg.contents:
156
+ if isinstance(content, ToolCallContent):
157
+ input_items.append(
158
+ {
159
+ "type": "function_call",
160
+ "call_id": content.id,
161
+ "name": content.name,
162
+ "arguments": json.dumps(content.args),
163
+ }
164
+ )
170
165
 
171
166
  return instructions, input_items
172
167
 
@@ -258,7 +253,12 @@ class OpenAIResponsesAPI(BaseAPI):
258
253
  if modified is not None:
259
254
  params = modified
260
255
 
261
- tool_names: dict[str, str] = {}
256
+ # Keyed by the response item's own id (event.item_id in the arguments
257
+ # delta/done events), mapping to (call_id, name). item_id and call_id
258
+ # are two distinct identifiers — OpenAI's backend happens to make them
259
+ # equal, but other Responses-API-compatible backends (e.g. xAI's Grok
260
+ # CLI proxy) don't, so they must be tracked separately.
261
+ tool_calls: dict[str, tuple[str, str]] = {}
262
262
  _input_tokens = 0
263
263
  _output_tokens = 0
264
264
  _cache_read_tokens = 0
@@ -279,7 +279,7 @@ class OpenAIResponsesAPI(BaseAPI):
279
279
  elif item.type == "reasoning":
280
280
  yield ThinkingStartEvent(thinking=None)
281
281
  elif item.type == "function_call":
282
- tool_names[item.call_id] = item.name # type: ignore[union-attr,index]
282
+ tool_calls[item.id] = (item.call_id, item.name) # type: ignore[union-attr,index]
283
283
  yield ToolCallStartEvent(
284
284
  tool_call=ToolCallContent(id=item.call_id, name=item.name) # type: ignore[union-attr,arg-type]
285
285
  )
@@ -297,18 +297,16 @@ class OpenAIResponsesAPI(BaseAPI):
297
297
  yield ThinkingEndEvent(thinking=ThinkingContent(content=event.text)) # type: ignore[union-attr]
298
298
 
299
299
  elif etype == "response.function_call_arguments.delta":
300
- call_id = event.item_id # type: ignore[union-attr]
300
+ call_id, _ = tool_calls.get(event.item_id, (event.item_id, "")) # type: ignore[union-attr]
301
301
  yield ToolCallDeltaEvent(tool_call=ToolCallContent(id=call_id))
302
302
 
303
303
  elif etype == "response.function_call_arguments.done":
304
- call_id = event.item_id # type: ignore[union-attr]
304
+ call_id, name = tool_calls.get(event.item_id, (event.item_id, "")) # type: ignore[union-attr]
305
305
  args_str = event.arguments.strip() # type: ignore[union-attr]
306
306
  args = parse_tool_args(args_str)
307
307
 
308
308
  yield ToolCallEndEvent(
309
- tool_call=ToolCallContent(
310
- id=call_id, name=tool_names.get(call_id, ""), args=args
311
- )
309
+ tool_call=ToolCallContent(id=call_id, name=name, args=args)
312
310
  )
313
311
 
314
312
  elif etype == "response.done":
@@ -0,0 +1,31 @@
1
+ """
2
+ xAI Grok CLI API — thin wrapper around the OpenAI Responses API adapter,
3
+ pointed at the Grok CLI's cli-chat-proxy.grok.com backend.
4
+
5
+ That proxy gatekeeps on client-identity headers (confirmed live: a request
6
+ without ``x-grok-client-version`` is rejected with HTTP 426 "outdated
7
+ version"), which the plain OpenAI Responses client doesn't send.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from tau.inference.api.text.openai_responses import OpenAIResponsesAPI
13
+ from tau.inference.types import LLMOptions
14
+
15
+ __all__ = ["XAIAPIResponses"]
16
+
17
+ _DEFAULT_BASE_URL = "https://cli-chat-proxy.grok.com/v1"
18
+ _CLIENT_VERSION = "0.2.93"
19
+
20
+ _GROK_CLI_HEADERS = {
21
+ "x-grok-client-identifier": "grok-cli",
22
+ "x-grok-client-version": _CLIENT_VERSION,
23
+ "x-xai-token-auth": "xai-grok-cli",
24
+ }
25
+
26
+
27
+ class XAIAPIResponses(OpenAIResponsesAPI):
28
+ def __init__(self, options: LLMOptions) -> None:
29
+ options.base_url = options.base_url or _DEFAULT_BASE_URL
30
+ options.headers = {**_GROK_CLI_HEADERS, **(options.headers or {})}
31
+ super().__init__(options)
@@ -17,6 +17,7 @@ if TYPE_CHECKING:
17
17
  )
18
18
  from tau.inference.provider.oauth.google_antigravity import GoogleAntigravityOAuthProvider
19
19
  from tau.inference.provider.oauth.openai_codex import OpenAICodexOAuthProvider
20
+ from tau.inference.provider.oauth.xai_grok import XAIGrokOAuthProvider
20
21
 
21
22
  __all__ = [
22
23
  "OAuthProvider",
@@ -30,6 +31,7 @@ __all__ = [
30
31
  "GitHubCopilotOAuthProvider",
31
32
  "get_copilot_base_url",
32
33
  "GoogleAntigravityOAuthProvider",
34
+ "XAIGrokOAuthProvider",
33
35
  ]
34
36
 
35
37
 
@@ -57,4 +59,8 @@ def __getattr__(name: str):
57
59
  from tau.inference.provider.oauth.google_antigravity import GoogleAntigravityOAuthProvider
58
60
 
59
61
  return GoogleAntigravityOAuthProvider
62
+ if name == "XAIGrokOAuthProvider":
63
+ from tau.inference.provider.oauth.xai_grok import XAIGrokOAuthProvider
64
+
65
+ return XAIGrokOAuthProvider
60
66
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -308,11 +308,9 @@ class AnthropicClaudeCodeOAuthProvider(OAuthProvider):
308
308
  pass
309
309
 
310
310
  @property
311
- def api(self):
312
- """Return the API class that handles requests with this provider's tokens."""
313
- from tau.inference.api.text.anthropic_claude_code import AnthropicClaudeCodeAPI
314
-
315
- return AnthropicClaudeCodeAPI
311
+ def api(self) -> str:
312
+ """Registry key for the API class; resolved (and the SDK imported) lazily."""
313
+ return "anthropic_claude_code"
316
314
 
317
315
  async def validate(
318
316
  self, credential: OAuthCredential, signal: AbortSignal | None = None
@@ -353,8 +353,6 @@ class GitHubCopilotOAuthProvider(OAuthProvider):
353
353
  return not (signal and signal.is_set())
354
354
 
355
355
  @property
356
- def api(self):
357
- """Return the API class that handles requests with this provider's tokens."""
358
- from tau.inference.api.text.github_copilot_chat import GitHubCopilotChatAPI
359
-
360
- return GitHubCopilotChatAPI
356
+ def api(self) -> str:
357
+ """Registry key for the API class; resolved (and the SDK imported) lazily."""
358
+ return "github_copilot_chat"
@@ -277,11 +277,9 @@ class GoogleAntigravityOAuthProvider(OAuthProvider):
277
277
  pass
278
278
 
279
279
  @property
280
- def api(self):
281
- """Return the API class that handles requests with this provider's tokens."""
282
- from tau.inference.api.text.google_antigravity import GoogleAntigravityAPI
283
-
284
- return GoogleAntigravityAPI
280
+ def api(self) -> str:
281
+ """Registry key for the API class; resolved (and the SDK imported) lazily."""
282
+ return "google_antigravity"
285
283
 
286
284
  async def validate(
287
285
  self, credential: OAuthCredential, signal: AbortSignal | None = None
@@ -326,11 +326,9 @@ class OpenAICodexOAuthProvider(OAuthProvider):
326
326
  await asyncio.to_thread(_revoke_token_sync, credential.refresh)
327
327
 
328
328
  @property
329
- def api(self):
330
- """Return the API class that handles requests with this provider's tokens."""
331
- from tau.inference.api.text.openai_codex_responses import OpenAICodexResponsesAPI
332
-
333
- return OpenAICodexResponsesAPI
329
+ def api(self) -> str:
330
+ """Registry key for the API class; resolved (and the SDK imported) lazily."""
331
+ return "openai_codex_responses"
334
332
 
335
333
  async def validate(
336
334
  self, credential: OAuthCredential, signal: AbortSignal | None = None