hud-python 0.4.21__py3-none-any.whl → 0.4.23__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 (63) hide show
  1. hud/agents/base.py +37 -37
  2. hud/agents/claude.py +11 -6
  3. hud/agents/grounded_openai.py +282 -0
  4. hud/agents/misc/response_agent.py +3 -2
  5. hud/agents/openai.py +2 -2
  6. hud/agents/openai_chat_generic.py +3 -1
  7. hud/agents/tests/test_client.py +6 -1
  8. hud/agents/tests/test_grounded_openai_agent.py +155 -0
  9. hud/cli/__init__.py +34 -24
  10. hud/cli/analyze.py +27 -26
  11. hud/cli/build.py +50 -46
  12. hud/cli/debug.py +7 -7
  13. hud/cli/dev.py +107 -99
  14. hud/cli/eval.py +33 -31
  15. hud/cli/hf.py +53 -53
  16. hud/cli/init.py +28 -28
  17. hud/cli/list_func.py +22 -22
  18. hud/cli/pull.py +36 -36
  19. hud/cli/push.py +76 -74
  20. hud/cli/remove.py +42 -40
  21. hud/cli/rl/__init__.py +2 -2
  22. hud/cli/rl/init.py +41 -41
  23. hud/cli/rl/pod.py +97 -91
  24. hud/cli/rl/ssh.py +42 -40
  25. hud/cli/rl/train.py +75 -73
  26. hud/cli/rl/utils.py +10 -10
  27. hud/cli/tests/test_analyze.py +1 -1
  28. hud/cli/tests/test_analyze_metadata.py +2 -2
  29. hud/cli/tests/test_pull.py +45 -45
  30. hud/cli/tests/test_push.py +31 -29
  31. hud/cli/tests/test_registry.py +15 -15
  32. hud/cli/utils/environment.py +11 -11
  33. hud/cli/utils/interactive.py +18 -18
  34. hud/cli/utils/logging.py +12 -12
  35. hud/cli/utils/metadata.py +12 -12
  36. hud/cli/utils/registry.py +5 -5
  37. hud/cli/utils/runner.py +23 -23
  38. hud/cli/utils/server.py +16 -16
  39. hud/settings.py +6 -0
  40. hud/shared/hints.py +7 -7
  41. hud/tools/executors/tests/test_base_executor.py +1 -1
  42. hud/tools/executors/xdo.py +1 -1
  43. hud/tools/grounding/__init__.py +13 -0
  44. hud/tools/grounding/config.py +54 -0
  45. hud/tools/grounding/grounded_tool.py +314 -0
  46. hud/tools/grounding/grounder.py +302 -0
  47. hud/tools/grounding/tests/__init__.py +1 -0
  48. hud/tools/grounding/tests/test_grounded_tool.py +196 -0
  49. hud/tools/tests/test_playwright_tool.py +1 -1
  50. hud/tools/tests/test_tools_init.py +1 -1
  51. hud/tools/tests/test_utils.py +2 -2
  52. hud/types.py +4 -4
  53. hud/utils/__init__.py +3 -3
  54. hud/utils/agent_factories.py +86 -0
  55. hud/utils/{design.py → hud_console.py} +39 -33
  56. hud/utils/pretty_errors.py +6 -6
  57. hud/utils/tests/test_version.py +1 -1
  58. hud/version.py +1 -1
  59. {hud_python-0.4.21.dist-info → hud_python-0.4.23.dist-info}/METADATA +3 -1
  60. {hud_python-0.4.21.dist-info → hud_python-0.4.23.dist-info}/RECORD +63 -54
  61. {hud_python-0.4.21.dist-info → hud_python-0.4.23.dist-info}/WHEEL +0 -0
  62. {hud_python-0.4.21.dist-info → hud_python-0.4.23.dist-info}/entry_points.txt +0 -0
  63. {hud_python-0.4.21.dist-info → hud_python-0.4.23.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
- """HUD Design System - Consistent styling utilities for CLI output.
1
+ """HUD Console Design System - Consistent styling utilities for CLI output.
2
2
 
3
3
  This module provides a unified design system for HUD CLI commands,
4
4
  ensuring consistent colors, formatting, and visual hierarchy across
@@ -6,10 +6,11 @@ all commands.
6
6
 
7
7
  Color Palette:
8
8
  - Gold (#c0960c): Primary brand color for headers and important elements
9
- - Black: Standard text and underlined links
10
- - Red: Errors and failures
11
- - Green: Success messages
12
- - Dim/Gray: Secondary information
9
+ - Neutral Grey: Standard text that works on both light and dark backgrounds
10
+ - Muted Red: Errors and failures
11
+ - Muted Green: Success messages
12
+ - Bright Black: Secondary/dimmed information
13
+ - Blue-Purple: Links and interactive elements
13
14
  """
14
15
 
15
16
  from __future__ import annotations
@@ -23,14 +24,16 @@ from rich.console import Console
23
24
  from rich.panel import Panel
24
25
  from rich.table import Table
25
26
 
26
- # HUD Brand Colors
27
- GOLD = "rgb(192,150,12)" # #c0960c
28
- RED = "red"
29
- GREEN = "green"
30
- DIM = "dim"
27
+ # HUD Brand Colors - Optimized for both light and dark modes
28
+ GOLD = "rgb(192,150,12)" # #c0960c - Primary brand color
29
+ RED = "rgb(220,50,47)" # Slightly muted red that works on both backgrounds
30
+ GREEN = "rgb(133,153,0)" # Slightly muted green that works on both backgrounds
31
+ DIM = "bright_black" # Grey that's visible on both light and dark backgrounds
32
+ TEXT = "bright_white" # Off-white that's readable on dark, not too bright on light
33
+ SECONDARY = "rgb(108,113,196)" # Muted blue-purple for secondary text
31
34
 
32
35
 
33
- class HUDDesign:
36
+ class HUDConsole:
34
37
  """Design system for HUD CLI output."""
35
38
 
36
39
  def __init__(self, logger: logging.Logger | None = None) -> None:
@@ -72,7 +75,7 @@ class HUDDesign:
72
75
  stderr: If True, output to stderr (default), otherwise stdout
73
76
  """
74
77
  console = self._stderr_console if stderr else self._stdout_console
75
- console.print(f"[{GREEN} not bold]✅ {message}[/{GREEN} not bold]")
78
+ console.print(f"[{GREEN}]✅ {message}[/{GREEN}]")
76
79
 
77
80
  def error(self, message: str, stderr: bool = True) -> None:
78
81
  """Print an error message.
@@ -82,7 +85,7 @@ class HUDDesign:
82
85
  stderr: If True, output to stderr (default), otherwise stdout
83
86
  """
84
87
  console = self._stderr_console if stderr else self._stdout_console
85
- console.print(f"[{RED} not bold]❌ {message}[/{RED} not bold]")
88
+ console.print(f"[{RED}]❌ {message}[/{RED}]")
86
89
 
87
90
  def warning(self, message: str, stderr: bool = True) -> None:
88
91
  """Print a warning message.
@@ -92,7 +95,7 @@ class HUDDesign:
92
95
  stderr: If True, output to stderr (default), otherwise stdout
93
96
  """
94
97
  console = self._stderr_console if stderr else self._stdout_console
95
- console.print(f"[yellow]⚠️ {message}[/yellow]")
98
+ console.print(f"[rgb(181,137,0)]⚠️ {message}[/rgb(181,137,0)]")
96
99
 
97
100
  def info(self, message: str, stderr: bool = True) -> None:
98
101
  """Print an info message.
@@ -102,7 +105,7 @@ class HUDDesign:
102
105
  stderr: If True, output to stderr (default), otherwise stdout
103
106
  """
104
107
  console = self._stderr_console if stderr else self._stdout_console
105
- console.print(f"[default not bold]{message}[/default not bold]")
108
+ console.print(f"[{TEXT}]{message}[/{TEXT}]")
106
109
 
107
110
  def print(self, message: str, stderr: bool = True) -> None:
108
111
  """Print a message.
@@ -123,7 +126,7 @@ class HUDDesign:
123
126
  stderr: If True, output to stderr (default), otherwise stdout
124
127
  """
125
128
  console = self._stderr_console if stderr else self._stdout_console
126
- console.print(f"[{DIM}]{label}[/{DIM}] [default]{value}[/default]")
129
+ console.print(f"[{DIM}]{label}[/{DIM}] [{TEXT}]{value}[/{TEXT}]")
127
130
 
128
131
  def link(self, url: str, stderr: bool = True) -> None:
129
132
  """Print an underlined link.
@@ -133,18 +136,18 @@ class HUDDesign:
133
136
  stderr: If True, output to stderr (default), otherwise stdout
134
137
  """
135
138
  console = self._stderr_console if stderr else self._stdout_console
136
- console.print(f"[default not bold underline]{url}[/default not bold underline]")
139
+ console.print(f"[{SECONDARY} underline]{url}[/{SECONDARY} underline]")
137
140
 
138
141
  def json_config(self, json_str: str, stderr: bool = True) -> None:
139
- """Print JSON configuration with light theme.
142
+ """Print JSON configuration with neutral theme.
140
143
 
141
144
  Args:
142
145
  json_str: JSON string to display
143
146
  stderr: If True, output to stderr (default), otherwise stdout
144
147
  """
145
- # Just print the JSON as plain text to avoid any syntax coloring
148
+ # Print JSON with neutral grey text
146
149
  console = self._stderr_console if stderr else self._stdout_console
147
- console.print(f"[default not bold]{json_str}[/default not bold]")
150
+ console.print(f"[{TEXT}]{json_str}[/{TEXT}]")
148
151
 
149
152
  def key_value_table(
150
153
  self, data: dict[str, str], show_header: bool = False, stderr: bool = True
@@ -174,7 +177,7 @@ class HUDDesign:
174
177
  stderr: If True, output to stderr (default), otherwise stdout
175
178
  """
176
179
  console = self._stderr_console if stderr else self._stdout_console
177
- console.print(f"[{DIM} not bold]{message}[/{DIM} not bold]")
180
+ console.print(f"[{DIM}]{message}[/{DIM}]")
178
181
 
179
182
  def phase(self, phase_num: int, title: str, stderr: bool = True) -> None:
180
183
  """Print a phase header (for debug command).
@@ -197,7 +200,7 @@ class HUDDesign:
197
200
  stderr: If True, output to stderr (default), otherwise stdout
198
201
  """
199
202
  console = self._stderr_console if stderr else self._stdout_console
200
- console.print(f"[bold]$ {' '.join(cmd)}[/bold]")
203
+ console.print(f"[bold {TEXT}]$ {' '.join(cmd)}[/bold {TEXT}]")
201
204
 
202
205
  def hint(self, hint: str, stderr: bool = True) -> None:
203
206
  """Print a hint message.
@@ -207,7 +210,7 @@ class HUDDesign:
207
210
  stderr: If True, output to stderr (default), otherwise stdout
208
211
  """
209
212
  console = self._stderr_console if stderr else self._stdout_console
210
- console.print(f"\n[yellow]💡 Hint: {hint}[/yellow]")
213
+ console.print(f"\n[rgb(181,137,0)]💡 Hint: {hint}[/rgb(181,137,0)]")
211
214
 
212
215
  def status_item(
213
216
  self,
@@ -227,8 +230,8 @@ class HUDDesign:
227
230
  stderr: If True, output to stderr (default), otherwise stdout
228
231
  """
229
232
  indicators = {
230
- "success": f"[{GREEN} not bold]✓[/{GREEN} not bold]",
231
- "error": f"[{RED} not bold]✗[/{RED} not bold]",
233
+ "success": f"[{GREEN}]✓[/{GREEN}]",
234
+ "error": f"[{RED}]✗[/{RED}]",
232
235
  "warning": "[yellow]⚠[/yellow]",
233
236
  "info": f"[{DIM}]•[/{DIM}]",
234
237
  }
@@ -237,9 +240,9 @@ class HUDDesign:
237
240
  console = self._stderr_console if stderr else self._stdout_console
238
241
 
239
242
  if primary:
240
- console.print(f"{indicator} {label}: [bold cyan]{value}[/bold cyan]")
243
+ console.print(f"{indicator} {label}: [bold {SECONDARY}]{value}[/bold {SECONDARY}]")
241
244
  else:
242
- console.print(f"{indicator} {label}: {value}")
245
+ console.print(f"{indicator} {label}: [{TEXT}]{value}[/{TEXT}]")
243
246
 
244
247
  def command_example(
245
248
  self, command: str, description: str | None = None, stderr: bool = True
@@ -253,9 +256,12 @@ class HUDDesign:
253
256
  """
254
257
  console = self._stderr_console if stderr else self._stdout_console
255
258
  if description:
256
- console.print(f" [cyan]{command}[/cyan] # {description}")
259
+ console.print(
260
+ f" [{SECONDARY}]{command}[/{SECONDARY}] "
261
+ f"[bright_black]# {description}[/bright_black]"
262
+ )
257
263
  else:
258
- console.print(f" [cyan]{command}[/cyan]")
264
+ console.print(f" [{SECONDARY}]{command}[/{SECONDARY}]")
259
265
 
260
266
  # Exception rendering utilities
261
267
  def render_support_hint(self, stderr: bool = True) -> None:
@@ -453,7 +459,7 @@ class HUDDesign:
453
459
  except (TypeError, ValueError):
454
460
  args_str = str(arguments)[:60]
455
461
 
456
- return f"[{GOLD}]→[/{GOLD}] [bold]{name}[/bold][{DIM}]({args_str})[/{DIM}]"
462
+ return f"[{GOLD}]→[/{GOLD}] [bold {TEXT}]{name}[/bold {TEXT}][{DIM}]({args_str})[/{DIM}]"
457
463
 
458
464
  def format_tool_result(self, content: str, is_error: bool = False) -> str:
459
465
  """Format a tool result in compact HUD style.
@@ -473,8 +479,8 @@ class HUDDesign:
473
479
  if is_error:
474
480
  return f" [{RED}]✗[/{RED}] [{DIM}]{content}[/{DIM}]"
475
481
  else:
476
- return f" [{GREEN}]✓[/{GREEN}] {content}"
482
+ return f" [{GREEN}]✓[/{GREEN}] [{TEXT}]{content}[/{TEXT}]"
477
483
 
478
484
 
479
- # Global design instance for convenience
480
- design = HUDDesign()
485
+ # Global hud_console instance for convenience
486
+ hud_console = HUDConsole()
@@ -5,7 +5,7 @@ import logging
5
5
  import sys
6
6
  from typing import Any
7
7
 
8
- from hud.utils.design import design
8
+ from hud.utils.hud_console import hud_console
9
9
 
10
10
  logger = logging.getLogger(__name__)
11
11
 
@@ -27,8 +27,8 @@ def _render_and_fallback(exc_type: type[BaseException], value: BaseException, tb
27
27
  # Flush stderr to ensure traceback is printed first
28
28
  sys.stderr.flush()
29
29
  # Add separator and render our formatted error
30
- design.console.print("")
31
- design.render_exception(value)
30
+ hud_console.console.print("")
31
+ hud_console.render_exception(value)
32
32
  except Exception:
33
33
  # If rendering fails for any reason, silently continue
34
34
  logger.warning("Failed to render exception: %s, %s, %s", exc_type, value, tb)
@@ -39,10 +39,10 @@ def _async_exception_handler(loop: asyncio.AbstractEventLoop, context: dict[str,
39
39
  msg = context.get("message")
40
40
  try:
41
41
  if exc is not None:
42
- design.render_exception(exc)
42
+ hud_console.render_exception(exc)
43
43
  elif msg:
44
- design.error(msg)
45
- design.render_support_hint()
44
+ hud_console.error(msg)
45
+ hud_console.render_support_hint()
46
46
  except Exception:
47
47
  logger.warning("Failed to render exception: %s, %s, %s", exc, msg, context)
48
48
 
@@ -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.21"
8
+ assert hud.__version__ == "0.4.23"
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.21"
7
+ __version__ = "0.4.23"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.21
3
+ Version: 0.4.23
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
@@ -66,6 +66,7 @@ Requires-Dist: langchain-anthropic; extra == 'agent'
66
66
  Requires-Dist: langchain-openai; extra == 'agent'
67
67
  Requires-Dist: numpy>=1.24.0; extra == 'agent'
68
68
  Requires-Dist: openai; extra == 'agent'
69
+ Requires-Dist: pillow>=11.1.0; extra == 'agent'
69
70
  Provides-Extra: agents
70
71
  Requires-Dist: anthropic; extra == 'agents'
71
72
  Requires-Dist: datasets>=2.14.0; extra == 'agents'
@@ -79,6 +80,7 @@ Requires-Dist: langchain-anthropic; extra == 'agents'
79
80
  Requires-Dist: langchain-openai; extra == 'agents'
80
81
  Requires-Dist: numpy>=1.24.0; extra == 'agents'
81
82
  Requires-Dist: openai; extra == 'agents'
83
+ Requires-Dist: pillow>=11.1.0; extra == 'agents'
82
84
  Provides-Extra: dev
83
85
  Requires-Dist: aiodocker>=0.24.0; extra == 'dev'
84
86
  Requires-Dist: anthropic; extra == 'dev'
@@ -1,45 +1,47 @@
1
1
  hud/__init__.py,sha256=KU7G-_Mj6Mjf7trXA6X0ufN6QUmqhVi19NKbnNIvD74,532
2
2
  hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
3
- hud/settings.py,sha256=q9aZiHjvbL4oLE-N8AttTW4rmzS8zPMnsca-iMGyEGc,2362
4
- hud/types.py,sha256=DDK7-jcoI0iZbyIOfXlGJy9MpHAGcw_4napLs-v-8vY,6077
5
- hud/version.py,sha256=888JgQ-gt1NqBeShBZC3JqfOBDr4dkkOuQ33EZpv7yA,105
3
+ hud/settings.py,sha256=bgq_zstNGlan7UDZOiElY8Aw5ZU4xL7Ds5HP_Xzph1A,2535
4
+ hud/types.py,sha256=jta4Hgj_rBdIMcf7mz0tsdgfA1pssp327bxcT6Mfp00,6107
5
+ hud/version.py,sha256=5rH72_P2FBJH7JH3nuYeXSXzeAEZoA-JgfNAoljtscY,105
6
6
  hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
7
- hud/agents/base.py,sha256=2kZ8KOuNk_RQGqE7MvdMPm_jrlAkiaNNBz1tEW0Uxpg,30937
8
- hud/agents/claude.py,sha256=upWnGGwLz88k8i6zg0A6l1rK7DSTwJEU8pRevnR3irc,15314
7
+ hud/agents/base.py,sha256=qkTj0bnlFDs9OA4A3g1kKyVaDaRtPSVB_HzOIV4DpVw,30980
8
+ hud/agents/claude.py,sha256=Ixc05qg-r0H1OoC_DE5Ov6RtODWp7uJcTJJqpmoIob0,15478
9
+ hud/agents/grounded_openai.py,sha256=U-FHjB2Nh1_o0gmlxY5F17lWJ3oHsNRIB2a7z-IKB64,11231
9
10
  hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
10
- hud/agents/openai.py,sha256=tvFYsZ5yaoLkfjMnHe-COxRttMsLRXBLPdSqgeipQRk,14257
11
- hud/agents/openai_chat_generic.py,sha256=PQAD4GGE6sHs8R95qpgDBHEbSOJ7WXCYGYFmd3Nic1g,10628
11
+ hud/agents/openai.py,sha256=ovARRWNuHqKkZ2Q_OCYSVCIZckrh8XY2jUB2p2x1m88,14259
12
+ hud/agents/openai_chat_generic.py,sha256=BDtMQnf9ddYN4fKy-CN9IotLyYvHGdZqjju5PODEnU4,10683
12
13
  hud/agents/misc/__init__.py,sha256=BYi4Ytp9b_vycpZFXnr5Oyw6ncKLNNGml8Jrb7bWUb4,136
13
- hud/agents/misc/response_agent.py,sha256=pnaomb4H-QJm1YKU3tC1YnZXxOlDbTHIXaIH-6Nkb6I,3102
14
+ hud/agents/misc/response_agent.py,sha256=tdyRI-4A1iECW5NBA-dIJwDHhXgTi6W7FHhe--SHvMQ,3150
14
15
  hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
15
16
  hud/agents/tests/test_base.py,sha256=F39ajSqASGUbPyPoWSY9KARFav62qNTK74W11Tr1Tg4,28970
16
17
  hud/agents/tests/test_claude.py,sha256=wqEKlzEvx8obz1sSm4NY0j-Zyt1qWNfDOmRqYIuAEd0,13069
17
- hud/agents/tests/test_client.py,sha256=fZoT22awa-Q84kAZ0CGiFGLNDEjBQ75rf6lImmVDsoQ,13120
18
+ hud/agents/tests/test_client.py,sha256=uikgh6yhjPPX2RBU4XJQMz1mNox9uXjuwsP8t93id18,13337
19
+ hud/agents/tests/test_grounded_openai_agent.py,sha256=VK8lUvHIjWicMX00VKPE-FZyjiJqTEhb80MuRRa9fVc,5437
18
20
  hud/agents/tests/test_openai.py,sha256=lhHowQyLp09oDVwBUjUECoPeH01F16i4O9YIHeugK6E,7028
19
- hud/cli/__init__.py,sha256=W4McbKAvs8cMIYlruzjV8Z_nxkmOK9ktYWP-WBnD6xo,35804
21
+ hud/cli/__init__.py,sha256=-32_tNDsFc38AMAvJFcHg38EVS5PN3n6pjW7eN2Nxj4,36259
20
22
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
21
- hud/cli/analyze.py,sha256=DngDPM53DHZn8gFndz8d7hCIOUwB4tqtYEii6AGFIZk,14393
22
- hud/cli/build.py,sha256=_3rNFhNDNAChE95Ou5AqblVfD6QlUwKtcpgrPFChuq8,17742
23
+ hud/cli/analyze.py,sha256=4u5oYfJMquOjT9PzzRTYVcTZDxDi0ilNP_g532_hpOU,14716
24
+ hud/cli/build.py,sha256=SsZLQKYyMvIikLaSPYmg7-S1iJn-KkWXURhniQ0Ifi8,18015
23
25
  hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
24
- hud/cli/debug.py,sha256=FNzg9-_ZzUJA1nJfubmop7_2OT5mqnWsdpZyi4AVSXA,14163
25
- hud/cli/dev.py,sha256=R7YJWIZCUURXzs8ovOCF9V1FwOhsAJT5D3mZQkFmTI4,31134
26
- hud/cli/eval.py,sha256=v_uvzkS-J_dsxzVqszPkotOfUsNoq501-Ygdqi9BhKA,15770
27
- hud/cli/hf.py,sha256=EYWL-fEN9SS2QJYU7iIBXs0qa9JIvmMWOMh9a8Ewt9s,15179
28
- hud/cli/init.py,sha256=7Yqp3gUVmK-vVE_6A9RKhZlSTlwxxb2ylJn1H22TYSY,19573
29
- hud/cli/list_func.py,sha256=ENxLL4X5uuqAASWZdQuI0k-tEzmlhUn5LATgz3QPQqQ,7065
30
- hud/cli/pull.py,sha256=JHwCwUwRO0Nzbgm9mkjsz6EpxbxgwQVhgNSY64nNZ-s,11969
31
- hud/cli/push.py,sha256=KFuykjmBVTInjEKmV7BaMwu9n6BYT9GUgkzZ9J7r6gQ,17966
32
- hud/cli/remove.py,sha256=USAvB6pbMA3jd19xUtLEBiMsklVTEfE2Maw9nYcpSAE,6619
26
+ hud/cli/debug.py,sha256=jtFW8J5F_3rhq1Hf1_SkJ7aLS3wjnyIs_LsC8k5cnzc,14200
27
+ hud/cli/dev.py,sha256=-T7s3aiEq0X_lA6xQHOP4evvgP2wO76OYdsL7eeVmJ8,31740
28
+ hud/cli/eval.py,sha256=1Kifhr3tm2Md3r_lC1P9ET93P_eEB3is3MFu_Hg9GH4,15947
29
+ hud/cli/hf.py,sha256=wbHNXEI5K17cA9micfeVG4KRbUiI3MymLKI7TO-tW5E,15446
30
+ hud/cli/init.py,sha256=XswZB2ZnzdE0pxP1kRmO3bHfWGCrKAyrME34ZyPzs98,19715
31
+ hud/cli/list_func.py,sha256=EVi2Vc3Lb3glBNJxFx4MPnZknZ4xmuJz1OFg_dc8a_E,7177
32
+ hud/cli/pull.py,sha256=Vd1l1-IwskyACzhtC8Df1SYINUZEYmFxrLl0s9cNN6c,12151
33
+ hud/cli/push.py,sha256=JXUxu1QGU7BPWb0erSJq42CIq0sLbaDAO42yYDcvA1g,18347
34
+ hud/cli/remove.py,sha256=8vGQyXDqgtjz85_vtusoIG8zurH4RHz6z8UMevQRYM4,6861
33
35
  hud/cli/rl/README.md,sha256=3pqRZMrnwD-lJwWGCCNZNhGdZG6zyydLBOer0e8BkLw,5983
34
- hud/cli/rl/__init__.py,sha256=g_Crqn5o0m9xANrTOkQZENWVlwHAV6MWiobte-FfqiY,3412
35
- hud/cli/rl/init.py,sha256=GXVOXLrX8CVAgpJ1pHuk6Y6oujbh46Rtz8kG18jGzk8,13789
36
- hud/cli/rl/pod.py,sha256=ZiXI-RG9YsnKx1EWzufcqklBdaD_d6XFtD45a0H8KpM,18837
37
- hud/cli/rl/ssh.py,sha256=bHAieonseJPON7P1mwB2GPWKLDlLZuvQniONmr5ZfcE,11523
38
- hud/cli/rl/train.py,sha256=sjY4J0TCp8647kzuIHyEeIsFVGtE0tllT0GzhkPPrWY,19895
39
- hud/cli/rl/utils.py,sha256=ZW3sjl5KaHZaOCjAbut_QIpQvxgzlxjPGuM6fuYkU9I,4836
36
+ hud/cli/rl/__init__.py,sha256=PISQwpkMX9JQYMBK5j8ziP8vbLit6Sh1b7a94MgogBU,3424
37
+ hud/cli/rl/init.py,sha256=xm2hQisL1VVOnKu7cjOuEadwMnqHQjlr5ekbzoAd6dA,13996
38
+ hud/cli/rl/pod.py,sha256=601aiVhUI7ihempzBW-KFqbuU4RFJT0PZAzE5OVFEX4,19411
39
+ hud/cli/rl/ssh.py,sha256=cUsw_tUuuSJlYaQJSzdDQeixGoVwx3GvKYZIPkQOp1U,11755
40
+ hud/cli/rl/train.py,sha256=YyUSVjRtq1Sqg7zvKMdUupbE9eQ5unZOOldw4JLAv8M,20284
41
+ hud/cli/rl/utils.py,sha256=V28ihGb02bwYEYnvLJOYVMQSIiEGM1KjDJBr8Tkbn5I,4888
40
42
  hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
41
- hud/cli/tests/test_analyze.py,sha256=SwxvRlnw-VaEwKN2nd1FJAxfhieujPjh7PdQh_LYJ5E,11050
42
- hud/cli/tests/test_analyze_metadata.py,sha256=s-N-ETJECloiNQhdnZrfvxDI4pWBI8hl8edQNSRaw14,9982
43
+ hud/cli/tests/test_analyze.py,sha256=inbRvi7KJKoMYrcqXU6RSayoh7mAOGVrRknm6BLQFes,11055
44
+ hud/cli/tests/test_analyze_metadata.py,sha256=PqeovqpPIitu3YkQ7LvzD9potNxoU_KvDXH4_-lvYFs,9992
43
45
  hud/cli/tests/test_build.py,sha256=9B_-jkCDMsNNn087SWbPEJVsbD_D1u5Mv1gBIySPuhU,14409
44
46
  hud/cli/tests/test_cli_init.py,sha256=_H0bAn5_skJ91Zj8P5P_wtZoPWvrN7jMhPZvmnnf0n8,11289
45
47
  hud/cli/tests/test_cli_main.py,sha256=0wMho9p9NcGjp0jLiUtCQh_FYdbMaCJtSY3sBbSgPwA,697
@@ -49,21 +51,21 @@ hud/cli/tests/test_debug.py,sha256=bQ76d_0HJfthHBSECmGNv499ZE57CIOKsanMlNfNHGk,1
49
51
  hud/cli/tests/test_list_func.py,sha256=pkG4TtJJBMi9Xk8KBNFBlGcam7kwz01IRsjfQBL2PxM,10700
50
52
  hud/cli/tests/test_main_module.py,sha256=6RhwCcdRSN2uQV6-adti40ZcLd3u-mPR1ai6wL64c6Y,1105
51
53
  hud/cli/tests/test_mcp_server.py,sha256=wLFkDOR22FuBe3kIdYeLG7H81HHiorKB8kXRubftLpU,4316
52
- hud/cli/tests/test_pull.py,sha256=7wHxdf_rN3LDmo554-S63WT6eoYUquwDWpjgoy_f1eQ,12923
53
- hud/cli/tests/test_push.py,sha256=ixuqb39Q1A-GJGjnELYifIYBU9lIWCM1q7s_gjUEhYE,12709
54
- hud/cli/tests/test_registry.py,sha256=mTfgr6fkY5ygRnSgbVU7988QRQKdpEKUpWmQicGnHGs,9461
54
+ hud/cli/tests/test_pull.py,sha256=ToSJrlfn13pYnrWWt3W_S7qFFjwvoZC2UisrZVrxujo,13155
55
+ hud/cli/tests/test_push.py,sha256=V71KP5gEDo7Z9ccFpjidBjYliFg_KCfnZoZYbBXjguE,12875
56
+ hud/cli/tests/test_registry.py,sha256=-o9MvQTcBElteqrg0XW8Bg59KrHCt88ZyPqeaAlyyTg,9539
55
57
  hud/cli/tests/test_utils.py,sha256=_oa2lTvgqJxXe0Mtovxb8x-Sug-f6oJJKvG67r5pFtA,13474
56
58
  hud/cli/utils/__init__.py,sha256=L6s0oNzY2LugGp9faodCPnjzM-ZUorUH05-HmYOq5hY,35
57
59
  hud/cli/utils/cursor.py,sha256=fy850p0rVp5k_1wwOCI7rK1SggbselJrywFInSQ2gio,3009
58
60
  hud/cli/utils/docker.py,sha256=VTUcoPqxh3uXOgvL6NSqYiSDhyCPRp3jTfFbnIDwumg,3774
59
- hud/cli/utils/environment.py,sha256=-Z8UkXlRpdGsBkjw-x1EJ2IwcSCrlWaaf25ZoPDMrtw,4225
60
- hud/cli/utils/interactive.py,sha256=QiKL14rRdzuU_wBgCYEoA3JVMO6eJUezAZxX0GjZKRU,16526
61
- hud/cli/utils/logging.py,sha256=ZgjjKVPAa7dcfJ6SMBrdfZ63d1UnnhYC-zeh7gFBXsI,8841
62
- hud/cli/utils/metadata.py,sha256=VBvNNqHS5-sH97H3PhVmdOcyzZ2NGH47fVUUtHBoGLQ,7808
63
- hud/cli/utils/registry.py,sha256=N49cDHOWDp85EawIhQFQItt-yvFZpfLm74m8l4-LQy4,4349
61
+ hud/cli/utils/environment.py,sha256=y_c0ohxWrM054ZKid0KOQPzs2M2vh985AsumPG2wTPc,4282
62
+ hud/cli/utils/interactive.py,sha256=tcwp9HkAyr2_GiM3Raba4h0P_OgCksQKram80BucPo4,16546
63
+ hud/cli/utils/logging.py,sha256=DyOWuzZUg6HeKCqfs6ufb703XS3bW4G2pzaXVAvDqvA,9018
64
+ hud/cli/utils/metadata.py,sha256=G9UvP9zclnu-oVvYg3yc4Sr0TH88jx4XV1Ai8f5CG6g,7870
65
+ hud/cli/utils/registry.py,sha256=p6IaWmhUbf0Yh6aGa3jIPoSFT2uJPTOVBLS0jpKDUqc,4376
64
66
  hud/cli/utils/remote_runner.py,sha256=50Fqp7LG9dwiDyNM-LspNiKrSHmEo00C_Iuu5jg9mXU,9407
65
- hud/cli/utils/runner.py,sha256=qZI1lFNZIFn6d919awUkMtjQ36TfhAvyqGRzQmkal8c,4269
66
- hud/cli/utils/server.py,sha256=uSx2DjG5vX-PFoD8zNH-gBHbkTNSHveFSVdAfmp09Tc,7341
67
+ hud/cli/utils/runner.py,sha256=7HxVGa6OTflQnO0FSuRs273wnAmbm7cFRU9RTGL3-Wo,4390
68
+ hud/cli/utils/server.py,sha256=EE5DJ0RAmXCEjMcZycpAsAxxCj6sOdIsXqPh38kK2ew,7416
67
69
  hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
68
70
  hud/clients/__init__.py,sha256=N5M_gZv4nP7dLRwpAiaqqaxyaLieGW6397FszeG7JGw,364
69
71
  hud/clients/base.py,sha256=vt9mRMZwZg2DtVxQmccR_VZZGamXhx3dvlFJPulbOd8,14131
@@ -105,7 +107,7 @@ hud/server/helper/__init__.py,sha256=ZxO8VP3RZEBBp-q65VixuhzQgqEPSVzW0hEY9J9QqDA
105
107
  hud/server/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
106
108
  hud/shared/__init__.py,sha256=IPxPCqtPLguryN-nBq78Sakypw2bRiE2iHv3SXG8YRk,139
107
109
  hud/shared/exceptions.py,sha256=dhmt5KMciQ2fmV-yqXtTNO868k-WzuZae6w7dOk3M44,12144
108
- hud/shared/hints.py,sha256=UdJyGmizk0fz8QZqkRJVvQGlxalBsEzumu7h9pP_2kA,5009
110
+ hud/shared/hints.py,sha256=XD-Ck9Utz0gZ6lZ3-eB4AROgbc4llSoyNe1ZbmPCTx0,5049
109
111
  hud/shared/requests.py,sha256=HWrPp7nBSK4jhv9wqZdFiNrVaaxV0vWS8fcgGtoztBc,9479
110
112
  hud/shared/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
113
  hud/shared/tests/test_exceptions.py,sha256=bCKGqw2RwBmlGIMNpddzyfnWAOQwSIYB76r6iaBE2is,15761
@@ -135,10 +137,16 @@ hud/tools/computer/settings.py,sha256=b1XJsEQjB9qhN1xHfVENATkzinEebe0ZPyLzMgCGkK
135
137
  hud/tools/executors/__init__.py,sha256=jHxfus9SLhkL6YGtebR5RyKYyVAix3yu5EkUp2Q27Kg,732
136
138
  hud/tools/executors/base.py,sha256=VP2SiIEBSXvklnkasGxVuy-OmDMd9rjuxZh_YuUQH7A,14481
137
139
  hud/tools/executors/pyautogui.py,sha256=11eUQJAgFmHxwd9INAb2L9tgBmEv2Vgn0cwhwvGKlC8,22361
138
- hud/tools/executors/xdo.py,sha256=vc3ciSojmJ58HoL1VC2MC-F_KFrk4_YQHmoJp4rgv1k,18136
140
+ hud/tools/executors/xdo.py,sha256=UF53DbMX-bRGiHd-O7cCJmCrVaYuP83xiJggER7HcDk,18137
139
141
  hud/tools/executors/tests/__init__.py,sha256=opFpGSH6cEqIZgt9izXd3Yt85pC7xkxiYmOZQTHf4AY,32
140
- hud/tools/executors/tests/test_base_executor.py,sha256=crTXzxsMF7cnUihCpTzpqOYSjXpZWMj-nofcqC4Nu8U,13548
142
+ hud/tools/executors/tests/test_base_executor.py,sha256=ovh99to5jbQfrCKfCUnDbY-q3oDk_cMmHOVSv7Sn02E,13549
141
143
  hud/tools/executors/tests/test_pyautogui_executor.py,sha256=Shv6pnWtlsMXBMlN5DjlttCu6rZ1H447d1QZumduOnU,6640
144
+ hud/tools/grounding/__init__.py,sha256=oazR_qTJqkeGtjy_0w1QW58PQ872PkVwtYI-v2KIX3k,311
145
+ hud/tools/grounding/config.py,sha256=Vsd5ASDZFL7kW7toKkgrYN5D-ZV6ovKZyX4nxRrHvRs,1869
146
+ hud/tools/grounding/grounded_tool.py,sha256=L3O8FzpDoC8ZrnT0xkjlUwAkg7mAbnhK3ju0nE2zCiQ,12679
147
+ hud/tools/grounding/grounder.py,sha256=eKuKKraamXnwwY3oVRNeXreb6NqvMgt-v34B-coc868,11069
148
+ hud/tools/grounding/tests/__init__.py,sha256=jLw4nmvvvZu2ln2_yEUUKg72IewQ4HaXCUWJuX3ECZY,33
149
+ hud/tools/grounding/tests/test_grounded_tool.py,sha256=kr-wOOJZcfdYfhRSNFnhv8EuIsjbwgHDQbUSH9WnxMw,6446
142
150
  hud/tools/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
143
151
  hud/tools/tests/test_base.py,sha256=m6EelJ47F_hMqvRjrr6vEdiW1AtLgz3ZH1V1IUzTxzI,8983
144
152
  hud/tools/tests/test_bash.py,sha256=-g9a6sYgKKXRXmqYGYQBgpKEF_OlKE_uDDQXYMx6rT0,5113
@@ -147,16 +155,17 @@ hud/tools/tests/test_computer.py,sha256=BmrX2PV3wzHC4-xPJnWvenDV_kWt8LF8ia0kELBg
147
155
  hud/tools/tests/test_computer_actions.py,sha256=YtUNFL7anhpXrcvg8EoUY1CqIV-TAAyaNFLZO9CiJ40,1194
148
156
  hud/tools/tests/test_edit.py,sha256=pHw1MSs-P8mDKrwKUDW77vQfoMNwmbrEBt_MkKr2rE0,9734
149
157
  hud/tools/tests/test_init.py,sha256=fl4Tf4IUUFOKhdSRHu9GE4mkaTDiXw-2auxj4s84HuE,698
150
- hud/tools/tests/test_playwright_tool.py,sha256=0va9IuZ7P5vXZDzan_sn-89ahu3piQMQDaiREzEvXNc,6736
158
+ hud/tools/tests/test_playwright_tool.py,sha256=TG0uieerc5wXq_JX66BLfXxphbSYGlDPhSbuoeizMu4,6737
151
159
  hud/tools/tests/test_response.py,sha256=pEv3p0k1reSKtjbA8xneu--OuCHydbHHl6YWorV4zOg,2212
152
160
  hud/tools/tests/test_tools.py,sha256=paz28V98Am-oR7MBJPDgY-BRV14HQo_0F6X5JIC8aic,4563
153
- hud/tools/tests/test_tools_init.py,sha256=qbUCNWbswlkbsSJR-CBnRk_h_l1CLasRffIhp8tMG84,1726
154
- hud/tools/tests/test_utils.py,sha256=oYxEnLpSA5sEeYFGUTj74QRNv0AHP3AjmYYHXgIW0BY,5496
155
- hud/utils/__init__.py,sha256=ckuIzwqgTxkzASa04XTPsOu_TqsRYUKBWUYfcSi3Xnc,164
161
+ hud/tools/tests/test_tools_init.py,sha256=aOX9IKji-4ThHEiRYULa7YlIajP0lj3eFPjgzlEg9TI,1727
162
+ hud/tools/tests/test_utils.py,sha256=qaujM1uyTMaKqWIeEgxty5GOFyfSUtrYCEHhmIazoy4,5500
163
+ hud/utils/__init__.py,sha256=nk9Re6ls2RudAWnAHDWYbLG28AwNF4qMFYf5xQIJhQA,181
164
+ hud/utils/agent_factories.py,sha256=cvfXByqG6gOYHtm1VGeJjCpxoLxM4aJez8rH-AerP_A,3186
156
165
  hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
157
- hud/utils/design.py,sha256=Ymz29qdgqmnXCupDmASCqgkoW8fS6_cg5COXiFUUl50,17621
166
+ hud/utils/hud_console.py,sha256=1JlIphJNtqS2cm4DsuQnvD0dJgyYD1Kf7575vPO0fz4,18202
158
167
  hud/utils/mcp.py,sha256=jvCWb5MXlMMObhrbYoiTlI-L9HNkEjLVx8GJ-HbdQ7U,2626
159
- hud/utils/pretty_errors.py,sha256=M4mEzzyB-ZbqbX8KQmlBTtoc2q7OBKzFYvkXgVBcj6o,2395
168
+ hud/utils/pretty_errors.py,sha256=WGeL4CTHtlA6KgPuV_JSX5l6H4-xbuTp6Y6tw1bkiFg,2430
160
169
  hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
161
170
  hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
162
171
  hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -165,10 +174,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
165
174
  hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
166
175
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
167
176
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
168
- hud/utils/tests/test_version.py,sha256=5ReSod83u8tP-ZJBhZwzeY-rFMhIy8Mpt-zP-v7YeEA,160
177
+ hud/utils/tests/test_version.py,sha256=IWI4m88C4T_FrgySB42WwPuaGnc3Smpe9QddpcNoOIc,160
169
178
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
- hud_python-0.4.21.dist-info/METADATA,sha256=Np2Ririw3UDdAAiaOIa0QSyDdYdjjAypm25ZoSK8KPg,20142
171
- hud_python-0.4.21.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
172
- hud_python-0.4.21.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
173
- hud_python-0.4.21.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
174
- hud_python-0.4.21.dist-info/RECORD,,
179
+ hud_python-0.4.23.dist-info/METADATA,sha256=iQt7VOpj3uXIcsbAHXdv4Vu3KNgm194i5mi7jrbuvJg,20239
180
+ hud_python-0.4.23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
181
+ hud_python-0.4.23.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
182
+ hud_python-0.4.23.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
183
+ hud_python-0.4.23.dist-info/RECORD,,