@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 +51 -0
- package/README.md +129 -0
- package/dist/index.cjs +9 -0
- package/dist/index.d.cts +4000 -0
- package/dist/index.d.ts +4000 -0
- package/dist/index.mjs +9 -0
- package/package.json +76 -0
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;
|