84 lines
3.6 KiB
PowerShell
84 lines
3.6 KiB
PowerShell
#!/usr/bin/env pwsh
|
|
# Wrapper script for the Hive CLI (Windows).
|
|
# Uses uv to run the hive command in the project's virtual environment.
|
|
#
|
|
# On Windows, User-level environment variables (set via quickstart.ps1) are
|
|
# stored in the registry but may not be loaded into the current terminal
|
|
# session (VS Code terminals, Windows Terminal tabs, etc.). This script
|
|
# explicitly loads them before running the agent — the Windows equivalent
|
|
# of Linux shells sourcing ~/.bashrc.
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
|
|
|
# ── Validate project directory ──────────────────────────────────────
|
|
|
|
if ((Get-Location).Path -ne $ScriptDir) {
|
|
Write-Error "hive must be run from the project directory.`nCurrent directory: $(Get-Location)`nExpected directory: $ScriptDir`n`nRun: cd $ScriptDir"
|
|
exit 1
|
|
}
|
|
|
|
if (-not (Test-Path (Join-Path $ScriptDir "pyproject.toml")) -or -not (Test-Path (Join-Path $ScriptDir "core"))) {
|
|
Write-Error "Not a valid Hive project directory: $ScriptDir"
|
|
exit 1
|
|
}
|
|
|
|
if (-not (Test-Path (Join-Path $ScriptDir ".venv"))) {
|
|
Write-Error "Virtual environment not found. Run .\quickstart.ps1 first to set up the project."
|
|
exit 1
|
|
}
|
|
|
|
# ── Ensure uv is available ──────────────────────────────────────────
|
|
|
|
if (-not (Get-Command uv -ErrorAction SilentlyContinue)) {
|
|
# Check default install location before giving up
|
|
$uvExe = Join-Path $env:USERPROFILE ".local\bin\uv.exe"
|
|
if (Test-Path $uvExe) {
|
|
$env:Path = (Split-Path $uvExe) + ";" + $env:Path
|
|
} else {
|
|
Write-Error "uv is not installed. Run .\quickstart.ps1 first."
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# ── Load environment variables from Windows Registry ────────────────
|
|
# Windows stores User-level env vars in the registry. New terminal
|
|
# sessions may not have them (especially VS Code integrated terminals).
|
|
# Load them explicitly so agents can find their API keys.
|
|
|
|
$configPath = Join-Path (Join-Path $env:USERPROFILE ".hive") "configuration.json"
|
|
if (Test-Path $configPath) {
|
|
try {
|
|
$config = Get-Content $configPath -Raw | ConvertFrom-Json
|
|
$envVarName = $config.llm.api_key_env_var
|
|
if ($envVarName) {
|
|
$val = [System.Environment]::GetEnvironmentVariable($envVarName, "User")
|
|
if ($val -and -not (Test-Path "Env:\$envVarName" -ErrorAction SilentlyContinue)) {
|
|
Set-Item -Path "Env:\$envVarName" -Value $val
|
|
}
|
|
}
|
|
} catch {
|
|
# Non-fatal: agent may still work if env vars are already set
|
|
}
|
|
}
|
|
|
|
# Load HIVE_CREDENTIAL_KEY for encrypted credential store
|
|
if (-not $env:HIVE_CREDENTIAL_KEY) {
|
|
# 1. Windows User env var (legacy quickstart installs)
|
|
$credKey = [System.Environment]::GetEnvironmentVariable("HIVE_CREDENTIAL_KEY", "User")
|
|
if ($credKey) {
|
|
$env:HIVE_CREDENTIAL_KEY = $credKey
|
|
} else {
|
|
# 2. File-based storage (new quickstart + matches quickstart.sh)
|
|
$credKeyFile = Join-Path $env:USERPROFILE ".hive\secrets\credential_key"
|
|
if (Test-Path $credKeyFile) {
|
|
$env:HIVE_CREDENTIAL_KEY = (Get-Content $credKeyFile -Raw).Trim()
|
|
}
|
|
}
|
|
}
|
|
|
|
# ── Run the Hive CLI ────────────────────────────────────────────────
|
|
# PYTHONUTF8=1: use UTF-8 for default encoding (fixes charmap decode errors on Windows)
|
|
$env:PYTHONUTF8 = "1"
|
|
& uv run hive @args
|