perstack 0.0.86 → 0.0.88

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.
@@ -0,0 +1,1571 @@
1
+ import { external_exports, usageSchema, activityOrGroupSchema, toolResultSchema, toolCallSchema, messageSchema, instructionMessageSchema, userMessageSchema, toolMessageSchema } from './chunk-FVVK5V2C.js';
2
+
3
+ // ../../node_modules/.pnpm/@perstack+api-client@0.0.55_@perstack+core@packages+core_zod@4.3.6/node_modules/@perstack/api-client/dist/index.mjs
4
+ function createValidationError(error) {
5
+ return {
6
+ errorType: "validation",
7
+ code: 400,
8
+ message: `Validation failed: ${error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join("; ")}`,
9
+ reason: error.issues
10
+ };
11
+ }
12
+ function createAbortError() {
13
+ return {
14
+ errorType: "abort",
15
+ code: 0,
16
+ message: "Request aborted",
17
+ aborted: true
18
+ };
19
+ }
20
+ function createTimeoutError() {
21
+ return {
22
+ errorType: "timeout",
23
+ code: 0,
24
+ message: "Request timed out"
25
+ };
26
+ }
27
+ function createNetworkError(error) {
28
+ return {
29
+ errorType: "network",
30
+ code: 0,
31
+ message: error instanceof Error ? error.message : "Network error",
32
+ reason: error,
33
+ cause: error instanceof Error ? error : void 0
34
+ };
35
+ }
36
+ async function handleHttpError(response2) {
37
+ let errorBody;
38
+ try {
39
+ errorBody = await response2.json();
40
+ } catch {
41
+ errorBody = void 0;
42
+ }
43
+ return {
44
+ ok: false,
45
+ error: createHttpError(response2.status, response2.statusText, errorBody)
46
+ };
47
+ }
48
+ function createHttpError(status, statusText, body) {
49
+ if (typeof body === "object" && body !== null) {
50
+ const hasReason = "reason" in body;
51
+ if ("error" in body && typeof body.error === "string") return {
52
+ errorType: "http",
53
+ code: status,
54
+ message: body.error,
55
+ reason: hasReason ? body.reason : void 0
56
+ };
57
+ if (hasReason) return {
58
+ errorType: "http",
59
+ code: status,
60
+ message: statusText,
61
+ reason: body.reason
62
+ };
63
+ }
64
+ return {
65
+ errorType: "http",
66
+ code: status,
67
+ message: statusText
68
+ };
69
+ }
70
+ var DEFAULT_BASE_URL = "https://api.perstack.ai";
71
+ var DEFAULT_TIMEOUT = 3e4;
72
+ function createFetcher(config) {
73
+ const baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
74
+ const timeout = config.timeout ?? DEFAULT_TIMEOUT;
75
+ const useCredentials = "credentials" in config && config.credentials === "include";
76
+ const apiKey = "apiKey" in config ? config.apiKey : void 0;
77
+ function buildUrl(path) {
78
+ return `${baseUrl}${path}`;
79
+ }
80
+ function buildHeaders(options) {
81
+ const headers = {};
82
+ if (options?.hasBody) headers["Content-Type"] = "application/json";
83
+ if (apiKey) headers.Authorization = `Bearer ${apiKey}`;
84
+ return headers;
85
+ }
86
+ function getCredentials() {
87
+ return useCredentials ? "include" : void 0;
88
+ }
89
+ function createTimeoutSignal(externalSignal) {
90
+ const controller = new AbortController();
91
+ let timedOut = false;
92
+ const timeoutId = setTimeout(() => {
93
+ timedOut = true;
94
+ controller.abort();
95
+ }, timeout);
96
+ let abortHandler;
97
+ if (externalSignal) if (externalSignal.aborted) controller.abort();
98
+ else {
99
+ abortHandler = () => controller.abort();
100
+ externalSignal.addEventListener("abort", abortHandler);
101
+ }
102
+ return {
103
+ signal: controller.signal,
104
+ cleanup: () => {
105
+ clearTimeout(timeoutId);
106
+ if (abortHandler && externalSignal) externalSignal.removeEventListener("abort", abortHandler);
107
+ },
108
+ isTimeout: () => timedOut
109
+ };
110
+ }
111
+ function wrapStreamWithIdleTimeout(stream, idleTimeoutMs, externalSignal) {
112
+ const reader = stream.getReader();
113
+ const controller = new AbortController();
114
+ let timeoutId;
115
+ let abortHandler;
116
+ if (externalSignal) if (externalSignal.aborted) controller.abort();
117
+ else {
118
+ abortHandler = () => controller.abort();
119
+ externalSignal.addEventListener("abort", abortHandler);
120
+ }
121
+ function resetTimeout() {
122
+ if (timeoutId) clearTimeout(timeoutId);
123
+ timeoutId = setTimeout(() => controller.abort(), idleTimeoutMs);
124
+ }
125
+ function cleanup() {
126
+ if (timeoutId) clearTimeout(timeoutId);
127
+ if (abortHandler && externalSignal) externalSignal.removeEventListener("abort", abortHandler);
128
+ }
129
+ return new ReadableStream({
130
+ start() {
131
+ resetTimeout();
132
+ },
133
+ async pull(streamController) {
134
+ try {
135
+ const result = await Promise.race([reader.read(), new Promise((_, reject) => {
136
+ if (controller.signal.aborted) reject(new DOMException("Stream idle timeout", "AbortError"));
137
+ controller.signal.addEventListener("abort", () => {
138
+ reject(new DOMException("Stream idle timeout", "AbortError"));
139
+ });
140
+ })]);
141
+ if (result.done) {
142
+ cleanup();
143
+ streamController.close();
144
+ return;
145
+ }
146
+ resetTimeout();
147
+ streamController.enqueue(result.value);
148
+ } catch (error) {
149
+ cleanup();
150
+ reader.cancel().catch(() => {
151
+ });
152
+ if (error instanceof DOMException && error.name === "AbortError") streamController.error(new DOMException("Stream idle timeout", "AbortError"));
153
+ else streamController.error(error);
154
+ }
155
+ },
156
+ cancel(reason) {
157
+ cleanup();
158
+ reader.cancel(reason).catch(() => {
159
+ });
160
+ }
161
+ });
162
+ }
163
+ async function request2(method, path, body, options) {
164
+ const { signal, cleanup, isTimeout } = createTimeoutSignal(options?.signal);
165
+ try {
166
+ const response2 = await fetch(buildUrl(path), {
167
+ method,
168
+ headers: buildHeaders(body ? { hasBody: true } : void 0),
169
+ body: body ? JSON.stringify(body) : void 0,
170
+ signal,
171
+ credentials: getCredentials()
172
+ });
173
+ if (!response2.ok) return handleHttpError(response2);
174
+ return {
175
+ ok: true,
176
+ data: await response2.json()
177
+ };
178
+ } catch (error) {
179
+ if (error instanceof Error && error.name === "AbortError") {
180
+ if (isTimeout()) return {
181
+ ok: false,
182
+ error: createTimeoutError()
183
+ };
184
+ return {
185
+ ok: false,
186
+ error: createAbortError()
187
+ };
188
+ }
189
+ return {
190
+ ok: false,
191
+ error: createNetworkError(error)
192
+ };
193
+ } finally {
194
+ cleanup();
195
+ }
196
+ }
197
+ async function requestBlob(path, options) {
198
+ const { signal, cleanup, isTimeout } = createTimeoutSignal(options?.signal);
199
+ try {
200
+ const response2 = await fetch(buildUrl(path), {
201
+ method: "GET",
202
+ headers: buildHeaders(),
203
+ signal,
204
+ credentials: getCredentials()
205
+ });
206
+ if (!response2.ok) return handleHttpError(response2);
207
+ return {
208
+ ok: true,
209
+ data: await response2.blob()
210
+ };
211
+ } catch (error) {
212
+ if (error instanceof Error && error.name === "AbortError") {
213
+ if (isTimeout()) return {
214
+ ok: false,
215
+ error: createTimeoutError()
216
+ };
217
+ return {
218
+ ok: false,
219
+ error: createAbortError()
220
+ };
221
+ }
222
+ return {
223
+ ok: false,
224
+ error: createNetworkError(error)
225
+ };
226
+ } finally {
227
+ cleanup();
228
+ }
229
+ }
230
+ async function requestStream(path, options) {
231
+ const { signal, cleanup, isTimeout } = createTimeoutSignal(options?.signal);
232
+ try {
233
+ const response2 = await fetch(buildUrl(path), {
234
+ method: "GET",
235
+ headers: buildHeaders(),
236
+ signal,
237
+ credentials: getCredentials()
238
+ });
239
+ if (!response2.ok) {
240
+ cleanup();
241
+ return handleHttpError(response2);
242
+ }
243
+ if (!response2.body) {
244
+ cleanup();
245
+ return {
246
+ ok: false,
247
+ error: createNetworkError(/* @__PURE__ */ new Error("Response body is null"))
248
+ };
249
+ }
250
+ cleanup();
251
+ const idleTimeout = options?.streamIdleTimeout ?? timeout;
252
+ return {
253
+ ok: true,
254
+ data: wrapStreamWithIdleTimeout(response2.body, idleTimeout, options?.signal)
255
+ };
256
+ } catch (error) {
257
+ cleanup();
258
+ if (error instanceof Error && error.name === "AbortError") {
259
+ if (isTimeout()) return {
260
+ ok: false,
261
+ error: createTimeoutError()
262
+ };
263
+ return {
264
+ ok: false,
265
+ error: createAbortError()
266
+ };
267
+ }
268
+ return {
269
+ ok: false,
270
+ error: createNetworkError(error)
271
+ };
272
+ }
273
+ }
274
+ async function requestNoContent(method, path, options) {
275
+ const { signal, cleanup, isTimeout } = createTimeoutSignal(options?.signal);
276
+ try {
277
+ const response2 = await fetch(buildUrl(path), {
278
+ method,
279
+ headers: buildHeaders(),
280
+ signal,
281
+ credentials: getCredentials()
282
+ });
283
+ if (!response2.ok) return handleHttpError(response2);
284
+ return {
285
+ ok: true,
286
+ data: void 0
287
+ };
288
+ } catch (error) {
289
+ if (error instanceof Error && error.name === "AbortError") {
290
+ if (isTimeout()) return {
291
+ ok: false,
292
+ error: createTimeoutError()
293
+ };
294
+ return {
295
+ ok: false,
296
+ error: createAbortError()
297
+ };
298
+ }
299
+ return {
300
+ ok: false,
301
+ error: createNetworkError(error)
302
+ };
303
+ } finally {
304
+ cleanup();
305
+ }
306
+ }
307
+ return {
308
+ get: (path, options) => request2("GET", path, void 0, options),
309
+ post: (path, body, options) => request2("POST", path, body, options),
310
+ put: (path, body, options) => request2("PUT", path, body, options),
311
+ delete: (path, options) => request2("DELETE", path, void 0, options),
312
+ deleteNoContent: (path, options) => requestNoContent("DELETE", path, options),
313
+ getBlob: (path, options) => requestBlob(path, options),
314
+ getStream: (path, options) => requestStream(path, options)
315
+ };
316
+ }
317
+ function buildQueryString(params) {
318
+ if (!params) return "";
319
+ const searchParams = new URLSearchParams();
320
+ for (const [key, value] of Object.entries(params)) if (value !== void 0) searchParams.set(key, String(value));
321
+ const queryString = searchParams.toString();
322
+ return queryString ? `?${queryString}` : "";
323
+ }
324
+ async function* parseSSEEvents(reader) {
325
+ const decoder = new TextDecoder();
326
+ let buffer = "";
327
+ while (true) {
328
+ const { value, done } = await reader.read();
329
+ if (done) break;
330
+ buffer += decoder.decode(value, { stream: true });
331
+ const events = buffer.split("\n\n");
332
+ buffer = events.pop() || "";
333
+ for (const event of events) {
334
+ if (event.trim() === "") continue;
335
+ const lines = event.split("\n");
336
+ const eventType = lines.find((line) => line.startsWith("event:"))?.slice(6).trim();
337
+ const data = lines.find((line) => line.startsWith("data:"))?.slice(5).trim();
338
+ if (!eventType || !data) continue;
339
+ if (eventType !== "message" && eventType !== "error" && eventType !== "complete") continue;
340
+ try {
341
+ yield {
342
+ event: eventType,
343
+ data: JSON.parse(data)
344
+ };
345
+ } catch {
346
+ }
347
+ }
348
+ }
349
+ }
350
+ var organizationNameRegex = /^[a-z0-9][a-z0-9_.-]*$/;
351
+ var maxOrganizationNameLength = 128;
352
+ var applicationNameRegex = /^[a-z0-9][a-z0-9_.-]*$/;
353
+ var maxApplicationNameLength = 255;
354
+ var maxVariableValueLength = 65536;
355
+ var maxSecretValueLength = 65536;
356
+ var expertKeyRegex = /^((?:@[a-z0-9][a-z0-9_.-]*\/)?[a-z0-9][a-z0-9_.-]*)(?:@((?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\w.-]+)?(?:\+[\w.-]+)?)|@([a-z0-9][a-z0-9_.-]*))?$/;
357
+ var expertNameRegex = /^(@[a-z0-9][a-z0-9_-]*\/)?[a-z0-9][a-z0-9_-]*$/;
358
+ var scopeNameRegex = /^[a-z0-9][a-z0-9_-]*$/;
359
+ var scopeNameRefRegex = /^[a-z0-9][a-z0-9_-]*(?:@(?:(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\w.-]+)?(?:\+[\w.-]+)?|[a-z0-9][a-z0-9_-]*))?$/;
360
+ var expertVersionRegex = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\w.-]+)?(?:\+[\w.-]+)?$/;
361
+ var tagNameRegex = /^[a-z0-9][a-z0-9_-]*$/;
362
+ var maxExpertNameLength = 255;
363
+ var maxExpertVersionTagLength = 255;
364
+ var maxExpertKeyLength = 511;
365
+ var maxExpertDescriptionLength = 1024 * 2;
366
+ var maxExpertInstructionLength = 1024 * 20;
367
+ var maxExpertDelegateItems = 255;
368
+ var maxExpertTagItems = 8;
369
+ var maxExpertJobQueryLength = 1024 * 20;
370
+ var packageWithVersionRegex = /^(?:@[a-z0-9][a-z0-9_.-]*\/)?[a-z0-9][a-z0-9_.-]*(?:@(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\w.-]+)?(?:\+[\w.-]+)?|@[a-z0-9][a-z0-9_.-]*)?$/;
371
+ var urlSafeRegex = /^[a-z0-9][a-z0-9_-]*$/;
372
+ var maxSkillNameLength = 255;
373
+ var maxSkillDescriptionLength = 1024 * 2;
374
+ var maxSkillRuleLength = 1024 * 2;
375
+ var maxSkillPickOmitItems = 255;
376
+ var maxSkillRequiredEnvItems = 255;
377
+ var maxSkillToolNameLength = 255;
378
+ var maxSkillEndpointLength = 1024 * 2;
379
+ var maxSkillInputJsonSchemaLength = 1024 * 20;
380
+ var maxCheckpointToolCallIdLength = 255;
381
+ var envNameRegex = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
382
+ var maxEnvNameLength = 255;
383
+ var maxProviderBaseUrlLength = 2048;
384
+ var maxProviderHeaderKeyLength = 255;
385
+ var maxProviderHeaderValueLength = 2048;
386
+ var maxProviderHeadersCount = 50;
387
+ var cuidSchema = external_exports.string().cuid2();
388
+ external_exports.string().min(24).cuid2();
389
+ var runtimeVersionSchema = external_exports.enum(["v1.0"]);
390
+ var providerSchema = external_exports.enum([
391
+ "anthropic",
392
+ "google",
393
+ "openai",
394
+ "deepseek",
395
+ "azure-openai",
396
+ "amazon-bedrock",
397
+ "google-vertex"
398
+ ]);
399
+ var datetimeSchema = external_exports.string().datetime({ offset: true });
400
+ var expertKeyFieldSchema = external_exports.string().min(1).max(maxExpertKeyLength).regex(expertKeyRegex);
401
+ var expertNameFieldSchema = external_exports.string().min(1).max(maxExpertNameLength).regex(expertNameRegex);
402
+ var expertVersionFieldSchema = external_exports.string().min(1).max(maxExpertVersionTagLength).regex(expertVersionRegex);
403
+ var expertTagFieldSchema = external_exports.string().min(1).max(maxExpertVersionTagLength).regex(tagNameRegex);
404
+ var expertCategoryFieldSchema = external_exports.enum([
405
+ "general",
406
+ "coding",
407
+ "research",
408
+ "writing",
409
+ "data",
410
+ "automation"
411
+ ]);
412
+ var scopeNameSchema = external_exports.string().min(1).max(maxExpertNameLength).regex(scopeNameRegex);
413
+ external_exports.string().min(1).max(maxExpertNameLength + maxExpertVersionTagLength + 1).regex(scopeNameRefRegex);
414
+ external_exports.string().min(1).max(30);
415
+ var organizationStatusSchema = external_exports.enum([
416
+ "active",
417
+ "inactive",
418
+ "deleted"
419
+ ]);
420
+ var organizationTypeSchema = external_exports.enum([
421
+ "personal",
422
+ "personalPlus",
423
+ "team",
424
+ "serviceAdmin"
425
+ ]);
426
+ var organizationSchema = external_exports.object({
427
+ type: external_exports.literal("organization"),
428
+ id: cuidSchema,
429
+ createdAt: datetimeSchema,
430
+ updatedAt: datetimeSchema,
431
+ name: external_exports.string().min(1).max(maxOrganizationNameLength).regex(organizationNameRegex).optional(),
432
+ nameChangedAt: datetimeSchema.optional(),
433
+ status: organizationStatusSchema,
434
+ organizationType: organizationTypeSchema,
435
+ maxApplications: external_exports.number().int().min(0),
436
+ maxApiKeys: external_exports.number().int().min(0),
437
+ maxExperts: external_exports.number().int().min(0)
438
+ });
439
+ function dedent(templ, ...values) {
440
+ let strings = Array.from(typeof templ === "string" ? [templ] : templ);
441
+ const lastIndex = strings.length - 1;
442
+ strings[lastIndex] = (strings[lastIndex] ?? "").replace(/\r?\n([\t ]*)$/, "");
443
+ const indentLengths = strings.reduce((arr, str) => {
444
+ const matches = str.match(/\n([\t ]+|(?!\s).)/g);
445
+ if (matches) return arr.concat(matches.map((match) => match.match(/[\t ]/g)?.length ?? 0));
446
+ return arr;
447
+ }, []);
448
+ if (indentLengths.length) {
449
+ const pattern = new RegExp(`
450
+ [ ]{${Math.min(...indentLengths)}}`, "g");
451
+ strings = strings.map((str) => str.replace(pattern, "\n"));
452
+ }
453
+ strings[0] = (strings[0] ?? "").replace(/^\r?\n/, "");
454
+ let string = strings[0] ?? "";
455
+ values.forEach((value, i) => {
456
+ const endentation = string.match(/(?:^|\n)( *)$/)?.[1] ?? "";
457
+ let indentedValue = value;
458
+ if (typeof value === "string" && value.includes("\n")) indentedValue = String(value).split("\n").map((str, j) => {
459
+ return j === 0 ? str : `${endentation}${str}`;
460
+ }).join("\n");
461
+ string += String(indentedValue) + (strings[i + 1] ?? "");
462
+ });
463
+ return string;
464
+ }
465
+ external_exports.object({
466
+ code: external_exports.literal(400),
467
+ error: external_exports.literal("Bad Request"),
468
+ reason: external_exports.string()
469
+ }).describe("Bad Request");
470
+ external_exports.object({
471
+ code: external_exports.literal(401),
472
+ error: external_exports.literal("Unauthorized"),
473
+ reason: external_exports.literal("Failed to authenticate")
474
+ }).describe(dedent`
475
+ Authentication failed. Possible reasons:
476
+ - Authorization header is not provided
477
+ - Invalid API key
478
+ - Session expired
479
+ `);
480
+ external_exports.object({
481
+ code: external_exports.literal(403),
482
+ error: external_exports.literal("Forbidden"),
483
+ reason: external_exports.string()
484
+ }).describe("Access denied. The authenticated user does not have permission to perform this action.");
485
+ external_exports.object({
486
+ code: external_exports.literal(403),
487
+ error: external_exports.literal("Forbidden"),
488
+ reason: external_exports.string(),
489
+ details: external_exports.object({
490
+ minutesUsed: external_exports.number(),
491
+ limitMinutes: external_exports.number(),
492
+ upgradeUrl: external_exports.string()
493
+ })
494
+ }).describe("Usage limit exceeded. Upgrade your plan to continue.");
495
+ external_exports.object({
496
+ code: external_exports.literal(404),
497
+ error: external_exports.literal("Not Found"),
498
+ reason: external_exports.string()
499
+ }).describe("Resource not found.");
500
+ external_exports.object({
501
+ code: external_exports.literal(409),
502
+ error: external_exports.literal("Conflict"),
503
+ reason: external_exports.string()
504
+ }).describe("Request conflicts with current state of the resource.");
505
+ external_exports.object({
506
+ code: external_exports.literal(503),
507
+ error: external_exports.literal("Service Unavailable"),
508
+ reason: external_exports.string()
509
+ }).describe("Service temporarily unavailable. Retry with exponential backoff.");
510
+ external_exports.object({
511
+ code: external_exports.literal(422),
512
+ error: external_exports.literal("Validation Failed"),
513
+ reason: external_exports.unknown()
514
+ }).describe("Request validation failed. Check the request body, query parameters, or path parameters.");
515
+ var paginationMeta = external_exports.object({
516
+ total: external_exports.number().int().min(0),
517
+ take: external_exports.number().int().min(1),
518
+ skip: external_exports.number().int().min(0)
519
+ });
520
+ external_exports.object({
521
+ code: external_exports.literal(401),
522
+ error: external_exports.literal("Unauthorized"),
523
+ reason: external_exports.string()
524
+ }).describe("Unauthorized");
525
+ var applicationNameSchema = external_exports.string().min(1).max(maxApplicationNameLength).regex(applicationNameRegex);
526
+ var applicationStatusSchema = external_exports.enum([
527
+ "active",
528
+ "inactive",
529
+ "deleted"
530
+ ]);
531
+ var applicationSchema = external_exports.object({
532
+ type: external_exports.literal("application"),
533
+ id: cuidSchema,
534
+ organizationId: cuidSchema,
535
+ organization: organizationSchema,
536
+ createdAt: datetimeSchema,
537
+ updatedAt: datetimeSchema,
538
+ name: applicationNameSchema,
539
+ status: applicationStatusSchema,
540
+ expertCount: external_exports.number().describe("Number of expert draft scopes associated with this application").optional(),
541
+ providers: external_exports.array(providerSchema).describe("List of configured providers for this application").optional(),
542
+ totalJobs: external_exports.number().describe("Total number of jobs executed for this application").optional(),
543
+ lastJobExecutionAt: external_exports.string().datetime({ offset: true }).nullable().describe("Timestamp of the most recent job execution").optional()
544
+ });
545
+ var request$17 = { body: external_exports.object({
546
+ name: applicationNameSchema,
547
+ applicationGroupId: cuidSchema.optional()
548
+ }) };
549
+ external_exports.object({ data: external_exports.object({ application: applicationSchema }) });
550
+ var request$16 = { query: external_exports.object({
551
+ name: external_exports.preprocess((val) => Array.isArray(val) ? val.join(",") : val, external_exports.string().optional()),
552
+ sort: external_exports.enum([
553
+ "name",
554
+ "createdAt",
555
+ "updatedAt"
556
+ ]).optional(),
557
+ order: external_exports.enum(["asc", "desc"]).optional(),
558
+ take: external_exports.coerce.number().min(1).max(100).default(20),
559
+ skip: external_exports.coerce.number().min(0).default(0)
560
+ }) };
561
+ external_exports.object({
562
+ data: external_exports.object({ applications: external_exports.array(applicationSchema) }),
563
+ meta: paginationMeta
564
+ });
565
+ var request$15 = {
566
+ params: external_exports.object({ applicationId: cuidSchema }),
567
+ body: external_exports.object({
568
+ name: applicationNameSchema.optional(),
569
+ status: applicationStatusSchema.exclude(["deleted"]).optional()
570
+ }).refine((data) => data.name !== void 0 || data.status !== void 0, { message: "At least one field must be provided" })
571
+ };
572
+ external_exports.object({ data: external_exports.object({ application: applicationSchema }) });
573
+ var secretNameSchema = external_exports.string().min(1, "Secret name is required").max(255, "Secret name must be 255 characters or less").regex(/^[A-Z][A-Z0-9_]*$/, "Secret name must start with uppercase letter and contain only uppercase letters, numbers, and underscores");
574
+ var secretValueSchema = external_exports.string().min(1, "Secret value is required").max(maxSecretValueLength);
575
+ var secretMetadataSchema = external_exports.object({
576
+ name: external_exports.string(),
577
+ createdAt: datetimeSchema,
578
+ updatedAt: datetimeSchema
579
+ });
580
+ external_exports.object({
581
+ type: external_exports.literal("secret"),
582
+ id: cuidSchema,
583
+ name: secretNameSchema,
584
+ applicationId: cuidSchema,
585
+ createdAt: datetimeSchema,
586
+ updatedAt: datetimeSchema
587
+ });
588
+ var request$14 = { body: external_exports.object({
589
+ applicationId: cuidSchema,
590
+ name: secretNameSchema,
591
+ value: secretValueSchema
592
+ }) };
593
+ external_exports.object({ data: external_exports.object({ secret: secretMetadataSchema }) });
594
+ var request$13 = { query: external_exports.object({ applicationId: cuidSchema.optional() }) };
595
+ external_exports.object({ data: external_exports.object({ secrets: external_exports.array(secretMetadataSchema) }) });
596
+ var request$12 = {
597
+ params: external_exports.object({ name: external_exports.string().min(1) }),
598
+ body: external_exports.object({
599
+ applicationId: cuidSchema,
600
+ value: secretValueSchema
601
+ })
602
+ };
603
+ external_exports.object({ data: external_exports.object({ secret: secretMetadataSchema }) });
604
+ var variableNameSchema = external_exports.string().min(1).max(255).regex(/^[A-Z][A-Z0-9_]*$/, "Variable name must start with uppercase letter and contain only uppercase letters, digits, and underscores");
605
+ var variableValueSchema = external_exports.string().max(maxVariableValueLength);
606
+ external_exports.object({
607
+ type: external_exports.literal("variable"),
608
+ id: cuidSchema,
609
+ applicationId: cuidSchema,
610
+ createdAt: datetimeSchema,
611
+ updatedAt: datetimeSchema,
612
+ name: variableNameSchema,
613
+ value: variableValueSchema
614
+ });
615
+ var variableResponseSchema = external_exports.object({
616
+ name: variableNameSchema,
617
+ value: variableValueSchema,
618
+ createdAt: datetimeSchema,
619
+ updatedAt: datetimeSchema
620
+ });
621
+ var request$11 = { body: external_exports.object({
622
+ applicationId: cuidSchema,
623
+ name: variableNameSchema,
624
+ value: variableValueSchema
625
+ }) };
626
+ external_exports.object({ data: external_exports.object({ variable: variableResponseSchema }) });
627
+ var request$10 = { query: external_exports.object({ applicationId: cuidSchema }) };
628
+ external_exports.object({ data: external_exports.object({ variables: external_exports.array(variableResponseSchema) }) });
629
+ var request$9 = {
630
+ params: external_exports.object({ name: external_exports.string().min(1) }),
631
+ body: external_exports.object({
632
+ applicationId: cuidSchema,
633
+ value: variableValueSchema
634
+ })
635
+ };
636
+ external_exports.object({ data: external_exports.object({ variable: variableResponseSchema }) });
637
+ var expertScopeSchema = external_exports.object({
638
+ id: cuidSchema,
639
+ name: scopeNameSchema,
640
+ organizationId: cuidSchema,
641
+ expertDraftScopeId: cuidSchema,
642
+ published: external_exports.boolean(),
643
+ publishedAt: datetimeSchema.nullable(),
644
+ category: expertCategoryFieldSchema,
645
+ totalRuns: external_exports.number().int().min(0),
646
+ totalJobs: external_exports.number().int().min(0),
647
+ totalStars: external_exports.number().int().min(0),
648
+ createdAt: datetimeSchema,
649
+ updatedAt: datetimeSchema,
650
+ createdBy: cuidSchema,
651
+ updatedBy: cuidSchema
652
+ });
653
+ var expertVersionSchema = external_exports.object({
654
+ id: cuidSchema,
655
+ expertScopeId: cuidSchema,
656
+ version: expertVersionFieldSchema,
657
+ public: external_exports.boolean(),
658
+ yanked: external_exports.boolean(),
659
+ totalRuns: external_exports.number().int().min(0),
660
+ totalJobs: external_exports.number().int().min(0),
661
+ createdAt: datetimeSchema,
662
+ updatedAt: datetimeSchema,
663
+ createdBy: cuidSchema,
664
+ updatedBy: cuidSchema,
665
+ tags: external_exports.array(expertTagFieldSchema),
666
+ readmeUrl: external_exports.string().optional()
667
+ });
668
+ expertScopeSchema.extend({ versions: external_exports.array(expertVersionSchema) });
669
+ function isPrivateOrLocalIP(hostname) {
670
+ if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1" || hostname === "0.0.0.0") return true;
671
+ const ipv4Match = hostname.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
672
+ if (ipv4Match) {
673
+ const a = Number(ipv4Match[1]);
674
+ const b = Number(ipv4Match[2]);
675
+ if (a === 10) return true;
676
+ if (a === 172 && b >= 16 && b <= 31) return true;
677
+ if (a === 192 && b === 168) return true;
678
+ if (a === 169 && b === 254) return true;
679
+ if (a === 127) return true;
680
+ }
681
+ if (hostname.includes(":")) {
682
+ if (hostname.startsWith("fe80:") || hostname.startsWith("fc") || hostname.startsWith("fd")) return true;
683
+ }
684
+ if (hostname.startsWith("::ffff:")) {
685
+ if (isPrivateOrLocalIP(hostname.slice(7))) return true;
686
+ }
687
+ return false;
688
+ }
689
+ var sseEndpointSchema = external_exports.string().max(maxSkillEndpointLength).url().refine((url) => {
690
+ try {
691
+ const parsed = new URL(url);
692
+ if (parsed.protocol !== "https:") return false;
693
+ if (isPrivateOrLocalIP(parsed.hostname)) return false;
694
+ return true;
695
+ } catch {
696
+ return false;
697
+ }
698
+ }, { message: "Endpoint must be a public HTTPS URL" });
699
+ var skillNameSchema = external_exports.string().min(1).max(maxSkillNameLength).regex(packageWithVersionRegex);
700
+ var mcpStdioSkillCommandSchema = external_exports.enum(["npx", "uvx"]);
701
+ var mcpStdioSkillSchema = external_exports.object({
702
+ type: external_exports.literal("mcpStdioSkill"),
703
+ name: external_exports.string().min(1),
704
+ description: external_exports.string().min(1).max(maxSkillDescriptionLength),
705
+ rule: external_exports.string().min(1).max(maxSkillRuleLength).optional(),
706
+ pick: external_exports.array(external_exports.string().min(1).max(maxSkillToolNameLength)).max(maxSkillPickOmitItems).optional().default([]),
707
+ omit: external_exports.array(external_exports.string().min(1).max(maxSkillToolNameLength)).max(maxSkillPickOmitItems).optional().default([]),
708
+ command: mcpStdioSkillCommandSchema,
709
+ packageName: external_exports.string().min(1).max(maxSkillNameLength).regex(packageWithVersionRegex),
710
+ requiredEnv: external_exports.array(external_exports.string().min(1).max(maxEnvNameLength).regex(envNameRegex)).max(maxSkillRequiredEnvItems).optional().default([])
711
+ });
712
+ var mcpSseSkillSchema = external_exports.object({
713
+ type: external_exports.literal("mcpSseSkill"),
714
+ name: external_exports.string().min(1),
715
+ description: external_exports.string().min(1).max(maxSkillDescriptionLength),
716
+ rule: external_exports.string().min(1).max(maxSkillRuleLength).optional(),
717
+ pick: external_exports.array(external_exports.string().min(1).max(maxSkillToolNameLength)).max(maxSkillPickOmitItems).optional().default([]),
718
+ omit: external_exports.array(external_exports.string().min(1).max(maxSkillToolNameLength)).max(maxSkillPickOmitItems).optional().default([]),
719
+ endpoint: sseEndpointSchema
720
+ });
721
+ var interactiveSkillSchema = external_exports.object({
722
+ type: external_exports.literal("interactiveSkill"),
723
+ name: external_exports.string().min(1),
724
+ description: external_exports.string().min(1).max(maxSkillDescriptionLength),
725
+ rule: external_exports.string().min(1).max(maxSkillRuleLength).optional(),
726
+ tools: external_exports.record(external_exports.string().min(1).max(maxSkillToolNameLength).regex(urlSafeRegex), external_exports.object({
727
+ description: external_exports.string().min(1).max(maxSkillDescriptionLength),
728
+ inputJsonSchema: external_exports.string().min(1).max(maxSkillInputJsonSchemaLength)
729
+ }))
730
+ });
731
+ var skillSchema = external_exports.discriminatedUnion("type", [
732
+ mcpStdioSkillSchema,
733
+ mcpSseSkillSchema,
734
+ interactiveSkillSchema
735
+ ]);
736
+ var expertSchema = external_exports.object({
737
+ key: expertKeyFieldSchema,
738
+ name: expertNameFieldSchema,
739
+ version: expertVersionFieldSchema,
740
+ description: external_exports.string().max(maxExpertDescriptionLength).optional(),
741
+ instruction: external_exports.string().min(1).max(maxExpertInstructionLength),
742
+ skills: external_exports.record(skillNameSchema, skillSchema).optional().default({}),
743
+ delegates: external_exports.array(expertKeyFieldSchema).min(0).max(maxExpertDelegateItems).optional().default([]),
744
+ tags: external_exports.array(expertTagFieldSchema).min(0).max(maxExpertTagItems).optional().default([]),
745
+ minRuntimeVersion: runtimeVersionSchema.optional()
746
+ });
747
+ external_exports.object({
748
+ scope: expertScopeSchema,
749
+ version: expertVersionSchema
750
+ });
751
+ var expertWithMetadataSchema = expertSchema.extend({
752
+ scope: expertScopeSchema,
753
+ version: expertVersionSchema
754
+ });
755
+ var request$8 = { query: external_exports.object({
756
+ filter: external_exports.string().describe("Filter by scope name (partial match)").optional(),
757
+ category: external_exports.enum([
758
+ "general",
759
+ "coding",
760
+ "research",
761
+ "writing",
762
+ "data",
763
+ "automation"
764
+ ]).describe("Filter by category").optional(),
765
+ includeDrafts: external_exports.coerce.boolean().default(false).describe("Include unpublished scopes (owner only)").optional(),
766
+ take: external_exports.coerce.number().min(1).max(100).default(20),
767
+ skip: external_exports.coerce.number().min(0).default(0)
768
+ }) };
769
+ external_exports.object({
770
+ data: external_exports.object({ experts: external_exports.array(expertScopeSchema.extend({ currentVersion: expertVersionSchema.nullable() })) }),
771
+ meta: paginationMeta
772
+ });
773
+ var anthropicSupportModels = [
774
+ {
775
+ modelId: "claude-opus-4-5",
776
+ default: false,
777
+ provider: "anthropic",
778
+ contextWindow: 2e5
779
+ },
780
+ {
781
+ modelId: "claude-opus-4-1",
782
+ default: false,
783
+ provider: "anthropic",
784
+ contextWindow: 2e5
785
+ },
786
+ {
787
+ modelId: "claude-opus-4-20250514",
788
+ default: false,
789
+ provider: "anthropic",
790
+ contextWindow: 2e5
791
+ },
792
+ {
793
+ modelId: "claude-sonnet-4-5",
794
+ default: true,
795
+ provider: "anthropic",
796
+ contextWindow: 2e5
797
+ },
798
+ {
799
+ modelId: "claude-sonnet-4-20250514",
800
+ default: false,
801
+ provider: "anthropic",
802
+ contextWindow: 2e5
803
+ },
804
+ {
805
+ modelId: "claude-3-7-sonnet-20250219",
806
+ default: false,
807
+ provider: "anthropic",
808
+ contextWindow: 2e5
809
+ },
810
+ {
811
+ modelId: "claude-haiku-4-5",
812
+ default: false,
813
+ provider: "anthropic",
814
+ contextWindow: 2e5
815
+ },
816
+ {
817
+ modelId: "claude-3-5-haiku-latest",
818
+ default: false,
819
+ provider: "anthropic",
820
+ contextWindow: 2e5
821
+ }
822
+ ];
823
+ var googleSupportModels = [
824
+ {
825
+ modelId: "gemini-3-pro-preview",
826
+ default: false,
827
+ provider: "google",
828
+ contextWindow: 1e6
829
+ },
830
+ {
831
+ modelId: "gemini-2.5-pro",
832
+ default: true,
833
+ provider: "google",
834
+ contextWindow: 1e6
835
+ },
836
+ {
837
+ modelId: "gemini-2.5-flash",
838
+ default: false,
839
+ provider: "google",
840
+ contextWindow: 1e6
841
+ },
842
+ {
843
+ modelId: "gemini-2.5-flash-lite",
844
+ default: false,
845
+ provider: "google",
846
+ contextWindow: 1e6
847
+ }
848
+ ];
849
+ var openAiSupportModels = [
850
+ {
851
+ modelId: "gpt-5",
852
+ default: true,
853
+ provider: "openai",
854
+ contextWindow: 4e5
855
+ },
856
+ {
857
+ modelId: "gpt-5-mini",
858
+ default: false,
859
+ provider: "openai",
860
+ contextWindow: 4e5
861
+ },
862
+ {
863
+ modelId: "gpt-5-nano",
864
+ default: false,
865
+ provider: "openai",
866
+ contextWindow: 4e5
867
+ },
868
+ {
869
+ modelId: "gpt-5-chat-latest",
870
+ default: false,
871
+ provider: "openai",
872
+ contextWindow: 128e3
873
+ },
874
+ {
875
+ modelId: "o4-mini",
876
+ default: false,
877
+ provider: "openai",
878
+ contextWindow: 2e5
879
+ },
880
+ {
881
+ modelId: "o3",
882
+ default: false,
883
+ provider: "openai",
884
+ contextWindow: 2e5
885
+ },
886
+ {
887
+ modelId: "o3-mini",
888
+ default: false,
889
+ provider: "openai",
890
+ contextWindow: 2e5
891
+ },
892
+ {
893
+ modelId: "gpt-4.1",
894
+ default: false,
895
+ provider: "openai",
896
+ contextWindow: 1e6
897
+ }
898
+ ];
899
+ var deepseekSupportModels = [{
900
+ modelId: "deepseek-chat",
901
+ default: true,
902
+ provider: "deepseek",
903
+ contextWindow: 128e3
904
+ }, {
905
+ modelId: "deepseek-reasoner",
906
+ default: false,
907
+ provider: "deepseek",
908
+ contextWindow: 128e3
909
+ }];
910
+ var allSupportModels = [
911
+ ...anthropicSupportModels,
912
+ ...googleSupportModels,
913
+ ...openAiSupportModels,
914
+ ...deepseekSupportModels
915
+ ];
916
+ var supportModels = Object.fromEntries(allSupportModels.map((model) => [model.modelId, model]));
917
+ function getSupportModelNames() {
918
+ return Object.keys(supportModels);
919
+ }
920
+ var reasoningBudgetSchema = external_exports.union([external_exports.enum([
921
+ "none",
922
+ "minimal",
923
+ "low",
924
+ "medium",
925
+ "high"
926
+ ]), external_exports.number().int().min(0)]);
927
+ var jobStatusSchema = external_exports.enum([
928
+ "queued",
929
+ "processing",
930
+ "completed",
931
+ "requestInteractiveToolResult",
932
+ "requestDelegateResult",
933
+ "exceededMaxSteps",
934
+ "failed",
935
+ "canceling",
936
+ "canceled",
937
+ "expired"
938
+ ]);
939
+ var modelNames = getSupportModelNames();
940
+ var firstModel = modelNames[0];
941
+ if (firstModel === void 0) throw new Error("No support models available");
942
+ var jobModelSchema = external_exports.enum([firstModel, ...modelNames.slice(1)]);
943
+ var jobBaseSchema = external_exports.object({
944
+ type: external_exports.literal("job"),
945
+ id: cuidSchema,
946
+ organizationId: cuidSchema,
947
+ applicationId: cuidSchema,
948
+ createdAt: datetimeSchema,
949
+ updatedAt: datetimeSchema,
950
+ status: jobStatusSchema,
951
+ currentExecutionId: cuidSchema.optional(),
952
+ coordinatorExpertKey: expertKeyFieldSchema,
953
+ query: external_exports.string().min(1).max(maxExpertJobQueryLength).optional(),
954
+ expert: expertWithMetadataSchema,
955
+ provider: providerSchema,
956
+ model: jobModelSchema,
957
+ reasoningBudget: reasoningBudgetSchema,
958
+ runtimeVersion: runtimeVersionSchema,
959
+ maxSteps: external_exports.number().int().min(1),
960
+ maxRetries: external_exports.number().int().min(0),
961
+ currentStep: external_exports.number().int().min(0),
962
+ totalSteps: external_exports.number().int().min(0),
963
+ totalDuration: external_exports.number().int().min(0),
964
+ usage: usageSchema,
965
+ lastActivity: activityOrGroupSchema.nullable().optional()
966
+ });
967
+ var publishedJobSchema = jobBaseSchema.extend({
968
+ expertVersionId: cuidSchema,
969
+ expertDraftRefId: external_exports.undefined()
970
+ });
971
+ var draftJobSchema = jobBaseSchema.extend({
972
+ expertVersionId: external_exports.undefined(),
973
+ expertDraftRefId: cuidSchema
974
+ });
975
+ var jobSchema = external_exports.union([publishedJobSchema, draftJobSchema]);
976
+ var request$7 = {
977
+ params: external_exports.object({ jobId: cuidSchema }),
978
+ body: external_exports.object({
979
+ query: external_exports.string().min(1).max(maxExpertJobQueryLength),
980
+ provider: providerSchema.optional(),
981
+ model: jobModelSchema.optional(),
982
+ reasoningBudget: reasoningBudgetSchema.optional(),
983
+ maxSteps: external_exports.coerce.number().optional(),
984
+ maxRetries: external_exports.coerce.number().optional()
985
+ })
986
+ };
987
+ external_exports.object({ data: external_exports.object({ job: jobSchema }) });
988
+ var baseBodySchema = external_exports.object({
989
+ applicationId: cuidSchema.describe("Application ID to create the job in"),
990
+ query: external_exports.string().min(1).max(maxExpertJobQueryLength),
991
+ provider: providerSchema,
992
+ model: jobModelSchema.optional(),
993
+ reasoningBudget: reasoningBudgetSchema.optional(),
994
+ maxSteps: external_exports.coerce.number().optional(),
995
+ maxRetries: external_exports.coerce.number().optional()
996
+ });
997
+ var request$6 = { body: baseBodySchema.extend({
998
+ expertKey: expertKeyFieldSchema.optional(),
999
+ draftRefId: cuidSchema.describe("Draft ref ID to run the job with").optional()
1000
+ }).refine((data) => {
1001
+ const hasExpertKey = data.expertKey !== void 0;
1002
+ const hasDraftRefId = data.draftRefId !== void 0;
1003
+ return hasExpertKey && !hasDraftRefId || !hasExpertKey && hasDraftRefId;
1004
+ }, { message: "Either expertKey or draftRefId must be provided, but not both" }) };
1005
+ external_exports.object({ data: external_exports.object({ job: jobSchema }) });
1006
+ var request$5 = { query: external_exports.object({
1007
+ sort: external_exports.enum(["createdAt", "updatedAt"]).optional(),
1008
+ order: external_exports.enum(["asc", "desc"]).optional(),
1009
+ take: external_exports.coerce.number().min(1).max(100).default(20),
1010
+ skip: external_exports.coerce.number().min(0).default(0),
1011
+ expertScopeId: cuidSchema.optional(),
1012
+ expertDraftScopeId: cuidSchema.optional(),
1013
+ applicationId: cuidSchema.optional(),
1014
+ statuses: external_exports.preprocess((val) => typeof val === "string" ? val.split(",") : val, external_exports.array(jobStatusSchema).optional()),
1015
+ expertKeyFilter: external_exports.string().max(100).optional()
1016
+ }) };
1017
+ external_exports.object({
1018
+ data: external_exports.object({ jobs: external_exports.array(jobSchema) }),
1019
+ meta: paginationMeta
1020
+ });
1021
+ var delegationTargetSchema = external_exports.object({
1022
+ expert: expertSchema,
1023
+ toolCallId: external_exports.string().min(1).max(maxCheckpointToolCallIdLength),
1024
+ toolName: external_exports.string().min(1).max(maxSkillToolNameLength),
1025
+ query: external_exports.string().min(1)
1026
+ });
1027
+ var apiCheckpointSchema = external_exports.object({
1028
+ type: external_exports.literal("checkpoint"),
1029
+ id: cuidSchema,
1030
+ jobId: cuidSchema,
1031
+ runId: cuidSchema,
1032
+ activities: external_exports.array(activityOrGroupSchema),
1033
+ stepNumber: external_exports.number().int().min(1),
1034
+ status: external_exports.enum([
1035
+ "init",
1036
+ "proceeding",
1037
+ "completed",
1038
+ "stoppedByInteractiveTool",
1039
+ "stoppedByDelegate",
1040
+ "stoppedByExceededMaxSteps",
1041
+ "stoppedByError"
1042
+ ]),
1043
+ expert: expertSchema,
1044
+ delegateTo: external_exports.array(delegationTargetSchema).optional(),
1045
+ delegatedBy: external_exports.object({
1046
+ expert: expertSchema,
1047
+ toolCallId: external_exports.string().min(1).max(maxCheckpointToolCallIdLength),
1048
+ toolName: external_exports.string().min(1).max(maxSkillToolNameLength),
1049
+ checkpointId: cuidSchema,
1050
+ runId: cuidSchema
1051
+ }).optional(),
1052
+ inputMessages: external_exports.array(external_exports.union([
1053
+ instructionMessageSchema,
1054
+ userMessageSchema,
1055
+ toolMessageSchema
1056
+ ])).optional(),
1057
+ messages: external_exports.array(messageSchema),
1058
+ newMessages: external_exports.array(messageSchema),
1059
+ toolCalls: external_exports.array(toolCallSchema).optional(),
1060
+ toolResults: external_exports.array(toolResultSchema).optional(),
1061
+ pendingToolCalls: external_exports.array(toolCallSchema).optional(),
1062
+ partialToolResults: external_exports.array(toolResultSchema).optional(),
1063
+ usage: usageSchema,
1064
+ contextWindow: external_exports.number().int().min(0).optional(),
1065
+ contextWindowUsage: external_exports.number().int().min(0).optional(),
1066
+ error: external_exports.object({
1067
+ name: external_exports.string().min(1),
1068
+ message: external_exports.string().min(1),
1069
+ statusCode: external_exports.number().int().min(100).max(599).optional(),
1070
+ isRetryable: external_exports.boolean()
1071
+ }).optional(),
1072
+ retryCount: external_exports.number().int().min(0).optional(),
1073
+ startedAt: datetimeSchema,
1074
+ finishedAt: datetimeSchema.optional()
1075
+ });
1076
+ var request$4 = {
1077
+ params: external_exports.object({
1078
+ jobId: cuidSchema,
1079
+ runId: cuidSchema
1080
+ }),
1081
+ query: external_exports.object({
1082
+ filter: external_exports.string().min(1).max(256).optional(),
1083
+ sort: external_exports.enum(["createdAt", "updatedAt"]).optional(),
1084
+ order: external_exports.enum(["asc", "desc"]).optional(),
1085
+ take: external_exports.coerce.number().min(1).max(100).default(20),
1086
+ skip: external_exports.coerce.number().min(0).default(0)
1087
+ })
1088
+ };
1089
+ external_exports.object({
1090
+ data: external_exports.object({ checkpoints: external_exports.array(apiCheckpointSchema) }),
1091
+ meta: paginationMeta
1092
+ });
1093
+ var runStatusSchema = external_exports.enum([
1094
+ "queued",
1095
+ "processing",
1096
+ "completed",
1097
+ "stoppedByInteractiveTool",
1098
+ "stoppedByDelegate",
1099
+ "stoppedByExceededMaxSteps",
1100
+ "stoppedByError"
1101
+ ]);
1102
+ var runSchema = external_exports.object({
1103
+ type: external_exports.literal("run"),
1104
+ id: cuidSchema,
1105
+ jobId: cuidSchema,
1106
+ executionId: cuidSchema.optional(),
1107
+ parentRunId: cuidSchema.optional(),
1108
+ organizationId: cuidSchema,
1109
+ createdAt: datetimeSchema,
1110
+ updatedAt: datetimeSchema,
1111
+ status: runStatusSchema,
1112
+ expertKey: expertKeyFieldSchema,
1113
+ expert: expertWithMetadataSchema,
1114
+ stepNumber: external_exports.number().int().min(0),
1115
+ usage: usageSchema
1116
+ });
1117
+ var request$3 = {
1118
+ params: external_exports.object({ jobId: cuidSchema }),
1119
+ query: external_exports.object({
1120
+ sort: external_exports.enum(["createdAt", "updatedAt"]).optional(),
1121
+ order: external_exports.enum(["asc", "desc"]).optional(),
1122
+ take: external_exports.coerce.number().min(1).max(100).default(20),
1123
+ skip: external_exports.coerce.number().min(0).default(0)
1124
+ })
1125
+ };
1126
+ external_exports.object({
1127
+ data: external_exports.object({ runs: external_exports.array(runSchema) }),
1128
+ meta: paginationMeta
1129
+ });
1130
+ var baseUrlSchema = external_exports.string().url().max(maxProviderBaseUrlLength).optional();
1131
+ var headersSchema = external_exports.record(external_exports.string().min(1).max(maxProviderHeaderKeyLength), external_exports.string().max(maxProviderHeaderValueLength)).refine((headers) => Object.keys(headers).length <= maxProviderHeadersCount, { message: `Headers must have at most ${maxProviderHeadersCount} entries` }).optional();
1132
+ var anthropicProviderSettingsSchema = external_exports.object({
1133
+ baseUrl: baseUrlSchema,
1134
+ headers: headersSchema
1135
+ });
1136
+ var googleProviderSettingsSchema = external_exports.object({
1137
+ baseUrl: baseUrlSchema,
1138
+ headers: headersSchema
1139
+ });
1140
+ var openaiProviderSettingsSchema = external_exports.object({
1141
+ baseUrl: baseUrlSchema,
1142
+ headers: headersSchema,
1143
+ organization: external_exports.string().min(1).optional(),
1144
+ project: external_exports.string().min(1).optional(),
1145
+ name: external_exports.string().min(1).optional()
1146
+ });
1147
+ var deepseekProviderSettingsSchema = external_exports.object({
1148
+ baseUrl: baseUrlSchema,
1149
+ headers: headersSchema
1150
+ });
1151
+ var azureOpenaiProviderSettingsSchema = external_exports.object({
1152
+ baseUrl: baseUrlSchema,
1153
+ headers: headersSchema,
1154
+ resourceName: external_exports.string().min(1).optional(),
1155
+ apiVersion: external_exports.string().min(1).optional(),
1156
+ useDeploymentBasedUrls: external_exports.boolean().optional()
1157
+ });
1158
+ var amazonBedrockProviderSettingsSchema = external_exports.object({ region: external_exports.string().min(1).optional() });
1159
+ var googleVertexProviderSettingsSchema = external_exports.object({
1160
+ baseUrl: baseUrlSchema,
1161
+ headers: headersSchema,
1162
+ project: external_exports.string().min(1).optional(),
1163
+ location: external_exports.string().min(1).optional()
1164
+ });
1165
+ var providerSettingsSchema = external_exports.union([
1166
+ anthropicProviderSettingsSchema,
1167
+ googleProviderSettingsSchema,
1168
+ openaiProviderSettingsSchema,
1169
+ deepseekProviderSettingsSchema,
1170
+ azureOpenaiProviderSettingsSchema,
1171
+ amazonBedrockProviderSettingsSchema,
1172
+ googleVertexProviderSettingsSchema
1173
+ ]);
1174
+ external_exports.object({
1175
+ type: external_exports.literal("providerSetting"),
1176
+ id: cuidSchema,
1177
+ applicationId: cuidSchema,
1178
+ provider: providerSchema,
1179
+ settings: providerSettingsSchema.optional(),
1180
+ application: applicationSchema,
1181
+ createdAt: datetimeSchema,
1182
+ updatedAt: datetimeSchema
1183
+ });
1184
+ var providerSettingResponseSchema = external_exports.object({
1185
+ type: external_exports.literal("providerSetting"),
1186
+ id: cuidSchema,
1187
+ provider: providerSchema,
1188
+ settings: providerSettingsSchema.optional(),
1189
+ createdAt: datetimeSchema,
1190
+ updatedAt: datetimeSchema
1191
+ });
1192
+ var providerApiKeyMetadataSchema = external_exports.object({
1193
+ id: cuidSchema,
1194
+ name: external_exports.string(),
1195
+ createdAt: datetimeSchema,
1196
+ updatedAt: datetimeSchema,
1197
+ lastUsedAt: datetimeSchema.nullable(),
1198
+ expiresAt: datetimeSchema.nullable()
1199
+ });
1200
+ var request$2 = {
1201
+ params: external_exports.object({
1202
+ applicationId: cuidSchema,
1203
+ provider: providerSchema
1204
+ }),
1205
+ body: external_exports.object({
1206
+ name: external_exports.string().min(1).max(255),
1207
+ value: external_exports.string().min(1)
1208
+ })
1209
+ };
1210
+ external_exports.object({ data: external_exports.object({ apiKey: providerApiKeyMetadataSchema }) });
1211
+ var request$1 = {
1212
+ params: external_exports.object({ applicationId: cuidSchema }),
1213
+ body: external_exports.object({
1214
+ provider: providerSchema,
1215
+ settings: providerSettingsSchema.optional()
1216
+ })
1217
+ };
1218
+ external_exports.object({ data: external_exports.object({ providerSetting: providerSettingResponseSchema }) });
1219
+ var request = {
1220
+ params: external_exports.object({
1221
+ applicationId: cuidSchema,
1222
+ provider: providerSchema
1223
+ }),
1224
+ body: external_exports.object({ settings: providerSettingsSchema.optional() })
1225
+ };
1226
+ external_exports.object({ data: external_exports.object({ providerSetting: providerSettingResponseSchema }) });
1227
+ function createRunCheckpointsApi(fetcher, basePath) {
1228
+ return {
1229
+ async list(jobId, runId, params, options) {
1230
+ if (params) {
1231
+ const result = request$4.query.safeParse(params);
1232
+ if (!result.success) return {
1233
+ ok: false,
1234
+ error: createValidationError(result.error)
1235
+ };
1236
+ }
1237
+ const queryString = buildQueryString(params);
1238
+ return fetcher.get(`${basePath}/${jobId}/runs/${runId}/checkpoints${queryString}`, options);
1239
+ },
1240
+ async get(jobId, runId, checkpointId, options) {
1241
+ return fetcher.get(`${basePath}/${jobId}/runs/${runId}/checkpoints/${checkpointId}`, options);
1242
+ }
1243
+ };
1244
+ }
1245
+ function createRunsApi(fetcher, basePath) {
1246
+ return {
1247
+ async list(jobId, params, options) {
1248
+ if (params) {
1249
+ const result = request$3.query.safeParse(params);
1250
+ if (!result.success) return {
1251
+ ok: false,
1252
+ error: createValidationError(result.error)
1253
+ };
1254
+ }
1255
+ const queryString = buildQueryString(params);
1256
+ return fetcher.get(`${basePath}/${jobId}/runs${queryString}`, options);
1257
+ },
1258
+ async get(jobId, runId, options) {
1259
+ return fetcher.get(`${basePath}/${jobId}/runs/${runId}`, options);
1260
+ },
1261
+ checkpoints: createRunCheckpointsApi(fetcher, basePath)
1262
+ };
1263
+ }
1264
+ var BASE_PATH$5 = "/api/v1/jobs";
1265
+ var StreamError = class extends Error {
1266
+ constructor(type, jobId, message) {
1267
+ super(message ?? `Stream error: ${type}`);
1268
+ this.type = type;
1269
+ this.jobId = jobId;
1270
+ this.name = "StreamError";
1271
+ }
1272
+ };
1273
+ var StreamConnectionError = class extends Error {
1274
+ constructor(message) {
1275
+ super(message);
1276
+ this.name = "StreamConnectionError";
1277
+ }
1278
+ };
1279
+ function isErrorEventData(data) {
1280
+ return typeof data === "object" && data !== null && "type" in data && typeof data.type === "string" && "jobId" in data && typeof data.jobId === "string";
1281
+ }
1282
+ function isCompleteEventData(data) {
1283
+ return typeof data === "object" && data !== null && "status" in data && typeof data.status === "string" && "jobId" in data && typeof data.jobId === "string";
1284
+ }
1285
+ function createJobsApi(fetcher) {
1286
+ return {
1287
+ async list(params, options) {
1288
+ if (params) {
1289
+ const result = request$5.query.safeParse(params);
1290
+ if (!result.success) return {
1291
+ ok: false,
1292
+ error: createValidationError(result.error)
1293
+ };
1294
+ }
1295
+ const queryString = buildQueryString(params);
1296
+ return fetcher.get(`${BASE_PATH$5}${queryString}`, options);
1297
+ },
1298
+ async get(id, options) {
1299
+ return fetcher.get(`${BASE_PATH$5}/${id}`, options);
1300
+ },
1301
+ async start(input, options) {
1302
+ const result = request$6.body.safeParse(input);
1303
+ if (!result.success) return {
1304
+ ok: false,
1305
+ error: createValidationError(result.error)
1306
+ };
1307
+ return fetcher.post(BASE_PATH$5, input, options);
1308
+ },
1309
+ async continue(id, input, options) {
1310
+ const result = request$7.body.safeParse(input);
1311
+ if (!result.success) return {
1312
+ ok: false,
1313
+ error: createValidationError(result.error)
1314
+ };
1315
+ return fetcher.post(`${BASE_PATH$5}/${id}/continue`, input, options);
1316
+ },
1317
+ async cancel(id, options) {
1318
+ return fetcher.post(`${BASE_PATH$5}/${id}/cancel`, {}, options);
1319
+ },
1320
+ async *stream(id, options) {
1321
+ const result = await fetcher.getStream(`${BASE_PATH$5}/${id}/stream`, options);
1322
+ if (!result.ok) throw new StreamConnectionError(result.error.message);
1323
+ const reader = result.data.getReader();
1324
+ try {
1325
+ for await (const sseEvent of parseSSEEvents(reader)) if (sseEvent.event === "message") yield sseEvent.data;
1326
+ else if (sseEvent.event === "error" && isErrorEventData(sseEvent.data)) throw new StreamError(sseEvent.data.type, sseEvent.data.jobId, sseEvent.data.message);
1327
+ else if (sseEvent.event === "complete" && isCompleteEventData(sseEvent.data)) return;
1328
+ } catch (error) {
1329
+ if (error instanceof StreamError || error instanceof StreamConnectionError) throw error;
1330
+ if (error instanceof DOMException && error.name === "AbortError") throw error;
1331
+ throw new StreamConnectionError(error instanceof Error ? error.message : "Stream read error");
1332
+ }
1333
+ },
1334
+ runs: createRunsApi(fetcher, BASE_PATH$5)
1335
+ };
1336
+ }
1337
+ var BASE_PATH$4 = "/api/v1/applications";
1338
+ function createApplicationsApi(fetcher) {
1339
+ return {
1340
+ async list(params, options) {
1341
+ if (params) {
1342
+ const result = request$16.query.safeParse(params);
1343
+ if (!result.success) return {
1344
+ ok: false,
1345
+ error: createValidationError(result.error)
1346
+ };
1347
+ }
1348
+ const queryString = buildQueryString(params);
1349
+ return fetcher.get(`${BASE_PATH$4}${queryString}`, options);
1350
+ },
1351
+ async get(id, options) {
1352
+ return fetcher.get(`${BASE_PATH$4}/${id}`, options);
1353
+ },
1354
+ async create(input, options) {
1355
+ const result = request$17.body.safeParse(input);
1356
+ if (!result.success) return {
1357
+ ok: false,
1358
+ error: createValidationError(result.error)
1359
+ };
1360
+ return fetcher.post(BASE_PATH$4, input, options);
1361
+ },
1362
+ async update(id, input, options) {
1363
+ const result = request$15.body.safeParse(input);
1364
+ if (!result.success) return {
1365
+ ok: false,
1366
+ error: createValidationError(result.error)
1367
+ };
1368
+ return fetcher.post(`${BASE_PATH$4}/${id}`, input, options);
1369
+ },
1370
+ async delete(id, options) {
1371
+ return fetcher.delete(`${BASE_PATH$4}/${id}`, options);
1372
+ }
1373
+ };
1374
+ }
1375
+ var BASE_PATH$3 = "/api/v1/env/secrets";
1376
+ function createSecretsApi(fetcher) {
1377
+ return {
1378
+ async list(params, options) {
1379
+ if (params) {
1380
+ const result = request$13.query.safeParse(params);
1381
+ if (!result.success) return {
1382
+ ok: false,
1383
+ error: createValidationError(result.error)
1384
+ };
1385
+ }
1386
+ const queryString = buildQueryString(params);
1387
+ return fetcher.get(`${BASE_PATH$3}${queryString}`, options);
1388
+ },
1389
+ async get(name, options) {
1390
+ const encodedName = encodeURIComponent(name);
1391
+ return fetcher.get(`${BASE_PATH$3}/${encodedName}`, options);
1392
+ },
1393
+ async create(input, options) {
1394
+ const result = request$14.body.safeParse(input);
1395
+ if (!result.success) return {
1396
+ ok: false,
1397
+ error: createValidationError(result.error)
1398
+ };
1399
+ return fetcher.post(BASE_PATH$3, input, options);
1400
+ },
1401
+ async update(name, input, options) {
1402
+ const result = request$12.body.safeParse(input);
1403
+ if (!result.success) return {
1404
+ ok: false,
1405
+ error: createValidationError(result.error)
1406
+ };
1407
+ const encodedName = encodeURIComponent(name);
1408
+ return fetcher.put(`${BASE_PATH$3}/${encodedName}`, input, options);
1409
+ },
1410
+ async delete(name, options) {
1411
+ const encodedName = encodeURIComponent(name);
1412
+ return fetcher.deleteNoContent(`${BASE_PATH$3}/${encodedName}`, options);
1413
+ }
1414
+ };
1415
+ }
1416
+ var BASE_PATH$2 = "/api/v1/env/variables";
1417
+ function createVariablesApi(fetcher) {
1418
+ return {
1419
+ async list(params, options) {
1420
+ const result = request$10.query.safeParse(params);
1421
+ if (!result.success) return {
1422
+ ok: false,
1423
+ error: createValidationError(result.error)
1424
+ };
1425
+ const queryString = buildQueryString(params);
1426
+ return fetcher.get(`${BASE_PATH$2}${queryString}`, options);
1427
+ },
1428
+ async get(name, options) {
1429
+ const encodedName = encodeURIComponent(name);
1430
+ return fetcher.get(`${BASE_PATH$2}/${encodedName}`, options);
1431
+ },
1432
+ async create(input, options) {
1433
+ const result = request$11.body.safeParse(input);
1434
+ if (!result.success) return {
1435
+ ok: false,
1436
+ error: createValidationError(result.error)
1437
+ };
1438
+ return fetcher.post(BASE_PATH$2, input, options);
1439
+ },
1440
+ async update(name, input, options) {
1441
+ const result = request$9.body.safeParse(input);
1442
+ if (!result.success) return {
1443
+ ok: false,
1444
+ error: createValidationError(result.error)
1445
+ };
1446
+ const encodedName = encodeURIComponent(name);
1447
+ return fetcher.put(`${BASE_PATH$2}/${encodedName}`, input, options);
1448
+ },
1449
+ async delete(name, options) {
1450
+ const encodedName = encodeURIComponent(name);
1451
+ return fetcher.deleteNoContent(`${BASE_PATH$2}/${encodedName}`, options);
1452
+ }
1453
+ };
1454
+ }
1455
+ function createEnvApi(fetcher) {
1456
+ return {
1457
+ secrets: createSecretsApi(fetcher),
1458
+ variables: createVariablesApi(fetcher)
1459
+ };
1460
+ }
1461
+ function createVersionsApi(fetcher, basePath) {
1462
+ return { async list(scopeName, options) {
1463
+ const encodedScopeName = encodeURIComponent(scopeName);
1464
+ return fetcher.get(`${basePath}/${encodedScopeName}/versions`, options);
1465
+ } };
1466
+ }
1467
+ var BASE_PATH$1 = "/api/v1/experts";
1468
+ function createExpertsApi(fetcher) {
1469
+ return {
1470
+ async list(params, options) {
1471
+ if (params) {
1472
+ const result = request$8.query.safeParse(params);
1473
+ if (!result.success) return {
1474
+ ok: false,
1475
+ error: createValidationError(result.error)
1476
+ };
1477
+ }
1478
+ const queryString = buildQueryString(params);
1479
+ return fetcher.get(`${BASE_PATH$1}${queryString}`, options);
1480
+ },
1481
+ async get(key, options) {
1482
+ const encodedKey = encodeURIComponent(key);
1483
+ return fetcher.get(`${BASE_PATH$1}/${encodedKey}`, options);
1484
+ },
1485
+ async getFeatured(options) {
1486
+ return fetcher.get(`${BASE_PATH$1}/featured`, options);
1487
+ },
1488
+ async getMeta(key, options) {
1489
+ const encodedKey = encodeURIComponent(key);
1490
+ return fetcher.get(`${BASE_PATH$1}/${encodedKey}/meta`, options);
1491
+ },
1492
+ async publish(scopeName, options) {
1493
+ const encodedScopeName = encodeURIComponent(scopeName);
1494
+ return fetcher.post(`${BASE_PATH$1}/${encodedScopeName}/publish`, {}, options);
1495
+ },
1496
+ async unpublish(scopeName, options) {
1497
+ const encodedScopeName = encodeURIComponent(scopeName);
1498
+ return fetcher.post(`${BASE_PATH$1}/${encodedScopeName}/unpublish`, {}, options);
1499
+ },
1500
+ async yank(key, options) {
1501
+ const encodedKey = encodeURIComponent(key);
1502
+ return fetcher.delete(`${BASE_PATH$1}/${encodedKey}`, options);
1503
+ },
1504
+ versions: createVersionsApi(fetcher, BASE_PATH$1)
1505
+ };
1506
+ }
1507
+ var BASE_PATH = "/api/v1/applications";
1508
+ function createProviderSettingsApi(fetcher) {
1509
+ return {
1510
+ async list(applicationId, options) {
1511
+ return fetcher.get(`${BASE_PATH}/${applicationId}/provider_settings`, options);
1512
+ },
1513
+ async get(applicationId, provider, options) {
1514
+ const encodedProvider = encodeURIComponent(provider);
1515
+ return fetcher.get(`${BASE_PATH}/${applicationId}/provider_settings/${encodedProvider}`, options);
1516
+ },
1517
+ async create(applicationId, input, options) {
1518
+ const result = request$1.body.safeParse(input);
1519
+ if (!result.success) return {
1520
+ ok: false,
1521
+ error: createValidationError(result.error)
1522
+ };
1523
+ return fetcher.post(`${BASE_PATH}/${applicationId}/provider_settings`, input, options);
1524
+ },
1525
+ async update(applicationId, provider, input, options) {
1526
+ const result = request.body.safeParse(input);
1527
+ if (!result.success) return {
1528
+ ok: false,
1529
+ error: createValidationError(result.error)
1530
+ };
1531
+ const encodedProvider = encodeURIComponent(provider);
1532
+ return fetcher.post(`${BASE_PATH}/${applicationId}/provider_settings/${encodedProvider}`, input, options);
1533
+ },
1534
+ async delete(applicationId, provider, options) {
1535
+ const encodedProvider = encodeURIComponent(provider);
1536
+ return fetcher.deleteNoContent(`${BASE_PATH}/${applicationId}/provider_settings/${encodedProvider}`, options);
1537
+ },
1538
+ async listApiKeys(applicationId, provider, options) {
1539
+ const encodedProvider = encodeURIComponent(provider);
1540
+ return fetcher.get(`${BASE_PATH}/${applicationId}/provider_settings/${encodedProvider}/api_keys`, options);
1541
+ },
1542
+ async createApiKey(applicationId, provider, input, options) {
1543
+ const result = request$2.body.safeParse(input);
1544
+ if (!result.success) return {
1545
+ ok: false,
1546
+ error: createValidationError(result.error)
1547
+ };
1548
+ const encodedProvider = encodeURIComponent(provider);
1549
+ return fetcher.post(`${BASE_PATH}/${applicationId}/provider_settings/${encodedProvider}/api_keys`, input, options);
1550
+ },
1551
+ async deleteApiKey(applicationId, provider, apiKeyId, options) {
1552
+ const encodedProvider = encodeURIComponent(provider);
1553
+ const encodedApiKeyId = encodeURIComponent(apiKeyId);
1554
+ return fetcher.deleteNoContent(`${BASE_PATH}/${applicationId}/provider_settings/${encodedProvider}/api_keys/${encodedApiKeyId}`, options);
1555
+ }
1556
+ };
1557
+ }
1558
+ function createApiClient(config) {
1559
+ const fetcher = createFetcher(config);
1560
+ return {
1561
+ applications: createApplicationsApi(fetcher),
1562
+ env: createEnvApi(fetcher),
1563
+ jobs: createJobsApi(fetcher),
1564
+ experts: createExpertsApi(fetcher),
1565
+ providerSettings: createProviderSettingsApi(fetcher)
1566
+ };
1567
+ }
1568
+
1569
+ export { createApiClient };
1570
+ //# sourceMappingURL=chunk-HNOP6GUQ.js.map
1571
+ //# sourceMappingURL=chunk-HNOP6GUQ.js.map