@opencode/console 0.1.2 → 0.1.4

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 (65) hide show
  1. package/README.md +14 -0
  2. package/chunk-172desm7.js +2 -0
  3. package/chunk-17ek638g.js +15 -0
  4. package/{chunk-b02r286p.js → chunk-1900gmc1.js} +2 -2
  5. package/chunk-1ekysq54.js +1 -0
  6. package/chunk-38wxxryg.js +1 -0
  7. package/chunk-4hra11sy.js +2 -0
  8. package/{chunk-jem7z938.js → chunk-6dmhresx.js} +2 -2
  9. package/{chunk-dnepb5ke.js → chunk-81pw2xsw.js} +2 -2
  10. package/chunk-87hkw75t.js +11 -0
  11. package/chunk-8stwzw95.js +2 -0
  12. package/chunk-93je9v9b.js +2 -0
  13. package/chunk-bfd21777.js +2 -0
  14. package/chunk-c8zgzn9g.js +2 -0
  15. package/chunk-c94982xf.js +1 -0
  16. package/chunk-e219b1sg.js +149 -0
  17. package/chunk-eja0bnj7.js +1 -0
  18. package/chunk-fsg05nff.js +2 -0
  19. package/chunk-gj3j0mk6.js +1 -0
  20. package/chunk-hkjjea67.js +3 -0
  21. package/chunk-httrtddj.js +1 -0
  22. package/chunk-j6qa0p88.js +1 -0
  23. package/chunk-ka5nrr3r.js +1 -0
  24. package/chunk-m711drrn.js +1 -0
  25. package/chunk-n6fr9p3j.js +254 -0
  26. package/chunk-qsqer89q.js +1 -0
  27. package/{chunk-rx6cjbq2.js → chunk-tzhpc3tb.js} +55 -55
  28. package/chunk-v67dra35.js +1 -0
  29. package/chunk-vf7nj8yg.js +32 -0
  30. package/chunk-vrvsj5aj.js +1 -0
  31. package/chunk-w7jwta9c.js +1 -0
  32. package/chunk-wvtbwbxs.js +2 -0
  33. package/{chunk-wd4mfvqy.js → chunk-xsr5jd61.js} +2 -2
  34. package/{chunk-cdc5arvh.js → chunk-yqbzfq0h.js} +1 -1
  35. package/dsh-plugin.js +1 -1
  36. package/index.js +65 -56
  37. package/package.json +1 -1
  38. package/pi-extension.js +2 -2
  39. package/chunk-0067hzw7.js +0 -11
  40. package/chunk-0trayd9n.js +0 -2
  41. package/chunk-37whdg3n.js +0 -1
  42. package/chunk-6bc9ezw6.js +0 -1
  43. package/chunk-71rwyxw2.js +0 -2
  44. package/chunk-78cwb109.js +0 -162
  45. package/chunk-7k3ymrp6.js +0 -254
  46. package/chunk-83pr45e8.js +0 -1
  47. package/chunk-96f5c0tj.js +0 -2
  48. package/chunk-ak1n0cs7.js +0 -2
  49. package/chunk-et9y1sb5.js +0 -2
  50. package/chunk-g9bke322.js +0 -1
  51. package/chunk-gvywgb0d.js +0 -1
  52. package/chunk-gxedprvk.js +0 -32
  53. package/chunk-kpp48ne0.js +0 -1
  54. package/chunk-ktx666b5.js +0 -2
  55. package/chunk-m3n97pxp.js +0 -1
  56. package/chunk-n5bt7jzp.js +0 -3
  57. package/chunk-px1nqkzb.js +0 -2
  58. package/chunk-sbkpkav3.js +0 -1
  59. package/chunk-t8p1svd4.js +0 -1
  60. package/chunk-tx5wws16.js +0 -2
  61. package/chunk-vy3ahcaj.js +0 -2
  62. package/chunk-w6kmmxmz.js +0 -1
  63. package/chunk-wkrya350.js +0 -1
  64. package/chunk-ysgtje2z.js +0 -1
  65. package/chunk-zgcspk2g.js +0 -1
