tau-coding-agent 0.5.1__tar.gz → 0.5.2__tar.gz

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