hud-python 0.4.22__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 (48) hide show
  1. hud/agents/base.py +37 -39
  2. hud/agents/grounded_openai.py +3 -1
  3. hud/agents/misc/response_agent.py +3 -2
  4. hud/agents/openai.py +2 -2
  5. hud/agents/openai_chat_generic.py +3 -1
  6. hud/cli/__init__.py +34 -24
  7. hud/cli/analyze.py +27 -26
  8. hud/cli/build.py +50 -46
  9. hud/cli/debug.py +7 -7
  10. hud/cli/dev.py +107 -99
  11. hud/cli/eval.py +31 -29
  12. hud/cli/hf.py +53 -53
  13. hud/cli/init.py +28 -28
  14. hud/cli/list_func.py +22 -22
  15. hud/cli/pull.py +36 -36
  16. hud/cli/push.py +76 -74
  17. hud/cli/remove.py +42 -40
  18. hud/cli/rl/__init__.py +2 -2
  19. hud/cli/rl/init.py +41 -41
  20. hud/cli/rl/pod.py +97 -91
  21. hud/cli/rl/ssh.py +42 -40
  22. hud/cli/rl/train.py +75 -73
  23. hud/cli/rl/utils.py +10 -10
  24. hud/cli/tests/test_analyze.py +1 -1
  25. hud/cli/tests/test_analyze_metadata.py +2 -2
  26. hud/cli/tests/test_pull.py +45 -45
  27. hud/cli/tests/test_push.py +31 -29
  28. hud/cli/tests/test_registry.py +15 -15
  29. hud/cli/utils/environment.py +11 -11
  30. hud/cli/utils/interactive.py +17 -17
  31. hud/cli/utils/logging.py +12 -12
  32. hud/cli/utils/metadata.py +12 -12
  33. hud/cli/utils/registry.py +5 -5
  34. hud/cli/utils/runner.py +23 -23
  35. hud/cli/utils/server.py +16 -16
  36. hud/shared/hints.py +7 -7
  37. hud/tools/grounding/grounder.py +2 -1
  38. hud/types.py +4 -4
  39. hud/utils/__init__.py +3 -3
  40. hud/utils/{design.py → hud_console.py} +39 -33
  41. hud/utils/pretty_errors.py +6 -6
  42. hud/utils/tests/test_version.py +1 -1
  43. hud/version.py +1 -1
  44. {hud_python-0.4.22.dist-info → hud_python-0.4.23.dist-info}/METADATA +3 -1
  45. {hud_python-0.4.22.dist-info → hud_python-0.4.23.dist-info}/RECORD +48 -48
  46. {hud_python-0.4.22.dist-info → hud_python-0.4.23.dist-info}/WHEEL +0 -0
  47. {hud_python-0.4.22.dist-info → hud_python-0.4.23.dist-info}/entry_points.txt +0 -0
  48. {hud_python-0.4.22.dist-info → hud_python-0.4.23.dist-info}/licenses/LICENSE +0 -0
hud/shared/hints.py CHANGED
@@ -144,9 +144,9 @@ def render_hints(hints: Iterable[Hint] | None, *, design: Any | None = None) ->
144
144
 
145
145
  try:
146
146
  if design is None:
147
- from hud.utils.design import design as default_design # lazy import
147
+ from hud.utils.hud_console import hud_console as default_design # lazy import
148
148
 
149
- design = default_design
149
+ hud_console = default_design
150
150
  except Exception:
151
151
  # If design is unavailable (non-CLI contexts), silently skip rendering
152
152
  return
@@ -155,23 +155,23 @@ def render_hints(hints: Iterable[Hint] | None, *, design: Any | None = None) ->
155
155
  try:
156
156
  # Compact rendering - skip title if same as message
157
157
  if hint.title and hint.title != hint.message:
158
- design.warning(f"{hint.title}: {hint.message}")
158
+ hud_console.warning(f"{hint.title}: {hint.message}")
159
159
  else:
160
- design.warning(hint.message)
160
+ hud_console.warning(hint.message)
161
161
 
162
162
  # Tips as bullet points
163
163
  if hint.tips:
164
164
  for tip in hint.tips:
165
- design.info(f" • {tip}")
165
+ hud_console.info(f" • {tip}")
166
166
 
167
167
  # Only show command examples if provided
168
168
  if hint.command_examples:
169
169
  for cmd in hint.command_examples:
170
- design.command_example(cmd)
170
+ hud_console.command_example(cmd)
171
171
 
172
172
  # Only show docs URL if provided
