tau-coding-agent 0.5.0__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 (383) hide show
  1. {tau_coding_agent-0.5.0/tau_coding_agent.egg-info → tau_coding_agent-0.5.2}/PKG-INFO +1 -1
  2. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/architecture.md +11 -3
  3. tau_coding_agent-0.5.2/docs/creating-tools.md +242 -0
  4. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/docs.json +16 -0
  5. tau_coding_agent-0.5.2/docs/engine.md +114 -0
  6. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/extensions.md +3 -1
  7. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/index.md +4 -0
  8. tau_coding_agent-0.5.2/docs/inference.md +229 -0
  9. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/project-structure.md +16 -13
  10. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/python-api.md +3 -1
  11. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/tools.md +14 -3
  12. tau_coding_agent-0.5.2/docs/tui.md +167 -0
  13. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/pyproject.toml +1 -1
  14. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/agent/service.py +5 -4
  15. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/agent/types.py +5 -13
  16. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/models/text.py +1 -0
  17. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/edit.py +1 -1
  18. tau_coding_agent-0.5.2/tau/builtins/tools/terminal.py +342 -0
  19. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/utils.py +108 -1
  20. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/engine/__init__.py +16 -8
  21. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/engine/service.py +17 -17
  22. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/engine/types.py +10 -0
  23. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/extensions/context.py +2 -2
  24. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/agent_hooks.py +6 -0
  25. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/app.py +6 -1
  26. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/layout.py +11 -0
  27. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/message_list.py +4 -0
  28. {tau_coding_agent-0.5.0/tau/tui → tau_coding_agent-0.5.2/tau/modes/interactive}/ui_context.py +5 -2
  29. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/rpc/mode.py +10 -5
  30. tau_coding_agent-0.5.2/tau/tui/__init__.py +134 -0
  31. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/autocomplete.py +34 -7
  32. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/component.py +45 -0
  33. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/components/image.py +13 -3
  34. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/components/spinner.py +8 -0
  35. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/components/text_input.py +8 -1
  36. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/input.py +15 -0
  37. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/markdown.py +3 -8
  38. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/terminal.py +146 -2
  39. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/theme.py +24 -0
  40. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/tui.py +115 -14
  41. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2/tau_coding_agent.egg-info}/PKG-INFO +1 -1
  42. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/SOURCES.txt +8 -1
  43. tau_coding_agent-0.5.2/tests/test_ask_user_extension.py +46 -0
  44. tau_coding_agent-0.5.2/tests/test_autocomplete_modifiers.py +52 -0
  45. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_builtin_tools.py +123 -1
  46. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_engine_execution.py +17 -0
  47. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_engine_steering.py +21 -17
  48. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_inference_dialect.py +16 -1
  49. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_text_input.py +17 -0
  50. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_thinking_render.py +21 -0
  51. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tui_input.py +10 -0
  52. tau_coding_agent-0.5.2/tests/test_tui_public_api.py +55 -0
  53. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tui_renderer.py +60 -4
  54. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tui_theme.py +27 -0
  55. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_ui_context.py +1 -1
  56. tau_coding_agent-0.5.0/tau/builtins/tools/terminal.py +0 -213
  57. tau_coding_agent-0.5.0/tau/tui/__init__.py +0 -69
  58. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/LICENSE +0 -0
  59. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/MANIFEST.in +0 -0
  60. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/README.md +0 -0
  61. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/auth.md +0 -0
  62. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/cli-reference.md +0 -0
  63. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/development.md +0 -0
  64. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/extension-settings.md +0 -0
  65. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/http-proxy.md +0 -0
  66. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/inference-providers.md +0 -0
  67. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/installation.md +0 -0
  68. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/keybindings.md +0 -0
  69. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/messages.md +0 -0
  70. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/project-context.md +0 -0
  71. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/prompts.md +0 -0
  72. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/quickstart.md +0 -0
  73. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/sessions.md +0 -0
  74. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/settings.md +0 -0
  75. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/skills.md +0 -0
  76. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/themes.md +0 -0
  77. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/docs/usage.md +0 -0
  78. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/setup.cfg +0 -0
  79. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/__init__.py +0 -0
  80. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/agent/__init__.py +0 -0
  81. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/agent/prompt/__init__.py +0 -0
  82. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/agent/prompt/builder.py +0 -0
  83. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/agent/prompt/types.py +0 -0
  84. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/auth/manager.py +0 -0
  85. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/auth/storage.py +0 -0
  86. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/auth/types.py +0 -0
  87. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/__init__.py +0 -0
  88. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/commands/__init__.py +0 -0
  89. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/commands/clear.py +0 -0
  90. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/commands/compact.py +0 -0
  91. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/commands/reload.py +0 -0
  92. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/commands/session.py +0 -0
  93. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/extensions/btw/__init__.py +0 -0
  94. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/__init__.py +0 -0
  95. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/git.py +0 -0
  96. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/model.py +0 -0
  97. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/extensions/footer/utils.py +0 -0
  98. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/extensions/header/__init__.py +0 -0
  99. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/extensions/watch/__init__.py +0 -0
  100. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/models/__init__.py +0 -0
  101. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/models/audio.py +0 -0
  102. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/models/image.py +0 -0
  103. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/models/video.py +0 -0
  104. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/prompts/commit.md +0 -0
  105. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/prompts/docs.md +0 -0
  106. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/prompts/explain.md +0 -0
  107. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/prompts/fix.md +0 -0
  108. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/prompts/refactor.md +0 -0
  109. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/prompts/review.md +0 -0
  110. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/prompts/test.md +0 -0
  111. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/providers/__init__.py +0 -0
  112. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/providers/audio.py +0 -0
  113. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/providers/image.py +0 -0
  114. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/providers/text.py +0 -0
  115. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/providers/video.py +0 -0
  116. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/skills/code-review/SKILL.md +0 -0
  117. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/skills/debug/SKILL.md +0 -0
  118. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/skills/git-commit/SKILL.md +0 -0
  119. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/skills/skill-creator/LICENSE.txt +0 -0
  120. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/skills/skill-creator/SKILL.md +0 -0
  121. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/themes/dark.yaml +0 -0
  122. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/themes/light.yaml +0 -0
  123. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/__init__.py +0 -0
  124. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/glob.py +0 -0
  125. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/grep.py +0 -0
  126. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/ls.py +0 -0
  127. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/read.py +0 -0
  128. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/builtins/tools/write.py +0 -0
  129. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/commands/__init__.py +0 -0
  130. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/commands/registry.py +0 -0
  131. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/commands/types.py +0 -0
  132. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/console/__init__.py +0 -0
  133. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/console/cli.py +0 -0
  134. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/console/commands/__init__.py +0 -0
  135. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/console/commands/auth.py +0 -0
  136. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/console/commands/packages.py +0 -0
  137. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/console/commands/update.py +0 -0
  138. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/core/__init__.py +0 -0
  139. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/core/registry.py +0 -0
  140. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/extensions/__init__.py +0 -0
  141. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/extensions/api.py +0 -0
  142. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/extensions/loader.py +0 -0
  143. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/extensions/runtime.py +0 -0
  144. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/extensions/settings.py +0 -0
  145. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/__init__.py +0 -0
  146. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/engine.py +0 -0
  147. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/inference.py +0 -0
  148. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/runtime.py +0 -0
  149. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/service.py +0 -0
  150. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/session.py +0 -0
  151. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/tui.py +0 -0
  152. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/hooks/types.py +0 -0
  153. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/__init__.py +0 -0
  154. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/__init__.py +0 -0
  155. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/__init__.py +0 -0
  156. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/base.py +0 -0
  157. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/builtins.py +0 -0
  158. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/elevenlabs_audio.py +0 -0
  159. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/gemini_audio.py +0 -0
  160. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/openai_audio.py +0 -0
  161. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/registry.py +0 -0
  162. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/sarvam_audio.py +0 -0
  163. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/service.py +0 -0
  164. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/audio/utils.py +0 -0
  165. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/availability.py +0 -0
  166. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/__init__.py +0 -0
  167. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/base.py +0 -0
  168. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/builtins.py +0 -0
  169. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/gemini_image.py +0 -0
  170. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/openai_image.py +0 -0
  171. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/openrouter.py +0 -0
  172. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/registry.py +0 -0
  173. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/image/service.py +0 -0
  174. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/registry.py +0 -0
  175. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/__init__.py +0 -0
  176. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/anthropic_claude_code.py +0 -0
  177. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/anthropic_messages.py +0 -0
  178. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/anthropic_vertex.py +0 -0
  179. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/base.py +0 -0
  180. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/builtins.py +0 -0
  181. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/dialect.py +0 -0
  182. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/gemini_generate.py +0 -0
  183. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/github_copilot_chat.py +0 -0
  184. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/google_antigravity.py +0 -0
  185. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/google_vertex.py +0 -0
  186. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/mistral_chat.py +0 -0
  187. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/ollama_chat.py +0 -0
  188. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_codex_responses.py +0 -0
  189. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_completions.py +0 -0
  190. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_responses.py +0 -0
  191. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/openai_vertex.py +0 -0
  192. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/registry.py +0 -0
  193. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/service.py +0 -0
  194. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/types.py +0 -0
  195. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/text/utils.py +0 -0
  196. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/__init__.py +0 -0
  197. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/base.py +0 -0
  198. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/builtins.py +0 -0
  199. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/fal_video.py +0 -0
  200. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/openrouter_video.py +0 -0
  201. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/registry.py +0 -0
  202. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/service.py +0 -0
  203. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/api/video/zai_video.py +0 -0
  204. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/model/__init__.py +0 -0
  205. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/model/registry.py +0 -0
  206. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/model/types.py +0 -0
  207. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/__init__.py +0 -0
  208. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/__init__.py +0 -0
  209. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/anthropic_claude_code.py +0 -0
  210. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/github_copilot.py +0 -0
  211. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/google_antigravity.py +0 -0
  212. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/openai_codex.py +0 -0
  213. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/pkce.py +0 -0
  214. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/types.py +0 -0
  215. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/oauth/utils.py +0 -0
  216. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/registry.py +0 -0
  217. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/provider/types.py +0 -0
  218. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/types.py +0 -0
  219. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/inference/utils.py +0 -0
  220. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/message/__init__.py +0 -0
  221. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/message/types.py +0 -0
  222. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/message/utils.py +0 -0
  223. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/__init__.py +0 -0
  224. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/__init__.py +0 -0
  225. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/__init__.py +0 -0
  226. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/appearance.py +0 -0
  227. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/auth.py +0 -0
  228. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/context.py +0 -0
  229. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/extensions.py +0 -0
  230. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/misc.py +0 -0
  231. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/model.py +0 -0
  232. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/commands/session.py +0 -0
  233. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/__init__.py +0 -0
  234. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/command_palette.py +0 -0
  235. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/config_selector.py +0 -0
  236. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/extension_selector.py +0 -0
  237. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/file_picker.py +0 -0
  238. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/model_selector.py +0 -0
  239. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/oauth_selector.py +0 -0
  240. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/overlays.py +0 -0
  241. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/selector_controller.py +0 -0
  242. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/session_selector.py +0 -0
  243. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/settings_selector.py +0 -0
  244. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/theme_selector.py +0 -0
  245. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/thinking_selector.py +0 -0
  246. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/tree_selector.py +0 -0
  247. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/trust_screen.py +0 -0
  248. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/components/voice_selector.py +0 -0
  249. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/interactive/input_handler.py +0 -0
  250. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/print/__init__.py +0 -0
  251. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/rpc/__init__.py +0 -0
  252. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/modes/rpc/types.py +0 -0
  253. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/packages/__init__.py +0 -0
  254. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/packages/manager.py +0 -0
  255. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/packages/types.py +0 -0
  256. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/packages/utils.py +0 -0
  257. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/prompts/expand.py +0 -0
  258. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/prompts/loader.py +0 -0
  259. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/prompts/registry.py +0 -0
  260. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/prompts/types.py +0 -0
  261. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/resources/__init__.py +0 -0
  262. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/resources/loader.py +0 -0
  263. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/resources/types.py +0 -0
  264. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/runtime/dependencies.py +0 -0
  265. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/runtime/service.py +0 -0
  266. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/runtime/types.py +0 -0
  267. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/session/branch_summarization.py +0 -0
  268. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/session/compaction.py +0 -0
  269. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/session/manager.py +0 -0
  270. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/session/types.py +0 -0
  271. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/session/utils.py +0 -0
  272. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/settings/manager.py +0 -0
  273. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/settings/paths.py +0 -0
  274. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/settings/storage.py +0 -0
  275. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/settings/types.py +0 -0
  276. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/settings/utils.py +0 -0
  277. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/skills/loader.py +0 -0
  278. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/skills/registry.py +0 -0
  279. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/skills/types.py +0 -0
  280. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/themes/loader.py +0 -0
  281. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/themes/registry.py +0 -0
  282. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/themes/types.py +0 -0
  283. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tool/__init__.py +0 -0
  284. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tool/registry.py +0 -0
  285. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tool/render.py +0 -0
  286. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tool/types.py +0 -0
  287. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/trust/__init__.py +0 -0
  288. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/trust/manager.py +0 -0
  289. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/trust/types.py +0 -0
  290. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/trust/utils.py +0 -0
  291. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/components/__init__.py +0 -0
  292. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/components/box.py +0 -0
  293. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/components/editor.py +0 -0
  294. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/components/select_list.py +0 -0
  295. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/keybinding_hints.py +0 -0
  296. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/tui/utils.py +0 -0
  297. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/utils/__init__.py +0 -0
  298. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/utils/http_proxy.py +0 -0
  299. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/utils/image_processing.py +0 -0
  300. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/utils/secrets.py +0 -0
  301. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/utils/telemetry.py +0 -0
  302. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau/utils/version_check.py +0 -0
  303. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/dependency_links.txt +0 -0
  304. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/entry_points.txt +0 -0
  305. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/requires.txt +0 -0
  306. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tau_coding_agent.egg-info/top_level.txt +0 -0
  307. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_agent_compaction.py +0 -0
  308. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_agent_prompt.py +0 -0
  309. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_agent_types.py +0 -0
  310. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_ansi.py +0 -0
  311. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_auth_command.py +0 -0
  312. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_auth_manager.py +0 -0
  313. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_auth_storage.py +0 -0
  314. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_branch_navigation.py +0 -0
  315. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_branch_summarization.py +0 -0
  316. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_builtin_watch.py +0 -0
  317. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_cli_inputs.py +0 -0
  318. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_command_execution_policy.py +0 -0
  319. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_command_registry.py +0 -0
  320. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_compaction.py +0 -0
  321. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_diff.py +0 -0
  322. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_editor_protocol.py +0 -0
  323. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_engine_types.py +0 -0
  324. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_escape_behavior.py +0 -0
  325. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_extension_api.py +0 -0
  326. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_extension_lifecycle.py +0 -0
  327. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_footer_model.py +0 -0
  328. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_footer_utils.py +0 -0
  329. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_fuzzy.py +0 -0
  330. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_http_proxy.py +0 -0
  331. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_image_processing.py +0 -0
  332. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_inference_api_text_utils.py +0 -0
  333. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_inference_error_utils.py +0 -0
  334. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_inference_types.py +0 -0
  335. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_inference_utils.py +0 -0
  336. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_keybindings.py +0 -0
  337. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_markdown.py +0 -0
  338. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_message_types.py +0 -0
  339. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_message_utils.py +0 -0
  340. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_model_availability.py +0 -0
  341. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_model_command.py +0 -0
  342. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_model_registry.py +0 -0
  343. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_model_selector_modal.py +0 -0
  344. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_model_types.py +0 -0
  345. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_oauth_utils.py +0 -0
  346. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_package_resources.py +0 -0
  347. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_packages_utils.py +0 -0
  348. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_peer_extension.py +0 -0
  349. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_pkce.py +0 -0
  350. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_prompts_expand.py +0 -0
  351. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_prompts_loader.py +0 -0
  352. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_prompts_registry.py +0 -0
  353. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_provider_registry.py +0 -0
  354. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_resource_loader.py +0 -0
  355. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_rpc_mode.py +0 -0
  356. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_runtime_sdk.py +0 -0
  357. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_secrets.py +0 -0
  358. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_selector_controller.py +0 -0
  359. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_session_manager.py +0 -0
  360. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_session_trust_persist.py +0 -0
  361. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_session_types.py +0 -0
  362. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_session_utils.py +0 -0
  363. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_settings_manager.py +0 -0
  364. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_settings_paths.py +0 -0
  365. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_settings_storage.py +0 -0
  366. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_settings_utils.py +0 -0
  367. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_skills_loader.py +0 -0
  368. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_skills_registry.py +0 -0
  369. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_subagents_extension.py +0 -0
  370. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_telemetry.py +0 -0
  371. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_text_llm_invoke.py +0 -0
  372. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_theme_loader.py +0 -0
  373. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_themes_registry.py +0 -0
  374. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tool_registry.py +0 -0
  375. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tool_render.py +0 -0
  376. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_trust_manager.py +0 -0
  377. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_trust_utils.py +0 -0
  378. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tui_capabilities.py +0 -0
  379. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tui_layout_sizing.py +0 -0
  380. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tui_select_list.py +0 -0
  381. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_tui_utils.py +0 -0
  382. {tau_coding_agent-0.5.0 → tau_coding_agent-0.5.2}/tests/test_version_check.py +0 -0
  383. {tau_coding_agent-0.5.0 → 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.0
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
@@ -61,7 +61,7 @@ User input flows through these stages:
61
61
  | `console/` | CLI entry point, argument parsing |
62
62
  | `runtime/` | Orchestrates agent, session, engine, extensions |
63
63
  | `agent/` | Processes message turns, calls inference |
64
- | `engine/` | Executes tool calls and collects results |
64
+ | `engine/` | Standalone inference and tool-execution loop |
65
65
  | `inference/` | Unified interface to LLM providers |
66
66
 
67
67
  ### Data & State
@@ -79,7 +79,7 @@ User input flows through these stages:
79
79
 
80
80
  | Module | Purpose |
81
81
  |--------|---------|
82
- | `tui/` | Terminal UI (22 modules) |
82
+ | `tui/` | Standalone terminal rendering and component framework |
83
83
  | `extensions/` | Plugin system API |
84
84
  | `hooks/` | Event system for extensions |
85
85
  | `commands/` | Slash command registry |
@@ -141,6 +141,9 @@ Each agent turn follows this sequence:
141
141
  TUI overlays participate in focus lifecycle. Hiding or closing a capturing
142
142
  overlay restores the next visible overlay or its previous focus target.
143
143
  Components exposing `dispose()` are disposed when their overlay closes.
144
+ The reusable renderer, terminal, input, and component APIs are documented in
145
+ [Terminal UI](tui.md); runtime-aware composition lives in
146
+ `modes/interactive/`.
144
147
 
145
148
  Slash commands declare whether they require an idle agent. Idle-only commands
146
149
  are deferred until the current turn settles; UI-only and read-only commands may
@@ -204,7 +207,9 @@ class BaseAPI:
204
207
  ...
205
208
  ```
206
209
 
207
- The inference module handles provider-specific details (API keys, endpoints, format conversions).
210
+ The inference module handles provider-specific details (API keys, endpoints,
211
+ format conversions) and can also be used independently of the agent runtime.
212
+ See [Inference](inference.md) for its package boundaries and public clients.
208
213
 
209
214
  ## Tool Execution Model
210
215
 
@@ -223,6 +228,9 @@ Built-in tools (terminal, read, write, edit, glob, grep, ls) are enabled by defa
223
228
  `RuntimeConfig` can allow or exclude tools by name. Custom tools are registered
224
229
  via extensions or passed directly to the runtime.
225
230
 
231
+ The engine can also be embedded without the session-aware agent or runtime.
232
+ See [Engine](engine.md) for its public API and dependency boundary.
233
+
226
234
  Programmatic runtimes can replace constructed services through
227
235
  `RuntimeDependencies`. Typed factories cover settings, LLM/model/auth wiring,
228
236
  session storage, hooks, and the tool registry. Session-bound factories run
@@ -0,0 +1,242 @@
1
+ # Creating Tools
2
+
3
+ Tools are typed asynchronous operations that a model can request. A tool
4
+ defines its name, description, Pydantic input schema, execution policy, and
5
+ result handling.
6
+
7
+ Use this guide to implement and test a tool. See [Tools](tools.md) for the
8
+ built-in tool reference and execution model.
9
+
10
+ ## Implement a Tool
11
+
12
+ This example creates a read-only word-count tool:
13
+
14
+ ```python
15
+ from __future__ import annotations
16
+
17
+ from pathlib import Path
18
+
19
+ from pydantic import BaseModel, Field
20
+
21
+ from tau.tool.types import (
22
+ AbortSignal,
23
+ Tool,
24
+ ToolContext,
25
+ ToolExecutionMode,
26
+ ToolExecutionUpdateCallback,
27
+ ToolInvocation,
28
+ ToolKind,
29
+ ToolResult,
30
+ )
31
+
32
+
33
+ class WordCountParams(BaseModel):
34
+ """Validated parameters for the word-count tool."""
35
+
36
+ path: str = Field(description="Text file path, relative to the working directory.")
37
+
38
+
39
+ class WordCountTool(Tool):
40
+ """Count words in a UTF-8 text file."""
41
+
42
+ def __init__(self) -> None:
43
+ super().__init__(
44
+ name="word_count",
45
+ description="Count the words in a UTF-8 text file.",
46
+ schema=WordCountParams,
47
+ kind=ToolKind.Read,
48
+ execution_mode=ToolExecutionMode.Parallel,
49
+ )
50
+
51
+ async def execute(
52
+ self,
53
+ invocation: ToolInvocation,
54
+ tool_execution_update_callback: ToolExecutionUpdateCallback | None = None,
55
+ signal: AbortSignal | None = None,
56
+ context: ToolContext | None = None,
57
+ ) -> ToolResult:
58
+ params = WordCountParams.model_validate(invocation.params)
59
+
60
+ if signal is not None and signal.is_set():
61
+ return ToolResult.error(invocation.id, "Word count cancelled.")
62
+
63
+ base = context.cwd if context is not None and context.cwd is not None else Path.cwd()
64
+ path = Path(params.path)
65
+ if not path.is_absolute():
66
+ path = base / path
67
+
68
+ try:
69
+ content = path.read_text(encoding="utf-8")
70
+ except OSError as error:
71
+ return ToolResult.error(invocation.id, f"Cannot read {path}: {error}")
72
+
73
+ count = len(content.split())
74
+ return ToolResult.ok(
75
+ invocation.id,
76
+ f"{path}: {count} words",
77
+ metadata={"path": str(path), "word_count": count},
78
+ )
79
+ ```
80
+
81
+ The engine validates `invocation.params` against `schema` before execution.
82
+ Validating again inside `execute()` produces a typed parameter object and keeps
83
+ the tool safe when called directly in tests.
84
+
85
+ ## Define Clear Metadata
86
+
87
+ Constructor fields affect both model behavior and execution:
88
+
89
+ | Field | Guidance |
90
+ |-------|----------|
91
+ | `name` | Use a stable lowercase identifier with underscores |
92
+ | `description` | State what the tool does and when it should be used |
93
+ | `schema` | Use Pydantic fields with precise descriptions and constraints |
94
+ | `kind` | Classify the side effect as read, edit, write, execute, or web |
95
+ | `execution_mode` | Use parallel only when concurrent calls are safe |
96
+
97
+ Tools that mutate files, launch processes, or modify external state should
98
+ normally use `ToolExecutionMode.Sequential`. Read-only operations may use
99
+ `Parallel` when they do not share mutable state.
100
+
101
+ ## Return Results
102
+
103
+ Return model-facing text with one of the result constructors:
104
+
105
+ ```python
106
+ return ToolResult.ok(invocation.id, "Completed", metadata={"items": 3})
107
+ return ToolResult.error(invocation.id, "The requested file does not exist")
108
+ ```
109
+
110
+ Keep `content` concise and actionable. Use `metadata` for structured facts
111
+ needed by hooks or renderers, not for duplicating the complete text result.
112
+
113
+ For Markdown rendering of a successful result:
114
+
115
+ ```python
116
+ return ToolResult.ok(
117
+ invocation.id,
118
+ "## Results\n\n- First\n- Second",
119
+ metadata={"_render_format": "markdown"},
120
+ )
121
+ ```
122
+
123
+ ## Use Runtime Context
124
+
125
+ `ToolContext` provides optional runtime services:
126
+
127
+ | Attribute | Value |
128
+ |-----------|-------|
129
+ | `cwd` | Current engine working directory |
130
+ | `llm` | Active text inference client |
131
+ | `settings` | Active settings manager, when available |
132
+
133
+ Treat every attribute as optional because tools can be unit-tested or called
134
+ outside the complete runtime.
135
+
136
+ Long-running tools should check `signal.is_set()` at safe cancellation points.
137
+ Tools that produce incremental output can call
138
+ `tool_execution_update_callback` with partial `ToolResult` values.
139
+ High-frequency producers should throttle updates so they do not flood engine
140
+ events or terminal renders. Emit an initial update when work begins and a final
141
+ update matching the returned result.
142
+
143
+ ## Register the Tool
144
+
145
+ ### Project or Global Extension
146
+
147
+ Create `.tau/extensions/word_count.py` for one project, or
148
+ `~/.tau/extensions/word_count.py` for all projects:
149
+
150
+ ```python
151
+ from tau.extensions import ExtensionAPI
152
+
153
+
154
+ def register(tau: ExtensionAPI) -> None:
155
+ tau.register_tool(WordCountTool())
156
+ ```
157
+
158
+ Run `/reload` after changing an extension.
159
+
160
+ ### Python Runtime
161
+
162
+ Pass tool instances through `RuntimeConfig`:
163
+
164
+ ```python
165
+ from pathlib import Path
166
+
167
+ from tau.runtime.types import RuntimeConfig
168
+
169
+ config = RuntimeConfig(
170
+ cwd=Path.cwd(),
171
+ tools=[WordCountTool()],
172
+ )
173
+ ```
174
+
175
+ ### Standalone Engine
176
+
177
+ Supply tools to both `Engine` and `EngineContext`:
178
+
179
+ ```python
180
+ from pathlib import Path
181
+
182
+ from tau.engine import Engine, EngineContext
183
+ from tau.message.types import UserMessage
184
+
185
+ tools = [WordCountTool()]
186
+ engine = Engine(cwd=Path.cwd(), llm=llm, tools=tools)
187
+
188
+ await engine.run(
189
+ EngineContext(
190
+ system_prompt="Use tools when they answer the request.",
191
+ messages=[UserMessage.from_text("Count the words in README.md")],
192
+ tools=tools,
193
+ )
194
+ )
195
+ ```
196
+
197
+ See [Engine](engine.md) for standalone lifecycle and event handling.
198
+
199
+ ## Test the Tool
200
+
201
+ Test execution without making an inference request:
202
+
203
+ ```python
204
+ from pathlib import Path
205
+
206
+ import pytest
207
+
208
+ from tau.tool.types import ToolContext, ToolInvocation
209
+
210
+
211
+ @pytest.mark.asyncio
212
+ async def test_word_count(tmp_path: Path) -> None:
213
+ source = tmp_path / "sample.txt"
214
+ source.write_text("one two three", encoding="utf-8")
215
+ tool = WordCountTool()
216
+
217
+ result = await tool.execute(
218
+ ToolInvocation(
219
+ id="call-1",
220
+ name=tool.name,
221
+ cwd=tmp_path,
222
+ params={"path": "sample.txt"},
223
+ ),
224
+ context=ToolContext(cwd=tmp_path),
225
+ )
226
+
227
+ assert not result.is_error
228
+ assert result.metadata["word_count"] == 3
229
+ ```
230
+
231
+ Also test invalid parameters, missing resources, cancellation, and concurrent
232
+ execution when the tool declares parallel safety.
233
+
234
+ ## Checklist
235
+
236
+ - Parameter types and constraints are expressed in the Pydantic schema.
237
+ - The description explains when the model should call the tool.
238
+ - Side effects match `ToolKind` and `ToolExecutionMode`.
239
+ - Errors are returned as `ToolResult.error`, not leaked as raw tracebacks.
240
+ - Paths are resolved against `ToolContext.cwd`.
241
+ - Cancellation is checked during long operations.
242
+ - Unit tests cover success and failure paths.
@@ -28,6 +28,18 @@
28
28
  {
29
29
  "title": "Core Concepts",
30
30
  "items": [
31
+ {
32
+ "title": "Inference",
33
+ "path": "inference.md"
34
+ },
35
+ {
36
+ "title": "Engine",
37
+ "path": "engine.md"
38
+ },
39
+ {
40
+ "title": "Terminal UI",
41
+ "path": "tui.md"
42
+ },
31
43
  {
32
44
  "title": "Inference Providers",
33
45
  "path": "inference-providers.md"
@@ -44,6 +56,10 @@
44
56
  "title": "Tools",
45
57
  "path": "tools.md"
46
58
  },
59
+ {
60
+ "title": "Creating Tools",
61
+ "path": "creating-tools.md"
62
+ },
47
63
  {
48
64
  "title": "Project Context",
49
65
  "path": "project-context.md"
@@ -0,0 +1,114 @@
1
+ # Engine
2
+
3
+ `tau.engine` is Tau's standalone text-inference and tool-execution loop. It can
4
+ be embedded directly when an application needs agentic model/tool iteration
5
+ without Tau's sessions, compaction, extensions, runtime lifecycle, or terminal
6
+ UI.
7
+
8
+ Use [Inference](inference.md) instead when the application only needs a single
9
+ model request and will manage tool calls itself. Use the
10
+ [Python API](python-api.md) when the application needs the complete Tau runtime.
11
+
12
+ ## Responsibilities
13
+
14
+ The engine:
15
+
16
+ - streams normalized text inference events
17
+ - accumulates assistant messages
18
+ - validates and executes requested tools
19
+ - runs safe tool batches sequentially or concurrently
20
+ - emits message, turn, tool, and engine lifecycle events
21
+ - supports steering, follow-up messages, continuation, and cancellation
22
+
23
+ The engine does not persist messages, compact context, discover extensions,
24
+ construct the application system prompt, or manage the user interface.
25
+ `tau.agent` owns session-aware orchestration around the engine, while
26
+ `tau.runtime` constructs and connects the full application.
27
+
28
+ ## Public API
29
+
30
+ | Type | Purpose |
31
+ |------|---------|
32
+ | `Engine` | Streaming inference and tool-execution service |
33
+ | `EngineContext` | System prompt, message history, and tools for one run |
34
+ | `EngineOptions` | Execution strategy and lifecycle callbacks |
35
+ | `EngineState` | Observable mutable execution state |
36
+
37
+ The former `Agent` and `AgentState` names remain compatibility aliases, and
38
+ `AgentOptions` is the descriptive compatibility name for `EngineOptions`.
39
+ New code should use the explicit `Engine` names.
40
+
41
+ ## Basic Example
42
+
43
+ ```python
44
+ import asyncio
45
+ from pathlib import Path
46
+
47
+ from tau.engine import Engine, EngineContext, MessageEndEvent
48
+ from tau.inference.api.text.service import TextLLM
49
+ from tau.message.types import UserMessage
50
+
51
+
52
+ async def main() -> None:
53
+ llm = TextLLM("gpt-4o")
54
+ engine = Engine(cwd=Path.cwd(), llm=llm, tools=[])
55
+
56
+ def print_completed_message(event: object) -> None:
57
+ if isinstance(event, MessageEndEvent):
58
+ print(event.message)
59
+
60
+ await engine.subscribe(print_completed_message)
61
+ await engine.run(
62
+ EngineContext(
63
+ system_prompt="Answer concisely.",
64
+ messages=[UserMessage.from_text("What does an execution engine do?")],
65
+ )
66
+ )
67
+
68
+
69
+ asyncio.run(main())
70
+ ```
71
+
72
+ Configure the model provider before running the example. See
73
+ [Inference Providers](inference-providers.md).
74
+
75
+ ## Supplying Tools
76
+
77
+ Pass the same tool objects to both the engine and the run context:
78
+
79
+ ```python
80
+ tools = [read_tool, terminal_tool]
81
+ engine = Engine(cwd=Path.cwd(), llm=llm, tools=tools)
82
+
83
+ await engine.run(
84
+ EngineContext(
85
+ system_prompt="Use tools when needed.",
86
+ messages=[UserMessage.from_text("Inspect this project.")],
87
+ tools=tools,
88
+ )
89
+ )
90
+ ```
91
+
92
+ Tools declare their own execution safety. A batch runs concurrently only when
93
+ every tool in that batch permits parallel execution; otherwise source order is
94
+ preserved.
95
+
96
+ ## Lifecycle Control
97
+
98
+ - `subscribe(handler)` observes engine events and returns an unsubscribe
99
+ callback.
100
+ - `steer(message)` injects guidance during an active tool loop.
101
+ - `follow_up(message)` queues another user message after a natural stop.
102
+ - `abort()` cancels the active stream at the next safe boundary.
103
+ - `run_continue()` resumes from the engine's current in-memory history.
104
+ - `wait_for_idle()` waits until the active loop exits.
105
+
106
+ Engine history is in memory only. Applications using the engine directly are
107
+ responsible for durable storage and for constructing the next
108
+ `EngineContext`.
109
+
110
+ ## Dependency Boundary
111
+
112
+ `tau.engine` depends on inference, messages, tools, hooks, and optional
113
+ settings. It must not import session, extension, TUI, runtime, or agent
114
+ services. This keeps the engine independently testable and embeddable.
@@ -130,6 +130,8 @@ async def register(tau):
130
130
  ## Tools
131
131
 
132
132
  Import from `tau.tool.types`. Use a Pydantic `BaseModel` for the parameter schema.
133
+ For a focused walkthrough covering implementation, registration, and testing,
134
+ see [Creating Tools](creating-tools.md).
133
135
 
134
136
  ```python
135
137
  from pydantic import BaseModel, Field
@@ -1188,7 +1190,7 @@ def my_footer(tui, theme):
1188
1190
  return StaticComponent([f" {theme.primary}Custom footer{RESET} "])
1189
1191
 
1190
1192
  # With TUI + theme + live data (recommended)
1191
- from tau.tui.ui_context import FooterData
1193
+ from tau.modes.interactive.ui_context import FooterData
1192
1194
 
1193
1195
  def my_footer(tui, theme, data: FooterData):
1194
1196
  branch = data.git_branch or "detached"
@@ -23,10 +23,14 @@ Tau allows you to:
23
23
 
24
24
  ## Core Concepts
25
25
 
26
+ - [Inference](inference.md) - Standalone inference clients, types, and architecture
27
+ - [Engine](engine.md) - Standalone inference and tool-execution loop
28
+ - [Terminal UI](tui.md) - Standalone terminal rendering and component framework
26
29
  - [Messages & Context](messages.md) - How messages flow and context is managed
27
30
  - [Sessions](sessions.md) - Session persistence, branching, compaction, JSONL format
28
31
  - [Inference Providers](inference-providers.md) - Supported LLMs and provider setup
29
32
  - [Tools](tools.md) - Tool registry, built-in tools, execution model
33
+ - [Creating Tools](creating-tools.md) - Implement, register, and test custom tools
30
34
  - [Project Context Files](project-context.md) - Repository-specific agent instructions
31
35
  - [CLI Reference](cli-reference.md) - All command-line options and run modes
32
36