@turingfocus/chat-protocol 0.1.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.
@@ -0,0 +1,510 @@
1
+ import { z } from "zod/v4";
2
+ import { ASK_USER_MAX_ANSWER_VALUES, ASK_USER_MAX_OPTIONS, ASK_USER_MAX_QUESTIONS, ASK_USER_MAX_QUESTION_ID_CHARACTERS, ASK_USER_MAX_REQUEST_ID_CHARACTERS, ASK_USER_MAX_TEXT_CHARACTERS, isAskUserInteractionValueCompatible, isSafeAskUserQuestionId, } from "./ask-user.js";
3
+ import { compareAgentEventTransitions } from "./ordering.js";
4
+ import { sanitizeDiagnosticText, sanitizeRaw } from "./raw.js";
5
+ const idParser = z.string().min(1);
6
+ const timestampParser = z.number().finite().nonnegative();
7
+ const sequenceParser = z.number().int().nonnegative();
8
+ const rawParser = z.unknown().transform((input, context) => {
9
+ try {
10
+ return sanitizeRaw(input);
11
+ }
12
+ catch (error) {
13
+ context.addIssue({
14
+ code: "custom",
15
+ message: error instanceof Error ? error.message : "raw data is invalid",
16
+ });
17
+ return z.NEVER;
18
+ }
19
+ });
20
+ export const conversationParser = z.object({
21
+ id: idParser,
22
+ title: z.string(),
23
+ description: z.string().optional(),
24
+ updatedAt: timestampParser.optional(),
25
+ raw: rawParser.optional(),
26
+ });
27
+ const messageContentParser = z.discriminatedUnion("kind", [
28
+ z.object({ kind: z.literal("text"), text: z.string() }),
29
+ z.object({
30
+ kind: z.literal("media"),
31
+ mediaType: z.enum(["audio", "image", "video"]),
32
+ summary: z.string(),
33
+ raw: rawParser.optional(),
34
+ }),
35
+ z.object({
36
+ kind: z.literal("file"),
37
+ summary: z.string(),
38
+ raw: rawParser.optional(),
39
+ }),
40
+ z.object({
41
+ kind: z.literal("contact"),
42
+ summary: z.string(),
43
+ raw: rawParser.optional(),
44
+ }),
45
+ z.object({
46
+ kind: z.literal("url"),
47
+ summary: z.string(),
48
+ raw: rawParser.optional(),
49
+ }),
50
+ z.object({
51
+ kind: z.literal("unknown"),
52
+ summary: z.string(),
53
+ raw: rawParser.optional(),
54
+ }),
55
+ ]);
56
+ const messageAuthorParser = z.object({
57
+ id: z.string().optional(),
58
+ displayName: z.string().optional(),
59
+ avatarUrl: z.string().optional(),
60
+ });
61
+ export const chatErrorParser = z.object({
62
+ code: z.enum([
63
+ "authentication",
64
+ "authorization",
65
+ "conflict",
66
+ "network",
67
+ "not-found",
68
+ "server",
69
+ "timeout",
70
+ "unknown",
71
+ "unsupported",
72
+ "validation",
73
+ ]),
74
+ message: z.string().transform(sanitizeDiagnosticText),
75
+ retryable: z.boolean(),
76
+ conversationId: idParser.optional(),
77
+ details: rawParser.optional(),
78
+ });
79
+ const validateErrorConversation = (error, expectedConversationId, path, context) => {
80
+ if (error?.conversationId !== undefined &&
81
+ error.conversationId !== expectedConversationId) {
82
+ context.addIssue({
83
+ code: "custom",
84
+ path: [...path, "conversationId"],
85
+ message: "error must belong to the containing conversation",
86
+ });
87
+ }
88
+ };
89
+ export const messageParser = z.object({
90
+ kind: z.literal("message"),
91
+ id: idParser,
92
+ conversationId: idParser,
93
+ role: z.enum(["assistant", "system", "tool", "unknown", "user"]),
94
+ content: messageContentParser,
95
+ createdAt: timestampParser,
96
+ updatedAt: timestampParser.optional(),
97
+ sequence: sequenceParser.optional(),
98
+ author: messageAuthorParser.optional(),
99
+ reasoning: z.string().optional(),
100
+ raw: rawParser.optional(),
101
+ });
102
+ const agentEventStatusParser = z.enum([
103
+ "aborted",
104
+ "failed",
105
+ "running",
106
+ "success",
107
+ "timeout",
108
+ "unknown",
109
+ ]);
110
+ const agentEventTransitionParser = z.object({
111
+ id: idParser,
112
+ status: agentEventStatusParser,
113
+ occurredAt: timestampParser,
114
+ sequence: sequenceParser.optional(),
115
+ summary: z.string().optional(),
116
+ error: chatErrorParser.optional(),
117
+ raw: rawParser.optional(),
118
+ });
119
+ const toolCallParser = z.object({
120
+ id: idParser.optional(),
121
+ name: z.string().min(1),
122
+ description: z.string().optional(),
123
+ arguments: rawParser.optional(),
124
+ index: sequenceParser.optional(),
125
+ });
126
+ const toolReturnParser = z
127
+ .object({
128
+ result: rawParser.optional(),
129
+ success: z.boolean().optional(),
130
+ done: z.boolean().optional(),
131
+ raw: rawParser.optional(),
132
+ })
133
+ .refine((toolReturn) => toolReturn.result !== undefined ||
134
+ toolReturn.success !== undefined ||
135
+ toolReturn.done !== undefined ||
136
+ toolReturn.raw !== undefined, { message: "tool returns must preserve at least one field" });
137
+ const askUserInteractionOptionParser = z.object({
138
+ label: z.string().min(1).max(ASK_USER_MAX_TEXT_CHARACTERS),
139
+ value: z.string().max(ASK_USER_MAX_TEXT_CHARACTERS),
140
+ description: z.string().max(ASK_USER_MAX_TEXT_CHARACTERS).optional(),
141
+ });
142
+ const askUserInteractionValueParser = z.union([
143
+ z.string().max(ASK_USER_MAX_TEXT_CHARACTERS),
144
+ z
145
+ .array(z.string().max(ASK_USER_MAX_TEXT_CHARACTERS))
146
+ .max(ASK_USER_MAX_ANSWER_VALUES),
147
+ ]);
148
+ const askUserInteractionQuestionIdParser = idParser
149
+ .max(ASK_USER_MAX_QUESTION_ID_CHARACTERS)
150
+ .refine(isSafeAskUserQuestionId, {
151
+ message: "Ask User question IDs must not use reserved object keys",
152
+ });
153
+ const askUserInteractionRequestIdParser = idParser.max(ASK_USER_MAX_REQUEST_ID_CHARACTERS);
154
+ const askUserInteractionAnswersParser = z.preprocess((value, context) => {
155
+ if (value !== null &&
156
+ typeof value === "object" &&
157
+ Reflect.ownKeys(value).some((key) => typeof key === "string" && !isSafeAskUserQuestionId(key))) {
158
+ context.addIssue({
159
+ code: "custom",
160
+ message: "Ask User answer keys must not use reserved object keys",
161
+ });
162
+ return z.NEVER;
163
+ }
164
+ return value;
165
+ }, z
166
+ .record(askUserInteractionQuestionIdParser, askUserInteractionValueParser)
167
+ .refine((answers) => Object.keys(answers).length <= ASK_USER_MAX_QUESTIONS, { message: "Ask User answers exceed the question budget" }));
168
+ const askUserInteractionQuestionParser = z
169
+ .object({
170
+ id: askUserInteractionQuestionIdParser,
171
+ prompt: z.string().min(1).max(ASK_USER_MAX_TEXT_CHARACTERS),
172
+ title: z.string().max(ASK_USER_MAX_TEXT_CHARACTERS).optional(),
173
+ description: z.string().max(ASK_USER_MAX_TEXT_CHARACTERS).optional(),
174
+ placeholder: z.string().max(ASK_USER_MAX_TEXT_CHARACTERS).optional(),
175
+ required: z.boolean(),
176
+ multiple: z.boolean(),
177
+ defaultValue: askUserInteractionValueParser.optional(),
178
+ options: z
179
+ .array(askUserInteractionOptionParser)
180
+ .max(ASK_USER_MAX_OPTIONS),
181
+ })
182
+ .superRefine((question, context) => {
183
+ if (new Set(question.options.map((option) => option.value)).size !==
184
+ question.options.length) {
185
+ context.addIssue({
186
+ code: "custom",
187
+ path: ["options"],
188
+ message: "Ask User option values must be unique within a question",
189
+ });
190
+ }
191
+ });
192
+ const askUserInteractionQuestionsParser = z
193
+ .array(askUserInteractionQuestionParser)
194
+ .min(1)
195
+ .max(ASK_USER_MAX_QUESTIONS)
196
+ .refine((questions) => new Set(questions.map((question) => question.id)).size ===
197
+ questions.length, { message: "Ask User question IDs must be unique" });
198
+ const askUserInteractionRequestQuestionsParser = askUserInteractionQuestionsParser.superRefine((questions, context) => {
199
+ questions.forEach((question, index) => {
200
+ if (question.multiple && question.options.length === 0) {
201
+ context.addIssue({
202
+ code: "custom",
203
+ path: [index, "options"],
204
+ message: "multi-select Ask User requests require options",
205
+ });
206
+ }
207
+ if (question.defaultValue !== undefined &&
208
+ !isAskUserInteractionValueCompatible(question, question.defaultValue)) {
209
+ context.addIssue({
210
+ code: "custom",
211
+ path: [index, "defaultValue"],
212
+ message: "Ask User default value must match its question",
213
+ });
214
+ }
215
+ });
216
+ });
217
+ export const askUserInteractionRequestParser = z.object({
218
+ kind: z.literal("ask-user"),
219
+ conversationId: idParser,
220
+ requestId: askUserInteractionRequestIdParser,
221
+ revision: askUserInteractionRequestIdParser,
222
+ eventId: askUserInteractionRequestIdParser.optional(),
223
+ title: z.string().min(1).max(ASK_USER_MAX_TEXT_CHARACTERS),
224
+ questions: askUserInteractionRequestQuestionsParser,
225
+ timeoutSeconds: z.number().finite().positive().optional(),
226
+ });
227
+ export const askUserInteractionAnswerParser = z.object({
228
+ requestId: askUserInteractionRequestIdParser,
229
+ revision: askUserInteractionRequestIdParser,
230
+ action: z.enum(["cancel", "submit"]),
231
+ answers: askUserInteractionAnswersParser,
232
+ });
233
+ export const askUserInteractionResultParser = z.object({
234
+ kind: z.literal("ask-user"),
235
+ requestId: askUserInteractionRequestIdParser,
236
+ revision: askUserInteractionRequestIdParser.optional(),
237
+ status: z.enum([
238
+ "answered",
239
+ "cancelled",
240
+ "chat-about-this",
241
+ "failed",
242
+ "timeout",
243
+ ]),
244
+ questions: askUserInteractionQuestionsParser,
245
+ answers: askUserInteractionAnswersParser.optional(),
246
+ error: z.string().max(ASK_USER_MAX_TEXT_CHARACTERS).optional(),
247
+ });
248
+ const toolEventTransitionParser = z
249
+ .object({
250
+ id: idParser,
251
+ status: agentEventStatusParser,
252
+ occurredAt: timestampParser,
253
+ sequence: sequenceParser.optional(),
254
+ summary: z.string().optional(),
255
+ error: chatErrorParser.optional(),
256
+ raw: rawParser.optional(),
257
+ toolCall: toolCallParser.optional(),
258
+ toolReturn: toolReturnParser.optional(),
259
+ interaction: askUserInteractionResultParser.optional(),
260
+ })
261
+ .superRefine((transition, context) => {
262
+ if (transition.toolCall === undefined &&
263
+ transition.toolReturn === undefined &&
264
+ transition.interaction === undefined) {
265
+ context.addIssue({
266
+ code: "custom",
267
+ message: "tool transitions must preserve a tool call, tool return, or interaction",
268
+ });
269
+ }
270
+ });
271
+ const agentEventBaseShape = {
272
+ kind: z.literal("agent-event"),
273
+ id: idParser,
274
+ conversationId: idParser,
275
+ eventType: z.string().min(1),
276
+ status: agentEventStatusParser,
277
+ createdAt: timestampParser,
278
+ updatedAt: timestampParser.optional(),
279
+ sequence: sequenceParser.optional(),
280
+ summary: z.string().optional(),
281
+ raw: rawParser.optional(),
282
+ };
283
+ export const agentEventParser = z
284
+ .discriminatedUnion("eventCategory", [
285
+ z.object({
286
+ ...agentEventBaseShape,
287
+ eventCategory: z.literal("generic"),
288
+ transitions: z.array(agentEventTransitionParser).min(1),
289
+ }),
290
+ z.object({
291
+ ...agentEventBaseShape,
292
+ eventCategory: z.literal("tool"),
293
+ transitions: z.array(toolEventTransitionParser).min(1),
294
+ }),
295
+ ])
296
+ .superRefine((event, context) => {
297
+ const latestTransition = event.transitions.at(-1);
298
+ if (latestTransition.status !== event.status) {
299
+ context.addIssue({
300
+ code: "custom",
301
+ path: ["status"],
302
+ message: "event status must match the latest transition",
303
+ });
304
+ }
305
+ const transitionIds = new Set();
306
+ event.transitions.forEach((transition, index) => {
307
+ const previousTransition = event.transitions[index - 1];
308
+ if (previousTransition !== undefined &&
309
+ compareAgentEventTransitions(previousTransition, transition) > 0) {
310
+ context.addIssue({
311
+ code: "custom",
312
+ path: ["transitions", index],
313
+ message: "event transitions must be chronologically ordered",
314
+ });
315
+ }
316
+ if (transitionIds.has(transition.id)) {
317
+ context.addIssue({
318
+ code: "custom",
319
+ path: ["transitions", index, "id"],
320
+ message: "event transition IDs must be unique",
321
+ });
322
+ }
323
+ transitionIds.add(transition.id);
324
+ validateErrorConversation(transition.error, event.conversationId, ["transitions", index, "error"], context);
325
+ });
326
+ if (event.eventCategory === "tool" &&
327
+ !event.transitions.some((transition) => transition.toolCall !== undefined ||
328
+ transition.toolReturn !== undefined ||
329
+ transition.interaction !== undefined)) {
330
+ context.addIssue({
331
+ code: "custom",
332
+ path: ["transitions"],
333
+ message: "tool events must preserve a tool call, tool return, or interaction",
334
+ });
335
+ }
336
+ });
337
+ const agentEventTransitionPayloadBaseShape = {
338
+ id: idParser,
339
+ eventType: z.string().min(1),
340
+ createdAt: timestampParser,
341
+ sequence: sequenceParser.optional(),
342
+ };
343
+ const agentEventTransitionPayloadParser = z.discriminatedUnion("eventCategory", [
344
+ z.object({
345
+ ...agentEventTransitionPayloadBaseShape,
346
+ eventCategory: z.literal("generic"),
347
+ transition: agentEventTransitionParser,
348
+ }),
349
+ z.object({
350
+ ...agentEventTransitionPayloadBaseShape,
351
+ eventCategory: z.literal("tool"),
352
+ transition: toolEventTransitionParser,
353
+ }),
354
+ ]);
355
+ export const unknownEventParser = z.object({
356
+ kind: z.literal("unknown-event"),
357
+ id: idParser,
358
+ conversationId: idParser,
359
+ originalType: z.string().min(1),
360
+ createdAt: timestampParser,
361
+ updatedAt: timestampParser.optional(),
362
+ sequence: sequenceParser.optional(),
363
+ summary: z.string(),
364
+ raw: rawParser.optional(),
365
+ });
366
+ export const timelineItemParser = z.union([
367
+ messageParser,
368
+ agentEventParser,
369
+ unknownEventParser,
370
+ ]);
371
+ export const runParser = z
372
+ .object({
373
+ id: idParser,
374
+ conversationId: idParser,
375
+ status: z.enum(["aborted", "failed", "running", "succeeded", "unknown"]),
376
+ canInterrupt: z.boolean(),
377
+ startedAt: timestampParser.optional(),
378
+ finishedAt: timestampParser.optional(),
379
+ error: chatErrorParser.optional(),
380
+ })
381
+ .superRefine((run, context) => {
382
+ validateErrorConversation(run.error, run.conversationId, ["error"], context);
383
+ });
384
+ export const capabilitiesParser = z.object({
385
+ answerInteraction: z.boolean().optional(),
386
+ interrupt: z.boolean(),
387
+ listConversations: z.boolean(),
388
+ liveUpdates: z.boolean(),
389
+ loadHistory: z.boolean(),
390
+ sendText: z.boolean(),
391
+ });
392
+ const timelinePageInfoParser = z.object({
393
+ previousCursor: z.string().optional(),
394
+ hasPreviousPage: z.boolean(),
395
+ });
396
+ export const chatSnapshotParser = z
397
+ .object({
398
+ conversation: conversationParser,
399
+ timeline: z.array(timelineItemParser),
400
+ run: runParser.nullable(),
401
+ capabilities: capabilitiesParser,
402
+ pageInfo: timelinePageInfoParser,
403
+ pendingInteraction: askUserInteractionRequestParser.optional(),
404
+ error: chatErrorParser.optional(),
405
+ })
406
+ .superRefine((snapshot, context) => {
407
+ snapshot.timeline.forEach((item, index) => {
408
+ if (item.conversationId !== snapshot.conversation.id) {
409
+ context.addIssue({
410
+ code: "custom",
411
+ path: ["timeline", index, "conversationId"],
412
+ message: "timeline item must belong to the snapshot conversation",
413
+ });
414
+ }
415
+ });
416
+ if (snapshot.run !== null &&
417
+ snapshot.run.conversationId !== snapshot.conversation.id) {
418
+ context.addIssue({
419
+ code: "custom",
420
+ path: ["run", "conversationId"],
421
+ message: "run must belong to the snapshot conversation",
422
+ });
423
+ }
424
+ validateErrorConversation(snapshot.error, snapshot.conversation.id, ["error"], context);
425
+ if (snapshot.pendingInteraction !== undefined &&
426
+ snapshot.pendingInteraction.conversationId !== snapshot.conversation.id) {
427
+ context.addIssue({
428
+ code: "custom",
429
+ path: ["pendingInteraction", "conversationId"],
430
+ message: "pending interaction must belong to the snapshot conversation",
431
+ });
432
+ }
433
+ });
434
+ export const chatUpdateParser = z
435
+ .discriminatedUnion("kind", [
436
+ z.object({
437
+ kind: z.literal("snapshot.replace"),
438
+ snapshot: chatSnapshotParser,
439
+ }),
440
+ z.object({
441
+ kind: z.literal("conversation.upsert"),
442
+ conversation: conversationParser,
443
+ }),
444
+ z.object({
445
+ kind: z.literal("timeline.upsert"),
446
+ conversationId: idParser,
447
+ item: timelineItemParser,
448
+ }),
449
+ z.object({
450
+ kind: z.literal("event.transition.upsert"),
451
+ conversationId: idParser,
452
+ event: agentEventTransitionPayloadParser,
453
+ }),
454
+ z.object({
455
+ kind: z.literal("run.replace"),
456
+ conversationId: idParser,
457
+ run: runParser.nullable(),
458
+ }),
459
+ z.object({
460
+ kind: z.literal("capabilities.replace"),
461
+ conversationId: idParser,
462
+ capabilities: capabilitiesParser,
463
+ }),
464
+ z.object({
465
+ kind: z.literal("interaction.replace"),
466
+ conversationId: idParser,
467
+ interaction: askUserInteractionRequestParser.nullable(),
468
+ }),
469
+ z.object({
470
+ kind: z.literal("error.reported"),
471
+ conversationId: idParser.optional(),
472
+ error: chatErrorParser,
473
+ }),
474
+ ])
475
+ .superRefine((update, context) => {
476
+ if (update.kind === "timeline.upsert" &&
477
+ update.item.conversationId !== update.conversationId) {
478
+ context.addIssue({
479
+ code: "custom",
480
+ path: ["item", "conversationId"],
481
+ message: "timeline item must belong to the updated conversation",
482
+ });
483
+ }
484
+ if (update.kind === "run.replace" &&
485
+ update.run !== null &&
486
+ update.run.conversationId !== update.conversationId) {
487
+ context.addIssue({
488
+ code: "custom",
489
+ path: ["run", "conversationId"],
490
+ message: "run must belong to the updated conversation",
491
+ });
492
+ }
493
+ if (update.kind === "interaction.replace" &&
494
+ update.interaction !== null &&
495
+ update.interaction.conversationId !== update.conversationId) {
496
+ context.addIssue({
497
+ code: "custom",
498
+ path: ["interaction", "conversationId"],
499
+ message: "interaction must belong to the updated conversation",
500
+ });
501
+ }
502
+ if (update.kind === "error.reported" &&
503
+ update.conversationId !== undefined) {
504
+ validateErrorConversation(update.error, update.conversationId, ["error"], context);
505
+ }
506
+ if (update.kind === "event.transition.upsert") {
507
+ validateErrorConversation(update.event.transition.error, update.conversationId, ["event", "transition", "error"], context);
508
+ }
509
+ });
510
+ //# sourceMappingURL=internal-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-schemas.js","sourceRoot":"","sources":["../src/internal-schemas.ts"],"names":[],"mappings":"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"}