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.
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/PKG-INFO +4 -4
- hypercli_cli-2026.3.10/hypercli_cli/__init__.py +1 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/claw.py +19 -9
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/pyproject.toml +4 -4
- hypercli_cli-2026.3.8/hypercli_cli/__init__.py +0 -1
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/.gitignore +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/README.md +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/agents.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/billing.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/cli.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/comfyui.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/embed.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/flow.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/instances.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/jobs.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/keys.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/onboard.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/output.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/renders.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/stt.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/tui/__init__.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/tui/job_monitor.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/user.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/voice.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/hypercli_cli/wallet.py +0 -0
- {hypercli_cli-2026.3.8 → hypercli_cli-2026.3.10}/tests/test_exec_shell_dryrun.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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="
|
|
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 =
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|
|
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
|