anyray-connect 0.11.264 → 0.11.265

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  var bV=Object.defineProperty;var $=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var Tb=(e,t)=>{for(var n in t)bV(e,n,{get:t[n],enumerable:!0})};var kV,Zs,y0,CV,AV,He,Jr,on,Pb,vV,om,br,Ge,Be=$(()=>{"use strict";kV="http://localhost:8787",Zs="anyray-placeholder",y0=/^ark_[A-Za-z0-9_-]{20,512}$/,CV="ark_svc_",AV=/^ark_svc_[A-Za-z0-9_-]{20,512}$/,He=e=>{let t=e?.trim();return!!(t&&y0.test(t))},Jr=e=>{let t=e?.trim();if(t){if(AV.test(t))return"service";if(!t.startsWith(CV))return y0.test(t)?"personal":void 0}},on=e=>{let t=e.trim().replace(/\/+$/,"");return t=t.replace(/\/v1$/,""),t},Pb=(e,t)=>e?.trim()||process.env[t]?.trim()||void 0,vV=new Set(["localhost","127.0.0.1","[::1]","::1","0.0.0.0"]),om=e=>{try{let{protocol:t,hostname:n}=new URL(e);return t==="http:"&&!vV.has(n)}catch{return!1}},br=e=>{let t=on(e||process.env.ANYRAY_GATEWAY_URL||kV),n;try{n=new URL(t)}catch{throw new Error(`invalid gateway URL: "${t}" (expected e.g. http://localhost:8787)`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw new Error(`invalid gateway URL: "${t}" \u2014 must start with http:// or https://`);return t},Ge=(e={})=>{let t=br(e.origin),n=e.placeholderKey?.trim()||Zs,r=e.clientKey?.trim()||process.env.ANYRAY_CLIENT_KEY?.trim()||void 0,o={user:e.user?.trim()||void 0,team:e.team?.trim()||void 0,intent:Pb(e.intent,"ANYRAY_METADATA_INTENT"),intentLabel:Pb(e.intentLabel,"ANYRAY_METADATA_INTENT_LABEL"),session:Pb(e.session,"ANYRAY_METADATA_SESSION")},a=e.subscription?"subscription":e.placeholder?"placeholder":e.seat?"auto":"placeholder";return{origin:t,anthropicBaseUrl:t,openaiBaseUrl:`${t}/v1`,placeholderKey:n,clientKey:r,keyKind:Jr(r),authMode:a,byoUpstream:e.byoUpstream,seat:a==="auto"?e.seat:void 0,metadata:o}}});var g0,w0,am,sm=$(()=>{"use strict";g0="/connect/optimize-output",w0=e=>({matcher:"*",hooks:[{type:"http",url:`${e}${g0}`,timeout:2,headers:{"x-anyray-api-key":"$ANYRAY_CLIENT_KEY",Authorization:"Bearer $ANTHROPIC_AUTH_TOKEN"},allowedEnvVars:["ANYRAY_CLIENT_KEY","ANTHROPIC_AUTH_TOKEN"]}]}),am=e=>{if(!e||typeof e!="object")return!1;let t=e;if(t.type!=="http"||typeof t.url!="string")return!1;try{let n=new URL(t.url);return["http:","https:"].includes(n.protocol)&&n.pathname===g0&&!n.search&&!n.hash}catch{return!1}}});import{randomUUID as SV}from"node:crypto";import{lstat as Nb,open as IV,readFile as Lb,rename as im,rm as EV,writeFile as xV}from"node:fs/promises";import{platform as b0}from"node:os";var k0,RV,Ma,js,_V,Te,pn=$(()=>{"use strict";k0=e=>e?.code==="ENOENT",RV=new Set(["EBUSY","EXDEV","ETXTBSY"]),Ma=async(e,t=b0())=>{try{await e.sync()}catch(n){if(t!=="win32")throw n}},js=class extends Error{recoveryCopy;code="ANYRAY_PUBLISH_CONFLICT";constructor(t){super("destination changed before publication"),this.recoveryCopy=t,this.name="PublishConflictError"}},_V=async(e,t,n={})=>{let r=await Lb(e),o;try{o=await Lb(t)}catch(s){if(!k0(s))throw s;await xV(t,r);return}let a=async s=>{let i=await IV(t,"r+");try{await i.write(s,0,s.length,0),await i.truncate(s.length),await Ma(i)}finally{await i.close()}};try{if(await a(r),await n.corruptAfterWrite?.(t),!(await Lb(t)).equals(r))throw Object.assign(new Error("in-place publication did not persist"),{code:"EIO"})}catch(s){throw await a(o).catch(()=>{}),s}},Te=async(e,t,n=b0(),r={})=>{let o=r.rename??im;if(n!=="win32"){try{await o(e,t)}catch(i){if(!RV.has(i?.code??""))throw i;await _V(e,t,r)}return}let a=`${t}.anyray-old-${process.pid}-${SV()}`,s=!1;try{let i=await Nb(t);if(!i.isFile()&&!i.isSymbolicLink())throw new Error("refusing to replace a non-file destination");await im(t,a),s=!0}catch(i){if(!k0(i))throw i}if(s&&r.verifyDisplaced){let i=!1;try{i=await r.verifyDisplaced(a)}catch{i=!1}if(!i){let c=!1;try{await Nb(t),c=!0}catch{c=!1}if(c)throw new js(a);try{await o(a,t)}catch(l){let d=l?.code==="EEXIST";if(!d)try{await Nb(t),d=!0}catch{d=!1}throw d?new js(a):new Error(`destination changed before publication and could not be restored; recovery copy remains at ${a}`,{cause:l})}throw new js}}try{await im(e,t)}catch(i){if(s)try{await im(a,t)}catch{throw new Error(`failed to publish file and restore the previous destination; recovery copy remains at ${a}`)}throw i}s&&await EV(a,{force:!0})}});var zr,wc=$(()=>{"use strict";zr=e=>{try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}});import{writeFile as lm,readFile as bc,chmod as Mb,stat as $b,mkdir as A0,rm as Ys}from"node:fs/promises";import{AsyncLocalStorage as OV}from"node:async_hooks";import{randomUUID as TV}from"node:crypto";import{homedir as v0}from"node:os";import{join as Xs}from"node:path";var q,Zd,Fb,Pe,dm,wt,jd,G,kr,Rn,bt,PV,NV,S0,LV,DV,cm,I0,BV,MV,Kd,qr,Gb,xt,Db,Me,Rt,um,Bb,C0,Hb,pm,$a,fm,ee=$(()=>{"use strict";pn();wc();q=()=>Xs(v0(),".anyray"),Zd=async()=>{let e=q();try{if((await $b(e)).isDirectory())return Xs(e,"connect.json")}catch{}return e},Fb=()=>Xs(q(),"dev-key.pem"),Pe=async()=>{let e=q(),t;try{if(!(await $b(e)).isDirectory())t=await bc(e,"utf-8").catch(()=>{}),await Ys(e,{force:!0});else return}catch{}if(await A0(e,{recursive:!0,mode:448}),t!==void 0){let n=Xs(e,"connect.json");await lm(n,t,{mode:384}),await Mb(n,384)}},dm=async e=>{await Pe();let t=Fb();await lm(t,e,{mode:384}),await Mb(t,384)},wt=async()=>{try{let e=await bc(Fb(),"utf-8");return e.trim()?e:void 0}catch{return}},jd=async()=>{await Ys(Fb(),{force:!0}).catch(()=>{})},G=async()=>{try{let e=await bc(await Zd(),"utf-8"),t=JSON.parse(e);return t===null||typeof t!="object"||Array.isArray(t)?{}:t}catch{return{}}},kr=class extends Error{reason;constructor(t){super(`the connect profile could not be ${t==="read"?"read":"parsed"}`),this.reason=t,this.name="ProfileUnreadableError"}},Rn=async()=>{let e;try{e=await bc(await Zd(),"utf-8")}catch(n){return n?.code==="ENOENT"?{state:"absent"}:{state:"unreadable",reason:"read"}}let t;try{t=JSON.parse(e)}catch{return{state:"unreadable",reason:"parse"}}return t===null||typeof t!="object"||Array.isArray(t)?{state:"unreadable",reason:"parse"}:{state:"present",profile:t}},bt=async()=>{let e=await Rn();if(e.state==="absent")return{};if(e.state==="unreadable")throw new kr(e.reason);return e.profile},PV=0,NV=3e4,S0=5e3,LV=25,DV=()=>Xs(v0(),".anyray-connect-profile.lock"),cm=new OV,I0=async e=>{let t=await bc(Xs(e,"owner.json"),"utf-8").catch(()=>{}),n=await $b(e,{bigint:!0});return{dev:n.dev,ino:n.ino,mtimeNs:n.mtimeNs,owner:t}},BV=(e,t)=>e.dev===t.dev&&e.ino===t.ino&&e.mtimeNs===t.mtimeNs&&e.owner===t.owner,MV=async(e,t)=>{let n=await I0(e);if(n.owner!==void 0)try{let o=JSON.parse(n.owner);if(typeof o.pid=="number"&&Number.isSafeInteger(o.pid)&&o.pid>0)return zr(o.pid)?void 0:n}catch{}let r=Number(n.mtimeNs/1000000n);return Date.now()-r>t?n:void 0},Kd=class extends Error{constructor(t){super(t),this.name="LockBusyError"}},qr=async(e,t={},n={})=>{let r=t.waitMs??S0,o=t.staleMs??NV,a=Xs(e,"owner.json"),s=Date.now()+r;for(;;){let i=TV();try{await A0(e,{mode:448});let l=`${a}.anyray-tmp-${process.pid}-${i}`;try{await lm(l,`${JSON.stringify({pid:process.pid,nonce:i})}
3
3
  `,{flag:"wx",mode:384}),await Te(l,a)}catch(d){throw await Ys(l,{force:!0}).catch(()=>{}),await Ys(e,{recursive:!0,force:!0}).catch(()=>{}),d}return async()=>{try{JSON.parse(await bc(a,"utf-8")).nonce===i&&await Ys(e,{recursive:!0,force:!0})}catch{}}}catch(l){if(l.code!=="EEXIST")throw l}let c=await MV(e,o).catch(()=>{});if(c){await n.beforeReclaim?.();let l=await I0(e).catch(()=>{});if(l&&BV(c,l)&&await Ys(e,{recursive:!0,force:!0}).then(()=>!0).catch(()=>!1))continue}if(Date.now()>=s)throw new Kd(t.busyMessage??`${e} is busy; retry the command`);await new Promise(l=>setTimeout(l,LV))}},Gb=(e=S0)=>qr(DV(),{waitMs:e,busyMessage:"connect profile is busy; retry the command"}),xt=async(e,t={})=>{if(cm.getStore()===!0)return e();let n=await Gb(t.waitMs);try{return await cm.run(!0,e)}finally{await n()}},Db=async e=>{let t=Object.fromEntries(Object.entries(e).filter(([,o])=>o!==void 0)),n=await Zd(),r=`${n}.${process.pid}.${PV++}.tmp`;await lm(r,`${JSON.stringify(t,null,2)}
4
- `,{mode:384}),await Mb(r,384);try{await Te(r,n)}catch(o){throw await Ys(r,{force:!0}).catch(()=>{}),o}},Me=async e=>{if(cm.getStore()===!0){await Db(e);return}let t=await Gb();try{await Db(e)}finally{await t()}},Rt=async e=>{let t=async()=>{let r=await bt(),{next:o,result:a}=e(r);return o&&await Db(o),a};if(cm.getStore()===!0)return t();let n=await Gb();try{return await t()}finally{await n()}},um=e=>Rt(t=>({next:{...t,...e},result:void 0})),Bb=["clientKey","clientKeyExpiresAt","enrolledCert","enrolledCertExpiry","enrolledCertLifetimeMs","enrolledTokenHash"],C0="ssoLink",Hb=async()=>{let e=await G();return Bb.some(t=>e[t]!==void 0)?!0:await wt()!==void 0},pm=async()=>{let e=await bt(),t=Bb.some(a=>e[a]!==void 0),n=e[C0]!==void 0,r=e.byoUpstream!==void 0,o=await wt()!==void 0;if(t||n||r||e.managedEnrollmentDisabled!==!0){let a={...e};for(let s of Bb)delete a[s];delete a[C0],delete a.byoUpstream,a.managedEnrollmentDisabled=!0,delete a.anyrayFleetManaged,delete a.fleetRefreshAt,delete a.fleetRefreshAwaitedSince,await Me(a)}if(await jd(),await wt())throw new Error(`could not remove the dev key from ${q()}`);return t||n||r||o},$a=async(e,t,n=!1,r)=>{await Rt(o=>{let a=new Set(o.managedTools??[]),s=new Set(o.revertedTools??[]),i=new Set(o.blockedTools??[]),c=Array.isArray(o.selectedTools)?o.selectedTools:void 0,l=o.toolSelection,d=o.offboardedAt;for(let v of e){let T=v.status==="configured"||v.status==="queued"||v.status==="manual"&&v.landed===!0;!t&&T&&(a.add(v.id),s.delete(v.id),i.delete(v.id),d=void 0),!t&&v.refused===!0&&i.add(v.id),t&&(v.status==="reverted"||v.status==="queued")&&(a.delete(v.id),s.add(v.id),i.delete(v.id))}if(n&&(a.clear(),i.clear()),r&&!t){let v=new Set(r.knownToolIds);for(let T of r.declinedToolIds??[])v.has(T)&&!a.has(T)&&s.add(T)}if(r){let v=r.namedToolIds??[];if(n)c=[];else if(t&&c){let T=new Set(c);for(let R of v)T.delete(R);c=[...T].sort()}else if(!t&&v.length>0){let T=new Set(r.knownToolIds),R=new Set((c??[]).filter(I=>T.has(I)));for(let I of v)T.has(I)&&R.add(I);c=[...R].sort()}t||(l=v.length>0?"explicit":"all")}let u=[...a].sort(),p=[...o.managedTools??[]].sort(),f=[...s].sort(),h=[...o.revertedTools??[]].sort(),m=[...i].sort(),w=[...o.blockedTools??[]].sort(),g=(v,T)=>v.length===T.length&&v.every((R,I)=>R===T[I]),y=c===void 0?o.selectedTools===void 0:o.selectedTools!==void 0&&g(c,o.selectedTools);if(g(u,p)&&o.revertedTools!=null&&g(f,h)&&g(m,w)&&y&&l===o.toolSelection&&d===o.offboardedAt)return{result:void 0};let{offboardedAt:k,...A}=o;return{next:{...A,...d!==void 0?{offboardedAt:d}:{},managedTools:u,revertedTools:f,blockedTools:m,selectedTools:c,toolSelection:l},result:void 0}})},fm=async(e=new Date().toISOString())=>{await um({offboardedAt:e})}});var Kn,kt,Cr,kc,Zn=$(()=>{"use strict";Kn=(e=process.env)=>e.CODESPACES==="true"||e.CODESPACE_NAME?"codespaces":e.REMOTE_CONTAINERS==="true"||e.REMOTE_CONTAINERS_IPC||e.DEVCONTAINER?"devcontainer":e.SSH_CONNECTION||e.SSH_TTY?"ssh":null,kt=(e=process.env)=>Kn(e)!==null,Cr=e=>e==="codespaces"||e==="devcontainer",kc=e=>{switch(e){case"codespaces":return"a GitHub Codespace";case"devcontainer":return"a dev container";case"ssh":return"an SSH session"}}});var _e,jn=$(()=>{"use strict";_e="0.11.264"});import{access as $V,chmod as FV,mkdir as Wb,open as Zb,readFile as N0,rm as Ar,stat as E0,utimes as GV}from"node:fs/promises";import{createHash as jb,randomUUID as L0}from"node:crypto";import{readFileSync as D0,statSync as x0}from"node:fs";import{dirname as Yb,join as HV}from"node:path";import{isDeepStrictEqual as Cc}from"node:util";var Fa,B0,R0,WV,P,Y,vc,_0,M0,Ga,Xd,se,$0,O0,UV,VV,F0,KV,Yd,Ub,Vb,T0,ZV,Kb,Ac,G0,H0,W0,mm,P0,hm,jo,pe,be=$(()=>{"use strict";wc();pn();Fa=e=>`${e}.anyray-bak`,B0=async e=>{let t;try{t=await Zb(Yb(e),"r"),await t.sync()}catch(n){if(process.platform!=="win32")throw n}finally{await t?.close().catch(()=>{})}},R0=async(e,t)=>{let n,r;try{n=await Zb(e,"wx",384),await n.writeFile(t,"utf-8"),await Ma(n)}catch(o){r=o}finally{await n?.close().catch(()=>{})}if(r)throw n&&await Ar(e,{force:!0}).catch(()=>{}),r;await B0(e)},WV=async e=>{let t;try{t=await Zb(e,"r"),await Ma(t)}finally{await t?.close().catch(()=>{})}await B0(e)},P=async e=>{try{return await $V(e),!0}catch{return!1}},Y=async e=>{if(!await P(e))return{};let t=await N0(e,"utf-8");if(!t.trim())return{};let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))throw new Error(`${e} is not a JSON object`);return n},vc=class extends Error{constructor(){super("repair deferred: configuration changed before publication")}},_0=e=>`${e.dev}:${e.ino}:${e.size}:${e.mtimeNs}:${e.ctimeNs}`,M0=e=>{try{let t=_0(x0(e,{bigint:!0})),n=D0(e),r=_0(x0(e,{bigint:!0}));if(t!==r)throw new vc;return{raw:n.toString("utf8"),fingerprint:`${r}:${jb("sha256").update(n).digest("hex")}`}}catch(t){if(t.code==="ENOENT")return{raw:"",fingerprint:"missing"};throw t}},Ga=e=>{let{raw:t,fingerprint:n}=M0(e),r=t.trim()?JSON.parse(t):{};if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("configuration is not a JSON object");return{value:r,fingerprint:n}},Xd=async(e,t,n={})=>{for(let r=0;r<3;r++)try{let o=Ga(e);if(n.requireExisting&&o.fingerprint==="missing")return"unchanged";let a=JSON.stringify(o.value);return t(o.value),JSON.stringify(o.value)===a?"unchanged":(await se(e,o.value,{backup:n.backup,expectedFingerprint:o.fingerprint}),"written")}catch(o){if(!(o instanceof vc))throw o}return"repair deferred"},se=async(e,t,n={})=>{await Wb(Yb(e),{recursive:!0,mode:448});let r=Fa(e);if(n.backup!==!1&&!await P(r)){let a=await P(e),s=a?await N0(e,"utf-8"):`{}
4
+ `,{mode:384}),await Mb(r,384);try{await Te(r,n)}catch(o){throw await Ys(r,{force:!0}).catch(()=>{}),o}},Me=async e=>{if(cm.getStore()===!0){await Db(e);return}let t=await Gb();try{await Db(e)}finally{await t()}},Rt=async e=>{let t=async()=>{let r=await bt(),{next:o,result:a}=e(r);return o&&await Db(o),a};if(cm.getStore()===!0)return t();let n=await Gb();try{return await t()}finally{await n()}},um=e=>Rt(t=>({next:{...t,...e},result:void 0})),Bb=["clientKey","clientKeyExpiresAt","enrolledCert","enrolledCertExpiry","enrolledCertLifetimeMs","enrolledTokenHash"],C0="ssoLink",Hb=async()=>{let e=await G();return Bb.some(t=>e[t]!==void 0)?!0:await wt()!==void 0},pm=async()=>{let e=await bt(),t=Bb.some(a=>e[a]!==void 0),n=e[C0]!==void 0,r=e.byoUpstream!==void 0,o=await wt()!==void 0;if(t||n||r||e.managedEnrollmentDisabled!==!0){let a={...e};for(let s of Bb)delete a[s];delete a[C0],delete a.byoUpstream,a.managedEnrollmentDisabled=!0,delete a.anyrayFleetManaged,delete a.fleetRefreshAt,delete a.fleetRefreshAwaitedSince,await Me(a)}if(await jd(),await wt())throw new Error(`could not remove the dev key from ${q()}`);return t||n||r||o},$a=async(e,t,n=!1,r)=>{await Rt(o=>{let a=new Set(o.managedTools??[]),s=new Set(o.revertedTools??[]),i=new Set(o.blockedTools??[]),c=Array.isArray(o.selectedTools)?o.selectedTools:void 0,l=o.toolSelection,d=o.offboardedAt;for(let v of e){let T=v.status==="configured"||v.status==="queued"||v.status==="manual"&&v.landed===!0;!t&&T&&(a.add(v.id),s.delete(v.id),i.delete(v.id),d=void 0),!t&&v.refused===!0&&i.add(v.id),t&&(v.status==="reverted"||v.status==="queued")&&(a.delete(v.id),s.add(v.id),i.delete(v.id))}if(n&&(a.clear(),i.clear()),r&&!t){let v=new Set(r.knownToolIds);for(let T of r.declinedToolIds??[])v.has(T)&&!a.has(T)&&s.add(T)}if(r){let v=r.namedToolIds??[];if(n)c=[];else if(t&&c){let T=new Set(c);for(let R of v)T.delete(R);c=[...T].sort()}else if(!t&&v.length>0){let T=new Set(r.knownToolIds),R=new Set((c??[]).filter(I=>T.has(I)));for(let I of v)T.has(I)&&R.add(I);c=[...R].sort()}t||(l=v.length>0?"explicit":"all")}let u=[...a].sort(),p=[...o.managedTools??[]].sort(),f=[...s].sort(),h=[...o.revertedTools??[]].sort(),m=[...i].sort(),w=[...o.blockedTools??[]].sort(),g=(v,T)=>v.length===T.length&&v.every((R,I)=>R===T[I]),y=c===void 0?o.selectedTools===void 0:o.selectedTools!==void 0&&g(c,o.selectedTools);if(g(u,p)&&o.revertedTools!=null&&g(f,h)&&g(m,w)&&y&&l===o.toolSelection&&d===o.offboardedAt)return{result:void 0};let{offboardedAt:k,...A}=o;return{next:{...A,...d!==void 0?{offboardedAt:d}:{},managedTools:u,revertedTools:f,blockedTools:m,selectedTools:c,toolSelection:l},result:void 0}})},fm=async(e=new Date().toISOString())=>{await um({offboardedAt:e})}});var Kn,kt,Cr,kc,Zn=$(()=>{"use strict";Kn=(e=process.env)=>e.CODESPACES==="true"||e.CODESPACE_NAME?"codespaces":e.REMOTE_CONTAINERS==="true"||e.REMOTE_CONTAINERS_IPC||e.DEVCONTAINER?"devcontainer":e.SSH_CONNECTION||e.SSH_TTY?"ssh":null,kt=(e=process.env)=>Kn(e)!==null,Cr=e=>e==="codespaces"||e==="devcontainer",kc=e=>{switch(e){case"codespaces":return"a GitHub Codespace";case"devcontainer":return"a dev container";case"ssh":return"an SSH session"}}});var _e,jn=$(()=>{"use strict";_e="0.11.265"});import{access as $V,chmod as FV,mkdir as Wb,open as Zb,readFile as N0,rm as Ar,stat as E0,utimes as GV}from"node:fs/promises";import{createHash as jb,randomUUID as L0}from"node:crypto";import{readFileSync as D0,statSync as x0}from"node:fs";import{dirname as Yb,join as HV}from"node:path";import{isDeepStrictEqual as Cc}from"node:util";var Fa,B0,R0,WV,P,Y,vc,_0,M0,Ga,Xd,se,$0,O0,UV,VV,F0,KV,Yd,Ub,Vb,T0,ZV,Kb,Ac,G0,H0,W0,mm,P0,hm,jo,pe,be=$(()=>{"use strict";wc();pn();Fa=e=>`${e}.anyray-bak`,B0=async e=>{let t;try{t=await Zb(Yb(e),"r"),await t.sync()}catch(n){if(process.platform!=="win32")throw n}finally{await t?.close().catch(()=>{})}},R0=async(e,t)=>{let n,r;try{n=await Zb(e,"wx",384),await n.writeFile(t,"utf-8"),await Ma(n)}catch(o){r=o}finally{await n?.close().catch(()=>{})}if(r)throw n&&await Ar(e,{force:!0}).catch(()=>{}),r;await B0(e)},WV=async e=>{let t;try{t=await Zb(e,"r"),await Ma(t)}finally{await t?.close().catch(()=>{})}await B0(e)},P=async e=>{try{return await $V(e),!0}catch{return!1}},Y=async e=>{if(!await P(e))return{};let t=await N0(e,"utf-8");if(!t.trim())return{};let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))throw new Error(`${e} is not a JSON object`);return n},vc=class extends Error{constructor(){super("repair deferred: configuration changed before publication")}},_0=e=>`${e.dev}:${e.ino}:${e.size}:${e.mtimeNs}:${e.ctimeNs}`,M0=e=>{try{let t=_0(x0(e,{bigint:!0})),n=D0(e),r=_0(x0(e,{bigint:!0}));if(t!==r)throw new vc;return{raw:n.toString("utf8"),fingerprint:`${r}:${jb("sha256").update(n).digest("hex")}`}}catch(t){if(t.code==="ENOENT")return{raw:"",fingerprint:"missing"};throw t}},Ga=e=>{let{raw:t,fingerprint:n}=M0(e),r=t.trim()?JSON.parse(t):{};if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("configuration is not a JSON object");return{value:r,fingerprint:n}},Xd=async(e,t,n={})=>{for(let r=0;r<3;r++)try{let o=Ga(e);if(n.requireExisting&&o.fingerprint==="missing")return"unchanged";let a=JSON.stringify(o.value);return t(o.value),JSON.stringify(o.value)===a?"unchanged":(await se(e,o.value,{backup:n.backup,expectedFingerprint:o.fingerprint}),"written")}catch(o){if(!(o instanceof vc))throw o}return"repair deferred"},se=async(e,t,n={})=>{await Wb(Yb(e),{recursive:!0,mode:448});let r=Fa(e);if(n.backup!==!1&&!await P(r)){let a=await P(e),s=a?await N0(e,"utf-8"):`{}
5
5
  `;if(a||n.tombstoneAbsent!==!1)try{await R0(r,s)}catch(i){if(i.code!=="EEXIST")throw i}}let o=`${e}.anyray-tmp-${process.pid}-${L0()}`;try{if(await R0(o,`${JSON.stringify(t,null,2)}
6
6
  `),n.expectedFingerprint!==void 0){if(M0(e).fingerprint!==n.expectedFingerprint)throw new vc;let a=n.expectedFingerprint.slice(n.expectedFingerprint.lastIndexOf(":")+1);try{await Te(o,e,n.runtimePlatform,{verifyDisplaced:async s=>jb("sha256").update(D0(s)).digest("hex")===a})}catch(s){throw s instanceof js?new vc:s}return}await Te(o,e,n.runtimePlatform),await FV(e,384),await WV(e)}finally{await Ar(o,{force:!0}).catch(()=>{})}},$0=1,O0=3e4,UV=5e3,VV=/^[a-f0-9]{64}$/,F0=e=>`${e}.pending`,KV=e=>`${e}.lock`,Yd=e=>{if(e===void 0)return"null";if(e===null||typeof e!="object")return JSON.stringify(e)??"null";if(Array.isArray(e))return`[${e.map(n=>Yd(n)).join(",")}]`;let t=e;return`{${Object.keys(t).sort().filter(n=>t[n]!==void 0).map(n=>`${JSON.stringify(n)}:${Yd(t[n])}`).join(",")}}`},Ub=(e,t)=>({exists:e,sha256:jb("sha256").update(Yd(t)).digest("hex")}),Vb=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),T0=e=>Vb(e)&&typeof e.exists=="boolean"&&typeof e.sha256=="string"&&VV.test(e.sha256),ZV=e=>Vb(e)&&e.transactionVersion===$0&&T0(e.before)&&T0(e.after)&&Vb(e.journal),Kb=(e,t)=>e.exists===t.exists&&e.sha256===t.sha256,Ac=async(e,t)=>{try{return await Y(e)}catch{throw new Error(`${t} is malformed; no configuration was changed`)}},G0=async e=>{let t=KV(e),n=HV(t,"owner.json");await Wb(Yb(t),{recursive:!0,mode:448});for(let r=0;r<2;r++){let o=L0();try{await Wb(t,{mode:448})}catch(s){if(s.code!=="EEXIST")throw s;let i=!1;try{let c=await Ac(n,"ownership journal");if(typeof c.pid!="number"||!Number.isSafeInteger(c.pid)||c.pid<=0)throw new Error("lock owner is missing or invalid");let l=Date.now()-(await E0(n)).mtimeMs;i=!zr(c.pid)||l>O0}catch{try{i=Date.now()-(await E0(t)).mtimeMs>O0}catch{i=!1}}if(!i||r>0)throw new Error("ownership transaction already in progress");await Ar(t,{recursive:!0,force:!0});continue}try{await se(n,{pid:process.pid,nonce:o,createdAt:Date.now()},{backup:!1})}catch(s){throw await Ar(t,{recursive:!0,force:!0}).catch(()=>{}),s}let a=setInterval(()=>{(async()=>{try{if((await Ac(n,"ownership journal")).nonce!==o)return;let i=new Date;await GV(n,i,i)}catch{}})()},UV);return a.unref(),async()=>{clearInterval(a);try{(await Ac(n,"ownership journal")).nonce===o&&await Ar(t,{recursive:!0,force:!0})}catch{}}}throw new Error("ownership transaction already in progress")},H0=async e=>{let t=await P(e),n={};if(t)try{n=await Y(e)}catch{throw new Error("configuration is malformed during ownership recovery; it was left unchanged")}return{exists:t,value:n,fingerprint:Ub(t,n)}},W0=async(e,t)=>{let n=F0(t);if(!await P(n))return;let r=await Ac(n,"prepared ownership transaction");if(!ZV(r))throw new Error("prepared ownership transaction is invalid; no recovery write was attempted");let o=await H0(e),a=await P(t),s=await P(Fa(e)),i=Kb(o.fingerprint,r.before),c=Kb(o.fingerprint,r.after),l=r.journal.fileExisted;if(c&&(a||l===!1||s)&&(!i||a||s)){await se(t,r.journal,{backup:!1}),await Ar(n,{force:!0});return}if(i){await Ar(n,{force:!0}),a||await pe(e);return}throw new Error("configuration changed during an interrupted ownership transaction; recovery files were preserved")},mm=async(e,t,n)=>{let r=await G0(t);try{return await W0(e,t),await n()}finally{await r()}},P0=async(e,t,n,r)=>{if(!await P(e)){if(n)throw new Error("journaled JSON rollback found a missing prior file");return}let a=await Ac(e,"ownership journal");if(!(n&&Cc(a,t))){if(!Cc(a,r))throw new Error("journaled JSON rollback found a concurrent file edit");n?await se(e,t,{backup:!1}):await Ar(e,{force:!0})}},hm=async(e,t={})=>{let{configPath:n,current:r,next:o,journalPath:a,journal:s,fileExisted:i}=e,c=await G0(a);try{await W0(n,a);let l=await H0(n),d=Ub(i,r),u=await P(a),p=u?await Ac(a,"ownership journal"):void 0,f=p&&typeof p.fileExisted=="boolean"?{...s,fileExisted:p.fileExisted}:s;if(!Kb(l.fingerprint,d)){if(Cc(l.value,o)&&p&&Cc(p,f))return;throw new Error("configuration changed before the ownership transaction acquired its lock; retry")}if(l.exists&&Cc(l.value,o)&&p&&Cc(p,f))return;let h=await P(Fa(n));if(p?.fileExisted===!0&&!h)throw new Error("ownership backup is missing; configuration was left unchanged");if(h&&!p)throw new Error("an unjournaled ownership backup already exists; configuration was left unchanged");let m=F0(a),w={transactionVersion:$0,before:l.fingerprint,after:Ub(!0,o),journal:f};await se(m,w,{backup:!1});try{await se(n,o,p?{backup:!1}:{tombstoneAbsent:!1}),await(t.writeJournal??se)(a,f,{backup:!1}),await Ar(m,{force:!0})}catch(g){try{await P0(n,l.value,l.exists,o)}catch(y){throw new AggregateError([g,y],"ownership journal publication failed and config rollback was incomplete")}try{await P0(a,p??{},u,f),await Ar(m,{force:!0}),!h&&!p&&await pe(n)}catch(y){throw new AggregateError([g,y],"ownership journal publication failed after config rollback")}throw g}}finally{await c()}},jo=async e=>{try{return await Y(Fa(e))}catch{return{}}},pe=async e=>{await Ar(Fa(e),{force:!0}).catch(()=>{})}});var Jd,U0,jV,V0,fn,YV,zd,XV,JV,ym,Sc,K0,Js,gm,Yo=$(()=>{"use strict";Jd=e=>{let t=e.enrolledCert?.payload.keyTtlSeconds;return typeof t=="number"&&Number.isFinite(t)&&t>0?t*1e3:void 0},U0=new Set(["claude-code","opencode","cursor","copilot","copilot-cli","claude-desktop","jetbrains","windsurf","omp"]),jV=10080*60*1e3,V0=(e,t,n=Date.now())=>{let r=[],o=Jd(e);o!==void 0&&r.push(o);let a=Date.parse(t??e.clientKeyExpiresAt??"");Number.isFinite(a)&&r.push(a-n);let s=Date.parse(e.enrolledCertExpiry??e.enrolledCert?.payload.expiresAt??"");return Number.isFinite(s)&&r.push(s-n),r.length===0?!1:Math.min(...r)<=jV},fn=(e,t={},n=Date.now())=>{if(!e.enrolledCert)return!1;let o=(t.toolIds??e.managedTools??[]).some(a=>U0.has(a));return V0(e,t.keyExpiresAt,n)||!o},YV=1440*60*1e3,zd=2*YV,XV=360*60*1e3,JV=300*1e3,ym=(e,t)=>{let n=Date.parse(e??"");return Number.isFinite(n)&&n<=t+JV?n:void 0},Sc=(e,t=Date.now())=>{let n=ym(e.fleetRefreshAt,t);if(n!==void 0&&t-n<zd)return"live";let r=ym(e.fleetRefreshAwaitedSince,t);return r===void 0||t-r<XV?"awaiting":"stale"},K0=(e,t,n=Date.now())=>{if(t){let o={...e,anyrayFleetManaged:!0,fleetRefreshAt:new Date(n).toISOString()};return delete o.fleetRefreshAwaitedSince,o}if(e.anyrayFleetManaged!==!0)return;let r=ym(e.fleetRefreshAt,n);if(r!==void 0&&n-r<zd){if(e.fleetRefreshAwaitedSince===void 0)return;let o={...e};return delete o.fleetRefreshAwaitedSince,o}if(ym(e.fleetRefreshAwaitedSince,n)===void 0)return{...e,fleetRefreshAwaitedSince:new Date(n).toISOString()}},Js=(e,t,n,r=Date.now())=>n!=="win32"&&e.anyrayFleetManaged===!0&&t&&Sc(e,r)!=="stale",gm=(e,t,n,r=Date.now())=>Js(e,t,n,r)&&Sc(e,r)==="live"});import{delimiter as zV,dirname as qV}from"node:path";var Qr,zs,_n,vr=$(()=>{"use strict";_t();Qr=e=>{let{command:t,args:n}=Yn([e]);return{command:t,args:n}},zs=()=>qs(),_n=(e="",t=process.env.PATH??"",n=wm(),r=qs())=>{let a=t.split(zV).filter(Boolean).some(s=>s===n)||qV(r)!==n?"anyray-connect":r;return e?`${a} ${e}`:a}});var xe,Ic=$(()=>{"use strict";xe=(e,t,n=0)=>{let r=e.indexOf(t,n);for(;r>=0;){let o=e.lastIndexOf(`
7
7
  `,r-1)+1,a=e.indexOf(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anyray-connect",
3
- "version": "0.11.264",
3
+ "version": "0.11.265",
4
4
  "description": "Anyray connect \u2014 points local coding tools (Claude Code, Cursor, Windsurf, SDKs) at the Anyray gateway through supported configuration and enrolled personal authentication.",
5
5
  "type": "module",
6
6
  "bin": {