Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
100 lines
2.8 KiB
PowerShell
100 lines
2.8 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
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|