@leviyuan/lodestar 0.18.10 → 0.18.12
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.
- package/dist/lodestar-agent.js +2 -2
- package/dist/lodestar-setup.js +2 -2
- package/dist/lodestar-update.js +2 -2
- package/dist/lodestar-version.js +2 -2
- package/dist/lodestar.js +181 -181
- package/docs/configuration.md +1 -1
- package/docs/models.md +1 -1
- package/docs/usage.md +2 -2
- package/package.json +1 -1
package/dist/lodestar-agent.js
CHANGED
|
@@ -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:
|
|
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)}
|
package/dist/lodestar-setup.js
CHANGED
|
@@ -76,7 +76,7 @@ ${g}`;return}if(AY(A,I,Jv)){if(Gv(A,E))Q.retry=A.toString("utf8",E);return}if(AY
|
|
|
76
76
|
\r
|
|
77
77
|
`),I=!1,E=!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&&!E){let N=Error("Premature close");N.code="ERR_STREAM_PREMATURE_CLOSE",Q(N)}},U=(N)=>{if(E=eF.compare(N.slice(-5),B)===0,!E&&g)E=eF.compare(g.slice(-3),B.slice(0,3))===0&&eF.compare(N.slice(-2),B.slice(3))===0;g=N};F.prependListener("close",Y),F.on("data",U),A.on("close",()=>{F.removeListener("close",Y),F.removeListener("data",U)})})}var M8=OB(Xw(),1),w8=OB(dw(),1);var gB=OB(J2(),1);import{execFile as V6}from"node:child_process";import{readFile as W6}from"node:fs/promises";import{homedir as Z6}from"node:os";import{join as G2}from"node:path";import{promisify as L6}from"node:util";var R6=L6(V6);function mE(A,Q){return A[Q.toLowerCase()]?.trim()||A[Q]?.trim()||void 0}function K0(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 NU(A,Q=""){let B=A.hostname.replace(/^\[|\]$/g,"").toLowerCase(),I=A.port||(A.protocol==="https:"?"443":"80");return Q.split(/[,;\s]+/).filter(Boolean).some((E)=>{let g=E.toLowerCase();if(g==="*")return!0;if(g==="<local>")return!B.includes(".")&&!B.includes(":");if(g.includes("/")){if(gB.Address4.isValid(g))return gB.Address4.isValid(B)&&new gB.Address4(B).isInSubnet(new gB.Address4(g));if(gB.Address6.isValid(g))return gB.Address6.isValid(B)&&new gB.Address6(B).isInSubnet(new gB.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 N2(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 M2(A,Q,B={}){if(!["http:","https:"].includes(A.protocol))throw Error(`network: unsupported URL protocol ${A.protocol}`);if(K0(A)||NU(A,mE(Q,"NO_PROXY")))return;let I=A.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY",E=mE(Q,I)||mE(Q,"ALL_PROXY");if(E)return N2(E,"environment");if(B.unsupported)throw Error(`network proxy: ${B.unsupported}`);if(NU(A,B.bypass))return;let g=(A.protocol==="https:"?B.https:B.http)||B.all;return g?N2(g,"system settings"):void 0}function X0(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 X6(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),E=I?I[2]:B,g=/^[a-z][\w+.-]*:\/\//i.test(E)?E:`http://${E}`;if(!I)Q.all=g;else if(I[1].toLowerCase()==="socks")Q.all=`socks://${E.replace(/^socks\w*:\/\//,"")}`;else Q[I[1].toLowerCase()]=g}return Q}function K6(A){let Q=(E)=>A.match(new RegExp(`^\\s*${E}\\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=X0(Q("HTTPProxy"),Q("HTTPPort"));if(Q("HTTPSEnable")==="1")B.https=X0(Q("HTTPSProxy"),Q("HTTPSPort"));if(Q("SOCKSEnable")==="1")B.all=X0(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((E)=>E[1]).join(","),Q("ExcludeSimpleHostnames")==="1")B.bypass+=",<local>";return B}function L0(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 H6(A){let Q=new Map(A.split(`
|
|
78
78
|
`).filter(Boolean).map((E)=>{let g=E.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=L0(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 E of["http","https","socks"]){let g=L0(Q.get(`.${E}/host`));if(!g)continue;let F=new URL(X0(g,Q.get(`.${E}/port`),E==="socks"?"socks":"http"));if(E==="http"&&Q.get(".http/use-authentication")==="true")F.username=L0(Q.get(".http/authentication-user")),F.password=L0(Q.get(".http/authentication-password"));I[E==="socks"?"all":E]=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((E)=>E[1]).join(","),I}function z6(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 E={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");E[g==="socks"?"all":g]=/^[a-z][\w+.-]*:\/\//i.test(Y)?Y:`${g==="socks"?"socks":"http"}://${Y}`}return E}async function R0(A,Q){let{stdout:
|
|
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 E={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");E[g==="socks"?"all":g]=/^[a-z][\w+.-]*:\/\//i.test(Y)?Y:`${g==="socks"?"socks":"http"}://${Y}`}return E}async function R0(A,Q,B=5000){let{stdout:I}=await R6(A,Q,{encoding:"utf8",timeout:B,maxBuffer:262144,windowsHide:!0});return I}var S6=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 $6(){if(process.platform==="win32")return X6(JSON.parse(await R0("powershell.exe",["-NoProfile","-NonInteractive","-Command",S6])));if(process.platform==="darwin")return K6(await R0("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let A=G2(process.env.XDG_CONFIG_HOME||G2(Z6(),".config"),"kioslaverc");try{let B=z6(await W6(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 R0("gsettings",["list-schemas"])}catch(B){if(B?.code==="ENOENT")return{};throw B}if(!Q.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return H6(await R0("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function T6(A=$6,Q=process.env,B=Date.now){let I;return async(E)=>{if(K0(E)||NU(E,mE(Q,"NO_PROXY"))||mE(Q,E.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||mE(Q,"ALL_PROXY"))return M2(E,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 M2(E,Q,await I.value)}}var w2=T6();var ef=new rf({keepAlive:!0}),Ab=new tf({keepAlive:!0}),N8;function Qb(A,Q){if(!Q)return A.protocol==="https:"?Ab:ef;return A.protocol==="https:"?new w8.HttpsProxyAgent(Q):new M8.HttpProxyAgent(Q)}async function Bb(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(() => OB(J8(),1));return N8??=new Y.Agent,await Y.fetch(A,{...Q,redirect:"manual",dispatcher:N8})}return globalThis.fetch(A.href,{...Q,redirect:"manual",...B?{proxy:B}:{}})}let I=new Request(A,{...Q,redirect:"manual",duplex:"half"}),E=await A0(A,{method:I.method,headers:Object.fromEntries(I.headers),body:I.body?G8.fromWeb(I.body):void 0,signal:I.signal,agent:Qb(A,B),redirect:"manual"}),g=I.method==="HEAD"||[204,205,304].includes(E.status)||!E.body?null:G8.toWeb(E.body);return new Response(g,{status:E.status,statusText:E.statusText,headers:[...E.headers]})}async function Ib(A,Q,B,I=w2){let E=new URL(A),g={...Q};for(let F=0;;F++){if(!["http:","https:"].includes(E.protocol))throw Error(`network: unsupported URL protocol ${E.protocol}`);if(B&&!K0(E))throw Error("network: local request must remain on loopback");g.signal?.throwIfAborted();let Y=B?void 0:await I(E),U=await Bb(E,g,Y),N=U.headers.get("location");if(![301,302,303,307,308].includes(U.status)||!N||Q.redirect==="manual")return U;if(await U.body?.cancel(),Q.redirect==="error")throw Error("network: redirect rejected");if(F>=20)throw Error("network: too many redirects");let G=new URL(N,E),M=new Headers(g.headers);if(G.origin!==E.origin)for(let Z of["authorization","proxy-authorization","cookie","host"])M.delete(Z);let w=(g.method??"GET").toUpperCase();if(U.status===303&&w!=="HEAD"||[301,302].includes(U.status)&&w==="POST"){g={...g,method:"GET",body:void 0};for(let Z of["content-type","content-length","content-encoding"])M.delete(Z)}else if(g.body instanceof ReadableStream)throw Error("network: cannot replay a streamed body after redirect");g.headers=M,E=G}}function JF(A,Q={}){return Ib(A,Q,!1)}var XH=OB(oG(),1);import{execFileSync as Dm,spawn as FY}from"node:child_process";import{existsSync as EN,mkdirSync as KH,readFileSync as Ym}from"node:fs";import{createInterface as Um}from"node:readline/promises";import{dirname as Jm,join as CN}from"node:path";import{homedir as Gm}from"node:os";import{fileURLToPath as Nm}from"node:url";var EY=OB(gH(),1);import{homedir as kb}from"node:os";import{join as GA}from"node:path";var FH=kb(),hb=process.platform==="win32";function yb(A,Q,B){if(A)return A;if(Q)return GA(Q,"lodestar");return B}function vb(){if(hb)return GA(process.env.APPDATA??GA(FH,"AppData","Roaming"),"Lodestar");return GA(FH,".config","lodestar")}var sG=yb(process.env.LODESTAR_CONFIG_DIR,process.env.XDG_CONFIG_HOME,vb()),HA=EY.lodestarDataDir(),NF=process.env.LODESTAR_CONFIG??GA(sG,"config.toml"),_l=GA(HA,"daemon.pid"),Ol=GA(HA,"daemon.log"),ql=GA(HA,"session-chat-map.json"),Pl=GA(HA,"session-resume-map.json"),xl=GA(HA,"session-turns-map.json"),kl=GA(HA,"session-model-map.json"),hl=GA(HA,"temp-session-leases.json"),yl=GA(HA,"tasklist-map.json"),vl=GA(HA,"agent-runs"),fl=GA(HA,"agent-session-ids.json"),bl=EY.managedClaudePluginDir(),ml=GA(HA,"dsh"),ul=GA(HA,"codex-accounts"),cl=GA(HA,"codex-accounts.json"),pl=GA(HA,"codex-quota-blocks.json"),rG=GA(HA,"agent-runtimes"),ll=GA(HA,"context-window-cache.json"),dl=GA(HA,"notify-callbacks.json"),il=GA(HA,"alive-on-shutdown.json"),nl=GA(HA,"inbox"),al=GA(HA,"file-deliveries"),ol=GA(HA,"file-delivery-groups.json"),sl=GA(HA,"debug.sock"),rl=GA(HA,"debug-context.json");import{chmodSync as fb,closeSync as tG,fsyncSync as DH,mkdirSync as bb,openSync as YH,renameSync as mb,unlinkSync as ub,writeFileSync as cb}from"node:fs";import{randomUUID as pb}from"node:crypto";import{dirname as UH}from"node:path";var lb=384;var db=448;function ib(A){let Q=UH(A);bb(Q,{recursive:!0,mode:db})}function nb(A,Q,B){ib(A);let I=`${A}.${process.pid}.${pb()}.tmp`,E=null;try{E=YH(I,"wx",B),cb(E,Q),DH(E),tG(E),E=null,mb(I,A);try{fb(A,B)}catch{}if(process.platform!=="win32"){let g=null;try{g=YH(UH(A),"r"),DH(g)}catch{}finally{if(g!==null)try{tG(g)}catch{}}}}catch(g){if(E!==null)try{tG(E)}catch{}try{ub(I)}catch{}throw g}}function MF(A,Q){nb(A,Q,lb)}import{createHash as rb,randomUUID as tb}from"node:crypto";import{existsSync as AN,readFileSync as NH}from"node:fs";import{mkdir as MH,mkdtemp as eb,readFile as wH,rename as VH,rm as wF,writeFile as WH}from"node:fs/promises";import{join as hQ,isAbsolute as Am}from"node:path";import{fileURLToPath as Qm,pathToFileURL as Jd}from"node:url";var JH=OB(oG(),1);import{execFile as ab}from"node:child_process";var ob="https://registry.npmjs.org";class CY extends Error{}function sb(A){if(!Number.isSafeInteger(A)||A<=0)return Promise.reject(Error(`Invalid npm installer PID: ${A}`));return new Promise((Q,B)=>{ab("taskkill",["/PID",String(A),"/T","/F"],{windowsHide:!0,timeout:1e4},(I,E,g)=>{if(I)B(Error(`taskkill npm installer PID ${A} failed: ${I.message}
|
|
117
|
+
`;async function $6(){if(process.platform==="win32")return X6(JSON.parse(await R0("powershell.exe",["-NoProfile","-NonInteractive","-Command",S6],15000)));if(process.platform==="darwin")return K6(await R0("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let A=G2(process.env.XDG_CONFIG_HOME||G2(Z6(),".config"),"kioslaverc");try{let B=z6(await W6(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 R0("gsettings",["list-schemas"])}catch(B){if(B?.code==="ENOENT")return{};throw B}if(!Q.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return H6(await R0("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function T6(A=$6,Q=process.env,B=Date.now){let I;return async(E)=>{if(K0(E)||NU(E,mE(Q,"NO_PROXY"))||mE(Q,E.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||mE(Q,"ALL_PROXY"))return M2(E,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 M2(E,Q,await I.value)}}var w2=T6();var ef=new rf({keepAlive:!0}),Ab=new tf({keepAlive:!0}),N8;function Qb(A,Q){if(!Q)return A.protocol==="https:"?Ab:ef;return A.protocol==="https:"?new w8.HttpsProxyAgent(Q):new M8.HttpProxyAgent(Q)}async function Bb(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(() => OB(J8(),1));return N8??=new Y.Agent,await Y.fetch(A,{...Q,redirect:"manual",dispatcher:N8})}return globalThis.fetch(A.href,{...Q,redirect:"manual",...B?{proxy:B}:{}})}let I=new Request(A,{...Q,redirect:"manual",duplex:"half"}),E=await A0(A,{method:I.method,headers:Object.fromEntries(I.headers),body:I.body?G8.fromWeb(I.body):void 0,signal:I.signal,agent:Qb(A,B),redirect:"manual"}),g=I.method==="HEAD"||[204,205,304].includes(E.status)||!E.body?null:G8.toWeb(E.body);return new Response(g,{status:E.status,statusText:E.statusText,headers:[...E.headers]})}async function Ib(A,Q,B,I=w2){let E=new URL(A),g={...Q};for(let F=0;;F++){if(!["http:","https:"].includes(E.protocol))throw Error(`network: unsupported URL protocol ${E.protocol}`);if(B&&!K0(E))throw Error("network: local request must remain on loopback");g.signal?.throwIfAborted();let Y=B?void 0:await I(E),U=await Bb(E,g,Y),N=U.headers.get("location");if(![301,302,303,307,308].includes(U.status)||!N||Q.redirect==="manual")return U;if(await U.body?.cancel(),Q.redirect==="error")throw Error("network: redirect rejected");if(F>=20)throw Error("network: too many redirects");let G=new URL(N,E),M=new Headers(g.headers);if(G.origin!==E.origin)for(let Z of["authorization","proxy-authorization","cookie","host"])M.delete(Z);let w=(g.method??"GET").toUpperCase();if(U.status===303&&w!=="HEAD"||[301,302].includes(U.status)&&w==="POST"){g={...g,method:"GET",body:void 0};for(let Z of["content-type","content-length","content-encoding"])M.delete(Z)}else if(g.body instanceof ReadableStream)throw Error("network: cannot replay a streamed body after redirect");g.headers=M,E=G}}function JF(A,Q={}){return Ib(A,Q,!1)}var XH=OB(oG(),1);import{execFileSync as Dm,spawn as FY}from"node:child_process";import{existsSync as EN,mkdirSync as KH,readFileSync as Ym}from"node:fs";import{createInterface as Um}from"node:readline/promises";import{dirname as Jm,join as CN}from"node:path";import{homedir as Gm}from"node:os";import{fileURLToPath as Nm}from"node:url";var EY=OB(gH(),1);import{homedir as kb}from"node:os";import{join as GA}from"node:path";var FH=kb(),hb=process.platform==="win32";function yb(A,Q,B){if(A)return A;if(Q)return GA(Q,"lodestar");return B}function vb(){if(hb)return GA(process.env.APPDATA??GA(FH,"AppData","Roaming"),"Lodestar");return GA(FH,".config","lodestar")}var sG=yb(process.env.LODESTAR_CONFIG_DIR,process.env.XDG_CONFIG_HOME,vb()),HA=EY.lodestarDataDir(),NF=process.env.LODESTAR_CONFIG??GA(sG,"config.toml"),_l=GA(HA,"daemon.pid"),Ol=GA(HA,"daemon.log"),ql=GA(HA,"session-chat-map.json"),Pl=GA(HA,"session-resume-map.json"),xl=GA(HA,"session-turns-map.json"),kl=GA(HA,"session-model-map.json"),hl=GA(HA,"temp-session-leases.json"),yl=GA(HA,"tasklist-map.json"),vl=GA(HA,"agent-runs"),fl=GA(HA,"agent-session-ids.json"),bl=EY.managedClaudePluginDir(),ml=GA(HA,"dsh"),ul=GA(HA,"codex-accounts"),cl=GA(HA,"codex-accounts.json"),pl=GA(HA,"codex-quota-blocks.json"),rG=GA(HA,"agent-runtimes"),ll=GA(HA,"context-window-cache.json"),dl=GA(HA,"notify-callbacks.json"),il=GA(HA,"alive-on-shutdown.json"),nl=GA(HA,"inbox"),al=GA(HA,"file-deliveries"),ol=GA(HA,"file-delivery-groups.json"),sl=GA(HA,"debug.sock"),rl=GA(HA,"debug-context.json");import{chmodSync as fb,closeSync as tG,fsyncSync as DH,mkdirSync as bb,openSync as YH,renameSync as mb,unlinkSync as ub,writeFileSync as cb}from"node:fs";import{randomUUID as pb}from"node:crypto";import{dirname as UH}from"node:path";var lb=384;var db=448;function ib(A){let Q=UH(A);bb(Q,{recursive:!0,mode:db})}function nb(A,Q,B){ib(A);let I=`${A}.${process.pid}.${pb()}.tmp`,E=null;try{E=YH(I,"wx",B),cb(E,Q),DH(E),tG(E),E=null,mb(I,A);try{fb(A,B)}catch{}if(process.platform!=="win32"){let g=null;try{g=YH(UH(A),"r"),DH(g)}catch{}finally{if(g!==null)try{tG(g)}catch{}}}}catch(g){if(E!==null)try{tG(E)}catch{}try{ub(I)}catch{}throw g}}function MF(A,Q){nb(A,Q,lb)}import{createHash as rb,randomUUID as tb}from"node:crypto";import{existsSync as AN,readFileSync as NH}from"node:fs";import{mkdir as MH,mkdtemp as eb,readFile as wH,rename as VH,rm as wF,writeFile as WH}from"node:fs/promises";import{join as hQ,isAbsolute as Am}from"node:path";import{fileURLToPath as Qm,pathToFileURL as Jd}from"node:url";var JH=OB(oG(),1);import{execFile as ab}from"node:child_process";var ob="https://registry.npmjs.org";class CY extends Error{}function sb(A){if(!Number.isSafeInteger(A)||A<=0)return Promise.reject(Error(`Invalid npm installer PID: ${A}`));return new Promise((Q,B)=>{ab("taskkill",["/PID",String(A),"/T","/F"],{windowsHide:!0,timeout:1e4},(I,E,g)=>{if(I)B(Error(`taskkill npm installer PID ${A} failed: ${I.message}
|
|
118
118
|
${E}${g}`));else Q()})})}async function eG(A,Q,B={}){Q?.throwIfAborted();let I=B.platform??process.platform,E=B.timeoutMs??300000,g=B.terminationTimeoutMs??1e4;return await new Promise((F,Y)=>{let U=(B.spawn??JH.spawn)("npm",["install","--prefix",A,"--include=optional","--no-fund","--no-audit",`--registry=${ob}`],{cwd:A,stdio:["ignore","pipe","pipe"],shell:!1,windowsHide:!0}),N="",G,M,w=!1,Z=!1,R,H=(P)=>{N=(N+P.toString()).slice(-16384)};U.stdout.on("data",H),U.stderr.on("data",H);let L=(P)=>{if(w)return;if(w=!0,clearTimeout(j),R)clearTimeout(R);if(Q?.removeEventListener("abort",O),P)Y(P);else F()},X=(P)=>new CY(`${G?.message??"Agent runtime install failed"}; npm installer PID ${U.pid??"MISS"} termination unconfirmed: ${P}; partial directory retained: ${A}
|
|
119
119
|
${N}`),q=(P)=>{if(w||Z||M)return;G??=Error(P),R=setTimeout(()=>L(X(`stdio did not close within ${g}ms`)),g),M=Promise.resolve().then(async()=>{if(Z)throw Error("installer closed before process-tree termination started");if(!U.pid)throw Error("installer PID unavailable");if(I==="win32")await(B.terminateWindows??sb)(U.pid);else if(!U.kill("SIGTERM"))throw Error("npm installer rejected SIGTERM")}),M.catch((k)=>L(X(k instanceof Error?k.message:String(k))))},O=()=>q("Agent runtime install aborted"),j=setTimeout(()=>q(`Agent runtime install timed out after ${E}ms`),E);if(Q?.addEventListener("abort",O,{once:!0}),U.on("error",(P)=>{if(G??=P,!U.pid)L(Error(`${P.message}
|
|
120
120
|
${N}`))}),U.once("close",async(P,k)=>{Z=!0,clearTimeout(j),Q?.removeEventListener("abort",O);try{await M}catch(n){L(X(n instanceof Error?n.message:String(n)));return}if(G||P!==0)L(Error(`${G?.message??`npm install exited code=${P} signal=${k}`}
|
package/dist/lodestar-update.js
CHANGED
|
@@ -76,7 +76,7 @@ ${g}`;return}if(sD(A,I,Cv)){if(Ev(A,C))Q.retry=A.toString("utf8",C);return}if(sD
|
|
|
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=oF.compare(N.slice(-5),B)===0,!C&&g)C=oF.compare(g.slice(-3),B.slice(0,3))===0&&oF.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 E8=AI(Gw(),1),g8=AI(yw(),1);var gB=AI(B2(),1);import{execFile as Y6}from"node:child_process";import{readFile as U6}from"node:fs/promises";import{homedir as J6}from"node:os";import{join as I2}from"node:path";import{promisify as G6}from"node:util";var N6=G6(Y6);function bC(A,Q){return A[Q.toLowerCase()]?.trim()||A[Q]?.trim()||void 0}function Z0(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 FU(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(gB.Address4.isValid(g))return gB.Address4.isValid(B)&&new gB.Address4(B).isInSubnet(new gB.Address4(g));if(gB.Address6.isValid(g))return gB.Address6.isValid(B)&&new gB.Address6(B).isInSubnet(new gB.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 C2(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 E2(A,Q,B={}){if(!["http:","https:"].includes(A.protocol))throw Error(`network: unsupported URL protocol ${A.protocol}`);if(Z0(A)||FU(A,bC(Q,"NO_PROXY")))return;let I=A.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY",C=bC(Q,I)||bC(Q,"ALL_PROXY");if(C)return C2(C,"environment");if(B.unsupported)throw Error(`network proxy: ${B.unsupported}`);if(FU(A,B.bypass))return;let g=(A.protocol==="https:"?B.https:B.http)||B.all;return g?C2(g,"system settings"):void 0}function W0(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 M6(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 w6(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=W0(Q("HTTPProxy"),Q("HTTPPort"));if(Q("HTTPSEnable")==="1")B.https=W0(Q("HTTPSProxy"),Q("HTTPSPort"));if(Q("SOCKSEnable")==="1")B.all=W0(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 w0(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 V6(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=w0(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=w0(Q.get(`.${C}/host`));if(!g)continue;let F=new URL(W0(g,Q.get(`.${C}/port`),C==="socks"?"socks":"http"));if(C==="http"&&Q.get(".http/use-authentication")==="true")F.username=w0(Q.get(".http/authentication-user")),F.password=w0(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 W6(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 V0(A,Q){let{stdout:
|
|
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 V0(A,Q,B=5000){let{stdout:I}=await N6(A,Q,{encoding:"utf8",timeout:B,maxBuffer:262144,windowsHide:!0});return I}var Z6=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 L6(){if(process.platform==="win32")return M6(JSON.parse(await V0("powershell.exe",["-NoProfile","-NonInteractive","-Command",Z6])));if(process.platform==="darwin")return w6(await V0("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let A=I2(process.env.XDG_CONFIG_HOME||I2(J6(),".config"),"kioslaverc");try{let B=W6(await U6(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 V0("gsettings",["list-schemas"])}catch(B){if(B?.code==="ENOENT")return{};throw B}if(!Q.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return V6(await V0("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function R6(A=L6,Q=process.env,B=Date.now){let I;return async(C)=>{if(Z0(C)||FU(C,bC(Q,"NO_PROXY"))||bC(Q,C.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||bC(Q,"ALL_PROXY"))return E2(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 E2(C,Q,await I.value)}}var g2=R6();var df=new pf({keepAlive:!0}),nf=new lf({keepAlive:!0}),C8;function af(A,Q){if(!Q)return A.protocol==="https:"?nf:df;return A.protocol==="https:"?new g8.HttpsProxyAgent(Q):new E8.HttpProxyAgent(Q)}async function of(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(() => AI(B8(),1));return C8??=new Y.Agent,await Y.fetch(A,{...Q,redirect:"manual",dispatcher:C8})}return globalThis.fetch(A.href,{...Q,redirect:"manual",...B?{proxy:B}:{}})}let I=new Request(A,{...Q,redirect:"manual",duplex:"half"}),C=await sF(A,{method:I.method,headers:Object.fromEntries(I.headers),body:I.body?I8.fromWeb(I.body):void 0,signal:I.signal,agent:af(A,B),redirect:"manual"}),g=I.method==="HEAD"||[204,205,304].includes(C.status)||!C.body?null:I8.toWeb(C.body);return new Response(g,{status:C.status,statusText:C.statusText,headers:[...C.headers]})}async function sf(A,Q,B,I=g2){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&&!Z0(C))throw Error("network: local request must remain on loopback");g.signal?.throwIfAborted();let Y=B?void 0:await I(C),J=await of(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 w=(g.method??"GET").toUpperCase();if(J.status===303&&w!=="HEAD"||[301,302].includes(J.status)&&w==="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 F8(A,Q={}){return sf(A,Q,!1)}import{createHash as bb,randomUUID as mb}from"node:crypto";import{existsSync as IH,readFileSync as CH}from"node:fs";import{mkdir as EH,mkdtemp as cb,readFile as gH,rename as FH,rm as JF,writeFile as DH}from"node:fs/promises";import{join as nQ,isAbsolute as ub}from"node:path";import{fileURLToPath as pb,pathToFileURL as pl}from"node:url";var s8=AI(o8(),1);import{execFile as $b}from"node:child_process";var Tb="https://registry.npmjs.org";class AY extends Error{}function jb(A){if(!Number.isSafeInteger(A)||A<=0)return Promise.reject(Error(`Invalid npm installer PID: ${A}`));return new Promise((Q,B)=>{$b("taskkill",["/PID",String(A),"/T","/F"],{windowsHide:!0,timeout:1e4},(I,C,g)=>{if(I)B(Error(`taskkill npm installer PID ${A} failed: ${I.message}
|
|
117
|
+
`;async function L6(){if(process.platform==="win32")return M6(JSON.parse(await V0("powershell.exe",["-NoProfile","-NonInteractive","-Command",Z6],15000)));if(process.platform==="darwin")return w6(await V0("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let A=I2(process.env.XDG_CONFIG_HOME||I2(J6(),".config"),"kioslaverc");try{let B=W6(await U6(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 V0("gsettings",["list-schemas"])}catch(B){if(B?.code==="ENOENT")return{};throw B}if(!Q.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return V6(await V0("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function R6(A=L6,Q=process.env,B=Date.now){let I;return async(C)=>{if(Z0(C)||FU(C,bC(Q,"NO_PROXY"))||bC(Q,C.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||bC(Q,"ALL_PROXY"))return E2(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 E2(C,Q,await I.value)}}var g2=R6();var df=new pf({keepAlive:!0}),nf=new lf({keepAlive:!0}),C8;function af(A,Q){if(!Q)return A.protocol==="https:"?nf:df;return A.protocol==="https:"?new g8.HttpsProxyAgent(Q):new E8.HttpProxyAgent(Q)}async function of(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(() => AI(B8(),1));return C8??=new Y.Agent,await Y.fetch(A,{...Q,redirect:"manual",dispatcher:C8})}return globalThis.fetch(A.href,{...Q,redirect:"manual",...B?{proxy:B}:{}})}let I=new Request(A,{...Q,redirect:"manual",duplex:"half"}),C=await sF(A,{method:I.method,headers:Object.fromEntries(I.headers),body:I.body?I8.fromWeb(I.body):void 0,signal:I.signal,agent:af(A,B),redirect:"manual"}),g=I.method==="HEAD"||[204,205,304].includes(C.status)||!C.body?null:I8.toWeb(C.body);return new Response(g,{status:C.status,statusText:C.statusText,headers:[...C.headers]})}async function sf(A,Q,B,I=g2){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&&!Z0(C))throw Error("network: local request must remain on loopback");g.signal?.throwIfAborted();let Y=B?void 0:await I(C),J=await of(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 w=(g.method??"GET").toUpperCase();if(J.status===303&&w!=="HEAD"||[301,302].includes(J.status)&&w==="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 F8(A,Q={}){return sf(A,Q,!1)}import{createHash as bb,randomUUID as mb}from"node:crypto";import{existsSync as IH,readFileSync as CH}from"node:fs";import{mkdir as EH,mkdtemp as cb,readFile as gH,rename as FH,rm as JF,writeFile as DH}from"node:fs/promises";import{join as nQ,isAbsolute as ub}from"node:path";import{fileURLToPath as pb,pathToFileURL as pl}from"node:url";var s8=AI(o8(),1);import{execFile as $b}from"node:child_process";var Tb="https://registry.npmjs.org";class AY extends Error{}function jb(A){if(!Number.isSafeInteger(A)||A<=0)return Promise.reject(Error(`Invalid npm installer PID: ${A}`));return new Promise((Q,B)=>{$b("taskkill",["/PID",String(A),"/T","/F"],{windowsHide:!0,timeout:1e4},(I,C,g)=>{if(I)B(Error(`taskkill npm installer PID ${A} failed: ${I.message}
|
|
118
118
|
${C}${g}`));else Q()})})}async function pG(A,Q,B={}){Q?.throwIfAborted();let I=B.platform??process.platform,C=B.timeoutMs??300000,g=B.terminationTimeoutMs??1e4;return await new Promise((F,Y)=>{let J=(B.spawn??s8.spawn)("npm",["install","--prefix",A,"--include=optional","--no-fund","--no-audit",`--registry=${Tb}`],{cwd:A,stdio:["ignore","pipe","pipe"],shell:!1,windowsHide:!0}),N="",G,M,w=!1,W=!1,L,K=(q)=>{N=(N+q.toString()).slice(-16384)};J.stdout.on("data",K),J.stderr.on("data",K);let Z=(q)=>{if(w)return;if(w=!0,clearTimeout(T),L)clearTimeout(L);if(Q?.removeEventListener("abort",_),q)Y(q);else F()},R=(q)=>new AY(`${G?.message??"Agent runtime install failed"}; npm installer PID ${J.pid??"MISS"} termination unconfirmed: ${q}; partial directory retained: ${A}
|
|
119
119
|
${N}`),O=(q)=>{if(w||W||M)return;G??=Error(q),L=setTimeout(()=>Z(R(`stdio did not close within ${g}ms`)),g),M=Promise.resolve().then(async()=>{if(W)throw Error("installer closed before process-tree termination started");if(!J.pid)throw Error("installer PID unavailable");if(I==="win32")await(B.terminateWindows??jb)(J.pid);else if(!J.kill("SIGTERM"))throw Error("npm installer rejected SIGTERM")}),M.catch((x)=>Z(R(x instanceof Error?x.message:String(x))))},_=()=>O("Agent runtime install aborted"),T=setTimeout(()=>O(`Agent runtime install timed out after ${C}ms`),C);if(Q?.addEventListener("abort",_,{once:!0}),J.on("error",(q)=>{if(G??=q,!J.pid)Z(Error(`${q.message}
|
|
120
120
|
${N}`))}),J.once("close",async(q,x)=>{W=!0,clearTimeout(T),Q?.removeEventListener("abort",_);try{await M}catch(i){Z(R(i instanceof Error?i.message:String(i)));return}if(G||q!==0)Z(Error(`${G?.message??`npm install exited code=${q} signal=${x}`}
|
package/dist/lodestar-version.js
CHANGED
|
@@ -19,7 +19,7 @@ import{createRequire as _8}from"node:module";var R8=Object.create;var{getPrototy
|
|
|
19
19
|
`;let H=(0,fJ.parseProxyResponse)(Y);Y.write(`${X}\r
|
|
20
20
|
`);let{connect:O,buffered:M}=await H;if($.emit("proxyConnect",O),this.emit("proxyConnect",O,$),O.statusCode===200){if($.once("socket",_J),J.secureEndpoint)return q$("Upgrading socket connection to TLS"),e0.connect({...J1($1(J),"host","path","port"),socket:Y});return Y}Y.destroy();let z=new D$.Socket({writable:!1});return z.readable=!0,$.once("socket",(V)=>{q$("Replaying proxy buffer for failed request"),(0,SJ.default)(V.listenerCount("data")>0),V.push(M),V.push(null)}),z}}t$.protocols=["http","https"];b.HttpsProxyAgent=t$;function _J($){$.resume()}function J1($,...J){let Q={},Y;for(Y in $)if(!J.includes(Y))Q[Y]=$[Y];return Q}});var L$=U((X1)=>{Object.defineProperty(X1,"__esModule",{value:!0});X1.AddressError=void 0;class K1 extends Error{constructor($,J){super($);this.name="AddressError",this.parseMessage=J}}X1.AddressError=K1});var _$=U((W1)=>{Object.defineProperty(W1,"__esModule",{value:!0});W1.isInSubnet=yJ;W1.isHostInSubnet=V1;W1.isCorrect=AJ;W1.prefixLengthFromMask=vJ;W1.assertByteArray=xJ;W1.numberToPaddedHex=H1;W1.stringToPaddedHex=bJ;W1.testBit=hJ;var f$=L$();function yJ($){if(this.subnetMask<$.subnetMask)return!1;return V1.call(this,$)}function V1($){return this.mask($.subnetMask)===$.mask()}function AJ($){return function(){if(this.addressMinusSuffix!==this.correctForm())return!1;if(this.subnetMask===$&&!this.parsedSubnet)return!0;return this.parsedSubnet===String(this.subnetMask)}}function vJ($,J){let Q=$.toString(2).padStart(J,"0");if(Q.length>J)throw new f$.AddressError("Invalid subnet mask.");let Y=Q.indexOf("0");if(Y===-1)return J;if(Q.slice(Y).includes("1"))throw new f$.AddressError("Invalid subnet mask.");return Y}function xJ($,J,Q,Y){if($.length!==J)throw new f$.AddressError(`${Q} addresses require exactly ${J} bytes`);for(let Z=0;Z<$.length;Z++)if(!Number.isInteger($[Z])||$[Z]<Y||$[Z]>255)throw new f$.AddressError(`All bytes must be integers between ${Y} and 255`)}function H1($){return $.toString(16).padStart(2,"0")}function bJ($){return H1(parseInt($,10))}function hJ($,J){let{length:Q}=$;if(J>Q)return!1;let Y=Q-J;return $.substring(Y,Y+1)==="1"}});var r$=U((G1)=>{Object.defineProperty(G1,"__esModule",{value:!0});G1.RE_SUBNET_STRING=G1.RE_ADDRESS=G1.GROUPS=G1.BITS=void 0;G1.BITS=32;G1.GROUPS=4;G1.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/g;G1.RE_SUBNET_STRING=/\/\d{1,2}$/});var s$=U((c)=>{var oJ=c&&c.__createBinding||(Object.create?function($,J,Q,Y){if(Y===void 0)Y=Q;var Z=Object.getOwnPropertyDescriptor(J,Q);if(!Z||("get"in Z?!J.__esModule:Z.writable||Z.configurable))Z={enumerable:!0,get:function(){return J[Q]}};Object.defineProperty($,Y,Z)}:function($,J,Q,Y){if(Y===void 0)Y=Q;$[Y]=J[Q]}),tJ=c&&c.__setModuleDefault||(Object.create?function($,J){Object.defineProperty($,"default",{enumerable:!0,value:J})}:function($,J){$.default=J}),F1=c&&c.__importStar||function($){if($&&$.__esModule)return $;var J={};if($!=null){for(var Q in $)if(Q!=="default"&&Object.prototype.hasOwnProperty.call($,Q))oJ(J,$,Q)}return tJ(J,$),J};Object.defineProperty(c,"__esModule",{value:!0});c.Address4=void 0;var u=F1(_$()),R=F1(r$()),n=L$(),rJ=u.isCorrect(R.BITS);class w{constructor($){this.addressMinusSuffix="",this.groups=R.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=rJ,this.isInSubnet=u.isInSubnet,this.isHostInSubnet=u.isHostInSubnet,this.address=$;let J=R.RE_SUBNET_STRING.exec($);if(J){if(this.parsedSubnet=J[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>R.BITS)throw new n.AddressError("Invalid subnet mask.");$=$.replace(R.RE_SUBNET_STRING,"")}this.addressMinusSuffix=$,this.parsedAddress=this.parse($)}static isValid($){try{return new w($),!0}catch{return!1}}parse($){let J=$.split(".");if(J.some((Q)=>/^0\d/.test(Q)))throw new n.AddressError("IPv4 addresses can't have leading zeroes.");if(!$.match(R.RE_ADDRESS))throw new n.AddressError("Invalid IPv4 address.");return J}correctForm(){return this.parsedAddress.map(($)=>parseInt($,10)).join(".")}static fromAddressAndMask($,J){let Q=u.prefixLengthFromMask(new w(J).bigInt(),R.BITS);return new w(`${$}/${Q}`)}static fromAddressAndWildcardMask($,J){let Q=new w(J).bigInt(),Y=(BigInt(1)<<BigInt(R.BITS))-BigInt(1),Z=Q^Y,K=u.prefixLengthFromMask(Z,R.BITS);return new w(`${$}/${K}`)}static fromWildcard($){let J=$.split(".");if(J.length!==R.GROUPS)throw new n.AddressError("Wildcard pattern must have 4 octets");let Q=-1;for(let X=0;X<J.length;X++)if(J[X]==="*"){if(Q===-1)Q=X}else if(Q!==-1)throw new n.AddressError("Wildcard `*` must only appear in trailing octets (e.g. `192.168.0.*`)");let Y=Q===-1?0:J.length-Q,Z=J.map((X)=>X==="*"?"0":X),K=R.BITS-Y*8;return new w(`${Z.join(".")}/${K}`)}static fromHex($){let J=$.replace(/:/g,"");if(!/^[0-9a-fA-F]{8}$/.test(J))throw new n.AddressError("IPv4 hex must be exactly 8 hex digits");let Q=[];for(let Y=0;Y<8;Y+=2)Q.push(parseInt(J.slice(Y,Y+2),16));return new w(Q.join("."))}static fromInteger($){if(!Number.isInteger($)||$<0||$>4294967295)throw new n.AddressError("IPv4 integer must be in the range 0 to 2**32 - 1");return w.fromHex($.toString(16).padStart(8,"0"))}static fromArpa($){let Q=$.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new w(Q)}toHex(){return this.parsedAddress.map(($)=>u.stringToPaddedHex($)).join(":")}toArray(){return this.parsedAddress.map(($)=>parseInt($,10))}toGroup6(){let $=[],J;for(J=0;J<R.GROUPS;J+=2)$.push(`${u.stringToPaddedHex(this.parsedAddress[J])}${u.stringToPaddedHex(this.parsedAddress[J+1])}`);return $.join(":")}bigInt(){return BigInt(`0x${this.parsedAddress.map(($)=>u.stringToPaddedHex($)).join("")}`)}_startAddress(){return BigInt(`0b${this.mask()+"0".repeat(R.BITS-this.subnetMask)}`)}startAddress(){return w.fromBigInt(this._startAddress())}startAddressExclusive(){let $=BigInt("1");return w.fromBigInt(this._startAddress()+$)}_endAddress(){return BigInt(`0b${this.mask()+"1".repeat(R.BITS-this.subnetMask)}`)}endAddress(){return w.fromBigInt(this._endAddress())}endAddressExclusive(){let $=BigInt("1");return w.fromBigInt(this._endAddress()-$)}subnetMaskAddress(){return w.fromBigInt(BigInt(`0b${"1".repeat(this.subnetMask)}${"0".repeat(R.BITS-this.subnetMask)}`))}wildcardMask(){return w.fromBigInt(BigInt(`0b${"0".repeat(this.subnetMask)}${"1".repeat(R.BITS-this.subnetMask)}`))}networkForm(){return`${this.startAddress().correctForm()}/${this.subnetMask}`}static fromBigInt($){if($<BigInt(0)||$>BigInt(4294967295))throw new n.AddressError("IPv4 BigInt must be in the range 0 to 2**32 - 1");return w.fromHex($.toString(16).padStart(8,"0"))}static fromByteArray($){return u.assertByteArray($,4,"IPv4",0),this.fromUnsignedByteArray($)}static fromUnsignedByteArray($){if($.length!==4)throw new n.AddressError("IPv4 addresses require exactly 4 bytes");let J=$.join(".");return new w(J)}mask($){if($===void 0)$=this.subnetMask;return this.getBitsBase2(0,$)}getBitsBase2($,J){return this.binaryZeroPad().slice($,J)}reverseForm($){if(!$)$={};let J=this.correctForm().split(".").reverse().join(".");if($.omitSuffix)return J;return`${J}.in-addr.arpa.`}isMulticast(){return this.isHostInSubnet(sJ)}isPrivate(){return eJ.some(($)=>this.isHostInSubnet($))}isLoopback(){return this.isHostInSubnet($Q)}isLinkLocal(){return this.isHostInSubnet(JQ)}isUnspecified(){return this.isHostInSubnet(QQ)}isBroadcast(){return this.isHostInSubnet(YQ)}isCGNAT(){return this.isHostInSubnet(ZQ)}binaryZeroPad(){if(this._binaryZeroPad===void 0)this._binaryZeroPad=this.bigInt().toString(2).padStart(R.BITS,"0");return this._binaryZeroPad}groupForV6(){let $=this.parsedAddress;return this.correctForm().replace(R.RE_ADDRESS,`<span class="hover-group group-v4 group-6">${$.slice(0,2).join(".")}</span>.<span class="hover-group group-v4 group-7">${$.slice(2,4).join(".")}</span>`)}}c.Address4=w;var sJ=new w("224.0.0.0/4"),eJ=[new w("10.0.0.0/8"),new w("172.16.0.0/12"),new w("192.168.0.0/16")],$Q=new w("127.0.0.0/8"),JQ=new w("169.254.0.0/16"),QQ=new w("0.0.0.0/32"),YQ=new w("255.255.255.255/32"),ZQ=new w("100.64.0.0/10")});var e$=U((B1)=>{Object.defineProperty(B1,"__esModule",{value:!0});B1.RE_URL_WITH_PORT=B1.RE_URL=B1.RE_ZONE_STRING=B1.RE_SUBNET_STRING=B1.RE_BAD_ADDRESS=B1.RE_BAD_CHARACTERS=B1.TYPES=B1.SCOPES=B1.GROUPS=B1.BITS=void 0;B1.BITS=128;B1.GROUPS=8;B1.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"};B1.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","::ffff:0:0/96":"IPv4-mapped","ff00::/8":"Multicast","fe80::/10":"Link-local unicast","fc00::/7":"Unique local","2002::/16":"6to4","2001:db8::/32":"Documentation","64:ff9b::/96":"NAT64 (well-known)","64:ff9b:1::/48":"NAT64 (local-use)"};B1.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi;B1.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi;B1.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/;B1.RE_ZONE_STRING=/%.*$/;B1.RE_URL=/^(?:\[([0-9a-f:.]+)\]|([0-9a-f:.]+))(?:[/?#].*)?$/i;B1.RE_URL_WITH_PORT=/^\[([0-9a-f:.]+)\]:([0-9]{1,5})(?:[/?#].*)?$/i});var $0=U((L1)=>{Object.defineProperty(L1,"__esModule",{value:!0});L1.escapeHtml=y$;L1.spanAllZeroes=M1;L1.spanAll=BQ;L1.spanLeadingZeroes=OQ;L1.simpleGroup=MQ;function y$($){return $.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function M1($){return y$($).replace(/(0+)/g,'<span class="zero">$1</span>')}function BQ($,J=0){return $.split("").map((Y,Z)=>`<span class="digit value-${y$(Y)} position-${Z+J}">${M1(Y)}</span>`).join("")}function q1($){return y$($).replace(/^(0+)/,'<span class="zero">$1</span>')}function OQ($){return $.split(":").map((Q)=>q1(Q)).join(":")}function MQ($,J=0){return $.split(":").map((Y,Z)=>{if(/group-v4/.test(Y))return Y;return`<span class="hover-group group-${Z+J}">${q1(Y)}</span>`})}});var N1=U((_)=>{var TQ=_&&_.__createBinding||(Object.create?function($,J,Q,Y){if(Y===void 0)Y=Q;var Z=Object.getOwnPropertyDescriptor(J,Q);if(!Z||("get"in Z?!J.__esModule:Z.writable||Z.configurable))Z={enumerable:!0,get:function(){return J[Q]}};Object.defineProperty($,Y,Z)}:function($,J,Q,Y){if(Y===void 0)Y=Q;$[Y]=J[Q]}),PQ=_&&_.__setModuleDefault||(Object.create?function($,J){Object.defineProperty($,"default",{enumerable:!0,value:J})}:function($,J){$.default=J}),RQ=_&&_.__importStar||function($){if($&&$.__esModule)return $;var J={};if($!=null){for(var Q in $)if(Q!=="default"&&Object.prototype.hasOwnProperty.call($,Q))TQ(J,$,Q)}return PQ(J,$),J};Object.defineProperty(_,"__esModule",{value:!0});_.ADDRESS_BOUNDARY=void 0;_.groupPossibilities=v$;_.padGroup=A$;_.simpleRegularExpression=SQ;_.possibleElisions=EQ;var jQ=RQ(e$());function v$($){return`(${$.join("|")})`}function A$($){if($.length<4)return`0{0,${4-$.length}}${$}`;return $}_.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]";function SQ($){let J=[];$.forEach((Y,Z)=>{if(parseInt(Y,16)===0)J.push(Z)});let Q=J.map((Y)=>$.map((Z,K)=>{if(K===Y){let X=K===0||K===jQ.GROUPS-1?":":"";return v$([A$(Z),X])}return A$(Z)}).join(":"));return Q.push($.map(A$).join(":")),v$(Q)}function EQ($,J,Q){let Y=J?"":":",Z=Q?"":":",K=[];if(!J&&!Q)K.push("::");if(J&&Q)K.push("");if(Q&&!J||!Q&&J)K.push(":");K.push(`${Y}(:0{1,4}){1,${$-1}}`),K.push(`(0{1,4}:){1,${$-1}}${Z}`),K.push(`(0{1,4}:){${$-1}}0{1,4}`);for(let X=1;X<$-1;X++)for(let H=1;H<$-X;H++)K.push(`(0{1,4}:){${H}}:(0{1,4}:){${$-H-X-1}}0{1,4}`);return v$(K)}});var P1=U((m)=>{var IQ=m&&m.__createBinding||(Object.create?function($,J,Q,Y){if(Y===void 0)Y=Q;var Z=Object.getOwnPropertyDescriptor(J,Q);if(!Z||("get"in Z?!J.__esModule:Z.writable||Z.configurable))Z={enumerable:!0,get:function(){return J[Q]}};Object.defineProperty($,Y,Z)}:function($,J,Q,Y){if(Y===void 0)Y=Q;$[Y]=J[Q]}),DQ=m&&m.__setModuleDefault||(Object.create?function($,J){Object.defineProperty($,"default",{enumerable:!0,value:J})}:function($,J){$.default=J}),h$=m&&m.__importStar||function($){if($&&$.__esModule)return $;var J={};if($!=null){for(var Q in $)if(Q!=="default"&&Object.prototype.hasOwnProperty.call($,Q))IQ(J,$,Q)}return DQ(J,$),J};Object.defineProperty(m,"__esModule",{value:!0});m.Address6=void 0;var $$=h$(_$()),J0=h$(r$()),B=h$(e$()),s=h$($0()),l=s$(),e=N1(),S=L$(),x$=_$(),fQ=$$.isCorrect(B.BITS);function b$($){if(!$)throw Error("Assertion failed.")}function _Q($){let J=/(\d+)(\d{3})/;while(J.test($))$=$.replace(J,"$1,$2");return $}function yQ($){return $=$.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2'),$=$.replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2'),$}function AQ($,J){let Q=[],Y=[],Z;for(Z=0;Z<$.length;Z++)if(Z<J[0])Q.push($[Z]);else if(Z>J[1])Y.push($[Z]);return Q.concat(["compact"]).concat(Y)}function w1($){return parseInt($,16).toString(16).padStart(4,"0")}function C1($){return $&255}class L{constructor($,J){if(this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=$$.isInSubnet,this.isHostInSubnet=$$.isHostInSubnet,this.isCorrect=fQ,J===void 0)this.groups=B.GROUPS;else this.groups=J;this.address=$;let Q=B.RE_SUBNET_STRING.exec($);if(Q){if(this.parsedSubnet=Q[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>B.BITS)throw new S.AddressError("Invalid subnet mask.");$=$.replace(B.RE_SUBNET_STRING,"")}if(/\//.test($))throw new S.AddressError("Invalid subnet mask.");let Y=B.RE_ZONE_STRING.exec($);if(Y)this.zone=Y[0],$=$.replace(B.RE_ZONE_STRING,"");this.addressMinusSuffix=$,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid($){try{return new L($),!0}catch{return!1}}static fromBigInt($){if($<BigInt(0)||$>(BigInt(1)<<BigInt(B.BITS))-BigInt(1))throw new S.AddressError("IPv6 BigInt must be in the range 0 to 2**128 - 1");let J=$.toString(16).padStart(32,"0"),Q=[];for(let Y=0;Y<B.GROUPS;Y++)Q.push(J.slice(Y*4,(Y+1)*4));return new L(Q.join(":"))}static fromURL($){var J;let Q,Y=null,Z,K,X=$.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"");if(X.indexOf("[")!==-1&&X.indexOf("]:")!==-1){if(K="failed to parse address with port",Z=B.RE_URL_WITH_PORT.exec(X),Z===null)return{error:K,address:null,port:null};Q=Z[1],Y=Z[2]}else{if(K="failed to parse address from URL",Z=B.RE_URL.exec(X),Z===null)return{error:K,address:null,port:null};Q=(J=Z[1])!==null&&J!==void 0?J:Z[2]}if(Y){if(Y=parseInt(Y,10),Y<0||Y>65535)Y=null}else Y=null;let H;try{H=new L(Q)}catch{return{error:K,address:null,port:null}}return{address:H,port:Y}}static fromAddressAndMask($,J){let Q=$$.prefixLengthFromMask(new L(J).bigInt(),B.BITS);return new L(`${$}/${Q}`)}static fromAddressAndWildcardMask($,J){let Q=new L(J).bigInt(),Y=(BigInt(1)<<BigInt(B.BITS))-BigInt(1),Z=Q^Y,K=$$.prefixLengthFromMask(Z,B.BITS);return new L(`${$}/${K}`)}static fromWildcard($){if($.includes("%")||$.includes("/"))throw new S.AddressError("Wildcard pattern must not include a zone or CIDR suffix");let J=$.split("::");if(J.length>2)throw new S.AddressError("Wildcard pattern cannot contain more than one '::'");let Q;if(J.length===2){let H=J[0]===""?[]:J[0].split(":"),O=J[1]===""?[]:J[1].split(":"),M=B.GROUPS-H.length-O.length;if(M<1)throw new S.AddressError("Wildcard pattern with '::' has too many groups");Q=[...H,...Array(M).fill("0"),...O]}else Q=$.split(":");if(Q.length!==B.GROUPS)throw new S.AddressError("Wildcard pattern must have 8 groups");let Y=-1;for(let H=0;H<Q.length;H++)if(Q[H]==="*"){if(Y===-1)Y=H}else if(Y!==-1)throw new S.AddressError("Wildcard `*` must only appear in trailing groups (e.g. `2001:db8:*:*:*:*:*:*`)");let Z=Y===-1?0:Q.length-Y,K=Q.map((H)=>H==="*"?"0":H),X=B.BITS-Z*16;return new L(`${K.join(":")}/${X}`)}static fromAddress4($){let J=new l.Address4($),Q=B.BITS-(J0.BITS-J.subnetMask);return new L(`::ffff:${J.correctForm()}/${Q}`)}static fromArpa($){let J=$.replace(/(\.ip6\.arpa)?\.$/,""),Q=7;if(J.length!==63)throw new S.AddressError("Invalid 'ip6.arpa' form.");let Y=J.split(".").reverse();for(let Z=Q;Z>0;Z--){let K=Z*4;Y.splice(K,0,":")}return J=Y.join(""),new L(J)}microsoftTranscription(){return`${this.correctForm().replace(/:/g,"-")}.ipv6-literal.net`}mask($=this.subnetMask){return this.getBitsBase2(0,$)}possibleSubnets($=128){let J=B.BITS-this.subnetMask,Q=Math.abs($-B.BITS),Y=J-Q;if(Y<0)return"0";return _Q((BigInt("2")**BigInt(Y)).toString(10))}_startAddress(){return BigInt(`0b${this.mask()+"0".repeat(B.BITS-this.subnetMask)}`)}startAddress(){return L.fromBigInt(this._startAddress())}startAddressExclusive(){let $=BigInt("1");return L.fromBigInt(this._startAddress()+$)}_endAddress(){return BigInt(`0b${this.mask()+"1".repeat(B.BITS-this.subnetMask)}`)}endAddress(){return L.fromBigInt(this._endAddress())}endAddressExclusive(){let $=BigInt("1");return L.fromBigInt(this._endAddress()-$)}subnetMaskAddress(){return L.fromBigInt(BigInt(`0b${"1".repeat(this.subnetMask)}${"0".repeat(B.BITS-this.subnetMask)}`))}wildcardMask(){return L.fromBigInt(BigInt(`0b${"0".repeat(this.subnetMask)}${"1".repeat(B.BITS-this.subnetMask)}`))}networkForm(){return`${this.startAddress().correctForm()}/${this.subnetMask}`}getScope(){let $=this.getType();if($==="Multicast"||$.startsWith("Multicast "))return B.SCOPES[parseInt(this.getBits(12,16).toString(10),10)]||"Unknown";if($==="Link-local unicast"||$==="Loopback")return"Link local";if($==="Unspecified")return"Unknown";return"Global"}getType(){for(let $=0;$<T1.length;$++){let J=T1[$];if(this.isHostInSubnet(J[0]))return J[1]}return"Global unicast"}getBits($,J){return BigInt(`0b${this.getBitsBase2($,J)}`)}getBitsBase2($,J){return this.binaryZeroPad().slice($,J)}getBitsBase16($,J){let Q=J-$;if(Q%4!==0)throw Error("Length of bits to retrieve must be divisible by four");return this.getBits($,J).toString(16).padStart(Q/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,B.BITS)}reverseForm($){if(!$)$={};let J=Math.floor(this.subnetMask/4),Q=this.canonicalForm().replace(/:/g,"").split("").slice(0,J).reverse().join(".");if(J>0){if($.omitSuffix)return Q;return`${Q}.ip6.arpa.`}if($.omitSuffix)return"";return"ip6.arpa."}correctForm(){let $,J=[],Q=0,Y=[];for($=0;$<this.parsedAddress.length;$++){let X=parseInt(this.parsedAddress[$],16);if(X===0)Q++;if(X!==0&&Q>0){if(Q>1)Y.push([$-Q,$-1]);Q=0}}if(Q>1)Y.push([this.parsedAddress.length-Q,this.parsedAddress.length-1]);let Z=Y.map((X)=>X[1]-X[0]+1);if(Y.length>0){let X=Z.indexOf(Math.max(...Z));J=AQ(this.parsedAddress,Y[X])}else J=this.parsedAddress;for($=0;$<J.length;$++)if(J[$]!=="compact")J[$]=parseInt(J[$],16).toString(16);let K=J.join(":");return K=K.replace(/^compact$/,"::"),K=K.replace(/(^compact)|(compact$)/,":"),K=K.replace(/compact/,""),K}binaryZeroPad(){if(this._binaryZeroPad===void 0)this._binaryZeroPad=this.bigInt().toString(2).padStart(B.BITS,"0");return this._binaryZeroPad}parse4in6($){if($.indexOf(".")===-1)return $;let J=$.split(":"),Q=J.slice(-1)[0],Y=Q.split(".");if(Y.length===J0.GROUPS&&Y.every((K)=>/^\d{1,3}$/.test(K))){if(Y.some((K)=>/^0\d/.test(K))){let K=Y.map(yQ).join("."),X=J.slice(0,-1).map(s.escapeHtml).join(":"),H=J.length>1?":":"";throw new S.AddressError("IPv4 addresses can't have leading zeroes.",`${X}${H}${K}`)}}let Z=Q.match(J0.RE_ADDRESS);if(Z){this.parsedAddress4=Z[0];let K=this.subnetMask>=96?`/${this.subnetMask-96}`:"";this.address4=new l.Address4(`${this.parsedAddress4}${K}`),this.v4=!0,J[J.length-1]=this.address4.toGroup6(),$=J.join(":")}return $}parse($){$=this.parse4in6($);let J=$.match(B.RE_BAD_CHARACTERS);if(J)throw new S.AddressError(`Bad character${J.length>1?"s":""} detected in address: ${J.join("")}`,$.replace(B.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));let Q=$.match(B.RE_BAD_ADDRESS);if(Q)throw new S.AddressError(`Address failed regex: ${Q.join("")}`,$.replace(B.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let Y=[],Z=$.split("::");if(Z.length===2){let K=Z[0].split(":"),X=Z[1].split(":");if(K.length===1&&K[0]==="")K=[];if(X.length===1&&X[0]==="")X=[];let H=this.groups-(K.length+X.length);if(!H)throw new S.AddressError("Error parsing groups");this.elidedGroups=H,this.elisionBegin=K.length,this.elisionEnd=K.length+this.elidedGroups,Y=Y.concat(K);for(let O=0;O<H;O++)Y.push("0");Y=Y.concat(X)}else if(Z.length===1)Y=$.split(":"),this.elidedGroups=0;else throw new S.AddressError("Too many :: groups found");if(Y=Y.map((K)=>parseInt(K,16).toString(16)),Y.length!==this.groups)throw new S.AddressError("Incorrect number of groups found");return Y}canonicalForm(){return this.parsedAddress.map(w1).join(":")}decimal(){return this.parsedAddress.map(($)=>parseInt($,16).toString(10).padStart(5,"0")).join(":")}bigInt(){return BigInt(`0x${this.parsedAddress.map(w1).join("")}`)}to4(){let $=this.binaryZeroPad().split(""),J=BigInt(`0b${$.slice(96,128).join("")}`).toString(16).padStart(8,"0");if(this.subnetMask>=96){let Q=this.subnetMask-96,Y=[];for(let Z=0;Z<8;Z+=2)Y.push(parseInt(J.slice(Z,Z+2),16));return new l.Address4(`${Y.join(".")}/${Q}`)}return l.Address4.fromHex(J)}to4in6(){let $=this.to4(),Q=new L(this.parsedAddress.slice(0,6).join(":"),6).correctForm(),Y="";if(!/:$/.test(Q))Y=":";return Q+Y+$.correctForm()}inspectTeredo(){let $=this.getBitsBase16(0,32),Q=(this.getBits(80,96)^BigInt("0xffff")).toString(),Y=l.Address4.fromHex(this.getBitsBase16(32,64)),Z=this.getBits(96,128),K=l.Address4.fromHex((Z^BigInt("0xffffffff")).toString(16).padStart(8,"0")),X=this.getBitsBase2(64,80),H=(0,x$.testBit)(X,15),O=(0,x$.testBit)(X,14),M=(0,x$.testBit)(X,8),z=(0,x$.testBit)(X,9),V=BigInt(`0b${X.slice(2,6)+X.slice(8,16)}`).toString(10);return{prefix:`${$.slice(0,4)}:${$.slice(4,8)}`,server4:Y.address,client4:K.address,flags:X,coneNat:H,microsoft:{reserved:O,universalLocal:z,groupIndividual:M,nonce:V},udpPort:Q}}inspect6to4(){let $=this.getBitsBase16(0,16),J=l.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:$.slice(0,4),gateway:J.address}}to6to4(){if(!this.is4())return null;let $=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new L($)}static fromAddress4Nat64($,J="64:ff9b::/96"){let Q=new l.Address4($),Y=new L(J),Z=Y.subnetMask;if(Z!==32&&Z!==40&&Z!==48&&Z!==56&&Z!==64&&Z!==96)throw new S.AddressError("NAT64 prefix length must be 32, 40, 48, 56, 64, or 96");let K=Y.binaryZeroPad(),X=Q.binaryZeroPad(),H;if(Z===96)H=K.slice(0,96)+X;else{let z=64-Z;H=[K.slice(0,Z),X.slice(0,z),"00000000",X.slice(z),"0".repeat(56-(32-z))].join("")}let O=BigInt(`0b${H}`).toString(16).padStart(32,"0"),M=[];for(let z=0;z<8;z++)M.push(O.slice(z*4,(z+1)*4));return new L(M.join(":"))}toAddress4Nat64($="64:ff9b::/96"){let J=new L($),Q=J.subnetMask;if(Q!==32&&Q!==40&&Q!==48&&Q!==56&&Q!==64&&Q!==96)throw new S.AddressError("NAT64 prefix length must be 32, 40, 48, 56, 64, or 96");if(!this.isHostInSubnet(J))return null;let Y=this.binaryZeroPad(),Z;if(Q===96)Z=Y.slice(96,128);else{let X=64-Q;Z=Y.slice(Q,Q+X)+Y.slice(72,72+(32-X))}let K=[];for(let X=0;X<4;X++)K.push(parseInt(Z.slice(X*8,(X+1)*8),2).toString());return new l.Address4(K.join("."))}toByteArray(){let $=this.bigInt().toString(16).padStart(B.BITS/4,"0"),J=[];for(let Q=0,Y=$.length;Q<Y;Q+=2)J.push(parseInt($.substring(Q,Q+2),16));return J}toUnsignedByteArray(){return this.toByteArray().map(C1)}static fromByteArray($){return $$.assertByteArray($,16,"IPv6",-128),this.fromUnsignedByteArray($.map(C1))}static fromUnsignedByteArray($){$$.assertByteArray($,16,"IPv6",0);let J=BigInt("256"),Q=BigInt("0"),Y=BigInt("1");for(let Z=$.length-1;Z>=0;Z--)Q+=Y*BigInt($[Z].toString(10)),Y*=J;return L.fromBigInt(Q)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){let $=this.embeddedIPv4();if($)return $.isLinkLocal();if(this.getBitsBase2(0,64)==="1111111010000000000000000000000000000000000000000000000000000000")return!0;return!1}isMulticast(){let $=this.embeddedIPv4();if($)return $.isMulticast();let J=this.getType();return J==="Multicast"||J.startsWith("Multicast ")}is4(){return this.v4}isMapped4(){return this.isHostInSubnet(kQ)}embeddedIPv4(){if(this.isMapped4()||this.isHostInSubnet(gQ))return this.to4();return null}isTeredo(){return this.isHostInSubnet(vQ)}is6to4(){return this.isHostInSubnet(xQ)}isLoopback(){let $=this.embeddedIPv4();if($)return $.isLoopback();return this.getType()==="Loopback"}isULA(){return this.isHostInSubnet(bQ)}isPrivate(){let $=this.embeddedIPv4();if($)return $.isPrivate();return this.isULA()}isCGNAT(){let $=this.embeddedIPv4();if($)return $.isCGNAT();return!1}isBroadcast(){let $=this.embeddedIPv4();if($)return $.isBroadcast();return!1}isUnspecified(){let $=this.embeddedIPv4();if($)return $.isUnspecified();return this.getType()==="Unspecified"}isDocumentation(){return this.isHostInSubnet(hQ)}href($){if($===void 0)$="";else $=`:${$}`;return`http://[${this.correctForm()}]${$}/`}link($){if(!$)$={};if($.className===void 0)$.className="";if($.prefix===void 0)$.prefix="/#address=";if($.v4===void 0)$.v4=!1;let J=this.correctForm;if($.v4)J=this.to4in6;let Q=J.call(this),Y=s.escapeHtml(`${$.prefix}${Q}`),Z=s.escapeHtml(Q);if($.className){let K=s.escapeHtml($.className);return`<a href="${Y}" class="${K}">${Z}</a>`}return`<a href="${Y}">${Z}</a>`}group(){if(this.elidedGroups===0)return s.simpleGroup(this.addressMinusSuffix).join(":");b$(typeof this.elidedGroups==="number"),b$(typeof this.elisionBegin==="number");let $=[],[J,Q]=this.addressMinusSuffix.split("::");if(J.length)$.push(...s.simpleGroup(J));else $.push("");let Y=["hover-group"];for(let Z=this.elisionBegin;Z<this.elisionBegin+this.elidedGroups;Z++)Y.push(`group-${Z}`);if($.push(`<span class="${Y.join(" ")}"></span>`),Q.length)$.push(...s.simpleGroup(Q,this.elisionEnd));else $.push("");if(this.is4())b$(this.address4 instanceof l.Address4),$.pop(),$.push(this.address4.groupForV6());return $.join(":")}regularExpressionString($=!1){let J=[],Q=new L(this.correctForm());if(Q.elidedGroups===0)J.push((0,e.simpleRegularExpression)(Q.parsedAddress));else if(Q.elidedGroups===B.GROUPS)J.push((0,e.possibleElisions)(B.GROUPS));else{let Y=Q.address.split("::");if(Y[0].length)J.push((0,e.simpleRegularExpression)(Y[0].split(":")));if(b$(typeof Q.elidedGroups==="number"),J.push((0,e.possibleElisions)(Q.elidedGroups,Y[0].length!==0,Y[1].length!==0)),Y[1].length)J.push((0,e.simpleRegularExpression)(Y[1].split(":")));J=[J.join(":")]}if(!$)J=["(?=^|",e.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...J,")(?=[^\\w\\:]|",e.ADDRESS_BOUNDARY,"|$)"];return J.join("")}regularExpression($=!1){return new RegExp(this.regularExpressionString($),"i")}}m.Address6=L;var T1=Object.keys(B.TYPES).map(($)=>[new L($),B.TYPES[$]]),vQ=new L("2001::/32"),xQ=new L("2002::/16"),bQ=new L("fc00::/7"),hQ=new L("2001:db8::/32"),kQ=new L("::ffff:0:0/96"),gQ=new L("64:ff9b::/96")});var R1=U((E)=>{var uQ=E&&E.__createBinding||(Object.create?function($,J,Q,Y){if(Y===void 0)Y=Q;var Z=Object.getOwnPropertyDescriptor(J,Q);if(!Z||("get"in Z?!J.__esModule:Z.writable||Z.configurable))Z={enumerable:!0,get:function(){return J[Q]}};Object.defineProperty($,Y,Z)}:function($,J,Q,Y){if(Y===void 0)Y=Q;$[Y]=J[Q]}),cQ=E&&E.__setModuleDefault||(Object.create?function($,J){Object.defineProperty($,"default",{enumerable:!0,value:J})}:function($,J){$.default=J}),lQ=E&&E.__importStar||function($){if($&&$.__esModule)return $;var J={};if($!=null){for(var Q in $)if(Q!=="default"&&Object.prototype.hasOwnProperty.call($,Q))uQ(J,$,Q)}return cQ(J,$),J};Object.defineProperty(E,"__esModule",{value:!0});E.v6=E.AddressError=E.Address6=E.Address4=void 0;var mQ=s$();Object.defineProperty(E,"Address4",{enumerable:!0,get:function(){return mQ.Address4}});var iQ=P1();Object.defineProperty(E,"Address6",{enumerable:!0,get:function(){return iQ.Address6}});var pQ=L$();Object.defineProperty(E,"AddressError",{enumerable:!0,get:function(){return pQ.AddressError}});var nQ=lQ($0());E.v6={helpers:nQ}});var _1=U((c6,f1)=>{var{homedir:I1}=q("node:os"),{join:N$}=q("node:path");function D1(){if(process.env.LODESTAR_DATA_DIR)return process.env.LODESTAR_DATA_DIR;if(process.env.XDG_DATA_HOME)return N$(process.env.XDG_DATA_HOME,"lodestar");if(process.platform==="win32")return N$(process.env.LOCALAPPDATA??N$(I1(),"AppData","Local"),"Lodestar");return N$(I1(),".local","share","lodestar")}function W4(){return N$(D1(),"managed-claude-plugin")}f1.exports={lodestarDataDir:D1,managedClaudePluginDir:W4}});var k1=U((OY,h1)=>{h1.exports=b1;b1.sync=q4;var v1=q("fs");function M4($,J){var Q=J.pathExt!==void 0?J.pathExt:process.env.PATHEXT;if(!Q)return!0;if(Q=Q.split(";"),Q.indexOf("")!==-1)return!0;for(var Y=0;Y<Q.length;Y++){var Z=Q[Y].toLowerCase();if(Z&&$.substr(-Z.length).toLowerCase()===Z)return!0}return!1}function x1($,J,Q){if(!$.isSymbolicLink()&&!$.isFile())return!1;return M4(J,Q)}function b1($,J,Q){v1.stat($,function(Y,Z){Q(Y,Y?!1:x1(Z,$,J))})}function q4($,J){return x1(v1.statSync($),$,J)}});var m1=U((MY,l1)=>{l1.exports=u1;u1.sync=L4;var g1=q("fs");function u1($,J,Q){g1.stat($,function(Y,Z){Q(Y,Y?!1:c1(Z,J))})}function L4($,J){return c1(g1.statSync($),J)}function c1($,J){return $.isFile()&&N4($,J)}function N4($,J){var{mode:Q,uid:Y,gid:Z}=$,K=J.uid!==void 0?J.uid:process.getuid&&process.getuid(),X=J.gid!==void 0?J.gid:process.getgid&&process.getgid(),H=parseInt("100",8),O=parseInt("010",8),M=parseInt("001",8),z=H|O,V=Q&M||Q&O&&Z===X||Q&H&&Y===K||Q&z&&K===0;return V}});var p1=U((LY,i1)=>{var qY=q("fs"),l$;if(process.platform==="win32"||global.TESTING_WINDOWS)l$=k1();else l$=m1();i1.exports=Z0;Z0.sync=w4;function Z0($,J,Q){if(typeof J==="function")Q=J,J={};if(!Q){if(typeof Promise!=="function")throw TypeError("callback not provided");return new Promise(function(Y,Z){Z0($,J||{},function(K,X){if(K)Z(K);else Y(X)})})}l$($,J||{},function(Y,Z){if(Y){if(Y.code==="EACCES"||J&&J.ignoreErrors)Y=null,Z=!1}Q(Y,Z)})}function w4($,J){try{return l$.sync($,J||{})}catch(Q){if(J&&J.ignoreErrors||Q.code==="EACCES")return!1;else throw Q}}});var s1=U((NY,r1)=>{var W$=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",n1=q("path"),C4=W$?";":":",d1=p1(),a1=($)=>Object.assign(Error(`not found: ${$}`),{code:"ENOENT"}),o1=($,J)=>{let Q=J.colon||C4,Y=$.match(/\//)||W$&&$.match(/\\/)?[""]:[...W$?[process.cwd()]:[],...(J.path||process.env.PATH||"").split(Q)],Z=W$?J.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",K=W$?Z.split(Q):[""];if(W$){if($.indexOf(".")!==-1&&K[0]!=="")K.unshift("")}return{pathEnv:Y,pathExt:K,pathExtExe:Z}},t1=($,J,Q)=>{if(typeof J==="function")Q=J,J={};if(!J)J={};let{pathEnv:Y,pathExt:Z,pathExtExe:K}=o1($,J),X=[],H=(M)=>new Promise((z,V)=>{if(M===Y.length)return J.all&&X.length?z(X):V(a1($));let W=Y[M],G=/^".*"$/.test(W)?W.slice(1,-1):W,T=n1.join(G,$),F=!G&&/^\.[\\\/]/.test($)?$.slice(0,2)+T:T;z(O(F,M,0))}),O=(M,z,V)=>new Promise((W,G)=>{if(V===Z.length)return W(H(z+1));let T=Z[V];d1(M+T,{pathExt:K},(F,N)=>{if(!F&&N)if(J.all)X.push(M+T);else return W(M+T);return W(O(M,z,V+1))})});return Q?H(0).then((M)=>Q(null,M),Q):H(0)},T4=($,J)=>{J=J||{};let{pathEnv:Q,pathExt:Y,pathExtExe:Z}=o1($,J),K=[];for(let X=0;X<Q.length;X++){let H=Q[X],O=/^".*"$/.test(H)?H.slice(1,-1):H,M=n1.join(O,$),z=!O&&/^\.[\\\/]/.test($)?$.slice(0,2)+M:M;for(let V=0;V<Y.length;V++){let W=z+Y[V];try{if(d1.sync(W,{pathExt:Z}))if(J.all)K.push(W);else return W}catch(G){}}}if(J.all&&K.length)return K;if(J.nothrow)return null;throw a1($)};r1.exports=t1;t1.sync=T4});var $8=U((wY,K0)=>{var e1=($={})=>{let J=$.env||process.env;if(($.platform||process.platform)!=="win32")return"PATH";return Object.keys(J).reverse().find((Y)=>Y.toUpperCase()==="PATH")||"Path"};K0.exports=e1;K0.exports.default=e1});var Z8=U((CY,Y8)=>{var J8=q("path"),P4=s1(),R4=$8();function Q8($,J){let Q=$.options.env||process.env,Y=process.cwd(),Z=$.options.cwd!=null,K=Z&&process.chdir!==void 0&&!process.chdir.disabled;if(K)try{process.chdir($.options.cwd)}catch(H){}let X;try{X=P4.sync($.command,{path:Q[R4({env:Q})],pathExt:J?J8.delimiter:void 0})}catch(H){}finally{if(K)process.chdir(Y)}if(X)X=J8.resolve(Z?$.options.cwd:"",X);return X}function j4($){return Q8($)||Q8($,!0)}Y8.exports=j4});var K8=U((I4,z0)=>{var X0=/([()\][%!^"`<>&|;, *?])/g;function S4($){return $=$.replace(X0,"^$1"),$}function E4($,J){if($=`${$}`,$=$.replace(/(?=(\\+?)?)\1"/g,"$1$1\\\""),$=$.replace(/(?=(\\+?)?)\1$/,"$1$1"),$=`"${$}"`,$=$.replace(X0,"^$1"),J)$=$.replace(X0,"^$1");return $}I4.command=S4;I4.argument=E4});var z8=U((TY,X8)=>{X8.exports=/^#!(.*)/});var H8=U((PY,V8)=>{var _4=z8();V8.exports=($="")=>{let J=$.match(_4);if(!J)return null;let[Q,Y]=J[0].replace(/#! ?/,"").split(" "),Z=Q.split("/").pop();if(Z==="env")return Y;return Y?`${Z} ${Y}`:Z}});var G8=U((RY,W8)=>{var V0=q("fs"),y4=H8();function A4($){let Q=Buffer.alloc(150),Y;try{Y=V0.openSync($,"r"),V0.readSync(Y,Q,0,150,0),V0.closeSync(Y)}catch(Z){}return y4(Q.toString())}W8.exports=A4});var O8=U((jY,B8)=>{var v4=q("path"),U8=Z8(),F8=K8(),x4=G8(),b4=process.platform==="win32",h4=/\.(?:com|exe)$/i,k4=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function g4($){$.file=U8($);let J=$.file&&x4($.file);if(J)return $.args.unshift($.file),$.command=J,U8($);return $.file}function u4($){if(!b4)return $;let J=g4($),Q=!h4.test(J);if($.options.forceShell||Q){let Y=k4.test(J);$.command=v4.normalize($.command),$.command=F8.command($.command),$.args=$.args.map((K)=>F8.argument(K,Y));let Z=[$.command].concat($.args).join(" ");$.args=["/d","/s","/c",`"${Z}"`],$.command=process.env.comspec||"cmd.exe",$.options.windowsVerbatimArguments=!0}return $}function c4($,J,Q){if(J&&!Array.isArray(J))Q=J,J=null;J=J?J.slice(0):[],Q=Object.assign({},Q);let Y={command:$,args:J,options:Q,file:void 0,original:{command:$,args:J}};return Q.shell?Y:u4(Y)}B8.exports=c4});var L8=U((SY,q8)=>{var H0=process.platform==="win32";function W0($,J){return Object.assign(Error(`${J} ${$.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${J} ${$.command}`,path:$.command,spawnargs:$.args})}function l4($,J){if(!H0)return;let Q=$.emit;$.emit=function(Y,Z){if(Y==="exit"){let K=M8(Z,J);if(K)return Q.call($,"error",K)}return Q.apply($,arguments)}}function M8($,J){if(H0&&$===1&&!J.file)return W0(J.original,"spawn");return null}function m4($,J){if(H0&&$===1&&!J.file)return W0(J.original,"spawnSync");return null}q8.exports={hookChildProcess:l4,verifyENOENT:M8,verifyENOENTSync:m4,notFoundError:W0}});var C8=U((EY,G$)=>{var N8=q("child_process"),G0=O8(),U0=L8();function w8($,J,Q){let Y=G0($,J,Q),Z=N8.spawn(Y.command,Y.args,Y.options);return U0.hookChildProcess(Z,Y),Z}function i4($,J,Q){let Y=G0($,J,Q),Z=N8.spawnSync(Y.command,Y.args,Y.options);return Z.error=Z.error||U0.verifyENOENTSync(Z.status,Y),Z}G$.exports=w8;G$.exports.spawn=w8;G$.exports.sync=i4;G$.exports._parse=G0;G$.exports._enoent=U0});import{readFileSync as s4}from"node:fs";import{fileURLToPath as e4}from"node:url";import{Agent as X4}from"node:http";import{Agent as z4}from"node:https";var V4=B$(v0(),1),H4=B$(Z1(),1);var i=B$(R1(),1);import{execFile as dQ}from"node:child_process";import{readFile as aQ}from"node:fs/promises";import{homedir as oQ}from"node:os";import{join as j1}from"node:path";import{promisify as tQ}from"node:util";var rQ=tQ(dQ);function H$($,J){return $[J.toLowerCase()]?.trim()||$[J]?.trim()||void 0}function Y0($){let J=$.hostname.replace(/^\[|\]$/g,"").toLowerCase();return J==="localhost"||J.endsWith(".localhost")||J==="::1"||/^127\.(?:\d{1,3}\.){2}\d{1,3}$/.test(J)||/^::ffff:(?:127\.|7f[0-9a-f]{2}:)/.test(J)}function Q0($,J=""){let Q=$.hostname.replace(/^\[|\]$/g,"").toLowerCase(),Y=$.port||($.protocol==="https:"?"443":"80");return J.split(/[,;\s]+/).filter(Boolean).some((Z)=>{let K=Z.toLowerCase();if(K==="*")return!0;if(K==="<local>")return!Q.includes(".")&&!Q.includes(":");if(K.includes("/")){if(i.Address4.isValid(K))return i.Address4.isValid(Q)&&new i.Address4(Q).isInSubnet(new i.Address4(K));if(i.Address6.isValid(K))return i.Address6.isValid(Q)&&new i.Address6(Q).isInSubnet(new i.Address6(K));throw Error("network proxy: invalid IP range in bypass list")}let X=K.match(/^(\[[^\]]+\]|[^:]+):(\d+)$/);if(X&&X[2]!==Y)return!1;let H=(X?X[1]:K).replace(/^\[|\]$/g,"").replace(/^\*?\./,"");return Q===H||Q.endsWith(`.${H}`)})}function S1($,J){let Q;try{Q=new URL($)}catch{throw Error(`network proxy: ${J} contains an invalid proxy URL`)}if(!["http:","https:"].includes(Q.protocol))throw Error(`network proxy: ${J} must use an HTTP(S) proxy; SOCKS and PAC are not supported`);if(!Q.hostname||Q.search||Q.hash||Q.pathname&&Q.pathname!=="/")throw Error(`network proxy: ${J} must contain a proxy host and port without a path or query`);return Q.href}function E1($,J,Q={}){if(!["http:","https:"].includes($.protocol))throw Error(`network: unsupported URL protocol ${$.protocol}`);if(Y0($)||Q0($,H$(J,"NO_PROXY")))return;let Y=$.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY",Z=H$(J,Y)||H$(J,"ALL_PROXY");if(Z)return S1(Z,"environment");if(Q.unsupported)throw Error(`network proxy: ${Q.unsupported}`);if(Q0($,Q.bypass))return;let K=($.protocol==="https:"?Q.https:Q.http)||Q.all;return K?S1(K,"system settings"):void 0}function u$($,J,Q="http"){if(typeof $!=="string"||!$.trim()||!Number.isInteger(Number(J))||Number(J)<1||Number(J)>65535)throw Error("network proxy: system proxy has an invalid host or port");let Y=$.includes(":")&&!$.startsWith("[")?`[${$}]`:$;return`${Q}://${Y}:${J}`}function sQ($){if($.AutoConfigURL)return{unsupported:"Windows PAC proxy is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(!$.ProxyEnable)return $.AutoDetect?{unsupported:"Windows automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"}:{};if(typeof $.ProxyServer!=="string"||!$.ProxyServer.trim())throw Error("network proxy: Windows proxy is enabled without a server");let J={bypass:String($.ProxyOverride??"")};for(let Q of $.ProxyServer.split(";").map((Y)=>Y.trim()).filter(Boolean)){let Y=Q.match(/^(http|https|socks)=(.+)$/i),Z=Y?Y[2]:Q,K=/^[a-z][\w+.-]*:\/\//i.test(Z)?Z:`http://${Z}`;if(!Y)J.all=K;else if(Y[1].toLowerCase()==="socks")J.all=`socks://${Z.replace(/^socks\w*:\/\//,"")}`;else J[Y[1].toLowerCase()]=K}return J}function eQ($){let J=(Z)=>$.match(new RegExp(`^\\s*${Z}\\s*:\\s*(.*?)\\s*$`,"m"))?.[1];if(J("ProxyAutoConfigEnable")==="1"||J("ProxyAutoDiscoveryEnable")==="1")return{unsupported:"macOS PAC/automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};let Q={};if(J("HTTPEnable")==="1")Q.http=u$(J("HTTPProxy"),J("HTTPPort"));if(J("HTTPSEnable")==="1")Q.https=u$(J("HTTPSProxy"),J("HTTPSPort"));if(J("SOCKSEnable")==="1")Q.all=u$(J("SOCKSProxy"),J("SOCKSPort"),"socks");let Y=$.match(/ExceptionsList\s*:\s*<array>\s*\{([^}]*)\}/)?.[1]??"";if(Q.bypass=[...Y.matchAll(/^\s*\d+\s*:\s*(.*?)\s*$/gm)].map((Z)=>Z[1]).join(","),J("ExcludeSimpleHostnames")==="1")Q.bypass+=",<local>";return Q}function k$($){if($===void 0)return"";if(!/^(['"]).*\1$/.test($))throw Error("network proxy: invalid GNOME proxy string");return $.slice(1,-1).replace(/\\([\\'"])/g,"$1")}function $4($){let J=new Map($.split(`
|
|
21
21
|
`).filter(Boolean).map((Z)=>{let K=Z.match(/^org\.gnome\.system\.proxy(\.\w+)?\s+([\w-]+)\s+(.*)$/);if(!K)throw Error("network proxy: invalid GNOME proxy settings");return[`${K[1]??""}/${K[2]}`,K[3]]})),Q=k$(J.get("/mode"));if(Q==="none")return{};if(Q==="auto")return{unsupported:"GNOME PAC proxy is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(Q!=="manual")throw Error("network proxy: unknown GNOME proxy mode");let Y={};for(let Z of["http","https","socks"]){let K=k$(J.get(`.${Z}/host`));if(!K)continue;let X=new URL(u$(K,J.get(`.${Z}/port`),Z==="socks"?"socks":"http"));if(Z==="http"&&J.get(".http/use-authentication")==="true")X.username=k$(J.get(".http/authentication-user")),X.password=k$(J.get(".http/authentication-password"));Y[Z==="socks"?"all":Z]=X.href}if(J.get("/use-same-proxy")==="true"&&Y.http)Y.https=Y.http;return Y.bypass=[...(J.get("/ignore-hosts")??"").matchAll(/'((?:\\.|[^'])*)'/g)].map((Z)=>Z[1]).join(","),Y}function J4($){let J=$.match(/^\[Proxy Settings\]\s*\n([\s\S]*?)(?=^\[|$(?![\s\S]))/m)?.[1];if(J===void 0)return;let Q=new Map(J.split(`
|
|
22
|
-
`).filter((K)=>K.includes("=")).map((K)=>{let X=K.indexOf("=");return[K.slice(0,X).trim(),K.slice(X+1).trim()]})),Y=Q.get("ProxyType")??"0";if(Y==="0"||Y==="4")return{};if(Y!=="1")return{unsupported:"KDE PAC/automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(Q.get("ReversedException")==="true")return{unsupported:"KDE reversed proxy exceptions are not supported"};let Z={bypass:Q.get("NoProxyFor")};for(let K of["http","https","socks"]){let X=Q.get(`${K}Proxy`);if(!X)continue;let H=X.replace(/\s+(\d+)$/,":$1");Z[K==="socks"?"all":K]=/^[a-z][\w+.-]*:\/\//i.test(H)?H:`${K==="socks"?"socks":"http"}://${H}`}return Z}async function g$($,J){let{stdout:
|
|
22
|
+
`).filter((K)=>K.includes("=")).map((K)=>{let X=K.indexOf("=");return[K.slice(0,X).trim(),K.slice(X+1).trim()]})),Y=Q.get("ProxyType")??"0";if(Y==="0"||Y==="4")return{};if(Y!=="1")return{unsupported:"KDE PAC/automatic proxy discovery is not supported; configure a manual HTTP(S) proxy or proxy environment variables"};if(Q.get("ReversedException")==="true")return{unsupported:"KDE reversed proxy exceptions are not supported"};let Z={bypass:Q.get("NoProxyFor")};for(let K of["http","https","socks"]){let X=Q.get(`${K}Proxy`);if(!X)continue;let H=X.replace(/\s+(\d+)$/,":$1");Z[K==="socks"?"all":K]=/^[a-z][\w+.-]*:\/\//i.test(H)?H:`${K==="socks"?"socks":"http"}://${H}`}return Z}async function g$($,J,Q=5000){let{stdout:Y}=await rQ($,J,{encoding:"utf8",timeout:Q,maxBuffer:262144,windowsHide:!0});return Y}var Q4=String.raw`
|
|
23
23
|
$ErrorActionPreference = 'Stop'
|
|
24
24
|
[Console]::OutputEncoding = New-Object Text.UTF8Encoding($false)
|
|
25
25
|
Add-Type @'
|
|
@@ -57,4 +57,4 @@ try {
|
|
|
57
57
|
if ($pointer -ne [IntPtr]::Zero) { [void][LodestarProxy]::GlobalFree($pointer) }
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
`;async function Y4(){if(process.platform==="win32")return sQ(JSON.parse(await g$("powershell.exe",["-NoProfile","-NonInteractive","-Command",Q4])));if(process.platform==="darwin")return eQ(await g$("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let $=j1(process.env.XDG_CONFIG_HOME||j1(oQ(),".config"),"kioslaverc");try{let Q=J4(await aQ($,"utf8"));if(Q&&(!process.env.XDG_CURRENT_DESKTOP||/kde/i.test(process.env.XDG_CURRENT_DESKTOP)))return Q}catch(Q){if(Q?.code!=="ENOENT")throw Q}let J;try{J=await g$("gsettings",["list-schemas"])}catch(Q){if(Q?.code==="ENOENT")return{};throw Q}if(!J.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return $4(await g$("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function Z4($=Y4,J=process.env,Q=Date.now){let Y;return async(Z)=>{if(Y0(Z)||Q0(Z,H$(J,"NO_PROXY"))||H$(J,Z.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||H$(J,"ALL_PROXY"))return E1(Z,J);if(!Y||Y.until<=Q()){let K=$().catch((X)=>{if(Y?.value===K)Y=void 0;if(X instanceof Error&&X.message.startsWith("network proxy:"))throw X;let H=X instanceof Error?X.code??X.name:"unknown error";throw Error(`network proxy: failed to read ${process.platform} system proxy settings (${H})`,{cause:X})});Y={until:Q()+30000,value:K}}return E1(Z,J,await Y.value)}}var K4=Z4();var k6=new X4({keepAlive:!0}),g6=new z4({keepAlive:!0});import{existsSync as d4,readFileSync as a4}from"node:fs";import{join as o4,isAbsolute as t4}from"node:path";var c$=B$(_1(),1);import{homedir as G4}from"node:os";import{join as C}from"node:path";var y1=G4(),U4=process.platform==="win32";function F4($,J,Q){if($)return $;if(J)return C(J,"lodestar");return Q}function B4(){if(U4)return C(process.env.APPDATA??C(y1,"AppData","Roaming"),"Lodestar");return C(y1,".config","lodestar")}var O4=F4(process.env.LODESTAR_CONFIG_DIR,process.env.XDG_CONFIG_HOME,B4()),P=c$.lodestarDataDir(),i6=process.env.LODESTAR_CONFIG??C(O4,"config.toml"),p6=C(P,"daemon.pid"),n6=C(P,"daemon.log"),d6=C(P,"session-chat-map.json"),a6=C(P,"session-resume-map.json"),o6=C(P,"session-turns-map.json"),t6=C(P,"session-model-map.json"),r6=C(P,"temp-session-leases.json"),s6=C(P,"tasklist-map.json"),e6=C(P,"agent-runs"),$Y=C(P,"agent-session-ids.json"),JY=c$.managedClaudePluginDir(),QY=C(P,"dsh"),YY=C(P,"codex-accounts"),ZY=C(P,"codex-accounts.json"),KY=C(P,"codex-quota-blocks.json"),A1=C(P,"agent-runtimes"),XY=C(P,"context-window-cache.json"),zY=C(P,"notify-callbacks.json"),VY=C(P,"alive-on-shutdown.json"),HY=C(P,"inbox"),WY=C(P,"file-deliveries"),GY=C(P,"file-delivery-groups.json"),UY=C(P,"debug.sock"),FY=C(P,"debug-context.json");var p4=B$(C8(),1);var T8=["codex","claude","dsh"];function r4($,J=A1){let Q=o4(J,$,"current.json");if(!d4(Q))return null;let Y=JSON.parse(a4(Q,"utf8"));if(!Number.isFinite(Y.checkedAt)||Y.directory!==void 0&&!t4(Y.directory))throw Error(`Invalid ${$} runtime state: ${Q}`);return Y}function P8($){return r4($)}var $6=JSON.parse(s4(e4(new URL("../package.json",import.meta.url)),"utf8"));console.log(`Lodestar v${$6.version}`);for(let $ of T8)try{let J=P8($);if(!J){console.log(`${$}: MISS(尚未自动安装)`);continue}if(J.error){console.log(`${$}: MISS(自动更新失败:${J.error})`),process.exitCode=1;continue}let Q=$==="dsh"?["@deepseek-ai/dsh"]:Object.keys(J.versions??{});console.log(`${$}: ${Q.map((Y)=>`${Y}@${J.versions?.[Y]??"MISS"}`).join(", ")}`),console.log(` ${J.directory}`)}catch(J){console.error(`${$}: MISS(${J})`),process.exitCode=1}console.log(`Runtime: ${process.version} (${process.platform}-${process.arch})`);
|
|
60
|
+
`;async function Y4(){if(process.platform==="win32")return sQ(JSON.parse(await g$("powershell.exe",["-NoProfile","-NonInteractive","-Command",Q4],15000)));if(process.platform==="darwin")return eQ(await g$("/usr/sbin/scutil",["--proxy"]));if(process.platform==="linux"){let $=j1(process.env.XDG_CONFIG_HOME||j1(oQ(),".config"),"kioslaverc");try{let Q=J4(await aQ($,"utf8"));if(Q&&(!process.env.XDG_CURRENT_DESKTOP||/kde/i.test(process.env.XDG_CURRENT_DESKTOP)))return Q}catch(Q){if(Q?.code!=="ENOENT")throw Q}let J;try{J=await g$("gsettings",["list-schemas"])}catch(Q){if(Q?.code==="ENOENT")return{};throw Q}if(!J.split(/\r?\n/).includes("org.gnome.system.proxy"))return{};return $4(await g$("gsettings",["list-recursively","org.gnome.system.proxy"]))}return{}}function Z4($=Y4,J=process.env,Q=Date.now){let Y;return async(Z)=>{if(Y0(Z)||Q0(Z,H$(J,"NO_PROXY"))||H$(J,Z.protocol==="https:"?"HTTPS_PROXY":"HTTP_PROXY")||H$(J,"ALL_PROXY"))return E1(Z,J);if(!Y||Y.until<=Q()){let K=$().catch((X)=>{if(Y?.value===K)Y=void 0;if(X instanceof Error&&X.message.startsWith("network proxy:"))throw X;let H=X instanceof Error?X.code??X.name:"unknown error";throw Error(`network proxy: failed to read ${process.platform} system proxy settings (${H})`,{cause:X})});Y={until:Q()+30000,value:K}}return E1(Z,J,await Y.value)}}var K4=Z4();var k6=new X4({keepAlive:!0}),g6=new z4({keepAlive:!0});import{existsSync as d4,readFileSync as a4}from"node:fs";import{join as o4,isAbsolute as t4}from"node:path";var c$=B$(_1(),1);import{homedir as G4}from"node:os";import{join as C}from"node:path";var y1=G4(),U4=process.platform==="win32";function F4($,J,Q){if($)return $;if(J)return C(J,"lodestar");return Q}function B4(){if(U4)return C(process.env.APPDATA??C(y1,"AppData","Roaming"),"Lodestar");return C(y1,".config","lodestar")}var O4=F4(process.env.LODESTAR_CONFIG_DIR,process.env.XDG_CONFIG_HOME,B4()),P=c$.lodestarDataDir(),i6=process.env.LODESTAR_CONFIG??C(O4,"config.toml"),p6=C(P,"daemon.pid"),n6=C(P,"daemon.log"),d6=C(P,"session-chat-map.json"),a6=C(P,"session-resume-map.json"),o6=C(P,"session-turns-map.json"),t6=C(P,"session-model-map.json"),r6=C(P,"temp-session-leases.json"),s6=C(P,"tasklist-map.json"),e6=C(P,"agent-runs"),$Y=C(P,"agent-session-ids.json"),JY=c$.managedClaudePluginDir(),QY=C(P,"dsh"),YY=C(P,"codex-accounts"),ZY=C(P,"codex-accounts.json"),KY=C(P,"codex-quota-blocks.json"),A1=C(P,"agent-runtimes"),XY=C(P,"context-window-cache.json"),zY=C(P,"notify-callbacks.json"),VY=C(P,"alive-on-shutdown.json"),HY=C(P,"inbox"),WY=C(P,"file-deliveries"),GY=C(P,"file-delivery-groups.json"),UY=C(P,"debug.sock"),FY=C(P,"debug-context.json");var p4=B$(C8(),1);var T8=["codex","claude","dsh"];function r4($,J=A1){let Q=o4(J,$,"current.json");if(!d4(Q))return null;let Y=JSON.parse(a4(Q,"utf8"));if(!Number.isFinite(Y.checkedAt)||Y.directory!==void 0&&!t4(Y.directory))throw Error(`Invalid ${$} runtime state: ${Q}`);return Y}function P8($){return r4($)}var $6=JSON.parse(s4(e4(new URL("../package.json",import.meta.url)),"utf8"));console.log(`Lodestar v${$6.version}`);for(let $ of T8)try{let J=P8($);if(!J){console.log(`${$}: MISS(尚未自动安装)`);continue}if(J.error){console.log(`${$}: MISS(自动更新失败:${J.error})`),process.exitCode=1;continue}let Q=$==="dsh"?["@deepseek-ai/dsh"]:Object.keys(J.versions??{});console.log(`${$}: ${Q.map((Y)=>`${Y}@${J.versions?.[Y]??"MISS"}`).join(", ")}`),console.log(` ${J.directory}`)}catch(J){console.error(`${$}: MISS(${J})`),process.exitCode=1}console.log(`Runtime: ${process.version} (${process.platform}-${process.arch})`);
|