opencode-teammate 0.2.0-next.7 → 0.2.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/mate +33 -28
- package/dist/plugin/index.js +54 -9
- package/dist/utils/config/define.js +1 -0
- package/package.json +2 -2
package/dist/bin/mate
CHANGED
|
@@ -1,36 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var
|
|
3
|
+
var A0=Object.defineProperty;var P=($,w)=>{for(var f in w)A0($,f,{get:w[f],enumerable:!0,configurable:!0,set:(O)=>w[f]=()=>O})};var L=($,w)=>()=>($&&(w=$($=0)),w);var D$=($,w,f)=>{if(w!=null){if(typeof w!=="object"&&typeof w!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let O;if(f)O=w[Symbol.asyncDispose];if(O===void 0)O=w[Symbol.dispose];if(typeof O!=="function")throw TypeError("Object not disposable");$.push([f,O,w])}else if(f)$.push([f]);return w},_$=($,w,f)=>{let O=(G)=>w=f?new SuppressedError(G,w,"An error was suppressed during disposal"):(f=!0,G),B=(G)=>{while(G=$.pop())try{var N=G[1]&&G[1].call(G[2]);if(G[0])return Promise.resolve(N).then(B,(E)=>(O(E),B()))}catch(E){O(E)}if(f)throw w};return B()};var T$=()=>{};var S$=({onRequest:$,onSseError:w,onSseEvent:f,responseTransformer:O,responseValidator:B,sseDefaultRetryDelay:G,sseMaxRetryAttempts:N,sseMaxRetryDelay:E,sseSleepFn:U,url:Z,...W})=>{let Y,z=U??((X)=>new Promise((S)=>setTimeout(S,X)));return{stream:async function*(){let X=G??3000,S=0,g=W.signal??new AbortController().signal;while(!0){if(g.aborted)break;S++;let fw=W.headers instanceof Headers?W.headers:new Headers(W.headers);if(Y!==void 0)fw.set("Last-Event-ID",Y);try{let c={redirect:"follow",...W,body:W.serializedBody,headers:fw,signal:g},A=new Request(Z,c);if($)A=await $(Z,c);let R=await(W.fetch??globalThis.fetch)(A);if(!R.ok)throw Error(`SSE failed: ${R.status} ${R.statusText}`);if(!R.body)throw Error("No body in SSE response");let K=R.body.pipeThrough(new TextDecoderStream).getReader(),Ow="",Z$=()=>{try{K.cancel()}catch{}};g.addEventListener("abort",Z$);try{while(!0){let{done:H0,value:h0}=await K.read();if(H0)break;Ow+=h0,Ow=Ow.replace(/\r\n/g,`
|
|
4
4
|
`).replace(/\r/g,`
|
|
5
|
-
`);let
|
|
5
|
+
`);let Y$=Ow.split(`
|
|
6
6
|
|
|
7
|
-
`);
|
|
8
|
-
`),
|
|
9
|
-
`);try{c=JSON.parse(h),Lw=!0}catch{c=h}}if(Lw){if(B)await B(c);if(f)c=await f(c)}if(O?.({data:c,event:Zw,id:L,retry:X}),E$.length)yield c}}}finally{b.removeEventListener("abort",Ww),K.releaseLock()}break}catch(g){if($?.(g),N!==void 0&&S>=N)break;let A=Math.min(X*2**(S-1),E??30000);await z(A)}}}()}};var I1=(w)=>{switch(w){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},h1=(w)=>{switch(w){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},j1=(w)=>{switch(w){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},U$=({allowReserved:w,explode:$,name:O,style:f,value:B})=>{if(!$){let E=(w?B:B.map((U)=>encodeURIComponent(U))).join(h1(f));switch(f){case"label":return`.${E}`;case"matrix":return`;${O}=${E}`;case"simple":return E;default:return`${O}=${E}`}}let G=I1(f),N=B.map((E)=>{if(f==="label"||f==="simple")return w?E:encodeURIComponent(E);return v({allowReserved:w,name:O,value:E})}).join(G);return f==="label"||f==="matrix"?G+N:N},v=({allowReserved:w,name:$,value:O})=>{if(O===void 0||O===null)return"";if(typeof O==="object")throw Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${$}=${w?O:encodeURIComponent(O)}`},W$=({allowReserved:w,explode:$,name:O,style:f,value:B,valueOnly:G})=>{if(B instanceof Date)return G?B.toISOString():`${O}=${B.toISOString()}`;if(f!=="deepObject"&&!$){let U=[];Object.entries(B).forEach(([J,L])=>{U=[...U,J,w?L:encodeURIComponent(L)]});let Z=U.join(",");switch(f){case"form":return`${O}=${Z}`;case"label":return`.${Z}`;case"matrix":return`;${O}=${Z}`;default:return Z}}let N=j1(f),E=Object.entries(B).map(([U,Z])=>v({allowReserved:w,name:f==="deepObject"?`${O}[${U}]`:U,value:Z})).join(N);return f==="label"||f==="matrix"?N+E:E};function j$(w){let $=w.body!==void 0;if($&&w.bodySerializer){if("serializedBody"in w)return w.serializedBody!==void 0&&w.serializedBody!==""?w.serializedBody:null;return w.body!==""?w.body:null}if($)return w.body;return}var A1,P1=({path:w,url:$})=>{let O=$,f=$.match(A1);if(f)for(let B of f){let G=!1,N=B.substring(1,B.length-1),E="simple";if(N.endsWith("*"))G=!0,N=N.substring(0,N.length-1);if(N.startsWith("."))N=N.substring(1),E="label";else if(N.startsWith(";"))N=N.substring(1),E="matrix";let U=w[N];if(U===void 0||U===null)continue;if(Array.isArray(U)){O=O.replace(B,U$({explode:G,name:N,style:E,value:U}));continue}if(typeof U==="object"){O=O.replace(B,W$({explode:G,name:N,style:E,value:U,valueOnly:!0}));continue}if(E==="matrix"){O=O.replace(B,`;${v({name:N,value:U})}`);continue}let Z=encodeURIComponent(E==="label"?`.${U}`:U);O=O.replace(B,Z)}return O},Tw=({baseUrl:w,path:$,query:O,querySerializer:f,url:B})=>{let G=B.startsWith("/")?B:`/${B}`,N=(w??"")+G;if($)N=P1({path:$,url:N});let E=O?f(O):"";if(E.startsWith("?"))E=E.substring(1);if(E)N+=`?${E}`;return N};var A$=Y(()=>{A1=/\{[^{}]+\}/g});var Sw=async(w,$)=>{let O=typeof $==="function"?await $(w):$;if(!O)return;if(w.scheme==="bearer")return`Bearer ${O}`;if(w.scheme==="basic")return`Basic ${btoa(O)}`;return O};var P$;var x$=Y(()=>{P$={bodySerializer:(w)=>JSON.stringify(w,($,O)=>typeof O==="bigint"?O.toString():O)}});class J${fns=[];clear(){this.fns=[]}eject(w){let $=this.getInterceptorIndex(w);if(this.fns[$])this.fns[$]=null}exists(w){let $=this.getInterceptorIndex(w);return Boolean(this.fns[$])}getInterceptorIndex(w){if(typeof w==="number")return this.fns[w]?w:-1;return this.fns.indexOf(w)}update(w,$){let O=this.getInterceptorIndex(w);if(this.fns[O])return this.fns[O]=$,w;return!1}use(w){return this.fns.push(w),this.fns.length-1}}var Mw=({parameters:w={},...$}={})=>{return(f)=>{let B=[];if(f&&typeof f==="object")for(let G in f){let N=f[G];if(N===void 0||N===null)continue;let E=w[G]||$;if(Array.isArray(N)){let U=U$({allowReserved:E.allowReserved,explode:!0,name:G,style:"form",value:N,...E.array});if(U)B.push(U)}else if(typeof N==="object"){let U=W$({allowReserved:E.allowReserved,explode:!0,name:G,style:"deepObject",value:N,...E.object});if(U)B.push(U)}else{let U=v({allowReserved:E.allowReserved,name:G,value:N});if(U)B.push(U)}}return B.join("&")}},Rw=(w)=>{if(!w)return"stream";let $=w.split(";")[0]?.trim();if(!$)return;if($.startsWith("application/json")||$.endsWith("+json"))return"json";if($==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some((O)=>$.startsWith(O)))return"blob";if($.startsWith("text/"))return"text";return},x1=(w,$)=>{if(!$)return!1;if(w.headers.has($)||w.query?.[$]||w.headers.get("Cookie")?.includes(`${$}=`))return!0;return!1},Vw=async({security:w,...$})=>{for(let O of w){if(x1($,O.name))continue;let f=await Sw(O,$.auth);if(!f)continue;let B=O.name??"Authorization";switch(O.in){case"query":if(!$.query)$.query={};$.query[B]=f;break;case"cookie":$.headers.append("Cookie",`${B}=${f}`);break;case"header":default:$.headers.set(B,f);break}}},C$=(w)=>Tw({baseUrl:w.baseUrl,path:w.path,query:w.query,querySerializer:typeof w.querySerializer==="function"?w.querySerializer:Mw(w.querySerializer),url:w.url}),k$=(w,$)=>{let O={...w,...$};if(O.baseUrl?.endsWith("/"))O.baseUrl=O.baseUrl.substring(0,O.baseUrl.length-1);return O.headers=Z$(w.headers,$.headers),O},C1=(w)=>{let $=[];return w.forEach((O,f)=>{$.push([f,O])}),$},Z$=(...w)=>{let $=new Headers;for(let O of w){if(!O)continue;let f=O instanceof Headers?C1(O):Object.entries(O);for(let[B,G]of f)if(G===null)$.delete(B);else if(Array.isArray(G))for(let N of G)$.append(B,N);else if(G!==void 0)$.set(B,typeof G==="object"?JSON.stringify(G):G)}return $},zw=()=>({error:new J$,request:new J$,response:new J$}),k1,b1,O$=(w={})=>({...P$,headers:b1,parseAs:"auto",querySerializer:k1,...w});var b$=Y(()=>{x$();A$();k1=Mw({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),b1={"Content-Type":"application/json"}});var f$=(w={})=>{let $=k$(O$(),w),O=()=>({...$}),f=(Z)=>{return $=k$($,Z),O()},B=zw(),G=async(Z)=>{let J={...$,...Z,fetch:Z.fetch??$.fetch??globalThis.fetch,headers:Z$($.headers,Z.headers),serializedBody:void 0};if(J.security)await Vw({...J,security:J.security});if(J.requestValidator)await J.requestValidator(J);if(J.body!==void 0&&J.bodySerializer)J.serializedBody=J.bodySerializer(J.body);if(J.body===void 0||J.serializedBody==="")J.headers.delete("Content-Type");let L=C$(J);return{opts:J,url:L}},N=async(Z)=>{let{opts:J,url:L}=await G(Z),z={redirect:"follow",...J,body:j$(J)},M=new Request(L,z);for(let V of B.request.fns)if(V)M=await V(M,J);let F=J.fetch,X;try{X=await F(M)}catch(V){let R=V;for(let K of B.error.fns)if(K)R=await K(V,void 0,M,J);if(R=R||{},J.throwOnError)throw R;return J.responseStyle==="data"?void 0:{error:R,request:M,response:void 0}}for(let V of B.response.fns)if(V)X=await V(X,M,J);let S={request:M,response:X};if(X.ok){let V=(J.parseAs==="auto"?Rw(X.headers.get("Content-Type")):J.parseAs)??"json";if(X.status===204||X.headers.get("Content-Length")==="0"){let K;switch(V){case"arrayBuffer":case"blob":case"text":K=await X[V]();break;case"formData":K=new FormData;break;case"stream":K=X.body;break;case"json":default:K={};break}return J.responseStyle==="data"?K:{data:K,...S}}let R;switch(V){case"arrayBuffer":case"blob":case"formData":case"text":R=await X[V]();break;case"json":{let K=await X.text();R=K?JSON.parse(K):{};break}case"stream":return J.responseStyle==="data"?X.body:{data:X.body,...S}}if(V==="json"){if(J.responseValidator)await J.responseValidator(R);if(J.responseTransformer)R=await J.responseTransformer(R)}return J.responseStyle==="data"?R:{data:R,...S}}let b=await X.text(),$$;try{$$=JSON.parse(b)}catch{}let g=$$??b,A=g;for(let V of B.error.fns)if(V)A=await V(g,X,M,J);if(A=A||{},J.throwOnError)throw A;return J.responseStyle==="data"?void 0:{error:A,...S}},E=(Z)=>(J)=>N({...J,method:Z}),U=(Z)=>async(J)=>{let{opts:L,url:z}=await G(J);return _w({...L,body:L.body,headers:L.headers,method:Z,onRequest:async(M,F)=>{let X=new Request(M,F);for(let S of B.request.fns)if(S)X=await S(X,L);return X},serializedBody:j$(L),url:z})};return{buildUrl:C$,connect:E("CONNECT"),delete:E("DELETE"),get:E("GET"),getConfig:O,head:E("HEAD"),interceptors:B,options:E("OPTIONS"),patch:E("PATCH"),post:E("POST"),put:E("PUT"),request:N,setConfig:f,sse:{connect:U("CONNECT"),delete:U("DELETE"),get:U("GET"),head:U("HEAD"),options:U("OPTIONS"),patch:U("PATCH"),post:U("POST"),put:U("PUT"),trace:U("TRACE")},trace:E("TRACE")}};var g$=Y(()=>{A$();b$()});var g1,c1,Kw=(w,$)=>{if(!$)$=new Map;for(let O of w)if("in"in O){if(O.key)$.set(O.key,{in:O.in,map:O.map})}else if("key"in O)$.set(O.key,{map:O.map});else if(O.args)Kw(O.args,$);return $},d1=(w)=>{for(let[$,O]of Object.entries(w))if(O&&typeof O==="object"&&!Object.keys(O).length)delete w[$]},W=(w,$)=>{let O={body:{},headers:{},path:{},query:{}},f=Kw($),B;for(let[G,N]of w.entries()){if($[G])B=$[G];if(!B)continue;if("in"in B)if(B.key){let E=f.get(B.key),U=E.map||B.key;if(E.in)O[E.in][U]=N}else O.body=N;else for(let[E,U]of Object.entries(N??{})){let Z=f.get(E);if(Z)if(Z.in){let J=Z.map||E;O[Z.in][J]=U}else O[Z.map]=U;else{let J=c1.find(([L])=>E.startsWith(L));if(J){let[L,z]=J;O[z][E.slice(L.length)]=U}else if("allowExtra"in B&&B.allowExtra){for(let[L,z]of Object.entries(B.allowExtra))if(z){O[L][E]=U;break}}}}}return d1(O),O};var qw=Y(()=>{g1={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},c1=Object.entries(g1)});var c$=Y(()=>{x$();qw();g$();b$()});var Fw;var Hw=Y(()=>{c$();Fw=f$(O$({baseUrl:"http://localhost:4096"}))});class Q{client;constructor(w){this.client=w?.client??Fw}}class Iw{defaultKey="default";instances=new Map;get(w){let $=this.instances.get(w??this.defaultKey);if(!$)throw Error('No SDK client found. Create one with "new OpencodeClient()" to fix this error.');return $}set(w,$){this.instances.set($??this.defaultKey,w)}}var hw,jw,Aw,Pw,xw,Cw,kw,bw,gw,cw,dw,vw,yw,mw,uw,lw,pw,nw,iw,rw,ow,sw,tw,aw,ew,$0,w0,O0,f0,B0,L$;var G0=Y(()=>{Hw();c$();hw=class hw extends Q{get(w){return(w?.client??this.client).get({url:"/global/config",...w})}update(w,$){let O=W([w],[{args:[{key:"config",map:"body"}]}]);return($?.client??this.client).patch({url:"/global/config",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}};jw=class jw extends Q{health(w){return(w?.client??this.client).get({url:"/global/health",...w})}event(w){return(w?.client??this.client).sse.get({url:"/global/event",...w})}dispose(w){return(w?.client??this.client).post({url:"/global/dispose",...w})}_config;get config(){return this._config??=new hw({client:this.client})}};Aw=class Aw extends Q{remove(w,$){let O=W([w],[{args:[{in:"path",key:"providerID"}]}]);return($?.client??this.client).delete({url:"/auth/{providerID}",...$,...O})}set(w,$){let O=W([w],[{args:[{in:"path",key:"providerID"},{key:"auth",map:"body"}]}]);return($?.client??this.client).put({url:"/auth/{providerID}",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}};Pw=class Pw extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/project",...$,...O})}current(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/project/current",...$,...O})}update(w,$){let O=W([w],[{args:[{in:"path",key:"projectID"},{in:"query",key:"directory"},{in:"body",key:"name"},{in:"body",key:"icon"},{in:"body",key:"commands"}]}]);return($?.client??this.client).patch({url:"/project/{projectID}",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}};xw=class xw extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/pty",...$,...O})}create(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"command"},{in:"body",key:"args"},{in:"body",key:"cwd"},{in:"body",key:"title"},{in:"body",key:"env"}]}]);return($?.client??this.client).post({url:"/pty",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}remove(w,$){let O=W([w],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/pty/{ptyID}",...$,...O})}get(w,$){let O=W([w],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/pty/{ptyID}",...$,...O})}update(w,$){let O=W([w],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"size"}]}]);return($?.client??this.client).put({url:"/pty/{ptyID}",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}connect(w,$){let O=W([w],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/pty/{ptyID}/connect",...$,...O})}};Cw=class Cw extends Q{get(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/config",...$,...O})}update(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{key:"config",map:"body"}]}]);return($?.client??this.client).patch({url:"/config",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}providers(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/config/providers",...$,...O})}};kw=class kw extends Q{ids(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/experimental/tool/ids",...$,...O})}list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"provider"},{in:"query",key:"model"}]}]);return($?.client??this.client).get({url:"/experimental/tool",...$,...O})}};bw=class bw extends Q{remove(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{key:"worktreeRemoveInput",map:"body"}]}]);return($?.client??this.client).delete({url:"/experimental/worktree",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/experimental/worktree",...$,...O})}create(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{key:"worktreeCreateInput",map:"body"}]}]);return($?.client??this.client).post({url:"/experimental/worktree",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}reset(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{key:"worktreeResetInput",map:"body"}]}]);return($?.client??this.client).post({url:"/experimental/worktree/reset",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}};gw=class gw extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/experimental/resource",...$,...O})}};cw=class cw extends Q{_resource;get resource(){return this._resource??=new gw({client:this.client})}};dw=class dw extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"roots"},{in:"query",key:"start"},{in:"query",key:"search"},{in:"query",key:"limit"}]}]);return($?.client??this.client).get({url:"/session",...$,...O})}create(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"parentID"},{in:"body",key:"title"},{in:"body",key:"permission"}]}]);return($?.client??this.client).post({url:"/session",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}status(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/status",...$,...O})}delete(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/session/{sessionID}",...$,...O})}get(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}",...$,...O})}update(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"time"}]}]);return($?.client??this.client).patch({url:"/session/{sessionID}",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}children(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/children",...$,...O})}todo(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/todo",...$,...O})}init(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"modelID"},{in:"body",key:"providerID"},{in:"body",key:"messageID"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/init",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}fork(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/fork",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}abort(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/abort",...$,...O})}unshare(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/session/{sessionID}/share",...$,...O})}share(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/share",...$,...O})}diff(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"messageID"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/diff",...$,...O})}summarize(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"providerID"},{in:"body",key:"modelID"},{in:"body",key:"auto"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/summarize",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}messages(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"limit"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/message",...$,...O})}prompt(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"model"},{in:"body",key:"agent"},{in:"body",key:"noReply"},{in:"body",key:"tools"},{in:"body",key:"system"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/message",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}message(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/message/{messageID}",...$,...O})}promptAsync(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"model"},{in:"body",key:"agent"},{in:"body",key:"noReply"},{in:"body",key:"tools"},{in:"body",key:"system"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/prompt_async",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}command(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"agent"},{in:"body",key:"model"},{in:"body",key:"arguments"},{in:"body",key:"command"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/command",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}shell(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"agent"},{in:"body",key:"model"},{in:"body",key:"command"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/shell",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}revert(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"partID"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/revert",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}unrevert(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/unrevert",...$,...O})}};vw=class vw extends Q{delete(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"path",key:"partID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...$,...O})}update(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"path",key:"partID"},{in:"query",key:"directory"},{key:"part",map:"body"}]}]);return($?.client??this.client).patch({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}};yw=class yw extends Q{respond(w,$){let O=W([w],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"permissionID"},{in:"query",key:"directory"},{in:"body",key:"response"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/permissions/{permissionID}",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}reply(w,$){let O=W([w],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"body",key:"reply"},{in:"body",key:"message"}]}]);return($?.client??this.client).post({url:"/permission/{requestID}/reply",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/permission",...$,...O})}};mw=class mw extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/question",...$,...O})}reply(w,$){let O=W([w],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"body",key:"answers"}]}]);return($?.client??this.client).post({url:"/question/{requestID}/reply",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}reject(w,$){let O=W([w],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/question/{requestID}/reject",...$,...O})}};uw=class uw extends Q{authorize(w,$){let O=W([w],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"body",key:"method"}]}]);return($?.client??this.client).post({url:"/provider/{providerID}/oauth/authorize",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}callback(w,$){let O=W([w],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"body",key:"method"},{in:"body",key:"code"}]}]);return($?.client??this.client).post({url:"/provider/{providerID}/oauth/callback",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}};lw=class lw extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/provider",...$,...O})}auth(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/provider/auth",...$,...O})}_oauth;get oauth(){return this._oauth??=new uw({client:this.client})}};pw=class pw extends Q{text(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"pattern"}]}]);return($?.client??this.client).get({url:"/find",...$,...O})}files(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"query"},{in:"query",key:"dirs"},{in:"query",key:"type"},{in:"query",key:"limit"}]}]);return($?.client??this.client).get({url:"/find/file",...$,...O})}symbols(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"query"}]}]);return($?.client??this.client).get({url:"/find/symbol",...$,...O})}};nw=class nw extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return($?.client??this.client).get({url:"/file",...$,...O})}read(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return($?.client??this.client).get({url:"/file/content",...$,...O})}status(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/file/status",...$,...O})}};iw=class iw extends Q{remove(w,$){let O=W([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/mcp/{name}/auth",...$,...O})}start(w,$){let O=W([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/auth",...$,...O})}callback(w,$){let O=W([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"body",key:"code"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/auth/callback",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}authenticate(w,$){let O=W([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/auth/authenticate",...$,...O})}};rw=class rw extends Q{status(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/mcp",...$,...O})}add(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"name"},{in:"body",key:"config"}]}]);return($?.client??this.client).post({url:"/mcp",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}connect(w,$){let O=W([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/connect",...$,...O})}disconnect(w,$){let O=W([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/disconnect",...$,...O})}_auth;get auth(){return this._auth??=new iw({client:this.client})}};ow=class ow extends Q{next(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/tui/control/next",...$,...O})}response(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return($?.client??this.client).post({url:"/tui/control/response",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}};sw=class sw extends Q{appendPrompt(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"text"}]}]);return($?.client??this.client).post({url:"/tui/append-prompt",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}openHelp(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-help",...$,...O})}openSessions(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-sessions",...$,...O})}openThemes(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-themes",...$,...O})}openModels(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-models",...$,...O})}submitPrompt(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/submit-prompt",...$,...O})}clearPrompt(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/clear-prompt",...$,...O})}executeCommand(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"command"}]}]);return($?.client??this.client).post({url:"/tui/execute-command",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}showToast(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"message"},{in:"body",key:"variant"},{in:"body",key:"duration"}]}]);return($?.client??this.client).post({url:"/tui/show-toast",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}publish(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return($?.client??this.client).post({url:"/tui/publish",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}selectSession(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"sessionID"}]}]);return($?.client??this.client).post({url:"/tui/select-session",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}_control;get control(){return this._control??=new ow({client:this.client})}};tw=class tw extends Q{dispose(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/instance/dispose",...$,...O})}};aw=class aw extends Q{get(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/path",...$,...O})}};ew=class ew extends Q{get(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/vcs",...$,...O})}};$0=class $0 extends Q{list(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/command",...$,...O})}};w0=class w0 extends Q{log(w,$){let O=W([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"service"},{in:"body",key:"level"},{in:"body",key:"message"},{in:"body",key:"extra"}]}]);return($?.client??this.client).post({url:"/log",...$,...O,headers:{"Content-Type":"application/json",...$?.headers,...O.headers}})}agents(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/agent",...$,...O})}skills(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/skill",...$,...O})}};O0=class O0 extends Q{status(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/lsp",...$,...O})}};f0=class f0 extends Q{status(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/formatter",...$,...O})}};B0=class B0 extends Q{subscribe(w,$){let O=W([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).sse.get({url:"/event",...$,...O})}};L$=class L$ extends Q{static __registry=new Iw;constructor(w){super(w);L$.__registry.set(this,w?.key)}_global;get global(){return this._global??=new jw({client:this.client})}_auth;get auth(){return this._auth??=new Aw({client:this.client})}_project;get project(){return this._project??=new Pw({client:this.client})}_pty;get pty(){return this._pty??=new xw({client:this.client})}_config;get config(){return this._config??=new Cw({client:this.client})}_tool;get tool(){return this._tool??=new kw({client:this.client})}_worktree;get worktree(){return this._worktree??=new bw({client:this.client})}_experimental;get experimental(){return this._experimental??=new cw({client:this.client})}_session;get session(){return this._session??=new dw({client:this.client})}_part;get part(){return this._part??=new vw({client:this.client})}_permission;get permission(){return this._permission??=new yw({client:this.client})}_question;get question(){return this._question??=new mw({client:this.client})}_provider;get provider(){return this._provider??=new lw({client:this.client})}_find;get find(){return this._find??=new pw({client:this.client})}_file;get file(){return this._file??=new nw({client:this.client})}_mcp;get mcp(){return this._mcp??=new rw({client:this.client})}_tui;get tui(){return this._tui??=new sw({client:this.client})}_instance;get instance(){return this._instance??=new tw({client:this.client})}_path;get path(){return this._path??=new aw({client:this.client})}_vcs;get vcs(){return this._vcs??=new ew({client:this.client})}_command;get command(){return this._command??=new $0({client:this.client})}_app;get app(){return this._app??=new w0({client:this.client})}_lsp;get lsp(){return this._lsp??=new O0({client:this.client})}_formatter;get formatter(){return this._formatter??=new f0({client:this.client})}_event;get event(){return this._event??=new B0({client:this.client})}}});function N0(w){if(!w?.fetch)w={...w,fetch:(f)=>{return f.timeout=!1,fetch(f)}};if(w?.directory){let f=/[^\x00-\x7F]/.test(w.directory)?encodeURIComponent(w.directory):w.directory;w.headers={...w.headers,"x-opencode-directory":f}}let $=f$(w);return new L$({client:$})}var E0=Y(()=>{g$();G0();Dw()});async function U0(w){let $=await J0(w.db),O={...$[w.key],...w.state};return await Bun.write(w.db,JSON.stringify({...$,[w.key]:O})),O}async function W0(w){return(await J0(w.db))[w.key]}async function J0(w){let $=Bun.file(w);if(!await $.exists())return{};return await $.json()}var y={};P(y,{use:()=>m1,register:()=>y1});async function y1(w){if(Bun.env.OPENCODE_CLIENT)await U0({db:Z0,key:Bun.env.OPENCODE_CLIENT,state:{hostname:w.serverUrl.hostname,port:w.serverUrl.port,seenAt:new Date().toISOString(),password:Bun.env.OPENCODE_SERVER_PASSWORD,username:Bun.env.OPENCODE_SERVER_USERNAME}});return d$({url:String(w.serverUrl),password:Bun.env.OPENCODE_SERVER_PASSWORD,username:Bun.env.OPENCODE_SERVER_USERNAME,directory:w.directory})}async function m1(w){let $={desktop:async()=>{let f=await W0({db:Z0,key:"desktop"});if(!f)return;return d$({url:`http://${f.hostname??"127.0.0.1"}:${f.port}`,username:f.username,password:f.password,directory:w.project})},config:async()=>{let f=w?.opencode?.server;if(!f?.url)return;return d$({directory:w.project,...f})}},O=w?.opencode?.lookup??["desktop","config"];for(let f of O){let B=await $[f]?.();if(!B)continue;let G=await B.global.health();if(!G.data?.healthy){console.warn(`${f} server is not healthy: ${JSON.stringify(G.error)}`);continue}return console.debug(`Using ${f}: ${G.data.version}`),B}throw Error(`Opencode server not found using strategies: ${O.join(", ")}`)}function d$(w){return N0({directory:w.directory,baseUrl:w.url,headers:w.username&&w.password?{Authorization:`Basic ${btoa(`${w.username}:${w.password}`)}`}:void 0})}var Z0;var L0=Y(()=>{E0();Z0=`${Bun.env.HOME}/Library/Application Support/ai.opencode.desktop/store.json`});function X0(w){return Array.isArray(w)?w.slice():[w]}function Q0(w,$){if(!w)return{};return w.reduce((O,f)=>{let B=$(f);return O[B]=(O[B]??0)+1,O},{})}function v$(w,$){return(w==null?void 0:w.length)>0?w[0]:$}function Y$(w){return(w==null?void 0:w.filter(($)=>!!$))??[]}function D0(w){return new Promise(($)=>setTimeout($,w))}function _0(w){return(...$)=>{try{let O=w(...$);return a1(O)?O.then((f)=>[void 0,f],(f)=>[f,void 0]):[void 0,O]}catch(O){return[O,void 0]}}}function y$(){let w,$,O=new Promise((f,B)=>{w=f,$=B});return{resolve:w,reject:$,promise:O}}function B$(...w){return(...$)=>{return w.slice(1).reduce((O,f)=>f(O),w[0](...$))}}function u1(){}function T0(w,$){return new i1($).parse(w)}function m(w,$){if(!w)return[];let O=Object.entries(w);if(O.length===0)return[];return O.reduce((f,B)=>{return f.push($(B[0],B[1])),f},[])}function S0(w,$=(O)=>O===void 0){if(!w)return{};return Object.keys(w).reduce((O,f)=>{if(!$(w[f]))O[f]=w[f];return O},{})}function o1(w){if(!w||w.length===0)return"";let $=w.toLowerCase();return $.substring(0,1).toUpperCase()+$.substring(1,$.length)}function u(w,...$){var O;if(d(w)){if($.length>0)return u(w.reduce((G,N,E)=>{var U;let Z=String($[E]??""),J=Z.includes(`
|
|
10
|
-
`)&&((U=N.match(/[ \t]*(?=[^\n]*$)/))==null?void 0:U[0]);if(
|
|
11
|
-
`+
|
|
12
|
-
`){N();for(let
|
|
13
|
-
`)if(B()
|
|
14
|
-
`),B=-1,G=-1;for(let
|
|
15
|
-
`),U=
|
|
16
|
-
`)
|
|
17
|
-
${
|
|
18
|
-
`}function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
`;return f}var f1=Y(()=>{H()});import*as I$ from"path";async function*B1(w){let $=Bun.$.cwd(w.project);for await(let O of w.source){let{file:f,filepath:B}=O,{metadata:G,content:N}=w1(await f.text()),E=I$.relative(w.project,I$.format(B)),U={file:E,title:M0(B.name),description:u`
|
|
7
|
+
`);Ow=Y$.pop()??"";for(let I0 of Y$){let j0=I0.split(`
|
|
8
|
+
`),Yw=[],L$;for(let I of j0)if(I.startsWith("data:"))Yw.push(I.replace(/^data:\s*/,""));else if(I.startsWith("event:"))L$=I.replace(/^event:\s*/,"");else if(I.startsWith("id:"))Y=I.replace(/^id:\s*/,"");else if(I.startsWith("retry:")){let Q$=Number.parseInt(I.replace(/^retry:\s*/,""),10);if(!Number.isNaN(Q$))X=Q$}let d,X$=!1;if(Yw.length){let I=Yw.join(`
|
|
9
|
+
`);try{d=JSON.parse(I),X$=!0}catch{d=I}}if(X$){if(B)await B(d);if(O)d=await O(d)}if(f?.({data:d,event:L$,id:Y,retry:X}),Yw.length)yield d}}}finally{g.removeEventListener("abort",Z$),K.releaseLock()}break}catch(c){if(w?.(c),N!==void 0&&S>=N)break;let A=Math.min(X*2**(S-1),E??30000);await z(A)}}}()}};var P0=($)=>{switch($){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},x0=($)=>{switch($){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},C0=($)=>{switch($){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Lw=({allowReserved:$,explode:w,name:f,style:O,value:B})=>{if(!w){let E=($?B:B.map((U)=>encodeURIComponent(U))).join(x0(O));switch(O){case"label":return`.${E}`;case"matrix":return`;${f}=${E}`;case"simple":return E;default:return`${f}=${E}`}}let G=P0(O),N=B.map((E)=>{if(O==="label"||O==="simple")return $?E:encodeURIComponent(E);return y({allowReserved:$,name:f,value:E})}).join(G);return O==="label"||O==="matrix"?G+N:N},y=({allowReserved:$,name:w,value:f})=>{if(f===void 0||f===null)return"";if(typeof f==="object")throw Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${w}=${$?f:encodeURIComponent(f)}`},Xw=({allowReserved:$,explode:w,name:f,style:O,value:B,valueOnly:G})=>{if(B instanceof Date)return G?B.toISOString():`${f}=${B.toISOString()}`;if(O!=="deepObject"&&!w){let U=[];Object.entries(B).forEach(([W,Y])=>{U=[...U,W,$?Y:encodeURIComponent(Y)]});let Z=U.join(",");switch(O){case"form":return`${f}=${Z}`;case"label":return`.${Z}`;case"matrix":return`;${f}=${Z}`;default:return Z}}let N=C0(O),E=Object.entries(B).map(([U,Z])=>y({allowReserved:$,name:O==="deepObject"?`${f}[${U}]`:U,value:Z})).join(N);return O==="label"||O==="matrix"?N+E:E};function Pw($){let w=$.body!==void 0;if(w&&$.bodySerializer){if("serializedBody"in $)return $.serializedBody!==void 0&&$.serializedBody!==""?$.serializedBody:null;return $.body!==""?$.body:null}if(w)return $.body;return}var b0,k0=({path:$,url:w})=>{let f=w,O=w.match(b0);if(O)for(let B of O){let G=!1,N=B.substring(1,B.length-1),E="simple";if(N.endsWith("*"))G=!0,N=N.substring(0,N.length-1);if(N.startsWith("."))N=N.substring(1),E="label";else if(N.startsWith(";"))N=N.substring(1),E="matrix";let U=$[N];if(U===void 0||U===null)continue;if(Array.isArray(U)){f=f.replace(B,Lw({explode:G,name:N,style:E,value:U}));continue}if(typeof U==="object"){f=f.replace(B,Xw({explode:G,name:N,style:E,value:U,valueOnly:!0}));continue}if(E==="matrix"){f=f.replace(B,`;${y({name:N,value:U})}`);continue}let Z=encodeURIComponent(E==="label"?`.${U}`:U);f=f.replace(B,Z)}return f},M$=({baseUrl:$,path:w,query:f,querySerializer:O,url:B})=>{let G=B.startsWith("/")?B:`/${B}`,N=($??"")+G;if(w)N=k0({path:w,url:N});let E=f?O(f):"";if(E.startsWith("?"))E=E.substring(1);if(E)N+=`?${E}`;return N};var xw=L(()=>{b0=/\{[^{}]+\}/g});var R$=async($,w)=>{let f=typeof w==="function"?await w($):w;if(!f)return;if($.scheme==="bearer")return`Bearer ${f}`;if($.scheme==="basic")return`Basic ${btoa(f)}`;return f};var Cw;var bw=L(()=>{Cw={bodySerializer:($)=>JSON.stringify($,(w,f)=>typeof f==="bigint"?f.toString():f)}});class Qw{fns=[];clear(){this.fns=[]}eject($){let w=this.getInterceptorIndex($);if(this.fns[w])this.fns[w]=null}exists($){let w=this.getInterceptorIndex($);return Boolean(this.fns[w])}getInterceptorIndex($){if(typeof $==="number")return this.fns[$]?$:-1;return this.fns.indexOf($)}update($,w){let f=this.getInterceptorIndex($);if(this.fns[f])return this.fns[f]=w,$;return!1}use($){return this.fns.push($),this.fns.length-1}}var V$=({parameters:$={},...w}={})=>{return(O)=>{let B=[];if(O&&typeof O==="object")for(let G in O){let N=O[G];if(N===void 0||N===null)continue;let E=$[G]||w;if(Array.isArray(N)){let U=Lw({allowReserved:E.allowReserved,explode:!0,name:G,style:"form",value:N,...E.array});if(U)B.push(U)}else if(typeof N==="object"){let U=Xw({allowReserved:E.allowReserved,explode:!0,name:G,style:"deepObject",value:N,...E.object});if(U)B.push(U)}else{let U=y({allowReserved:E.allowReserved,name:G,value:N});if(U)B.push(U)}}return B.join("&")}},z$=($)=>{if(!$)return"stream";let w=$.split(";")[0]?.trim();if(!w)return;if(w.startsWith("application/json")||w.endsWith("+json"))return"json";if(w==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some((f)=>w.startsWith(f)))return"blob";if(w.startsWith("text/"))return"text";return},g0=($,w)=>{if(!w)return!1;if($.headers.has(w)||$.query?.[w]||$.headers.get("Cookie")?.includes(`${w}=`))return!0;return!1},K$=async({security:$,...w})=>{for(let f of $){if(g0(w,f.name))continue;let O=await R$(f,w.auth);if(!O)continue;let B=f.name??"Authorization";switch(f.in){case"query":if(!w.query)w.query={};w.query[B]=O;break;case"cookie":w.headers.append("Cookie",`${B}=${O}`);break;case"header":default:w.headers.set(B,O);break}}},kw=($)=>M$({baseUrl:$.baseUrl,path:$.path,query:$.query,querySerializer:typeof $.querySerializer==="function"?$.querySerializer:V$($.querySerializer),url:$.url}),gw=($,w)=>{let f={...$,...w};if(f.baseUrl?.endsWith("/"))f.baseUrl=f.baseUrl.substring(0,f.baseUrl.length-1);return f.headers=Dw($.headers,w.headers),f},c0=($)=>{let w=[];return $.forEach((f,O)=>{w.push([O,f])}),w},Dw=(...$)=>{let w=new Headers;for(let f of $){if(!f)continue;let O=f instanceof Headers?c0(f):Object.entries(f);for(let[B,G]of O)if(G===null)w.delete(B);else if(Array.isArray(G))for(let N of G)w.append(B,N);else if(G!==void 0)w.set(B,typeof G==="object"?JSON.stringify(G):G)}return w},q$=()=>({error:new Qw,request:new Qw,response:new Qw}),d0,v0,Bw=($={})=>({...Cw,headers:v0,parseAs:"auto",querySerializer:d0,...$});var cw=L(()=>{bw();xw();d0=V$({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),v0={"Content-Type":"application/json"}});var Gw=($={})=>{let w=gw(Bw(),$),f=()=>({...w}),O=(Z)=>{return w=gw(w,Z),f()},B=q$(),G=async(Z)=>{let W={...w,...Z,fetch:Z.fetch??w.fetch??globalThis.fetch,headers:Dw(w.headers,Z.headers),serializedBody:void 0};if(W.security)await K$({...W,security:W.security});if(W.requestValidator)await W.requestValidator(W);if(W.body!==void 0&&W.bodySerializer)W.serializedBody=W.bodySerializer(W.body);if(W.body===void 0||W.serializedBody==="")W.headers.delete("Content-Type");let Y=kw(W);return{opts:W,url:Y}},N=async(Z)=>{let{opts:W,url:Y}=await G(Z),z={redirect:"follow",...W,body:Pw(W)},M=new Request(Y,z);for(let V of B.request.fns)if(V)M=await V(M,W);let H=W.fetch,X;try{X=await H(M)}catch(V){let R=V;for(let K of B.error.fns)if(K)R=await K(V,void 0,M,W);if(R=R||{},W.throwOnError)throw R;return W.responseStyle==="data"?void 0:{error:R,request:M,response:void 0}}for(let V of B.response.fns)if(V)X=await V(X,M,W);let S={request:M,response:X};if(X.ok){let V=(W.parseAs==="auto"?z$(X.headers.get("Content-Type")):W.parseAs)??"json";if(X.status===204||X.headers.get("Content-Length")==="0"){let K;switch(V){case"arrayBuffer":case"blob":case"text":K=await X[V]();break;case"formData":K=new FormData;break;case"stream":K=X.body;break;case"json":default:K={};break}return W.responseStyle==="data"?K:{data:K,...S}}let R;switch(V){case"arrayBuffer":case"blob":case"formData":case"text":R=await X[V]();break;case"json":{let K=await X.text();R=K?JSON.parse(K):{};break}case"stream":return W.responseStyle==="data"?X.body:{data:X.body,...S}}if(V==="json"){if(W.responseValidator)await W.responseValidator(R);if(W.responseTransformer)R=await W.responseTransformer(R)}return W.responseStyle==="data"?R:{data:R,...S}}let g=await X.text(),fw;try{fw=JSON.parse(g)}catch{}let c=fw??g,A=c;for(let V of B.error.fns)if(V)A=await V(c,X,M,W);if(A=A||{},W.throwOnError)throw A;return W.responseStyle==="data"?void 0:{error:A,...S}},E=(Z)=>(W)=>N({...W,method:Z}),U=(Z)=>async(W)=>{let{opts:Y,url:z}=await G(W);return S$({...Y,body:Y.body,headers:Y.headers,method:Z,onRequest:async(M,H)=>{let X=new Request(M,H);for(let S of B.request.fns)if(S)X=await S(X,Y);return X},serializedBody:Pw(Y),url:z})};return{buildUrl:kw,connect:E("CONNECT"),delete:E("DELETE"),get:E("GET"),getConfig:f,head:E("HEAD"),interceptors:B,options:E("OPTIONS"),patch:E("PATCH"),post:E("POST"),put:E("PUT"),request:N,setConfig:O,sse:{connect:U("CONNECT"),delete:U("DELETE"),get:U("GET"),head:U("HEAD"),options:U("OPTIONS"),patch:U("PATCH"),post:U("POST"),put:U("PUT"),trace:U("TRACE")},trace:E("TRACE")}};var dw=L(()=>{xw();cw()});var y0,m0,F$=($,w)=>{if(!w)w=new Map;for(let f of $)if("in"in f){if(f.key)w.set(f.key,{in:f.in,map:f.map})}else if("key"in f)w.set(f.key,{map:f.map});else if(f.args)F$(f.args,w);return w},u0=($)=>{for(let[w,f]of Object.entries($))if(f&&typeof f==="object"&&!Object.keys(f).length)delete $[w]},J=($,w)=>{let f={body:{},headers:{},path:{},query:{}},O=F$(w),B;for(let[G,N]of $.entries()){if(w[G])B=w[G];if(!B)continue;if("in"in B)if(B.key){let E=O.get(B.key),U=E.map||B.key;if(E.in)f[E.in][U]=N}else f.body=N;else for(let[E,U]of Object.entries(N??{})){let Z=O.get(E);if(Z)if(Z.in){let W=Z.map||E;f[Z.in][W]=U}else f[Z.map]=U;else{let W=m0.find(([Y])=>E.startsWith(Y));if(W){let[Y,z]=W;f[z][E.slice(Y.length)]=U}else if("allowExtra"in B&&B.allowExtra){for(let[Y,z]of Object.entries(B.allowExtra))if(z){f[Y][E]=U;break}}}}}return u0(f),f};var H$=L(()=>{y0={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},m0=Object.entries(y0)});var vw=L(()=>{bw();H$();dw();cw()});var h$;var I$=L(()=>{vw();h$=Gw(Bw({baseUrl:"http://localhost:4096"}))});class Q{client;constructor($){this.client=$?.client??h$}}class j${defaultKey="default";instances=new Map;get($){let w=this.instances.get($??this.defaultKey);if(!w)throw Error('No SDK client found. Create one with "new OpencodeClient()" to fix this error.');return w}set($,w){this.instances.set(w??this.defaultKey,$)}}var A$,P$,x$,C$,b$,k$,g$,c$,d$,v$,y$,m$,u$,l$,n$,p$,i$,r$,o$,s$,t$,a$,e$,wf,$f,ff,Of,Bf,Gf,Nf,_w;var Ef=L(()=>{I$();vw();A$=class A$ extends Q{get($){return($?.client??this.client).get({url:"/global/config",...$})}update($,w){let f=J([$],[{args:[{key:"config",map:"body"}]}]);return(w?.client??this.client).patch({url:"/global/config",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}};P$=class P$ extends Q{health($){return($?.client??this.client).get({url:"/global/health",...$})}event($){return($?.client??this.client).sse.get({url:"/global/event",...$})}dispose($){return($?.client??this.client).post({url:"/global/dispose",...$})}_config;get config(){return this._config??=new A$({client:this.client})}};x$=class x$ extends Q{remove($,w){let f=J([$],[{args:[{in:"path",key:"providerID"}]}]);return(w?.client??this.client).delete({url:"/auth/{providerID}",...w,...f})}set($,w){let f=J([$],[{args:[{in:"path",key:"providerID"},{key:"auth",map:"body"}]}]);return(w?.client??this.client).put({url:"/auth/{providerID}",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}};C$=class C$ extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/project",...w,...f})}current($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/project/current",...w,...f})}update($,w){let f=J([$],[{args:[{in:"path",key:"projectID"},{in:"query",key:"directory"},{in:"body",key:"name"},{in:"body",key:"icon"},{in:"body",key:"commands"}]}]);return(w?.client??this.client).patch({url:"/project/{projectID}",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}};b$=class b$ extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/pty",...w,...f})}create($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"command"},{in:"body",key:"args"},{in:"body",key:"cwd"},{in:"body",key:"title"},{in:"body",key:"env"}]}]);return(w?.client??this.client).post({url:"/pty",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}remove($,w){let f=J([$],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).delete({url:"/pty/{ptyID}",...w,...f})}get($,w){let f=J([$],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/pty/{ptyID}",...w,...f})}update($,w){let f=J([$],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"size"}]}]);return(w?.client??this.client).put({url:"/pty/{ptyID}",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}connect($,w){let f=J([$],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/pty/{ptyID}/connect",...w,...f})}};k$=class k$ extends Q{get($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/config",...w,...f})}update($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{key:"config",map:"body"}]}]);return(w?.client??this.client).patch({url:"/config",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}providers($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/config/providers",...w,...f})}};g$=class g$ extends Q{ids($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/experimental/tool/ids",...w,...f})}list($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"query",key:"provider"},{in:"query",key:"model"}]}]);return(w?.client??this.client).get({url:"/experimental/tool",...w,...f})}};c$=class c$ extends Q{remove($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{key:"worktreeRemoveInput",map:"body"}]}]);return(w?.client??this.client).delete({url:"/experimental/worktree",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/experimental/worktree",...w,...f})}create($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{key:"worktreeCreateInput",map:"body"}]}]);return(w?.client??this.client).post({url:"/experimental/worktree",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}reset($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{key:"worktreeResetInput",map:"body"}]}]);return(w?.client??this.client).post({url:"/experimental/worktree/reset",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}};d$=class d$ extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/experimental/resource",...w,...f})}};v$=class v$ extends Q{_resource;get resource(){return this._resource??=new d$({client:this.client})}};y$=class y$ extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"query",key:"roots"},{in:"query",key:"start"},{in:"query",key:"search"},{in:"query",key:"limit"}]}]);return(w?.client??this.client).get({url:"/session",...w,...f})}create($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"parentID"},{in:"body",key:"title"},{in:"body",key:"permission"}]}]);return(w?.client??this.client).post({url:"/session",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}status($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/session/status",...w,...f})}delete($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).delete({url:"/session/{sessionID}",...w,...f})}get($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/session/{sessionID}",...w,...f})}update($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"time"}]}]);return(w?.client??this.client).patch({url:"/session/{sessionID}",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}children($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/session/{sessionID}/children",...w,...f})}todo($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/session/{sessionID}/todo",...w,...f})}init($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"modelID"},{in:"body",key:"providerID"},{in:"body",key:"messageID"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/init",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}fork($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/fork",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}abort($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/abort",...w,...f})}unshare($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).delete({url:"/session/{sessionID}/share",...w,...f})}share($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/share",...w,...f})}diff($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"messageID"}]}]);return(w?.client??this.client).get({url:"/session/{sessionID}/diff",...w,...f})}summarize($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"providerID"},{in:"body",key:"modelID"},{in:"body",key:"auto"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/summarize",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}messages($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"limit"}]}]);return(w?.client??this.client).get({url:"/session/{sessionID}/message",...w,...f})}prompt($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"model"},{in:"body",key:"agent"},{in:"body",key:"noReply"},{in:"body",key:"tools"},{in:"body",key:"system"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/message",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}message($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/session/{sessionID}/message/{messageID}",...w,...f})}promptAsync($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"model"},{in:"body",key:"agent"},{in:"body",key:"noReply"},{in:"body",key:"tools"},{in:"body",key:"system"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/prompt_async",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}command($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"agent"},{in:"body",key:"model"},{in:"body",key:"arguments"},{in:"body",key:"command"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/command",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}shell($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"agent"},{in:"body",key:"model"},{in:"body",key:"command"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/shell",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}revert($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"partID"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/revert",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}unrevert($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/unrevert",...w,...f})}};m$=class m$ extends Q{delete($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"path",key:"partID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).delete({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...w,...f})}update($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"path",key:"partID"},{in:"query",key:"directory"},{key:"part",map:"body"}]}]);return(w?.client??this.client).patch({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}};u$=class u$ extends Q{respond($,w){let f=J([$],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"permissionID"},{in:"query",key:"directory"},{in:"body",key:"response"}]}]);return(w?.client??this.client).post({url:"/session/{sessionID}/permissions/{permissionID}",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}reply($,w){let f=J([$],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"body",key:"reply"},{in:"body",key:"message"}]}]);return(w?.client??this.client).post({url:"/permission/{requestID}/reply",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/permission",...w,...f})}};l$=class l$ extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/question",...w,...f})}reply($,w){let f=J([$],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"body",key:"answers"}]}]);return(w?.client??this.client).post({url:"/question/{requestID}/reply",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}reject($,w){let f=J([$],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/question/{requestID}/reject",...w,...f})}};n$=class n$ extends Q{authorize($,w){let f=J([$],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"body",key:"method"}]}]);return(w?.client??this.client).post({url:"/provider/{providerID}/oauth/authorize",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}callback($,w){let f=J([$],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"body",key:"method"},{in:"body",key:"code"}]}]);return(w?.client??this.client).post({url:"/provider/{providerID}/oauth/callback",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}};p$=class p$ extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/provider",...w,...f})}auth($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/provider/auth",...w,...f})}_oauth;get oauth(){return this._oauth??=new n$({client:this.client})}};i$=class i$ extends Q{text($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"query",key:"pattern"}]}]);return(w?.client??this.client).get({url:"/find",...w,...f})}files($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"query",key:"query"},{in:"query",key:"dirs"},{in:"query",key:"type"},{in:"query",key:"limit"}]}]);return(w?.client??this.client).get({url:"/find/file",...w,...f})}symbols($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"query",key:"query"}]}]);return(w?.client??this.client).get({url:"/find/symbol",...w,...f})}};r$=class r$ extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return(w?.client??this.client).get({url:"/file",...w,...f})}read($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return(w?.client??this.client).get({url:"/file/content",...w,...f})}status($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/file/status",...w,...f})}};o$=class o$ extends Q{remove($,w){let f=J([$],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).delete({url:"/mcp/{name}/auth",...w,...f})}start($,w){let f=J([$],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/mcp/{name}/auth",...w,...f})}callback($,w){let f=J([$],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"body",key:"code"}]}]);return(w?.client??this.client).post({url:"/mcp/{name}/auth/callback",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}authenticate($,w){let f=J([$],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/mcp/{name}/auth/authenticate",...w,...f})}};s$=class s$ extends Q{status($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/mcp",...w,...f})}add($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"name"},{in:"body",key:"config"}]}]);return(w?.client??this.client).post({url:"/mcp",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}connect($,w){let f=J([$],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/mcp/{name}/connect",...w,...f})}disconnect($,w){let f=J([$],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/mcp/{name}/disconnect",...w,...f})}_auth;get auth(){return this._auth??=new o$({client:this.client})}};t$=class t$ extends Q{next($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/tui/control/next",...w,...f})}response($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return(w?.client??this.client).post({url:"/tui/control/response",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}};a$=class a$ extends Q{appendPrompt($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"text"}]}]);return(w?.client??this.client).post({url:"/tui/append-prompt",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}openHelp($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/tui/open-help",...w,...f})}openSessions($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/tui/open-sessions",...w,...f})}openThemes($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/tui/open-themes",...w,...f})}openModels($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/tui/open-models",...w,...f})}submitPrompt($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/tui/submit-prompt",...w,...f})}clearPrompt($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/tui/clear-prompt",...w,...f})}executeCommand($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"command"}]}]);return(w?.client??this.client).post({url:"/tui/execute-command",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}showToast($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"message"},{in:"body",key:"variant"},{in:"body",key:"duration"}]}]);return(w?.client??this.client).post({url:"/tui/show-toast",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}publish($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return(w?.client??this.client).post({url:"/tui/publish",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}selectSession($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"sessionID"}]}]);return(w?.client??this.client).post({url:"/tui/select-session",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}_control;get control(){return this._control??=new t$({client:this.client})}};e$=class e$ extends Q{dispose($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).post({url:"/instance/dispose",...w,...f})}};wf=class wf extends Q{get($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/path",...w,...f})}};$f=class $f extends Q{get($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/vcs",...w,...f})}};ff=class ff extends Q{list($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/command",...w,...f})}};Of=class Of extends Q{log($,w){let f=J([$],[{args:[{in:"query",key:"directory"},{in:"body",key:"service"},{in:"body",key:"level"},{in:"body",key:"message"},{in:"body",key:"extra"}]}]);return(w?.client??this.client).post({url:"/log",...w,...f,headers:{"Content-Type":"application/json",...w?.headers,...f.headers}})}agents($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/agent",...w,...f})}skills($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/skill",...w,...f})}};Bf=class Bf extends Q{status($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/lsp",...w,...f})}};Gf=class Gf extends Q{status($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).get({url:"/formatter",...w,...f})}};Nf=class Nf extends Q{subscribe($,w){let f=J([$],[{args:[{in:"query",key:"directory"}]}]);return(w?.client??this.client).sse.get({url:"/event",...w,...f})}};_w=class _w extends Q{static __registry=new j$;constructor($){super($);_w.__registry.set(this,$?.key)}_global;get global(){return this._global??=new P$({client:this.client})}_auth;get auth(){return this._auth??=new x$({client:this.client})}_project;get project(){return this._project??=new C$({client:this.client})}_pty;get pty(){return this._pty??=new b$({client:this.client})}_config;get config(){return this._config??=new k$({client:this.client})}_tool;get tool(){return this._tool??=new g$({client:this.client})}_worktree;get worktree(){return this._worktree??=new c$({client:this.client})}_experimental;get experimental(){return this._experimental??=new v$({client:this.client})}_session;get session(){return this._session??=new y$({client:this.client})}_part;get part(){return this._part??=new m$({client:this.client})}_permission;get permission(){return this._permission??=new u$({client:this.client})}_question;get question(){return this._question??=new l$({client:this.client})}_provider;get provider(){return this._provider??=new p$({client:this.client})}_find;get find(){return this._find??=new i$({client:this.client})}_file;get file(){return this._file??=new r$({client:this.client})}_mcp;get mcp(){return this._mcp??=new s$({client:this.client})}_tui;get tui(){return this._tui??=new a$({client:this.client})}_instance;get instance(){return this._instance??=new e$({client:this.client})}_path;get path(){return this._path??=new wf({client:this.client})}_vcs;get vcs(){return this._vcs??=new $f({client:this.client})}_command;get command(){return this._command??=new ff({client:this.client})}_app;get app(){return this._app??=new Of({client:this.client})}_lsp;get lsp(){return this._lsp??=new Bf({client:this.client})}_formatter;get formatter(){return this._formatter??=new Gf({client:this.client})}_event;get event(){return this._event??=new Nf({client:this.client})}}});function Uf($){if(!$?.fetch)$={...$,fetch:(O)=>{return O.timeout=!1,fetch(O)}};if($?.directory){let O=/[^\x00-\x7F]/.test($.directory)?encodeURIComponent($.directory):$.directory;$.headers={...$.headers,"x-opencode-directory":O}}let w=Gw($);return new _w({client:w})}var Jf=L(()=>{dw();Ef();T$()});async function Wf($){let w=await Yf($.db),f={...w[$.key],...$.state};return await Bun.write($.db,JSON.stringify({...w,[$.key]:f})),f}async function Zf($){return(await Yf($.db))[$.key]}async function Yf($){let w=Bun.file($);if(!await w.exists())return{};return await w.json()}var m={};P(m,{use:()=>p0,register:()=>n0});async function n0($){if(Bun.env.OPENCODE_CLIENT)await Wf({db:Lf,key:Bun.env.OPENCODE_CLIENT,state:{hostname:$.serverUrl.hostname,port:$.serverUrl.port,seenAt:new Date().toISOString(),password:Bun.env.OPENCODE_SERVER_PASSWORD,username:Bun.env.OPENCODE_SERVER_USERNAME}});return yw({url:String($.serverUrl),password:Bun.env.OPENCODE_SERVER_PASSWORD,username:Bun.env.OPENCODE_SERVER_USERNAME,directory:$.directory})}async function p0($){let w={desktop:async()=>{let O=await Zf({db:Lf,key:"desktop"});if(!O)return;return yw({url:`http://${O.hostname??"127.0.0.1"}:${O.port}`,username:O.username,password:O.password,directory:$.project})},config:async()=>{let O=$?.opencode?.server;if(!O?.url)return;return yw({directory:$.project,...O})}},f=$?.opencode?.lookup??["desktop","config"];for(let O of f){let B=await w[O]?.();if(!B)continue;let G=await B.global.health();if(!G.data?.healthy){console.warn(`${O} server is not healthy: ${JSON.stringify(G.error)}`);continue}return console.debug(`Using ${O}: ${G.data.version}`),B}throw Error(`Opencode server not found using strategies: ${f.join(", ")}`)}function yw($){return Uf({directory:$.directory,baseUrl:$.url,headers:$.username&&$.password?{Authorization:`Basic ${btoa(`${$.username}:${$.password}`)}`}:void 0})}var Lf;var Xf=L(()=>{Jf();Lf=`${Bun.env.HOME}/Library/Application Support/ai.opencode.desktop/store.json`});function Df($){return Array.isArray($)?$.slice():[$]}function _f($,w){if(!$)return{};return $.reduce((f,O)=>{let B=w(O);return f[B]=(f[B]??0)+1,f},{})}function mw($,w){return($==null?void 0:$.length)>0?$[0]:w}function Tw($){return($==null?void 0:$.filter((w)=>!!w))??[]}function Tf($){return new Promise((w)=>setTimeout(w,$))}function Sf($){return(...w)=>{try{let f=$(...w);return fO(f)?f.then((O)=>[void 0,O],(O)=>[O,void 0]):[void 0,f]}catch(f){return[f,void 0]}}}function uw(){let $,w,f=new Promise((O,B)=>{$=O,w=B});return{resolve:$,reject:w,promise:f}}function Nw(...$){return(...w)=>{return $.slice(1).reduce((f,O)=>O(f),$[0](...w))}}function i0(){}function Mf($,w){return new t0(w).parse($)}function u($,w){if(!$)return[];let f=Object.entries($);if(f.length===0)return[];return f.reduce((O,B)=>{return O.push(w(B[0],B[1])),O},[])}function Rf($,w=(f)=>f===void 0){if(!$)return{};return Object.keys($).reduce((f,O)=>{if(!w($[O]))f[O]=$[O];return f},{})}function e0($){if(!$||$.length===0)return"";let w=$.toLowerCase();return w.substring(0,1).toUpperCase()+w.substring(1,w.length)}function x($,...w){var f;if(v($)){if(w.length>0)return x($.reduce((G,N,E)=>{var U;let Z=String(w[E]??""),W=Z.includes(`
|
|
10
|
+
`)&&((U=N.match(/[ \t]*(?=[^\n]*$)/))==null?void 0:U[0]);if(W)Z=Z.replace(/\n(?=[^\n]*?\S)/g,`
|
|
11
|
+
`+W);return G+N+Z},""));$=$[0]}let O=w[0]??((f=$.match(/^[ \t]*(?=\S)/m))==null?void 0:f[0]);return(O?$.replace(new RegExp(`^${O}`,"gm"),""):$).replace(/^[ \t]*\n|\n[ \t]*$/g,"")}function Vf($){if(!$)return"";return $.split(/(?=[A-Z])|[\.\-\s_]/).map((w)=>w.trim()).filter((w)=>!!w).map((w)=>e0(w.toLowerCase())).join(" ")}function T($,w){if(!$)throw w instanceof Error?w:Error(w??"Assertion failed")}function zf($){return typeof $==="boolean"}function wO($){return Ff($,"[object Date]")}function C($){if(typeof $!=="object"||$===null)return!$||$===!0;if(wO($))return Number.isNaN($.getTime());let w=$.length;if(Qf(w))return w===0;let f=$.size;if(Qf(f))return f===0;return Object.keys($).length===0}function $O($){return typeof $==="function"}function Kf($){return $===null||$===void 0}function Qf($){return typeof $==="number"&&!Number.isNaN($)}function Ew($){return Ff($,"[object Object]")}function fO($){return!!$&&$O($.then)}function qf($){return typeof $==="string"}function Ff($,w){return Object.prototype.toString.call($)===w}var r0=class{constructor({units:$,short:w}){this.units=$,this.short=w}parse($){var w;let f=$.match(/^(-?\d+(?:\.\d+)?) ?(\w+)?s?$/);if(!f)throw Error(`Invalid quantity, cannot parse: ${$}`);let O=f[2];O=((w=this.short)==null?void 0:w[O])||O;let B=Number.parseFloat(f[1]);if(Math.abs(B)>1&&O.endsWith("s"))O=O.substring(0,O.length-1);if(!this.units[O])throw Error(`Invalid unit: ${O}, makes sure it is one of: ${Object.keys(this.units).join(", ")}`);return B*this.units[O]}},o0,s0,t0,a0=class{constructor($,w,f){this.semaphore=$,this.request=w,this.weight=f}release(){this.semaphore.release(this),this.release=i0}},Sw=class{constructor($){if(this.maxCapacity=$,this.queue=[],$<=0)throw Error("maxCapacity must be > 0");this.capacity=$}get queueLength(){return this.queue.length}async acquire({signal:$,weight:w=1}={}){if(w<=0)throw Error("weight must be > 0");if(w>this.maxCapacity)throw Error("weight must be \u2264 maxCapacity");let f=uw(),O=new a0(this,f,w);if($){let B=()=>{let N=this.queue.indexOf(O);if(N>=0)this.queue.splice(N,1),f.reject($.reason)};$.addEventListener("abort",B);let G=()=>{$.removeEventListener("abort",B)};f.promise.then(G,G)}if(this.capacity<w)this.queue.push(O),await f.promise;else this.capacity-=w;return O}reject($){this.acquire=()=>Promise.reject($),this.queue.forEach((w)=>w.request.reject($)),this.queue=[]}release($){this.capacity+=$.weight;let w=this.queue[0];if(w&&this.capacity>=w.weight)this.capacity-=w.weight,this.queue.shift(),w.request.resolve()}},v;var q=L(()=>{o0={week:604800000,day:86400000,hour:3600000,minute:60000,second:1000,millisecond:1},s0={w:"week",d:"day",h:"hour",m:"minute",s:"second",ms:"millisecond"},t0=class $ extends r0{constructor(w){super({units:{...$.units,...w==null?void 0:w.units},short:{...$.shortUnits,...w==null?void 0:w.short}})}static get units(){return o0}static get shortUnits(){return s0}};v=(()=>Array.isArray)()});var Mw={};P(Mw,{use:()=>OO,getProjectLabel:()=>BO,getProjectHint:()=>GO});async function OO($,w){let{data:f,error:O}=await $.project.current({directory:w??process.cwd()});T(f,`Cannot use project: ${JSON.stringify(O)}`);let B=f.id.slice(0,5);return{...f,label:f.name??f.worktree,hint:f.name?`${f.worktree} - ${B}`:B}}function BO($){return $.name??$.worktree}function GO($){let w=$.id.slice(0,5);return $.name?`${$.worktree} - ${w}`:w}var Hf=L(()=>{q()});var lw=L(()=>{Xf();Hf()});import{loadConfig as NO}from"c12";async function l($){let{config:w,_configFile:f}=await NO({name:"teammate",cwd:$.cwd,configFile:$.configFile,overrides:$.overries,packageJson:!1});return console.debug(`Config loaded from: ${f}`),w}var Rw=()=>{};var If={};P(If,{default:()=>WO});import{defineCommand as EO,option as UO}from"@bunli/core";import{z as JO}from"zod";var WO;var jf=L(()=>{lw();Rw();WO=EO({name:"health",description:"Check opencode server health",options:{config:UO(JO.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({flags:$})=>{let w=await l({configFile:$.config}),f=await m.use(w),O=await Mw.use(f,w.project);console.log({project:O})}})});function _($){return(w)=>{if(!process.stdout.isTTY||process.env.NO_COLOR)return w;return`\x1B[${$}m${w}\x1B[0m`}}function ZO($){return $.replace(/\x1b\[[0-9;]*m/g,"")}async function Cf($){process.stdout.write($);for await(let w of console)return w;return""}async function Vw($,w={}){let f=w.default?` (${w.default})`:"",O=`${$}${f} `;while(!0){let G=(await Cf(O)).trim()||w.default||"";if(w.schema){let N=await w.schema["~standard"].validate(G);if(N.issues){console.error(F.red("Invalid input:"));for(let E of N.issues)console.error(F.dim(` \u2022 ${E.message}`));console.error();continue}return N.value}if(w.validate){let N=w.validate(G);if(N===!0)return G;else if(typeof N==="string"){console.error(`\u2717 ${N}`);continue}else{console.error("\u2717 Invalid input");continue}}return G}}async function zw($,w={}){let f=w.default===!0?"Y/n":w.default===!1?"y/N":"y/n",O=`${$} (${f}) `;while(!0){let G=(await Cf(O)).trim().toLowerCase();if(!G&&w.default!==void 0)return w.default;if(G==="y"||G==="yes")return!0;if(G==="n"||G==="no")return!1;console.error("\u2717 Please answer with y/yes or n/no")}}async function bf($,w){let{options:f,default:O}=w,B=O?f.findIndex((G)=>G.value===O):0;if(B===-1)B=0;return console.log($),process.stdout.write(XO),pw(f,B),new Promise((G)=>{process.stdin.setRawMode(!0),process.stdin.resume();let N=()=>{process.stdin.setRawMode(!1),process.stdin.pause(),process.stdout.write(QO)};process.stdin.on("data",(E)=>{let U=E.toString();if(U==="\x1B[A")B=Math.max(0,B-1),pw(f,B);else if(U==="\x1B[B")B=Math.min(f.length-1,B+1),pw(f,B);else if(U==="\r"||U===`
|
|
12
|
+
`){N();for(let W=0;W<f.length;W++)process.stdout.write(`${n}1A${xf}`);let Z=f[B];if(Z)console.log(`\u2713 ${Z.label}`),G(Z.value)}else if(U==="\x03"||U==="\x1B")N(),process.exit(0)})})}function pw($,w){for(let f=0;f<$.length;f++)process.stdout.write(`${n}1A`);$.forEach((f,O)=>{process.stdout.write(xf+LO);let B=O===w?"\u276F ":" ",G=f.hint?` (${f.hint})`:"";console.log(`${B}${f.label}${G}`)})}async function Kw($,w={}){return process.stdout.write($+" "),new Promise((f)=>{let O="";process.stdin.setRawMode(!0),process.stdin.resume();let B=()=>{process.stdin.setRawMode(!1),process.stdin.pause(),console.log()};process.stdin.on("data",async(G)=>{let N=G.toString();if(N==="\r"||N===`
|
|
13
|
+
`)if(B(),w.schema){let E=await w.schema["~standard"].validate(O);if(E.issues){console.error(F.red("Invalid input:"));for(let U of E.issues)console.error(F.dim(` \u2022 ${U.message}`));console.error(),Kw($,w).then(f);return}f(E.value)}else if(w.validate){let E=w.validate(O);if(E===!0)f(O);else console.error(`\u2717 ${typeof E==="string"?E:"Invalid input"}`),Kw($,w).then(f)}else f(O);else if(N==="\x03")B(),process.exit(0);else if(N==="\x7F"||N==="\b"){if(O.length>0)O=O.slice(0,-1),process.stdout.write("\b \b")}else if(N.length===1&&N>=" ")O+=N,process.stdout.write("*")})})}function DO($){let w=typeof $==="string"?{text:$}:$||{},f=!1,O=0,B=null,G=w.text||"",N=(U,Z)=>{process.stdout.write(`${Af}${Pf}${U} ${Z}`)},E={start(U){if(f)return;if(f=!0,U!==void 0)G=U;process.stdout.write("\x1B[?25l"),B=setInterval(()=>{let Z=iw[O];N(Z,G),O=(O+1)%iw.length},80)},stop(U){if(!f)return;if(f=!1,B)clearInterval(B),B=null;if(process.stdout.write(Af+Pf),process.stdout.write("\x1B[?25h"),U)console.log(U)},succeed(U){this.stop(),console.log(`\u2705 ${U||G}`)},fail(U){this.stop(),console.log(`\u274C ${U||G}`)},warn(U){this.stop(),console.log(`\u26A0\uFE0F ${U||G}`)},info(U){this.stop(),console.log(`\u2139\uFE0F ${U||G}`)},update(U){if(G=U,f)N(iw[O],G)}};return process.on("exit",()=>E.stop()),process.on("SIGINT",()=>{E.stop(),process.exit(0)}),E}var D,F,YO="\x1B",n,xf,LO,XO,QO,iw,Af="\x1B[2K",Pf="\x1B[G",u1,p;var Uw=L(()=>{D={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37,gray:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bold:1,dim:2,italic:3,underline:4,strikethrough:9,reset:0};F={black:_(D.black),red:_(D.red),green:_(D.green),yellow:_(D.yellow),blue:_(D.blue),magenta:_(D.magenta),cyan:_(D.cyan),white:_(D.white),gray:_(D.gray),brightRed:_(D.brightRed),brightGreen:_(D.brightGreen),brightYellow:_(D.brightYellow),brightBlue:_(D.brightBlue),brightMagenta:_(D.brightMagenta),brightCyan:_(D.brightCyan),brightWhite:_(D.brightWhite),bgRed:_(D.bgRed),bgGreen:_(D.bgGreen),bgYellow:_(D.bgYellow),bgBlue:_(D.bgBlue),bgMagenta:_(D.bgMagenta),bgCyan:_(D.bgCyan),bgWhite:_(D.bgWhite),bold:_(D.bold),dim:_(D.dim),italic:_(D.italic),underline:_(D.underline),strikethrough:_(D.strikethrough),reset:_(D.reset),strip:ZO},n=`${YO}[`,xf=`${n}2K`,LO=`${n}G`,XO=`${n}?25l`,QO=`${n}?25h`;iw=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];u1={prompt:Object.assign(Vw,{confirm:zw,select:bf,password:Kw,text:($,w)=>Vw($,w),multiselect:async($,w)=>{let{options:f}=w,O=[];console.log($);for(let B of f)if(await zw(`Select ${B.label}?`,{default:!1}))O.push(B.value);return O}}),spinner:DO,colors:F},p=Object.assign(Vw,{confirm:zw,select:bf,password:Kw,text:($,w)=>Vw($,w),multiselect:async($,w)=>{let{options:f}=w,O=[];console.log($);for(let B of f)if(await zw(`Select ${B.label}?`,{default:!1}))O.push(B.value);return O}})});async function*rw($,w){let f=Mf(w?.interval??"1s");while(!0){let O=await $();if(Array.isArray(O)){if(C(O)&&w?.exitOnEmpty)break;yield*O}else if(O===void 0&&w?.exitOnEmpty)break;else yield O;await Tf(f)}}async function i($,w){for await(let f of rw($,w))if(f)return f;throw Error("Timeout: waiting for condition")}var qw=L(()=>{q()});async function gf($,w){let{data:f}=await $.project.current({directory:w??process.cwd()});if(f&&f.id!=="global")return f.worktree;let{data:O,error:B}=await $.project.list();return T(B===void 0,`Failed to list projects: ${B}`),T(O,"No projects found"),T(O.length>0,`No projects found: ${O.length}`),p.select("Select a project",{options:O.map((G)=>({label:G.name??G.worktree,value:G.worktree,hint:G.name?`${G.worktree} - ${G.id.slice(0,5)}`:G.id.slice(0,5)}))})}function cf($){return $.name??$.worktree}var ow=L(()=>{Uw();q()});var Jw,sw;var tw=L(()=>{Jw=class Jw extends Error{output;constructor($,w){let f=$.stdout.toString().trim()||void 0,B=($.stderr.toString().trim()||void 0)??f??"Unknown shell error";super(B,{cause:w.cause});this.output=$}};sw=class sw extends Error{exitCode;constructor($){let w=$.exitCode;super(`Exited with code '${w}'`);this.exitCode=w}}});var h={};P(h,{use:()=>_O,create:()=>vf});function _O($){if($ instanceof Bun.$.Shell)return vf($);if(yf in $)return $;throw Error("Invalid client input")}function vf($){let w=$,O=Object.assign((B,...G)=>{let N=0,E=[...B],U=G.flatMap((Y,z)=>{if(!Ew(Y))return[Y];let M=u(Rf(Y),(X,S)=>{if(zf(S))return`--${X}`;if(v(S))return`--${X}=${Tw(S).join(",")}`;return`--${X}='${String(S)}'`});if(C(M))return[""];let H=M.length-1;return E.splice(z+1+N,0,...Array(H).fill(" ")),N+=H,M}),Z=Object.assign(E,{raw:[...E]}),W=w(Z,...U);return TO(W)},{[yf]:!0,cwd(B){return w=w.cwd(B),O},env(B){return w=w.env(B),O}});return O}function TO($){return{json:async(w)=>{let f=await $.quiet(w?.quiet).nothrow(),[O,B]=await Sf(()=>f.json())();if(B)return B;throw new Jw(f,{cause:O})},text:async(w)=>{let f=await $.quiet(w?.quiet).nothrow(),O=f.stdout.toString().trim()||void 0;if(f.exitCode!==0)return[new Jw(f,{cause:new sw(f)}),O];return[void 0,O]}}}var yf;var mf=L(()=>{q();tw();yf=Symbol("shell_client")});var Fw=L(()=>{mf();tw()});var j={};P(j,{use:()=>SO,update:()=>o,show:()=>VO,list:()=>r,find:()=>Hw,create:()=>ew,close:()=>RO,claim:()=>MO,blocks:()=>zO});async function r($,w={}){if(C(w.ids))return[];return await h.use($)`bd list ${w} --json`.json()}async function SO($,w,f){if("status"in w&&!f?.force)return w;return mw(await r($,{...f,ids:[w.id]}))}async function o($,w,f={}){let B=await h.use($)`bd update ${w.id} ${f} --json`.json(),[G]=B;return T(G,`Issue '${w.id}' not found`),G}async function ew($,w){return await h.use($)`bd create ${w} --json`.json()}async function MO($,w,f={}){let B=await h.use($)`bd update ${w.id} ${f} --claim --json`.json(),[G]=B;return T(G,`Issue '${w.id}' not found`),G}async function RO($,w,f={}){let B=await h.use($)`bd close ${w.id} ${f} --json`.json(),[G]=B;return T(G,`Issue '${w.id}' not found`),G}async function VO($,w){return h.use($)`bd show ${w.id}`.text()}async function zO($,w){return h.use($)`bd dep ${w.blocker.id} --blocks ${w.blocked.id}`.text()}var Hw;var hw=L(()=>{q();Fw();((e1)=>{async function $(f,O={}){return await h.use(f)`bd ready ${O} --json`.json()}e1.ready=$;async function w(f,O){return(await r(f,{parent:O.id,all:!1})).filter((G)=>G.status!=="closed")}e1.nonClosedChildren=w})(r||={});((wB)=>{async function $(w,f,O){return(await r(w,O)).find((G)=>G.external_ref===f)}wB.byExternalRef=$})(Hw||={})});var s={};P(s,{use:()=>FO,stuck:()=>KO,state:()=>w$,done:()=>qO});async function KO($,w,f){let O=await w$($,w,"stuck");return await o($,{id:O.agent},{"add-label":uf(f.context),description:f.reason}),O}async function qO($,w,f={}){let O=await w$($,w,"done");return await o($,{id:O.agent},{"add-label":uf(f.context),description:""}),O}async function w$($,w,f){return await h.use($)`bd agent state gram-${w} ${f} --json`.json()}async function FO($,w){let f=h.use($),O="slug"in w?`gram-${w.slug}`:w.id;return await f`bd agent show ${O} --json`.json()}function uf($){if(!$)return;let w=Tw(u($,(f,O)=>O&&`${f}:${O}`));return C(w)?void 0:w}var lf=L(()=>{q();Fw();hw()});var pf=L(()=>{Fw()});var Iw=L(()=>{lf();hw();pf()});var t={};P(t,{update:()=>IO,find:()=>of,create:()=>hO,SpecificationInput:()=>HO,Specification:()=>rf});import{z as k}from"zod";async function hO($,w){let f=await ew($,{type:"epic",title:w.title,description:w.description,"external-ref":w.file});return f$(f)}async function IO($,w,f){let O=await o($,{id:w.issueId},{type:"epic",title:f.title,description:f.description,"external-ref":f.file});return f$(O)}function f$($){return rf.parse({issueId:$.id,file:$.external_ref,title:$.title,description:$.description})}var rf,HO,of;var sf=L(()=>{hw();rf=k.object({issueId:k.string(),file:k.string(),title:k.string(),description:k.string().optional()}),HO=k.object({file:k.string(),title:k.string(),description:k.string().optional()});((OB)=>{async function $(w,f){let O=await Hw.byExternalRef(w,f,{type:"epic"});return O&&f$(O)}OB.byFile=$})(of||={})});var a={};P(a,{watch:()=>ef,use:()=>PO,scan:()=>w0,Frontmatter:()=>AO});import*as af from"fs";import*as jw from"path";import{z as tf}from"zod";function PO($){if($.watch)return ef($);else return w0($)}async function*ef($){let w=$0($.targets),f=new Map,O=[],B,G=af.watch($.cwd,async(N,E)=>{if(N==="change"&&E){if(!w.match(E))return;let U=O$($.cwd,E),Z=Bun.hash(await U.file.text());if(f.get(E)===Z)return;if(f.set(E,Z),O.push(O$($.cwd,E)),B)B.resolve(E),B=void 0}});try{while(!0){let N=O.shift();if(N)yield N;else B=uw(),await B.promise}}finally{G.close()}}async function*w0($){let{targets:w,isIgnored:f}=$0($.targets);for(let O of w)for await(let B of O.scan({cwd:$.cwd})){if(f(B))continue;yield O$($.cwd,B)}}function $0($){let w=[],f=[];for(let B of Df($))if(B.startsWith("!"))f.push(new Bun.Glob(B));else w.push(new Bun.Glob(B));T(!C(w),"At least one target is required");function O(B){return!jO.match(B)||f.every((G)=>!G.match(B))}return{targets:w,isIgnored:O,match:(B)=>!O(B)&&w.some((G)=>G.match(B))}}function O$($,w){let f=jw.join($,w);return{filename:w,filepath:jw.parse(f),file:Bun.file(f)}}var jO,AO;var f0=L(()=>{q();jO=new Bun.Glob("**/*.md"),AO=tf.object({issue:tf.string().optional()})});var B$=L(()=>{sf();f0()});function B0($,w){let f=w?.delimiter??"---";if(!$.trimStart().startsWith(f))return{metadata:{},content:$};let O=$.split(`
|
|
14
|
+
`),B=-1,G=-1;for(let W=0;W<O.length;W++)if(O[W]?.trim()===f){B=W;break}if(B===-1)return{metadata:{},content:$};for(let W=B+1;W<O.length;W++)if(O[W]?.trim()===f){G=W;break}if(G===-1)return{metadata:{},content:$};let E=O.slice(B+1,G).join(`
|
|
15
|
+
`),U=CO(E),Z=O.slice(G+1).join(`
|
|
16
|
+
`);return{metadata:U,content:Z}}function xO($,w){let f=w?.delimiter??"---",O=G$($);return`${f}
|
|
17
|
+
${O}${f}
|
|
18
|
+
`}function G0($,w,f){return`${xO(w,f)}${$}`}function CO($){let w={},f=$.split(`
|
|
19
|
+
`),O=[{obj:w,indent:-1}];for(let B of f){if(!B.trim()||B.trim().startsWith("#"))continue;let G=B.length-(B.trimStart()?.length??0),N=B.trim();while(O.length>1){let Y=O[O.length-1];if(!Y||G>Y.indent)break;O.pop()}let E=N.indexOf(":");if(E===-1)continue;let U=N.substring(0,E).trim(),Z=N.substring(E+1).trim(),W=O[O.length-1]?.obj;if(!W)continue;if(Z===""){let Y={};W[U]=Y,O.push({obj:Y,indent:G})}else if(W)W[U]=bO(Z)}return w}function bO($){if($.startsWith('"')&&$.endsWith('"')||$.startsWith("'")&&$.endsWith("'"))return $.slice(1,-1);if($==="true")return!0;if($==="false")return!1;if($==="null"||$==="~")return null;let w=Number($);if(!Number.isNaN(w)&&$!=="")return w;return $}function G$($,w=0){let f=" ".repeat(w),O="";for(let[B,G]of Object.entries($))if(Kf(G))O+=`${f}${B}: null
|
|
20
|
+
`;else if(Ew(G)&&!v(G))O+=`${f}${B}:
|
|
21
|
+
`,O+=G$(G,w+1);else if(qf(G)){let N=G.includes(":")||G.includes("#")||G.includes(`
|
|
22
|
+
`);O+=`${f}${B}: ${N?`"${G}"`:G}
|
|
23
|
+
`}else if(v(G)){O+=`${f}${B}:
|
|
24
|
+
`;for(let N of G)if(Ew(N)&&!v(N))O+=`${f}-
|
|
25
|
+
${G$(N,w+2)}`;else O+=`${f} - ${N}
|
|
26
|
+
`}else O+=`${f}${B}: ${G}
|
|
27
|
+
`;return O}var N0=L(()=>{q()});import*as Aw from"path";async function*E0($){let w=Bun.$.cwd($.project);for await(let f of $.source){let{file:O,filepath:B}=f,{metadata:G,content:N}=B0(await O.text()),E=Aw.relative($.project,Aw.format(B)),U={file:E,title:Vf(B.name),description:x`
|
|
29
28
|
Spec: ${E}
|
|
30
|
-
`},Z=
|
|
31
|
-
|
|
29
|
+
`},Z=a.Frontmatter.safeParse(G),W=Z.success&&Z.data.issue?{issueId:Z.data.issue}:await t.find.byFile(w,U.file),Y=W?await t.update(w,W,U):await t.create(w,U),z=Object.assign({},G,{issue:Y.issueId});await Bun.write(O,G0(N,z)),yield{asset:f,spec:Y}}}var U0=L(()=>{q();B$();N0()});var N$,Ww;var J0=L(()=>{q();((WB)=>{async function $(w){let f=await w`git status --porcelain`.text();T(f==="",x`
|
|
30
|
+
Project directory is not clean. Please commit or stash your changes before continuing.
|
|
31
|
+
Found:
|
|
32
|
+
${f}
|
|
33
|
+
`)}WB.ensureIsClean=$})(N$||={});((ZB)=>{async function $(O,B){await O`git switch ${B}`}ZB.switchOn=$;async function w(O){return(await O`git branch --show-current`.text()).trim()}ZB.getCurrent=w;async function f(O){return(await O`git symbolic-ref refs/remotes/origin/HEAD | sed 's|^refs/remotes/origin/||'`.text()).trim()}ZB.getDefault=f})(Ww||={})});import*as E$ from"fs/promises";async function W0($){let{client:w,directory:f}=$,O=await cO.acquire();try{let B=await w.project.current({directory:f});T(B.data,`Failed to initialize environment: ${B.error}`);let G=cf(B.data);if(!B.data.commands?.start){let E=await p.confirm(`Opencode project ${G} does not have a start command. Do you want to continue?`,{default:!1});T(E,"Failed to initialize environment: user asked to stop")}let N=await w.worktree.create({directory:f,worktreeCreateInput:{name:$.name}});return T(N.data,`Failed to initialize worktree: ${JSON.stringify(N.error)}`),N.data}finally{O.release()}}async function Z0($){let{client:w,directory:f}=$,O=await w.worktree.remove({directory:f,worktreeRemoveInput:{directory:$.worktreeDirectory}});return T(O.data,`Failed to remove worktree: ${JSON.stringify(O.error)}`),console.log("Worktree removed"),O.data}async function Y0($){return(await Promise.all([E$.exists(`${$.directory}/.opencode`),E$.exists(`${$.directory}/.git`)])).every((f)=>f)}var cO;var L0=L(()=>{Uw();q();ow();cO=new Sw(1)});var{$:vO}=globalThis.Bun;var Zw;var X0=L(()=>{Uw();q();qw();J0();L0();Zw=class Zw{client;directory;worktree;ready;constructor($,w,f){this.client=$;this.directory=w;this.worktree=f;this.ready=i(()=>Y0(f),{interval:"100ms"})}get $(){return vO.cwd(this.worktree.directory)}static async initForEpic($){let{config:w,epic:f}=$,O=Bun.$.cwd(w.project);if(await N$.ensureIsClean(O),w.baseBranch)await Ww.switchOn(O,w.baseBranch);else{let B=await Ww.getCurrent(O),G=await Ww.getDefault(O);if(B!==G){let N=await p.confirm(x`
|
|
34
|
+
Your current branch is ${B}, but the default branch is ${G}.
|
|
35
|
+
Do you want to use ${G} as the base branch for the EPIC worker?`,{default:!0});T(N,"User chose not to use the default branch as base branch")}}return Zw.init({client:$.client,directory:w.project,name:`epic-${f.id}`})}static async init($){let w=await W0($),f=new Zw($.client,$.directory,w);return await f.ready,f}async[Symbol.asyncDispose](){await Z0({client:this.client,directory:this.directory,worktreeDirectory:this.worktree.directory}).catch(($)=>console.error($))}}});async function Q0($){let U=[];try{let w=uO($.issue.id);w(`Start working on ${$.issue.id}...`);const f=D$(U,await Zw.init({client:$.client,directory:$.directory,name:$.issue.id}),1);w(`Environment ready: ${f.worktree.directory}`);let O=await j.claim(f.$,$.issue);w(`Issue claimed: ${O.id}`);let B=await $.client.session.create({directory:f.worktree.directory,title:`${O.id}: ${O.title}`});T(B.data,`Failed to start the session: ${JSON.stringify(B.error)}`);w(`Session: ${B.data.id}`);let G=await $.client.session.command({sessionID:B.data.id,directory:f.worktree.directory,command:"fake_work",arguments:`${O.id}`});T(G.data,`Failed to send the /work command: ${JSON.stringify(G.error)}`);let N=await s.use(f.$,B.data);while(N.agent_state!=="done"){if(N.agent_state==="stuck")w(`Agent is stuck: ${N.title}`),await i(async()=>{return N=await s.use(f.$,B.data),N.agent_state!=="stuck"},{interval:"1s"}),w(`Agent is ready to continue: ${N.agent_state}`);else{w(`Agent needs follow up, '${N.agent_state}'...`);let M=await $.client.session.prompt({sessionID:B.data.id,directory:f.worktree.directory,parts:[mO(N.agent_state)]});T(M.data,`Failed to follow up: ${JSON.stringify(M.error)}`)}N=await s.use(f.$,B.data)}w("Agent work is done");let E=await $.client.session.messages({sessionID:B.data.id,directory:f.worktree.directory});T(E.data,`Failed to fetch session messages: ${E.error}`);w(`Session messages: ${E.data.length}`);O=await j.close(f.$,$.issue,{reason:"Completed"});T(O,"Failed to close the issue");return O}catch(Z){var W=Z,Y=1}finally{var z=_$(U,W,Y);z&&await z}}function mO($){return{type:"text",text:x`
|
|
36
|
+
You are currently registered as '${$}'.
|
|
32
37
|
- If you are done with the task please notify via the i_am_done tool.
|
|
33
38
|
- If you are stuck and need human help, please notify via the i_am_stuck tool.
|
|
34
39
|
- If you need more time to work on the task, please continue working and update your status when needed.
|
|
35
|
-
`}}function
|
|
36
|
-
`)}}})});import{createCLI as
|
|
40
|
+
`}}function uO($){return(w)=>{console.log(`[work:${$}] ${w}`)}}var D0=L(()=>{q();Iw();X0();qw()});var _0=()=>{};var T0=L(()=>{q();Iw();_0()});var U$=L(()=>{U0();D0();T0()});var M0={};P(M0,{default:()=>pO});import{defineCommand as nO,option as e}from"@bunli/core";import{z as ww}from"zod";var pO,iO;var R0=L(()=>{Uw();q();qw();lw();ow();Iw();U$();Rw();pO=nO({name:"work",alias:["ralph"],description:"Starts RALPH loop on opened tasks",options:{concurrency:e(ww.coerce.number().min(1).default(1),{description:"How many workers can be spawned at the same time",short:"c"}),task:e(ww.string().optional(),{description:"Task (including subtasks) to work on. When not provided, workers can be spawned for any ready tasks.",short:"t"}),"wait-on-idle":e(ww.boolean().default(!1),{description:"If no task is available, wait for one to become available."}),"max-dispatches":e(ww.coerce.number().min(1).default(1/0),{description:"Limit the number of tasks that can be dispatched to workers.",short:"n"}),project:e(ww.string().optional(),{description:"Project to work on. When not provided, workers can be spawned for any ready tasks.",short:"p"}),config:e(ww.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({flags:$,colors:w})=>{let f=await l({configFile:$.config,overries:{project:$.project}}),O=await m.use(f),B=await gf(O,f.project),G=Bun.$.cwd(B),N=new Set,{"wait-on-idle":E,"max-dispatches":U}=$,Z=rw(()=>j.list.ready(G,{parent:$.task}),{interval:"1 second",exitOnEmpty:!E}),W=new Sw($.concurrency);for await(let H of Z){let X=await W.acquire();if(N.add(H.id),Q0({client:O,directory:B,issue:H}).catch((S)=>console.error(S)).finally(()=>X.release()),N.size>=U)break}await i(async()=>W.queueLength===0&&W.maxCapacity===W.capacity,{interval:"1 second"});let Y=await j.list(G,{all:!0,ids:Array.from(N.values())}),z=_f(Y,(H)=>H.status),M=u(z,(H,X)=>{return(iO[H]??w.reset)(`${X} ${H}`)});console.log(w.gray(`Dispatched: ${w.italic(Array.from(N.values()).join(", "))}`)),console.log(`Tasks: ${M.join(", ")}`)}}),iO={open:Nw(F.yellow,F.italic),in_progress:Nw(F.yellow,F.italic),blocked:Nw(F.red,F.bold,F.underline),deferred:F.red,closed:Nw(F.green,F.bold)}});var V0={};P(V0,{default:()=>oO});import{defineCommand as rO,option as J$}from"@bunli/core";import{z as W$}from"zod";import*as $w from"path";var oO;var z0=L(()=>{Rw();U$();B$();oO=rO({name:"sync",description:"Syncs the specifications with beads epics",options:{target:J$(W$.string().transform(($)=>$w.resolve($)).optional(),{description:"Specification file or directory to sync"}),watch:J$(W$.boolean().default(!1),{description:"Watch target for changes",short:"w"}),config:J$(W$.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({flags:$,colors:w,spinner:f})=>{let{specifications:O,project:B}=await l({configFile:$.config,overries:{specifications:$.target}}),G=E0({project:B,source:a.use({cwd:B,targets:O,watch:$.watch})});if($.watch)f("Watching for changes...").start();for await(let N of G){let{asset:E,spec:U}=N,Z=$w.relative(B,$w.format(E.filepath));process.stdout.write(`\r\x1B[K${w.bold(Z)}: ${U.issueId}
|
|
41
|
+
`)}}})});import{createCLI as tO}from"@bunli/core";var K0={health:()=>Promise.resolve().then(() => (jf(),If)),work:()=>Promise.resolve().then(() => (R0(),M0)),spec:{sync:()=>Promise.resolve().then(() => (z0(),V0))}};var q0="0.2.0-next.9";var F0=await tO({name:"mate",version:q0,commands:{directory:`${import.meta.dir}/commands`}});await F0.load(K0);await F0.run();
|
package/dist/plugin/index.js
CHANGED
|
@@ -2783,7 +2783,8 @@ __export(exports_issues, {
|
|
|
2783
2783
|
find: () => find,
|
|
2784
2784
|
create: () => create2,
|
|
2785
2785
|
close: () => close,
|
|
2786
|
-
claim: () => claim
|
|
2786
|
+
claim: () => claim,
|
|
2787
|
+
blocks: () => blocks
|
|
2787
2788
|
});
|
|
2788
2789
|
|
|
2789
2790
|
// src/utils/shell/client.ts
|
|
@@ -2883,19 +2884,29 @@ function createPromise(shell) {
|
|
|
2883
2884
|
};
|
|
2884
2885
|
}
|
|
2885
2886
|
// src/adapters/beads/issues.ts
|
|
2886
|
-
|
|
2887
|
+
async function list(client2, options = {}) {
|
|
2887
2888
|
if (isEmpty(options.ids))
|
|
2888
2889
|
return [];
|
|
2889
2890
|
const $2 = exports_client2.use(client2);
|
|
2890
2891
|
const issues = await $2`bd list ${options} --json`.json();
|
|
2891
2892
|
return issues;
|
|
2892
|
-
}
|
|
2893
|
-
|
|
2893
|
+
}
|
|
2894
|
+
((list) => {
|
|
2895
|
+
async function ready(client2, options = {}) {
|
|
2894
2896
|
const $2 = exports_client2.use(client2);
|
|
2895
2897
|
const issues = await $2`bd ready ${options} --json`.json();
|
|
2896
2898
|
return issues;
|
|
2897
2899
|
}
|
|
2898
|
-
|
|
2900
|
+
list.ready = ready;
|
|
2901
|
+
async function nonClosedChildren(client2, parent) {
|
|
2902
|
+
const issues = await list(client2, {
|
|
2903
|
+
parent: parent.id,
|
|
2904
|
+
all: false
|
|
2905
|
+
});
|
|
2906
|
+
return issues.filter((issue) => issue.status !== "closed");
|
|
2907
|
+
}
|
|
2908
|
+
list.nonClosedChildren = nonClosedChildren;
|
|
2909
|
+
})(list ||= {});
|
|
2899
2910
|
async function use3(client2, input, options) {
|
|
2900
2911
|
if ("status" in input && !options?.force)
|
|
2901
2912
|
return input;
|
|
@@ -2934,6 +2945,10 @@ async function show(client2, input) {
|
|
|
2934
2945
|
const $2 = exports_client2.use(client2);
|
|
2935
2946
|
return $2`bd show ${input.id}`.text();
|
|
2936
2947
|
}
|
|
2948
|
+
async function blocks(client2, options) {
|
|
2949
|
+
const $2 = exports_client2.use(client2);
|
|
2950
|
+
return $2`bd dep ${options.blocker.id} --blocks ${options.blocked.id}`.text();
|
|
2951
|
+
}
|
|
2937
2952
|
var find;
|
|
2938
2953
|
((find) => {
|
|
2939
2954
|
async function byExternalRef(client2, ref, options) {
|
|
@@ -3111,7 +3126,7 @@ function extract(content, options) {
|
|
|
3111
3126
|
`);
|
|
3112
3127
|
const metadata = parseYAML(yamlContent);
|
|
3113
3128
|
const remainingContent = lines.slice(endIndex + 1).join(`
|
|
3114
|
-
`)
|
|
3129
|
+
`);
|
|
3115
3130
|
return { metadata, content: remainingContent };
|
|
3116
3131
|
}
|
|
3117
3132
|
function stringify(data, options) {
|
|
@@ -3123,8 +3138,7 @@ ${yamlContent}${delimiter}
|
|
|
3123
3138
|
}
|
|
3124
3139
|
function apply(content, data, options) {
|
|
3125
3140
|
const frontmatter = stringify(data, options);
|
|
3126
|
-
return `${frontmatter}
|
|
3127
|
-
${content}`;
|
|
3141
|
+
return `${frontmatter}${content}`;
|
|
3128
3142
|
}
|
|
3129
3143
|
function parseYAML(yaml) {
|
|
3130
3144
|
const result = {};
|
|
@@ -3631,6 +3645,37 @@ var prompt2 = Object.assign(prompt, {
|
|
|
3631
3645
|
}
|
|
3632
3646
|
});
|
|
3633
3647
|
|
|
3648
|
+
// src/adapters/environments/git.ts
|
|
3649
|
+
var status;
|
|
3650
|
+
((status) => {
|
|
3651
|
+
async function ensureIsClean($2) {
|
|
3652
|
+
const status2 = await $2`git status --porcelain`.text();
|
|
3653
|
+
assert(status2 === "", dedent`
|
|
3654
|
+
Project directory is not clean. Please commit or stash your changes before continuing.
|
|
3655
|
+
Found:
|
|
3656
|
+
${status2}
|
|
3657
|
+
`);
|
|
3658
|
+
}
|
|
3659
|
+
status.ensureIsClean = ensureIsClean;
|
|
3660
|
+
})(status ||= {});
|
|
3661
|
+
var branch;
|
|
3662
|
+
((branch) => {
|
|
3663
|
+
async function switchOn($2, branch2) {
|
|
3664
|
+
await $2`git switch ${branch2}`;
|
|
3665
|
+
}
|
|
3666
|
+
branch.switchOn = switchOn;
|
|
3667
|
+
async function getCurrent($2) {
|
|
3668
|
+
const branch2 = await $2`git branch --show-current`.text();
|
|
3669
|
+
return branch2.trim();
|
|
3670
|
+
}
|
|
3671
|
+
branch.getCurrent = getCurrent;
|
|
3672
|
+
async function getDefault($2) {
|
|
3673
|
+
const branch2 = await $2`git symbolic-ref refs/remotes/origin/HEAD | sed 's|^refs/remotes/origin/||'`.text();
|
|
3674
|
+
return branch2.trim();
|
|
3675
|
+
}
|
|
3676
|
+
branch.getDefault = getDefault;
|
|
3677
|
+
})(branch ||= {});
|
|
3678
|
+
|
|
3634
3679
|
// src/adapters/environments/worktrees.ts
|
|
3635
3680
|
var semaphore = new Semaphore(1);
|
|
3636
3681
|
// src/use-cases/inject-beads-issue.ts
|
|
@@ -3667,7 +3712,7 @@ function createInjectionPart(issueId, content) {
|
|
|
3667
3712
|
return {
|
|
3668
3713
|
type: "text",
|
|
3669
3714
|
text: dedent`
|
|
3670
|
-
<issue>
|
|
3715
|
+
<issue id=${issueId}>
|
|
3671
3716
|
${content}
|
|
3672
3717
|
</issue>
|
|
3673
3718
|
`,
|
|
@@ -8,6 +8,7 @@ import { z } from "zod";
|
|
|
8
8
|
var Config = z.object({
|
|
9
9
|
specifications: z.union([z.string(), z.string().array()]).default(["specs/**/*.md", "!specs/thoughts/*"]).describe("Glob pattern for specification files").transform((value) => castArrayIfExists(value)),
|
|
10
10
|
project: z.string().default(process.cwd()).describe("Project directory"),
|
|
11
|
+
baseBranch: z.string().optional().describe("Branch from which the EPIC workers starts to work. If not defined, the current branch is used"),
|
|
11
12
|
opencode: z.object({
|
|
12
13
|
lookup: z.enum(["desktop", "config"]).describe("Defines how we should resolve the opencode server").array().default(["desktop", "config"]),
|
|
13
14
|
server: z.object({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-teammate",
|
|
3
|
-
"version": "0.2.0-next.
|
|
3
|
+
"version": "0.2.0-next.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"files": [
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"repository": {
|
|
27
27
|
"type": "git",
|
|
28
28
|
"url": "git+https://github.com/hugo082/opencode-teammate.git",
|
|
29
|
-
"sha": "
|
|
29
|
+
"sha": "6177c95"
|
|
30
30
|
},
|
|
31
31
|
"bin": {
|
|
32
32
|
"mate": "./dist/bin/mate"
|