opencode-teammate 0.2.0-next.5 → 0.2.0-next.6

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 CHANGED
@@ -1,36 +1,36 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var f1=Object.defineProperty;var g=(w,$)=>{for(var G in $)f1(w,G,{get:$[G],enumerable:!0,configurable:!0,set:(B)=>$[G]=()=>B})};var E=(w,$)=>()=>(w&&($=w(w=0)),$);var Ow=(w,$,G)=>{if($!=null){if(typeof $!=="object"&&typeof $!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let B;if(G)B=$[Symbol.asyncDispose];if(B===void 0)B=$[Symbol.dispose];if(typeof B!=="function")throw TypeError("Object not disposable");w.push([G,B,$])}else if(G)w.push([G]);return $},Qw=(w,$,G)=>{let B=(Z)=>$=G?new SuppressedError(Z,$,"An error was suppressed during disposal"):(G=!0,Z),W=(Z)=>{while(Z=w.pop())try{var J=Z[1]&&Z[1].call(Z[2]);if(Z[0])return Promise.resolve(J).then(W,(N)=>(B(N),W()))}catch(N){B(N)}if(G)throw $};return W()};function M(w){return($)=>{if(!process.stdout.isTTY||process.env.NO_COLOR)return $;return`\x1B[${w}m${$}\x1B[0m`}}function z1(w){return w.replace(/\x1b\[[0-9;]*m/g,"")}async function Tw(w){process.stdout.write(w);for await(let $ of console)return $;return""}async function J$(w,$={}){let G=$.default?` (${$.default})`:"",B=`${w}${G} `;while(!0){let Z=(await Tw(B)).trim()||$.default||"";if($.schema){let J=await $.schema["~standard"].validate(Z);if(J.issues){console.error(q.red("Invalid input:"));for(let N of J.issues)console.error(q.dim(` \u2022 ${N.message}`));console.error();continue}return J.value}if($.validate){let J=$.validate(Z);if(J===!0)return Z;else if(typeof J==="string"){console.error(`\u2717 ${J}`);continue}else{console.error("\u2717 Invalid input");continue}}return Z}}async function N$(w,$={}){let G=$.default===!0?"Y/n":$.default===!1?"y/N":"y/n",B=`${w} (${G}) `;while(!0){let Z=(await Tw(B)).trim().toLowerCase();if(!Z&&$.default!==void 0)return $.default;if(Z==="y"||Z==="yes")return!0;if(Z==="n"||Z==="no")return!1;console.error("\u2717 Please answer with y/yes or n/no")}}async function Mw(w,$){let{options:G,default:B}=$,W=B?G.findIndex((Z)=>Z.value===B):0;if(W===-1)W=0;return console.log(w),process.stdout.write(K1),F$(G,W),new Promise((Z)=>{process.stdin.setRawMode(!0),process.stdin.resume();let J=()=>{process.stdin.setRawMode(!1),process.stdin.pause(),process.stdout.write(S1)};process.stdin.on("data",(N)=>{let Y=N.toString();if(Y==="\x1B[A")W=Math.max(0,W-1),F$(G,W);else if(Y==="\x1B[B")W=Math.min(G.length-1,W+1),F$(G,W);else if(Y==="\r"||Y===`
4
- `){J();for(let X=0;X<G.length;X++)process.stdout.write(`${d}1A${Dw}`);let O=G[W];if(O)console.log(`\u2713 ${O.label}`),Z(O.value)}else if(Y==="\x03"||Y==="\x1B")J(),process.exit(0)})})}function F$(w,$){for(let G=0;G<w.length;G++)process.stdout.write(`${d}1A`);w.forEach((G,B)=>{process.stdout.write(Dw+V1);let W=B===$?"\u276F ":" ",Z=G.hint?` (${G.hint})`:"";console.log(`${W}${G.label}${Z}`)})}async function Y$(w,$={}){return process.stdout.write(w+" "),new Promise((G)=>{let B="";process.stdin.setRawMode(!0),process.stdin.resume();let W=()=>{process.stdin.setRawMode(!1),process.stdin.pause(),console.log()};process.stdin.on("data",async(Z)=>{let J=Z.toString();if(J==="\r"||J===`
5
- `)if(W(),$.schema){let N=await $.schema["~standard"].validate(B);if(N.issues){console.error(q.red("Invalid input:"));for(let Y of N.issues)console.error(q.dim(` \u2022 ${Y.message}`));console.error(),Y$(w,$).then(G);return}G(N.value)}else if($.validate){let N=$.validate(B);if(N===!0)G(B);else console.error(`\u2717 ${typeof N==="string"?N:"Invalid input"}`),Y$(w,$).then(G)}else G(B);else if(J==="\x03")W(),process.exit(0);else if(J==="\x7F"||J==="\b"){if(B.length>0)B=B.slice(0,-1),process.stdout.write("\b \b")}else if(J.length===1&&J>=" ")B+=J,process.stdout.write("*")})})}function q1(w){let $=typeof w==="string"?{text:w}:w||{},G=!1,B=0,W=null,Z=$.text||"",J=(Y,O)=>{process.stdout.write(`${Lw}${Ew}${Y} ${O}`)},N={start(Y){if(G)return;if(G=!0,Y!==void 0)Z=Y;process.stdout.write("\x1B[?25l"),W=setInterval(()=>{let O=I$[B];J(O,Z),B=(B+1)%I$.length},80)},stop(Y){if(!G)return;if(G=!1,W)clearInterval(W),W=null;if(process.stdout.write(Lw+Ew),process.stdout.write("\x1B[?25h"),Y)console.log(Y)},succeed(Y){this.stop(),console.log(`\u2705 ${Y||Z}`)},fail(Y){this.stop(),console.log(`\u274C ${Y||Z}`)},warn(Y){this.stop(),console.log(`\u26A0\uFE0F ${Y||Z}`)},info(Y){this.stop(),console.log(`\u2139\uFE0F ${Y||Z}`)},update(Y){if(Z=Y,G)J(I$[B],Z)}};return process.on("exit",()=>N.stop()),process.on("SIGINT",()=>{N.stop(),process.exit(0)}),N}var T,q,R1="\x1B",d,Dw,V1,K1,S1,I$,Lw="\x1B[2K",Ew="\x1B[G",hG,U$;var X$=E(()=>{T={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};q={black:M(T.black),red:M(T.red),green:M(T.green),yellow:M(T.yellow),blue:M(T.blue),magenta:M(T.magenta),cyan:M(T.cyan),white:M(T.white),gray:M(T.gray),brightRed:M(T.brightRed),brightGreen:M(T.brightGreen),brightYellow:M(T.brightYellow),brightBlue:M(T.brightBlue),brightMagenta:M(T.brightMagenta),brightCyan:M(T.brightCyan),brightWhite:M(T.brightWhite),bgRed:M(T.bgRed),bgGreen:M(T.bgGreen),bgYellow:M(T.bgYellow),bgBlue:M(T.bgBlue),bgMagenta:M(T.bgMagenta),bgCyan:M(T.bgCyan),bgWhite:M(T.bgWhite),bold:M(T.bold),dim:M(T.dim),italic:M(T.italic),underline:M(T.underline),strikethrough:M(T.strikethrough),reset:M(T.reset),strip:z1},d=`${R1}[`,Dw=`${d}2K`,V1=`${d}G`,K1=`${d}?25l`,S1=`${d}?25h`;I$=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];hG={prompt:Object.assign(J$,{confirm:N$,select:Mw,password:Y$,text:(w,$)=>J$(w,$),multiselect:async(w,$)=>{let{options:G}=$,B=[];console.log(w);for(let W of G)if(await N$(`Select ${W.label}?`,{default:!1}))B.push(W.value);return B}}),spinner:q1,colors:q},U$=Object.assign(J$,{confirm:N$,select:Mw,password:Y$,text:(w,$)=>J$(w,$),multiselect:async(w,$)=>{let{options:G}=$,B=[];console.log(w);for(let W of G)if(await N$(`Select ${W.label}?`,{default:!1}))B.push(W.value);return B}})});function zw(w){return Array.isArray(w)?w.slice():[w]}function Rw(w,$){if(!w)return{};return w.reduce((G,B)=>{let W=$(B);return G[W]=(G[W]??0)+1,G},{})}function A$(w,$){return(w==null?void 0:w.length)>0?w[0]:$}function O$(w){return(w==null?void 0:w.filter(($)=>!!$))??[]}function Vw(w){return new Promise(($)=>setTimeout($,w))}function Kw(w){return(...$)=>{try{let G=w(...$);return k1(G)?G.then((B)=>[void 0,B],(B)=>[B,void 0]):[void 0,G]}catch(G){return[G,void 0]}}}function j$(){let w,$,G=new Promise((B,W)=>{w=B,$=W});return{resolve:w,reject:$,promise:G}}function $$(...w){return(...$)=>{return w.slice(1).reduce((G,B)=>B(G),w[0](...$))}}function H1(){}function Sw(w,$){return new j1($).parse(w)}function h$(w,$){if(!w||!$)return w??$??{};let G=Object.getPrototypeOf(w),B=G?{...w}:Object.assign(Object.create(G),w);for(let W of Object.keys($))B[W]=fw(w[W])&&fw($[W])?h$(w[W],$[W]):$[W];return B}function y(w,$){if(!w)return[];let G=Object.entries(w);if(G.length===0)return[];return G.reduce((B,W)=>{return B.push($(W[0],W[1])),B},[])}function qw(w,$=(G)=>G===void 0){if(!w)return{};return Object.keys(w).reduce((G,B)=>{if(!$(w[B]))G[B]=w[B];return G},{})}function P1(w){if(!w||w.length===0)return"";let $=w.toLowerCase();return $.substring(0,1).toUpperCase()+$.substring(1,$.length)}function m(w,...$){var G;if(v(w)){if($.length>0)return m(w.reduce((Z,J,N)=>{var Y;let O=String($[N]??""),X=O.includes(`
6
- `)&&((Y=J.match(/[ \t]*(?=[^\n]*$)/))==null?void 0:Y[0]);if(X)O=O.replace(/\n(?=[^\n]*?\S)/g,`
7
- `+X);return Z+J+O},""));w=w[0]}let B=$[0]??((G=w.match(/^[ \t]*(?=\S)/m))==null?void 0:G[0]);return(B?w.replace(new RegExp(`^${B}`,"gm"),""):w).replace(/^[ \t]*\n|\n[ \t]*$/g,"")}function Hw(w){if(!w)return"";return w.split(/(?=[A-Z])|[\.\-\s_]/).map(($)=>$.trim()).filter(($)=>!!$).map(($)=>P1($.toLowerCase())).join(" ")}function f(w,$){if(!w)throw $ instanceof Error?$:Error($??"Assertion failed")}function Fw(w){return typeof w==="boolean"}function x1(w){return jw(w,"[object Date]")}function P(w){if(typeof w!=="object"||w===null)return!w||w===!0;if(x1(w))return Number.isNaN(w.getTime());let $=w.length;if(_w($))return $===0;let G=w.size;if(_w(G))return G===0;return Object.keys(w).length===0}function C1(w){return typeof w==="function"}function Iw(w){return w===null||w===void 0}function _w(w){return typeof w==="number"&&!Number.isNaN(w)}function w$(w){return jw(w,"[object Object]")}function fw(w){if(typeof w!=="object"||w===null)return!1;let $=Object.getPrototypeOf(w);return $===Object.prototype||$===null||Object.getPrototypeOf($)===null}function k1(w){return!!w&&C1(w.then)}function Aw(w){return typeof w==="string"}function jw(w,$){return Object.prototype.toString.call(w)===$}var F1=class{constructor({units:w,short:$}){this.units=w,this.short=$}parse(w){var $;let G=w.match(/^(-?\d+(?:\.\d+)?) ?(\w+)?s?$/);if(!G)throw Error(`Invalid quantity, cannot parse: ${w}`);let B=G[2];B=(($=this.short)==null?void 0:$[B])||B;let W=Number.parseFloat(G[1]);if(Math.abs(W)>1&&B.endsWith("s"))B=B.substring(0,B.length-1);if(!this.units[B])throw Error(`Invalid unit: ${B}, makes sure it is one of: ${Object.keys(this.units).join(", ")}`);return W*this.units[B]}},I1,A1,j1,h1=class{constructor(w,$,G){this.semaphore=w,this.request=$,this.weight=G}release(){this.semaphore.release(this),this.release=H1}},Q$=class{constructor(w){if(this.maxCapacity=w,this.queue=[],w<=0)throw Error("maxCapacity must be > 0");this.capacity=w}get queueLength(){return this.queue.length}async acquire({signal:w,weight:$=1}={}){if($<=0)throw Error("weight must be > 0");if($>this.maxCapacity)throw Error("weight must be \u2264 maxCapacity");let G=j$(),B=new h1(this,G,$);if(w){let W=()=>{let J=this.queue.indexOf(B);if(J>=0)this.queue.splice(J,1),G.reject(w.reason)};w.addEventListener("abort",W);let Z=()=>{w.removeEventListener("abort",W)};G.promise.then(Z,Z)}if(this.capacity<$)this.queue.push(B),await G.promise;else this.capacity-=$;return B}reject(w){this.acquire=()=>Promise.reject(w),this.queue.forEach(($)=>$.request.reject(w)),this.queue=[]}release(w){this.capacity+=w.weight;let $=this.queue[0];if($&&this.capacity>=$.weight)this.capacity-=$.weight,this.queue.shift(),$.request.resolve()}},v;var H=E(()=>{I1={week:604800000,day:86400000,hour:3600000,minute:60000,second:1000,millisecond:1},A1={w:"week",d:"day",h:"hour",m:"minute",s:"second",ms:"millisecond"},j1=class w extends F1{constructor($){super({units:{...w.units,...$==null?void 0:$.units},short:{...w.shortUnits,...$==null?void 0:$.short}})}static get units(){return I1}static get shortUnits(){return A1}};v=(()=>Array.isArray)()});async function*P$(w,$){let G=Sw($?.interval??"1s");while(!0){let B=await w();if(Array.isArray(B)){if(P(B)&&$?.exitOnEmpty)break;yield*B}else if(B===void 0&&$?.exitOnEmpty)break;else yield B;await Vw(G)}}async function u(w,$){for await(let G of P$(w,$))if(G)return G;throw Error("Timeout: waiting for condition")}var L$=E(()=>{H()});var Pw=()=>{};var xw=({onRequest:w,onSseError:$,onSseEvent:G,responseTransformer:B,responseValidator:W,sseDefaultRetryDelay:Z,sseMaxRetryAttempts:J,sseMaxRetryDelay:N,sseSleepFn:Y,url:O,...X})=>{let Q,K=Y??((L)=>new Promise((_)=>setTimeout(_,L)));return{stream:async function*(){let L=Z??3000,_=0,j=X.signal??new AbortController().signal;while(!0){if(j.aborted)break;_++;let a=X.headers instanceof Headers?X.headers:new Headers(X.headers);if(Q!==void 0)a.set("Last-Event-ID",Q);try{let k={redirect:"follow",...X,body:X.serializedBody,headers:a,signal:j},h=new Request(O,k);if(w)h=await w(O,k);let R=await(X.fetch??globalThis.fetch)(h);if(!R.ok)throw Error(`SSE failed: ${R.status} ${R.statusText}`);if(!R.body)throw Error("No body in SSE response");let S=R.body.pipeThrough(new TextDecoderStream).getReader(),e="",Jw=()=>{try{S.cancel()}catch{}};j.addEventListener("abort",Jw);try{while(!0){let{done:D1,value:T1}=await S.read();if(D1)break;e+=T1,e=e.replace(/\r\n/g,`
3
+ var H1=Object.defineProperty;var P=(w,$)=>{for(var O in $)H1(w,O,{get:$[O],enumerable:!0,configurable:!0,set:(f)=>$[O]=()=>f})};var Y=(w,$)=>()=>(w&&($=w(w=0)),$);var Xw=(w,$,O)=>{if($!=null){if(typeof $!=="object"&&typeof $!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let f;if(O)f=$[Symbol.asyncDispose];if(f===void 0)f=$[Symbol.dispose];if(typeof f!=="function")throw TypeError("Object not disposable");w.push([O,f,$])}else if(O)w.push([O]);return $},Qw=(w,$,O)=>{let f=(G)=>$=O?new SuppressedError(G,$,"An error was suppressed during disposal"):(O=!0,G),B=(G)=>{while(G=w.pop())try{var E=G[1]&&G[1].call(G[2]);if(G[0])return Promise.resolve(E).then(B,(N)=>(f(N),B()))}catch(N){f(N)}if(O)throw $};return B()};var Dw=()=>{};var _w=({onRequest:w,onSseError:$,onSseEvent:O,responseTransformer:f,responseValidator:B,sseDefaultRetryDelay:G,sseMaxRetryAttempts:E,sseMaxRetryDelay:N,sseSleepFn:U,url:Z,...J})=>{let L,z=U??((X)=>new Promise((T)=>setTimeout(T,X)));return{stream:async function*(){let X=G??3000,T=0,b=J.signal??new AbortController().signal;while(!0){if(b.aborted)break;T++;let $$=J.headers instanceof Headers?J.headers:new Headers(J.headers);if(L!==void 0)$$.set("Last-Event-ID",L);try{let g={redirect:"follow",...J,body:J.serializedBody,headers:$$,signal:b},A=new Request(Z,g);if(w)A=await w(Z,g);let R=await(J.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(),w$="",Ww=()=>{try{K.cancel()}catch{}};b.addEventListener("abort",Ww);try{while(!0){let{done:z1,value:K1}=await K.read();if(z1)break;w$+=K1,w$=w$.replace(/\r\n/g,`
8
4
  `).replace(/\r/g,`
9
- `);let Nw=e.split(`
5
+ `);let Jw=w$.split(`
10
6
 
11
- `);e=Nw.pop()??"";for(let M1 of Nw){let _1=M1.split(`
12
- `),Z$=[],Yw;for(let I of _1)if(I.startsWith("data:"))Z$.push(I.replace(/^data:\s*/,""));else if(I.startsWith("event:"))Yw=I.replace(/^event:\s*/,"");else if(I.startsWith("id:"))Q=I.replace(/^id:\s*/,"");else if(I.startsWith("retry:")){let Xw=Number.parseInt(I.replace(/^retry:\s*/,""),10);if(!Number.isNaN(Xw))L=Xw}let b,Uw=!1;if(Z$.length){let I=Z$.join(`
13
- `);try{b=JSON.parse(I),Uw=!0}catch{b=I}}if(Uw){if(W)await W(b);if(B)b=await B(b)}if(G?.({data:b,event:Yw,id:Q,retry:L}),Z$.length)yield b}}}finally{j.removeEventListener("abort",Jw),S.releaseLock()}break}catch(k){if($?.(k),J!==void 0&&_>=J)break;let h=Math.min(L*2**(_-1),N??30000);await K(h)}}}()}};var b1=(w)=>{switch(w){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},g1=(w)=>{switch(w){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},v1=(w)=>{switch(w){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},E$=({allowReserved:w,explode:$,name:G,style:B,value:W})=>{if(!$){let N=(w?W:W.map((Y)=>encodeURIComponent(Y))).join(g1(B));switch(B){case"label":return`.${N}`;case"matrix":return`;${G}=${N}`;case"simple":return N;default:return`${G}=${N}`}}let Z=b1(B),J=W.map((N)=>{if(B==="label"||B==="simple")return w?N:encodeURIComponent(N);return l({allowReserved:w,name:G,value:N})}).join(Z);return B==="label"||B==="matrix"?Z+J:J},l=({allowReserved:w,name:$,value:G})=>{if(G===void 0||G===null)return"";if(typeof G==="object")throw Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${$}=${w?G:encodeURIComponent(G)}`},D$=({allowReserved:w,explode:$,name:G,style:B,value:W,valueOnly:Z})=>{if(W instanceof Date)return Z?W.toISOString():`${G}=${W.toISOString()}`;if(B!=="deepObject"&&!$){let Y=[];Object.entries(W).forEach(([X,Q])=>{Y=[...Y,X,w?Q:encodeURIComponent(Q)]});let O=Y.join(",");switch(B){case"form":return`${G}=${O}`;case"label":return`.${O}`;case"matrix":return`;${G}=${O}`;default:return O}}let J=v1(B),N=Object.entries(W).map(([Y,O])=>l({allowReserved:w,name:B==="deepObject"?`${G}[${Y}]`:Y,value:O})).join(J);return B==="label"||B==="matrix"?J+N:N};function x$(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 c1,d1=({path:w,url:$})=>{let G=$,B=$.match(c1);if(B)for(let W of B){let Z=!1,J=W.substring(1,W.length-1),N="simple";if(J.endsWith("*"))Z=!0,J=J.substring(0,J.length-1);if(J.startsWith("."))J=J.substring(1),N="label";else if(J.startsWith(";"))J=J.substring(1),N="matrix";let Y=w[J];if(Y===void 0||Y===null)continue;if(Array.isArray(Y)){G=G.replace(W,E$({explode:Z,name:J,style:N,value:Y}));continue}if(typeof Y==="object"){G=G.replace(W,D$({explode:Z,name:J,style:N,value:Y,valueOnly:!0}));continue}if(N==="matrix"){G=G.replace(W,`;${l({name:J,value:Y})}`);continue}let O=encodeURIComponent(N==="label"?`.${Y}`:Y);G=G.replace(W,O)}return G},Cw=({baseUrl:w,path:$,query:G,querySerializer:B,url:W})=>{let Z=W.startsWith("/")?W:`/${W}`,J=(w??"")+Z;if($)J=d1({path:$,url:J});let N=G?B(G):"";if(N.startsWith("?"))N=N.substring(1);if(N)J+=`?${N}`;return J};var C$=E(()=>{c1=/\{[^{}]+\}/g});var kw=async(w,$)=>{let G=typeof $==="function"?await $(w):$;if(!G)return;if(w.scheme==="bearer")return`Bearer ${G}`;if(w.scheme==="basic")return`Basic ${btoa(G)}`;return G};var k$;var b$=E(()=>{k$={bodySerializer:(w)=>JSON.stringify(w,($,G)=>typeof G==="bigint"?G.toString():G)}});class T${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 G=this.getInterceptorIndex(w);if(this.fns[G])return this.fns[G]=$,w;return!1}use(w){return this.fns.push(w),this.fns.length-1}}var bw=({parameters:w={},...$}={})=>{return(B)=>{let W=[];if(B&&typeof B==="object")for(let Z in B){let J=B[Z];if(J===void 0||J===null)continue;let N=w[Z]||$;if(Array.isArray(J)){let Y=E$({allowReserved:N.allowReserved,explode:!0,name:Z,style:"form",value:J,...N.array});if(Y)W.push(Y)}else if(typeof J==="object"){let Y=D$({allowReserved:N.allowReserved,explode:!0,name:Z,style:"deepObject",value:J,...N.object});if(Y)W.push(Y)}else{let Y=l({allowReserved:N.allowReserved,name:Z,value:J});if(Y)W.push(Y)}}return W.join("&")}},gw=(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((G)=>$.startsWith(G)))return"blob";if($.startsWith("text/"))return"text";return},y1=(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 G of w){if(y1($,G.name))continue;let B=await kw(G,$.auth);if(!B)continue;let W=G.name??"Authorization";switch(G.in){case"query":if(!$.query)$.query={};$.query[W]=B;break;case"cookie":$.headers.append("Cookie",`${W}=${B}`);break;case"header":default:$.headers.set(W,B);break}}},g$=(w)=>Cw({baseUrl:w.baseUrl,path:w.path,query:w.query,querySerializer:typeof w.querySerializer==="function"?w.querySerializer:bw(w.querySerializer),url:w.url}),v$=(w,$)=>{let G={...w,...$};if(G.baseUrl?.endsWith("/"))G.baseUrl=G.baseUrl.substring(0,G.baseUrl.length-1);return G.headers=M$(w.headers,$.headers),G},m1=(w)=>{let $=[];return w.forEach((G,B)=>{$.push([B,G])}),$},M$=(...w)=>{let $=new Headers;for(let G of w){if(!G)continue;let B=G instanceof Headers?m1(G):Object.entries(G);for(let[W,Z]of B)if(Z===null)$.delete(W);else if(Array.isArray(Z))for(let J of Z)$.append(W,J);else if(Z!==void 0)$.set(W,typeof Z==="object"?JSON.stringify(Z):Z)}return $},cw=()=>({error:new T$,request:new T$,response:new T$}),u1,l1,G$=(w={})=>({...k$,headers:l1,parseAs:"auto",querySerializer:u1,...w});var c$=E(()=>{b$();C$();u1=bw({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),l1={"Content-Type":"application/json"}});var B$=(w={})=>{let $=v$(G$(),w),G=()=>({...$}),B=(O)=>{return $=v$($,O),G()},W=cw(),Z=async(O)=>{let X={...$,...O,fetch:O.fetch??$.fetch??globalThis.fetch,headers:M$($.headers,O.headers),serializedBody:void 0};if(X.security)await vw({...X,security:X.security});if(X.requestValidator)await X.requestValidator(X);if(X.body!==void 0&&X.bodySerializer)X.serializedBody=X.bodySerializer(X.body);if(X.body===void 0||X.serializedBody==="")X.headers.delete("Content-Type");let Q=g$(X);return{opts:X,url:Q}},J=async(O)=>{let{opts:X,url:Q}=await Z(O),K={redirect:"follow",...X,body:x$(X)},z=new Request(Q,K);for(let V of W.request.fns)if(V)z=await V(z,X);let x=X.fetch,L;try{L=await x(z)}catch(V){let R=V;for(let S of W.error.fns)if(S)R=await S(V,void 0,z,X);if(R=R||{},X.throwOnError)throw R;return X.responseStyle==="data"?void 0:{error:R,request:z,response:void 0}}for(let V of W.response.fns)if(V)L=await V(L,z,X);let _={request:z,response:L};if(L.ok){let V=(X.parseAs==="auto"?gw(L.headers.get("Content-Type")):X.parseAs)??"json";if(L.status===204||L.headers.get("Content-Length")==="0"){let S;switch(V){case"arrayBuffer":case"blob":case"text":S=await L[V]();break;case"formData":S=new FormData;break;case"stream":S=L.body;break;case"json":default:S={};break}return X.responseStyle==="data"?S:{data:S,..._}}let R;switch(V){case"arrayBuffer":case"blob":case"formData":case"text":R=await L[V]();break;case"json":{let S=await L.text();R=S?JSON.parse(S):{};break}case"stream":return X.responseStyle==="data"?L.body:{data:L.body,..._}}if(V==="json"){if(X.responseValidator)await X.responseValidator(R);if(X.responseTransformer)R=await X.responseTransformer(R)}return X.responseStyle==="data"?R:{data:R,..._}}let j=await L.text(),a;try{a=JSON.parse(j)}catch{}let k=a??j,h=k;for(let V of W.error.fns)if(V)h=await V(k,L,z,X);if(h=h||{},X.throwOnError)throw h;return X.responseStyle==="data"?void 0:{error:h,..._}},N=(O)=>(X)=>J({...X,method:O}),Y=(O)=>async(X)=>{let{opts:Q,url:K}=await Z(X);return xw({...Q,body:Q.body,headers:Q.headers,method:O,onRequest:async(z,x)=>{let L=new Request(z,x);for(let _ of W.request.fns)if(_)L=await _(L,Q);return L},serializedBody:x$(Q),url:K})};return{buildUrl:g$,connect:N("CONNECT"),delete:N("DELETE"),get:N("GET"),getConfig:G,head:N("HEAD"),interceptors:W,options:N("OPTIONS"),patch:N("PATCH"),post:N("POST"),put:N("PUT"),request:J,setConfig:B,sse:{connect:Y("CONNECT"),delete:Y("DELETE"),get:Y("GET"),head:Y("HEAD"),options:Y("OPTIONS"),patch:Y("PATCH"),post:Y("POST"),put:Y("PUT"),trace:Y("TRACE")},trace:N("TRACE")}};var d$=E(()=>{C$();c$()});var p1,n1,dw=(w,$)=>{if(!$)$=new Map;for(let G of w)if("in"in G){if(G.key)$.set(G.key,{in:G.in,map:G.map})}else if("key"in G)$.set(G.key,{map:G.map});else if(G.args)dw(G.args,$);return $},i1=(w)=>{for(let[$,G]of Object.entries(w))if(G&&typeof G==="object"&&!Object.keys(G).length)delete w[$]},U=(w,$)=>{let G={body:{},headers:{},path:{},query:{}},B=dw($),W;for(let[Z,J]of w.entries()){if($[Z])W=$[Z];if(!W)continue;if("in"in W)if(W.key){let N=B.get(W.key),Y=N.map||W.key;if(N.in)G[N.in][Y]=J}else G.body=J;else for(let[N,Y]of Object.entries(J??{})){let O=B.get(N);if(O)if(O.in){let X=O.map||N;G[O.in][X]=Y}else G[O.map]=Y;else{let X=n1.find(([Q])=>N.startsWith(Q));if(X){let[Q,K]=X;G[K][N.slice(Q.length)]=Y}else if("allowExtra"in W&&W.allowExtra){for(let[Q,K]of Object.entries(W.allowExtra))if(K){G[Q][N]=Y;break}}}}}return i1(G),G};var yw=E(()=>{p1={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},n1=Object.entries(p1)});var y$=E(()=>{b$();yw();d$();c$()});var mw;var uw=E(()=>{y$();mw=B$(G$({baseUrl:"http://localhost:4096"}))});class D{client;constructor(w){this.client=w?.client??mw}}class lw{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 pw,nw,iw,rw,ow,sw,tw,aw,ew,$0,w0,G0,B0,W0,Z0,J0,N0,Y0,U0,X0,O0,Q0,L0,E0,D0,T0,M0,_0,f0,z0,_$;var R0=E(()=>{uw();y$();pw=class pw extends D{get(w){return(w?.client??this.client).get({url:"/global/config",...w})}update(w,$){let G=U([w],[{args:[{key:"config",map:"body"}]}]);return($?.client??this.client).patch({url:"/global/config",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}};nw=class nw extends D{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 pw({client:this.client})}};iw=class iw extends D{remove(w,$){let G=U([w],[{args:[{in:"path",key:"providerID"}]}]);return($?.client??this.client).delete({url:"/auth/{providerID}",...$,...G})}set(w,$){let G=U([w],[{args:[{in:"path",key:"providerID"},{key:"auth",map:"body"}]}]);return($?.client??this.client).put({url:"/auth/{providerID}",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}};rw=class rw extends D{list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/project",...$,...G})}current(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/project/current",...$,...G})}update(w,$){let G=U([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}",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}};ow=class ow extends D{list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/pty",...$,...G})}create(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}remove(w,$){let G=U([w],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/pty/{ptyID}",...$,...G})}get(w,$){let G=U([w],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/pty/{ptyID}",...$,...G})}update(w,$){let G=U([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}",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}connect(w,$){let G=U([w],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/pty/{ptyID}/connect",...$,...G})}};sw=class sw extends D{get(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/config",...$,...G})}update(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{key:"config",map:"body"}]}]);return($?.client??this.client).patch({url:"/config",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}providers(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/config/providers",...$,...G})}};tw=class tw extends D{ids(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/experimental/tool/ids",...$,...G})}list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"provider"},{in:"query",key:"model"}]}]);return($?.client??this.client).get({url:"/experimental/tool",...$,...G})}};aw=class aw extends D{remove(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{key:"worktreeRemoveInput",map:"body"}]}]);return($?.client??this.client).delete({url:"/experimental/worktree",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/experimental/worktree",...$,...G})}create(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{key:"worktreeCreateInput",map:"body"}]}]);return($?.client??this.client).post({url:"/experimental/worktree",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}reset(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{key:"worktreeResetInput",map:"body"}]}]);return($?.client??this.client).post({url:"/experimental/worktree/reset",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}};ew=class ew extends D{list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/experimental/resource",...$,...G})}};$0=class $0 extends D{_resource;get resource(){return this._resource??=new ew({client:this.client})}};w0=class w0 extends D{list(w,$){let G=U([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",...$,...G})}create(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}status(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/status",...$,...G})}delete(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/session/{sessionID}",...$,...G})}get(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}",...$,...G})}update(w,$){let G=U([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}",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}children(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/children",...$,...G})}todo(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/todo",...$,...G})}init(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}fork(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/fork",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}abort(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/abort",...$,...G})}unshare(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/session/{sessionID}/share",...$,...G})}share(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/share",...$,...G})}diff(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"messageID"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/diff",...$,...G})}summarize(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}messages(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"limit"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/message",...$,...G})}prompt(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}message(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/session/{sessionID}/message/{messageID}",...$,...G})}promptAsync(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}command(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}shell(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}revert(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}unrevert(w,$){let G=U([w],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/session/{sessionID}/unrevert",...$,...G})}};G0=class G0 extends D{delete(w,$){let G=U([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}",...$,...G})}update(w,$){let G=U([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}",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}};B0=class B0 extends D{respond(w,$){let G=U([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}",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}reply(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/permission",...$,...G})}};W0=class W0 extends D{list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/question",...$,...G})}reply(w,$){let G=U([w],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"body",key:"answers"}]}]);return($?.client??this.client).post({url:"/question/{requestID}/reply",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}reject(w,$){let G=U([w],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/question/{requestID}/reject",...$,...G})}};Z0=class Z0 extends D{authorize(w,$){let G=U([w],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"body",key:"method"}]}]);return($?.client??this.client).post({url:"/provider/{providerID}/oauth/authorize",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}callback(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}};J0=class J0 extends D{list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/provider",...$,...G})}auth(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/provider/auth",...$,...G})}_oauth;get oauth(){return this._oauth??=new Z0({client:this.client})}};N0=class N0 extends D{text(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"pattern"}]}]);return($?.client??this.client).get({url:"/find",...$,...G})}files(w,$){let G=U([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",...$,...G})}symbols(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"query"}]}]);return($?.client??this.client).get({url:"/find/symbol",...$,...G})}};Y0=class Y0 extends D{list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return($?.client??this.client).get({url:"/file",...$,...G})}read(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return($?.client??this.client).get({url:"/file/content",...$,...G})}status(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/file/status",...$,...G})}};U0=class U0 extends D{remove(w,$){let G=U([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).delete({url:"/mcp/{name}/auth",...$,...G})}start(w,$){let G=U([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/auth",...$,...G})}callback(w,$){let G=U([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"body",key:"code"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/auth/callback",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}authenticate(w,$){let G=U([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/auth/authenticate",...$,...G})}};X0=class X0 extends D{status(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/mcp",...$,...G})}add(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"name"},{in:"body",key:"config"}]}]);return($?.client??this.client).post({url:"/mcp",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}connect(w,$){let G=U([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/connect",...$,...G})}disconnect(w,$){let G=U([w],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/mcp/{name}/disconnect",...$,...G})}_auth;get auth(){return this._auth??=new U0({client:this.client})}};O0=class O0 extends D{next(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/tui/control/next",...$,...G})}response(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return($?.client??this.client).post({url:"/tui/control/response",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}};Q0=class Q0 extends D{appendPrompt(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"text"}]}]);return($?.client??this.client).post({url:"/tui/append-prompt",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}openHelp(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-help",...$,...G})}openSessions(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-sessions",...$,...G})}openThemes(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-themes",...$,...G})}openModels(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/open-models",...$,...G})}submitPrompt(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/submit-prompt",...$,...G})}clearPrompt(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/tui/clear-prompt",...$,...G})}executeCommand(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"command"}]}]);return($?.client??this.client).post({url:"/tui/execute-command",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}showToast(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}publish(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return($?.client??this.client).post({url:"/tui/publish",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}selectSession(w,$){let G=U([w],[{args:[{in:"query",key:"directory"},{in:"body",key:"sessionID"}]}]);return($?.client??this.client).post({url:"/tui/select-session",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}_control;get control(){return this._control??=new O0({client:this.client})}};L0=class L0 extends D{dispose(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).post({url:"/instance/dispose",...$,...G})}};E0=class E0 extends D{get(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/path",...$,...G})}};D0=class D0 extends D{get(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/vcs",...$,...G})}};T0=class T0 extends D{list(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/command",...$,...G})}};M0=class M0 extends D{log(w,$){let G=U([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",...$,...G,headers:{"Content-Type":"application/json",...$?.headers,...G.headers}})}agents(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/agent",...$,...G})}skills(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/skill",...$,...G})}};_0=class _0 extends D{status(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/lsp",...$,...G})}};f0=class f0 extends D{status(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).get({url:"/formatter",...$,...G})}};z0=class z0 extends D{subscribe(w,$){let G=U([w],[{args:[{in:"query",key:"directory"}]}]);return($?.client??this.client).sse.get({url:"/event",...$,...G})}};_$=class _$ extends D{static __registry=new lw;constructor(w){super(w);_$.__registry.set(this,w?.key)}_global;get global(){return this._global??=new nw({client:this.client})}_auth;get auth(){return this._auth??=new iw({client:this.client})}_project;get project(){return this._project??=new rw({client:this.client})}_pty;get pty(){return this._pty??=new ow({client:this.client})}_config;get config(){return this._config??=new sw({client:this.client})}_tool;get tool(){return this._tool??=new tw({client:this.client})}_worktree;get worktree(){return this._worktree??=new aw({client:this.client})}_experimental;get experimental(){return this._experimental??=new $0({client:this.client})}_session;get session(){return this._session??=new w0({client:this.client})}_part;get part(){return this._part??=new G0({client:this.client})}_permission;get permission(){return this._permission??=new B0({client:this.client})}_question;get question(){return this._question??=new W0({client:this.client})}_provider;get provider(){return this._provider??=new J0({client:this.client})}_find;get find(){return this._find??=new N0({client:this.client})}_file;get file(){return this._file??=new Y0({client:this.client})}_mcp;get mcp(){return this._mcp??=new X0({client:this.client})}_tui;get tui(){return this._tui??=new Q0({client:this.client})}_instance;get instance(){return this._instance??=new L0({client:this.client})}_path;get path(){return this._path??=new E0({client:this.client})}_vcs;get vcs(){return this._vcs??=new D0({client:this.client})}_command;get command(){return this._command??=new T0({client:this.client})}_app;get app(){return this._app??=new M0({client:this.client})}_lsp;get lsp(){return this._lsp??=new _0({client:this.client})}_formatter;get formatter(){return this._formatter??=new f0({client:this.client})}_event;get event(){return this._event??=new z0({client:this.client})}}});function m$(w){if(!w?.fetch)w={...w,fetch:(B)=>{return B.timeout=!1,fetch(B)}};if(w?.directory){let B=/[^\x00-\x7F]/.test(w.directory)?encodeURIComponent(w.directory):w.directory;w.headers={...w.headers,"x-opencode-directory":B}}let $=B$(w);return new _$({client:$})}var V0=E(()=>{d$();R0();Pw()});async function S0(w){if(w.loopUpForDesktopServer){let $=await r1();if($){let G=m$(h$(w,$??{}));if((await G.global.health()).data?.healthy)return G;else console.warn("Desktop server is not healthy, re-launch Opencode app")}else console.warn("Desktop server is not registered, launch Opencode app")}return m$(w)}async function r1(){if(!await K0.exists())return;let $=await K0.json();return o1($)}function o1(w){return{baseUrl:`http://${w.hostname}:${w.port}`,headers:{Authorization:`Basic ${btoa(`${w.username}:${w.password}`)}`}}}var K0,R5;var q0=E(()=>{V0();H();K0=Bun.file(`${Bun.env.HOME}/Library/Application Support/ai.opencode.desktop/store.json`),R5={client:Bun.env.OPENCODE_CLIENT??"unknown",password:Bun.env.OPENCODE_SERVER_PASSWORD,username:Bun.env.OPENCODE_SERVER_USERNAME}});async function H0(w,$){let{data:G}=await w.project.current({directory:$??process.cwd()});if(G&&G.id!=="global")return G.worktree;let{data:B,error:W}=await w.project.list();return f(W===void 0,`Failed to list projects: ${W}`),f(B,"No projects found"),f(B.length>0,`No projects found: ${B.length}`),U$.select("Select a project",{options:B.map((Z)=>({label:Z.name??Z.worktree,value:Z.worktree,hint:Z.name?`${Z.worktree} - ${Z.id.slice(0,5)}`:Z.id.slice(0,5)}))})}function F0(w){return w.name??w.worktree}var u$=E(()=>{X$();H()});var W$,l$;var p$=E(()=>{W$=class W$ extends Error{output;constructor(w,$){let G=w.stdout.toString().trim()||void 0,W=(w.stderr.toString().trim()||void 0)??G??"Unknown shell error";super(W,{cause:$.cause});this.output=w}};l$=class l$ extends Error{exitCode;constructor(w){let $=w.exitCode;super(`Exited with code '${$}'`);this.exitCode=$}}});var F={};g(F,{use:()=>s1,create:()=>A0});function s1(w){if(w instanceof Bun.$.Shell)return A0(w);if(j0 in w)return w;throw Error("Invalid client input")}function A0(w){let $=w,B=Object.assign((W,...Z)=>{let J=0,N=[...W],Y=Z.flatMap((Q,K)=>{if(!w$(Q))return[Q];let z=y(qw(Q),(L,_)=>{if(Fw(_))return`--${L}`;if(v(_))return`--${L}=${O$(_).join(",")}`;return`--${L}='${String(_)}'`});if(P(z))return[""];let x=z.length-1;return N.splice(K+1+J,0,...Array(x).fill(" ")),J+=x,z}),O=Object.assign(N,{raw:[...N]}),X=$(O,...Y);return t1(X)},{[j0]:!0,cwd(W){return $=$.cwd(W),B},env(W){return $=$.env(W),B}});return B}function t1(w){return{json:async($)=>{let G=await w.quiet($?.quiet).nothrow(),[B,W]=await Kw(()=>G.json())();if(W)return W;throw new W$(G,{cause:B})},text:async($)=>{let G=await w.quiet($?.quiet).nothrow(),B=G.stdout.toString().trim()||void 0;if(G.exitCode!==0)return[new W$(G,{cause:new l$(G)}),B];return[void 0,B]}}}var j0;var h0=E(()=>{H();p$();j0=Symbol("shell_client")});var f$=E(()=>{h0();p$()});var A={};g(A,{use:()=>a1,update:()=>p,show:()=>wG,list:()=>i$,find:()=>z$,create:()=>r$,close:()=>$G,claim:()=>e1});async function a1(w,$,G){if("status"in $&&!G?.force)return $;return A$(await i$(w,{...G,ids:[$.id]}))}async function p(w,$,G={}){let W=await F.use(w)`bd update ${$.id} ${G} --json`.json(),[Z]=W;return f(Z,`Issue '${$.id}' not found`),Z}async function r$(w,$){return await F.use(w)`bd create ${$} --json`.json()}async function e1(w,$,G={}){let W=await F.use(w)`bd update ${$.id} ${G} --claim --json`.json(),[Z]=W;return f(Z,`Issue '${$.id}' not found`),Z}async function $G(w,$,G={}){let W=await F.use(w)`bd close ${$.id} ${G} --json`.json(),[Z]=W;return f(Z,`Issue '${$.id}' not found`),Z}async function wG(w,$){return F.use(w)`bd show ${$.id}`.text()}var i$,z$;var R$=E(()=>{H();f$();i$=Object.assign(async(w,$={})=>{if(P($.ids))return[];return await F.use(w)`bd list ${$} --json`.json()},{ready:async(w,$={})=>{return await F.use(w)`bd ready ${$} --json`.json()}});((j5)=>{async function w($,G,B){return(await i$($,B)).find((Z)=>Z.external_ref===G)}j5.byExternalRef=w})(z$||={})});var n={};g(n,{use:()=>WG,stuck:()=>GG,state:()=>o$,done:()=>BG});async function GG(w,$,G){let B=await o$(w,$,"stuck");return await p(w,{id:B.agent},{"add-label":P0(G.context),description:G.reason}),B}async function BG(w,$,G={}){let B=await o$(w,$,"done");return await p(w,{id:B.agent},{"add-label":P0(G.context),description:""}),B}async function o$(w,$,G){return await F.use(w)`bd agent state gram-${$} ${G} --json`.json()}async function WG(w,$){let G=F.use(w),B="slug"in $?`gram-${$.slug}`:$.id;return await G`bd agent show ${B} --json`.json()}function P0(w){if(!w)return;let $=O$(y(w,(G,B)=>B&&`${G}:${B}`));return P($)?void 0:$}var x0=E(()=>{H();f$();R$()});var k0=E(()=>{f$()});var V$=E(()=>{x0();R$();k0()});var i={};g(i,{update:()=>NG,find:()=>g0,create:()=>JG,SpecificationInput:()=>ZG,Specification:()=>b0});import{z as C}from"zod";async function JG(w,$){let G=await r$(w,{type:"epic",title:$.title,description:$.description,"external-ref":$.file});return t$(G)}async function NG(w,$,G){let B=await p(w,{id:$.issueId},{type:"epic",title:G.title,description:G.description,"external-ref":G.file});return t$(B)}function t$(w){return b0.parse({issueId:w.id,file:w.external_ref,title:w.title,description:w.description})}var b0,ZG,g0;var v0=E(()=>{R$();b0=C.object({issueId:C.string(),file:C.string(),title:C.string(),description:C.string().optional()}),ZG=C.object({file:C.string(),title:C.string(),description:C.string().optional()});((x5)=>{async function w($,G){let B=await z$.byExternalRef($,G,{type:"epic"});return B&&t$(B)}x5.byFile=w})(g0||={})});var r={};g(r,{watch:()=>y0,use:()=>XG,scan:()=>m0,Frontmatter:()=>UG});import*as d0 from"fs";import*as K$ from"path";import{z as c0}from"zod";function XG(w){if(w.watch)return y0(w);else return m0(w)}async function*y0(w){let $=u0(w.targets),G=new Map,B=[],W,Z=d0.watch(w.cwd,async(J,N)=>{if(J==="change"&&N){if(!$.match(N))return;let Y=a$(w.cwd,N),O=Bun.hash(await Y.file.text());if(G.get(N)===O)return;if(G.set(N,O),B.push(a$(w.cwd,N)),W)W.resolve(N),W=void 0}});try{while(!0){let J=B.shift();if(J)yield J;else W=j$(),await W.promise}}finally{Z.close()}}async function*m0(w){let{targets:$,isIgnored:G}=u0(w.targets);for(let B of $)for await(let W of B.scan({cwd:w.cwd})){if(G(W))continue;yield a$(w.cwd,W)}}function u0(w){let $=[],G=[];for(let W of zw(w))if(W.startsWith("!"))G.push(new Bun.Glob(W));else $.push(new Bun.Glob(W));f(!P($),"At least one target is required");function B(W){return!YG.match(W)||G.every((Z)=>!Z.match(W))}return{targets:$,isIgnored:B,match:(W)=>!B(W)&&$.some((Z)=>Z.match(W))}}function a$(w,$){let G=K$.join(w,$);return{filename:$,filepath:K$.parse(G),file:Bun.file(G)}}var YG,UG;var l0=E(()=>{H();YG=new Bun.Glob("**/*.md"),UG=c0.object({issue:c0.string().optional()})});var e$=E(()=>{v0();l0()});function n0(w,$){let G=$?.delimiter??"---";if(!w.trimStart().startsWith(G))return{metadata:{},content:w};let B=w.split(`
14
- `),W=-1,Z=-1;for(let X=0;X<B.length;X++)if(B[X]?.trim()===G){W=X;break}if(W===-1)return{metadata:{},content:w};for(let X=W+1;X<B.length;X++)if(B[X]?.trim()===G){Z=X;break}if(Z===-1)return{metadata:{},content:w};let N=B.slice(W+1,Z).join(`
15
- `),Y=QG(N),O=B.slice(Z+1).join(`
16
- `).replace(/^\n+/,"");return{metadata:Y,content:O}}function OG(w,$){let G=$?.delimiter??"---",B=$w(w);return`${G}
17
- ${B}${G}
18
- `}function i0(w,$,G){return`${OG($,G)}
19
- ${w}`}function QG(w){let $={},G=w.split(`
20
- `),B=[{obj:$,indent:-1}];for(let W of G){if(!W.trim()||W.trim().startsWith("#"))continue;let Z=W.length-(W.trimStart()?.length??0),J=W.trim();while(B.length>1){let Q=B[B.length-1];if(!Q||Z>Q.indent)break;B.pop()}let N=J.indexOf(":");if(N===-1)continue;let Y=J.substring(0,N).trim(),O=J.substring(N+1).trim(),X=B[B.length-1]?.obj;if(!X)continue;if(O===""){let Q={};X[Y]=Q,B.push({obj:Q,indent:Z})}else if(X)X[Y]=LG(O)}return $}function LG(w){if(w.startsWith('"')&&w.endsWith('"')||w.startsWith("'")&&w.endsWith("'"))return w.slice(1,-1);if(w==="true")return!0;if(w==="false")return!1;if(w==="null"||w==="~")return null;let $=Number(w);if(!Number.isNaN($)&&w!=="")return $;return w}function $w(w,$=0){let G=" ".repeat($),B="";for(let[W,Z]of Object.entries(w))if(Iw(Z))B+=`${G}${W}: null
21
- `;else if(w$(Z)&&!v(Z))B+=`${G}${W}:
22
- `,B+=$w(Z,$+1);else if(Aw(Z)){let J=Z.includes(":")||Z.includes("#")||Z.includes(`
23
- `);B+=`${G}${W}: ${J?`"${Z}"`:Z}
24
- `}else if(v(Z)){B+=`${G}${W}:
25
- `;for(let J of Z)if(w$(J)&&!v(J))B+=`${G}-
26
- ${$w(J,$+2)}`;else B+=`${G} - ${J}
27
- `}else B+=`${G}${W}: ${Z}
28
- `;return B}var r0=E(()=>{H()});import*as S$ from"path";async function*o0(w){let $=Bun.$.cwd(w.project);for await(let G of w.source){let{file:B,filepath:W}=G,{metadata:Z,content:J}=n0(await B.text()),N=S$.relative(w.project,S$.format(W)),Y={file:N,title:Hw(W.name),description:m`
7
+ `);w$=Jw.pop()??"";for(let q1 of Jw){let F1=q1.split(`
8
+ `),N$=[],Zw;for(let h of F1)if(h.startsWith("data:"))N$.push(h.replace(/^data:\s*/,""));else if(h.startsWith("event:"))Zw=h.replace(/^event:\s*/,"");else if(h.startsWith("id:"))L=h.replace(/^id:\s*/,"");else if(h.startsWith("retry:")){let Yw=Number.parseInt(h.replace(/^retry:\s*/,""),10);if(!Number.isNaN(Yw))X=Yw}let c,Lw=!1;if(N$.length){let h=N$.join(`
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}),N$.length)yield c}}}finally{b.removeEventListener("abort",Ww),K.releaseLock()}break}catch(g){if($?.(g),E!==void 0&&T>=E)break;let A=Math.min(X*2**(T-1),N??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 N=(w?B:B.map((U)=>encodeURIComponent(U))).join(h1(f));switch(f){case"label":return`.${N}`;case"matrix":return`;${O}=${N}`;case"simple":return N;default:return`${O}=${N}`}}let G=I1(f),E=B.map((N)=>{if(f==="label"||f==="simple")return w?N:encodeURIComponent(N);return v({allowReserved:w,name:O,value:N})}).join(G);return f==="label"||f==="matrix"?G+E:E},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 E=j1(f),N=Object.entries(B).map(([U,Z])=>v({allowReserved:w,name:f==="deepObject"?`${O}[${U}]`:U,value:Z})).join(E);return f==="label"||f==="matrix"?E+N:N};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,E=B.substring(1,B.length-1),N="simple";if(E.endsWith("*"))G=!0,E=E.substring(0,E.length-1);if(E.startsWith("."))E=E.substring(1),N="label";else if(E.startsWith(";"))E=E.substring(1),N="matrix";let U=w[E];if(U===void 0||U===null)continue;if(Array.isArray(U)){O=O.replace(B,U$({explode:G,name:E,style:N,value:U}));continue}if(typeof U==="object"){O=O.replace(B,W$({explode:G,name:E,style:N,value:U,valueOnly:!0}));continue}if(N==="matrix"){O=O.replace(B,`;${v({name:E,value:U})}`);continue}let Z=encodeURIComponent(N==="label"?`.${U}`:U);O=O.replace(B,Z)}return O},Sw=({baseUrl:w,path:$,query:O,querySerializer:f,url:B})=>{let G=B.startsWith("/")?B:`/${B}`,E=(w??"")+G;if($)E=P1({path:$,url:E});let N=O?f(O):"";if(N.startsWith("?"))N=N.substring(1);if(N)E+=`?${N}`;return E};var A$=Y(()=>{A1=/\{[^{}]+\}/g});var Tw=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 E=f[G];if(E===void 0||E===null)continue;let N=w[G]||$;if(Array.isArray(E)){let U=U$({allowReserved:N.allowReserved,explode:!0,name:G,style:"form",value:E,...N.array});if(U)B.push(U)}else if(typeof E==="object"){let U=W$({allowReserved:N.allowReserved,explode:!0,name:G,style:"deepObject",value:E,...N.object});if(U)B.push(U)}else{let U=v({allowReserved:N.allowReserved,name:G,value:E});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 Tw(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)=>Sw({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 E of G)$.append(B,E);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}},E=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 T={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,...T}}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,...T}}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,...T}}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,...T}},N=(Z)=>(J)=>E({...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 T of B.request.fns)if(T)X=await T(X,L);return X},serializedBody:j$(L),url:z})};return{buildUrl:C$,connect:N("CONNECT"),delete:N("DELETE"),get:N("GET"),getConfig:O,head:N("HEAD"),interceptors:B,options:N("OPTIONS"),patch:N("PATCH"),post:N("POST"),put:N("PUT"),request:E,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:N("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,E]of w.entries()){if($[G])B=$[G];if(!B)continue;if("in"in B)if(B.key){let N=f.get(B.key),U=N.map||B.key;if(N.in)O[N.in][U]=E}else O.body=E;else for(let[N,U]of Object.entries(E??{})){let Z=f.get(N);if(Z)if(Z.in){let J=Z.map||N;O[Z.in][J]=U}else O[Z.map]=U;else{let J=c1.find(([L])=>N.startsWith(L));if(J){let[L,z]=J;O[z][N.slice(L.length)]=U}else if("allowExtra"in B&&B.allowExtra){for(let[L,z]of Object.entries(B.allowExtra))if(z){O[L][N]=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 E0(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 N0=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 E0({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(()=>{N0();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 S0(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 T0(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,E,N)=>{var U;let Z=String($[N]??""),J=Z.includes(`
10
+ `)&&((U=E.match(/[ \t]*(?=[^\n]*$)/))==null?void 0:U[0]);if(J)Z=Z.replace(/\n(?=[^\n]*?\S)/g,`
11
+ `+J);return G+E+Z},""));w=w[0]}let f=$[0]??((O=w.match(/^[ \t]*(?=\S)/m))==null?void 0:O[0]);return(f?w.replace(new RegExp(`^${f}`,"gm"),""):w).replace(/^[ \t]*\n|\n[ \t]*$/g,"")}function M0(w){if(!w)return"";return w.split(/(?=[A-Z])|[\.\-\s_]/).map(($)=>$.trim()).filter(($)=>!!$).map(($)=>o1($.toLowerCase())).join(" ")}function S(w,$){if(!w)throw $ instanceof Error?$:Error($??"Assertion failed")}function R0(w){return typeof w==="boolean"}function s1(w){return K0(w,"[object Date]")}function x(w){if(typeof w!=="object"||w===null)return!w||w===!0;if(s1(w))return Number.isNaN(w.getTime());let $=w.length;if(Y0($))return $===0;let O=w.size;if(Y0(O))return O===0;return Object.keys(w).length===0}function t1(w){return typeof w==="function"}function V0(w){return w===null||w===void 0}function Y0(w){return typeof w==="number"&&!Number.isNaN(w)}function G$(w){return K0(w,"[object Object]")}function a1(w){return!!w&&t1(w.then)}function z0(w){return typeof w==="string"}function K0(w,$){return Object.prototype.toString.call(w)===$}var l1=class{constructor({units:w,short:$}){this.units=w,this.short=$}parse(w){var $;let O=w.match(/^(-?\d+(?:\.\d+)?) ?(\w+)?s?$/);if(!O)throw Error(`Invalid quantity, cannot parse: ${w}`);let f=O[2];f=(($=this.short)==null?void 0:$[f])||f;let B=Number.parseFloat(O[1]);if(Math.abs(B)>1&&f.endsWith("s"))f=f.substring(0,f.length-1);if(!this.units[f])throw Error(`Invalid unit: ${f}, makes sure it is one of: ${Object.keys(this.units).join(", ")}`);return B*this.units[f]}},p1,n1,i1,r1=class{constructor(w,$,O){this.semaphore=w,this.request=$,this.weight=O}release(){this.semaphore.release(this),this.release=u1}},X$=class{constructor(w){if(this.maxCapacity=w,this.queue=[],w<=0)throw Error("maxCapacity must be > 0");this.capacity=w}get queueLength(){return this.queue.length}async acquire({signal:w,weight:$=1}={}){if($<=0)throw Error("weight must be > 0");if($>this.maxCapacity)throw Error("weight must be \u2264 maxCapacity");let O=y$(),f=new r1(this,O,$);if(w){let B=()=>{let E=this.queue.indexOf(f);if(E>=0)this.queue.splice(E,1),O.reject(w.reason)};w.addEventListener("abort",B);let G=()=>{w.removeEventListener("abort",B)};O.promise.then(G,G)}if(this.capacity<$)this.queue.push(f),await O.promise;else this.capacity-=$;return f}reject(w){this.acquire=()=>Promise.reject(w),this.queue.forEach(($)=>$.request.reject(w)),this.queue=[]}release(w){this.capacity+=w.weight;let $=this.queue[0];if($&&this.capacity>=$.weight)this.capacity-=$.weight,this.queue.shift(),$.request.resolve()}},d;var H=Y(()=>{p1={week:604800000,day:86400000,hour:3600000,minute:60000,second:1000,millisecond:1},n1={w:"week",d:"day",h:"hour",m:"minute",s:"second",ms:"millisecond"},i1=class w extends l1{constructor($){super({units:{...w.units,...$==null?void 0:$.units},short:{...w.shortUnits,...$==null?void 0:$.short}})}static get units(){return p1}static get shortUnits(){return n1}};d=(()=>Array.isArray)()});var Q$={};P(Q$,{use:()=>e1,getProjectLabel:()=>$O,getProjectHint:()=>wO});async function e1(w,$){let{data:O,error:f}=await w.project.current({directory:$??process.cwd()});S(O,`Cannot use project: ${JSON.stringify(f)}`);let B=O.id.slice(0,5);return{...O,label:O.name??O.worktree,hint:O.name?`${O.worktree} - ${B}`:B}}function $O(w){return w.name??w.worktree}function wO(w){let $=w.id.slice(0,5);return w.name?`${w.worktree} - ${$}`:$}var q0=Y(()=>{H()});var m$=Y(()=>{L0();q0()});import{loadConfig as OO}from"c12";async function l(w){let{config:$,_configFile:O}=await OO({name:"teammate",cwd:w.cwd,configFile:w.configFile,overrides:w.overries,packageJson:!1});return console.debug(`Config loaded from: ${O}`),$}var D$=()=>{};var H0={};P(H0,{default:()=>EO});import{defineCommand as fO,option as BO}from"@bunli/core";import{z as GO}from"zod";var EO;var I0=Y(()=>{m$();D$();EO=fO({name:"health",description:"Check opencode server health",options:{config:BO(GO.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({flags:w})=>{let $=await l({configFile:w.config}),O=await y.use($),f=await Q$.use(O,$.project);console.log({project:f})}})});function _(w){return($)=>{if(!process.stdout.isTTY||process.env.NO_COLOR)return $;return`\x1B[${w}m${$}\x1B[0m`}}function NO(w){return w.replace(/\x1b\[[0-9;]*m/g,"")}async function P0(w){process.stdout.write(w);for await(let $ of console)return $;return""}async function _$(w,$={}){let O=$.default?` (${$.default})`:"",f=`${w}${O} `;while(!0){let G=(await P0(f)).trim()||$.default||"";if($.schema){let E=await $.schema["~standard"].validate(G);if(E.issues){console.error(q.red("Invalid input:"));for(let N of E.issues)console.error(q.dim(` \u2022 ${N.message}`));console.error();continue}return E.value}if($.validate){let E=$.validate(G);if(E===!0)return G;else if(typeof E==="string"){console.error(`\u2717 ${E}`);continue}else{console.error("\u2717 Invalid input");continue}}return G}}async function S$(w,$={}){let O=$.default===!0?"Y/n":$.default===!1?"y/N":"y/n",f=`${w} (${O}) `;while(!0){let G=(await P0(f)).trim().toLowerCase();if(!G&&$.default!==void 0)return $.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 x0(w,$){let{options:O,default:f}=$,B=f?O.findIndex((G)=>G.value===f):0;if(B===-1)B=0;return console.log(w),process.stdout.write(JO),l$(O,B),new Promise((G)=>{process.stdin.setRawMode(!0),process.stdin.resume();let E=()=>{process.stdin.setRawMode(!1),process.stdin.pause(),process.stdout.write(ZO)};process.stdin.on("data",(N)=>{let U=N.toString();if(U==="\x1B[A")B=Math.max(0,B-1),l$(O,B);else if(U==="\x1B[B")B=Math.min(O.length-1,B+1),l$(O,B);else if(U==="\r"||U===`
12
+ `){E();for(let J=0;J<O.length;J++)process.stdout.write(`${p}1A${A0}`);let Z=O[B];if(Z)console.log(`\u2713 ${Z.label}`),G(Z.value)}else if(U==="\x03"||U==="\x1B")E(),process.exit(0)})})}function l$(w,$){for(let O=0;O<w.length;O++)process.stdout.write(`${p}1A`);w.forEach((O,f)=>{process.stdout.write(A0+WO);let B=f===$?"\u276F ":" ",G=O.hint?` (${O.hint})`:"";console.log(`${B}${O.label}${G}`)})}async function T$(w,$={}){return process.stdout.write(w+" "),new Promise((O)=>{let f="";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 E=G.toString();if(E==="\r"||E===`
13
+ `)if(B(),$.schema){let N=await $.schema["~standard"].validate(f);if(N.issues){console.error(q.red("Invalid input:"));for(let U of N.issues)console.error(q.dim(` \u2022 ${U.message}`));console.error(),T$(w,$).then(O);return}O(N.value)}else if($.validate){let N=$.validate(f);if(N===!0)O(f);else console.error(`\u2717 ${typeof N==="string"?N:"Invalid input"}`),T$(w,$).then(O)}else O(f);else if(E==="\x03")B(),process.exit(0);else if(E==="\x7F"||E==="\b"){if(f.length>0)f=f.slice(0,-1),process.stdout.write("\b \b")}else if(E.length===1&&E>=" ")f+=E,process.stdout.write("*")})})}function LO(w){let $=typeof w==="string"?{text:w}:w||{},O=!1,f=0,B=null,G=$.text||"",E=(U,Z)=>{process.stdout.write(`${h0}${j0}${U} ${Z}`)},N={start(U){if(O)return;if(O=!0,U!==void 0)G=U;process.stdout.write("\x1B[?25l"),B=setInterval(()=>{let Z=p$[f];E(Z,G),f=(f+1)%p$.length},80)},stop(U){if(!O)return;if(O=!1,B)clearInterval(B),B=null;if(process.stdout.write(h0+j0),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,O)E(p$[f],G)}};return process.on("exit",()=>N.stop()),process.on("SIGINT",()=>{N.stop(),process.exit(0)}),N}var D,q,UO="\x1B",p,A0,WO,JO,ZO,p$,h0="\x1B[2K",j0="\x1B[G",gf,M$;var R$=Y(()=>{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};q={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:NO},p=`${UO}[`,A0=`${p}2K`,WO=`${p}G`,JO=`${p}?25l`,ZO=`${p}?25h`;p$=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];gf={prompt:Object.assign(_$,{confirm:S$,select:x0,password:T$,text:(w,$)=>_$(w,$),multiselect:async(w,$)=>{let{options:O}=$,f=[];console.log(w);for(let B of O)if(await S$(`Select ${B.label}?`,{default:!1}))f.push(B.value);return f}}),spinner:LO,colors:q},M$=Object.assign(_$,{confirm:S$,select:x0,password:T$,text:(w,$)=>_$(w,$),multiselect:async(w,$)=>{let{options:O}=$,f=[];console.log(w);for(let B of O)if(await S$(`Select ${B.label}?`,{default:!1}))f.push(B.value);return f}})});async function*n$(w,$){let O=S0($?.interval??"1s");while(!0){let f=await w();if(Array.isArray(f)){if(x(f)&&$?.exitOnEmpty)break;yield*f}else if(f===void 0&&$?.exitOnEmpty)break;else yield f;await D0(O)}}async function n(w,$){for await(let O of n$(w,$))if(O)return O;throw Error("Timeout: waiting for condition")}var V$=Y(()=>{H()});async function k0(w,$){let{data:O}=await w.project.current({directory:$??process.cwd()});if(O&&O.id!=="global")return O.worktree;let{data:f,error:B}=await w.project.list();return S(B===void 0,`Failed to list projects: ${B}`),S(f,"No projects found"),S(f.length>0,`No projects found: ${f.length}`),M$.select("Select a project",{options:f.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 b0(w){return w.name??w.worktree}var i$=Y(()=>{R$();H()});var E$,r$;var o$=Y(()=>{E$=class E$ extends Error{output;constructor(w,$){let O=w.stdout.toString().trim()||void 0,B=(w.stderr.toString().trim()||void 0)??O??"Unknown shell error";super(B,{cause:$.cause});this.output=w}};r$=class r$ extends Error{exitCode;constructor(w){let $=w.exitCode;super(`Exited with code '${$}'`);this.exitCode=$}}});var I={};P(I,{use:()=>YO,create:()=>c0});function YO(w){if(w instanceof Bun.$.Shell)return c0(w);if(d0 in w)return w;throw Error("Invalid client input")}function c0(w){let $=w,f=Object.assign((B,...G)=>{let E=0,N=[...B],U=G.flatMap((L,z)=>{if(!G$(L))return[L];let M=m(T0(L),(X,T)=>{if(R0(T))return`--${X}`;if(d(T))return`--${X}=${Y$(T).join(",")}`;return`--${X}='${String(T)}'`});if(x(M))return[""];let F=M.length-1;return N.splice(z+1+E,0,...Array(F).fill(" ")),E+=F,M}),Z=Object.assign(N,{raw:[...N]}),J=$(Z,...U);return XO(J)},{[d0]:!0,cwd(B){return $=$.cwd(B),f},env(B){return $=$.env(B),f}});return f}function XO(w){return{json:async($)=>{let O=await w.quiet($?.quiet).nothrow(),[f,B]=await _0(()=>O.json())();if(B)return B;throw new E$(O,{cause:f})},text:async($)=>{let O=await w.quiet($?.quiet).nothrow(),f=O.stdout.toString().trim()||void 0;if(O.exitCode!==0)return[new E$(O,{cause:new r$(O)}),f];return[void 0,f]}}}var d0;var v0=Y(()=>{H();o$();d0=Symbol("shell_client")});var z$=Y(()=>{v0();o$()});var j={};P(j,{use:()=>QO,update:()=>i,show:()=>SO,list:()=>t$,find:()=>K$,create:()=>a$,close:()=>_O,claim:()=>DO});async function QO(w,$,O){if("status"in $&&!O?.force)return $;return v$(await t$(w,{...O,ids:[$.id]}))}async function i(w,$,O={}){let B=await I.use(w)`bd update ${$.id} ${O} --json`.json(),[G]=B;return S(G,`Issue '${$.id}' not found`),G}async function a$(w,$){return await I.use(w)`bd create ${$} --json`.json()}async function DO(w,$,O={}){let B=await I.use(w)`bd update ${$.id} ${O} --claim --json`.json(),[G]=B;return S(G,`Issue '${$.id}' not found`),G}async function _O(w,$,O={}){let B=await I.use(w)`bd close ${$.id} ${O} --json`.json(),[G]=B;return S(G,`Issue '${$.id}' not found`),G}async function SO(w,$){return I.use(w)`bd show ${$.id}`.text()}var t$,K$;var q$=Y(()=>{H();z$();t$=Object.assign(async(w,$={})=>{if(x($.ids))return[];return await I.use(w)`bd list ${$} --json`.json()},{ready:async(w,$={})=>{return await I.use(w)`bd ready ${$} --json`.json()}});((rf)=>{async function w($,O,f){return(await t$($,f)).find((G)=>G.external_ref===O)}rf.byExternalRef=w})(K$||={})});var r={};P(r,{use:()=>RO,stuck:()=>TO,state:()=>e$,done:()=>MO});async function TO(w,$,O){let f=await e$(w,$,"stuck");return await i(w,{id:f.agent},{"add-label":y0(O.context),description:O.reason}),f}async function MO(w,$,O={}){let f=await e$(w,$,"done");return await i(w,{id:f.agent},{"add-label":y0(O.context),description:""}),f}async function e$(w,$,O){return await I.use(w)`bd agent state gram-${$} ${O} --json`.json()}async function RO(w,$){let O=I.use(w),f="slug"in $?`gram-${$.slug}`:$.id;return await O`bd agent show ${f} --json`.json()}function y0(w){if(!w)return;let $=Y$(m(w,(O,f)=>f&&`${O}:${f}`));return x($)?void 0:$}var m0=Y(()=>{H();z$();q$()});var l0=Y(()=>{z$()});var F$=Y(()=>{m0();q$();l0()});var o={};P(o,{update:()=>KO,find:()=>n0,create:()=>zO,SpecificationInput:()=>VO,Specification:()=>p0});import{z as k}from"zod";async function zO(w,$){let O=await a$(w,{type:"epic",title:$.title,description:$.description,"external-ref":$.file});return ww(O)}async function KO(w,$,O){let f=await i(w,{id:$.issueId},{type:"epic",title:O.title,description:O.description,"external-ref":O.file});return ww(f)}function ww(w){return p0.parse({issueId:w.id,file:w.external_ref,title:w.title,description:w.description})}var p0,VO,n0;var i0=Y(()=>{q$();p0=k.object({issueId:k.string(),file:k.string(),title:k.string(),description:k.string().optional()}),VO=k.object({file:k.string(),title:k.string(),description:k.string().optional()});((tf)=>{async function w($,O){let f=await K$.byExternalRef($,O,{type:"epic"});return f&&ww(f)}tf.byFile=w})(n0||={})});var s={};P(s,{watch:()=>s0,use:()=>HO,scan:()=>t0,Frontmatter:()=>FO});import*as o0 from"fs";import*as H$ from"path";import{z as r0}from"zod";function HO(w){if(w.watch)return s0(w);else return t0(w)}async function*s0(w){let $=a0(w.targets),O=new Map,f=[],B,G=o0.watch(w.cwd,async(E,N)=>{if(E==="change"&&N){if(!$.match(N))return;let U=Ow(w.cwd,N),Z=Bun.hash(await U.file.text());if(O.get(N)===Z)return;if(O.set(N,Z),f.push(Ow(w.cwd,N)),B)B.resolve(N),B=void 0}});try{while(!0){let E=f.shift();if(E)yield E;else B=y$(),await B.promise}}finally{G.close()}}async function*t0(w){let{targets:$,isIgnored:O}=a0(w.targets);for(let f of $)for await(let B of f.scan({cwd:w.cwd})){if(O(B))continue;yield Ow(w.cwd,B)}}function a0(w){let $=[],O=[];for(let B of X0(w))if(B.startsWith("!"))O.push(new Bun.Glob(B));else $.push(new Bun.Glob(B));S(!x($),"At least one target is required");function f(B){return!qO.match(B)||O.every((G)=>!G.match(B))}return{targets:$,isIgnored:f,match:(B)=>!f(B)&&$.some((G)=>G.match(B))}}function Ow(w,$){let O=H$.join(w,$);return{filename:$,filepath:H$.parse(O),file:Bun.file(O)}}var qO,FO;var e0=Y(()=>{H();qO=new Bun.Glob("**/*.md"),FO=r0.object({issue:r0.string().optional()})});var fw=Y(()=>{i0();e0()});function w1(w,$){let O=$?.delimiter??"---";if(!w.trimStart().startsWith(O))return{metadata:{},content:w};let f=w.split(`
14
+ `),B=-1,G=-1;for(let J=0;J<f.length;J++)if(f[J]?.trim()===O){B=J;break}if(B===-1)return{metadata:{},content:w};for(let J=B+1;J<f.length;J++)if(f[J]?.trim()===O){G=J;break}if(G===-1)return{metadata:{},content:w};let N=f.slice(B+1,G).join(`
15
+ `),U=hO(N),Z=f.slice(G+1).join(`
16
+ `).replace(/^\n+/,"");return{metadata:U,content:Z}}function IO(w,$){let O=$?.delimiter??"---",f=Bw(w);return`${O}
17
+ ${f}${O}
18
+ `}function O1(w,$,O){return`${IO($,O)}
19
+ ${w}`}function hO(w){let $={},O=w.split(`
20
+ `),f=[{obj:$,indent:-1}];for(let B of O){if(!B.trim()||B.trim().startsWith("#"))continue;let G=B.length-(B.trimStart()?.length??0),E=B.trim();while(f.length>1){let L=f[f.length-1];if(!L||G>L.indent)break;f.pop()}let N=E.indexOf(":");if(N===-1)continue;let U=E.substring(0,N).trim(),Z=E.substring(N+1).trim(),J=f[f.length-1]?.obj;if(!J)continue;if(Z===""){let L={};J[U]=L,f.push({obj:L,indent:G})}else if(J)J[U]=jO(Z)}return $}function jO(w){if(w.startsWith('"')&&w.endsWith('"')||w.startsWith("'")&&w.endsWith("'"))return w.slice(1,-1);if(w==="true")return!0;if(w==="false")return!1;if(w==="null"||w==="~")return null;let $=Number(w);if(!Number.isNaN($)&&w!=="")return $;return w}function Bw(w,$=0){let O=" ".repeat($),f="";for(let[B,G]of Object.entries(w))if(V0(G))f+=`${O}${B}: null
21
+ `;else if(G$(G)&&!d(G))f+=`${O}${B}:
22
+ `,f+=Bw(G,$+1);else if(z0(G)){let E=G.includes(":")||G.includes("#")||G.includes(`
23
+ `);f+=`${O}${B}: ${E?`"${G}"`:G}
24
+ `}else if(d(G)){f+=`${O}${B}:
25
+ `;for(let E of G)if(G$(E)&&!d(E))f+=`${O}-
26
+ ${Bw(E,$+2)}`;else f+=`${O} - ${E}
27
+ `}else f+=`${O}${B}: ${G}
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:E}=w1(await f.text()),N=I$.relative(w.project,I$.format(B)),U={file:N,title:M0(B.name),description:u`
29
29
  Spec: ${N}
30
- `},O=r.Frontmatter.safeParse(Z),X=O.success&&O.data.issue?{issueId:O.data.issue}:await i.find.byFile($,Y.file),Q=X?await i.update($,X,Y):await i.create($,Y),K=Object.assign({},Z,{issue:Q.issueId});await Bun.write(B,i0(J,K)),yield{asset:G,spec:Q}}}var s0=E(()=>{H();e$();r0()});import*as ww from"fs/promises";async function t0(w){let{client:$,directory:G}=w,B=await DG.acquire();try{let W=await $.project.current({directory:G});f(W.data,`Failed to initialize environment: ${W.error}`);let Z=F0(W.data);if(!W.data.commands?.start){let N=await U$.confirm(`Opencode project ${Z} does not have a start command. Do you want to continue?`,{default:!1});f(N,"Failed to initialize environment: user asked to stop")}let J=await $.worktree.create({directory:G,worktreeCreateInput:{name:w.name}});return f(J.data,`Failed to initialize worktree: ${JSON.stringify(J.error)}`),J.data}finally{B.release()}}async function a0(w){let{client:$,directory:G}=w,B=await $.worktree.remove({directory:G,worktreeRemoveInput:{directory:w.worktreeDirectory}});return f(B.data,`Failed to remove worktree: ${JSON.stringify(B.error)}`),console.log("Worktree removed"),B.data}async function e0(w){return(await Promise.all([ww.exists(`${w.directory}/.opencode`),ww.exists(`${w.directory}/.git`)])).every((G)=>G)}var DG;var $1=E(()=>{X$();H();u$();DG=new Q$(1)});var{$:MG}=globalThis.Bun;var q$;var w1=E(()=>{L$();$1();q$=class q${client;directory;worktree;ready;constructor(w,$,G){this.client=w;this.directory=$;this.worktree=G;this.ready=u(()=>e0(G),{interval:"100ms"})}get $(){return MG.cwd(this.worktree.directory)}static async init(w){let $=await t0(w),G=new q$(w.client,w.directory,$);return await G.ready,G}async[Symbol.asyncDispose](){await a0({client:this.client,directory:this.directory,worktreeDirectory:this.worktree.directory}).catch((w)=>console.error(w))}}});async function G1(w){let Y=[];try{let $=zG(w.issue.id);$(`Start working on ${w.issue.id}...`);const G=Ow(Y,await q$.init({client:w.client,directory:w.directory,name:w.issue.id}),1);$(`Environment ready: ${G.worktree.directory}`);let B=await A.claim(G.$,w.issue);$(`Issue claimed: ${B.id}`);let W=await w.client.session.create({directory:G.worktree.directory,title:`${B.id}: ${B.title}`});f(W.data,`Failed to start the session: ${JSON.stringify(W.error)}`);$(`Session: ${W.data.id}`);let Z=await w.client.session.command({sessionID:W.data.id,directory:G.worktree.directory,command:"fake_work",arguments:`${B.id}`});f(Z.data,`Failed to send the /work command: ${JSON.stringify(Z.error)}`);let J=await n.use(G.$,W.data);while(J.agent_state!=="done"){if(J.agent_state==="stuck")$(`Agent is stuck: ${J.title}`),await u(async()=>{return J=await n.use(G.$,W.data),J.agent_state!=="stuck"},{interval:"1s"}),$(`Agent is ready to continue: ${J.agent_state}`);else{$(`Agent needs follow up, '${J.agent_state}'...`);let z=await w.client.session.prompt({sessionID:W.data.id,directory:G.worktree.directory,parts:[fG(J.agent_state)]});f(z.data,`Failed to follow up: ${JSON.stringify(z.error)}`)}J=await n.use(G.$,W.data)}$("Agent work is done");let N=await w.client.session.messages({sessionID:W.data.id,directory:G.worktree.directory});f(N.data,`Failed to fetch session messages: ${N.error}`);$(`Session messages: ${N.data.length}`);B=await A.close(G.$,w.issue,{reason:"Completed"});f(B,"Failed to close the issue");return B}catch(O){var X=O,Q=1}finally{var K=Qw(Y,X,Q);K&&await K}}function fG(w){return{type:"text",text:m`
30
+ `},Z=s.Frontmatter.safeParse(G),J=Z.success&&Z.data.issue?{issueId:Z.data.issue}:await o.find.byFile($,U.file),L=J?await o.update($,J,U):await o.create($,U),z=Object.assign({},G,{issue:L.issueId});await Bun.write(f,O1(E,z)),yield{asset:O,spec:L}}}var G1=Y(()=>{H();fw();f1()});import*as Gw from"fs/promises";async function E1(w){let{client:$,directory:O}=w,f=await PO.acquire();try{let B=await $.project.current({directory:O});S(B.data,`Failed to initialize environment: ${B.error}`);let G=b0(B.data);if(!B.data.commands?.start){let N=await M$.confirm(`Opencode project ${G} does not have a start command. Do you want to continue?`,{default:!1});S(N,"Failed to initialize environment: user asked to stop")}let E=await $.worktree.create({directory:O,worktreeCreateInput:{name:w.name}});return S(E.data,`Failed to initialize worktree: ${JSON.stringify(E.error)}`),E.data}finally{f.release()}}async function N1(w){let{client:$,directory:O}=w,f=await $.worktree.remove({directory:O,worktreeRemoveInput:{directory:w.worktreeDirectory}});return S(f.data,`Failed to remove worktree: ${JSON.stringify(f.error)}`),console.log("Worktree removed"),f.data}async function U1(w){return(await Promise.all([Gw.exists(`${w.directory}/.opencode`),Gw.exists(`${w.directory}/.git`)])).every((O)=>O)}var PO;var W1=Y(()=>{R$();H();i$();PO=new X$(1)});var{$:CO}=globalThis.Bun;var h$;var J1=Y(()=>{V$();W1();h$=class h${client;directory;worktree;ready;constructor(w,$,O){this.client=w;this.directory=$;this.worktree=O;this.ready=n(()=>U1(O),{interval:"100ms"})}get $(){return CO.cwd(this.worktree.directory)}static async init(w){let $=await E1(w),O=new h$(w.client,w.directory,$);return await O.ready,O}async[Symbol.asyncDispose](){await N1({client:this.client,directory:this.directory,worktreeDirectory:this.worktree.directory}).catch((w)=>console.error(w))}}});async function Z1(w){let U=[];try{let $=gO(w.issue.id);$(`Start working on ${w.issue.id}...`);const O=Xw(U,await h$.init({client:w.client,directory:w.directory,name:w.issue.id}),1);$(`Environment ready: ${O.worktree.directory}`);let f=await j.claim(O.$,w.issue);$(`Issue claimed: ${f.id}`);let B=await w.client.session.create({directory:O.worktree.directory,title:`${f.id}: ${f.title}`});S(B.data,`Failed to start the session: ${JSON.stringify(B.error)}`);$(`Session: ${B.data.id}`);let G=await w.client.session.command({sessionID:B.data.id,directory:O.worktree.directory,command:"fake_work",arguments:`${f.id}`});S(G.data,`Failed to send the /work command: ${JSON.stringify(G.error)}`);let E=await r.use(O.$,B.data);while(E.agent_state!=="done"){if(E.agent_state==="stuck")$(`Agent is stuck: ${E.title}`),await n(async()=>{return E=await r.use(O.$,B.data),E.agent_state!=="stuck"},{interval:"1s"}),$(`Agent is ready to continue: ${E.agent_state}`);else{$(`Agent needs follow up, '${E.agent_state}'...`);let M=await w.client.session.prompt({sessionID:B.data.id,directory:O.worktree.directory,parts:[bO(E.agent_state)]});S(M.data,`Failed to follow up: ${JSON.stringify(M.error)}`)}E=await r.use(O.$,B.data)}$("Agent work is done");let N=await w.client.session.messages({sessionID:B.data.id,directory:O.worktree.directory});S(N.data,`Failed to fetch session messages: ${N.error}`);$(`Session messages: ${N.data.length}`);f=await j.close(O.$,w.issue,{reason:"Completed"});S(f,"Failed to close the issue");return f}catch(Z){var J=Z,L=1}finally{var z=Qw(U,J,L);z&&await z}}function bO(w){return{type:"text",text:u`
31
31
  You are currently registered as '${w}'.
32
32
  - If you are done with the task please notify via the i_am_done tool.
33
33
  - If you are stuck and need human help, please notify via the i_am_stuck tool.
34
34
  - If you need more time to work on the task, please continue working and update your status when needed.
35
- `}}function zG(w){return($)=>{console.log(`[work:${w}] ${$}`)}}var B1=E(()=>{H();V$();w1();L$()});var W1=()=>{};var Z1=E(()=>{H();V$();W1()});var Gw=E(()=>{s0();B1();Z1()});import{loadConfig as VG}from"c12";async function H$(w){let{config:$,_configFile:G}=await VG({name:"teammate",cwd:w.cwd,configFile:w.configFile,overrides:w.overries,packageJson:!1});return console.debug(`Config loaded from: ${G}`),$}var Bw=()=>{};var Y1={};g(Y1,{default:()=>SG});import{defineCommand as KG,option as o}from"@bunli/core";import{z as s}from"zod";var SG,qG;var U1=E(()=>{X$();H();L$();q0();u$();V$();Gw();Bw();SG=KG({name:"work",alias:["ralph"],description:"Starts RALPH loop on opened tasks",options:{concurrency:o(s.coerce.number().min(1).default(1),{description:"How many workers can be spawned at the same time",short:"c"}),task:o(s.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":o(s.boolean().default(!1),{description:"If no task is available, wait for one to become available."}),"max-dispatches":o(s.coerce.number().min(1).default(1/0),{description:"Limit the number of tasks that can be dispatched to workers.",short:"n"}),project:o(s.string().optional(),{description:"Project to work on. When not provided, workers can be spawned for any ready tasks.",short:"p"}),config:o(s.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({cwd:w,flags:$,colors:G})=>{let{project:B=w}=await H$({configFile:$.config,overries:{project:$.project}}),W=await S0({loopUpForDesktopServer:!0}),Z=await H0(W,B),J=Bun.$.cwd(Z),N=new Set,{"wait-on-idle":Y,"max-dispatches":O}=$,X=P$(()=>A.list.ready(J,{parent:$.task}),{interval:"1 second",exitOnEmpty:!Y}),Q=new Q$($.concurrency);for await(let L of X){let _=await Q.acquire();if(N.add(L.id),G1({client:W,directory:Z,issue:L}).catch((j)=>console.error(j)).finally(()=>_.release()),N.size>=O)break}await u(async()=>Q.queueLength===0&&Q.maxCapacity===Q.capacity,{interval:"1 second"});let K=await A.list(J,{all:!0,ids:Array.from(N.values())}),z=Rw(K,(L)=>L.status),x=y(z,(L,_)=>{return(qG[L]??G.reset)(`${_} ${L}`)});console.log(G.gray(`Dispatched: ${G.italic(Array.from(N.values()).join(", "))}`)),console.log(`Tasks: ${x.join(", ")}`)}}),qG={open:$$(q.yellow,q.italic),in_progress:$$(q.yellow,q.italic),blocked:$$(q.red,q.bold,q.underline),deferred:q.red,closed:$$(q.green,q.bold)}});var X1={};g(X1,{default:()=>FG});import{defineCommand as HG,option as Ww}from"@bunli/core";import{z as Zw}from"zod";import*as t from"path";var FG;var O1=E(()=>{Bw();Gw();e$();FG=HG({name:"sync",description:"Syncs the specifications with beads epics",options:{target:Ww(Zw.string().transform((w)=>t.resolve(w)).optional(),{description:"Specification file or directory to sync"}),watch:Ww(Zw.boolean().default(!1),{description:"Watch target for changes",short:"w"}),config:Ww(Zw.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({flags:w,cwd:$,colors:G,spinner:B})=>{let{specifications:W,project:Z=$}=await H$({configFile:w.config,overries:{specifications:w.target}}),J=o0({project:Z,source:r.use({cwd:Z,targets:W,watch:w.watch})});if(w.watch)B("Watching for changes...").start();for await(let N of J){let{asset:Y,spec:O}=N,X=t.relative(Z,t.format(Y.filepath));process.stdout.write(`\r\x1B[K${G.bold(X)}: ${O.issueId}
36
- `)}}})});import{createCLI as AG}from"@bunli/core";var Q1={work:()=>Promise.resolve().then(() => (U1(),Y1)),spec:{sync:()=>Promise.resolve().then(() => (O1(),X1))}};var L1="0.2.0-next.5";var E1=await AG({name:"mate",version:L1,commands:{directory:`${import.meta.dir}/commands`}});await E1.load(Q1);await E1.run();
35
+ `}}function gO(w){return($)=>{console.log(`[work:${w}] ${$}`)}}var L1=Y(()=>{H();F$();J1();V$()});var Y1=()=>{};var X1=Y(()=>{H();F$();Y1()});var Ew=Y(()=>{G1();L1();X1()});var D1={};P(D1,{default:()=>vO});import{defineCommand as dO,option as t}from"@bunli/core";import{z as a}from"zod";var vO,yO;var _1=Y(()=>{R$();H();V$();m$();i$();F$();Ew();D$();vO=dO({name:"work",alias:["ralph"],description:"Starts RALPH loop on opened tasks",options:{concurrency:t(a.coerce.number().min(1).default(1),{description:"How many workers can be spawned at the same time",short:"c"}),task:t(a.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":t(a.boolean().default(!1),{description:"If no task is available, wait for one to become available."}),"max-dispatches":t(a.coerce.number().min(1).default(1/0),{description:"Limit the number of tasks that can be dispatched to workers.",short:"n"}),project:t(a.string().optional(),{description:"Project to work on. When not provided, workers can be spawned for any ready tasks.",short:"p"}),config:t(a.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({flags:w,colors:$})=>{let O=await l({configFile:w.config,overries:{project:w.project}}),f=await y.use(O),B=await k0(f,O.project),G=Bun.$.cwd(B),E=new Set,{"wait-on-idle":N,"max-dispatches":U}=w,Z=n$(()=>j.list.ready(G,{parent:w.task}),{interval:"1 second",exitOnEmpty:!N}),J=new X$(w.concurrency);for await(let F of Z){let X=await J.acquire();if(E.add(F.id),Z1({client:f,directory:B,issue:F}).catch((T)=>console.error(T)).finally(()=>X.release()),E.size>=U)break}await n(async()=>J.queueLength===0&&J.maxCapacity===J.capacity,{interval:"1 second"});let L=await j.list(G,{all:!0,ids:Array.from(E.values())}),z=Q0(L,(F)=>F.status),M=m(z,(F,X)=>{return(yO[F]??$.reset)(`${X} ${F}`)});console.log($.gray(`Dispatched: ${$.italic(Array.from(E.values()).join(", "))}`)),console.log(`Tasks: ${M.join(", ")}`)}}),yO={open:B$(q.yellow,q.italic),in_progress:B$(q.yellow,q.italic),blocked:B$(q.red,q.bold,q.underline),deferred:q.red,closed:B$(q.green,q.bold)}});var S1={};P(S1,{default:()=>uO});import{defineCommand as mO,option as Nw}from"@bunli/core";import{z as Uw}from"zod";import*as e from"path";var uO;var T1=Y(()=>{D$();Ew();fw();uO=mO({name:"sync",description:"Syncs the specifications with beads epics",options:{target:Nw(Uw.string().transform((w)=>e.resolve(w)).optional(),{description:"Specification file or directory to sync"}),watch:Nw(Uw.boolean().default(!1),{description:"Watch target for changes",short:"w"}),config:Nw(Uw.string().optional(),{description:"Teammate config file to use",short:"c"})},handler:async({flags:w,colors:$,spinner:O})=>{let{specifications:f,project:B}=await l({configFile:w.config,overries:{specifications:w.target}}),G=B1({project:B,source:s.use({cwd:B,targets:f,watch:w.watch})});if(w.watch)O("Watching for changes...").start();for await(let E of G){let{asset:N,spec:U}=E,Z=e.relative(B,e.format(N.filepath));process.stdout.write(`\r\x1B[K${$.bold(Z)}: ${U.issueId}
36
+ `)}}})});import{createCLI as pO}from"@bunli/core";var M1={health:()=>Promise.resolve().then(() => (I0(),H0)),work:()=>Promise.resolve().then(() => (_1(),D1)),spec:{sync:()=>Promise.resolve().then(() => (T1(),S1))}};var R1="0.2.0-next.6";var V1=await pO({name:"mate",version:R1,commands:{directory:`${import.meta.dir}/commands`}});await V1.load(M1);await V1.run();
package/dist/plugin.js CHANGED
@@ -39,6 +39,13 @@ async function install(destination) {
39
39
  }));
40
40
  return assets;
41
41
  }
42
+
43
+ // src/adapters/opencode/client/index.ts
44
+ var exports_client = {};
45
+ __export(exports_client, {
46
+ use: () => use,
47
+ register: () => register
48
+ });
42
49
  // node_modules/@opencode-ai/sdk/dist/v2/gen/core/serverSentEvents.gen.js
43
50
  var createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }) => {
44
51
  let lastEventId;
@@ -2599,51 +2606,103 @@ function createOpencodeClient(config) {
2599
2606
  return new OpencodeClient({ client: client2 });
2600
2607
  }
2601
2608
 
2602
- // src/utils/opencode.ts
2603
- var STORE = Bun.file(`${Bun.env.HOME}/Library/Application Support/ai.opencode.desktop/store.json`);
2604
- var context = {
2605
- client: Bun.env.OPENCODE_CLIENT ?? "unknown",
2606
- password: Bun.env.OPENCODE_SERVER_PASSWORD,
2607
- username: Bun.env.OPENCODE_SERVER_USERNAME
2608
- };
2609
+ // src/adapters/opencode/client/store.ts
2610
+ async function persist(options) {
2611
+ const stored = await read(options.db);
2612
+ const updated = {
2613
+ ...stored[options.key],
2614
+ ...options.state
2615
+ };
2616
+ await Bun.write(options.db, JSON.stringify({
2617
+ ...stored,
2618
+ [options.key]: updated
2619
+ }));
2620
+ return updated;
2621
+ }
2622
+ async function get(options) {
2623
+ const stored = await read(options.db);
2624
+ return stored[options.key];
2625
+ }
2626
+ async function read(store) {
2627
+ const file = Bun.file(store);
2628
+ const exists = await file.exists();
2629
+ if (!exists)
2630
+ return {};
2631
+ const data = await file.json();
2632
+ return data;
2633
+ }
2634
+
2635
+ // src/adapters/opencode/client/index.ts
2636
+ var DB = `${Bun.env.HOME}/Library/Application Support/ai.opencode.desktop/store.json`;
2609
2637
  async function register(options) {
2610
- if (context.client === "desktop") {
2611
- const server = await getServer();
2612
- const config = {
2613
- username: context.username,
2614
- password: context.password,
2615
- seenAt: new Date,
2616
- directory: options.directory,
2617
- project: options.project,
2618
- ...server
2619
- };
2620
- await Bun.write(STORE, JSON.stringify(config));
2621
- return createOpencodeClient(createOpencodeClientConfigFromServerConfig(config));
2622
- }
2623
- return createOpencodeClient({
2638
+ if (Bun.env.OPENCODE_CLIENT) {
2639
+ await persist({
2640
+ db: DB,
2641
+ key: Bun.env.OPENCODE_CLIENT,
2642
+ state: {
2643
+ hostname: options.serverUrl.hostname,
2644
+ port: options.serverUrl.port,
2645
+ seenAt: new Date().toISOString(),
2646
+ password: Bun.env.OPENCODE_SERVER_PASSWORD,
2647
+ username: Bun.env.OPENCODE_SERVER_USERNAME
2648
+ }
2649
+ });
2650
+ }
2651
+ return createClient2({
2652
+ url: String(options.serverUrl),
2653
+ password: Bun.env.OPENCODE_SERVER_PASSWORD,
2654
+ username: Bun.env.OPENCODE_SERVER_USERNAME,
2624
2655
  directory: options.directory
2625
2656
  });
2626
2657
  }
2627
- function createOpencodeClientConfigFromServerConfig(server) {
2628
- return {
2629
- baseUrl: `http://${server.hostname}:${server.port}`,
2630
- headers: {
2631
- Authorization: `Basic ${btoa(`${server.username}:${server.password}`)}`
2658
+ async function use(config) {
2659
+ const LOOKUP_STRATEGIES = {
2660
+ desktop: async () => {
2661
+ const state = await get({
2662
+ db: DB,
2663
+ key: "desktop"
2664
+ });
2665
+ if (!state)
2666
+ return;
2667
+ return createClient2({
2668
+ url: `http://${state.hostname ?? "127.0.0.1"}:${state.port}`,
2669
+ username: state.username,
2670
+ password: state.password,
2671
+ directory: config.project
2672
+ });
2673
+ },
2674
+ config: async () => {
2675
+ const server = config?.opencode?.server;
2676
+ if (!server?.url)
2677
+ return;
2678
+ return createClient2({
2679
+ directory: config.project,
2680
+ ...server
2681
+ });
2632
2682
  }
2633
2683
  };
2684
+ const lookups = config?.opencode?.lookup ?? ["desktop", "config"];
2685
+ for (const strategy of lookups) {
2686
+ const client2 = await LOOKUP_STRATEGIES[strategy]?.();
2687
+ if (!client2)
2688
+ continue;
2689
+ const health = await client2.global.health();
2690
+ if (!health.data?.healthy) {
2691
+ continue;
2692
+ }
2693
+ return client2;
2694
+ }
2695
+ throw new Error(`Opencode server not found using strategies: ${lookups.join(", ")}`);
2634
2696
  }
2635
- async function getServer() {
2636
- const process2 = await Bun.$`ps ax -o pid=,command= | grep "opencode-cli " | grep "serve" | grep -v grep`.nothrow().text();
2637
- const pid = process2.match(/^(\d+)\s+/)?.[1];
2638
- const hostname = process2.match(/--hostname\s+([\S]+)/)?.[1];
2639
- const port = process2.match(/--port\s+(\d+)/)?.[1];
2640
- return {
2641
- pid: pid ? parseInt(pid, 10) : undefined,
2642
- hostname,
2643
- port: port ? parseInt(port, 10) : undefined
2644
- };
2697
+ function createClient2(options) {
2698
+ return createOpencodeClient({
2699
+ directory: options.directory,
2700
+ baseUrl: options.url,
2701
+ headers: options.username && options.password ? {
2702
+ Authorization: `Basic ${btoa(`${options.username}:${options.password}`)}`
2703
+ } : undefined
2704
+ });
2645
2705
  }
2646
-
2647
2706
  // src/utils/chain.ts
2648
2707
  async function chain(options, ...fns) {
2649
2708
  const { stopOnFatal = true } = options;
@@ -2688,7 +2747,7 @@ import { z } from "zod";
2688
2747
  // src/adapters/beads/issues.ts
2689
2748
  var exports_issues = {};
2690
2749
  __export(exports_issues, {
2691
- use: () => use2,
2750
+ use: () => use3,
2692
2751
  update: () => update,
2693
2752
  show: () => show,
2694
2753
  list: () => list,
@@ -2699,9 +2758,9 @@ __export(exports_issues, {
2699
2758
  });
2700
2759
 
2701
2760
  // src/utils/shell/client.ts
2702
- var exports_client = {};
2703
- __export(exports_client, {
2704
- use: () => use,
2761
+ var exports_client2 = {};
2762
+ __export(exports_client2, {
2763
+ use: () => use2,
2705
2764
  create: () => create
2706
2765
  });
2707
2766
 
@@ -2727,7 +2786,7 @@ class InvalidExitCodeError extends Error {
2727
2786
  }
2728
2787
 
2729
2788
  // src/utils/shell/client.ts
2730
- function use(input) {
2789
+ function use2(input) {
2731
2790
  if (input instanceof Bun.$.Shell)
2732
2791
  return create(input);
2733
2792
  if (SHELL_CLIENT in input)
@@ -2798,17 +2857,17 @@ function createPromise(shell) {
2798
2857
  var list = Object.assign(async (client2, options = {}) => {
2799
2858
  if (isEmpty(options.ids))
2800
2859
  return [];
2801
- const $2 = exports_client.use(client2);
2860
+ const $2 = exports_client2.use(client2);
2802
2861
  const issues = await $2`bd list ${options} --json`.json();
2803
2862
  return issues;
2804
2863
  }, {
2805
2864
  ready: async (client2, options = {}) => {
2806
- const $2 = exports_client.use(client2);
2865
+ const $2 = exports_client2.use(client2);
2807
2866
  const issues = await $2`bd ready ${options} --json`.json();
2808
2867
  return issues;
2809
2868
  }
2810
2869
  });
2811
- async function use2(client2, input, options) {
2870
+ async function use3(client2, input, options) {
2812
2871
  if ("status" in input && !options?.force)
2813
2872
  return input;
2814
2873
  return first(await list(client2, {
@@ -2817,33 +2876,33 @@ async function use2(client2, input, options) {
2817
2876
  }));
2818
2877
  }
2819
2878
  async function update(client2, input, options = {}) {
2820
- const $2 = exports_client.use(client2);
2879
+ const $2 = exports_client2.use(client2);
2821
2880
  const issues = await $2`bd update ${input.id} ${options} --json`.json();
2822
2881
  const [issue] = issues;
2823
2882
  assert(issue, `Issue '${input.id}' not found`);
2824
2883
  return issue;
2825
2884
  }
2826
2885
  async function create2(client2, options) {
2827
- const $2 = exports_client.use(client2);
2886
+ const $2 = exports_client2.use(client2);
2828
2887
  const issue = await $2`bd create ${options} --json`.json();
2829
2888
  return issue;
2830
2889
  }
2831
2890
  async function claim(client2, input, options = {}) {
2832
- const $2 = exports_client.use(client2);
2891
+ const $2 = exports_client2.use(client2);
2833
2892
  const issues = await $2`bd update ${input.id} ${options} --claim --json`.json();
2834
2893
  const [issue] = issues;
2835
2894
  assert(issue, `Issue '${input.id}' not found`);
2836
2895
  return issue;
2837
2896
  }
2838
2897
  async function close(client2, input, options = {}) {
2839
- const $2 = exports_client.use(client2);
2898
+ const $2 = exports_client2.use(client2);
2840
2899
  const issues = await $2`bd close ${input.id} ${options} --json`.json();
2841
2900
  const [issue] = issues;
2842
2901
  assert(issue, `Issue '${input.id}' not found`);
2843
2902
  return issue;
2844
2903
  }
2845
2904
  async function show(client2, input) {
2846
- const $2 = exports_client.use(client2);
2905
+ const $2 = exports_client2.use(client2);
2847
2906
  return $2`bd show ${input.id}`.text();
2848
2907
  }
2849
2908
  var find;
@@ -2892,7 +2951,7 @@ var Frontmatter = z2.object({
2892
2951
  // src/adapters/beads/agents.ts
2893
2952
  var exports_agents = {};
2894
2953
  __export(exports_agents, {
2895
- use: () => use3,
2954
+ use: () => use4,
2896
2955
  stuck: () => stuck,
2897
2956
  state: () => state,
2898
2957
  done: () => done
@@ -2914,33 +2973,33 @@ async function done(client2, slug, options = {}) {
2914
2973
  return agent;
2915
2974
  }
2916
2975
  async function state(client2, slug, state2) {
2917
- const $2 = exports_client.use(client2);
2976
+ const $2 = exports_client2.use(client2);
2918
2977
  const agent = await $2`bd agent state gram-${slug} ${state2} --json`.json();
2919
2978
  return agent;
2920
2979
  }
2921
- async function use3(client2, input) {
2922
- const $2 = exports_client.use(client2);
2980
+ async function use4(client2, input) {
2981
+ const $2 = exports_client2.use(client2);
2923
2982
  const id = "slug" in input ? `gram-${input.slug}` : input.id;
2924
2983
  const agent = await $2`bd agent show ${id} --json`.json();
2925
2984
  return agent;
2926
2985
  }
2927
- function createContextLabels(context2) {
2928
- if (!context2)
2986
+ function createContextLabels(context) {
2987
+ if (!context)
2929
2988
  return;
2930
- const labels = sift(listify(context2, (key, value) => value && `${key}:${value}`));
2989
+ const labels = sift(listify(context, (key, value) => value && `${key}:${value}`));
2931
2990
  return isEmpty(labels) ? undefined : labels;
2932
2991
  }
2933
2992
  // src/adapters/beads/config.ts
2934
2993
  var exports_config = {};
2935
2994
  __export(exports_config, {
2936
2995
  issuePrefix: () => issuePrefix,
2937
- get: () => get
2996
+ get: () => get2
2938
2997
  });
2939
2998
  async function issuePrefix(client2) {
2940
- return get(client2, { key: "issue_prefix" });
2999
+ return get2(client2, { key: "issue_prefix" });
2941
3000
  }
2942
- async function get(client2, input) {
2943
- const $2 = exports_client.use(client2);
3001
+ async function get2(client2, input) {
3002
+ const $2 = exports_client2.use(client2);
2944
3003
  return await $2`bd config get ${input.key} --json`.json();
2945
3004
  }
2946
3005
  // node_modules/@bunli/utils/dist/index.js
@@ -3404,7 +3463,7 @@ var createIAmDone = (client2) => tool({
3404
3463
  // src/plugin.ts
3405
3464
  var TeammatePlugin = async (options) => {
3406
3465
  const { directory } = options;
3407
- const client2 = await register(options);
3466
+ const client2 = await exports_client.register(options);
3408
3467
  await install(directory);
3409
3468
  return {
3410
3469
  "command.execute.before": async (input, output) => {
@@ -7,7 +7,15 @@ import {
7
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
- project: z.string().optional().describe("Project directory")
10
+ project: z.string().default(process.cwd()).describe("Project directory"),
11
+ opencode: z.object({
12
+ lookup: z.enum(["desktop", "config"]).describe("Defines how we should resolve the opencode server").array().default(["desktop", "config"]),
13
+ server: z.object({
14
+ url: z.string().optional(),
15
+ username: z.string().optional(),
16
+ password: z.string().optional()
17
+ }).optional()
18
+ }).optional()
11
19
  });
12
20
  function defineConfig(config) {
13
21
  return Config.parse(config);
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "opencode-teammate",
3
- "version": "0.2.0-next.5",
3
+ "version": "0.2.0-next.6",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "Hugo Fqt",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/hugo082/opencode-teammate.git",
10
- "sha": "4c2c20d"
10
+ "sha": "00262b1"
11
11
  },
12
12
  "bin": {
13
13
  "mate": "./dist/bin/mate"