@perstack/api-client 0.0.45 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js DELETED
@@ -1,967 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- // src/fetcher.ts
4
- var DEFAULT_BASE_URL = "https://api.perstack.ai";
5
- var DEFAULT_TIMEOUT = 3e4;
6
- function createAbortError() {
7
- return {
8
- code: 0,
9
- message: "Request aborted",
10
- aborted: true
11
- };
12
- }
13
- function createNetworkError(error) {
14
- return {
15
- code: 0,
16
- message: error instanceof Error ? error.message : "Network error",
17
- reason: error
18
- };
19
- }
20
- function createHttpError(status, statusText, body) {
21
- if (typeof body === "object" && body !== null) {
22
- const hasReason = "reason" in body;
23
- if ("error" in body && typeof body.error === "string") {
24
- const errorMessage = body.error;
25
- return {
26
- code: status,
27
- message: errorMessage,
28
- reason: hasReason ? body.reason : void 0
29
- };
30
- }
31
- if (hasReason) {
32
- return {
33
- code: status,
34
- message: statusText,
35
- reason: body.reason
36
- };
37
- }
38
- }
39
- return {
40
- code: status,
41
- message: statusText
42
- };
43
- }
44
- function createValidationError(error) {
45
- return {
46
- code: 0,
47
- message: "Response validation failed",
48
- reason: error
49
- };
50
- }
51
- function createFetcher(config) {
52
- const baseUrl = config?.baseUrl ?? DEFAULT_BASE_URL;
53
- const timeout = config?.timeout ?? DEFAULT_TIMEOUT;
54
- const apiKey = config?.apiKey;
55
- function buildUrl(path) {
56
- return `${baseUrl}${path}`;
57
- }
58
- function buildHeaders(additionalHeaders) {
59
- const headers = {
60
- "Content-Type": "application/json",
61
- ...additionalHeaders
62
- };
63
- if (apiKey) {
64
- headers.Authorization = `Bearer ${apiKey}`;
65
- }
66
- return headers;
67
- }
68
- function createTimeoutSignal(externalSignal) {
69
- const controller = new AbortController();
70
- const timeoutId = setTimeout(() => controller.abort(), timeout);
71
- if (externalSignal) {
72
- if (externalSignal.aborted) {
73
- controller.abort();
74
- } else {
75
- externalSignal.addEventListener("abort", () => controller.abort());
76
- }
77
- }
78
- return {
79
- signal: controller.signal,
80
- cleanup: () => clearTimeout(timeoutId)
81
- };
82
- }
83
- async function request(method, path, schema, body, options) {
84
- const { signal, cleanup } = createTimeoutSignal(options?.signal);
85
- try {
86
- const response = await fetch(buildUrl(path), {
87
- method,
88
- headers: buildHeaders(),
89
- body: body ? JSON.stringify(body) : void 0,
90
- signal
91
- });
92
- if (!response.ok) {
93
- let errorBody;
94
- try {
95
- errorBody = await response.json();
96
- } catch {
97
- errorBody = void 0;
98
- }
99
- return {
100
- ok: false,
101
- error: createHttpError(response.status, response.statusText, errorBody)
102
- };
103
- }
104
- const json = await response.json();
105
- const parsed = schema.safeParse(json);
106
- if (!parsed.success) {
107
- return { ok: false, error: createValidationError(parsed.error) };
108
- }
109
- return { ok: true, data: parsed.data };
110
- } catch (error) {
111
- if (error instanceof Error && error.name === "AbortError") {
112
- return { ok: false, error: createAbortError() };
113
- }
114
- return { ok: false, error: createNetworkError(error) };
115
- } finally {
116
- cleanup();
117
- }
118
- }
119
- async function requestBlob(path, options) {
120
- const { signal, cleanup } = createTimeoutSignal(options?.signal);
121
- try {
122
- const response = await fetch(buildUrl(path), {
123
- method: "GET",
124
- headers: buildHeaders(),
125
- signal
126
- });
127
- if (!response.ok) {
128
- let errorBody;
129
- try {
130
- errorBody = await response.json();
131
- } catch {
132
- errorBody = void 0;
133
- }
134
- return {
135
- ok: false,
136
- error: createHttpError(response.status, response.statusText, errorBody)
137
- };
138
- }
139
- const blob = await response.blob();
140
- return { ok: true, data: blob };
141
- } catch (error) {
142
- if (error instanceof Error && error.name === "AbortError") {
143
- return { ok: false, error: createAbortError() };
144
- }
145
- return { ok: false, error: createNetworkError(error) };
146
- } finally {
147
- cleanup();
148
- }
149
- }
150
- return {
151
- get: (path, schema, options) => request("GET", path, schema, void 0, options),
152
- post: (path, body, schema, options) => request("POST", path, schema, body, options),
153
- delete: (path, schema, options) => request("DELETE", path, schema, void 0, options),
154
- getBlob: (path, options) => requestBlob(path, options)
155
- };
156
- }
157
- var registryExpertStatusSchema = z.enum(["available", "deprecated", "disabled"]);
158
- var ownerSchema = z.object({
159
- name: z.string().optional(),
160
- organizationId: z.string(),
161
- createdAt: z.string().transform((s) => new Date(s))
162
- });
163
- var registryExpertSchema = z.object({
164
- type: z.literal("registryExpert"),
165
- id: z.string(),
166
- key: z.string(),
167
- name: z.string(),
168
- minRuntimeVersion: z.literal("v1.0"),
169
- description: z.string(),
170
- owner: ownerSchema,
171
- createdAt: z.string().transform((s) => new Date(s)),
172
- updatedAt: z.string().transform((s) => new Date(s)),
173
- version: z.string(),
174
- status: registryExpertStatusSchema,
175
- instruction: z.string(),
176
- skills: z.record(z.string(), z.unknown()).transform((s) => s),
177
- delegates: z.array(z.string()),
178
- tags: z.array(z.string())
179
- });
180
- var expertDigestSchema = z.object({
181
- type: z.literal("expertDigest"),
182
- id: z.string(),
183
- key: z.string(),
184
- name: z.string(),
185
- minRuntimeVersion: z.literal("v1.0"),
186
- description: z.string(),
187
- owner: ownerSchema,
188
- createdAt: z.string().transform((s) => new Date(s)),
189
- updatedAt: z.string().transform((s) => new Date(s)),
190
- version: z.string().optional(),
191
- tags: z.array(z.string())
192
- });
193
- var getExpertResponseSchema = z.object({
194
- data: z.object({
195
- expert: registryExpertSchema
196
- })
197
- });
198
- var listExpertsResponseSchema = z.object({
199
- data: z.object({
200
- experts: z.array(registryExpertSchema)
201
- }),
202
- meta: z.object({
203
- total: z.number(),
204
- take: z.number(),
205
- skip: z.number()
206
- })
207
- });
208
- var createExpertResponseSchema = z.object({
209
- data: z.object({
210
- expert: registryExpertSchema
211
- })
212
- });
213
- var updateExpertResponseSchema = z.object({
214
- data: z.object({
215
- expert: registryExpertSchema
216
- })
217
- });
218
- var deleteExpertResponseSchema = z.object({});
219
- var getExpertVersionsResponseSchema = z.object({
220
- data: z.object({
221
- versions: z.array(expertDigestSchema),
222
- latest: z.string()
223
- }),
224
- meta: z.object({
225
- total: z.number()
226
- })
227
- });
228
-
229
- // src/registry/experts.ts
230
- function createRegistryExpertsApi(fetcher) {
231
- return {
232
- async get(key, options) {
233
- const result = await fetcher.get(
234
- `/api/registry/v1/experts/${encodeURIComponent(key)}`,
235
- getExpertResponseSchema,
236
- options
237
- );
238
- if (!result.ok) return result;
239
- return { ok: true, data: result.data.data.expert };
240
- },
241
- async list(params, options) {
242
- const searchParams = new URLSearchParams();
243
- if (params?.organizationId) searchParams.set("organizationId", params.organizationId);
244
- if (params?.filter) searchParams.set("filter", params.filter);
245
- if (params?.sort) searchParams.set("sort", params.sort);
246
- if (params?.order) searchParams.set("order", params.order);
247
- if (params?.take !== void 0) searchParams.set("take", params.take.toString());
248
- if (params?.skip !== void 0) searchParams.set("skip", params.skip.toString());
249
- const query = searchParams.toString();
250
- const path = `/api/registry/v1/experts/${query ? `?${query}` : ""}`;
251
- const result = await fetcher.get(path, listExpertsResponseSchema, options);
252
- if (!result.ok) return result;
253
- return {
254
- ok: true,
255
- data: {
256
- data: result.data.data.experts,
257
- meta: result.data.meta
258
- }
259
- };
260
- },
261
- async create(input, options) {
262
- const result = await fetcher.post(
263
- "/api/registry/v1/experts/",
264
- input,
265
- createExpertResponseSchema,
266
- options
267
- );
268
- if (!result.ok) return result;
269
- return { ok: true, data: result.data.data.expert };
270
- },
271
- async update(key, input, options) {
272
- const result = await fetcher.post(
273
- `/api/registry/v1/experts/${encodeURIComponent(key)}`,
274
- input,
275
- updateExpertResponseSchema,
276
- options
277
- );
278
- if (!result.ok) return result;
279
- return { ok: true, data: result.data.data.expert };
280
- },
281
- async delete(key, options) {
282
- const result = await fetcher.delete(
283
- `/api/registry/v1/experts/${encodeURIComponent(key)}`,
284
- deleteExpertResponseSchema,
285
- options
286
- );
287
- if (!result.ok) return result;
288
- return { ok: true, data: void 0 };
289
- },
290
- async getVersions(key, options) {
291
- const result = await fetcher.get(
292
- `/api/registry/v1/experts/${encodeURIComponent(key)}/versions`,
293
- getExpertVersionsResponseSchema,
294
- options
295
- );
296
- if (!result.ok) return result;
297
- return {
298
- ok: true,
299
- data: {
300
- versions: result.data.data.versions,
301
- latest: result.data.data.latest,
302
- total: result.data.meta.total
303
- }
304
- };
305
- }
306
- };
307
- }
308
-
309
- // src/utils.ts
310
- async function blobToBase64(blob) {
311
- const buffer = await blob.arrayBuffer();
312
- const bytes = new Uint8Array(buffer);
313
- let binary = "";
314
- for (let i = 0; i < bytes.byteLength; i++) {
315
- binary += String.fromCharCode(bytes[i]);
316
- }
317
- return btoa(binary);
318
- }
319
- var applicationSchema = z.object({
320
- id: z.string(),
321
- name: z.string()
322
- });
323
- var ownerSchema2 = z.object({
324
- name: z.string().optional(),
325
- organizationId: z.string(),
326
- createdAt: z.string().transform((s) => new Date(s))
327
- });
328
- var studioExpertSchema = z.object({
329
- type: z.literal("studioExpert"),
330
- id: z.string(),
331
- key: z.string(),
332
- name: z.string(),
333
- minRuntimeVersion: z.literal("v1.0"),
334
- description: z.string(),
335
- owner: ownerSchema2,
336
- createdAt: z.string().transform((s) => new Date(s)),
337
- updatedAt: z.string().transform((s) => new Date(s)),
338
- instruction: z.string(),
339
- skills: z.record(z.string(), z.unknown()).transform((s) => s),
340
- delegates: z.array(z.string()),
341
- forkFrom: z.string().optional(),
342
- application: applicationSchema
343
- });
344
- var expertDigestSchema2 = z.object({
345
- type: z.literal("expertDigest"),
346
- id: z.string(),
347
- key: z.string(),
348
- name: z.string(),
349
- minRuntimeVersion: z.literal("v1.0"),
350
- description: z.string(),
351
- owner: ownerSchema2,
352
- createdAt: z.string().transform((s) => new Date(s)),
353
- updatedAt: z.string().transform((s) => new Date(s)),
354
- version: z.string().optional(),
355
- tags: z.array(z.string())
356
- });
357
- var getStudioExpertResponseSchema = z.object({
358
- data: z.object({
359
- expert: studioExpertSchema
360
- })
361
- });
362
- var listStudioExpertsResponseSchema = z.object({
363
- data: z.object({
364
- experts: z.array(expertDigestSchema2)
365
- }),
366
- meta: z.object({
367
- total: z.number(),
368
- take: z.number(),
369
- skip: z.number()
370
- })
371
- });
372
- var createStudioExpertResponseSchema = z.object({
373
- data: z.object({
374
- expert: studioExpertSchema
375
- })
376
- });
377
- var updateStudioExpertResponseSchema = z.object({
378
- data: z.object({
379
- expert: studioExpertSchema
380
- })
381
- });
382
- var deleteStudioExpertResponseSchema = z.object({});
383
- var expertJobStatusSchema = z.enum([
384
- "queued",
385
- "processing",
386
- "completed",
387
- "requestInteractiveToolResult",
388
- "requestDelegateResult",
389
- "exceededMaxSteps",
390
- "failed",
391
- "canceling",
392
- "canceled",
393
- "expired"
394
- ]);
395
- var expertJobSchema = z.object({
396
- id: z.string(),
397
- expertKey: z.string(),
398
- status: expertJobStatusSchema,
399
- query: z.string().optional(),
400
- createdAt: z.string().transform((s) => new Date(s)),
401
- updatedAt: z.string().transform((s) => new Date(s)),
402
- startedAt: z.string().transform((s) => new Date(s)).optional(),
403
- completedAt: z.string().transform((s) => new Date(s)).optional()
404
- });
405
- var getExpertJobResponseSchema = z.object({
406
- data: z.object({
407
- expertJob: expertJobSchema
408
- })
409
- });
410
- var listExpertJobsResponseSchema = z.object({
411
- data: z.object({
412
- expertJobs: z.array(expertJobSchema)
413
- }),
414
- meta: z.object({
415
- total: z.number(),
416
- take: z.number(),
417
- skip: z.number()
418
- })
419
- });
420
- var startExpertJobResponseSchema = z.object({
421
- data: z.object({
422
- expertJob: expertJobSchema
423
- })
424
- });
425
- var continueExpertJobResponseSchema = z.object({
426
- data: z.object({
427
- expertJob: expertJobSchema
428
- })
429
- });
430
- var updateExpertJobResponseSchema = z.object({
431
- data: z.object({
432
- expertJob: expertJobSchema
433
- })
434
- });
435
- var checkpointSchema = z.object({
436
- id: z.string(),
437
- expertJobId: z.string(),
438
- sequence: z.number(),
439
- createdAt: z.string().transform((s) => new Date(s))
440
- });
441
- var getCheckpointResponseSchema = z.object({
442
- data: z.object({
443
- checkpoint: checkpointSchema
444
- })
445
- });
446
- var listCheckpointsResponseSchema = z.object({
447
- data: z.object({
448
- checkpoints: z.array(checkpointSchema)
449
- }),
450
- meta: z.object({
451
- total: z.number(),
452
- take: z.number(),
453
- skip: z.number()
454
- })
455
- });
456
- var createCheckpointResponseSchema = z.object({
457
- data: z.object({
458
- checkpoint: checkpointSchema
459
- })
460
- });
461
- var workspaceInstanceSchema = z.object({
462
- id: z.string(),
463
- expertJobId: z.string(),
464
- createdAt: z.string().transform((s) => new Date(s))
465
- });
466
- var getWorkspaceInstanceResponseSchema = z.object({
467
- data: z.object({
468
- workspaceInstance: workspaceInstanceSchema
469
- })
470
- });
471
- var workspaceItemSchema = z.object({
472
- id: z.string(),
473
- path: z.string(),
474
- type: z.enum(["file", "directory"]),
475
- size: z.number().optional(),
476
- createdAt: z.string().transform((s) => new Date(s)),
477
- updatedAt: z.string().transform((s) => new Date(s))
478
- });
479
- var getWorkspaceItemResponseSchema = z.object({
480
- data: z.object({
481
- item: workspaceItemSchema
482
- })
483
- });
484
- var listWorkspaceItemsResponseSchema = z.object({
485
- data: z.object({
486
- workspaceItems: z.array(workspaceItemSchema)
487
- }),
488
- meta: z.object({
489
- total: z.number(),
490
- take: z.number(),
491
- skip: z.number()
492
- })
493
- });
494
- var createWorkspaceItemResponseSchema = z.object({
495
- data: z.object({
496
- item: workspaceItemSchema
497
- })
498
- });
499
- var updateWorkspaceItemResponseSchema = z.object({
500
- data: z.object({
501
- item: workspaceItemSchema
502
- })
503
- });
504
- var deleteWorkspaceItemResponseSchema = z.object({});
505
- var findWorkspaceItemsResponseSchema = z.object({
506
- data: z.object({
507
- workspaceItems: z.array(workspaceItemSchema)
508
- })
509
- });
510
- var workspaceSchema = z.object({
511
- id: z.string(),
512
- applicationId: z.string(),
513
- createdAt: z.string().transform((s) => new Date(s)),
514
- updatedAt: z.string().transform((s) => new Date(s))
515
- });
516
- var getWorkspaceResponseSchema = z.object({
517
- data: z.object({
518
- workspace: workspaceSchema
519
- })
520
- });
521
- var workspaceVariableSchema = z.object({
522
- name: z.string(),
523
- value: z.string()
524
- });
525
- var workspaceSecretSchema = z.object({
526
- name: z.string()
527
- });
528
- var createWorkspaceVariableResponseSchema = z.object({
529
- data: z.object({
530
- variable: workspaceVariableSchema
531
- })
532
- });
533
- var updateWorkspaceVariableResponseSchema = z.object({
534
- data: z.object({
535
- variable: workspaceVariableSchema
536
- })
537
- });
538
- var deleteWorkspaceVariableResponseSchema = z.object({});
539
- var createWorkspaceSecretResponseSchema = z.object({
540
- data: z.object({
541
- secret: workspaceSecretSchema
542
- })
543
- });
544
- var deleteWorkspaceSecretResponseSchema = z.object({});
545
-
546
- // src/studio/expert-jobs.ts
547
- function createStudioExpertJobsApi(fetcher) {
548
- return {
549
- async get(id, options) {
550
- const result = await fetcher.get(
551
- `/api/studio/v1/expert_jobs/${encodeURIComponent(id)}`,
552
- getExpertJobResponseSchema,
553
- options
554
- );
555
- if (!result.ok) return result;
556
- return { ok: true, data: result.data.data.expertJob };
557
- },
558
- async list(params, options) {
559
- const searchParams = new URLSearchParams();
560
- searchParams.set("applicationId", params.applicationId);
561
- if (params.filter) searchParams.set("filter", params.filter);
562
- if (params.sort) searchParams.set("sort", params.sort);
563
- if (params.order) searchParams.set("order", params.order);
564
- if (params.take !== void 0) searchParams.set("take", params.take.toString());
565
- if (params.skip !== void 0) searchParams.set("skip", params.skip.toString());
566
- const path = `/api/studio/v1/expert_jobs/?${searchParams.toString()}`;
567
- const result = await fetcher.get(path, listExpertJobsResponseSchema, options);
568
- if (!result.ok) return result;
569
- return {
570
- ok: true,
571
- data: {
572
- data: result.data.data.expertJobs,
573
- meta: result.data.meta
574
- }
575
- };
576
- },
577
- async start(input, options) {
578
- const result = await fetcher.post(
579
- "/api/studio/v1/expert_jobs/",
580
- input,
581
- startExpertJobResponseSchema,
582
- options
583
- );
584
- if (!result.ok) return result;
585
- return { ok: true, data: result.data.data.expertJob };
586
- },
587
- async continue(id, input, options) {
588
- const result = await fetcher.post(
589
- `/api/studio/v1/expert_jobs/${encodeURIComponent(id)}/continue`,
590
- input,
591
- continueExpertJobResponseSchema,
592
- options
593
- );
594
- if (!result.ok) return result;
595
- return { ok: true, data: result.data.data.expertJob };
596
- },
597
- async update(id, input, options) {
598
- const result = await fetcher.post(
599
- `/api/studio/v1/expert_jobs/${encodeURIComponent(id)}`,
600
- input,
601
- updateExpertJobResponseSchema,
602
- options
603
- );
604
- if (!result.ok) return result;
605
- return { ok: true, data: result.data.data.expertJob };
606
- },
607
- checkpoints: createCheckpointsApi(fetcher),
608
- workspaceInstance: createWorkspaceInstanceApi(fetcher)
609
- };
610
- }
611
- function createCheckpointsApi(fetcher) {
612
- return {
613
- async get(jobId, checkpointId, options) {
614
- const result = await fetcher.get(
615
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/checkpoints/${encodeURIComponent(checkpointId)}`,
616
- getCheckpointResponseSchema,
617
- options
618
- );
619
- if (!result.ok) return result;
620
- return { ok: true, data: result.data.data.checkpoint };
621
- },
622
- async list(jobId, params, options) {
623
- const searchParams = new URLSearchParams();
624
- if (params?.take !== void 0) searchParams.set("take", params.take.toString());
625
- if (params?.skip !== void 0) searchParams.set("skip", params.skip.toString());
626
- if (params?.sort) searchParams.set("sort", params.sort);
627
- if (params?.order) searchParams.set("order", params.order);
628
- const query = searchParams.toString();
629
- const path = `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/checkpoints/${query ? `?${query}` : ""}`;
630
- const result = await fetcher.get(path, listCheckpointsResponseSchema, options);
631
- if (!result.ok) return result;
632
- return {
633
- ok: true,
634
- data: {
635
- data: result.data.data.checkpoints,
636
- meta: result.data.meta
637
- }
638
- };
639
- },
640
- async create(jobId, options) {
641
- const result = await fetcher.post(
642
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/checkpoints/`,
643
- {},
644
- createCheckpointResponseSchema,
645
- options
646
- );
647
- if (!result.ok) return result;
648
- return { ok: true, data: result.data.data.checkpoint };
649
- }
650
- };
651
- }
652
- function createWorkspaceInstanceApi(fetcher) {
653
- return {
654
- async get(jobId, options) {
655
- const result = await fetcher.get(
656
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/`,
657
- getWorkspaceInstanceResponseSchema,
658
- options
659
- );
660
- if (!result.ok) return result;
661
- return { ok: true, data: result.data.data.workspaceInstance };
662
- },
663
- items: createWorkspaceInstanceItemsApi(fetcher)
664
- };
665
- }
666
- function createWorkspaceInstanceItemsApi(fetcher) {
667
- return {
668
- async get(jobId, itemId, options) {
669
- const result = await fetcher.get(
670
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/items/${encodeURIComponent(itemId)}`,
671
- getWorkspaceItemResponseSchema,
672
- options
673
- );
674
- if (!result.ok) return result;
675
- return { ok: true, data: result.data.data.item };
676
- },
677
- async list(jobId, params, options) {
678
- const searchParams = new URLSearchParams();
679
- if (params?.take !== void 0) searchParams.set("take", params.take.toString());
680
- if (params?.skip !== void 0) searchParams.set("skip", params.skip.toString());
681
- if (params?.path) searchParams.set("path", params.path);
682
- const query = searchParams.toString();
683
- const path = `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/items/${query ? `?${query}` : ""}`;
684
- const result = await fetcher.get(path, listWorkspaceItemsResponseSchema, options);
685
- if (!result.ok) return result;
686
- return {
687
- ok: true,
688
- data: {
689
- data: result.data.data.workspaceItems,
690
- meta: result.data.meta
691
- }
692
- };
693
- },
694
- async create(jobId, itemPath, content, options) {
695
- const result = await fetcher.post(
696
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/items/`,
697
- { path: itemPath, content: await blobToBase64(content) },
698
- createWorkspaceItemResponseSchema,
699
- options
700
- );
701
- if (!result.ok) return result;
702
- return { ok: true, data: result.data.data.item };
703
- },
704
- async update(jobId, itemId, content, options) {
705
- const result = await fetcher.post(
706
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/items/${encodeURIComponent(itemId)}`,
707
- { content: await blobToBase64(content) },
708
- updateWorkspaceItemResponseSchema,
709
- options
710
- );
711
- if (!result.ok) return result;
712
- return { ok: true, data: result.data.data.item };
713
- },
714
- async delete(jobId, itemId, options) {
715
- const result = await fetcher.delete(
716
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/items/${encodeURIComponent(itemId)}`,
717
- deleteWorkspaceItemResponseSchema,
718
- options
719
- );
720
- if (!result.ok) return result;
721
- return { ok: true, data: void 0 };
722
- },
723
- async download(jobId, itemId, options) {
724
- return fetcher.getBlob(
725
- `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/items/${encodeURIComponent(itemId)}/download`,
726
- options
727
- );
728
- },
729
- async find(jobId, pathPattern, options) {
730
- const searchParams = new URLSearchParams();
731
- searchParams.set("path", pathPattern);
732
- const path = `/api/studio/v1/expert_jobs/${encodeURIComponent(jobId)}/workspace_instance/items/find?${searchParams.toString()}`;
733
- const result = await fetcher.get(path, findWorkspaceItemsResponseSchema, options);
734
- if (!result.ok) return result;
735
- return { ok: true, data: result.data.data.workspaceItems };
736
- }
737
- };
738
- }
739
-
740
- // src/studio/experts.ts
741
- function createStudioExpertsApi(fetcher) {
742
- return {
743
- async get(key, options) {
744
- const result = await fetcher.get(
745
- `/api/studio/v1/experts/${encodeURIComponent(key)}`,
746
- getStudioExpertResponseSchema,
747
- options
748
- );
749
- if (!result.ok) return result;
750
- return { ok: true, data: result.data.data.expert };
751
- },
752
- async list(params, options) {
753
- const searchParams = new URLSearchParams();
754
- searchParams.set("applicationId", params.applicationId);
755
- if (params.filter) searchParams.set("filter", params.filter);
756
- if (params.sort) searchParams.set("sort", params.sort);
757
- if (params.order) searchParams.set("order", params.order);
758
- if (params.take !== void 0) searchParams.set("take", params.take.toString());
759
- if (params.skip !== void 0) searchParams.set("skip", params.skip.toString());
760
- const path = `/api/studio/v1/experts/?${searchParams.toString()}`;
761
- const result = await fetcher.get(path, listStudioExpertsResponseSchema, options);
762
- if (!result.ok) return result;
763
- return {
764
- ok: true,
765
- data: {
766
- data: result.data.data.experts,
767
- meta: result.data.meta
768
- }
769
- };
770
- },
771
- async create(input, options) {
772
- const result = await fetcher.post(
773
- "/api/studio/v1/experts/",
774
- input,
775
- createStudioExpertResponseSchema,
776
- options
777
- );
778
- if (!result.ok) return result;
779
- return { ok: true, data: result.data.data.expert };
780
- },
781
- async update(key, input, options) {
782
- const result = await fetcher.post(
783
- `/api/studio/v1/experts/${encodeURIComponent(key)}`,
784
- input,
785
- updateStudioExpertResponseSchema,
786
- options
787
- );
788
- if (!result.ok) return result;
789
- return { ok: true, data: result.data.data.expert };
790
- },
791
- async delete(key, options) {
792
- const result = await fetcher.delete(
793
- `/api/studio/v1/experts/${encodeURIComponent(key)}`,
794
- deleteStudioExpertResponseSchema,
795
- options
796
- );
797
- if (!result.ok) return result;
798
- return { ok: true, data: void 0 };
799
- }
800
- };
801
- }
802
-
803
- // src/studio/workspace.ts
804
- function createStudioWorkspaceApi(fetcher) {
805
- return {
806
- async get(options) {
807
- const result = await fetcher.get(
808
- "/api/studio/v1/workspace/",
809
- getWorkspaceResponseSchema,
810
- options
811
- );
812
- if (!result.ok) return result;
813
- return { ok: true, data: result.data.data.workspace };
814
- },
815
- items: createWorkspaceItemsApi(fetcher),
816
- variables: createWorkspaceVariablesApi(fetcher),
817
- secrets: createWorkspaceSecretsApi(fetcher)
818
- };
819
- }
820
- function createWorkspaceItemsApi(fetcher) {
821
- return {
822
- async get(itemId, options) {
823
- const result = await fetcher.get(
824
- `/api/studio/v1/workspace/items/${encodeURIComponent(itemId)}`,
825
- getWorkspaceItemResponseSchema,
826
- options
827
- );
828
- if (!result.ok) return result;
829
- return { ok: true, data: result.data.data.item };
830
- },
831
- async list(params, options) {
832
- const searchParams = new URLSearchParams();
833
- if (params?.take !== void 0) searchParams.set("take", params.take.toString());
834
- if (params?.skip !== void 0) searchParams.set("skip", params.skip.toString());
835
- if (params?.path) searchParams.set("path", params.path);
836
- const query = searchParams.toString();
837
- const path = `/api/studio/v1/workspace/items/${query ? `?${query}` : ""}`;
838
- const result = await fetcher.get(path, listWorkspaceItemsResponseSchema, options);
839
- if (!result.ok) return result;
840
- return {
841
- ok: true,
842
- data: {
843
- data: result.data.data.workspaceItems,
844
- meta: result.data.meta
845
- }
846
- };
847
- },
848
- async create(itemPath, content, options) {
849
- const result = await fetcher.post(
850
- "/api/studio/v1/workspace/items/",
851
- { path: itemPath, content: await blobToBase64(content) },
852
- createWorkspaceItemResponseSchema,
853
- options
854
- );
855
- if (!result.ok) return result;
856
- return { ok: true, data: result.data.data.item };
857
- },
858
- async update(itemId, content, options) {
859
- const result = await fetcher.post(
860
- `/api/studio/v1/workspace/items/${encodeURIComponent(itemId)}`,
861
- { content: await blobToBase64(content) },
862
- updateWorkspaceItemResponseSchema,
863
- options
864
- );
865
- if (!result.ok) return result;
866
- return { ok: true, data: result.data.data.item };
867
- },
868
- async delete(itemId, options) {
869
- const result = await fetcher.delete(
870
- `/api/studio/v1/workspace/items/${encodeURIComponent(itemId)}`,
871
- deleteWorkspaceItemResponseSchema,
872
- options
873
- );
874
- if (!result.ok) return result;
875
- return { ok: true, data: void 0 };
876
- },
877
- async download(itemId, options) {
878
- return fetcher.getBlob(
879
- `/api/studio/v1/workspace/items/${encodeURIComponent(itemId)}/download`,
880
- options
881
- );
882
- },
883
- async find(pathPattern, options) {
884
- const searchParams = new URLSearchParams();
885
- searchParams.set("path", pathPattern);
886
- const path = `/api/studio/v1/workspace/items/find?${searchParams.toString()}`;
887
- const result = await fetcher.get(path, findWorkspaceItemsResponseSchema, options);
888
- if (!result.ok) return result;
889
- return { ok: true, data: result.data.data.workspaceItems };
890
- }
891
- };
892
- }
893
- function createWorkspaceVariablesApi(fetcher) {
894
- return {
895
- async create(input, options) {
896
- const result = await fetcher.post(
897
- "/api/studio/v1/workspace/variables/",
898
- input,
899
- createWorkspaceVariableResponseSchema,
900
- options
901
- );
902
- if (!result.ok) return result;
903
- return { ok: true, data: result.data.data.variable };
904
- },
905
- async update(name, input, options) {
906
- const result = await fetcher.post(
907
- `/api/studio/v1/workspace/variables/${encodeURIComponent(name)}`,
908
- input,
909
- updateWorkspaceVariableResponseSchema,
910
- options
911
- );
912
- if (!result.ok) return result;
913
- return { ok: true, data: result.data.data.variable };
914
- },
915
- async delete(name, options) {
916
- const result = await fetcher.delete(
917
- `/api/studio/v1/workspace/variables/${encodeURIComponent(name)}`,
918
- deleteWorkspaceVariableResponseSchema,
919
- options
920
- );
921
- if (!result.ok) return result;
922
- return { ok: true, data: void 0 };
923
- }
924
- };
925
- }
926
- function createWorkspaceSecretsApi(fetcher) {
927
- return {
928
- async create(input, options) {
929
- const result = await fetcher.post(
930
- "/api/studio/v1/workspace/secrets/",
931
- input,
932
- createWorkspaceSecretResponseSchema,
933
- options
934
- );
935
- if (!result.ok) return result;
936
- return { ok: true, data: result.data.data.secret };
937
- },
938
- async delete(name, options) {
939
- const result = await fetcher.delete(
940
- `/api/studio/v1/workspace/secrets/${encodeURIComponent(name)}`,
941
- deleteWorkspaceSecretResponseSchema,
942
- options
943
- );
944
- if (!result.ok) return result;
945
- return { ok: true, data: void 0 };
946
- }
947
- };
948
- }
949
-
950
- // src/client.ts
951
- function createApiClient(config) {
952
- const fetcher = createFetcher(config);
953
- return {
954
- registry: {
955
- experts: createRegistryExpertsApi(fetcher)
956
- },
957
- studio: {
958
- experts: createStudioExpertsApi(fetcher),
959
- expertJobs: createStudioExpertJobsApi(fetcher),
960
- workspace: createStudioWorkspaceApi(fetcher)
961
- }
962
- };
963
- }
964
-
965
- export { createApiClient, createFetcher, createRegistryExpertsApi, createStudioExpertJobsApi, createStudioExpertsApi, createStudioWorkspaceApi };
966
- //# sourceMappingURL=index.js.map
967
- //# sourceMappingURL=index.js.map