111 lines
3.3 KiB
PowerShell
111 lines
3.3 KiB
PowerShell
#!/bin/bash
|
|
# Companion AI - Windows Installation Script
|
|
|
|
Write-Host "Companion AI Installation Script for Windows"
|
|
Write-Host "============================================="
|
|
Write-Host ""
|
|
|
|
# Check if Python is installed
|
|
$python = Get-Command python -ErrorAction SilentlyContinue
|
|
if (-not $python) {
|
|
Write-Error "Python 3 is required but not found. Please install Python 3.11 or later."
|
|
exit 1
|
|
}
|
|
|
|
$pythonVersion = python --version 2>&1
|
|
Write-Host "Found: $pythonVersion"
|
|
|
|
# Create directories
|
|
$installDir = "$env:LOCALAPPDATA\Companion"
|
|
$dataDir = "$env:LOCALAPPDATA\Companion\Data"
|
|
|
|
Write-Host "Creating directories..."
|
|
New-Item -ItemType Directory -Force -Path $installDir | Out-Null
|
|
New-Item -ItemType Directory -Force -Path $dataDir\vectors | Out-Null
|
|
New-Item -ItemType Directory -Force -Path $dataDir\memory | Out-Null
|
|
New-Item -ItemType Directory -Force -Path $dataDir\models | Out-Null
|
|
|
|
# Copy application files
|
|
Write-Host "Installing Companion AI..."
|
|
$sourceDir = $PSScriptRoot
|
|
if (Test-Path "$sourceDir\src") {
|
|
Copy-Item -Recurse -Force "$sourceDir\*" $installDir
|
|
} else {
|
|
Write-Error "Cannot find source files. Please run from the Companion AI directory."
|
|
exit 1
|
|
}
|
|
|
|
# Create virtual environment
|
|
Write-Host "Creating Python virtual environment..."
|
|
Set-Location $installDir
|
|
python -m venv venv
|
|
|
|
# Activate and install
|
|
Write-Host "Installing dependencies..."
|
|
& .\venv\Scripts\Activate.ps1
|
|
python -m pip install --upgrade pip
|
|
python -m pip install -e ".[dev]"
|
|
|
|
# Copy config
|
|
if (-not (Test-Path "$dataDir\config.json")) {
|
|
Copy-Item "$installDir\config.json" "$dataDir\config.json"
|
|
# Update paths
|
|
$config = Get-Content "$dataDir\config.json" -Raw
|
|
$config = $config -replace '~/.companion', $dataDir.Replace('\', '/')
|
|
Set-Content "$dataDir\config.json" $config
|
|
}
|
|
|
|
# Create startup scripts
|
|
Write-Host "Creating startup scripts..."
|
|
|
|
# API server startup script
|
|
$apiScript = @"
|
|
@echo off
|
|
set PYTHONPATH=$($installDir)
|
|
set COMPANION_CONFIG=$($dataDir)\config.json
|
|
set COMPANION_DATA_DIR=$($dataDir)
|
|
cd "$($installDir)"
|
|
.\venv\Scripts\python -m uvicorn companion.api:app --host 0.0.0.0 --port 7373
|
|
"@
|
|
Set-Content "$installDir\start-api.bat" $apiScript
|
|
|
|
# Indexer watcher startup script
|
|
$indexerScript = @"
|
|
@echo off
|
|
set PYTHONPATH=$($installDir)
|
|
set COMPANION_CONFIG=$($dataDir)\config.json
|
|
set COMPANION_DATA_DIR=$($dataDir)
|
|
cd "$($installDir)"
|
|
.\venv\Scripts\python -m companion.indexer_daemon.watcher
|
|
"@
|
|
Set-Content "$installDir\start-indexer.bat" $indexerScript
|
|
|
|
# CLI shortcut
|
|
$cliScript = @"
|
|
@echo off
|
|
set PYTHONPATH=$($installDir)
|
|
set COMPANION_CONFIG=$($dataDir)\config.json
|
|
set COMPANION_DATA_DIR=$($dataDir)
|
|
cd "$($installDir)"
|
|
.\venv\Scripts\python -m companion.indexer_daemon.cli %*
|
|
"@
|
|
Set-Content "$installDir\companion.bat" $cliScript
|
|
|
|
Write-Host ""
|
|
Write-Host "Installation complete!"
|
|
Write-Host "====================="
|
|
Write-Host ""
|
|
Write-Host "To start the API server:"
|
|
Write-Host " $installDir\start-api.bat"
|
|
Write-Host ""
|
|
Write-Host "To start the file watcher (auto-indexing):"
|
|
Write-Host " $installDir\start-indexer.bat"
|
|
Write-Host ""
|
|
Write-Host "To run a manual index:"
|
|
Write-Host " $installDir\companion.bat index"
|
|
Write-Host ""
|
|
Write-Host "Config location: $dataDir\config.json"
|
|
Write-Host "Data location: $dataDir"
|
|
Write-Host ""
|
|
Write-Host "Edit the config to set your vault path, then start the services."
|