hypercli-cli 2026.4.22__tar.gz → 2026.5.5__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.22 → hypercli_cli-2026.5.5}/PKG-INFO +5 -4
  2. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/README.md +1 -0
  3. hypercli_cli-2026.5.5/hypercli_cli/__init__.py +1 -0
  4. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/agent.py +28 -0
  5. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/instances.py +2 -3
  6. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/pyproject.toml +4 -4
  7. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_agent_subscribe_command.py +29 -0
  8. hypercli_cli-2026.4.22/hypercli_cli/__init__.py +0 -1
  9. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/.gitignore +0 -0
  10. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/agents.py +0 -0
  11. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/billing.py +0 -0
  12. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/cli.py +0 -0
  13. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/comfyui.py +0 -0
  14. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/embed.py +0 -0
  15. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/files.py +0 -0
  16. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/flow.py +0 -0
  17. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/jobs.py +0 -0
  18. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/keys.py +0 -0
  19. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/llm.py +0 -0
  20. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/onboard.py +0 -0
  21. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/output.py +0 -0
  22. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/renders.py +0 -0
  23. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/stt.py +0 -0
  24. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/tui/__init__.py +0 -0
  25. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/tui/job_monitor.py +0 -0
  26. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/user.py +0 -0
  27. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/voice.py +0 -0
  28. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/hypercli_cli/wallet.py +0 -0
  29. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_agent_env_resolution.py +0 -0
  30. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_config_command.py +0 -0
  31. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_exec_shell_dryrun.py +0 -0
  32. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_flow_command.py +0 -0
  33. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_flow_visibility.py +0 -0
  34. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_jobs_list_tags.py +0 -0
  35. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_keys_command.py +0 -0
  36. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_llm_command.py +0 -0
  37. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_me_command.py +0 -0
  38. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_openclaw_config.py +0 -0
  39. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_voice_command.py +0 -0
  40. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/tests/test_wallet_command.py +0 -0
  41. {hypercli_cli-2026.4.22 → hypercli_cli-2026.5.5}/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.22
3
+ Version: 2026.5.5
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.22
12
+ Requires-Dist: hypercli-sdk>=2026.5.5
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.22; extra == 'all'
23
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.5.5; 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.22; extra == 'comfyui'
27
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.5.5; 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'
@@ -81,6 +81,7 @@ hyper flow text-to-image "a cinematic portrait" --x402
81
81
  # HyperClaw checkout/config
82
82
  hyper agent plans
83
83
  hyper agent subscribe basic
84
+ hyper agent activate-code PROMO123
84
85
  hyper agent config env
85
86
  hyper agent exec <agent_id> "ls -la"
86
87
  hyper agent shell <agent_id>
@@ -41,6 +41,7 @@ hyper flow text-to-image "a cinematic portrait" --x402
41
41
  # HyperClaw checkout/config
42
42
  hyper agent plans
43
43
  hyper agent subscribe basic
44
+ hyper agent activate-code PROMO123
44
45
  hyper agent config env
45
46
  hyper agent exec <agent_id> "ls -la"
46
47
  hyper agent shell <agent_id>
@@ -0,0 +1 @@
1
+ __version__ = "2026.5.5"
@@ -498,6 +498,34 @@ def subscription_summary(
498
498
  )
499
499
 
500
500
 
