hypercli-cli 2026.4.20__tar.gz → 2026.4.22__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.
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/PKG-INFO +5 -5
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/README.md +1 -1
- hypercli_cli-2026.4.22/hypercli_cli/__init__.py +1 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/agent.py +7 -7
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/agents.py +1 -1
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/onboard.py +3 -3
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/pyproject.toml +4 -4
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_agent_subscribe_command.py +11 -11
- hypercli_cli-2026.4.20/hypercli_cli/__init__.py +0 -1
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/.gitignore +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/billing.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/cli.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/comfyui.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/embed.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/files.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/flow.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/instances.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/jobs.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/keys.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/llm.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/output.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/renders.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/stt.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/tui/__init__.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/tui/job_monitor.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/user.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/voice.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/hypercli_cli/wallet.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_agent_env_resolution.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_config_command.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_exec_shell_dryrun.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_flow_command.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_flow_visibility.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_jobs_list_tags.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_keys_command.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_llm_command.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_me_command.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_openclaw_config.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_voice_command.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_wallet_command.py +0 -0
- {hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/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.
|
|
3
|
+
Version: 2026.4.22
|
|
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.
|
|
12
|
+
Requires-Dist: hypercli-sdk>=2026.4.22
|
|
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.
|
|
23
|
+
Requires-Dist: hypercli-sdk[comfyui]>=2026.4.22; 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.
|
|
27
|
+
Requires-Dist: hypercli-sdk[comfyui]>=2026.4.22; 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
|
|
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
|
|
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.22"
|
|
@@ -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("
|
|
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 (
|
|
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
|
|
99
|
-
hyper agent subscribe
|
|
100
|
-
hyper agent subscribe
|
|
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
|
|
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
|
|
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
|
|
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 = "
|
|
285
|
+
plan_id = "basic"
|
|
286
286
|
else:
|
|
287
|
-
plan_id = typer.prompt("Select plan", default="
|
|
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 "
|
|
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.
|
|
7
|
+
version = "2026.4.22"
|
|
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.
|
|
16
|
+
"hypercli-sdk>=2026.4.22",
|
|
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.
|
|
28
|
+
"hypercli-sdk[comfyui]>=2026.4.22",
|
|
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.
|
|
41
|
+
"hypercli-sdk[comfyui]>=2026.4.22",
|
|
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 == "
|
|
29
|
+
assert plan_id == "basic"
|
|
30
30
|
assert amount == "0.01"
|
|
31
31
|
return {
|
|
32
32
|
"key": "hyper_api_test",
|
|
33
|
-
"plan_id": "
|
|
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", "
|
|
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 == "
|
|
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": "
|
|
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", "
|
|
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/
|
|
92
|
-
"https://api.dev.hypercli.com/agents/x402/
|
|
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, "
|
|
98
|
-
== "https://api.dev.hypercli.com/agents/x402/
|
|
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, "
|
|
110
|
+
assert agent_mod._extract_plan_purchase_url_from_discovery(discovery, "basic") is None
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2026.4.20"
|
|
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
|
|
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
|
{hypercli_cli-2026.4.20 → hypercli_cli-2026.4.22}/tests/test_wallet_migration_integration.py
RENAMED
|
File without changes
|