hud-python 0.4.25__tar.gz → 0.4.27__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.

Potentially problematic release.


This version of hud-python might be problematic. Click here for more details.

Files changed (202) hide show
  1. {hud_python-0.4.25 → hud_python-0.4.27}/PKG-INFO +2 -2
  2. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/base.py +42 -18
  3. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/misc/response_agent.py +2 -1
  4. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/tests/test_version.py +1 -1
  5. {hud_python-0.4.25 → hud_python-0.4.27}/hud/version.py +1 -1
  6. {hud_python-0.4.25 → hud_python-0.4.27}/pyproject.toml +2 -2
  7. {hud_python-0.4.25 → hud_python-0.4.27}/.gitignore +0 -0
  8. {hud_python-0.4.25 → hud_python-0.4.27}/LICENSE +0 -0
  9. {hud_python-0.4.25 → hud_python-0.4.27}/README.md +0 -0
  10. {hud_python-0.4.25 → hud_python-0.4.27}/environments/README.md +0 -0
  11. {hud_python-0.4.25 → hud_python-0.4.27}/environments/browser/README.md +0 -0
  12. {hud_python-0.4.25 → hud_python-0.4.27}/environments/browser/apps/2048/README.md +0 -0
  13. {hud_python-0.4.25 → hud_python-0.4.27}/environments/browser/apps/2048/backend/pyproject.toml +0 -0
  14. {hud_python-0.4.25 → hud_python-0.4.27}/environments/browser/apps/README.md +0 -0
  15. {hud_python-0.4.25 → hud_python-0.4.27}/environments/browser/apps/todo/README.md +0 -0
  16. {hud_python-0.4.25 → hud_python-0.4.27}/environments/browser/apps/todo/backend/pyproject.toml +0 -0
  17. {hud_python-0.4.25 → hud_python-0.4.27}/environments/browser/pyproject.toml +0 -0
  18. {hud_python-0.4.25 → hud_python-0.4.27}/environments/remote_browser/README.md +0 -0
  19. {hud_python-0.4.25 → hud_python-0.4.27}/environments/remote_browser/pyproject.toml +0 -0
  20. {hud_python-0.4.25 → hud_python-0.4.27}/environments/remote_browser/src/hud_controller/providers/README.md +0 -0
  21. {hud_python-0.4.25 → hud_python-0.4.27}/environments/text_2048/README.md +0 -0
  22. {hud_python-0.4.25 → hud_python-0.4.27}/environments/text_2048/pyproject.toml +0 -0
  23. {hud_python-0.4.25 → hud_python-0.4.27}/examples/README.md +0 -0
  24. {hud_python-0.4.25 → hud_python-0.4.27}/hud/__init__.py +0 -0
  25. {hud_python-0.4.25 → hud_python-0.4.27}/hud/__main__.py +0 -0
  26. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/__init__.py +0 -0
  27. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/claude.py +0 -0
  28. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/grounded_openai.py +0 -0
  29. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/langchain.py +0 -0
  30. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/misc/__init__.py +0 -0
  31. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/openai.py +0 -0
  32. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/openai_chat_generic.py +0 -0
  33. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/tests/__init__.py +0 -0
  34. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/tests/test_base.py +0 -0
  35. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/tests/test_claude.py +0 -0
  36. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/tests/test_client.py +0 -0
  37. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/tests/test_grounded_openai_agent.py +0 -0
  38. {hud_python-0.4.25 → hud_python-0.4.27}/hud/agents/tests/test_openai.py +0 -0
  39. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/__init__.py +0 -0
  40. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/__main__.py +0 -0
  41. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/analyze.py +0 -0
  42. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/build.py +0 -0
  43. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/clone.py +0 -0
  44. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/debug.py +0 -0
  45. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/dev.py +0 -0
  46. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/eval.py +0 -0
  47. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/hf.py +0 -0
  48. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/init.py +0 -0
  49. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/list_func.py +0 -0
  50. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/pull.py +0 -0
  51. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/push.py +0 -0
  52. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/remove.py +0 -0
  53. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/rl/README.md +0 -0
  54. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/rl/__init__.py +0 -0
  55. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/rl/init.py +0 -0
  56. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/rl/pod.py +0 -0
  57. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/rl/ssh.py +0 -0
  58. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/rl/train.py +0 -0
  59. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/rl/utils.py +0 -0
  60. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/__init__.py +0 -0
  61. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_analyze.py +0 -0
  62. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_analyze_metadata.py +0 -0
  63. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_build.py +0 -0
  64. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_cli_init.py +0 -0
  65. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_cli_main.py +0 -0
  66. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_clone.py +0 -0
  67. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_cursor.py +0 -0
  68. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_debug.py +0 -0
  69. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_list_func.py +0 -0
  70. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_main_module.py +0 -0
  71. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_mcp_server.py +0 -0
  72. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_pull.py +0 -0
  73. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_push.py +0 -0
  74. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_registry.py +0 -0
  75. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/tests/test_utils.py +0 -0
  76. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/__init__.py +0 -0
  77. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/cursor.py +0 -0
  78. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/docker.py +0 -0
  79. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/environment.py +0 -0
  80. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/interactive.py +0 -0
  81. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/logging.py +0 -0
  82. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/metadata.py +0 -0
  83. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/registry.py +0 -0
  84. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/remote_runner.py +0 -0
  85. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/runner.py +0 -0
  86. {hud_python-0.4.25 → hud_python-0.4.27}/hud/cli/utils/server.py +0 -0
  87. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/README.md +0 -0
  88. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/__init__.py +0 -0
  89. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/base.py +0 -0
  90. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/fastmcp.py +0 -0
  91. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/mcp_use.py +0 -0
  92. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/tests/__init__.py +0 -0
  93. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/tests/test_client_integration.py +0 -0
  94. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/tests/test_fastmcp.py +0 -0
  95. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/tests/test_mcp_use_retry.py +0 -0
  96. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/tests/test_protocol.py +0 -0
  97. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/utils/__init__.py +0 -0
  98. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/utils/mcp_use_retry.py +0 -0
  99. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/utils/retry.py +0 -0
  100. {hud_python-0.4.25 → hud_python-0.4.27}/hud/clients/utils/retry_transport.py +0 -0
  101. {hud_python-0.4.25 → hud_python-0.4.27}/hud/datasets/__init__.py +0 -0
  102. {hud_python-0.4.25 → hud_python-0.4.27}/hud/datasets/execution/__init__.py +0 -0
  103. {hud_python-0.4.25 → hud_python-0.4.27}/hud/datasets/execution/parallel.py +0 -0
  104. {hud_python-0.4.25 → hud_python-0.4.27}/hud/datasets/execution/runner.py +0 -0
  105. {hud_python-0.4.25 → hud_python-0.4.27}/hud/datasets/task.py +0 -0
  106. {hud_python-0.4.25 → hud_python-0.4.27}/hud/datasets/utils.py +0 -0
  107. {hud_python-0.4.25 → hud_python-0.4.27}/hud/misc/__init__.py +0 -0
  108. {hud_python-0.4.25 → hud_python-0.4.27}/hud/misc/claude_plays_pokemon.py +0 -0
  109. {hud_python-0.4.25 → hud_python-0.4.27}/hud/native/__init__.py +0 -0
  110. {hud_python-0.4.25 → hud_python-0.4.27}/hud/native/comparator.py +0 -0
  111. {hud_python-0.4.25 → hud_python-0.4.27}/hud/native/tests/__init__.py +0 -0
  112. {hud_python-0.4.25 → hud_python-0.4.27}/hud/native/tests/test_comparator.py +0 -0
  113. {hud_python-0.4.25 → hud_python-0.4.27}/hud/native/tests/test_native_init.py +0 -0
  114. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/__init__.py +0 -0
  115. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/collector.py +0 -0
  116. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/config.py +0 -0
  117. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/context.py +0 -0
  118. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/exporters.py +0 -0
  119. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/instrumentation.py +0 -0
  120. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/processors.py +0 -0
  121. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/tests/__init__.py +0 -0
  122. {hud_python-0.4.25 → hud_python-0.4.27}/hud/otel/tests/test_processors.py +0 -0
  123. {hud_python-0.4.25 → hud_python-0.4.27}/hud/py.typed +0 -0
  124. {hud_python-0.4.25 → hud_python-0.4.27}/hud/server/__init__.py +0 -0
  125. {hud_python-0.4.25 → hud_python-0.4.27}/hud/server/context.py +0 -0
  126. {hud_python-0.4.25 → hud_python-0.4.27}/hud/server/helper/__init__.py +0 -0
  127. {hud_python-0.4.25 → hud_python-0.4.27}/hud/server/low_level.py +0 -0
  128. {hud_python-0.4.25 → hud_python-0.4.27}/hud/server/server.py +0 -0
  129. {hud_python-0.4.25 → hud_python-0.4.27}/hud/server/tests/__init__.py +0 -0
  130. {hud_python-0.4.25 → hud_python-0.4.27}/hud/settings.py +0 -0
  131. {hud_python-0.4.25 → hud_python-0.4.27}/hud/shared/__init__.py +0 -0
  132. {hud_python-0.4.25 → hud_python-0.4.27}/hud/shared/exceptions.py +0 -0
  133. {hud_python-0.4.25 → hud_python-0.4.27}/hud/shared/hints.py +0 -0
  134. {hud_python-0.4.25 → hud_python-0.4.27}/hud/shared/requests.py +0 -0
  135. {hud_python-0.4.25 → hud_python-0.4.27}/hud/shared/tests/__init__.py +0 -0
  136. {hud_python-0.4.25 → hud_python-0.4.27}/hud/shared/tests/test_exceptions.py +0 -0
  137. {hud_python-0.4.25 → hud_python-0.4.27}/hud/shared/tests/test_requests.py +0 -0
  138. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/__init__.py +0 -0
  139. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/instrument.py +0 -0
  140. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/job.py +0 -0
  141. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/replay.py +0 -0
  142. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/tests/__init__.py +0 -0
  143. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/tests/test_replay.py +0 -0
  144. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/tests/test_trace.py +0 -0
  145. {hud_python-0.4.25 → hud_python-0.4.27}/hud/telemetry/trace.py +0 -0
  146. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/__init__.py +0 -0
  147. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/base.py +0 -0
  148. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/bash.py +0 -0
  149. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/computer/__init__.py +0 -0
  150. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/computer/anthropic.py +0 -0
  151. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/computer/hud.py +0 -0
  152. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/computer/openai.py +0 -0
  153. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/computer/settings.py +0 -0
  154. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/edit.py +0 -0
  155. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/executors/__init__.py +0 -0
  156. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/executors/base.py +0 -0
  157. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/executors/pyautogui.py +0 -0
  158. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/executors/tests/__init__.py +0 -0
  159. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/executors/tests/test_base_executor.py +0 -0
  160. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/executors/tests/test_pyautogui_executor.py +0 -0
  161. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/executors/xdo.py +0 -0
  162. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/grounding/__init__.py +0 -0
  163. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/grounding/config.py +0 -0
  164. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/grounding/grounded_tool.py +0 -0
  165. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/grounding/grounder.py +0 -0
  166. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/grounding/tests/__init__.py +0 -0
  167. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/grounding/tests/test_grounded_tool.py +0 -0
  168. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/playwright.py +0 -0
  169. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/response.py +0 -0
  170. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/submit.py +0 -0
  171. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/__init__.py +0 -0
  172. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_base.py +0 -0
  173. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_bash.py +0 -0
  174. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_bash_extended.py +0 -0
  175. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_computer.py +0 -0
  176. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_computer_actions.py +0 -0
  177. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_edit.py +0 -0
  178. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_init.py +0 -0
  179. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_playwright_tool.py +0 -0
  180. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_response.py +0 -0
  181. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_tools.py +0 -0
  182. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_tools_init.py +0 -0
  183. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/tests/test_utils.py +0 -0
  184. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/types.py +0 -0
  185. {hud_python-0.4.25 → hud_python-0.4.27}/hud/tools/utils.py +0 -0
  186. {hud_python-0.4.25 → hud_python-0.4.27}/hud/types.py +0 -0
  187. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/__init__.py +0 -0
  188. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/agent_factories.py +0 -0
  189. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/async_utils.py +0 -0
  190. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/hud_console.py +0 -0
  191. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/mcp.py +0 -0
  192. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/pretty_errors.py +0 -0
  193. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/progress.py +0 -0
  194. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/telemetry.py +0 -0
  195. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/tests/__init__.py +0 -0
  196. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/tests/test_async_utils.py +0 -0
  197. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/tests/test_init.py +0 -0
  198. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/tests/test_mcp.py +0 -0
  199. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/tests/test_progress.py +0 -0
  200. {hud_python-0.4.25 → hud_python-0.4.27}/hud/utils/tests/test_telemetry.py +0 -0
  201. {hud_python-0.4.25 → hud_python-0.4.27}/rl/README.md +0 -0
  202. {hud_python-0.4.25 → hud_python-0.4.27}/rl/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.25
