hanzo 0.3.34__tar.gz → 0.3.35__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. {hanzo-0.3.34 → hanzo-0.3.35}/PKG-INFO +3 -4
  2. {hanzo-0.3.34 → hanzo-0.3.35}/pyproject.toml +3 -4
  3. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/__init__.py +1 -1
  4. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/cli.py +2 -2
  5. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/__init__.py +1 -1
  6. hanzo-0.3.34/src/hanzo/commands/infra.py → hanzo-0.3.35/src/hanzo/commands/cloud.py +28 -28
  7. {hanzo-0.3.34 → hanzo-0.3.35}/.gitignore +0 -0
  8. {hanzo-0.3.34 → hanzo-0.3.35}/README.md +0 -0
  9. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/__main__.py +0 -0
  10. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/base_agent.py +0 -0
  11. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/batch_orchestrator.py +0 -0
  12. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/agent.py +0 -0
  13. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/auth.py +0 -0
  14. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/chat.py +0 -0
  15. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/config.py +0 -0
  16. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/mcp.py +0 -0
  17. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/miner.py +0 -0
  18. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/network.py +0 -0
  19. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/node.py +0 -0
  20. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/repl.py +0 -0
  21. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/router.py +0 -0
  22. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/commands/tools.py +0 -0
  23. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/cryptography/__init__.py +0 -0
  24. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/cryptography/ml_dsa.py +0 -0
  25. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/cryptography/precompiles.py +0 -0
  26. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/cryptography/slh_dsa.py +0 -0
  27. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/dev.py +0 -0
  28. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/fallback_handler.py +0 -0
  29. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/__init__.py +0 -0
  30. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/cron.py +0 -0
  31. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/documentdb.py +0 -0
  32. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/functions.py +0 -0
  33. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/kv.py +0 -0
  34. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/pubsub.py +0 -0
  35. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/queues.py +0 -0
  36. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/search.py +0 -0
  37. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/storage.py +0 -0
  38. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/tasks.py +0 -0
  39. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/infra/vector.py +0 -0
  40. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/interactive/__init__.py +0 -0
  41. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/interactive/dashboard.py +0 -0
  42. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/interactive/enhanced_repl.py +0 -0
  43. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/interactive/model_selector.py +0 -0
  44. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/interactive/repl.py +0 -0
  45. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/interactive/todo_manager.py +0 -0
  46. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/mcp_server.py +0 -0
  47. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/memory_manager.py +0 -0
  48. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/model_registry.py +0 -0
  49. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/orchestrator_config.py +0 -0
  50. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/rate_limiter.py +0 -0
  51. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/repl.py +0 -0
  52. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/router/__init__.py +0 -0
  53. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/streaming.py +0 -0
  54. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/tools/__init__.py +0 -0
  55. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/tools/detector.py +0 -0
  56. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/ui/__init__.py +0 -0
  57. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/ui/inline_startup.py +0 -0
  58. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/ui/startup.py +0 -0
  59. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/utils/__init__.py +0 -0
  60. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/utils/config.py +0 -0
  61. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/utils/net_check.py +0 -0
  62. {hanzo-0.3.34 → hanzo-0.3.35}/src/hanzo/utils/output.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hanzo
3
- Version: 0.3.34
3
+ Version: 0.3.35
4
4
  Summary: Hanzo AI - Complete AI Infrastructure Platform with CLI, Router, MCP, and Agent Runtime
5
5
  Project-URL: Homepage, https://hanzo.ai
6
6
  Project-URL: Repository, https://github.com/hanzoai/python-sdk
@@ -14,12 +14,11 @@ Classifier: Intended Audience :: Developers
14
14
  Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.10
18
- Classifier: Programming Language :: Python :: 3.11
19
17
  Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
20
19
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Python: >=3.10
21
+ Requires-Python: >=3.12
23
22
  Requires-Dist: anthropic>=0.25.0
24
23
  Requires-Dist: click>=8.1.0
25
24
  Requires-Dist: httpx>=0.23.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "hanzo"
3
- version = "0.3.34"
3
+ version = "0.3.35"
4
4
  description = "Hanzo AI - Complete AI Infrastructure Platform with CLI, Router, MCP, and Agent Runtime"
