{"code":"var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});import{asString,asBoolean,asStringArray,parseObject,ensureAbsoluteDirectory,ensureCommandResolvable,ensurePathInEnv,runChildProcess}from\"@paperclipai/adapter-utils/server-utils\";import path from\"node:path\";import{parseCodexJsonl}from\"./parse.js\";function summarizeStatus(checks){if(checks.some(check=>check.level===\"error\"))return\"fail\";if(checks.some(check=>check.level===\"warn\"))return\"warn\";return\"pass\"}__name(summarizeStatus,\"summarizeStatus\");function isNonEmpty(value){return typeof value===\"string\"&&value.trim().length>0}__name(isNonEmpty,\"isNonEmpty\");function firstNonEmptyLine(text){return text.split(/\\r?\\n/).map(line=>line.trim()).find(Boolean)??\"\"}__name(firstNonEmptyLine,\"firstNonEmptyLine\");function commandLooksLike(command,expected){const base=path.basename(command).toLowerCase();return base===expected||base===`${expected}.cmd`||base===`${expected}.exe`}__name(commandLooksLike,\"commandLooksLike\");function summarizeProbeDetail(stdout,stderr,parsedError){const raw=parsedError?.trim()||firstNonEmptyLine(stderr)||firstNonEmptyLine(stdout);if(!raw)return null;const clean=raw.replace(/\\s+/g,\" \").trim();const max=240;return clean.length>max?`${clean.slice(0,max-1)}\\u2026`:clean}__name(summarizeProbeDetail,\"summarizeProbeDetail\");const CODEX_AUTH_REQUIRED_RE=/(?:not\\s+logged\\s+in|login\\s+required|authentication\\s+required|unauthorized|invalid(?:\\s+or\\s+missing)?\\s+api(?:[_\\s-]?key)?|openai[_\\s-]?api[_\\s-]?key|api[_\\s-]?key.*required|please\\s+run\\s+`?codex\\s+login`?)/i;async function testEnvironment(ctx){const checks=[];const config=parseObject(ctx.config);const command=asString(config.command,\"codex\");const cwd=asString(config.cwd,process.cwd());try{await ensureAbsoluteDirectory(cwd,{createIfMissing:true});checks.push({code:\"codex_cwd_valid\",level:\"info\",message:`Working directory is valid: ${cwd}`})}catch(err){checks.push({code:\"codex_cwd_invalid\",level:\"error\",message:err instanceof Error?err.message:\"Invalid working directory\",detail:cwd})}const envConfig=parseObject(config.env);const env={};for(const[key,value]of Object.entries(envConfig)){if(typeof value===\"string\")env[key]=value}const runtimeEnv=ensurePathInEnv({...process.env,...env});try{await ensureCommandResolvable(command,cwd,runtimeEnv);checks.push({code:\"codex_command_resolvable\",level:\"info\",message:`Command is executable: ${command}`})}catch(err){checks.push({code:\"codex_command_unresolvable\",level:\"error\",message:err instanceof Error?err.message:\"Command is not executable\",detail:command})}const configOpenAiKey=env.OPENAI_API_KEY;const hostOpenAiKey=process.env.OPENAI_API_KEY;if(isNonEmpty(configOpenAiKey)||isNonEmpty(hostOpenAiKey)){const source=isNonEmpty(configOpenAiKey)?\"adapter config env\":\"server environment\";checks.push({code:\"codex_openai_api_key_present\",level:\"info\",message:\"OPENAI_API_KEY is set for Codex authentication.\",detail:`Detected in ${source}.`})}else{checks.push({code:\"codex_openai_api_key_missing\",level:\"warn\",message:\"OPENAI_API_KEY is not set. Codex runs may fail until authentication is configured.\",hint:\"Set OPENAI_API_KEY in adapter env, shell environment, or Codex auth configuration.\"})}const canRunProbe=checks.every(check=>check.code!==\"codex_cwd_invalid\"&&check.code!==\"codex_command_unresolvable\");if(canRunProbe){if(!commandLooksLike(command,\"codex\")){checks.push({code:\"codex_hello_probe_skipped_custom_command\",level:\"info\",message:\"Skipped hello probe because command is not `codex`.\",detail:command,hint:\"Use the `codex` CLI command to run the automatic login and installation probe.\"})}else{const model=asString(config.model,\"\").trim();const modelReasoningEffort=asString(config.modelReasoningEffort,asString(config.reasoningEffort,\"\")).trim();const search=asBoolean(config.search,false);const bypass=asBoolean(config.dangerouslyBypassApprovalsAndSandbox,asBoolean(config.dangerouslyBypassSandbox,false));const extraArgs=(()=>{const fromExtraArgs=asStringArray(config.extraArgs);if(fromExtraArgs.length>0)return fromExtraArgs;return asStringArray(config.args)})();const args=[\"exec\",\"--json\"];if(search)args.unshift(\"--search\");if(bypass)args.push(\"--dangerously-bypass-approvals-and-sandbox\");if(model)args.push(\"--model\",model);if(modelReasoningEffort){args.push(\"-c\",`model_reasoning_effort=${JSON.stringify(modelReasoningEffort)}`)}if(extraArgs.length>0)args.push(...extraArgs);args.push(\"-\");const probe=await runChildProcess(`codex-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`,command,args,{cwd,env,timeoutSec:45,graceSec:5,stdin:\"Respond with hello.\",onLog:__name(async()=>{},\"onLog\")});const parsed=parseCodexJsonl(probe.stdout);const detail=summarizeProbeDetail(probe.stdout,probe.stderr,parsed.errorMessage);const authEvidence=`${parsed.errorMessage??\"\"}\n${probe.stdout}\n${probe.stderr}`.trim();if(probe.timedOut){checks.push({code:\"codex_hello_probe_timed_out\",level:\"warn\",message:\"Codex hello probe timed out.\",hint:\"Retry the probe. If this persists, verify Codex can run `Respond with hello` from this directory manually.\"})}else if((probe.exitCode??1)===0){const summary=parsed.summary.trim();const hasHello=/\\bhello\\b/i.test(summary);checks.push({code:hasHello?\"codex_hello_probe_passed\":\"codex_hello_probe_unexpected_output\",level:hasHello?\"info\":\"warn\",message:hasHello?\"Codex hello probe succeeded.\":\"Codex probe ran but did not return `hello` as expected.\",...summary?{detail:summary.replace(/\\s+/g,\" \").trim().slice(0,240)}:{},...hasHello?{}:{hint:\"Try the probe manually (`codex exec --json -` then prompt: Respond with hello) to inspect full output.\"}})}else if(CODEX_AUTH_REQUIRED_RE.test(authEvidence)){checks.push({code:\"codex_hello_probe_auth_required\",level:\"warn\",message:\"Codex CLI is installed, but authentication is not ready.\",...detail?{detail}:{},hint:\"Configure OPENAI_API_KEY in adapter env/shell or run `codex login`, then retry the probe.\"})}else{checks.push({code:\"codex_hello_probe_failed\",level:\"error\",message:\"Codex hello probe failed.\",...detail?{detail}:{},hint:\"Run `codex exec --json -` manually in this working directory and prompt `Respond with hello` to debug.\"})}}}return{adapterType:ctx.adapterType,status:summarizeStatus(checks),checks,testedAt:new Date().toISOString()}}__name(testEnvironment,\"testEnvironment\");export{testEnvironment};\n","warnings":[],"map":{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["/var/www/paperclip.westilt.com/packages/adapters/codex-local/src/server/test.ts"],"sourcesContent":[null]}}