@agentskit/chat-protocol 0.1.0 → 0.2.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
@@ -1,7 +1,7 @@
1
1
  // src/index.ts
2
2
  import { deserializeMessages, serializeMessages } from "@agentskit/core";
3
3
  import { validateMemoryRecord } from "@agentskit/core/memory-validation";
4
- import { z as z3 } from "zod";
4
+ import { z as z4 } from "zod";
5
5
 
6
6
  // src/ask.ts
7
7
  import { z } from "zod";
@@ -13,7 +13,12 @@ var AskEventSchema = z.discriminatedUnion("type", [
13
13
  z.object({ type: z.literal("text"), delta: z.string().max(ASK_EVENT_MAX_BYTES) }).strict(),
14
14
  z.object({ type: z.literal("tool"), id: z.string().max(256), name: z.string().max(128), args: AskArgsSchema }).strict(),
15
15
  z.object({ type: z.literal("done"), model: z.string().max(256).optional() }).strict(),
16
- z.object({ type: z.literal("error"), message: z.string().min(1).max(4096) }).strict()
16
+ z.object({
17
+ type: z.literal("error"),
18
+ message: z.string().min(1).max(4096),
19
+ code: z.string().regex(/^[A-Z][A-Z0-9_]{0,127}$/).optional(),
20
+ retryable: z.boolean().optional()
21
+ }).strict()
17
22
  ]);
18
23
  var byteLength = (value) => new TextEncoder().encode(value).byteLength;
