hypercli-cli 0.7.9__tar.gz → 0.7.11__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hypercli-cli
3
- Version: 0.7.9
3
+ Version: 0.7.11
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
@@ -301,24 +301,38 @@ def plans(
301
301
 
302
302
  OPENCLAW_CONFIG_PATH = Path.home() / ".openclaw" / "openclaw.json"
303
303
 
304
- HYPERCLAW_MODELS = [
305
- {
306
- "id": "kimi-k2.5",
307
- "name": "Kimi K2.5",
308
- "reasoning": False,
309
- "input": ["text"],
310
- "contextWindow": 200000,
311
- "maxTokens": 8192
312
- },
313
- {
314
- "id": "kimi-for-coding",
315
- "name": "Kimi for Coding",
316
- "reasoning": False,
317
- "input": ["text"],
318
- "contextWindow": 200000,
319
- "maxTokens": 8192
320
- }
321
- ]
304
+
305
+ def fetch_models(api_base: str = PROD_API_BASE) -> list[dict]:
306
+ """Fetch available models from HyperClaw /v1/models endpoint."""
307
+ import httpx
308
+ try:
309
+ resp = httpx.get(f"{api_base}/api/v1/models", timeout=10)
310
+ resp.raise_for_status()
311
+ data = resp.json().get("data", [])
312
+ return [
313
+ {
314
+ "id": m["id"],
315
+ "name": m.get("id", "").replace("-", " ").title(),
316
+ "reasoning": False,
317
+ "input": ["text"],
318
+ "contextWindow": m.get("context_window", 200000),
319
+ "maxTokens": m.get("max_tokens", 8192),
320
+ }
321
+ for m in data
322
+ ]
323
+ except Exception as e:
324
+ console.print(f"[yellow]⚠ Could not fetch models from API: {e}[/yellow]")
325
+ console.print("[yellow] Using fallback model list[/yellow]")
326
+ return [
327
+ {
328
+ "id": "kimi-k2.5",
329
+ "name": "Kimi K2.5",
330
+ "reasoning": False,
331
+ "input": ["text"],
332
+ "contextWindow": 200000,
333
+ "maxTokens": 8192,
334
+ },
335
+ ]
322
336
 
323
337
 
324
338
  @app.command("openclaw-setup")
@@ -352,19 +366,22 @@ def openclaw_setup(
352
366
  else:
353
367
  config = {}
354
368
 
369
+ # Fetch current model list from API
370
+ models = fetch_models()
371
+
355
372
  # Patch only models.providers.hyperclaw
356
373
  config.setdefault("models", {}).setdefault("providers", {})
357
374
  config["models"]["providers"]["hyperclaw"] = {
358
375
  "baseUrl": "https://api.hyperclaw.app/v1",
359
376
  "apiKey": api_key,
360
377
  "api": "openai-completions",
361
- "models": HYPERCLAW_MODELS,
378
+ "models": models,
362
379
  }
363
380
 
364
381
  # Optionally set default model
365
382
  if default:
366
383
  config.setdefault("agents", {}).setdefault("defaults", {}).setdefault("model", {})
367
- config["agents"]["defaults"]["model"]["primary"] = "hyperclaw/kimi-k2.5"
384
+ config["agents"]["defaults"]["model"]["primary"] = f"hyperclaw/{models[0]['id']}"
368
385
 
369
386
  # Write back
370
387
  OPENCLAW_CONFIG_PATH.parent.mkdir(parents=True, exist_ok=True)
@@ -374,6 +391,8 @@ def openclaw_setup(
374
391
 
375
392
  console.print(f"[green]✅ Patched {OPENCLAW_CONFIG_PATH}[/green]")
376
393
  console.print(f" provider: hyperclaw key: {api_key[:16]}...")
394
+ for m in models:
395
+ console.print(f" model: hyperclaw/{m['id']}")
377
396
  if default:
378
- console.print(" default model: hyperclaw/kimi-k2.5")
397
+ console.print(f" default model: hyperclaw/{models[0]['id']}")
379
398
  console.print("\nRun: [bold]openclaw gateway restart[/bold]")
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypercli-cli"
7
- version = "0.7.9"
7
+ version = "0.7.11"
8
8
  description = "CLI for HyperCLI - GPU orchestration and LLM API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes