diligence/setup.ps1
Claude a6e6e2f54f v2.0: dual deployment — pip install (SQLite) + Docker (PostgreSQL)
Architecture:
- Moved backend/app/ to diligence/ Python package
- Dialect-agnostic models (Uuid + JSON, no PostgreSQL imports)
- Auto-detect database: empty DATABASE_URL → SQLite at ~/.diligence/data.db
- Cross-dialect migrations (inspector-based, no raw PostgreSQL DDL)
- FastAPI serves pre-built React frontend for pip path
- CLI entry point: diligence [--port] [--no-browser] [--data-dir]
- pyproject.toml with optional deps: [postgres], [mcp], [dev]
- Docker path unchanged: docker compose up -d

pip install path: pip install . && diligence
Docker path: ./setup.sh && docker compose up -d
2026-07-01 03:30:12 +00:00

71 lines
2.2 KiB
PowerShell

# Diligence Setup — Windows
Write-Host ""
Write-Host " Diligence Setup"
Write-Host ""
function New-RandomHex { -join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Max 256) }) }
$Secret = New-RandomHex
$Token = New-RandomHex
# Detect mode — Docker if docker compose is available and docker-compose.yml exists
$DockerAvailable = $false
try { docker compose version 2>$null | Out-Null; $DockerAvailable = $true } catch {}
if ($DockerAvailable -and (Test-Path "docker-compose.yml")) {
Write-Host " Mode: Docker (PostgreSQL)"
Write-Host ""
if (Test-Path ".env") {
Write-Host " .env already exists. Delete it first to regenerate."
exit 1
}
Copy-Item ".env.example" ".env"
(Get-Content ".env") -replace '^SECRET_KEY=.*', "SECRET_KEY=$Secret" `
-replace '^API_TOKEN=.*', "API_TOKEN=$Token" `
-replace '^DATABASE_URL=.*', 'DATABASE_URL=postgresql+asyncpg://fitness@fitness-db:5432/fitness_rewards' `
-replace '^BASE_URL=.*', 'BASE_URL=http://localhost' |
Set-Content ".env"
Write-Host " .env created"
Write-Host ""
Write-Host " Next steps:"
Write-Host " docker compose up -d"
Write-Host " Open http://localhost"
} else {
Write-Host " Mode: Local (SQLite)"
Write-Host ""
$DataDir = Join-Path $env:USERPROFILE ".diligence"
if (-not (Test-Path $DataDir)) { New-Item -ItemType Directory -Path $DataDir | Out-Null }
$EnvFile = Join-Path $DataDir ".env"
if (Test-Path $EnvFile) {
Write-Host " Config already exists at $EnvFile"
Write-Host " Delete it to regenerate."
exit 1
}
@"
SECRET_KEY=$Secret
API_TOKEN=$Token
BASE_URL=http://localhost:8000
DATA_DIR=$DataDir
"@ | Set-Content $EnvFile
Write-Host " Config created at $EnvFile"
Write-Host ""
Write-Host " Next steps:"
Write-Host " pip install ."
Write-Host " diligence"
Write-Host ""
Write-Host " Data stored in: $DataDir"
}
Write-Host ""
Write-Host " MCP agent connection:"
Write-Host " URL: http://localhost:3001/sse"
Write-Host " Header: Authorization: Bearer $Token"
Write-Host ""