hypercli-cli 2026.3.8__tar.gz → 2026.3.10__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 (27) hide show
  1. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/PKG-INFO +4 -4
  2. hypercli_cli-2026.3.10/hypercli_cli/__init__.py +1 -0
  3. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/claw.py +19 -9
  4. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/pyproject.toml +4 -4
  5. hypercli_cli-2026.3.8/hypercli_cli/__init__.py +0 -1
  6. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/.gitignore +0 -0
  7. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/README.md +0 -0
  8. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/agents.py +0 -0
  9. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/billing.py +0 -0
  10. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/cli.py +0 -0
  11. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/comfyui.py +0 -0
  12. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/embed.py +0 -0
  13. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/flow.py +0 -0
  14. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/instances.py +0 -0
  15. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/jobs.py +0 -0
  16. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/keys.py +0 -0
  17. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/onboard.py +0 -0
  18. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/output.py +0 -0
  19. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/renders.py +0 -0
  20. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/stt.py +0 -0
  21. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/tui/__init__.py +0 -0
  22. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/tui/job_monitor.py +0 -0
  23. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/user.py +0 -0
  24. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/voice.py +0 -0
  25. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/wallet.py +0 -0
  26. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/tests/test_exec_shell_dryrun.py +0 -0
  27. {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/tests/test_jobs_list_tags.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hypercli-cli
3
- Version: 2026.3.8
3
+ Version: 2026.3.10
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.3.8
12
+ Requires-Dist: hypercli-sdk>=2026.3.10
13
13
  Requires-Dist: mutagen>=1.47.0
14
14
  Requires-Dist: pyyaml>=6.0
15
15
  Requires-Dist: rich>=14.2.0
@@ -19,11 +19,11 @@ Provides-Extra: all
19
19
  Requires-Dist: argon2-cffi>=25.0.0; extra == 'all'
20
20
  Requires-Dist: eth-account>=0.13.0; extra == 'all'
21
21
  Requires-Dist: faster-whisper>=1.1.0; extra == 'all'
22
- Requires-Dist: hypercli-sdk[comfyui]>=2026.3.8; extra == 'all'
22
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.3.10; extra == 'all'
23
23
  Requires-Dist: web3>=7.0.0; extra == 'all'
24
24
  Requires-Dist: x402[evm,httpx]>=2.0.0; extra == 'all'
25
25
  Provides-Extra: comfyui
26
- Requires-Dist: hypercli-sdk[comfyui]>=2026.3.8; extra == 'comfyui'
26
+ Requires-Dist: hypercli-sdk[comfyui]>=2026.3.10; extra == 'comfyui'
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: pytest>=8.0.0; extra == 'dev'
29
29
  Requires-Dist: ruff>=0.3.0; extra == 'dev'
@@ -0,0 +1 @@
1
+ __version__ = "2026.3.10"
@@ -542,6 +542,11 @@ def login(
542
542
  OPENCLAW_CONFIG_PATH = Path.home() / ".openclaw" / "openclaw.json"
543
543
 
544
544
 
545
+ def _resolve_api_base(base_url: str | None = None, dev: bool = False) -> str:
546
+ """Resolve API base from flag/env, then fall back to dev/prod defaults."""
547
+ return (base_url or os.environ.get("HYPERCLAW_API_BASE") or (DEV_API_BASE if dev else PROD_API_BASE)).rstrip("/")
548
+
549
+
545
550
  def fetch_models(api_key: str, api_base: str = PROD_API_BASE) -> list[dict]:
546
551
  """Fetch available models from LiteLLM /v1/models (served by HyperClaw)."""
547
552
  import httpx
@@ -645,7 +650,7 @@ def openclaw_setup(
645
650
  # Always set embedding provider (reuses same API key)
646
651
  config.setdefault("agents", {}).setdefault("defaults", {})
647
652
  config["agents"]["defaults"]["memorySearch"] = {
648
- "provider": "hyperclaw-embed",
653
+ "provider": "openai",
649
654
  "model": "qwen3-embedding-4b",
650
655
  "remote": {
651
656
  "baseUrl": "https://api.hyperclaw.app/v1/",
@@ -699,6 +704,7 @@ def _resolve_api_key(key: str | None) -> str:
699
704
 
700
705
  def _config_openclaw(api_key: str, models: list[dict], api_base: str = PROD_API_BASE) -> dict:
701
706
  """OpenClaw openclaw.json provider snippet (LLM + embeddings)."""
707
+ api_base = api_base.rstrip("/")
702
708
  chat_models = [m for m in models if m.get("mode") != "embedding"]
703
709
  embedding_models = [m for m in models if m.get("mode") == "embedding"]
704
710
  return {
@@ -728,7 +734,7 @@ def _config_openclaw(api_key: str, models: list[dict], api_base: str = PROD_API_
728
734
  **{f"hyperclaw-embed/{m['id']}": {"alias": m['id'].split('-')[0]} for m in embedding_models},
729
735
  },
730
736
  "memorySearch": {
731
- "provider": "hyperclaw-embed",
737
+ "provider": "openai",
732
738
  "model": "qwen3-embedding-4b",
733
739
  "remote": {
734
740
  "baseUrl": f"{api_base}/v1/",
@@ -740,8 +746,9 @@ def _config_openclaw(api_key: str, models: list[dict], api_base: str = PROD_API_
740
746
  }
741
747
 
742
748
 
743
- def _config_opencode(api_key: str, models: list[dict]) -> dict:
749
+ def _config_opencode(api_key: str, models: list[dict], api_base: str = PROD_API_BASE) -> dict:
744
750
  """OpenCode opencode.json provider snippet."""
751
+ api_base = api_base.rstrip("/")
745
752
  model_entries = {}
746
753
  for m in models:
747
754
  model_entries[m["id"]] = {"name": m["id"]}
@@ -752,7 +759,7 @@ def _config_opencode(api_key: str, models: list[dict]) -> dict:
752
759
  "npm": "@ai-sdk/openai-compatible",
753
760
  "name": "HyperCLI",
754
761
  "options": {
755
- "baseURL": "https://api.hyperclaw.app/v1",
762
+ "baseURL": f"{api_base}/v1",
756
763
  "apiKey": api_key,
757
764
  },
758
765
  "models": model_entries,
@@ -761,11 +768,12 @@ def _config_opencode(api_key: str, models: list[dict]) -> dict:
761
768
  }
762
769
 
763
770
 
764
- def _config_env(api_key: str, models: list[dict]) -> str:
771
+ def _config_env(api_key: str, models: list[dict], api_base: str = PROD_API_BASE) -> str:
765
772
  """Shell env vars for generic OpenAI-compatible tools."""
773
+ api_base = api_base.rstrip("/")
766
774
  lines = [
767
775
  f'export OPENAI_API_KEY="{api_key}"',
768
- 'export OPENAI_BASE_URL="https://api.hyperclaw.app/v1"',
776
+ f'export OPENAI_BASE_URL="{api_base}/v1"',
769
777
  f'# Available models: {", ".join(m["id"] for m in models)}',
770
778
  ]
771
779
  return "\n".join(lines)
@@ -803,6 +811,7 @@ def config_cmd(
803
811
  help=f"Output format: {', '.join(FORMAT_CHOICES)}. Omit to show all.",
804
812
  ),
805
813
  key: str = typer.Option(None, "--key", "-k", help="API key (sk-...). Falls back to ~/.hypercli/claw-key.json"),
814
+ base_url: str = typer.Option(None, "--base-url", help="HyperClaw API base URL. Falls back to HYPERCLAW_API_BASE, then --dev/prod defaults"),
806
815
  apply: bool = typer.Option(False, "--apply", help="Write config to the appropriate file (openclaw/opencode only)"),
807
816
  dev: bool = typer.Option(False, "--dev", help="Use dev API"),
808
817
  ):
@@ -812,11 +821,12 @@ def config_cmd(
812
821
  hyper claw config # Show all configs
813
822
  hyper claw config openclaw # OpenClaw snippet
814
823
  hyper claw config opencode --key sk-... # OpenCode with explicit key
824
+ hyper claw config openclaw --base-url https://dev-api.hyperclaw.app
815
825
  hyper claw config openclaw --apply # Write directly to openclaw.json
816
826
  hyper claw config env # Shell export lines
817
827
  """
818
828
  api_key = _resolve_api_key(key)
819
- api_base = DEV_API_BASE if dev else PROD_API_BASE
829
+ api_base = _resolve_api_base(base_url, dev)
820
830
 
821
831
  # Validate key & fetch models
822
832
  console.print(f"[dim]Validating key against {api_base}...[/dim]")
@@ -836,12 +846,12 @@ def config_cmd(
836
846
  snippet = _config_openclaw(api_key, models, api_base)
837
847
  _show_snippet("OpenClaw", "~/.openclaw/openclaw.json", snippet, apply, OPENCLAW_CONFIG_PATH)
838
848
  elif fmt == "opencode":
839
- snippet = _config_opencode(api_key, models)
849
+ snippet = _config_opencode(api_key, models, api_base)
840
850
  target = Path.cwd() / "opencode.json"
841
851
  _show_snippet("OpenCode", "opencode.json", snippet, apply, target)
842
852
  elif fmt == "env":
843
853
  console.print("[bold]── Shell Environment ──[/bold]")
844
- console.print(_config_env(api_key, models))
854
+ console.print(_config_env(api_key, models, api_base))
845
855
  console.print()
846
856
 
847
857
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypercli-cli"
7
- version = "2026.3.8"
7
+ version = "2026.3.10"
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.3.8",
16
+ "hypercli-sdk>=2026.3.10",
17
17
  "typer>=0.20.0",
18
18
  "rich>=14.2.0",
19
19
  "websocket-client>=1.6.0",
@@ -24,7 +24,7 @@ dependencies = [
24
24
 
25
25
  [project.optional-dependencies]
26
26
  comfyui = [
27
- "hypercli-sdk[comfyui]>=2026.3.8",
27
+ "hypercli-sdk[comfyui]>=2026.3.10",
28
28
  ]
29
29
  wallet = [
30
30
  "x402[httpx,evm]>=2.0.0",
@@ -37,7 +37,7 @@ stt = [
37
37
  "faster-whisper>=1.1.0",
38
38
  ]
39
39
  all = [
40
- "hypercli-sdk[comfyui]>=2026.3.8",
40
+ "hypercli-sdk[comfyui]>=2026.3.10",
41
41
  "x402[httpx,evm]>=2.0.0",
42
42
  "eth-account>=0.13.0",
43
43
  "web3>=7.0.0",
@@ -1 +0,0 @@
1
- __version__ = "2026.3.8"