hypercli-cli 2026.6.16__tar.gz → 2026.6.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 (49) hide show
  1. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/PKG-INFO +4 -4
  2. hypercli_cli-2026.6.21/hypercli_cli/__init__.py +1 -0
  3. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/agent.py +5 -1
  4. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/pyproject.toml +4 -4
  5. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_agent_subscribe_command.py +31 -1
  6. hypercli_cli-2026.6.16/hypercli_cli/__init__.py +0 -1
  7. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/.gitignore +0 -0
  8. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/README.md +0 -0
  9. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/agents.py +0 -0
  10. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/billing.py +0 -0
  11. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/cli.py +0 -0
  12. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/comfyui.py +0 -0
  13. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/embed.py +0 -0
  14. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/files.py +0 -0
  15. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/flow.py +0 -0
  16. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/instances.py +0 -0
  17. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/jobs.py +0 -0
  18. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/keys.py +0 -0
  19. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/llm.py +0 -0
  20. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/memory.py +0 -0
  21. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/memory_captions.py +0 -0
  22. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/memory_documents.py +0 -0
  23. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/onboard.py +0 -0
  24. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/output.py +0 -0
  25. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/renders.py +0 -0
  26. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/stt.py +0 -0
  27. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/tui/__init__.py +0 -0
  28. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/tui/job_monitor.py +0 -0
  29. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/user.py +0 -0
  30. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/voice.py +0 -0
  31. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/hypercli_cli/wallet.py +0 -0
  32. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_agent_env_resolution.py +0 -0
  33. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_agents_budget_command.py +0 -0
  34. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_config_command.py +0 -0
  35. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_exec_shell_dryrun.py +0 -0
  36. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_flow_command.py +0 -0
  37. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_flow_visibility.py +0 -0
  38. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_jobs_list_tags.py +0 -0
  39. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_keys_command.py +0 -0
  40. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_llm_command.py +0 -0
  41. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_me_command.py +0 -0
  42. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_memory_captions.py +0 -0
  43. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_memory_command.py +0 -0
  44. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_memory_documents.py +0 -0
  45. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_openclaw_config.py +0 -0
  46. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_status_command.py +0 -0
  47. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_voice_command.py +0 -0
  48. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.21}/tests/test_wallet_command.py +0 -0
  49. {hypercli_cli-2026.6.16 → hypercli_cli-2026.6.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.6.16
3
+ Version: 2026.6.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.6.16
12
+ Requires-Dist: hypercli-sdk>=2026.6.21
13
13
  Requires-Dist: mutagen>=1.47.0
14
14
  Requires-Dist: openai>=2.8.1
15
15
  Requires-Dist: pysubs2>=1.8.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.6.16; extra == 'all'
23
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.6.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.6.16; extra == 'comfyui'
27
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.6.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'
@@ -0,0 +1 @@
1
+ __version__ = "2026.6.21"
@@ -502,11 +502,15 @@ def subscription_summary(
502
502
  def activate_code(
503
503
  code: str = typer.Argument(..., help="Activation or promo code to redeem"),
504
504
  dev: bool = typer.Option(False, "--dev", help="Use dev API"),
505
+ extend_existing: bool = typer.Option(False, "--extend-existing", help="Extend the matching entitlement instead of creating a new one"),
505
506
  json_output: bool = typer.Option(False, "--json", help="Print raw JSON response"),
506
507
  ):
507
508
  """Redeem a HyperClaw activation code for the current account."""
508
509
  client = _get_agent_query_client(dev)
509
- result = client.agent.redeem_grant_code(code)
510
+ result = client.agent.redeem_grant_code(
511
+ code,
512
+ extend_existing=True if extend_existing else None,
513
+ )
510
514
 
511
515
  if json_output:
512
516
  console.print_json(json.dumps(result, indent=2, default=str))
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypercli-cli"
7
- version = "2026.6.16"
7
+ version = "2026.6.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.6.16",
16
+ "hypercli-sdk>=2026.6.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.6.16",
28
+ "hypercli-sdk[comfyui]>=2026.6.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.6.16",
41
+ "hypercli-sdk[comfyui]>=2026.6.21",
42
42
  "x402[httpx,evm]>=2.0.0",
43
43
  "eth-account>=0.13.0",
44
44
  "web3>=7.0.0",
@@ -112,8 +112,9 @@ def test_extract_plan_purchase_url_from_discovery_ignores_nonmatching_resources(
112
112
 
113
113
  def test_agent_activate_code_redeems_via_sdk(monkeypatch):
114
114
  class _FakeAgent:
115
- def redeem_grant_code(self, code: str):
115
+ def redeem_grant_code(self, code: str, **kwargs):
116
116
  assert code == "promo-123"
117
+ assert kwargs == {"extend_existing": None}
117
118
  return {
118
119
  "grant": {"id": "grant-1", "type": "ACTIVATION_CODE", "code": "promo-123", "plan_id": "basic"},
119
120
  "entitlement": {
@@ -137,3 +138,32 @@ def test_agent_activate_code_redeems_via_sdk(monkeypatch):
137
138
  assert "HyperClaw Code Activated" in result.output
138
139
  assert "promo-123" in result.output
139
140
  assert "Basic" in result.output
141
+
142
+
143
+ def test_agent_activate_code_can_request_extension(monkeypatch):
144
+ calls = []
145
+
146
+ class _FakeAgent:
147
+ def redeem_grant_code(self, code: str, **kwargs):
148
+ calls.append((code, kwargs))
149
+ return {
150
+ "grant": {"id": "grant-1", "type": "ACTIVATION_CODE", "code": code, "plan_id": "basic"},
151
+ "entitlement": {
152
+ "id": "ent-1",
153
+ "plan_id": "basic",
154
+ "plan_name": "Basic",
155
+ "starts_at": "2026-04-27T00:00:00Z",
156
+ "expires_at": "2026-05-27T00:00:00Z",
157
+ "tags": [],
158
+ },
159
+ }
160
+
161
+ class _FakeClient:
162
+ agent = _FakeAgent()
163
+
164
+ monkeypatch.setattr(agent_mod, "_get_agent_query_client", lambda dev: _FakeClient())
165
+
166
+ result = runner.invoke(app, ["agent", "activate-code", "promo-123", "--extend-existing"])
167
+
168
+ assert result.exit_code == 0
169
+ assert calls == [("promo-123", {"extend_existing": True})]
@@ -1 +0,0 @@
1
- __version__ = "2026.6.16"