@@ -0,0 +1 @@
1
+ import{kr,xn,Wt,js,Ae,V,Bs,Se,J,xo,Rt,qs}from"./chunk-xsr5jd61.js";import"./chunk-81pw2xsw.js";export{qs as ConsoleStore,xn as credentialFile,Rt as ensureDir,Ae as locked,kr as make,Bs as modified,V as read,J as remove,Wt as snapshotFile,js as syncClaimFile,xo as unreachable,Se as write};
@@ -0,0 +1 @@
1
+ import{k,C,t,c,ee,je,Jt,yo,s,ji,Me,f,N,te,zs,Ne,oe,ve,i,a,A,U,z,Fe,Cr,L,F,pe,yn,Zt,T,b,Ke,E,P,K,bn,ge,we,Ee,Nt,Ar,Gn,D,Vn,Sn,vo,wo,Vs,vn,Dt,fe,qi,se,Tr,Or,En,kn,_r,ft,xe,r,O,I,Lt,o,dt,j,Pr,An,u,In,Ve,h,mt,ot,Rr,Ys,st,Mr,Ao,Qs,Io,Ut,Xs,ei,tn,Xn,er,ti,oi,rn,It,To,Oo,_o,$t,si,ii,ai,Oe,de,Lr,$r,Gi,qr,ht,No,Vi,Zi,Fo,Do,Pn,Yi,on,Qi,Xi,jt,Lo,pi,Uo,ea,sn,ta,it,Wr,na,ra,oa,sa,ia,an,$o,Bt,rr,cn,g,B,M,y,Ye,Yr,G,hi,zo,un,ct,ma,Qr,Wo,Dn,ha,Ko,ga,Jo,xa,ya,yt}from"./chunk-vf7nj8yg.js";var Fi={};k(Fi,{Fetch:()=>Pt,RequestInit:()=>mo,StreamBodyFallback:()=>Cn,layer:()=>ho});var $s={};k($s,{HttpClient:()=>Re,SpanNameGenerator:()=>mn,TracerDisabledWhen:()=>pn,TracerHeaderFilter:()=>fn,TracerPropagationEnabled:()=>dn,catch:()=>Ns,catchTag:()=>Ls,catchTags:()=>vs,circuitBreakerClassifier:()=>Zo,del:()=>_s,execute:()=>Is,filterOrElse:()=>qs,filterOrFail:()=>Js,filterStatus:()=>Ws,filterStatusOk:()=>Ri,followRedirects:()=>Oa,get:()=>Os,head:()=>As,isHttpClient:()=>Yo,isTransientError:()=>lr,isTransientResponse:()=>xr,layerMergedContext:()=>yr,make:()=>gr,makeWith:()=>rt,mapRequest:()=>Mi,mapRequestEffect:()=>Zs,mapRequestInput:()=>Ks,mapRequestInputEffect:()=>aa,options:()=>Fs,patch:()=>Ms,post:()=>Ds,put:()=>ks,query:()=>Bs,retry:()=>ca,retryTransient:()=>pa,tap:()=>wa,tapError:()=>Ua,tapRequest:()=>Pa,timeout:()=>fa,transform:()=>ce,transformResponse:()=>$e,withCircuitBreaker:()=>da,withCookiesRef:()=>Ia,withRateLimiter:()=>ua,withScope:()=>Ni});var wr={};k(wr,{DecodeError:()=>xt,EmptyBodyError:()=>Ce,EncodeError:()=>Xt,HttpClientError:()=>ae,HttpClientErrorSchema:()=>Ze,InvalidUrlError:()=>He,StatusCodeError:()=>Et,TransportError:()=>Ct,isHttpClientError:()=>_t});var po={};k(po,{accept:()=>ar,acceptJson:()=>Er,appendUrl:()=>es,appendUrlParam:()=>ns,appendUrlParams:()=>ss,basicAuth:()=>Zn,bearerToken:()=>Oi,bodyFile:()=>gs,bodyFormData:()=>ms,bodyFormDataRecord:()=>ls,bodyJson:()=>fs,bodyJsonUnsafe:()=>_i,bodyStream:()=>hs,bodyText:()=>ps,bodyUint8Array:()=>cs,bodyUrlParams:()=>ds,compressBody:()=>is,delete:()=>jn,empty:()=>go,fromWeb:()=>Es,get:()=>Us,head:()=>zn,isHttpClientRequest:()=>zt,make:()=>Z,makeWith:()=>_,modify:()=>sr,options:()=>Qn,patch:()=>Wn,post:()=>Ti,prependUrl:()=>ts,put:()=>$n,query:()=>Jn,removeHash:()=>as,removeHeader:()=>St,schemaBodyJson:()=>us,setBody:()=>W,setHash:()=>Ho,setHeader:()=>Gt,setHeaders:()=>hn,setMethod:()=>Pe,setUrl:()=>xo,setUrlParam:()=>os,setUrlParams:()=>bo,toUrl:()=>ne,toWeb:()=>Ss,toWebResult:()=>Co,trace:()=>Yn,updateHeaders:()=>Eo,updateUrl:()=>rs,upgrade:()=>Kn});var fo={};k(fo,{TypeId:()=>bt,filterStatus:()=>pr,filterStatusOk:()=>gn,fromWeb:()=>cr,matchStatus:()=>Ts,schemaBodyJson:()=>tt,schemaBodyUrlParams:()=>Ro,schemaHeaders:()=>Po,schemaJson:()=>Hs,schemaNoBody:()=>Cs,stream:()=>Rs,toWeb:()=>bs});var Tn="~effect/Ref",Na={[Tn]:{_A:c},...ve,toJSON(){return{_id:"Ref",ref:this.ref}}};var Ir=(e)=>I(()=>e.ref.current);var Br=t(2,(e,n)=>I(()=>{e.ref.current=n(e.ref.current)}));var qe="~effect/http/HttpBody";var Dr="~effect/http/HttpBody/HttpBodyError";class ze extends D("HttpBodyError"){[Dr]=Dr}class Mt{[qe];constructor(){this[qe]=qe}[N](){return this.toJSON()}toString(){return f(this,{ignoreToString:!0})}}class vr extends Mt{_tag="Empty";toJSON(){return{_id:"effect/HttpBody",_tag:"Empty"}}}var kt=new vr;class Jr extends Mt{_tag="Raw";body;contentType;contentLength;constructor(e,n,p){super();this.body=e,this.contentType=n,this.contentLength=p}toJSON(){return{_id:"effect/HttpBody",_tag:"Raw",body:this.body,contentType:this.contentType,contentLength:this.contentLength}}}var jr=(e,n)=>new Jr(e,n?.contentType,n?.contentLength);class me extends Mt{_tag="Uint8Array";contentType;contentLength;text;_body;constructor(e,n,p,d){super();this._body=e,this.text=d,this.contentType=n,this.contentLength=p}get body(){return this._body??=Un(this.text)}toJSON(){return{_id:"effect/HttpBody",_tag:"Uint8Array",body:this.contentType.startsWith("text/")||this.contentType.endsWith("json")?new TextDecoder().decode(this.body):`Uint8Array(${this.body.length})`,contentType:this.contentType,contentLength:this.contentLength}}}var ye=(e,n)=>new me(e,n??"application/octet-stream",e.length),zr=new TextEncoder,le=globalThis.Buffer,Un=le!==void 0?(e)=>le.from(e,"utf8"):(e)=>zr.encode(e),Yt=(e,n)=>{if(typeof e!=="string")e=e===void 0?"":String(e);if(le!==void 0)return new me(void 0,n??"text/plain",le.byteLength(e,"utf8"),e);let p=zr.encode(e);return new me(p,n??"text/plain",p.length,e)},Gr=(e,n)=>Yt(JSON.stringify(e),n??"application/json"),Ge=(e,n)=>j({try:()=>Yt(JSON.stringify(e),n??"application/json"),catch:(p)=>new ze({reason:{_tag:"JsonError"},cause:p})}),Vr=(e,n)=>{let p=Bt(un(e));return(d,m)=>p(d,n).pipe(st((l)=>new ze({reason:{_tag:"SchemaError",issue:l},cause:l})),u((l)=>Ge(l,m)))},Zr=(e,n)=>Yt(ia(it(e)),n??"application/x-www-form-urlencoded");class Kr extends Mt{_tag="FormData";contentType=void 0;contentLength=void 0;formData;constructor(e){super();this.formData=e}toJSON(){return{_id:"effect/HttpBody",_tag:"FormData",formData:this.formData}}}var Qe=(e)=>new Kr(e),kr=(e,n,p)=>{if(p==null)return;if(typeof p==="object"){e.append(n,p);return}e.append(n,String(p))},Xr=(e)=>{let n=new globalThis.FormData;for(let[p,d]of Object.entries(e))if(Array.isArray(d))for(let m of d)kr(n,p,m);else kr(n,p,d);return Qe(n)};class to extends Mt{_tag="Stream";stream;contentType;contentLength;constructor(e,n,p){super();this.stream=e,this.contentType=n,this.contentLength=p}toJSON(){return{_id:"effect/HttpBody",_tag:"Stream",contentType:this.contentType,contentLength:this.contentLength}}}var Kt=(e,n,p)=>new to(e,n??"application/octet-stream",p),Fr=(e,n,p)=>{let d=qr(e);return U(d)?r(d.value):o(ct({module:"HttpBody",method:p,description:`Invalid ${n}: ${e}`}))},On=de(function*(e,n,p){let d=p?.offset===void 0?Gi:yield*Fr(p.offset,"offset",n),m=p?.bytesToRead===void 0?void 0:yield*Fr(p.bytesToRead,"bytesToRead",n),l=d>=e?BigInt("0"):e-d,x=m===void 0||m>l?l:m;if(x>BigInt(Number.MAX_SAFE_INTEGER))return yield*o(ct({module:"HttpBody",method:n,description:`Content length exceeds Number.MAX_SAFE_INTEGER: ${x}`}));return Number(x)}),eo=(e,n)=>u(yt,(p)=>u(p.stat(e),(d)=>h(On(d.size,"file",n),(m)=>Kt(p.stream(e,n),n?.contentType,m))));var be="~effect/http/HttpClientError",_t=(e)=>s(e,be);class ae extends D("HttpClientError"){constructor(e){if("cause"in e.reason)super({...e,cause:e.reason.cause});else super(e)}[be]=be;get request(){return this.reason.request}get response(){return"response"in this.reason?this.reason.response:void 0}get message(){return this.reason.message}}var Ft=(e)=>e.endsWith("Error")?e.slice(0,-5):e,vt=(e,n,p)=>n?`${e}: ${n} (${p})`:`${e} error (${p})`,qt=(e)=>`${e.method} ${an(e.url)}`,Wt=(e,n)=>({...n,request:{_id:"HttpClientRequest",method:e.request.method,url:an(e.request.url)},..."response"in e?{response:{_id:"HttpClientResponse",status:e.response.status}}:void 0});class Ct extends D("TransportError"){get methodAndUrl(){return qt(this.request)}get message(){return vt(Ft(this._tag),this.description,this.methodAndUrl)}toJSON(){return Wt(this,super.toJSON())}}class Xt extends D("EncodeError"){get methodAndUrl(){return qt(this.request)}get message(){return vt(Ft(this._tag),this.description,this.methodAndUrl)}toJSON(){return Wt(this,super.toJSON())}}class He extends D("InvalidUrlError"){get methodAndUrl(){return qt(this.request)}get message(){return vt(Ft(this._tag),this.description,this.methodAndUrl)}toJSON(){return Wt(this,super.toJSON())}}class Et extends D("StatusCodeError"){get methodAndUrl(){return qt(this.request)}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return vt(Ft(this._tag),this.description,e)}toJSON(){return Wt(this,super.toJSON())}}class xt extends D("DecodeError"){get methodAndUrl(){return qt(this.request)}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return vt(Ft(this._tag),this.description,e)}toJSON(){return Wt(this,super.toJSON())}}class Ce extends D("EmptyBodyError"){get methodAndUrl(){return qt(this.request)}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return vt(Ft(this._tag),this.description,e)}toJSON(){return Wt(this,super.toJSON())}}class Ze extends zo(be)({_tag:Ye("HttpError"),kind:M(["EncodeError","DecodeError","TransportError","InvalidUrlError","StatusCodeError","EmptyBodyError"]),cause:g(Yr())}){static fromHttpClientError(e){return new Ze({_tag:"HttpError",kind:e.reason._tag,cause:e.reason})}}function Xe(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"}var ro=[["GET","get"],["POST","post"],["PUT","put"],["DELETE","del"],["PATCH","patch"],["HEAD","head"],["OPTIONS","options"],["TRACE","trace"],["QUERY","query"]];var no=(e)=>(n)=>n.pipeThrough(new CompressionStream(e)),Bn=(e)=>new ReadableStream({start(n){n.enqueue(e),n.close()}}),so=(e,n,p)=>{if(e._tag!=="Uint8Array"&&e._tag!=="Stream")return r(e);if(e.contentLength!==void 0&&e.contentLength<(p?.minSize??1024))return r(e);if(e._tag==="Uint8Array")return h(ft(()=>new globalThis.Response(no(n)(Bn(e.body))).arrayBuffer()),(d)=>ye(new Uint8Array(d),e.contentType));return r(Kt(Wo({evaluate:()=>no(n)(xa(e.stream)),onError:c}),e.contentType))};var ao=(e,n)=>{if(n._tag==="Empty"||n._tag==="FormData")return jt(jt(e,"content-type"),"content-length");return e=n.contentType===void 0?jt(e,"content-type"):on(e,"content-type",n.contentType),tr(e,n)},tr=(e,n)=>{let p=n._tag==="Empty"||n._tag==="FormData"?void 0:n.contentLength;return p===void 0?jt(e,"content-length"):on(e,"content-length",p.toString())},io=(e)=>{if(e===null||e===void 0||!/^\d+$/.test(e))return;let n=Number(e);return Number.isSafeInteger(n)?n:void 0};class Ue extends D("UrlError"){}var re=(e,n,p)=>Ke({try:()=>{let d=new URL(e,Ln());for(let m=0;m<n.params.length;m++){let[l,x]=n.params[m];if(x!==void 0)d.searchParams.append(l,sn(x))}if(p!==void 0)d.hash=p;return d},catch:(d)=>new Ue({cause:d})}),Ln=()=>{if("location"in globalThis&&globalThis.location!==void 0&&globalThis.location.origin!==void 0&&globalThis.location.pathname!==void 0){let e=location.origin+location.pathname;try{return new URL(e).href}catch{return}}return},uo=(e,n)=>Ke({try:()=>new URL(e,n),catch:()=>new vn(`Invalid URL: "${e}"${n!==void 0?` with base "${n}"`:""}`)});var nr="~effect/http/HttpClientRequest",zt=(e)=>s(e,nr),qn={[nr]:nr,...te,toJSON(){return{_id:"HttpClientRequest",method:this.method,url:an(this.url),urlParams:this.urlParams,hash:this.hash,headers:Me(this.headers),body:this.body.toJSON()}},pipe(){return C(this,arguments)}};function _(e,n,p,d,m,l){let x=Object.create(qn);return x.method=e,x.url=n,x.urlParams=p,x.hash=d,x.headers=m,x.body=l,x}var go=_("GET","",Wr,i(),Do,kt),Z=(e)=>(n,p)=>sr(go,{method:e,url:n,...p??void 0}),Us=Z("GET"),Jn=Z("QUERY"),Ti=Z("POST"),Wn=Z("PATCH"),$n=Z("PUT"),jn=Z("DELETE");var zn=Z("HEAD"),Qn=Z("OPTIONS"),Yn=Z("TRACE"),sr=t(2,(e,n)=>{let p=e;if(n.method)p=Pe(p,n.method);if(n.url)p=xo(p,n.url);if(n.headers)p=hn(p,n.headers);if(n.urlParams)p=bo(p,n.urlParams);if(n.hash)p=Ho(p,n.hash);if(n.body)p=W(p,n.body);if(n.accept)p=ar(p,n.accept);if(n.acceptJson)p=Er(p);return p}),Pe=t(2,(e,n)=>_(n,e.url,e.urlParams,e.hash,e.headers,e.body)),Gt=t(3,(e,n,p)=>_(e.method,e.url,e.urlParams,e.hash,on(e.headers,n,p),e.body)),hn=t(2,(e,n)=>_(e.method,e.url,e.urlParams,e.hash,Qi(e.headers,n),e.body)),Eo=t(2,(e,n)=>_(e.method,e.url,e.urlParams,e.hash,n(e.headers),e.body)),St=t(2,(e,n)=>Eo(e,jt(n))),Zn=t(3,(e,n,p)=>Gt(e,"Authorization",`Basic ${ht(`${Fo(n)}:${Fo(p)}`)}`)),Oi=t(2,(e,n)=>Gt(e,"Authorization",`Bearer ${Fo(n)}`)),ar=t(2,(e,n)=>Gt(e,"Accept",n)),Er=ar("application/json"),Kn=t(2,(e,n)=>_(e.method,e.url,e.urlParams,e.hash,on(on(e.headers,"connection","Upgrade"),"upgrade",n),e.body)),xo=t(2,(e,n)=>{if(typeof n==="string")return _(e.method,n,e.urlParams,e.hash,e.headers,e.body);let p=new URL(n.toString()),d=it(p.searchParams),m=Fe(p.hash===""?void 0:p.hash.slice(1));return p.search="",p.hash="",_(e.method,p.toString(),d,m,e.headers,e.body)}),ts=t(2,(e,n)=>{if(n==="")return e;return _(e.method,So(n,e.url),e.urlParams,e.hash,e.headers,e.body)}),es=t(2,(e,n)=>{if(n==="")return e;return _(e.method,So(e.url,n),e.urlParams,e.hash,e.headers,e.body)}),So=(e,n)=>{let p=e.endsWith("/"),d=n.startsWith("/");return p&&d?e+n.slice(1):!p&&!d?e+"/"+n:e+n},rs=t(2,(e,n)=>_(e.method,n(e.url),e.urlParams,e.hash,e.headers,e.body)),os=t(3,(e,n,p)=>_(e.method,e.url,na(e.urlParams,n,p),e.hash,e.headers,e.body)),bo=t(2,(e,n)=>_(e.method,e.url,ra(e.urlParams,n),e.hash,e.headers,e.body)),ns=t(3,(e,n,p)=>_(e.method,e.url,oa(e.urlParams,n,p),e.hash,e.headers,e.body)),ss=t(2,(e,n)=>_(e.method,e.url,sa(e.urlParams,n),e.hash,e.headers,e.body)),Ho=t(2,(e,n)=>_(e.method,e.url,e.urlParams,a(n),e.headers,e.body)),as=(e)=>_(e.method,e.url,e.urlParams,i(),e.headers,e.body),W=t(2,(e,n)=>_(e.method,e.url,e.urlParams,e.hash,ao(e.headers,n),n)),is=t((e)=>zt(e[0]),(e,n,p)=>{if(e.headers["content-encoding"]!==void 0)return r(e);return h(so(e.body,n,p),(d)=>d===e.body?e:_(e.method,e.url,e.urlParams,e.hash,on(tr(e.headers,d),"content-encoding",n),d))}),cs=t((e)=>zt(e[0]),(e,n,p)=>W(e,ye(n,p))),ps=t((e)=>zt(e[0]),(e,n,p)=>W(e,Yt(n,p))),fs=t(2,(e,n)=>h(Ge(n),(p)=>W(e,p))),_i=t(2,(e,n)=>W(e,Gr(n))),us=(e,n)=>{let p=Vr(e,n);return t(2,(d,m)=>h(p(m),(l)=>W(d,l)))},ds=t(2,(e,n)=>W(e,Zr(it(n)))),ms=t(2,(e,n)=>W(e,Qe(n))),ls=t(2,(e,n)=>W(e,Xr(n))),hs=t((e)=>zt(e[0]),(e,n,p)=>W(e,Kt(n,p?.contentType,p?.contentLength))),gs=t((e)=>zt(e[0]),(e,n,p)=>h(eo(n,p),(d)=>W(e,d)));function ne(e){let n=re(e.url,e.urlParams,L(e.hash));if(P(n))return a(n.success);return i()}var Es=(e)=>{let n=e.method.toUpperCase();return sr(_(n,"",Wr,i(),Do,kt),{url:new URL(e.url),headers:e.headers,body:ys(e,n)})},ys=(e,n)=>{if(!Xe(n)||e.body===null)return kt;return jr(e.body,{contentType:e.headers.get("content-type")??void 0,contentLength:io(e.headers.get("content-length"))})},Co=(e,n)=>{let p=re(e.url,e.urlParams,L(e.hash));if(E(p))return b(p.failure);let d={method:e.method,headers:e.headers};if(n?.signal)d.signal=n.signal;if(Xe(e.method))switch(e.body._tag){case"Empty":break;case"Raw":{if(d.body=e.body.body,xs(e.body.body))d.duplex="half";break}case"Uint8Array":{d.body=e.body.body;break}case"FormData":{d.body=e.body.formData;break}case"Stream":{d.body=Jo(e.body.stream,n?.context??pe()),d.duplex="half";break}}return Ke({try:()=>new Request(p.success,d),catch:(m)=>new Ue({cause:m})})},xs=(e)=>typeof ReadableStream<"u"&&e instanceof ReadableStream,Ss=(e,n)=>er((p)=>An(Co(e,{context:p,signal:n?.signal})));var Tt="~effect/http/HttpIncomingMessage";var tt=(e,n)=>{let p=cn(un(e)),d=n?.reviver===void 0?void 0:cn(G(un(e),n));return(m)=>d===void 0?u(m.json,(l)=>p(l,n)):u(m.text,(l)=>l===""?u(m.json,(x)=>p(x,n)):d(l,n))},Ro=(e,n)=>{let p=hi.pipe(y(e),cn);return(d)=>u(d.urlParamsBody,(m)=>p(m,n))},Po=(e,n)=>{let p=rr(e);return(d)=>p(d.headers,n)};var Bo=(e,n)=>({...n,headers:Me(e.headers),remoteAddress:e.remoteAddress});var Ie="~effect/http/HttpClientResponse/WebSource",Be=(e)=>e["~effect/http/HttpClientResponse/WebSource"]?.();var bt="~effect/http/HttpClientResponse",cr=(e,n)=>new ko(e,n),bs=(e)=>Cr(Be(e)),Hs=(e,n)=>{let p=cn(un(e),n),d=tt(B,n);return(m)=>u(d(m),(l)=>p({status:m.status,headers:m.headers,body:l}))},Cs=(e,n)=>{let p=cn(e,n);return(d)=>p({status:d.status,headers:d.headers})},Rs=(e)=>Dn(h(e,(n)=>n.stream)),Ts=t(2,(e,n)=>{let p=e.status;if(n[p])return n[p](e);else if(p>=200&&p<300&&n["2xx"])return n["2xx"](e);else if(p>=300&&p<400&&n["3xx"])return n["3xx"](e);else if(p>=400&&p<500&&n["4xx"])return n["4xx"](e);else if(p>=500&&p<600&&n["5xx"])return n["5xx"](e);return n.orElse(e)}),pr=t(2,(e,n)=>O(()=>n(e.status)?r(e):o(new ae({reason:new Et({response:e,request:e.request,description:"invalid status code"})})))),gn=(e)=>e.status>=200&&e.status<300?r(e):o(new ae({reason:new Et({response:e,request:e.request,description:"non 2xx status code"})}));class ko extends zs{[Tt];[bt];request;source;constructor(e,n){super();this.request=e,this.source=n,this[Tt]=Tt,this[bt]=bt}toJSON(){return Bo(this,{_id:"HttpClientResponse",request:this.request.toJSON(),status:this.status})}get status(){return this.source.status}get url(){if(this.source.url)return this.source.url.split("#")[0];let e=ne(this.request);if(A(e))return"";return e.value.hash="",e.value.href}get headers(){return Pn(this.source.headers)}cachedCookies;get cookies(){if(this.cachedCookies)return this.cachedCookies;return this.cachedCookies=No(this.source.headers.getSetCookie?.()??[])}get remoteAddress(){return i()}[Ie](){return this.source}get stream(){return this.source.body?Wo({evaluate:()=>this.source.body,onError:(e)=>new ae({reason:new xt({request:this.request,response:this,cause:e})})}):Qr(new ae({reason:new Ce({request:this.request,response:this,description:"can not create stream from empty body"})}))}get json(){return u(this.text,(e)=>j({try:()=>e===""?null:JSON.parse(e),catch:(n)=>new ae({reason:new xt({request:this.request,response:this,cause:n})})}))}textBody;get text(){return this.textBody??=h(this.arrayBuffer,(e)=>new TextDecoder().decode(e))}get urlParamsBody(){return u(this.arrayBuffer,(e)=>j({try:()=>it(ta(e)),catch:(n)=>new ae({reason:new xt({request:this.request,response:this,cause:n})})}))}formDataBody;get formData(){return this.formDataBody??=xe({try:()=>this.source.formData(),catch:(e)=>new ae({reason:new xt({request:this.request,response:this,cause:e})})}).pipe(To,Oe)}arrayBufferBody;get arrayBuffer(){if(this.arrayBufferBody)return this.arrayBufferBody;return this.arrayBufferBody=xe({try:()=>this.source.arrayBuffer(),catch:(e)=>new ae({reason:new xt({request:this.request,response:this,cause:e})})}).pipe(To,Oe),this.arrayBufferBody}get upgrade(){return o(new ae({reason:new Et({request:this.request,response:this,description:"fetch cannot hand over the connection of an HTTP upgrade"})}))}pipe(){return C(this,arguments)}}var qo=(e)=>Yi({b3:`${e.traceId}-${e.spanId}-${e.sampled?"1":"0"}${z(e.parent,{onNone:()=>"",onSome:(n)=>`-${n.spanId}`})}`,traceparent:`00-${e.traceId.padStart(32,"0")}-${e.spanId}-${e.sampled?"01":"00"}`});var ws={"http:":80,"https:":443,"ws:":80,"wss:":443},Go=(e,n,p)=>{let d=an(n.search,p).slice(1);if(e.attribute("url.full",an(n.href,p)),e.attribute("url.path",n.pathname),d!=="")e.attribute("url.query",d);if(e.attribute("url.scheme",n.protocol.slice(0,-1)),n.hostname!==""){e.attribute("server.address",n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname);let m=n.port===""?ws[n.protocol]:Number(n.port);if(m!==void 0)e.attribute("server.port",m)}},Vo=(e,n)=>{let p=e.params.filter(([,d])=>typeof d!=="string").map(([d])=>d);return p.length===0?n:[...n,...new URLSearchParams(p.map((d)=>[d,""])).keys()]},fr=(e,n,p,d,m)=>{for(let l in p){if(!d(l,n))continue;e.attribute(`http.${n}.header.${l}`,Lo(l,m)?"<redacted>":p[l])}};var dr="~effect/http/HttpClient",Yo=(e)=>s(e,dr),Re=F("effect/HttpClient"),ut=(e)=>(...n)=>u(Re,(p)=>p[e](...n)),Is=ut("execute"),Os=ut("get"),Bs=ut("query"),As=ut("head"),Ds=ut("post"),Ms=ut("patch"),ks=ut("put"),_s=ut("del"),Fs=ut("options"),ce=t(2,(e,n)=>rt(u((p)=>n(e.postprocess(r(p)),p)),e.preprocess)),$e=t(2,(e,n)=>rt((p)=>n(e.postprocess(p)),e.preprocess)),Ns=t(2,(e,n)=>$e(e,ot(n)));var Ls=t(3,(e,n,p)=>$e(e,(d)=>Rr(d,n,p))),vs=t(2,(e,n)=>$e(e,Ys(n))),qs=t(3,(e,n,p)=>$e(e,Xs(n,p))),Js=t(3,(e,n,p)=>$e(e,ei(n,p))),Ws=t(2,(e,n)=>$e(e,u(pr(n)))),Ri=$e(u(gn)),rt=(e,n)=>{let p=Object.create(js);return p.preprocess=n,p.postprocess=e,p.execute=function(d){return e(n(d))},p},js={[dr]:dr,pipe(){return C(this,arguments)},...te,toJSON(){return{_id:"effect/HttpClient"}},...Object.fromEntries(ro.map(([e,n])=>[n,function(p,d){return this.execute(Z(e)(p,d))}]))},gr=(e)=>rt((n)=>u(n,(p)=>Pr((d)=>{let m=De.get(p),l=m??new AbortController,x=re(p.url,p.urlParams,L(p.hash));if(E(x))return o(new ae({reason:new He({request:p,cause:x.failure})}));let H=x.success;if(d.getRef(Vn)||d.getRef(pn)(p)){let R=e(p,H,l.signal,d);if(m)return h(R,(w)=>ur(w,l,!0));return $t((w)=>tn(w(R),{onSuccess(S){return r(ur(S,l,!1))},onFailure(S){if(vo(S))l.abort();return dt(S)}}))}return ii(d.getRef(mn)(p),{kind:"client"},(R)=>{R.attribute("http.request.method",p.method);let w=d.getRef(pi);Go(R,H,Vo(p.urlParams,d.getRef($o)));let S=d.getRef(fn);return fr(R,"request",p.headers,S,w),p=d.getRef(dn)?hn(p,qo(R)):p,$t((V)=>V(e(p,H,l.signal,d)).pipe(ai(R,{captureStackTrace:!1}),tn({onSuccess:(v)=>{if(R.attribute("http.response.status_code",v.status),fr(R,"response",v.headers,S,w),v.status>=400&&v.status<600)R.attribute("error.type",String(v.status)),Gs(d,R,p,v);return r(ur(v,l,m!==void 0))},onFailure(v){if(!m&&vo(v))l.abort();return dt(v)}})))})})),r),Gs=(e,n,p,d)=>{let m=Ne();oe(0);let l;try{l=Dt(new ae({reason:new Et({request:p,response:d})}))}finally{oe(m)}n.end(e.getRef(qi)?e.getRef(Tr).currentTimeNanosUnsafe():BigInt(0),l)},Mi=t(2,(e,n)=>rt(e.postprocess,(p)=>h(e.preprocess(p),n))),Zs=t(2,(e,n)=>rt(e.postprocess,(p)=>u(e.preprocess(p),n))),Ks=t(2,(e,n)=>rt(e.postprocess,(p)=>e.preprocess(n(p)))),aa=t(2,(e,n)=>rt(e.postprocess,(p)=>u(n(p),e.preprocess))),ca=t(2,(e,n)=>$e(e,Ao(n))),pa=t(2,(e,n)=>{let p=Or(n),d=p?"errors-and-responses":n.retryOn??"errors-and-responses",m=Aa(p?n:n.schedule??_r),l=p?void 0:n.times;return $e(e,yo(d==="errors-only"?c:si({schedule:m,times:l,while:xr}),d==="response-only"?c:Ao({while:p||n.while===void 0?lr:ji(lr,n.while),schedule:m,times:l})))}),fa=t(2,(e,n)=>{let p=K(n),d=`timed out after ${Gn(p)}`;return ce(e,(m,l)=>Qs(m,{duration:p,orElse:()=>o(new ae({reason:new Ct({request:l,cause:new Vs(`Operation ${d}`),description:d})}))}))}),ua=t(2,(e,n)=>{let p={initial:!0,limit:n.limit,window:Nt(K(n.window),ge(1))},d=new Map,m=n.key,l=typeof m==="function"?m:ee(m),x=n.tokens,H=typeof x==="function"?x:ee(x??1),Y=!n.disableAdaptiveLearning,R=ba(n.responseHeaders),w=(Q)=>{let q=d.get(Q);if(q!==void 0)return q;return d.set(Q,p),p},S=new Map,V=(Q)=>{let q=S.get(Q);if(q===void 0)q={sent:0,observed:0,remaining:0,resetAt:0},S.set(Q,q);return q},v=n.disableResponseInspection?void 0:(Q,q,at,wt,_e)=>{let lt=w(q),nt=Ha(lt,Q,at,wt,R);if(nt.limit!==lt.limit||!Ar(nt.window,lt.window))d.set(q,nt);let pt=en(at,R),X=V(q);if(pt===void 0||_e<=X.observed)return;let Vt=mr(Q,at,R);if(X.observed=_e,X.remaining=pt,Vt!==void 0)X.resetAt=Q.currentTimeMillisUnsafe()+Ee(Vt)};return ce(e,function Q(q,at,wt=0){let lt=$r().getRef(Tr),nt=l(at),pt=Math.max(H(at),1),X=V(nt),Vt=lt.currentTimeMillisUnsafe();if(X.resetAt>Vt&&X.remaining-(X.sent-X.observed)<pt)return u(Ut(X.resetAt-Vt),()=>Q(q,at,wt));let Rn=X.sent+=pt,ue=w(nt),Sr=n.times===void 0||wt<n.times;function br(et){return et?u(Ut(et),()=>Q(q,at,wt+1)):Q(q,at,wt+1)}let Hr=(et,Ot)=>{if(v?.(lt,nt,et.headers,pt,Rn),n.disableResponseInspection||et.status!==429)return r(void 0);let Qt=nn(lt.currentTimeMillisUnsafe(),ie(et.headers,...R.retryAfter));if(Qt===void 0)return r(void 0);let J=mr(lt,et.headers,R)??Qt;if(Ot===void 0)return r(J);return mt(n.limiter.adaptiveFeedback({key:nt,epoch:Ot.epoch,tokens:pt,status:et.status,retryAfter:J}),J)};return u(n.limiter.consume({algorithm:n.algorithm,onExceeded:"delay",key:nt,limit:ue.limit,window:ue.window,tokens:pt}),({delay:et})=>{let Ot=()=>{let Qt=(J)=>{let Ur=Xn(q,{onSuccess(gt){return u(Hr(gt,J),(Le)=>{if(gt.status!==429||!Sr)return r(gt);return br(Le)})},onFailure(gt){if(Da(gt))return u(Hr(gt.reason.response,J),(Le)=>Sr?br(Le):o(gt));return o(gt)}});return J===void 0||bn(J.delay)?Ur:Io(Ur,J.delay)};if(!Y)return Qt(void 0);return u(n.limiter.adaptiveConsume({key:nt,tokens:pt,fallbackLimit:ue.limit,fallbackWindow:ue.window}),(J)=>{if(!bn(J.delay)&&J.phase==="cooldown")return u(Ut(J.delay),Ot);return Qt(J)})};return bn(et)?Ot():u(Ut(et),Ot)})})}),da=t(2,(e,n)=>{let p=n.key,d=typeof p==="function"?p:p===void 0?la:ee(p),m=n.classify??Zo;return ce(e,(l,x)=>n.breaker.execute(l,{key:d(x),classify:m}))}),la=(e)=>z(ne(e),{onNone:()=>e.url,onSome:(n)=>n.origin}),Zo=(e)=>Lr((n)=>r(Ea(e,n.currentTimeMillisUnsafe()))),Ea=(e,n)=>{if(fe(e)){let l=Xo(e.value.status);return l==="Failure"?Qo(hr(e.value,n)):{_tag:l}}let p=!1,d=!1,m;for(let l of e.cause.reasons){if(!Sn(l))continue;let x=Sa(l.error);if(x==="Failure"){p=!0;let H=hr(l.error,n);if(H!==void 0)m=m===void 0?H:Nt(m,H)}else if(x==="Success")d=!0}return p?Qo(m):{_tag:d?"Success":"Ignored"}},Qo=(e)=>({_tag:"Failure",retryAfter:e}),Sa=(e)=>{if(wo(e))return"Failure";if(!_t(e))return"Ignored";switch(e.reason._tag){case"TransportError":return"Failure";case"StatusCodeError":return Xo(e.reason.response.status);default:return"Ignored"}},Xo=(e)=>e===429?"Ignored":e===408||e===500||e===502||e===503||e===504?"Failure":"Success",ba=(e)=>({limit:e?.limit===void 0?["ratelimit-limit","x-ratelimit-limit"]:[e.limit.toLowerCase()],remaining:e?.remaining===void 0?["ratelimit-remaining","x-ratelimit-remaining"]:[e.remaining.toLowerCase()],reset:e?.reset===void 0?["ratelimit-reset","x-ratelimit-reset"]:[e.reset.toLowerCase()],resetAfter:e?.resetAfter===void 0?["ratelimit-reset-after","x-ratelimit-reset-after"]:[e.resetAfter.toLowerCase()],retryAfter:e?.retryAfter===void 0?["retry-after"]:[e.retryAfter.toLowerCase()]}),Ha=(e,n,p,d,m)=>{let l=Ca(e,p,d,m)??e.limit,x=mr(n,p,m)??e.window;if(l===e.limit&&Ar(x,e.window))return e;return{limit:l,window:x,initial:!1}},Ca=(e,n,p,d)=>{let m=ie(n,...d.limit),l=ke(m);if(l!==void 0&&l>0)return l;let x=en(n,d);if(x===void 0)return;return e.initial?x+p:Math.max(x+p,e.limit)},en=(e,n)=>{let p=ie(e,...n.remaining),d=ke(p);return d!==void 0&&d>=0?d:void 0},mr=(e,n,p)=>{let d=Ra(ie(n,...p.resetAfter));if(d!==void 0)return d;return Ta(e,ie(n,...p.reset))},nn=(e,n)=>{if(n===void 0)return;let p=Uo(n);return P(p)?Nt(ea(p.success,e),ge(1)):void 0},Ra=(e)=>{let n=ke(e);if(n===void 0||n<=0)return;return Nt(we(n),ge(1))},Ta=(e,n)=>{let p=ke(n);if(p===void 0||p<=0)return;let d=e.currentTimeMillisUnsafe();if(p>1000000000000)return ge(Math.max(p-d,1));if(p>1e9)return ge(Math.max(p*1000-d,1));return Nt(we(p),ge(1))},ke=(e)=>{if(e===void 0)return;let n=/-?\d+(?:\.\d+)?/.exec(e);if(n===null)return;let p=Number(n[0]);return Number.isFinite(p)?p:void 0},ie=(e,...n)=>{for(let p=0;p<n.length;p++){let d=e[n[p]];if(d!==void 0)return d}return},wa=t(2,(e,n)=>$e(e,Ve(n))),Ua=t(2,(e,n)=>$e(e,Mr(n))),Pa=t(2,(e,n)=>rt(e.postprocess,(p)=>Ve(e.preprocess(p),n))),Ia=t(2,(e,n)=>{let p=()=>$r().getRef(Tr).currentTimeMillisUnsafe(),d=(m)=>h(Ir(n),(l)=>{let x=Zi(l,m.url,p());if(x===void 0)return m;let H=Gt(m,"cookie",x),Y=De.get(m);if(Y!==void 0)De.set(H,Y);return H});return rt((m)=>Ve(e.postprocess(u(m,d)),(l)=>Br(n,Vi(l.url,l.cookies,p()))),e.preprocess)}),Ni=(e)=>ce(e,(n,p)=>{let d=new AbortController;return De.set(p,d),In(oi(()=>I(()=>d.abort())),n)}),Oa=t((e)=>Yo(e[0]),(e,n)=>rt((p)=>{let d=(m,l)=>O(()=>{let x;return u(e.postprocess(h(m,(H)=>(x=H,H))),(H)=>{if(H.status<300||H.status>=400||!H.headers.location||l>=(n??10))return r(H);let Y=uo(H.headers.location,H.request.url);if(E(Y))return r(H);let R=Y.success,w=x??H.request,S=w;if((H.status===301||H.status===302)&&w.method==="POST"||H.status===303&&w.method!=="GET"&&w.method!=="HEAD")S=Pe(S,"GET"),S=W(S,kt),S=St(S,"content-encoding"),S=St(S,"content-language"),S=St(S,"content-location");if(R.origin!==new URL(H.request.url).origin)S=St(S,"authorization"),S=St(S,"proxy-authorization"),S=St(S,"cookie");let V=R.hash===""?i():a(R.hash.slice(1));return R.hash="",S=_(S.method,R.href,Wr,V,S.headers,S.body),In(I(()=>ln.get(H)?.abort()),d(r(S),l+1))})});return d(p,0)},e.preprocess)),pn=T("effect/http/HttpClient/TracerDisabledWhen",{defaultValue:()=>Jt}),fn=T("effect/http/HttpClient/TracerHeaderFilter",{defaultValue:()=>Jt}),dn=T("effect/http/HttpClient/TracerPropagationEnabled",{defaultValue:je}),mn=T("effect/http/HttpClient/SpanNameGenerator",{defaultValue:()=>(e)=>e.method}),yr=(e)=>se(Re)(er((n)=>h(e,(p)=>$e(p,ti((d)=>Zt(n,d)))))),Ae=(()=>{if("FinalizationRegistry"in globalThis&&globalThis.FinalizationRegistry){let n=new FinalizationRegistry((p)=>{try{p.abort()}catch{}});return{register(p,d){n.register(p,d,p)},unregister(p){n.unregister(p)}}}let e=new WeakMap;return{register(n,p){e.set(n,setTimeout(()=>p.abort(),5000))},unregister(n){let p=e.get(n);if(p===void 0)return;clearTimeout(p),e.delete(n)}}})(),De=new WeakMap,ln=new WeakMap,ur=(e,n,p)=>{if(!p)Ae.register(e,n),e=new xn(e,n);return ln.set(e,n),e};class xn{original;controller;constructor(e,n){this.original=e,this.controller=n}[bt]=bt;[Tt]=Tt;applyInterrupt(e){return O(()=>(Ae.unregister(this.original),_o(e,()=>I(()=>{this.controller.abort()}))))}get request(){return this.original.request}get url(){return this.original.url}get status(){return this.original.status}get headers(){return this.original.headers}get cookies(){return this.original.cookies}get remoteAddress(){return this.original.remoteAddress}get formData(){return this.applyInterrupt(this.original.formData)}get text(){return this.applyInterrupt(this.original.text)}get json(){return this.applyInterrupt(this.original.json)}get urlParamsBody(){return this.applyInterrupt(this.original.urlParamsBody)}get arrayBuffer(){return this.applyInterrupt(this.original.arrayBuffer)}get upgrade(){return this.applyInterrupt(this.original.upgrade)}[Ie](){let e=Be(this.original);if(e!==void 0)Ae.unregister(this.original);return e}get stream(){return ma(()=>(Ae.unregister(this.original),Ko(this.original.stream,I(()=>{this.controller.abort()}))))}toJSON(){return this.original.toJSON()}[N](){return this.original[N]()}pipe(){return C(this,arguments)}}var lr=(e)=>wo(e)||Ba(e),Ba=(e)=>_t(e)&&(e.reason._tag==="TransportError"||e.reason._tag==="StatusCodeError"&&xr(e.reason.response)),hr=(e,n)=>{let p=_t(e)?e.response:s(e,bt)?e:void 0;return nn(n,p?.headers["retry-after"])},Aa=(e)=>En(h(kn(e),(n)=>(p,d)=>{let m=hr(d,p);if(m===void 0)return n(p,d);return h(n(p,d),([l,x])=>[l,Nt(x,m)])})),Da=(e)=>_t(e)&&e.reason._tag==="StatusCodeError"&&e.reason.response.status===429,xr=(e)=>e.status===408||e.status===429||e.status===500||e.status===502||e.status===503||e.status===504;var Pt=T("effect/http/FetchHttpClient/Fetch",{defaultValue:()=>globalThis.fetch}),Cn=T("effect/http/FetchHttpClient/StreamBodyFallback",{defaultValue:()=>"error"});class mo extends F()("effect/http/FetchHttpClient/RequestInit"){}var Hn,Ma=()=>{try{let e=!1,n=new ReadableStream,p=new Request("https://example.com",{method:"POST",body:n,get duplex(){return e=!0,"half"}});return(e||p.body===n)&&!p.headers.has("Content-Type")}catch{return!1}},ka=gr((e,n,p,d)=>{if(e.headers.upgrade!==void 0)return o(new ae({reason:new Ct({request:e,description:"fetch cannot send an HTTP upgrade request"})}));let m=d.getRef(Pt),l=yn(d.context,mo)??{},x=l.headers?Xi(Pn(l.headers),e.headers):e.headers;if(x["content-length"])x=jt(x,"content-length");let H,Y=I(()=>H?.abort()),R=(w)=>h(xe({try:()=>m(n,{...l,method:e.method,headers:x,body:w,duplex:typeof ReadableStream<"u"&&w instanceof ReadableStream?"half":void 0,signal:H?AbortSignal.any([p,H.signal]):p}),catch:(S)=>new ae({reason:new Ct({request:e,cause:S})})}),(S)=>{let V=cr(e,S);if(!H)return V;if(S.body===null)H.abort();return Object.create(V,{...Object.fromEntries(["arrayBuffer","text","json","formData","urlParamsBody"].map((v)=>[v,{get:()=>rn(V[v],Y)}])),stream:{get:()=>Ko(V.stream,Y)}})}).pipe(It(()=>Y));switch(e.body._tag){case"Raw":case"Uint8Array":return R(e.body.body);case"FormData":return R(e.body.formData);case"Stream":{if(Hn??=Ma(),Hn){H=new AbortController;let w=AbortSignal.any([p,H.signal]),S=Lt((V)=>{let v=()=>V(Oo);if(w.aborted){v();return}return w.addEventListener("abort",v,{once:!0}),I(()=>w.removeEventListener("abort",v))});return u(ya(ha(e.body.stream,S)),R)}if(d.getRef(Cn)==="error")return o(new ae({reason:new Xt({request:e,description:"Streaming request bodies are not supported in this runtime"})}));return ga(e.body.stream).pipe(st((w)=>new ae({reason:new Xt({request:e,cause:w})})),u(R))}}return R(void 0)}),ho=yr(r(ka));export{ae,wr,Us,Ti,hn,Oi,Er,_i,po,tt,gn,fo,Re,$e,Ri,Mi,Ni,$s,Pt,mo,ho,Fi};
@@ -0,0 +1,2 @@
1
+ import{zt}from"./chunk-172desm7.js";import{Wt,V,Se,J}from"./chunk-xsr5jd61.js";import{qn}from"./chunk-bfd21777.js";import{k,rt,L,W,g,B,e,H,n,x,l,G}from"./chunk-vf7nj8yg.js";var Es={};k(Es,{Info:()=>Ei,MAX_AGE_MS:()=>wi,WorkspaceSnapshot:()=>Es,clear:()=>ws,instructions:()=>lt,models:()=>ka,policies:()=>ki,read:()=>Ss,servers:()=>et,skills:()=>Ot,stale:()=>gr,workspace:()=>xr,write:()=>vs});var wi=60000,Ei=n({owner:e,organization:g(e),fetched:H,config:g(x(e,B)),instructions:g(l(n({name:e,content:e}))),skills:g(l(n({slug:e,version:e}))),telemetry:g(n({otlpLogsUrl:e,headers:x(e,e)})),status:g(n({message:e,url:g(e)}))}),s=W(G(Ei)),c=x(e,n({models:g(x(e,B))})),f=n({servers:x(e,n({type:e,url:g(e),headers:g(x(e,e))}))});function Ss(o){return L(s(V(Wt(o))??""))}function vs(o,t){Se(Wt(o),JSON.stringify(t))}function ws(o){J(Wt(o))}function gr(o,t){return t-o.fetched>=wi}function ki(o){if(!o)return;let t=o.config;if(!t)return o.status?void 0:[];if(t.policies===void 0)return[];return L(W(zt.Policies)(t.policies))}function xr(o,t){if(!o)return{policies:[]};return{organization:t?.organization??qn(o),policies:ki(t),status:t?.status}}function lt(o){return o?.instructions??[]}function Ot(o){return(o?.skills??[]).filter((t)=>/^[a-z0-9][a-z0-9._-]*$/i.test(t.slug)&&t.slug.toLowerCase()!=="synced")}function et(o){let t=rt(W(f)(o?.config?.mcp),()=>({servers:{}})).servers;return Object.fromEntries(Object.entries(t).flatMap(([i,r])=>r.type==="remote"&&r.url!==void 0?[[i,{url:r.url,headers:r.headers}]]:[]))}function ka(o){let t=o?.config?.providers;if(t===void 0)return 0;return Object.values(rt(W(c)(t),()=>({}))).reduce((i,r)=>i+Object.keys(r.models??{}).length,0)}
2
+ export{wi,Ei,Ss,vs,ws,gr,ki,xr,lt,Ot,et,ka,Es};
@@ -1,2 +1,2 @@
1
- import{k,Mi,Ni,ge,en,Zs}from"./chunk-gxedprvk.js";var Fs={};k(Fs,{ConsoleStore:()=>Fs,credentialFile:()=>gn,ensureDir:()=>Pt,locked:()=>ke,make:()=>vr,modified:()=>Ns,read:()=>J,remove:()=>W,snapshotFile:()=>Kt,syncClaimFile:()=>Ms,unreachable:()=>mo,write:()=>be});import{randomUUID as oe}from"node:crypto";import{chmodSync as ne,mkdirSync as ae,readFileSync as ie,renameSync as se,rmSync as q,statSync as ce,writeFileSync as fe}from"node:fs";import E from"node:path";import _ from"path";import K from"os";import{randomBytes as Y,randomUUID as V}from"crypto";import{mkdir as S,readFile as B,rm as M,stat as z,utimes as Q,writeFile as A}from"fs/promises";import{createHash as C}from"crypto";var x;(function(e){function i(w){return C("sha1").update(w).digest("hex")}e.fast=i;function s(w){return C("sha256").update(w).digest("hex")}e.sha256=s})(x||(x={}));var Hn;(function(e){let i;function s(r){i=r}e.setGlobal=s;let w=()=>{if(!i)throw Error("Flock global not set");return _.join(i.state,"locks")},b={staleMs:60000,timeoutMs:300000,baseDelayMs:100,maxDelayMs:2000};function g(r){if(typeof r!=="object"||r===null||!("code"in r))return;let t=r.code;if(typeof t!=="string")return;return t}function H(r,t){return new Promise((n,c)=>{if(t?.aborted){c(t.reason??Error("Aborted"));return}let a,f=()=>{t?.removeEventListener("abort",o),n()},o=()=>{if(a)clearTimeout(a);t?.removeEventListener("abort",o),c(t?.reason??Error("Aborted"))};t?.addEventListener("abort",o,{once:!0}),a=setTimeout(f,r)})}function F(r){let t=Math.floor(r*0.3),n=Math.floor(Math.random()*(2*t+1))-t;return Math.max(0,r+n)}function N(){return performance.now()}function j(){return performance.timeOrigin+N()}async function v(r){try{return await z(r)}catch(t){let n=g(t);if(n==="ENOENT"||n==="ENOTDIR")return;throw t}}async function I(r,t,n,c){let a=j(),f=await v(t);if(f)return a-f.mtimeMs>c;let o=await v(n);if(o)return a-o.mtimeMs>c;let l=await v(r);if(!l)return!1;return a-l.mtimeMs>c}async function G(r,t){let n=V?.()??Y(16).toString("hex"),c=_.join(r,"meta.json"),a=_.join(r,"heartbeat");try{await S(r,{mode:448})}catch(O){if(g(O)!=="EEXIST")throw O;if(!await I(r,a,c,t.staleMs))return{acquired:!1};let d=r+".breaker";try{await S(d,{mode:448})}catch(u){let p=g(u);if(p==="EEXIST"){let D=await v(d);if(D&&j()-D.mtimeMs>t.staleMs)await M(d,{recursive:!0,force:!0}).catch(()=>{return});return{acquired:!1}}if(p==="ENOENT"||p==="ENOTDIR")return{acquired:!1};throw u}try{if(!await I(r,a,c,t.staleMs))return{acquired:!1};await M(r,{recursive:!0,force:!0});try{await S(r,{mode:448})}catch(u){let p=g(u);if(p==="EEXIST"||p==="ENOTEMPTY")return{acquired:!1};throw u}}finally{await M(d,{recursive:!0,force:!0}).catch(()=>{return})}}let f={token:n,pid:process.pid,hostname:K.hostname(),createdAt:new Date().toISOString()};await A(a,"",{flag:"wx"}).catch(async()=>{throw await M(r,{recursive:!0,force:!0}),Error("Lock acquired but heartbeat already existed (possible compromise).")}),await A(c,JSON.stringify(f,null,2),{flag:"wx"}).catch(async()=>{throw await M(r,{recursive:!0,force:!0}),Error("Lock acquired but meta.json already existed (possible compromise).")});let o;return{acquired:!0,startHeartbeat:(O=Math.max(100,Math.floor(t.staleMs/3)))=>{if(o)return;o=setInterval(()=>{let d=new Date;Q(a,d,d).catch(()=>{return})},O),o.unref?.()},release:async()=>{if(o)clearInterval(o),o=void 0;if((await B(c,"utf8").then((d)=>{let u=JSON.parse(d);if(!u||typeof u!=="object")return{};return{token:"token"in u&&typeof u.token==="string"?u.token:void 0}}).catch((d)=>{let u=g(d);if(u==="ENOENT"||u==="ENOTDIR")throw Error("Refusing to release: lock is compromised (metadata missing).");if(d instanceof SyntaxError)throw Error("Refusing to release: lock is compromised (metadata invalid).");throw d})).token!==n)throw Error("Refusing to release: lock token mismatch (not the owner).");await M(r,{recursive:!0,force:!0})}}}async function X(r,t,n){let c=N()+n.timeoutMs,a=0,f=0,o=n.baseDelayMs;while(!0){t.signal?.throwIfAborted();let l=await G(r,n);if(l.acquired)return l;if(N()>c)throw Error(`Timed out waiting for lock: ${t.key}`);a+=1;let y=F(o);await t.onWait?.({key:t.key,attempt:a,delay:y,waited:f}),await H(y,t.signal),f+=y,o=Math.min(n.maxDelayMs,Math.floor(o*1.7))}}async function T(r,t={}){t.signal?.throwIfAborted();let n={staleMs:t.staleMs??b.staleMs,timeoutMs:t.timeoutMs??b.timeoutMs,baseDelayMs:t.baseDelayMs??b.baseDelayMs,maxDelayMs:t.maxDelayMs??b.maxDelayMs},c=t.dir??w();await S(c,{recursive:!0});let a=_.join(c,x.fast(r)+".lock"),f=await X(a,{key:r,onWait:t.onWait,signal:t.signal},n);f.startHeartbeat();let o=()=>f.release();return{release:o,[Symbol.asyncDispose](){return o()}}}e.acquire=T;async function U(r,t,n={}){let a=[];try{const c=Mi(a,await T(r,n),1);n.signal?.throwIfAborted();return await t()}catch(f){var o=f,l=1}finally{var y=Ni(a,o,l);y&&await y}}e.withLock=U})(Hn||(Hn={}));import P from"os";import m from"path";var h=P.homedir(),Z=process.env.XDG_DATA_HOME||(h?m.join(h,".local","share"):void 0),ee=process.env.XDG_CACHE_HOME||(h?m.join(h,".cache"):void 0),te=process.env.XDG_CONFIG_HOME||(h?m.join(h,".config"):void 0),re=process.env.XDG_STATE_HOME||(h?m.join(h,".local","state"):void 0);function fo(e){return{data:m.join(Z,e),cache:m.join(ee,e),config:m.join(te,e),state:m.join(re,e),tmp:m.join(P.tmpdir(),e)}}function vr(e={}){let i=e.env??{OPENCODE_API_KEY:process.env.OPENCODE_API_KEY,OPENCODE_CONSOLE_SERVER:process.env.OPENCODE_CONSOLE_SERVER};if(e.root)return{data:E.join(e.root,"data"),cache:E.join(e.root,"cache"),env:i};let s=fo("opencode-console");return{data:s.data,cache:s.cache,env:i}}var gn=(e)=>E.join(e.data,"credential.json"),Kt=(e)=>E.join(e.cache,"config.json"),Ms=(e)=>E.join(e.cache,"sync.claim"),ue=30000,R=35000;function ke(e,i){return Zs(ge({try:()=>(Pt(e.data),Pt(E.join(e.data,"locks")),Hn.acquire("credential",{dir:E.join(e.data,"locks"),staleMs:ue,timeoutMs:R})),catch:(s)=>s instanceof Error&&s.message.startsWith("Timed out waiting for lock")?Error(`Timed out after ${R/1000}s waiting for another opencode-console process to update the sign-in`,{cause:s}):s}),()=>i,(s)=>ge(()=>s.release()).pipe(en))}function J(e){try{return ie(e,"utf8")}catch(i){if(L(i)==="ENOENT")return;throw i}}function Ns(e){try{return ce(e,{throwIfNoEntry:!1})?.mtimeMs}catch(i){if(mo(i))return;throw i}}function be(e,i){Pt(E.dirname(e));let s=`${e}.${oe()}.tmp`;fe(s,i,{mode:384,flag:"wx"});try{se(s,e)}catch(w){throw q(s,{force:!0}),w}}function W(e){q(e,{force:!0})}function mo(e){return["ENOENT","ENOTDIR","EACCES","EPERM"].includes(L(e)??"")}function Pt(e){if(ae(e,{recursive:!0,mode:448}),process.platform!=="win32")ne(e,448)}function L(e){return e instanceof Error&&"code"in e&&typeof e.code==="string"?e.code:void 0}
2
- export{Hn,fo,vr,gn,Kt,Ms,ke,J,Ns,be,W,mo,Pt,Fs};
1
+ import{k,Ui,$i,xe,en,ri}from"./chunk-vf7nj8yg.js";var qs={};k(qs,{ConsoleStore:()=>qs,credentialFile:()=>xn,ensureDir:()=>Rt,locked:()=>Ae,make:()=>kr,modified:()=>Bs,read:()=>V,remove:()=>J,snapshotFile:()=>Wt,syncClaimFile:()=>js,unreachable:()=>xo,write:()=>Se});import{randomUUID as oe}from"node:crypto";import{chmodSync as ne,mkdirSync as ae,readFileSync as ie,renameSync as se,rmSync as q,statSync as ce,writeFileSync as fe}from"node:fs";import E from"node:path";import _ from"path";import K from"os";import{randomBytes as W,randomUUID as Y}from"crypto";import{mkdir as S,readFile as B,rm as M,stat as z,utimes as Q,writeFile as A}from"fs/promises";import{createHash as C}from"crypto";var x;(function(e){function i(w){return C("sha1").update(w).digest("hex")}e.fast=i;function s(w){return C("sha256").update(w).digest("hex")}e.sha256=s})(x||(x={}));var Wn;(function(e){let i;function s(r){i=r}e.setGlobal=s;let w=()=>{if(!i)throw Error("Flock global not set");return _.join(i.state,"locks")},b={staleMs:60000,timeoutMs:300000,baseDelayMs:100,maxDelayMs:2000};function g(r){if(typeof r!=="object"||r===null||!("code"in r))return;let t=r.code;if(typeof t!=="string")return;return t}function H(r,t){return new Promise((n,c)=>{if(t?.aborted){c(t.reason??Error("Aborted"));return}let a,f=()=>{t?.removeEventListener("abort",o),n()},o=()=>{if(a)clearTimeout(a);t?.removeEventListener("abort",o),c(t?.reason??Error("Aborted"))};t?.addEventListener("abort",o,{once:!0}),a=setTimeout(f,r)})}function F(r){let t=Math.floor(r*0.3),n=Math.floor(Math.random()*(2*t+1))-t;return Math.max(0,r+n)}function N(){return performance.now()}function j(){return performance.timeOrigin+N()}async function v(r){try{return await z(r)}catch(t){let n=g(t);if(n==="ENOENT"||n==="ENOTDIR")return;throw t}}async function I(r,t,n,c){let a=j(),f=await v(t);if(f)return a-f.mtimeMs>c;let o=await v(n);if(o)return a-o.mtimeMs>c;let l=await v(r);if(!l)return!1;return a-l.mtimeMs>c}async function G(r,t){let n=Y?.()??W(16).toString("hex"),c=_.join(r,"meta.json"),a=_.join(r,"heartbeat");try{await S(r,{mode:448})}catch(O){if(g(O)!=="EEXIST")throw O;if(!await I(r,a,c,t.staleMs))return{acquired:!1};let d=r+".breaker";try{await S(d,{mode:448})}catch(u){let p=g(u);if(p==="EEXIST"){let D=await v(d);if(D&&j()-D.mtimeMs>t.staleMs)await M(d,{recursive:!0,force:!0}).catch(()=>{return});return{acquired:!1}}if(p==="ENOENT"||p==="ENOTDIR")return{acquired:!1};throw u}try{if(!await I(r,a,c,t.staleMs))return{acquired:!1};await M(r,{recursive:!0,force:!0});try{await S(r,{mode:448})}catch(u){let p=g(u);if(p==="EEXIST"||p==="ENOTEMPTY")return{acquired:!1};throw u}}finally{await M(d,{recursive:!0,force:!0}).catch(()=>{return})}}let f={token:n,pid:process.pid,hostname:K.hostname(),createdAt:new Date().toISOString()};await A(a,"",{flag:"wx"}).catch(async()=>{throw await M(r,{recursive:!0,force:!0}),Error("Lock acquired but heartbeat already existed (possible compromise).")}),await A(c,JSON.stringify(f,null,2),{flag:"wx"}).catch(async()=>{throw await M(r,{recursive:!0,force:!0}),Error("Lock acquired but meta.json already existed (possible compromise).")});let o;return{acquired:!0,startHeartbeat:(O=Math.max(100,Math.floor(t.staleMs/3)))=>{if(o)return;o=setInterval(()=>{let d=new Date;Q(a,d,d).catch(()=>{return})},O),o.unref?.()},release:async()=>{if(o)clearInterval(o),o=void 0;if((await B(c,"utf8").then((d)=>{let u=JSON.parse(d);if(!u||typeof u!=="object")return{};return{token:"token"in u&&typeof u.token==="string"?u.token:void 0}}).catch((d)=>{let u=g(d);if(u==="ENOENT"||u==="ENOTDIR")throw Error("Refusing to release: lock is compromised (metadata missing).");if(d instanceof SyntaxError)throw Error("Refusing to release: lock is compromised (metadata invalid).");throw d})).token!==n)throw Error("Refusing to release: lock token mismatch (not the owner).");await M(r,{recursive:!0,force:!0})}}}async function X(r,t,n){let c=N()+n.timeoutMs,a=0,f=0,o=n.baseDelayMs;while(!0){t.signal?.throwIfAborted();let l=await G(r,n);if(l.acquired)return l;if(N()>c)throw Error(`Timed out waiting for lock: ${t.key}`);a+=1;let y=F(o);await t.onWait?.({key:t.key,attempt:a,delay:y,waited:f}),await H(y,t.signal),f+=y,o=Math.min(n.maxDelayMs,Math.floor(o*1.7))}}async function T(r,t={}){t.signal?.throwIfAborted();let n={staleMs:t.staleMs??b.staleMs,timeoutMs:t.timeoutMs??b.timeoutMs,baseDelayMs:t.baseDelayMs??b.baseDelayMs,maxDelayMs:t.maxDelayMs??b.maxDelayMs},c=t.dir??w();await S(c,{recursive:!0});let a=_.join(c,x.fast(r)+".lock"),f=await X(a,{key:r,onWait:t.onWait,signal:t.signal},n);f.startHeartbeat();let o=()=>f.release();return{release:o,[Symbol.asyncDispose](){return o()}}}e.acquire=T;async function U(r,t,n={}){let a=[];try{const c=Ui(a,await T(r,n),1);n.signal?.throwIfAborted();return await t()}catch(f){var o=f,l=1}finally{var y=$i(a,o,l);y&&await y}}e.withLock=U})(Wn||(Wn={}));import P from"os";import m from"path";var h=P.homedir(),Z=process.env.XDG_DATA_HOME||(h?m.join(h,".local","share"):void 0),ee=process.env.XDG_CACHE_HOME||(h?m.join(h,".cache"):void 0),te=process.env.XDG_CONFIG_HOME||(h?m.join(h,".config"):void 0),re=process.env.XDG_STATE_HOME||(h?m.join(h,".local","state"):void 0);function go(e){return{data:m.join(Z,e),cache:m.join(ee,e),config:m.join(te,e),state:m.join(re,e),tmp:m.join(P.tmpdir(),e)}}function kr(e={}){let i=e.env??{OPENCODE_API_KEY:process.env.OPENCODE_API_KEY,OPENCODE_CONSOLE_SERVER:process.env.OPENCODE_CONSOLE_SERVER};if(e.root)return{data:E.join(e.root,"data"),cache:E.join(e.root,"cache"),env:i};let s=go("opencode-console");return{data:s.data,cache:s.cache,env:i}}var xn=(e)=>E.join(e.data,"credential.json"),Wt=(e)=>E.join(e.cache,"config.json"),js=(e)=>E.join(e.cache,"sync.claim"),ue=30000,R=35000;function Ae(e,i){return ri(xe({try:()=>(Rt(e.data),Rt(E.join(e.data,"locks")),Wn.acquire("credential",{dir:E.join(e.data,"locks"),staleMs:ue,timeoutMs:R})),catch:(s)=>s instanceof Error&&s.message.startsWith("Timed out waiting for lock")?Error(`Timed out after ${R/1000}s waiting for another opencode-console process to update the sign-in`,{cause:s}):s}),()=>i,(s)=>xe(()=>s.release()).pipe(en))}function V(e){try{return ie(e,"utf8")}catch(i){if(L(i)==="ENOENT")return;throw i}}function Bs(e){try{return ce(e,{throwIfNoEntry:!1})?.mtimeMs}catch(i){if(xo(i))return;throw i}}function Se(e,i){Rt(E.dirname(e));let s=`${e}.${oe()}.tmp`;fe(s,i,{mode:384,flag:"wx"});try{se(s,e)}catch(w){throw q(s,{force:!0}),w}}function J(e){q(e,{force:!0})}function xo(e){return["ENOENT","ENOTDIR","EACCES","EPERM"].includes(L(e)??"")}function Rt(e){if(ae(e,{recursive:!0,mode:448}),process.platform!=="win32")ne(e,448)}function L(e){return e instanceof Error&&"code"in e&&typeof e.code==="string"?e.code:void 0}
2
+ export{Wn,go,kr,xn,Wt,js,Ae,V,Bs,Se,J,xo,Rt,qs};
@@ -1 +1 @@
1
- import"./chunk-dnepb5ke.js";import{Pt}from"./chunk-wd4mfvqy.js";import{k,F,z,e,n,Z}from"./chunk-gxedprvk.js";var u={};k(u,{CliInstall:()=>u,directory:()=>m,install:()=>I,packageName:()=>b,uninstall:()=>D});import{randomUUID as S}from"node:crypto";import{chmodSync as g,copyFileSync as j,cpSync as v,existsSync as c,readFileSync as C,realpathSync as f,renameSync as h,rmSync as l}from"node:fs";import t from"node:path";var b="@opencode/console",m=(r)=>t.join(r.data,"cli");function I(r,o){let s=m(r);if(o.entry===void 0){let a=t.join(s,t.basename(o.execPath));return x(s,(p)=>{Pt(p);let y=t.join(p,t.basename(o.execPath));j(o.execPath,y),g(y,493)}),[a]}let i=f(o.entry),d=t.dirname(i);if(!O(d))return[o.execPath,i];return x(s,(a)=>v(d,a,{recursive:!0})),[U(o.execPath,o.path),t.join(s,t.basename(i))]}function U(r,o){if(!c(r))return r;let s=f(r);return(o??"").split(t.delimiter).filter((i)=>t.isAbsolute(i)).map((i)=>t.join(i,t.basename(r))).find((i)=>c(i)&&f(i)===s)??r}function D(r){l(m(r),{recursive:!0,force:!0})}function O(r){let o=t.join(r,"package.json");if(!c(o))return!1;let s=z(Z(n({name:e})))(C(o,"utf8"));return F(s)?.name===b}function x(r,o){Pt(t.dirname(r));let s=`${r}.${S()}.tmp`,i=`${r}.${S()}.old`;try{if(o(s),c(r))h(r,i);h(s,r)}finally{l(s,{recursive:!0,force:!0}),l(i,{recursive:!0,force:!0})}}export{u as CliInstall,m as directory,I as install,b as packageName,D as uninstall};
1
+ import"./chunk-81pw2xsw.js";import{Rt}from"./chunk-xsr5jd61.js";import{k,L,W,e,n,G}from"./chunk-vf7nj8yg.js";var u={};k(u,{CliInstall:()=>u,directory:()=>m,install:()=>I,packageName:()=>b,uninstall:()=>D});import{randomUUID as S}from"node:crypto";import{chmodSync as g,copyFileSync as j,cpSync as v,existsSync as c,readFileSync as C,realpathSync as f,renameSync as h,rmSync as l}from"node:fs";import t from"node:path";var b="@opencode/console",m=(r)=>t.join(r.data,"cli");function I(r,o){let s=m(r);if(o.entry===void 0){let a=t.join(s,t.basename(o.execPath));return x(s,(p)=>{Rt(p);let y=t.join(p,t.basename(o.execPath));j(o.execPath,y),g(y,493)}),[a]}let i=f(o.entry),d=t.dirname(i);if(!O(d))return[o.execPath,i];return x(s,(a)=>v(d,a,{recursive:!0})),[U(o.execPath,o.path),t.join(s,t.basename(i))]}function U(r,o){if(!c(r))return r;let s=f(r);return(o??"").split(t.delimiter).filter((i)=>t.isAbsolute(i)).map((i)=>t.join(i,t.basename(r))).find((i)=>c(i)&&f(i)===s)??r}function D(r){l(m(r),{recursive:!0,force:!0})}function O(r){let o=t.join(r,"package.json");if(!c(o))return!1;let s=W(G(n({name:e})))(C(o,"utf8"));return L(s)?.name===b}function x(r,o){Rt(t.dirname(r));let s=`${r}.${S()}.tmp`,i=`${r}.${S()}.old`;try{if(o(s),c(r))h(r,i);h(s,r)}finally{l(s,{recursive:!0,force:!0}),l(i,{recursive:!0,force:!0})}}export{u as CliInstall,m as directory,I as install,b as packageName,D as uninstall};
package/dsh-plugin.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-dnepb5ke.js";import"./chunk-gvywgb0d.js";import"./chunk-0trayd9n.js";import{vr}from"./chunk-wd4mfvqy.js";import{Ee,ye,Be}from"./chunk-tx5wws16.js";import{je,dr,Xe}from"./chunk-78cwb109.js";import"./chunk-px1nqkzb.js";import"./chunk-ktx666b5.js";import{$e}from"./chunk-71rwyxw2.js";import{Xr,eo,Un,ts,ns,rs,pn,os}from"./chunk-0067hzw7.js";import"./chunk-rx6cjbq2.js";import{sr,xt,Le}from"./chunk-et9y1sb5.js";import"./chunk-96f5c0tj.js";import{le}from"./chunk-ak1n0cs7.js";import{L,Ge,Ie}from"./chunk-gxedprvk.js";import k from"node:os";import w from"node:path";var K="opencode-console",U=["tools","llm"];function z(e){if(typeof e.tools?.guard!=="function")throw Error("opencode-console needs a newer DeepSeek Harness (tools.guard). Upgrade dsh, or run `npx @opencode/console setup deepseek-harness --remove`.");let n=C(),r=sr(n?{harness:n}:{});v(e,r)}function S(e,n){let r=new WeakSet,s=()=>{let o=g(n);return o?Xe(o):{}};return{preExecute:async(o,c)=>{let t=await P(e,n,o).then((a)=>xt(n,a)).catch((a)=>m(o.name,a));if(t?.effect==="deny")return{kind:"deny",reason:t.message};return r.add(o),c()},guard:(o)=>{if(r.delete(o))return;return`opencode-console didn't check ${o.name}, so it was blocked`},stream:(o,c)=>async function*(){let t=await xt(n,[{action:"provider.use",resources:E(o.provider)}]).catch((a)=>m(o.provider,a));if(t?.effect==="deny")throw Error(t.message);yield*c()}(),requestHeaders:(o,c,t)=>{if(o.sessionId&&c.has("x-opencode-plugin"))c.set("x-opencode-session",o.sessionId);return t()},preStep:async(o,c)=>{let t=rs(o.messages);if(t.length===0)return c();let a=await xt(n,t.map((u)=>({action:"skill",resources:[u]}))).catch((u)=>m(`/${t.join(", /")}`,u));if(a?.effect!=="deny")return c();throw Error(a.message)},credentials:h(n),mcp:{server:(o)=>ts(o,s()[o])},servers:s,instructions:()=>{let o=g(n);return dr(o?je(o).instructions:[])??""}}}function v(e,n){let r=S(e,n);e.provide("credentials",r.credentials),e.provide(eo,{version:le}),e.on("tools/pre-execute",r.preExecute,!0),e.tools.guard(r.guard),e.on("llm/stream",r.stream,!0),e.on("llm-pi-ai/request-headers",r.requestHeaders),e.on("agent/pre-step",r.preStep,!0);let s=e.get("systemPrompt");if(s)s.section({name:"opencode_workspace_instructions",order:s.getSectionOrder("MCP_SERVERS")+50,interpolate:!1,text:r.instructions});let i={servers:JSON.stringify(r.servers()),dispose:e.provide(Un,r.mcp)},p={},l=async()=>{if(!b(n))return;let d=await Le(n);if(d===void 0||d.fetched===p.fetched)return;p.fetched=d.fetched,await n.run(os(n.store));let f=JSON.stringify(r.servers());if(f===i.servers)return;i.dispose(),i.servers=f,i.dispose=e.provide(Un,r.mcp)};e.effect(()=>{l().catch(()=>{return});let d=setInterval(()=>void l().catch(()=>{return}),60000);return d.unref?.(),()=>clearInterval(d)},"opencode-console sync")}function h(e){let n=async(s)=>{if(s===Xr){let i=await e.run(Be(e.store));if(!i)return;return{value:i.type==="key"?i.key:i.access,source:"OpenCode Console"}}return},r=()=>Promise.reject(Error("OpenCode Console's credentials are read-only"));return{resolve:n,describe:async(s)=>({configured:await n(s)!==void 0,writable:!1}),set:r,unset:r,readRecord:()=>Promise.resolve(void 0),describeRecord:()=>Promise.resolve({configured:!1,writable:!1}),listRecords:()=>Promise.resolve([]),modifyRecord:r,deleteRecord:()=>Promise.resolve()}}async function P(e,n,r){let s=r.agent,i=e.get("workingDirectory"),p=e.get("fs"),l=async(u,y)=>p?p.processPath(await p.resolve(u,{cwd:y,signal:r.signal})):w.resolve(y,u.replace(/^~(?=$|[\\/])/,k.homedir())),d=s?.session?.header?.cwd??process.cwd(),f=s&&i?await i.ensure(s,r.signal):d,o=await l(d,d),c=await l(f,f),t=g(n),a=pn(n.store)?.paths.skills;return ns({name:r.name,input:r.arguments},{directory:o,cwd:c,resolve:(u)=>l(u,c),servers:Object.keys(t?Xe(t):{}),...a?{skills:await l(a,a)}:{}})}function g(e){return Ie(L(()=>{let n=Ee(e.store);return n&&$e(e.store,ye(n))?.config}).pipe(Ge(()=>{return})))}function E(e){return e.startsWith("deepseek-")?[e,"deepseek"]:[e]}function b(e){return Ie(L(()=>Ee(e.store)!==void 0).pipe(Ge(()=>!0)))}function m(e,n){return{effect:"deny",message:`opencode-console couldn't check ${e}: ${n instanceof Error?n.message:String(n)}`}}function C(){let e=vr();return Ie(L(()=>pn(e)?.harness).pipe(Ge(()=>{return})))}export{z as apply,S as handlers,U as inject,v as install,K as name};
1
+ import"./chunk-81pw2xsw.js";import"./chunk-w7jwta9c.js";import"./chunk-4hra11sy.js";import{kr}from"./chunk-xsr5jd61.js";import{Ce,be,ze}from"./chunk-bfd21777.js";import"./chunk-e219b1sg.js";import"./chunk-172desm7.js";import{lt,et}from"./chunk-wvtbwbxs.js";import{He}from"./chunk-fsg05nff.js";import{ro,oo,Un,ss,is,as,pn,cs}from"./chunk-87hkw75t.js";import"./chunk-tzhpc3tb.js";import{ar,bt,qe}from"./chunk-c8zgzn9g.js";import{ms}from"./chunk-17ek638g.js";import{ue}from"./chunk-8stwzw95.js";import{j,ke,Oe}from"./chunk-vf7nj8yg.js";import k from"node:os";import w from"node:path";var B="opencode-console",G=["tools","llm"];function L(e){if(typeof e.tools?.guard!=="function")throw Error("opencode-console needs a newer DeepSeek Harness (tools.guard). Upgrade dsh, or run `npx @opencode/console setup deepseek-harness --remove`.");let n=C(),r=ar(n?{harness:n}:{});h(e,r)}function S(e,n){let r=new WeakSet,s=()=>et(g(n));return{preExecute:async(o,c)=>{let i=await P(e,n,o).then((a)=>bt(n,a)).catch((a)=>m(o.name,a));if(i?.effect==="deny")return{kind:"deny",reason:i.message};return r.add(o),c()},guard:(o)=>{if(r.delete(o))return;return`opencode-console didn't check ${o.name}, so it was blocked`},stream:(o,c)=>async function*(){let i=await bt(n,[{action:"provider.use",resources:E(o.provider)}]).catch((a)=>m(o.provider,a));if(i?.effect==="deny")throw Error(i.message);yield*c()}(),requestHeaders:(o,c,i)=>{if(o.sessionId&&c.has("x-opencode-plugin"))c.set("x-opencode-session",o.sessionId);return i()},preStep:async(o,c)=>{let i=as(o.messages);if(i.length===0)return c();let a=await bt(n,i.map((u)=>({action:"skill",resources:[u]}))).catch((u)=>m(`/${i.join(", /")}`,u));if(a?.effect!=="deny")return c();throw Error(a.message)},credentials:v(n),mcp:{server:(o)=>ss(o,s()[o])},servers:s,instructions:()=>ms(lt(g(n)))??""}}function h(e,n){let r=S(e,n);e.provide("credentials",r.credentials),e.provide(oo,{version:ue}),e.on("tools/pre-execute",r.preExecute,!0),e.tools.guard(r.guard),e.on("llm/stream",r.stream,!0),e.on("llm-pi-ai/request-headers",r.requestHeaders),e.on("agent/pre-step",r.preStep,!0);let s=e.get("systemPrompt");if(s)s.section({name:"opencode_workspace_instructions",order:s.getSectionOrder("MCP_SERVERS")+50,interpolate:!1,text:r.instructions});let t={servers:JSON.stringify(r.servers()),dispose:e.provide(Un,r.mcp)},p={},l=async()=>{if(!b(n))return;let d=await qe(n);if(d===void 0||d.fetched===p.fetched)return;p.fetched=d.fetched,await n.run(cs(n.store));let f=JSON.stringify(r.servers());if(f===t.servers)return;t.dispose(),t.servers=f,t.dispose=e.provide(Un,r.mcp)};e.effect(()=>{l().catch(()=>{return});let d=setInterval(()=>void l().catch(()=>{return}),60000);return d.unref?.(),()=>clearInterval(d)},"opencode-console sync")}function v(e){let n=async(s)=>{if(s===ro){let t=await e.run(ze(e.store));if(!t)return;return{value:t.type==="key"?t.key:t.access,source:"OpenCode Console"}}return},r=()=>Promise.reject(Error("OpenCode Console's credentials are read-only"));return{resolve:n,describe:async(s)=>({configured:await n(s)!==void 0,writable:!1}),set:r,unset:r,readRecord:()=>Promise.resolve(void 0),describeRecord:()=>Promise.resolve({configured:!1,writable:!1}),listRecords:()=>Promise.resolve([]),modifyRecord:r,deleteRecord:()=>Promise.resolve()}}async function P(e,n,r){let s=r.agent,t=e.get("workingDirectory"),p=e.get("fs"),l=async(u,y)=>p?p.processPath(await p.resolve(u,{cwd:y,signal:r.signal})):w.resolve(y,u.replace(/^~(?=$|[\\/])/,k.homedir())),d=s?.session?.header?.cwd??process.cwd(),f=s&&t?await t.ensure(s,r.signal):d,o=await l(d,d),c=await l(f,f),i=g(n),a=pn(n.store)?.paths.skills;return is({name:r.name,input:r.arguments},{directory:o,cwd:c,resolve:(u)=>l(u,c),servers:Object.keys(et(i)),...a?{skills:await l(a,a)}:{}})}function g(e){return Oe(j(()=>{let n=Ce(e.store);return n?He(e.store,be(n)):void 0}).pipe(ke(()=>{return})))}function E(e){return e.startsWith("deepseek-")?[e,"deepseek"]:[e]}function b(e){return Oe(j(()=>Ce(e.store)!==void 0).pipe(ke(()=>!0)))}function m(e,n){return{effect:"deny",message:`opencode-console couldn't check ${e}: ${n instanceof Error?n.message:String(n)}`}}function C(){let e=kr();return Oe(j(()=>pn(e)?.harness).pipe(ke(()=>{return})))}export{L as apply,S as handlers,G as inject,h as install,B as name};
package/index.js CHANGED
@@ -1,21 +1,22 @@
1
1
  #!/usr/bin/env node
2
- import{le}from"./chunk-ak1n0cs7.js";import{spawn as J}from"node:child_process";import P from"node:path";import{parseArgs as B}from"node:util";var N=B({allowPositionals:!0,strict:!1,options:{harness:{type:"string"},server:{type:"string"},json:{type:"boolean"},quiet:{type:"boolean"},remove:{type:"boolean"}}}),_=N.positionals[0],k=N.values,S=R("harness")??process.env.OPENCODE_CONSOLE_HARNESS,x="Not signed in. Run `npx @opencode/console login` or set OPENCODE_API_KEY.",M=["claude-code","pi","codex","deepseek-harness"],W=["claude-code","codex"],V={check:G,hook:X,login:ee,logout:ae,"mcp-headers":ie,setup:oe,status:ce,sync:de,token:pe},b,K=_?V[_]:void 0;if(!K)process.stdout.write(we()),process.exit(_&&!["help","--help","-h"].includes(_)?1:0);process.exitCode=await K().catch(async(e)=>{if(_==="hook")return H(`opencode-console couldn't check this: ${h(e)}`);if(process.stderr.write(`${h(e)}
3
- `),_!=="check")return 1;return Y(`opencode-console couldn't check this call: ${h(e)}`)});async function G(){let{Option:e,Schema:o}=await import("./chunk-ysgtje2z.js"),t=o.decodeUnknownOption(o.fromJsonString(o.Struct({action:o.NonEmptyString,resources:o.NonEmptyArray(o.String),directory:o.optional(o.String),path:o.optional(o.String),shell:o.optional(o.String)})))(await U());if(e.isNone(t))return process.stderr.write(`Expected JSON on stdin: {"action": "...", "resources": ["...", ...]}
4
- `),Y("opencode-console couldn't read this tool call, so it was blocked");let[n]=await T([t.value]);return process.stdout.write(`${JSON.stringify(n)}
5
- `),n?.effect==="deny"?2:0}async function X(){let e=N.positionals[1];if(!e||!W.includes(e))return process.stderr.write(`Usage: opencode-console hook <${W.join("|")}>
6
- `),2;let{Option:o}=await import("./chunk-ysgtje2z.js"),{ClaudeCodeHook:t}=await import("./chunk-jem7z938.js"),n=await U();b=t.eventName(n);let r=e==="codex"?await Z(n):c(t.decode(n));if(r===void 0)return H("opencode-console couldn't read this hook's input, so it was blocked");if(b==="SessionStart")return Q();if(r.length===0)return 0;let i=(await T(r)).find((s)=>s.effect==="deny");return i?.effect==="deny"?H(i.message):0;function c(s){return o.isNone(s)?void 0:t.checks(s.value)}}async function Z(e){let{Option:o}=await import("./chunk-ysgtje2z.js"),{CodexHook:t}=await import("./chunk-b02r286p.js"),{Library:n}=await import("./chunk-wkrya350.js"),{WorkspaceSnapshot:r}=await import("./chunk-m3n97pxp.js"),{ConsoleStore:i}=await import("./chunk-zgcspk2g.js"),c=t.decode(e);if(o.isNone(c))return;let s=r.read(i.make())?.config??{};return t.checks(c.value,{directory:process.cwd(),platform:process.platform,servers:Object.keys(n.servers(s))})}async function Q(){let{ConsoleStore:e}=await import("./chunk-zgcspk2g.js"),{ConsoleCredentials:o}=await import("./chunk-w6kmmxmz.js"),{WorkspaceSync:t}=await import("./chunk-g9bke322.js"),n=e.make(),r=o.read(n);if(!r)return 0;await A({always:!0,force:!0});let i=t.current(n,o.owner(r))?.status;if(i)process.stdout.write(`${JSON.stringify({systemMessage:`${i.message}${i.url?`: ${i.url}`:""}`})}
7
- `);return 0}async function T(e){let{Effect:o}=await import("./chunk-ysgtje2z.js"),{ConsoleStore:t}=await import("./chunk-zgcspk2g.js"),{ConsoleCredentials:n}=await import("./chunk-w6kmmxmz.js"),{WorkspaceSnapshot:r}=await import("./chunk-m3n97pxp.js"),{PolicyEvaluator:i}=await import("./chunk-6bc9ezw6.js"),c=t.make(),s=n.read(c),p=s&&n.owner(s),a=s?r.read(c):void 0,u=p&&a?.owner!==p?await(async()=>(await A({always:!0}),ue(()=>{let l=r.read(c);return l?.owner===p?l:void 0},3000)))():a&&r.stale(a,Date.now())?(await A(),a):a,d=r.workspace(s,u);return o.runPromise(o.forEach(e,(l)=>i.check(d,l)))}async function ee(){if(!await L())return 1;if(process.env.OPENCODE_API_KEY)process.stderr.write(`OPENCODE_API_KEY is set, so opencode-console keeps using that key until it's unset
8
- `);return 0}async function L(){let{Effect:e}=await import("./chunk-ysgtje2z.js"),{openUrl:o}=await import("./chunk-aesb1szb.js"),{ConsoleClient:t}=await import("./chunk-sbkpkav3.js"),{ConsoleStore:n}=await import("./chunk-zgcspk2g.js"),{ConsoleCredentials:r}=await import("./chunk-w6kmmxmz.js"),{WorkspaceSync:i}=await import("./chunk-g9bke322.js"),c=R("server")??process.env.OPENCODE_CONSOLE_SERVER??t.defaultServer,s=t.normalizeServer(c);if(!s){process.stderr.write(`Not a Console URL: ${c}
9
- `);return}let p=n.make(),a=await f(r.login(p,{server:s,prompt:(d)=>e.promise(async()=>{if(process.stderr.write(`Open ${d.url} and confirm the code ${d.code}
10
- `),process.stdout.isTTY)await o(d.url).catch(()=>{return})})})),u=await f(i.sync(p,{force:!0}));if(process.stdout.write(`Signed in to ${a.orgName??"OpenCode Console"}${a.email?` as ${a.email}`:""}
11
- `),u.error)process.stderr.write(`Couldn't fetch the workspace config: ${h(u.error)}. Run the command again to retry.
12
- `);return a}async function oe(){let e=N.positionals[1];if(!e||!M.includes(e))return process.stderr.write(`Usage: opencode-console setup <${M.join("|")}> [--remove]
13
- `),1;let o=e==="pi",t=e==="codex",n=e==="deepseek-harness",r=o?"Pi":t?"Codex":n?"DeepSeek Harness":"Claude Code",{ConsoleStore:i}=await import("./chunk-zgcspk2g.js"),{ConsoleCredentials:c}=await import("./chunk-w6kmmxmz.js"),{CliInstall:s}=await import("./chunk-cdc5arvh.js"),{WorkspaceSync:p}=await import("./chunk-g9bke322.js"),a=i.make();if(k.remove===!0){let{Effect:E}=await import("./chunk-ysgtje2z.js"),{ClaudeCode:C}=await import("./chunk-n5bt7jzp.js"),{Codex:O}=await import("./chunk-7k3ymrp6.js"),{Pi:y}=await import("./chunk-83pr45e8.js"),{DeepSeekHarness:j}=await import("./chunk-t8p1svd4.js"),z=await E.runPromise(i.locked(a,E.sync(()=>{let F=o?y.remove(a):t?O.remove(a):n?j.remove(a):C.remove(a);if(![C.manifestFile(a),y.manifestFile(a),O.manifestFile(a),j.manifestFile(a)].some((q)=>i.read(q)!==void 0))s.uninstall(a);return F})));return process.stdout.write(z?`Removed OpenCode Console from ${r} and restored its settings. You're still signed in; \`npx @opencode/console logout\` signs out.
14
- `:`${r} wasn't set up with OpenCode Console
15
- `),0}let{ConsoleClient:u}=await import("./chunk-sbkpkav3.js"),d=await fe(o?"pi":t?"codex":n?"dsh":"claude");if(d)S=o?`pi/${d}`:t?`codex_cli_rs/${d}`:n?`deepseek-harness/${d}`:`claude-cli/${d}`;let l=c.read(a),g=R("server");if(!l||g!==void 0&&l.server!==u.normalizeServer(g)){if(!await L())return 1}if(process.env.OPENCODE_API_KEY)process.stderr.write(`OPENCODE_API_KEY is set, so setup used that key, and ${r} will use it instead of your sign-in wherever it's set.
16
- `);let m=await f(p.sync(a,{force:!0}));if(!m.snapshot?.config)return process.stderr.write(`Couldn't fetch the workspace config${m.error?`: ${h(m.error)}`:""}. Run setup again.
17
- `),1;if((o||n)&&I())return process.stderr.write(`Set up ${r} with the npm package: \`npx @opencode/console setup ${e}\`
18
- `),1;let v=s.install(a,{execPath:process.execPath,entry:I()?void 0:process.argv[1],path:process.env.PATH});if(t)return re(a,v,m.snapshot,d);if(n){let{DeepSeekHarness:E}=await import("./chunk-t8p1svd4.js"),C=v.at(-1),O=await f(E.refresh(a,{paths:E.paths(),plugin:P.join(P.dirname(C),`dsh-plugin${P.extname(C)}`),...S?{harness:S}:{}}));return O?te(O,m.snapshot,d):1}return o?ne(a,v,m.snapshot,d):se(a,v,m.snapshot,d)}async function te(e,o,t){let{WorkspaceSnapshot:n}=await import("./chunk-m3n97pxp.js"),r=Object.values(e.routes),i=[`DeepSeek Harness now uses ${o.organization??"your workspace"} through OpenCode Console.`,"",e.model?` Models ${w(r.flatMap((c)=>c.models).length,"model","models")} from ${w(r.length,"provider","providers")}; new sessions start on ${e.model.provider}/${e.model.model}`:" Models none from the workspace, so DeepSeek Harness keeps its own providers",` Policies ${w(n.policies(o)?.length??0,"rule","rules")}, checked before every tool call, /skill and model request`,...e.servers.length>0?[` MCP ${e.servers.join(", ")}`]:[],...D(e.instructions,e.skills.map((c)=>`/${c}`))];if(process.stdout.write(`${i.join(`
2
+ import{ue}from"./chunk-8stwzw95.js";import{spawn as Q}from"node:child_process";import E from"node:path";import{parseArgs as ee}from"node:util";var x=ee({allowPositionals:!0,strict:!1,options:{harness:{type:"string"},server:{type:"string"},json:{type:"boolean"},quiet:{type:"boolean"},remove:{type:"boolean"},"keep-provider":{type:"boolean"}}}),O=x.positionals[0],y=x.values,S=j("harness")??process.env.OPENCODE_CONSOLE_HARNESS,D="Not signed in. Run `npx @opencode/console login` or set OPENCODE_API_KEY.",T=["claude-code","pi","codex","deepseek-harness"],K=["claude-code","codex"],oe=["claude-code","codex"],te={check:se,hook:ne,login:de,logout:Ce,"mcp-headers":he,"otel-headers":ge,"report-codex-usage":ae,setup:pe,status:ke,sync:ye,token:$e},N,U=O?te[O]:void 0;if(!U)process.stdout.write(Ee()),process.exit(O&&!["help","--help","-h"].includes(O)?1:0);process.exitCode=await U().catch(async(e)=>{if(O==="hook")return I(`opencode-console couldn't check this: ${C(e)}`);if(process.stderr.write(`${C(e)}
3
+ `),O!=="check")return 1;return V(`opencode-console couldn't check this call: ${C(e)}`)});async function se(){let{Option:e,Schema:o}=await import("./chunk-c94982xf.js"),t=o.decodeUnknownOption(o.fromJsonString(o.Struct({action:o.NonEmptyString,resources:o.NonEmptyArray(o.String),directory:o.optional(o.String),path:o.optional(o.String),shell:o.optional(o.String)})))(await R());if(e.isNone(t))return process.stderr.write(`Expected JSON on stdin: {"action": "...", "resources": ["...", ...]}
4
+ `),V("opencode-console couldn't read this tool call, so it was blocked");let[s]=await L([t.value]);return process.stdout.write(`${JSON.stringify(s)}
5
+ `),s?.effect==="deny"?2:0}async function ne(){let e=x.positionals[1];if(!e||!K.includes(e))return process.stderr.write(`Usage: opencode-console hook <${K.join("|")}>
6
+ `),2;let{Option:o}=await import("./chunk-c94982xf.js"),{ClaudeCodeHook:t}=await import("./chunk-6dmhresx.js"),s=await R();if(N=t.eventName(s),e==="codex"&&N==="PostModelRequest")return ie(s);let n=e==="codex"?await re(s):c(t.decode(s));if(n===void 0)return I("opencode-console couldn't read this hook's input, so it was blocked");if(N==="SessionStart")return ce();if(n.length===0)return 0;let i=(await L(n)).find((p)=>p.effect==="deny");return i?.effect==="deny"?I(i.message):0;function c(p){return o.isNone(p)?void 0:t.checks(p.value)}}async function re(e){let{Option:o}=await import("./chunk-c94982xf.js"),{CodexHook:t}=await import("./chunk-1900gmc1.js"),{WorkspaceSnapshot:s}=await import("./chunk-j6qa0p88.js"),{ConsoleStore:n}=await import("./chunk-vrvsj5aj.js"),i=t.decode(e);if(o.isNone(i))return;return t.checks(i.value,{directory:process.cwd(),platform:process.platform,servers:Object.keys(s.servers(s.read(n.make())))})}async function ie(e){return await Promise.resolve().then(async()=>{let{CodexUsage:o}=await import("./chunk-v67dra35.js");o.reportInBackground(e,await Y(),{version:S?.match(/^codex_cli_rs\/(.+)$/)?.[1],now:Date.now(),command:B()})}).catch(()=>{return}),0}async function ae(){return await Promise.resolve().then(async()=>{let{CodexUsage:e}=await import("./chunk-v67dra35.js");await e.post(await R(),await Y())}).catch(()=>{return}),0}async function Y(){let{ConsoleStore:e}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:o}=await import("./chunk-ka5nrr3r.js"),{WorkspaceSnapshot:t}=await import("./chunk-j6qa0p88.js"),s=e.make(),n=o.read(s),i=n&&t.read(s);if(!n||i?.owner!==o.owner(n))return;return i.telemetry}async function ce(){let{ConsoleStore:e}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:o}=await import("./chunk-ka5nrr3r.js"),{WorkspaceSync:t}=await import("./chunk-httrtddj.js"),s=e.make(),n=o.read(s);if(!n)return 0;await H({always:!0,force:!0});let i=t.current(s,o.owner(n))?.status;if(i)process.stdout.write(`${JSON.stringify({systemMessage:`${i.message}${i.url?`: ${i.url}`:""}`})}
7
+ `);return 0}async function L(e){let{Effect:o}=await import("./chunk-c94982xf.js"),{ConsoleStore:t}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:s}=await import("./chunk-ka5nrr3r.js"),{WorkspaceSnapshot:n}=await import("./chunk-j6qa0p88.js"),{PolicyEvaluator:i}=await import("./chunk-1ekysq54.js"),c=t.make(),p=s.read(c),r=p&&s.owner(p),u=p?n.read(c):void 0,d=r&&u?.owner!==r?await(async()=>(await H({always:!0}),Se(()=>{let l=n.read(c);return l?.owner===r?l:void 0},3000)))():u&&n.stale(u,Date.now())?(await H(),u):u,a=n.workspace(p,d);return o.runPromise(o.forEach(e,(l)=>i.check(a,l)))}async function de(){if(!await q())return 1;if(process.env.OPENCODE_API_KEY)process.stderr.write(`OPENCODE_API_KEY is set, so opencode-console keeps using that key until it's unset
8
+ `);return 0}async function q(){let{Effect:e}=await import("./chunk-c94982xf.js"),{openUrl:o}=await import("./chunk-aesb1szb.js"),{ConsoleClient:t}=await import("./chunk-m711drrn.js"),{ConsoleStore:s}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:n}=await import("./chunk-ka5nrr3r.js"),{WorkspaceSync:i}=await import("./chunk-httrtddj.js"),c=j("server")??process.env.OPENCODE_CONSOLE_SERVER??t.defaultServer,p=t.normalizeServer(c);if(!p){process.stderr.write(`Not a Console URL: ${c}
9
+ `);return}let r=s.make(),u=await m(n.login(r,{server:p,prompt:(a)=>e.promise(async()=>{if(process.stderr.write(`Open ${a.url} and confirm the code ${a.code}
10
+ `),process.stdout.isTTY)await o(a.url).catch(()=>{return})})})),d=await m(i.sync(r,{force:!0}));if(process.stdout.write(`Signed in to ${u.orgName??"OpenCode Console"}${u.email?` as ${u.email}`:""}
11
+ `),d.error)process.stderr.write(`Couldn't fetch the workspace config: ${C(d.error)}. Run the command again to retry.
12
+ `);return u}async function pe(){let e=x.positionals[1];if(!e||!T.includes(e))return process.stderr.write(`Usage: opencode-console setup <${T.join("|")}> [--keep-provider] [--remove]
13
+ `),1;let o=y["keep-provider"]===!0;if(o&&!oe.includes(e))return process.stderr.write(`--keep-provider works with claude-code and codex
14
+ `),1;let t=e==="pi",s=e==="codex",n=e==="deepseek-harness",i=t?"Pi":s?"Codex":n?"DeepSeek Harness":"Claude Code",{ConsoleStore:c}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:p}=await import("./chunk-ka5nrr3r.js"),{CliInstall:r}=await import("./chunk-yqbzfq0h.js"),{WorkspaceSync:u}=await import("./chunk-httrtddj.js"),d=c.make();if(y.remove===!0){let{Effect:g}=await import("./chunk-c94982xf.js"),{ClaudeCode:P}=await import("./chunk-hkjjea67.js"),{Codex:_}=await import("./chunk-n6fr9p3j.js"),{Pi:M}=await import("./chunk-38wxxryg.js"),{DeepSeekHarness:W}=await import("./chunk-eja0bnj7.js"),G=await g.runPromise(c.locked(d,g.sync(()=>{let X=t?M.remove(d):s?_.remove(d):n?W.remove(d):P.remove(d);if(![P.manifestFile(d),M.manifestFile(d),_.manifestFile(d),W.manifestFile(d)].some((Z)=>c.read(Z)!==void 0))r.uninstall(d);return X})));return process.stdout.write(G?`Removed OpenCode Console from ${i} and restored its settings. You're still signed in; \`npx @opencode/console logout\` signs out.
15
+ `:`${i} wasn't set up with OpenCode Console
16
+ `),0}let{ConsoleClient:a}=await import("./chunk-m711drrn.js"),l=await ve(t?"pi":s?"codex":n?"dsh":"claude");if(l)S=t?`pi/${l}`:s?`codex_cli_rs/${l}`:n?`deepseek-harness/${l}`:`claude-cli/${l}`;let f=p.read(d),k=j("server");if(!f||k!==void 0&&f.server!==a.normalizeServer(k)){if(!await q())return 1}if(process.env.OPENCODE_API_KEY)process.stderr.write(`OPENCODE_API_KEY is set, so setup used that key, and ${i} will use it instead of your sign-in wherever it's set.
17
+ `);let w=await m(u.sync(d,{force:!0}));if(!w.snapshot?.config)return process.stderr.write(`Couldn't fetch the workspace config${w.error?`: ${C(w.error)}`:""}. Run setup again.
18
+ `),1;if((t||n)&&b())return process.stderr.write(`Set up ${i} with the npm package: \`npx @opencode/console setup ${e}\`
19
+ `),1;let v=r.install(d,{execPath:process.execPath,entry:b()?void 0:process.argv[1],path:process.env.PATH});if(s)return me(d,v,w.snapshot,l,o);if(n){let{DeepSeekHarness:g}=await import("./chunk-eja0bnj7.js"),P=v.at(-1),_=await m(g.refresh(d,{paths:g.paths(),plugin:E.join(E.dirname(P),`dsh-plugin${E.extname(P)}`),...S?{harness:S}:{}}));return _?le(_,w.snapshot,l):1}return t?fe(d,v,w.snapshot,l):we(d,v,w.snapshot,l,o)}async function le(e,o,t){let{WorkspaceSnapshot:s}=await import("./chunk-j6qa0p88.js"),n=Object.values(e.routes),i=[`DeepSeek Harness now uses ${o.organization??"your workspace"} through OpenCode Console.`,"",e.model?` Models ${h(n.flatMap((c)=>c.models).length,"model","models")} from ${h(n.length,"provider","providers")}; new sessions start on ${e.model.provider}/${e.model.model}`:" Models none from the workspace, so DeepSeek Harness keeps its own providers",` Policies ${h(s.policies(o)?.length??0,"rule","rules")}, checked before every tool call, /skill and model request`,...e.servers.length>0?[` MCP ${e.servers.join(", ")}`]:[],...A(e.instructions,e.skills.map((c)=>`/${c}`))];if(process.stdout.write(`${i.join(`
19
20
  `)}
20
21
  `),e.skipped.length>0)process.stderr.write(`
21
22
  Kept your own ${e.skipped.join(", ")}, so the workspace's weren't added.
@@ -25,66 +26,73 @@ The model providers you added in the ${e.shadowed.join(", ")} profile${e.shadowe
25
26
  DeepSeek Harness isn't on your PATH yet; this applies once it's installed.
26
27
  `);return process.stdout.write(`
27
28
  Run dsh web (or restart a running one) to start.
28
- `),0}async function se(e,o,t,n){let{ClaudeCode:r}=await import("./chunk-n5bt7jzp.js"),{WorkspaceSnapshot:i}=await import("./chunk-m3n97pxp.js"),c=i.policies(t),s=await f(r.refresh(e,{paths:r.paths(),command:o,harness:n?`claude-cli/${n}`:void 0}));if(!s)return process.stderr.write(`Couldn't read the workspace config. Run setup again.
29
- `),1;let a=[`Claude Code now uses ${t.organization??"your workspace"} through OpenCode Console.`,"",...s.models?[` Models ${w(s.models.options.length,"model","models")} in /model; opus is ${s.models.tiers.opus}, sonnet ${s.models.tiers.sonnet}, haiku ${s.models.tiers.haiku}`]:[" Models none from the workspace, so Claude Code keeps its own sign-in"],` Policies ${w(c?.length??0,"rule","rules")}, checked before every tool call`,...s.servers.length>0?[` MCP ${s.servers.join(", ")}`]:[],...D(s.instructions,s.skills.map((d)=>`/${d}`))];if(process.stdout.write(`${a.join(`
29
+ `),0}async function we(e,o,t,s,n){let{ClaudeCode:i}=await import("./chunk-hkjjea67.js"),{WorkspaceSnapshot:c}=await import("./chunk-j6qa0p88.js"),p=c.policies(t),r=await m(i.refresh(e,{paths:i.paths(),command:o,harness:s?`claude-cli/${s}`:void 0,keepProvider:n}));if(!r)return process.stderr.write(`Couldn't read the workspace config. Run setup again.
30
+ `),1;let u=t.organization??"your workspace",d=[`Claude Code now uses ${u} through OpenCode Console.`,"",...r.models?[` Models ${h(r.models.options.length,"model","models")} in /model; opus is ${r.models.tiers.opus}, sonnet ${r.models.tiers.sonnet}, haiku ${r.models.tiers.haiku}`]:r.keepProvider?[" Models Claude Code keeps its own sign-in and models"]:[" Models none from the workspace, so Claude Code keeps its own sign-in"],` Policies ${h(p?.length??0,"rule","rules")}, checked before every tool call`,...r.servers.length>0?[` MCP ${r.servers.join(", ")}`]:[],...A(r.instructions,r.skills.map((l)=>`/${l}`)),...F(r.usage,u)];if(process.stdout.write(`${d.join(`
30
31
  `)}
31
- `),s.skipped.length>0)process.stderr.write(`
32
- Kept your own ${s.skipped.join(", ")}, so the workspace's of the same name weren't added.
33
- `);if(!n)process.stderr.write(`
32
+ `),r.skipped.length>0)process.stderr.write(`
33
+ Kept your own ${r.skipped.join(", ")}, so the workspace's of the same name weren't added.
34
+ `);if(r.usage==="kept")process.stderr.write(`
35
+ ${J(["Claude Code"])}
36
+ `);if(!s)process.stderr.write(`
34
37
  Claude Code isn't on your PATH yet; these settings apply once it's installed.
35
- `);let u=["ANTHROPIC_AUTH_TOKEN","ANTHROPIC_API_KEY"].filter((d)=>process.env[d]);if(s.models&&u.length>0)process.stderr.write(`
36
- ${u.join(" and ")} ${u.length===1?"is":"are"} set in your shell and Claude Code would use ${u.length===1?"it":"them"} instead of the workspace. Unset ${u.length===1?"it":"them"} before running claude.
38
+ `);let a=["ANTHROPIC_AUTH_TOKEN","ANTHROPIC_API_KEY"].filter((l)=>process.env[l]);if(r.models&&a.length>0)process.stderr.write(`
39
+ ${a.join(" and ")} ${a.length===1?"is":"are"} set in your shell and Claude Code would use ${a.length===1?"it":"them"} instead of the workspace. Unset ${a.length===1?"it":"them"} before running claude.
37
40
  `);return process.stdout.write(`
38
41
  Run claude to start.
39
- `),0}async function ne(e,o,t,n){let{Pi:r}=await import("./chunk-83pr45e8.js"),{InProcess:i}=await import("./chunk-kpp48ne0.js"),{Library:c}=await import("./chunk-wkrya350.js"),{WorkspaceSnapshot:s}=await import("./chunk-m3n97pxp.js"),p=o.at(-1),a=P.join(P.dirname(p),`pi-extension${P.extname(p)}`),u=i.session({store:e,...S?{harness:S}:{}}),d=await r.models(u),l=d&&r.defaultModel(d);await r.skills(u).catch((y)=>{process.stderr.write(`Couldn't download the Library's skills yet (${h(y)}); Pi tries again when it starts.
40
- `);return});let g=t.config??{},{Effect:m}=await import("./chunk-ysgtje2z.js"),{ConsoleStore:v}=await import("./chunk-zgcspk2g.js");await m.runPromise(v.locked(e,m.sync(()=>r.setup(e,{paths:r.paths(),extension:a,...l?{model:l}:{}}))));let E=d?r.providers(d,()=>{return}).flatMap((y)=>y.models):[],C=Object.keys(c.servers(g)),O=[`Pi now uses ${t.organization??"your workspace"} through OpenCode Console.`,"",l?` Models ${w(E.length,"model","models")} in /model; new sessions start on ${l.provider}/${l.id}`:" Models none from the workspace, so Pi keeps its own providers",` Policies ${w(s.policies(t)?.length??0,"rule","rules")}, checked before every tool call and !command`,...C.length>0?[` MCP ${C.join(", ")}`]:[],...D(c.library(g).instructions.length,c.library(g).skills.map((y)=>`/skill:${y.slug}`))];if(process.stdout.write(`${O.join(`
42
+ `),0}async function fe(e,o,t,s){let{Pi:n}=await import("./chunk-38wxxryg.js"),{InProcess:i}=await import("./chunk-gj3j0mk6.js"),{WorkspaceSnapshot:c}=await import("./chunk-j6qa0p88.js"),p=o.at(-1),r=E.join(E.dirname(p),`pi-extension${E.extname(p)}`),u=i.session({store:e,...S?{harness:S}:{}}),d=await n.models(u),a=d&&n.defaultModel(d);await n.skills(u).catch((g)=>{process.stderr.write(`Couldn't download the workspace's skills yet (${C(g)}); Pi tries again when it starts.
43
+ `);return});let{Effect:l}=await import("./chunk-c94982xf.js"),{ConsoleStore:f}=await import("./chunk-vrvsj5aj.js");await l.runPromise(f.locked(e,l.sync(()=>n.setup(e,{paths:n.paths(),extension:r,...a?{model:a}:{}}))));let k=d?n.providers(d,()=>{return}).flatMap((g)=>g.models):[],w=Object.keys(c.servers(t)),v=[`Pi now uses ${t.organization??"your workspace"} through OpenCode Console.`,"",a?` Models ${h(k.length,"model","models")} in /model; new sessions start on ${a.provider}/${a.id}`:" Models none from the workspace, so Pi keeps its own providers",` Policies ${h(c.policies(t)?.length??0,"rule","rules")}, checked before every tool call and !command`,...w.length>0?[` MCP ${w.join(", ")}`]:[],...A(c.instructions(t).length,c.skills(t).map((g)=>`/skill:${g.slug}`))];if(process.stdout.write(`${v.join(`
41
44
  `)}
42
- `),!n)process.stderr.write(`
45
+ `),!s)process.stderr.write(`
43
46
  Pi isn't on your PATH yet; this applies once it's installed.
44
47
  `);return process.stdout.write(`
45
48
  Run pi to start.
46
- `),0}async function re(e,o,t,n){let{Codex:r}=await import("./chunk-7k3ymrp6.js"),{WorkspaceSnapshot:i}=await import("./chunk-m3n97pxp.js"),c=Object.fromEntries(["XDG_DATA_HOME","XDG_CACHE_HOME","OPENCODE_CONSOLE_SERVER"].flatMap((l)=>process.env[l]?[[l,process.env[l]]]:[])),s=await f(r.refresh(e,{paths:r.paths(),command:o,harness:n?`codex_cli_rs/${n}`:void 0,environment:c}));if(!s)return process.stderr.write(`Couldn't read the workspace config. Run setup again.
47
- `),1;let p=i.policies(t)?.length??0,a=[`Codex now uses ${t.organization??"your workspace"} through OpenCode Console.`,"",s.models?` Models ${w(s.models.count,"model","models")} in /model; new sessions start on ${s.models.model}`:" Models none from the workspace, so Codex keeps its own sign-in",` Policies ${w(p,"rule","rules")}, checked before every tool call${s.rules>0?`; Codex also enforces ${w(s.rules,"shell rule","shell rules")} itself`:""}`,...s.searchOff?[" Search Codex's web search is off, since the workspace's policy limits it"]:[],...s.servers.length>0?[` MCP ${s.servers.join(", ")}`]:[],...D(s.instructions,s.skills.map((l)=>`$${l}`))];if(process.stdout.write(`${a.join(`
49
+ `),0}async function me(e,o,t,s,n){let{Codex:i}=await import("./chunk-n6fr9p3j.js"),{WorkspaceSnapshot:c}=await import("./chunk-j6qa0p88.js"),p=Object.fromEntries(["XDG_DATA_HOME","XDG_CACHE_HOME","OPENCODE_CONSOLE_SERVER"].flatMap((f)=>process.env[f]?[[f,process.env[f]]]:[])),r=await m(i.refresh(e,{paths:i.paths(),command:o,harness:s?`codex_cli_rs/${s}`:void 0,environment:p,keepProvider:n}));if(!r)return process.stderr.write(`Couldn't read the workspace config. Run setup again.
50
+ `),1;let u=c.policies(t)?.length??0,d=t.organization??"your workspace",a=[`Codex now uses ${d} through OpenCode Console.`,"",r.models?` Models ${h(r.models.count,"model","models")} in /model; new sessions start on ${r.models.model}`:r.keepProvider?" Models Codex keeps its own sign-in and models":" Models none from the workspace, so Codex keeps its own sign-in",` Policies ${h(u,"rule","rules")}, checked before every tool call${r.rules>0?`; Codex also enforces ${h(r.rules,"shell rule","shell rules")} itself`:""}`,...r.searchOff?[" Search Codex's web search is off, since the workspace's policy limits it"]:[],...r.servers.length>0?[` MCP ${r.servers.join(", ")}`]:[],...A(r.instructions,r.skills.map((f)=>`$${f}`)),...F(r.usage,d)];if(process.stdout.write(`${a.join(`
48
51
  `)}
49
- `),s.skipped.length>0)process.stderr.write(`
50
- Kept your own ${s.skipped.join(", ")}, so the workspace's of the same name weren't added.
51
- `);let{Library:u}=await import("./chunk-wkrya350.js"),d=Object.entries(u.servers(t.config??{})).filter(([l,g])=>g.headers!==void 0&&s.servers.includes(l)).map(([l])=>l);if(process.env.OPENCODE_API_KEY&&d.length>0)process.stderr.write(`
52
- Codex connects to ${d.join(", ")} without your shell's environment, so ${d.length===1?"it":"they"} can't use OPENCODE_API_KEY. Run \`npx @opencode/console login\` to connect ${d.length===1?"it":"them"}.
53
- `);if(!n)process.stderr.write(`
52
+ `),r.skipped.length>0)process.stderr.write(`
53
+ Kept your own ${r.skipped.join(", ")}, so the workspace's of the same name weren't added.
54
+ `);let l=Object.entries(c.servers(t)).filter(([f,k])=>k.headers!==void 0&&r.servers.includes(f)).map(([f])=>f);if(process.env.OPENCODE_API_KEY&&l.length>0)process.stderr.write(`
55
+ Codex connects to ${l.join(", ")} without your shell's environment, so ${l.length===1?"it":"they"} can't use OPENCODE_API_KEY. Run \`npx @opencode/console login\` to connect ${l.length===1?"it":"them"}.
56
+ `);if(!s)process.stderr.write(`
54
57
  Codex isn't on your PATH yet; these settings apply once it's installed.
55
58
  `);return process.stdout.write(`
56
59
  Run codex to start.
57
- `),0}function D(e,o){if(e+o.length===0)return[];return[` Library ${[...e>0?[w(e,"instruction","instructions")]:[],...o.length>0?[o.join(", ")]:[]].join(", ")}`]}async function ie(){let e=N.positionals[1];if(!e)return process.stderr.write(`Usage: opencode-console mcp-headers <server>
58
- `),1;let{Option:o,Schema:t}=await import("./chunk-ysgtje2z.js"),{ConsoleStore:n}=await import("./chunk-zgcspk2g.js"),{WorkspaceSync:r}=await import("./chunk-g9bke322.js"),{snapshot:i}=await f(r.sync(n.make()));if(!i)return process.stderr.write(`${x}
59
- `),1;let c=t.decodeUnknownOption(t.Struct({servers:t.Record(t.String,t.Struct({headers:t.optional(t.Record(t.String,t.String))}))}))(i.config?.mcp),s=o.getOrUndefined(c)?.servers[e];if(!s)return process.stderr.write(`The workspace doesn't offer the MCP server ${e} anymore
60
- `),1;return process.stdout.write(`${JSON.stringify(s.headers??{})}
61
- `),0}async function ae(){let{ConsoleStore:e}=await import("./chunk-zgcspk2g.js"),{ConsoleCredentials:o}=await import("./chunk-w6kmmxmz.js"),t=await f(o.logout(e.make()));if(process.stdout.write(t?`Signed out of OpenCode Console
60
+ `),0}function z(e){return`token counts and model names shared with ${e} (prompts and code never sent)`}function F(e,o){return e==="shared"?[` Usage ${z(o)}`]:[]}function J(e){return`Kept your own OpenTelemetry setup in ${e.join(" and ")}, so ${e.length===1?"it shares":"they share"} no usage metadata with the workspace.`}function A(e,o){if(e+o.length===0)return[];return[` Extensions ${[...e>0?[h(e,"instruction","instructions")]:[],...o.length>0?[o.join(", ")]:[]].join(", ")}`]}async function he(){let e=x.positionals[1];if(!e)return process.stderr.write(`Usage: opencode-console mcp-headers <server>
61
+ `),1;let{Option:o,Schema:t}=await import("./chunk-c94982xf.js"),{ConsoleStore:s}=await import("./chunk-vrvsj5aj.js"),{WorkspaceSync:n}=await import("./chunk-httrtddj.js"),{snapshot:i}=await m(n.sync(s.make()));if(!i)return process.stderr.write(`${D}
62
+ `),1;let c=t.decodeUnknownOption(t.Struct({servers:t.Record(t.String,t.Struct({headers:t.optional(t.Record(t.String,t.String))}))}))(i.config?.mcp),p=o.getOrUndefined(c)?.servers[e];if(!p)return process.stderr.write(`The workspace doesn't offer the MCP server ${e} anymore
63
+ `),1;return process.stdout.write(`${JSON.stringify(p.headers??{})}
64
+ `),0}async function ge(){let{ConsoleStore:e}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:o}=await import("./chunk-ka5nrr3r.js"),{WorkspaceSync:t}=await import("./chunk-httrtddj.js"),s=await Promise.resolve().then(async()=>{let n=e.make(),i=o.read(n);if(!i)return;let c=t.current(n,o.owner(i));if(c&&Date.now()-c.fetched<86400000)return c.telemetry?.headers;return(await m(t.sync(n))).snapshot?.telemetry?.headers}).catch(()=>{return});return process.stdout.write(`${JSON.stringify(s??{})}
65
+ `),0}async function Ce(){let{ConsoleStore:e}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:o}=await import("./chunk-ka5nrr3r.js"),t=await m(o.logout(e.make()));if(process.stdout.write(t?`Signed out of OpenCode Console
62
66
  `:`Not signed in
63
67
  `),process.env.OPENCODE_API_KEY)process.stdout.write(`OPENCODE_API_KEY is still set, so opencode-console keeps using that key
64
- `);return 0}async function ce(){let{ConsoleStore:e}=await import("./chunk-zgcspk2g.js"),{ConsoleCredentials:o}=await import("./chunk-w6kmmxmz.js"),{WorkspaceSnapshot:t}=await import("./chunk-m3n97pxp.js"),{WorkspaceSync:n}=await import("./chunk-g9bke322.js"),r=e.make(),i=o.read(r),c=i?(await f(n.sync(r))).snapshot:void 0,s=t.policies(c),p=i&&{server:i.server,credential:i.type==="key"?"OPENCODE_API_KEY":"device",email:i.type==="oauth"?i.email:void 0,workspace:c?.organization??o.organization(i),synced:s&&c?new Date(c.fetched).toISOString():void 0,policies:s?.length,models:t.models(c),needs:c?.status};if(k.json===!0)return process.stdout.write(`${JSON.stringify({signedIn:Boolean(p),...p})}
65
- `),0;if(!p)return process.stdout.write(`${x}
66
- `),0;let a=[["Signed in",p.credential==="OPENCODE_API_KEY"?"with OPENCODE_API_KEY":p.email??"yes"],...p.workspace?[["Workspace",p.workspace]]:[],["Console",p.server],["Policies",p.synced?`${w(p.policies??0,"policy","policies")}, synced at ${new Date(p.synced).toLocaleTimeString()}`:"not loaded yet, so tool calls are blocked"],["Models",p.models?`${p.models} from the workspace`:"none from the workspace"]];if(process.stdout.write(a.map(([u,d])=>`${u?.padEnd(10)} ${d}
67
- `).join("")),p.needs)process.stdout.write(`
68
- ${p.needs.message}${p.needs.url?`: ${p.needs.url}`:""}
69
- `);return 0}async function de(){let{ConsoleStore:e}=await import("./chunk-zgcspk2g.js"),{WorkspaceSnapshot:o}=await import("./chunk-m3n97pxp.js"),{WorkspaceSync:t}=await import("./chunk-g9bke322.js"),n=e.make(),r=o.read(n)?.fetched,i=await f(t.sync(n,{force:k.quiet!==!0||process.env.OPENCODE_CONSOLE_FORCE==="1"}));if(i.snapshot?.config&&!i.error&&i.snapshot.fetched!==r){let{ClaudeCode:p}=await import("./chunk-n5bt7jzp.js"),{Codex:a}=await import("./chunk-7k3ymrp6.js"),{DeepSeekHarness:u}=await import("./chunk-t8p1svd4.js");await f(p.refresh(n)).catch((d)=>{if(k.quiet!==!0)process.stderr.write(`Couldn't update Claude Code: ${h(d)}
70
- `)}),await f(a.refresh(n)).catch((d)=>{if(k.quiet!==!0)process.stderr.write(`Couldn't update Codex: ${h(d)}
71
- `)}),await f(u.refresh(n)).catch((d)=>{if(k.quiet!==!0)process.stderr.write(`Couldn't update DeepSeek Harness: ${h(d)}
72
- `)})}if(k.quiet===!0)return i.error?1:0;if(!i.snapshot&&!i.error)return process.stderr.write(`${x}
73
- `),1;if(i.error){let p=o.policies(i.snapshot)?`
74
- Policies from the last sync still apply.`:"";return process.stderr.write(`Couldn't sync: ${h(i.error)}${p}
75
- `),1}let c=i.snapshot?.organization,s=o.policies(i.snapshot)?.length??0;return process.stdout.write(`Synced ${c?`${c}'s`:"the workspace"} config (${w(s,"policy","policies")})
76
- `),0}async function pe(){let{ConsoleStore:e}=await import("./chunk-zgcspk2g.js"),{ConsoleCredentials:o}=await import("./chunk-w6kmmxmz.js"),t=await f(o.fresh(e.make()));if(!t)return process.stderr.write(`${x}
68
+ `);return 0}async function ke(){let{ConsoleStore:e}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:o}=await import("./chunk-ka5nrr3r.js"),{WorkspaceSnapshot:t}=await import("./chunk-j6qa0p88.js"),{WorkspaceSync:s}=await import("./chunk-httrtddj.js"),{ClaudeCode:n}=await import("./chunk-hkjjea67.js"),{Codex:i}=await import("./chunk-n6fr9p3j.js"),c=e.make(),p=o.read(c),r=p?(await m(s.sync(c))).snapshot:void 0,u=t.policies(r),d=[{agent:"claude-code",name:"Claude Code",usage:n.manifest(c)?.usage},{agent:"codex",name:"Codex",usage:i.manifest(c)?.usage}],a=p&&{server:p.server,credential:p.type==="key"?"OPENCODE_API_KEY":"device",email:p.type==="oauth"?p.email:void 0,workspace:r?.organization??o.organization(p),synced:u&&r?new Date(r.fetched).toISOString():void 0,policies:u?.length,models:t.models(r),usageMetadata:{shared:d.filter((w)=>w.usage==="shared").map((w)=>w.agent),kept:d.filter((w)=>w.usage==="kept").map((w)=>w.agent)},needs:r?.status};if(y.json===!0)return process.stdout.write(`${JSON.stringify({signedIn:Boolean(a),...a})}
69
+ `),0;if(!a)return process.stdout.write(`${D}
70
+ `),0;let l=[["Signed in",a.credential==="OPENCODE_API_KEY"?"with OPENCODE_API_KEY":a.email??"yes"],...a.workspace?[["Workspace",a.workspace]]:[],["Console",a.server],["Policies",a.synced?`${h(a.policies??0,"policy","policies")}, synced at ${new Date(a.synced).toLocaleTimeString()}`:"not loaded yet, so tool calls are blocked"],["Models",a.models?`${a.models} from the workspace`:"none from the workspace"]];process.stdout.write(l.map(([w,v])=>`${w?.padEnd(10)} ${v}
71
+ `).join(""));let f=d.filter((w)=>w.usage==="kept").map((w)=>w.name),k=[...a.usageMetadata.shared.length>0?[`Usage metadata: ${z(a.workspace??"your workspace")}`]:[],...f.length>0?[J(f)]:[]];if(k.length>0)process.stdout.write(`
72
+ ${k.join(`
73
+ `)}
74
+ `);if(a.needs)process.stdout.write(`
75
+ ${a.needs.message}${a.needs.url?`: ${a.needs.url}`:""}
76
+ `);return 0}async function ye(){let{ConsoleStore:e}=await import("./chunk-vrvsj5aj.js"),{WorkspaceSnapshot:o}=await import("./chunk-j6qa0p88.js"),{WorkspaceSync:t}=await import("./chunk-httrtddj.js"),s=e.make(),n=o.read(s)?.fetched,i=await m(t.sync(s,{force:y.quiet!==!0||process.env.OPENCODE_CONSOLE_FORCE==="1"}));if(i.snapshot?.config&&!i.error&&i.snapshot.fetched!==n){let{ClaudeCode:r}=await import("./chunk-hkjjea67.js"),{Codex:u}=await import("./chunk-n6fr9p3j.js"),{DeepSeekHarness:d}=await import("./chunk-eja0bnj7.js");await m(r.refresh(s)).catch((a)=>{if(y.quiet!==!0)process.stderr.write(`Couldn't update Claude Code: ${C(a)}
77
+ `)}),await m(u.refresh(s)).catch((a)=>{if(y.quiet!==!0)process.stderr.write(`Couldn't update Codex: ${C(a)}
78
+ `)}),await m(d.refresh(s)).catch((a)=>{if(y.quiet!==!0)process.stderr.write(`Couldn't update DeepSeek Harness: ${C(a)}
79
+ `)})}if(y.quiet===!0)return i.error?1:0;if(!i.snapshot&&!i.error)return process.stderr.write(`${D}
80
+ `),1;if(i.error){let r=o.policies(i.snapshot)?`
81
+ Policies from the last sync still apply.`:"";return process.stderr.write(`Couldn't sync: ${C(i.error)}${r}
82
+ `),1}let c=i.snapshot?.organization,p=o.policies(i.snapshot)?.length??0;return process.stdout.write(`Synced ${c?`${c}'s`:"the workspace"} config (${h(p,"policy","policies")})
83
+ `),0}async function $e(){let{ConsoleStore:e}=await import("./chunk-vrvsj5aj.js"),{ConsoleCredentials:o}=await import("./chunk-ka5nrr3r.js"),t=await m(o.fresh(e.make()));if(!t)return process.stderr.write(`${D}
77
84
  `),1;return process.stdout.write(`${t.type==="key"?t.key:t.access}
78
- `),0}async function f(e){let{Effect:o,Layer:t}=await import("./chunk-ysgtje2z.js"),{FetchHttpClient:n}=await import("./chunk-37whdg3n.js"),{WorkspaceSync:r}=await import("./chunk-g9bke322.js");return o.runPromise(e.pipe(o.provide(r.identify({version:le,harness:S}).pipe(t.provide(n.layer)))))}async function A(e={}){let{ConsoleStore:o}=await import("./chunk-zgcspk2g.js"),t=o.syncClaimFile(o.make());try{let n=o.modified(t);if(!e.always&&n!==void 0&&Date.now()-n<30000)return;o.write(t,"");let r=I()?[process.execPath]:[process.execPath,process.argv[1]];J(r[0],[...r.slice(1),"sync","--quiet",...S?["--harness",S]:[]],{detached:!0,stdio:"ignore",env:{...process.env,...e.force?{OPENCODE_CONSOLE_FORCE:"1"}:{}}}).on("error",()=>{return}).unref()}catch{return}}async function ue(e,o){let t=Date.now()+o;for(;;){let n=e();if(n!==void 0||Date.now()>=t)return n;await new Promise((r)=>setTimeout(r,25))}}async function H(e){let{ClaudeCodeHook:o}=await import("./chunk-jem7z938.js"),t=o.denial(b,e);return process.stdout.write(t.stdout),process.stderr.write(t.stderr),t.code}async function fe(e){let{execFile:o}=await import("node:child_process");return new Promise((t)=>o(e,["--version"],{timeout:1e4},(n,r)=>t(n?void 0:r.match(/\d+\.\d+\.\d+\S*/)?.[0])))}function Y(e){return process.stdout.write(`${JSON.stringify({effect:"deny",message:e})}
79
- `),2}function w(e,o,t){return`${e} ${e===1?o:t}`}function I(){return/^(\/\$bunfs\/|[A-Za-z]:[\\/]~BUN[\\/])/.test(process.argv[1]??"")}async function U(){let e=[];for await(let o of process.stdin)e.push(Buffer.from(o));return Buffer.concat(e).toString("utf8")}function h(e){return e instanceof Error?e.message:String(e)}function R(e){let o=k[e];return typeof o==="string"?o:void 0}function we(){return`opencode-console ${le}
80
- Connect coding agents to an OpenCode Console workspace: its models, MCP servers, Library and policies.
85
+ `),0}async function m(e){let{Effect:o,Layer:t}=await import("./chunk-c94982xf.js"),{FetchHttpClient:s}=await import("./chunk-qsqer89q.js"),{WorkspaceSync:n}=await import("./chunk-httrtddj.js");return o.runPromise(e.pipe(o.provide(n.identify({version:ue,harness:S}).pipe(t.provide(s.layer)))))}async function H(e={}){let{ConsoleStore:o}=await import("./chunk-vrvsj5aj.js"),t=o.syncClaimFile(o.make());try{let s=o.modified(t);if(!e.always&&s!==void 0&&Date.now()-s<30000)return;o.write(t,"");let[n,...i]=B();Q(n,[...i,"sync","--quiet",...S?["--harness",S]:[]],{detached:!0,stdio:"ignore",env:{...process.env,...e.force?{OPENCODE_CONSOLE_FORCE:"1"}:{}}}).on("error",()=>{return}).unref()}catch{return}}function B(){return b()?[process.execPath]:[process.execPath,process.argv[1]]}async function Se(e,o){let t=Date.now()+o;for(;;){let s=e();if(s!==void 0||Date.now()>=t)return s;await new Promise((n)=>setTimeout(n,25))}}async function I(e){let{ClaudeCodeHook:o}=await import("./chunk-6dmhresx.js"),t=o.denial(N,e);return process.stdout.write(t.stdout),process.stderr.write(t.stderr),t.code}async function ve(e){let{execFile:o}=await import("node:child_process");return new Promise((t)=>o(e,["--version"],{timeout:1e4},(s,n)=>t(s?void 0:n.match(/\d+\.\d+\.\d+\S*/)?.[0])))}function V(e){return process.stdout.write(`${JSON.stringify({effect:"deny",message:e})}
86
+ `),2}function h(e,o,t){return`${e} ${e===1?o:t}`}function b(){return/^(\/\$bunfs\/|[A-Za-z]:[\\/]~BUN[\\/])/.test(process.argv[1]??"")}async function R(){let e=[];for await(let o of process.stdin)e.push(Buffer.from(o));return Buffer.concat(e).toString("utf8")}function C(e){return e instanceof Error?e.message:String(e)}function j(e){let o=y[e];return typeof o==="string"?o:void 0}function Ee(){return`opencode-console ${ue}
87
+ Connect coding agents to an OpenCode Console workspace: its models, MCP servers, instructions, skills and policies.
81
88
 
82
89
  Usage: opencode-console <command> [options]
83
90
 
84
91
  Commands:
85
92
  setup <claude-code|pi|codex|deepseek-harness>
86
93
  Sign in if needed and set up Claude Code, Pi, Codex or DeepSeek Harness
87
- to use the workspace (--remove undoes it)
94
+ to use the workspace (--remove undoes it). With --keep-provider, Claude
95
+ Code or Codex keeps its own sign-in and models
88
96
  login [--server <url>] Sign in to OpenCode Console and pick a workspace
89
97
  logout Sign out and remove the stored workspace config
90
98
  status [--json] Show the sign-in, workspace and config
@@ -97,6 +105,7 @@ Commands:
97
105
  hook <claude-code|codex>
98
106
  Answer a Claude Code or Codex hook (setup registers it)
99
107
  mcp-headers <server> Print a workspace MCP server's headers (setup registers it)
108
+ otel-headers Print the headers Claude Code's usage export sends (setup registers it)
100
109
 
101
110
  Options:
102
111
  --server <url> The Console to sign in to (or set OPENCODE_CONSOLE_SERVER)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencode/console",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Connect Claude Code, Pi, Codex and DeepSeek Harness to an OpenCode Console workspace and enforce its policies",
5
5
  "keywords": [
6
6
  "opencode",
package/pi-extension.js CHANGED
@@ -1,2 +1,2 @@
1
- import"./chunk-dnepb5ke.js";import"./chunk-gvywgb0d.js";import"./chunk-0trayd9n.js";import"./chunk-wd4mfvqy.js";import{Ee,Be}from"./chunk-tx5wws16.js";import"./chunk-px1nqkzb.js";import"./chunk-rx6cjbq2.js";import"./chunk-ktx666b5.js";import"./chunk-71rwyxw2.js";import{sr,xt,ir,Le}from"./chunk-et9y1sb5.js";import{je,dr,Xe}from"./chunk-78cwb109.js";import{zo,Ko,Wo,Jo,Go,Dn,Zo,Yo}from"./chunk-vy3ahcaj.js";import"./chunk-96f5c0tj.js";import{k,L,en,Ge,Ie}from"./chunk-gxedprvk.js";var S={};k(S,{PiExtension:()=>S,default:()=>O,install:()=>R});import{existsSync as B}from"node:fs";import T from"node:path";import{anthropicMessagesApi as j,createProvider as H,googleGenerativeAIApi as K,openAICompletionsApi as q,openAIResponsesApi as D}from"@earendil-works/pi-ai/compat";import{getBuiltinModels as F,getBuiltinProviders as b}from"@earendil-works/pi-ai/providers/all";import{VERSION as G}from"@earendil-works/pi-coding-agent";async function O(e){await R(e,sr({harness:`pi/${G}`}))}var J=(e,n,o)=>{let a=b();return[...a.filter((t)=>t===e),...a.filter((t)=>t==="opencode"&&t!==e),...a.filter((t)=>t!==e&&t!=="opencode")].flatMap((t)=>F(t).filter((f)=>f.id===n&&f.api===o)).at(0)},U="opencode_workspace_instructions";async function R(e,n){let o=new Set,a=new Map,d=new Map,t=p(n),f=t?await Zo(n).catch(()=>{return}):void 0;if(zo(f??{},J).forEach((s)=>{o.add(s.id),e.registerProvider(H({id:s.id,name:s.name,auth:{apiKey:{name:"OpenCode Console",resolve:()=>V(n)}},models:s.models,api:{"anthropic-messages":P(j()),"openai-responses":P(D()),"openai-completions":P(q()),"google-generative-ai":P(K())}}))}),t&&(await Le(n).catch(()=>{return}))?.config)["opencode","opencode-go"].filter((s)=>!o.has(s)).forEach((s)=>{o.add(s),e.registerProvider(s,{models:[]})});if(t)await M(e,n,d).catch(()=>{return});let m=f&&Ko(f),h={},I=async(s)=>{let i=[...s.modelRegistry.getAll().map((c)=>c.provider),...b(),...s.modelRegistry.getRegisteredProviderIds(),...a.keys()],r=[...new Set(i)].filter((c)=>!o.has(c)),u=await ir(n,r.map((c)=>({action:"provider.use",resources:[c]}))).catch(()=>{return});r.forEach((c,w)=>{let v=u?.[w]?.effect!=="allow";if(v&&!a.has(c)){let C=s.modelRegistry.getRegisteredNativeProvider(c);a.set(c,()=>{if(e.unregisterProvider(c),C)e.registerProvider(C)}),e.registerProvider(c,{models:[]})}let x=v?void 0:a.get(c);if(x)a.delete(c),x()}),h.fetched=(await Le(n).catch(()=>{return}))?.fetched;let l=s.model,g=m&&s.modelRegistry.find(m.provider,m.id);if(g&&(!l||a.has(l.provider)))await e.setModel(g)},E=async(s)=>{let i=await Le(n);if(i?.fetched!==h.fetched)await I(s);return i};e.on("session_start",async(s,i)=>{if(!p(n)){y(i,"OpenCode Console isn't signed in. Run `npx @opencode/console login`.","warning");return}let r=await Le(n).catch(()=>{return});if(r?.status)y(i,`${r.status.message}${r.status.url?`: ${r.status.url}`:""}`,"warning");await I(i)}),e.on("resources_discover",async()=>{if(!p(n))return;let s=await Yo(n).catch(()=>A(n));return B(s)?{skillPaths:[s]}:void 0}),e.on("before_agent_start",async(s,i)=>{if(!p(n))return;let r=s.systemPromptOptions,u=r.skills??[],l=await(async()=>{let g=await E(i),c=await ir(n,u.map((w)=>({action:"skill",resources:[w.name]})));return{text:dr(g?.config?je(g.config).instructions:[]),skills:u.filter((w,v)=>c[v]?.effect==="allow")}})().catch(()=>({text:void 0,skills:[]}));if(l.text)r.sections={...r.sections,[U]:l.text};r.skills=l.skills}),e.on("tool_call",async(s,i)=>{let r=e.getAllTools(),u=r.find((c)=>c.name===s.toolName)?.namespace?.aliases?.[0],l=[...new Set([...r.flatMap((c)=>c.namespace?.aliases?.slice(0,1)??[]),...e.getMcpServers().map((c)=>c.name)])],g=await xt(n,Wo(s,{cwd:i.cwd,server:u,servers:l,skills:A(n)}));return g?.effect==="deny"?{block:!0,reason:g.message}:void 0}),e.on("user_bash",async(s,i)=>{let r=await xt(n,[Jo(s)]);if(r?.effect!=="deny")return;return y(i,r.message,"error"),{result:{output:`${r.message}
2
- `,exitCode:1,cancelled:!1,truncated:!1}}}),e.on("input",async(s,i)=>{if(p(n))await E(i).catch(()=>{return});let r=Go(s.text);if(!r)return{action:"continue"};let u=await xt(n,[{action:"skill",resources:[r]}]).catch((l)=>N(`/skill:${r}`,l));if(u?.effect!=="deny")return{action:"continue"};return y(i,u.message,"error"),{action:"handled"}}),e.on("before_provider_request",async(s,i)=>{let r=await _(n,i);if(r?.effect!=="deny")return;y(i,r.message,"error"),i.abort();return}),e.on("cache_warming_decision",async(s,i)=>(await _(n,i))?.effect==="deny"?{action:"stop"}:void 0),e.on("turn_start",()=>{if(p(n))M(e,n,d).catch(()=>{return})})}function p(e){return Ie(L(()=>Ee(e.store)!==void 0).pipe(Ge(()=>!0)))}async function _(e,n){let o=n.model?.provider;if(!o||!p(e))return;return xt(e,[{action:"provider.use",resources:[o]}]).catch((a)=>N(o,a))}function N(e,n){return{effect:"deny",message:`opencode-console couldn't check ${e}: ${n instanceof Error?n.message:String(n)}`}}var A=(e)=>T.join(Dn(e.store),"skills");async function M(e,n,o){let a=await Le(n),d=a?.config?Xe(a.config):{};[...o.keys()].filter((t)=>!(t in d)).forEach((t)=>{o.delete(t),Ie(L(()=>e.unregisterMcpServer(t)).pipe(en))}),Object.entries(d).forEach(([t,f])=>{let m={url:f.url,...f.headers?{headers:f.headers}:{}},h=JSON.stringify(m);if(o.get(t)===h)return;Ie(L(()=>{e.registerMcpServer(t,m),o.set(t,h)}).pipe(en))})}async function V(e){let n=await e.run(Be(e.store));if(!n)return;return{auth:{apiKey:n.type==="key"?n.key:n.access},source:"OpenCode Console"}}function P(e){let n=(o)=>o?.sessionId?{...o,headers:{...o.headers,"x-opencode-session":o.sessionId}}:o;return{...e,stream:(o,a,d)=>e.stream(o,a,n(d)),streamSimple:(o,a,d)=>e.streamSimple(o,a,n(d))}}function y(e,n,o){if(e.hasUI)e.ui.notify(n,o)}export{S as PiExtension,O as default,R as install};
1
+ import"./chunk-81pw2xsw.js";import"./chunk-w7jwta9c.js";import"./chunk-4hra11sy.js";import"./chunk-xsr5jd61.js";import{Ce,ze}from"./chunk-bfd21777.js";import"./chunk-172desm7.js";import"./chunk-tzhpc3tb.js";import{lt,et}from"./chunk-wvtbwbxs.js";import"./chunk-fsg05nff.js";import{ar,bt,cr,qe}from"./chunk-c8zgzn9g.js";import"./chunk-e219b1sg.js";import{Go,Vo,Zo,Yo,Qo,Ln,es,ts}from"./chunk-93je9v9b.js";import{ms}from"./chunk-17ek638g.js";import{k,j,en,ke,Oe}from"./chunk-vf7nj8yg.js";var S={};k(S,{PiExtension:()=>S,default:()=>b,install:()=>R});import{existsSync as B}from"node:fs";import T from"node:path";import{anthropicMessagesApi as H,createProvider as K,googleGenerativeAIApi as q,openAICompletionsApi as D,openAIResponsesApi as F}from"@earendil-works/pi-ai/compat";import{getBuiltinModels as G,getBuiltinProviders as O}from"@earendil-works/pi-ai/providers/all";import{VERSION as J}from"@earendil-works/pi-coding-agent";async function b(e){await R(e,ar({harness:`pi/${J}`}))}var U=(e,n,o)=>{let a=O();return[...a.filter((t)=>t===e),...a.filter((t)=>t==="opencode"&&t!==e),...a.filter((t)=>t!==e&&t!=="opencode")].flatMap((t)=>G(t).filter((f)=>f.id===n&&f.api===o)).at(0)},V="opencode_workspace_instructions";async function R(e,n){let o=new Set,a=new Map,d=new Map,t=g(n),f=t?await es(n).catch(()=>{return}):void 0;if(Go(f??{},U).forEach((s)=>{o.add(s.id),e.registerProvider(K({id:s.id,name:s.name,auth:{apiKey:{name:"OpenCode Console",resolve:()=>W(n)}},models:s.models,api:{"anthropic-messages":P(H()),"openai-responses":P(F()),"openai-completions":P(D()),"google-generative-ai":P(q())}}))}),t&&(await qe(n).catch(()=>{return}))?.config)["opencode","opencode-go"].filter((s)=>!o.has(s)).forEach((s)=>{o.add(s),e.registerProvider(s,{models:[]})});if(t)await M(e,n,d).catch(()=>{return});let m=f&&Vo(f),h={},I=async(s)=>{let i=[...s.modelRegistry.getAll().map((c)=>c.provider),...O(),...s.modelRegistry.getRegisteredProviderIds(),...a.keys()],r=[...new Set(i)].filter((c)=>!o.has(c)),u=await cr(n,r.map((c)=>({action:"provider.use",resources:[c]}))).catch(()=>{return});r.forEach((c,w)=>{let v=u?.[w]?.effect!=="allow";if(v&&!a.has(c)){let C=s.modelRegistry.getRegisteredNativeProvider(c);a.set(c,()=>{if(e.unregisterProvider(c),C)e.registerProvider(C)}),e.registerProvider(c,{models:[]})}let x=v?void 0:a.get(c);if(x)a.delete(c),x()}),h.fetched=(await qe(n).catch(()=>{return}))?.fetched;let l=s.model,p=m&&s.modelRegistry.find(m.provider,m.id);if(p&&(!l||a.has(l.provider)))await e.setModel(p)},E=async(s)=>{let i=await qe(n);if(i?.fetched!==h.fetched)await I(s);return i};e.on("session_start",async(s,i)=>{if(!g(n)){y(i,"OpenCode Console isn't signed in. Run `npx @opencode/console login`.","warning");return}let r=await qe(n).catch(()=>{return});if(r?.status)y(i,`${r.status.message}${r.status.url?`: ${r.status.url}`:""}`,"warning");await I(i)}),e.on("resources_discover",async()=>{if(!g(n))return;let s=await ts(n).catch(()=>A(n));return B(s)?{skillPaths:[s]}:void 0}),e.on("before_agent_start",async(s,i)=>{if(!g(n))return;let r=s.systemPromptOptions,u=r.skills??[],l=await(async()=>{let p=await E(i),c=await cr(n,u.map((w)=>({action:"skill",resources:[w.name]})));return{text:ms(lt(p)),skills:u.filter((w,v)=>c[v]?.effect==="allow")}})().catch(()=>({text:void 0,skills:[]}));if(l.text)r.sections={...r.sections,[V]:l.text};r.skills=l.skills}),e.on("tool_call",async(s,i)=>{let r=e.getAllTools(),u=r.find((c)=>c.name===s.toolName)?.namespace?.aliases?.[0],l=[...new Set([...r.flatMap((c)=>c.namespace?.aliases?.slice(0,1)??[]),...e.getMcpServers().map((c)=>c.name)])],p=await bt(n,Zo(s,{cwd:i.cwd,server:u,servers:l,skills:A(n)}));return p?.effect==="deny"?{block:!0,reason:p.message}:void 0}),e.on("user_bash",async(s,i)=>{let r=await bt(n,[Yo(s)]);if(r?.effect!=="deny")return;return y(i,r.message,"error"),{result:{output:`${r.message}
2
+ `,exitCode:1,cancelled:!1,truncated:!1}}}),e.on("input",async(s,i)=>{if(g(n))await E(i).catch(()=>{return});let r=Qo(s.text);if(!r)return{action:"continue"};let u=await bt(n,[{action:"skill",resources:[r]}]).catch((l)=>N(`/skill:${r}`,l));if(u?.effect!=="deny")return{action:"continue"};return y(i,u.message,"error"),{action:"handled"}}),e.on("before_provider_request",async(s,i)=>{let r=await _(n,i);if(r?.effect!=="deny")return;y(i,r.message,"error"),i.abort();return}),e.on("cache_warming_decision",async(s,i)=>(await _(n,i))?.effect==="deny"?{action:"stop"}:void 0),e.on("turn_start",()=>{if(g(n))M(e,n,d).catch(()=>{return})})}function g(e){return Oe(j(()=>Ce(e.store)!==void 0).pipe(ke(()=>!0)))}async function _(e,n){let o=n.model?.provider;if(!o||!g(e))return;return bt(e,[{action:"provider.use",resources:[o]}]).catch((a)=>N(o,a))}function N(e,n){return{effect:"deny",message:`opencode-console couldn't check ${e}: ${n instanceof Error?n.message:String(n)}`}}var A=(e)=>T.join(Ln(e.store),"skills");async function M(e,n,o){let a=await qe(n),d=et(a);[...o.keys()].filter((t)=>!(t in d)).forEach((t)=>{o.delete(t),Oe(j(()=>e.unregisterMcpServer(t)).pipe(en))}),Object.entries(d).forEach(([t,f])=>{let m={url:f.url,...f.headers?{headers:f.headers}:{}},h=JSON.stringify(m);if(o.get(t)===h)return;Oe(j(()=>{e.registerMcpServer(t,m),o.set(t,h)}).pipe(en))})}async function W(e){let n=await e.run(ze(e.store));if(!n)return;return{auth:{apiKey:n.type==="key"?n.key:n.access},source:"OpenCode Console"}}function P(e){let n=(o)=>o?.sessionId?{...o,headers:{...o.headers,"x-opencode-session":o.sessionId}}:o;return{...e,stream:(o,a,d)=>e.stream(o,a,n(d)),streamSimple:(o,a,d)=>e.streamSimple(o,a,n(d))}}function y(e,n,o){if(e.hasUI)e.ui.notify(n,o)}export{S as PiExtension,b as default,R as install};
package/chunk-0067hzw7.js DELETED
@@ -1,11 +0,0 @@
1
- import{ds,ro,Qe,fn,At,_,at,je,Xe,It,Tt}from"./chunk-78cwb109.js";import{Ot}from"./chunk-0trayd9n.js";import{ke,J,be,W}from"./chunk-wd4mfvqy.js";import{ye,Be}from"./chunk-tx5wws16.js";import{$e}from"./chunk-71rwyxw2.js";import{Ct,cr,lr}from"./chunk-96f5c0tj.js";import{le}from"./chunk-ak1n0cs7.js";import{k,F,I,L,Ge,Ie,D,z,S,e,V,v,n,x,u,B,Ze,Z}from"./chunk-gxedprvk.js";var ss={};k(ss,{DeepSeekHarness:()=>ss,MCP_SERVICE:()=>Un,REALM:()=>Xo,Route:()=>ui,SERVICE:()=>eo,TOKEN:()=>Xr,Unreadable:()=>Ln,checks:()=>ns,defaultModel:()=>pi,invokedSkills:()=>rs,manifest:()=>pn,manifestFile:()=>to,mcpConfig:()=>ts,paths:()=>ya,refresh:()=>os,remove:()=>ba,routes:()=>es});import{createHash as H}from"node:crypto";import{existsSync as K,readdirSync as U,rmSync as Y}from"node:fs";import G from"node:os";import y from"node:path";function ya(s=process.env,t=G.homedir(),o=process.platform){let r=s.DSH_HOME?.trim(),i=r!==void 0&&(r.startsWith("~/")||o==="win32"&&r.startsWith("~\\")),a=y.resolve(r?r==="~"?t:i?y.join(t,r.slice(2)):r:t,r?"":".dsh");return{home:a,patch:y.join(a,"cordis.patch.yml"),skills:y.join(a,"skills")}}var Xr="OPENCODE_CONSOLE_TOKEN",Xo="opencode-console",eo="opencodeConsole",Un="opencodeConsoleMcp",ui=n({displayName:e,api:B(["anthropic-messages","openai-responses","openai-completions"]),baseURL:e,apiKeyEnv:e,headers:x(e,e),compat:S(n({supportsDeveloperRole:v,maxTokensField:e})),models:u(n({id:e,name:e,contextWindow:S(V),maxTokens:S(V),input:u(B(["text","image"]))}))}),j={messages:"anthropic-messages",responses:"openai-responses","chat-completions":"openai-completions"};function es(s){let t=Ct(s),o=lr(t),r=Map.groupBy(t,(i)=>i.provider);return Object.fromEntries([...r].flatMap(([i,a])=>{let l=a.map(Q),p=l[0],g=p!==void 0&&l.every((m)=>m?.api===p.api&&m.url===p.url);if(!g&&o===void 0)return[];let w=g?p.api:"anthropic-messages",f={displayName:s[i]?.name??i,api:w,baseURL:g?w==="anthropic-messages"?p.url.replace(/\/v1\/?$/,""):p.url:`${o}/anthropic`,apiKeyEnv:Xr,headers:{"x-opencode-plugin":`opencode-console/${le}`},...w==="openai-completions"?{compat:{supportsDeveloperRole:!1,maxTokensField:"max_tokens"}}:{},models:a.map((m)=>X(m,g||i==="opencode"?m.id:`${i}/${m.id}`))};return[[i,f]]}))}function pi(s){let t=Ct(s),o=cr(t,"sonnet","opus","haiku");if(!o)return;let i=es(s)[o.provider]?.models.find((a)=>a.id===o.id||a.id===`${o.provider}/${o.id}`)?.id;return i===void 0?void 0:{provider:o.provider,model:i}}function Q(s){let t=_(s.entry.api),o=Object.keys(j).find((i)=>(i in t)),r=o&&at(_(t[o]).base_url);return o&&r?{api:j[o],url:r}:void 0}function X(s,t){let o=_(s.entry.limit),r=_(s.entry.modalities).input;return{id:t,name:at(s.entry.name)??s.id,...E(o.context)===void 0?{}:{contextWindow:E(o.context)},...E(o.output)===void 0?{}:{maxTokens:E(o.output)},input:Array.isArray(r)&&r.some((i)=>typeof i==="string"&&i.startsWith("image"))?["text","image"]:["text"]}}function E(s){return typeof s==="number"&&Number.isFinite(s)&&s>0?s:void 0}function ts(s,t){if(!t)throw Error(`The workspace doesn't offer the MCP server ${s} anymore`);return{serverName:s,transport:"streamable-http",url:t.url,...t.headers?{headers:{...t.headers}}:{}}}class Ln extends Error{}async function ns(s,t){let o=_(s.input),r=s.name,i=(c,d,b={})=>({action:c,resources:d,directory:t.directory,...b}),a=(c)=>{let d=o[c];return typeof d==="string"&&d!==""?d:void 0},l=(c)=>{let d=a(c);if(d===void 0)throw new Ln(`${r}'s input has no ${c}`);return d},p=(c)=>t.resolve(l(c)),g=(c)=>{let d=t.skills&&ee(t.skills,c);return d?i("skill",[d]):i("read",[c])},w=async(c)=>{let d=a(c);return d===void 0?{}:{directories:[await t.resolve(d)]}},f=(c,d={})=>i("shell",[c??""],{opaque:!0,...d}),m=async()=>i("subagent",[(a("agent_preset")??a("name")??a("runtime")??"general").toLowerCase()],await w("cwd"));if(r.startsWith("mcp__"))return ne(r,t.servers??[]).map((c)=>i(c.action,c.resources,c));switch(r){case"bash":case"pwsh":{let c=a("workdir");return[i("shell",[l("command")],{shell:r==="pwsh"?"pwsh":"bash",path:c===void 0?t.cwd:await t.resolve(c)})]}case"read":case"read_image":case"lsp":return[g(await p("file_path"))];case"write":case"edit":return[i("edit",[await p("file_path")])];case"apply_patch":{let c=te(l("input"));if(c.length===0)throw new Ln("apply_patch's input names no file");return[i("edit",await Promise.all(c.map(t.resolve)))]}case"str_replace_editor":return l("command")==="view"?[g(await p("path"))]:[i("edit",[await p("path")])];case"glob":case"grep":{let c=a("path");return[i(r,[l("pattern")],{path:c===void 0?t.cwd:await t.resolve(c)})]}case"web_fetch":return[i("webfetch",[l("url")])];case"web_search":{let c=Array.isArray(o.queries)?o.queries.filter((b)=>typeof b==="string"&&b!==""):[],d=c.length>0?c:[a("query")].flatMap((b)=>b??[]);if(d.length===0)throw new Ln("web_search's input has no queries");return[i("websearch",d)]}case"subagent":case"subagent_fork":case"spawn_teammate":case"ralph":return[await m()];case"subagent_oar":return[await m(),f(a("prompt"))];case"workflow":return[f(a("script")),i("subagent:",["*"],{truncated:!0})];case"run_code":return[f(a("code"))];case"terminal_send":return[f(a("text"))];case"terminal_open":{let c=a("cwd");return[f(a("type"),c===void 0?{}:{path:await t.resolve(c)})]}case"ask_user_question":return[i("question",["*"])];case"working_directory":return a("cd")===void 0?[]:[i("working_directory",["*"],await w("cd"))];case"skill":return[i("skill",[l("name")])];case"read_mcp_resource":case"list_mcp_resources":case"list_mcp_resource_templates":return[i("mcp.use",[l("server")])];default:return[i(r.toLowerCase(),["*"])]}}function ee(s,t){let o=y.relative(s,t);if(o===""||o.startsWith("..")||y.isAbsolute(o))return;return o.split(y.sep)[0]}function ne(s,t){let r=t.filter((a)=>s.startsWith(`mcp__${a}__`)).toSorted((a,l)=>l.length-a.length)[0]??s.match(/^mcp__(.+?)__./)?.[1];if(!r)throw new Ln(`Can't tell which MCP server ${s} belongs to`);let i=s.slice(`mcp__${r}__`.length);return[{action:"mcp.use",resources:[r]},/_[0-9a-f]{12}$/.test(s)?{action:`${r}_`,resources:["*"],truncated:!0}:{action:`${r}_${i}`,resources:["*"]}]}function te(s){return s.split(/\r?\n/).flatMap((t)=>{let o=t.trim().match(/^\*\*\* (?:Add File|Update File|Delete File|Move to): (.+)$/)?.[1]?.trim();return o?[o]:[]})}function rs(s){let t=s.flatMap((o)=>_(o.source).kind!=="user"||!Array.isArray(o.content)?[]:o.content.flatMap((r)=>{let i=_(r);return i.type==="text"&&typeof i.text==="string"?Array.from(i.text.matchAll(/(^|\s)\/([a-z0-9]+(?:-[a-z0-9]+)*)(?=\s|$)/g),(a)=>a[2]):[]}));return[...new Set(t)]}var O="# opencode-console:start",P="# opencode-console:end",re=n({provider:e,model:e}),N=n({paths:n({home:e,patch:e,skills:e}),plugin:e,harness:S(e),created:v,skills:x(e,e),providers:S(e),routes:S(x(e,ui)),model:S(Ze(re))}),to=(s)=>y.join(s.data,"deepseek-harness.json");function pn(s){let t=to(s),o=J(t);if(o===void 0)return;let r=F(z(Z(N))(o));if(!r)throw Error(`${t} can't be read, so DeepSeek Harness was left as it is. Delete it and run setup again.`);return r}var os=D("DeepSeekHarness.refresh")(function*(s,t){let o=pn(s),r=t??o;if(!r)return;let i=yield*Be(s),a=i&&$e(s,ye(i));if(!i||!a?.config)return;let l=a.config,p=je(l),g=H("sha256").update(JSON.stringify(l.providers??null)).digest("hex"),f=!t&&o?.providers===g&&o.routes!==void 0?void 0:yield*Ot(i),m=yield*It(i,r.paths.skills,p.skills,o?.skills??{});return yield*ke(s,I(()=>oe(s,{paths:r.paths,plugin:r.plugin,harness:t?t.harness:o?.harness,routes:f?es(f):o?.routes??{},model:f?pi(f):o?.model??void 0,servers:Xe(l),instructions:p.instructions.length,skills:p.skills,bundles:m,providers:g})))});function ba(s){let t=pn(s);if(!t)return!1;let o=J(t.paths.patch);if(o!==void 0){let r=q(o),i=r.after===""?r.before.replace(/\n+$/,`
2
- `):`${r.before}${r.after}`,a=i.split(`
3
- `).every((l)=>l.trim()===""||l.trimStart().startsWith("#"));if(a&&t.created)W(t.paths.patch);else if(r.marked)At(t.paths.patch,a?`${i.trimEnd()}${i.trim()===""?"":`
4
- `}[]
5
- `:i)}return Object.keys(t.skills).forEach((r)=>Y(y.join(t.paths.skills,r),{recursive:!0,force:!0})),W(Qe(t.paths.patch)),W(to(s)),!0}function oe(s,t){let o=pn(s),r=J(t.paths.patch),i=q(r??""),a=se(t.paths.patch,i),l=o?.created??r===void 0,p=[],g=(h)=>{let M=a.rows.some((R)=>R.id===h&&R.insert===void 0&&R.config!==void 0);if(M)p.push(`the ${h} row in ${t.paths.patch}`);return!M},w=Object.entries(t.servers).filter(([h])=>/^[A-Za-z0-9_-]{1,32}$/.test(h)),f=Object.keys(t.routes).length>0&&g("llm-pi-ai"),m=f&&t.model&&g("agent-default-model")?t.model:void 0,c=[{insert:[{id:"opencode-console",name:t.plugin,isolate:{credentials:Xo}},...w.map(([h])=>({id:`opencode-console-mcp-${h}`,name:"@deepseek-ai/dsh-mcp-client",inject:[Un],config:`__opencode_console_mcp__:${h}`}))]},{id:"agent-loop",inject:ie(a.rows)},...f?[{id:"llm-pi-ai",isolate:{credentials:Xo},config:{providers:t.routes}}]:[],...m?[{id:"agent-default-model",config:m}]:[]],d=[`${O} (written by \`npx @opencode/console setup deepseek-harness\`, which replaces this block on every sync; --remove takes it out)`,...c.map((h)=>`- ${JSON.stringify(h).replace(/"config":"__opencode_console_mcp__:([A-Za-z0-9_-]+)"/g,(M,R)=>`"config": !!js "ctx.${Un}.server('${R}')"`)}`),P].join(`
6
- `),b=i.marked?`${a.before}${d}
7
- ${i.after}`:`${[a.before.trimEnd(),d].filter((h)=>h!=="").join(`
8
-
9
- `)}
10
- `;if(A(t.paths.patch,b).length!==a.rows.length+c.length)throw Error(`${t.paths.patch} couldn't take setup's rows, so it was left alone. Fix it and run setup again.`);if(!o)fn(t.paths.patch);if(b!==r)At(t.paths.patch,b,384);let C=Tt(t.paths.skills,t.skills,t.bundles,o?.skills??{},{named:!0});return p.push(...C.skipped),be(to(s),JSON.stringify(N.make({paths:t.paths,plugin:t.plugin,...t.harness===void 0?{}:{harness:t.harness},created:l,skills:C.skills,providers:t.providers,routes:{...t.routes},model:t.model??null}))),{routes:f?t.routes:{},model:m,servers:w.map(([h])=>h),skills:Object.keys(C.skills),instructions:t.instructions,skipped:p,shadowed:f?ae(t.paths.home):[]}}var T={tag:"tag:yaml.org,2002:js",resolve:(s)=>s};function q(s){let t=s.match(new RegExp(`^${O}[^\\n]*\\n[\\s\\S]*?^${P}[^\\n]*(?:\\n|$)`,"m"));if(!t||t.index===void 0)return{before:s,after:"",marked:!1};return{before:s.slice(0,t.index),after:s.slice(t.index+t[0].length),marked:!0}}function A(s,t){let o=ro(t,{customTags:[T]});if(o.errors.length>0||o.warnings.length>0)throw Error(`${s} isn't YAML DeepSeek Harness reads, so it was left alone. Fix it and run setup again.`);let r=o.toJS();if(r===null||r===void 0)return[];if(!Array.isArray(r))throw Error(`${s} isn't a YAML list of patch rows, so it was left alone. Fix it and run setup again.`);return r.map((i)=>_(i))}function se(s,t){let o=`${t.before}${t.after}`,r=A(s,o),i=ro(o,{customTags:[T]}).contents;if(!ds(i)||!i.flow)return{rows:r,before:t.before};if(r.length>0)throw Error(`${s} lists its rows in flow style ([...]), so it was left alone. Write them as a block list.`);return{rows:r,before:t.before.replace(/^\s*\[\s*\][ \t]*\n?/m,"")}}function ie(s){let o=s.filter((r)=>r.id==="agent-loop"&&r.insert===void 0).map((r)=>r.inject).flatMap((r)=>Array.isArray(r)?r.filter((i)=>typeof i==="string"):Object.keys(_(r)));return[...new Set([...o,eo])]}function ae(s){let t=y.join(s,"profiles");if(!K(t))return[];return U(t,{withFileTypes:!0}).filter((o)=>o.isDirectory()&&!o.name.startsWith(".")&&o.name!=="node_modules").map((o)=>o.name).filter((o)=>{let r=y.join(t,o,"cordis.patch.yml");return Ie(L(()=>A(r,J(r)??"").some((i)=>i.id==="llm-pi-ai"&&i.insert===void 0&&i.config!==void 0)).pipe(Ge(()=>!1)))})}
11
- export{ya,Xr,Xo,eo,Un,ui,es,pi,ts,Ln,ns,rs,to,pn,os,ba,ss};
package/chunk-0trayd9n.js DELETED
@@ -1,2 +0,0 @@
1
- import{Ps,Ei,mn,ki,Sr,Ci,et,hn,_e,Ai,Ti,uo}from"./chunk-gvywgb0d.js";import{k,U,ve,xo,N,vt,Dt,G,l,wo,g,Pr,Lt,Ae,Vs,fe,D,S,d,j,e,V,n,x,u,w,Ze}from"./chunk-gxedprvk.js";var _s={};k(_s,{ConsoleClient:()=>_s,DeviceSignInFailed:()=>br,OAuth:()=>xr,SignedOut:()=>qn,SsoRequired:()=>yr,authorize:()=>Es,clientID:()=>gr,codexModelsPath:()=>ao,defaultServer:()=>ws,fetchCodexModels:()=>As,fetchConfig:()=>Cs,fetchModels:()=>Ot,fetchSkill:()=>Is,fetchSkillBlob:()=>Ts,headers:()=>wi,normalizeServer:()=>Os,refresh:()=>ks,revoke:()=>io,signedOutMessage:()=>Si,ssoMessage:()=>vi});var ws="https://opencode.ai/console",gr="opencode-console-cli",xr=n({type:d("oauth"),server:e,access:e,refresh:e,expires:V,accountID:e,email:S(e),orgID:S(e),orgName:S(e)}),Si="Signed out of OpenCode Console. Run `npx @opencode/console login` to sign in again",vi=(t)=>`Sign in with SSO again to use ${t??"your OpenCode Console workspace"}`;class yr extends N("ConsoleClient.SsoRequired"){get message(){return vi(this.organization)}}class qn extends N("ConsoleClient.SignedOut"){get message(){return Si}}class br extends N("ConsoleClient.DeviceSignInFailed"){}function wi(t){return{authorization:`Bearer ${t.type==="oauth"?t.access:t.key}`,...t.type==="oauth"&&t.orgID?{"x-org-id":t.orgID}:{}}}var v=n({device_code:e,user_code:e,verification_uri:e,verification_uri_complete:e,expires_in:V,interval:V}),h=n({access_token:e,refresh_token:e,expires_in:V,org_id:S(Ze(e))}),m=n({error:e}),R=n({id:e,email:e}),M=n({id:e,name:e}),T=n({_tag:d("SsoRequired"),connectionId:S(e)}),b=n({_tag:d("Unauthorized")}),O=x(e,j),B={access_denied:"The sign-in was denied in the browser",expired_token:"The code expired before it was approved. Start the sign-in again"},Es=D("ConsoleClient.authorize")(function*(t){let o=yield*_e,r=yield*p(`${t}/auth/device/code`,{client_id:gr,supports_org_scope:!0}).pipe(l(hn),l(et(v))),s=new URL(t).origin,i=URL.parse(r.verification_uri_complete,`${t}/`);if(!i||i.origin!==s||URL.parse(r.verification_uri,`${t}/`)?.origin!==s)return yield*new br({message:`${t} sent a sign-in link to another site (${r.verification_uri_complete}), so the sign-in stopped`});return{url:i.href,code:r.user_code,callback:f(t,r.device_code,ve(r.interval)).pipe(Ae(_e,o))}}),ks=D("ConsoleClient.refresh")(function*(t){let o=yield*p(`${t.server}/auth/device/token`,{grant_type:"refresh_token",refresh_token:t.refresh,client_id:gr});if(o.status===400){let c=yield*et(m)(o).pipe(wo);if(U(c)&&c.value.error==="invalid_grant")return yield*new qn}let r=yield*hn(o).pipe(l(et(h))),s=yield*vt,i=r.org_id??t.orgID;return xr.make({...t,access:r.access_token,refresh:r.refresh_token,expires:s+r.expires_in*1000,...i===void 0?{}:{orgID:i}})}),io=D("ConsoleClient.revoke")(function*(t){let o=yield*p(`${t.server}/auth/oauth/revoke`,{token:t.refresh,token_type_hint:"refresh_token",client_id:gr}).pipe(Pr(ve(5)));yield*hn(o)}),Cs=D("ConsoleClient.fetchConfig")(function*(t){return yield*a(t,"/api/v2/config",O)}),Ot=D("ConsoleClient.fetchModels")(function*(t){return yield*a(t,"/api/v1/models",H)}),ao="/api/v2/codex/models",As=D("ConsoleClient.fetchCodexModels")(function*(t){return yield*a(t,ao,I)}),Is=D("ConsoleClient.fetchSkill")(function*(t,o){return yield*a(t,`/api/v2/library/skills/${encodeURIComponent(o)}?format=v2`,E)}),Ts=D("ConsoleClient.fetchSkillBlob")(function*(t,o,r){return yield*C(t,`/api/v2/library/skills/${encodeURIComponent(o)}/blobs/${encodeURIComponent(r)}`,(s)=>s.arrayBuffer.pipe(g((i)=>new Uint8Array(i))))}),H=x(e,n({name:S(e),models:x(e,x(e,j))})),I=n({models:u(n({slug:e,display_name:S(e)}))}),E=n({slug:e,version:e,files:u(w([n({kind:d("text"),path:e,content:e}),n({kind:d("blob"),path:e,sha256:e})]))});function a(t,o,r){return C(t,o,et(r))}function C(t,o,r){return l(_e,(s)=>Ti(s).execute(Ps(`${t.server}${o}`).pipe(Sr,mn(wi(t)))).pipe(l((i)=>G(function*(){if(i.status===401){let c=yield*et(b)(i).pipe(wo);if(U(c))return yield*new qn}if(i.status===403){let c=yield*et(T)(i).pipe(wo);if(U(c))return yield*new yr({organization:t.type==="oauth"?t.orgName:void 0,url:A(t.server,c.value.connectionId)})}return yield*r(yield*hn(i))})),Vs,Pr(ve(10))))}function Os(t){let o=URL.parse(t);if(!o)return;let r=["localhost","127.0.0.1","[::1]"].includes(o.hostname);if(o.protocol!=="https:"&&!(o.protocol==="http:"&&r))return;return`${o.origin}${o.pathname.replace(/\/+$/,"")}`}function A(t,o){let r=encodeURIComponent(`${new URL(t).pathname.replace(/\/+$/,"")}/`);if(!o)return`${t}/login?next=${r}`;return`${t}/auth/sso/${encodeURIComponent(o)}/start?redirectTo=${r}`}function f(t,o,r){return G(function*(){yield*Lt(r);let s=yield*p(`${t}/auth/device/token`,{grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:o,client_id:gr}),i=yield*et(w([h,m]))(s);if("access_token"in i)return yield*J(t,i);if(i.error==="authorization_pending")return yield*f(t,o,r);if(i.error==="slow_down")return yield*f(t,o,xo(r,ve(5)));return yield*new br({message:B[i.error]??`The Console refused the sign-in (${i.error})`})})}var J=fe(function*(t,o){let[r,s]=yield*Dt([y(`${t}/api/user`,o.access_token,R),y(`${t}/api/orgs`,o.access_token,u(M))],{concurrency:2}),i=o.org_id==null?void 0:s.find((_)=>_.id===o.org_id);if(o.org_id!=null&&!i)return yield*new br({message:`The workspace ${o.org_id} wasn't found after signing in`});let c=yield*vt;return xr.make({type:"oauth",server:t,access:o.access_token,refresh:o.refresh_token,expires:c+o.expires_in*1000,accountID:r.id,email:r.email,...i?{orgID:i.id,orgName:i.name}:{}})});function y(t,o,r){return l(_e,(s)=>Ai(s).execute(Ps(t).pipe(Sr,ki(o)))).pipe(l(et(r)))}function p(t,o){return l(_e,(r)=>r.execute(Ei(t).pipe(Sr,Ci(o)))).pipe(Ae(uo,{redirect:"manual"}))}
2
- export{ws,gr,xr,Si,vi,yr,qn,br,wi,Es,ks,io,Cs,Ot,ao,As,Is,Ts,Os,_s};
package/chunk-37whdg3n.js DELETED
@@ -1 +0,0 @@
1
- import{co,lo,Rs,Oi}from"./chunk-gvywgb0d.js";export{Oi as FetchHttpClient,Rs as HttpClient,co as HttpClientRequest,lo as HttpClientResponse};
package/chunk-6bc9ezw6.js DELETED
@@ -1 +0,0 @@
1
- import{ar,cs,no,ls}from"./chunk-rx6cjbq2.js";import"./chunk-px1nqkzb.js";import"./chunk-gvywgb0d.js";import"./chunk-wd4mfvqy.js";import"./chunk-dnepb5ke.js";export{ls as PolicyEvaluator,ar as check,no as couldMatch,cs as statements};
package/chunk-71rwyxw2.js DELETED
@@ -1,2 +0,0 @@
1
- import{mn,_e,Ii}from"./chunk-gvywgb0d.js";import{yr,qn,Cs}from"./chunk-0trayd9n.js";import{ke}from"./chunk-wd4mfvqy.js";import{Ee,ye,jn,Be}from"./chunk-tx5wws16.js";import{gs,xs,ys,mr}from"./chunk-ktx666b5.js";import{k,P,se,vt,r,I,l,vo,g,D}from"./chunk-gxedprvk.js";var fs={};k(fs,{WorkspaceSync:()=>fs,current:()=>$e,identify:()=>us,sync:()=>ps,userAgent:()=>di});function us(e){return se(_e,g(_e,(o)=>Ii(o,mn({"user-agent":di(e),"x-opencode-plugin":`opencode-console/${e.version}`}))))}function di(e){return[e.harness?.replace(/[\r\n]/g,"").trim(),`opencode-console/${e.version}`].filter(Boolean).join(" ")}var ps=D("WorkspaceSync.sync")(function*(e,o={}){let n=Ee(e);if(!n)return yield*ke(e,I(()=>ys(e))),{snapshot:void 0};let s=yield*vt,i=ye(n),c=$e(e,i);if(c&&!o.force&&!mr(c,s))return{snapshot:c};let t=yield*Be(e).pipe(l((a)=>a?Cs(a).pipe(g((p)=>({credential:a,config:p}))):r(void 0)),vo);if(P(t)){if(!t.success)return{snapshot:void 0};return{snapshot:yield*u(e,i,{owner:i,organization:jn(t.success.credential),fetched:s,config:t.success.config})}}let f=m(t.failure);if(!f)return{snapshot:c,error:t.failure};let d=c??{owner:i,organization:jn(n)};return{snapshot:yield*u(e,i,{...d,fetched:s,status:f}),error:t.failure}});function $e(e,o){let n=gs(e);return n?.owner===o?n:void 0}function u(e,o,n){return ke(e,I(()=>{let s=Ee(e);if(!s||ye(s)!==o)return;return xs(e,n),n}))}function m(e){if(e instanceof yr)return{message:e.message,url:e.url};if(e instanceof qn)return{message:e.message};return}
2
- export{us,di,ps,$e,fs};