alchemylab-opencode 1.0.24 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-SILEE7UA.js → chunk-5P5WLADX.js} +1 -1
- package/dist/chunk-A7EXZZPC.js +12 -0
- package/dist/chunk-G752V4OP.js +2187 -0
- package/dist/{chunk-VREN4JVV.js → chunk-GBXMNWYD.js} +3 -3
- package/dist/chunk-IR6PDN4W.js +13 -0
- package/dist/{session-FWLEEJPX.js → registry-ISXIFNPG.js} +1 -1
- package/dist/{run-VQUBMRCD.js → run-AUCA7EKA.js} +2 -2
- package/dist/{run-service-IUIOP7ZW.js → run-service-MT3LOWLS.js} +1 -1
- package/dist/run.js +1 -1
- package/dist/serve.js +1 -1
- package/dist/server-PIYRZLBG.js +12 -0
- package/dist/{mcp-3MLN7453.js → session-ACBIJ2VE.js} +1 -1
- package/dist/{registry-HM2N65IE.js → share-next-MPGA7EO4.js} +1 -1
- package/dist/{server-TLPVN3ZL.js → worktree-E4DGSBLJ.js} +1 -1
- package/package.json +5 -5
- package/dist/chunk-22MFGOA6.js +0 -75
- package/dist/chunk-GCMAFSDE.js +0 -12
- package/dist/chunk-MN5GIJ5E.js +0 -2260
- package/dist/chunk-N7PLTD3P.js +0 -13
- package/dist/share-next-PRCWHS3Z.js +0 -12
- package/dist/worktree-5G5VWN6L.js +0 -12
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Built by esbuild from opencode-server source
|
|
2
|
+
if (typeof globalThis.Bun === 'undefined') {
|
|
3
|
+
globalThis.Bun = {
|
|
4
|
+
version: '0.0.0-node-compat',
|
|
5
|
+
stdin: { async text() { const chunks = []; for await (const c of process.stdin) chunks.push(c); return Buffer.concat(chunks).toString(); } },
|
|
6
|
+
which(cmd) { try { return require('child_process').execFileSync('which', [cmd], { encoding: 'utf8' }).trim(); } catch { return null; } },
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
|
+
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
|
+
|
|
12
|
+
import{a as Ot}from"./chunk-LTCXIXYM.js";import{a as rt,c as Te,d as Oe,e as te}from"./chunk-M4CB72HE.js";import{a as e,c as zt,d as $}from"./chunk-MBZTOEAD.js";import{Effect as wr,Layer as vr,ManagedRuntime as Lr}from"effect";import{EventEmitter as Xt}from"events";var $e=new Xt;var ot=new Set;function _t(t){return ot.add(t),()=>{ot.delete(t)}}e(_t,"registerDisposer");async function nt(t){await Promise.allSettled([...ot].map(r=>r(t)))}e(nt,"disposeInstance");function be(t){return t()}e(be,"iife");import{AsyncLocalStorage as Kt}from"async_hooks";var re;(l=>{class t extends Error{constructor(g){super(`No context found for ${g}`);this.name=g}name;static{e(this,"NotFound")}}l.NotFound=t;function r(u){let _=new Kt;return{use(){let g=_.getStore();if(!g)throw new t(u);return g},provide(g,T){return _.run(g,T)}}}l.create=r,e(r,"create")})(re||={});import X from"zod";var A={};zt(A,{Database:()=>_e,NotFoundError:()=>rr});$(A,wo);import{migrate as gt}from"drizzle-orm/node-sqlite/migrator";import*as wo from"drizzle-orm";function He(t){let r,l=!1,u=e(()=>{if(l)return r;try{return r=t(),l=!0,r}catch(_){throw _}},"result");return u.reset=()=>{l=!1,r=void 0},u}e(He,"lazy");import ze from"zod";var Xe=class t extends Error{static{e(this,"NamedError")}static create(r,l){let u=ze.object({name:ze.literal(r),data:l}).meta({ref:r}),_=class extends t{constructor(T,J){super(r,J);this.data=T;this.name=r}data;static{e(this,"result")}static Schema=u;name=r;static isInstance(T){return typeof T=="object"&&"name"in T&&T.name===r}schema(){return u}toObject(){return{name:r,data:this.data}}};return Object.defineProperty(_,"name",{value:r}),_}static Unknown=t.create("UnknownError",ze.object({message:ze.string()}))};import Ct from"zod";import ge from"path";import{readFileSync as Qt,readdirSync as er,existsSync as tr}from"fs";import{Config as De}from"effect";function b(t){let r=process.env[t]?.toLowerCase();return r==="true"||r==="1"}e(b,"truthy");function Wt(t){let r=process.env[t]?.toLowerCase();return r==="false"||r==="0"}e(Wt,"falsy");var H;(p=>{p.OPENCODE_AUTO_SHARE=b("OPENCODE_AUTO_SHARE"),p.OPENCODE_AUTO_HEAP_SNAPSHOT=b("OPENCODE_AUTO_HEAP_SNAPSHOT"),p.OPENCODE_GIT_BASH_PATH=process.env.OPENCODE_GIT_BASH_PATH,p.OPENCODE_CONFIG=process.env.OPENCODE_CONFIG,p.OPENCODE_CONFIG_CONTENT=process.env.OPENCODE_CONFIG_CONTENT,p.OPENCODE_DISABLE_AUTOUPDATE=b("OPENCODE_DISABLE_AUTOUPDATE"),p.OPENCODE_ALWAYS_NOTIFY_UPDATE=b("OPENCODE_ALWAYS_NOTIFY_UPDATE"),p.OPENCODE_DISABLE_PRUNE=b("OPENCODE_DISABLE_PRUNE"),p.OPENCODE_DISABLE_TERMINAL_TITLE=b("OPENCODE_DISABLE_TERMINAL_TITLE"),p.OPENCODE_SHOW_TTFD=b("OPENCODE_SHOW_TTFD"),p.OPENCODE_PERMISSION=process.env.OPENCODE_PERMISSION,p.OPENCODE_DISABLE_DEFAULT_PLUGINS=b("OPENCODE_DISABLE_DEFAULT_PLUGINS"),p.OPENCODE_DISABLE_LSP_DOWNLOAD=b("OPENCODE_DISABLE_LSP_DOWNLOAD"),p.OPENCODE_ENABLE_EXPERIMENTAL_MODELS=b("OPENCODE_ENABLE_EXPERIMENTAL_MODELS"),p.OPENCODE_DISABLE_AUTOCOMPACT=b("OPENCODE_DISABLE_AUTOCOMPACT"),p.OPENCODE_DISABLE_MODELS_FETCH=b("OPENCODE_DISABLE_MODELS_FETCH"),p.OPENCODE_DISABLE_MOUSE=b("OPENCODE_DISABLE_MOUSE"),p.OPENCODE_DISABLE_CLAUDE_CODE=b("OPENCODE_DISABLE_CLAUDE_CODE"),p.OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=p.OPENCODE_DISABLE_CLAUDE_CODE||b("OPENCODE_DISABLE_CLAUDE_CODE_PROMPT"),p.OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=p.OPENCODE_DISABLE_CLAUDE_CODE||b("OPENCODE_DISABLE_CLAUDE_CODE_SKILLS"),p.OPENCODE_DISABLE_EXTERNAL_SKILLS=p.OPENCODE_DISABLE_CLAUDE_CODE_SKILLS||b("OPENCODE_DISABLE_EXTERNAL_SKILLS"),p.OPENCODE_FAKE_VCS=process.env.OPENCODE_FAKE_VCS,p.OPENCODE_SERVER_PASSWORD=process.env.OPENCODE_SERVER_PASSWORD,p.OPENCODE_SERVER_USERNAME=process.env.OPENCODE_SERVER_USERNAME,p.OPENCODE_ENABLE_QUESTION_TOOL=b("OPENCODE_ENABLE_QUESTION_TOOL"),p.OPENCODE_EXPERIMENTAL=b("OPENCODE_EXPERIMENTAL"),p.OPENCODE_EXPERIMENTAL_FILEWATCHER=De.boolean("OPENCODE_EXPERIMENTAL_FILEWATCHER").pipe(De.withDefault(!1)),p.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER=De.boolean("OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER").pipe(De.withDefault(!1)),p.OPENCODE_EXPERIMENTAL_ICON_DISCOVERY=p.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_ICON_DISCOVERY");let Ae=process.env.OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT;p.OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT=Ae===void 0?process.platform==="win32":b("OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"),p.OPENCODE_ENABLE_EXA=b("OPENCODE_ENABLE_EXA")||p.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_EXA"),p.OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS=Ge("OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS"),p.OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX=Ge("OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX"),p.OPENCODE_EXPERIMENTAL_OXFMT=p.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_OXFMT"),p.OPENCODE_EXPERIMENTAL_LSP_TY=b("OPENCODE_EXPERIMENTAL_LSP_TY"),p.OPENCODE_EXPERIMENTAL_LSP_TOOL=p.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_LSP_TOOL"),p.OPENCODE_DISABLE_FILETIME_CHECK=De.boolean("OPENCODE_DISABLE_FILETIME_CHECK").pipe(De.withDefault(!1)),p.OPENCODE_EXPERIMENTAL_PLAN_MODE=p.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_PLAN_MODE"),p.OPENCODE_EXPERIMENTAL_WORKSPACES=p.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_WORKSPACES"),p.OPENCODE_EXPERIMENTAL_MARKDOWN=!Wt("OPENCODE_EXPERIMENTAL_MARKDOWN"),p.OPENCODE_MODELS_URL=process.env.OPENCODE_MODELS_URL,p.OPENCODE_MODELS_PATH=process.env.OPENCODE_MODELS_PATH,p.OPENCODE_DISABLE_EMBEDDED_WEB_UI=b("OPENCODE_DISABLE_EMBEDDED_WEB_UI"),p.OPENCODE_DB=process.env.OPENCODE_DB,p.OPENCODE_DISABLE_CHANNEL_DB=b("OPENCODE_DISABLE_CHANNEL_DB"),p.OPENCODE_SKIP_MIGRATIONS=b("OPENCODE_SKIP_MIGRATIONS"),p.OPENCODE_STRICT_CONFIG_DEPS=b("OPENCODE_STRICT_CONFIG_DEPS");function Ge(Ht){let Pt=process.env[Ht];if(!Pt)return;let tt=Number(Pt);return Number.isInteger(tt)&&tt>0?tt:void 0}e(Ge,"number")})(H||={});Object.defineProperty(H,"OPENCODE_DISABLE_PROJECT_CONFIG",{get(){return b("OPENCODE_DISABLE_PROJECT_CONFIG")},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_TUI_CONFIG",{get(){return process.env.OPENCODE_TUI_CONFIG},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_CONFIG_DIR",{get(){return process.env.OPENCODE_CONFIG_DIR},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_PURE",{get(){return b("OPENCODE_PURE")},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_PLUGIN_META_FILE",{get(){return process.env.OPENCODE_PLUGIN_META_FILE},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_CLIENT",{get(){return process.env.OPENCODE_CLIENT??"cli"},enumerable:!0,configurable:!1});Object.defineProperty(H,"ALCHEMYLAB",{get(){return b("ALCHEMYLAB")},enumerable:!0,configurable:!1});var Qr=typeof OPENCODE_VERSION=="string"?OPENCODE_VERSION:"local",it=typeof OPENCODE_CHANNEL=="string"?OPENCODE_CHANNEL:"local";import{Effect as Z,Fiber as Vt,ScopedCache as ve,ServiceMap as Yt}from"effect";import{ServiceMap as Jt}from"effect";var we=Jt.Reference("~opencode/InstanceRef",{defaultValue:e(()=>{},"defaultValue")});var St="~opencode/InstanceState",Ke;(N=>(N.bind=e(f=>{try{return Q.bind(f)}catch(S){if(!(S instanceof re.NotFound))throw S}let s=Vt.getCurrent(),y=s?Yt.getReferenceUnsafe(s.services,we):void 0;return y?((...S)=>Q.restore(y,()=>f(...S))):f},"bind"),N.context=Z.gen(function*(){return(yield*we)??Q.current}),N.directory=Z.map(N.context,f=>f.directory),N.make=e(f=>Z.gen(function*(){let s=yield*ve.make({capacity:Number.POSITIVE_INFINITY,lookup:e(()=>Z.gen(function*(){return yield*f(yield*N.context)}),"lookup")}),y=_t(S=>Z.runPromise(ve.invalidate(s,S)));return yield*Z.addFinalizer(()=>Z.sync(y)),{[St]:St,cache:s}}),"make"),N.get=e(f=>Z.gen(function*(){return yield*ve.get(f.cache,yield*N.directory)}),"get"),N.use=e((f,s)=>Z.map((0,N.get)(f),s),"use"),N.useEffect=e((f,s)=>Z.flatMap((0,N.get)(f),s),"useEffect"),N.has=e(f=>Z.gen(function*(){return yield*ve.has(f.cache,yield*N.directory)}),"has"),N.invalidate=e(f=>Z.gen(function*(){return yield*ve.invalidate(f.cache,yield*N.directory)}),"invalidate"),N.withALS=e(f=>Z.map(N.context,s=>Q.restore(s,f)),"withALS")))(Ke||={});import{DatabaseSync as qt}from"node:sqlite";import{drizzle as Zt}from"drizzle-orm/node-sqlite";function Dt(t){let r=new qt(t);return Zt({client:r})}e(Dt,"init");var rr=Xe.create("NotFoundError",Ct.object({message:Ct.string()})),st=te.create({service:"db"}),_e;(N=>{function t(){if(["latest","beta"].includes(it)||H.OPENCODE_DISABLE_CHANNEL_DB)return ge.join(Oe.Path.data,"opencode.db");let f=it.replace(/[^a-zA-Z0-9._-]/g,"-");return ge.join(Oe.Path.data,`opencode-${f}.db`)}N.getChannelPath=t,e(t,"getChannelPath"),N.Path=be(()=>H.OPENCODE_DB?H.OPENCODE_DB===":memory:"||ge.isAbsolute(H.OPENCODE_DB)?H.OPENCODE_DB:ge.join(Oe.Path.data,H.OPENCODE_DB):t());function l(f){let s=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/.exec(f);return s?Date.UTC(Number(s[1]),Number(s[2])-1,Number(s[3]),Number(s[4]),Number(s[5]),Number(s[6])):0}e(l,"time");function u(f){return er(f,{withFileTypes:!0}).filter(S=>S.isDirectory()).map(S=>S.name).map(S=>{let z=ge.join(f,S,"migration.sql");if(tr(z))return{sql:Qt(z,"utf-8"),timestamp:l(S),name:S}}).filter(Boolean).sort((S,z)=>S.timestamp-z.timestamp)}e(u,"migrations"),N.Client=He(()=>{st.info("opening database",{path:N.Path});let f=Dt(N.Path);f.run("PRAGMA journal_mode = WAL"),f.run("PRAGMA synchronous = NORMAL"),f.run("PRAGMA busy_timeout = 5000"),f.run("PRAGMA cache_size = -64000"),f.run("PRAGMA foreign_keys = ON"),f.run("PRAGMA wal_checkpoint(PASSIVE)");let s=ge.join(import.meta.dirname,"../packages/opencode/migration");if(typeof OPENCODE_MIGRATIONS<"u"){let y=OPENCODE_MIGRATIONS;if(y.length>0){if(st.info("applying migrations",{count:y.length,mode:"bundled"}),H.OPENCODE_SKIP_MIGRATIONS)for(let S of y)S.sql="select 1;";gt(f,y)}}else{let y=u(s);st.info("applying migrations",{count:y.length,mode:"dev"}),!H.OPENCODE_SKIP_MIGRATIONS&&y.length>0&>(f,{migrationsFolder:s})}return f});function g(){(0,N.Client)().$client.close(),N.Client.reset()}N.close=g,e(g,"close");let T=re.create("database");function J(f){try{return f(T.use().tx)}catch(s){if(s instanceof re.NotFound){let y=[],S=T.provide({effects:y,tx:(0,N.Client)()},()=>f((0,N.Client)()));for(let z of y)z();return S}throw s}}N.use=J,e(J,"use");function B(f){let s=Ke.bind(f);try{T.use().effects.push(s)}catch{s()}}N.effect=B,e(B,"effect");function K(f,s){try{return f(T.use().tx)}catch(y){if(y instanceof re.NotFound){let S=[],z=Ke.bind(ie=>T.provide({tx:ie,effects:S},()=>f(ie))),Pe=(0,N.Client)().transaction(z,{behavior:s?.behavior});for(let ie of S)ie();return Pe}throw y}}N.transaction=K,e(K,"transaction")})(_e||={});import{sqliteTable as or,text as me,integer as nr}from"drizzle-orm/sqlite-core";import{integer as Nt}from"drizzle-orm/sqlite-core";var ue={time_created:Nt().notNull().$default(()=>Date.now()),time_updated:Nt().notNull().$onUpdate(()=>Date.now())};var w=or("project",{id:me().$type().primaryKey(),worktree:me().notNull(),vcs:me(),name:me(),icon_url:me(),icon_color:me(),...ue,time_initialized:nr(),sandboxes:me({mode:"json"}).notNull().$type(),commands:me({mode:"json"}).$type()});import{sqliteTable as Le,text as R,integer as Ce,index as Se,primaryKey as ir}from"drizzle-orm/sqlite-core";var Ne=Le("session",{id:R().$type().primaryKey(),project_id:R().$type().notNull().references(()=>w.id,{onDelete:"cascade"}),workspace_id:R().$type(),parent_id:R().$type(),slug:R().notNull(),directory:R().notNull(),title:R().notNull(),version:R().notNull(),share_url:R(),summary_additions:Ce(),summary_deletions:Ce(),summary_files:Ce(),summary_diffs:R({mode:"json"}).$type(),revert:R({mode:"json"}).$type(),permission:R({mode:"json"}).$type(),...ue,metadata:R({mode:"json"}).$type(),time_compacting:Ce(),time_archived:Ce()},t=>[Se("session_project_idx").on(t.project_id),Se("session_workspace_idx").on(t.workspace_id),Se("session_parent_idx").on(t.parent_id)]),sr=Le("message",{id:R().$type().primaryKey(),session_id:R().$type().notNull().references(()=>Ne.id,{onDelete:"cascade"}),...ue,data:R({mode:"json"}).notNull().$type()},t=>[Se("message_session_time_created_id_idx").on(t.session_id,t.time_created,t.id)]),Go=Le("part",{id:R().$type().primaryKey(),message_id:R().$type().notNull().references(()=>sr.id,{onDelete:"cascade"}),session_id:R().$type().notNull(),...ue,data:R({mode:"json"}).notNull().$type()},t=>[Se("part_message_id_id_idx").on(t.message_id,t.id),Se("part_session_idx").on(t.session_id)]),$o=Le("todo",{session_id:R().$type().notNull().references(()=>Ne.id,{onDelete:"cascade"}),content:R().notNull(),status:R().notNull(),priority:R().notNull(),position:Ce().notNull(),...ue},t=>[ir({columns:[t.session_id,t.position]}),Se("todo_session_idx").on(t.session_id)]),Ho=Le("permission",{project_id:R().primaryKey().references(()=>w.id,{onDelete:"cascade"}),...ue,data:R({mode:"json"}).notNull().$type()});import ct from"zod";var at;(u=>{let t=new Map;function r(_,g){let T={type:_,properties:g};return t.set(_,T),T}u.define=r,e(r,"define");function l(){return ct.discriminatedUnion("type",t.entries().map(([_,g])=>ct.object({type:ct.literal(_),properties:g.properties}).meta({ref:"Event."+g.type})).toArray()).meta({ref:"Event"})}u.payloads=l,e(l,"payloads")})(at||={});import cr from"which";import ar from"path";function dt(t,r){let l=r?.PATH??r?.Path??process.env.PATH??process.env.Path??"",u=l?l+ar.delimiter+Oe.Path.bin:Oe.Path.bin,_=cr.sync(t,{nothrow:!0,path:u,pathExt:r?.PATHEXT??r?.PathExt??process.env.PATHEXT??process.env.PathExt});return typeof _=="string"?_:null}e(dt,"which");import{Schema as ht}from"effect";import xt from"zod";var dr=ht.String.pipe(ht.brand("ProjectID")),oe=dr.pipe(Ot(t=>({global:t.makeUnsafe("global"),make:e(r=>t.makeUnsafe(r),"make"),zod:xt.string().pipe(xt.custom())})));import{Effect as x,Layer as Ye,Path as hr,Scope as xr,ServiceMap as Ir,Stream as qe}from"effect";import{ChildProcess as Ar,ChildProcessSpawner as Tr}from"effect/unstable/process";import{NodePath as br}from"@effect/platform-node";import{NodeFileSystem as fr}from"@effect/platform-node";import{dirname as We,join as ft,relative as pt,resolve as It}from"path";import{realpathSync as At}from"fs";import*as Ve from"fs/promises";import{lookup as pr}from"mime-types";import{Effect as M,FileSystem as lr,Layer as Tt,Schema as Je,ServiceMap as Er}from"effect";var he;(f=>{class t extends Je.TaggedErrorClass()("FileSystemError",{method:Je.String,cause:Je.optional(Je.Defect)}){static{e(this,"FileSystemError")}}f.FileSystemError=t;class r extends Er.Service()("@opencode/FileSystem"){static{e(this,"Service")}}f.Service=r,f.layer=Tt.effect(r,M.gen(function*(){let s=yield*lr.FileSystem,y=M.fn("FileSystem.existsSafe")(function*(c){return yield*s.exists(c).pipe(M.orElseSucceed(()=>!1))}),S=M.fn("FileSystem.isDir")(function*(c){return(yield*s.stat(c).pipe(M.catch(()=>M.void)))?.type==="Directory"}),z=M.fn("FileSystem.isFile")(function*(c){return(yield*s.stat(c).pipe(M.catch(()=>M.void)))?.type==="File"}),Pe=M.fn("FileSystem.readDirectoryEntries")(function*(c){return yield*M.tryPromise({try:e(async()=>(await Ve.readdir(c,{withFileTypes:!0})).map(h=>({name:h.name,type:h.isDirectory()?"directory":h.isSymbolicLink()?"symlink":h.isFile()?"file":"other"})),"try"),catch:e(d=>new t({method:"readDirectoryEntries",cause:d}),"catch")})}),ie=M.fn("FileSystem.readJson")(function*(c){let d=yield*s.readFileString(c);return JSON.parse(d)}),pe=M.fn("FileSystem.writeJson")(function*(c,d,h){let v=JSON.stringify(d,null,2),I=`${c}.tmp-${process.pid}-${Math.random().toString(36).slice(2,8)}`;yield*s.writeFileString(I,v),h&&(yield*s.chmod(I,h)),yield*M.tryPromise({try:e(()=>Ve.rename(I,c),"try"),catch:e(k=>new t({method:"writeJson.rename",cause:k}),"catch")})}),o=M.fn("FileSystem.ensureDir")(function*(c){yield*s.makeDirectory(c,{recursive:!0})}),n=M.fn("FileSystem.writeWithDirs")(function*(c,d,h){let v=typeof d=="string"?s.writeFileString(c,d):s.writeFile(c,d);yield*v.pipe(M.catchIf(I=>I.reason._tag==="NotFound",()=>M.gen(function*(){yield*s.makeDirectory(We(c),{recursive:!0}),yield*v}))),h&&(yield*s.chmod(c,h))}),i=M.fn("FileSystem.glob")(function*(c,d){return yield*M.tryPromise({try:e(()=>rt.scan(c,d),"try"),catch:e(h=>new t({method:"glob",cause:h}),"catch")})}),P=M.fn("FileSystem.findUp")(function*(c,d,h){let v=[],I=d;for(;;){let k=ft(I,c);if((yield*s.exists(k))&&v.push(k),h===I)break;let W=We(I);if(W===I)break;I=W}return v}),D=M.fn("FileSystem.up")(function*(c){let d=[],h=c.start;for(;;){for(let I of c.targets){let k=ft(h,I);(yield*s.exists(k))&&d.push(k)}if(c.stop===h)break;let v=We(h);if(v===h)break;h=v}return d}),m=M.fn("FileSystem.globUp")(function*(c,d,h){let v=[],I=d;for(;;){let k=yield*i(c,{cwd:I,absolute:!0,include:"file",dot:!0}).pipe(M.catch(()=>M.succeed([])));if(v.push(...k),h===I)break;let W=We(I);if(W===I)break;I=W}return v});return r.of({...s,existsSafe:y,isDir:S,isFile:z,readDirectoryEntries:Pe,readJson:ie,writeJson:pe,ensureDir:o,writeWithDirs:n,findUp:P,up:D,globUp:m,glob:i,globMatch:rt.match})})),f.defaultLayer=f.layer.pipe(Tt.provide(fr.layer));function _(s){return pr(s)||"application/octet-stream"}f.mimeType=_,e(_,"mimeType");function g(s){if(process.platform!=="win32")return s;let y=It(B(s));try{return At.native(y)}catch{return y}}f.normalizePath=g,e(g,"normalizePath");function T(s){if(process.platform!=="win32"||s==="*")return s;let y=s.match(/^(.*)[\\/]\*$/);if(!y)return g(s);let S=/^[A-Za-z]:$/.test(y[1])?y[1]+"\\":y[1];return ft(g(S),"*")}f.normalizePathPattern=T,e(T,"normalizePathPattern");function J(s){let y=It(B(s));try{return g(At(y))}catch(S){if(S?.code==="ENOENT")return g(y);throw S}}f.resolve=J,e(J,"resolve");function B(s){return process.platform!=="win32"?s:s.replace(/^\/([a-zA-Z]):(?:[\\/]|$)/,(y,S)=>`${S.toUpperCase()}:/`).replace(/^\/([a-zA-Z])(?:\/|$)/,(y,S)=>`${S.toUpperCase()}:/`).replace(/^\/cygdrive\/([a-zA-Z])(?:\/|$)/,(y,S)=>`${S.toUpperCase()}:/`).replace(/^\/mnt\/([a-zA-Z])(?:\/|$)/,(y,S)=>`${S.toUpperCase()}:/`)}f.windowsPath=B,e(B,"windowsPath");function K(s,y){let S=pt(s,y),z=pt(y,s);return!S||!S.startsWith("..")||!z||!z.startsWith("..")}f.overlaps=K,e(K,"overlaps");function N(s,y){return!pt(s,y).startsWith("..")}f.contains=N,e(N,"contains")})(he||={});import{NodeFileSystem as ur,NodeSink as bt,NodeStream as lt}from"@effect/platform-node";import*as wt from"@effect/platform-node/NodePath";import*as Y from"effect/Deferred";import*as a from"effect/Effect";import*as vt from"effect/Exit";import*as Lt from"effect/FileSystem";import*as Re from"effect/Layer";import*as Rt from"effect/Path";import*as kt from"effect/PlatformError";import*as V from"effect/Predicate";import*as ae from"effect/Sink";import*as F from"effect/Stream";import*as de from"effect/unstable/process/ChildProcess";import{ChildProcessSpawner as Mt,ExitCode as mr,make as yr,makeHandle as Pr,ProcessId as Or}from"effect/unstable/process/ChildProcessSpawner";import*as jt from"node:child_process";import{PassThrough as _r}from"node:stream";import Sr from"cross-spawn";var ye=e(t=>t instanceof globalThis.Error?t:new globalThis.Error(String(t)),"toError"),Dr=e(t=>{switch(t.code){case"ENOENT":return"NotFound";case"EACCES":return"PermissionDenied";case"EEXIST":return"AlreadyExists";case"EISDIR":return"BadResource";case"ENOTDIR":return"BadResource";case"EBUSY":return"Busy";case"ELOOP":return"BadResource";default:return"Unknown"}},"toTag"),Ut=e(t=>{let r=[],l=[],u=e(T=>{switch(T._tag){case"StandardCommand":r.push(T);return;case"PipedCommand":u(T.left),l.push(T.options),u(T.right);return}},"walk");if(u(t),r.length===0)throw new Error("flatten produced empty commands array");let[_,...g]=r;return{commands:[_,...g],opts:l}},"flatten"),ce=e((t,r,l)=>{let u=Ut(l).commands.map(_=>`${_.command} ${_.args.join(" ")}`).join(" | ");return kt.systemError({_tag:Dr(r),module:"ChildProcess",method:t,pathOrDescriptor:u,syscall:r.syscall,cause:r})},"toPlatformError"),gr=a.gen(function*(){let t=yield*Lt.FileSystem,r=yield*Rt.Path,l=a.fnUntraced(function*(o){if(!V.isUndefined(o.cwd))return yield*t.access(o.cwd),r.resolve(o.cwd)}),u=e(o=>o.extendEnv?{...globalThis.process.env,...o.env}:o.env,"env"),_=e(o=>F.isStream(o)?"pipe":o,"input"),g=e(o=>ae.isSink(o)?"pipe":o,"output"),T=e(o=>{let n={stream:"pipe",encoding:"utf-8",endOnDone:!0};return V.isUndefined(o.stdin)?n:typeof o.stdin=="string"?{...n,stream:o.stdin}:F.isStream(o.stdin)?{...n,stream:o.stdin}:{stream:o.stdin.stream,encoding:o.stdin.encoding??n.encoding,endOnDone:o.stdin.endOnDone??n.endOnDone}},"stdin"),J=e((o,n)=>{let i=o[n];return V.isUndefined(i)?{stream:"pipe"}:typeof i=="string"?{stream:i}:ae.isSink(i)?{stream:i}:{stream:i.stream}},"stdio"),B=e(o=>V.isUndefined(o.additionalFds)?[]:Object.entries(o.additionalFds).flatMap(([n,i])=>{let P=de.parseFdName(n);return V.isUndefined(P)?[]:[{fd:P,config:i}]}).toSorted((n,i)=>n.fd-i.fd),"fds"),K=e((o,n,i,P)=>{let D=e(d=>process.platform==="win32"&&d==="pipe"?"overlapped":d,"pipe"),m=[D(_(o.stream)),D(g(n.stream)),D(g(i.stream))];if(P.length===0)return m;let c=P.reduce((d,h)=>Math.max(d,h.fd),2);for(let d=3;d<=c;d++)m[d]="ignore";for(let d of P)m[d.fd]=D("pipe");return m},"stdios"),N=a.fnUntraced(function*(o,n,i){if(i.length===0)return{getInputFd:e(()=>ae.drain,"getInputFd"),getOutputFd:e(()=>F.empty,"getOutputFd")};let P=new Map,D=new Map;for(let m of i){let c=n.stdio[m.fd];switch(m.config.type){case"input":{let d=ae.drain;c&&"write"in c&&(d=bt.fromWritable({evaluate:e(()=>c,"evaluate"),onError:e(h=>ce(`fromWritable(fd${m.fd})`,ye(h),o),"onError"),endOnDone:!0})),m.config.stream&&(yield*a.forkScoped(F.run(m.config.stream,d))),P.set(m.fd,d);break}case"output":{let d=F.empty;if(c&&"read"in c){let h=new _r;c.on("error",v=>h.destroy(ye(v))),c.pipe(h),d=lt.fromReadable({evaluate:e(()=>h,"evaluate"),onError:e(v=>ce(`fromReadable(fd${m.fd})`,ye(v),o),"onError")})}m.config.sink&&(d=F.transduce(d,m.config.sink)),D.set(m.fd,d);break}}}return{getInputFd:e(m=>P.get(m)??ae.drain,"getInputFd"),getOutputFd:e(m=>D.get(m)??F.empty,"getOutputFd")}}),f=e((o,n,i)=>a.suspend(()=>{let P=ae.drain;return V.isNotNull(n.stdin)&&(P=bt.fromWritable({evaluate:e(()=>n.stdin,"evaluate"),onError:e(D=>ce("fromWritable(stdin)",ye(D),o),"onError"),endOnDone:i.endOnDone,encoding:i.encoding})),F.isStream(i.stream)?a.as(a.forkScoped(F.run(i.stream,P)),P):a.succeed(P)}),"setupStdin"),s=e((o,n,i,P)=>{let D=n.stdout?lt.fromReadable({evaluate:e(()=>n.stdout,"evaluate"),onError:e(c=>ce("fromReadable(stdout)",ye(c),o),"onError")}):F.empty,m=n.stderr?lt.fromReadable({evaluate:e(()=>n.stderr,"evaluate"),onError:e(c=>ce("fromReadable(stderr)",ye(c),o),"onError")}):F.empty;return ae.isSink(i.stream)&&(D=F.transduce(D,i.stream)),ae.isSink(P.stream)&&(m=F.transduce(m,P.stream)),{stdout:D,stderr:m,all:F.merge(D,m)}},"setupOutput"),y=e((o,n)=>a.callback(i=>{let P=Y.makeUnsafe(),D=Sr(o.command,o.args,n),m=!1,c;return D.on("error",d=>{i(a.fail(ce("spawn",d,o)))}),D.on("exit",(...d)=>{c=d}),D.on("close",(...d)=>{m||(m=!0,Y.doneUnsafe(P,vt.succeed(c??d)))}),D.on("spawn",()=>{i(a.succeed([D,P]))}),a.sync(()=>{D.kill("SIGTERM")})}),"spawn"),S=e((o,n,i)=>globalThis.process.platform==="win32"?a.callback(P=>{jt.exec(`taskkill /pid ${n.pid} /T /F`,{windowsHide:!0},D=>{if(D)return P(a.fail(ce("kill",ye(D),o)));P(a.void)})}):a.try({try:e(()=>{globalThis.process.kill(-n.pid,i)},"try"),catch:e(P=>ce("kill",ye(P),o),"catch")}),"killGroup"),z=e((o,n,i)=>a.suspend(()=>n.kill(i)?a.void:a.fail(ce("kill",new Error("Failed to kill child process"),o))),"killOne"),Pe=e((o,n,i)=>P=>{let D=i?.killSignal??"SIGTERM";return V.isUndefined(i?.forceKillAfter)?P(n,o,D):a.timeoutOrElse(P(n,o,D),{duration:i.forceKillAfter,orElse:e(()=>P(n,o,"SIGKILL"),"orElse")})},"timeout"),ie=e((o,n)=>{let i=n??"stdout";switch(i){case"stdout":return o.stdout;case"stderr":return o.stderr;case"all":return o.all;default:{let P=de.parseFdName(i);return V.isNotUndefined(P)?o.getOutputFd(P):o.stdout}}},"source"),pe=a.fnUntraced(function*(o){switch(o._tag){case"StandardCommand":{let n=T(o.options),i=J(o.options,"stdout"),P=J(o.options,"stderr"),D=B(o.options),m=yield*l(o.options),[c,d]=yield*a.acquireRelease(y(o,{cwd:m,env:u(o.options),stdio:K(n,i,P,D),detached:o.options.detached??process.platform!=="win32",shell:o.options.shell,windowsHide:process.platform==="win32"}),a.fnUntraced(function*([I,k]){let W=yield*Y.isDone(k),q=Pe(I,o,o.options);if(W){let[Ee]=yield*Y.await(k);return process.platform==="win32"?yield*a.void:Ee!==0&&V.isNotNull(Ee)?yield*a.ignore(q(S)):yield*a.void}let le=e(Ee=>a.catch(S(o,I,Ee),()=>z(o,I,Ee)),"send"),xe=o.options.killSignal??"SIGTERM",Ie=le(xe).pipe(a.andThen(Y.await(k)),a.asVoid),Ae=o.options.forceKillAfter?a.timeoutOrElse(Ie,{duration:o.options.forceKillAfter,orElse:e(()=>le("SIGKILL").pipe(a.andThen(Y.await(k)),a.asVoid),"orElse")}):Ie;return yield*a.ignore(Ae)})),h=yield*N(o,c,D),v=s(o,c,i,P);return Pr({pid:Or(c.pid),stdin:yield*f(o,c,n),stdout:v.stdout,stderr:v.stderr,all:v.all,getInputFd:h.getInputFd,getOutputFd:h.getOutputFd,isRunning:a.map(Y.isDone(d),I=>!I),exitCode:a.flatMap(Y.await(d),([I,k])=>V.isNotNull(I)?a.succeed(mr(I)):a.fail(ce("exitCode",new Error(`Process interrupted due to receipt of signal: '${k}'`),o))),kill:e(I=>{let k=I?.killSignal??"SIGTERM",W=e(le=>a.catch(S(o,c,le),()=>z(o,c,le)),"send"),q=W(k).pipe(a.andThen(Y.await(d)),a.asVoid);return I?.forceKillAfter?a.timeoutOrElse(q,{duration:I.forceKillAfter,orElse:e(()=>W("SIGKILL").pipe(a.andThen(Y.await(d)),a.asVoid),"orElse")}):q},"kill")})}case"PipedCommand":{let n=Ut(o),[i,...P]=n.commands,D=pe(i);for(let m=0;m<P.length;m++){let c=P[m],d=n.opts[m]??{},h=T(c.options),v=F.unwrap(a.map(D,W=>ie(W,d.from))),I=d.to??"stdin";if(I==="stdin"){D=pe(de.make(c.command,c.args,{...c.options,stdin:{...h,stream:v}}));continue}let k=de.parseFdName(I);if(V.isUndefined(k)){D=pe(de.make(c.command,c.args,{...c.options,stdin:{...h,stream:v}}));continue}D=pe(de.make(c.command,c.args,{...c.options,additionalFds:{...c.options.additionalFds,[de.fdName(k)]:{type:"input",stream:v}}}))}return yield*D}}});return yr(pe)}),Cr=Re.effect(Mt,gr),Et=Cr.pipe(Re.provide(ur.layer),Re.provide(wt.layer)),On=He(async()=>{let{makeRuntime:t}=await import("./run-service-MT3LOWLS.js");return t(Mt,Et)});var ut;(o=>{let t=te.create({service:"project"});o.Info=X.object({id:oe.zod,worktree:X.string(),vcs:X.literal("git").optional(),name:X.string().optional(),icon:X.object({url:X.string().optional(),override:X.string().optional(),color:X.string().optional()}).optional(),commands:X.object({start:X.string().optional().describe("Startup script to run when creating a new workspace (worktree)")}).optional(),time:X.object({created:X.number(),updated:X.number(),initialized:X.number().optional()}),sandboxes:X.array(X.string())}).meta({ref:"Project"}),o.Event={Updated:at.define("project.updated",o.Info)};function u(n){let i=n.icon_url||n.icon_color?{url:n.icon_url??void 0,color:n.icon_color??void 0}:void 0;return{id:n.id,worktree:n.worktree,vcs:n.vcs?o.Info.shape.vcs.parse(n.vcs):void 0,name:n.name??void 0,icon:i,time:{created:n.time_created,updated:n.time_updated,initialized:n.time_initialized??void 0},sandboxes:n.sandboxes,commands:n.commands??void 0}}o.fromRow=u,e(u,"fromRow"),o.UpdateInput=X.object({projectID:oe.zod,name:X.string().optional(),icon:o.Info.shape.icon.optional(),commands:o.Info.shape.commands.optional()});class g extends Ir.Service()("@opencode/Project"){static{e(this,"Service")}}o.Service=g,o.layer=Ye.effect(g,x.gen(function*(){let n=yield*he.Service,i=yield*hr.Path,P=yield*Tr.ChildProcessSpawner,D=x.fnUntraced(function*(E,O){let L=yield*P.spawn(Ar.make("git",E,{cwd:O?.cwd,extendEnv:!0,stdin:"ignore"})),[U,C]=yield*x.all([qe.mkString(qe.decodeText(L.stdout)),qe.mkString(qe.decodeText(L.stderr))],{concurrency:2});return{code:yield*L.exitCode,text:U,stderr:C}},x.scoped,x.catch(()=>x.succeed({code:1,text:"",stderr:""}))),m=e(E=>x.sync(()=>_e.use(E)),"db"),c=e(E=>x.sync(()=>$e.emit("event",{payload:{type:o.Event.Updated.type,properties:E}})),"emitUpdated"),d=o.Info.shape.vcs.parse(H.OPENCODE_FAKE_VCS),h=e((E,O)=>!O||(O=O.replace(/[\r\n]+$/,""),!O)?E:(O=he.windowsPath(O),i.isAbsolute(O)?i.normalize(O):i.resolve(E,O)),"resolveGitPath"),v=yield*xr.Scope,I=x.fnUntraced(function*(E){return yield*n.readFileString(i.join(E,"opencode")).pipe(x.map(O=>O.trim()),x.map(oe.make),x.catch(()=>x.succeed(void 0)))}),k=x.fn("Project.fromDirectory")(function*(E){t.info("fromDirectory",{directory:E});let O=yield*x.gen(function*(){let se=(yield*n.up({targets:[".git"],start:E}).pipe(x.orDie))[0];if(!se)return{id:oe.global,worktree:"/",sandbox:"/",vcs:d};let G=i.dirname(se),Ue=yield*x.sync(()=>dt("git")),ee=yield*I(se);if(!Ue)return{id:ee??oe.global,worktree:G,sandbox:G,vcs:d};let Ze=yield*D(["rev-parse","--git-common-dir"],{cwd:G});if(Ze.code!==0)return{id:ee??oe.global,worktree:G,sandbox:G,vcs:d};let Be=(()=>{let Fe=h(G,Ze.text.trim());return Fe===G?G:i.dirname(Fe)})();if(ee==null&&(ee=yield*I(i.join(Be,".git"))),!ee){let et=(yield*D(["rev-list","--max-parents=0","HEAD"],{cwd:G})).text.split(`
|
|
13
|
+
`).filter(Boolean).map(Ge=>Ge.trim()).toSorted();ee=et[0]?oe.make(et[0]):void 0,ee&&(yield*n.writeFileString(i.join(Be,".git","opencode"),ee).pipe(x.ignore))}if(!ee)return{id:oe.global,worktree:G,sandbox:G,vcs:"git"};let Qe=yield*D(["rev-parse","--show-toplevel"],{cwd:G});return Qe.code!==0?{id:ee,worktree:G,sandbox:G,vcs:d}:(G=h(G,Qe.text.trim()),{id:ee,sandbox:G,worktree:Be,vcs:"git"})}),L=yield*m(j=>j.select().from(w).where((0,A.eq)(w.id,O.id)).get()),U=L?u(L):{id:O.id,worktree:O.worktree,vcs:O.vcs,sandboxes:[],time:{created:Date.now(),updated:Date.now()}};H.OPENCODE_EXPERIMENTAL_ICON_DISCOVERY&&(yield*W(U).pipe(x.ignore,x.forkIn(v)));let C={...U,worktree:O.worktree,vcs:O.vcs,time:{...U.time,updated:Date.now()}};return O.sandbox!==C.worktree&&!C.sandboxes.includes(O.sandbox)&&C.sandboxes.push(O.sandbox),C.sandboxes=yield*x.forEach(C.sandboxes,j=>n.exists(j).pipe(x.orDie,x.map(se=>se?j:void 0)),{concurrency:"unbounded"}).pipe(x.map(j=>j.filter(se=>se!==void 0))),yield*m(j=>j.insert(w).values({id:C.id,worktree:C.worktree,vcs:C.vcs??null,name:C.name,icon_url:C.icon?.url,icon_color:C.icon?.color,time_created:C.time.created,time_updated:C.time.updated,time_initialized:C.time.initialized,sandboxes:C.sandboxes,commands:C.commands}).onConflictDoUpdate({target:w.id,set:{worktree:C.worktree,vcs:C.vcs??null,name:C.name,icon_url:C.icon?.url,icon_color:C.icon?.color,time_updated:C.time.updated,time_initialized:C.time.initialized,sandboxes:C.sandboxes,commands:C.commands}}).run()),O.id!==oe.global&&(yield*m(j=>j.update(Ne).set({project_id:O.id}).where((0,A.and)((0,A.eq)(Ne.project_id,oe.global),(0,A.eq)(Ne.directory,O.worktree))).run())),yield*c(C),{project:C,sandbox:O.sandbox}}),W=x.fn("Project.discover")(function*(E){if(E.vcs!=="git"||E.icon?.override||E.icon?.url)return;let L=(yield*n.glob("**/favicon.{ico,png,svg,jpg,jpeg,webp}",{cwd:E.worktree,absolute:!0,include:"file"}).pipe(x.orDie)).sort((G,Ue)=>G.length-Ue.length)[0];if(!L)return;let U=yield*n.readFile(L).pipe(x.orDie),C=Buffer.from(U).toString("base64"),se=`data:${he.mimeType(L)};base64,${C}`;yield*xe({projectID:E.id,icon:{url:se}})}),q=x.fn("Project.list")(function*(){return yield*m(E=>E.select().from(w).all().map(u))}),le=x.fn("Project.get")(function*(E){let O=yield*m(L=>L.select().from(w).where((0,A.eq)(w.id,E)).get());return O?u(O):void 0}),xe=x.fn("Project.update")(function*(E){let O=yield*m(U=>U.update(w).set({name:E.name,icon_url:E.icon?.url,icon_color:E.icon?.color,commands:E.commands,time_updated:Date.now()}).where((0,A.eq)(w.id,E.projectID)).returning().get());if(!O)throw new Error(`Project not found: ${E.projectID}`);let L=u(O);return yield*c(L),L}),Ie=x.fn("Project.initGit")(function*(E){if(E.project.vcs==="git")return E.project;if(!(yield*x.sync(()=>dt("git"))))throw new Error("Git is not installed");let O=yield*D(["init","--quiet"],{cwd:E.directory});if(O.code!==0)throw new Error(O.stderr.trim()||O.text.trim()||"Failed to initialize git repository");let{project:L}=yield*k(E.directory);return L}),Ae=x.fn("Project.setInitialized")(function*(E){yield*m(O=>O.update(w).set({time_initialized:Date.now()}).where((0,A.eq)(w.id,E)).run())}),Ee=x.fn("Project.sandboxes")(function*(E){let O=yield*m(U=>U.select().from(w).where((0,A.eq)(w.id,E)).get());if(!O)return[];let L=u(O);return yield*x.forEach(L.sandboxes,U=>n.isDir(U).pipe(x.orDie,x.map(C=>C?U:void 0)),{concurrency:"unbounded"}).pipe(x.map(U=>U.filter(C=>C!==void 0)))}),mt=x.fn("Project.addSandbox")(function*(E,O){let L=yield*m(j=>j.select().from(w).where((0,A.eq)(w.id,E)).get());if(!L)throw new Error(`Project not found: ${E}`);let U=[...L.sandboxes];U.includes(O)||U.push(O);let C=yield*m(j=>j.update(w).set({sandboxes:U,time_updated:Date.now()}).where((0,A.eq)(w.id,E)).returning().get());if(!C)throw new Error(`Project not found: ${E}`);yield*c(u(C))}),yt=x.fn("Project.removeSandbox")(function*(E,O){let L=yield*m(j=>j.select().from(w).where((0,A.eq)(w.id,E)).get());if(!L)throw new Error(`Project not found: ${E}`);let U=L.sandboxes.filter(j=>j!==O),C=yield*m(j=>j.update(w).set({sandboxes:U,time_updated:Date.now()}).where((0,A.eq)(w.id,E)).returning().get());if(!C)throw new Error(`Project not found: ${E}`);yield*c(u(C))});return g.of({fromDirectory:k,discover:W,list:q,get:le,update:xe,initGit:Ie,setInitialized:Ae,sandboxes:Ee,addSandbox:mt,removeSandbox:yt})})),o.defaultLayer=o.layer.pipe(Ye.provide(Et),Ye.provide(he.defaultLayer),Ye.provide(br.layer));let{runPromise:B}=Bt(g,o.defaultLayer);function K(n){return B(i=>i.fromDirectory(n))}o.fromDirectory=K,e(K,"fromDirectory");function N(n){return B(i=>i.discover(n))}o.discover=N,e(N,"discover");function f(){return _e.use(n=>n.select().from(w).all().map(i=>u(i)))}o.list=f,e(f,"list");function s(n){let i=_e.use(P=>P.select().from(w).where((0,A.eq)(w.id,n)).get());if(i)return u(i)}o.get=s,e(s,"get");function y(n){_e.use(i=>i.update(w).set({time_initialized:Date.now()}).where((0,A.eq)(w.id,n)).run())}o.setInitialized=y,e(y,"setInitialized");function S(n){return B(i=>i.initGit(n))}o.initGit=S,e(S,"initGit");function z(n){return B(i=>i.update(n))}o.update=z,e(z,"update");function Pe(n){return B(i=>i.sandboxes(n))}o.sandboxes=Pe,e(Pe,"sandboxes");function ie(n,i){return B(P=>P.addSandbox(n,i))}o.addSandbox=ie,e(ie,"addSandbox");function pe(n,i){return B(P=>P.removeSandbox(n,i))}o.removeSandbox=pe,e(pe,"removeSandbox")})(ut||={});var ke;(_=>{let t=te.create({service:"state"}),r=new Map;function l(g,T,J){return()=>{let B=g(),K=r.get(B);K||(K=new Map,r.set(B,K));let N=K.get(T);if(N)return N.state;let f=T();return K.set(T,{state:f,dispose:J}),f}}_.create=l,e(l,"create");async function u(g){let T=r.get(g);if(!T)return;t.info("waiting for state disposal to complete",{key:g});let J=!1;setTimeout(()=>{J||t.warn("state disposal is taking an unusually long time - if it does not complete in a reasonable time, please report this as a bug",{key:g})},1e4).unref();let B=[];for(let[K,N]of T){if(!N.dispose)continue;let f=typeof K=="function"?K.name:String(K),s=Promise.resolve(N.state).then(y=>N.dispose(y)).catch(y=>{t.error("Error while disposing state:",{error:y,key:g,init:f})});B.push(s)}await Promise.all(B),T.clear(),r.delete(g),J=!0,t.info("state disposal completed",{key:g})}_.dispose=u,e(u,"dispose")})(ke||={});var fe=re.create("instance"),ne=new Map,Me={all:void 0};function Ft(t){$e.emit("event",{directory:t,payload:{type:"server.instance.disposed",properties:{directory:t}}})}e(Ft,"emit");function Gt(t){return be(async()=>{let r=t.project&&t.worktree?{directory:t.directory,worktree:t.worktree,project:t.project}:await ut.fromDirectory(t.directory).then(({project:l,sandbox:u})=>({directory:t.directory,worktree:u,project:l}));return await fe.provide(r,async()=>{await t.init?.()}),r})}e(Gt,"boot");function $t(t,r){let l=r.catch(u=>{throw ne.get(t)===l&&ne.delete(t),u});return ne.set(t,l),l}e($t,"track");var Q={async provide(t){let r=Te.resolve(t.directory),l=ne.get(r);l||(te.Default.info("creating instance",{directory:r}),l=$t(r,Gt({directory:r,init:t.init})));let u=await l;return fe.provide(u,async()=>t.fn())},get current(){return fe.use()},get directory(){return fe.use().directory},get worktree(){return fe.use().worktree},get project(){return fe.use().project},containsPath(t){return Te.contains(Q.directory,t)?!0:Q.worktree==="/"?!1:Te.contains(Q.worktree,t)},bind(t){let r=fe.use();return((...l)=>fe.provide(r,()=>t(...l)))},restore(t,r){return fe.provide(t,r)},state(t,r){return ke.create(()=>Q.directory,t,r)},async reload(t){let r=Te.resolve(t.directory);te.Default.info("reloading instance",{directory:r}),await Promise.all([ke.dispose(r),nt(r)]),ne.delete(r);let l=$t(r,Gt({...t,directory:r}));return Ft(r),await l},async dispose(){let t=Q.directory;te.Default.info("disposing instance",{directory:t}),await Promise.all([ke.dispose(t),nt(t)]),ne.delete(t),Ft(t)},async disposeAll(){return Me.all||(Me.all=be(async()=>{te.Default.info("disposing all instances");let t=[...ne.entries()];for(let[r,l]of t){if(ne.get(r)!==l)continue;let u=await l.catch(_=>{te.Default.warn("instance dispose failed",{key:r,error:_})});if(!u){ne.get(r)===l&&ne.delete(r);continue}ne.get(r)===l&&await fe.provide(u,async()=>{await Q.dispose()})}}).finally(()=>{Me.all=void 0})),Me.all}};var Rr=vr.makeMemoMapUnsafe();function je(t){try{let r=Q.current;return wr.provideService(t,we,r)}catch(r){if(!(r instanceof re.NotFound))throw r}return t}e(je,"attach");function Bt(t,r){let l,u=e(()=>l??=Lr.make(r,{memoMap:Rr}),"getRuntime");return{runSync:e(_=>u().runSync(je(t.use(_))),"runSync"),runPromiseExit:e((_,g)=>u().runPromiseExit(je(t.use(_)),g),"runPromiseExit"),runPromise:e((_,g)=>u().runPromise(je(t.use(_)),g),"runPromise"),runFork:e(_=>u().runFork(je(t.use(_))),"runFork"),runCallback:e(_=>u().runCallback(je(t.use(_))),"runCallback")}}e(Bt,"makeRuntime");export{$e as a,be as b,He as c,Xe as d,H as e,Qr as f,it as g,Ke as h,rr as i,_e as j,A as k,ue as l,w as m,Ne as n,sr as o,Go as p,$o as q,Ho as r,at as s,dt as t,oe as u,he as v,Et as w,ut as x,Q as y,Rr as z,Bt as A};
|
|
@@ -9,4 +9,4 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{
|
|
12
|
+
import{I as a}from"./chunk-G752V4OP.js";import"./chunk-IR6PDN4W.js";import"./chunk-7KKA6WBY.js";import"./chunk-LTCXIXYM.js";import"./chunk-M4CB72HE.js";import"./chunk-MBZTOEAD.js";export{a as ToolRegistry};
|
|
@@ -9,7 +9,7 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{a as He}from"./chunk-
|
|
12
|
+
import{a as He}from"./chunk-GBXMNWYD.js";import{b as Xe}from"./chunk-5P5WLADX.js";import"./chunk-2ANK3QEN.js";import"./chunk-PWFRMDDF.js";import"./chunk-A7EXZZPC.js";import{t as Ge,x as Be}from"./chunk-G752V4OP.js";import{d as Fe,e as We,y as V}from"./chunk-IR6PDN4W.js";import"./chunk-7KKA6WBY.js";import"./chunk-LTCXIXYM.js";import{c as H}from"./chunk-M4CB72HE.js";import"./chunk-CZVKIDQZ.js";import{a as s,b as lr}from"./chunk-MBZTOEAD.js";import B from"path";import{pathToFileURL as Sr}from"url";import ur from"zod";import{EOL as J}from"os";var Q={left:[" ","\u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2584","\u2588__\u2588 \u2588__\u2588 \u2588^^^ \u2588__\u2588","\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580 \u2580\u2580\u2580\u2580 \u2580~~\u2580"],right:[" \u2584 ","\u2588\u2580\u2580\u2580 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588","\u2588___ \u2588__\u2588 \u2588__\u2588 \u2588^^^","\u2580\u2580\u2580\u2580 \u2580\u2580\u2580\u2580 \u2580\u2580\u2580\u2580 \u2580\u2580\u2580\u2580"]};var f;(c=>{let n=["\u2800 \u2584 ","\u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2584 \u2588\u2580\u2580\u2580 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588 \u2588\u2580\u2580\u2588","\u2588 \u2588 \u2588 \u2588 \u2588\u2580\u2580\u2580 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2580\u2580\u2580","\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580 \u2580\u2580\u2580\u2580 \u2580 \u2580 \u2580\u2580\u2580\u2580 \u2580\u2580\u2580\u2580 \u2580\u2580\u2580\u2580 \u2580\u2580\u2580\u2580"];c.CancelledError=Fe.create("UICancelledError",ur.void()),c.Style={TEXT_HIGHLIGHT:"\x1B[96m",TEXT_HIGHLIGHT_BOLD:"\x1B[96m\x1B[1m",TEXT_DIM:"\x1B[90m",TEXT_DIM_BOLD:"\x1B[90m\x1B[1m",TEXT_NORMAL:"\x1B[0m",TEXT_NORMAL_BOLD:"\x1B[1m",TEXT_WARNING:"\x1B[93m",TEXT_WARNING_BOLD:"\x1B[93m\x1B[1m",TEXT_DANGER:"\x1B[91m",TEXT_DANGER_BOLD:"\x1B[91m\x1B[1m",TEXT_SUCCESS:"\x1B[92m",TEXT_SUCCESS_BOLD:"\x1B[92m\x1B[1m",TEXT_INFO:"\x1B[94m",TEXT_INFO_BOLD:"\x1B[94m\x1B[1m"};function t(...h){a(...h),process.stderr.write(J)}c.println=t,s(t,"println");function a(...h){u=!1,process.stderr.write(h.join(" "))}c.print=a,s(a,"print");let u=!1;function d(){u||(t(""+c.Style.TEXT_NORMAL),u=!0)}c.empty=d,s(d,"empty");function l(h){if(!process.stdout.isTTY&&!process.stderr.isTTY){let p=[];for(let T of n)h&&p.push(h),p.push(T),p.push(J);return p.join("").trimEnd()}let w=[],v="\x1B[0m",b={fg:"\x1B[90m",shadow:"\x1B[38;5;235m",bg:"\x1B[48;5;235m"},O={fg:v,shadow:"\x1B[38;5;238m",bg:"\x1B[48;5;238m"},g=" ",E=s((p,T,R,S)=>{let x=[];for(let D of p){if(D==="_"){x.push(S," ",v);continue}if(D==="^"){x.push(T,S,"\u2580",v);continue}if(D==="~"){x.push(R,"\u2580",v);continue}if(D===" "){x.push(" ");continue}x.push(T,D,v)}return x.join("")},"draw");return Q.left.forEach((p,T)=>{h&&w.push(h),w.push(E(p,b.fg,b.shadow,b.bg)),w.push(g);let R=Q.right[T]??"";w.push(E(R,O.fg,O.shadow,O.bg)),w.push(J)}),w.join("").trimEnd()}c.logo=l,s(l,"logo");async function m(h){let v=lr("readline").createInterface({input:process.stdin,output:process.stdout});return new Promise(b=>{v.question(h,O=>{v.close(),b(O.trim())})})}c.input=m,s(m,"input");function y(h){h.startsWith("Error: ")&&(h=h.slice(7)),t(c.Style.TEXT_DANGER_BOLD+"Error: "+c.Style.TEXT_NORMAL+h)}c.error=y,s(y,"error");function o(h){return h}c.markdown=o,s(o,"markdown")})(f||={});async function Ve(n,r){return V.provide({directory:n,init:Xe,fn:s(async()=>{try{return await r()}finally{await V.dispose()}},"fn")})}s(Ve,"bootstrap");import{EOL as G}from"os";var Qe=s(({onRequest:n,onSseError:r,onSseEvent:e,responseTransformer:t,responseValidator:a,sseDefaultRetryDelay:u,sseMaxRetryAttempts:d,sseMaxRetryDelay:l,sseSleepFn:m,url:y,...o})=>{let c,h=m??(b=>new Promise(O=>setTimeout(O,b)));return{stream:s(async function*(){let b=u??3e3,O=0,g=o.signal??new AbortController().signal;for(;!g.aborted;){O++;let E=o.headers instanceof Headers?o.headers:new Headers(o.headers);c!==void 0&&E.set("Last-Event-ID",c);try{let p={redirect:"follow",...o,body:o.serializedBody,headers:E,signal:g},T=new Request(y,p);n&&(T=await n(y,p));let S=await(o.fetch??globalThis.fetch)(T);if(!S.ok)throw new Error(`SSE failed: ${S.status} ${S.statusText}`);if(!S.body)throw new Error("No body in SSE response");let x=S.body.pipeThrough(new TextDecoderStream).getReader(),D="",Me=s(()=>{try{x.cancel()}catch{}},"abortHandler");g.addEventListener("abort",Me);try{for(;;){let{done:ir,value:ar}=await x.read();if(ir)break;D+=ar,D=D.replace(/\r\n/g,`
|
|
13
13
|
`).replace(/\r/g,`
|
|
14
14
|
`);let $e=D.split(`
|
|
15
15
|
|
|
@@ -17,4 +17,4 @@ import{a as He}from"./chunk-VREN4JVV.js";import{b as Xe}from"./chunk-SILEE7UA.js
|
|
|
17
17
|
`),$=[],Le;for(let C of pr)if(C.startsWith("data:"))$.push(C.replace(/^data:\s*/,""));else if(C.startsWith("event:"))Le=C.replace(/^event:\s*/,"");else if(C.startsWith("id:"))c=C.replace(/^id:\s*/,"");else if(C.startsWith("retry:")){let Ue=Number.parseInt(C.replace(/^retry:\s*/,""),10);Number.isNaN(Ue)||(b=Ue)}let P,Ne=!1;if($.length){let C=$.join(`
|
|
18
18
|
`);try{P=JSON.parse(C),Ne=!0}catch{P=C}}Ne&&(a&&await a(P),t&&(P=await t(P))),e?.({data:P,event:Le,id:c,retry:b}),$.length&&(yield P)}}}finally{g.removeEventListener("abort",Me),x.releaseLock()}break}catch(p){if(r?.(p),d!==void 0&&O>=d)break;let T=Math.min(b*2**(O-1),l??3e4);await h(T)}}},"createStream")()}},"createSseClient");var dr=s(n=>{switch(n){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorArrayExplode"),yr=s(n=>{switch(n){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},"separatorArrayNoExplode"),hr=s(n=>{switch(n){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorObjectExplode"),L=s(({allowReserved:n,explode:r,name:e,style:t,value:a})=>{if(!r){let l=(n?a:a.map(m=>encodeURIComponent(m))).join(yr(t));switch(t){case"label":return`.${l}`;case"matrix":return`;${e}=${l}`;case"simple":return l;default:return`${e}=${l}`}}let u=dr(t),d=a.map(l=>t==="label"||t==="simple"?n?l:encodeURIComponent(l):A({allowReserved:n,name:e,value:l})).join(u);return t==="label"||t==="matrix"?u+d:d},"serializeArrayParam"),A=s(({allowReserved:n,name:r,value:e})=>{if(e==null)return"";if(typeof e=="object")throw new Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${r}=${n?e:encodeURIComponent(e)}`},"serializePrimitiveParam"),N=s(({allowReserved:n,explode:r,name:e,style:t,value:a,valueOnly:u})=>{if(a instanceof Date)return u?a.toISOString():`${e}=${a.toISOString()}`;if(t!=="deepObject"&&!r){let m=[];Object.entries(a).forEach(([o,c])=>{m=[...m,o,n?c:encodeURIComponent(c)]});let y=m.join(",");switch(t){case"form":return`${e}=${y}`;case"label":return`.${y}`;case"matrix":return`;${e}=${y}`;default:return y}}let d=hr(t),l=Object.entries(a).map(([m,y])=>A({allowReserved:n,name:t==="deepObject"?`${e}[${m}]`:m,value:y})).join(d);return t==="label"||t==="matrix"?d+l:l},"serializeObjectParam");var gr=/\{[^{}]+\}/g,mr=s(({path:n,url:r})=>{let e=r,t=r.match(gr);if(t)for(let a of t){let u=!1,d=a.substring(1,a.length-1),l="simple";d.endsWith("*")&&(u=!0,d=d.substring(0,d.length-1)),d.startsWith(".")?(d=d.substring(1),l="label"):d.startsWith(";")&&(d=d.substring(1),l="matrix");let m=n[d];if(m==null)continue;if(Array.isArray(m)){e=e.replace(a,L({explode:u,name:d,style:l,value:m}));continue}if(typeof m=="object"){e=e.replace(a,N({explode:u,name:d,style:l,value:m,valueOnly:!0}));continue}if(l==="matrix"){e=e.replace(a,`;${A({name:d,value:m})}`);continue}let y=encodeURIComponent(l==="label"?`.${m}`:m);e=e.replace(a,y)}return e},"defaultPathSerializer"),Je=s(({baseUrl:n,path:r,query:e,querySerializer:t,url:a})=>{let u=a.startsWith("/")?a:`/${a}`,d=(n??"")+u;r&&(d=mr({path:r,url:d}));let l=e?t(e):"";return l.startsWith("?")&&(l=l.substring(1)),l&&(d+=`?${l}`),d},"getUrl");function K(n){let r=n.body!==void 0;if(r&&n.bodySerializer)return"serializedBody"in n?n.serializedBody!==void 0&&n.serializedBody!==""?n.serializedBody:null:n.body!==""?n.body:null;if(r)return n.body}s(K,"getValidRequestBody");var Ke=s(async(n,r)=>{let e=typeof r=="function"?await r(n):r;if(e)return n.scheme==="bearer"?`Bearer ${e}`:n.scheme==="basic"?`Basic ${btoa(e)}`:e},"getAuthToken");var Y={bodySerializer:s(n=>JSON.stringify(n,(r,e)=>typeof e=="bigint"?e.toString():e),"bodySerializer")};var Ye=s(({parameters:n={},...r}={})=>s(t=>{let a=[];if(t&&typeof t=="object")for(let u in t){let d=t[u];if(d==null)continue;let l=n[u]||r;if(Array.isArray(d)){let m=L({allowReserved:l.allowReserved,explode:!0,name:u,style:"form",value:d,...l.array});m&&a.push(m)}else if(typeof d=="object"){let m=N({allowReserved:l.allowReserved,explode:!0,name:u,style:"deepObject",value:d,...l.object});m&&a.push(m)}else{let m=A({allowReserved:l.allowReserved,name:u,value:d});m&&a.push(m)}}return a.join("&")},"querySerializer"),"createQuerySerializer"),Ze=s(n=>{if(!n)return"stream";let r=n.split(";")[0]?.trim();if(r){if(r.startsWith("application/json")||r.endsWith("+json"))return"json";if(r==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(e=>r.startsWith(e)))return"blob";if(r.startsWith("text/"))return"text"}},"getParseAs"),fr=s((n,r)=>r?!!(n.headers.has(r)||n.query?.[r]||n.headers.get("Cookie")?.includes(`${r}=`)):!1,"checkForExistence"),er=s(async({security:n,...r})=>{for(let e of n){if(fr(r,e.name))continue;let t=await Ke(e,r.auth);if(!t)continue;let a=e.name??"Authorization";switch(e.in){case"query":r.query||(r.query={}),r.query[a]=t;break;case"cookie":r.headers.append("Cookie",`${a}=${t}`);break;default:r.headers.set(a,t);break}}},"setAuthParams"),Z=s(n=>Je({baseUrl:n.baseUrl,path:n.path,query:n.query,querySerializer:typeof n.querySerializer=="function"?n.querySerializer:Ye(n.querySerializer),url:n.url}),"buildUrl"),ee=s((n,r)=>{let e={...n,...r};return e.baseUrl?.endsWith("/")&&(e.baseUrl=e.baseUrl.substring(0,e.baseUrl.length-1)),e.headers=U(n.headers,r.headers),e},"mergeConfigs"),wr=s(n=>{let r=[];return n.forEach((e,t)=>{r.push([t,e])}),r},"headersEntries"),U=s((...n)=>{let r=new Headers;for(let e of n){if(!e)continue;let t=e instanceof Headers?wr(e):Object.entries(e);for(let[a,u]of t)if(u===null)r.delete(a);else if(Array.isArray(u))for(let d of u)r.append(a,d);else u!==void 0&&r.set(a,typeof u=="object"?JSON.stringify(u):u)}return r},"mergeHeaders"),j=class{static{s(this,"Interceptors")}fns=[];clear(){this.fns=[]}eject(r){let e=this.getInterceptorIndex(r);this.fns[e]&&(this.fns[e]=null)}exists(r){let e=this.getInterceptorIndex(r);return!!this.fns[e]}getInterceptorIndex(r){return typeof r=="number"?this.fns[r]?r:-1:this.fns.indexOf(r)}update(r,e){let t=this.getInterceptorIndex(r);return this.fns[t]?(this.fns[t]=e,r):!1}use(r){return this.fns.push(r),this.fns.length-1}},rr=s(()=>({error:new j,request:new j,response:new j}),"createInterceptors"),kr=Ye({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),br={"Content-Type":"application/json"},z=s((n={})=>({...Y,headers:br,parseAs:"auto",querySerializer:kr,...n}),"createConfig");var M=s((n={})=>{let r=ee(z(),n),e=s(()=>({...r}),"getConfig"),t=s(y=>(r=ee(r,y),e()),"setConfig"),a=rr(),u=s(async y=>{let o={...r,...y,fetch:y.fetch??r.fetch??globalThis.fetch,headers:U(r.headers,y.headers),serializedBody:void 0};o.security&&await er({...o,security:o.security}),o.requestValidator&&await o.requestValidator(o),o.body!==void 0&&o.bodySerializer&&(o.serializedBody=o.bodySerializer(o.body)),(o.body===void 0||o.serializedBody==="")&&o.headers.delete("Content-Type");let c=Z(o);return{opts:o,url:c}},"beforeRequest"),d=s(async y=>{let{opts:o,url:c}=await u(y),h={redirect:"follow",...o,body:K(o)},w=new Request(c,h);for(let R of a.request.fns)R&&(w=await R(w,o));let v=o.fetch,b;try{b=await v(w)}catch(R){let S=R;for(let x of a.error.fns)x&&(S=await x(R,void 0,w,o));if(S=S||{},o.throwOnError)throw S;return o.responseStyle==="data"?void 0:{error:S,request:w,response:void 0}}for(let R of a.response.fns)R&&(b=await R(b,w,o));let O={request:w,response:b};if(b.ok){let R=(o.parseAs==="auto"?Ze(b.headers.get("Content-Type")):o.parseAs)??"json";if(b.status===204||b.headers.get("Content-Length")==="0"){let x;switch(R){case"arrayBuffer":case"blob":case"text":x=await b[R]();break;case"formData":x=new FormData;break;case"stream":x=b.body;break;default:x={};break}return o.responseStyle==="data"?x:{data:x,...O}}let S;switch(R){case"arrayBuffer":case"blob":case"formData":case"text":S=await b[R]();break;case"json":{let x=await b.text();S=x?JSON.parse(x):{};break}case"stream":return o.responseStyle==="data"?b.body:{data:b.body,...O}}return R==="json"&&(o.responseValidator&&await o.responseValidator(S),o.responseTransformer&&(S=await o.responseTransformer(S))),o.responseStyle==="data"?S:{data:S,...O}}let g=await b.text(),E;try{E=JSON.parse(g)}catch{}let p=E??g,T=p;for(let R of a.error.fns)R&&(T=await R(p,b,w,o));if(T=T||{},o.throwOnError)throw T;return o.responseStyle==="data"?void 0:{error:T,...O}},"request"),l=s(y=>o=>d({...o,method:y}),"makeMethodFn"),m=s(y=>async o=>{let{opts:c,url:h}=await u(o);return Qe({...c,body:c.body,headers:c.headers,method:y,onRequest:s(async(w,v)=>{let b=new Request(w,v);for(let O of a.request.fns)O&&(b=await O(b,c));return b},"onRequest"),serializedBody:K(c),url:h})},"makeSseFn");return{buildUrl:Z,connect:l("CONNECT"),delete:l("DELETE"),get:l("GET"),getConfig:e,head:l("HEAD"),interceptors:a,options:l("OPTIONS"),patch:l("PATCH"),post:l("POST"),put:l("PUT"),request:d,setConfig:t,sse:{connect:m("CONNECT"),delete:m("DELETE"),get:m("GET"),head:m("HEAD"),options:m("OPTIONS"),patch:m("PATCH"),post:m("POST"),put:m("PUT"),trace:m("TRACE")},trace:l("TRACE")}},"createClient");var Tr={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},Or=Object.entries(Tr),tr=s((n,r)=>{r||(r=new Map);for(let e of n)"in"in e?e.key&&r.set(e.key,{in:e.in,map:e.map}):"key"in e?r.set(e.key,{map:e.map}):e.args&&tr(e.args,r);return r},"buildKeyMap"),Er=s(n=>{for(let[r,e]of Object.entries(n))e&&typeof e=="object"&&!Object.keys(e).length&&delete n[r]},"stripEmptySlots"),i=s((n,r)=>{let e={body:{},headers:{},path:{},query:{}},t=tr(r),a;for(let[u,d]of n.entries())if(r[u]&&(a=r[u]),!!a)if("in"in a)if(a.key){let l=t.get(a.key),m=l.map||a.key;l.in&&(e[l.in][m]=d)}else e.body=d;else for(let[l,m]of Object.entries(d??{})){let y=t.get(l);if(y)if(y.in){let o=y.map||l;e[y.in][o]=m}else e[y.map]=m;else{let o=Or.find(([c])=>l.startsWith(c));if(o){let[c,h]=o;e[h][l.slice(c.length)]=m}else if("allowExtra"in a&&a.allowExtra){for(let[c,h]of Object.entries(a.allowExtra))if(h){e[c][l]=m;break}}}}return Er(e),e},"buildClientParams");var nr=M(z({baseUrl:"http://localhost:4096"}));var k=class{static{s(this,"HeyApiClient")}client;constructor(r){this.client=r?.client??nr}},re=class{static{s(this,"HeyApiRegistry")}defaultKey="default";instances=new Map;get(r){let e=this.instances.get(r??this.defaultKey);if(!e)throw new Error('No SDK client found. Create one with "new OpencodeClient()" to fix this error.');return e}set(r,e){this.instances.set(e??this.defaultKey,r)}},te=class extends k{static{s(this,"SyncEvent")}subscribe(r){return(r?.client??this.client).sse.get({url:"/global/sync-event",...r})}},ne=class extends k{static{s(this,"Config")}get(r){return(r?.client??this.client).get({url:"/global/config",...r})}update(r,e){let t=i([r],[{args:[{key:"config",map:"body"}]}]);return(e?.client??this.client).patch({url:"/global/config",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},se=class extends k{static{s(this,"Global")}health(r){return(r?.client??this.client).get({url:"/global/health",...r})}event(r){return(r?.client??this.client).sse.get({url:"/global/event",...r})}dispose(r){return(r?.client??this.client).post({url:"/global/dispose",...r})}upgrade(r,e){let t=i([r],[{args:[{in:"body",key:"target"}]}]);return(e?.client??this.client).post({url:"/global/upgrade",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}_syncEvent;get syncEvent(){return this._syncEvent??=new te({client:this.client})}_config;get config(){return this._config??=new ne({client:this.client})}},oe=class extends k{static{s(this,"Auth")}remove(r,e){let t=i([r],[{args:[{in:"path",key:"providerID"}]}]);return(e?.client??this.client).delete({url:"/auth/{providerID}",...e,...t})}set(r,e){let t=i([r],[{args:[{in:"path",key:"providerID"},{key:"auth",map:"body"}]}]);return(e?.client??this.client).put({url:"/auth/{providerID}",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},ie=class extends k{static{s(this,"App")}log(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/log",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}agents(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/agent",...e,...t})}skills(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/skill",...e,...t})}},ae=class extends k{static{s(this,"Project")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/project",...e,...t})}current(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/project/current",...e,...t})}initGit(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/project/git/init",...e,...t})}update(r,e){let t=i([r],[{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(e?.client??this.client).patch({url:"/project/{projectID}",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},ce=class extends k{static{s(this,"Pty")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/pty",...e,...t})}create(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/pty",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}remove(r,e){let t=i([r],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).delete({url:"/pty/{ptyID}",...e,...t})}get(r,e){let t=i([r],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/pty/{ptyID}",...e,...t})}update(r,e){let t=i([r],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"title"},{in:"body",key:"size"}]}]);return(e?.client??this.client).put({url:"/pty/{ptyID}",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}connect(r,e){let t=i([r],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/pty/{ptyID}/connect",...e,...t})}},pe=class extends k{static{s(this,"Config2")}get(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/config",...e,...t})}update(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{key:"config",map:"body"}]}]);return(e?.client??this.client).patch({url:"/config",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}providers(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/config/providers",...e,...t})}},le=class extends k{static{s(this,"Console")}get(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/experimental/console",...e,...t})}listOrgs(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/experimental/console/orgs",...e,...t})}switchOrg(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"accountID"},{in:"body",key:"orgID"}]}]);return(e?.client??this.client).post({url:"/experimental/console/switch",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},ue=class extends k{static{s(this,"Workspace")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/experimental/workspace",...e,...t})}create(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/experimental/workspace",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}remove(r,e){let t=i([r],[{args:[{in:"path",key:"id"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).delete({url:"/experimental/workspace/{id}",...e,...t})}},de=class extends k{static{s(this,"Session")}list(r,e){let t=i([r],[{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(e?.client??this.client).get({url:"/experimental/session",...e,...t})}},ye=class extends k{static{s(this,"Resource")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/experimental/resource",...e,...t})}},he=class extends k{static{s(this,"Experimental")}_console;get console(){return this._console??=new le({client:this.client})}_workspace;get workspace(){return this._workspace??=new ue({client:this.client})}_session;get session(){return this._session??=new de({client:this.client})}_resource;get resource(){return this._resource??=new ye({client:this.client})}},ge=class extends k{static{s(this,"Tool")}ids(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/experimental/tool/ids",...e,...t})}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"provider"},{in:"query",key:"model"}]}]);return(e?.client??this.client).get({url:"/experimental/tool",...e,...t})}},me=class extends k{static{s(this,"Worktree")}remove(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{key:"worktreeRemoveInput",map:"body"}]}]);return(e?.client??this.client).delete({url:"/experimental/worktree",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/experimental/worktree",...e,...t})}create(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{key:"worktreeCreateInput",map:"body"}]}]);return(e?.client??this.client).post({url:"/experimental/worktree",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}reset(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{key:"worktreeResetInput",map:"body"}]}]);return(e?.client??this.client).post({url:"/experimental/worktree/reset",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},fe=class extends k{static{s(this,"Session2")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"roots"},{in:"query",key:"start"},{in:"query",key:"search"},{in:"query",key:"limit"}]}]);return(e?.client??this.client).get({url:"/session",...e,...t})}create(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"parentID"},{in:"body",key:"title"},{in:"body",key:"permission"},{in:"body",key:"workspaceID"}]}]);return(e?.client??this.client).post({url:"/session",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}status(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/session/status",...e,...t})}delete(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).delete({url:"/session/{sessionID}",...e,...t})}get(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/session/{sessionID}",...e,...t})}update(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"title"},{in:"body",key:"time"}]}]);return(e?.client??this.client).patch({url:"/session/{sessionID}",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}children(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/session/{sessionID}/children",...e,...t})}todo(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/session/{sessionID}/todo",...e,...t})}init(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/session/{sessionID}/init",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}fork(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"messageID"}]}]);return(e?.client??this.client).post({url:"/session/{sessionID}/fork",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}abort(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/session/{sessionID}/abort",...e,...t})}unshare(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).delete({url:"/session/{sessionID}/share",...e,...t})}share(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/session/{sessionID}/share",...e,...t})}diff(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"messageID"}]}]);return(e?.client??this.client).get({url:"/session/{sessionID}/diff",...e,...t})}summarize(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/session/{sessionID}/summarize",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}messages(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"limit"},{in:"query",key:"before"}]}]);return(e?.client??this.client).get({url:"/session/{sessionID}/message",...e,...t})}prompt(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/session/{sessionID}/message",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}deleteMessage(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).delete({url:"/session/{sessionID}/message/{messageID}",...e,...t})}message(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/session/{sessionID}/message/{messageID}",...e,...t})}promptAsync(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/session/{sessionID}/prompt_async",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}command(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/session/{sessionID}/command",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}shell(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/session/{sessionID}/shell",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}revert(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"messageID"},{in:"body",key:"partID"}]}]);return(e?.client??this.client).post({url:"/session/{sessionID}/revert",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}unrevert(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/session/{sessionID}/unrevert",...e,...t})}},we=class extends k{static{s(this,"Part")}delete(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"path",key:"partID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).delete({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...e,...t})}update(r,e){let t=i([r],[{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(e?.client??this.client).patch({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},ke=class extends k{static{s(this,"Permission")}respond(r,e){let t=i([r],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"permissionID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"response"}]}]);return(e?.client??this.client).post({url:"/session/{sessionID}/permissions/{permissionID}",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}reply(r,e){let t=i([r],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"reply"},{in:"body",key:"message"}]}]);return(e?.client??this.client).post({url:"/permission/{requestID}/reply",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/permission",...e,...t})}},be=class extends k{static{s(this,"Question")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/question",...e,...t})}reply(r,e){let t=i([r],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"answers"}]}]);return(e?.client??this.client).post({url:"/question/{requestID}/reply",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}reject(r,e){let t=i([r],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/question/{requestID}/reject",...e,...t})}},Te=class extends k{static{s(this,"Oauth")}authorize(r,e){let t=i([r],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"method"},{in:"body",key:"inputs"}]}]);return(e?.client??this.client).post({url:"/provider/{providerID}/oauth/authorize",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}callback(r,e){let t=i([r],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"method"},{in:"body",key:"code"}]}]);return(e?.client??this.client).post({url:"/provider/{providerID}/oauth/callback",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},Oe=class extends k{static{s(this,"Provider")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/provider",...e,...t})}auth(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/provider/auth",...e,...t})}_oauth;get oauth(){return this._oauth??=new Te({client:this.client})}},Ee=class extends k{static{s(this,"Find")}text(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"pattern"}]}]);return(e?.client??this.client).get({url:"/find",...e,...t})}files(r,e){let t=i([r],[{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(e?.client??this.client).get({url:"/find/file",...e,...t})}symbols(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"query"}]}]);return(e?.client??this.client).get({url:"/find/symbol",...e,...t})}},Re=class extends k{static{s(this,"File")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"path"}]}]);return(e?.client??this.client).get({url:"/file",...e,...t})}read(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"path"}]}]);return(e?.client??this.client).get({url:"/file/content",...e,...t})}status(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/file/status",...e,...t})}},xe=class extends k{static{s(this,"Event")}subscribe(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).sse.get({url:"/event",...e,...t})}},Se=class extends k{static{s(this,"Auth2")}remove(r,e){let t=i([r],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).delete({url:"/mcp/{name}/auth",...e,...t})}start(r,e){let t=i([r],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/mcp/{name}/auth",...e,...t})}callback(r,e){let t=i([r],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"code"}]}]);return(e?.client??this.client).post({url:"/mcp/{name}/auth/callback",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}authenticate(r,e){let t=i([r],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/mcp/{name}/auth/authenticate",...e,...t})}},ve=class extends k{static{s(this,"Mcp")}status(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/mcp",...e,...t})}add(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"name"},{in:"body",key:"config"}]}]);return(e?.client??this.client).post({url:"/mcp",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}connect(r,e){let t=i([r],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/mcp/{name}/connect",...e,...t})}disconnect(r,e){let t=i([r],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/mcp/{name}/disconnect",...e,...t})}_auth;get auth(){return this._auth??=new Se({client:this.client})}},qe=class extends k{static{s(this,"Control")}next(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/tui/control/next",...e,...t})}response(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{key:"body",map:"body"}]}]);return(e?.client??this.client).post({url:"/tui/control/response",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}},Ie=class extends k{static{s(this,"Tui")}appendPrompt(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"text"}]}]);return(e?.client??this.client).post({url:"/tui/append-prompt",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}openHelp(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/tui/open-help",...e,...t})}openSessions(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/tui/open-sessions",...e,...t})}openThemes(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/tui/open-themes",...e,...t})}openModels(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/tui/open-models",...e,...t})}submitPrompt(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/tui/submit-prompt",...e,...t})}clearPrompt(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/tui/clear-prompt",...e,...t})}executeCommand(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"command"}]}]);return(e?.client??this.client).post({url:"/tui/execute-command",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}showToast(r,e){let t=i([r],[{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(e?.client??this.client).post({url:"/tui/show-toast",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}publish(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{key:"body",map:"body"}]}]);return(e?.client??this.client).post({url:"/tui/publish",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}selectSession(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"body",key:"sessionID"}]}]);return(e?.client??this.client).post({url:"/tui/select-session",...e,...t,headers:{"Content-Type":"application/json",...e?.headers,...t.headers}})}_control;get control(){return this._control??=new qe({client:this.client})}},De=class extends k{static{s(this,"Instance")}dispose(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).post({url:"/instance/dispose",...e,...t})}},Ce=class extends k{static{s(this,"Path")}get(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/path",...e,...t})}},Pe=class extends k{static{s(this,"Vcs")}get(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/vcs",...e,...t})}diff(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"},{in:"query",key:"mode"}]}]);return(e?.client??this.client).get({url:"/vcs/diff",...e,...t})}},Ae=class extends k{static{s(this,"Command")}list(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/command",...e,...t})}},_e=class extends k{static{s(this,"Lsp")}status(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/lsp",...e,...t})}},je=class extends k{static{s(this,"Formatter")}status(r,e){let t=i([r],[{args:[{in:"query",key:"directory"},{in:"query",key:"workspace"}]}]);return(e?.client??this.client).get({url:"/formatter",...e,...t})}},F=class n extends k{static{s(this,"OpencodeClient")}static __registry=new re;constructor(r){super(r),n.__registry.set(this,r?.key)}_global;get global(){return this._global??=new se({client:this.client})}_auth;get auth(){return this._auth??=new oe({client:this.client})}_app;get app(){return this._app??=new ie({client:this.client})}_project;get project(){return this._project??=new ae({client:this.client})}_pty;get pty(){return this._pty??=new ce({client:this.client})}_config;get config(){return this._config??=new pe({client:this.client})}_experimental;get experimental(){return this._experimental??=new he({client:this.client})}_tool;get tool(){return this._tool??=new ge({client:this.client})}_worktree;get worktree(){return this._worktree??=new me({client:this.client})}_session;get session(){return this._session??=new fe({client:this.client})}_part;get part(){return this._part??=new we({client:this.client})}_permission;get permission(){return this._permission??=new ke({client:this.client})}_question;get question(){return this._question??=new be({client:this.client})}_provider;get provider(){return this._provider??=new Oe({client:this.client})}_find;get find(){return this._find??=new Ee({client:this.client})}_file;get file(){return this._file??=new Re({client:this.client})}_event;get event(){return this._event??=new xe({client:this.client})}_mcp;get mcp(){return this._mcp??=new ve({client:this.client})}_tui;get tui(){return this._tui??=new Ie({client:this.client})}_instance;get instance(){return this._instance??=new De({client:this.client})}_path;get path(){return this._path??=new Ce({client:this.client})}_vcs;get vcs(){return this._vcs??=new Pe({client:this.client})}_command;get command(){return this._command??=new Ae({client:this.client})}_lsp;get lsp(){return this._lsp??=new _e({client:this.client})}_formatter;get formatter(){return this._formatter??=new je({client:this.client})}};function Rr(n,r,e){if(n)return r&&(n===r||e&&n===e(r))?r:n}s(Rr,"pick");function xr(n,r){if(n.method!=="GET"&&n.method!=="HEAD")return n;let e=new URL(n.url),t=!1;for(let[u,d]of[["x-opencode-directory","directory"],["x-opencode-workspace","workspace"]]){let l=Rr(n.headers.get(u),d==="directory"?r.directory:r.workspace,d==="directory"?encodeURIComponent:void 0);l&&(e.searchParams.has(d)||e.searchParams.set(d,l),t=!0)}if(!t)return n;let a=new Request(e,n);return a.headers.delete("x-opencode-directory"),a.headers.delete("x-opencode-workspace"),a}s(xr,"rewrite");function W(n){n?.fetch||(n={...n,fetch:s(t=>(t.timeout=!1,fetch(t)),"customFetch")}),n?.directory&&(n.headers={...n.headers,"x-opencode-directory":encodeURIComponent(n.directory)}),n?.experimental_workspaceID&&(n.headers={...n.headers,"x-opencode-workspace":n.experimental_workspaceID});let r=M(n);return r.interceptors.request.use(e=>xr(e,{directory:n?.directory,workspace:n?.experimental_workspaceID})),new F({client:r})}s(W,"createOpencodeClient");import Ht from"cross-spawn";var ze;(y=>{function n(o){return o.replace(/\b\w/g,c=>c.toUpperCase())}y.titlecase=n,s(n,"titlecase");function r(o){return new Date(o).toLocaleTimeString(void 0,{timeStyle:"short"})}y.time=r,s(r,"time");function e(o){let c=new Date(o),h=r(o),w=c.toLocaleDateString();return`${h} \xB7 ${w}`}y.datetime=e,s(e,"datetime");function t(o){let c=new Date(o),h=new Date;return c.getFullYear()===h.getFullYear()&&c.getMonth()===h.getMonth()&&c.getDate()===h.getDate()?r(o):e(o)}y.todayTimeOrDateTime=t,s(t,"todayTimeOrDateTime");function a(o){return o>=1e6?(o/1e6).toFixed(1)+"M":o>=1e3?(o/1e3).toFixed(1)+"K":o.toString()}y.number=a,s(a,"number");function u(o){if(o<1e3)return`${o}ms`;if(o<6e4)return`${(o/1e3).toFixed(1)}s`;if(o<36e5){let w=Math.floor(o/6e4),v=Math.floor(o%6e4/1e3);return`${w}m ${v}s`}if(o<864e5){let w=Math.floor(o/36e5),v=Math.floor(o%36e5/6e4);return`${w}h ${v}m`}let c=Math.floor(o/36e5);return`${Math.floor(o%36e5/864e5)}d ${c}h`}y.duration=u,s(u,"duration");function d(o,c){return o.length<=c?o:o.slice(0,c-1)+"\u2026"}y.truncate=d,s(d,"truncate");function l(o,c=35){if(o.length<=c)return o;let h="\u2026",w=Math.ceil((c-h.length)/2),v=Math.floor((c-h.length)/2);return o.slice(0,w)+h+o.slice(-v)}y.truncateMiddle=l,s(l,"truncateMiddle");function m(o,c,h){return(o===1?c:h).replace("{}",o.toString())}y.pluralize=m,s(m,"pluralize")})(ze||={});function q(n){let r=n.state;return{input:r.input,metadata:"metadata"in r?r.metadata:{},part:n}}s(q,"props");function I(n){let r=n.description?f.Style.TEXT_DIM+` ${n.description}`+f.Style.TEXT_NORMAL:"";f.println(f.Style.TEXT_NORMAL+n.icon,f.Style.TEXT_NORMAL+n.title+r)}s(I,"inline");function X(n,r){f.empty(),I(n),r?.trim()&&(f.println(r),f.empty())}s(X,"block");function sr(n){let r=n.state,e="input"in r?r.input:void 0,t=("title"in r&&r.title?r.title:void 0)||(e&&typeof e=="object"&&Object.keys(e).length>0?JSON.stringify(e):"Unknown");I({icon:"\u2699",title:`${n.tool} ${t}`})}s(sr,"fallback");function vr(n){let r=n.input.path??"",e=`Glob "${n.input.pattern}"`,t=r?`in ${_(r)}`:"",a=n.metadata.count,u=a===void 0?t:`${t}${t?" \xB7 ":""}${a} ${a===1?"match":"matches"}`;I({icon:"\u2731",title:e,...u&&{description:u}})}s(vr,"glob");function qr(n){let r=n.input.path??"",e=`Grep "${n.input.pattern}"`,t=r?`in ${_(r)}`:"",a=n.metadata.matches,u=a===void 0?t:`${t}${t?" \xB7 ":""}${a} ${a===1?"match":"matches"}`;I({icon:"\u2731",title:e,...u&&{description:u}})}s(qr,"grep");function Ir(n){let r=n.input.path?_(n.input.path):"";I({icon:"\u2192",title:r?`List ${r}`:"List"})}s(Ir,"list");function Dr(n){let r=_(n.input.filePath),e=Object.entries(n.input).filter(([a,u])=>a==="filePath"?!1:typeof u=="string"||typeof u=="number"||typeof u=="boolean"),t=e.length?`[${e.map(([a,u])=>`${a}=${u}`).join(", ")}]`:void 0;I({icon:"\u2192",title:`Read ${r}`,...t&&{description:t}})}s(Dr,"read");function Cr(n){X({icon:"\u2190",title:`Write ${_(n.input.filePath)}`},n.part.state.status==="completed"?n.part.state.output:void 0)}s(Cr,"write");function Pr(n){I({icon:"%",title:`WebFetch ${n.input.url}`})}s(Pr,"webfetch");function Ar(n){let r=_(n.input.filePath),e=n.metadata.diff;X({icon:"\u2190",title:`Edit ${r}`},e)}s(Ar,"edit");function _r(n){I({icon:"\u25C7",title:`Exa Code Search "${n.input.query}"`})}s(_r,"codesearch");function jr(n){I({icon:"\u25C8",title:`Exa Web Search "${n.input.query}"`})}s(jr,"websearch");function or(n){let r=n.part.state.input,e=n.part.state.status,t=typeof r.subagent_type=="string"&&r.subagent_type.trim().length>0?r.subagent_type:"unknown",a=ze.titlecase(t),u=typeof r.description=="string"&&r.description.trim().length>0?r.description:void 0,d=e==="error"?"\u2717":e==="running"?"\u2022":"\u2713",l=u??`${a} Task`;I({icon:d,title:l,description:u?`${a} Agent`:void 0})}s(or,"task");function zr(n){I({icon:"\u2192",title:`Skill "${n.input.name}"`})}s(zr,"skill");function Mr(n){let r=n.part.state.status==="completed"?n.part.state.output?.trim():void 0;X({icon:"$",title:`${n.input.command}`},r)}s(Mr,"bash");function $r(n){X({icon:"#",title:"Todos"},n.input.todos.map(r=>`${r.status==="completed"?"[x]":"[ ]"} ${r.content}`).join(`
|
|
19
19
|
`))}s($r,"todo");function _(n){return n?B.isAbsolute(n)?B.relative(process.cwd(),n)||".":n:""}s(_,"normalizePath");var Tn={command:"run [message..]",describe:"run opencode with a message",builder:s(n=>n.positional("message",{describe:"message to send",type:"string",array:!0,default:[]}).option("command",{describe:"the command to run, use message for args",type:"string"}).option("continue",{alias:["c"],describe:"continue the last session",type:"boolean"}).option("session",{alias:["s"],describe:"session id to continue",type:"string"}).option("fork",{describe:"fork the session before continuing (requires --continue or --session)",type:"boolean"}).option("share",{type:"boolean",describe:"share the session"}).option("model",{type:"string",alias:["m"],describe:"model to use in the format of provider/model"}).option("agent",{type:"string",describe:"agent to use"}).option("format",{type:"string",choices:["default","json"],default:"default",describe:"format: default (formatted) or json (raw JSON events)"}).option("file",{alias:["f"],type:"string",array:!0,describe:"file(s) to attach to message"}).option("title",{type:"string",describe:"title for the session (uses truncated prompt if no value provided)"}).option("attach",{type:"string",describe:"attach to a running opencode server (e.g., http://localhost:4096)"}).option("password",{alias:["p"],type:"string",describe:"basic auth password (defaults to OPENCODE_SERVER_PASSWORD)"}).option("dir",{type:"string",describe:"directory to run in, path on remote server if attaching"}).option("port",{type:"number",describe:"port for the local server (defaults to random port if no value provided)"}).option("variant",{type:"string",describe:"model variant (provider-specific reasoning effort, e.g., high, max, minimal)"}).option("thinking",{type:"boolean",describe:"show thinking blocks",default:!1}).option("dangerously-skip-permissions",{type:"boolean",describe:"auto-approve permissions that are not explicitly denied (dangerous!)",default:!1}),"builder"),handler:s(async n=>{let r=[...n.message,...n["--"]||[]].map(y=>y.includes(" ")?`"${y.replace(/"/g,'\\"')}"`:y).join(" "),e=(()=>{if(n.dir){if(n.attach)return n.dir;try{return process.chdir(n.dir),process.cwd()}catch{f.error("Failed to change directory to "+n.dir),process.exit(1)}}})(),t=[];if(n.file){let y=Array.isArray(n.file)?n.file:[n.file];for(let o of y){let c=B.resolve(process.cwd(),o);await H.exists(c)||(f.error(`File not found: ${o}`),process.exit(1));let h=await H.isDir(c)?"application/x-directory":"text/plain";t.push({type:"file",url:Sr(c).href,filename:B.basename(c),mime:h})}}process.stdin.isTTY||(r+=`
|
|
20
|
-
`+await Bun.stdin.text()),r.trim().length===0&&!n.command&&(f.error("You must provide a message or a command"),process.exit(1)),n.fork&&!n.continue&&!n.session&&(f.error("--fork requires --continue or --session"),process.exit(1));let a=[{permission:"question",action:"deny",pattern:"*"},{permission:"plan_enter",action:"deny",pattern:"*"},{permission:"plan_exit",action:"deny",pattern:"*"}];function u(){if(n.title!==void 0)return n.title!==""?n.title:r.slice(0,50)+(r.length>50?"...":"")}s(u,"title");async function d(y){let o=n.continue?(await y.session.list()).data?.find(w=>!w.parentID)?.id:n.session;if(o&&n.fork)return(await y.session.fork({sessionID:o})).data?.id;if(o)return o;let c=u();return(await y.session.create({title:c,permission:a})).data?.id}s(d,"session");async function l(y,o){let c=await y.config.get();if(!c.data||c.data.share!=="auto"&&!We.OPENCODE_AUTO_SHARE&&!n.share)return;let h=await y.session.share({sessionID:o}).catch(w=>(w instanceof Error&&w.message.includes("disabled")&&f.println(f.Style.TEXT_DANGER_BOLD+"! "+w.message),{error:w}));!h.error&&"data"in h&&h.data?.share?.url&&f.println(f.Style.TEXT_INFO_BOLD+"~ "+h.data.share.url)}s(l,"share");async function m(y){function o(g){try{return g.tool==="bash"?Mr(
|
|
20
|
+
`+await Bun.stdin.text()),r.trim().length===0&&!n.command&&(f.error("You must provide a message or a command"),process.exit(1)),n.fork&&!n.continue&&!n.session&&(f.error("--fork requires --continue or --session"),process.exit(1));let a=[{permission:"question",action:"deny",pattern:"*"},{permission:"plan_enter",action:"deny",pattern:"*"},{permission:"plan_exit",action:"deny",pattern:"*"}];function u(){if(n.title!==void 0)return n.title!==""?n.title:r.slice(0,50)+(r.length>50?"...":"")}s(u,"title");async function d(y){let o=n.continue?(await y.session.list()).data?.find(w=>!w.parentID)?.id:n.session;if(o&&n.fork)return(await y.session.fork({sessionID:o})).data?.id;if(o)return o;let c=u();return(await y.session.create({title:c,permission:a})).data?.id}s(d,"session");async function l(y,o){let c=await y.config.get();if(!c.data||c.data.share!=="auto"&&!We.OPENCODE_AUTO_SHARE&&!n.share)return;let h=await y.session.share({sessionID:o}).catch(w=>(w instanceof Error&&w.message.includes("disabled")&&f.println(f.Style.TEXT_DANGER_BOLD+"! "+w.message),{error:w}));!h.error&&"data"in h&&h.data?.share?.url&&f.println(f.Style.TEXT_INFO_BOLD+"~ "+h.data.share.url)}s(l,"share");async function m(y){function o(g){try{return g.tool==="bash"?Mr({input:g.state.input,part:g}):g.tool==="glob"?vr(q(g)):g.tool==="grep"?qr(q(g)):g.tool==="list"?Ir(q(g)):g.tool==="read"?Dr(q(g)):g.tool==="write"?Cr(q(g)):g.tool==="webfetch"?Pr(q(g)):g.tool==="edit"?Ar(q(g)):g.tool==="codesearch"?_r(q(g)):g.tool==="websearch"?jr(q(g)):g.tool==="task"?or(q(g)):g.tool==="todowrite"?$r(q(g)):g.tool==="skill"?zr(q(g)):sr(g)}catch{return sr(g)}}s(o,"tool");function c(g,E){return n.format==="json"?(process.stdout.write(JSON.stringify({type:g,timestamp:Date.now(),sessionID:O,...E})+G),!0):!1}s(c,"emit");let h=await y.event.subscribe(),w;async function v(){let g=new Map;for await(let E of h.stream){if(E.type==="message.updated"&&E.properties.info.role==="assistant"&&n.format!=="json"&&g.get("start")!==!0&&(f.empty(),f.println(`> ${E.properties.info.agent} \xB7 ${E.properties.info.modelID}`),f.empty(),g.set("start",!0)),E.type==="message.part.updated"){let p=E.properties.part;if(p.sessionID!==O)continue;if(p.type==="tool"&&(p.state.status==="completed"||p.state.status==="error")){if(c("tool_use",{part:p}))continue;if(p.state.status==="completed"){o(p);continue}I({icon:"\u2717",title:`${p.tool} failed`}),f.error(p.state.error)}if(p.type==="tool"&&p.tool==="task"&&p.state.status==="running"&&n.format!=="json"){if(g.get(p.id)===!0)continue;or(q(p)),g.set(p.id,!0)}if(p.type==="step-start"&&c("step_start",{part:p})||p.type==="step-finish"&&c("step_finish",{part:p}))continue;if(p.type==="text"&&p.time?.end){if(c("text",{part:p}))continue;let T=p.text.trim();if(!T)continue;if(!process.stdout.isTTY){process.stdout.write(T+G);continue}f.empty(),f.println(T),f.empty()}if(p.type==="reasoning"&&p.time?.end&&n.thinking){if(c("reasoning",{part:p}))continue;let T=p.text.trim();if(!T)continue;let R=`Thinking: ${T}`;if(process.stdout.isTTY){f.empty(),f.println(`${f.Style.TEXT_DIM}\x1B[3m${R}\x1B[0m${f.Style.TEXT_NORMAL}`),f.empty();continue}process.stdout.write(R+G)}}if(E.type==="session.error"){let p=E.properties;if(p.sessionID!==O||!p.error)continue;let T=String(p.error.name);if("data"in p.error&&p.error.data&&"message"in p.error.data&&(T=String(p.error.data.message)),w=w?w+G+T:T,c("error",{error:p.error}))continue;f.error(T)}if(E.type==="session.status"&&E.properties.sessionID===O&&E.properties.status.type==="idle")break;if(E.type==="permission.asked"){let p=E.properties;if(p.sessionID!==O)continue;n["dangerously-skip-permissions"]?await y.permission.reply({requestID:p.id,reply:"once"}):(f.println(f.Style.TEXT_WARNING_BOLD+"!",f.Style.TEXT_NORMAL+`permission requested: ${p.permission} (${p.patterns.join(", ")}); auto-rejecting`),await y.permission.reply({requestID:p.id,reply:"reject"}))}}}s(v,"loop");let b=await(async()=>{if(!n.agent)return;if(n.attach){let E=await y.app.agents(void 0,{throwOnError:!0}).then(T=>T.data??[]).catch(()=>{});if(!E){f.println(f.Style.TEXT_WARNING_BOLD+"!",f.Style.TEXT_NORMAL,`failed to list agents from ${n.attach}. Falling back to default agent`);return}let p=E.find(T=>T.name===n.agent);if(!p){f.println(f.Style.TEXT_WARNING_BOLD+"!",f.Style.TEXT_NORMAL,`agent "${n.agent}" not found. Falling back to default agent`);return}if(p.mode==="subagent"){f.println(f.Style.TEXT_WARNING_BOLD+"!",f.Style.TEXT_NORMAL,`agent "${n.agent}" is a subagent, not a primary agent. Falling back to default agent`);return}return n.agent}let g=await Be.get(n.agent);if(!g){f.println(f.Style.TEXT_WARNING_BOLD+"!",f.Style.TEXT_NORMAL,`agent "${n.agent}" not found. Falling back to default agent`);return}if(g.mode==="subagent"){f.println(f.Style.TEXT_WARNING_BOLD+"!",f.Style.TEXT_NORMAL,`agent "${n.agent}" is a subagent, not a primary agent. Falling back to default agent`);return}return n.agent})(),O=await d(y);if(O||(f.error("Session not found"),process.exit(1)),await l(y,O),v().catch(g=>{console.error(g),process.exit(1)}),n.command)await y.session.command({sessionID:O,agent:b,model:n.model,command:n.command,arguments:r,variant:n.variant});else{let g=n.model?Ge.parseModel(n.model):void 0;await y.session.prompt({sessionID:O,agent:b,model:g,variant:n.variant,parts:[...t,{type:"text",text:r}]})}}if(s(m,"execute"),n.attach){let y=(()=>{let c=n.password??process.env.OPENCODE_SERVER_PASSWORD;if(!c)return;let h=process.env.OPENCODE_SERVER_USERNAME??"opencode";return{Authorization:`Basic ${Buffer.from(`${h}:${c}`).toString("base64")}`}})(),o=W({baseUrl:n.attach,directory:e,headers:y});return await m(o)}await Ve(process.cwd(),async()=>{let o=W({baseUrl:"http://opencode.internal",fetch:s((async(c,h)=>{let w=new Request(c,h);return He.Default().fetch(w)}),"fetchFn")});await m(o)})},"handler")};export{Tn as RunCommand};
|
|
@@ -9,4 +9,4 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{A as
|
|
12
|
+
import{A as b,z as a}from"./chunk-IR6PDN4W.js";import"./chunk-LTCXIXYM.js";import"./chunk-M4CB72HE.js";import"./chunk-MBZTOEAD.js";export{b as makeRuntime,a as memoMap};
|
package/dist/run.js
CHANGED
|
@@ -9,4 +9,4 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{homedir as o}from"node:os";import{join as a}from"node:path";var t=a(o(),".alchemy_lab","opencode");process.env.OPENCODE_DATA_DIR=process.env.OPENCODE_DATA_DIR||t;var{RunCommand:r}=await import("./run-
|
|
12
|
+
import{homedir as o}from"node:os";import{join as a}from"node:path";var t=a(o(),".alchemy_lab","opencode");process.env.OPENCODE_DATA_DIR=process.env.OPENCODE_DATA_DIR||t;var{RunCommand:r}=await import("./run-AUCA7EKA.js"),e=(await import("yargs")).default,{hideBin:i}=await import("yargs/helpers");e(i(process.argv)).command(r).strict().help().parse();
|
package/dist/serve.js
CHANGED
|
@@ -9,4 +9,4 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{a as s}from"./chunk-MBZTOEAD.js";import{Agent as i,setGlobalDispatcher as c}from"undici";import{homedir as p}from"node:os";import{join as l}from"node:path";c(new i({connect:{keepAlive:!0,keepAliveInitialDelay:5e3},headersTimeout:0,bodyTimeout:0}));function o(e,t){let r=process.argv.indexOf(`--${e}`);return r!==-1&&process.argv[r+1]?process.argv[r+1]:t}s(o,"arg");var m=l(p(),".alchemy_lab","opencode"),d=o("data-dir",m);process.env.OPENCODE_DATA_DIR=d;var{Log:a}=await import("./log-MVJ7H4K5.js"),v=o("log-level","INFO").toUpperCase(),n=a.Level.safeParse(v);a.init({print:!0,level:n.success?n.data:"INFO"});var{Server:g}=await import("./server-
|
|
12
|
+
import{a as s}from"./chunk-MBZTOEAD.js";import{Agent as i,setGlobalDispatcher as c}from"undici";import{homedir as p}from"node:os";import{join as l}from"node:path";c(new i({connect:{keepAlive:!0,keepAliveInitialDelay:5e3},headersTimeout:0,bodyTimeout:0}));function o(e,t){let r=process.argv.indexOf(`--${e}`);return r!==-1&&process.argv[r+1]?process.argv[r+1]:t}s(o,"arg");var m=l(p(),".alchemy_lab","opencode"),d=o("data-dir",m);process.env.OPENCODE_DATA_DIR=d;var{Log:a}=await import("./log-MVJ7H4K5.js"),v=o("log-level","INFO").toUpperCase(),n=a.Level.safeParse(v);a.init({print:!0,level:n.success?n.data:"INFO"});var{Server:g}=await import("./server-PIYRZLBG.js"),u=parseInt(o("port","4096"),10),h=o("hostname","127.0.0.1");try{let e=await g.listen({port:u,hostname:h});console.log(`opencode server listening on http://${e.hostname}:${e.port}`);let t=s(async()=>{await e.stop(!0),process.exit(0)},"shutdown");process.on("SIGINT",t),process.on("SIGTERM",t),await new Promise(()=>{})}catch(e){console.error("Failed to start server:",e),process.exit(1)}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Built by esbuild from opencode-server source
|
|
2
|
+
if (typeof globalThis.Bun === 'undefined') {
|
|
3
|
+
globalThis.Bun = {
|
|
4
|
+
version: '0.0.0-node-compat',
|
|
5
|
+
stdin: { async text() { const chunks = []; for await (const c of process.stdin) chunks.push(c); return Buffer.concat(chunks).toString(); } },
|
|
6
|
+
which(cmd) { try { return require('child_process').execFileSync('which', [cmd], { encoding: 'utf8' }).trim(); } catch { return null; } },
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
|
+
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
|
+
|
|
12
|
+
import{a}from"./chunk-GBXMNWYD.js";import"./chunk-5P5WLADX.js";import"./chunk-2ANK3QEN.js";import"./chunk-PWFRMDDF.js";import"./chunk-A7EXZZPC.js";import"./chunk-G752V4OP.js";import"./chunk-IR6PDN4W.js";import"./chunk-7KKA6WBY.js";import"./chunk-LTCXIXYM.js";import"./chunk-M4CB72HE.js";import"./chunk-CZVKIDQZ.js";import"./chunk-MBZTOEAD.js";export{a as Server};
|
|
@@ -9,4 +9,4 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{
|
|
12
|
+
import{Q as a}from"./chunk-G752V4OP.js";import"./chunk-IR6PDN4W.js";import"./chunk-7KKA6WBY.js";import"./chunk-LTCXIXYM.js";import"./chunk-M4CB72HE.js";import"./chunk-MBZTOEAD.js";export{a as Session};
|
|
@@ -9,4 +9,4 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{
|
|
12
|
+
import{a}from"./chunk-A7EXZZPC.js";import"./chunk-G752V4OP.js";import"./chunk-IR6PDN4W.js";import"./chunk-7KKA6WBY.js";import"./chunk-LTCXIXYM.js";import"./chunk-M4CB72HE.js";import"./chunk-MBZTOEAD.js";export{a as ShareNext};
|
|
@@ -9,4 +9,4 @@ if (typeof globalThis.Bun === 'undefined') {
|
|
|
9
9
|
if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
|
|
10
10
|
if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
|
|
11
11
|
|
|
12
|
-
import{
|
|
12
|
+
import{c as n,d as o}from"./chunk-5P5WLADX.js";import"./chunk-A7EXZZPC.js";import"./chunk-G752V4OP.js";import"./chunk-IR6PDN4W.js";import"./chunk-7KKA6WBY.js";import"./chunk-LTCXIXYM.js";import"./chunk-M4CB72HE.js";import"./chunk-MBZTOEAD.js";var t=o.extend({name:o.shape.name.unwrap(),branch:o.shape.branch.unwrap(),directory:o.shape.directory.unwrap()}),i={async configure(e){let r=await n.makeWorktreeInfo(e.name??void 0);return{...e,name:r.name,branch:r.branch,directory:r.directory}},async create(e){let r=t.parse(e);await n.createFromInfo({name:r.name,directory:r.directory,branch:r.branch})},async remove(e){let r=t.parse(e);await n.remove({directory:r.directory})},target(e){return{type:"local",directory:t.parse(e).directory}}};export{i as WorktreeAdaptor};
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alchemylab-opencode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.26",
|
|
4
4
|
"description": "OpenCode server runtime for AlchemyLab",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "node build.mjs",
|
|
9
|
-
"prepublishOnly": "npm run build"
|
|
9
|
+
"prepublishOnly": "npm run build",
|
|
10
|
+
"prepack": "node ../scripts/check-shipped.mjs --npm ."
|
|
10
11
|
},
|
|
11
12
|
"files": [
|
|
12
13
|
"dist/**/*.js",
|
|
@@ -48,6 +49,7 @@
|
|
|
48
49
|
"@parcel/watcher": "2.5.1",
|
|
49
50
|
"@zip.js/zip.js": "2.7.62",
|
|
50
51
|
"ai": "6.0.149",
|
|
52
|
+
"ai-gateway-provider": "3.1.2",
|
|
51
53
|
"bonjour-service": "1.3.0",
|
|
52
54
|
"chokidar": "4.0.3",
|
|
53
55
|
"cross-spawn": "7.0.6",
|
|
@@ -78,7 +80,6 @@
|
|
|
78
80
|
"ulid": "3.0.1",
|
|
79
81
|
"venice-ai-sdk-provider": "2.0.1",
|
|
80
82
|
"vscode-jsonrpc": "8.2.1",
|
|
81
|
-
"web-tree-sitter": "0.25.10",
|
|
82
83
|
"which": "6.0.1",
|
|
83
84
|
"xdg-basedir": "5.1.0",
|
|
84
85
|
"yargs": "18.0.0",
|
|
@@ -87,8 +88,7 @@
|
|
|
87
88
|
},
|
|
88
89
|
"trustedDependencies": [
|
|
89
90
|
"esbuild",
|
|
90
|
-
"node-pty"
|
|
91
|
-
"web-tree-sitter"
|
|
91
|
+
"node-pty"
|
|
92
92
|
],
|
|
93
93
|
"engines": {
|
|
94
94
|
"node": ">=22.16 <23 || >=24"
|