5
5
  authors = [
6
6
  {name = "Hanzo AI", email = "dev@hanzo.ai"},
@@ -18,7 +18,7 @@ dependencies = [
18
18
  "qrcode>=7.4.2",
19
19
  ]
20
20
  readme = "README.md"
21
- requires-python = ">= 3.10"
21
+ requires-python = ">= 3.12"
22
22
  keywords = ["ai", "cli", "hanzo", "agents", "llm", "mcp", "local-ai", "private-ai"]
23
23
  classifiers = [
24
24
  "Development Status :: 4 - Beta",
@@ -27,9 +27,8 @@ classifiers = [
27
27
  "License :: OSI Approved :: Apache Software License",
28
28
  "Operating System :: OS Independent",
29
29
  "Programming Language :: Python :: 3",
30
- "Programming Language :: Python :: 3.10",
31
- "Programming Language :: Python :: 3.11",
32
30
  "Programming Language :: Python :: 3.12",
31
+ "Programming Language :: Python :: 3.13",
33
32
  "Topic :: Software Development :: Libraries :: Python Modules",
34
33
  "Topic :: Scientific/Engineering :: Artificial Intelligence",
35
34
  ]
@@ -1,6 +1,6 @@
1
1
  """Hanzo - Complete AI Infrastructure Platform with CLI, Router, MCP, and Agent Runtime."""
2
2
 
3
- __version__ = "0.3.34"
3
+ __version__ = "0.3.35"
4
4
  __all__ = ["main", "cli", "__version__"]
5
5
 
6
6
  from .cli import cli, main
@@ -22,7 +22,7 @@ from .commands import (
22
22
  config,
23
23
  router,
24
24
  network,
25
- infra,
25
+ cloud,
26
26
  )
27
27
  from .ui.startup import show_startup
28
28
  from .utils.output import console
@@ -91,7 +91,7 @@ cli.add_command(tools.tools_group)
91
91
  cli.add_command(network.network_group)
92
92
  cli.add_command(config.config_group)
93
93
  cli.add_command(router.router_group)
94
- cli.add_command(infra.infra_group)
94
+ cli.add_command(cloud.cloud_group)
95
95
 
96
96
 
97
97
  # Quick aliases
@@ -6,7 +6,7 @@ __all__ = [
6
6
  "chat",
7
7
  "cluster",
8
8
  "config",
9
- "infra",
9
+ "cloud",
10
10
  "mcp",
11
11
  "miner",
12
12
  "network",
@@ -115,7 +115,7 @@ def get_api_key() -> Optional[str]:
115
115
  return None
116
116
 
117
117
 
118
- def get_infra_config() -> dict:
118
+ def get_cloud_config() -> dict:
119
119
  """Load infrastructure configuration."""
120
120
  config_file = Path.home() / ".hanzo" / "infra.json"
121
121
  if config_file.exists():
@@ -126,7 +126,7 @@ def get_infra_config() -> dict:
126
126
  return {"services": {}}
127
127
 
128
128
 
129
- def save_infra_config(config: dict):
129
+ def save_cloud_config(config: dict):
130
130
  """Save infrastructure configuration."""
131
131
  config_dir = Path.home() / ".hanzo"
132
132
  config_dir.mkdir(exist_ok=True)
@@ -134,8 +134,8 @@ def save_infra_config(config: dict):
134
134
  config_file.write_text(json.dumps(config, indent=2))
135
135
 
136
136
 
137
- @click.group(name="infra")
138
- def infra_group():
137
+ @click.group(name="cloud")
138
+ def cloud_group():
139
139
  """Manage Hanzo infrastructure services.
140
140
 
141
141
  Provision and connect to managed infrastructure:
@@ -155,19 +155,19 @@ def infra_group():
155
155
 
156
156
  \b
157
157
  Examples:
158
- hanzo infra list # Show available services
159
- hanzo infra provision vector # Provision Qdrant
160
- hanzo infra connect # Get connection URLs
161
- hanzo infra env # Export as env vars
162
- hanzo infra status # Check health
158
+ hanzo cloud list # Show available services
159
+ hanzo cloud provision vector # Provision Qdrant
160
+ hanzo cloud connect # Get connection URLs
161
+ hanzo cloud env # Export as env vars
162
+ hanzo cloud status # Check health
163
163
  """
164
164
  pass
165
165
 
166
166
 
167
- @infra_group.command()
167
+ @cloud_group.command()
168
168
  def list():
169
169
  """List available infrastructure services."""
170
- config = get_infra_config()
170
+ config = get_cloud_config()
171
171
  provisioned = config.get("services", {})
172
172
 
173
173
  table = Table(title="Hanzo Infrastructure Services", box=box.ROUNDED)
@@ -183,10 +183,10 @@ def list():
183
183
 
184
184
  console.print(table)
185
185
  console.print()
186
- console.print("[dim]Use 'hanzo infra provision <service>' to provision a service[/dim]")
186
+ console.print("[dim]Use 'hanzo cloud provision <service>' to provision a service[/dim]")
187
187
 
188
188
 
189
- @infra_group.command()
189
+ @cloud_group.command()
190
190
  @click.argument("service", type=click.Choice(SERVICE_NAMES))
191
191
  @click.option("--tier", type=click.Choice(["free", "pro", "enterprise"]), default="free", help="Service tier")
192
192
  @click.option("--region", default="us-west-2", help="Deployment region")
@@ -228,7 +228,7 @@ def provision(service: str, tier: str, region: str):
228
228
  data = resp.json()
229
229
 
230
230
  # Save to config
231
- config = get_infra_config()
231
+ config = get_cloud_config()
232
232
  config["services"][service] = {
233
233
  "id": data.get("id"),
234
234
  "url": data.get("url"),
@@ -238,13 +238,13 @@ def provision(service: str, tier: str, region: str):
238
238
  "tier": tier,
239
239
  "region": region,
240
240
  }
241
- save_infra_config(config)
241
+ save_cloud_config(config)
242
242
 
243
243
  console.print(f"[green]✓ {info['name']} provisioned successfully![/green]")
244
244
  console.print()
245
245
  console.print(f"[cyan]Connection URL:[/cyan] {data.get('url')}")
246
246
  console.print()
247
- console.print("[dim]Run 'hanzo infra env' to export environment variables[/dim]")
247
+ console.print("[dim]Run 'hanzo cloud env' to export environment variables[/dim]")
248
248
 
249
249
  except httpx.ConnectError:
250
250
  console.print("[red]Could not connect to Hanzo API.[/red]")
@@ -253,16 +253,16 @@ def provision(service: str, tier: str, region: str):
253
253
  console.print(f"[red]Error: {e}[/red]")
254
254
 
255
255
 
256
- @infra_group.command()
256
+ @cloud_group.command()
257
257
  @click.argument("service", type=click.Choice(SERVICE_NAMES), required=False)
258
258
  def connect(service: Optional[str]):
259
259
  """Show connection details for provisioned services."""
260
- config = get_infra_config()
260
+ config = get_cloud_config()
261
261
  services = config.get("services", {})
262
262
 
263
263
  if not services:
264
264
  console.print("[yellow]No services provisioned yet.[/yellow]")
265
- console.print("Run 'hanzo infra provision <service>' to get started.")
265
+ console.print("Run 'hanzo cloud provision <service>' to get started.")
266
266
  return
267
267
 
268
268
  if service:
@@ -285,12 +285,12 @@ def connect(service: Optional[str]):
285
285
  console.print(panel)
286
286
 
287
287
 
288
- @infra_group.command()
288
+ @cloud_group.command()
289
289
  @click.option("--shell", type=click.Choice(["bash", "zsh", "fish", "powershell"]), default="bash")
290
290
  @click.option("--export", "do_export", is_flag=True, help="Print export statements")
291
291
  def env(shell: str, do_export: bool):
292
292
  """Show environment variables for provisioned services."""
293
- config = get_infra_config()
293
+ config = get_cloud_config()
294
294
  services = config.get("services", {})
295
295
 
296
296
  if not services:
@@ -345,14 +345,14 @@ def env(shell: str, do_export: bool):
345
345
 
346
346
  console.print(table)
347
347
  console.print()
348
- console.print(f"[dim]Run 'hanzo infra env --export' to get export statements[/dim]")
348
+ console.print(f"[dim]Run 'hanzo cloud env --export' to get export statements[/dim]")
349
349
 
350
350
 
351
- @infra_group.command()
351
+ @cloud_group.command()
352
352
  @click.argument("service", type=click.Choice(SERVICE_NAMES), required=False)
353
353
  def status(service: Optional[str]):
354
354
  """Check health status of provisioned services."""
355
- config = get_infra_config()
355
+ config = get_cloud_config()
356
356
  services = config.get("services", {})
357
357
 
358
358
  if not services:
@@ -398,12 +398,12 @@ def status(service: Optional[str]):
398
398
  console.print(table)
399
399
 
400
400
 
401
- @infra_group.command()
401
+ @cloud_group.command()
402
402
  @click.argument("service", type=click.Choice(SERVICE_NAMES))
403
403
  @click.option("--force", is_flag=True, help="Skip confirmation")
404
404
  def destroy(service: str, force: bool):
405
405
  """Destroy a provisioned service."""
406
- config = get_infra_config()
406
+ config = get_cloud_config()
407
407
  services = config.get("services", {})
408
408
 
409
409
  if service not in services:
@@ -436,7 +436,7 @@ def destroy(service: str, force: bool):
436
436
 
437
437
  # Remove from config
438
438
  del config["services"][service]
439
- save_infra_config(config)
439
+ save_cloud_config(config)
440
440
 
441
441
  console.print(f"[green]✓ {info['name']} destroyed.[/green]")
442
442
 
@@ -444,7 +444,7 @@ def destroy(service: str, force: bool):
444
444
  console.print(f"[red]Error: {e}[/red]")
445
445
 
446
446
 
447
- @infra_group.command()
447
+ @cloud_group.command()
448
448
  def init():
449
449
  """Initialize infrastructure from hanzo.yaml config file."""
450
450
  config_paths = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes