@kortyx/telemetry-contracts 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -60,6 +60,7 @@ __export(index_exports, {
60
60
  StudioTimeRangeContextSchema: () => StudioTimeRangeContextSchema,
61
61
  StudioTimeRangeQuerySchema: () => StudioTimeRangeQuerySchema,
62
62
  StudioTimeRangeSchema: () => StudioTimeRangeSchema,
63
+ StudioToolSchema: () => StudioToolSchema,
63
64
  StudioUpdateOperationSchema: () => StudioUpdateOperationSchema,
64
65
  StudioUpdateSettingsSchema: () => StudioUpdateSettingsSchema,
65
66
  StudioUpdateStatusSchema: () => StudioUpdateStatusSchema,
@@ -82,7 +83,11 @@ __export(index_exports, {
82
83
  TelemetryServiceSchema: () => TelemetryServiceSchema,
83
84
  TelemetryUnitPriceSchema: () => TelemetryUnitPriceSchema,
84
85
  TelemetryUsageItemSchema: () => TelemetryUsageItemSchema,
86
+ ToolDiscoverySchema: () => ToolDiscoverySchema,
87
+ ToolObservationSchema: () => ToolObservationSchema,
88
+ ToolOutcomeSchema: () => ToolOutcomeSchema,
85
89
  UserFeedbackRequestSchema: () => UserFeedbackRequestSchema,
90
+ WorkflowToolSchema: () => WorkflowToolSchema,
86
91
  WorkflowTopologyCallSchema: () => WorkflowTopologyCallSchema,
87
92
  WorkflowTopologyEdgeSchema: () => WorkflowTopologyEdgeSchema,
88
93
  WorkflowTopologyNodeSchema: () => WorkflowTopologyNodeSchema,
@@ -95,7 +100,7 @@ __export(index_exports, {
95
100
  summarizeUserFeedback: () => summarizeUserFeedback
96
101
  });
97
102
  module.exports = __toCommonJS(index_exports);
98
- var import_zod3 = require("zod");
103
+ var import_zod4 = require("zod");
99
104
 
100
105
  // src/scores.ts
101
106
  var import_zod = require("zod");
@@ -170,31 +175,94 @@ function summarizeUserFeedback(scores) {
170
175
  return feedback;
171
176
  }
172
177
 
173
- // src/studio-updates.ts
178
+ // src/tools.ts
174
179
  var import_zod2 = require("zod");
175
- var StudioReleaseVersionSchema = import_zod2.z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/);
176
- var StudioReleaseDeploymentSchema = import_zod2.z.object({
177
- strategy: import_zod2.z.enum(["rolling", "recreate"])
180
+ var ToolOutcomeSchema = import_zod2.z.enum([
181
+ "success",
182
+ "denied",
183
+ "fault",
184
+ "cancelled"
185
+ ]);
186
+ var ToolObservationSchema = import_zod2.z.object({
187
+ version: import_zod2.z.literal(1),
188
+ name: import_zod2.z.string().min(1).max(256),
189
+ toolCallId: import_zod2.z.string().min(1),
190
+ attemptId: import_zod2.z.string().min(1),
191
+ callingMode: import_zod2.z.enum(["direct", "model"]),
192
+ executed: import_zod2.z.boolean(),
193
+ outcome: ToolOutcomeSchema.optional(),
194
+ denialCode: import_zod2.z.string().regex(/^[A-Z][A-Z0-9_]{0,63}$/).optional(),
195
+ errorType: import_zod2.z.string().max(256).optional(),
196
+ errorMessage: import_zod2.z.string().max(8192).optional(),
197
+ durationMs: import_zod2.z.number().finite().nonnegative().optional(),
198
+ workflowId: import_zod2.z.string().optional(),
199
+ nodeId: import_zod2.z.string().optional(),
200
+ workflowRevisionId: import_zod2.z.string().optional(),
201
+ runId: import_zod2.z.string().optional(),
202
+ invocationId: import_zod2.z.string().optional(),
203
+ parentInvocationId: import_zod2.z.string().optional(),
204
+ branchId: import_zod2.z.string().optional(),
205
+ observationKind: import_zod2.z.enum(["reused", "waiting"]).optional(),
206
+ suspended: import_zod2.z.boolean().optional(),
207
+ source: import_zod2.z.object({
208
+ runId: import_zod2.z.string().optional(),
209
+ invocationId: import_zod2.z.string().optional(),
210
+ branchId: import_zod2.z.string().optional(),
211
+ toolCallId: import_zod2.z.string(),
212
+ attemptId: import_zod2.z.string()
213
+ }).strict().optional()
214
+ });
215
+ var WorkflowToolSchema = import_zod2.z.object({
216
+ name: import_zod2.z.string().min(1).max(256),
217
+ description: import_zod2.z.string().max(4096).optional(),
218
+ callingMode: import_zod2.z.enum(["direct", "model"]),
219
+ provenance: import_zod2.z.enum(["source", "observed"]),
220
+ inputFields: import_zod2.z.array(
221
+ import_zod2.z.object({ name: import_zod2.z.string(), type: import_zod2.z.string(), required: import_zod2.z.boolean() }).strict()
222
+ ).optional()
223
+ }).strict();
224
+ var ToolDiscoverySchema = import_zod2.z.object({
225
+ status: import_zod2.z.enum(["complete", "unresolved"]),
226
+ publishedAt: import_zod2.z.string().datetime().optional(),
227
+ warnings: import_zod2.z.array(import_zod2.z.string()).optional()
228
+ }).strict();
229
+ var StudioToolSchema = WorkflowToolSchema.extend({
230
+ callingMode: import_zod2.z.enum(["direct", "model", "unknown"]),
231
+ calls: import_zod2.z.number().nonnegative(),
232
+ replays: import_zod2.z.number().nonnegative(),
233
+ successes: import_zod2.z.number().nonnegative(),
234
+ denials: import_zod2.z.number().nonnegative(),
235
+ faults: import_zod2.z.number().nonnegative(),
236
+ cancellations: import_zod2.z.number().nonnegative(),
237
+ p50DurationMs: import_zod2.z.number().nonnegative().nullable(),
238
+ p95DurationMs: import_zod2.z.number().nonnegative().nullable()
239
+ }).strict();
240
+
241
+ // src/studio-updates.ts
242
+ var import_zod3 = require("zod");
243
+ var StudioReleaseVersionSchema = import_zod3.z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/);
244
+ var StudioReleaseDeploymentSchema = import_zod3.z.object({
245
+ strategy: import_zod3.z.enum(["rolling", "recreate"])
178
246
  });
179
- var StudioReleaseSchema = import_zod2.z.object({
180
- format: import_zod2.z.literal(1),
181
- installer: import_zod2.z.literal(1),
247
+ var StudioReleaseSchema = import_zod3.z.object({
248
+ format: import_zod3.z.literal(1),
249
+ installer: import_zod3.z.literal(1),
182
250
  version: StudioReleaseVersionSchema,
183
- api: import_zod2.z.string().regex(/^ghcr\.io\/kortyx-io\/kortyx-api@sha256:[a-f0-9]{64}$/),
184
- studio: import_zod2.z.string().regex(/^ghcr\.io\/kortyx-io\/kortyx-studio@sha256:[a-f0-9]{64}$/),
251
+ api: import_zod3.z.string().regex(/^ghcr\.io\/kortyx-io\/kortyx-api@sha256:[a-f0-9]{64}$/),
252
+ studio: import_zod3.z.string().regex(/^ghcr\.io\/kortyx-io\/kortyx-studio@sha256:[a-f0-9]{64}$/),
185
253
  deployment: StudioReleaseDeploymentSchema.default({
186
254
  strategy: "recreate"
187
255
  })
188
256
  });
189
- var StudioUpdateSettingsSchema = import_zod2.z.object({
190
- automatic: import_zod2.z.boolean(),
191
- hourUtc: import_zod2.z.number().int().min(0).max(23)
257
+ var StudioUpdateSettingsSchema = import_zod3.z.object({
258
+ automatic: import_zod3.z.boolean(),
259
+ hourUtc: import_zod3.z.number().int().min(0).max(23)
192
260
  });
193
- var StudioUpdateOperationSchema = import_zod2.z.object({
194
- id: import_zod2.z.uuid(),
195
- from: import_zod2.z.string(),
261
+ var StudioUpdateOperationSchema = import_zod3.z.object({
262
+ id: import_zod3.z.uuid(),
263
+ from: import_zod3.z.string(),
196
264
  release: StudioReleaseSchema,
197
- phase: import_zod2.z.enum([
265
+ phase: import_zod3.z.enum([
198
266
  "starting",
199
267
  "pulling",
200
268
  "backup",
@@ -203,16 +271,16 @@ var StudioUpdateOperationSchema = import_zod2.z.object({
203
271
  "succeeded",
204
272
  "failed"
205
273
  ]),
206
- startedAt: import_zod2.z.iso.datetime(),
207
- updatedAt: import_zod2.z.iso.datetime(),
208
- backup: import_zod2.z.string().nullable(),
209
- messages: import_zod2.z.array(import_zod2.z.string()).max(100)
274
+ startedAt: import_zod3.z.iso.datetime(),
275
+ updatedAt: import_zod3.z.iso.datetime(),
276
+ backup: import_zod3.z.string().nullable(),
277
+ messages: import_zod3.z.array(import_zod3.z.string()).max(100)
210
278
  });
211
- var StudioUpdateStatusSchema = import_zod2.z.object({
212
- current: import_zod2.z.string().nullable(),
279
+ var StudioUpdateStatusSchema = import_zod3.z.object({
280
+ current: import_zod3.z.string().nullable(),
213
281
  available: StudioReleaseSchema.nullable(),
214
- checkedAt: import_zod2.z.iso.datetime().nullable(),
215
- checkError: import_zod2.z.string().nullable(),
282
+ checkedAt: import_zod3.z.iso.datetime().nullable(),
283
+ checkError: import_zod3.z.string().nullable(),
216
284
  settings: StudioUpdateSettingsSchema,
217
285
  operation: StudioUpdateOperationSchema.nullable()
218
286
  });
@@ -333,10 +401,16 @@ var TELEMETRY_EVENT_TYPES = [
333
401
  "span.started",
334
402
  "span.ended",
335
403
  "span.failed",
404
+ "error.reported",
336
405
  "generation.completed",
337
406
  "tool.started",
338
407
  "tool.completed",
339
408
  "tool.failed",
409
+ "tool.denied",
410
+ "tool.cancelled",
411
+ "tool.reused",
412
+ "tool.waiting",
413
+ "tool.suspended",
340
414
  "response.completed",
341
415
  "interrupt.created",
342
416
  "interrupt.resolved",
@@ -356,95 +430,138 @@ var TELEMETRY_EVENT_TYPES = [
356
430
  "session.forked",
357
431
  "session.rolled_back"
358
432
  ];
359
- var TelemetryServiceSchema = import_zod3.z.object({
360
- name: import_zod3.z.string().min(1),
361
- deploymentRef: import_zod3.z.string().min(1).optional()
362
- }).strict();
363
- var WorkflowTopologyNodeSchema = import_zod3.z.object({
364
- id: import_zod3.z.string().min(1),
365
- label: import_zod3.z.string().optional(),
366
- type: import_zod3.z.string().optional(),
367
- provider: import_zod3.z.string().optional(),
368
- model: import_zod3.z.string().optional(),
369
- metadata: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.unknown()).optional()
370
- }).strict();
371
- var WorkflowTopologyEdgeSchema = import_zod3.z.object({
372
- sourceNodeId: import_zod3.z.string().min(1),
373
- targetNodeId: import_zod3.z.string().min(1),
374
- condition: import_zod3.z.string().optional()
375
- }).strict();
376
- var WorkflowTopologyCallSchema = import_zod3.z.object({
377
- sourceNodeId: import_zod3.z.string().min(1),
378
- targetWorkflowId: import_zod3.z.string().min(1)
379
- }).strict();
380
- var WorkflowTopologyTransitionSchema = import_zod3.z.object({
381
- sourceNodeId: import_zod3.z.string().min(1).optional(),
382
- targetWorkflowId: import_zod3.z.string().min(1),
383
- condition: import_zod3.z.string().optional(),
384
- intent: import_zod3.z.string().optional(),
385
- kind: import_zod3.z.enum(["call", "handoff"]).optional()
386
- }).strict();
387
- var EnsureWorkflowTopologyRequestSchema = import_zod3.z.object({
388
- schemaVersion: import_zod3.z.literal(1),
389
- environment: import_zod3.z.string().min(1),
433
+ var TelemetryServiceSchema = import_zod4.z.object({
434
+ name: import_zod4.z.string().min(1),
435
+ deploymentRef: import_zod4.z.string().min(1).optional()
436
+ }).strict();
437
+ var WorkflowTopologyNodeSchema = import_zod4.z.object({
438
+ id: import_zod4.z.string().min(1),
439
+ label: import_zod4.z.string().optional(),
440
+ type: import_zod4.z.string().optional(),
441
+ provider: import_zod4.z.string().optional(),
442
+ model: import_zod4.z.string().optional(),
443
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).optional(),
444
+ tools: import_zod4.z.array(WorkflowToolSchema).optional(),
445
+ toolDiscovery: ToolDiscoverySchema.optional()
446
+ }).strict();
447
+ var WorkflowTopologyEdgeSchema = import_zod4.z.object({
448
+ sourceNodeId: import_zod4.z.string().min(1),
449
+ targetNodeId: import_zod4.z.string().min(1),
450
+ condition: import_zod4.z.string().optional()
451
+ }).strict();
452
+ var WorkflowTopologyCallSchema = import_zod4.z.object({
453
+ sourceNodeId: import_zod4.z.string().min(1),
454
+ targetWorkflowId: import_zod4.z.string().min(1)
455
+ }).strict();
456
+ var WorkflowTopologyTransitionSchema = import_zod4.z.object({
457
+ sourceNodeId: import_zod4.z.string().min(1).optional(),
458
+ targetWorkflowId: import_zod4.z.string().min(1),
459
+ condition: import_zod4.z.string().optional(),
460
+ intent: import_zod4.z.string().optional(),
461
+ kind: import_zod4.z.enum(["call", "handoff"]).optional()
462
+ }).strict();
463
+ var EnsureWorkflowTopologyRequestSchema = import_zod4.z.object({
464
+ schemaVersion: import_zod4.z.literal(1),
465
+ environment: import_zod4.z.string().min(1),
390
466
  service: TelemetryServiceSchema,
391
- workflow: import_zod3.z.object({
392
- id: import_zod3.z.string().min(1),
393
- declaredVersion: import_zod3.z.string().min(1),
394
- description: import_zod3.z.string().optional(),
395
- tags: import_zod3.z.array(import_zod3.z.string()).optional(),
396
- topologyHash: import_zod3.z.string().regex(/^[a-f0-9]{64}$/),
397
- nodes: import_zod3.z.array(WorkflowTopologyNodeSchema),
398
- edges: import_zod3.z.array(WorkflowTopologyEdgeSchema),
399
- transitions: import_zod3.z.array(WorkflowTopologyTransitionSchema).optional(),
400
- calls: import_zod3.z.array(WorkflowTopologyCallSchema).optional()
467
+ workflow: import_zod4.z.object({
468
+ id: import_zod4.z.string().min(1),
469
+ declaredVersion: import_zod4.z.string().min(1),
470
+ description: import_zod4.z.string().optional(),
471
+ tags: import_zod4.z.array(import_zod4.z.string()).optional(),
472
+ topologyHash: import_zod4.z.string().regex(/^[a-f0-9]{64}$/),
473
+ nodes: import_zod4.z.array(WorkflowTopologyNodeSchema),
474
+ edges: import_zod4.z.array(WorkflowTopologyEdgeSchema),
475
+ transitions: import_zod4.z.array(WorkflowTopologyTransitionSchema).optional(),
476
+ calls: import_zod4.z.array(WorkflowTopologyCallSchema).optional()
401
477
  }).strict()
402
478
  }).strict();
403
- var EnsureWorkflowTopologyResponseSchema = import_zod3.z.object({ workflowRevisionId: import_zod3.z.string().min(1), created: import_zod3.z.boolean() }).strict();
404
- var TelemetryEventTypeSchema = import_zod3.z.enum(TELEMETRY_EVENT_TYPES);
405
- var TelemetryEventSchema = import_zod3.z.object({
406
- schemaVersion: import_zod3.z.literal(1),
407
- eventId: import_zod3.z.string().min(1),
408
- occurredAt: import_zod3.z.string().datetime({ offset: true }),
409
- environment: import_zod3.z.string().min(1),
479
+ var EnsureWorkflowTopologyResponseSchema = import_zod4.z.object({ workflowRevisionId: import_zod4.z.string().min(1), created: import_zod4.z.boolean() }).strict();
480
+ var TelemetryEventTypeSchema = import_zod4.z.enum(TELEMETRY_EVENT_TYPES);
481
+ var TelemetryEventSchema = import_zod4.z.object({
482
+ schemaVersion: import_zod4.z.literal(1),
483
+ eventId: import_zod4.z.string().min(1),
484
+ occurredAt: import_zod4.z.string().datetime({ offset: true }),
485
+ environment: import_zod4.z.string().min(1),
410
486
  service: TelemetryServiceSchema,
411
- correlation: import_zod3.z.object({
412
- invocationId: import_zod3.z.string().optional(),
413
- parentInvocationId: import_zod3.z.string().optional(),
414
- branchId: import_zod3.z.string().optional(),
415
- traceId: import_zod3.z.string().optional(),
416
- spanId: import_zod3.z.string().optional(),
417
- parentSpanId: import_zod3.z.string().optional(),
418
- runId: import_zod3.z.string().min(1),
419
- sessionId: import_zod3.z.string().optional(),
420
- workflowId: import_zod3.z.string().min(1),
421
- workflowRevisionId: import_zod3.z.string().optional(),
422
- topologyHash: import_zod3.z.string().regex(/^[a-f0-9]{64}$/).optional(),
423
- nodeId: import_zod3.z.string().optional()
487
+ correlation: import_zod4.z.object({
488
+ invocationId: import_zod4.z.string().optional(),
489
+ parentInvocationId: import_zod4.z.string().optional(),
490
+ branchId: import_zod4.z.string().optional(),
491
+ traceId: import_zod4.z.string().optional(),
492
+ spanId: import_zod4.z.string().optional(),
493
+ parentSpanId: import_zod4.z.string().optional(),
494
+ runId: import_zod4.z.string().min(1),
495
+ sessionId: import_zod4.z.string().optional(),
496
+ workflowId: import_zod4.z.string().min(1),
497
+ workflowRevisionId: import_zod4.z.string().optional(),
498
+ topologyHash: import_zod4.z.string().regex(/^[a-f0-9]{64}$/).optional(),
499
+ nodeId: import_zod4.z.string().optional()
424
500
  }).strict(),
425
- context: import_zod3.z.object({
426
- userId: import_zod3.z.string().optional(),
427
- tenantId: import_zod3.z.string().optional(),
428
- tags: import_zod3.z.array(import_zod3.z.string()).optional(),
429
- metadata: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.unknown()).optional()
501
+ context: import_zod4.z.object({
502
+ userId: import_zod4.z.string().optional(),
503
+ tenantId: import_zod4.z.string().optional(),
504
+ tags: import_zod4.z.array(import_zod4.z.string()).optional(),
505
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).optional()
430
506
  }).strict().optional(),
431
507
  type: TelemetryEventTypeSchema,
432
- payload: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.unknown())
433
- }).strict();
434
- var TelemetryEventBatchSchema = import_zod3.z.object({ events: import_zod3.z.array(TelemetryEventSchema).min(1) }).strict();
435
- var TelemetryEventBatchResponseSchema = import_zod3.z.object({
436
- accepted: import_zod3.z.number().int().nonnegative(),
437
- inserted: import_zod3.z.number().int().nonnegative(),
438
- duplicates: import_zod3.z.number().int().nonnegative()
508
+ payload: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown())
509
+ }).strict().superRefine((event, ctx) => {
510
+ if (!event.type.startsWith("tool.")) return;
511
+ const canonical = event.payload.version === 1 || [
512
+ "tool.denied",
513
+ "tool.cancelled",
514
+ "tool.reused",
515
+ "tool.waiting",
516
+ "tool.suspended"
517
+ ].includes(event.type);
518
+ if (!canonical) return;
519
+ const parsed = ToolObservationSchema.strict().safeParse(event.payload);
520
+ if (!parsed.success)
521
+ for (const issue of parsed.error.issues)
522
+ ctx.addIssue({ ...issue, path: ["payload", ...issue.path] });
523
+ else {
524
+ if ((parsed.data.errorType !== void 0 || parsed.data.errorMessage !== void 0) && parsed.data.outcome !== "fault")
525
+ ctx.addIssue({
526
+ code: "custom",
527
+ path: ["payload"],
528
+ message: "Error diagnostics require a fault outcome."
529
+ });
530
+ const terminalOutcomes = {
531
+ "tool.completed": "success",
532
+ "tool.failed": "fault",
533
+ "tool.denied": "denied",
534
+ "tool.cancelled": "cancelled"
535
+ };
536
+ const expected = terminalOutcomes[event.type];
537
+ if (expected && parsed.data.outcome !== expected)
538
+ ctx.addIssue({
539
+ code: "custom",
540
+ path: ["payload", "outcome"],
541
+ message: "Outcome must match the tool event type."
542
+ });
543
+ if (event.type === "tool.reused" && (parsed.data.executed || !parsed.data.source))
544
+ ctx.addIssue({
545
+ code: "custom",
546
+ path: ["payload"],
547
+ message: "Reuse must be unexecuted and reference its source."
548
+ });
549
+ }
550
+ });
551
+ var TelemetryEventBatchSchema = import_zod4.z.object({ events: import_zod4.z.array(TelemetryEventSchema).min(1) }).strict();
552
+ var TelemetryEventBatchResponseSchema = import_zod4.z.object({
553
+ accepted: import_zod4.z.number().int().nonnegative(),
554
+ inserted: import_zod4.z.number().int().nonnegative(),
555
+ duplicates: import_zod4.z.number().int().nonnegative()
439
556
  }).strict();
440
- var TelemetryPricingSourceSchema = import_zod3.z.enum([
557
+ var TelemetryPricingSourceSchema = import_zod4.z.enum([
441
558
  "sdk",
442
559
  "provider",
443
560
  "custom",
444
561
  "project-rate-card",
445
562
  "default-rate-card"
446
563
  ]);
447
- var TelemetryPricingUnitSchema = import_zod3.z.enum([
564
+ var TelemetryPricingUnitSchema = import_zod4.z.enum([
448
565
  "token",
449
566
  "character",
450
567
  "request",
@@ -457,7 +574,7 @@ var TelemetryPricingUnitSchema = import_zod3.z.enum([
457
574
  "minute",
458
575
  "custom"
459
576
  ]);
460
- var TelemetryPricingUsageTypeSchema = import_zod3.z.enum([
577
+ var TelemetryPricingUsageTypeSchema = import_zod4.z.enum([
461
578
  "input",
462
579
  "output",
463
580
  "reasoning",
@@ -473,42 +590,42 @@ var TelemetryPricingUsageTypeSchema = import_zod3.z.enum([
473
590
  "request",
474
591
  "custom"
475
592
  ]);
476
- var TelemetryUsageItemSchema = import_zod3.z.object({
593
+ var TelemetryUsageItemSchema = import_zod4.z.object({
477
594
  usageType: TelemetryPricingUsageTypeSchema,
478
- quantity: import_zod3.z.number().nonnegative(),
595
+ quantity: import_zod4.z.number().nonnegative(),
479
596
  unit: TelemetryPricingUnitSchema,
480
- label: import_zod3.z.string().optional()
597
+ label: import_zod4.z.string().optional()
481
598
  }).strict();
482
- var TelemetryUnitPriceSchema = import_zod3.z.object({
599
+ var TelemetryUnitPriceSchema = import_zod4.z.object({
483
600
  usageType: TelemetryPricingUsageTypeSchema,
484
601
  unit: TelemetryPricingUnitSchema,
485
- unitQuantity: import_zod3.z.number().positive().default(1),
486
- priceMicros: import_zod3.z.number().int().nonnegative(),
487
- label: import_zod3.z.string().optional()
602
+ unitQuantity: import_zod4.z.number().positive().default(1),
603
+ priceMicros: import_zod4.z.number().int().nonnegative(),
604
+ label: import_zod4.z.string().optional()
488
605
  }).strict();
489
- var TelemetryPricingLineItemSchema = import_zod3.z.object({
606
+ var TelemetryPricingLineItemSchema = import_zod4.z.object({
490
607
  usageType: TelemetryPricingUsageTypeSchema,
491
- quantity: import_zod3.z.number().nonnegative(),
608
+ quantity: import_zod4.z.number().nonnegative(),
492
609
  unit: TelemetryPricingUnitSchema,
493
- unitQuantity: import_zod3.z.number().positive().default(1),
494
- unitPriceMicros: import_zod3.z.number().int().nonnegative().optional(),
495
- totalCostMicros: import_zod3.z.number().int().nonnegative().optional(),
496
- label: import_zod3.z.string().optional()
610
+ unitQuantity: import_zod4.z.number().positive().default(1),
611
+ unitPriceMicros: import_zod4.z.number().int().nonnegative().optional(),
612
+ totalCostMicros: import_zod4.z.number().int().nonnegative().optional(),
613
+ label: import_zod4.z.string().optional()
497
614
  }).strict().refine(
498
615
  (value) => value.totalCostMicros !== void 0 || value.unitPriceMicros !== void 0,
499
616
  "line item requires totalCostMicros or unitPriceMicros"
500
617
  );
501
- var TelemetryPricingHintSchema = import_zod3.z.object({
618
+ var TelemetryPricingHintSchema = import_zod4.z.object({
502
619
  source: TelemetryPricingSourceSchema.extract(["sdk", "provider", "custom"]),
503
- currency: import_zod3.z.string().min(3).max(12).default("USD"),
504
- actualCostMicros: import_zod3.z.number().int().nonnegative().optional(),
505
- lineItems: import_zod3.z.array(TelemetryPricingLineItemSchema).optional(),
506
- unitPrices: import_zod3.z.array(TelemetryUnitPriceSchema).optional(),
507
- usageItems: import_zod3.z.array(TelemetryUsageItemSchema).optional(),
508
- pricingRef: import_zod3.z.string().min(1).optional(),
509
- metadata: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.unknown()).optional()
510
- }).strict();
511
- var StudioRunStatusSchema = import_zod3.z.enum([
620
+ currency: import_zod4.z.string().min(3).max(12).default("USD"),
621
+ actualCostMicros: import_zod4.z.number().int().nonnegative().optional(),
622
+ lineItems: import_zod4.z.array(TelemetryPricingLineItemSchema).optional(),
623
+ unitPrices: import_zod4.z.array(TelemetryUnitPriceSchema).optional(),
624
+ usageItems: import_zod4.z.array(TelemetryUsageItemSchema).optional(),
625
+ pricingRef: import_zod4.z.string().min(1).optional(),
626
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).optional()
627
+ }).strict();
628
+ var StudioRunStatusSchema = import_zod4.z.enum([
512
629
  "running",
513
630
  "completed",
514
631
  "interrupted",
@@ -524,16 +641,16 @@ var STUDIO_TIME_RANGES = [
524
641
  "All time",
525
642
  "Custom range"
526
643
  ];
527
- var StudioTimeRangeSchema = import_zod3.z.enum(STUDIO_TIME_RANGES);
528
- var StudioTimeRangeQuerySchema = import_zod3.z.object({
644
+ var StudioTimeRangeSchema = import_zod4.z.enum(STUDIO_TIME_RANGES);
645
+ var StudioTimeRangeQuerySchema = import_zod4.z.object({
529
646
  range: StudioTimeRangeSchema.optional(),
530
- startedAfter: import_zod3.z.string().optional(),
531
- startedBefore: import_zod3.z.string().optional()
647
+ startedAfter: import_zod4.z.string().optional(),
648
+ startedBefore: import_zod4.z.string().optional()
532
649
  }).strict();
533
- var StudioTimeRangeContextSchema = import_zod3.z.object({
650
+ var StudioTimeRangeContextSchema = import_zod4.z.object({
534
651
  range: StudioTimeRangeSchema,
535
- startedAfter: import_zod3.z.string().datetime({ offset: true }).nullable(),
536
- startedBefore: import_zod3.z.string().datetime({ offset: true }).nullable()
652
+ startedAfter: import_zod4.z.string().datetime({ offset: true }).nullable(),
653
+ startedBefore: import_zod4.z.string().datetime({ offset: true }).nullable()
537
654
  }).strict();
538
655
  var STUDIO_TIME_RANGE_MILLISECONDS = {
539
656
  "Last hour": 60 * 60 * 1e3,
@@ -607,7 +724,7 @@ var resolveStudioTimeRange = (input, now = /* @__PURE__ */ new Date()) => {
607
724
  }
608
725
  };
609
726
  };
610
- var StudioInterruptStatusSchema = import_zod3.z.enum([
727
+ var StudioInterruptStatusSchema = import_zod4.z.enum([
611
728
  "pending",
612
729
  "resolved",
613
730
  "expired",
@@ -620,311 +737,314 @@ var resolveStudioInterruptStatus = (input, now = Date.now()) => {
620
737
  const nowMs = typeof now === "number" ? now : now.getTime();
621
738
  return Number.isFinite(expiresAt) && Number.isFinite(nowMs) && expiresAt <= nowMs ? "expired" : input.status;
622
739
  };
623
- var StudioInterruptTypeSchema = import_zod3.z.enum([
740
+ var StudioInterruptTypeSchema = import_zod4.z.enum([
624
741
  "choice",
625
742
  "multi-choice",
626
743
  "text",
627
744
  "unknown"
628
745
  ]);
629
- var StudioInterruptInteractionModeSchema = import_zod3.z.enum([
746
+ var StudioInterruptInteractionModeSchema = import_zod4.z.enum([
630
747
  "static-options",
631
748
  "dynamic-picker",
632
749
  "freeform",
633
750
  "unknown"
634
751
  ]);
635
- var StudioInterruptOptionSchema = import_zod3.z.object({
636
- id: import_zod3.z.string().min(1),
637
- label: import_zod3.z.string().min(1),
638
- description: import_zod3.z.string().nullable()
752
+ var StudioInterruptOptionSchema = import_zod4.z.object({
753
+ id: import_zod4.z.string().min(1),
754
+ label: import_zod4.z.string().min(1),
755
+ description: import_zod4.z.string().nullable()
639
756
  }).strict();
640
- var StudioResumeOutcomeSchema = import_zod3.z.enum([
757
+ var StudioResumeOutcomeSchema = import_zod4.z.enum([
641
758
  "resumed",
642
759
  "resume failed",
643
760
  "expired before resume",
644
761
  "cancelled"
645
762
  ]);
646
- var StudioWorkflowHealthSchema = import_zod3.z.enum([
763
+ var StudioWorkflowHealthSchema = import_zod4.z.enum([
647
764
  "unknown",
648
765
  "healthy",
649
766
  "degraded",
650
767
  "failing",
651
768
  "idle"
652
769
  ]);
653
- var StudioPricingStatusSchema = import_zod3.z.enum([
770
+ var StudioPricingStatusSchema = import_zod4.z.enum([
654
771
  "priced",
655
772
  "unpriced",
656
773
  "unknown"
657
774
  ]);
658
775
  var StudioPricingSourceSchema = TelemetryPricingSourceSchema.nullable();
659
- var StudioChangeResourceSchema = import_zod3.z.enum([
776
+ var StudioChangeResourceSchema = import_zod4.z.enum([
777
+ "workflows",
660
778
  "runs",
661
779
  "sessions",
662
780
  "interrupts"
663
781
  ]);
664
- var StudioChangeSchema = import_zod3.z.object({
665
- schemaVersion: import_zod3.z.literal(1),
666
- changeId: import_zod3.z.string().min(1),
667
- emittedAt: import_zod3.z.string().datetime({ offset: true }),
668
- organizationId: import_zod3.z.string().min(1),
669
- projectId: import_zod3.z.string().min(1),
670
- resources: import_zod3.z.array(StudioChangeResourceSchema).min(1)
671
- }).strict();
672
- var StudioMetricSchema = import_zod3.z.object({
673
- runCount: import_zod3.z.number().int().nonnegative(),
674
- successRate: import_zod3.z.number().min(0).max(100).nullable(),
675
- errorRate: import_zod3.z.number().min(0).max(100).nullable(),
676
- retryCount: import_zod3.z.number().int().nonnegative().nullable(),
677
- interruptRate: import_zod3.z.number().min(0).max(100).nullable(),
678
- p50DurationMs: import_zod3.z.number().nonnegative().nullable(),
679
- p95DurationMs: import_zod3.z.number().nonnegative().nullable(),
680
- averageTokens: import_zod3.z.number().nonnegative().nullable(),
681
- averageCost: import_zod3.z.number().nonnegative().nullable(),
682
- currency: import_zod3.z.string().nullable()
683
- }).strict();
684
- var StudioRunSchema = import_zod3.z.object({
685
- id: import_zod3.z.string().min(1),
782
+ var StudioChangeSchema = import_zod4.z.object({
783
+ schemaVersion: import_zod4.z.literal(1),
784
+ changeId: import_zod4.z.string().min(1),
785
+ emittedAt: import_zod4.z.string().datetime({ offset: true }),
786
+ organizationId: import_zod4.z.string().min(1),
787
+ projectId: import_zod4.z.string().min(1),
788
+ resources: import_zod4.z.array(StudioChangeResourceSchema).min(1)
789
+ }).strict();
790
+ var StudioMetricSchema = import_zod4.z.object({
791
+ runCount: import_zod4.z.number().int().nonnegative(),
792
+ successRate: import_zod4.z.number().min(0).max(100).nullable(),
793
+ errorRate: import_zod4.z.number().min(0).max(100).nullable(),
794
+ retryCount: import_zod4.z.number().int().nonnegative().nullable(),
795
+ interruptRate: import_zod4.z.number().min(0).max(100).nullable(),
796
+ p50DurationMs: import_zod4.z.number().nonnegative().nullable(),
797
+ p95DurationMs: import_zod4.z.number().nonnegative().nullable(),
798
+ averageTokens: import_zod4.z.number().nonnegative().nullable(),
799
+ averageCost: import_zod4.z.number().nonnegative().nullable(),
800
+ currency: import_zod4.z.string().nullable()
801
+ }).strict();
802
+ var StudioRunSchema = import_zod4.z.object({
803
+ id: import_zod4.z.string().min(1),
686
804
  feedback: FeedbackSummarySchema.optional(),
687
- callerNodeId: import_zod3.z.string().optional(),
688
- parentRunId: import_zod3.z.string().optional(),
689
- parentWorkflowId: import_zod3.z.string().optional(),
690
- invocationId: import_zod3.z.string().optional(),
691
- branchId: import_zod3.z.string().optional(),
692
- callId: import_zod3.z.string().optional(),
805
+ callerNodeId: import_zod4.z.string().optional(),
806
+ parentRunId: import_zod4.z.string().optional(),
807
+ parentWorkflowId: import_zod4.z.string().optional(),
808
+ invocationId: import_zod4.z.string().optional(),
809
+ branchId: import_zod4.z.string().optional(),
810
+ callId: import_zod4.z.string().optional(),
693
811
  status: StudioRunStatusSchema,
694
- startedAt: import_zod3.z.string().datetime({ offset: true }),
695
- endedAt: import_zod3.z.string().datetime({ offset: true }).nullable(),
696
- workflowId: import_zod3.z.string().min(1),
697
- workflowIds: import_zod3.z.array(import_zod3.z.string().min(1)),
698
- workflowRefs: import_zod3.z.array(
699
- import_zod3.z.object({
700
- workflowId: import_zod3.z.string().min(1),
701
- workflowRevisionId: import_zod3.z.string().nullable(),
702
- declaredVersion: import_zod3.z.string().nullable()
812
+ startedAt: import_zod4.z.string().datetime({ offset: true }),
813
+ endedAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
814
+ workflowId: import_zod4.z.string().min(1),
815
+ workflowIds: import_zod4.z.array(import_zod4.z.string().min(1)),
816
+ workflowRefs: import_zod4.z.array(
817
+ import_zod4.z.object({
818
+ workflowId: import_zod4.z.string().min(1),
819
+ workflowRevisionId: import_zod4.z.string().nullable(),
820
+ declaredVersion: import_zod4.z.string().nullable()
703
821
  }).strict()
704
822
  ),
705
- workflowRevisionId: import_zod3.z.string().nullable(),
706
- declaredVersion: import_zod3.z.string().nullable(),
707
- transitionIds: import_zod3.z.array(import_zod3.z.string().min(1)),
708
- path: import_zod3.z.array(import_zod3.z.string()),
709
- sessionId: import_zod3.z.string().nullable(),
710
- provider: import_zod3.z.string().nullable(),
711
- model: import_zod3.z.string().nullable(),
712
- models: import_zod3.z.array(import_zod3.z.string()),
713
- durationMs: import_zod3.z.number().nonnegative().nullable(),
714
- tokens: import_zod3.z.number().int().nonnegative().nullable(),
715
- cost: import_zod3.z.number().nonnegative().nullable(),
823
+ workflowRevisionId: import_zod4.z.string().nullable(),
824
+ declaredVersion: import_zod4.z.string().nullable(),
825
+ transitionIds: import_zod4.z.array(import_zod4.z.string().min(1)),
826
+ path: import_zod4.z.array(import_zod4.z.string()),
827
+ sessionId: import_zod4.z.string().nullable(),
828
+ provider: import_zod4.z.string().nullable(),
829
+ model: import_zod4.z.string().nullable(),
830
+ models: import_zod4.z.array(import_zod4.z.string()),
831
+ durationMs: import_zod4.z.number().nonnegative().nullable(),
832
+ tokens: import_zod4.z.number().int().nonnegative().nullable(),
833
+ cost: import_zod4.z.number().nonnegative().nullable(),
716
834
  pricingStatus: StudioPricingStatusSchema,
717
835
  pricingSource: StudioPricingSourceSchema,
718
- currency: import_zod3.z.string().nullable(),
719
- result: import_zod3.z.string().nullable(),
720
- environment: import_zod3.z.string().min(1),
721
- userId: import_zod3.z.string().nullable(),
722
- tenantId: import_zod3.z.string().nullable(),
723
- hasTool: import_zod3.z.boolean(),
724
- hasRetry: import_zod3.z.boolean(),
725
- interruptNodeId: import_zod3.z.string().nullable(),
726
- interruptId: import_zod3.z.string().nullable().optional(),
836
+ currency: import_zod4.z.string().nullable(),
837
+ result: import_zod4.z.string().nullable(),
838
+ environment: import_zod4.z.string().min(1),
839
+ userId: import_zod4.z.string().nullable(),
840
+ tenantId: import_zod4.z.string().nullable(),
841
+ hasTool: import_zod4.z.boolean(),
842
+ hasRetry: import_zod4.z.boolean(),
843
+ interruptNodeId: import_zod4.z.string().nullable(),
844
+ interruptId: import_zod4.z.string().nullable().optional(),
727
845
  interruptStatus: StudioInterruptStatusSchema.nullable().optional(),
728
- interruptExpiresAt: import_zod3.z.string().datetime({ offset: true }).nullable().optional()
846
+ interruptExpiresAt: import_zod4.z.string().datetime({ offset: true }).nullable().optional()
729
847
  }).strict();
730
- var StudioSessionSchema = import_zod3.z.object({
731
- id: import_zod3.z.string().min(1),
848
+ var StudioSessionSchema = import_zod4.z.object({
849
+ id: import_zod4.z.string().min(1),
732
850
  status: StudioRunStatusSchema,
733
- lastActivityAt: import_zod3.z.string().datetime({ offset: true }),
734
- workflowIds: import_zod3.z.array(import_zod3.z.string()),
735
- workflowCount: import_zod3.z.number().int().nonnegative(),
736
- activeWorkflowId: import_zod3.z.string().nullable(),
737
- activeVersion: import_zod3.z.string().nullable(),
738
- userId: import_zod3.z.string().nullable(),
739
- tenantId: import_zod3.z.string().nullable(),
740
- runs: import_zod3.z.number().int().nonnegative(),
741
- succeeded: import_zod3.z.number().int().nonnegative(),
742
- failed: import_zod3.z.number().int().nonnegative(),
743
- interrupted: import_zod3.z.number().int().nonnegative(),
744
- checkpoints: import_zod3.z.number().int().nonnegative(),
745
- hasFork: import_zod3.z.boolean(),
746
- durationMs: import_zod3.z.number().nonnegative().nullable(),
747
- tokens: import_zod3.z.number().int().nonnegative().nullable(),
748
- cost: import_zod3.z.number().nonnegative().nullable(),
851
+ lastActivityAt: import_zod4.z.string().datetime({ offset: true }),
852
+ workflowIds: import_zod4.z.array(import_zod4.z.string()),
853
+ workflowCount: import_zod4.z.number().int().nonnegative(),
854
+ activeWorkflowId: import_zod4.z.string().nullable(),
855
+ activeVersion: import_zod4.z.string().nullable(),
856
+ userId: import_zod4.z.string().nullable(),
857
+ tenantId: import_zod4.z.string().nullable(),
858
+ runs: import_zod4.z.number().int().nonnegative(),
859
+ succeeded: import_zod4.z.number().int().nonnegative(),
860
+ failed: import_zod4.z.number().int().nonnegative(),
861
+ interrupted: import_zod4.z.number().int().nonnegative(),
862
+ checkpoints: import_zod4.z.number().int().nonnegative(),
863
+ hasFork: import_zod4.z.boolean(),
864
+ durationMs: import_zod4.z.number().nonnegative().nullable(),
865
+ tokens: import_zod4.z.number().int().nonnegative().nullable(),
866
+ cost: import_zod4.z.number().nonnegative().nullable(),
749
867
  pricingStatus: StudioPricingStatusSchema,
750
868
  pricingSource: StudioPricingSourceSchema,
751
- currency: import_zod3.z.string().nullable(),
752
- latestResult: import_zod3.z.string().nullable(),
753
- latestError: import_zod3.z.string().nullable(),
754
- pendingInterruptId: import_zod3.z.string().nullable(),
869
+ currency: import_zod4.z.string().nullable(),
870
+ latestResult: import_zod4.z.string().nullable(),
871
+ latestError: import_zod4.z.string().nullable(),
872
+ pendingInterruptId: import_zod4.z.string().nullable(),
755
873
  interruptStatus: StudioInterruptStatusSchema.nullable().optional(),
756
- interruptExpiresAt: import_zod3.z.string().datetime({ offset: true }).nullable().optional(),
757
- providers: import_zod3.z.array(import_zod3.z.string()),
758
- models: import_zod3.z.array(import_zod3.z.string()),
759
- tags: import_zod3.z.array(import_zod3.z.string()),
760
- environment: import_zod3.z.string().min(1)
761
- }).strict();
762
- var StudioInterruptSchema = import_zod3.z.object({
763
- afterResponseCompleted: import_zod3.z.boolean().optional(),
764
- id: import_zod3.z.string().min(1),
874
+ interruptExpiresAt: import_zod4.z.string().datetime({ offset: true }).nullable().optional(),
875
+ providers: import_zod4.z.array(import_zod4.z.string()),
876
+ models: import_zod4.z.array(import_zod4.z.string()),
877
+ tags: import_zod4.z.array(import_zod4.z.string()),
878
+ environment: import_zod4.z.string().min(1)
879
+ }).strict();
880
+ var StudioInterruptSchema = import_zod4.z.object({
881
+ afterResponseCompleted: import_zod4.z.boolean().optional(),
882
+ id: import_zod4.z.string().min(1),
765
883
  status: StudioInterruptStatusSchema,
766
884
  type: StudioInterruptTypeSchema,
767
885
  interactionMode: StudioInterruptInteractionModeSchema,
768
- schemaId: import_zod3.z.string().nullable(),
769
- schemaVersion: import_zod3.z.string().nullable(),
770
- createdAt: import_zod3.z.string().datetime({ offset: true }),
771
- resolvedAt: import_zod3.z.string().datetime({ offset: true }).nullable(),
772
- expiresAt: import_zod3.z.string().datetime({ offset: true }).nullable(),
773
- question: import_zod3.z.string().nullable(),
774
- contentCaptured: import_zod3.z.boolean(),
775
- optionCount: import_zod3.z.number().int().nonnegative().nullable(),
776
- options: import_zod3.z.array(StudioInterruptOptionSchema).nullable(),
777
- workflowId: import_zod3.z.string().min(1),
778
- nodeId: import_zod3.z.string().nullable(),
779
- sessionId: import_zod3.z.string().nullable(),
780
- userId: import_zod3.z.string().nullable(),
781
- tenantId: import_zod3.z.string().nullable(),
782
- response: import_zod3.z.string().nullable(),
783
- responseCaptured: import_zod3.z.boolean(),
886
+ schemaId: import_zod4.z.string().nullable(),
887
+ schemaVersion: import_zod4.z.string().nullable(),
888
+ createdAt: import_zod4.z.string().datetime({ offset: true }),
889
+ resolvedAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
890
+ expiresAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
891
+ question: import_zod4.z.string().nullable(),
892
+ contentCaptured: import_zod4.z.boolean(),
893
+ optionCount: import_zod4.z.number().int().nonnegative().nullable(),
894
+ options: import_zod4.z.array(StudioInterruptOptionSchema).nullable(),
895
+ workflowId: import_zod4.z.string().min(1),
896
+ nodeId: import_zod4.z.string().nullable(),
897
+ sessionId: import_zod4.z.string().nullable(),
898
+ userId: import_zod4.z.string().nullable(),
899
+ tenantId: import_zod4.z.string().nullable(),
900
+ response: import_zod4.z.string().nullable(),
901
+ responseCaptured: import_zod4.z.boolean(),
784
902
  resumeOutcome: StudioResumeOutcomeSchema.nullable(),
785
- resumeError: import_zod3.z.string().nullable(),
786
- runId: import_zod3.z.string().min(1),
787
- resumeToken: import_zod3.z.string().nullable(),
788
- resolvedBy: import_zod3.z.string().nullable(),
789
- environment: import_zod3.z.string().min(1)
790
- }).strict();
791
- var StudioDetailEventSchema = import_zod3.z.object({
792
- id: import_zod3.z.string().min(1),
903
+ resumeError: import_zod4.z.string().nullable(),
904
+ runId: import_zod4.z.string().min(1),
905
+ resumeToken: import_zod4.z.string().nullable(),
906
+ resolvedBy: import_zod4.z.string().nullable(),
907
+ environment: import_zod4.z.string().min(1)
908
+ }).strict();
909
+ var StudioDetailEventSchema = import_zod4.z.object({
910
+ id: import_zod4.z.string().min(1),
793
911
  type: TelemetryEventTypeSchema,
794
- occurredAt: import_zod3.z.string().datetime({ offset: true }),
795
- receivedAt: import_zod3.z.string().datetime({ offset: true }),
796
- environment: import_zod3.z.string().min(1),
797
- serviceName: import_zod3.z.string().min(1),
798
- deploymentRef: import_zod3.z.string().nullable(),
799
- traceId: import_zod3.z.string().nullable(),
800
- spanId: import_zod3.z.string().nullable(),
801
- parentSpanId: import_zod3.z.string().nullable(),
802
- runId: import_zod3.z.string().min(1),
803
- sessionId: import_zod3.z.string().nullable(),
804
- workflowId: import_zod3.z.string().min(1),
805
- workflowRevisionId: import_zod3.z.string().nullable(),
806
- nodeId: import_zod3.z.string().nullable(),
807
- userId: import_zod3.z.string().nullable(),
808
- tenantId: import_zod3.z.string().nullable(),
809
- tags: import_zod3.z.array(import_zod3.z.string()),
810
- metadata: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.unknown()).nullable(),
811
- payload: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.unknown())
812
- }).strict();
813
- var StudioWorkflowNodeSchema = import_zod3.z.object({
814
- id: import_zod3.z.string().min(1),
815
- label: import_zod3.z.string(),
816
- type: import_zod3.z.string().nullable(),
817
- state: import_zod3.z.enum(["healthy", "warning", "failed", "interrupted", "retried"]).nullable(),
818
- provider: import_zod3.z.string().nullable(),
819
- model: import_zod3.z.string().nullable(),
912
+ occurredAt: import_zod4.z.string().datetime({ offset: true }),
913
+ receivedAt: import_zod4.z.string().datetime({ offset: true }),
914
+ environment: import_zod4.z.string().min(1),
915
+ serviceName: import_zod4.z.string().min(1),
916
+ deploymentRef: import_zod4.z.string().nullable(),
917
+ traceId: import_zod4.z.string().nullable(),
918
+ spanId: import_zod4.z.string().nullable(),
919
+ parentSpanId: import_zod4.z.string().nullable(),
920
+ runId: import_zod4.z.string().min(1),
921
+ sessionId: import_zod4.z.string().nullable(),
922
+ workflowId: import_zod4.z.string().min(1),
923
+ workflowRevisionId: import_zod4.z.string().nullable(),
924
+ nodeId: import_zod4.z.string().nullable(),
925
+ userId: import_zod4.z.string().nullable(),
926
+ tenantId: import_zod4.z.string().nullable(),
927
+ tags: import_zod4.z.array(import_zod4.z.string()),
928
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).nullable(),
929
+ payload: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown())
930
+ }).strict();
931
+ var StudioWorkflowNodeSchema = import_zod4.z.object({
932
+ tools: import_zod4.z.array(StudioToolSchema).optional(),
933
+ toolDiscovery: ToolDiscoverySchema.optional(),
934
+ id: import_zod4.z.string().min(1),
935
+ label: import_zod4.z.string(),
936
+ type: import_zod4.z.string().nullable(),
937
+ state: import_zod4.z.enum(["healthy", "warning", "failed", "interrupted", "retried"]).nullable(),
938
+ provider: import_zod4.z.string().nullable(),
939
+ model: import_zod4.z.string().nullable(),
820
940
  metrics: StudioMetricSchema
821
941
  }).strict();
822
- var StudioWorkflowInternalEdgeSchema = import_zod3.z.object({
823
- id: import_zod3.z.string().min(1),
824
- source: import_zod3.z.string().min(1),
825
- target: import_zod3.z.string().min(1),
826
- condition: import_zod3.z.string().nullable()
827
- }).strict();
828
- var StudioWorkflowTransitionSchema = import_zod3.z.object({
829
- kind: import_zod3.z.enum(["call", "handoff"]).optional(),
830
- id: import_zod3.z.string().min(1),
831
- sourceWorkflowId: import_zod3.z.string().min(1),
832
- sourceNodeId: import_zod3.z.string().nullable(),
833
- targetWorkflowId: import_zod3.z.string().min(1),
834
- condition: import_zod3.z.string().nullable(),
835
- volume: import_zod3.z.number().int().nonnegative(),
836
- successRate: import_zod3.z.number().min(0).max(100).nullable(),
837
- medianDurationMs: import_zod3.z.number().nonnegative().nullable(),
838
- errorRate: import_zod3.z.number().min(0).max(100).nullable()
839
- }).strict();
840
- var StudioWorkflowSchema = import_zod3.z.object({
841
- id: import_zod3.z.string().min(1),
842
- name: import_zod3.z.string().min(1),
843
- description: import_zod3.z.string().nullable(),
844
- versions: import_zod3.z.array(import_zod3.z.string()),
845
- activeVersion: import_zod3.z.string().nullable(),
846
- activeRevisionId: import_zod3.z.string().nullable(),
942
+ var StudioWorkflowInternalEdgeSchema = import_zod4.z.object({
943
+ id: import_zod4.z.string().min(1),
944
+ source: import_zod4.z.string().min(1),
945
+ target: import_zod4.z.string().min(1),
946
+ condition: import_zod4.z.string().nullable()
947
+ }).strict();
948
+ var StudioWorkflowTransitionSchema = import_zod4.z.object({
949
+ kind: import_zod4.z.enum(["call", "handoff"]).optional(),
950
+ id: import_zod4.z.string().min(1),
951
+ sourceWorkflowId: import_zod4.z.string().min(1),
952
+ sourceNodeId: import_zod4.z.string().nullable(),
953
+ targetWorkflowId: import_zod4.z.string().min(1),
954
+ condition: import_zod4.z.string().nullable(),
955
+ volume: import_zod4.z.number().int().nonnegative(),
956
+ successRate: import_zod4.z.number().min(0).max(100).nullable(),
957
+ medianDurationMs: import_zod4.z.number().nonnegative().nullable(),
958
+ errorRate: import_zod4.z.number().min(0).max(100).nullable()
959
+ }).strict();
960
+ var StudioWorkflowSchema = import_zod4.z.object({
961
+ id: import_zod4.z.string().min(1),
962
+ name: import_zod4.z.string().min(1),
963
+ description: import_zod4.z.string().nullable(),
964
+ versions: import_zod4.z.array(import_zod4.z.string()),
965
+ activeVersion: import_zod4.z.string().nullable(),
966
+ activeRevisionId: import_zod4.z.string().nullable(),
847
967
  health: StudioWorkflowHealthSchema,
848
- tags: import_zod3.z.array(import_zod3.z.string()),
849
- lastActivityAt: import_zod3.z.string().datetime({ offset: true }).nullable(),
968
+ tags: import_zod4.z.array(import_zod4.z.string()),
969
+ lastActivityAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
850
970
  metrics: StudioMetricSchema,
851
- nodes: import_zod3.z.array(StudioWorkflowNodeSchema),
852
- internalEdges: import_zod3.z.array(StudioWorkflowInternalEdgeSchema)
971
+ nodes: import_zod4.z.array(StudioWorkflowNodeSchema),
972
+ internalEdges: import_zod4.z.array(StudioWorkflowInternalEdgeSchema)
853
973
  }).strict();
854
- var StudioRunsResponseSchema = import_zod3.z.object({
855
- runs: import_zod3.z.array(StudioRunSchema),
856
- totalCount: import_zod3.z.number().int().nonnegative()
974
+ var StudioRunsResponseSchema = import_zod4.z.object({
975
+ runs: import_zod4.z.array(StudioRunSchema),
976
+ totalCount: import_zod4.z.number().int().nonnegative()
857
977
  }).strict();
858
- var StudioSessionsResponseSchema = import_zod3.z.object({
859
- sessions: import_zod3.z.array(StudioSessionSchema),
860
- totalCount: import_zod3.z.number().int().nonnegative()
978
+ var StudioSessionsResponseSchema = import_zod4.z.object({
979
+ sessions: import_zod4.z.array(StudioSessionSchema),
980
+ totalCount: import_zod4.z.number().int().nonnegative()
861
981
  }).strict();
862
- var StudioInterruptsResponseSchema = import_zod3.z.object({
863
- interrupts: import_zod3.z.array(StudioInterruptSchema),
864
- totalCount: import_zod3.z.number().int().nonnegative()
982
+ var StudioInterruptsResponseSchema = import_zod4.z.object({
983
+ interrupts: import_zod4.z.array(StudioInterruptSchema),
984
+ totalCount: import_zod4.z.number().int().nonnegative()
865
985
  }).strict();
866
- var StudioRunDetailResponseSchema = import_zod3.z.object({
986
+ var StudioRunDetailResponseSchema = import_zod4.z.object({
867
987
  run: StudioRunSchema,
868
- scores: import_zod3.z.array(StudioScoreSchema).optional(),
869
- canReview: import_zod3.z.boolean().optional(),
870
- reviewActorId: import_zod3.z.string().optional(),
871
- events: import_zod3.z.array(StudioDetailEventSchema),
988
+ scores: import_zod4.z.array(StudioScoreSchema).optional(),
989
+ canReview: import_zod4.z.boolean().optional(),
990
+ reviewActorId: import_zod4.z.string().optional(),
991
+ events: import_zod4.z.array(StudioDetailEventSchema),
872
992
  session: StudioSessionSchema.nullable(),
873
- interrupts: import_zod3.z.array(StudioInterruptSchema),
874
- updatedAt: import_zod3.z.string().datetime({ offset: true })
993
+ interrupts: import_zod4.z.array(StudioInterruptSchema),
994
+ updatedAt: import_zod4.z.string().datetime({ offset: true })
875
995
  }).strict();
876
- var StudioSessionDetailResponseSchema = import_zod3.z.object({
996
+ var StudioSessionDetailResponseSchema = import_zod4.z.object({
877
997
  session: StudioSessionSchema,
878
- runs: import_zod3.z.array(StudioRunSchema),
879
- events: import_zod3.z.array(StudioDetailEventSchema),
880
- interrupts: import_zod3.z.array(StudioInterruptSchema),
881
- updatedAt: import_zod3.z.string().datetime({ offset: true })
998
+ runs: import_zod4.z.array(StudioRunSchema),
999
+ events: import_zod4.z.array(StudioDetailEventSchema),
1000
+ interrupts: import_zod4.z.array(StudioInterruptSchema),
1001
+ updatedAt: import_zod4.z.string().datetime({ offset: true })
882
1002
  }).strict();
883
- var StudioInterruptDetailResponseSchema = import_zod3.z.object({
1003
+ var StudioInterruptDetailResponseSchema = import_zod4.z.object({
884
1004
  interrupt: StudioInterruptSchema,
885
- events: import_zod3.z.array(StudioDetailEventSchema),
1005
+ events: import_zod4.z.array(StudioDetailEventSchema),
886
1006
  run: StudioRunSchema.nullable(),
887
1007
  session: StudioSessionSchema.nullable(),
888
- updatedAt: import_zod3.z.string().datetime({ offset: true })
1008
+ updatedAt: import_zod4.z.string().datetime({ offset: true })
889
1009
  }).strict();
890
- var StudioWorkflowsResponseSchema = import_zod3.z.object({
891
- workflows: import_zod3.z.array(StudioWorkflowSchema),
892
- observedCalls: import_zod3.z.array(
1010
+ var StudioWorkflowsResponseSchema = import_zod4.z.object({
1011
+ workflows: import_zod4.z.array(StudioWorkflowSchema),
1012
+ observedCalls: import_zod4.z.array(
893
1013
  StudioWorkflowTransitionSchema.extend({
894
- runId: import_zod3.z.string(),
895
- invocationId: import_zod3.z.string(),
896
- branchId: import_zod3.z.string()
1014
+ runId: import_zod4.z.string(),
1015
+ invocationId: import_zod4.z.string(),
1016
+ branchId: import_zod4.z.string()
897
1017
  })
898
1018
  ).optional(),
899
- transitions: import_zod3.z.array(StudioWorkflowTransitionSchema),
1019
+ transitions: import_zod4.z.array(StudioWorkflowTransitionSchema),
900
1020
  cohort: StudioTimeRangeContextSchema.extend({
901
- workflowId: import_zod3.z.string().nullable(),
902
- version: import_zod3.z.string().nullable()
1021
+ workflowId: import_zod4.z.string().nullable(),
1022
+ version: import_zod4.z.string().nullable()
903
1023
  }).strict()
904
1024
  }).strict();
905
- var StudioCatalogsResponseSchema = import_zod3.z.object({
906
- environments: import_zod3.z.array(import_zod3.z.string()),
907
- providers: import_zod3.z.array(import_zod3.z.string()),
908
- models: import_zod3.z.array(import_zod3.z.string()),
909
- workflows: import_zod3.z.array(import_zod3.z.string()),
910
- tags: import_zod3.z.array(import_zod3.z.string())
1025
+ var StudioCatalogsResponseSchema = import_zod4.z.object({
1026
+ environments: import_zod4.z.array(import_zod4.z.string()),
1027
+ providers: import_zod4.z.array(import_zod4.z.string()),
1028
+ models: import_zod4.z.array(import_zod4.z.string()),
1029
+ workflows: import_zod4.z.array(import_zod4.z.string()),
1030
+ tags: import_zod4.z.array(import_zod4.z.string())
911
1031
  }).strict();
912
- var StudioContextResponseSchema = import_zod3.z.object({
913
- organization: import_zod3.z.object({
914
- name: import_zod3.z.string().min(1)
1032
+ var StudioContextResponseSchema = import_zod4.z.object({
1033
+ organization: import_zod4.z.object({
1034
+ name: import_zod4.z.string().min(1)
915
1035
  }).strict(),
916
- project: import_zod3.z.object({
917
- name: import_zod3.z.string().min(1)
1036
+ project: import_zod4.z.object({
1037
+ name: import_zod4.z.string().min(1)
918
1038
  }).strict(),
919
- environments: import_zod3.z.array(import_zod3.z.string()),
920
- apiKey: import_zod3.z.object({
921
- mode: import_zod3.z.enum(["test", "live"]),
922
- scopes: import_zod3.z.array(import_zod3.z.string())
1039
+ environments: import_zod4.z.array(import_zod4.z.string()),
1040
+ apiKey: import_zod4.z.object({
1041
+ mode: import_zod4.z.enum(["test", "live"]),
1042
+ scopes: import_zod4.z.array(import_zod4.z.string())
923
1043
  }).strict(),
924
- api: import_zod3.z.object({
925
- status: import_zod3.z.literal("ok"),
926
- service: import_zod3.z.literal("kortyx-api"),
927
- version: import_zod3.z.string().min(1)
1044
+ api: import_zod4.z.object({
1045
+ status: import_zod4.z.literal("ok"),
1046
+ service: import_zod4.z.literal("kortyx-api"),
1047
+ version: import_zod4.z.string().min(1)
928
1048
  }).strict()
929
1049
  }).strict();
930
1050
  // Annotate the CommonJS export names for ESM import in node:
@@ -970,6 +1090,7 @@ var StudioContextResponseSchema = import_zod3.z.object({
970
1090
  StudioTimeRangeContextSchema,
971
1091
  StudioTimeRangeQuerySchema,
972
1092
  StudioTimeRangeSchema,
1093
+ StudioToolSchema,
973
1094
  StudioUpdateOperationSchema,
974
1095
  StudioUpdateSettingsSchema,
975
1096
  StudioUpdateStatusSchema,
@@ -992,7 +1113,11 @@ var StudioContextResponseSchema = import_zod3.z.object({
992
1113
  TelemetryServiceSchema,
993
1114
  TelemetryUnitPriceSchema,
994
1115
  TelemetryUsageItemSchema,
1116
+ ToolDiscoverySchema,
1117
+ ToolObservationSchema,
1118
+ ToolOutcomeSchema,
995
1119
  UserFeedbackRequestSchema,
1120
+ WorkflowToolSchema,
996
1121
  WorkflowTopologyCallSchema,
997
1122
  WorkflowTopologyEdgeSchema,
998
1123
  WorkflowTopologyNodeSchema,