501
+ @app.command("activate-code")
502
+ def activate_code(
503
+ code: str = typer.Argument(..., help="Activation or promo code to redeem"),
504
+ dev: bool = typer.Option(False, "--dev", help="Use dev API"),
505
+ json_output: bool = typer.Option(False, "--json", help="Print raw JSON response"),
506
+ ):
507
+ """Redeem a HyperClaw activation code for the current account."""
508
+ client = _get_agent_query_client(dev)
509
+ result = client.agent.redeem_grant_code(code)
510
+
511
+ if json_output:
512
+ console.print_json(json.dumps(result, indent=2, default=str))
513
+ return
514
+
515
+ grant = result.get("grant") or {}
516
+ entitlement = result.get("entitlement") or {}
517
+ console.print("\n[bold]HyperClaw Code Activated[/bold]\n")
518
+ console.print(f"Code: [bold]{grant.get('code') or code}[/bold]")
519
+ console.print(f"Plan: [bold]{entitlement.get('plan_name') or entitlement.get('plan_id') or grant.get('plan_id') or ''}[/bold]")
520
+ if entitlement.get("starts_at"):
521
+ console.print(f"Starts: {entitlement.get('starts_at')}")
522
+ if entitlement.get("expires_at"):
523
+ console.print(f"Expires: {entitlement.get('expires_at')}")
524
+ tags = entitlement.get("tags") or grant.get("tags") or []
525
+ if tags:
526
+ console.print(f"Tags: {', '.join(str(tag) for tag in tags)}")
527
+
528
+
501
529
  @app.command("models")
502
530
  def models(
503
531
  dev: bool = typer.Option(False, "--dev", help="Use dev API"),
@@ -383,11 +383,10 @@ def launch(
383
383
  if raw_tcp_ports:
384
384
  console.print(f" TCP: raw TCP ports: {', '.join(map(str, raw_tcp_ports))}")
385
385
  # Display cold boot status
386
- import sys
387
386
  if job.cold_boot:
388
- console.print("[yellow]⏳ Cold boot — instance provisioning may take up to 15 minutes[/]", file=sys.stderr)
387
+ console.print("[yellow]⏳ Cold boot — instance provisioning may take up to 15 minutes[/]")
389
388
  else:
390
- console.print("[green]🚀 Warm instance available — should be ready in under a minute[/]", file=sys.stderr)
389
+ console.print("[green]🚀 Warm instance available — should be ready in under a minute[/]")
391
390
  else:
392
391
  success(f"Instance launched: {job.job_id}")
393
392
  console.print(f" State: {job.state}")
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypercli-cli"
7
- version = "2026.4.22"
7
+ version = "2026.5.5"
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.22",
16
+ "hypercli-sdk>=2026.5.5",
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.22",
28
+ "hypercli-sdk[comfyui]>=2026.5.5",
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.22",
41
+ "hypercli-sdk[comfyui]>=2026.5.5",
42
42
  "x402[httpx,evm]>=2.0.0",
43
43
  "eth-account>=0.13.0",
44
44
  "web3>=7.0.0",
@@ -108,3 +108,32 @@ def test_extract_plan_purchase_url_from_discovery_ignores_nonmatching_resources(
108
108
  }
109
109
 
110
110
  assert agent_mod._extract_plan_purchase_url_from_discovery(discovery, "basic") is None
111
+
112
+
113
+ def test_agent_activate_code_redeems_via_sdk(monkeypatch):
114
+ class _FakeAgent:
115
+ def redeem_grant_code(self, code: str):
116
+ assert code == "promo-123"
117
+ return {
118
+ "grant": {"id": "grant-1", "type": "ACTIVATION_CODE", "code": "promo-123", "plan_id": "basic"},
119
+ "entitlement": {
120
+ "id": "ent-1",
121
+ "plan_id": "basic",
122
+ "plan_name": "Basic",
123
+ "starts_at": "2026-04-27T00:00:00Z",
124
+ "expires_at": "2026-05-27T00:00:00Z",
125
+ "tags": ["customer=acme"],
126
+ },
127
+ }
128
+
129
+ class _FakeClient:
130
+ agent = _FakeAgent()
131
+
132
+ monkeypatch.setattr(agent_mod, "_get_agent_query_client", lambda dev: _FakeClient())
133
+
134
+ result = runner.invoke(app, ["agent", "activate-code", "promo-123"])
135
+
136
+ assert result.exit_code == 0
137
+ assert "HyperClaw Code Activated" in result.output
138
+ assert "promo-123" in result.output
139
+ assert "Basic" in result.output
@@ -1 +0,0 @@
1
- __version__ = "2026.4.22"