hud-python 0.4.51__py3-none-any.whl → 0.4.53__py3-none-any.whl

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 (88) hide show
  1. hud/__init__.py +13 -1
  2. hud/agents/base.py +14 -3
  3. hud/agents/lite_llm.py +1 -1
  4. hud/agents/openai_chat_generic.py +15 -3
  5. hud/agents/tests/test_base.py +9 -2
  6. hud/agents/tests/test_base_runtime.py +164 -0
  7. hud/cli/__init__.py +18 -25
  8. hud/cli/build.py +35 -27
  9. hud/cli/dev.py +11 -29
  10. hud/cli/eval.py +114 -145
  11. hud/cli/tests/test_analyze_module.py +120 -0
  12. hud/cli/tests/test_build.py +26 -3
  13. hud/cli/tests/test_build_failure.py +41 -0
  14. hud/cli/tests/test_build_module.py +50 -0
  15. hud/cli/tests/test_cli_more_wrappers.py +30 -0
  16. hud/cli/tests/test_cli_root.py +134 -0
  17. hud/cli/tests/test_eval.py +4 -0
  18. hud/cli/tests/test_mcp_server.py +8 -7
  19. hud/cli/tests/test_push_happy.py +74 -0
  20. hud/cli/tests/test_push_wrapper.py +23 -0
  21. hud/cli/utils/docker.py +120 -1
  22. hud/cli/utils/runner.py +1 -1
  23. hud/cli/utils/tasks.py +4 -1
  24. hud/cli/utils/tests/__init__.py +0 -0
  25. hud/cli/utils/tests/test_config.py +58 -0
  26. hud/cli/utils/tests/test_docker.py +93 -0
  27. hud/cli/utils/tests/test_docker_hints.py +71 -0
  28. hud/cli/utils/tests/test_env_check.py +74 -0
  29. hud/cli/utils/tests/test_environment.py +42 -0
  30. hud/cli/utils/tests/test_interactive_module.py +60 -0
  31. hud/cli/utils/tests/test_local_runner.py +50 -0
  32. hud/cli/utils/tests/test_logging_utils.py +23 -0
  33. hud/cli/utils/tests/test_metadata.py +49 -0
  34. hud/cli/utils/tests/test_package_runner.py +35 -0
  35. hud/cli/utils/tests/test_registry_utils.py +49 -0
  36. hud/cli/utils/tests/test_remote_runner.py +25 -0
  37. hud/cli/utils/tests/test_runner_modules.py +52 -0
  38. hud/cli/utils/tests/test_source_hash.py +36 -0
  39. hud/cli/utils/tests/test_tasks.py +80 -0
  40. hud/cli/utils/version_check.py +257 -0
  41. hud/clients/base.py +1 -1
  42. hud/clients/mcp_use.py +3 -1
  43. hud/datasets/parallel.py +2 -2
  44. hud/datasets/runner.py +85 -24
  45. hud/datasets/tests/__init__.py +0 -0
  46. hud/datasets/tests/test_runner.py +106 -0
  47. hud/datasets/tests/test_utils.py +228 -0
  48. hud/otel/config.py +8 -6
  49. hud/otel/context.py +4 -4
  50. hud/otel/exporters.py +231 -57
  51. hud/otel/tests/__init__.py +0 -1
  52. hud/otel/tests/test_instrumentation.py +207 -0
  53. hud/rl/learner.py +1 -1
  54. hud/server/tests/test_server_extra.py +2 -0
  55. hud/shared/exceptions.py +35 -9
  56. hud/shared/hints.py +25 -0
  57. hud/shared/requests.py +15 -3
  58. hud/shared/tests/test_exceptions.py +39 -30
  59. hud/shared/tests/test_hints.py +167 -0
  60. hud/telemetry/__init__.py +30 -6
  61. hud/telemetry/async_context.py +331 -0
  62. hud/telemetry/job.py +51 -12
  63. hud/telemetry/tests/test_async_context.py +242 -0
  64. hud/telemetry/tests/test_instrument.py +414 -0
  65. hud/telemetry/tests/test_job.py +609 -0
  66. hud/telemetry/tests/test_trace.py +184 -6
  67. hud/telemetry/trace.py +16 -17
  68. hud/tools/computer/qwen.py +4 -1
  69. hud/tools/computer/settings.py +2 -2
  70. hud/tools/executors/base.py +4 -2
  71. hud/tools/tests/test_submit.py +85 -0
  72. hud/tools/tests/test_types.py +193 -0
  73. hud/types.py +7 -1
  74. hud/utils/agent_factories.py +1 -3
  75. hud/utils/mcp.py +1 -1
  76. hud/utils/task_tracking.py +223 -0
  77. hud/utils/tests/test_agent_factories.py +60 -0
  78. hud/utils/tests/test_mcp.py +4 -6
  79. hud/utils/tests/test_pretty_errors.py +186 -0
  80. hud/utils/tests/test_tasks.py +187 -0
  81. hud/utils/tests/test_tool_shorthand.py +154 -0
  82. hud/utils/tests/test_version.py +1 -1
  83. hud/version.py +1 -1
  84. {hud_python-0.4.51.dist-info → hud_python-0.4.53.dist-info}/METADATA +48 -48
  85. {hud_python-0.4.51.dist-info → hud_python-0.4.53.dist-info}/RECORD +88 -47
  86. {hud_python-0.4.51.dist-info → hud_python-0.4.53.dist-info}/WHEEL +0 -0
  87. {hud_python-0.4.51.dist-info → hud_python-0.4.53.dist-info}/entry_points.txt +0 -0
  88. {hud_python-0.4.51.dist-info → hud_python-0.4.53.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,154 @@
1
+ from __future__ import annotations
2
+
3
+ from hud.utils.tool_shorthand import (
4
+ _is_call_like,
5
+ _to_call_dict,
6
+ normalize_to_tool_call_dict,
7
+ )
8
+
9
+
10
+ def test_is_call_like_with_name_and_arguments():
11
+ """Test _is_call_like with name and arguments keys."""
12
+ obj = {"name": "test_tool", "arguments": {"key": "value"}}
13
+ assert _is_call_like(obj) is True
14
+
15
+
16
+ def test_is_call_like_with_single_key_dict_value():
17
+ """Test _is_call_like with single key dict containing dict value."""
18
+ obj = {"tool": {"name": "test"}}
19
+ assert _is_call_like(obj) is True
20
+
21
+
22
+ def test_is_call_like_with_nested_single_key():
23
+ """Test _is_call_like with nested single key dict."""
24
+ obj = {"tool": {"inner": {"key": "value"}}}
25
+ assert _is_call_like(obj) is True
26
+
27
+
28
+ def test_is_call_like_not_dict():
29
+ """Test _is_call_like returns False for non-dict."""
30
+ assert _is_call_like("string") is False
31
+ assert _is_call_like(123) is False
32
+ assert _is_call_like(None) is False
33
+ assert _is_call_like([]) is False
34
+
35
+
36
+ def test_is_call_like_empty_dict():
37
+ """Test _is_call_like returns False for empty dict."""
38
+ assert _is_call_like({}) is False
39
+
40
+
41
+ def test_is_call_like_multi_key_dict():
42
+ """Test _is_call_like returns False for multi-key dict without name/arguments."""
43
+ obj = {"key1": "value1", "key2": "value2"}
44
+ assert _is_call_like(obj) is False
45
+
46
+
47
+ def test_to_call_dict_with_name_arguments():
48
+ """Test _to_call_dict preserves name and arguments."""
49
+ obj = {"name": "test_tool", "arguments": {"param": "value"}}
50
+ result = _to_call_dict(obj)
51
+ assert result == {"name": "test_tool", "arguments": {"param": "value"}}
52
+
53
+
54
+ def test_to_call_dict_with_nested_call():
55
+ """Test _to_call_dict with nested call-like arguments."""
56
+ obj = {"name": "outer", "arguments": {"name": "inner", "arguments": {"x": 1}}}
57
+ result = _to_call_dict(obj)
58
+ assert result == {"name": "outer", "arguments": {"name": "inner", "arguments": {"x": 1}}}
59
+
60
+
61
+ def test_to_call_dict_shorthand_single_key():
62
+ """Test _to_call_dict converts shorthand single-key dict."""
63
+ obj = {"tool_name": {"name": "inner", "arguments": {}}}
64
+ result = _to_call_dict(obj)
65
+ assert result == {"name": "tool_name", "arguments": {"name": "inner", "arguments": {}}}
66
+
67
+
68
+ def test_to_call_dict_non_call_arguments():
69
+ """Test _to_call_dict with non-call-like arguments."""
70
+ obj = {"name": "test", "arguments": {"simple": "value"}}
71
+ result = _to_call_dict(obj)
72
+ assert result == {"name": "test", "arguments": {"simple": "value"}}
73
+
74
+
75
+ def test_to_call_dict_non_dict():
76
+ """Test _to_call_dict returns non-dict unchanged."""
77
+ assert _to_call_dict("string") == "string"
78
+ assert _to_call_dict(123) == 123
79
+ assert _to_call_dict(None) is None
80
+
81
+
82
+ def test_to_call_dict_single_key_non_call():
83
+ """Test _to_call_dict with single key but non-call value."""
84
+ obj = {"key": "simple_value"}
85
+ result = _to_call_dict(obj)
86
+ assert result == {"key": "simple_value"}
87
+
88
+
89
+ def test_normalize_to_tool_call_dict_none():
90
+ """Test normalize_to_tool_call_dict with None."""
91
+ assert normalize_to_tool_call_dict(None) is None
92
+
93
+
94
+ def test_normalize_to_tool_call_dict_simple_dict():
95
+ """Test normalize_to_tool_call_dict with simple dict."""
96
+ obj = {"name": "tool", "arguments": {"x": 1}}
97
+ result = normalize_to_tool_call_dict(obj)
98
+ assert result == {"name": "tool", "arguments": {"x": 1}}
99
+
100
+
101
+ def test_normalize_to_tool_call_dict_shorthand():
102
+ """Test normalize_to_tool_call_dict with shorthand notation."""
103
+ obj = {"tool_name": {"name": "inner", "arguments": {}}}
104
+ result = normalize_to_tool_call_dict(obj)
105
+ assert result == {"name": "tool_name", "arguments": {"name": "inner", "arguments": {}}}
106
+
107
+
108
+ def test_normalize_to_tool_call_dict_list():
109
+ """Test normalize_to_tool_call_dict with list of dicts."""
110
+ obj = [
111
+ {"name": "tool1", "arguments": {"a": 1}},
112
+ {"name": "tool2", "arguments": {"b": 2}},
113
+ ]
114
+ result = normalize_to_tool_call_dict(obj)
115
+ assert len(result) == 2
116
+ assert result[0] == {"name": "tool1", "arguments": {"a": 1}}
117
+ assert result[1] == {"name": "tool2", "arguments": {"b": 2}}
118
+
119
+
120
+ def test_normalize_to_tool_call_dict_list_shorthand():
121
+ """Test normalize_to_tool_call_dict with list of shorthand dicts."""
122
+ obj = [
123
+ {"tool1": {"name": "inner1", "arguments": {}}},
124
+ {"tool2": {"name": "inner2", "arguments": {}}},
125
+ ]
126
+ result = normalize_to_tool_call_dict(obj)
127
+ assert len(result) == 2
128
+ assert result[0]["name"] == "tool1"
129
+ assert result[1]["name"] == "tool2"
130
+
131
+
132
+ def test_normalize_to_tool_call_dict_non_dict_non_list():
133
+ """Test normalize_to_tool_call_dict with non-dict, non-list value."""
134
+ assert normalize_to_tool_call_dict("string") == "string"
135
+ assert normalize_to_tool_call_dict(123) == 123
136
+
137
+
138
+ def test_normalize_to_tool_call_dict_empty_list():
139
+ """Test normalize_to_tool_call_dict with empty list."""
140
+ assert normalize_to_tool_call_dict([]) == []
141
+
142
+
143
+ def test_normalize_to_tool_call_dict_complex_nested():
144
+ """Test normalize_to_tool_call_dict with complex nested structure."""
145
+ obj = {
146
+ "outer_tool": {
147
+ "name": "middle_tool",
148
+ "arguments": {"name": "inner_tool", "arguments": {"x": 1}},
149
+ }
150
+ }
151
+ result = normalize_to_tool_call_dict(obj)
152
+ assert result["name"] == "outer_tool"
153
+ assert result["arguments"]["name"] == "middle_tool"
154
+ assert result["arguments"]["arguments"]["name"] == "inner_tool"
@@ -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.51"
8
+ assert hud.__version__ == "0.4.53"
hud/version.py CHANGED
@@ -4,4 +4,4 @@ Version information for the HUD SDK.
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- __version__ = "0.4.51"
7
+ __version__ = "0.4.53"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.51
3
+ Version: 0.4.53
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
@@ -48,6 +48,7 @@ Requires-Dist: opentelemetry-api>=1.34.1
48
48
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.34.1
49
49
  Requires-Dist: opentelemetry-instrumentation-mcp==0.47.0
50
50
  Requires-Dist: opentelemetry-sdk>=1.34.1
51
+ Requires-Dist: packaging>=21.0
51
52
  Requires-Dist: pathspec>=0.12.1
52
53
  Requires-Dist: pillow>=11.1.0
53
54
  Requires-Dist: prompt-toolkit==3.0.51
@@ -159,12 +160,12 @@ OSS RL environment + evals toolkit. Wrap software as environments, run benchmark
159
160
 
160
161
  ## Highlights
161
162
 
162
- - 🎓 **[One-click RL](https://hud.so/models)** – Run `hud rl` to get a trained model on any environment.
163
163
  - 🚀 **[MCP environment skeleton](https://docs.hud.so/core-concepts/mcp-protocol)** – any agent can call any environment.
164
164
  - ⚡️ **[Live telemetry](https://hud.so)** – inspect every tool call, observation, and reward in real time.
165
165
  - 🗂️ **[Public benchmarks](https://hud.so/leaderboards)** – OSWorld-Verified, SheetBench-50, and more.
166
166
  - 🌐 **[Cloud browsers](environments/remote_browser/)** – AnchorBrowser, Steel, BrowserBase integrations for browser automation.
167
167
  - 🛠️ **[Hot-reload dev loop](environments/README.md#phase-5-hot-reload-development-with-cursor-agent)** – `hud dev` for iterating on environments without rebuilds.
168
+ - 🎓 **[One-click RL](https://hud.so/models)** – Run `hud rl` to get a trained model on any environment.
168
169
 
169
170
  > We welcome contributors and feature requests – open an issue or hop on a call to discuss improvements!
170
171
 
@@ -185,29 +186,6 @@ uv tool install hud-python
185
186
  Before starting, get your HUD_API_KEY at [hud.so](https://hud.so).
186
187
 
187
188
 
188
- ## Quickstart: Training
189
-
190
- RL using GRPO a Qwen2.5-VL model on any hud dataset:
191
-
192
- ```bash
193
- hud get hud-evals/basic-2048 # from HF
194
- hud rl basic-2048.json
195
- ```
196
-
197
- > See [agent training docs](https://docs.hud.so/train-agents/quickstart)
198
-
199
- Or make your own environment and dataset:
200
-
201
- ```bash
202
- hud init my-env && cd my-env
203
- hud dev --interactive
204
- # When ready to run:
205
- hud rl
206
- ```
207
-
208
- > See [environment design docs](https://docs.hud.so/build-environments)
209
-
210
-
211
189
  ## Quickstart: Evals
212
190
 
213
191
  For a tutorial that explains the agent and evaluation design, run:
@@ -264,38 +242,27 @@ The above example let's the agent play 2048 ([See replay](https://hud.so/trace/6
264
242
 
265
243
  ![Agent playing 2048](https://raw.githubusercontent.com/hud-evals/hud-python/main/docs/src/images/2048_1.gif)
266
244
 
267
- ## Reinforcement Learning with GRPO
268
-
269
- This is a Qwen‑2.5‑VL‑3B agent training a policy on the 2048-basic browser environment:
270
-
271
- ![RL curve](https://raw.githubusercontent.com/hud-evals/hud-python/main/docs/src/images/rl_2.png)
245
+ ## Quickstart: Training
272
246
 
273
- Train with the new interactive `hud rl` flow:
247
+ RL using GRPO a Qwen2.5-VL model on any hud dataset:
274
248
 
275
249
  ```bash
276
- # Install CLI
277
- uv tool install hud-python
278
-
279
- # Option A: Run directly from a HuggingFace dataset
280
- hud rl hud-evals/basic-2048
281
-
282
- # Option B: Download first, modify, then train
283
- hud get hud-evals/basic-2048
250
+ hud get hud-evals/basic-2048 # from HF
284
251
  hud rl basic-2048.json
285
-
286
- # Optional: baseline evaluation
287
- hud eval basic-2048.json
288
252
  ```
289
253
 
290
- Supports multi‑turn RL for both:
291
- - Language‑only models (e.g., `Qwen/Qwen2.5-7B-Instruct`)
292
- - Vision‑Language models (e.g., `Qwen/Qwen2.5-VL-3B-Instruct`)
254
+ > See [agent training docs](https://docs.hud.so/train-agents/quickstart)
293
255
 
294
- By default, `hud rl` provisions a persistent server and trainer in the cloud, streams telemetry to `hud.so`, and lets you monitor/manage models at `hud.so/models`. Use `--local` to run entirely on your machines (typically 2+ GPUs: one for vLLM, the rest for training).
256
+ Or make your own environment and dataset:
295
257
 
296
- Any HUD MCP environment and evaluation works with our RL pipeline (including remote configurations). See the guided docs: `https://docs.hud.so/train-agents/quickstart`.
258
+ ```bash
259
+ hud init my-env && cd my-env
260
+ hud dev --interactive
261
+ # When ready to run:
262
+ hud rl
263
+ ```
297
264
 
298
- Pricing: Hosted vLLM and training GPU rates are listed in the [Training Quickstart → Pricing](https://docs.hud.so/train-agents/quickstart#pricing). Manage billing at the [HUD billing dashboard](https://hud.so/project/billing).
265
+ > See [environment design docs](https://docs.hud.so/build-environments)
299
266
 
300
267
  ## Benchmarking Agents
301
268
 
@@ -459,6 +426,39 @@ We highly suggest running 3-5 evaluations per dataset for the most consistent re
459
426
 
460
427
  Using the [`run_dataset`](https://docs.hud.so/reference/tasks#run_dataset) function with a HuggingFace dataset automatically assigns your job to that leaderboard page, and allows you to create a scorecard out of it:
461
428
 
429
+ ## Reinforcement Learning with GRPO
430
+
431
+ This is a Qwen‑2.5‑VL‑3B agent training a policy on the 2048-basic browser environment:
432
+
433
+ ![RL curve](https://raw.githubusercontent.com/hud-evals/hud-python/main/docs/src/images/rl_2.png)
434
+
435
+ Train with the new interactive `hud rl` flow:
436
+
437
+ ```bash
438
+ # Install CLI
439
+ uv tool install hud-python
440
+
441
+ # Option A: Run directly from a HuggingFace dataset
442
+ hud rl hud-evals/basic-2048
443
+
444
+ # Option B: Download first, modify, then train
445
+ hud get hud-evals/basic-2048
446
+ hud rl basic-2048.json
447
+
448
+ # Optional: baseline evaluation
449
+ hud eval basic-2048.json
450
+ ```
451
+
452
+ Supports multi‑turn RL for both:
453
+ - Language‑only models (e.g., `Qwen/Qwen2.5-7B-Instruct`)
454
+ - Vision‑Language models (e.g., `Qwen/Qwen2.5-VL-3B-Instruct`)
455
+
456
+ By default, `hud rl` provisions a persistent server and trainer in the cloud, streams telemetry to `hud.so`, and lets you monitor/manage models at `hud.so/models`. Use `--local` to run entirely on your machines (typically 2+ GPUs: one for vLLM, the rest for training).
457
+
458
+ Any HUD MCP environment and evaluation works with our RL pipeline (including remote configurations). See the guided docs: `https://docs.hud.so/train-agents/quickstart`.
459
+
460
+ Pricing: Hosted vLLM and training GPU rates are listed in the [Training Quickstart → Pricing](https://docs.hud.so/train-agents/quickstart#pricing). Manage billing at the [HUD billing dashboard](https://hud.so/project/billing).
461
+
462
462
  ## Architecture
463
463
 
464
464
  ```mermaid
@@ -1,33 +1,34 @@
1
- hud/__init__.py,sha256=JMDFUE1pP0J1Xl_miBdt7ERvoffZmTzSFe8yxz512A8,552
1
+ hud/__init__.py,sha256=0LQ9PyuU6yZx7Fxu8YJXKC1i3TTHjg3UrInThh759QE,653
2
2
  hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
3
3
  hud/settings.py,sha256=disObWa-DgXzoDcCDp3y1dTPaNsbR0IvoMJL9Eg4zyo,3947
4
- hud/types.py,sha256=KCVrglSG0VK-AUCFgG5CLgDcYqokvYgZG1r2Bsc-tBg,11155
5
- hud/version.py,sha256=C-hl1MocZrnKED-WbF7OhqI9B81dhTZJ7N3-aE7cw6k,105
4
+ hud/types.py,sha256=CC64KFhtRDW_08SLTll47XWY29irgKFkhmgpbhi3mBc,11411
5
+ hud/version.py,sha256=e_J-7G6-g8MQtIni9mfOROkXj0NePuYElxsZ9NuABEQ,105
6
6
  hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
7
- hud/agents/base.py,sha256=5G8Aio50KlDMGi3RjIlzK6fNHlY8YK9y5jhhHTUN5CE,31626
7
+ hud/agents/base.py,sha256=ojQmBDICQNmXa_cw4DC_fQo5OSrbHm-aruVtZ4Yq8KY,32092
8
8
  hud/agents/claude.py,sha256=0zje6de9_H-QlyDf05BnvtwoLPFnYgXhHgQGEAjwktU,16006
9
9
  hud/agents/grounded_openai.py,sha256=UC_Z0BP1fvThB95cCYqvMgaQLYXFYB_8zlawwIphruY,11247
10
10
  hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
11
- hud/agents/lite_llm.py,sha256=_3wbUiYCp7q8Vyu9rhaoJDvmb_bsyUsLYWP3iQJ2bHo,2239
11
+ hud/agents/lite_llm.py,sha256=RW_VcMB-NIsxSfVhiQ2tvXSNQp3rTQg5h5Ax1b56bP0,2238
12
12
  hud/agents/openai.py,sha256=O1xV1h1l-W8lmnmXqTYr5CwnmnaniMqOxAZbl2CTTng,14576
13
- hud/agents/openai_chat_generic.py,sha256=_vAID9dZ_UxL0elYwafskRcsdrSsLsxJ4zPrP58oBiw,12151
13
+ hud/agents/openai_chat_generic.py,sha256=ucSmneOWmjSiGl259a01eJX7zISSElryEOiJFZr8_CI,12710
14
14
  hud/agents/misc/__init__.py,sha256=LbVpHl2bDtheGPixbRRKsEjujwzmrXs7sCS8u1sYfAk,219
15
15
  hud/agents/misc/integration_test_agent.py,sha256=MYHsynQ_fooexxSGU_tN_zcQEUMrVCnlrdr6_KIj_Vw,2093
16
16
  hud/agents/misc/response_agent.py,sha256=uMuRDkz5QgaMQliNzBRepond5sb7KyqIiKm3LstjVnw,3753
17
17
  hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
18
- hud/agents/tests/test_base.py,sha256=KDgaSlxiiHrNRq64zLjenq_6LcKb75Ln4NZCvci-I8M,28643
18
+ hud/agents/tests/test_base.py,sha256=VvsEYMPlhV0FA0S1DHA__xSFKNJfS6_wD1lZhhNHD5g,28927
19
+ hud/agents/tests/test_base_runtime.py,sha256=aCOtTCRpJ76TCEvkL5cvEjJGx4hafAqhSf-lLQM0cKw,5766
19
20
  hud/agents/tests/test_claude.py,sha256=0nZnfsbGoECvsLPdmaRnc9jVmrehVvc3kxeyiCQI2Cc,13807
20
21
  hud/agents/tests/test_client.py,sha256=uikgh6yhjPPX2RBU4XJQMz1mNox9uXjuwsP8t93id18,13337
21
22
  hud/agents/tests/test_grounded_openai_agent.py,sha256=VK8lUvHIjWicMX00VKPE-FZyjiJqTEhb80MuRRa9fVc,5437
22
23
  hud/agents/tests/test_openai.py,sha256=dnAFAoBKZf-5dtDpj6UC3q7oZv2tdMFcniPU0emfImw,8020
23
- hud/cli/__init__.py,sha256=D32zOZKmp-KDTtXj7H2uYPTh-fOmnwGmIitHAU6eVKs,41422
24
+ hud/cli/__init__.py,sha256=N-HrtZ-M_dwtqEUwb4uFQl7NknQeY6BAZAm2tV6yE-o,41246
24
25
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
25
26
  hud/cli/analyze.py,sha256=4u5oYfJMquOjT9PzzRTYVcTZDxDi0ilNP_g532_hpOU,14716
26
- hud/cli/build.py,sha256=aFFWGtO1sQeTonvLsuMeDKG62IkakASbsP7FonGYuxc,22381
27
+ hud/cli/build.py,sha256=dkNPGFytt_X2U6Uhjz6gzgaMtef_-8gF2GdIVCXszII,22766
27
28
  hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
28
29
  hud/cli/debug.py,sha256=jtFW8J5F_3rhq1Hf1_SkJ7aLS3wjnyIs_LsC8k5cnzc,14200
29
- hud/cli/dev.py,sha256=mZW66fbtnCHplwGf1UWy72qfVYXnjPBUqVFAOD4v9Hg,23012
30
- hud/cli/eval.py,sha256=b91oYXBpODe_R2sRTWItjGceYSzSP5keKVLMkC7uc-Q,26926
30
+ hud/cli/dev.py,sha256=WH6gkm8L4ygjXNY6QdaPGn9ULW4aVVu0EH5PXYm6DEI,22400
31
+ hud/cli/eval.py,sha256=ztMK_AIiq5NuoEIvuPpyMckx-XWIr04lBHF5MaXyoJk,25142
31
32
  hud/cli/get.py,sha256=sksKrdzBGZa7ZuSoQkc0haj-CvOGVSSikoVXeaUd3N4,6274
32
33
  hud/cli/init.py,sha256=Iz0fcE8ao50xChCKwbapTwjAPRY0ZDqV6XHLsvCpRC4,9952
33
34
  hud/cli/list_func.py,sha256=EVi2Vc3Lb3glBNJxFx4MPnZknZ4xmuJz1OFg_dc8a_E,7177
@@ -52,24 +53,31 @@ hud/cli/rl/wait_utils.py,sha256=FyIvqYWLOydANTetukoE5Rp2AOQi67qkiAlIJp4HpL8,2577
52
53
  hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
53
54
  hud/cli/tests/test_analyze.py,sha256=inbRvi7KJKoMYrcqXU6RSayoh7mAOGVrRknm6BLQFes,11055
54
55
  hud/cli/tests/test_analyze_metadata.py,sha256=TP8rVRDFcdkZrdmKFIR9yUxuxiaAkc-6UmjV4vrJaJM,10025
55
- hud/cli/tests/test_build.py,sha256=YbI8ICGgV7sYwkoE_sUpcf-ItTAB-i6vYAqziML68Mg,13552
56
+ hud/cli/tests/test_analyze_module.py,sha256=62GRxBwkJpFxVXLy7TP5ah25V33pSmmvZxhgspVMUyg,4092
57
+ hud/cli/tests/test_build.py,sha256=1tMIprYprAAN6Gcg1pSDPVidkkeA-Djkn2Q9j49lCBk,14497
58
+ hud/cli/tests/test_build_failure.py,sha256=AmTNZb1re3MrghmGHpoMpo6l-upimOfxk36_Fgh2suI,1347
59
+ hud/cli/tests/test_build_module.py,sha256=yAspaB5frpagWBPd6OnS9eqw6pqgsoyOwrJe3OHMSmI,1440
56
60
  hud/cli/tests/test_cli_init.py,sha256=_H0bAn5_skJ91Zj8P5P_wtZoPWvrN7jMhPZvmnnf0n8,11289
57
61
  hud/cli/tests/test_cli_main.py,sha256=0wMho9p9NcGjp0jLiUtCQh_FYdbMaCJtSY3sBbSgPwA,697
62
+ hud/cli/tests/test_cli_more_wrappers.py,sha256=MdcsGXOwPQOSjDhSm4s7FjiVy1ru8YeRiZxIGVLAgnA,847
63
+ hud/cli/tests/test_cli_root.py,sha256=ifHjb1k9zSRTB3dgOxApmRYulzK_D8cKjI4GPQXNQQI,3972
58
64
  hud/cli/tests/test_clone.py,sha256=oC2mf-41QQVc7ODJkjrWbVPNMB2fDW3nZ6jY6w93gvQ,4458
59
65
  hud/cli/tests/test_cursor.py,sha256=ZfxAFKJesJ3UV1JBoASSRlv6BXbpvVEk_pjxUg1jnf4,9821
60
66
  hud/cli/tests/test_debug.py,sha256=bQ76d_0HJfthHBSECmGNv499ZE57CIOKsanMlNfNHGk,18036
61
- hud/cli/tests/test_eval.py,sha256=URvNJBlwgbA8MTZhMbuTmGa2TETo4TPRm_G482CSQVM,22021
67
+ hud/cli/tests/test_eval.py,sha256=9tsjHHA43IUiEy5AK3avdURZE3H3AFWTeeb87QW-R98,22329
62
68
  hud/cli/tests/test_list_func.py,sha256=pkG4TtJJBMi9Xk8KBNFBlGcam7kwz01IRsjfQBL2PxM,10700
63
69
  hud/cli/tests/test_main_module.py,sha256=6RhwCcdRSN2uQV6-adti40ZcLd3u-mPR1ai6wL64c6Y,1105
64
- hud/cli/tests/test_mcp_server.py,sha256=2RzAdhHrBOn-FLsMfZ4CJd2z7xJEA-W7Ytd1RTIP_os,890
70
+ hud/cli/tests/test_mcp_server.py,sha256=itMQvk4Tk0ANtKGrEqM3Kf2P2fMuua0k3DRlDBxwrCo,954
65
71
  hud/cli/tests/test_pull.py,sha256=ToSJrlfn13pYnrWWt3W_S7qFFjwvoZC2UisrZVrxujo,13155
66
72
  hud/cli/tests/test_push.py,sha256=V71KP5gEDo7Z9ccFpjidBjYliFg_KCfnZoZYbBXjguE,12875
73
+ hud/cli/tests/test_push_happy.py,sha256=xJEKNCBJ0AKNXYEQoA8CtrXSZw-nFc3ZP1Zj1qE0SaA,2498
74
+ hud/cli/tests/test_push_wrapper.py,sha256=yeeJgZP1-xisanVe8j3LvOhKOoGfjrARFbbFnhow5sA,628
67
75
  hud/cli/tests/test_registry.py,sha256=-o9MvQTcBElteqrg0XW8Bg59KrHCt88ZyPqeaAlyyTg,9539
68
76
  hud/cli/tests/test_utils.py,sha256=F1E5Rpn3pgJpr-D-n-8UrUqsRfmC1DdAdMLdcBzV2IY,13474
69
77
  hud/cli/utils/__init__.py,sha256=L6s0oNzY2LugGp9faodCPnjzM-ZUorUH05-HmYOq5hY,35
70
78
  hud/cli/utils/config.py,sha256=AnsN6FEa8V3jg3EWaqUJN38-UuYC6tVZxPfBb_5LFBs,2652
71
79
  hud/cli/utils/cursor.py,sha256=fy850p0rVp5k_1wwOCI7rK1SggbselJrywFInSQ2gio,3009
72
- hud/cli/utils/docker.py,sha256=oGVzPfp0Rn89o9d6tgSEziKy9GXFrYaWn_mjBmGRHe4,6326
80
+ hud/cli/utils/docker.py,sha256=SGsBelhvofHBkAyFrwZijENTuy_hLO45Eo9mNw-2XIo,10230
73
81
  hud/cli/utils/env_check.py,sha256=qs_earFr9RDjnw6V4Fxeqno5ETOKFb8E1WKee3C3P54,7073
74
82
  hud/cli/utils/environment.py,sha256=cxsNwCfwX2PtCHht9xH_Yo5jpcqANf7h0wa3gfiy5tY,4278
75
83
  hud/cli/utils/interactive.py,sha256=sHhTjaImxlwlZ5_DTXb23Jwrjy5oJ7diB-8duhHbImU,16647
@@ -79,15 +87,32 @@ hud/cli/utils/metadata.py,sha256=niAS6gcVel0j4ceL3L3IBuDpyNcNKGTwzW6320usToQ,793
79
87
  hud/cli/utils/package_runner.py,sha256=1TE_iahDFjPZ4GydhpD8K-bV8bHSzL4iY3uE42Cv7nQ,10149
80
88
  hud/cli/utils/registry.py,sha256=p6IaWmhUbf0Yh6aGa3jIPoSFT2uJPTOVBLS0jpKDUqc,4376
81
89
  hud/cli/utils/remote_runner.py,sha256=OOSJ6wU_gS_hJaURDfxZcyekjIIwPQKGN_Pq64tin3E,9505
82
- hud/cli/utils/runner.py,sha256=7HxVGa6OTflQnO0FSuRs273wnAmbm7cFRU9RTGL3-Wo,4390
90
+ hud/cli/utils/runner.py,sha256=16_dXkSZTvT2JQKWbZBCoIz6iiLMhjqgFXvcWr1WS1M,4439
83
91
  hud/cli/utils/server.py,sha256=EE5DJ0RAmXCEjMcZycpAsAxxCj6sOdIsXqPh38kK2ew,7416
84
92
  hud/cli/utils/source_hash.py,sha256=EDD3KC4pLGBVoSL5UTv1GvF2TAs2ThNHNOhP_5Sbub4,2979
85
- hud/cli/utils/tasks.py,sha256=bpH2mQkfgKUpgh1J0NtVxMxcM1jDZk2GAAPQMcqAUz4,826
93
+ hud/cli/utils/tasks.py,sha256=lX9SeM5XekrTBx2HWKMA0BQ7R3Q8jqGgi4G5vIHsnJM,994
94
+ hud/cli/utils/version_check.py,sha256=30VgZQqwUb36Fm4dAzKn5HuT0We6OnA-rd0eIqjd5Tc,7271
95
+ hud/cli/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ hud/cli/utils/tests/test_config.py,sha256=dZugvnjXiFNAvcx0nrIp578zmReMBEdupXfxpqHWGAk,1422
97
+ hud/cli/utils/tests/test_docker.py,sha256=WHYg_la0WfIr47Wu7Fmy8BtQrSyiWUdTYccv_DECBvw,2556
98
+ hud/cli/utils/tests/test_docker_hints.py,sha256=9ot366YqmySJPE-m9V4mGtdDgE2dAnfNTvBK4s3jnSQ,2107
99
+ hud/cli/utils/tests/test_env_check.py,sha256=FMAwU5cJMOzTLrW6ZaHIhaz2nJsOlNn9nvmtHHNJmDo,2485
100
+ hud/cli/utils/tests/test_environment.py,sha256=-yMAo5GUAiZnqYHyYpC06gwirXhW4xoaY3oTUFHUGfE,1367
101
+ hud/cli/utils/tests/test_interactive_module.py,sha256=EISXRN-b3W5iiAk4ktm0IjfzY2EAUS0yHT9h-QwofkA,1968
102
+ hud/cli/utils/tests/test_local_runner.py,sha256=egK6AZpoaJx40fZUJnO_yav4zh48Qh0YDQivrhJSDVo,1651
103
+ hud/cli/utils/tests/test_logging_utils.py,sha256=2805kvGkYlT90zsbqTExHr_XSQpeZbPGEfJi2LW8qSY,702
104
+ hud/cli/utils/tests/test_metadata.py,sha256=GYvNtVQSqLD2BrfrTHn6DFpQUpyFF1UAmYY6pTQxq2U,1643
105
+ hud/cli/utils/tests/test_package_runner.py,sha256=KXFtgU7GCLmXqFBCcA5eXUymq9lnQY8IzC8ne1eiVfQ,1196
106
+ hud/cli/utils/tests/test_registry_utils.py,sha256=u_T3E6KF5UVCanol5VYHmRNyMea6QDBl8YjfY6KakCU,1618
107
+ hud/cli/utils/tests/test_remote_runner.py,sha256=4au0ZFLbQFVNmhXtpjskBsO6g8aJb8B2lNdO50DaaxI,703
108
+ hud/cli/utils/tests/test_runner_modules.py,sha256=PFvluN0VmOfuHORbv3b-FZuM0bPVeReYUIXrxwXuDkQ,1722
109
+ hud/cli/utils/tests/test_source_hash.py,sha256=GGFklT9xrVPMEpPwgiUzr94An66R-nhNn7lvVeF2c2I,1157
110
+ hud/cli/utils/tests/test_tasks.py,sha256=FT4smFGUHaJpZGIqj-yevBH8l9ARCu03RoedGxiLc2M,2624
86
111
  hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
87
112
  hud/clients/__init__.py,sha256=N5M_gZv4nP7dLRwpAiaqqaxyaLieGW6397FszeG7JGw,364
88
- hud/clients/base.py,sha256=yyQ4ctrXVyPps7Q_JGq2wilr1diNetWZ05wUJ4YCRng,14203
113
+ hud/clients/base.py,sha256=Ywq3CzsWRx1cgwMDUCgSK_N1kxPfFTV7h-8Ah2cxDOw,14215
89
114
  hud/clients/fastmcp.py,sha256=1xaAg7DwMcwt_GRx2n3OsZaX-UMEQCZCaLDK4cr2HhQ,9178
90
- hud/clients/mcp_use.py,sha256=WE_99LxilPnfYo2yXsxQOl3Rt8eNyYuvvIycVzpUzk0,14627
115
+ hud/clients/mcp_use.py,sha256=2Pb8bhAEmD9TJYKb-2JbxmyIsh4ttE_pP-kldrt6AH0,14750
91
116
  hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
92
117
  hud/clients/tests/test_client_integration.py,sha256=kohU6jfCNfwSnAushHeB1_CmDlRfQc7VBL0GEdJYSeI,4198
93
118
  hud/clients/tests/test_fastmcp.py,sha256=4q3TzDjuieTZa89taiNJIrzbUncNkYOG4MaubypA21k,13030
@@ -98,9 +123,12 @@ hud/clients/utils/mcp_use_retry.py,sha256=knsgOTR3YFXshmPFfPQE6K6C5GpR1ZBJe2J7oz
98
123
  hud/clients/utils/retry.py,sha256=mMs2T_mAlb8AYhSqMR4AmCw7838gqCC4mdG3zjMAYM4,5744
99
124
  hud/clients/utils/retry_transport.py,sha256=Rsq25eiKKt_pM1bas78QEZvO0illK97X_3opmaS3A3w,6809
100
125
  hud/datasets/__init__.py,sha256=-g05iDy76CU4JiRHjKBBhgh3STtiIjmWhUfPqgf5hJE,697
101
- hud/datasets/parallel.py,sha256=hB_WSRWxgkfsPhbsiuM98IuR5Kln4B5iYOMxw86Yg8o,25441
102
- hud/datasets/runner.py,sha256=_BmQ4K-md3cyIs1YIiCH0HIjs_3Qwi0MAt4KJ8pLdTU,4625
126
+ hud/datasets/parallel.py,sha256=3V2jCOQxh_JesUYyNv8kPjLpddL5zuvQfMswiVYEUgo,25429
127
+ hud/datasets/runner.py,sha256=fHsblKzi0mEk5PDkpTWnRMjbCFrld4UcwrBCYIR4M1s,7517
103
128
  hud/datasets/utils.py,sha256=hdZfjWH5l3FVJaWBSHEEpjujAG7DqEam_vHgslL8MLs,4279
129
+ hud/datasets/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
+ hud/datasets/tests/test_runner.py,sha256=aHPtsCI1039fIRHeQV_1-HV-CTv1ACMx7biVsJdLoZo,3739
131
+ hud/datasets/tests/test_utils.py,sha256=9s3-LqDg3oEG2lEPmJyuhZz1Advj-7gTlk18StcGjqA,7882
104
132
  hud/misc/__init__.py,sha256=m_pprQQ-G-Y0Sd0NEiR8MtAMbElnuFZ2OWT8TXrw7c4,43
105
133
  hud/misc/claude_plays_pokemon.py,sha256=IthAkjDVr2Q-GNvX-QLJyMzN7-0pHqqJbagGNv2m7yo,10453
106
134
  hud/native/__init__.py,sha256=TqM0KaiQnDb2Nv1zOgpEMiLVq8JPd4j_aaK4rUZ0IiA,232
@@ -110,12 +138,13 @@ hud/native/tests/test_comparator.py,sha256=pDch3r3xDi2o5YXF_bkoLfIdHcCjse3foAaqy
110
138
  hud/native/tests/test_native_init.py,sha256=Z-2dinbQYEkrbCcfBrBOLGdpXtWWOtkfPzp7ZKri68Y,2839
111
139
  hud/otel/__init__.py,sha256=ii17ayoWiS5vAhA7UAmZ8TkmP52gs2pWyHsD46-uYbE,1003
112
140
  hud/otel/collector.py,sha256=jLZymZ8r7xt2VDuWexfbnT7PY1-0aiyLMgjBy8KDY1M,4497
113
- hud/otel/config.py,sha256=PzyMOk_WYlJzVgZwQ_-F0DIlBbEy8Xt3ZA2e1QvFDes,6802
114
- hud/otel/context.py,sha256=9kJ_99KWGDvqU2O_DjmTHPXmhNDsMhbk_AHNvcHXR5Q,19116
115
- hud/otel/exporters.py,sha256=RLAjWa8b2DJEU21740Idq4fmeIuabLEqGGUspcFDcH4,14331
141
+ hud/otel/config.py,sha256=rqw4gaQCqJNEFWO_AfyqwgZVia706qJP0UveNSgDVSg,7037
142
+ hud/otel/context.py,sha256=DLP89aGlo-sTO0f4t80EvIXNaXA2FQXdOrlrkWJ6bVU,19102
143
+ hud/otel/exporters.py,sha256=k0yfUppMbcJ3IfNH3cc_u1hdR54qnnkT7lQjxO3I06g,21470
116
144
  hud/otel/instrumentation.py,sha256=fsFG9W89RdewFDxWKN9Ft4GUb7WbIKpfucTc16WxaZU,5093
117
145
  hud/otel/processors.py,sha256=-gGRbwifplcExDQBLfx_9tqWreDImULJNcENgO9q7VU,4700
118
- hud/otel/tests/__init__.py,sha256=VNJKBMaxTtbn7trW-1Ph50zCvCok_wTSGcI1HD6GOLA,43
146
+ hud/otel/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
+ hud/otel/tests/test_instrumentation.py,sha256=O12k6676Y4pEds1jPjaq1Ot4AIzEyHF_NC108X1IRgs,6850
119
148
  hud/otel/tests/test_processors.py,sha256=np0R4ssd9j6LJSJykJ5bNjl0POwNYNhgb7BqOZHwcMY,6778
120
149
  hud/rl/README.md,sha256=uFRpNFaEY8paq9k1C4miF7AGnbqHTGAsPmpcf9JIEeA,1189
121
150
  hud/rl/__init__.py,sha256=yYL7U1WV6L3mr3Hig48-4lhnryTaWj4nCXm4lG5vrYI,25
@@ -124,7 +153,7 @@ hud/rl/buffer.py,sha256=z47HOjOBJx3umUzzUfdtq_N4ZoJ8FMBPkX8YQKBtd3A,15457
124
153
  hud/rl/chat_template.jinja,sha256=XTdzI8oFGEcSA-exKxyHaprwRDmX5Am1KEb0VxvUc6U,4965
125
154
  hud/rl/config.py,sha256=sCU56mjtgJpu_C0TXqpT14v1LmZv0ntmUjgNkFamTPA,5713
126
155
  hud/rl/distributed.py,sha256=1k65Qhd9Coh4dyra8TMTExO-tabyRS_wZqh7SO3kuxo,3650
127
- hud/rl/learner.py,sha256=GegoJiKUJSWxw96VYiEvasOJJ4MnVRxW52uwBvo07Zo,27223
156
+ hud/rl/learner.py,sha256=pdS_5_5KItQ8k0EVO4PX7ExDSDkQMoxAZJ5WvI-J7Kw,27239
128
157
  hud/rl/train.py,sha256=d0Ldg_ZXhiMwdpB5yidMK-LY6X__CWBhVqglQ-3EnvU,15589
129
158
  hud/rl/types.py,sha256=lrLKo7iaqodYth2EyeuOQfLiuzXfYM2eJjPmpObrD7c,3965
130
159
  hud/rl/utils.py,sha256=IsgVUUibxnUzb32a4mu1sYrgJC1CwoG9E-Dd5y5VDOA,19115
@@ -147,23 +176,28 @@ hud/server/tests/test_mcp_server_handlers.py,sha256=MAH7EIXbvPlrAOmtsr9zL-n9a8HI
147
176
  hud/server/tests/test_mcp_server_integration.py,sha256=YhKo4SFRpyS4ysfUvvB_svmmntwZ8bx7sXHZUuYHbHw,13415
148
177
  hud/server/tests/test_mcp_server_more.py,sha256=tlEMRO0GNy89EmurVdsaM2YPE157q44t3SfixhtrjDs,8292
149
178
  hud/server/tests/test_run_wrapper.py,sha256=EdwxMWCIHAp8t-l6VUeMOMhPRLTWjEVfTyysafeUl4E,1805
150
- hud/server/tests/test_server_extra.py,sha256=MAmIrFwQWMFAP2AT6h1kbExZGxEvJZLq1bxvS7guQFE,5489
179
+ hud/server/tests/test_server_extra.py,sha256=blIO0ne4Rq7R40y1-O-P8ANeRHnv2iKFWqSii9kmf-s,5595
151
180
  hud/server/tests/test_sigterm_runner.py,sha256=HTM_0DAxA2exGYj7LK4udxMGXHZhY9LDZaKkHhQMu_Y,2610
152
181
  hud/shared/__init__.py,sha256=IPxPCqtPLguryN-nBq78Sakypw2bRiE2iHv3SXG8YRk,139
153
- hud/shared/exceptions.py,sha256=dhmt5KMciQ2fmV-yqXtTNO868k-WzuZae6w7dOk3M44,12144
154
- hud/shared/hints.py,sha256=aa1CtBzsxLHRSZBFCXH00uY-1j2_7WLxYFwAy-neibE,5086
155
- hud/shared/requests.py,sha256=HWrPp7nBSK4jhv9wqZdFiNrVaaxV0vWS8fcgGtoztBc,9479
182
+ hud/shared/exceptions.py,sha256=9IIqwlGuaNmcshEiFnph1jceZpWKpCnWgoH2OH-NL7I,13260
183
+ hud/shared/hints.py,sha256=1UViFu6CwDhaKn66SUvJ-mdFnTVifG6u6Y1n7jufqCg,5717
184
+ hud/shared/requests.py,sha256=FbvMU_dKSWu7OzNBKGAXlq-Q34zL1cULhEdGFa6rJyQ,9993
156
185
  hud/shared/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
- hud/shared/tests/test_exceptions.py,sha256=bCKGqw2RwBmlGIMNpddzyfnWAOQwSIYB76r6iaBE2is,15761
186
+ hud/shared/tests/test_exceptions.py,sha256=66k9Z1zQmYK4yPlG2NC7zggabpCQMFpGqRG3_lOWM8U,16376
187
+ hud/shared/tests/test_hints.py,sha256=q6UFcfQmPuqTk1ps9xvDm6mZUUiqk1m2kZeLUWbckhw,4851
158
188
  hud/shared/tests/test_requests.py,sha256=nKFcSN1sjrOouVU2xik9lE5Wxapy3EWsO8iIXrM_Sts,9114
159
- hud/telemetry/__init__.py,sha256=uWiloBMXgEzPRsRIOpiSBhcTxJDyHfBqTg7qi8kxSTc,683
189
+ hud/telemetry/__init__.py,sha256=oYJ9fiaiwUGzfMH0qBixX74uSpAR_hyhl8Y-REjmNak,1396
190
+ hud/telemetry/async_context.py,sha256=SjL1VNFdXmy_4t_gIbZslQ1Ea5vYC9Ibv9xeqr9elXw,11139
160
191
  hud/telemetry/instrument.py,sha256=m3u6YK02PTk39Jr4L3se7l-cYyKx0maCaqf5Z5JqWNA,14096
161
- hud/telemetry/job.py,sha256=LjspT-mSqQO2DnFL6h0ZkCkeMrrpjAuFVZnTJiOaDek,11585
192
+ hud/telemetry/job.py,sha256=3W9KHLfBR13IYZvll496P9F6a9HUXCthFMY-MJLi7EA,13278
162
193
  hud/telemetry/replay.py,sha256=YW17s314s5Wy6Rl8MXHqg1FU8EF9_XcHBMJI0rrkyS4,2306
163
- hud/telemetry/trace.py,sha256=nUePF9LUtB4ao0832YoRxuakfGl8G1-NrxAyAXssnv4,4837
194
+ hud/telemetry/trace.py,sha256=9zNfLIHM1UwfkUX23LmqUcIGX2hPzfHz_x2_G-DY-NA,5049
164
195
  hud/telemetry/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
+ hud/telemetry/tests/test_async_context.py,sha256=hYQKVZJU36VoM6JbXZ0oEudignbv863LF0EviYT4bWQ,8702
197
+ hud/telemetry/tests/test_instrument.py,sha256=Y3MuM8RSEdRrjKLx7wFwrGKe1o1mhXwUNzcFAEU_d3c,10234
198
+ hud/telemetry/tests/test_job.py,sha256=8gPm1nB2FArIgUrRvKumac3SnQzQIJgjjYuYafIYOqQ,19022
165
199
  hud/telemetry/tests/test_replay.py,sha256=eREc6qgSJDRT1pOPdyhiEoEJ9H2yT1ospaU1RvTKlvg,1328
166
- hud/telemetry/tests/test_trace.py,sha256=0rxR77CjcStat3ILA9QAswieOJ3J_386QmjmNDp34oA,2486
200
+ hud/telemetry/tests/test_trace.py,sha256=-YdXx_sesVY8gzsySpI_wCsrii4aBmO_Td9RZIwlRI8,9107
167
201
  hud/tools/__init__.py,sha256=i6lE0GxYcPnlLLd-55ryCCHo7o9anC4RfqkuYFXvzMQ,1009
168
202
  hud/tools/base.py,sha256=IxpnEHfxUtgz1k_w-09l65KKpDV3tQu4WdF3nZDsdwU,17854
169
203
  hud/tools/bash.py,sha256=1jl7cpB1ApGXn7Hy8zghJ2fXugEol6UeN0aYUSiM2EQ,5189
@@ -177,10 +211,10 @@ hud/tools/computer/__init__.py,sha256=QCdQG94XmKTCSOVkJI2e7NOP4bfpyAEkgEI9RQ-zbg
177
211
  hud/tools/computer/anthropic.py,sha256=oJfNMnjNFAn9mW1xY1nbWnTY2IqwFqdDR0mWSf8lu-s,17352
178
212
  hud/tools/computer/hud.py,sha256=v2VdLMsc8-3J4_k2vpcZRr_RJzXsxdVNs6IfbCL-WTc,16466
179
213
  hud/tools/computer/openai.py,sha256=QEsF45LWOHftDrAoIOnCFZZT1cL--s-ArSov5aluWb8,11189
180
- hud/tools/computer/qwen.py,sha256=6qtSRfxevkuot0YRZEmElvyexVI_M27vobKIar1b0OU,18475
181
- hud/tools/computer/settings.py,sha256=GUvi9y3JtA2u-l1dkGcMH8kHSKOPlxTOnHaG0ocv_gI,3347
214
+ hud/tools/computer/qwen.py,sha256=K8FZfy664fQW6DXxeWTr2AorKIGxr9h_AeL-0vEYws8,18578
215
+ hud/tools/computer/settings.py,sha256=_8e05PlpxEeePoQlBxLBqwwlH3OZvwt80b6p2fBY4wE,3345
182
216
  hud/tools/executors/__init__.py,sha256=jHxfus9SLhkL6YGtebR5RyKYyVAix3yu5EkUp2Q27Kg,732
183
- hud/tools/executors/base.py,sha256=VP2SiIEBSXvklnkasGxVuy-OmDMd9rjuxZh_YuUQH7A,14481
217
+ hud/tools/executors/base.py,sha256=mF_aiVoVkasoUi8hDyEtXMWbHKd4imKeFFJLJmQsjSY,14636
184
218
  hud/tools/executors/pyautogui.py,sha256=Gw3x2yw7x9xJ1uhYLxkOkArPnUQagUN1AZgBZ7YgbWo,22362
185
219
  hud/tools/executors/xdo.py,sha256=UF53DbMX-bRGiHd-O7cCJmCrVaYuP83xiJggER7HcDk,18137
186
220
  hud/tools/executors/tests/__init__.py,sha256=opFpGSH6cEqIZgt9izXd3Yt85pC7xkxiYmOZQTHf4AY,32
@@ -202,30 +236,37 @@ hud/tools/tests/test_edit.py,sha256=pHw1MSs-P8mDKrwKUDW77vQfoMNwmbrEBt_MkKr2rE0,
202
236
  hud/tools/tests/test_init.py,sha256=fl4Tf4IUUFOKhdSRHu9GE4mkaTDiXw-2auxj4s84HuE,698
203
237
  hud/tools/tests/test_playwright_tool.py,sha256=TG0uieerc5wXq_JX66BLfXxphbSYGlDPhSbuoeizMu4,6737
204
238
  hud/tools/tests/test_response.py,sha256=pEv3p0k1reSKtjbA8xneu--OuCHydbHHl6YWorV4zOg,2212
239
+ hud/tools/tests/test_submit.py,sha256=7o4FDu5KJJ7AB0pRUVf37ZN25l5bdVbx7cbcTSr9SNE,2105
205
240
  hud/tools/tests/test_tools.py,sha256=paz28V98Am-oR7MBJPDgY-BRV14HQo_0F6X5JIC8aic,4563
206
241
  hud/tools/tests/test_tools_init.py,sha256=aOX9IKji-4ThHEiRYULa7YlIajP0lj3eFPjgzlEg9TI,1727
242
+ hud/tools/tests/test_types.py,sha256=cDtOTL9Ei3cxcuYMsBcsSQrvbpbYoA4u3uNgnNdM1Dg,5525
207
243
  hud/tools/tests/test_utils.py,sha256=qaujM1uyTMaKqWIeEgxty5GOFyfSUtrYCEHhmIazoy4,5500
208
244
  hud/utils/__init__.py,sha256=nk9Re6ls2RudAWnAHDWYbLG28AwNF4qMFYf5xQIJhQA,181
209
- hud/utils/agent_factories.py,sha256=cvfXByqG6gOYHtm1VGeJjCpxoLxM4aJez8rH-AerP_A,3186
245
+ hud/utils/agent_factories.py,sha256=f5MC13_C3hepxcRpRPSFeGq9wLyOSMEZ1duF3YwUfkI,3124
210
246
  hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
211
247
  hud/utils/group_eval.py,sha256=6yXEH8ZRKkR4bBy9-QWGmjlm2IbCnTUZppEFbjTvndY,8352
212
248
  hud/utils/hud_console.py,sha256=ms2lXk3ZhYNmpGb0Dn902SKJBYfqo8Aa9DzkkC-xGSI,23597
213
- hud/utils/mcp.py,sha256=pMadd7A0DH6Y_aWywKU8jVYu2pRHGPEndV2ZQFrrj60,2888
249
+ hud/utils/mcp.py,sha256=HHCOcYR84wq5JYa1sqC8AacB-Rmir6J8mbodakoj5j8,2892
214
250
  hud/utils/pretty_errors.py,sha256=WGeL4CTHtlA6KgPuV_JSX5l6H4-xbuTp6Y6tw1bkiFg,2430
215
251
  hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
252
+ hud/utils/task_tracking.py,sha256=QsW8UqVqyjz5tl_qi65SaulOz7Zc-8hQMbafpVESyeU,8113
216
253
  hud/utils/tasks.py,sha256=7i36ck84gz1GZxhn9jryMBvKgMmcvLVu1YH5n3Y23-c,4985
217
254
  hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
218
255
  hud/utils/tool_shorthand.py,sha256=_haLgK3yazLR2Y0jlEHUUQjw9uZCxi9yTipAwdOAJ70,2148
219
256
  hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
257
+ hud/utils/tests/test_agent_factories.py,sha256=-Lq9iVucTJeeaOVBRqIWjpFFGXzlymZUfSd665AjC_Q,2057
220
258
  hud/utils/tests/test_async_utils.py,sha256=RkdSnYErRV3Jn7dfg6CPlcE1RSUL__2B627oIqAyy1s,5945
221
259
  hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,383
222
- hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
260
+ hud/utils/tests/test_mcp.py,sha256=rPvwHkRibVAQp1T2DBaXnk8KkXNl4owCenrM7y3xN_s,3951
261
+ hud/utils/tests/test_pretty_errors.py,sha256=6OIxArgjQQTGk8DrUzT_Cy4IN6Ck6hMGYt2xVmyDyFY,6161
223
262
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
263
+ hud/utils/tests/test_tasks.py,sha256=Rbbm51vZxygyWlhjunFq4IfFPefVB3qevM9_CZSt5w4,5774
224
264
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
225
- hud/utils/tests/test_version.py,sha256=EWbn6slnmozIIbiU4n3_1OoQoDYU37t3mOo2QHpIl7w,160
265
+ hud/utils/tests/test_tool_shorthand.py,sha256=1p3j3D0G93OXHqnUXbvTs3G4A8awrPvwhPpLi6YPeOM,5458
266
+ hud/utils/tests/test_version.py,sha256=IbVarTMc0sYgCwFAdvyPewIFo_7D6vv5z5h3-9h5Hmc,160
226
267
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
227
- hud_python-0.4.51.dist-info/METADATA,sha256=4H8w-XvAHhtBJjP6kLlFEtUiXm4VcoR0zlahEzVPj7c,22275
228
- hud_python-0.4.51.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
229
- hud_python-0.4.51.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
230
- hud_python-0.4.51.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
231
- hud_python-0.4.51.dist-info/RECORD,,
268
+ hud_python-0.4.53.dist-info/METADATA,sha256=hfaAjbvY-3H6G8uyqnWteilpcGTOTy57SqdqTzC7bAw,22305
269
+ hud_python-0.4.53.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
270
+ hud_python-0.4.53.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
271
+ hud_python-0.4.53.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
272
+ hud_python-0.4.53.dist-info/RECORD,,