59 lines
1.9 KiB
PowerShell
59 lines
1.9 KiB
PowerShell
# QwenClaw Auto-Start Script
|
|
# This script ensures QwenClaw daemon is always running
|
|
# Run at Windows startup via Task Scheduler
|
|
|
|
$ErrorActionPreference = "SilentlyContinue"
|
|
|
|
$QWENCLAW_DIR = Join-Path $env:USERPROFILE "qwenclaw"
|
|
$QWEN_DIR = Join-Path $env:USERPROFILE ".qwen"
|
|
$DAEMON_PID_FILE = Join-Path $QWEN_DIR "qwenclaw\daemon.pid"
|
|
$LOG_FILE = Join-Path $QWEN_DIR "qwenclaw\autostart.log"
|
|
|
|
function Write-Log {
|
|
param([string]$Message)
|
|
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
|
"[$timestamp] $Message" | Out-File -FilePath $LOG_FILE -Append
|
|
}
|
|
|
|
Write-Log "QwenClaw auto-start initiated"
|
|
|
|
# Check if daemon is already running
|
|
if (Test-Path $DAEMON_PID_FILE) {
|
|
$pidContent = Get-Content $DAEMON_PID_FILE -ErrorAction SilentlyContinue
|
|
if ($pidContent) {
|
|
try {
|
|
$process = Get-Process -Id ([int]$pidContent) -ErrorAction SilentlyContinue
|
|
if ($process) {
|
|
Write-Log "QwenClaw daemon already running (PID: $pidContent)"
|
|
exit 0
|
|
}
|
|
} catch {
|
|
Write-Log "Stale PID file found, cleaning up..."
|
|
Remove-Item $DAEMON_PID_FILE -Force -ErrorAction SilentlyContinue
|
|
}
|
|
}
|
|
}
|
|
|
|
# Wait for Qwen Code to be available (in case of system startup)
|
|
Start-Sleep -Seconds 5
|
|
|
|
# Start daemon in background
|
|
Write-Log "Starting QwenClaw daemon from: $QWENCLAW_DIR"
|
|
|
|
try {
|
|
$startInfo = New-Object System.Diagnostics.ProcessStartInfo
|
|
$startInfo.FileName = "bun"
|
|
$startInfo.Arguments = "run start --web"
|
|
$startInfo.WorkingDirectory = $QWENCLAW_DIR
|
|
$startInfo.UseShellExecute = $true
|
|
$startInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden
|
|
$startInfo.CreateNoWindow = $true
|
|
|
|
$process = [System.Diagnostics.Process]::Start($startInfo)
|
|
Write-Log "QwenClaw daemon started (PID: $($process.Id))"
|
|
} catch {
|
|
Write-Log "Failed to start daemon: $($_.Exception.Message)"
|
|
}
|
|
|
|
Write-Log "QwenClaw auto-start completed"
|