3
+ Version: 0.4.27
4
4
  Summary: SDK for the HUD platform.
5
5
  Project-URL: Homepage, https://github.com/hud-evals/hud-python
6
6
  Project-URL: Bug Tracker, https://github.com/hud-evals/hud-python/issues
@@ -41,7 +41,7 @@ Requires-Dist: hud-mcp-python-sdk>=3.13.2
41
41
  Requires-Dist: hud-mcp-use-python-sdk>=2.3.16
42
42
  Requires-Dist: opentelemetry-api>=1.34.1
43
43
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.34.1
44
- Requires-Dist: opentelemetry-instrumentation-mcp>=0.44.1
44
+ Requires-Dist: opentelemetry-instrumentation-mcp==0.47.0
45
45
  Requires-Dist: opentelemetry-sdk>=1.34.1
46
46
  Requires-Dist: pathspec>=0.12.1
47
47
  Requires-Dist: prompt-toolkit==3.0.51
@@ -556,26 +556,10 @@ class MCPAgent(ABC):
556
556
 
557
557
  all_tools = await self.mcp_client.list_tools()
558
558
 
559
- # Filter tools
560
- self._available_tools = []
561
- self._tool_map = {}
562
-
563
- # Track response tools by server
564
559
  response_tools_by_server: dict[str, str] = {} # server_name -> tool_name
