@leviyuan/lodestar 0.18.11 → 0.18.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -76,7 +76,7 @@ ${g}`;return}if(m0(A,I,Ok)){if(qk(A,C))Q.retry=A.toString("utf8",C);return}if(m0
76
76
  \r
77
77
  `),I=!1,C=!1,g;A.on("response",(F)=>{let{headers:Y}=F;I=Y["transfer-encoding"]==="chunked"&&!Y["content-length"]}),A.on("socket",(F)=>{let Y=()=>{if(I&&!C){let N=Error("Premature close");N.code="ERR_STREAM_PREMATURE_CLOSE",Q(N)}},J=(N)=>{if(C=bF.compare(N.slice(-5),B)===0,!C&&g)C=bF.compare(g.slice(-3),B.slice(0,3))===0&&bF.compare(N.slice(-2),B.slice(3))===0;g=N};F.prependListener("close",Y),F.on("data",J),A.on("close",()=>{F.removeListener("close",Y),F.removeListener("data",J)})})}var _1=LC(yM(),1),O1=LC(gw(),1);var BB=LC($w(),1);import{execFile as kS}from"node:child_process";import{readFile as yS}from"node:fs/promises";import{homedir as vS}from"node:os";import{join as Tw}from"node:path";import{promisify as fS}from"node:util";var bS=fS(kS);function hC(A,Q){return A[Q.toLowerCase()]?.trim()||A[Q]?.trim()||void 0}function DD(A){let Q=A.hostname.replace(/^\[|\]$/g,"").toLowerCase();return Q==="localhost"||Q.endsWith(".localhost")||Q==="::1"||/^127\.(?:\d{1,3}\.){2}\d{1,3}$/.test(Q)||/^::ffff:(?:127\.|7f[0-9a-f]{2}:)/.test(Q)}function aY(A,Q=""){let B=A.hostname.replace(/^\[|\]$/g,"").toLowerCase(),I=A.port||(A.protocol==="https:"?"443":"80");return Q.split(/[,;\s]+/).filter(Boolean).some((C)=>{let g=C.toLowerCase();if(g==="*")return!0;if(g==="<local>")return!B.includes(".")&&!B.includes(":");if(g.includes("/")){if(BB.Address4.isValid(g))return BB.Address4.isValid(B)&&new BB.Address4(B).isInSubnet(new BB.Address4(g));if(BB.Address6.isValid(g))return BB.Address6.isValid(B)&&new BB.Address6(B).isInSubnet(new BB.Address6(g));throw Error("network proxy: invalid IP range in bypass list")}let F=g.match(/^(\[[^\]]+\]|[^:]+):(\d+)$/);if(F&&F[2]!==I)return!1;let Y=(F?F[1]:g).replace(/^\[|\]$/g,"").replace(/^\*?\./,"");return B===Y||B.endsWith(`.${Y}`)})}function jw(A,Q){let B;try{B=new URL(A)}catch{throw Error(`network proxy: ${Q} contains an invalid proxy URL`)}if(!["http:","https:"].includes(B.protocol))throw Error(`network proxy: ${Q} must use an HTTP(S) proxy; SOCKS and PAC are not supported`);if(!B.hostname||B.search||B.hash||B.pathname&&B.pathname!=="/")throw Error(`network proxy: ${Q} must contain a proxy host and port without a path or query`);return B.href}function _w(A,Q,B={}){if(!["http:","https:"].includes(A.protocol))throw Error(`network: unsupported URL protocol ${A.protocol}`);if(DD(A)||aY(A,hC(Q,"NO_PROXY")))return;let I=A.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY",C=hC(Q,I)||hC(Q,"ALL_PROXY");if(C)return jw(C,"environment");if(B.unsupported)throw Error(`network proxy: ${B.unsupported}`);if(aY(A,B.bypass))return;let g=(A.protocol==="https:"?B.https:B.http)||B.all;return g?jw(g,"system settings"):void 0}function FD(A,Q,B="http"){if(typeof A!=="string"||!A.trim()||!Number.isInteger(Number(Q))||Number(Q)<1||Number(Q)>65535)throw Error("network proxy: system proxy has an invalid host or port");let I=A.includes(":")&&!A.startsWith("[")?`[${A}]`:A;return`${B}://${I}:${Q}`}function mS(A){if(A.AutoConfigURL)return{unsupported:"Windows PAC proxy is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(!A.ProxyEnable)return A.AutoDetect?{unsupported:"Windows automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"}:{};if(typeof A.ProxyServer!=="string"||!A.ProxyServer.trim())throw Error("network proxy: Windows proxy is enabled without a server");let Q={bypass:String(A.ProxyOverride??"")};for(let B of A.ProxyServer.split(";").map((I)=>I.trim()).filter(Boolean)){let I=B.match(/^(http|https|socks)=(.+)$/i),C=I?I[2]:B,g=/^[a-z][\w+.-]*:\/\//i.test(C)?C:`http://${C}`;if(!I)Q.all=g;else if(I[1].toLowerCase()==="socks")Q.all=`socks://${C.replace(/^socks\w*:\/\//,"")}`;else Q[I[1].toLowerCase()]=g}return Q}function cS(A){let Q=(C)=>A.match(new RegExp(`^\\s*${C}\\s*:\\s*(.*?)\\s*$`,"m"))?.[1];if(Q("ProxyAutoConfigEnable")==="1"||Q("ProxyAutoDiscoveryEnable")==="1")return{unsupported:"macOS PAC/automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};let B={};if(Q("HTTPEnable")==="1")B.http=FD(Q("HTTPProxy"),Q("HTTPPort"));if(Q("HTTPSEnable")==="1")B.https=FD(Q("HTTPSProxy"),Q("HTTPSPort"));if(Q("SOCKSEnable")==="1")B.all=FD(Q("SOCKSProxy"),Q("SOCKSPort"),"socks");let I=A.match(/ExceptionsList\s*:\s*<array>\s*\{([^}]*)\}/)?.[1]??"";if(B.bypass=[...I.matchAll(/^\s*\d+\s*:\s*(.*?)\s*$/gm)].map((C)=>C[1]).join(","),Q("ExcludeSimpleHostnames")==="1")B.bypass+=",<local>";return B}function ED(A){if(A===void 0)return"";if(!/^(['"]).*\1$/.test(A))throw Error("network proxy: invalid GNOME proxy string");return A.slice(1,-1).replace(/\\([\\'"])/g,"$1")}function uS(A){let Q=new Map(A.split(`
78
78
  `).filter(Boolean).map((C)=>{let g=C.match(/^org\.gnome\.system\.proxy(\.\w+)?\s+([\w-]+)\s+(.*)$/);if(!g)throw Error("network proxy: invalid GNOME proxy settings");return[`${g[1]??""}/${g[2]}`,g[3]]})),B=ED(Q.get("/mode"));if(B==="none")return{};if(B==="auto")return{unsupported:"GNOME PAC proxy is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(B!=="manual")throw Error("network proxy: unknown GNOME proxy mode");let I={};for(let C of["http","https","socks"]){let g=ED(Q.get(`.${C}/host`));if(!g)continue;let F=new URL(FD(g,Q.get(`.${C}/port`),C==="socks"?"socks":"http"));if(C==="http"&&Q.get(".http/use-authentication")==="true")F.username=ED(Q.get(".http/authentication-user")),F.password=ED(Q.get(".http/authentication-password"));I[C==="socks"?"all":C]=F.href}if(Q.get("/use-same-proxy")==="true"&&I.http)I.https=I.http;return I.bypass=[...(Q.get("/ignore-hosts")??"").matchAll(/'((?:\\.|[^'])*)'/g)].map((C)=>C[1]).join(","),I}function pS(A){let Q=A.match(/^\[Proxy Settings\]\s*\n([\s\S]*?)(?=^\[|$(?![\s\S]))/m)?.[1];if(Q===void 0)return;let B=new Map(Q.split(`
79
- `).filter((g)=>g.includes("=")).map((g)=>{let F=g.indexOf("=");return[g.slice(0,F).trim(),g.slice(F+1).trim()]})),I=B.get("ProxyType")??"0";if(I==="0"||I==="4")return{};if(I!=="1")return{unsupported:"KDE PAC/automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(B.get("ReversedException")==="true")return{unsupported:"KDE reversed proxy exceptions are not supported"};let C={bypass:B.get("NoProxyFor")};for(let g of["http","https","socks"]){let F=B.get(`${g}Proxy`);if(!F)continue;let Y=F.replace(/\s+(\d+)$/,":$1");C[g==="socks"?"all":g]=/^[a-z][\w+.-]*:\/\//i.test(Y)?Y:`${g==="socks"?"socks":"http"}://${Y}`}return C}async function gD(A,Q){let{stdout:B}=await bS(A,Q,{encoding:"utf8",timeout:5000,maxBuffer:262144,windowsHide:!0});return B}var lS=String.raw`
79
+ `).filter((g)=>g.includes("=")).map((g)=>{let F=g.indexOf("=");return[g.slice(0,F).trim(),g.slice(F+1).trim()]})),I=B.get("ProxyType")??"0";if(I==="0"||I==="4")return{};if(I!=="1")return{unsupported:"KDE PAC/automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(B.get("ReversedException")==="true")return{unsupported:"KDE reversed proxy exceptions are not supported"};let C={bypass:B.get("NoProxyFor")};for(let g of["http","https","socks"]){let F=B.get(`${g}Proxy`);if(!F)continue;let Y=F.replace(/\s+(\d+)$/,":$1");C[g==="socks"?"all":g]=/^[a-z][\w+.-]*:\/\//i.test(Y)?Y:`${g==="socks"?"socks":"http"}://${Y}`}return C}async function gD(A,Q,B=5000){let{stdout:I}=await bS(A,Q,{encoding:"utf8",timeout:B,maxBuffer:262144,windowsHide:!0});return I}var lS=String.raw`
80
80
  $ErrorActionPreference = 'Stop'
81
81
  [Console]::OutputEncoding = New-Object Text.UTF8Encoding($false)
82
82
  Add-Type @'
@@ -114,7 +114,7 @@ try {
114
114
  if ($pointer -ne [IntPtr]::Zero) { [void][LodestarProxy]::GlobalFree($pointer) }
115
115
  }
116
116
  }
117
- `;async function dS(){if(process.platform==="win32")return mS(JSON.parse(await gD("powershell.exe",["-NoProfile","-NonInteractive","-Command",lS])));if(process.platform==="darwin")return cS(await gD("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let A=Tw(process.env.XDG_CONFIG_HOME||Tw(vS(),".config"),"kioslaverc");try{let B=pS(await yS(A,"utf8"));if(B&&(!process.env.XDG_CURRENT_DESKTOP||/kde/i.test(process.env.XDG_CURRENT_DESKTOP)))return B}catch(B){if(B?.code!=="ENOENT")throw B}let Q;try{Q=await gD("gsettings",["list-schemas"])}catch(B){if(B?.code==="ENOENT")return{};throw B}if(!Q.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return uS(await gD("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function iS(A=dS,Q=process.env,B=Date.now){let I;return async(C)=>{if(DD(C)||aY(C,hC(Q,"NO_PROXY"))||hC(Q,C.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||hC(Q,"ALL_PROXY"))return _w(C,Q);if(!I||I.until<=B()){let g=A().catch((F)=>{if(I?.value===g)I=void 0;if(F instanceof Error&&F.message.startsWith("network proxy:"))throw F;let Y=F instanceof Error?F.code??F.name:"unknown error";throw Error(`network proxy: failed to read ${process.platform} system proxy settings (${Y})`,{cause:F})});I={until:B()+30000,value:g}}return _w(C,Q,await I.value)}}var Ow=iS();var Wv=new wv({keepAlive:!0}),Zv=new Vv({keepAlive:!0}),j1;function Rv(A,Q){if(!Q)return A.protocol==="https:"?Zv:Wv;return A.protocol==="https:"?new O1.HttpsProxyAgent(Q):new _1.HttpProxyAgent(Q)}async function Lv(A,Q,B){if(typeof Bun<"u"){let F=A.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY";if(!B&&(process.env[F.toLowerCase()]||process.env[F])){let Y=await Promise.resolve().then(() => LC($1(),1));return j1??=new Y.Agent,await Y.fetch(A,{...Q,redirect:"manual",dispatcher:j1})}return globalThis.fetch(A.href,{...Q,redirect:"manual",...B?{proxy:B}:{}})}let I=new Request(A,{...Q,redirect:"manual",duplex:"half"}),C=await mF(A,{method:I.method,headers:Object.fromEntries(I.headers),body:I.body?T1.fromWeb(I.body):void 0,signal:I.signal,agent:Rv(A,B),redirect:"manual"}),g=I.method==="HEAD"||[204,205,304].includes(C.status)||!C.body?null:T1.toWeb(C.body);return new Response(g,{status:C.status,statusText:C.statusText,headers:[...C.headers]})}async function Xv(A,Q,B,I=Ow){let C=new URL(A),g={...Q};for(let F=0;;F++){if(!["http:","https:"].includes(C.protocol))throw Error(`network: unsupported URL protocol ${C.protocol}`);if(B&&!DD(C))throw Error("network: local request must remain on loopback");g.signal?.throwIfAborted();let Y=B?void 0:await I(C),J=await Lv(C,g,Y),N=J.headers.get("location");if(![301,302,303,307,308].includes(J.status)||!N||Q.redirect==="manual")return J;if(await J.body?.cancel(),Q.redirect==="error")throw Error("network: redirect rejected");if(F>=20)throw Error("network: too many redirects");let G=new URL(N,C),M=new Headers(g.headers);if(G.origin!==C.origin)for(let W of["authorization","proxy-authorization","cookie","host"])M.delete(W);let V=(g.method??"GET").toUpperCase();if(J.status===303&&V!=="HEAD"||[301,302].includes(J.status)&&V==="POST"){g={...g,method:"GET",body:void 0};for(let W of["content-type","content-length","content-encoding"])M.delete(W)}else if(g.body instanceof ReadableStream)throw Error("network: cannot replay a streamed body after redirect");g.headers=M,C=G}}function q1(A,Q={}){return Xv(A,Q,!0)}import{realpathSync as x1}from"node:fs";import{fileURLToPath as Kv}from"node:url";function P1(A){if(typeof A!=="string"||!A.trim())throw Error('agent run requires "description" (CLI: --description)');let Q=A.trim();if(/[\r\n\u2028\u2029]/.test(Q))throw Error("agent description must be a single line");if([...Q].length>60)throw Error("agent description exceeds 60 characters");return Q}async function Hv(A=process.argv.slice(2)){let Q=A.shift()??"";if(!Q||Q==="help"||Q==="--help"||Q==="-h"){process.stdout.write(`${k1()}
117
+ `;async function dS(){if(process.platform==="win32")return mS(JSON.parse(await gD("powershell.exe",["-NoProfile","-NonInteractive","-Command",lS],15000)));if(process.platform==="darwin")return cS(await gD("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let A=Tw(process.env.XDG_CONFIG_HOME||Tw(vS(),".config"),"kioslaverc");try{let B=pS(await yS(A,"utf8"));if(B&&(!process.env.XDG_CURRENT_DESKTOP||/kde/i.test(process.env.XDG_CURRENT_DESKTOP)))return B}catch(B){if(B?.code!=="ENOENT")throw B}let Q;try{Q=await gD("gsettings",["list-schemas"])}catch(B){if(B?.code==="ENOENT")return{};throw B}if(!Q.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return uS(await gD("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function iS(A=dS,Q=process.env,B=Date.now){let I;return async(C)=>{if(DD(C)||aY(C,hC(Q,"NO_PROXY"))||hC(Q,C.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||hC(Q,"ALL_PROXY"))return _w(C,Q);if(!I||I.until<=B()){let g=A().catch((F)=>{if(I?.value===g)I=void 0;if(F instanceof Error&&F.message.startsWith("network proxy:"))throw F;let Y=F instanceof Error?F.code??F.name:"unknown error";throw Error(`network proxy: failed to read ${process.platform} system proxy settings (${Y})`,{cause:F})});I={until:B()+30000,value:g}}return _w(C,Q,await I.value)}}var Ow=iS();var Wv=new wv({keepAlive:!0}),Zv=new Vv({keepAlive:!0}),j1;function Rv(A,Q){if(!Q)return A.protocol==="https:"?Zv:Wv;return A.protocol==="https:"?new O1.HttpsProxyAgent(Q):new _1.HttpProxyAgent(Q)}async function Lv(A,Q,B){if(typeof Bun<"u"){let F=A.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY";if(!B&&(process.env[F.toLowerCase()]||process.env[F])){let Y=await Promise.resolve().then(() => LC($1(),1));return j1??=new Y.Agent,await Y.fetch(A,{...Q,redirect:"manual",dispatcher:j1})}return globalThis.fetch(A.href,{...Q,redirect:"manual",...B?{proxy:B}:{}})}let I=new Request(A,{...Q,redirect:"manual",duplex:"half"}),C=await mF(A,{method:I.method,headers:Object.fromEntries(I.headers),body:I.body?T1.fromWeb(I.body):void 0,signal:I.signal,agent:Rv(A,B),redirect:"manual"}),g=I.method==="HEAD"||[204,205,304].includes(C.status)||!C.body?null:T1.toWeb(C.body);return new Response(g,{status:C.status,statusText:C.statusText,headers:[...C.headers]})}async function Xv(A,Q,B,I=Ow){let C=new URL(A),g={...Q};for(let F=0;;F++){if(!["http:","https:"].includes(C.protocol))throw Error(`network: unsupported URL protocol ${C.protocol}`);if(B&&!DD(C))throw Error("network: local request must remain on loopback");g.signal?.throwIfAborted();let Y=B?void 0:await I(C),J=await Lv(C,g,Y),N=J.headers.get("location");if(![301,302,303,307,308].includes(J.status)||!N||Q.redirect==="manual")return J;if(await J.body?.cancel(),Q.redirect==="error")throw Error("network: redirect rejected");if(F>=20)throw Error("network: too many redirects");let G=new URL(N,C),M=new Headers(g.headers);if(G.origin!==C.origin)for(let W of["authorization","proxy-authorization","cookie","host"])M.delete(W);let V=(g.method??"GET").toUpperCase();if(J.status===303&&V!=="HEAD"||[301,302].includes(J.status)&&V==="POST"){g={...g,method:"GET",body:void 0};for(let W of["content-type","content-length","content-encoding"])M.delete(W)}else if(g.body instanceof ReadableStream)throw Error("network: cannot replay a streamed body after redirect");g.headers=M,C=G}}function q1(A,Q={}){return Xv(A,Q,!0)}import{realpathSync as x1}from"node:fs";import{fileURLToPath as Kv}from"node:url";function P1(A){if(typeof A!=="string"||!A.trim())throw Error('agent run requires "description" (CLI: --description)');let Q=A.trim();if(/[\r\n\u2028\u2029]/.test(Q))throw Error("agent description must be a single line");if([...Q].length>60)throw Error("agent description exceeds 60 characters");return Q}async function Hv(A=process.argv.slice(2)){let Q=A.shift()??"";if(!Q||Q==="help"||Q==="--help"||Q==="-h"){process.stdout.write(`${k1()}
118
118
  `);return}let B=Tv();switch(Q){case"identities":{let I=await VI(B,"GET","/agents/identities");process.stdout.write(A.includes("--json")?`${JSON.stringify(I,null,2)}
119
119
  `:jv(I));return}case"run":await zv(B,A);return;case"follow-up":case"followup":await Sv(B,A);return;case"answer":await $v(B,A);return;case"status":{let I=qE(A[0],"status requires run_id"),C=await VI(B,"GET",`/agents/runs/${encodeURIComponent(I)}`);if(m1(C,A.includes("--json")),C.status==="failed"||C.status==="cancelled")process.exitCode=1;return}case"cancel":{let I=qE(A[0],"cancel requires run_id"),C=await VI(B,"DELETE",`/agents/runs/${encodeURIComponent(I)}`);process.stdout.write(`${JSON.stringify(C)}
120
120
  `);return}default:throw Error(k1())}}async function zv(A,Q){let B=y1(Q,!0),I=await v1(B),C={identity_ids:B.identityIds,description:B.description,prompt:I,...B.effort?{effort:B.effort}:{},...B.sessionId?{session_id:B.sessionId}:{},...B.workDir?{work_dir:B.workDir}:{}},g=await VI(A,"POST","/agents/runs",C);await f1(A,g,B.noWait,B.json)}async function Sv(A,Q){let B=qE(Q.shift(),"follow-up requires run_id"),I=y1(Q,!1),C=await v1(I),g={description:I.description,prompt:C,...I.identityId?{identity_id:I.identityId}:{},...I.effort?{effort:I.effort}:{},...I.workDir?{work_dir:I.workDir}:{}},F=await VI(A,"POST",`/agents/runs/${encodeURIComponent(B)}/follow-up`,g);await f1(A,F,I.noWait,I.json)}async function $v(A,Q){let B=qE(Q.shift(),"answer requires run_id"),I="",C="",g=!1,F={};for(let J=0;J<Q.length;J++){let N=Q[J],G=()=>qE(Q[++J],`${N} requires a value`);switch(N){case"--identity":case"-i":I=G();break;case"--request":C=G();break;case"--answer":{let M=G(),V=M.indexOf("=");if(V<=0)throw Error("--answer must be question-or-id=value");F[M.slice(0,V)]=M.slice(V+1);break}case"--stdin":g=!0;break;default:throw Error(`unknown answer option: ${N}`)}}if(g){let J=(await c1()).trim(),N;try{N=JSON.parse(J)}catch{throw Error("answer stdin must be a JSON object")}if(!N||typeof N!=="object"||Array.isArray(N))throw Error("answer stdin must be a JSON object");for(let[G,M]of Object.entries(N))F[G]=String(M)}if(!C)throw Error("answer requires --request");if(Object.keys(F).length===0)throw Error("answer requires --answer or --stdin");let Y=await VI(A,"POST",`/agents/runs/${encodeURIComponent(B)}/answer`,{request_id:C,answers:F,...I?{identity_id:I}:{}});await b1(A,String(Y.run_id??B))}function y1(A,Q){let B={identityIds:[],identityId:"",sessionId:"",workDir:"",effort:"",description:"",prompt:"",noWait:!1,readStdin:!1,json:!1},I=[];for(let C=0;C<A.length;C++){let g=A[C],F=()=>qE(A[++C],`${g} requires a value`);switch(g){case"--identity":case"-i":if(Q)B.identityIds.push(F());else B.identityId=F();break;case"--effort":B.effort=F();break;case"--description":B.description=F();break;case"--workdir":if(B.workDir)throw Error("--workdir may only be specified once");F(),B.workDir=A[C];break;case"--session":if(!Q)throw Error("--session is only supported by run; follow-up accepts a run_id");if(B.sessionId)throw Error("--session may only be specified once");B.sessionId=F();break;case"--prompt":F(),B.prompt=A[C];break;case"--stdin":B.readStdin=!0;break;case"--no-wait":B.noWait=!0;break;case"--json":B.json=!0;break;default:if(g.startsWith("-"))throw Error(`unknown option: ${g}`);I.push(g)}}if(B.identityIds=[...new Set(B.identityIds)],B.sessionId&&B.identityIds.length>1)throw Error("--session accepts at most one --identity");if(Q&&!B.sessionId&&B.identityIds.length===0)throw Error("run requires at least one --identity");if(B.description=P1(B.description),!B.prompt&&I.length)B.prompt=I.join(" ");if(!B.prompt)B.readStdin=!0;return B}async function v1(A){let Q=A.readStdin?await c1():"",B=A.prompt||Q;if(!B.trim())throw Error("agent prompt is empty");return B}async function f1(A,Q,B,I){let C=String(Q.run_id??"");if(!C)throw Error("agent API returned no run_id");if(B){process.stdout.write(`${JSON.stringify(Q,null,2)}