19
24
  function decodeAskEvents(buffer) {
@@ -43,6 +48,9 @@ function decodeAskEvents(buffer) {
43
48
  return { events: Object.freeze(events), rest: discardedPartial ? "" : partial, discardedPartial };
44
49
  }
45
50
 
51
+ // src/backend.ts
52
+ import { z as z3 } from "zod";
53
+
46
54
  // src/deterministic.ts
47
55
  import { sha256 } from "@noble/hashes/sha2.js";
48
56
  import { bytesToHex } from "@noble/hashes/utils.js";
@@ -313,6 +321,128 @@ var verifyLocalKnowledgeArtifactSync = (input, options) => {
313
321
  var verifyLocalKnowledgeArtifact = async (input, options) => verifyLocalKnowledgeArtifactSync(input, options);
314
322
  var decodeAnswerResponse = (input) => parseBoundedInput(input, AnswerResponseSchema, ANSWER_PROTOCOL, ANSWER_PROTOCOL_VERSION, 262144);
315
323
 
324
+ // src/backend.ts
325
+ var ASK_BACKEND_PROTOCOL = "agentskit.chat.ask";
326
+ var ASK_BACKEND_PROTOCOL_VERSION = 1;
327
+ var ASK_BACKEND_MAX_MESSAGES = 64;
328
+ var ASK_BACKEND_MAX_MESSAGE_CHARS = 16384;
329
+ var ASK_BACKEND_MAX_SOURCES = 8;
330
+ var SafeIdentifierSchema2 = z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
331
+ var SafeLabelSchema = z3.string().trim().min(1).max(256);
332
+ var SafeHrefSchema2 = z3.string().min(1).max(2048).refine((value) => {
333
+ if (/[\u0000-\u001F\u007F\\]/u.test(value) || value.startsWith("//")) return false;
334
+ if (!/^[A-Za-z][A-Za-z0-9+.-]*:/.test(value)) return /^\/(?!\/)/.test(value);
335
+ try {
336
+ const url = new URL(value);
337
+ return (url.protocol === "http:" || url.protocol === "https:") && url.username === "" && url.password === "";
338
+ } catch {
339
+ return false;
340
+ }
341
+ }, "Source must use a safe relative, HTTP, or HTTPS URL.");
342
+ var AskBackendMessageSchema = z3.object({
343
+ role: z3.enum(["user", "assistant"]),
344
+ content: z3.string().max(ASK_BACKEND_MAX_MESSAGE_CHARS)
345
+ }).strict().readonly();
346
+ var DeterministicEscalationSchema = AnswerResponseSchema.refine(
347
+ (value) => value.outcome === "escalation",
348
+ "Deterministic context must be an escalation."
349
+ );
350
+ var AskBackendRequestSchema = z3.object({
351
+ protocol: z3.literal(ASK_BACKEND_PROTOCOL).optional(),
352
+ version: z3.literal(ASK_BACKEND_PROTOCOL_VERSION).optional(),
353
+ sessionId: SafeIdentifierSchema2.optional(),
354
+ messages: z3.array(AskBackendMessageSchema).min(1).max(ASK_BACKEND_MAX_MESSAGES).readonly(),
355
+ deterministic: DeterministicEscalationSchema.optional()
356
+ }).strict().readonly();
357
+ var AskBackendSourceSchema = z3.object({
358
+ id: SafeIdentifierSchema2,
359
+ title: SafeLabelSchema,
360
+ href: SafeHrefSchema2,
361
+ excerpt: z3.string().trim().min(1).max(4096)
362
+ }).strict().readonly();
363
+ var AskBackendSiteConfigSchema = z3.object({
364
+ protocol: z3.literal("agentskit.chat.backend-site"),
365
+ version: z3.literal(1),
366
+ siteId: SafeIdentifierSchema2,
367
+ assistant: z3.object({
368
+ id: SafeIdentifierSchema2,
369
+ name: SafeLabelSchema,
370
+ suggestions: z3.array(SafeLabelSchema).max(8).readonly()
371
+ }).strict().readonly(),
372
+ corpus: z3.object({
373
+ id: SafeIdentifierSchema2,
374
+ mode: z3.enum(["local", "federated"])
375
+ }).strict().readonly(),
376
+ components: z3.array(SafeIdentifierSchema2).max(64).readonly(),
377
+ actions: z3.array(SafeIdentifierSchema2).max(64).readonly(),
378
+ limits: z3.object({
379
+ requestTimeoutMs: z3.number().int().min(100).max(12e4),
380
+ retrievalTimeoutMs: z3.number().int().min(100).max(6e4),
381
+ generationTimeoutMs: z3.number().int().min(100).max(12e4),
382
+ maxSources: z3.number().int().min(1).max(ASK_BACKEND_MAX_SOURCES)
383
+ }).strict().readonly(),
384
+ persistence: z3.object({ mode: z3.enum(["required", "disabled"]) }).strict().readonly()
385
+ }).strict().readonly();
386
+ var AskBackendUsageSchema = z3.object({
387
+ inputTokens: z3.number().int().nonnegative().optional(),
388
+ outputTokens: z3.number().int().nonnegative().optional(),
389
+ totalTokens: z3.number().int().nonnegative().optional(),
390
+ costUsd: z3.number().nonnegative().finite().optional(),
391
+ model: z3.string().trim().min(1).max(256).optional()
392
+ }).strict().readonly();
393
+ var AskBackendSessionRecordSchema = z3.object({
394
+ revision: z3.number().int().nonnegative(),
395
+ messages: z3.array(AskBackendMessageSchema).max(ASK_BACKEND_MAX_MESSAGES).readonly()
396
+ }).strict().readonly();
397
+ var AskBackendDiagnosticSchema = z3.object({
398
+ code: z3.enum([
399
+ "ASK_INVALID_REQUEST",
400
+ "ASK_UNAUTHORIZED",
401
+ "ASK_FORBIDDEN",
402
+ "ASK_RATE_LIMITED",
403
+ "ASK_TIMEOUT",
404
+ "ASK_CANCELLED",
405
+ "ASK_RETRIEVAL_FAILED",
406
+ "ASK_NO_GROUNDED_SOURCES",
407
+ "ASK_GENERATION_FAILED",
408
+ "ASK_PERSISTENCE_CONFLICT",
409
+ "ASK_INTERNAL"
410
+ ]),
411
+ message: z3.string().trim().min(1).max(4096),
412
+ retryable: z3.boolean()
413
+ }).strict().readonly();
414
+ var AskBackendMetricNameSchema = z3.enum([
415
+ "request.total_ms",
416
+ "stream.first_event_ms",
417
+ "stream.first_token_ms",
418
+ "stream.bytes",
419
+ "stream.events",
420
+ "stream.snapshots",
421
+ "deterministic.fallback",
422
+ "retrieval.total_ms",
423
+ "retrieval.documents",
424
+ "persistence.total_ms",
425
+ "cancellation.count",
426
+ "conflict.count",
427
+ "error.count",
428
+ "usage.input_tokens",
429
+ "usage.output_tokens",
430
+ "usage.total_tokens",
431
+ "cost.usd"
432
+ ]);
433
+ var AskBackendMetricSchema = z3.object({
434
+ protocol: z3.literal("agentskit.chat.backend-metric"),
435
+ version: z3.literal(1),
436
+ name: AskBackendMetricNameSchema,
437
+ siteId: SafeIdentifierSchema2,
438
+ corpusId: SafeIdentifierSchema2,
439
+ requestId: SafeIdentifierSchema2,
440
+ value: z3.number().finite().nonnegative(),
441
+ unit: z3.enum(["ms", "bytes", "count", "tokens", "usd"]),
442
+ outcome: z3.enum(["ok", "rejected", "cancelled", "error"]),
443
+ emittedAt: z3.string().datetime({ offset: true })
444
+ }).strict().readonly();
445
+
316
446
  // src/index.ts
317
447
  var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
318
448
  var isBoundedJsonValue = (input) => {
@@ -349,46 +479,46 @@ var ASSISTANT_CONTENT_PREFIX = `${ASSISTANT_CONTENT_PROTOCOL}/${ASSISTANT_CONTE
349
479
  var ASSISTANT_CONTENT_PREFIX_ROOT = `${ASSISTANT_CONTENT_PROTOCOL}/`;
350
480
  var ASSISTANT_CONTENT_MAX_BYTES = 262144;
351
481
  var ASSISTANT_CONTENT_MAX_RECORDS = 512;
352
- var ComponentKeySchema = z3.string().regex(/^[a-z][a-z0-9-]{0,63}$/);
353
- var ComponentFallbackSchema = z3.object({
354
- kind: z3.string().min(1).max(64),
355
- summary: z3.string().min(1).max(4096)
482
+ var ComponentKeySchema = z4.string().regex(/^[a-z][a-z0-9-]{0,63}$/);
483
+ var ComponentFallbackSchema = z4.object({
484
+ kind: z4.string().min(1).max(64),
485
+ summary: z4.string().min(1).max(4096)
356
486
  }).readonly();
357
- var ComponentRenderFrameSchema = z3.object({
358
- protocol: z3.literal(COMPONENT_PROTOCOL),
359
- version: z3.literal(COMPONENT_PROTOCOL_VERSION),
360
- type: z3.literal("render"),
487
+ var ComponentRenderFrameSchema = z4.object({
488
+ protocol: z4.literal(COMPONENT_PROTOCOL),
489
+ version: z4.literal(COMPONENT_PROTOCOL_VERSION),
490
+ type: z4.literal("render"),
361
491
  componentKey: ComponentKeySchema,
362
- instanceId: z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
363
- props: z3.unknown().refine(isBoundedJsonValue),
492
+ instanceId: z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
493
+ props: z4.unknown().refine(isBoundedJsonValue),
364
494
  fallback: ComponentFallbackSchema
365
495
  }).readonly();
366
- var ComponentSelectionEventSchema = z3.object({
367
- protocol: z3.literal(COMPONENT_PROTOCOL),
368
- version: z3.literal(COMPONENT_PROTOCOL_VERSION),
369
- type: z3.literal("select"),
496
+ var ComponentSelectionEventSchema = z4.object({
497
+ protocol: z4.literal(COMPONENT_PROTOCOL),
498
+ version: z4.literal(COMPONENT_PROTOCOL_VERSION),
499
+ type: z4.literal("select"),
370
500
  componentKey: ComponentKeySchema,
371
- instanceId: z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
372
- choiceId: z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)
501
+ instanceId: z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
502
+ choiceId: z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)
373
503
  }).readonly();
374
- var ComponentInteractionEventSchema = z3.object({
375
- protocol: z3.literal(COMPONENT_PROTOCOL),
376
- version: z3.literal(COMPONENT_PROTOCOL_VERSION),
377
- type: z3.literal("interact"),
504
+ var ComponentInteractionEventSchema = z4.object({
505
+ protocol: z4.literal(COMPONENT_PROTOCOL),
506
+ version: z4.literal(COMPONENT_PROTOCOL_VERSION),
507
+ type: z4.literal("interact"),
378
508
  componentKey: ComponentKeySchema,
379
- instanceId: z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
380
- event: z3.string().regex(/^[a-z][a-z0-9-]{0,63}$/),
381
- value: z3.unknown().refine(isBoundedJsonValue).optional()
509
+ instanceId: z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
510
+ event: z4.string().regex(/^[a-z][a-z0-9-]{0,63}$/),
511
+ value: z4.unknown().refine(isBoundedJsonValue).optional()
382
512
  }).readonly();
383
- var AssistantTextPartSchema = z3.object({
384
- kind: z3.literal("text"),
385
- text: z3.string().min(1).max(16384)
513
+ var AssistantTextPartSchema = z4.object({
514
+ kind: z4.literal("text"),
515
+ text: z4.string().min(1).max(16384)
386
516
  }).readonly();
387
- var AssistantComponentPartSchema = z3.object({
388
- kind: z3.literal("component"),
517
+ var AssistantComponentPartSchema = z4.object({
518
+ kind: z4.literal("component"),
389
519
  frame: ComponentRenderFrameSchema
390
520
  }).readonly();
391
- var AssistantContentPartSchema = z3.discriminatedUnion("kind", [AssistantTextPartSchema, AssistantComponentPartSchema]);
521
+ var AssistantContentPartSchema = z4.discriminatedUnion("kind", [AssistantTextPartSchema, AssistantComponentPartSchema]);
392
522
  var createAssistantContentEncoder = () => {
393
523
  let started = false;
394
524
  return {
@@ -510,63 +640,63 @@ var createInteractionEvent = (frame, event, value) => ComponentInteractionEventS
510
640
  event,
511
641
  ...value === void 0 ? {} : { value }
512
642
  });
513
- var TokenUsageSchema = z3.object({
514
- promptTokens: z3.number().int().nonnegative(),
515
- completionTokens: z3.number().int().nonnegative(),
516
- totalTokens: z3.number().int().nonnegative()
643
+ var TokenUsageSchema = z4.object({
644
+ promptTokens: z4.number().int().nonnegative(),
645
+ completionTokens: z4.number().int().nonnegative(),
646
+ totalTokens: z4.number().int().nonnegative()
517
647
  });
518
- var TurnDiagnosticSchema = z3.object({
519
- version: z3.literal(1),
520
- code: z3.string().regex(/^[A-Z][A-Z0-9_]*$/),
521
- message: z3.string().min(1),
522
- retryable: z3.boolean()
648
+ var TurnDiagnosticSchema = z4.object({
649
+ version: z4.literal(1),
650
+ code: z4.string().regex(/^[A-Z][A-Z0-9_]*$/),
651
+ message: z4.string().min(1),
652
+ retryable: z4.boolean()
523
653
  });
524
- var SafeIdentifierSchema2 = z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
654
+ var SafeIdentifierSchema3 = z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
525
655
  var EnvelopeFields = {
526
- protocol: z3.literal(TURN_PROTOCOL),
527
- version: z3.literal(TURN_PROTOCOL_VERSION),
528
- eventId: z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
529
- sessionId: z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
530
- turnId: z3.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
531
- sequence: z3.number().int().nonnegative(),
532
- emittedAt: z3.string().datetime({ offset: true })
656
+ protocol: z4.literal(TURN_PROTOCOL),
657
+ version: z4.literal(TURN_PROTOCOL_VERSION),
658
+ eventId: z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
659
+ sessionId: z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
660
+ turnId: z4.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
661
+ sequence: z4.number().int().nonnegative(),
662
+ emittedAt: z4.string().datetime({ offset: true })
533
663
  };
534
- var MemoryMessagesSchema = z3.array(z3.unknown()).transform((messages, context) => {
664
+ var MemoryMessagesSchema = z4.array(z4.unknown()).transform((messages, context) => {
535
665
  try {
536
666
  return validateMemoryRecord({ version: 1, messages }).messages;
537
667
  } catch {
538
668
  context.addIssue({ code: "custom", message: "Messages are not a valid AgentsKit memory record." });
539
- return z3.NEVER;
669
+ return z4.NEVER;
540
670
  }
541
671
  });
542
- var TurnLineageSchema = z3.discriminatedUnion("operation", [
543
- z3.object({ operation: z3.literal("submit") }),
544
- z3.object({ operation: z3.enum(["retry", "edit", "regenerate"]), parentTurnId: SafeIdentifierSchema2, sourceMessageId: SafeIdentifierSchema2 })
672
+ var TurnLineageSchema = z4.discriminatedUnion("operation", [
673
+ z4.object({ operation: z4.literal("submit") }),
674
+ z4.object({ operation: z4.enum(["retry", "edit", "regenerate"]), parentTurnId: SafeIdentifierSchema3, sourceMessageId: SafeIdentifierSchema3 })
545
675
  ]);
546
- var SubmitEventSchema = z3.object({
676
+ var SubmitEventSchema = z4.object({
547
677
  ...EnvelopeFields,
548
- event: z3.literal("client.turn.submit"),
549
- payload: z3.object({
550
- input: z3.string().min(1).refine((value) => value.trim().length > 0)
678
+ event: z4.literal("client.turn.submit"),
679
+ payload: z4.object({
680
+ input: z4.string().min(1).refine((value) => value.trim().length > 0)
551
681
  })
552
682
  });
553
- var SnapshotEventSchema = z3.object({
683
+ var SnapshotEventSchema = z4.object({
554
684
  ...EnvelopeFields,
555
- event: z3.literal("server.turn.snapshot"),
556
- payload: z3.object({
685
+ event: z4.literal("server.turn.snapshot"),
686
+ payload: z4.object({
557
687
  messages: MemoryMessagesSchema,
558
- status: z3.enum(["idle", "streaming", "complete", "error"]),
688
+ status: z4.enum(["idle", "streaming", "complete", "error"]),
559
689
  usage: TokenUsageSchema,
560
690
  error: TurnDiagnosticSchema.optional(),
561
691
  lineage: TurnLineageSchema.optional()
562
692
  })
563
693
  });
564
- var DiagnosticEventSchema = z3.object({
694
+ var DiagnosticEventSchema = z4.object({
565
695
  ...EnvelopeFields,
566
- event: z3.literal("server.turn.diagnostic"),
696
+ event: z4.literal("server.turn.diagnostic"),
567
697
  payload: TurnDiagnosticSchema
568
698
  });
569
- var TurnEventSchema = z3.discriminatedUnion("event", [
699
+ var TurnEventSchema = z4.discriminatedUnion("event", [
570
700
  SubmitEventSchema,
571
701
  SnapshotEventSchema,
572
702
  DiagnosticEventSchema
@@ -594,7 +724,7 @@ var createSnapshotEvent = (options) => SnapshotEventSchema.parse({
594
724
  }
595
725
  });
596
726
  var createTurnSnapshotCursor = (sessionId) => {
597
- const expectedSessionId = SafeIdentifierSchema2.parse(sessionId);
727
+ const expectedSessionId = SafeIdentifierSchema3.parse(sessionId);
598
728
  let snapshot;
599
729
  return {
600
730
  apply(input) {
@@ -612,7 +742,7 @@ var eventNames = /* @__PURE__ */ new Set(["client.turn.submit", "server.turn.sna
612
742
  var safeEventId = (input) => {
613
743
  try {
614
744
  if (!isRecord(input)) return void 0;
615
- const parsed = SafeIdentifierSchema2.safeParse(input.eventId);
745
+ const parsed = SafeIdentifierSchema3.safeParse(input.eventId);
616
746
  return parsed.success ? parsed.data : void 0;
617
747
  } catch {
618
748
  return void 0;
@@ -667,22 +797,22 @@ var snapshotMessages = (event) => {
667
797
  };
668
798
  var SESSION_PROTOCOL = "agentskit.chat.session";
669
799
  var SESSION_PROTOCOL_VERSION = 1;
670
- var SessionDecisionSchema = z3.object({
671
- messageId: SafeIdentifierSchema2,
672
- input: z3.string().max(16384),
673
- routeId: SafeIdentifierSchema2,
674
- kind: z3.enum(["deterministic", "repaired", "fallback"]),
675
- content: z3.string().max(65536),
676
- fromState: z3.string().min(1).max(128),
677
- toState: z3.string().min(1).max(128)
800
+ var SessionDecisionSchema = z4.object({
801
+ messageId: SafeIdentifierSchema3,
802
+ input: z4.string().max(16384),
803
+ routeId: SafeIdentifierSchema3,
804
+ kind: z4.enum(["deterministic", "repaired", "fallback"]),
805
+ content: z4.string().max(65536),
806
+ fromState: z4.string().min(1).max(128),
807
+ toState: z4.string().min(1).max(128)
678
808
  }).readonly();
679
- var SessionConfirmationSchema = z3.object({
680
- token: SafeIdentifierSchema2,
681
- action: SafeIdentifierSchema2,
682
- input: z3.record(z3.string(), z3.unknown()).refine(isBoundedJsonValue),
683
- toolCallId: SafeIdentifierSchema2,
684
- expiresAt: z3.number().int().nonnegative(),
685
- status: z3.enum(["pending", "approving", "rejecting", "expiring", "approved", "rejected", "expired"])
809
+ var SessionConfirmationSchema = z4.object({
810
+ token: SafeIdentifierSchema3,
811
+ action: SafeIdentifierSchema3,
812
+ input: z4.record(z4.string(), z4.unknown()).refine(isBoundedJsonValue),
813
+ toolCallId: SafeIdentifierSchema3,
814
+ expiresAt: z4.number().int().nonnegative(),
815
+ status: z4.enum(["pending", "approving", "rejecting", "expiring", "approved", "rejected", "expired"])
686
816
  }).readonly();
687
817
  var uniqueBy = (items, key, context, path) => {
688
818
  const seen = /* @__PURE__ */ new Set();
@@ -692,29 +822,29 @@ var uniqueBy = (items, key, context, path) => {
692
822
  seen.add(value);
693
823
  });
694
824
  };
695
- var SessionDecisionsSchema = z3.array(SessionDecisionSchema).max(1e3).superRefine((items, context) => uniqueBy(items, (item) => item.messageId, context, "messageId"));
696
- var SessionConfirmationsSchema = z3.array(SessionConfirmationSchema).max(1e3).superRefine((items, context) => {
825
+ var SessionDecisionsSchema = z4.array(SessionDecisionSchema).max(1e3).superRefine((items, context) => uniqueBy(items, (item) => item.messageId, context, "messageId"));
826
+ var SessionConfirmationsSchema = z4.array(SessionConfirmationSchema).max(1e3).superRefine((items, context) => {
697
827
  uniqueBy(items, (item) => item.token, context, "token");
698
828
  uniqueBy(items, (item) => item.toolCallId, context, "toolCallId");
699
829
  });
700
- var SessionSnapshotObjectSchema = z3.object({
701
- protocol: z3.literal(SESSION_PROTOCOL),
702
- version: z3.literal(SESSION_PROTOCOL_VERSION),
703
- sessionId: SafeIdentifierSchema2,
704
- definitionId: SafeIdentifierSchema2,
705
- definitionRevision: z3.number().int().positive(),
706
- updatedAt: z3.string().datetime({ offset: true }),
707
- cursor: z3.number().int().nonnegative(),
708
- activeTurn: z3.object({ turnId: SafeIdentifierSchema2, expiresAt: z3.number().int().nonnegative() }).readonly().optional(),
709
- terminalTurns: z3.array(z3.object({ turnId: SafeIdentifierSchema2, outcome: z3.enum(["completed", "indeterminate"]) }).readonly()).max(64).superRefine((items, context) => uniqueBy(items, (item) => item.turnId, context, "turnId")).readonly().optional(),
710
- conversation: z3.object({
711
- state: z3.string().min(1).max(128),
830
+ var SessionSnapshotObjectSchema = z4.object({
831
+ protocol: z4.literal(SESSION_PROTOCOL),
832
+ version: z4.literal(SESSION_PROTOCOL_VERSION),
833
+ sessionId: SafeIdentifierSchema3,
834
+ definitionId: SafeIdentifierSchema3,
835
+ definitionRevision: z4.number().int().positive(),
836
+ updatedAt: z4.string().datetime({ offset: true }),
837
+ cursor: z4.number().int().nonnegative(),
838
+ activeTurn: z4.object({ turnId: SafeIdentifierSchema3, expiresAt: z4.number().int().nonnegative() }).readonly().optional(),
839
+ terminalTurns: z4.array(z4.object({ turnId: SafeIdentifierSchema3, outcome: z4.enum(["completed", "indeterminate"]) }).readonly()).max(64).superRefine((items, context) => uniqueBy(items, (item) => item.turnId, context, "turnId")).readonly().optional(),
840
+ conversation: z4.object({
841
+ state: z4.string().min(1).max(128),
712
842
  decisions: SessionDecisionsSchema
713
843
  }).readonly().optional(),
714
844
  confirmations: SessionConfirmationsSchema
715
845
  });
716
846
  var SessionSnapshotSchema = SessionSnapshotObjectSchema.readonly();
717
- var LegacySessionSnapshotSchema = SessionSnapshotObjectSchema.omit({ protocol: true, version: true }).extend({ version: z3.literal(0) });
847
+ var LegacySessionSnapshotSchema = SessionSnapshotObjectSchema.omit({ protocol: true, version: true }).extend({ version: z4.literal(0) });
718
848
  var decodeSessionSnapshot = (input) => {
719
849
  let candidate = input;
720
850
  if (typeof input === "string") {
@@ -741,6 +871,11 @@ export {
741
871
  ANSWER_MAX_SUGGESTIONS,
742
872
  ANSWER_PROTOCOL,
743
873
  ANSWER_PROTOCOL_VERSION,
874
+ ASK_BACKEND_MAX_MESSAGES,
875
+ ASK_BACKEND_MAX_MESSAGE_CHARS,
876
+ ASK_BACKEND_MAX_SOURCES,
877
+ ASK_BACKEND_PROTOCOL,
878
+ ASK_BACKEND_PROTOCOL_VERSION,
744
879
  ASK_EVENT_MAX_BYTES,
745
880
  ASK_EVENT_MAX_RECORDS,
746
881
  ASK_SERVICE_PROTOCOL_VERSION,
@@ -753,6 +888,15 @@ export {
753
888
  AnswerConfidenceSchema,
754
889
  AnswerResponseSchema,
755
890
  AnswerSuggestionSchema,
891
+ AskBackendDiagnosticSchema,
892
+ AskBackendMessageSchema,
893
+ AskBackendMetricNameSchema,
894
+ AskBackendMetricSchema,
895
+ AskBackendRequestSchema,
896
+ AskBackendSessionRecordSchema,
897
+ AskBackendSiteConfigSchema,
898
+ AskBackendSourceSchema,
899
+ AskBackendUsageSchema,
756
900
  AskEventSchema,
757
901
  AssistantComponentPartSchema,
758
902
  AssistantContentPartSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentskit/chat-protocol",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Versioned turn protocol for AgentsKit Chat.",
5
5
  "license": "MIT",
6
6
  "repository": {