hypercli-cli 2026.4.18.post1__tar.gz → 2026.4.21__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 (41) hide show
  1. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/PKG-INFO +5 -5
  2. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/README.md +1 -1
  3. hypercli_cli-2026.4.21/hypercli_cli/__init__.py +1 -0
  4. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/agent.py +7 -7
  5. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/agents.py +1 -1
  6. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/onboard.py +3 -3
  7. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/pyproject.toml +4 -4
  8. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_agent_subscribe_command.py +11 -11
  9. hypercli_cli-2026.4.18.post1/hypercli_cli/__init__.py +0 -1
  10. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/.gitignore +0 -0
  11. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/billing.py +0 -0
  12. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/cli.py +0 -0
  13. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/comfyui.py +0 -0
  14. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/embed.py +0 -0
  15. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/files.py +0 -0
  16. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/flow.py +0 -0
  17. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/instances.py +0 -0
  18. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/jobs.py +0 -0
  19. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/keys.py +0 -0
  20. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/llm.py +0 -0
  21. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/output.py +0 -0
  22. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/renders.py +0 -0
  23. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/stt.py +0 -0
  24. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/tui/__init__.py +0 -0
  25. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/tui/job_monitor.py +0 -0
  26. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/user.py +0 -0
  27. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/voice.py +0 -0
  28. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/hypercli_cli/wallet.py +0 -0
  29. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_agent_env_resolution.py +0 -0
  30. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_config_command.py +0 -0
  31. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_exec_shell_dryrun.py +0 -0
  32. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_flow_command.py +0 -0
  33. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_flow_visibility.py +0 -0
  34. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_jobs_list_tags.py +0 -0
  35. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_keys_command.py +0 -0
  36. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_llm_command.py +0 -0
  37. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_me_command.py +0 -0
  38. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_openclaw_config.py +0 -0
  39. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_voice_command.py +0 -0
  40. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_wallet_command.py +0 -0
  41. {hypercli_cli-2026.4.18.post1 → hypercli_cli-2026.4.21}/tests/test_wallet_migration_integration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hypercli-cli
3
- Version: 2026.4.18.post1
3
+ Version: 2026.4.21
4
4
  Summary: CLI for HyperCLI - GPU orchestration and LLM API
5
5
  Project-URL: Homepage, https://hypercli.com
6
6
  Project-URL: Documentation, https://docs.hypercli.com
@@ -9,7 +9,7 @@ Author-email: HyperCLI <support@hypercli.com>
9
9
  License: MIT
10
10
  Requires-Python: >=3.10
11
11
  Requires-Dist: httpx>=0.27.0
12
- Requires-Dist: hypercli-sdk>=2026.4.18.post1
12
+ Requires-Dist: hypercli-sdk>=2026.4.21
13
13
  Requires-Dist: mutagen>=1.47.0
14
14
  Requires-Dist: openai>=2.8.1
15
15
  Requires-Dist: pyyaml>=6.0
@@ -20,11 +20,11 @@ Provides-Extra: all
20
20
  Requires-Dist: argon2-cffi>=25.0.0; extra == 'all'
21
21
  Requires-Dist: eth-account>=0.13.0; extra == 'all'
22
22
  Requires-Dist: faster-whisper>=1.1.0; extra == 'all'
23
- Requires-Dist: hypercli-sdk[comfyui]>=2026.4.18.post1; extra == 'all'
23
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.4.21; extra == 'all'
24
24
  Requires-Dist: web3>=7.0.0; extra == 'all'
25
25
  Requires-Dist: x402[evm,httpx]>=2.0.0; extra == 'all'
26
26
  Provides-Extra: comfyui
27
- Requires-Dist: hypercli-sdk[comfyui]>=2026.4.18.post1; extra == 'comfyui'
27
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.4.21; extra == 'comfyui'
28
28
  Provides-Extra: dev
29
29
  Requires-Dist: pytest>=8.0.0; extra == 'dev'
30
30
  Requires-Dist: ruff>=0.3.0; extra == 'dev'
@@ -80,7 +80,7 @@ hyper flow text-to-image "a cinematic portrait" --x402
80
80
 
81
81
  # HyperClaw checkout/config
82
82
  hyper agent plans
83
- hyper agent subscribe 1aiu
83
+ hyper agent subscribe basic
84
84
  hyper agent config env
85
85
  hyper agent exec <agent_id> "ls -la"
86
86
  hyper agent shell <agent_id>
@@ -40,7 +40,7 @@ hyper flow text-to-image "a cinematic portrait" --x402
40
40
 
41
41
  # HyperClaw checkout/config
42
42
  hyper agent plans
43
- hyper agent subscribe 1aiu
43
+ hyper agent subscribe basic
44
44
  hyper agent config env
45
45
  hyper agent exec <agent_id> "ls -la"
46
46
  hyper agent shell <agent_id>
@@ -0,0 +1 @@
1
+ __version__ = "2026.4.21"
@@ -79,7 +79,7 @@ def _get_agent_query_client(dev: bool) -> HyperCLI:
79
79
 
80
80
  @app.command("subscribe")
