From ee0748ba3fd26cd7de5203010588690c0e9d8260 Mon Sep 17 00:00:00 2001 From: "fro-bot[bot]" <109017866+fro-bot[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 13:02:54 +0000 Subject: [PATCH] build(deps): update dependency @opencode-ai/sdk to v1.14.41 --- dist/licenses.txt | 2 +- dist/main.js | 2 +- dist/v2-C8boAtfr.js | 7 +++++++ dist/v2-CEk_tjbL.js | 7 ------- package.json | 2 +- packages/runtime/package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 7 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 dist/v2-C8boAtfr.js delete mode 100644 dist/v2-CEk_tjbL.js diff --git a/dist/licenses.txt b/dist/licenses.txt index 6c6f4ba4..47bda688 100644 --- a/dist/licenses.txt +++ b/dist/licenses.txt @@ -8378,7 +8378,7 @@ The above copyright notice and this permission notice (including the next paragr THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -@opencode-ai/sdk@1.14.39 +@opencode-ai/sdk@1.14.41 MIT MIT diff --git a/dist/main.js b/dist/main.js index 2417fe81..d50850d6 100644 --- a/dist/main.js +++ b/dist/main.js @@ -118,7 +118,7 @@ import{o as e}from"./chunk-Bdh3yLIe.js";import{$ as t,A as n,B as r,C as i,Ct as } } `,{owner:n,repo:r,number:i,maxComments:a,maxCommits:o,maxFiles:s,maxReviews:c})}catch(e){return l.warning(`GraphQL pull request query failed`,{owner:n,repo:r,number:i,error:t(e)}),null}}async function gn(e,t,n,r,i,a){let o=await mn(e,t,n,r,i.maxComments,a);if(o==null)return null;let s=o.repository.issue;if(s==null)return a.debug(`Issue not found`,{owner:t,repo:n,number:r}),null;let c=dn(s.body??``,i.maxBodyBytes),l=s.comments.nodes.slice(0,i.maxComments),u=s.comments.totalCount>l.length,d=l.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,createdAt:e.createdAt,authorAssociation:e.authorAssociation,isMinimized:e.isMinimized})),f=s.labels.nodes.map(e=>({name:e.name,color:e.color})),p=s.assignees.nodes.map(e=>({login:e.login}));return{type:`issue`,number:s.number,title:s.title,body:c.text,bodyTruncated:c.truncated,state:s.state,author:s.author?.login??null,createdAt:s.createdAt,labels:f,assignees:p,comments:d,commentsTruncated:u,totalComments:s.comments.totalCount}}async function _n(e,t,n,r,i,a){let o=await hn(e,t,n,r,i.maxComments,i.maxCommits,i.maxFiles,i.maxReviews,a);if(o==null)return null;let s=o.repository.pullRequest;if(s==null)return a.debug(`Pull request not found`,{owner:t,repo:n,number:r}),null;let c=dn(s.body??``,i.maxBodyBytes),l=s.baseRepository?.owner.login,u=s.headRepository?.owner.login,d=u==null||l!==u,f=s.comments.nodes.slice(0,i.maxComments),p=s.comments.totalCount>f.length,m=f.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,createdAt:e.createdAt,authorAssociation:e.authorAssociation,isMinimized:e.isMinimized})),h=s.commits.nodes.slice(0,i.maxCommits),g=s.commits.totalCount>h.length,_=h.map(e=>({oid:e.commit.oid,message:e.commit.message,author:e.commit.author?.name??null})),v=s.files.nodes.slice(0,i.maxFiles),y=s.files.totalCount>v.length,b=v.map(e=>({path:e.path,additions:e.additions,deletions:e.deletions})),x=s.reviews.nodes.slice(0,i.maxReviews),S=s.reviews.totalCount>x.length,C=x.map(e=>({author:e.author?.login??null,state:e.state,body:e.body,createdAt:e.createdAt,comments:e.comments.nodes.map(e=>({id:e.id,author:e.author?.login??null,body:e.body,path:e.path,line:e.line,createdAt:e.createdAt}))})),w=s.labels.nodes.map(e=>({name:e.name,color:e.color})),T=s.assignees.nodes.map(e=>({login:e.login})),ee=s.reviewRequests.nodes.map(e=>`login`in e.requestedReviewer?e.requestedReviewer.login:null).filter(e=>e!=null),E=s.reviewRequests.nodes.map(e=>`name`in e.requestedReviewer?e.requestedReviewer.name:null).filter(e=>e!=null);return{type:`pull_request`,number:s.number,title:s.title,body:c.text,bodyTruncated:c.truncated,state:s.state,author:s.author?.login??null,createdAt:s.createdAt,baseBranch:s.baseRefName,headBranch:s.headRefName,isFork:d,labels:w,assignees:T,comments:m,commentsTruncated:p,totalComments:s.comments.totalCount,commits:_,commitsTruncated:g,totalCommits:s.commits.totalCount,files:b,filesTruncated:y,totalFiles:s.files.totalCount,reviews:C,reviewsTruncated:S,totalReviews:s.reviews.totalCount,authorAssociation:s.authorAssociation,requestedReviewers:ee,requestedReviewerTeams:E}}const vn={PER_PAGE:100,MAX_PAGES:50};async function yn(e,t,n,r,i){i.debug(`Fetching PR diff`,{prNumber:r});let a=[],o=1,s=!1;for(;o<=vn.MAX_PAGES;){let{data:c}=await e.rest.pulls.listFiles({owner:t,repo:n,pull_number:r,per_page:vn.PER_PAGE,page:o}),l=c.map(e=>({filename:e.filename,status:e.status,additions:e.additions,deletions:e.deletions,patch:e.patch??null,previousFilename:e.previous_filename??null}));if(a.push(...l),c.lengthvn.MAX_PAGES&&(s=!0,i.warning(`PR diff pagination limit reached`,{filesLoaded:a.length,maxPages:vn.MAX_PAGES}))}let c=a.reduce((e,t)=>({additions:e.additions+t.additions,deletions:e.deletions+t.deletions}),{additions:0,deletions:0});return i.debug(`Fetched diff`,{files:a.length,additions:c.additions,deletions:c.deletions,truncated:s}),{files:a,additions:c.additions,deletions:c.deletions,changedFiles:a.length,truncated:s}}async function bn(e,n,r,i){if(e.eventType!==`pull_request`)return null;let a=e.target?.number;if(a==null)return i.debug(`No PR number in trigger context, skipping diff collection`),null;let[o,s]=r.split(`/`);if(o==null||s==null)return i.warning(`Invalid repo format, skipping diff collection`,{repo:r}),null;try{let e=await yn(n,o,s,a,i),t={changedFiles:e.changedFiles,additions:e.additions,deletions:e.deletions,truncated:e.truncated,files:e.files.slice(0,50).map(e=>({filename:e.filename,status:e.status,additions:e.additions,deletions:e.deletions}))};return i.debug(`Collected diff context`,{files:t.changedFiles,additions:t.additions,deletions:t.deletions,truncated:t.truncated}),t}catch(e){return i.warning(`Failed to fetch PR diff`,{error:t(e)}),null}}async function xn(e){let{logger:t,octokit:n,triggerContext:r,botLogin:i}=e,{repo:a,ref:o,actor:s,runId:c,target:l,author:u,commentBody:d,commentId:f}=r,p=`${a.owner}/${a.repo}`,m=l?.kind===`issue`||l?.kind===`pr`?l.kind:null,h=l!=null&&l.kind!==`manual`?l.number:null,g=l?.title??null,_=u?.login??null,v=await bn(r,n,p,t),y=await Sn(n,a.owner,a.repo,h,m,t),b=y?.type===`pull_request`?y:null,x=b?.authorAssociation??null,S=i!=null&&b!=null?b.requestedReviewers.includes(i):!1;return t.info(`Collected agent context`,{eventName:r.eventName,repo:p,issueNumber:h,issueType:m,hasComment:d!=null,hasDiffContext:v!=null,hasHydratedContext:y!=null}),{eventName:r.eventName,repo:p,ref:o,actor:s,runId:String(c),issueNumber:h,issueTitle:g,issueType:m,commentBody:d,commentAuthor:_,commentId:f,defaultBranch:await an(n,p,t),diffContext:v,hydratedContext:y,authorAssociation:x,isRequestedReviewer:S}}async function Sn(e,t,n,r,i,a){if(r==null||i==null)return null;let o=ln;return i===`issue`?await gn(e,t,n,r,o,a)??fn(e,t,n,r,o,a):await _n(e,t,n,r,o,a)??pn(e,t,n,r,o,a)}const Cn=5e3;function wn(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`string`?n.value:null}function Tn(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`number`?n.value:null}function En(e,t){return typeof e!=`object`||!e?null:Object.getOwnPropertyDescriptor(e,t)?.value??null}async function Dn(e,t,n){let r;try{return await Promise.race([e,new Promise((e,i)=>{r=setTimeout(()=>{i(Error(`${n} timed out after ${t}ms`))},t)})])}finally{r!=null&&clearTimeout(r)}}async function On(e,t,n,r,i){if(r?.baselineMessageIds==null)return null;if(typeof e.session.messages!=`function`)return i.debug(`session.messages() unavailable; skipping message activity poll`,{sessionId:t}),null;let a=await Dn(e.session.messages({path:{id:t},query:{directory:n}}),Cn,`session.messages()`),o=Array.isArray(a.data)?a.data:[],s=null;for(let e of o){let t=En(e,`info`),n=wn(t,`id`);n==null||r.baselineMessageIds.has(n)||wn(t,`role`)===`assistant`&&(s=t)}if(s==null)return null;r.firstMeaningfulEventReceived=!0;let c=wn(s,`id`),l=Tn(En(s,`time`),`completed`);if(c==null||l==null)return r.completedAssistantMessageId=void 0,r.completedAssistantMessageObservedAt=void 0,null;let u=Date.now();if(r.completedAssistantMessageId!==c)return r.completedAssistantMessageId=c,r.completedAssistantMessageObservedAt=u,i.debug(`Completed assistant message observed; waiting for stability before completion`,{sessionId:t,messageId:c}),null;let d=u-(r.completedAssistantMessageObservedAt??u);return d<1e3?(i.debug(`Completed assistant message not stable yet; continuing watchdog`,{sessionId:t,messageId:c,stableForMs:d}),null):(r.currentTurnTerminalSignalReceived=!0,i.debug(`Session completion detected via stable completed assistant message`,{sessionId:t,messageId:c,stableForMs:d}),{completed:!0,error:null})}async function kn(e,n,r,i,a,o=E,s){let c=Date.now(),l=0;for(;!i.aborted;){if(await y(500),i.aborted)return{completed:!1,error:`Aborted`};if(s?.sessionError==null)l=0;else{if(l++,l>=3)return a.error(`Session error persisted through grace period`,{sessionId:n,error:s.sessionError,graceCycles:l}),{completed:!1,error:`Session error: ${s.sessionError}`};continue}if(s?.sessionIdle===!0&&s.currentTurnTerminalSignalReceived)return a.debug(`Session idle detected via event stream`,{sessionId:n}),{completed:!0,error:null};let u=Date.now()-c;if(o>0&&u>=o)return a.warning(`Poll timeout reached`,{elapsedMs:u,maxPollTimeMs:o}),{completed:!1,error:`Poll timeout after ${u}ms`};try{let t=await On(e,n,r,s,a);if(t!=null)return t;let i=((await Dn(e.session.status({query:{directory:r}}),Cn,`session.status()`)).data??{})[n];if(i==null)a.debug(`Session status not found in poll response`,{sessionId:n});else if(i.type===`idle`)if(s!=null&&s.currentTurnTerminalSignalReceived!==!0)a.debug(`Session idle detected before terminal signal; continuing watchdog`,{sessionId:n});else return a.debug(`Session idle detected via polling`,{sessionId:n}),{completed:!0,error:null};else a.debug(`Session status`,{sessionId:n,type:i.type});if(s!=null&&!s.firstMeaningfulEventReceived){let e=Date.now()-c;if(e>=9e4)return a.error(`No agent activity detected — server may have crashed during prompt processing`,{elapsedMs:e,sessionId:n}),{completed:!1,error:`No agent activity detected after ${e}ms — server may have crashed during prompt processing`}}}catch(e){a.debug(`Poll request failed`,{error:t(e)})}}return{completed:!1,error:`Aborted`}}async function An(e,t=2e3){await Promise.race([e,new Promise(e=>{setTimeout(e,t)})])}function jn(e){try{let t=new URL(e);return t.hostname===`github.com`||t.hostname===`api.github.com`}catch{return!1}}function Mn(e){try{let t=new URL(e);return t.hostname===`github.com`&&(t.pathname.startsWith(`/user-attachments/assets/`)||t.pathname.startsWith(`/user-attachments/files/`))}catch{return!1}}function Nn(e){let t=e.match(/https:\/\/github\.com\/[a-zA-Z0-9-]+\/[\w.-]+\/(?:pull|issues)\/\d+(?:#issuecomment-\d+)?/g)??[];return[...new Set(t)].filter(jn)}function Pn(e){let t=/\[[\w-]+\s+([a-f0-9]{7,40})\]/g,n=[];for(let r of e.matchAll(t))r[1]!=null&&n.push(r[1]);return[...new Set(n)]}function Fn(e,t){let n=J(e,`type`);if(n===`sync`){let n=J(e,`name`)?.replace(/\.\d+$/,``)??`sync`,r=q(X(e,`data`));t.debug(`Server event`,{eventKind:n,sessionID:r})}else t.debug(`Server event`,{eventType:n,properties:X(e,`properties`)})}function In(e,t,n,r,i){let a=Nn(t);if(e.includes(`gh pr create`)){let e=a.filter(e=>e.includes(`/pull/`)&&!e.includes(`#`));for(let t of e)n.includes(t)||n.push(t)}if(e.includes(`git commit`)){let e=Pn(t);for(let t of e)r.includes(t)||r.push(t)}(e.includes(`gh issue comment`)||e.includes(`gh pr comment`))&&a.some(e=>e.includes(`#issuecomment`))&&i()}function q(e){if(typeof e!=`object`||!e)return null;let t=Object.getOwnPropertyDescriptor(e,`sessionID`);return typeof t?.value==`string`?t.value:null}function J(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`string`?n.value:null}function Y(e,t){if(typeof e!=`object`||!e)return null;let n=Object.getOwnPropertyDescriptor(e,t);return typeof n?.value==`number`?n.value:null}function X(e,t){return typeof e!=`object`||!e?null:Object.getOwnPropertyDescriptor(e,t)?.value??null}function Ln(e){return q(X(e,`properties`))??q(X(e,`data`))}function Rn(e){let t=J(e,`type`);return t===`sync`?J(e,`name`)?.replace(/\.\d+$/,``)??t:t}function zn(e){return X(e,`properties`)??X(e,`data`)}function Bn(e){return e===`message.part.delta`||e?.startsWith(`session.next.`)===!0}async function Vn(e,t,n,r,i){let a=``,o=null,s=null,c=null,l=[],u=[],d=0,f=null,p=new Map;for await(let m of e){if(n.aborted)break;if(Fn(m,r),i?.currentTurnArmed===!1)continue;let e=Rn(m),h=zn(m);if(i!=null&&Bn(e)&&Ln(m)===t&&(i.firstMeaningfulEventReceived=!0),e===`message.part.delta`){if(Ln(m)===t){let e=X(h,`delta`),t=J(e,`type`),n=J(e,`text`);t===`text`&&n!=null?a+=n:typeof e==`string`&&J(h,`field`)===`text`&&(a+=e)}}else if(e===`session.next.text.delta`){if(Ln(m)===t){let e=X(h,`delta`),t=typeof e==`string`?e:J(e,`text`)??null;t!=null&&(a+=t)}}else if(e===`session.next.tool.called`){if(Ln(m)===t){let e=J(h,`callID`),t=J(h,`tool`),n=X(h,`input`);e!=null&&t!=null&&(p.set(e,{tool:t,input:n}),r.debug(`Tool called`,{callID:e,tool:t}))}}else if(e===`session.next.tool.success`){if(Ln(m)===t){let e=J(h,`callID`);if(e===null)continue;let t=p.get(e);if(t!==void 0){p.delete(e);let{tool:n,input:r}=t;if(Gt(n,J(X(h,`structured`),`title`)??J(r,`title`)??(n.toLowerCase()===`bash`?String(X(r,`command`)??X(r,`cmd`)??n):n)),n.toLowerCase()===`bash`){let e=String(X(r,`command`)??X(r,`cmd`)??``),t=X(h,`content`);In(e,Array.isArray(t)?t.map(e=>J(e,`type`)===`text`?J(e,`text`)??``:``).join(` -`):``,l,u,()=>{d++})}}}}else if(e===`message.part.updated`){let e=X(h,`part`);if((q(h)??q(e))!==t)continue;i!=null&&(i.firstMeaningfulEventReceived=!0);let n=J(e,`type`);if(n===`text`){let t=J(e,`text`);t!=null&&(a=t),Y(X(e,`time`),`end`)!=null&&(Kt(a),a=``)}else if(n===`tool`){let t=X(e,`state`);if(J(t,`status`)===`completed`){let n=J(e,`tool`)??``;if(Gt(n,String(X(t,`title`)??``)),n.toLowerCase()===`bash`){let e=X(t,`input`);In(String(X(e,`command`)??X(e,`cmd`)??``),String(X(t,`output`)??``),l,u,()=>{d++})}}}}else if(e===`message.updated`){let e=X(h,`info`),n=q(h)??q(e),a=X(e,`tokens`);n===t&&J(e,`role`)===`assistant`&&a!=null&&(i!=null&&(i.firstMeaningfulEventReceived=!0),o={input:Y(a,`input`)??0,output:Y(a,`output`)??0,reasoning:Y(a,`reasoning`)??0,cache:{read:Y(X(a,`cache`),`read`)??0,write:Y(X(a,`cache`),`write`)??0}},s=J(e,`modelID`),c=Y(e,`cost`),r.debug(`Token usage received`,{tokens:o,model:s,cost:c}))}else if(e===`session.error`){if(q(h)===t){let e=X(h,`error`),t=typeof e==`string`?e:String(e);r.error(`Session error`,{error:e}),f=we(e)?P(t,s??void 0):De(t),i!=null&&(i.sessionError=t)}}else e===`session.idle`&&q(h)===t&&(i!=null&&(i.sessionIdle=!0,i.currentTurnTerminalSignalReceived=!0),a.length>0&&(Kt(a),a=``))}return a.length>0&&Kt(a),{tokens:o,model:s,cost:c,prsCreated:l,commitsCreated:u,commentsPosted:d,llmError:f}}function Hn(e){if(typeof e!=`object`||!e)return null;let t=Object.getOwnPropertyDescriptor(e,`id`);return typeof t?.value==`string`?t.value:null}function Un(e,t){return typeof e!=`object`||!e?null:Object.getOwnPropertyDescriptor(e,t)?.value??null}async function Wn(e,t,n){let r;try{return await Promise.race([e,new Promise((e,i)=>{r=setTimeout(()=>{i(Error(`${n} timed out after ${t}ms`))},t)})])}finally{r!=null&&clearTimeout(r)}}async function Gn(e,n,r,i){if(typeof e.session.messages!=`function`)return null;try{let t=await Wn(e.session.messages({path:{id:n},query:{directory:r}}),5e3,`baseline session.messages()`),i=Array.isArray(t.data)?t.data:[];return new Set(i.flatMap(e=>Hn(Un(e,`info`))??[]))}catch(e){return i.debug(`Unable to read baseline session messages; disabling message activity fallback`,{sessionId:n,error:t(e)}),null}}const Kn=[5e3,15e3,3e4,6e4];async function qn(e){if(e==null)return null;try{let{createOpencodeClient:t}=await import(`./v2-CEk_tjbL.js`);return t({baseUrl:e})}catch{return null}}async function Jn(e,n,r,i,a,o){let s=await qn(e);if(s==null)return!1;try{let e=await s.v2.session.wait({sessionID:n,directory:r},{signal:o});if(e.error!=null)return a.debug(`v2.session.wait() returned error, relying on poll watchdog`,{sessionId:n,error:String(e.error)}),!1;let t=Date.now()+500;for(;i.currentTurnTerminalSignalReceived!==!0&&Date.now()setTimeout(e,10));return i.currentTurnTerminalSignalReceived===!0?(a.debug(`v2.session.wait() resolved with terminal signal — session is done`,{sessionId:n}),!0):(a.debug(`v2.session.wait() resolved without terminal signal — deferring to poll watchdog`,{sessionId:n}),!1)}catch(e){return a.debug(`v2.session.wait() threw, relying on poll watchdog`,{sessionId:n,error:t(e)}),!1}}async function Yn(e,t,n,r,i,a,o,s){let c=new AbortController,l=new AbortController,u={firstMeaningfulEventReceived:!1,currentTurnTerminalSignalReceived:!1,currentTurnArmed:s==null,baselineMessageIds:void 0,sessionIdle:!1,sessionError:null},d=a??(await e.event.subscribe()).stream,f={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},p=Vn(d,t,c.signal,i,u).then(e=>{f=e}).catch(e=>{e instanceof Error&&e.name!==`AbortError`&&i.debug(`Event stream error`,{error:e.message})}),m=async()=>{c.abort(),l.abort(),await An(p)};try{if(await Promise.resolve(),s!=null){u.baselineMessageIds=await Gn(e,t,n,i)??void 0,u.currentTurnArmed=!0;let r=await s();if(r!=null)return await m(),r}let a=kn(e,t,n,c.signal,i,r,u),d=Jn(o,t,n,u,i,l.signal),p=await Promise.race([d.then(e=>e?{completed:!0,error:null}:a),a]);if(await m(),!p.completed){let e=p.error??`Session did not reach idle state`;return i.error(`Session completion polling failed`,{error:e,sessionId:t}),{success:!1,error:e,llmError:f.llmError,shouldRetry:f.llmError!=null,eventStreamResult:f}}return{success:!0,error:null,llmError:null,shouldRetry:!1,eventStreamResult:f}}finally{c.abort(),l.abort(),await An(p)}}const Xn=e=>{if(e?.model!=null)return{providerID:e.model.providerID,modelID:e.model.modelID};if(!(e!=null&&Object.values(e.omoProviders).some(e=>e!==`no`)))return{providerID:l.providerID,modelID:l.modelID}};async function Zn(e,t,n,r,i,a,o,s){let c={parts:[{type:`text`,text:n},...r??[]]},l=Xn(a);l!=null&&(c.model=l);let u=a?.agent??`sisyphus`;u!==`sisyphus`&&(c.agent=u);let d=await e.event.subscribe();return Yn(e,t,i,a?.timeoutMs??18e5,o,d.stream,s,async()=>{let n=await e.session.promptAsync({path:{id:t},body:c,query:{directory:i}});if(n.error==null)return null;let r=String(n.error),a=we(n.error)?P(r):null;return{success:!1,error:r,llmError:a,shouldRetry:a!=null,eventStreamResult:{tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:a}}})}async function Qn(e,n,i,a){let o=Date.now(),s=new AbortController,c=i?.timeoutMs??18e5,l=null,u=!1,f=a==null,p=null;c>0&&(l=setTimeout(()=>{u=!0,n.warning(`Execution timeout reached`,{timeoutMs:c}),s.abort()},c)),n.info(`Executing OpenCode agent (SDK mode)`,{agent:i?.agent??`sisyphus`,hasModelOverride:i?.model!=null,timeoutMs:c});try{let t,l=null;if(a==null){let e=await se({signal:s.signal});t=e.client,p=e.server,l=e.server.url}else t=a.client,l=a.server.url;let f;if(i?.continueSessionId==null){let e=i?.sessionTitle==null?void 0:{body:{title:i.sessionTitle}},r=e==null?await t.session.create():await t.session.create(e);if(r.data==null||r.error!=null)throw Error(`Failed to create session: ${r.error==null?`No data returned`:String(r.error)}`);f=r.data.id,n.info(`Created new OpenCode session`,{sessionId:f,sessionTitle:i?.sessionTitle??null})}else f=i.continueSessionId,n.info(`Continuing existing OpenCode session`,{sessionId:f});let{text:m,referenceFiles:h}=pe({...e,sessionId:f},n),g=v(),b=d();if(await B.mkdir(b,{recursive:!0}),r()){let e=Ve.createHash(`sha256`).update(m).digest(`hex`),t=V.join(b,`prompt-${f}-${e.slice(0,8)}.txt`);try{await B.writeFile(t,m,`utf8`),n.info(`Prompt artifact written`,{hash:e,path:t})}catch(e){n.warning(`Failed to write prompt artifact`,{error:e instanceof Error?e.message:String(e),path:t})}}let x=await _(h,b,n),S=[...e.fileParts??[],...x],C={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},w=null,T=null;for(let e=1;e<=4;e++){if(u)return{success:!1,exitCode:130,duration:Date.now()-o,sessionId:f,error:`Execution timed out after ${c}ms`,tokenUsage:C.tokens,model:C.model,cost:C.cost,prsCreated:C.prsCreated,commitsCreated:C.commitsCreated,commentsPosted:C.commentsPosted,llmError:T};let r=Kn[Math.min(e-1,Kn.length-1)]??Kn[0];if(c>0&&c-(Date.now()-o)<=r&&e>1)break;let a=e===1?m:`The previous request was interrupted by a network error (fetch failed). +`):``,l,u,()=>{d++})}}}}else if(e===`message.part.updated`){let e=X(h,`part`);if((q(h)??q(e))!==t)continue;i!=null&&(i.firstMeaningfulEventReceived=!0);let n=J(e,`type`);if(n===`text`){let t=J(e,`text`);t!=null&&(a=t),Y(X(e,`time`),`end`)!=null&&(Kt(a),a=``)}else if(n===`tool`){let t=X(e,`state`);if(J(t,`status`)===`completed`){let n=J(e,`tool`)??``;if(Gt(n,String(X(t,`title`)??``)),n.toLowerCase()===`bash`){let e=X(t,`input`);In(String(X(e,`command`)??X(e,`cmd`)??``),String(X(t,`output`)??``),l,u,()=>{d++})}}}}else if(e===`message.updated`){let e=X(h,`info`),n=q(h)??q(e),a=X(e,`tokens`);n===t&&J(e,`role`)===`assistant`&&a!=null&&(i!=null&&(i.firstMeaningfulEventReceived=!0),o={input:Y(a,`input`)??0,output:Y(a,`output`)??0,reasoning:Y(a,`reasoning`)??0,cache:{read:Y(X(a,`cache`),`read`)??0,write:Y(X(a,`cache`),`write`)??0}},s=J(e,`modelID`),c=Y(e,`cost`),r.debug(`Token usage received`,{tokens:o,model:s,cost:c}))}else if(e===`session.error`){if(q(h)===t){let e=X(h,`error`),t=typeof e==`string`?e:String(e);r.error(`Session error`,{error:e}),f=we(e)?P(t,s??void 0):De(t),i!=null&&(i.sessionError=t)}}else e===`session.idle`&&q(h)===t&&(i!=null&&(i.sessionIdle=!0,i.currentTurnTerminalSignalReceived=!0),a.length>0&&(Kt(a),a=``))}return a.length>0&&Kt(a),{tokens:o,model:s,cost:c,prsCreated:l,commitsCreated:u,commentsPosted:d,llmError:f}}function Hn(e){if(typeof e!=`object`||!e)return null;let t=Object.getOwnPropertyDescriptor(e,`id`);return typeof t?.value==`string`?t.value:null}function Un(e,t){return typeof e!=`object`||!e?null:Object.getOwnPropertyDescriptor(e,t)?.value??null}async function Wn(e,t,n){let r;try{return await Promise.race([e,new Promise((e,i)=>{r=setTimeout(()=>{i(Error(`${n} timed out after ${t}ms`))},t)})])}finally{r!=null&&clearTimeout(r)}}async function Gn(e,n,r,i){if(typeof e.session.messages!=`function`)return null;try{let t=await Wn(e.session.messages({path:{id:n},query:{directory:r}}),5e3,`baseline session.messages()`),i=Array.isArray(t.data)?t.data:[];return new Set(i.flatMap(e=>Hn(Un(e,`info`))??[]))}catch(e){return i.debug(`Unable to read baseline session messages; disabling message activity fallback`,{sessionId:n,error:t(e)}),null}}const Kn=[5e3,15e3,3e4,6e4];async function qn(e){if(e==null)return null;try{let{createOpencodeClient:t}=await import(`./v2-C8boAtfr.js`);return t({baseUrl:e})}catch{return null}}async function Jn(e,n,r,i,a,o){let s=await qn(e);if(s==null)return!1;try{let e=await s.v2.session.wait({sessionID:n,directory:r},{signal:o});if(e.error!=null)return a.debug(`v2.session.wait() returned error, relying on poll watchdog`,{sessionId:n,error:String(e.error)}),!1;let t=Date.now()+500;for(;i.currentTurnTerminalSignalReceived!==!0&&Date.now()setTimeout(e,10));return i.currentTurnTerminalSignalReceived===!0?(a.debug(`v2.session.wait() resolved with terminal signal — session is done`,{sessionId:n}),!0):(a.debug(`v2.session.wait() resolved without terminal signal — deferring to poll watchdog`,{sessionId:n}),!1)}catch(e){return a.debug(`v2.session.wait() threw, relying on poll watchdog`,{sessionId:n,error:t(e)}),!1}}async function Yn(e,t,n,r,i,a,o,s){let c=new AbortController,l=new AbortController,u={firstMeaningfulEventReceived:!1,currentTurnTerminalSignalReceived:!1,currentTurnArmed:s==null,baselineMessageIds:void 0,sessionIdle:!1,sessionError:null},d=a??(await e.event.subscribe()).stream,f={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},p=Vn(d,t,c.signal,i,u).then(e=>{f=e}).catch(e=>{e instanceof Error&&e.name!==`AbortError`&&i.debug(`Event stream error`,{error:e.message})}),m=async()=>{c.abort(),l.abort(),await An(p)};try{if(await Promise.resolve(),s!=null){u.baselineMessageIds=await Gn(e,t,n,i)??void 0,u.currentTurnArmed=!0;let r=await s();if(r!=null)return await m(),r}let a=kn(e,t,n,c.signal,i,r,u),d=Jn(o,t,n,u,i,l.signal),p=await Promise.race([d.then(e=>e?{completed:!0,error:null}:a),a]);if(await m(),!p.completed){let e=p.error??`Session did not reach idle state`;return i.error(`Session completion polling failed`,{error:e,sessionId:t}),{success:!1,error:e,llmError:f.llmError,shouldRetry:f.llmError!=null,eventStreamResult:f}}return{success:!0,error:null,llmError:null,shouldRetry:!1,eventStreamResult:f}}finally{c.abort(),l.abort(),await An(p)}}const Xn=e=>{if(e?.model!=null)return{providerID:e.model.providerID,modelID:e.model.modelID};if(!(e!=null&&Object.values(e.omoProviders).some(e=>e!==`no`)))return{providerID:l.providerID,modelID:l.modelID}};async function Zn(e,t,n,r,i,a,o,s){let c={parts:[{type:`text`,text:n},...r??[]]},l=Xn(a);l!=null&&(c.model=l);let u=a?.agent??`sisyphus`;u!==`sisyphus`&&(c.agent=u);let d=await e.event.subscribe();return Yn(e,t,i,a?.timeoutMs??18e5,o,d.stream,s,async()=>{let n=await e.session.promptAsync({path:{id:t},body:c,query:{directory:i}});if(n.error==null)return null;let r=String(n.error),a=we(n.error)?P(r):null;return{success:!1,error:r,llmError:a,shouldRetry:a!=null,eventStreamResult:{tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:a}}})}async function Qn(e,n,i,a){let o=Date.now(),s=new AbortController,c=i?.timeoutMs??18e5,l=null,u=!1,f=a==null,p=null;c>0&&(l=setTimeout(()=>{u=!0,n.warning(`Execution timeout reached`,{timeoutMs:c}),s.abort()},c)),n.info(`Executing OpenCode agent (SDK mode)`,{agent:i?.agent??`sisyphus`,hasModelOverride:i?.model!=null,timeoutMs:c});try{let t,l=null;if(a==null){let e=await se({signal:s.signal});t=e.client,p=e.server,l=e.server.url}else t=a.client,l=a.server.url;let f;if(i?.continueSessionId==null){let e=i?.sessionTitle==null?void 0:{body:{title:i.sessionTitle}},r=e==null?await t.session.create():await t.session.create(e);if(r.data==null||r.error!=null)throw Error(`Failed to create session: ${r.error==null?`No data returned`:String(r.error)}`);f=r.data.id,n.info(`Created new OpenCode session`,{sessionId:f,sessionTitle:i?.sessionTitle??null})}else f=i.continueSessionId,n.info(`Continuing existing OpenCode session`,{sessionId:f});let{text:m,referenceFiles:h}=pe({...e,sessionId:f},n),g=v(),b=d();if(await B.mkdir(b,{recursive:!0}),r()){let e=Ve.createHash(`sha256`).update(m).digest(`hex`),t=V.join(b,`prompt-${f}-${e.slice(0,8)}.txt`);try{await B.writeFile(t,m,`utf8`),n.info(`Prompt artifact written`,{hash:e,path:t})}catch(e){n.warning(`Failed to write prompt artifact`,{error:e instanceof Error?e.message:String(e),path:t})}}let x=await _(h,b,n),S=[...e.fileParts??[],...x],C={tokens:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:null},w=null,T=null;for(let e=1;e<=4;e++){if(u)return{success:!1,exitCode:130,duration:Date.now()-o,sessionId:f,error:`Execution timed out after ${c}ms`,tokenUsage:C.tokens,model:C.model,cost:C.cost,prsCreated:C.prsCreated,commitsCreated:C.commitsCreated,commentsPosted:C.commentsPosted,llmError:T};let r=Kn[Math.min(e-1,Kn.length-1)]??Kn[0];if(c>0&&c-(Date.now()-o)<=r&&e>1)break;let a=e===1?m:`The previous request was interrupted by a network error (fetch failed). Please continue where you left off. If you were in the middle of a task, resume it. If you had completed the task, confirm the completion.`,s=S.length>0?S:void 0,d=await(async()=>{try{return await Zn(t,f,a,s,g,i,n,l)}finally{await wt(t,f,i?.sessionTitle,n)}})();if(d.success)return C=d.eventStreamResult,{success:!0,exitCode:0,duration:Date.now()-o,sessionId:f,error:null,tokenUsage:C.tokens,model:C.model,cost:C.cost,prsCreated:C.prsCreated,commitsCreated:C.commitsCreated,commentsPosted:C.commentsPosted,llmError:null};if(w=d.error,T=d.llmError,!d.shouldRetry||e>=4)break;n.warning(`LLM fetch error detected, retrying with continuation prompt`,{attempt:e,maxAttempts:4,error:d.error,delayMs:r,sessionId:f}),await y(r)}return{success:!1,exitCode:1,duration:Date.now()-o,sessionId:f,error:w??`Unknown error`,tokenUsage:C.tokens,model:C.model,cost:C.cost,prsCreated:C.prsCreated,commitsCreated:C.commitsCreated,commentsPosted:C.commentsPosted,llmError:T}}catch(e){let r=Date.now()-o,i=t(e);return n.error(`OpenCode execution failed`,{error:i,durationMs:r}),{success:!1,exitCode:1,duration:r,sessionId:null,error:i,tokenUsage:null,model:null,cost:null,prsCreated:[],commitsCreated:[],commentsPosted:0,llmError:we(e)?P(i):null}}finally{l!=null&&clearTimeout(l),s.abort(),f&&p?.close()}}async function $n(e,t,n){return t.commentId==null?(n.debug(`No comment ID, skipping eyes reaction`),!1):await Qt(e,t.repo,t.commentId,`eyes`,n)==null?!1:(n.info(`Added eyes reaction`,{commentId:t.commentId}),!0)}async function er(e,t,n){return t.issueNumber==null?(n.debug(`No issue number, skipping working label`),!1):await tn(e,t.repo,`agent: working`,`fcf2e1`,`Agent is currently working on this`,n)&&await nn(e,t.repo,t.issueNumber,[`agent: working`],n)?(n.info(`Added working label`,{issueNumber:t.issueNumber}),!0):!1}async function tr(e,t,n){await Promise.all([$n(e,t,n),er(e,t,n)])}async function nr(e,t,n){if(t.commentId==null||t.botLogin==null)return;let r=(await $t(e,t.repo,t.commentId,n)).find(e=>e.content===`eyes`&&e.userLogin===t.botLogin);r!=null&&await en(e,t.repo,t.commentId,r.id,n)}async function rr(e,t,n,r){t.commentId!=null&&await Qt(e,t.repo,t.commentId,n,r)}async function ir(e,n,r){if(n.commentId==null||n.botLogin==null){r.debug(`Missing comment ID or bot login, skipping reaction update`);return}try{await nr(e,n,r),await rr(e,n,`hooray`,r),r.info(`Updated reaction to success indicator`,{commentId:n.commentId,reaction:`hooray`})}catch(e){r.warning(`Failed to update reaction (non-fatal)`,{error:t(e)})}}async function ar(e,n,r){if(n.commentId==null||n.botLogin==null){r.debug(`Missing comment ID or bot login, skipping reaction update`);return}try{await nr(e,n,r),await rr(e,n,`confused`,r),r.info(`Updated reaction to confused`,{commentId:n.commentId})}catch(e){r.warning(`Failed to update failure reaction (non-fatal)`,{error:t(e)})}}async function or(e,t,n){if(t.issueNumber==null){n.debug(`No issue number, skipping label removal`);return}await rn(e,t.repo,t.issueNumber,`agent: working`,n)&&n.info(`Removed working label`,{issueNumber:t.issueNumber})}async function sr(e,t,n,r){n?await ir(e,t,r):await ar(e,t,r),await or(e,t,r)}var Z=e(oe(),1),cr=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},lr=class{constructor(e,t,n){if(e<1)throw Error(`max attempts should be greater than or equal to 1`);if(this.maxAttempts=e,this.minSeconds=Math.floor(t),this.maxSeconds=Math.floor(n),this.minSeconds>this.maxSeconds)throw Error(`min seconds should be less than or equal to max seconds`)}execute(e,t){return cr(this,void 0,void 0,function*(){let n=1;for(;nsetTimeout(t,e*1e3))})}},Q=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},ur=class extends Error{constructor(e){super(`Unexpected HTTP response: ${e}`),this.httpStatusCode=e,Object.setPrototypeOf(this,new.target.prototype)}};const dr=process.platform===`win32`;process.platform;function fr(e,t,n,r){return Q(this,void 0,void 0,function*(){return t||=z.join(Dr(),Le.randomUUID()),yield Pe(z.dirname(t)),D(`Downloading ${e}`),D(`Destination ${t}`),yield new lr(3,Or(`TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS`,10),Or(`TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS`,20)).execute(()=>Q(this,void 0,void 0,function*(){return yield pr(e,t||``,n,r)}),e=>!(e instanceof ur&&e.httpStatusCode&&e.httpStatusCode<500&&e.httpStatusCode!==408&&e.httpStatusCode!==429))})}function pr(e,t,n,r){return Q(this,void 0,void 0,function*(){if(R.existsSync(t))throw Error(`Destination file path ${t} already exists`);let i=new a(`actions/tool-cache`,[],{allowRetries:!1});n&&(D(`set auth`),r===void 0&&(r={}),r.authorization=n);let o=yield i.get(e,r);if(o.message.statusCode!==200){let t=new ur(o.message.statusCode);throw D(`Failed to download from "${e}". Code(${o.message.statusCode}) Message(${o.message.statusMessage})`),t}let s=ze.promisify(Xe.pipeline),c=Or(`TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY`,()=>o.message)(),l=!1;try{return yield s(c,R.createWriteStream(t)),D(`download complete`),l=!0,t}finally{if(!l){D(`download failed`);try{yield O(t)}catch(e){D(`Failed to delete '${t}'. ${e.message}`)}}}})}function mr(e,t){return Q(this,arguments,void 0,function*(e,t,n=`xz`){if(!e)throw Error(`parameter 'file' is required`);t=yield xr(t),D(`Checking tar --version`);let r=``;yield N(`tar --version`,[],{ignoreReturnCode:!0,silent:!0,listeners:{stdout:e=>r+=e.toString(),stderr:e=>r+=e.toString()}}),D(r.trim());let i=r.toUpperCase().includes(`GNU TAR`),a;a=n instanceof Array?n:[n],ke()&&!n.includes(`v`)&&a.push(`-v`);let o=t,s=e;return dr&&i&&(a.push(`--force-local`),o=t.replace(/\\/g,`/`),s=e.replace(/\\/g,`/`)),i&&(a.push(`--warning=no-unknown-keyword`),a.push(`--overwrite`)),a.push(`-C`,o,`-f`,s),yield N(`tar`,a),t})}function hr(e,t){return Q(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'file' is required`);return t=yield xr(t),dr?yield gr(e,t):yield _r(e,t),t})}function gr(e,t){return Q(this,void 0,void 0,function*(){let n=e.replace(/'/g,`''`).replace(/"|\n|\r/g,``),r=t.replace(/'/g,`''`).replace(/"|\n|\r/g,``),i=yield Ne(`pwsh`,!1);if(i){let e=[`-NoLogo`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Unrestricted`,`-Command`,[`$ErrorActionPreference = 'Stop' ;`,`try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`,`try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${n}', '${r}', $true) }`,`catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${n}' -DestinationPath '${r}' -Force } else { throw $_ } } ;`].join(` `)];D(`Using pwsh at path: ${i}`),yield N(`"${i}"`,e)}else{let e=[`-NoLogo`,`-Sta`,`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Unrestricted`,`-Command`,[`$ErrorActionPreference = 'Stop' ;`,`try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`,`if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${n}' -DestinationPath '${r}' -Force }`,`else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${n}', '${r}', $true) }`].join(` `)],t=yield Ne(`powershell`,!0);D(`Using powershell at path: ${t}`),yield N(`"${t}"`,e)}})}function _r(e,t){return Q(this,void 0,void 0,function*(){let n=yield Ne(`unzip`,!0),r=[e];ke()||r.unshift(`-q`),r.unshift(`-o`),yield N(`"${n}"`,r,{cwd:t})})}function vr(e,t,n,r){return Q(this,void 0,void 0,function*(){if(n=Z.clean(n)||n,r||=Ie.arch(),D(`Caching tool ${t} ${n} ${r}`),D(`source dir: ${e}`),!R.statSync(e).isDirectory())throw Error(`sourceDir is not a directory`);let i=yield Sr(t,n,r);for(let t of R.readdirSync(e))yield je(z.join(e,t),i,{recursive:!0});return Cr(t,n,r),i})}function yr(e,t,n){if(!e)throw Error(`toolName parameter is required`);if(!t)throw Error(`versionSpec parameter is required`);n||=Ie.arch(),wr(t)||(t=Tr(br(e,n),t));let r=``;if(t){t=Z.clean(t)||``;let i=z.join(Er(),e,t,n);D(`checking cache: ${i}`),R.existsSync(i)&&R.existsSync(`${i}.complete`)?(D(`Found tool in cache ${e} ${t} ${n}`),r=i):D(`not found`)}return r}function br(e,t){let n=[];t||=Ie.arch();let r=z.join(Er(),e);if(R.existsSync(r)){let e=R.readdirSync(r);for(let i of e)if(wr(i)){let e=z.join(r,i,t||``);R.existsSync(e)&&R.existsSync(`${e}.complete`)&&n.push(i)}}return n}function xr(e){return Q(this,void 0,void 0,function*(){return e||=z.join(Dr(),Le.randomUUID()),yield Pe(e),e})}function Sr(e,t,n){return Q(this,void 0,void 0,function*(){let r=z.join(Er(),e,Z.clean(t)||t,n||``);D(`destination ${r}`);let i=`${r}.complete`;return yield O(r),yield O(i),yield Pe(r),r})}function Cr(e,t,n){let r=`${z.join(Er(),e,Z.clean(t)||t,n||``)}.complete`;R.writeFileSync(r,``),D(`finished caching tool`)}function wr(e){let t=Z.clean(e)||``;D(`isExplicit: ${t}`);let n=Z.valid(t)!=null;return D(`explicit? ${n}`),n}function Tr(e,t){let n=``;D(`evaluating ${e.length} versions`),e=e.sort((e,t)=>Z.gt(e,t)?1:-1);for(let r=e.length-1;r>=0;r--){let i=e[r];if(Z.satisfies(i,t)){n=i;break}}return D(n?`matched: ${n}`:`match not found`),n}function Er(){let e=process.env.RUNNER_TOOL_CACHE||``;return Re(e,`Expected RUNNER_TOOL_CACHE to be defined`),e}function Dr(){let e=process.env.RUNNER_TEMP||``;return Re(e,`Expected RUNNER_TEMP to be defined`),e}function Or(e,t){let n=global[e];return n===void 0?t:n}function kr(){return{find:yr,downloadTool:fr,extractTar:mr,extractZip:hr,cacheDir:vr}}function Ar(){return{exec:N,getExecOutput:ie}}function jr(e){let t;try{t=JSON.parse(e)}catch(e){throw e instanceof SyntaxError?Error(`Invalid auth-json format: ${e.message}`):e}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`auth-json must be a JSON object`);return t}async function Mr(e,t,n){let r=V.join(t,`auth.json`);await B.mkdir(t,{recursive:!0});let i=JSON.stringify(e,null,2);return await B.writeFile(r,i,{mode:384}),n.info(`Populated auth.json`,{path:r,providers:Object.keys(e).length}),r}function Nr(){let e=L.platform,t=L.arch;return{os:{darwin:`darwin`,linux:`linux`,win32:`windows`}[e]??`linux`,arch:{arm64:`aarch64`,x64:`x64`}[t]??`x64`,ext:`.zip`}}function Pr(e,t){return`https://github.com/oven-sh/bun/releases/download/bun-${e.startsWith(`v`)?e:`v${e}`}/${`bun-${t.os}-${t.arch}${t.ext}`}`}async function Fr(e,n,r,i,a=w){let o=Nr(),s=n.find(`bun`,a,o.arch);if(s.length>0)return e.info(`Bun found in cache`,{version:a,path:s}),i(s),await Lr(s),{path:s,version:a,cached:!0};e.info(`Downloading Bun`,{version:a});let c=Pr(a,o);try{let t=await n.downloadTool(c);if(L.platform!==`win32`&&!await Rr(t,e,r))throw Error(`Downloaded Bun archive appears corrupted`);e.info(`Extracting Bun`);let s=await Ir(await n.extractZip(t),n),l=H.dirname(s);e.info(`Caching Bun`);let u=await n.cacheDir(l,`bun`,a,o.arch);return i(u),await Lr(u),e.info(`Bun installed`,{version:a,path:u}),{path:u,version:a,cached:!1}}catch(e){let n=t(e);throw Error(`Failed to install Bun ${a}: ${n}`)}}async function Ir(e,t){for(let n of await We.readdir(e,{withFileTypes:!0})){let{name:r}=n,i=H.join(e,r);if(n.isFile()){if(r===`bun`||r===`bun.exe`)return i;if(/^bun.*\.zip/.test(r))return Ir(await t.extractZip(i),t)}if(r.startsWith(`bun`)&&n.isDirectory())return Ir(i,t)}throw Error(`Could not find executable: bun`)}async function Lr(e){let t=e=>L.platform===`win32`?`${e}.exe`:e,n=H.join(e,t(`bun`));try{await We.symlink(n,H.join(e,t(`bunx`)))}catch(e){let t=typeof e==`object`?e.code:void 0;if(t!==`EEXIST`&&t!==`EPERM`&&t!==`EACCES`)throw e}}async function Rr(e,t,n){try{let{stdout:r}=await n.getExecOutput(`file`,[e],{silent:!0}),i=r.includes(`Zip archive`)||r.includes(`ZIP`);return i||t.warning(`Bun download validation failed`,{output:r.trim()}),i}catch{return t.debug(`Could not validate Bun download (file command unavailable)`),!0}}function zr(e,t){let n={autoupdate:!1};if(e.opencodeConfig!=null){let t;try{t=JSON.parse(e.opencodeConfig)}catch{return{config:n,error:`opencode-config must be valid JSON`}}if(typeof t!=`object`||!t||Array.isArray(t))return{config:n,error:`opencode-config must be a JSON object`};Object.assign(n,t)}let r=`@fro.bot/systematic@${e.systematicVersion}`,i=Array.isArray(n.plugin)?n.plugin:[];return i.some(e=>typeof e==`string`&&e.startsWith(`@fro.bot/systematic`))||(n.plugin=[...i,r]),t.debug(`Built CI OpenCode config`,{hasUserConfig:e.opencodeConfig!=null,pluginCount:Array.isArray(n.plugin)?n.plugin.length:0}),{config:n,error:null}}function Br(e){return{debug:t=>e.debug(t),info:t=>e.info(t),warn:t=>e.warning(t),error:t=>e.error(t)}}function Vr(e){let{token:t,logger:n}=e;return n.debug(`Creating GitHub client with token`),Oe(t,{log:Br(n)})}async function Hr(e,t){try{let{data:n}=await e.rest.users.getAuthenticated();return t.debug(`Authenticated as`,{login:n.login,type:n.type}),n.login}catch{return t.debug(`Failed to get authenticated user, may be app token`),`fro-bot[bot]`}}async function Ur(e,t,n,r){let i=t??n,a=t==null?n.length>0?`github-token`:`none`:`app-token`;if(i.length===0)return r.warning(`No GitHub token available`),{authenticated:!1,method:`none`,botLogin:null};L.env.GH_TOKEN=i,r.info(`Configured authentication`,{method:a});let o=null;return e!=null&&(o=await Hr(e,r)),{authenticated:!0,method:a,botLogin:o}}async function Wr(e,t){let n=await t.getExecOutput(`git`,[`config`,e],{ignoreReturnCode:!0,silent:!0});return n.exitCode===0&&n.stdout.trim().length>0?n.stdout.trim():null}async function Gr(e,t,n,r){let i=await Wr(`user.name`,r),a=await Wr(`user.email`,r);if(i!=null&&a!=null){n.info(`Git identity already configured`,{name:i,email:a});return}if(t==null)throw Error(`Cannot configure Git identity: no authenticated GitHub user`);let o=null;if(a==null){let r=await cn(e,t,n);if(r==null)throw Error(`Cannot configure Git identity: failed to look up user ID for '${t}'`);o=String(r.id)}i??await r.exec(`git`,[`config`,`--global`,`user.name`,t],void 0);let s=`${o}+${t}@users.noreply.github.com`;a??await r.exec(`git`,[`config`,`--global`,`user.email`,s],void 0),n.info(`Configured git identity`,{name:i??t,email:a??s})}const Kr=new Set([`__proto__`,`prototype`,`constructor`]);function qr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Jr(e,t){let n=Object.create(null);for(let[t,r]of Object.entries(e))Kr.has(t)||(n[t]=r);for(let[e,r]of Object.entries(t)){if(Kr.has(e))continue;let t=n[e];qr(r)&&qr(t)?n[e]=Jr(t,r):n[e]=r}return n}async function Yr(e,t,n){let r=JSON.parse(e);if(!qr(r))throw Error(`omo-config must be a JSON object (non-null, non-array)`);let i=r;await B.mkdir(t,{recursive:!0});let a=V.join(t,`oh-my-openagent.json`),o={};try{let e=await B.readFile(a,`utf8`),t=JSON.parse(e);typeof t==`object`&&t&&!Array.isArray(t)&&(o=t)}catch(e){n.debug(`Using empty base oMo config`,{path:a,error:String(e)})}let s=Jr(o,i),c=JSON.stringify(s,null,2);await B.writeFile(a,c);let l=V.join(t,`oh-my-opencode.json`);await B.writeFile(l,c),n.info(`Wrote oMo config`,{path:a,legacyPath:l,keyCount:Object.keys(i).length})}async function Xr(e,n,r={}){let{logger:i,execAdapter:a}=n,{claude:o=`no`,copilot:s=`no`,gemini:c=`no`,openai:l=`no`,opencodeZen:u=`no`,zaiCodingPlan:d=`no`,kimiForCoding:f=`no`}=r;i.info(`Installing Oh My OpenAgent plugin`,{version:e,claude:o,copilot:s,gemini:c,openai:l,opencodeZen:u,zaiCodingPlan:d,kimiForCoding:f});let p=``,m=[`oh-my-openagent@${e}`,`install`,`--no-tui`,`--skip-auth`,`--claude=${o}`,`--copilot=${s}`,`--gemini=${c}`,`--openai=${l}`,`--opencode-zen=${u}`,`--zai-coding-plan=${d}`,`--kimi-for-coding=${f}`];try{let t=await a.exec(`bunx`,m,{listeners:{stdout:e=>{p+=e.toString()},stderr:e=>{p+=e.toString()}},ignoreReturnCode:!0});if(t!==0){let e=`bunx oh-my-openagent install returned exit code ${t}`;return i.error(e,{output:p.slice(0,1e3)}),{installed:!1,version:null,error:`${e}\n${p.slice(0,500)}`}}let n=/oh-my-opencode@(\d+\.\d+\.\d+)/i.exec(p),r=n!=null&&n[1]!=null?n[1]:e;return i.info(`oMo plugin installed`,{version:r}),{installed:!0,version:r,error:null}}catch(e){let n=t(e),r=p.length>0?`${n}\nOutput: ${p.slice(0,500)}`:n;return i.error(`Failed to run oMo installer`,{error:n,output:p.slice(0,500)}),{installed:!1,version:null,error:`bunx oh-my-openagent install failed: ${r}`}}}const Zr=`opencode`,Qr=Se;function $r(){let e=Je.platform(),t=Je.arch(),n={darwin:`darwin`,linux:`linux`,win32:`windows`},r={x64:`x64`,arm64:`arm64`},i=e===`win32`||e===`darwin`?`.zip`:`.tar.gz`;return{os:n[e]??`linux`,arch:r[t]??`x64`,ext:i}}function ei(e,t){return`https://github.com/anomalyco/opencode/releases/download/${e.startsWith(`v`)?e:`v${e}`}/${`opencode-${t.os}-${t.arch}${t.ext}`}`}async function ti(e,t,n,r){if(L.platform===`win32`)return!0;try{let{stdout:i}=await r.getExecOutput(`file`,[e],{silent:!0}),a=(t===`.zip`?[`Zip archive`,`ZIP`]:[`gzip`,`tar`,`compressed`]).some(e=>i.includes(e));return a||n.warning(`Download validation failed`,{output:i.trim()}),a}catch{return n.debug(`Could not validate download (file command unavailable)`),!0}}async function ni(e,n,r,i,a=Qr){let o=$r(),s=r.find(Zr,e,o.arch);if(s.length>0)return n.info(`OpenCode found in cache`,{version:e,path:s}),{path:s,version:e,cached:!0};try{return await ri(e,o,n,r,i)}catch(r){n.warning(`Primary version install failed, trying fallback`,{requestedVersion:e,fallbackVersion:a,error:t(r)})}if(e!==a)try{let e=await ri(a,o,n,r,i);return n.info(`Installed fallback version`,{version:a}),e}catch(n){throw Error(`Failed to install OpenCode (tried ${e} and ${a}): ${t(n)}`)}throw Error(`Failed to install OpenCode version ${e}`)}async function ri(e,t,n,r,i){n.info(`Downloading OpenCode`,{version:e});let a=ei(e,t),o=await r.downloadTool(a);if(!await ti(o,t.ext,n,i))throw Error(`Downloaded archive appears corrupted`);n.info(`Extracting OpenCode`);let s=t.ext===`.zip`?await r.extractZip(o):await r.extractTar(o);n.info(`Caching OpenCode`);let c=await r.cacheDir(s,Zr,e,t.arch);return n.info(`OpenCode installed`,{version:e,path:c}),{path:c,version:e,cached:!1}}async function ii(e){let t=await fetch(`https://api.github.com/repos/anomalyco/opencode/releases/latest`);if(!t.ok)throw Error(`Failed to fetch latest OpenCode version: ${t.statusText}`);let n=(await t.json()).tag_name.replace(/^v/,``);return e.info(`Latest OpenCode version`,{version:n}),n}function ai(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function oi(e,t,n){let r=JSON.parse(e);if(!ai(r))throw Error(`systematic-config must be a JSON object (non-null, non-array)`);await B.mkdir(t,{recursive:!0});let i=V.join(t,`systematic.json`),a={};try{let e=await B.readFile(i,`utf8`),t=JSON.parse(e);ai(t)&&(a=t)}catch(e){n.debug(`Using empty base Systematic config`,{path:i,error:String(e)})}let o=Jr(a,r);await B.writeFile(i,JSON.stringify(o,null,2)),n.info(`Wrote Systematic config`,{path:i,keyCount:Object.keys(r).length})}const si={restoreCache:async(e,t,n)=>ye(e,t,n),saveCache:async(e,t)=>Te(e,t)};function ci(e){let{os:t,opencodeVersion:n,omoVersion:r,systematicVersion:i}=e;return`${ne}-${t}-oc-${n}-omo-${r}-sys-${i}`}function li(e){let{os:t,opencodeVersion:n,omoVersion:r,systematicVersion:i}=e;return[`${ne}-${t}-oc-${n}-omo-${r}-sys-${i}-`]}async function ui(e){let{logger:n,os:r,opencodeVersion:i,omoVersion:a,systematicVersion:o,toolCachePath:s,bunCachePath:c,omoConfigPath:l,opencodeCachePath:u,cacheAdapter:d=si}=e,f=ci({os:r,opencodeVersion:i,omoVersion:a,systematicVersion:o}),p=li({os:r,opencodeVersion:i,omoVersion:a,systematicVersion:o}),m=[s,c,l,u];n.info(`Restoring tools cache`,{primaryKey:f,restoreKeys:[...p],paths:m});try{let e=await d.restoreCache(m,f,[...p]);return e==null?(n.info(`Tools cache miss - will install tools`),{hit:!1,restoredKey:null}):(n.info(`Tools cache restored`,{restoredKey:e}),{hit:!0,restoredKey:e})}catch(e){return n.warning(`Tools cache restore failed`,{error:t(e)}),{hit:!1,restoredKey:null}}}async function di(e){let{logger:n,os:r,opencodeVersion:i,omoVersion:a,systematicVersion:o,toolCachePath:s,bunCachePath:c,omoConfigPath:l,opencodeCachePath:u,cacheAdapter:d=si}=e,f=ci({os:r,opencodeVersion:i,omoVersion:a,systematicVersion:o}),p=[s,c,l,u];n.info(`Saving tools cache`,{saveKey:f,paths:p});try{return await d.saveCache(p,f),n.info(`Tools cache saved`,{saveKey:f}),!0}catch(e){return e instanceof Error&&e.message.includes(`already exists`)?(n.info(`Tools cache key already exists, skipping save`),!0):(n.warning(`Tools cache save failed`,{error:t(e)}),!1)}}async function fi(e,n){let r=Date.now(),i=j({component:`setup`}),a=kr(),o=Ar();try{i.info(`Starting setup`,{version:e.opencodeVersion});let s;try{s=jr(e.authJson)}catch(e){return M(`Invalid auth-json: ${t(e)}`),null}let c=e.opencodeVersion;if(c===`latest`)try{c=await ii(i)}catch(e){i.warning(`Failed to get latest version, using fallback`,{error:t(e)}),c=Qr}let l=e.omoVersion,u=e.systematicVersion,d=L.env.RUNNER_TOOL_CACHE??`/opt/hostedtoolcache`,f=U(d,`opencode`),p=U(d,`bun`),m=U(Ye(),`.config`,`opencode`),h=U(Ye(),`.cache`,`opencode`),g=b(),_=await ui({logger:i,os:g,opencodeVersion:c,omoVersion:l,systematicVersion:u,toolCachePath:f,bunCachePath:p,omoConfigPath:m,opencodeCachePath:h}),v=_.hit?`hit`:`miss`,y,x=!1,S=null;if(_.hit){let e=a.find(`opencode`,c);e.length>0?(y={path:e,version:c,cached:!0},i.info(`Tools cache hit, using cached OpenCode CLI`,{version:c,omoVersion:l})):i.warning(`Tools cache hit but binary not found in tool-cache, falling through to install`,{requestedVersion:c,restoredKey:_.restoredKey})}if(y==null)try{y=await ni(c,i,a,o)}catch(e){return M(`Failed to install OpenCode: ${t(e)}`),null}let C=!1;try{await Fr(i,a,o,fe,w),C=!0}catch(e){i.warning(`Bun installation failed, oMo will be unavailable`,{error:t(e)})}if(be(`OMO_SEND_ANONYMOUS_TELEMETRY`,`0`),be(`OMO_DISABLE_POSTHOG`,`1`),C){if(e.omoConfig!=null)try{await Yr(e.omoConfig,m,i)}catch(e){i.warning(`Failed to write omo-config, continuing without custom config`,{error:t(e)})}if(e.systematicConfig!=null)try{await oi(e.systematicConfig,m,i)}catch(e){i.warning(`systematic-config write failed: ${t(e)}`)}let n=await Xr(l,{logger:i,execAdapter:o},e.omoProviders);n.installed?(i.info(`oMo installed`,{version:n.version}),x=!0):i.warning(`oMo installation failed, continuing without oMo`,{error:n.error??`unknown error`}),S=n.error}let T=zr({opencodeConfig:e.opencodeConfig,systematicVersion:u},i);if(T.error!=null)return M(T.error),null;let ee=U(m,`opencode.json`),E={};try{let e=await Ge(ee,`utf8`),t=JSON.parse(e);typeof t==`object`&&t&&!Array.isArray(t)&&(E=t)}catch{}delete E.plugins;let te=(e=>e.map(e=>typeof e==`string`&&(e===`oh-my-openagent`||e===`oh-my-openagent@latest`)?`oh-my-openagent@${l}`:e))(Array.isArray(E.plugin)?E.plugin:[]),ne=Array.isArray(T.config.plugin)?T.config.plugin:[],re=[...te];for(let e of ne){if(typeof e!=`string`)continue;let t=e.split(`@`).slice(0,e.startsWith(`@`)?2:1).join(`@`);re.some(e=>typeof e==`string`&&e.startsWith(t))||re.push(e)}let ie={...E,...T.config,plugin:re},ae=JSON.stringify(ie,null,2);be(`OPENCODE_CONFIG_CONTENT`,ae),await Ke(ee,ae),i.info(`Wrote merged OpenCode config`,{path:ee,pluginCount:re.length,plugins:re}),_.hit||await di({logger:i,os:g,opencodeVersion:c,omoVersion:l,systematicVersion:u,toolCachePath:f,bunCachePath:p,omoConfigPath:m,opencodeCachePath:h}),fe(y.path),F(`opencode-path`,y.path),F(`opencode-version`,y.version),i.info(`OpenCode ready`,{version:y.version,cached:y.cached});let D=Oe(n),O=await Ur(D,null,n,i);be(`GH_TOKEN`,n),i.info(`GitHub CLI configured`),await Gr(D,O.botLogin,i,o);let oe=U(Fe(),`opencode`),k=await Mr(s,oe,i);F(`auth-json-path`,k),i.info(`auth.json populated`,{path:k});let A=Date.now()-r,se={opencodePath:y.path,opencodeVersion:y.version,ghAuthenticated:O.authenticated,omoInstalled:x,omoError:S,toolsCacheStatus:v,duration:A};return i.info(`Setup complete`,{duration:A}),se}catch(e){let n=t(e);return i.error(`Setup failed`,{error:n}),M(n),null}}const pi={verifyOpenCodeAvailable:async(e,t)=>{let n=e??`opencode`;try{let e=``;await N(n,[`--version`],{listeners:{stdout:t=>{e+=t.toString()}},silent:!0});let r=/(\d+\.\d+\.\d+)/.exec(e)?.[1]??null;return t.debug(`OpenCode version verified`,{version:r}),{available:!0,version:r}}catch{return t.debug(`OpenCode not available, will attempt auto-setup`),{available:!1,version:null}}},runSetup:async(e,t)=>fi(e,t),addToPath:e=>{fe(e)}};async function mi(e,t){return x(e,t)}async function hi(e){return i(e,pi)}async function gi(e,t){let n={repo:e.agentContext.repo,commentId:e.agentContext.commentId,issueNumber:e.agentContext.issueNumber,issueType:e.agentContext.issueType,botLogin:e.botLogin},r=j({phase:`acknowledgment`});return await tr(e.githubClient,n,r),t.debug(`Acknowledgment phase completed`),n}async function _i(e){let{storeConfig:t,repo:n,runId:r,runAttempt:i}=e,a=e.logger??j({phase:`acquire-lock`});if(t.enabled===!1)return a.debug(`coordination-disabled`,{reason:`s3-not-configured`}),{outcome:`s3-disabled`};let o=xe(t,a),s=`action:${r}:${i}`,c=await zt({storeAdapter:o,storeConfig:t,lockTtlSeconds:900,heartbeatIntervalMs:0,staleThresholdMs:Vt},n,s,`github`,r,a);if(c.success===!1)return a.warning(`Lock acquisition failed`,{error:c.error.message,repo:n,holderId:s}),{outcome:`error`,error:c.error};if(c.data.acquired===!0){if(c.data.etag===null){let e=Error(`Lock acquired but adapter returned no ETag`);return a.warning(e.message,{repo:n,holderId:s}),{outcome:`error`,error:e}}return a.info(`Lock acquired`,{repo:n,holderId:s,etag:c.data.etag}),{outcome:`acquired`,lockEtag:c.data.etag}}return a.info(`lock-held-by-other-surface`,{repo:n,holderId:s,heldBy:c.data.holder?.holder_id??null,surface:c.data.holder?.surface??null}),{outcome:`held-by-other`,holder:c.data.holder}}function vi(e,t){try{JSON.parse(e)}catch{throw Error(`${t} must be valid JSON`)}}function yi(e,t){let n=e.trim();if(!/^\d+$/.test(n))throw Error(`${t} must be a positive integer, received: ${e}`);let r=Number.parseInt(n,10);if(r===0)throw Error(`${t} must be a positive integer, received: ${e}`);return r}function bi(e){let t=e.trim(),n=t.indexOf(`/`);if(n===-1)throw Error(`Invalid model format: "${e}". Expected "provider/model" (e.g., "anthropic/claude-sonnet-4-20250514")`);let r=t.slice(0,n).trim(),i=t.slice(n+1).trim();if(r.length===0)throw Error(`Invalid model format: "${e}". Provider cannot be empty.`);if(i.length===0)throw Error(`Invalid model format: "${e}". Model ID cannot be empty.`);return{providerID:r,modelID:i}}function xi(e,t=`timeout`){let n=e.trim();if(!/^\d+$/.test(n))throw Error(`${t} must be a non-negative integer, received: ${e}`);let r=Number.parseInt(n,10);if(Number.isNaN(r)||r<0)throw Error(`${t} must be a non-negative integer, received: ${e}`);return r}const Si=[`claude`,`claude-max20`,`copilot`,`gemini`,`openai`,`opencode-zen`,`zai-coding-plan`,`kimi-for-coding`],Ci=[`auto`,`working-dir`,`branch-pr`];function wi(e){let t=e.split(`,`).map(e=>e.trim().toLowerCase()).filter(e=>e.length>0),n=`no`,r=`no`,i=`no`,a=`no`,o=`no`,s=`no`,c=`no`;for(let e of t){if(!Si.includes(e))throw Error(`Invalid omo-providers value: "${e}". Valid values: ${Si.join(`, `)}`);switch(e){case`claude`:n=`yes`;break;case`claude-max20`:n=`max20`;break;case`copilot`:r=`yes`;break;case`gemini`:i=`yes`;break;case`openai`:a=`yes`;break;case`opencode-zen`:o=`yes`;break;case`zai-coding-plan`:s=`yes`;break;case`kimi-for-coding`:c=`yes`;break}}return{claude:n,copilot:r,gemini:i,openai:a,opencodeZen:o,zaiCodingPlan:s,kimiForCoding:c}}function Ti(e){return typeof e==`object`&&!!e}function Ei(e){if(Ti(e)===!1)return!1;let t=e.pull_request;if(Ti(t)===!1)return!1;let n=t.head;if(Ti(n)===!1)return!1;let r=n.repo;return Ti(r)===!1?!1:r.fork===!0}function Di(e){if(e.length!==0){if(e===`aws:kms`||e===`AES256`)return e;throw Error(`s3-sse-encryption must be either 'aws:kms' or 'AES256'`)}}function Oi(){try{let e=L.env.AWS_ACCESS_KEY_ID?.trim()??``;e.length>0&&_e(e);let t=L.env.AWS_SECRET_ACCESS_KEY?.trim()??``;t.length>0&&_e(t);let n=I(`github-token`,{required:!0}).trim();if(n.length===0)return C(Error(`github-token is required but was not provided`));let r=I(`auth-json`,{required:!0}).trim();if(r.length===0)return C(Error(`auth-json is required but was not provided`));vi(r,`auth-json`);let i=I(`prompt`).trim(),a=i.length>0?i:null,o=I(`output-mode`).trim().toLowerCase(),c=o.length>0?ki(o):`auto`,l=I(`session-retention`).trim(),d=l.length>0?yi(l,`session-retention`):50,m=I(`s3-backup`).trim().toLowerCase()===`true`,h=I(`s3-bucket`).trim(),g=h.length>0?h:``,_=I(`aws-region`).trim(),v=_.length>0?_:``,y=I(`s3-endpoint`).trim(),b=y.length>0?y:void 0,x=I(`s3-prefix`).trim(),S=x.length>0?x:f,w=I(`s3-expected-bucket-owner`).trim(),T=w.length>0?w:void 0,ne=I(`s3-allow-insecure-endpoint`).trim().toLowerCase()===`true`,ie=I(`s3-sse-kms-key-id`).trim(),ae=ie.length>0?ie:void 0,D={enabled:m,bucket:g,region:v,prefix:S,endpoint:b,expectedBucketOwner:T,allowInsecureEndpoint:ne,sseEncryption:Di(I(`s3-sse-encryption`).trim()),sseKmsKeyId:ae};if(D.enabled){if(D.bucket.length===0)throw Error(`s3-bucket is required when s3-backup is enabled`);let e=Ae(D.prefix);if(!e.success)throw e.error;if(D.endpoint!=null){let e=re(D.endpoint,D.allowInsecureEndpoint===!0);if(!e.success)throw e.error}Ei(me.payload)&&(ue(`S3 object store is disabled for fork pull requests`),D={...D,enabled:!1})}let O=I(`agent`).trim(),oe=O.length>0?O:u,k=I(`model`).trim(),A=k.length>0?bi(k):null,se=I(`timeout`).trim(),j=se.length>0?xi(se):E,M=I(`opencode-version`).trim(),ce=M.length>0?M:Se,N=I(`skip-cache`).trim().toLowerCase()===`true`,le=I(`omo-version`).trim(),de=le.length>0?le:p,fe=I(`systematic-version`).trim(),pe=fe.length>0?fe:te,he=I(`omo-providers`).trim(),ge=wi(he.length>0?he:``),ve=I(`opencode-config`).trim(),P=ve.length>0?ve:null,ye=I(`systematic-config`).trim(),be=ye.length>0?ye:null,xe=I(`dedup-window`).trim(),F=xe.length>0?xi(xe,`dedup-window`):ee;if(P!=null){vi(P,`opencode-config`);let e=JSON.parse(P);if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Input 'opencode-config' must be a JSON object`)}return s({githubToken:n,authJson:r,prompt:a,outputMode:c,sessionRetention:d,storeConfig:D,agent:oe,model:A,timeoutMs:j,opencodeVersion:ce,skipCache:N,omoVersion:de,systematicVersion:pe,omoProviders:ge,opencodeConfig:P,systematicConfig:be,dedupWindow:F})}catch(e){return C(e instanceof Error?e:Error(String(e)))}}function ki(e){switch(e){case`auto`:case`working-dir`:case`branch-pr`:return e;default:throw Error(`Invalid output-mode value: "${e}". Valid values: ${Ci.join(`, `)}`)}}async function Ai(e){let t=Oi();if(!t.success)return M(`Invalid inputs: ${t.error.message}`),null;let n=t.data,r=j({phase:`main`});r.info(`Action inputs parsed`,{sessionRetention:n.sessionRetention,s3Backup:n.storeConfig.enabled,hasGithubToken:n.githubToken.length>0,hasPrompt:n.prompt!=null,outputMode:n.outputMode,agent:n.agent,hasModelOverride:n.model!=null,timeoutMs:n.timeoutMs});let i=await hi({logger:r,opencodeVersion:n.opencodeVersion,githubToken:n.githubToken,authJson:n.authJson,omoVersion:n.omoVersion,systematicVersion:n.systematicVersion,omoProviders:n.omoProviders,opencodeConfig:n.opencodeConfig,systematicConfig:n.systematicConfig});return i.didSetup?r.info(`OpenCode auto-setup completed`,{version:i.version}):r.info(`OpenCode already available`,{version:i.version}),A(k.OPENCODE_VERSION,i.version),A(k.S3_ENABLED,String(n.storeConfig.enabled)),A(k.S3_BUCKET,n.storeConfig.bucket),A(k.S3_REGION,n.storeConfig.region),A(k.S3_PREFIX,n.storeConfig.prefix),A(k.S3_ENDPOINT,n.storeConfig.endpoint??``),A(k.S3_EXPECTED_BUCKET_OWNER,n.storeConfig.expectedBucketOwner??``),A(k.S3_ALLOW_INSECURE_ENDPOINT,String(n.storeConfig.allowInsecureEndpoint===!0)),A(k.S3_SSE_ENCRYPTION,n.storeConfig.sseEncryption??``),A(k.S3_SSE_KMS_KEY_ID,n.storeConfig.sseKmsKeyId??``),e.debug(`Bootstrap phase completed`,{opencodeVersion:i.version}),{inputs:n,logger:r,opencodeResult:i}}const ji=/^[0-9a-f]{40}$/i;function Mi(){return{exec:N,getExecOutput:ie}}async function Ni(e){let{workspacePath:n,logger:r,execAdapter:i=Mi()}=e,a=V.join(n,`.git`),o=V.join(a,`opencode`);try{let e=(await B.readFile(o,`utf8`)).trim();if(e.length>0){if(ji.test(e))return r.debug(`Project ID loaded from cache`,{projectId:e}),{projectId:e,source:`cached`};r.warning(`Invalid cached project ID format, regenerating`,{cachedId:e})}}catch(e){r.debug(`No cached project ID found`,{error:t(e)})}try{let e=await B.readFile(a,`utf8`),t=/^gitdir: (.+)$/m.exec(e);if(t==null)return{projectId:null,source:`error`,error:`Invalid .git file format`};a=V.resolve(n,t[1]),o=V.join(a,`opencode`)}catch(e){if((typeof e==`object`?e.code:void 0)!==`EISDIR`)return{projectId:null,source:`error`,error:`Not a git repository`}}try{let{stdout:e,exitCode:a}=await i.getExecOutput(`git`,[`rev-list`,`--max-parents=0`,`--all`],{cwd:n,silent:!0});if(a!==0||e.trim().length===0)return{projectId:null,source:`error`,error:`No commits found in repository`};let s=e.trim().split(` `).map(e=>e.trim()).filter(e=>e.length>0).sort();if(s.length===0)return{projectId:null,source:`error`,error:`No root commits found`};let c=s[0];try{await B.writeFile(o,c,{encoding:`utf8`,flag:`wx`}),r.info(`Project ID generated and cached`,{projectId:c,source:`generated`})}catch(e){(typeof e==`object`?e.code:void 0)===`EEXIST`?r.debug(`Project ID file already written by concurrent process, skipping`,{projectId:c}):r.warning(`Failed to cache project ID (continuing)`,{error:t(e)})}return{projectId:c,source:`generated`}}catch(e){return{projectId:null,source:`error`,error:t(e)}}}async function Pi(e,t){let n=ae(),r=j({phase:`cache`}),i=v(),a=V.join(i,`.git`,`opencode`),o=await Ce({components:n,logger:r,storagePath:m(),authPath:c(),projectIdPath:a,opencodeVersion:e.opencodeResult.version,storeConfig:e.inputs.storeConfig}),s=o.corrupted?`corrupted`:o.hit?`hit`:`miss`;t.setCacheStatus(s),t.setCacheSource(o.source),e.logger.info(`Cache restore completed`,{cacheStatus:s,key:o.key});let l=await Ni({workspacePath:i,logger:r});l.source===`error`?r.warning(`Failed to generate project ID (continuing)`,{error:l.error}):r.debug(`Project ID ready`,{projectId:l.projectId,source:l.source});let u=j({phase:`server-bootstrap`}),d=await mi(new AbortController().signal,u);if(!d.success)return M(`OpenCode server bootstrap failed: ${d.error.message}`),null;let f=d.data;return u.info(`SDK server bootstrapped successfully`),{cacheResult:o,cacheStatus:s,serverHandle:f}}const Fi={markdownImage:/!\[([^\]]*)\]\((https:\/\/github\.com\/user-attachments\/assets\/[^)]+)\)/gi,markdownLink:/\[([^\]]+)\]\((https:\/\/github\.com\/user-attachments\/files\/[^)]+)\)/gi,htmlImage:/]*src=["'](https:\/\/github\.com\/user-attachments\/assets\/[^"']+)["'][^>]*>/gi};function Ii(e,t,n){e.lastIndex=0;let r=e.exec(t);for(;r!=null;)n(r),r=e.exec(t);e.lastIndex=0}function Li(e){let t=[],n=new Set;return Ii(Fi.markdownImage,e,e=>{let r=e[2],i=e[1],a=e[0];r!=null&&i!=null&&!n.has(r)&&Mn(r)&&(n.add(r),t.push({url:r,originalMarkdown:a,altText:i,type:`image`}))}),Ii(Fi.markdownLink,e,e=>{let r=e[2],i=e[1],a=e[0];r!=null&&i!=null&&!n.has(r)&&Mn(r)&&(n.add(r),t.push({url:r,originalMarkdown:a,altText:i,type:`file`}))}),Ii(Fi.htmlImage,e,e=>{let r=e[1],i=e[0];if(r!=null&&!n.has(r)&&Mn(r)){n.add(r);let e=/alt=["']([^"']*)["']/i.exec(i);t.push({url:r,originalMarkdown:i,altText:e?.[1]??``,type:`image`})}}),Fi.htmlImage.lastIndex=0,t}function Ri(e,t,n){try{let r=new URL(e).pathname.split(`/`).at(-1);if(r!=null&&/\.[a-z0-9]+$/i.test(r))return r;if(t.trim().length>0){let e=t.replaceAll(/[^\w.-]/g,`_`).slice(0,50);return e.trim().length>0?e:`attachment_${n+1}`}return`attachment_${n+1}`}catch{return`attachment_${n+1}`}}const zi={maxFiles:5,maxFileSizeBytes:5*1024*1024,maxTotalSizeBytes:15*1024*1024,allowedMimeTypes:[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`,`text/plain`,`text/markdown`,`text/csv`,`application/json`,`application/pdf`]},Bi=[`github.com`,`githubusercontent.com`];async function Vi(e,n,r,i,a){a.debug(`Downloading attachment`,{url:e.url});try{let t=await fetch(e.url,{headers:{Authorization:`Bearer ${r}`,Accept:`*/*`,"User-Agent":`fro-bot-agent`},redirect:`manual`}),o=t;if(t.status>=300&&t.status<400){let n=t.headers.get(`location`);if(n==null)return a.warning(`Redirect without location`,{url:e.url}),null;let r=new URL(n);if(!Bi.some(e=>r.hostname===e||r.hostname.endsWith(`.${e}`)))return a.warning(`Redirect to non-GitHub host blocked`,{url:e.url,redirectTo:r.hostname}),null;o=await fetch(n,{headers:{Accept:`*/*`,"User-Agent":`fro-bot-agent`},redirect:`follow`})}if(!o.ok)return a.warning(`Attachment download failed`,{url:e.url,status:o.status}),null;let s=o.headers.get(`content-length`);if(s!=null){let t=Number.parseInt(s,10);if(t>i.maxFileSizeBytes)return a.warning(`Attachment exceeds size limit (Content-Length)`,{url:e.url,size:t,limit:i.maxFileSizeBytes}),null}let c=Be.from(await o.arrayBuffer());if(c.length>i.maxFileSizeBytes)return a.warning(`Attachment exceeds size limit`,{url:e.url,size:c.length,limit:i.maxFileSizeBytes}),null;let l=o.headers.get(`content-type`)??`application/octet-stream`,u=Ri(e.url,e.altText,n),d=l.split(`;`)[0],f=d==null?`application/octet-stream`:d.trim(),p=await B.mkdtemp(V.join(qe.tmpdir(),`fro-bot-attachments-`)),m=u.trim().length>0?u:`attachment_${n+1}`,h=V.join(p,m);return await B.writeFile(h,c),a.debug(`Attachment downloaded`,{filename:u,mime:f,sizeBytes:c.length,tempPath:h}),{url:e.url,filename:u,mime:f,sizeBytes:c.length,tempPath:h}}catch(n){return a.warning(`Attachment download error`,{url:e.url,error:t(n)}),null}}async function Hi(e,t,n=zi,r){return Promise.all(e.map(async(e,i)=>Vi(e,i,t,n,r)))}async function Ui(e,n){for(let r of e)try{await B.unlink(r);let e=V.dirname(r);await B.rmdir(e).catch(()=>{})}catch(e){n.debug(`Failed to cleanup temp file`,{path:r,error:t(e)})}}function Wi(e){return e.map(e=>({type:`file`,mime:e.mime,url:Ue(e.tempPath).toString(),filename:e.filename}))}function Gi(e,t,n){let r=e,i=new Set(n.map(e=>e.filename));for(let e of t){let t=n.find(e=>i.has(e.filename));t!=null&&(r=r.replace(e.originalMarkdown,`@${t.filename}`))}return r}function Ki(e,t,n,r){return{processed:n,skipped:r,modifiedBody:Gi(e,t,n),fileParts:Wi(n),tempFiles:n.map(e=>e.tempPath)}}function qi(e,t=zi,r){let i=[],a=[],o=0;for(let s of e)if(s!=null){if(i.length>=t.maxFiles){a.push({url:s.url,reason:`Exceeds max file count (${t.maxFiles})`}),r.debug(`Attachment skipped: max count`,{url:s.url});continue}if(s.sizeBytes>t.maxFileSizeBytes){a.push({url:s.url,reason:`File too large (${n(s.sizeBytes)} > ${n(t.maxFileSizeBytes)})`}),r.debug(`Attachment skipped: too large`,{url:s.url,size:s.sizeBytes});continue}if(o+s.sizeBytes>t.maxTotalSizeBytes){a.push({url:s.url,reason:`Would exceed total size limit (${n(t.maxTotalSizeBytes)})`}),r.debug(`Attachment skipped: total size exceeded`,{url:s.url});continue}if(!Ji(s.mime,t.allowedMimeTypes)){a.push({url:s.url,reason:`MIME type not allowed: ${s.mime}`}),r.debug(`Attachment skipped: MIME type`,{url:s.url,mime:s.mime});continue}o+=s.sizeBytes,i.push({filename:s.filename,mime:s.mime,sizeBytes:s.sizeBytes,tempPath:s.tempPath}),r.info(`Attachment validated`,{filename:s.filename,mime:s.mime,sizeBytes:s.sizeBytes})}return{validated:i,skipped:a}}function Ji(e,t){let[n]=e.split(`/`);for(let r of t)if(r===e||r.endsWith(`/*`)&&n!=null&&n===r.slice(0,-2))return!0;return!1}function Yi(e){let t=V.resolve(e);return t.endsWith(V.sep)&&t.length>1?t.slice(0,-1):t}async function Xi(e){let{bootstrapLogger:t,reactionCtx:n,githubClient:i,agentSuccess:a,attachmentResult:o,serverHandle:s,detectedOpencodeVersion:l,storeConfig:u,metrics:f,agentIdentity:p,repo:_,runId:y,lockEtag:b}=e;try{if(o!=null){let e=j({phase:`attachment-cleanup`});await Ui(o.tempFiles,e)}n!=null&&i!=null&&await sr(i,n,a,j({phase:`cleanup`}));let e=j({phase:`prune`}),b=v();if(s!=null){let t=Yi(b),n=await vt(s.client,t,_t,e);n.prunedCount>0&&e.info(`Pruned old sessions`,{pruned:n.prunedCount,remaining:n.remainingCount})}if(s!=null)try{s.shutdown()}catch(e){t.warning(`Server shutdown failed (non-fatal)`,{error:e instanceof Error?e.message:String(e)})}if(u.enabled===!0){let e=j({phase:`object-store-artifacts`});try{let t=xe(u,e),n=await ge(t,u,p,_,y,d(),e),r=f.getMetrics(),i=[...new Set([...r.sessionsUsed,...r.sessionsCreated])];await le(t,u,p,_,y,{runId:y,timestamp:new Date().toISOString(),tokenUsage:r.tokenUsage,timing:{startTime:r.startTime,endTime:r.endTime,duration:r.duration},cacheStatus:r.cacheStatus,cacheSource:r.cacheSource,sessionIds:i,sessionsUsed:r.sessionsUsed,sessionsCreated:r.sessionsCreated,prsCreated:r.prsCreated,commitsCreated:r.commitsCreated,commentsPosted:r.commentsPosted,model:r.model,cost:r.cost,errors:r.errors,artifactUpload:n},e)}catch(t){e.warning(`Object store artifact or metadata sync failed (non-fatal)`,{error:t instanceof Error?t.message:String(t)})}}let x=ae(),S=j({phase:`cache-save`}),C=V.join(b,`.git`,`opencode`);if(await ve({components:x,runId:g(),logger:S,storagePath:m(),authPath:c(),projectIdPath:C,opencodeVersion:l,storeConfig:u})&&A(k.CACHE_SAVED,`true`),r()){let e=j({phase:`artifact-upload`});await Ee({logPath:d(),runId:g(),runAttempt:h(),logger:e})&&A(k.ARTIFACT_UPLOADED,`true`)}}catch(e){t.warning(`Cleanup failed (non-fatal)`,{error:e instanceof Error?e.message:String(e)})}finally{if(b!=null&&u.enabled===!0){let e=j({phase:`lock-release`});try{let t=await Bt({storeAdapter:xe(u,e),storeConfig:u,lockTtlSeconds:900,heartbeatIntervalMs:3e4,staleThresholdMs:Vt},_,b,e);t.success===!1?e.warning(`Lock release failed (non-fatal)`,{error:t.error.message,repo:_}):e.debug(`Lock released`,{repo:_})}catch(t){e.warning(`Lock release threw (non-fatal)`,{error:t instanceof Error?t.message:String(t),repo:_})}}}}const Zi=V.join(Je.homedir(),`.cache`,`fro-bot-dedup`);function Qi(e){return e.replaceAll(`/`,`-`)}function $i(e,t){let n=Qi(e);return V.join(Zi,`${n}-${t.entityType}-${t.entityNumber}`)}function ea(e,t){return`${T}-${Qi(e)}-${t.entityType}-${t.entityNumber}-`}function ta(e,t,n){return`${ea(e,t)}${n}`}async function na(e,n,r,i=de){let a=$i(e,n),o=V.join(a,`sentinel.json`),s=ea(e,n);try{if(await B.rm(a,{recursive:!0,force:!0}),await B.mkdir(a,{recursive:!0}),await i.restoreCache([a],s,[])==null)return null;let e=await B.readFile(o,`utf8`);return JSON.parse(e)}catch(e){return r.debug(`Dedup marker restore failed; proceeding without marker`,{error:t(e),entityType:n.entityType,entityNumber:n.entityNumber}),null}}async function ra(e,n,r,i,a=de){let o=$i(e,n),s=V.join(o,`sentinel.json`),c=ta(e,n,r.runId);try{return await B.mkdir(o,{recursive:!0}),await B.writeFile(s,JSON.stringify(r),`utf8`),await a.saveCache([o],c),!0}catch(e){return t(e).toLowerCase().includes(`already exists`)?!0:(i.debug(`Dedup marker save failed`,{error:t(e),entityType:n.entityType,entityNumber:n.entityNumber,saveKey:c}),!1)}}const ia=new Set([`pull_request`,`issues`]),aa=new Set([`synchronize`,`reopened`]);function oa(e){return e.target==null||!ia.has(e.eventType)?null:e.eventType===`pull_request`&&e.target.kind===`pr`?{entityType:`pr`,entityNumber:e.target.number}:e.eventType===`issues`&&e.target.kind===`issue`?{entityType:`issue`,entityNumber:e.target.number}:null}async function sa(e,t,n,r,i=j({phase:`dedup`}),a){let o=oa(t);if(e===0)return{shouldProceed:!0,entity:o};if(o==null)return{shouldProceed:!0,entity:null};if(t.action!=null&&aa.has(t.action))return i.debug(`Dedup bypassed for action`,{action:t.action}),{shouldProceed:!0,entity:o};let s=await na(n,o,i,a);if(s==null||s.runId===t.runId)return{shouldProceed:!0,entity:o};let c=new Date(s.timestamp).getTime();if(Number.isNaN(c))return i.warning(`Dedup marker timestamp is invalid; proceeding without dedup`,{markerTimestamp:s.timestamp}),{shouldProceed:!0,entity:o};let l=Date.now()-c;if(l<-6e4)return i.warning(`Dedup marker timestamp is too far in the future; proceeding without dedup`,{markerTimestamp:s.timestamp,markerAge:l}),{shouldProceed:!0,entity:o};let u=Math.max(0,l);return u>e?{shouldProceed:!0,entity:o}:(i.info(`Skipping duplicate trigger within dedup window`,{eventType:t.eventType,action:t.action,runId:t.runId,markerRunId:s.runId,markerTimestamp:s.timestamp,dedupWindow:e,entityType:o.entityType,entityNumber:o.entityNumber}),Zt({sessionId:null,resolvedOutputMode:null,cacheStatus:`miss`,duration:Date.now()-r}),await la(t,o,s,u,e,i),{shouldProceed:!1,entity:o})}async function ca(e,t,n,r=j({phase:`dedup`}),i){await ra(n,t,{timestamp:new Date().toISOString(),runId:e.runId,action:e.action??`unknown`,eventType:e.eventType,entityType:t.entityType,entityNumber:t.entityNumber},r,i)}async function la(e,n,r,i,a,o){try{let t=Math.round(i/1e3),o=Math.round(a/1e3),s=`${n.entityType} #${n.entityNumber}`,c=`https://github.com/${e.repo.owner}/${e.repo.repo}/actions/runs/${r.runId}`;S.addHeading(`Fro Bot Agent Run — Skipped (Dedup)`,2).addRaw(`Execution skipped because the agent already ran for **${s}** recently.\n\n`).addTable([[{data:`Detail`,header:!0},{data:`Value`,header:!0}],[`Current action`,`\`${e.eventType}.${e.action??`unknown`}\``],[`Prior run`,`[${r.runId}](${c})`],[`Prior action`,`\`${r.eventType}.${r.action}\``],[`Time since prior run`,`${t}s`],[`Dedup window`,`${o}s`]]).addRaw(` diff --git a/dist/v2-C8boAtfr.js b/dist/v2-C8boAtfr.js new file mode 100644 index 00000000..7328f0eb --- /dev/null +++ b/dist/v2-C8boAtfr.js @@ -0,0 +1,7 @@ +import"./chunk-Bdh3yLIe.js";import{r as e}from"./process-CYfxiiLy.js";const t=({onRequest:e,onSseError:t,onSseEvent:n,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:a,sseMaxRetryAttempts:o,sseMaxRetryDelay:s,sseSleepFn:c,url:l,...u})=>{let d,f=c??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let c=a??3e3,p=0,m=u.signal??new AbortController().signal;for(;!m.aborted;){p++;let a=u.headers instanceof Headers?u.headers:new Headers(u.headers);d!==void 0&&a.set(`Last-Event-ID`,d);try{let t={redirect:`follow`,...u,body:u.serializedBody,headers:a,signal:m},o=new Request(l,t);e&&(o=await e(l,t));let s=await(u.fetch??globalThis.fetch)(o);if(!s.ok)throw Error(`SSE failed: ${s.status} ${s.statusText}`);if(!s.body)throw Error(`No body in SSE response`);let f=s.body.pipeThrough(new TextDecoderStream).getReader(),p=``,h=()=>{try{f.cancel()}catch{}};m.addEventListener(`abort`,h);try{for(;;){let{done:e,value:t}=await f.read();if(e)break;p+=t,p=p.replace(/\r\n/g,` +`).replace(/\r/g,` +`);let a=p.split(` + +`);p=a.pop()??``;for(let e of a){let t=e.split(` +`),a=[],o;for(let e of t)if(e.startsWith(`data:`))a.push(e.replace(/^data:\s*/,``));else if(e.startsWith(`event:`))o=e.replace(/^event:\s*/,``);else if(e.startsWith(`id:`))d=e.replace(/^id:\s*/,``);else if(e.startsWith(`retry:`)){let t=Number.parseInt(e.replace(/^retry:\s*/,``),10);Number.isNaN(t)||(c=t)}let s,l=!1;if(a.length){let e=a.join(` +`);try{s=JSON.parse(e),l=!0}catch{s=e}}l&&(i&&await i(s),r&&(s=await r(s))),n?.({data:s,event:o,id:d,retry:c}),a.length&&(yield s)}}}finally{m.removeEventListener(`abort`,h),f.releaseLock()}break}catch(e){if(t?.(e),o!==void 0&&p>=o)break;await f(Math.min(c*2**(p-1),s??3e4))}}}()}},n=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},r=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},i=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},a=({allowReserved:e,explode:t,name:i,style:a,value:s})=>{if(!t){let t=(e?s:s.map(e=>encodeURIComponent(e))).join(r(a));switch(a){case`label`:return`.${t}`;case`matrix`:return`;${i}=${t}`;case`simple`:return t;default:return`${i}=${t}`}}let c=n(a),l=s.map(t=>a===`label`||a===`simple`?e?t:encodeURIComponent(t):o({allowReserved:e,name:i,value:t})).join(c);return a===`label`||a===`matrix`?c+l:l},o=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},s=({allowReserved:e,explode:t,name:n,style:r,value:a,valueOnly:s})=>{if(a instanceof Date)return s?a.toISOString():`${n}=${a.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(a).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let i=t.join(`,`);switch(r){case`form`:return`${n}=${i}`;case`label`:return`.${i}`;case`matrix`:return`;${n}=${i}`;default:return i}}let c=i(r),l=Object.entries(a).map(([t,i])=>o({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(c);return r===`label`||r===`matrix`?c+l:l},c=/\{[^{}]+\}/g,l=({path:e,url:t})=>{let n=t,r=t.match(c);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),c=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),c=`label`):i.startsWith(`;`)&&(i=i.substring(1),c=`matrix`);let l=e[i];if(l==null)continue;if(Array.isArray(l)){n=n.replace(t,a({explode:r,name:i,style:c,value:l}));continue}if(typeof l==`object`){n=n.replace(t,s({explode:r,name:i,style:c,value:l,valueOnly:!0}));continue}if(c===`matrix`){n=n.replace(t,`;${o({name:i,value:l})}`);continue}let u=encodeURIComponent(c===`label`?`.${l}`:l);n=n.replace(t,u)}return n},u=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=l({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o};function d(e){let t=e.body!==void 0;if(t&&e.bodySerializer)return`serializedBody`in e?e.serializedBody!==void 0&&e.serializedBody!==``?e.serializedBody:null:e.body===``?null:e.body;if(t)return e.body}const f=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},p={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)},m=({parameters:e={},...t}={})=>n=>{let r=[];if(n&&typeof n==`object`)for(let i in n){let c=n[i];if(c==null)continue;let l=e[i]||t;if(Array.isArray(c)){let e=a({allowReserved:l.allowReserved,explode:!0,name:i,style:`form`,value:c,...l.array});e&&r.push(e)}else if(typeof c==`object`){let e=s({allowReserved:l.allowReserved,explode:!0,name:i,style:`deepObject`,value:c,...l.object});e&&r.push(e)}else{let e=o({allowReserved:l.allowReserved,name:i,value:c});e&&r.push(e)}}return r.join(`&`)},h=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},g=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1,_=async({security:e,...t})=>{for(let n of e){if(g(t,n.name))continue;let e=await f(n,t.auth);if(!e)continue;let r=n.name??`Authorization`;switch(n.in){case`query`:t.query||={},t.query[r]=e;break;case`cookie`:t.headers.append(`Cookie`,`${r}=${e}`);break;default:t.headers.set(r,e);break}}},v=e=>u({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:m(e.querySerializer),url:e.url}),y=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=x(e.headers,t.headers),n},b=e=>{let t=[];return e.forEach((e,n)=>{t.push([n,e])}),t},x=(...e)=>{let t=new Headers;for(let n of e){if(!n)continue;let e=n instanceof Headers?b(n):Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t};var S=class{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e==`number`?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let n=this.getInterceptorIndex(e);return this.fns[n]?(this.fns[n]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}};const C=()=>({error:new S,request:new S,response:new S}),w=m({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),ee={"Content-Type":`application/json`},T=(e={})=>({...p,headers:ee,parseAs:`auto`,querySerializer:w,...e}),E=(e={})=>{let n=y(T(),e),r=()=>({...n}),i=e=>(n=y(n,e),r()),a=C(),o=async e=>{let t={...n,...e,fetch:e.fetch??n.fetch??globalThis.fetch,headers:x(n.headers,e.headers),serializedBody:void 0};return t.security&&await _({...t,security:t.security}),t.requestValidator&&await t.requestValidator(t),t.body!==void 0&&t.bodySerializer&&(t.serializedBody=t.bodySerializer(t.body)),(t.body===void 0||t.serializedBody===``)&&t.headers.delete(`Content-Type`),{opts:t,url:v(t)}},s=async e=>{let{opts:t,url:n}=await o(e),r={redirect:`follow`,...t,body:d(t)},i=new Request(n,r);for(let e of a.request.fns)e&&(i=await e(i,t));let s=t.fetch,c;try{c=await s(i)}catch(e){let n=e;for(let r of a.error.fns)r&&(n=await r(e,void 0,i,t));if(n||={},t.throwOnError)throw n;return t.responseStyle===`data`?void 0:{error:n,request:i,response:void 0}}for(let e of a.response.fns)e&&(c=await e(c,i,t));let l={request:i,response:c};if(c.ok){let e=(t.parseAs===`auto`?h(c.headers.get(`Content-Type`)):t.parseAs)??`json`;if(c.status===204||c.headers.get(`Content-Length`)===`0`){let n;switch(e){case`arrayBuffer`:case`blob`:case`text`:n=await c[e]();break;case`formData`:n=new FormData;break;case`stream`:n=c.body;break;default:n={};break}return t.responseStyle===`data`?n:{data:n,...l}}let n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`text`:n=await c[e]();break;case`json`:{let e=await c.text();n=e?JSON.parse(e):{};break}case`stream`:return t.responseStyle===`data`?c.body:{data:c.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await c.text(),f;try{f=JSON.parse(u)}catch{}let p=f??u,m=p;for(let e of a.error.fns)e&&(m=await e(p,c,i,t));if(m||={},t.throwOnError)throw m;return t.responseStyle===`data`?void 0:{error:m,...l}},c=e=>t=>s({...t,method:e}),l=e=>async n=>{let{opts:r,url:i}=await o(n);return t({...r,body:r.body,headers:r.headers,method:e,onRequest:async(e,t)=>{let n=new Request(e,t);for(let e of a.request.fns)e&&(n=await e(n,r));return n},serializedBody:d(r),url:i})};return{buildUrl:v,connect:c(`CONNECT`),delete:c(`DELETE`),get:c(`GET`),getConfig:r,head:c(`HEAD`),interceptors:a,options:c(`OPTIONS`),patch:c(`PATCH`),post:c(`POST`),put:c(`PUT`),request:s,setConfig:i,sse:{connect:l(`CONNECT`),delete:l(`DELETE`),get:l(`GET`),head:l(`HEAD`),options:l(`OPTIONS`),patch:l(`PATCH`),post:l(`POST`),put:l(`PUT`),trace:l(`TRACE`)},trace:c(`TRACE`)}},D=Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`}),O=(e,t)=>{t||=new Map;for(let n of e)`in`in n?n.key&&t.set(n.key,{in:n.in,map:n.map}):`key`in n?t.set(n.key,{map:n.map}):n.args&&O(n.args,t);return t},k=e=>{for(let[t,n]of Object.entries(e))n&&typeof n==`object`&&!Object.keys(n).length&&delete e[t]},A=(e,t)=>{let n={body:{},headers:{},path:{},query:{}},r=O(t),i;for(let[a,o]of e.entries())if(t[a]&&(i=t[a]),i)if(`in`in i)if(i.key){let e=r.get(i.key),t=e.map||i.key;e.in&&(n[e.in][t]=o)}else n.body=o;else for(let[e,t]of Object.entries(o??{})){let a=r.get(e);if(a)if(a.in){let r=a.map||e;n[a.in][r]=t}else n[a.map]=t;else{let r=D.find(([t])=>e.startsWith(t));if(r){let[i,a]=r;n[a][e.slice(i.length)]=t}else if(`allowExtra`in i&&i.allowExtra){for(let[r,a]of Object.entries(i.allowExtra))if(a){n[r][e]=t;break}}}}return k(n),n},j=E(T({baseUrl:`http://localhost:4096`}));var M=class{client;constructor(e){this.client=e?.client??j}},N=class{defaultKey=`default`;instances=new Map;get(e){let t=this.instances.get(e??this.defaultKey);if(!t)throw Error(`No SDK client found. Create one with "new OpencodeClient()" to fix this error.`);return t}set(e,t){this.instances.set(t??this.defaultKey,e)}},P=class extends M{remove(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`}]}]);return(t?.client??this.client).delete({url:`/auth/{providerID}`,...t,...n})}set(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`},{key:`auth`,map:`body`}]}]);return(t?.client??this.client).put({url:`/auth/{providerID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},F=class extends M{log(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`service`},{in:`body`,key:`level`},{in:`body`,key:`message`},{in:`body`,key:`extra`}]}]);return(t?.client??this.client).post({url:`/log`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}agents(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/agent`,...t,...n})}skills(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/skill`,...t,...n})}},I=class extends M{get(e){return(e?.client??this.client).get({url:`/global/config`,...e})}update(e,t){let n=A([e],[{args:[{key:`config`,map:`body`}]}]);return(t?.client??this.client).patch({url:`/global/config`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},L=class extends M{health(e){return(e?.client??this.client).get({url:`/global/health`,...e})}event(e){return(e?.client??this.client).sse.get({url:`/global/event`,...e})}dispose(e){return(e?.client??this.client).post({url:`/global/dispose`,...e})}upgrade(e,t){let n=A([e],[{args:[{in:`body`,key:`target`}]}]);return(t?.client??this.client).post({url:`/global/upgrade`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_config;get config(){return this._config??=new I({client:this.client})}},R=class extends M{subscribe(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).sse.get({url:`/event`,...t,...n})}},z=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/config`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`config`,map:`body`}]}]);return(t?.client??this.client).patch({url:`/config`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}providers(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/config/providers`,...t,...n})}},B=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/console`,...t,...n})}listOrgs(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/console/orgs`,...t,...n})}switchOrg(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`accountID`},{in:`body`,key:`orgID`}]}]);return(t?.client??this.client).post({url:`/experimental/console/switch`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},V=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`roots`},{in:`query`,key:`start`},{in:`query`,key:`cursor`},{in:`query`,key:`search`},{in:`query`,key:`limit`},{in:`query`,key:`archived`}]}]);return(t?.client??this.client).get({url:`/experimental/session`,...t,...n})}},H=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/resource`,...t,...n})}},U=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/workspace/adapter`,...t,...n})}},W=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/workspace`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`id`},{in:`body`,key:`type`},{in:`body`,key:`branch`},{in:`body`,key:`extra`}]}]);return(t?.client??this.client).post({url:`/experimental/workspace`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/workspace/status`,...t,...n})}remove(e,t){let n=A([e],[{args:[{in:`path`,key:`id`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/experimental/workspace/{id}`,...t,...n})}warp(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`id`},{in:`body`,key:`sessionID`},{in:`body`,key:`copyChanges`}]}]);return(t?.client??this.client).post({url:`/experimental/workspace/warp`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_adapter;get adapter(){return this._adapter??=new U({client:this.client})}},G=class extends M{_console;get console(){return this._console??=new B({client:this.client})}_session;get session(){return this._session??=new V({client:this.client})}_resource;get resource(){return this._resource??=new H({client:this.client})}_workspace;get workspace(){return this._workspace??=new W({client:this.client})}},K=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`provider`},{in:`query`,key:`model`}]}]);return(t?.client??this.client).get({url:`/experimental/tool`,...t,...n})}ids(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/tool/ids`,...t,...n})}},q=class extends M{remove(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`worktreeRemoveInput`,map:`body`}]}]);return(t?.client??this.client).delete({url:`/experimental/worktree`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/worktree`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`worktreeCreateInput`,map:`body`}]}]);return(t?.client??this.client).post({url:`/experimental/worktree`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}reset(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`worktreeResetInput`,map:`body`}]}]);return(t?.client??this.client).post({url:`/experimental/worktree/reset`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},J=class extends M{text(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`pattern`}]}]);return(t?.client??this.client).get({url:`/find`,...t,...n})}files(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`query`},{in:`query`,key:`dirs`},{in:`query`,key:`type`},{in:`query`,key:`limit`}]}]);return(t?.client??this.client).get({url:`/find/file`,...t,...n})}symbols(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`query`}]}]);return(t?.client??this.client).get({url:`/find/symbol`,...t,...n})}},te=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`path`}]}]);return(t?.client??this.client).get({url:`/file`,...t,...n})}read(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`path`}]}]);return(t?.client??this.client).get({url:`/file/content`,...t,...n})}status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/file/status`,...t,...n})}},Y=class extends M{dispose(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/instance/dispose`,...t,...n})}},X=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/path`,...t,...n})}},Z=class extends M{raw(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/vcs/diff/raw`,...t,...n})}},Q=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/vcs`,...t,...n})}status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/vcs/status`,...t,...n})}diff(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`mode`}]}]);return(t?.client??this.client).get({url:`/vcs/diff`,...t,...n})}apply(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`patch`}]}]);return(t?.client??this.client).post({url:`/vcs/apply`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_diff;get diff2(){return this._diff??=new Z({client:this.client})}},ne=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/command`,...t,...n})}},re=class extends M{status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/lsp`,...t,...n})}},ie=class extends M{status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/formatter`,...t,...n})}},ae=class extends M{remove(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/mcp/{name}/auth`,...t,...n})}start(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/auth`,...t,...n})}callback(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`code`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/auth/callback`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}authenticate(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/auth/authenticate`,...t,...n})}},oe=class extends M{status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/mcp`,...t,...n})}add(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`name`},{in:`body`,key:`config`}]}]);return(t?.client??this.client).post({url:`/mcp`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}connect(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/connect`,...t,...n})}disconnect(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/disconnect`,...t,...n})}_auth;get auth(){return this._auth??=new ae({client:this.client})}},se=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/project`,...t,...n})}current(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/project/current`,...t,...n})}initGit(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/project/git/init`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`projectID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`name`},{in:`body`,key:`icon`},{in:`body`,key:`commands`}]}]);return(t?.client??this.client).patch({url:`/project/{projectID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},ce=class extends M{shells(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty/shells`,...t,...n})}list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`command`},{in:`body`,key:`args`},{in:`body`,key:`cwd`},{in:`body`,key:`title`},{in:`body`,key:`env`}]}]);return(t?.client??this.client).post({url:`/pty`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}remove(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/pty/{ptyID}`,...t,...n})}get(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty/{ptyID}`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`title`},{in:`body`,key:`size`}]}]);return(t?.client??this.client).put({url:`/pty/{ptyID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}connectToken(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/pty/{ptyID}/connect-token`,...t,...n})}connect(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty/{ptyID}/connect`,...t,...n})}},le=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/question`,...t,...n})}reply(e,t){let n=A([e],[{args:[{in:`path`,key:`requestID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`answers`}]}]);return(t?.client??this.client).post({url:`/question/{requestID}/reply`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}reject(e,t){let n=A([e],[{args:[{in:`path`,key:`requestID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/question/{requestID}/reject`,...t,...n})}},ue=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/permission`,...t,...n})}reply(e,t){let n=A([e],[{args:[{in:`path`,key:`requestID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`reply`},{in:`body`,key:`message`}]}]);return(t?.client??this.client).post({url:`/permission/{requestID}/reply`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}respond(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`permissionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`response`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/permissions/{permissionID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},de=class extends M{authorize(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`method`},{in:`body`,key:`inputs`}]}]);return(t?.client??this.client).post({url:`/provider/{providerID}/oauth/authorize`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}callback(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`method`},{in:`body`,key:`code`}]}]);return(t?.client??this.client).post({url:`/provider/{providerID}/oauth/callback`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},fe=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/provider`,...t,...n})}auth(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/provider/auth`,...t,...n})}_oauth;get oauth(){return this._oauth??=new de({client:this.client})}},pe=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`scope`},{in:`query`,key:`path`},{in:`query`,key:`roots`},{in:`query`,key:`start`},{in:`query`,key:`search`},{in:`query`,key:`limit`}]}]);return(t?.client??this.client).get({url:`/session`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`parentID`},{in:`body`,key:`title`},{in:`body`,key:`agent`},{in:`body`,key:`model`},{in:`body`,key:`permission`},{in:`body`,key:`workspaceID`}]}]);return(t?.client??this.client).post({url:`/session`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/status`,...t,...n})}delete(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}`,...t,...n})}get(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`title`},{in:`body`,key:`permission`},{in:`body`,key:`time`}]}]);return(t?.client??this.client).patch({url:`/session/{sessionID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}children(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/children`,...t,...n})}todo(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/todo`,...t,...n})}diff(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`messageID`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/diff`,...t,...n})}messages(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`limit`},{in:`query`,key:`before`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/message`,...t,...n})}prompt(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`model`},{in:`body`,key:`agent`},{in:`body`,key:`noReply`},{in:`body`,key:`tools`},{in:`body`,key:`format`},{in:`body`,key:`system`},{in:`body`,key:`variant`},{in:`body`,key:`parts`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/message`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}deleteMessage(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}/message/{messageID}`,...t,...n})}message(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/message/{messageID}`,...t,...n})}fork(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/fork`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}abort(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/abort`,...t,...n})}init(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`modelID`},{in:`body`,key:`providerID`},{in:`body`,key:`messageID`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/init`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}unshare(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}/share`,...t,...n})}share(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/share`,...t,...n})}summarize(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`providerID`},{in:`body`,key:`modelID`},{in:`body`,key:`auto`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/summarize`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}promptAsync(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`model`},{in:`body`,key:`agent`},{in:`body`,key:`noReply`},{in:`body`,key:`tools`},{in:`body`,key:`format`},{in:`body`,key:`system`},{in:`body`,key:`variant`},{in:`body`,key:`parts`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/prompt_async`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}command(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{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(t?.client??this.client).post({url:`/session/{sessionID}/command`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}shell(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`agent`},{in:`body`,key:`model`},{in:`body`,key:`command`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/shell`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}revert(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`partID`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/revert`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}unrevert(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/unrevert`,...t,...n})}},$=class extends M{delete(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`path`,key:`partID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}/message/{messageID}/part/{partID}`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`path`,key:`partID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`part`,map:`body`}]}]);return(t?.client??this.client).patch({url:`/session/{sessionID}/message/{messageID}/part/{partID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},me=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`body`,map:`body`}]}]);return(t?.client??this.client).post({url:`/sync/history`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},he=class extends M{start(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/sync/start`,...t,...n})}replay(e,t){let n=A([e],[{args:[{in:`query`,key:`query_directory`,map:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`body_directory`,map:`directory`},{in:`body`,key:`events`}]}]);return(t?.client??this.client).post({url:`/sync/replay`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}steal(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`sessionID`}]}]);return(t?.client??this.client).post({url:`/sync/steal`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_history;get history(){return this._history??=new me({client:this.client})}},ge=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/api/session`,...t,...n})}prompt(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`prompt`},{in:`body`,key:`delivery`}]}]);return(t?.client??this.client).post({url:`/api/session/{sessionID}/prompt`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}compact(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/api/session/{sessionID}/compact`,...t,...n})}wait(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/api/session/{sessionID}/wait`,...t,...n})}context(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/api/session/{sessionID}/context`,...t,...n})}messages(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/api/session/{sessionID}/message`,...t,...n})}},_e=class extends M{_session;get session(){return this._session??=new ge({client:this.client})}},ve=class extends M{next(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/tui/control/next`,...t,...n})}response(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`body`,map:`body`}]}]);return(t?.client??this.client).post({url:`/tui/control/response`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},ye=class extends M{appendPrompt(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`text`}]}]);return(t?.client??this.client).post({url:`/tui/append-prompt`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}openHelp(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-help`,...t,...n})}openSessions(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-sessions`,...t,...n})}openThemes(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-themes`,...t,...n})}openModels(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-models`,...t,...n})}submitPrompt(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/submit-prompt`,...t,...n})}clearPrompt(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/clear-prompt`,...t,...n})}executeCommand(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`command`}]}]);return(t?.client??this.client).post({url:`/tui/execute-command`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}showToast(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`title`},{in:`body`,key:`message`},{in:`body`,key:`variant`},{in:`body`,key:`duration`}]}]);return(t?.client??this.client).post({url:`/tui/show-toast`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}publish(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`body`,map:`body`}]}]);return(t?.client??this.client).post({url:`/tui/publish`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}selectSession(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`sessionID`}]}]);return(t?.client??this.client).post({url:`/tui/select-session`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_control;get control(){return this._control??=new ve({client:this.client})}},be=class e extends M{static __registry=new N;constructor(t){super(t),e.__registry.set(this,t?.key)}_auth;get auth(){return this._auth??=new P({client:this.client})}_app;get app(){return this._app??=new F({client:this.client})}_global;get global(){return this._global??=new L({client:this.client})}_event;get event(){return this._event??=new R({client:this.client})}_config;get config(){return this._config??=new z({client:this.client})}_experimental;get experimental(){return this._experimental??=new G({client:this.client})}_tool;get tool(){return this._tool??=new K({client:this.client})}_worktree;get worktree(){return this._worktree??=new q({client:this.client})}_find;get find(){return this._find??=new J({client:this.client})}_file;get file(){return this._file??=new te({client:this.client})}_instance;get instance(){return this._instance??=new Y({client:this.client})}_path;get path(){return this._path??=new X({client:this.client})}_vcs;get vcs(){return this._vcs??=new Q({client:this.client})}_command;get command(){return this._command??=new ne({client:this.client})}_lsp;get lsp(){return this._lsp??=new re({client:this.client})}_formatter;get formatter(){return this._formatter??=new ie({client:this.client})}_mcp;get mcp(){return this._mcp??=new oe({client:this.client})}_project;get project(){return this._project??=new se({client:this.client})}_pty;get pty(){return this._pty??=new ce({client:this.client})}_question;get question(){return this._question??=new le({client:this.client})}_permission;get permission(){return this._permission??=new ue({client:this.client})}_provider;get provider(){return this._provider??=new fe({client:this.client})}_session;get session(){return this._session??=new pe({client:this.client})}_part;get part(){return this._part??=new $({client:this.client})}_sync;get sync(){return this._sync??=new he({client:this.client})}_v2;get v2(){return this._v2??=new _e({client:this.client})}_tui;get tui(){return this._tui??=new ye({client:this.client})}};function xe(e,t,n){if(e)return t&&(e===t||n&&e===n(t))?t:e}function Se(e,t){if(e.method!==`GET`&&e.method!==`HEAD`)return e;let n=new URL(e.url),r=!1;for(let[i,a]of[[`x-opencode-directory`,`directory`],[`x-opencode-workspace`,`workspace`]]){let o=xe(e.headers.get(i),a===`directory`?t.directory:t.workspace,a===`directory`?encodeURIComponent:void 0);o&&(n.searchParams.has(a)||n.searchParams.set(a,o),r=!0)}if(!r)return e;let i=new Request(n,e);return i.headers.delete(`x-opencode-directory`),i.headers.delete(`x-opencode-workspace`),i}function Ce(e){if(!e?.fetch){let t=e=>(e.timeout=!1,fetch(e));e={...e,fetch:t}}e?.directory&&(e.headers={...e.headers,"x-opencode-directory":encodeURIComponent(e.directory)}),e?.experimental_workspaceID&&(e.headers={...e.headers,"x-opencode-workspace":e.experimental_workspaceID});let t=E(e);return t.interceptors.request.use(t=>Se(t,{directory:e?.directory,workspace:e?.experimental_workspaceID})),t.interceptors.response.use(e=>{if(e.headers.get(`content-type`)===`text/html`)throw Error(`Request is not supported by this version of OpenCode Server (Server responded with text/html)`);return e}),t.interceptors.error.use((e,t,n)=>{if(!(e==null||e===``||typeof e==`object`&&!(e instanceof Error)&&Object.keys(e).length===0))return e;let r=n?.method??`?`,i=n?.url??`?`;if(!t)return Error(`opencode server ${r} ${i}: network error (no response)`);let a=t.status,o=t.statusText?` `+t.statusText:``;return Error(`opencode server ${r} ${i} → ${a}${o}: (empty response body)`)}),new be({client:t})}e();export{Ce as createOpencodeClient}; \ No newline at end of file diff --git a/dist/v2-CEk_tjbL.js b/dist/v2-CEk_tjbL.js deleted file mode 100644 index 87aa9717..00000000 --- a/dist/v2-CEk_tjbL.js +++ /dev/null @@ -1,7 +0,0 @@ -import"./chunk-Bdh3yLIe.js";import{r as e}from"./process-CYfxiiLy.js";const t=({onRequest:e,onSseError:t,onSseEvent:n,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:a,sseMaxRetryAttempts:o,sseMaxRetryDelay:s,sseSleepFn:c,url:l,...u})=>{let d,f=c??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let c=a??3e3,p=0,m=u.signal??new AbortController().signal;for(;!m.aborted;){p++;let a=u.headers instanceof Headers?u.headers:new Headers(u.headers);d!==void 0&&a.set(`Last-Event-ID`,d);try{let t={redirect:`follow`,...u,body:u.serializedBody,headers:a,signal:m},o=new Request(l,t);e&&(o=await e(l,t));let s=await(u.fetch??globalThis.fetch)(o);if(!s.ok)throw Error(`SSE failed: ${s.status} ${s.statusText}`);if(!s.body)throw Error(`No body in SSE response`);let f=s.body.pipeThrough(new TextDecoderStream).getReader(),p=``,h=()=>{try{f.cancel()}catch{}};m.addEventListener(`abort`,h);try{for(;;){let{done:e,value:t}=await f.read();if(e)break;p+=t,p=p.replace(/\r\n/g,` -`).replace(/\r/g,` -`);let a=p.split(` - -`);p=a.pop()??``;for(let e of a){let t=e.split(` -`),a=[],o;for(let e of t)if(e.startsWith(`data:`))a.push(e.replace(/^data:\s*/,``));else if(e.startsWith(`event:`))o=e.replace(/^event:\s*/,``);else if(e.startsWith(`id:`))d=e.replace(/^id:\s*/,``);else if(e.startsWith(`retry:`)){let t=Number.parseInt(e.replace(/^retry:\s*/,``),10);Number.isNaN(t)||(c=t)}let s,l=!1;if(a.length){let e=a.join(` -`);try{s=JSON.parse(e),l=!0}catch{s=e}}l&&(i&&await i(s),r&&(s=await r(s))),n?.({data:s,event:o,id:d,retry:c}),a.length&&(yield s)}}}finally{m.removeEventListener(`abort`,h),f.releaseLock()}break}catch(e){if(t?.(e),o!==void 0&&p>=o)break;await f(Math.min(c*2**(p-1),s??3e4))}}}()}},n=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},r=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},i=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},a=({allowReserved:e,explode:t,name:i,style:a,value:s})=>{if(!t){let t=(e?s:s.map(e=>encodeURIComponent(e))).join(r(a));switch(a){case`label`:return`.${t}`;case`matrix`:return`;${i}=${t}`;case`simple`:return t;default:return`${i}=${t}`}}let c=n(a),l=s.map(t=>a===`label`||a===`simple`?e?t:encodeURIComponent(t):o({allowReserved:e,name:i,value:t})).join(c);return a===`label`||a===`matrix`?c+l:l},o=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},s=({allowReserved:e,explode:t,name:n,style:r,value:a,valueOnly:s})=>{if(a instanceof Date)return s?a.toISOString():`${n}=${a.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(a).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let i=t.join(`,`);switch(r){case`form`:return`${n}=${i}`;case`label`:return`.${i}`;case`matrix`:return`;${n}=${i}`;default:return i}}let c=i(r),l=Object.entries(a).map(([t,i])=>o({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(c);return r===`label`||r===`matrix`?c+l:l},c=/\{[^{}]+\}/g,l=({path:e,url:t})=>{let n=t,r=t.match(c);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),c=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),c=`label`):i.startsWith(`;`)&&(i=i.substring(1),c=`matrix`);let l=e[i];if(l==null)continue;if(Array.isArray(l)){n=n.replace(t,a({explode:r,name:i,style:c,value:l}));continue}if(typeof l==`object`){n=n.replace(t,s({explode:r,name:i,style:c,value:l,valueOnly:!0}));continue}if(c===`matrix`){n=n.replace(t,`;${o({name:i,value:l})}`);continue}let u=encodeURIComponent(c===`label`?`.${l}`:l);n=n.replace(t,u)}return n},u=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=l({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o};function d(e){let t=e.body!==void 0;if(t&&e.bodySerializer)return`serializedBody`in e?e.serializedBody!==void 0&&e.serializedBody!==``?e.serializedBody:null:e.body===``?null:e.body;if(t)return e.body}const f=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},p={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)},m=({parameters:e={},...t}={})=>n=>{let r=[];if(n&&typeof n==`object`)for(let i in n){let c=n[i];if(c==null)continue;let l=e[i]||t;if(Array.isArray(c)){let e=a({allowReserved:l.allowReserved,explode:!0,name:i,style:`form`,value:c,...l.array});e&&r.push(e)}else if(typeof c==`object`){let e=s({allowReserved:l.allowReserved,explode:!0,name:i,style:`deepObject`,value:c,...l.object});e&&r.push(e)}else{let e=o({allowReserved:l.allowReserved,name:i,value:c});e&&r.push(e)}}return r.join(`&`)},h=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},g=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1,_=async({security:e,...t})=>{for(let n of e){if(g(t,n.name))continue;let e=await f(n,t.auth);if(!e)continue;let r=n.name??`Authorization`;switch(n.in){case`query`:t.query||={},t.query[r]=e;break;case`cookie`:t.headers.append(`Cookie`,`${r}=${e}`);break;default:t.headers.set(r,e);break}}},v=e=>u({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:m(e.querySerializer),url:e.url}),y=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=x(e.headers,t.headers),n},b=e=>{let t=[];return e.forEach((e,n)=>{t.push([n,e])}),t},x=(...e)=>{let t=new Headers;for(let n of e){if(!n)continue;let e=n instanceof Headers?b(n):Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t};var S=class{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e==`number`?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let n=this.getInterceptorIndex(e);return this.fns[n]?(this.fns[n]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}};const C=()=>({error:new S,request:new S,response:new S}),w=m({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),ee={"Content-Type":`application/json`},T=(e={})=>({...p,headers:ee,parseAs:`auto`,querySerializer:w,...e}),E=(e={})=>{let n=y(T(),e),r=()=>({...n}),i=e=>(n=y(n,e),r()),a=C(),o=async e=>{let t={...n,...e,fetch:e.fetch??n.fetch??globalThis.fetch,headers:x(n.headers,e.headers),serializedBody:void 0};return t.security&&await _({...t,security:t.security}),t.requestValidator&&await t.requestValidator(t),t.body!==void 0&&t.bodySerializer&&(t.serializedBody=t.bodySerializer(t.body)),(t.body===void 0||t.serializedBody===``)&&t.headers.delete(`Content-Type`),{opts:t,url:v(t)}},s=async e=>{let{opts:t,url:n}=await o(e),r={redirect:`follow`,...t,body:d(t)},i=new Request(n,r);for(let e of a.request.fns)e&&(i=await e(i,t));let s=t.fetch,c;try{c=await s(i)}catch(e){let n=e;for(let r of a.error.fns)r&&(n=await r(e,void 0,i,t));if(n||={},t.throwOnError)throw n;return t.responseStyle===`data`?void 0:{error:n,request:i,response:void 0}}for(let e of a.response.fns)e&&(c=await e(c,i,t));let l={request:i,response:c};if(c.ok){let e=(t.parseAs===`auto`?h(c.headers.get(`Content-Type`)):t.parseAs)??`json`;if(c.status===204||c.headers.get(`Content-Length`)===`0`){let n;switch(e){case`arrayBuffer`:case`blob`:case`text`:n=await c[e]();break;case`formData`:n=new FormData;break;case`stream`:n=c.body;break;default:n={};break}return t.responseStyle===`data`?n:{data:n,...l}}let n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`text`:n=await c[e]();break;case`json`:{let e=await c.text();n=e?JSON.parse(e):{};break}case`stream`:return t.responseStyle===`data`?c.body:{data:c.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await c.text(),f;try{f=JSON.parse(u)}catch{}let p=f??u,m=p;for(let e of a.error.fns)e&&(m=await e(p,c,i,t));if(m||={},t.throwOnError)throw m;return t.responseStyle===`data`?void 0:{error:m,...l}},c=e=>t=>s({...t,method:e}),l=e=>async n=>{let{opts:r,url:i}=await o(n);return t({...r,body:r.body,headers:r.headers,method:e,onRequest:async(e,t)=>{let n=new Request(e,t);for(let e of a.request.fns)e&&(n=await e(n,r));return n},serializedBody:d(r),url:i})};return{buildUrl:v,connect:c(`CONNECT`),delete:c(`DELETE`),get:c(`GET`),getConfig:r,head:c(`HEAD`),interceptors:a,options:c(`OPTIONS`),patch:c(`PATCH`),post:c(`POST`),put:c(`PUT`),request:s,setConfig:i,sse:{connect:l(`CONNECT`),delete:l(`DELETE`),get:l(`GET`),head:l(`HEAD`),options:l(`OPTIONS`),patch:l(`PATCH`),post:l(`POST`),put:l(`PUT`),trace:l(`TRACE`)},trace:c(`TRACE`)}},D=Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`}),O=(e,t)=>{t||=new Map;for(let n of e)`in`in n?n.key&&t.set(n.key,{in:n.in,map:n.map}):`key`in n?t.set(n.key,{map:n.map}):n.args&&O(n.args,t);return t},k=e=>{for(let[t,n]of Object.entries(e))n&&typeof n==`object`&&!Object.keys(n).length&&delete e[t]},A=(e,t)=>{let n={body:{},headers:{},path:{},query:{}},r=O(t),i;for(let[a,o]of e.entries())if(t[a]&&(i=t[a]),i)if(`in`in i)if(i.key){let e=r.get(i.key),t=e.map||i.key;e.in&&(n[e.in][t]=o)}else n.body=o;else for(let[e,t]of Object.entries(o??{})){let a=r.get(e);if(a)if(a.in){let r=a.map||e;n[a.in][r]=t}else n[a.map]=t;else{let r=D.find(([t])=>e.startsWith(t));if(r){let[i,a]=r;n[a][e.slice(i.length)]=t}else if(`allowExtra`in i&&i.allowExtra){for(let[r,a]of Object.entries(i.allowExtra))if(a){n[r][e]=t;break}}}}return k(n),n},j=E(T({baseUrl:`http://localhost:4096`}));var M=class{client;constructor(e){this.client=e?.client??j}},N=class{defaultKey=`default`;instances=new Map;get(e){let t=this.instances.get(e??this.defaultKey);if(!t)throw Error(`No SDK client found. Create one with "new OpencodeClient()" to fix this error.`);return t}set(e,t){this.instances.set(t??this.defaultKey,e)}},P=class extends M{remove(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`}]}]);return(t?.client??this.client).delete({url:`/auth/{providerID}`,...t,...n})}set(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`},{key:`auth`,map:`body`}]}]);return(t?.client??this.client).put({url:`/auth/{providerID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},F=class extends M{log(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`service`},{in:`body`,key:`level`},{in:`body`,key:`message`},{in:`body`,key:`extra`}]}]);return(t?.client??this.client).post({url:`/log`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}agents(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/agent`,...t,...n})}skills(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/skill`,...t,...n})}},I=class extends M{get(e){return(e?.client??this.client).get({url:`/global/config`,...e})}update(e,t){let n=A([e],[{args:[{key:`config`,map:`body`}]}]);return(t?.client??this.client).patch({url:`/global/config`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},L=class extends M{health(e){return(e?.client??this.client).get({url:`/global/health`,...e})}event(e){return(e?.client??this.client).sse.get({url:`/global/event`,...e})}dispose(e){return(e?.client??this.client).post({url:`/global/dispose`,...e})}upgrade(e,t){let n=A([e],[{args:[{in:`body`,key:`target`}]}]);return(t?.client??this.client).post({url:`/global/upgrade`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_config;get config(){return this._config??=new I({client:this.client})}},R=class extends M{subscribe(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).sse.get({url:`/event`,...t,...n})}},z=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/config`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`config`,map:`body`}]}]);return(t?.client??this.client).patch({url:`/config`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}providers(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/config/providers`,...t,...n})}},B=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/console`,...t,...n})}listOrgs(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/console/orgs`,...t,...n})}switchOrg(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`accountID`},{in:`body`,key:`orgID`}]}]);return(t?.client??this.client).post({url:`/experimental/console/switch`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},V=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`roots`},{in:`query`,key:`start`},{in:`query`,key:`cursor`},{in:`query`,key:`search`},{in:`query`,key:`limit`},{in:`query`,key:`archived`}]}]);return(t?.client??this.client).get({url:`/experimental/session`,...t,...n})}},H=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/resource`,...t,...n})}},U=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/workspace/adapter`,...t,...n})}},W=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/workspace`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`id`},{in:`body`,key:`type`},{in:`body`,key:`branch`},{in:`body`,key:`extra`}]}]);return(t?.client??this.client).post({url:`/experimental/workspace`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/workspace/status`,...t,...n})}remove(e,t){let n=A([e],[{args:[{in:`path`,key:`id`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/experimental/workspace/{id}`,...t,...n})}warp(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`id`},{in:`body`,key:`sessionID`}]}]);return(t?.client??this.client).post({url:`/experimental/workspace/warp`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_adapter;get adapter(){return this._adapter??=new U({client:this.client})}},G=class extends M{_console;get console(){return this._console??=new B({client:this.client})}_session;get session(){return this._session??=new V({client:this.client})}_resource;get resource(){return this._resource??=new H({client:this.client})}_workspace;get workspace(){return this._workspace??=new W({client:this.client})}},K=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`provider`},{in:`query`,key:`model`}]}]);return(t?.client??this.client).get({url:`/experimental/tool`,...t,...n})}ids(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/tool/ids`,...t,...n})}},q=class extends M{remove(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`worktreeRemoveInput`,map:`body`}]}]);return(t?.client??this.client).delete({url:`/experimental/worktree`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/experimental/worktree`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`worktreeCreateInput`,map:`body`}]}]);return(t?.client??this.client).post({url:`/experimental/worktree`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}reset(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`worktreeResetInput`,map:`body`}]}]);return(t?.client??this.client).post({url:`/experimental/worktree/reset`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},J=class extends M{text(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`pattern`}]}]);return(t?.client??this.client).get({url:`/find`,...t,...n})}files(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`query`},{in:`query`,key:`dirs`},{in:`query`,key:`type`},{in:`query`,key:`limit`}]}]);return(t?.client??this.client).get({url:`/find/file`,...t,...n})}symbols(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`query`}]}]);return(t?.client??this.client).get({url:`/find/symbol`,...t,...n})}},te=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`path`}]}]);return(t?.client??this.client).get({url:`/file`,...t,...n})}read(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`path`}]}]);return(t?.client??this.client).get({url:`/file/content`,...t,...n})}status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/file/status`,...t,...n})}},Y=class extends M{dispose(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/instance/dispose`,...t,...n})}},X=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/path`,...t,...n})}},Z=class extends M{get(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/vcs`,...t,...n})}diff(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`mode`}]}]);return(t?.client??this.client).get({url:`/vcs/diff`,...t,...n})}},Q=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/command`,...t,...n})}},ne=class extends M{status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/lsp`,...t,...n})}},re=class extends M{status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/formatter`,...t,...n})}},ie=class extends M{remove(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/mcp/{name}/auth`,...t,...n})}start(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/auth`,...t,...n})}callback(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`code`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/auth/callback`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}authenticate(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/auth/authenticate`,...t,...n})}},ae=class extends M{status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/mcp`,...t,...n})}add(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`name`},{in:`body`,key:`config`}]}]);return(t?.client??this.client).post({url:`/mcp`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}connect(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/connect`,...t,...n})}disconnect(e,t){let n=A([e],[{args:[{in:`path`,key:`name`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/mcp/{name}/disconnect`,...t,...n})}_auth;get auth(){return this._auth??=new ie({client:this.client})}},oe=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/project`,...t,...n})}current(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/project/current`,...t,...n})}initGit(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/project/git/init`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`projectID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`name`},{in:`body`,key:`icon`},{in:`body`,key:`commands`}]}]);return(t?.client??this.client).patch({url:`/project/{projectID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},se=class extends M{shells(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty/shells`,...t,...n})}list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`command`},{in:`body`,key:`args`},{in:`body`,key:`cwd`},{in:`body`,key:`title`},{in:`body`,key:`env`}]}]);return(t?.client??this.client).post({url:`/pty`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}remove(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/pty/{ptyID}`,...t,...n})}get(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty/{ptyID}`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`title`},{in:`body`,key:`size`}]}]);return(t?.client??this.client).put({url:`/pty/{ptyID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}connectToken(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/pty/{ptyID}/connect-token`,...t,...n})}connect(e,t){let n=A([e],[{args:[{in:`path`,key:`ptyID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/pty/{ptyID}/connect`,...t,...n})}},ce=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/question`,...t,...n})}reply(e,t){let n=A([e],[{args:[{in:`path`,key:`requestID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`answers`}]}]);return(t?.client??this.client).post({url:`/question/{requestID}/reply`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}reject(e,t){let n=A([e],[{args:[{in:`path`,key:`requestID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/question/{requestID}/reject`,...t,...n})}},le=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/permission`,...t,...n})}reply(e,t){let n=A([e],[{args:[{in:`path`,key:`requestID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`reply`},{in:`body`,key:`message`}]}]);return(t?.client??this.client).post({url:`/permission/{requestID}/reply`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}respond(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`permissionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`response`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/permissions/{permissionID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},ue=class extends M{authorize(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`method`},{in:`body`,key:`inputs`}]}]);return(t?.client??this.client).post({url:`/provider/{providerID}/oauth/authorize`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}callback(e,t){let n=A([e],[{args:[{in:`path`,key:`providerID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`method`},{in:`body`,key:`code`}]}]);return(t?.client??this.client).post({url:`/provider/{providerID}/oauth/callback`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},de=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/provider`,...t,...n})}auth(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/provider/auth`,...t,...n})}_oauth;get oauth(){return this._oauth??=new ue({client:this.client})}},fe=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`scope`},{in:`query`,key:`path`},{in:`query`,key:`roots`},{in:`query`,key:`start`},{in:`query`,key:`search`},{in:`query`,key:`limit`}]}]);return(t?.client??this.client).get({url:`/session`,...t,...n})}create(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`parentID`},{in:`body`,key:`title`},{in:`body`,key:`agent`},{in:`body`,key:`model`},{in:`body`,key:`permission`},{in:`body`,key:`workspaceID`}]}]);return(t?.client??this.client).post({url:`/session`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}status(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/status`,...t,...n})}delete(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}`,...t,...n})}get(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`title`},{in:`body`,key:`permission`},{in:`body`,key:`time`}]}]);return(t?.client??this.client).patch({url:`/session/{sessionID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}children(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/children`,...t,...n})}todo(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/todo`,...t,...n})}diff(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`messageID`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/diff`,...t,...n})}messages(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`query`,key:`limit`},{in:`query`,key:`before`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/message`,...t,...n})}prompt(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`model`},{in:`body`,key:`agent`},{in:`body`,key:`noReply`},{in:`body`,key:`tools`},{in:`body`,key:`format`},{in:`body`,key:`system`},{in:`body`,key:`variant`},{in:`body`,key:`parts`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/message`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}deleteMessage(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}/message/{messageID}`,...t,...n})}message(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/session/{sessionID}/message/{messageID}`,...t,...n})}fork(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/fork`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}abort(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/abort`,...t,...n})}init(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`modelID`},{in:`body`,key:`providerID`},{in:`body`,key:`messageID`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/init`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}unshare(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}/share`,...t,...n})}share(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/share`,...t,...n})}summarize(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`providerID`},{in:`body`,key:`modelID`},{in:`body`,key:`auto`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/summarize`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}promptAsync(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`model`},{in:`body`,key:`agent`},{in:`body`,key:`noReply`},{in:`body`,key:`tools`},{in:`body`,key:`format`},{in:`body`,key:`system`},{in:`body`,key:`variant`},{in:`body`,key:`parts`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/prompt_async`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}command(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{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(t?.client??this.client).post({url:`/session/{sessionID}/command`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}shell(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`agent`},{in:`body`,key:`model`},{in:`body`,key:`command`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/shell`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}revert(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`messageID`},{in:`body`,key:`partID`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/revert`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}unrevert(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/session/{sessionID}/unrevert`,...t,...n})}},pe=class extends M{delete(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`path`,key:`partID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).delete({url:`/session/{sessionID}/message/{messageID}/part/{partID}`,...t,...n})}update(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`path`,key:`messageID`},{in:`path`,key:`partID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`part`,map:`body`}]}]);return(t?.client??this.client).patch({url:`/session/{sessionID}/message/{messageID}/part/{partID}`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},$=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`body`,map:`body`}]}]);return(t?.client??this.client).post({url:`/sync/history`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},me=class extends M{start(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/sync/start`,...t,...n})}replay(e,t){let n=A([e],[{args:[{in:`query`,key:`query_directory`,map:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`body_directory`,map:`directory`},{in:`body`,key:`events`}]}]);return(t?.client??this.client).post({url:`/sync/replay`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}steal(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`sessionID`}]}]);return(t?.client??this.client).post({url:`/sync/steal`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_history;get history(){return this._history??=new $({client:this.client})}},he=class extends M{list(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/api/session`,...t,...n})}prompt(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`prompt`},{in:`body`,key:`delivery`}]}]);return(t?.client??this.client).post({url:`/api/session/{sessionID}/prompt`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}compact(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/api/session/{sessionID}/compact`,...t,...n})}wait(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/api/session/{sessionID}/wait`,...t,...n})}context(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/api/session/{sessionID}/context`,...t,...n})}messages(e,t){let n=A([e],[{args:[{in:`path`,key:`sessionID`},{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/api/session/{sessionID}/message`,...t,...n})}},ge=class extends M{_session;get session(){return this._session??=new he({client:this.client})}},_e=class extends M{next(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).get({url:`/tui/control/next`,...t,...n})}response(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`body`,map:`body`}]}]);return(t?.client??this.client).post({url:`/tui/control/response`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}},ve=class extends M{appendPrompt(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`text`}]}]);return(t?.client??this.client).post({url:`/tui/append-prompt`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}openHelp(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-help`,...t,...n})}openSessions(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-sessions`,...t,...n})}openThemes(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-themes`,...t,...n})}openModels(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/open-models`,...t,...n})}submitPrompt(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/submit-prompt`,...t,...n})}clearPrompt(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`}]}]);return(t?.client??this.client).post({url:`/tui/clear-prompt`,...t,...n})}executeCommand(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`command`}]}]);return(t?.client??this.client).post({url:`/tui/execute-command`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}showToast(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`title`},{in:`body`,key:`message`},{in:`body`,key:`variant`},{in:`body`,key:`duration`}]}]);return(t?.client??this.client).post({url:`/tui/show-toast`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}publish(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{key:`body`,map:`body`}]}]);return(t?.client??this.client).post({url:`/tui/publish`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}selectSession(e,t){let n=A([e],[{args:[{in:`query`,key:`directory`},{in:`query`,key:`workspace`},{in:`body`,key:`sessionID`}]}]);return(t?.client??this.client).post({url:`/tui/select-session`,...t,...n,headers:{"Content-Type":`application/json`,...t?.headers,...n.headers}})}_control;get control(){return this._control??=new _e({client:this.client})}},ye=class e extends M{static __registry=new N;constructor(t){super(t),e.__registry.set(this,t?.key)}_auth;get auth(){return this._auth??=new P({client:this.client})}_app;get app(){return this._app??=new F({client:this.client})}_global;get global(){return this._global??=new L({client:this.client})}_event;get event(){return this._event??=new R({client:this.client})}_config;get config(){return this._config??=new z({client:this.client})}_experimental;get experimental(){return this._experimental??=new G({client:this.client})}_tool;get tool(){return this._tool??=new K({client:this.client})}_worktree;get worktree(){return this._worktree??=new q({client:this.client})}_find;get find(){return this._find??=new J({client:this.client})}_file;get file(){return this._file??=new te({client:this.client})}_instance;get instance(){return this._instance??=new Y({client:this.client})}_path;get path(){return this._path??=new X({client:this.client})}_vcs;get vcs(){return this._vcs??=new Z({client:this.client})}_command;get command(){return this._command??=new Q({client:this.client})}_lsp;get lsp(){return this._lsp??=new ne({client:this.client})}_formatter;get formatter(){return this._formatter??=new re({client:this.client})}_mcp;get mcp(){return this._mcp??=new ae({client:this.client})}_project;get project(){return this._project??=new oe({client:this.client})}_pty;get pty(){return this._pty??=new se({client:this.client})}_question;get question(){return this._question??=new ce({client:this.client})}_permission;get permission(){return this._permission??=new le({client:this.client})}_provider;get provider(){return this._provider??=new de({client:this.client})}_session;get session(){return this._session??=new fe({client:this.client})}_part;get part(){return this._part??=new pe({client:this.client})}_sync;get sync(){return this._sync??=new me({client:this.client})}_v2;get v2(){return this._v2??=new ge({client:this.client})}_tui;get tui(){return this._tui??=new ve({client:this.client})}};function be(e,t,n){if(e)return t&&(e===t||n&&e===n(t))?t:e}function xe(e,t){if(e.method!==`GET`&&e.method!==`HEAD`)return e;let n=new URL(e.url),r=!1;for(let[i,a]of[[`x-opencode-directory`,`directory`],[`x-opencode-workspace`,`workspace`]]){let o=be(e.headers.get(i),a===`directory`?t.directory:t.workspace,a===`directory`?encodeURIComponent:void 0);o&&(n.searchParams.has(a)||n.searchParams.set(a,o),r=!0)}if(!r)return e;let i=new Request(n,e);return i.headers.delete(`x-opencode-directory`),i.headers.delete(`x-opencode-workspace`),i}function Se(e){if(!e?.fetch){let t=e=>(e.timeout=!1,fetch(e));e={...e,fetch:t}}e?.directory&&(e.headers={...e.headers,"x-opencode-directory":encodeURIComponent(e.directory)}),e?.experimental_workspaceID&&(e.headers={...e.headers,"x-opencode-workspace":e.experimental_workspaceID});let t=E(e);return t.interceptors.request.use(t=>xe(t,{directory:e?.directory,workspace:e?.experimental_workspaceID})),t.interceptors.response.use(e=>{if(e.headers.get(`content-type`)===`text/html`)throw Error(`Request is not supported by this version of OpenCode Server (Server responded with text/html)`);return e}),t.interceptors.error.use((e,t,n)=>{if(!(e==null||e===``||typeof e==`object`&&!(e instanceof Error)&&Object.keys(e).length===0))return e;let r=n?.method??`?`,i=n?.url??`?`;if(!t)return Error(`opencode server ${r} ${i}: network error (no response)`);let a=t.status,o=t.statusText?` `+t.statusText:``;return Error(`opencode server ${r} ${i} → ${a}${o}: (empty response body)`)}),new ye({client:t})}e();export{Se as createOpencodeClient}; \ No newline at end of file diff --git a/package.json b/package.json index cea11247..c5def9e6 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@bfra.me/es": "0.1.0", "@fro-bot/runtime": "workspace:*", "@octokit/auth-app": "8.2.0", - "@opencode-ai/sdk": "1.14.39" + "@opencode-ai/sdk": "1.14.41" }, "devDependencies": { "@bfra.me/eslint-config": "0.51.0", diff --git a/packages/runtime/package.json b/packages/runtime/package.json index d341c5aa..2aa513c3 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -21,6 +21,6 @@ }, "dependencies": { "@bfra.me/es": "0.1.0", - "@opencode-ai/sdk": "1.14.39" + "@opencode-ai/sdk": "1.14.41" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6033e68f..85db49cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: 8.2.0 version: 8.2.0 '@opencode-ai/sdk': - specifier: 1.14.39 - version: 1.14.39 + specifier: 1.14.41 + version: 1.14.41 devDependencies: '@bfra.me/eslint-config': specifier: 0.51.0 @@ -127,8 +127,8 @@ importers: specifier: 0.1.0 version: 0.1.0 '@opencode-ai/sdk': - specifier: 1.14.39 - version: 1.14.39 + specifier: 1.14.41 + version: 1.14.41 packages: @@ -907,8 +907,8 @@ packages: '@octokit/webhooks-types@7.6.1': resolution: {integrity: sha512-S8u2cJzklBC0FgTwWVLaM8tMrDuDMVE4xiTK4EYXM9GntyvrdbSoxqDQa+Fh57CCNApyIpyeqPhhFEmHPfrXgw==} - '@opencode-ai/sdk@1.14.39': - resolution: {integrity: sha512-hguOA5huhys7zwCR3ESbSHyQNuJBNtfrxUxYZF/s/6trRW+imqGmDtC/RsOSNuk7GE06ZnvOTwb4T2WhXYIBxw==} + '@opencode-ai/sdk@1.14.41': + resolution: {integrity: sha512-RYb2dCUv0TWIvBNnnO6ANbAPYri6rKuWizSoVFw/Pw+SCDj9ASHM5gAZ+jkskp8gYMfLLHe/Fpkun/9mr8m0IQ==} '@ota-meshi/ast-token-store@0.3.0': resolution: {integrity: sha512-XRO0zi2NIUKq2lUk3T1ecFSld1fMWRKE6naRFGkgkdeosx7IslyUKNv5Dcb5PJTja9tHJoFu0v/7yEpAkrkrTg==} @@ -5934,7 +5934,7 @@ snapshots: '@octokit/webhooks-types@7.6.1': {} - '@opencode-ai/sdk@1.14.39': + '@opencode-ai/sdk@1.14.41': dependencies: cross-spawn: 7.0.6