{"code":"var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});import path from\"node:path\";import{asBoolean,asString,asStringArray,ensureAbsoluteDirectory,ensureCommandResolvable,ensurePathInEnv,parseObject,runChildProcess}from\"@paperclipai/adapter-utils/server-utils\";import{DEFAULT_GEMINI_LOCAL_MODEL}from\"../index.js\";import{detectGeminiAuthRequired,parseGeminiJsonl}from\"./parse.js\";import{firstNonEmptyLine}from\"./utils.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 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\");async function testEnvironment(ctx){const checks=[];const config=parseObject(ctx.config);const command=asString(config.command,\"gemini\");const cwd=asString(config.cwd,process.cwd());try{await ensureAbsoluteDirectory(cwd,{createIfMissing:true});checks.push({code:\"gemini_cwd_valid\",level:\"info\",message:`Working directory is valid: ${cwd}`})}catch(err){checks.push({code:\"gemini_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:\"gemini_command_resolvable\",level:\"info\",message:`Command is executable: ${command}`})}catch(err){checks.push({code:\"gemini_command_unresolvable\",level:\"error\",message:err instanceof Error?err.message:\"Command is not executable\",detail:command})}const configGeminiApiKey=env.GEMINI_API_KEY;const hostGeminiApiKey=process.env.GEMINI_API_KEY;const configGoogleApiKey=env.GOOGLE_API_KEY;const hostGoogleApiKey=process.env.GOOGLE_API_KEY;const hasGca=env.GOOGLE_GENAI_USE_GCA===\"true\"||process.env.GOOGLE_GENAI_USE_GCA===\"true\";if(isNonEmpty(configGeminiApiKey)||isNonEmpty(hostGeminiApiKey)||isNonEmpty(configGoogleApiKey)||isNonEmpty(hostGoogleApiKey)||hasGca){const source=hasGca?\"Google account login (GCA)\":isNonEmpty(configGeminiApiKey)||isNonEmpty(configGoogleApiKey)?\"adapter config env\":\"server environment\";checks.push({code:\"gemini_api_key_present\",level:\"info\",message:\"Gemini API credentials are set for CLI authentication.\",detail:`Detected in ${source}.`})}else{checks.push({code:\"gemini_api_key_missing\",level:\"info\",message:\"No explicit API key detected. Gemini CLI may still authenticate via `gemini auth login` (OAuth).\",hint:\"If the hello probe fails with an auth error, set GEMINI_API_KEY or GOOGLE_API_KEY in adapter env, or run `gemini auth login`.\"})}const canRunProbe=checks.every(check=>check.code!==\"gemini_cwd_invalid\"&&check.code!==\"gemini_command_unresolvable\");if(canRunProbe){if(!commandLooksLike(command,\"gemini\")){checks.push({code:\"gemini_hello_probe_skipped_custom_command\",level:\"info\",message:\"Skipped hello probe because command is not `gemini`.\",detail:command,hint:\"Use the `gemini` CLI command to run the automatic installation and auth probe.\"})}else{const model=asString(config.model,DEFAULT_GEMINI_LOCAL_MODEL).trim();const approvalMode=asString(config.approvalMode,asBoolean(config.yolo,false)?\"yolo\":\"default\");const sandbox=asBoolean(config.sandbox,false);const extraArgs=(()=>{const fromExtraArgs=asStringArray(config.extraArgs);if(fromExtraArgs.length>0)return fromExtraArgs;return asStringArray(config.args)})();const args=[\"--output-format\",\"stream-json\"];if(model&&model!==DEFAULT_GEMINI_LOCAL_MODEL)args.push(\"--model\",model);if(approvalMode!==\"default\")args.push(\"--approval-mode\",approvalMode);if(sandbox){args.push(\"--sandbox\")}else{args.push(\"--sandbox=none\")}if(extraArgs.length>0)args.push(...extraArgs);args.push(\"Respond with hello.\");const probe=await runChildProcess(`gemini-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`,command,args,{cwd,env,timeoutSec:45,graceSec:5,onLog:__name(async()=>{},\"onLog\")});const parsed=parseGeminiJsonl(probe.stdout);const detail=summarizeProbeDetail(probe.stdout,probe.stderr,parsed.errorMessage);const authMeta=detectGeminiAuthRequired({parsed:parsed.resultEvent,stdout:probe.stdout,stderr:probe.stderr});if(probe.timedOut){checks.push({code:\"gemini_hello_probe_timed_out\",level:\"warn\",message:\"Gemini hello probe timed out.\",hint:\"Retry the probe. If this persists, verify Gemini 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?\"gemini_hello_probe_passed\":\"gemini_hello_probe_unexpected_output\",level:hasHello?\"info\":\"warn\",message:hasHello?\"Gemini hello probe succeeded.\":\"Gemini probe ran but did not return `hello` as expected.\",...summary?{detail:summary.replace(/\\s+/g,\" \").trim().slice(0,240)}:{},...hasHello?{}:{hint:'Try `gemini --output-format json \"Respond with hello.\"` manually to inspect full output.'}})}else if(authMeta.requiresAuth){checks.push({code:\"gemini_hello_probe_auth_required\",level:\"warn\",message:\"Gemini CLI is installed, but authentication is not ready.\",...detail?{detail}:{},hint:\"Run `gemini auth` or configure GEMINI_API_KEY / GOOGLE_API_KEY in adapter env/shell, then retry the probe.\"})}else{checks.push({code:\"gemini_hello_probe_failed\",level:\"error\",message:\"Gemini hello probe failed.\",...detail?{detail}:{},hint:'Run `gemini --output-format json \"Respond with hello.\"` manually in this working directory 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/gemini-local/src/server/test.ts"],"sourcesContent":[null]}}