565
-
566
560
  for tool in all_tools:
567
- # Check if tool should be included
568
- if self.allowed_tools and tool.name not in self.allowed_tools:
569
- continue
570
- if tool.name in self.disallowed_tools:
571
- continue
572
-
573
- self._available_tools.append(tool)
574
- # Simplified mapping - just tool name to tool
575
- self._tool_map[tool.name] = tool
576
-
577
- # Track response tools
578
561
  if "response" in tool.name or tool.name == "response":
562
+ self.console.debug(f"Found response tool: '{tool.name}'")
579
563
  # Extract server name from tool name (e.g., "grader_response" -> "grader")
580
564
  if "_" in tool.name:
581
565
  server_name = tool.name.split("_", 1)[0]
@@ -583,27 +567,67 @@ class MCPAgent(ABC):
583
567
  else:
584
568
  response_tools_by_server["_default"] = tool.name
585
569
 
586
- # Find the response tool to use (prioritize last server in config)
570
+ # Add response tool to lifecycle tools BEFORE filtering
587
571
  if response_tools_by_server and hasattr(self.mcp_client, "mcp_config"):
588
572
  # Get server names in order from mcp_config
589
573
  server_names = list(self.mcp_client.mcp_config.keys())
574
+ self.console.debug(f"Server names: {server_names}")
590
575
 
