@kortyx/telemetry-contracts 0.7.0 → 0.9.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
@@ -19,8 +19,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  // src/index.ts
20
20
  var index_exports = {};
21
21
  __export(index_exports, {
22
+ ClearScoreResponseSchema: () => ClearScoreResponseSchema,
23
+ ClearUserFeedbackRequestSchema: () => ClearUserFeedbackRequestSchema,
22
24
  EnsureWorkflowTopologyRequestSchema: () => EnsureWorkflowTopologyRequestSchema,
23
25
  EnsureWorkflowTopologyResponseSchema: () => EnsureWorkflowTopologyResponseSchema,
26
+ FEEDBACK_FILTERS: () => FEEDBACK_FILTERS,
27
+ FeedbackReasonSchema: () => FeedbackReasonSchema,
28
+ FeedbackSummarySchema: () => FeedbackSummarySchema,
29
+ ReviewVerdictSchema: () => ReviewVerdictSchema,
24
30
  STUDIO_TIME_RANGES: () => STUDIO_TIME_RANGES,
25
31
  StudioCatalogsResponseSchema: () => StudioCatalogsResponseSchema,
26
32
  StudioChangeResourceSchema: () => StudioChangeResourceSchema,
@@ -41,16 +47,20 @@ __export(index_exports, {
41
47
  StudioReleaseSchema: () => StudioReleaseSchema,
42
48
  StudioReleaseVersionSchema: () => StudioReleaseVersionSchema,
43
49
  StudioResumeOutcomeSchema: () => StudioResumeOutcomeSchema,
50
+ StudioReviewRequestSchema: () => StudioReviewRequestSchema,
44
51
  StudioRunDetailResponseSchema: () => StudioRunDetailResponseSchema,
45
52
  StudioRunSchema: () => StudioRunSchema,
46
53
  StudioRunStatusSchema: () => StudioRunStatusSchema,
47
54
  StudioRunsResponseSchema: () => StudioRunsResponseSchema,
55
+ StudioScoreResponseSchema: () => StudioScoreResponseSchema,
56
+ StudioScoreSchema: () => StudioScoreSchema,
48
57
  StudioSessionDetailResponseSchema: () => StudioSessionDetailResponseSchema,
49
58
  StudioSessionSchema: () => StudioSessionSchema,
50
59
  StudioSessionsResponseSchema: () => StudioSessionsResponseSchema,
51
60
  StudioTimeRangeContextSchema: () => StudioTimeRangeContextSchema,
52
61
  StudioTimeRangeQuerySchema: () => StudioTimeRangeQuerySchema,
53
62
  StudioTimeRangeSchema: () => StudioTimeRangeSchema,
63
+ StudioToolSchema: () => StudioToolSchema,
54
64
  StudioUpdateOperationSchema: () => StudioUpdateOperationSchema,
55
65
  StudioUpdateSettingsSchema: () => StudioUpdateSettingsSchema,
56
66
  StudioUpdateStatusSchema: () => StudioUpdateStatusSchema,
@@ -73,6 +83,11 @@ __export(index_exports, {
73
83
  TelemetryServiceSchema: () => TelemetryServiceSchema,
74
84
  TelemetryUnitPriceSchema: () => TelemetryUnitPriceSchema,
75
85
  TelemetryUsageItemSchema: () => TelemetryUsageItemSchema,
86
+ ToolDiscoverySchema: () => ToolDiscoverySchema,
87
+ ToolObservationSchema: () => ToolObservationSchema,
88
+ ToolOutcomeSchema: () => ToolOutcomeSchema,
89
+ UserFeedbackRequestSchema: () => UserFeedbackRequestSchema,
90
+ WorkflowToolSchema: () => WorkflowToolSchema,
76
91
  WorkflowTopologyCallSchema: () => WorkflowTopologyCallSchema,
77
92
  WorkflowTopologyEdgeSchema: () => WorkflowTopologyEdgeSchema,
78
93
  WorkflowTopologyNodeSchema: () => WorkflowTopologyNodeSchema,
@@ -81,36 +96,173 @@ __export(index_exports, {
81
96
  projectWorkflowCalls: () => projectWorkflowCalls,
82
97
  resolveStudioInterruptStatus: () => resolveStudioInterruptStatus,
83
98
  resolveStudioTimeRange: () => resolveStudioTimeRange,
84
- studioUpdateRunning: () => studioUpdateRunning
99
+ studioUpdateRunning: () => studioUpdateRunning,
100
+ summarizeUserFeedback: () => summarizeUserFeedback
85
101
  });
86
102
  module.exports = __toCommonJS(index_exports);
103
+ var import_zod4 = require("zod");
104
+
105
+ // src/scores.ts
106
+ var import_zod = require("zod");
107
+ var FEEDBACK_FILTERS = ["positive", "negative", "unrated"];
108
+ var FeedbackSummarySchema = import_zod.z.object({
109
+ positive: import_zod.z.number().int().nonnegative(),
110
+ negative: import_zod.z.number().int().nonnegative()
111
+ }).strict();
112
+ var FeedbackReasonSchema = import_zod.z.enum([
113
+ "incorrect",
114
+ "irrelevant",
115
+ "incomplete",
116
+ "unsafe",
117
+ "other"
118
+ ]);
119
+ var ReviewVerdictSchema = import_zod.z.enum([
120
+ "correct",
121
+ "partially-correct",
122
+ "incorrect"
123
+ ]);
124
+ var runId = import_zod.z.string().trim().min(1).max(512);
125
+ var actorId = import_zod.z.string().trim().min(1).max(256);
126
+ var comment = import_zod.z.string().trim().max(4e3).nullable().optional();
127
+ var UserFeedbackRequestSchema = import_zod.z.object({
128
+ runId,
129
+ actorId,
130
+ value: import_zod.z.union([import_zod.z.literal(0), import_zod.z.literal(1)]),
131
+ reasons: import_zod.z.array(FeedbackReasonSchema).max(5).optional(),
132
+ comment
133
+ }).strict();
134
+ var ClearUserFeedbackRequestSchema = UserFeedbackRequestSchema.pick({
135
+ runId: true,
136
+ actorId: true
137
+ });
138
+ var StudioReviewRequestSchema = import_zod.z.object({ value: ReviewVerdictSchema, comment }).strict();
139
+ var BaseScoreSchema = import_zod.z.object({
140
+ id: import_zod.z.string().uuid(),
141
+ target: import_zod.z.object({ type: import_zod.z.literal("run"), runId }).strict(),
142
+ environment: import_zod.z.string().min(1),
143
+ name: import_zod.z.string().min(1),
144
+ source: import_zod.z.enum(["end-user", "human-review", "evaluator"]),
145
+ actorId,
146
+ reasons: import_zod.z.array(FeedbackReasonSchema),
147
+ comment: import_zod.z.string().nullable(),
148
+ createdAt: import_zod.z.string().datetime({ offset: true }),
149
+ updatedAt: import_zod.z.string().datetime({ offset: true })
150
+ }).strict();
151
+ var StudioScoreSchema = import_zod.z.discriminatedUnion("dataType", [
152
+ BaseScoreSchema.extend({
153
+ dataType: import_zod.z.literal("BOOLEAN"),
154
+ value: import_zod.z.union([import_zod.z.literal(0), import_zod.z.literal(1)])
155
+ }),
156
+ BaseScoreSchema.extend({
157
+ dataType: import_zod.z.literal("CATEGORICAL"),
158
+ value: import_zod.z.string()
159
+ }),
160
+ BaseScoreSchema.extend({
161
+ dataType: import_zod.z.literal("NUMERIC"),
162
+ value: import_zod.z.number().finite()
163
+ })
164
+ ]);
165
+ var StudioScoreResponseSchema = import_zod.z.object({ score: StudioScoreSchema }).strict();
166
+ var ClearScoreResponseSchema = import_zod.z.object({ ok: import_zod.z.literal(true) }).strict();
167
+ function summarizeUserFeedback(scores) {
168
+ const feedback = { positive: 0, negative: 0 };
169
+ for (const score of scores) {
170
+ if (score.source !== "end-user" || score.name !== "user-feedback" || score.dataType !== "BOOLEAN")
171
+ continue;
172
+ if (score.value === 1) feedback.positive += 1;
173
+ if (score.value === 0) feedback.negative += 1;
174
+ }
175
+ return feedback;
176
+ }
177
+
178
+ // src/tools.ts
87
179
  var import_zod2 = require("zod");
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();
88
240
 
89
241
  // src/studio-updates.ts
90
- var import_zod = require("zod");
91
- var StudioReleaseVersionSchema = import_zod.z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/);
92
- var StudioReleaseDeploymentSchema = import_zod.z.object({
93
- strategy: import_zod.z.enum(["rolling", "recreate"])
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"])
94
246
  });
95
- var StudioReleaseSchema = import_zod.z.object({
96
- format: import_zod.z.literal(1),
97
- installer: import_zod.z.literal(1),
247
+ var StudioReleaseSchema = import_zod3.z.object({
248
+ format: import_zod3.z.literal(1),
249
+ installer: import_zod3.z.literal(1),
98
250
  version: StudioReleaseVersionSchema,
99
- api: import_zod.z.string().regex(/^ghcr\.io\/kortyx-io\/kortyx-api@sha256:[a-f0-9]{64}$/),
100
- studio: import_zod.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}$/),
101
253
  deployment: StudioReleaseDeploymentSchema.default({
102
254
  strategy: "recreate"
103
255
  })
104
256
  });
105
- var StudioUpdateSettingsSchema = import_zod.z.object({
106
- automatic: import_zod.z.boolean(),
107
- hourUtc: import_zod.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)
108
260
  });
109
- var StudioUpdateOperationSchema = import_zod.z.object({
110
- id: import_zod.z.uuid(),
111
- from: import_zod.z.string(),
261
+ var StudioUpdateOperationSchema = import_zod3.z.object({
262
+ id: import_zod3.z.uuid(),
263
+ from: import_zod3.z.string(),
112
264
  release: StudioReleaseSchema,
113
- phase: import_zod.z.enum([
265
+ phase: import_zod3.z.enum([
114
266
  "starting",
115
267
  "pulling",
116
268
  "backup",
@@ -119,16 +271,16 @@ var StudioUpdateOperationSchema = import_zod.z.object({
119
271
  "succeeded",
120
272
  "failed"
121
273
  ]),
122
- startedAt: import_zod.z.iso.datetime(),
123
- updatedAt: import_zod.z.iso.datetime(),
124
- backup: import_zod.z.string().nullable(),
125
- messages: import_zod.z.array(import_zod.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)
126
278
  });
127
- var StudioUpdateStatusSchema = import_zod.z.object({
128
- current: import_zod.z.string().nullable(),
279
+ var StudioUpdateStatusSchema = import_zod3.z.object({
280
+ current: import_zod3.z.string().nullable(),
129
281
  available: StudioReleaseSchema.nullable(),
130
- checkedAt: import_zod.z.iso.datetime().nullable(),
131
- checkError: import_zod.z.string().nullable(),
282
+ checkedAt: import_zod3.z.iso.datetime().nullable(),
283
+ checkError: import_zod3.z.string().nullable(),
132
284
  settings: StudioUpdateSettingsSchema,
133
285
  operation: StudioUpdateOperationSchema.nullable()
134
286
  });
@@ -253,6 +405,11 @@ var TELEMETRY_EVENT_TYPES = [
253
405
  "tool.started",
254
406
  "tool.completed",
255
407
  "tool.failed",
408
+ "tool.denied",
409
+ "tool.cancelled",
410
+ "tool.reused",
411
+ "tool.waiting",
412
+ "tool.suspended",
256
413
  "response.completed",
257
414
  "interrupt.created",
258
415
  "interrupt.resolved",
@@ -272,95 +429,138 @@ var TELEMETRY_EVENT_TYPES = [
272
429
  "session.forked",
273
430
  "session.rolled_back"
274
431
  ];
275
- var TelemetryServiceSchema = import_zod2.z.object({
276
- name: import_zod2.z.string().min(1),
277
- deploymentRef: import_zod2.z.string().min(1).optional()
278
- }).strict();
279
- var WorkflowTopologyNodeSchema = import_zod2.z.object({
280
- id: import_zod2.z.string().min(1),
281
- label: import_zod2.z.string().optional(),
282
- type: import_zod2.z.string().optional(),
283
- provider: import_zod2.z.string().optional(),
284
- model: import_zod2.z.string().optional(),
285
- metadata: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional()
286
- }).strict();
287
- var WorkflowTopologyEdgeSchema = import_zod2.z.object({
288
- sourceNodeId: import_zod2.z.string().min(1),
289
- targetNodeId: import_zod2.z.string().min(1),
290
- condition: import_zod2.z.string().optional()
291
- }).strict();
292
- var WorkflowTopologyCallSchema = import_zod2.z.object({
293
- sourceNodeId: import_zod2.z.string().min(1),
294
- targetWorkflowId: import_zod2.z.string().min(1)
295
- }).strict();
296
- var WorkflowTopologyTransitionSchema = import_zod2.z.object({
297
- sourceNodeId: import_zod2.z.string().min(1).optional(),
298
- targetWorkflowId: import_zod2.z.string().min(1),
299
- condition: import_zod2.z.string().optional(),
300
- intent: import_zod2.z.string().optional(),
301
- kind: import_zod2.z.enum(["call", "handoff"]).optional()
302
- }).strict();
303
- var EnsureWorkflowTopologyRequestSchema = import_zod2.z.object({
304
- schemaVersion: import_zod2.z.literal(1),
305
- environment: import_zod2.z.string().min(1),
432
+ var TelemetryServiceSchema = import_zod4.z.object({
433
+ name: import_zod4.z.string().min(1),
434
+ deploymentRef: import_zod4.z.string().min(1).optional()
435
+ }).strict();
436
+ var WorkflowTopologyNodeSchema = import_zod4.z.object({
437
+ id: import_zod4.z.string().min(1),
438
+ label: import_zod4.z.string().optional(),
439
+ type: import_zod4.z.string().optional(),
440
+ provider: import_zod4.z.string().optional(),
441
+ model: import_zod4.z.string().optional(),
442
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).optional(),
443
+ tools: import_zod4.z.array(WorkflowToolSchema).optional(),
444
+ toolDiscovery: ToolDiscoverySchema.optional()
445
+ }).strict();
446
+ var WorkflowTopologyEdgeSchema = import_zod4.z.object({
447
+ sourceNodeId: import_zod4.z.string().min(1),
448
+ targetNodeId: import_zod4.z.string().min(1),
449
+ condition: import_zod4.z.string().optional()
450
+ }).strict();
451
+ var WorkflowTopologyCallSchema = import_zod4.z.object({
452
+ sourceNodeId: import_zod4.z.string().min(1),
453
+ targetWorkflowId: import_zod4.z.string().min(1)
454
+ }).strict();
455
+ var WorkflowTopologyTransitionSchema = import_zod4.z.object({
456
+ sourceNodeId: import_zod4.z.string().min(1).optional(),
457
+ targetWorkflowId: import_zod4.z.string().min(1),
458
+ condition: import_zod4.z.string().optional(),
459
+ intent: import_zod4.z.string().optional(),
460
+ kind: import_zod4.z.enum(["call", "handoff"]).optional()
461
+ }).strict();
462
+ var EnsureWorkflowTopologyRequestSchema = import_zod4.z.object({
463
+ schemaVersion: import_zod4.z.literal(1),
464
+ environment: import_zod4.z.string().min(1),
306
465
  service: TelemetryServiceSchema,
307
- workflow: import_zod2.z.object({
308
- id: import_zod2.z.string().min(1),
309
- declaredVersion: import_zod2.z.string().min(1),
310
- description: import_zod2.z.string().optional(),
311
- tags: import_zod2.z.array(import_zod2.z.string()).optional(),
312
- topologyHash: import_zod2.z.string().regex(/^[a-f0-9]{64}$/),
313
- nodes: import_zod2.z.array(WorkflowTopologyNodeSchema),
314
- edges: import_zod2.z.array(WorkflowTopologyEdgeSchema),
315
- transitions: import_zod2.z.array(WorkflowTopologyTransitionSchema).optional(),
316
- calls: import_zod2.z.array(WorkflowTopologyCallSchema).optional()
466
+ workflow: import_zod4.z.object({
467
+ id: import_zod4.z.string().min(1),
468
+ declaredVersion: import_zod4.z.string().min(1),
469
+ description: import_zod4.z.string().optional(),
470
+ tags: import_zod4.z.array(import_zod4.z.string()).optional(),
471
+ topologyHash: import_zod4.z.string().regex(/^[a-f0-9]{64}$/),
472
+ nodes: import_zod4.z.array(WorkflowTopologyNodeSchema),
473
+ edges: import_zod4.z.array(WorkflowTopologyEdgeSchema),
474
+ transitions: import_zod4.z.array(WorkflowTopologyTransitionSchema).optional(),
475
+ calls: import_zod4.z.array(WorkflowTopologyCallSchema).optional()
317
476
  }).strict()
318
477
  }).strict();
319
- var EnsureWorkflowTopologyResponseSchema = import_zod2.z.object({ workflowRevisionId: import_zod2.z.string().min(1), created: import_zod2.z.boolean() }).strict();
320
- var TelemetryEventTypeSchema = import_zod2.z.enum(TELEMETRY_EVENT_TYPES);
321
- var TelemetryEventSchema = import_zod2.z.object({
322
- schemaVersion: import_zod2.z.literal(1),
323
- eventId: import_zod2.z.string().min(1),
324
- occurredAt: import_zod2.z.string().datetime({ offset: true }),
325
- environment: import_zod2.z.string().min(1),
478
+ var EnsureWorkflowTopologyResponseSchema = import_zod4.z.object({ workflowRevisionId: import_zod4.z.string().min(1), created: import_zod4.z.boolean() }).strict();
479
+ var TelemetryEventTypeSchema = import_zod4.z.enum(TELEMETRY_EVENT_TYPES);
480
+ var TelemetryEventSchema = import_zod4.z.object({
481
+ schemaVersion: import_zod4.z.literal(1),
482
+ eventId: import_zod4.z.string().min(1),
483
+ occurredAt: import_zod4.z.string().datetime({ offset: true }),
484
+ environment: import_zod4.z.string().min(1),
326
485
  service: TelemetryServiceSchema,
327
- correlation: import_zod2.z.object({
328
- invocationId: import_zod2.z.string().optional(),
329
- parentInvocationId: import_zod2.z.string().optional(),
330
- branchId: import_zod2.z.string().optional(),
331
- traceId: import_zod2.z.string().optional(),
332
- spanId: import_zod2.z.string().optional(),
333
- parentSpanId: import_zod2.z.string().optional(),
334
- runId: import_zod2.z.string().min(1),
335
- sessionId: import_zod2.z.string().optional(),
336
- workflowId: import_zod2.z.string().min(1),
337
- workflowRevisionId: import_zod2.z.string().optional(),
338
- topologyHash: import_zod2.z.string().regex(/^[a-f0-9]{64}$/).optional(),
339
- nodeId: import_zod2.z.string().optional()
486
+ correlation: import_zod4.z.object({
487
+ invocationId: import_zod4.z.string().optional(),
488
+ parentInvocationId: import_zod4.z.string().optional(),
489
+ branchId: import_zod4.z.string().optional(),
490
+ traceId: import_zod4.z.string().optional(),
491
+ spanId: import_zod4.z.string().optional(),
492
+ parentSpanId: import_zod4.z.string().optional(),
493
+ runId: import_zod4.z.string().min(1),
494
+ sessionId: import_zod4.z.string().optional(),
495
+ workflowId: import_zod4.z.string().min(1),
496
+ workflowRevisionId: import_zod4.z.string().optional(),
497
+ topologyHash: import_zod4.z.string().regex(/^[a-f0-9]{64}$/).optional(),
498
+ nodeId: import_zod4.z.string().optional()
340
499
  }).strict(),
341
- context: import_zod2.z.object({
342
- userId: import_zod2.z.string().optional(),
343
- tenantId: import_zod2.z.string().optional(),
344
- tags: import_zod2.z.array(import_zod2.z.string()).optional(),
345
- metadata: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional()
500
+ context: import_zod4.z.object({
501
+ userId: import_zod4.z.string().optional(),
502
+ tenantId: import_zod4.z.string().optional(),
503
+ tags: import_zod4.z.array(import_zod4.z.string()).optional(),
504
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).optional()
346
505
  }).strict().optional(),
347
506
  type: TelemetryEventTypeSchema,
348
- payload: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown())
349
- }).strict();
350
- var TelemetryEventBatchSchema = import_zod2.z.object({ events: import_zod2.z.array(TelemetryEventSchema).min(1) }).strict();
351
- var TelemetryEventBatchResponseSchema = import_zod2.z.object({
352
- accepted: import_zod2.z.number().int().nonnegative(),
353
- inserted: import_zod2.z.number().int().nonnegative(),
354
- duplicates: import_zod2.z.number().int().nonnegative()
507
+ payload: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown())
508
+ }).strict().superRefine((event, ctx) => {
509
+ if (!event.type.startsWith("tool.")) return;
510
+ const canonical = event.payload.version === 1 || [
511
+ "tool.denied",
512
+ "tool.cancelled",
513
+ "tool.reused",
514
+ "tool.waiting",
515
+ "tool.suspended"
516
+ ].includes(event.type);
517
+ if (!canonical) return;
518
+ const parsed = ToolObservationSchema.strict().safeParse(event.payload);
519
+ if (!parsed.success)
520
+ for (const issue of parsed.error.issues)
521
+ ctx.addIssue({ ...issue, path: ["payload", ...issue.path] });
522
+ else {
523
+ if ((parsed.data.errorType !== void 0 || parsed.data.errorMessage !== void 0) && parsed.data.outcome !== "fault")
524
+ ctx.addIssue({
525
+ code: "custom",
526
+ path: ["payload"],
527
+ message: "Error diagnostics require a fault outcome."
528
+ });
529
+ const terminalOutcomes = {
530
+ "tool.completed": "success",
531
+ "tool.failed": "fault",
532
+ "tool.denied": "denied",
533
+ "tool.cancelled": "cancelled"
534
+ };
535
+ const expected = terminalOutcomes[event.type];
536
+ if (expected && parsed.data.outcome !== expected)
537
+ ctx.addIssue({
538
+ code: "custom",
539
+ path: ["payload", "outcome"],
540
+ message: "Outcome must match the tool event type."
541
+ });
542
+ if (event.type === "tool.reused" && (parsed.data.executed || !parsed.data.source))
543
+ ctx.addIssue({
544
+ code: "custom",
545
+ path: ["payload"],
546
+ message: "Reuse must be unexecuted and reference its source."
547
+ });
548
+ }
549
+ });
550
+ var TelemetryEventBatchSchema = import_zod4.z.object({ events: import_zod4.z.array(TelemetryEventSchema).min(1) }).strict();
551
+ var TelemetryEventBatchResponseSchema = import_zod4.z.object({
552
+ accepted: import_zod4.z.number().int().nonnegative(),
553
+ inserted: import_zod4.z.number().int().nonnegative(),
554
+ duplicates: import_zod4.z.number().int().nonnegative()
355
555
  }).strict();
356
- var TelemetryPricingSourceSchema = import_zod2.z.enum([
556
+ var TelemetryPricingSourceSchema = import_zod4.z.enum([
357
557
  "sdk",
358
558
  "provider",
359
559
  "custom",
360
560
  "project-rate-card",
361
561
  "default-rate-card"
362
562
  ]);
363
- var TelemetryPricingUnitSchema = import_zod2.z.enum([
563
+ var TelemetryPricingUnitSchema = import_zod4.z.enum([
364
564
  "token",
365
565
  "character",
366
566
  "request",
@@ -373,7 +573,7 @@ var TelemetryPricingUnitSchema = import_zod2.z.enum([
373
573
  "minute",
374
574
  "custom"
375
575
  ]);
376
- var TelemetryPricingUsageTypeSchema = import_zod2.z.enum([
576
+ var TelemetryPricingUsageTypeSchema = import_zod4.z.enum([
377
577
  "input",
378
578
  "output",
379
579
  "reasoning",
@@ -389,42 +589,42 @@ var TelemetryPricingUsageTypeSchema = import_zod2.z.enum([
389
589
  "request",
390
590
  "custom"
391
591
  ]);
392
- var TelemetryUsageItemSchema = import_zod2.z.object({
592
+ var TelemetryUsageItemSchema = import_zod4.z.object({
393
593
  usageType: TelemetryPricingUsageTypeSchema,
394
- quantity: import_zod2.z.number().nonnegative(),
594
+ quantity: import_zod4.z.number().nonnegative(),
395
595
  unit: TelemetryPricingUnitSchema,
396
- label: import_zod2.z.string().optional()
596
+ label: import_zod4.z.string().optional()
397
597
  }).strict();
398
- var TelemetryUnitPriceSchema = import_zod2.z.object({
598
+ var TelemetryUnitPriceSchema = import_zod4.z.object({
399
599
  usageType: TelemetryPricingUsageTypeSchema,
400
600
  unit: TelemetryPricingUnitSchema,
401
- unitQuantity: import_zod2.z.number().positive().default(1),
402
- priceMicros: import_zod2.z.number().int().nonnegative(),
403
- label: import_zod2.z.string().optional()
601
+ unitQuantity: import_zod4.z.number().positive().default(1),
602
+ priceMicros: import_zod4.z.number().int().nonnegative(),
603
+ label: import_zod4.z.string().optional()
404
604
  }).strict();
405
- var TelemetryPricingLineItemSchema = import_zod2.z.object({
605
+ var TelemetryPricingLineItemSchema = import_zod4.z.object({
406
606
  usageType: TelemetryPricingUsageTypeSchema,
407
- quantity: import_zod2.z.number().nonnegative(),
607
+ quantity: import_zod4.z.number().nonnegative(),
408
608
  unit: TelemetryPricingUnitSchema,
409
- unitQuantity: import_zod2.z.number().positive().default(1),
410
- unitPriceMicros: import_zod2.z.number().int().nonnegative().optional(),
411
- totalCostMicros: import_zod2.z.number().int().nonnegative().optional(),
412
- label: import_zod2.z.string().optional()
609
+ unitQuantity: import_zod4.z.number().positive().default(1),
610
+ unitPriceMicros: import_zod4.z.number().int().nonnegative().optional(),
611
+ totalCostMicros: import_zod4.z.number().int().nonnegative().optional(),
612
+ label: import_zod4.z.string().optional()
413
613
  }).strict().refine(
414
614
  (value) => value.totalCostMicros !== void 0 || value.unitPriceMicros !== void 0,
415
615
  "line item requires totalCostMicros or unitPriceMicros"
416
616
  );
417
- var TelemetryPricingHintSchema = import_zod2.z.object({
617
+ var TelemetryPricingHintSchema = import_zod4.z.object({
418
618
  source: TelemetryPricingSourceSchema.extract(["sdk", "provider", "custom"]),
419
- currency: import_zod2.z.string().min(3).max(12).default("USD"),
420
- actualCostMicros: import_zod2.z.number().int().nonnegative().optional(),
421
- lineItems: import_zod2.z.array(TelemetryPricingLineItemSchema).optional(),
422
- unitPrices: import_zod2.z.array(TelemetryUnitPriceSchema).optional(),
423
- usageItems: import_zod2.z.array(TelemetryUsageItemSchema).optional(),
424
- pricingRef: import_zod2.z.string().min(1).optional(),
425
- metadata: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional()
426
- }).strict();
427
- var StudioRunStatusSchema = import_zod2.z.enum([
619
+ currency: import_zod4.z.string().min(3).max(12).default("USD"),
620
+ actualCostMicros: import_zod4.z.number().int().nonnegative().optional(),
621
+ lineItems: import_zod4.z.array(TelemetryPricingLineItemSchema).optional(),
622
+ unitPrices: import_zod4.z.array(TelemetryUnitPriceSchema).optional(),
623
+ usageItems: import_zod4.z.array(TelemetryUsageItemSchema).optional(),
624
+ pricingRef: import_zod4.z.string().min(1).optional(),
625
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).optional()
626
+ }).strict();
627
+ var StudioRunStatusSchema = import_zod4.z.enum([
428
628
  "running",
429
629
  "completed",
430
630
  "interrupted",
@@ -440,16 +640,16 @@ var STUDIO_TIME_RANGES = [
440
640
  "All time",
441
641
  "Custom range"
442
642
  ];
443
- var StudioTimeRangeSchema = import_zod2.z.enum(STUDIO_TIME_RANGES);
444
- var StudioTimeRangeQuerySchema = import_zod2.z.object({
643
+ var StudioTimeRangeSchema = import_zod4.z.enum(STUDIO_TIME_RANGES);
644
+ var StudioTimeRangeQuerySchema = import_zod4.z.object({
445
645
  range: StudioTimeRangeSchema.optional(),
446
- startedAfter: import_zod2.z.string().optional(),
447
- startedBefore: import_zod2.z.string().optional()
646
+ startedAfter: import_zod4.z.string().optional(),
647
+ startedBefore: import_zod4.z.string().optional()
448
648
  }).strict();
449
- var StudioTimeRangeContextSchema = import_zod2.z.object({
649
+ var StudioTimeRangeContextSchema = import_zod4.z.object({
450
650
  range: StudioTimeRangeSchema,
451
- startedAfter: import_zod2.z.string().datetime({ offset: true }).nullable(),
452
- startedBefore: import_zod2.z.string().datetime({ offset: true }).nullable()
651
+ startedAfter: import_zod4.z.string().datetime({ offset: true }).nullable(),
652
+ startedBefore: import_zod4.z.string().datetime({ offset: true }).nullable()
453
653
  }).strict();
454
654
  var STUDIO_TIME_RANGE_MILLISECONDS = {
455
655
  "Last hour": 60 * 60 * 1e3,
@@ -523,7 +723,7 @@ var resolveStudioTimeRange = (input, now = /* @__PURE__ */ new Date()) => {
523
723
  }
524
724
  };
525
725
  };
526
- var StudioInterruptStatusSchema = import_zod2.z.enum([
726
+ var StudioInterruptStatusSchema = import_zod4.z.enum([
527
727
  "pending",
528
728
  "resolved",
529
729
  "expired",
@@ -536,313 +736,326 @@ var resolveStudioInterruptStatus = (input, now = Date.now()) => {
536
736
  const nowMs = typeof now === "number" ? now : now.getTime();
537
737
  return Number.isFinite(expiresAt) && Number.isFinite(nowMs) && expiresAt <= nowMs ? "expired" : input.status;
538
738
  };
539
- var StudioInterruptTypeSchema = import_zod2.z.enum([
739
+ var StudioInterruptTypeSchema = import_zod4.z.enum([
540
740
  "choice",
541
741
  "multi-choice",
542
742
  "text",
543
743
  "unknown"
544
744
  ]);
545
- var StudioInterruptInteractionModeSchema = import_zod2.z.enum([
745
+ var StudioInterruptInteractionModeSchema = import_zod4.z.enum([
546
746
  "static-options",
547
747
  "dynamic-picker",
548
748
  "freeform",
549
749
  "unknown"
550
750
  ]);
551
- var StudioInterruptOptionSchema = import_zod2.z.object({
552
- id: import_zod2.z.string().min(1),
553
- label: import_zod2.z.string().min(1),
554
- description: import_zod2.z.string().nullable()
751
+ var StudioInterruptOptionSchema = import_zod4.z.object({
752
+ id: import_zod4.z.string().min(1),
753
+ label: import_zod4.z.string().min(1),
754
+ description: import_zod4.z.string().nullable()
555
755
  }).strict();
556
- var StudioResumeOutcomeSchema = import_zod2.z.enum([
756
+ var StudioResumeOutcomeSchema = import_zod4.z.enum([
557
757
  "resumed",
558
758
  "resume failed",
559
759
  "expired before resume",
560
760
  "cancelled"
561
761
  ]);
562
- var StudioWorkflowHealthSchema = import_zod2.z.enum([
762
+ var StudioWorkflowHealthSchema = import_zod4.z.enum([
563
763
  "unknown",
564
764
  "healthy",
565
765
  "degraded",
566
766
  "failing",
567
767
  "idle"
568
768
  ]);
569
- var StudioPricingStatusSchema = import_zod2.z.enum([
769
+ var StudioPricingStatusSchema = import_zod4.z.enum([
570
770
  "priced",
571
771
  "unpriced",
572
772
  "unknown"
573
773
  ]);
574
774
  var StudioPricingSourceSchema = TelemetryPricingSourceSchema.nullable();
575
- var StudioChangeResourceSchema = import_zod2.z.enum([
775
+ var StudioChangeResourceSchema = import_zod4.z.enum([
776
+ "workflows",
576
777
  "runs",
577
778
  "sessions",
578
779
  "interrupts"
579
780
  ]);
580
- var StudioChangeSchema = import_zod2.z.object({
581
- schemaVersion: import_zod2.z.literal(1),
582
- changeId: import_zod2.z.string().min(1),
583
- emittedAt: import_zod2.z.string().datetime({ offset: true }),
584
- organizationId: import_zod2.z.string().min(1),
585
- projectId: import_zod2.z.string().min(1),
586
- resources: import_zod2.z.array(StudioChangeResourceSchema).min(1)
587
- }).strict();
588
- var StudioMetricSchema = import_zod2.z.object({
589
- runCount: import_zod2.z.number().int().nonnegative(),
590
- successRate: import_zod2.z.number().min(0).max(100).nullable(),
591
- errorRate: import_zod2.z.number().min(0).max(100).nullable(),
592
- retryCount: import_zod2.z.number().int().nonnegative().nullable(),
593
- interruptRate: import_zod2.z.number().min(0).max(100).nullable(),
594
- p50DurationMs: import_zod2.z.number().nonnegative().nullable(),
595
- p95DurationMs: import_zod2.z.number().nonnegative().nullable(),
596
- averageTokens: import_zod2.z.number().nonnegative().nullable(),
597
- averageCost: import_zod2.z.number().nonnegative().nullable(),
598
- currency: import_zod2.z.string().nullable()
599
- }).strict();
600
- var StudioRunSchema = import_zod2.z.object({
601
- id: import_zod2.z.string().min(1),
602
- callerNodeId: import_zod2.z.string().optional(),
603
- parentRunId: import_zod2.z.string().optional(),
604
- parentWorkflowId: import_zod2.z.string().optional(),
605
- invocationId: import_zod2.z.string().optional(),
606
- branchId: import_zod2.z.string().optional(),
607
- callId: import_zod2.z.string().optional(),
781
+ var StudioChangeSchema = import_zod4.z.object({
782
+ schemaVersion: import_zod4.z.literal(1),
783
+ changeId: import_zod4.z.string().min(1),
784
+ emittedAt: import_zod4.z.string().datetime({ offset: true }),
785
+ organizationId: import_zod4.z.string().min(1),
786
+ projectId: import_zod4.z.string().min(1),
787
+ resources: import_zod4.z.array(StudioChangeResourceSchema).min(1)
788
+ }).strict();
789
+ var StudioMetricSchema = import_zod4.z.object({
790
+ runCount: import_zod4.z.number().int().nonnegative(),
791
+ successRate: import_zod4.z.number().min(0).max(100).nullable(),
792
+ errorRate: import_zod4.z.number().min(0).max(100).nullable(),
793
+ retryCount: import_zod4.z.number().int().nonnegative().nullable(),
794
+ interruptRate: import_zod4.z.number().min(0).max(100).nullable(),
795
+ p50DurationMs: import_zod4.z.number().nonnegative().nullable(),
796
+ p95DurationMs: import_zod4.z.number().nonnegative().nullable(),
797
+ averageTokens: import_zod4.z.number().nonnegative().nullable(),
798
+ averageCost: import_zod4.z.number().nonnegative().nullable(),
799
+ currency: import_zod4.z.string().nullable()
800
+ }).strict();
801
+ var StudioRunSchema = import_zod4.z.object({
802
+ id: import_zod4.z.string().min(1),
803
+ feedback: FeedbackSummarySchema.optional(),
804
+ callerNodeId: import_zod4.z.string().optional(),
805
+ parentRunId: import_zod4.z.string().optional(),
806
+ parentWorkflowId: import_zod4.z.string().optional(),
807
+ invocationId: import_zod4.z.string().optional(),
808
+ branchId: import_zod4.z.string().optional(),
809
+ callId: import_zod4.z.string().optional(),
608
810
  status: StudioRunStatusSchema,
609
- startedAt: import_zod2.z.string().datetime({ offset: true }),
610
- endedAt: import_zod2.z.string().datetime({ offset: true }).nullable(),
611
- workflowId: import_zod2.z.string().min(1),
612
- workflowIds: import_zod2.z.array(import_zod2.z.string().min(1)),
613
- workflowRefs: import_zod2.z.array(
614
- import_zod2.z.object({
615
- workflowId: import_zod2.z.string().min(1),
616
- workflowRevisionId: import_zod2.z.string().nullable(),
617
- declaredVersion: import_zod2.z.string().nullable()
811
+ startedAt: import_zod4.z.string().datetime({ offset: true }),
812
+ endedAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
813
+ workflowId: import_zod4.z.string().min(1),
814
+ workflowIds: import_zod4.z.array(import_zod4.z.string().min(1)),
815
+ workflowRefs: import_zod4.z.array(
816
+ import_zod4.z.object({
817
+ workflowId: import_zod4.z.string().min(1),
818
+ workflowRevisionId: import_zod4.z.string().nullable(),
819
+ declaredVersion: import_zod4.z.string().nullable()
618
820
  }).strict()
619
821
  ),
620
- workflowRevisionId: import_zod2.z.string().nullable(),
621
- declaredVersion: import_zod2.z.string().nullable(),
622
- transitionIds: import_zod2.z.array(import_zod2.z.string().min(1)),
623
- path: import_zod2.z.array(import_zod2.z.string()),
624
- sessionId: import_zod2.z.string().nullable(),
625
- provider: import_zod2.z.string().nullable(),
626
- model: import_zod2.z.string().nullable(),
627
- models: import_zod2.z.array(import_zod2.z.string()),
628
- durationMs: import_zod2.z.number().nonnegative().nullable(),
629
- tokens: import_zod2.z.number().int().nonnegative().nullable(),
630
- cost: import_zod2.z.number().nonnegative().nullable(),
822
+ workflowRevisionId: import_zod4.z.string().nullable(),
823
+ declaredVersion: import_zod4.z.string().nullable(),
824
+ transitionIds: import_zod4.z.array(import_zod4.z.string().min(1)),
825
+ path: import_zod4.z.array(import_zod4.z.string()),
826
+ sessionId: import_zod4.z.string().nullable(),
827
+ provider: import_zod4.z.string().nullable(),
828
+ model: import_zod4.z.string().nullable(),
829
+ models: import_zod4.z.array(import_zod4.z.string()),
830
+ durationMs: import_zod4.z.number().nonnegative().nullable(),
831
+ tokens: import_zod4.z.number().int().nonnegative().nullable(),
832
+ cost: import_zod4.z.number().nonnegative().nullable(),
631
833
  pricingStatus: StudioPricingStatusSchema,
632
834
  pricingSource: StudioPricingSourceSchema,
633
- currency: import_zod2.z.string().nullable(),
634
- result: import_zod2.z.string().nullable(),
635
- environment: import_zod2.z.string().min(1),
636
- userId: import_zod2.z.string().nullable(),
637
- tenantId: import_zod2.z.string().nullable(),
638
- hasTool: import_zod2.z.boolean(),
639
- hasRetry: import_zod2.z.boolean(),
640
- interruptNodeId: import_zod2.z.string().nullable(),
641
- interruptId: import_zod2.z.string().nullable().optional(),
835
+ currency: import_zod4.z.string().nullable(),
836
+ result: import_zod4.z.string().nullable(),
837
+ environment: import_zod4.z.string().min(1),
838
+ userId: import_zod4.z.string().nullable(),
839
+ tenantId: import_zod4.z.string().nullable(),
840
+ hasTool: import_zod4.z.boolean(),
841
+ hasRetry: import_zod4.z.boolean(),
842
+ interruptNodeId: import_zod4.z.string().nullable(),
843
+ interruptId: import_zod4.z.string().nullable().optional(),
642
844
  interruptStatus: StudioInterruptStatusSchema.nullable().optional(),
643
- interruptExpiresAt: import_zod2.z.string().datetime({ offset: true }).nullable().optional()
845
+ interruptExpiresAt: import_zod4.z.string().datetime({ offset: true }).nullable().optional()
644
846
  }).strict();
645
- var StudioSessionSchema = import_zod2.z.object({
646
- id: import_zod2.z.string().min(1),
847
+ var StudioSessionSchema = import_zod4.z.object({
848
+ id: import_zod4.z.string().min(1),
647
849
  status: StudioRunStatusSchema,
648
- lastActivityAt: import_zod2.z.string().datetime({ offset: true }),
649
- workflowIds: import_zod2.z.array(import_zod2.z.string()),
650
- workflowCount: import_zod2.z.number().int().nonnegative(),
651
- activeWorkflowId: import_zod2.z.string().nullable(),
652
- activeVersion: import_zod2.z.string().nullable(),
653
- userId: import_zod2.z.string().nullable(),
654
- tenantId: import_zod2.z.string().nullable(),
655
- runs: import_zod2.z.number().int().nonnegative(),
656
- succeeded: import_zod2.z.number().int().nonnegative(),
657
- failed: import_zod2.z.number().int().nonnegative(),
658
- interrupted: import_zod2.z.number().int().nonnegative(),
659
- checkpoints: import_zod2.z.number().int().nonnegative(),
660
- hasFork: import_zod2.z.boolean(),
661
- durationMs: import_zod2.z.number().nonnegative().nullable(),
662
- tokens: import_zod2.z.number().int().nonnegative().nullable(),
663
- cost: import_zod2.z.number().nonnegative().nullable(),
850
+ lastActivityAt: import_zod4.z.string().datetime({ offset: true }),
851
+ workflowIds: import_zod4.z.array(import_zod4.z.string()),
852
+ workflowCount: import_zod4.z.number().int().nonnegative(),
853
+ activeWorkflowId: import_zod4.z.string().nullable(),
854
+ activeVersion: import_zod4.z.string().nullable(),
855
+ userId: import_zod4.z.string().nullable(),
856
+ tenantId: import_zod4.z.string().nullable(),
857
+ runs: import_zod4.z.number().int().nonnegative(),
858
+ succeeded: import_zod4.z.number().int().nonnegative(),
859
+ failed: import_zod4.z.number().int().nonnegative(),
860
+ interrupted: import_zod4.z.number().int().nonnegative(),
861
+ checkpoints: import_zod4.z.number().int().nonnegative(),
862
+ hasFork: import_zod4.z.boolean(),
863
+ durationMs: import_zod4.z.number().nonnegative().nullable(),
864
+ tokens: import_zod4.z.number().int().nonnegative().nullable(),
865
+ cost: import_zod4.z.number().nonnegative().nullable(),
664
866
  pricingStatus: StudioPricingStatusSchema,
665
867
  pricingSource: StudioPricingSourceSchema,
666
- currency: import_zod2.z.string().nullable(),
667
- latestResult: import_zod2.z.string().nullable(),
668
- latestError: import_zod2.z.string().nullable(),
669
- pendingInterruptId: import_zod2.z.string().nullable(),
868
+ currency: import_zod4.z.string().nullable(),
869
+ latestResult: import_zod4.z.string().nullable(),
870
+ latestError: import_zod4.z.string().nullable(),
871
+ pendingInterruptId: import_zod4.z.string().nullable(),
670
872
  interruptStatus: StudioInterruptStatusSchema.nullable().optional(),
671
- interruptExpiresAt: import_zod2.z.string().datetime({ offset: true }).nullable().optional(),
672
- providers: import_zod2.z.array(import_zod2.z.string()),
673
- models: import_zod2.z.array(import_zod2.z.string()),
674
- tags: import_zod2.z.array(import_zod2.z.string()),
675
- environment: import_zod2.z.string().min(1)
676
- }).strict();
677
- var StudioInterruptSchema = import_zod2.z.object({
678
- afterResponseCompleted: import_zod2.z.boolean().optional(),
679
- id: import_zod2.z.string().min(1),
873
+ interruptExpiresAt: import_zod4.z.string().datetime({ offset: true }).nullable().optional(),
874
+ providers: import_zod4.z.array(import_zod4.z.string()),
875
+ models: import_zod4.z.array(import_zod4.z.string()),
876
+ tags: import_zod4.z.array(import_zod4.z.string()),
877
+ environment: import_zod4.z.string().min(1)
878
+ }).strict();
879
+ var StudioInterruptSchema = import_zod4.z.object({
880
+ afterResponseCompleted: import_zod4.z.boolean().optional(),
881
+ id: import_zod4.z.string().min(1),
680
882
  status: StudioInterruptStatusSchema,
681
883
  type: StudioInterruptTypeSchema,
682
884
  interactionMode: StudioInterruptInteractionModeSchema,
683
- schemaId: import_zod2.z.string().nullable(),
684
- schemaVersion: import_zod2.z.string().nullable(),
685
- createdAt: import_zod2.z.string().datetime({ offset: true }),
686
- resolvedAt: import_zod2.z.string().datetime({ offset: true }).nullable(),
687
- expiresAt: import_zod2.z.string().datetime({ offset: true }).nullable(),
688
- question: import_zod2.z.string().nullable(),
689
- contentCaptured: import_zod2.z.boolean(),
690
- optionCount: import_zod2.z.number().int().nonnegative().nullable(),
691
- options: import_zod2.z.array(StudioInterruptOptionSchema).nullable(),
692
- workflowId: import_zod2.z.string().min(1),
693
- nodeId: import_zod2.z.string().nullable(),
694
- sessionId: import_zod2.z.string().nullable(),
695
- userId: import_zod2.z.string().nullable(),
696
- tenantId: import_zod2.z.string().nullable(),
697
- response: import_zod2.z.string().nullable(),
698
- responseCaptured: import_zod2.z.boolean(),
885
+ schemaId: import_zod4.z.string().nullable(),
886
+ schemaVersion: import_zod4.z.string().nullable(),
887
+ createdAt: import_zod4.z.string().datetime({ offset: true }),
888
+ resolvedAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
889
+ expiresAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
890
+ question: import_zod4.z.string().nullable(),
891
+ contentCaptured: import_zod4.z.boolean(),
892
+ optionCount: import_zod4.z.number().int().nonnegative().nullable(),
893
+ options: import_zod4.z.array(StudioInterruptOptionSchema).nullable(),
894
+ workflowId: import_zod4.z.string().min(1),
895
+ nodeId: import_zod4.z.string().nullable(),
896
+ sessionId: import_zod4.z.string().nullable(),
897
+ userId: import_zod4.z.string().nullable(),
898
+ tenantId: import_zod4.z.string().nullable(),
899
+ response: import_zod4.z.string().nullable(),
900
+ responseCaptured: import_zod4.z.boolean(),
699
901
  resumeOutcome: StudioResumeOutcomeSchema.nullable(),
700
- resumeError: import_zod2.z.string().nullable(),
701
- runId: import_zod2.z.string().min(1),
702
- resumeToken: import_zod2.z.string().nullable(),
703
- resolvedBy: import_zod2.z.string().nullable(),
704
- environment: import_zod2.z.string().min(1)
705
- }).strict();
706
- var StudioDetailEventSchema = import_zod2.z.object({
707
- id: import_zod2.z.string().min(1),
902
+ resumeError: import_zod4.z.string().nullable(),
903
+ runId: import_zod4.z.string().min(1),
904
+ resumeToken: import_zod4.z.string().nullable(),
905
+ resolvedBy: import_zod4.z.string().nullable(),
906
+ environment: import_zod4.z.string().min(1)
907
+ }).strict();
908
+ var StudioDetailEventSchema = import_zod4.z.object({
909
+ id: import_zod4.z.string().min(1),
708
910
  type: TelemetryEventTypeSchema,
709
- occurredAt: import_zod2.z.string().datetime({ offset: true }),
710
- receivedAt: import_zod2.z.string().datetime({ offset: true }),
711
- environment: import_zod2.z.string().min(1),
712
- serviceName: import_zod2.z.string().min(1),
713
- deploymentRef: import_zod2.z.string().nullable(),
714
- traceId: import_zod2.z.string().nullable(),
715
- spanId: import_zod2.z.string().nullable(),
716
- parentSpanId: import_zod2.z.string().nullable(),
717
- runId: import_zod2.z.string().min(1),
718
- sessionId: import_zod2.z.string().nullable(),
719
- workflowId: import_zod2.z.string().min(1),
720
- workflowRevisionId: import_zod2.z.string().nullable(),
721
- nodeId: import_zod2.z.string().nullable(),
722
- userId: import_zod2.z.string().nullable(),
723
- tenantId: import_zod2.z.string().nullable(),
724
- tags: import_zod2.z.array(import_zod2.z.string()),
725
- metadata: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).nullable(),
726
- payload: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown())
727
- }).strict();
728
- var StudioWorkflowNodeSchema = import_zod2.z.object({
729
- id: import_zod2.z.string().min(1),
730
- label: import_zod2.z.string(),
731
- type: import_zod2.z.string().nullable(),
732
- state: import_zod2.z.enum(["healthy", "warning", "failed", "interrupted", "retried"]).nullable(),
733
- provider: import_zod2.z.string().nullable(),
734
- model: import_zod2.z.string().nullable(),
911
+ occurredAt: import_zod4.z.string().datetime({ offset: true }),
912
+ receivedAt: import_zod4.z.string().datetime({ offset: true }),
913
+ environment: import_zod4.z.string().min(1),
914
+ serviceName: import_zod4.z.string().min(1),
915
+ deploymentRef: import_zod4.z.string().nullable(),
916
+ traceId: import_zod4.z.string().nullable(),
917
+ spanId: import_zod4.z.string().nullable(),
918
+ parentSpanId: import_zod4.z.string().nullable(),
919
+ runId: import_zod4.z.string().min(1),
920
+ sessionId: import_zod4.z.string().nullable(),
921
+ workflowId: import_zod4.z.string().min(1),
922
+ workflowRevisionId: import_zod4.z.string().nullable(),
923
+ nodeId: import_zod4.z.string().nullable(),
924
+ userId: import_zod4.z.string().nullable(),
925
+ tenantId: import_zod4.z.string().nullable(),
926
+ tags: import_zod4.z.array(import_zod4.z.string()),
927
+ metadata: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).nullable(),
928
+ payload: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown())
929
+ }).strict();
930
+ var StudioWorkflowNodeSchema = import_zod4.z.object({
931
+ tools: import_zod4.z.array(StudioToolSchema).optional(),
932
+ toolDiscovery: ToolDiscoverySchema.optional(),
933
+ id: import_zod4.z.string().min(1),
934
+ label: import_zod4.z.string(),
935
+ type: import_zod4.z.string().nullable(),
936
+ state: import_zod4.z.enum(["healthy", "warning", "failed", "interrupted", "retried"]).nullable(),
937
+ provider: import_zod4.z.string().nullable(),
938
+ model: import_zod4.z.string().nullable(),
735
939
  metrics: StudioMetricSchema
736
940
  }).strict();
737
- var StudioWorkflowInternalEdgeSchema = import_zod2.z.object({
738
- id: import_zod2.z.string().min(1),
739
- source: import_zod2.z.string().min(1),
740
- target: import_zod2.z.string().min(1),
741
- condition: import_zod2.z.string().nullable()
742
- }).strict();
743
- var StudioWorkflowTransitionSchema = import_zod2.z.object({
744
- kind: import_zod2.z.enum(["call", "handoff"]).optional(),
745
- id: import_zod2.z.string().min(1),
746
- sourceWorkflowId: import_zod2.z.string().min(1),
747
- sourceNodeId: import_zod2.z.string().nullable(),
748
- targetWorkflowId: import_zod2.z.string().min(1),
749
- condition: import_zod2.z.string().nullable(),
750
- volume: import_zod2.z.number().int().nonnegative(),
751
- successRate: import_zod2.z.number().min(0).max(100).nullable(),
752
- medianDurationMs: import_zod2.z.number().nonnegative().nullable(),
753
- errorRate: import_zod2.z.number().min(0).max(100).nullable()
754
- }).strict();
755
- var StudioWorkflowSchema = import_zod2.z.object({
756
- id: import_zod2.z.string().min(1),
757
- name: import_zod2.z.string().min(1),
758
- description: import_zod2.z.string().nullable(),
759
- versions: import_zod2.z.array(import_zod2.z.string()),
760
- activeVersion: import_zod2.z.string().nullable(),
761
- activeRevisionId: import_zod2.z.string().nullable(),
941
+ var StudioWorkflowInternalEdgeSchema = import_zod4.z.object({
942
+ id: import_zod4.z.string().min(1),
943
+ source: import_zod4.z.string().min(1),
944
+ target: import_zod4.z.string().min(1),
945
+ condition: import_zod4.z.string().nullable()
946
+ }).strict();
947
+ var StudioWorkflowTransitionSchema = import_zod4.z.object({
948
+ kind: import_zod4.z.enum(["call", "handoff"]).optional(),
949
+ id: import_zod4.z.string().min(1),
950
+ sourceWorkflowId: import_zod4.z.string().min(1),
951
+ sourceNodeId: import_zod4.z.string().nullable(),
952
+ targetWorkflowId: import_zod4.z.string().min(1),
953
+ condition: import_zod4.z.string().nullable(),
954
+ volume: import_zod4.z.number().int().nonnegative(),
955
+ successRate: import_zod4.z.number().min(0).max(100).nullable(),
956
+ medianDurationMs: import_zod4.z.number().nonnegative().nullable(),
957
+ errorRate: import_zod4.z.number().min(0).max(100).nullable()
958
+ }).strict();
959
+ var StudioWorkflowSchema = import_zod4.z.object({
960
+ id: import_zod4.z.string().min(1),
961
+ name: import_zod4.z.string().min(1),
962
+ description: import_zod4.z.string().nullable(),
963
+ versions: import_zod4.z.array(import_zod4.z.string()),
964
+ activeVersion: import_zod4.z.string().nullable(),
965
+ activeRevisionId: import_zod4.z.string().nullable(),
762
966
  health: StudioWorkflowHealthSchema,
763
- tags: import_zod2.z.array(import_zod2.z.string()),
764
- lastActivityAt: import_zod2.z.string().datetime({ offset: true }).nullable(),
967
+ tags: import_zod4.z.array(import_zod4.z.string()),
968
+ lastActivityAt: import_zod4.z.string().datetime({ offset: true }).nullable(),
765
969
  metrics: StudioMetricSchema,
766
- nodes: import_zod2.z.array(StudioWorkflowNodeSchema),
767
- internalEdges: import_zod2.z.array(StudioWorkflowInternalEdgeSchema)
970
+ nodes: import_zod4.z.array(StudioWorkflowNodeSchema),
971
+ internalEdges: import_zod4.z.array(StudioWorkflowInternalEdgeSchema)
768
972
  }).strict();
769
- var StudioRunsResponseSchema = import_zod2.z.object({
770
- runs: import_zod2.z.array(StudioRunSchema),
771
- totalCount: import_zod2.z.number().int().nonnegative()
973
+ var StudioRunsResponseSchema = import_zod4.z.object({
974
+ runs: import_zod4.z.array(StudioRunSchema),
975
+ totalCount: import_zod4.z.number().int().nonnegative()
772
976
  }).strict();
773
- var StudioSessionsResponseSchema = import_zod2.z.object({
774
- sessions: import_zod2.z.array(StudioSessionSchema),
775
- totalCount: import_zod2.z.number().int().nonnegative()
977
+ var StudioSessionsResponseSchema = import_zod4.z.object({
978
+ sessions: import_zod4.z.array(StudioSessionSchema),
979
+ totalCount: import_zod4.z.number().int().nonnegative()
776
980
  }).strict();
777
- var StudioInterruptsResponseSchema = import_zod2.z.object({
778
- interrupts: import_zod2.z.array(StudioInterruptSchema),
779
- totalCount: import_zod2.z.number().int().nonnegative()
981
+ var StudioInterruptsResponseSchema = import_zod4.z.object({
982
+ interrupts: import_zod4.z.array(StudioInterruptSchema),
983
+ totalCount: import_zod4.z.number().int().nonnegative()
780
984
  }).strict();
781
- var StudioRunDetailResponseSchema = import_zod2.z.object({
985
+ var StudioRunDetailResponseSchema = import_zod4.z.object({
782
986
  run: StudioRunSchema,
783
- events: import_zod2.z.array(StudioDetailEventSchema),
987
+ scores: import_zod4.z.array(StudioScoreSchema).optional(),
988
+ canReview: import_zod4.z.boolean().optional(),
989
+ reviewActorId: import_zod4.z.string().optional(),
990
+ events: import_zod4.z.array(StudioDetailEventSchema),
784
991
  session: StudioSessionSchema.nullable(),
785
- interrupts: import_zod2.z.array(StudioInterruptSchema),
786
- updatedAt: import_zod2.z.string().datetime({ offset: true })
992
+ interrupts: import_zod4.z.array(StudioInterruptSchema),
993
+ updatedAt: import_zod4.z.string().datetime({ offset: true })
787
994
  }).strict();
788
- var StudioSessionDetailResponseSchema = import_zod2.z.object({
995
+ var StudioSessionDetailResponseSchema = import_zod4.z.object({
789
996
  session: StudioSessionSchema,
790
- runs: import_zod2.z.array(StudioRunSchema),
791
- events: import_zod2.z.array(StudioDetailEventSchema),
792
- interrupts: import_zod2.z.array(StudioInterruptSchema),
793
- updatedAt: import_zod2.z.string().datetime({ offset: true })
997
+ runs: import_zod4.z.array(StudioRunSchema),
998
+ events: import_zod4.z.array(StudioDetailEventSchema),
999
+ interrupts: import_zod4.z.array(StudioInterruptSchema),
1000
+ updatedAt: import_zod4.z.string().datetime({ offset: true })
794
1001
  }).strict();
795
- var StudioInterruptDetailResponseSchema = import_zod2.z.object({
1002
+ var StudioInterruptDetailResponseSchema = import_zod4.z.object({
796
1003
  interrupt: StudioInterruptSchema,
797
- events: import_zod2.z.array(StudioDetailEventSchema),
1004
+ events: import_zod4.z.array(StudioDetailEventSchema),
798
1005
  run: StudioRunSchema.nullable(),
799
1006
  session: StudioSessionSchema.nullable(),
800
- updatedAt: import_zod2.z.string().datetime({ offset: true })
1007
+ updatedAt: import_zod4.z.string().datetime({ offset: true })
801
1008
  }).strict();
802
- var StudioWorkflowsResponseSchema = import_zod2.z.object({
803
- workflows: import_zod2.z.array(StudioWorkflowSchema),
804
- observedCalls: import_zod2.z.array(
1009
+ var StudioWorkflowsResponseSchema = import_zod4.z.object({
1010
+ workflows: import_zod4.z.array(StudioWorkflowSchema),
1011
+ observedCalls: import_zod4.z.array(
805
1012
  StudioWorkflowTransitionSchema.extend({
806
- runId: import_zod2.z.string(),
807
- invocationId: import_zod2.z.string(),
808
- branchId: import_zod2.z.string()
1013
+ runId: import_zod4.z.string(),
1014
+ invocationId: import_zod4.z.string(),
1015
+ branchId: import_zod4.z.string()
809
1016
  })
810
1017
  ).optional(),
811
- transitions: import_zod2.z.array(StudioWorkflowTransitionSchema),
1018
+ transitions: import_zod4.z.array(StudioWorkflowTransitionSchema),
812
1019
  cohort: StudioTimeRangeContextSchema.extend({
813
- workflowId: import_zod2.z.string().nullable(),
814
- version: import_zod2.z.string().nullable()
1020
+ workflowId: import_zod4.z.string().nullable(),
1021
+ version: import_zod4.z.string().nullable()
815
1022
  }).strict()
816
1023
  }).strict();
817
- var StudioCatalogsResponseSchema = import_zod2.z.object({
818
- environments: import_zod2.z.array(import_zod2.z.string()),
819
- providers: import_zod2.z.array(import_zod2.z.string()),
820
- models: import_zod2.z.array(import_zod2.z.string()),
821
- workflows: import_zod2.z.array(import_zod2.z.string()),
822
- tags: import_zod2.z.array(import_zod2.z.string())
1024
+ var StudioCatalogsResponseSchema = import_zod4.z.object({
1025
+ environments: import_zod4.z.array(import_zod4.z.string()),
1026
+ providers: import_zod4.z.array(import_zod4.z.string()),
1027
+ models: import_zod4.z.array(import_zod4.z.string()),
1028
+ workflows: import_zod4.z.array(import_zod4.z.string()),
1029
+ tags: import_zod4.z.array(import_zod4.z.string())
823
1030
  }).strict();
824
- var StudioContextResponseSchema = import_zod2.z.object({
825
- organization: import_zod2.z.object({
826
- name: import_zod2.z.string().min(1)
1031
+ var StudioContextResponseSchema = import_zod4.z.object({
1032
+ organization: import_zod4.z.object({
1033
+ name: import_zod4.z.string().min(1)
827
1034
  }).strict(),
828
- project: import_zod2.z.object({
829
- name: import_zod2.z.string().min(1)
1035
+ project: import_zod4.z.object({
1036
+ name: import_zod4.z.string().min(1)
830
1037
  }).strict(),
831
- environments: import_zod2.z.array(import_zod2.z.string()),
832
- apiKey: import_zod2.z.object({
833
- mode: import_zod2.z.enum(["test", "live"]),
834
- scopes: import_zod2.z.array(import_zod2.z.string())
1038
+ environments: import_zod4.z.array(import_zod4.z.string()),
1039
+ apiKey: import_zod4.z.object({
1040
+ mode: import_zod4.z.enum(["test", "live"]),
1041
+ scopes: import_zod4.z.array(import_zod4.z.string())
835
1042
  }).strict(),
836
- api: import_zod2.z.object({
837
- status: import_zod2.z.literal("ok"),
838
- service: import_zod2.z.literal("kortyx-api"),
839
- version: import_zod2.z.string().min(1)
1043
+ api: import_zod4.z.object({
1044
+ status: import_zod4.z.literal("ok"),
1045
+ service: import_zod4.z.literal("kortyx-api"),
1046
+ version: import_zod4.z.string().min(1)
840
1047
  }).strict()
841
1048
  }).strict();
842
1049
  // Annotate the CommonJS export names for ESM import in node:
843
1050
  0 && (module.exports = {
1051
+ ClearScoreResponseSchema,
1052
+ ClearUserFeedbackRequestSchema,
844
1053
  EnsureWorkflowTopologyRequestSchema,
845
1054
  EnsureWorkflowTopologyResponseSchema,
1055
+ FEEDBACK_FILTERS,
1056
+ FeedbackReasonSchema,
1057
+ FeedbackSummarySchema,
1058
+ ReviewVerdictSchema,
846
1059
  STUDIO_TIME_RANGES,
847
1060
  StudioCatalogsResponseSchema,
848
1061
  StudioChangeResourceSchema,
@@ -863,16 +1076,20 @@ var StudioContextResponseSchema = import_zod2.z.object({
863
1076
  StudioReleaseSchema,
864
1077
  StudioReleaseVersionSchema,
865
1078
  StudioResumeOutcomeSchema,
1079
+ StudioReviewRequestSchema,
866
1080
  StudioRunDetailResponseSchema,
867
1081
  StudioRunSchema,
868
1082
  StudioRunStatusSchema,
869
1083
  StudioRunsResponseSchema,
1084
+ StudioScoreResponseSchema,
1085
+ StudioScoreSchema,
870
1086
  StudioSessionDetailResponseSchema,
871
1087
  StudioSessionSchema,
872
1088
  StudioSessionsResponseSchema,
873
1089
  StudioTimeRangeContextSchema,
874
1090
  StudioTimeRangeQuerySchema,
875
1091
  StudioTimeRangeSchema,
1092
+ StudioToolSchema,
876
1093
  StudioUpdateOperationSchema,
877
1094
  StudioUpdateSettingsSchema,
878
1095
  StudioUpdateStatusSchema,
@@ -895,6 +1112,11 @@ var StudioContextResponseSchema = import_zod2.z.object({
895
1112
  TelemetryServiceSchema,
896
1113
  TelemetryUnitPriceSchema,
897
1114
  TelemetryUsageItemSchema,
1115
+ ToolDiscoverySchema,
1116
+ ToolObservationSchema,
1117
+ ToolOutcomeSchema,
1118
+ UserFeedbackRequestSchema,
1119
+ WorkflowToolSchema,
898
1120
  WorkflowTopologyCallSchema,
899
1121
  WorkflowTopologyEdgeSchema,
900
1122
  WorkflowTopologyNodeSchema,
@@ -903,6 +1125,7 @@ var StudioContextResponseSchema = import_zod2.z.object({
903
1125
  projectWorkflowCalls,
904
1126
  resolveStudioInterruptStatus,
905
1127
  resolveStudioTimeRange,
906
- studioUpdateRunning
1128
+ studioUpdateRunning,
1129
+ summarizeUserFeedback
907
1130
  });
908
1131
  //# sourceMappingURL=index.js.map