@getsupervisor/agents-studio-sdk 1.0.0
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/CHANGELOG.md +3 -0
- package/README.md +57 -0
- package/dist/index.cjs +318 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +652 -0
- package/dist/index.d.ts +652 -0
- package/dist/index.js +282 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
package/CHANGELOG.md
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# @getsupervisor/conversation-sdk
|
|
2
|
+
|
|
3
|
+
SDK JS/TS para conectar con Conversational API.
|
|
4
|
+
|
|
5
|
+
## Instalación
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i @getsupervisor/conversation-sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Uso básico
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { createClient } from '@getsupervisor/conversation-sdk';
|
|
15
|
+
|
|
16
|
+
const client = createClient({ baseUrl: 'http://localhost:3000/v1' });
|
|
17
|
+
const id = 'a3b2c1...';
|
|
18
|
+
|
|
19
|
+
// iniciar auth y obtener QR
|
|
20
|
+
const qr = await client.connections.auth(id);
|
|
21
|
+
console.log(qr.qr);
|
|
22
|
+
|
|
23
|
+
// escuchar eventos SSE
|
|
24
|
+
const off = client.connections.onEvents(id, (e) => console.log('evt', e.data));
|
|
25
|
+
|
|
26
|
+
// obtener estado
|
|
27
|
+
const state = await client.connections.getState(id);
|
|
28
|
+
|
|
29
|
+
// cerrar sesión
|
|
30
|
+
await client.connections.disconnect(id);
|
|
31
|
+
off();
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Configuración
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
createClient({
|
|
38
|
+
baseUrl: '...',
|
|
39
|
+
headers: { Authorization: 'Bearer ...' },
|
|
40
|
+
timeoutMs: 35000,
|
|
41
|
+
retry: { maxRetries: 2, baseDelayMs: 300 },
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Errores tipados y reintentos
|
|
46
|
+
|
|
47
|
+
- HttpError(status, statusText, body)
|
|
48
|
+
- TimeoutError(ms)
|
|
49
|
+
- NetworkError(cause)
|
|
50
|
+
- Política de reintentos con backoff exponencial y jitter.
|
|
51
|
+
|
|
52
|
+
## Compatibilidad
|
|
53
|
+
|
|
54
|
+
- Soporta ESM y CJS.
|
|
55
|
+
- Navegador y Node (requiere EventSource global o polyfill para SSE).
|
|
56
|
+
|
|
57
|
+
..
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/index.ts
|
|
20
|
+
var index_exports = {};
|
|
21
|
+
__export(index_exports, {
|
|
22
|
+
HttpError: () => HttpError,
|
|
23
|
+
NetworkError: () => NetworkError,
|
|
24
|
+
TimeoutError: () => TimeoutError,
|
|
25
|
+
createAgentInstructionsApi: () => createAgentInstructionsApi,
|
|
26
|
+
createAgentKnowledgeApi: () => createAgentKnowledgeApi,
|
|
27
|
+
createAgentPhonesApi: () => createAgentPhonesApi,
|
|
28
|
+
createAgentsApi: () => createAgentsApi,
|
|
29
|
+
createClient: () => createClient,
|
|
30
|
+
createHttp: () => createHttp,
|
|
31
|
+
createToolsApi: () => createToolsApi,
|
|
32
|
+
createWorkspacesApi: () => createWorkspacesApi
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(index_exports);
|
|
35
|
+
|
|
36
|
+
// src/errors.ts
|
|
37
|
+
var HttpError = class extends Error {
|
|
38
|
+
constructor(status, statusText, body, url) {
|
|
39
|
+
super(`HTTP ${status} ${statusText}`);
|
|
40
|
+
this.status = status;
|
|
41
|
+
this.statusText = statusText;
|
|
42
|
+
this.body = body;
|
|
43
|
+
this.url = url;
|
|
44
|
+
this.name = "HttpError";
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var TimeoutError = class extends Error {
|
|
48
|
+
constructor(ms, url) {
|
|
49
|
+
super(`Timeout after ${ms}ms`);
|
|
50
|
+
this.ms = ms;
|
|
51
|
+
this.url = url;
|
|
52
|
+
this.name = "TimeoutError";
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var NetworkError = class extends Error {
|
|
56
|
+
constructor(cause, url) {
|
|
57
|
+
super("Network error");
|
|
58
|
+
this.cause = cause;
|
|
59
|
+
this.url = url;
|
|
60
|
+
this.name = "NetworkError";
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// src/http.ts
|
|
65
|
+
function sleep(ms) {
|
|
66
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
67
|
+
}
|
|
68
|
+
async function withTimeout(p, ms, ab, url) {
|
|
69
|
+
return new Promise((resolve, reject) => {
|
|
70
|
+
const to = setTimeout(() => {
|
|
71
|
+
ab?.abort();
|
|
72
|
+
reject(new TimeoutError(ms, url));
|
|
73
|
+
}, ms);
|
|
74
|
+
p.then((v) => {
|
|
75
|
+
clearTimeout(to);
|
|
76
|
+
resolve(v);
|
|
77
|
+
}).catch((e) => {
|
|
78
|
+
clearTimeout(to);
|
|
79
|
+
reject(e);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async function withRetry(fn, policy) {
|
|
84
|
+
const max = policy?.maxRetries ?? 2;
|
|
85
|
+
const base = policy?.baseDelayMs ?? 300;
|
|
86
|
+
const maxDelay = policy?.maxDelayMs ?? 3e3;
|
|
87
|
+
const retryOn = policy?.retryOn ?? ((err) => err instanceof NetworkError || err instanceof HttpError && err.status >= 500);
|
|
88
|
+
let attempt = 0;
|
|
89
|
+
while (true) {
|
|
90
|
+
try {
|
|
91
|
+
return await fn(attempt);
|
|
92
|
+
} catch (e) {
|
|
93
|
+
if (attempt >= max || !retryOn(e, attempt)) throw e;
|
|
94
|
+
const delay = Math.min(maxDelay, base * 2 ** attempt) + Math.floor(Math.random() * 100);
|
|
95
|
+
await sleep(delay);
|
|
96
|
+
attempt += 1;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function createHttp(cfg) {
|
|
101
|
+
const base = cfg.baseUrl.replace(/\/$/, "");
|
|
102
|
+
const fx = cfg.fetchImpl ?? fetch;
|
|
103
|
+
const headers = cfg.headers ?? {};
|
|
104
|
+
const timeout = cfg.timeoutMs ?? 35e3;
|
|
105
|
+
const log = cfg.logger ?? {};
|
|
106
|
+
const retry = cfg.retry;
|
|
107
|
+
async function doFetch(url, init) {
|
|
108
|
+
const ab = new AbortController();
|
|
109
|
+
const req = async () => {
|
|
110
|
+
try {
|
|
111
|
+
const res = await withTimeout(
|
|
112
|
+
fx(url, { ...init, signal: ab.signal }),
|
|
113
|
+
timeout,
|
|
114
|
+
ab,
|
|
115
|
+
url
|
|
116
|
+
);
|
|
117
|
+
if (!res.ok) {
|
|
118
|
+
const body = await res.clone().json().catch(() => void 0);
|
|
119
|
+
throw new HttpError(res.status, res.statusText, body, url);
|
|
120
|
+
}
|
|
121
|
+
return res;
|
|
122
|
+
} catch (e) {
|
|
123
|
+
if (e.name === "AbortError") throw new TimeoutError(timeout, url);
|
|
124
|
+
if (e instanceof HttpError) throw e;
|
|
125
|
+
throw new NetworkError(e, url);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
return withRetry(req, retry);
|
|
129
|
+
}
|
|
130
|
+
return { base, headers, timeout, log, retry, doFetch };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// src/api/agents.ts
|
|
134
|
+
function createAgentsApi(cfg) {
|
|
135
|
+
const { base, headers, doFetch } = createHttp(cfg);
|
|
136
|
+
return {
|
|
137
|
+
async get(agentId) {
|
|
138
|
+
const res = await doFetch(`${base}/v1/agents/${agentId}`, {
|
|
139
|
+
method: "GET",
|
|
140
|
+
headers
|
|
141
|
+
});
|
|
142
|
+
return res.json();
|
|
143
|
+
},
|
|
144
|
+
async delete(agentId) {
|
|
145
|
+
await doFetch(`${base}/v1/agents/${agentId}`, {
|
|
146
|
+
method: "DELETE",
|
|
147
|
+
headers
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// src/api/agent-knowledge.ts
|
|
154
|
+
function createAgentKnowledgeApi(cfg) {
|
|
155
|
+
const { base, headers, doFetch } = createHttp(cfg);
|
|
156
|
+
const jsonHeaders = { "content-type": "application/json", ...headers };
|
|
157
|
+
return {
|
|
158
|
+
async upload(agentId, payload) {
|
|
159
|
+
const res = await doFetch(
|
|
160
|
+
`${base}/v1/agents/${agentId}/knowledge/upload`,
|
|
161
|
+
{
|
|
162
|
+
method: "POST",
|
|
163
|
+
headers: jsonHeaders,
|
|
164
|
+
body: JSON.stringify(payload)
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
return res.json();
|
|
168
|
+
},
|
|
169
|
+
async listBases(agentId) {
|
|
170
|
+
const res = await doFetch(
|
|
171
|
+
`${base}/v1/agents/${agentId}/knowledge/bases`,
|
|
172
|
+
{
|
|
173
|
+
method: "GET",
|
|
174
|
+
headers
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
return res.json();
|
|
178
|
+
},
|
|
179
|
+
async listUploads(agentId) {
|
|
180
|
+
const res = await doFetch(
|
|
181
|
+
`${base}/v1/agents/${agentId}/knowledge/uploads`,
|
|
182
|
+
{
|
|
183
|
+
method: "GET",
|
|
184
|
+
headers
|
|
185
|
+
}
|
|
186
|
+
);
|
|
187
|
+
return res.json();
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// src/api/agent-instructions.ts
|
|
193
|
+
function createAgentInstructionsApi(cfg) {
|
|
194
|
+
const { base, headers, doFetch } = createHttp(cfg);
|
|
195
|
+
const jsonHeaders = { "content-type": "application/json", ...headers };
|
|
196
|
+
return {
|
|
197
|
+
async list(agentId, opts) {
|
|
198
|
+
const search = opts?.versionId ? `?versionId=${encodeURIComponent(opts.versionId)}` : "";
|
|
199
|
+
const res = await doFetch(
|
|
200
|
+
`${base}/v1/agents/${agentId}/instructions${search}`,
|
|
201
|
+
{
|
|
202
|
+
method: "GET",
|
|
203
|
+
headers
|
|
204
|
+
}
|
|
205
|
+
);
|
|
206
|
+
return res.json();
|
|
207
|
+
},
|
|
208
|
+
async create(agentId, payload) {
|
|
209
|
+
const res = await doFetch(`${base}/v1/agents/${agentId}/instructions`, {
|
|
210
|
+
method: "POST",
|
|
211
|
+
headers: jsonHeaders,
|
|
212
|
+
body: JSON.stringify(payload)
|
|
213
|
+
});
|
|
214
|
+
return res.json();
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// src/api/agent-phones.ts
|
|
220
|
+
function createAgentPhonesApi(cfg) {
|
|
221
|
+
const { base, headers, doFetch } = createHttp(cfg);
|
|
222
|
+
const jsonHeaders = { "content-type": "application/json", ...headers };
|
|
223
|
+
return {
|
|
224
|
+
async connect(agentId, payload) {
|
|
225
|
+
const res = await doFetch(`${base}/v1/agents/${agentId}/phones`, {
|
|
226
|
+
method: "POST",
|
|
227
|
+
headers: jsonHeaders,
|
|
228
|
+
body: JSON.stringify(payload)
|
|
229
|
+
});
|
|
230
|
+
return res.json();
|
|
231
|
+
},
|
|
232
|
+
async disconnect(agentId, phoneId) {
|
|
233
|
+
await doFetch(`${base}/v1/agents/${agentId}/phones/${phoneId}`, {
|
|
234
|
+
method: "DELETE",
|
|
235
|
+
headers
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// src/api/workspaces.ts
|
|
242
|
+
function createWorkspacesApi(cfg) {
|
|
243
|
+
const { base, headers, doFetch } = createHttp(cfg);
|
|
244
|
+
const jsonHeaders = { "content-type": "application/json", ...headers };
|
|
245
|
+
return {
|
|
246
|
+
async listPhones(workspaceId, opts) {
|
|
247
|
+
const search = opts?.channel ? `?channel=${opts.channel}` : "";
|
|
248
|
+
const res = await doFetch(
|
|
249
|
+
`${base}/v1/workspaces/${workspaceId}/phones${search}`,
|
|
250
|
+
{
|
|
251
|
+
method: "GET",
|
|
252
|
+
headers
|
|
253
|
+
}
|
|
254
|
+
);
|
|
255
|
+
return res.json();
|
|
256
|
+
},
|
|
257
|
+
async enable(workspaceId, payload) {
|
|
258
|
+
const res = await doFetch(`${base}/v1/workspaces/${workspaceId}/enable`, {
|
|
259
|
+
method: "POST",
|
|
260
|
+
headers: jsonHeaders,
|
|
261
|
+
body: JSON.stringify(payload)
|
|
262
|
+
});
|
|
263
|
+
return res.json();
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// src/api/tools.ts
|
|
269
|
+
function createToolsApi(cfg) {
|
|
270
|
+
const { base, headers, doFetch } = createHttp(cfg);
|
|
271
|
+
const jsonHeaders = { "content-type": "application/json", ...headers };
|
|
272
|
+
return {
|
|
273
|
+
async list() {
|
|
274
|
+
const res = await doFetch(`${base}/v1/tools`, {
|
|
275
|
+
method: "GET",
|
|
276
|
+
headers
|
|
277
|
+
});
|
|
278
|
+
return res.json();
|
|
279
|
+
},
|
|
280
|
+
async execute(toolId, payload) {
|
|
281
|
+
const res = await doFetch(`${base}/v1/tools/${toolId}/execute`, {
|
|
282
|
+
method: "POST",
|
|
283
|
+
headers: jsonHeaders,
|
|
284
|
+
body: JSON.stringify(payload)
|
|
285
|
+
});
|
|
286
|
+
return res.json();
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// src/client.ts
|
|
292
|
+
function createClient(cfg) {
|
|
293
|
+
return {
|
|
294
|
+
agents: {
|
|
295
|
+
...createAgentsApi(cfg),
|
|
296
|
+
knowledge: createAgentKnowledgeApi(cfg),
|
|
297
|
+
instructions: createAgentInstructionsApi(cfg),
|
|
298
|
+
phones: createAgentPhonesApi(cfg)
|
|
299
|
+
},
|
|
300
|
+
workspaces: createWorkspacesApi(cfg),
|
|
301
|
+
tools: createToolsApi(cfg)
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
305
|
+
0 && (module.exports = {
|
|
306
|
+
HttpError,
|
|
307
|
+
NetworkError,
|
|
308
|
+
TimeoutError,
|
|
309
|
+
createAgentInstructionsApi,
|
|
310
|
+
createAgentKnowledgeApi,
|
|
311
|
+
createAgentPhonesApi,
|
|
312
|
+
createAgentsApi,
|
|
313
|
+
createClient,
|
|
314
|
+
createHttp,
|
|
315
|
+
createToolsApi,
|
|
316
|
+
createWorkspacesApi
|
|
317
|
+
});
|
|
318
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/api/agents.ts","../src/api/agent-knowledge.ts","../src/api/agent-instructions.ts","../src/api/agent-phones.ts","../src/api/workspaces.ts","../src/api/tools.ts","../src/client.ts"],"sourcesContent":["export * from './api/agents';\nexport * from './api/agent-knowledge';\nexport * from './api/agent-instructions';\nexport * from './api/agent-phones';\nexport * from './api/workspaces';\nexport * from './api/tools';\nexport * from './client';\nexport * from './errors';\nexport * from './http';\nexport * from './types';\n","export class HttpError extends Error {\n constructor(\n public status: number,\n public statusText: string,\n public body?: unknown,\n public url?: string,\n ) {\n super(`HTTP ${status} ${statusText}`);\n this.name = 'HttpError';\n }\n}\n\nexport class TimeoutError extends Error {\n constructor(\n public ms: number,\n public url?: string,\n ) {\n super(`Timeout after ${ms}ms`);\n this.name = 'TimeoutError';\n }\n}\n\nexport class NetworkError extends Error {\n constructor(\n public cause?: unknown,\n public url?: string,\n ) {\n super('Network error');\n this.name = 'NetworkError';\n }\n}\n\nexport type RetryPolicy = {\n maxRetries?: number; // default 2\n baseDelayMs?: number; // default 300\n maxDelayMs?: number; // default 3000\n retryOn?: (err: unknown, attempt: number) => boolean; // default: network or 5xx\n};\n","import { ClientConfig } from './types';\nimport { HttpError, NetworkError, RetryPolicy, TimeoutError } from './errors';\n\nfunction sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nasync function withTimeout<T>(\n p: Promise<T>,\n ms: number,\n ab?: AbortController,\n url?: string,\n) {\n return new Promise<T>((resolve, reject) => {\n const to = setTimeout(() => {\n ab?.abort();\n reject(new TimeoutError(ms, url));\n }, ms);\n p.then((v) => {\n clearTimeout(to);\n resolve(v);\n }).catch((e) => {\n clearTimeout(to);\n reject(e);\n });\n });\n}\n\nasync function withRetry<T>(\n fn: (attempt: number) => Promise<T>,\n policy?: RetryPolicy,\n): Promise<T> {\n const max = policy?.maxRetries ?? 2;\n const base = policy?.baseDelayMs ?? 300;\n const maxDelay = policy?.maxDelayMs ?? 3000;\n const retryOn =\n policy?.retryOn ??\n ((err) =>\n err instanceof NetworkError ||\n (err instanceof HttpError && err.status >= 500));\n let attempt = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n return await fn(attempt);\n } catch (e) {\n if (attempt >= max || !retryOn(e, attempt)) throw e;\n const delay =\n Math.min(maxDelay, base * 2 ** attempt) +\n Math.floor(Math.random() * 100);\n await sleep(delay);\n attempt += 1;\n }\n }\n}\n\nexport function createHttp(cfg: ClientConfig & { retry?: RetryPolicy }) {\n const base = cfg.baseUrl.replace(/\\/$/, '');\n const fx = cfg.fetchImpl ?? fetch;\n const headers = cfg.headers ?? {};\n const timeout = cfg.timeoutMs ?? 35000;\n const log = cfg.logger ?? {};\n const retry = cfg.retry;\n\n async function doFetch(url: string, init: RequestInit) {\n const ab = new AbortController();\n const req = async () => {\n try {\n const res = await withTimeout(\n fx(url, { ...init, signal: ab.signal }),\n timeout,\n ab,\n url,\n );\n if (!res.ok) {\n const body = await res\n .clone()\n .json()\n .catch(() => undefined);\n throw new HttpError(res.status, res.statusText, body, url);\n }\n return res;\n } catch (e: any) {\n if (e.name === 'AbortError') throw new TimeoutError(timeout, url);\n if (e instanceof HttpError) throw e;\n throw new NetworkError(e, url);\n }\n };\n return withRetry(req, retry);\n }\n\n return { base, headers, timeout, log, retry, doFetch };\n}\n","import type { AgentDetail, ClientConfig } from '../types';\nimport type { RetryPolicy } from '../errors';\nimport { createHttp } from '../http';\n\nexport function createAgentsApi(cfg: ClientConfig & { retry?: RetryPolicy }) {\n const { base, headers, doFetch } = createHttp(cfg);\n\n return {\n async get(agentId: string): Promise<AgentDetail> {\n const res = await doFetch(`${base}/v1/agents/${agentId}`, {\n method: 'GET',\n headers,\n });\n return res.json();\n },\n async delete(agentId: string): Promise<void> {\n await doFetch(`${base}/v1/agents/${agentId}`, {\n method: 'DELETE',\n headers,\n });\n },\n };\n}\n","import type {\n AgentKnowledgeBasesResponse,\n AgentKnowledgeUploadsResponse,\n ClientConfig,\n KnowledgeUploadRequest,\n KnowledgeUploadResponse,\n} from '../types';\nimport type { RetryPolicy } from '../errors';\nimport { createHttp } from '../http';\n\nexport function createAgentKnowledgeApi(\n cfg: ClientConfig & { retry?: RetryPolicy },\n) {\n const { base, headers, doFetch } = createHttp(cfg);\n const jsonHeaders = { 'content-type': 'application/json', ...headers };\n\n return {\n async upload(\n agentId: string,\n payload: KnowledgeUploadRequest,\n ): Promise<KnowledgeUploadResponse> {\n const res = await doFetch(\n `${base}/v1/agents/${agentId}/knowledge/upload`,\n {\n method: 'POST',\n headers: jsonHeaders,\n body: JSON.stringify(payload),\n },\n );\n return res.json();\n },\n async listBases(agentId: string): Promise<AgentKnowledgeBasesResponse> {\n const res = await doFetch(\n `${base}/v1/agents/${agentId}/knowledge/bases`,\n {\n method: 'GET',\n headers,\n },\n );\n return res.json();\n },\n async listUploads(agentId: string): Promise<AgentKnowledgeUploadsResponse> {\n const res = await doFetch(\n `${base}/v1/agents/${agentId}/knowledge/uploads`,\n {\n method: 'GET',\n headers,\n },\n );\n return res.json();\n },\n };\n}\n","import type {\n AgentInstructionsResponse,\n ClientConfig,\n CreateInstructionRequest,\n InstructionCreatedResponse,\n} from '../types';\nimport type { RetryPolicy } from '../errors';\nimport { createHttp } from '../http';\n\nexport function createAgentInstructionsApi(\n cfg: ClientConfig & { retry?: RetryPolicy },\n) {\n const { base, headers, doFetch } = createHttp(cfg);\n const jsonHeaders = { 'content-type': 'application/json', ...headers };\n\n return {\n async list(\n agentId: string,\n opts?: { versionId?: string },\n ): Promise<AgentInstructionsResponse> {\n const search = opts?.versionId\n ? `?versionId=${encodeURIComponent(opts.versionId)}`\n : '';\n const res = await doFetch(\n `${base}/v1/agents/${agentId}/instructions${search}`,\n {\n method: 'GET',\n headers,\n },\n );\n return res.json();\n },\n async create(\n agentId: string,\n payload: CreateInstructionRequest,\n ): Promise<InstructionCreatedResponse> {\n const res = await doFetch(`${base}/v1/agents/${agentId}/instructions`, {\n method: 'POST',\n headers: jsonHeaders,\n body: JSON.stringify(payload),\n });\n return res.json();\n },\n };\n}\n","import type {\n ClientConfig,\n ConnectPhoneRequest,\n PhoneAssignmentResponse,\n} from '../types';\nimport type { RetryPolicy } from '../errors';\nimport { createHttp } from '../http';\n\nexport function createAgentPhonesApi(\n cfg: ClientConfig & { retry?: RetryPolicy },\n) {\n const { base, headers, doFetch } = createHttp(cfg);\n const jsonHeaders = { 'content-type': 'application/json', ...headers };\n\n return {\n async connect(\n agentId: string,\n payload: ConnectPhoneRequest,\n ): Promise<PhoneAssignmentResponse> {\n const res = await doFetch(`${base}/v1/agents/${agentId}/phones`, {\n method: 'POST',\n headers: jsonHeaders,\n body: JSON.stringify(payload),\n });\n return res.json();\n },\n async disconnect(agentId: string, phoneId: string): Promise<void> {\n await doFetch(`${base}/v1/agents/${agentId}/phones/${phoneId}`, {\n method: 'DELETE',\n headers,\n });\n },\n };\n}\n","import type {\n ClientConfig,\n WorkspaceEnableRequest,\n WorkspaceEnableResponse,\n WorkspacePhoneChannel,\n WorkspacePhonesResponse,\n} from '../types';\nimport type { RetryPolicy } from '../errors';\nimport { createHttp } from '../http';\n\nexport function createWorkspacesApi(\n cfg: ClientConfig & { retry?: RetryPolicy },\n) {\n const { base, headers, doFetch } = createHttp(cfg);\n const jsonHeaders = { 'content-type': 'application/json', ...headers };\n\n return {\n async listPhones(\n workspaceId: string,\n opts?: { channel?: WorkspacePhoneChannel },\n ): Promise<WorkspacePhonesResponse> {\n const search = opts?.channel ? `?channel=${opts.channel}` : '';\n const res = await doFetch(\n `${base}/v1/workspaces/${workspaceId}/phones${search}`,\n {\n method: 'GET',\n headers,\n },\n );\n return res.json();\n },\n async enable(\n workspaceId: string,\n payload: WorkspaceEnableRequest,\n ): Promise<WorkspaceEnableResponse> {\n const res = await doFetch(`${base}/v1/workspaces/${workspaceId}/enable`, {\n method: 'POST',\n headers: jsonHeaders,\n body: JSON.stringify(payload),\n });\n return res.json();\n },\n };\n}\n","import type {\n ClientConfig,\n ExecuteToolRequest,\n ExecuteToolResponse,\n ToolsCatalogResponse,\n} from '../types';\nimport type { RetryPolicy } from '../errors';\nimport { createHttp } from '../http';\n\nexport function createToolsApi(cfg: ClientConfig & { retry?: RetryPolicy }) {\n const { base, headers, doFetch } = createHttp(cfg);\n const jsonHeaders = { 'content-type': 'application/json', ...headers };\n\n return {\n async list(): Promise<ToolsCatalogResponse> {\n const res = await doFetch(`${base}/v1/tools`, {\n method: 'GET',\n headers,\n });\n return res.json();\n },\n async execute(\n toolId: string,\n payload: ExecuteToolRequest,\n ): Promise<ExecuteToolResponse> {\n const res = await doFetch(`${base}/v1/tools/${toolId}/execute`, {\n method: 'POST',\n headers: jsonHeaders,\n body: JSON.stringify(payload),\n });\n return res.json();\n },\n };\n}\n","import type { ClientConfig } from './types';\nimport type { RetryPolicy } from './errors';\nimport { createAgentsApi } from './api/agents';\nimport { createAgentKnowledgeApi } from './api/agent-knowledge';\nimport { createAgentInstructionsApi } from './api/agent-instructions';\nimport { createAgentPhonesApi } from './api/agent-phones';\nimport { createWorkspacesApi } from './api/workspaces';\nimport { createToolsApi } from './api/tools';\n\nexport function createClient(cfg: ClientConfig & { retry?: RetryPolicy }) {\n return {\n agents: {\n ...createAgentsApi(cfg),\n knowledge: createAgentKnowledgeApi(cfg),\n instructions: createAgentInstructionsApi(cfg),\n phones: createAgentPhonesApi(cfg),\n },\n workspaces: createWorkspacesApi(cfg),\n tools: createToolsApi(cfg),\n };\n}\n"],"mappings":"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","names":[]}
|