591
576
  # Try to find response tool from last server first
592
577
  response_tool_name = None
593
578
  for server_name in reversed(server_names):
594
579
  if server_name in response_tools_by_server:
595
580
  response_tool_name = response_tools_by_server[server_name]
581
+ self.console.debug(
582
+ f"Found response tool '{response_tool_name}' from server '{server_name}'"
583
+ )
596
584
  break
597
585
 
598
586
  # Fallback to any response tool
599
587
  if not response_tool_name and response_tools_by_server:
600
588
  response_tool_name = next(iter(response_tools_by_server.values()))
589
+ self.console.debug(f"Using fallback response tool '{response_tool_name}'")
601
590
 
602
591
  # Add to lifecycle tools if found
603
592
  if response_tool_name and response_tool_name not in self.lifecycle_tools:
604
593
  self.console.debug(f"Auto-detected '{response_tool_name}' tool as a lifecycle tool")
605
594
  self.response_tool_name = response_tool_name
606
595
  self.lifecycle_tools.append(response_tool_name)
596
+ elif response_tool_name:
597
+ self.console.debug(
598
+ f"Response tool '{response_tool_name}' already in lifecycle_tools"
599
+ )
600
+ self.response_tool_name = response_tool_name
601
+ else:
602
+ self.console.debug("No response tools found or no mcp_config")
603
+
604
+ # Filter tools
605
+ self._available_tools = []
606
+ self._tool_map = {}
607
+
608
+ self.console.debug(f"All tools: {[t.name for t in all_tools]}")
609
+ self.console.debug(f"Allowed tools: {self.allowed_tools}")
610
+ self.console.debug(f"Disallowed tools: {self.disallowed_tools}")
611
+ self.console.debug(f"Lifecycle tools: {self.lifecycle_tools}")
612
+
613
+ for tool in all_tools:
614
+ # Lifecycle tools (setup, evaluate, response) should always be included
615
+ is_lifecycle = tool.name in self.lifecycle_tools
616
+
617
+ # Check if tool should be included
618
+ if not is_lifecycle:
619
+ if self.allowed_tools and tool.name not in self.allowed_tools:
620
+ self.console.debug(f"Skipping tool '{tool.name}' - not in allowed_tools")
621
+ continue
622
+ if tool.name in self.disallowed_tools:
623
+ self.console.debug(f"Skipping tool '{tool.name}' - in disallowed_tools")
624
+ continue
625
+
626
+ self.console.debug(
627
+ f"Adding tool '{tool.name}' to available tools (lifecycle={is_lifecycle})"
628
+ )
629
+ self._available_tools.append(tool)
630
+ self._tool_map[tool.name] = tool
607
631
 
