Files
skills-win/langgraph-plan-review/scripts/run_langgraph.ps1
T
2026-05-24 21:20:26 -05:00

105 lines
3.0 KiB
PowerShell

param(
[Parameter(Mandatory = $true)]
[string]$TaskId,
[string]$Prompt = "",
[string]$NotesDir = "Notes",
[Parameter(Mandatory = $true)]
[string]$CodexReviewCommand,
[string]$CondaExe = "",
[string]$CondaEnv = "langgraph",
[string]$CodexHome = "",
[int]$Timeout = 600,
[string]$ThreadId = "",
[string]$Resume = ""
)
function Resolve-CondaExe {
param([string]$ExplicitPath)
if ($ExplicitPath) {
if (-not (Test-Path -LiteralPath $ExplicitPath)) {
throw "Conda executable does not exist: $ExplicitPath"
}
return (Resolve-Path -LiteralPath $ExplicitPath).Path
}
if ($env:CONDA_EXE -and (Test-Path -LiteralPath $env:CONDA_EXE)) {
return (Resolve-Path -LiteralPath $env:CONDA_EXE).Path
}
$CondaCommand = Get-Command conda -ErrorAction SilentlyContinue
if ($CondaCommand -and $CondaCommand.Source) {
return $CondaCommand.Source
}
$UserProfile = [Environment]::GetFolderPath("UserProfile")
if ($UserProfile) {
$UserFallback = Join-Path $UserProfile "miniconda3\Scripts\conda.exe"
if (Test-Path -LiteralPath $UserFallback) {
return (Resolve-Path -LiteralPath $UserFallback).Path
}
}
$LegacyFallback = "C:\Users\bowei\miniconda3\Scripts\conda.exe"
if (Test-Path -LiteralPath $LegacyFallback) {
return $LegacyFallback
}
throw "Unable to locate conda. Set -CondaExe or CONDA_EXE, or ensure conda is on PATH."
}
function Resolve-CodexHome {
param([string]$ExplicitPath)
if ($ExplicitPath) {
return $ExplicitPath
}
if ($env:CODEX_HOME) {
return $env:CODEX_HOME
}
$UserProfile = [Environment]::GetFolderPath("UserProfile")
if (-not $UserProfile) {
throw "Unable to determine user profile for CODEX_HOME. Set -CodexHome or CODEX_HOME."
}
return (Join-Path $UserProfile ".codex")
}
$ErrorActionPreference = "Stop"
$LaunchWorkDir = (Get-Location).Path
Push-Location $PSScriptRoot
# Ensure conda run child processes can encode Unicode (Chinese, etc.) output
$env:PYTHONIOENCODING = "utf-8"
try {
$env:CODEX_HOME = Resolve-CodexHome -ExplicitPath $CodexHome
$Conda = Resolve-CondaExe -ExplicitPath $CondaExe
$ArgsList = @(
"run", "-n", $CondaEnv, "python", "run_workflow.py",
"--task-id", $TaskId,
"--notes-dir", $NotesDir,
"--work-dir", $LaunchWorkDir,
"--timeout", "$Timeout"
)
if ($Prompt) { $ArgsList += @("--prompt", $Prompt) }
$CodexReviewCommandB64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($CodexReviewCommand))
$ArgsList += @("--codex-review-command-b64", $CodexReviewCommandB64)
if ($ThreadId) { $ArgsList += @("--thread-id", $ThreadId) }
if ($Resume) {
$ResumeB64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($Resume))
$ArgsList += @("--resume-b64", $ResumeB64)
}
& $Conda @ArgsList
}
finally {
Pop-Location
}