feat: add hive llm healthcheck

This commit is contained in:
Richard Tang
2026-04-02 14:50:05 -07:00
parent 4d877469d5
commit 45cfae5217
3 changed files with 85 additions and 3 deletions
+16
View File
@@ -1561,6 +1561,21 @@ def _open_browser(url: str) -> None:
pass # Best-effort — don't crash if browser can't open
def _ping_hive_gateway_availability(from_source: str) -> None:
"""Ping Hive gateway availability for lightweight reachability logging."""
from urllib import error, parse, request
base_url = "https://api.adenhq.com/v1/gateway/availability"
query = parse.urlencode({"from": from_source})
url = f"{base_url}?{query}"
try:
with request.urlopen(url, timeout=5) as response:
response.read()
except (error.URLError, TimeoutError, ValueError):
pass
def _format_subprocess_output(output: str | bytes | None, limit: int = 2000) -> str:
"""Return subprocess output as trimmed text safe for console logging."""
if not output:
@@ -1729,5 +1744,6 @@ def cmd_serve(args: argparse.Namespace) -> int:
def cmd_open(args: argparse.Namespace) -> int:
"""Start the HTTP API server and open the dashboard in the browser."""
_ping_hive_gateway_availability("hive-open")
args.open = True
return cmd_serve(args)
+27
View File
@@ -23,9 +23,23 @@ $UvHelperPath = Join-Path $ScriptDir "scripts\uv-discovery.ps1"
# Hive LLM router endpoint
$HiveLlmEndpoint = "https://api.adenhq.com"
$HiveLlmAvailabilityEndpoint = "$HiveLlmEndpoint/v1/gateway/availability"
. $UvHelperPath
function Test-HiveGatewayAvailability {
param([string]$From)
try {
$url = "$HiveLlmAvailabilityEndpoint?from=$From"
$result = Invoke-RestMethod -Uri $url -Method Get -TimeoutSec 5 -ErrorAction Stop
if ($result -eq $true) { return "available" }
return "unavailable"
} catch {
return "unknown"
}
}
# ============================================================
# Colors / helpers
# ============================================================
@@ -1119,9 +1133,17 @@ if ($PrevSubMode -or $PrevProvider) {
}
}
$HiveGatewayAvailability = Test-HiveGatewayAvailability -From "quickstart"
# ── Show unified provider selection menu ─────────────────────
Write-Color -Text "Select your default LLM provider:" -Color White
Write-Host ""
switch ($HiveGatewayAvailability) {
"available" { Write-Ok "Hive LLM availability check: available" }
"unavailable" { Write-Warn "Hive LLM availability check: currently unavailable" }
default { Write-Warn "Hive LLM availability check: could not verify" }
}
Write-Host ""
Write-Color -Text " Subscription modes (no API key purchase needed):" -Color Cyan
# 1) Claude Code
@@ -1164,6 +1186,11 @@ Write-Host " " -NoNewline
Write-Color -Text "6" -Color Cyan -NoNewline
Write-Host ") Hive LLM " -NoNewline
Write-Color -Text "(use your Hive API key)" -Color DarkGray -NoNewline
switch ($HiveGatewayAvailability) {
"available" { Write-Color -Text " (available)" -Color Green -NoNewline }
"unavailable" { Write-Color -Text " (unavailable)" -Color Yellow -NoNewline }
default { Write-Color -Text " (status unknown)" -Color Yellow -NoNewline }
}
if ($HiveCredDetected) { Write-Color -Text " (credential detected)" -Color Green } else { Write-Host "" }
# 7) Antigravity
+42 -3
View File
@@ -34,6 +34,22 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Hive LLM router endpoint
HIVE_LLM_ENDPOINT="https://api.adenhq.com"
HIVE_LLM_AVAILABILITY_ENDPOINT="$HIVE_LLM_ENDPOINT/v1/gateway/availability"
check_hive_llm_availability() {
local from_source="$1"
if ! command -v curl >/dev/null 2>&1; then
return 2
fi
local response
response="$(curl -fsSL --max-time 5 "${HIVE_LLM_AVAILABILITY_ENDPOINT}?from=${from_source}" 2>/dev/null)" || return 2
if [ "$response" = "true" ]; then
return 0
fi
return 1
}
# Helper function for prompts
prompt_yes_no() {
@@ -1151,9 +1167,24 @@ if [ -n "$PREV_SUB_MODE" ] || [ -n "$PREV_PROVIDER" ]; then
fi
fi
HIVE_LLM_AVAILABLE="unknown"
if check_hive_llm_availability "quickstart"; then
HIVE_LLM_AVAILABLE="yes"
elif [ $? -eq 1 ]; then
HIVE_LLM_AVAILABLE="no"
fi
# ── Show unified provider selection menu ─────────────────────
echo -e "${BOLD}Select your default LLM provider:${NC}"
echo ""
if [ "$HIVE_LLM_AVAILABLE" = "yes" ]; then
echo -e "${GREEN}${NC} Hive LLM availability check: ${DIM}available${NC}"
elif [ "$HIVE_LLM_AVAILABLE" = "no" ]; then
echo -e "${YELLOW}${NC} Hive LLM availability check: ${DIM}currently unavailable${NC}"
else
echo -e "${YELLOW}${NC} Hive LLM availability check: ${DIM}could not verify${NC}"
fi
echo ""
echo -e " ${CYAN}${BOLD}Subscription modes (no API key purchase needed):${NC}"
# 1) Claude Code
@@ -1192,10 +1223,18 @@ else
fi
# 6) Hive LLM
if [ "$HIVE_CRED_DETECTED" = true ]; then
echo -e " ${CYAN}6)${NC} Hive LLM ${DIM}(use your Hive API key)${NC} ${GREEN}(credential detected)${NC}"
if [ "$HIVE_LLM_AVAILABLE" = "yes" ]; then
HIVE_LLM_STATUS="${GREEN}(available)${NC}"
elif [ "$HIVE_LLM_AVAILABLE" = "no" ]; then
HIVE_LLM_STATUS="${YELLOW}(unavailable)${NC}"
else
echo -e " ${CYAN}6)${NC} Hive LLM ${DIM}(use your Hive API key)${NC}"
HIVE_LLM_STATUS="${YELLOW}(status unknown)${NC}"
fi
if [ "$HIVE_CRED_DETECTED" = true ]; then
echo -e " ${CYAN}6)${NC} Hive LLM ${DIM}(use your Hive API key)${NC} $HIVE_LLM_STATUS ${GREEN}(credential detected)${NC}"
else
echo -e " ${CYAN}6)${NC} Hive LLM ${DIM}(use your Hive API key)${NC} $HIVE_LLM_STATUS"
fi
# 7) Antigravity