81
81
  def subscribe(
82
- plan_id: str = typer.Argument("1aiu", help="Plan ID: 1aiu, 2aiu, 5aiu, 10aiu (default: 1aiu)"),
82
+ plan_id: str = typer.Argument("basic", help="Plan ID: basic, plus, pro, team (default: basic)"),
83
83
  amount: str = typer.Argument(None, help="USDC amount to pay (e.g., '25' for $25). Duration scales proportionally."),
84
84
  passphrase: str = typer.Option(
85
85
  None,
@@ -89,15 +89,15 @@ def subscribe(
89
89
  ):
90
90
  """Subscribe to a HyperClaw plan via x402 payment.
91
91
 
92
- Duration scales with payment amount (1aiu: $25 = 32 days):
92
+ Duration scales with payment amount (basic: $25 = 32 days):
93
93
  - $25 → 32 days
94
94
  - $12.50 → 16 days
95
95
  - $1 → ~1.3 days
96
96
 
97
97
  Examples:
98
- hyper agent subscribe 1aiu 25 # Pay $25 for 32 days
99
- hyper agent subscribe 1aiu 50 # Pay $50 for 64 days
100
- hyper agent subscribe 5aiu 100 # Pay $100 for 5aiu plan
98
+ hyper agent subscribe basic 25 # Pay $25 for 32 days
99
+ hyper agent subscribe basic 50 # Pay $50 for 64 days
100
+ hyper agent subscribe pro 100 # Pay $100 for pro plan
101
101
  """
102
102
  require_x402_deps()
103
103
 
@@ -800,7 +800,7 @@ def openclaw_setup(
800
800
  # Load HyperClaw key
801
801
  if not AGENT_KEY_PATH.exists():
802
802
  console.print("[red]❌ No HyperClaw key found.[/red]")
803
- console.print("Run: [bold]hyper agent subscribe 1aiu <amount>[/bold]")
803
+ console.print("Run: [bold]hyper agent subscribe basic <amount>[/bold]")
804
804
  raise typer.Exit(1)
805
805
 
806
806
  with open(AGENT_KEY_PATH) as f:
@@ -860,7 +860,7 @@ def _resolve_api_key(key: str | None) -> str:
860
860
  return k
861
861
  console.print("[red]❌ No API key found.[/red]")
862
862
  console.print("Either pass [bold]--key sk-...[/bold] or subscribe first:")
863
- console.print(" [bold]hyper agent subscribe 1aiu[/bold]")
863
+ console.print(" [bold]hyper agent subscribe basic[/bold]")
864
864
  raise typer.Exit(1)
865
865
 
866
866
 
@@ -60,7 +60,7 @@ def _get_agent_api_key() -> str:
60
60
  if key:
61
61
  return key
62
62
  console.print("[red]❌ No HyperClaw API key found.[/red]")
63
- console.print("Set HYPER_AGENTS_API_KEY or HYPER_API_KEY, or subscribe: [bold]hyper agent subscribe 1aiu[/bold]")
63
+ console.print("Set HYPER_AGENTS_API_KEY or HYPER_API_KEY, or subscribe: [bold]hyper agent subscribe basic[/bold]")
64
64
  raise typer.Exit(1)
65
65
 
66
66
 
@@ -282,9 +282,9 @@ def step_plan(state: dict, json_mode: bool, api_base: str,
282
282
  if plan_override:
283
283
  plan_id = plan_override
284
284
  elif json_mode:
285
- plan_id = "1aiu"
285
+ plan_id = "basic"
286
286
  else:
287
- plan_id = typer.prompt("Select plan", default="1aiu")
287
+ plan_id = typer.prompt("Select plan", default="basic")
288
288
 
289
289
  # Find plan details
290
290
  plan_info = next((p for p in plans if p["id"] == plan_id), None)
@@ -668,7 +668,7 @@ def _run_dry(api_base: str, plan_override: str = None, amount_override: str = No
668
668
  f"{p['tpm_limit']:,}", f"{p['rpm_limit']:,}")
669
669
  console.print(table)
670
670
 
671
- plan_id = plan_override or "1aiu"
671
+ plan_id = plan_override or "basic"
672
672
  plan_info = next((p for p in plans if p["id"] == plan_id), plans[0] if plans else None)
673
673
  amt = amount_override or str(plan_info["price"]) if plan_info else "35"
674
674
  console.print(f"\n[green]✓[/green] Would select: {plan_id} ({plan_info['name'] if plan_info else '?'}) — ${amt} USDC")
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypercli-cli"
7
- version = "2026.4.18.post1"
7
+ version = "2026.4.21"
8
8
  description = "CLI for HyperCLI - GPU orchestration and LLM API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -13,7 +13,7 @@ authors = [
13
13
  { name = "HyperCLI", email = "support@hypercli.com" }
14
14
  ]
15
15
  dependencies = [
16
- "hypercli-sdk>=2026.4.18.post1",
16
+ "hypercli-sdk>=2026.4.21",
17
17
  "openai>=2.8.1",
18
18
  "typer>=0.20.0",
19
19
  "rich>=14.2.0",
@@ -25,7 +25,7 @@ dependencies = [
25
25
 
26
26
  [project.optional-dependencies]
27
27
  comfyui = [
28
- "hypercli-sdk[comfyui]>=2026.4.18.post1",
28
+ "hypercli-sdk[comfyui]>=2026.4.21",
29
29
  ]
30
30
  wallet = [
31
31
  "x402[httpx,evm]>=2.0.0",
@@ -38,7 +38,7 @@ stt = [
38
38
  "faster-whisper>=1.1.0",
39
39
  ]
40
40
  all = [
41
- "hypercli-sdk[comfyui]>=2026.4.18.post1",
41
+ "hypercli-sdk[comfyui]>=2026.4.21",
42
42
  "x402[httpx,evm]>=2.0.0",
43
43
  "eth-account>=0.13.0",
44
44
  "web3>=7.0.0",
@@ -26,11 +26,11 @@ def test_agent_subscribe_passes_explicit_passphrase(monkeypatch, tmp_path):
26
26
 
27
27
  def _fake_subscribe_async(account, plan_id: str, api_base: str, amount: str | None = None):
28
28
  assert account.address == "0xabc"
29
- assert plan_id == "1aiu"
29
+ assert plan_id == "basic"
30
30
  assert amount == "0.01"
31
31
  return {
32
32
  "key": "hyper_api_test",
33
- "plan_id": "1aiu",
33
+ "plan_id": "basic",
34
34
  "amount_paid": "0.010000",
35
35
  "duration_days": 0.5,
36
36
  "expires_at": "2026-04-14T00:00:00Z",
@@ -42,7 +42,7 @@ def test_agent_subscribe_passes_explicit_passphrase(monkeypatch, tmp_path):
42
42
  monkeypatch.setattr(agent_mod.asyncio, "run", lambda coro: coro)
43
43
  monkeypatch.setattr(agent_mod, "_subscribe_async", _fake_subscribe_async)
44
44
 
45
- result = runner.invoke(app, ["agent", "subscribe", "1aiu", "0.01", "--passphrase", "secret"])
45
+ result = runner.invoke(app, ["agent", "subscribe", "basic", "0.01", "--passphrase", "secret"])
46
46
 
47
47
  assert result.exit_code == 0
48
48
  assert load_calls == ["secret"]
@@ -63,12 +63,12 @@ def test_agent_subscribe_uses_product_api_base_env(monkeypatch, tmp_path):
63
63
 
64
64
  def _fake_subscribe_async(account, plan_id: str, api_base: str, amount: str | None = None):
65
65
  assert account.address == "0xabc"
66
- assert plan_id == "1aiu"
66
+ assert plan_id == "basic"
67
67
  assert amount == "0.01"
68
68
  assert api_base == "https://api.dev.hypercli.com"
69
69
  return {
70
70
  "key": "hyper_api_test",
71
- "plan_id": "1aiu",
71
+ "plan_id": "basic",
72
72
  "amount_paid": "0.010000",
73
73
  "duration_days": 0.5,
74
74
  "expires_at": "2026-04-14T00:00:00Z",
@@ -80,7 +80,7 @@ def test_agent_subscribe_uses_product_api_base_env(monkeypatch, tmp_path):
80
80
  monkeypatch.setattr(agent_mod.asyncio, "run", lambda coro: coro)
81
81
  monkeypatch.setattr(agent_mod, "_subscribe_async", _fake_subscribe_async)
82
82
 
83
- result = runner.invoke(app, ["agent", "subscribe", "1aiu", "0.01"])
83
+ result = runner.invoke(app, ["agent", "subscribe", "basic", "0.01"])
84
84
 
85
85
  assert result.exit_code == 0
86
86
 
@@ -88,14 +88,14 @@ def test_agent_subscribe_uses_product_api_base_env(monkeypatch, tmp_path):
88
88
  def test_extract_plan_purchase_url_from_agent_discovery():
89
89
  discovery = {
90
90
  "resources": [
91
- "https://api.dev.hypercli.com/agents/x402/1aiu",
92
- "https://api.dev.hypercli.com/agents/x402/2aiu",
91
+ "https://api.dev.hypercli.com/agents/x402/basic",
92
+ "https://api.dev.hypercli.com/agents/x402/plus",
93
93
  ]
94
94
  }
95
95
 
96
96
  assert (
97
- agent_mod._extract_plan_purchase_url_from_discovery(discovery, "1aiu")
98
- == "https://api.dev.hypercli.com/agents/x402/1aiu"
97
+ agent_mod._extract_plan_purchase_url_from_discovery(discovery, "basic")
98
+ == "https://api.dev.hypercli.com/agents/x402/basic"
99
99
  )
100
100
 
101
101
 
@@ -107,4 +107,4 @@ def test_extract_plan_purchase_url_from_discovery_ignores_nonmatching_resources(
107
107
  ]
108
108
  }
109
109
 
110
- assert agent_mod._extract_plan_purchase_url_from_discovery(discovery, "1aiu") is None
110
+ assert agent_mod._extract_plan_purchase_url_from_discovery(discovery, "basic") is None
@@ -1 +0,0 @@
1
- __version__ = "2026.4.18.post1"