173
173
  if hint.docs_url:
174
- design.link(hint.docs_url)
174
+ hud_console.link(hint.docs_url)
175
175
  except Exception:
176
176
  logger.warning("Failed to render hint: %s", hint)
177
177
  continue
@@ -9,7 +9,6 @@ import re
9
9
 
10
10
  from openai import AsyncOpenAI
11
11
  from opentelemetry import trace
12
- from PIL import Image
13
12
 
14
13
  from hud import instrument
15
14
  from hud.tools.grounding.config import GrounderConfig # noqa: TC001
@@ -45,6 +44,8 @@ class Grounder:
45
44
  (processed_width, processed_height))
46
45
  """
47
46
  # Decode image
47
+ from PIL import Image
48
+
48
49
  image_bytes = base64.b64decode(image_b64)
49
50
  img = Image.open(io.BytesIO(image_bytes))
50
51
  original_size = (img.width, img.height)
hud/types.py CHANGED
@@ -29,9 +29,9 @@ class MCPToolCall(CallToolRequestParams):
29
29
 
30
30
  def __rich__(self) -> str:
31
31
  """Rich representation with color formatting."""
32
- from hud.utils.design import design
32
+ from hud.utils.hud_console import hud_console
33
33
 
34
- return design.format_tool_call(self.name, self.arguments)
34
+ return hud_console.format_tool_call(self.name, self.arguments)
35
35
 
36
36
 
37
37
  class MCPToolResult(CallToolResult):
@@ -74,10 +74,10 @@ class MCPToolResult(CallToolResult):
74
74
 
75
75
  def __rich__(self) -> str:
76
76
  """Rich representation with color formatting."""
77
- from hud.utils.design import design
77
+ from hud.utils.hud_console import hud_console
78
78
 
79
79
  content_summary = self._get_content_summary()
80
- return design.format_tool_result(content_summary, self.isError)
80
+ return hud_console.format_tool_result(content_summary, self.isError)
81
81
 
82
82
 
83
83
  class AgentResponse(BaseModel):
hud/utils/__init__.py CHANGED
@@ -1,10 +1,10 @@
1
1
  from __future__ import annotations
2
2
 
3
- from .design import HUDDesign, design
3
+ from .hud_console import HUDConsole, hud_console
4
4
  from .telemetry import stream
5
5
 
6
6
  __all__ = [
7
- "HUDDesign",
8
- "design",
7
+ "HUDConsole",
8
+ "hud_console",
9
9
  "stream",
10
10
  ]
@@ -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.22"
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.22"
7
+ __version__ = "0.4.23"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.22
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,47 +1,47 @@
1
1
  hud/__init__.py,sha256=KU7G-_Mj6Mjf7trXA6X0ufN6QUmqhVi19NKbnNIvD74,532
2
2
  hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
3
3
  hud/settings.py,sha256=bgq_zstNGlan7UDZOiElY8Aw5ZU4xL7Ds5HP_Xzph1A,2535
4
- hud/types.py,sha256=DDK7-jcoI0iZbyIOfXlGJy9MpHAGcw_4napLs-v-8vY,6077
5
- hud/version.py,sha256=T_tMaYLlvl2YQTkRh6f_ODEmmcIi1QPFX6xOChwfcCA,105
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=kvHimAckIMGl4mge6KajxjQKd_v1PmUYRZUNRtcggHs,30965
7
+ hud/agents/base.py,sha256=qkTj0bnlFDs9OA4A3g1kKyVaDaRtPSVB_HzOIV4DpVw,30980
8
8
  hud/agents/claude.py,sha256=Ixc05qg-r0H1OoC_DE5Ov6RtODWp7uJcTJJqpmoIob0,15478
9
- hud/agents/grounded_openai.py,sha256=bUB0sOYkWPx1NfASI97gVixV6CM5GY3K61S_upCSPm8,11176
9
+ hud/agents/grounded_openai.py,sha256=U-FHjB2Nh1_o0gmlxY5F17lWJ3oHsNRIB2a7z-IKB64,11231
10
10
  hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
11
- hud/agents/openai.py,sha256=tvFYsZ5yaoLkfjMnHe-COxRttMsLRXBLPdSqgeipQRk,14257
12
- 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
13
13
  hud/agents/misc/__init__.py,sha256=BYi4Ytp9b_vycpZFXnr5Oyw6ncKLNNGml8Jrb7bWUb4,136
14
- hud/agents/misc/response_agent.py,sha256=pnaomb4H-QJm1YKU3tC1YnZXxOlDbTHIXaIH-6Nkb6I,3102
14
+ hud/agents/misc/response_agent.py,sha256=tdyRI-4A1iECW5NBA-dIJwDHhXgTi6W7FHhe--SHvMQ,3150
15
15
  hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
16
16
  hud/agents/tests/test_base.py,sha256=F39ajSqASGUbPyPoWSY9KARFav62qNTK74W11Tr1Tg4,28970
17
17
  hud/agents/tests/test_claude.py,sha256=wqEKlzEvx8obz1sSm4NY0j-Zyt1qWNfDOmRqYIuAEd0,13069
18
18
  hud/agents/tests/test_client.py,sha256=uikgh6yhjPPX2RBU4XJQMz1mNox9uXjuwsP8t93id18,13337
19
19
  hud/agents/tests/test_grounded_openai_agent.py,sha256=VK8lUvHIjWicMX00VKPE-FZyjiJqTEhb80MuRRa9fVc,5437
20
20
  hud/agents/tests/test_openai.py,sha256=lhHowQyLp09oDVwBUjUECoPeH01F16i4O9YIHeugK6E,7028
21
- hud/cli/__init__.py,sha256=W4McbKAvs8cMIYlruzjV8Z_nxkmOK9ktYWP-WBnD6xo,35804
21
+ hud/cli/__init__.py,sha256=-32_tNDsFc38AMAvJFcHg38EVS5PN3n6pjW7eN2Nxj4,36259
22
22
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
23
- hud/cli/analyze.py,sha256=DngDPM53DHZn8gFndz8d7hCIOUwB4tqtYEii6AGFIZk,14393
24
- 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
25
25
  hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
26
- hud/cli/debug.py,sha256=FNzg9-_ZzUJA1nJfubmop7_2OT5mqnWsdpZyi4AVSXA,14163
27
- hud/cli/dev.py,sha256=R7YJWIZCUURXzs8ovOCF9V1FwOhsAJT5D3mZQkFmTI4,31134
28
- hud/cli/eval.py,sha256=3ASGiQ4IZPB5EdMoNtwsPmmhO7v3lRmq8uoQCIsf5dM,15770
29
- hud/cli/hf.py,sha256=EYWL-fEN9SS2QJYU7iIBXs0qa9JIvmMWOMh9a8Ewt9s,15179
30
- hud/cli/init.py,sha256=7Yqp3gUVmK-vVE_6A9RKhZlSTlwxxb2ylJn1H22TYSY,19573
31
- hud/cli/list_func.py,sha256=ENxLL4X5uuqAASWZdQuI0k-tEzmlhUn5LATgz3QPQqQ,7065
32
- hud/cli/pull.py,sha256=JHwCwUwRO0Nzbgm9mkjsz6EpxbxgwQVhgNSY64nNZ-s,11969
33
- hud/cli/push.py,sha256=KFuykjmBVTInjEKmV7BaMwu9n6BYT9GUgkzZ9J7r6gQ,17966
34
- 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
35
35
  hud/cli/rl/README.md,sha256=3pqRZMrnwD-lJwWGCCNZNhGdZG6zyydLBOer0e8BkLw,5983
36
- hud/cli/rl/__init__.py,sha256=g_Crqn5o0m9xANrTOkQZENWVlwHAV6MWiobte-FfqiY,3412
37
- hud/cli/rl/init.py,sha256=GXVOXLrX8CVAgpJ1pHuk6Y6oujbh46Rtz8kG18jGzk8,13789
38
- hud/cli/rl/pod.py,sha256=ZiXI-RG9YsnKx1EWzufcqklBdaD_d6XFtD45a0H8KpM,18837
39
- hud/cli/rl/ssh.py,sha256=bHAieonseJPON7P1mwB2GPWKLDlLZuvQniONmr5ZfcE,11523
40
- hud/cli/rl/train.py,sha256=sjY4J0TCp8647kzuIHyEeIsFVGtE0tllT0GzhkPPrWY,19895
41
- 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
42
42
  hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
43
- hud/cli/tests/test_analyze.py,sha256=SwxvRlnw-VaEwKN2nd1FJAxfhieujPjh7PdQh_LYJ5E,11050
44
- 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
45
45
  hud/cli/tests/test_build.py,sha256=9B_-jkCDMsNNn087SWbPEJVsbD_D1u5Mv1gBIySPuhU,14409
46
46
  hud/cli/tests/test_cli_init.py,sha256=_H0bAn5_skJ91Zj8P5P_wtZoPWvrN7jMhPZvmnnf0n8,11289
47
47
  hud/cli/tests/test_cli_main.py,sha256=0wMho9p9NcGjp0jLiUtCQh_FYdbMaCJtSY3sBbSgPwA,697
@@ -51,21 +51,21 @@ hud/cli/tests/test_debug.py,sha256=bQ76d_0HJfthHBSECmGNv499ZE57CIOKsanMlNfNHGk,1
51
51
  hud/cli/tests/test_list_func.py,sha256=pkG4TtJJBMi9Xk8KBNFBlGcam7kwz01IRsjfQBL2PxM,10700
52
52
  hud/cli/tests/test_main_module.py,sha256=6RhwCcdRSN2uQV6-adti40ZcLd3u-mPR1ai6wL64c6Y,1105
53
53
  hud/cli/tests/test_mcp_server.py,sha256=wLFkDOR22FuBe3kIdYeLG7H81HHiorKB8kXRubftLpU,4316
54
- hud/cli/tests/test_pull.py,sha256=7wHxdf_rN3LDmo554-S63WT6eoYUquwDWpjgoy_f1eQ,12923
55
- hud/cli/tests/test_push.py,sha256=ixuqb39Q1A-GJGjnELYifIYBU9lIWCM1q7s_gjUEhYE,12709
56
- 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
57
57
  hud/cli/tests/test_utils.py,sha256=_oa2lTvgqJxXe0Mtovxb8x-Sug-f6oJJKvG67r5pFtA,13474
58
58
  hud/cli/utils/__init__.py,sha256=L6s0oNzY2LugGp9faodCPnjzM-ZUorUH05-HmYOq5hY,35
59
59
  hud/cli/utils/cursor.py,sha256=fy850p0rVp5k_1wwOCI7rK1SggbselJrywFInSQ2gio,3009
60
60
  hud/cli/utils/docker.py,sha256=VTUcoPqxh3uXOgvL6NSqYiSDhyCPRp3jTfFbnIDwumg,3774
61
- hud/cli/utils/environment.py,sha256=-Z8UkXlRpdGsBkjw-x1EJ2IwcSCrlWaaf25ZoPDMrtw,4225
62
- hud/cli/utils/interactive.py,sha256=qD25ZhDHI037EAhZUBFUXUpuERM979PnsxFTfpvNxhk,16523
63
- hud/cli/utils/logging.py,sha256=ZgjjKVPAa7dcfJ6SMBrdfZ63d1UnnhYC-zeh7gFBXsI,8841
64
- hud/cli/utils/metadata.py,sha256=VBvNNqHS5-sH97H3PhVmdOcyzZ2NGH47fVUUtHBoGLQ,7808
65
- 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
66
66
  hud/cli/utils/remote_runner.py,sha256=50Fqp7LG9dwiDyNM-LspNiKrSHmEo00C_Iuu5jg9mXU,9407
67
- hud/cli/utils/runner.py,sha256=qZI1lFNZIFn6d919awUkMtjQ36TfhAvyqGRzQmkal8c,4269
68
- 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
69
69
  hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
70
70
  hud/clients/__init__.py,sha256=N5M_gZv4nP7dLRwpAiaqqaxyaLieGW6397FszeG7JGw,364
71
71
  hud/clients/base.py,sha256=vt9mRMZwZg2DtVxQmccR_VZZGamXhx3dvlFJPulbOd8,14131
@@ -107,7 +107,7 @@ hud/server/helper/__init__.py,sha256=ZxO8VP3RZEBBp-q65VixuhzQgqEPSVzW0hEY9J9QqDA
107
107
  hud/server/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
108
108
  hud/shared/__init__.py,sha256=IPxPCqtPLguryN-nBq78Sakypw2bRiE2iHv3SXG8YRk,139
109
109
  hud/shared/exceptions.py,sha256=dhmt5KMciQ2fmV-yqXtTNO868k-WzuZae6w7dOk3M44,12144
110
- hud/shared/hints.py,sha256=UdJyGmizk0fz8QZqkRJVvQGlxalBsEzumu7h9pP_2kA,5009
110
+ hud/shared/hints.py,sha256=XD-Ck9Utz0gZ6lZ3-eB4AROgbc4llSoyNe1ZbmPCTx0,5049
111
111
  hud/shared/requests.py,sha256=HWrPp7nBSK4jhv9wqZdFiNrVaaxV0vWS8fcgGtoztBc,9479
112
112
  hud/shared/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  hud/shared/tests/test_exceptions.py,sha256=bCKGqw2RwBmlGIMNpddzyfnWAOQwSIYB76r6iaBE2is,15761
@@ -144,7 +144,7 @@ hud/tools/executors/tests/test_pyautogui_executor.py,sha256=Shv6pnWtlsMXBMlN5Djl
144
144
  hud/tools/grounding/__init__.py,sha256=oazR_qTJqkeGtjy_0w1QW58PQ872PkVwtYI-v2KIX3k,311
145
145
  hud/tools/grounding/config.py,sha256=Vsd5ASDZFL7kW7toKkgrYN5D-ZV6ovKZyX4nxRrHvRs,1869
146
146
  hud/tools/grounding/grounded_tool.py,sha256=L3O8FzpDoC8ZrnT0xkjlUwAkg7mAbnhK3ju0nE2zCiQ,12679
147
- hud/tools/grounding/grounder.py,sha256=DwRp7I30ldgdDjxtUJuBh3GWESNUyHbRhCXT28m3xLk,11060
147
+ hud/tools/grounding/grounder.py,sha256=eKuKKraamXnwwY3oVRNeXreb6NqvMgt-v34B-coc868,11069
148
148
  hud/tools/grounding/tests/__init__.py,sha256=jLw4nmvvvZu2ln2_yEUUKg72IewQ4HaXCUWJuX3ECZY,33
149
149
  hud/tools/grounding/tests/test_grounded_tool.py,sha256=kr-wOOJZcfdYfhRSNFnhv8EuIsjbwgHDQbUSH9WnxMw,6446
150
150
  hud/tools/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
@@ -160,12 +160,12 @@ hud/tools/tests/test_response.py,sha256=pEv3p0k1reSKtjbA8xneu--OuCHydbHHl6YWorV4
160
160
  hud/tools/tests/test_tools.py,sha256=paz28V98Am-oR7MBJPDgY-BRV14HQo_0F6X5JIC8aic,4563
161
161
  hud/tools/tests/test_tools_init.py,sha256=aOX9IKji-4ThHEiRYULa7YlIajP0lj3eFPjgzlEg9TI,1727
162
162
  hud/tools/tests/test_utils.py,sha256=qaujM1uyTMaKqWIeEgxty5GOFyfSUtrYCEHhmIazoy4,5500
163
- hud/utils/__init__.py,sha256=ckuIzwqgTxkzASa04XTPsOu_TqsRYUKBWUYfcSi3Xnc,164
163
+ hud/utils/__init__.py,sha256=nk9Re6ls2RudAWnAHDWYbLG28AwNF4qMFYf5xQIJhQA,181
164
164
  hud/utils/agent_factories.py,sha256=cvfXByqG6gOYHtm1VGeJjCpxoLxM4aJez8rH-AerP_A,3186
165
165
  hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
166
- hud/utils/design.py,sha256=Ymz29qdgqmnXCupDmASCqgkoW8fS6_cg5COXiFUUl50,17621
166
+ hud/utils/hud_console.py,sha256=1JlIphJNtqS2cm4DsuQnvD0dJgyYD1Kf7575vPO0fz4,18202
167
167
  hud/utils/mcp.py,sha256=jvCWb5MXlMMObhrbYoiTlI-L9HNkEjLVx8GJ-HbdQ7U,2626
168
- hud/utils/pretty_errors.py,sha256=M4mEzzyB-ZbqbX8KQmlBTtoc2q7OBKzFYvkXgVBcj6o,2395
168
+ hud/utils/pretty_errors.py,sha256=WGeL4CTHtlA6KgPuV_JSX5l6H4-xbuTp6Y6tw1bkiFg,2430
169
169
  hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
170
170
  hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
171
171
  hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -174,10 +174,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
174
174
  hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
175
175
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
176
176
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
177
- hud/utils/tests/test_version.py,sha256=rjNpZ8hUWFWMassBYVxeyCM-03Rdz8W0C7HPDQuBJfo,160
177
+ hud/utils/tests/test_version.py,sha256=IWI4m88C4T_FrgySB42WwPuaGnc3Smpe9QddpcNoOIc,160
178
178
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- hud_python-0.4.22.dist-info/METADATA,sha256=bX0ATTSO7oM9laQrrha-tEityugKU2JbFcAm7m5AGA0,20142
180
- hud_python-0.4.22.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
181
- hud_python-0.4.22.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
182
- hud_python-0.4.22.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
183
- hud_python-0.4.22.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,,