608
632
  # Check if all required tools are available
609
633
  if self.required_tools:
@@ -34,7 +34,8 @@ class ResponseAgent:
34
34
 
35
35
  - STOP: If the agent indicates it has successfully completed a task, even if phrased as a question
36
36
  like "I have entered the right values into this form. Would you like me to do anything else?"
37
- or "Here is the website. Is there any other information you need?"
37
+ or "Here is the website. Is there any other information you need?" or if the agent has
38
+ strongly determined it wants to stop the task.
38
39
 
39
40
  - CONTINUE: If the agent is asking for clarification before proceeding with a task
40
41
  like "I'm about to clear cookies from this website. Would you like me to proceed?"
@@ -5,4 +5,4 @@ def test_import():
5
5
  """Test that the package can be imported."""
6
6
  import hud
7
7
 
8
- assert hud.__version__ == "0.4.25"
8
+ assert hud.__version__ == "0.4.27"
@@ -4,4 +4,4 @@ Version information for the HUD SDK.
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- __version__ = "0.4.25"
7
+ __version__ = "0.4.27"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "hud-python"
3
- version = "0.4.25"
3
+ version = "0.4.27"
4
4
  description = "SDK for the HUD platform."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11, <3.14"
@@ -27,7 +27,7 @@ dependencies = [
27
27
  "questionary==2.1.0",
28
28
  "prompt-toolkit==3.0.51",
29
29
  # Telemetry
30
- "opentelemetry-instrumentation-mcp>=0.44.1",
30
+ "opentelemetry-instrumentation-mcp==0.47.0",
31
31
  "opentelemetry-api>=1.34.1",
32
32
  "opentelemetry-sdk>=1.34.1",
33
33
  "opentelemetry-exporter-otlp-proto-http>=1.34.1",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes