@easbot/sdk 0.1.7

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/README.en.md ADDED
@@ -0,0 +1,51 @@
1
+ # EASBot SDK
2
+
3
+ EASBot SDK for client applications.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @easbot/sdk
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { createEasbotClient } from '@easbot/sdk';
15
+
16
+ const client = createEasbotClient({
17
+ baseURL: 'http://localhost:4096',
18
+ });
19
+
20
+ // Use the client
21
+ const result = await client.session.list();
22
+ ```
23
+
24
+ ## Features
25
+
26
+ - **Type-safe**: Full TypeScript support with generated types
27
+ - **Modular**: Separate packages for different functionalities
28
+ - **AI SDK v2 Compatible**: Built on the latest AI SDK standards
29
+ - **OpenAPI Generated**: Automatically generated from OpenAPI specifications
30
+
31
+ ## Packages
32
+
33
+ - `@easbot/sdk` - Main SDK package
34
+ - `@easbot/local-model-sdk` - Local model SDK with transformers and ONNX
35
+
36
+ ## Development
37
+
38
+ ```bash
39
+ # Install dependencies
40
+ pnpm install
41
+
42
+ # Build
43
+ pnpm build
44
+
45
+ # Test
46
+ pnpm test
47
+ ```
48
+
49
+ ## License
50
+
51
+ MIT
package/README.md ADDED
@@ -0,0 +1,129 @@
1
+ # @easbot/sdk
2
+
3
+ [中文](#中文) | [English](#english)
4
+
5
+ ---
6
+
7
+ ## 中文
8
+
9
+ EASBot 客户端应用 SDK。
10
+
11
+ ### 安装
12
+
13
+ ```bash
14
+ npm install @easbot/sdk
15
+ # 或
16
+ pnpm add @easbot/sdk
17
+ ```
18
+
19
+ ### 使用
20
+
21
+ ```typescript
22
+ import { createEasbotClient } from '@easbot/sdk';
23
+
24
+ const client = createEasbotClient({
25
+ baseURL: 'http://localhost:4096',
26
+ });
27
+
28
+ // 使用客户端
29
+ const sessions = await client.session.list();
30
+ const result = await client.chat.send({
31
+ message: '你好,EASBot!',
32
+ });
33
+ ```
34
+
35
+ ### 特性
36
+
37
+ - **类型安全**: 完整的 TypeScript 支持和生成的类型
38
+ - **模块化**: 针对不同功能的独立包
39
+ - **AI SDK v2 兼容**: 基于最新的 AI SDK 标准
40
+ - **OpenAPI 生成**: 从 OpenAPI 规范自动生成
41
+
42
+ ### 包
43
+
44
+ - `@easbot/sdk` - 主要 SDK 包
45
+ - `@easbot/local-model-sdk` - 本地模型 SDK,包含转换器和 ONNX 支持
46
+ - `@easbot/ollama-sdk` - Ollama 集成 SDK
47
+
48
+ ### 开发
49
+
50
+ ```bash
51
+ # 安装依赖
52
+ pnpm install
53
+
54
+ # 构建
55
+ pnpm build
56
+
57
+ # 测试
58
+ pnpm test
59
+
60
+ # 类型检查
61
+ pnpm type-check
62
+ ```
63
+
64
+ ### 许可证
65
+
66
+ MIT
67
+
68
+ ---
69
+
70
+ ## English
71
+
72
+ EASBot SDK for client applications.
73
+
74
+ ### Installation
75
+
76
+ ```bash
77
+ npm install @easbot/sdk
78
+ # or
79
+ pnpm add @easbot/sdk
80
+ ```
81
+
82
+ ### Usage
83
+
84
+ ```typescript
85
+ import { createEasbotClient } from '@easbot/sdk';
86
+
87
+ const client = createEasbotClient({
88
+ baseURL: 'http://localhost:4096',
89
+ });
90
+
91
+ // Use the client
92
+ const sessions = await client.session.list();
93
+ const result = await client.chat.send({
94
+ message: 'Hello, EASBot!',
95
+ });
96
+ ```
97
+
98
+ ### Features
99
+
100
+ - **Type Safety**: Full TypeScript support with generated types
101
+ - **Modular**: Separate packages for different functionalities
102
+ - **AI SDK v2 Compatible**: Based on the latest AI SDK standards
103
+ - **OpenAPI Generated**: Auto-generated from OpenAPI specification
104
+
105
+ ### Packages
106
+
107
+ - `@easbot/sdk` - Main SDK package
108
+ - `@easbot/local-model-sdk` - Local model SDK with transformers and ONNX support
109
+ - `@easbot/ollama-sdk` - Ollama integration SDK
110
+
111
+ ### Development
112
+
113
+ ```bash
114
+ # Install dependencies
115
+ pnpm install
116
+
117
+ # Build
118
+ pnpm build
119
+
120
+ # Test
121
+ pnpm test
122
+
123
+ # Type check
124
+ pnpm type-check
125
+ ```
126
+
127
+ ### License
128
+
129
+ MIT
package/dist/index.cjs ADDED
@@ -0,0 +1,9 @@
1
+ 'use strict';var child_process=require('child_process');var We=Object.defineProperty;var Qe=(s,t,e)=>t in s?We(s,t,{enumerable:true,configurable:true,writable:true,value:e}):s[t]=e;var y=(s,t,e)=>Qe(s,typeof t!="symbol"?t+"":t,e);var De=({onRequest:s,onSseError:t,onSseEvent:e,responseTransformer:r,responseValidator:o,sseDefaultRetryDelay:u,sseMaxRetryAttempts:l,sseMaxRetryDelay:i,sseSleepFn:p,url:m,...c})=>{let a,x=p??(v=>new Promise(g=>setTimeout(g,v)));return {stream:async function*(){let v=u??3e3,g=0,E=c.signal??new AbortController().signal;for(;!E.aborted;){g++;let C=c.headers instanceof Headers?c.headers:new Headers(c.headers);a!==void 0&&C.set("Last-Event-ID",a);try{let T={redirect:"follow",...c,body:c.serializedBody,headers:C,signal:E},w=new Request(m,T);s&&(w=await s(m,T));let h=await(c.fetch??globalThis.fetch)(w);if(!h.ok)throw new Error(`SSE failed: ${h.status} ${h.statusText}`);if(!h.body)throw new Error("No body in SSE response");let f=h.body.pipeThrough(new TextDecoderStream).getReader(),b="",Se=()=>{try{f.cancel();}catch{}};E.addEventListener("abort",Se);try{for(;;){let{done:ze,value:Ge}=await f.read();if(ze)break;b+=Ge,b=b.replace(/\r\n/g,`
2
+ `).replace(/\r/g,`
3
+ `);let ve=b.split(`
4
+
5
+ `);b=ve.pop()??"";for(let Be of ve){let Ne=Be.split(`
6
+ `),M=[],Te;for(let S of Ne)if(S.startsWith("data:"))M.push(S.replace(/^data:\s*/,""));else if(S.startsWith("event:"))Te=S.replace(/^event:\s*/,"");else if(S.startsWith("id:"))a=S.replace(/^id:\s*/,"");else if(S.startsWith("retry:")){let Oe=Number.parseInt(S.replace(/^retry:\s*/,""),10);Number.isNaN(Oe)||(v=Oe);}let O,we=!1;if(M.length){let S=M.join(`
7
+ `);try{O=JSON.parse(S),we=!0;}catch{O=S;}}we&&(o&&await o(O),r&&(O=await r(O))),e?.({data:O,event:Te,id:a,retry:v}),M.length&&(yield O);}}}finally{E.removeEventListener("abort",Se),f.releaseLock();}break}catch(T){if(t?.(T),l!==void 0&&g>=l)break;let w=Math.min(v*2**(g-1),i??3e4);await x(w);}}}()}};var $e=s=>{switch(s){case "label":return ".";case "matrix":return ";";case "simple":return ",";default:return "&"}},He=s=>{switch(s){case "form":return ",";case "pipeDelimited":return "|";case "spaceDelimited":return "%20";default:return ","}},Ve=s=>{switch(s){case "label":return ".";case "matrix":return ";";case "simple":return ",";default:return "&"}},j=({allowReserved:s,explode:t,name:e,style:r,value:o})=>{if(!t){let i=(s?o:o.map(p=>encodeURIComponent(p))).join(He(r));switch(r){case "label":return `.${i}`;case "matrix":return `;${e}=${i}`;case "simple":return i;default:return `${e}=${i}`}}let u=$e(r),l=o.map(i=>r==="label"||r==="simple"?s?i:encodeURIComponent(i):P({allowReserved:s,name:e,value:i})).join(u);return r==="label"||r==="matrix"?u+l:l},P=({allowReserved:s,name:t,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 `${t}=${s?e:encodeURIComponent(e)}`},F=({allowReserved:s,explode:t,name:e,style:r,value:o,valueOnly:u})=>{if(o instanceof Date)return u?o.toISOString():`${e}=${o.toISOString()}`;if(r!=="deepObject"&&!t){let p=[];Object.entries(o).forEach(([c,a])=>{p=[...p,c,s?a:encodeURIComponent(a)];});let m=p.join(",");switch(r){case "form":return `${e}=${m}`;case "label":return `.${m}`;case "matrix":return `;${e}=${m}`;default:return m}}let l=Ve(r),i=Object.entries(o).map(([p,m])=>P({allowReserved:s,name:r==="deepObject"?`${e}[${p}]`:p,value:m})).join(l);return r==="label"||r==="matrix"?l+i:i};var Ke=/\{[^{}]+\}/g,Je=({path:s,url:t})=>{let e=t,r=t.match(Ke);if(r)for(let o of r){let u=false,l=o.substring(1,o.length-1),i="simple";l.endsWith("*")&&(u=true,l=l.substring(0,l.length-1)),l.startsWith(".")?(l=l.substring(1),i="label"):l.startsWith(";")&&(l=l.substring(1),i="matrix");let p=s[l];if(p==null)continue;if(Array.isArray(p)){e=e.replace(o,j({explode:u,name:l,style:i,value:p}));continue}if(typeof p=="object"){e=e.replace(o,F({explode:u,name:l,style:i,value:p,valueOnly:true}));continue}if(i==="matrix"){e=e.replace(o,`;${P({name:l,value:p})}`);continue}let m=encodeURIComponent(i==="label"?`.${p}`:p);e=e.replace(o,m);}return e},Pe=({baseUrl:s,path:t,query:e,querySerializer:r,url:o})=>{let u=o.startsWith("/")?o:`/${o}`,l=(s??"")+u;t&&(l=Je({path:t,url:l}));let i=e?r(e):"";return i.startsWith("?")&&(i=i.substring(1)),i&&(l+=`?${i}`),l};function B(s){let t=s.body!==void 0;if(t&&s.bodySerializer)return "serializedBody"in s?s.serializedBody!==void 0&&s.serializedBody!==""?s.serializedBody:null:s.body!==""?s.body:null;if(t)return s.body}var Ce=async(s,t)=>{let e=typeof t=="function"?await t(s):t;if(e)return s.scheme==="bearer"?`Bearer ${e}`:s.scheme==="basic"?`Basic ${btoa(e)}`:e};var N={bodySerializer:s=>JSON.stringify(s,(t,e)=>typeof e=="bigint"?e.toString():e)};var Ie=({parameters:s={},...t}={})=>r=>{let o=[];if(r&&typeof r=="object")for(let u in r){let l=r[u];if(l==null)continue;let i=s[u]||t;if(Array.isArray(l)){let p=j({allowReserved:i.allowReserved,explode:true,name:u,style:"form",value:l,...i.array});p&&o.push(p);}else if(typeof l=="object"){let p=F({allowReserved:i.allowReserved,explode:true,name:u,style:"deepObject",value:l,...i.object});p&&o.push(p);}else {let p=P({allowReserved:i.allowReserved,name:u,value:l});p&&o.push(p);}}return o.join("&")},Ae=s=>{if(!s)return "stream";let t=s.split(";")[0]?.trim();if(t){if(t.startsWith("application/json")||t.endsWith("+json"))return "json";if(t==="multipart/form-data")return "formData";if(["application/","audio/","image/","video/"].some(e=>t.startsWith(e)))return "blob";if(t.startsWith("text/"))return "text"}},Xe=(s,t)=>t?!!(s.headers.has(t)||s.query?.[t]||s.headers.get("Cookie")?.includes(`${t}=`)):false,qe=async({security:s,...t})=>{for(let e of s){if(Xe(t,e.name))continue;let r=await Ce(e,t.auth);if(!r)continue;let o=e.name??"Authorization";switch(e.in){case "query":t.query||(t.query={}),t.query[o]=r;break;case "cookie":t.headers.append("Cookie",`${o}=${r}`);break;default:t.headers.set(o,r);break}}},W=s=>Pe({baseUrl:s.baseUrl,path:s.path,query:s.query,querySerializer:typeof s.querySerializer=="function"?s.querySerializer:Ie(s.querySerializer),url:s.url}),Q=(s,t)=>{let e={...s,...t};return e.baseUrl?.endsWith("/")&&(e.baseUrl=e.baseUrl.substring(0,e.baseUrl.length-1)),e.headers=U(s.headers,t.headers),e},Ye=s=>{let t=[];return s.forEach((e,r)=>{t.push([r,e]);}),t},U=(...s)=>{let t=new Headers;for(let e of s){if(!e)continue;let r=e instanceof Headers?Ye(e):Object.entries(e);for(let[o,u]of r)if(u===null)t.delete(o);else if(Array.isArray(u))for(let l of u)t.append(o,l);else u!==void 0&&t.set(o,typeof u=="object"?JSON.stringify(u):u);}return t},I=class{constructor(){y(this,"fns",[]);}clear(){this.fns=[];}eject(t){let e=this.getInterceptorIndex(t);this.fns[e]&&(this.fns[e]=null);}exists(t){let e=this.getInterceptorIndex(t);return !!this.fns[e]}getInterceptorIndex(t){return typeof t=="number"?this.fns[t]?t:-1:this.fns.indexOf(t)}update(t,e){let r=this.getInterceptorIndex(t);return this.fns[r]?(this.fns[r]=e,t):false}use(t){return this.fns.push(t),this.fns.length-1}},_e=()=>({error:new I,request:new I,response:new I}),Ze=Ie({allowReserved:false,array:{explode:true,style:"form"},object:{explode:true,style:"deepObject"}}),er={"Content-Type":"application/json"},A=(s={})=>({...N,headers:er,parseAs:"auto",querySerializer:Ze,...s});var q=(s={})=>{let t=Q(A(),s),e=()=>({...t}),r=c=>(t=Q(t,c),e()),o=_e(),u=async c=>{let a={...t,...c,fetch:c.fetch??t.fetch??globalThis.fetch,headers:U(t.headers,c.headers),serializedBody:void 0};a.security&&await qe({...a,security:a.security}),a.requestValidator&&await a.requestValidator(a),a.body!==void 0&&a.bodySerializer&&(a.serializedBody=a.bodySerializer(a.body)),(a.body===void 0||a.serializedBody==="")&&a.headers.delete("Content-Type");let x=W(a);return {opts:a,url:x}},l=async c=>{let{opts:a,url:x}=await u(c),_={redirect:"follow",...a,body:B(a)},k=new Request(x,_);for(let h of o.request.fns)h&&(k=await h(k,a));let v=a.fetch,g;try{g=await v(k);}catch(h){let f=h;for(let b of o.error.fns)b&&(f=await b(h,void 0,k,a));if(f=f||{},a.throwOnError)throw f;return a.responseStyle==="data"?void 0:{error:f,request:k,response:void 0}}for(let h of o.response.fns)h&&(g=await h(g,k,a));let E={request:k,response:g};if(g.ok){let h=(a.parseAs==="auto"?Ae(g.headers.get("Content-Type")):a.parseAs)??"json";if(g.status===204||g.headers.get("Content-Length")==="0"){let b;switch(h){case "arrayBuffer":case "blob":case "text":b=await g[h]();break;case "formData":b=new FormData;break;case "stream":b=g.body;break;default:b={};break}return a.responseStyle==="data"?b:{data:b,...E}}let f;switch(h){case "arrayBuffer":case "blob":case "formData":case "text":f=await g[h]();break;case "json":{let b=await g.text();f=b?JSON.parse(b):{};break}case "stream":return a.responseStyle==="data"?g.body:{data:g.body,...E}}return h==="json"&&(a.responseValidator&&await a.responseValidator(f),a.responseTransformer&&(f=await a.responseTransformer(f))),a.responseStyle==="data"?f:{data:f,...E}}let C=await g.text(),T;try{T=JSON.parse(C);}catch{}let w=T??C,D=w;for(let h of o.error.fns)h&&(D=await h(w,g,k,a));if(D=D||{},a.throwOnError)throw D;return a.responseStyle==="data"?void 0:{error:D,...E}},i=c=>a=>l({...a,method:c}),p=c=>async a=>{let{opts:x,url:_}=await u(a);return De({...x,body:x.body,headers:x.headers,method:c,onRequest:async(k,v)=>{let g=new Request(k,v);for(let E of o.request.fns)E&&(g=await E(g,x));return g},serializedBody:B(x),url:_})};return {buildUrl:c=>W({...t,...c}),connect:i("CONNECT"),delete:i("DELETE"),get:i("GET"),getConfig:e,head:i("HEAD"),interceptors:o,options:i("OPTIONS"),patch:i("PATCH"),post:i("POST"),put:i("PUT"),request:l,setConfig:r,sse:{connect:p("CONNECT"),delete:p("DELETE"),get:p("GET"),head:p("HEAD"),options:p("OPTIONS"),patch:p("PATCH"),post:p("POST"),put:p("PUT"),trace:p("TRACE")},trace:i("TRACE")}};var rr={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},tr=Object.entries(rr),Me=(s,t)=>{t||(t=new Map);for(let e of s)"in"in e?e.key&&t.set(e.key,{in:e.in,map:e.map}):"key"in e?t.set(e.key,{map:e.map}):e.args&&Me(e.args,t);return t},sr=s=>{for(let[t,e]of Object.entries(s))e&&typeof e=="object"&&!Array.isArray(e)&&!Object.keys(e).length&&delete s[t];},n=(s,t)=>{let e={body:{},headers:{},path:{},query:{}},r=Me(t),o;for(let[u,l]of s.entries())if(t[u]&&(o=t[u]),!!o)if("in"in o)if(o.key){let i=r.get(o.key),p=i.map||o.key;i.in&&(e[i.in][p]=l);}else e.body=l;else for(let[i,p]of Object.entries(l??{})){let m=r.get(i);if(m)if(m.in){let c=m.map||i;e[m.in][c]=p;}else e[m.map]=p;else {let c=tr.find(([a])=>i.startsWith(a));if(c){let[a,x]=c;e[x][i.slice(a.length)]=p;}else if("allowExtra"in o&&o.allowExtra){for(let[a,x]of Object.entries(o.allowExtra))if(x){e[a][i]=p;break}}}}return sr(e),e};var je=q(A({baseUrl:"http://localhost:4096"}));var d=class{constructor(t){y(this,"client");this.client=t?.client??je;}},$=class{constructor(){y(this,"defaultKey","default");y(this,"instances",new Map);}get(t){let e=this.instances.get(t??this.defaultKey);if(!e)throw new Error('No SDK client found. Create one with "new EasbotClient()" to fix this error.');return e}set(t,e){this.instances.set(e??this.defaultKey,t);}},H=class extends d{get(t){return (t?.client??this.client).get({url:"/global/config",...t})}update(t,e){let r=n([t],[{args:[{key:"config",map:"body"}]}]);return (e?.client??this.client).patch({url:"/global/config",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}},V=class extends d{constructor(){super(...arguments);y(this,"_config");}health(e){return (e?.client??this.client).get({url:"/global/health",...e})}event(e){return (e?.client??this.client).sse.get({url:"/global/event",...e})}dispose(e){return (e?.client??this.client).post({url:"/global/dispose",...e})}get config(){return this._config??(this._config=new H({client:this.client}))}},K=class extends d{remove(t,e){let r=n([t],[{args:[{in:"path",key:"providerID"}]}]);return (e?.client??this.client).delete({url:"/auth/{providerID}",...e,...r})}set(t,e){let r=n([t],[{args:[{in:"path",key:"providerID"},{key:"auth",map:"body"}]}]);return (e?.client??this.client).put({url:"/auth/{providerID}",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}},J=class extends d{list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/project",...e,...r})}current(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/project/current",...e,...r})}update(t,e){let r=n([t],[{args:[{in:"path",key:"projectID"},{in:"query",key:"directory"},{in:"body",key:"name"},{in:"body",key:"icon"},{in:"body",key:"commands"}]}]);return (e?.client??this.client).patch({url:"/project/{projectID}",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}},X=class extends d{list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/pty",...e,...r})}create(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{in:"body",key:"command"},{in:"body",key:"args"},{in:"body",key:"cwd"},{in:"body",key:"title"},{in:"body",key:"env"}]}]);return (e?.client??this.client).post({url:"/pty",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}remove(t,e){let r=n([t],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).delete({url:"/pty/{ptyID}",...e,...r})}get(t,e){let r=n([t],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/pty/{ptyID}",...e,...r})}update(t,e){let r=n([t],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"size"}]}]);return (e?.client??this.client).put({url:"/pty/{ptyID}",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}connect(t,e){let r=n([t],[{args:[{in:"path",key:"ptyID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/pty/{ptyID}/connect",...e,...r})}},Y=class extends d{get(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/config",...e,...r})}update(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{key:"config",map:"body"}]}]);return (e?.client??this.client).patch({url:"/config",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}providers(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/config/providers",...e,...r})}},Z=class extends d{default(t){return (t?.client??this.client).get({url:"/model/default",...t})}parse(t,e){let r=n([t],[{args:[{in:"query",key:"model"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/model/parse",...e,...r})}},ee=class extends d{ids(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/experimental/tool/ids",...e,...r})}list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{in:"query",key:"provider"},{in:"query",key:"model"}]}]);return (e?.client??this.client).get({url:"/experimental/tool",...e,...r})}},re=class extends d{remove(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{key:"worktreeRemoveInput",map:"body"}]}]);return (e?.client??this.client).delete({url:"/experimental/worktree",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/experimental/worktree",...e,...r})}create(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{key:"worktreeCreateInput",map:"body"}]}]);return (e?.client??this.client).post({url:"/experimental/worktree",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}reset(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{key:"worktreeResetInput",map:"body"}]}]);return (e?.client??this.client).post({url:"/experimental/worktree/reset",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}},te=class extends d{list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/experimental/resource",...e,...r})}},se=class extends d{constructor(){super(...arguments);y(this,"_resource");}get resource(){return this._resource??(this._resource=new te({client:this.client}))}},ne=class extends d{list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{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,...r})}create(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{in:"body",key:"parentID"},{in:"body",key:"title"},{in:"body",key:"permission"}]}]);return (e?.client??this.client).post({url:"/session",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}status(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/session/status",...e,...r})}delete(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).delete({url:"/session/{sessionID}",...e,...r})}get(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/session/{sessionID}",...e,...r})}update(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"time"}]}]);return (e?.client??this.client).patch({url:"/session/{sessionID}",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}children(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/session/{sessionID}/children",...e,...r})}todo(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/session/{sessionID}/todo",...e,...r})}init(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"modelID"},{in:"body",key:"providerID"},{in:"body",key:"messageID"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/init",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}fork(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/fork",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}abort(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/abort",...e,...r})}unshare(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).delete({url:"/session/{sessionID}/share",...e,...r})}share(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/share",...e,...r})}diff(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"messageID"}]}]);return (e?.client??this.client).get({url:"/session/{sessionID}/diff",...e,...r})}summarize(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"providerID"},{in:"body",key:"modelID"},{in:"body",key:"auto"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/summarize",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}messages(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"query",key:"limit"}]}]);return (e?.client??this.client).get({url:"/session/{sessionID}/message",...e,...r})}prompt(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"model"},{in:"body",key:"agent"},{in:"body",key:"noReply"},{in:"body",key:"tools"},{in:"body",key:"system"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/message",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}message(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/session/{sessionID}/message/{messageID}",...e,...r})}promptAsync(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"model"},{in:"body",key:"agent"},{in:"body",key:"noReply"},{in:"body",key:"tools"},{in:"body",key:"system"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/prompt_async",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}command(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"agent"},{in:"body",key:"model"},{in:"body",key:"arguments"},{in:"body",key:"command"},{in:"body",key:"variant"},{in:"body",key:"parts"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/command",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}shell(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"agent"},{in:"body",key:"model"},{in:"body",key:"command"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/shell",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}revert(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"},{in:"body",key:"messageID"},{in:"body",key:"partID"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/revert",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}unrevert(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/unrevert",...e,...r})}},oe=class extends d{delete(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"path",key:"partID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).delete({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...e,...r})}update(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"messageID"},{in:"path",key:"partID"},{in:"query",key:"directory"},{key:"part",map:"body"}]}]);return (e?.client??this.client).patch({url:"/session/{sessionID}/message/{messageID}/part/{partID}",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}},L=class extends d{respond(t,e){let r=n([t],[{args:[{in:"path",key:"sessionID"},{in:"path",key:"permissionID"},{in:"query",key:"directory"},{in:"body",key:"response"}]}]);return (e?.client??this.client).post({url:"/session/{sessionID}/permissions/{permissionID}",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}reply(t,e){let r=n([t],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"body",key:"reply"},{in:"body",key:"message"}]}]);return (e?.client??this.client).post({url:"/permission/{requestID}/reply",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/permission",...e,...r})}},ie=class extends d{list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/question",...e,...r})}reply(t,e){let r=n([t],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"},{in:"body",key:"answers"}]}]);return (e?.client??this.client).post({url:"/question/{requestID}/reply",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}reject(t,e){let r=n([t],[{args:[{in:"path",key:"requestID"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).post({url:"/question/{requestID}/reject",...e,...r})}},ae=class extends d{authorize(t,e){let r=n([t],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"body",key:"method"}]}]);return (e?.client??this.client).post({url:"/provider/{providerID}/oauth/authorize",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}callback(t,e){let r=n([t],[{args:[{in:"path",key:"providerID"},{in:"query",key:"directory"},{in:"body",key:"method"},{in:"body",key:"code"}]}]);return (e?.client??this.client).post({url:"/provider/{providerID}/oauth/callback",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}},pe=class extends d{constructor(){super(...arguments);y(this,"_oauth");}list(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).get({url:"/provider",...r,...o})}auth(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).get({url:"/provider/auth",...r,...o})}get oauth(){return this._oauth??(this._oauth=new ae({client:this.client}))}},le=class extends d{text(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{in:"query",key:"pattern"}]}]);return (e?.client??this.client).get({url:"/find",...e,...r})}files(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{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,...r})}symbols(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{in:"query",key:"query"}]}]);return (e?.client??this.client).get({url:"/find/symbol",...e,...r})}},ye=class extends d{list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return (e?.client??this.client).get({url:"/file",...e,...r})}read(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{in:"query",key:"path"}]}]);return (e?.client??this.client).get({url:"/file/content",...e,...r})}status(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/file/status",...e,...r})}},ue=class extends d{remove(t,e){let r=n([t],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).delete({url:"/mcp/{name}/auth",...e,...r})}start(t,e){let r=n([t],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).post({url:"/mcp/{name}/auth",...e,...r})}callback(t,e){let r=n([t],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"},{in:"body",key:"code"}]}]);return (e?.client??this.client).post({url:"/mcp/{name}/auth/callback",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}authenticate(t,e){let r=n([t],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return (e?.client??this.client).post({url:"/mcp/{name}/auth/authenticate",...e,...r})}},de=class extends d{constructor(){super(...arguments);y(this,"_auth");}status(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).get({url:"/mcp",...r,...o})}add(e,r){let o=n([e],[{args:[{in:"query",key:"directory"},{in:"body",key:"name"},{in:"body",key:"config"}]}]);return (r?.client??this.client).post({url:"/mcp",...r,...o,headers:{"Content-Type":"application/json",...r?.headers,...o.headers}})}connect(e,r){let o=n([e],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/mcp/{name}/connect",...r,...o})}disconnect(e,r){let o=n([e],[{args:[{in:"path",key:"name"},{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/mcp/{name}/disconnect",...r,...o})}get auth(){return this._auth??(this._auth=new ue({client:this.client}))}},ce=class extends d{next(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/tui/control/next",...e,...r})}response(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return (e?.client??this.client).post({url:"/tui/control/response",...e,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}},ge=class extends d{constructor(){super(...arguments);y(this,"_control");}appendPrompt(e,r){let o=n([e],[{args:[{in:"query",key:"directory"},{in:"body",key:"text"}]}]);return (r?.client??this.client).post({url:"/tui/append-prompt",...r,...o,headers:{"Content-Type":"application/json",...r?.headers,...o.headers}})}openHelp(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/tui/open-help",...r,...o})}openSessions(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/tui/open-sessions",...r,...o})}openThemes(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/tui/open-themes",...r,...o})}openModels(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/tui/open-models",...r,...o})}submitPrompt(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/tui/submit-prompt",...r,...o})}clearPrompt(e,r){let o=n([e],[{args:[{in:"query",key:"directory"}]}]);return (r?.client??this.client).post({url:"/tui/clear-prompt",...r,...o})}executeCommand(e,r){let o=n([e],[{args:[{in:"query",key:"directory"},{in:"body",key:"command"}]}]);return (r?.client??this.client).post({url:"/tui/execute-command",...r,...o,headers:{"Content-Type":"application/json",...r?.headers,...o.headers}})}showToast(e,r){let o=n([e],[{args:[{in:"query",key:"directory"},{in:"body",key:"title"},{in:"body",key:"message"},{in:"body",key:"variant"},{in:"body",key:"duration"}]}]);return (r?.client??this.client).post({url:"/tui/show-toast",...r,...o,headers:{"Content-Type":"application/json",...r?.headers,...o.headers}})}publish(e,r){let o=n([e],[{args:[{in:"query",key:"directory"},{key:"body",map:"body"}]}]);return (r?.client??this.client).post({url:"/tui/publish",...r,...o,headers:{"Content-Type":"application/json",...r?.headers,...o.headers}})}selectSession(e,r){let o=n([e],[{args:[{in:"query",key:"directory"},{in:"body",key:"sessionID"}]}]);return (r?.client??this.client).post({url:"/tui/select-session",...r,...o,headers:{"Content-Type":"application/json",...r?.headers,...o.headers}})}get control(){return this._control??(this._control=new ce({client:this.client}))}},me=class extends d{dispose(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).post({url:"/instance/dispose",...e,...r})}},he=class extends d{get(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/path",...e,...r})}},be=class extends d{get(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/vcs",...e,...r})}},fe=class extends d{list(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/command",...e,...r})}},Re=class extends d{log(t,e){let r=n([t],[{args:[{in:"query",key:"directory"},{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,...r,headers:{"Content-Type":"application/json",...e?.headers,...r.headers}})}agents(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/agent",...e,...r})}skills(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/skill",...e,...r})}},xe=class extends d{status(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/lsp",...e,...r})}},Ee=class extends d{status(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).get({url:"/formatter",...e,...r})}},ke=class extends d{subscribe(t,e){let r=n([t],[{args:[{in:"query",key:"directory"}]}]);return (e?.client??this.client).sse.get({url:"/event",...e,...r})}},G=class G extends d{constructor(e){super(e);y(this,"_global");y(this,"_auth");y(this,"_project");y(this,"_pty");y(this,"_config");y(this,"_model");y(this,"_tool");y(this,"_worktree");y(this,"_experimental");y(this,"_session");y(this,"_part");y(this,"_permission");y(this,"_question");y(this,"_provider");y(this,"_find");y(this,"_file");y(this,"_mcp");y(this,"_tui");y(this,"_instance");y(this,"_path");y(this,"_vcs");y(this,"_command");y(this,"_app");y(this,"_lsp");y(this,"_formatter");y(this,"_event");G.__registry.set(this,e?.key);}get global(){return this._global??(this._global=new V({client:this.client}))}get auth(){return this._auth??(this._auth=new K({client:this.client}))}get project(){return this._project??(this._project=new J({client:this.client}))}get pty(){return this._pty??(this._pty=new X({client:this.client}))}get config(){return this._config??(this._config=new Y({client:this.client}))}get model(){return this._model??(this._model=new Z({client:this.client}))}get tool(){return this._tool??(this._tool=new ee({client:this.client}))}get worktree(){return this._worktree??(this._worktree=new re({client:this.client}))}get experimental(){return this._experimental??(this._experimental=new se({client:this.client}))}get session(){return this._session??(this._session=new ne({client:this.client}))}get part(){return this._part??(this._part=new oe({client:this.client}))}get permission(){return this._permission??(this._permission=new L({client:this.client}))}get question(){return this._question??(this._question=new ie({client:this.client}))}get provider(){return this._provider??(this._provider=new pe({client:this.client}))}get find(){return this._find??(this._find=new le({client:this.client}))}get file(){return this._file??(this._file=new ye({client:this.client}))}get mcp(){return this._mcp??(this._mcp=new de({client:this.client}))}get tui(){return this._tui??(this._tui=new ge({client:this.client}))}get instance(){return this._instance??(this._instance=new me({client:this.client}))}get path(){return this._path??(this._path=new he({client:this.client}))}get vcs(){return this._vcs??(this._vcs=new be({client:this.client}))}get command(){return this._command??(this._command=new fe({client:this.client}))}get app(){return this._app??(this._app=new Re({client:this.client}))}get lsp(){return this._lsp??(this._lsp=new xe({client:this.client}))}get formatter(){return this._formatter??(this._formatter=new Ee({client:this.client}))}get event(){return this._event??(this._event=new ke({client:this.client}))}};y(G,"__registry",new $);var z=G;function Fe(s){if(s?.fetch||(s={...s,fetch:r=>(r.timeout=false,fetch(r))}),s?.directory){let r=/[^\x00-\x7F]/.test(s.directory)?encodeURIComponent(s.directory):s.directory;s.headers={...s.headers,"x-easbot-directory|":r};}let t=q(s);return new z({client:t})}async function Le(s){s=Object.assign({hostname:"127.0.0.1",port:4096,timeout:5e3},s??{});let t=["serve",`--hostname=${s.hostname}`,`--port=${s.port}`];s.config?.logLevel&&t.push(`--log-level=${s.config.logLevel}`);let e=child_process.spawn("easbot",t,{signal:s.signal,env:{...process.env,EASBOT_CONFIG_CONTENT:JSON.stringify(s.config??{})}});return {url:await new Promise((o,u)=>{let l=setTimeout(()=>{u(new Error(`Timeout waiting for server to start after ${s.timeout}ms`));},s.timeout),i="";e.stdout?.on("data",p=>{i+=p.toString();let m=i.split(`
8
+ `);for(let c of m)if(c.startsWith("easbot server listening")){let a=c.match(/on\s+(https?:\/\/[^\s]+)/);if(!a)throw new Error(`Failed to parse server url from output: ${c}`);clearTimeout(l),o(a[1]);return}}),e.stderr?.on("data",p=>{i+=p.toString();}),e.on("exit",p=>{clearTimeout(l);let m=`Server exited with code ${p}`;i.trim()&&(m+=`
9
+ Server output: ${i}`),u(new Error(m));}),e.on("error",p=>{clearTimeout(l),u(p);}),s.signal&&s.signal.addEventListener("abort",()=>{clearTimeout(l),u(new Error("Aborted"));});}),close(){e.kill();}}}function it(s){let t=[];s?.project&&t.push(`--project=${s.project}`),s?.model&&t.push(`--model=${s.model}`),s?.session&&t.push(`--session=${s.session}`),s?.agent&&t.push(`--agent=${s.agent}`);let e=child_process.spawn("easbot",t,{signal:s?.signal,stdio:"inherit",env:{...process.env,EASBOT_CONFIG_CONTENT:JSON.stringify(s?.config??{})}});return {close(){e.kill();}}}async function ut(s){let t=await Le({...s});return {client:Fe({baseUrl:t.url}),server:t}}exports.EasbotClient=z;exports.Permission=L;exports.createEasbotClient=Fe;exports.createEasbotServer=Le;exports.createEascode=ut;exports.createEascodeTui=it;