@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/README.md +5 -0
- package/dist/index.cjs +254 -96
- package/dist/index.d.cts +425 -1
- package/dist/index.d.ts +425 -1
- package/dist/index.js +240 -96
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,4 +13,9 @@ The package transports snapshots of canonical AgentsKit state. It does not imple
|
|
|
13
13
|
|
|
14
14
|
It also owns the accepted versioned site-config, local-knowledge, and unified-answer envelopes used by the deterministic answer plane. Decode untrusted data with `decodeDeterministicSiteConfig` and `decodeAnswerResponse`; cryptographically verify local artifacts with `verifyLocalKnowledgeArtifact`. See the [deterministic answer guide](../../docs/protocol/deterministic-answers.md).
|
|
15
15
|
|
|
16
|
+
The package also validates the additive Ask request, trusted backend site
|
|
17
|
+
configuration, grounded sources, CAS session records, typed diagnostics,
|
|
18
|
+
usage, and privacy-safe metrics used by `createAskServiceHandler`. See the
|
|
19
|
+
[backend guide](../../docs/backend.md).
|
|
20
|
+
|
|
16
21
|
For one canonical assistant message containing both streamed prose and registered application components, use `createAssistantContentEncoder` and decode with `decodeAssistantContent`. Every text chunk must pass through the encoder; raw model output must never be appended to the envelope. See the [v1 protocol guide](../../docs/protocol/v1.md#ordered-assistant-content).
|
package/dist/index.cjs
CHANGED
|
@@ -24,6 +24,11 @@ __export(index_exports, {
|
|
|
24
24
|
ANSWER_MAX_SUGGESTIONS: () => ANSWER_MAX_SUGGESTIONS,
|
|
25
25
|
ANSWER_PROTOCOL: () => ANSWER_PROTOCOL,
|
|
26
26
|
ANSWER_PROTOCOL_VERSION: () => ANSWER_PROTOCOL_VERSION,
|
|
27
|
+
ASK_BACKEND_MAX_MESSAGES: () => ASK_BACKEND_MAX_MESSAGES,
|
|
28
|
+
ASK_BACKEND_MAX_MESSAGE_CHARS: () => ASK_BACKEND_MAX_MESSAGE_CHARS,
|
|
29
|
+
ASK_BACKEND_MAX_SOURCES: () => ASK_BACKEND_MAX_SOURCES,
|
|
30
|
+
ASK_BACKEND_PROTOCOL: () => ASK_BACKEND_PROTOCOL,
|
|
31
|
+
ASK_BACKEND_PROTOCOL_VERSION: () => ASK_BACKEND_PROTOCOL_VERSION,
|
|
27
32
|
ASK_EVENT_MAX_BYTES: () => ASK_EVENT_MAX_BYTES,
|
|
28
33
|
ASK_EVENT_MAX_RECORDS: () => ASK_EVENT_MAX_RECORDS,
|
|
29
34
|
ASK_SERVICE_PROTOCOL_VERSION: () => ASK_SERVICE_PROTOCOL_VERSION,
|
|
@@ -36,6 +41,15 @@ __export(index_exports, {
|
|
|
36
41
|
AnswerConfidenceSchema: () => AnswerConfidenceSchema,
|
|
37
42
|
AnswerResponseSchema: () => AnswerResponseSchema,
|
|
38
43
|
AnswerSuggestionSchema: () => AnswerSuggestionSchema,
|
|
44
|
+
AskBackendDiagnosticSchema: () => AskBackendDiagnosticSchema,
|
|
45
|
+
AskBackendMessageSchema: () => AskBackendMessageSchema,
|
|
46
|
+
AskBackendMetricNameSchema: () => AskBackendMetricNameSchema,
|
|
47
|
+
AskBackendMetricSchema: () => AskBackendMetricSchema,
|
|
48
|
+
AskBackendRequestSchema: () => AskBackendRequestSchema,
|
|
49
|
+
AskBackendSessionRecordSchema: () => AskBackendSessionRecordSchema,
|
|
50
|
+
AskBackendSiteConfigSchema: () => AskBackendSiteConfigSchema,
|
|
51
|
+
AskBackendSourceSchema: () => AskBackendSourceSchema,
|
|
52
|
+
AskBackendUsageSchema: () => AskBackendUsageSchema,
|
|
39
53
|
AskEventSchema: () => AskEventSchema,
|
|
40
54
|
AssistantComponentPartSchema: () => AssistantComponentPartSchema,
|
|
41
55
|
AssistantContentPartSchema: () => AssistantContentPartSchema,
|
|
@@ -93,7 +107,7 @@ __export(index_exports, {
|
|
|
93
107
|
module.exports = __toCommonJS(index_exports);
|
|
94
108
|
var import_core = require("@agentskit/core");
|
|
95
109
|
var import_memory_validation = require("@agentskit/core/memory-validation");
|
|
96
|
-
var
|
|
110
|
+
var import_zod4 = require("zod");
|
|
97
111
|
|
|
98
112
|
// src/ask.ts
|
|
99
113
|
var import_zod = require("zod");
|
|
@@ -105,7 +119,12 @@ var AskEventSchema = import_zod.z.discriminatedUnion("type", [
|
|
|
105
119
|
import_zod.z.object({ type: import_zod.z.literal("text"), delta: import_zod.z.string().max(ASK_EVENT_MAX_BYTES) }).strict(),
|
|
106
120
|
import_zod.z.object({ type: import_zod.z.literal("tool"), id: import_zod.z.string().max(256), name: import_zod.z.string().max(128), args: AskArgsSchema }).strict(),
|
|
107
121
|
import_zod.z.object({ type: import_zod.z.literal("done"), model: import_zod.z.string().max(256).optional() }).strict(),
|
|
108
|
-
import_zod.z.object({
|
|
122
|
+
import_zod.z.object({
|
|
123
|
+
type: import_zod.z.literal("error"),
|
|
124
|
+
message: import_zod.z.string().min(1).max(4096),
|
|
125
|
+
code: import_zod.z.string().regex(/^[A-Z][A-Z0-9_]{0,127}$/).optional(),
|
|
126
|
+
retryable: import_zod.z.boolean().optional()
|
|
127
|
+
}).strict()
|
|
109
128
|
]);
|
|
110
129
|
var byteLength = (value) => new TextEncoder().encode(value).byteLength;
|
|
111
130
|
function decodeAskEvents(buffer) {
|
|
@@ -135,6 +154,9 @@ function decodeAskEvents(buffer) {
|
|
|
135
154
|
return { events: Object.freeze(events), rest: discardedPartial ? "" : partial, discardedPartial };
|
|
136
155
|
}
|
|
137
156
|
|
|
157
|
+
// src/backend.ts
|
|
158
|
+
var import_zod3 = require("zod");
|
|
159
|
+
|
|
138
160
|
// src/deterministic.ts
|
|
139
161
|
var import_sha2 = require("@noble/hashes/sha2.js");
|
|
140
162
|
var import_utils = require("@noble/hashes/utils.js");
|
|
@@ -405,6 +427,128 @@ var verifyLocalKnowledgeArtifactSync = (input, options) => {
|
|
|
405
427
|
var verifyLocalKnowledgeArtifact = async (input, options) => verifyLocalKnowledgeArtifactSync(input, options);
|
|
406
428
|
var decodeAnswerResponse = (input) => parseBoundedInput(input, AnswerResponseSchema, ANSWER_PROTOCOL, ANSWER_PROTOCOL_VERSION, 262144);
|
|
407
429
|
|
|
430
|
+
// src/backend.ts
|
|
431
|
+
var ASK_BACKEND_PROTOCOL = "agentskit.chat.ask";
|
|
432
|
+
var ASK_BACKEND_PROTOCOL_VERSION = 1;
|
|
433
|
+
var ASK_BACKEND_MAX_MESSAGES = 64;
|
|
434
|
+
var ASK_BACKEND_MAX_MESSAGE_CHARS = 16384;
|
|
435
|
+
var ASK_BACKEND_MAX_SOURCES = 8;
|
|
436
|
+
var SafeIdentifierSchema2 = import_zod3.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
|
|
437
|
+
var SafeLabelSchema = import_zod3.z.string().trim().min(1).max(256);
|
|
438
|
+
var SafeHrefSchema2 = import_zod3.z.string().min(1).max(2048).refine((value) => {
|
|
439
|
+
if (/[\u0000-\u001F\u007F\\]/u.test(value) || value.startsWith("//")) return false;
|
|
440
|
+
if (!/^[A-Za-z][A-Za-z0-9+.-]*:/.test(value)) return /^\/(?!\/)/.test(value);
|
|
441
|
+
try {
|
|
442
|
+
const url = new URL(value);
|
|
443
|
+
return (url.protocol === "http:" || url.protocol === "https:") && url.username === "" && url.password === "";
|
|
444
|
+
} catch {
|
|
445
|
+
return false;
|
|
446
|
+
}
|
|
447
|
+
}, "Source must use a safe relative, HTTP, or HTTPS URL.");
|
|
448
|
+
var AskBackendMessageSchema = import_zod3.z.object({
|
|
449
|
+
role: import_zod3.z.enum(["user", "assistant"]),
|
|
450
|
+
content: import_zod3.z.string().max(ASK_BACKEND_MAX_MESSAGE_CHARS)
|
|
451
|
+
}).strict().readonly();
|
|
452
|
+
var DeterministicEscalationSchema = AnswerResponseSchema.refine(
|
|
453
|
+
(value) => value.outcome === "escalation",
|
|
454
|
+
"Deterministic context must be an escalation."
|
|
455
|
+
);
|
|
456
|
+
var AskBackendRequestSchema = import_zod3.z.object({
|
|
457
|
+
protocol: import_zod3.z.literal(ASK_BACKEND_PROTOCOL).optional(),
|
|
458
|
+
version: import_zod3.z.literal(ASK_BACKEND_PROTOCOL_VERSION).optional(),
|
|
459
|
+
sessionId: SafeIdentifierSchema2.optional(),
|
|
460
|
+
messages: import_zod3.z.array(AskBackendMessageSchema).min(1).max(ASK_BACKEND_MAX_MESSAGES).readonly(),
|
|
461
|
+
deterministic: DeterministicEscalationSchema.optional()
|
|
462
|
+
}).strict().readonly();
|
|
463
|
+
var AskBackendSourceSchema = import_zod3.z.object({
|
|
464
|
+
id: SafeIdentifierSchema2,
|
|
465
|
+
title: SafeLabelSchema,
|
|
466
|
+
href: SafeHrefSchema2,
|
|
467
|
+
excerpt: import_zod3.z.string().trim().min(1).max(4096)
|
|
468
|
+
}).strict().readonly();
|
|
469
|
+
var AskBackendSiteConfigSchema = import_zod3.z.object({
|
|
470
|
+
protocol: import_zod3.z.literal("agentskit.chat.backend-site"),
|
|
471
|
+
version: import_zod3.z.literal(1),
|
|
472
|
+
siteId: SafeIdentifierSchema2,
|
|
473
|
+
assistant: import_zod3.z.object({
|
|
474
|
+
id: SafeIdentifierSchema2,
|
|
475
|
+
name: SafeLabelSchema,
|
|
476
|
+
suggestions: import_zod3.z.array(SafeLabelSchema).max(8).readonly()
|
|
477
|
+
}).strict().readonly(),
|
|
478
|
+
corpus: import_zod3.z.object({
|
|
479
|
+
id: SafeIdentifierSchema2,
|
|
480
|
+
mode: import_zod3.z.enum(["local", "federated"])
|
|
481
|
+
}).strict().readonly(),
|
|
482
|
+
components: import_zod3.z.array(SafeIdentifierSchema2).max(64).readonly(),
|
|
483
|
+
actions: import_zod3.z.array(SafeIdentifierSchema2).max(64).readonly(),
|
|
484
|
+
limits: import_zod3.z.object({
|
|
485
|
+
requestTimeoutMs: import_zod3.z.number().int().min(100).max(12e4),
|
|
486
|
+
retrievalTimeoutMs: import_zod3.z.number().int().min(100).max(6e4),
|
|
487
|
+
generationTimeoutMs: import_zod3.z.number().int().min(100).max(12e4),
|
|
488
|
+
maxSources: import_zod3.z.number().int().min(1).max(ASK_BACKEND_MAX_SOURCES)
|
|
489
|
+
}).strict().readonly(),
|
|
490
|
+
persistence: import_zod3.z.object({ mode: import_zod3.z.enum(["required", "disabled"]) }).strict().readonly()
|
|
491
|
+
}).strict().readonly();
|
|
492
|
+
var AskBackendUsageSchema = import_zod3.z.object({
|
|
493
|
+
inputTokens: import_zod3.z.number().int().nonnegative().optional(),
|
|
494
|
+
outputTokens: import_zod3.z.number().int().nonnegative().optional(),
|
|
495
|
+
totalTokens: import_zod3.z.number().int().nonnegative().optional(),
|
|
496
|
+
costUsd: import_zod3.z.number().nonnegative().finite().optional(),
|
|
497
|
+
model: import_zod3.z.string().trim().min(1).max(256).optional()
|
|
498
|
+
}).strict().readonly();
|
|
499
|
+
var AskBackendSessionRecordSchema = import_zod3.z.object({
|
|
500
|
+
revision: import_zod3.z.number().int().nonnegative(),
|
|
501
|
+
messages: import_zod3.z.array(AskBackendMessageSchema).max(ASK_BACKEND_MAX_MESSAGES).readonly()
|
|
502
|
+
}).strict().readonly();
|
|
503
|
+
var AskBackendDiagnosticSchema = import_zod3.z.object({
|
|
504
|
+
code: import_zod3.z.enum([
|
|
505
|
+
"ASK_INVALID_REQUEST",
|
|
506
|
+
"ASK_UNAUTHORIZED",
|
|
507
|
+
"ASK_FORBIDDEN",
|
|
508
|
+
"ASK_RATE_LIMITED",
|
|
509
|
+
"ASK_TIMEOUT",
|
|
510
|
+
"ASK_CANCELLED",
|
|
511
|
+
"ASK_RETRIEVAL_FAILED",
|
|
512
|
+
"ASK_NO_GROUNDED_SOURCES",
|
|
513
|
+
"ASK_GENERATION_FAILED",
|
|
514
|
+
"ASK_PERSISTENCE_CONFLICT",
|
|
515
|
+
"ASK_INTERNAL"
|
|
516
|
+
]),
|
|
517
|
+
message: import_zod3.z.string().trim().min(1).max(4096),
|
|
518
|
+
retryable: import_zod3.z.boolean()
|
|
519
|
+
}).strict().readonly();
|
|
520
|
+
var AskBackendMetricNameSchema = import_zod3.z.enum([
|
|
521
|
+
"request.total_ms",
|
|
522
|
+
"stream.first_event_ms",
|
|
523
|
+
"stream.first_token_ms",
|
|
524
|
+
"stream.bytes",
|
|
525
|
+
"stream.events",
|
|
526
|
+
"stream.snapshots",
|
|
527
|
+
"deterministic.fallback",
|
|
528
|
+
"retrieval.total_ms",
|
|
529
|
+
"retrieval.documents",
|
|
530
|
+
"persistence.total_ms",
|
|
531
|
+
"cancellation.count",
|
|
532
|
+
"conflict.count",
|
|
533
|
+
"error.count",
|
|
534
|
+
"usage.input_tokens",
|
|
535
|
+
"usage.output_tokens",
|
|
536
|
+
"usage.total_tokens",
|
|
537
|
+
"cost.usd"
|
|
538
|
+
]);
|
|
539
|
+
var AskBackendMetricSchema = import_zod3.z.object({
|
|
540
|
+
protocol: import_zod3.z.literal("agentskit.chat.backend-metric"),
|
|
541
|
+
version: import_zod3.z.literal(1),
|
|
542
|
+
name: AskBackendMetricNameSchema,
|
|
543
|
+
siteId: SafeIdentifierSchema2,
|
|
544
|
+
corpusId: SafeIdentifierSchema2,
|
|
545
|
+
requestId: SafeIdentifierSchema2,
|
|
546
|
+
value: import_zod3.z.number().finite().nonnegative(),
|
|
547
|
+
unit: import_zod3.z.enum(["ms", "bytes", "count", "tokens", "usd"]),
|
|
548
|
+
outcome: import_zod3.z.enum(["ok", "rejected", "cancelled", "error"]),
|
|
549
|
+
emittedAt: import_zod3.z.string().datetime({ offset: true })
|
|
550
|
+
}).strict().readonly();
|
|
551
|
+
|
|
408
552
|
// src/index.ts
|
|
409
553
|
var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
410
554
|
var isBoundedJsonValue = (input) => {
|
|
@@ -441,46 +585,46 @@ var ASSISTANT_CONTENT_PREFIX = `${ASSISTANT_CONTENT_PROTOCOL}/${ASSISTANT_CONTE
|
|
|
441
585
|
var ASSISTANT_CONTENT_PREFIX_ROOT = `${ASSISTANT_CONTENT_PROTOCOL}/`;
|
|
442
586
|
var ASSISTANT_CONTENT_MAX_BYTES = 262144;
|
|
443
587
|
var ASSISTANT_CONTENT_MAX_RECORDS = 512;
|
|
444
|
-
var ComponentKeySchema =
|
|
445
|
-
var ComponentFallbackSchema =
|
|
446
|
-
kind:
|
|
447
|
-
summary:
|
|
588
|
+
var ComponentKeySchema = import_zod4.z.string().regex(/^[a-z][a-z0-9-]{0,63}$/);
|
|
589
|
+
var ComponentFallbackSchema = import_zod4.z.object({
|
|
590
|
+
kind: import_zod4.z.string().min(1).max(64),
|
|
591
|
+
summary: import_zod4.z.string().min(1).max(4096)
|
|
448
592
|
}).readonly();
|
|
449
|
-
var ComponentRenderFrameSchema =
|
|
450
|
-
protocol:
|
|
451
|
-
version:
|
|
452
|
-
type:
|
|
593
|
+
var ComponentRenderFrameSchema = import_zod4.z.object({
|
|
594
|
+
protocol: import_zod4.z.literal(COMPONENT_PROTOCOL),
|
|
595
|
+
version: import_zod4.z.literal(COMPONENT_PROTOCOL_VERSION),
|
|
596
|
+
type: import_zod4.z.literal("render"),
|
|
453
597
|
componentKey: ComponentKeySchema,
|
|
454
|
-
instanceId:
|
|
455
|
-
props:
|
|
598
|
+
instanceId: import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
|
|
599
|
+
props: import_zod4.z.unknown().refine(isBoundedJsonValue),
|
|
456
600
|
fallback: ComponentFallbackSchema
|
|
457
601
|
}).readonly();
|
|
458
|
-
var ComponentSelectionEventSchema =
|
|
459
|
-
protocol:
|
|
460
|
-
version:
|
|
461
|
-
type:
|
|
602
|
+
var ComponentSelectionEventSchema = import_zod4.z.object({
|
|
603
|
+
protocol: import_zod4.z.literal(COMPONENT_PROTOCOL),
|
|
604
|
+
version: import_zod4.z.literal(COMPONENT_PROTOCOL_VERSION),
|
|
605
|
+
type: import_zod4.z.literal("select"),
|
|
462
606
|
componentKey: ComponentKeySchema,
|
|
463
|
-
instanceId:
|
|
464
|
-
choiceId:
|
|
607
|
+
instanceId: import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
|
|
608
|
+
choiceId: import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)
|
|
465
609
|
}).readonly();
|
|
466
|
-
var ComponentInteractionEventSchema =
|
|
467
|
-
protocol:
|
|
468
|
-
version:
|
|
469
|
-
type:
|
|
610
|
+
var ComponentInteractionEventSchema = import_zod4.z.object({
|
|
611
|
+
protocol: import_zod4.z.literal(COMPONENT_PROTOCOL),
|
|
612
|
+
version: import_zod4.z.literal(COMPONENT_PROTOCOL_VERSION),
|
|
613
|
+
type: import_zod4.z.literal("interact"),
|
|
470
614
|
componentKey: ComponentKeySchema,
|
|
471
|
-
instanceId:
|
|
472
|
-
event:
|
|
473
|
-
value:
|
|
615
|
+
instanceId: import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
|
|
616
|
+
event: import_zod4.z.string().regex(/^[a-z][a-z0-9-]{0,63}$/),
|
|
617
|
+
value: import_zod4.z.unknown().refine(isBoundedJsonValue).optional()
|
|
474
618
|
}).readonly();
|
|
475
|
-
var AssistantTextPartSchema =
|
|
476
|
-
kind:
|
|
477
|
-
text:
|
|
619
|
+
var AssistantTextPartSchema = import_zod4.z.object({
|
|
620
|
+
kind: import_zod4.z.literal("text"),
|
|
621
|
+
text: import_zod4.z.string().min(1).max(16384)
|
|
478
622
|
}).readonly();
|
|
479
|
-
var AssistantComponentPartSchema =
|
|
480
|
-
kind:
|
|
623
|
+
var AssistantComponentPartSchema = import_zod4.z.object({
|
|
624
|
+
kind: import_zod4.z.literal("component"),
|
|
481
625
|
frame: ComponentRenderFrameSchema
|
|
482
626
|
}).readonly();
|
|
483
|
-
var AssistantContentPartSchema =
|
|
627
|
+
var AssistantContentPartSchema = import_zod4.z.discriminatedUnion("kind", [AssistantTextPartSchema, AssistantComponentPartSchema]);
|
|
484
628
|
var createAssistantContentEncoder = () => {
|
|
485
629
|
let started = false;
|
|
486
630
|
return {
|
|
@@ -602,63 +746,63 @@ var createInteractionEvent = (frame, event, value) => ComponentInteractionEventS
|
|
|
602
746
|
event,
|
|
603
747
|
...value === void 0 ? {} : { value }
|
|
604
748
|
});
|
|
605
|
-
var TokenUsageSchema =
|
|
606
|
-
promptTokens:
|
|
607
|
-
completionTokens:
|
|
608
|
-
totalTokens:
|
|
749
|
+
var TokenUsageSchema = import_zod4.z.object({
|
|
750
|
+
promptTokens: import_zod4.z.number().int().nonnegative(),
|
|
751
|
+
completionTokens: import_zod4.z.number().int().nonnegative(),
|
|
752
|
+
totalTokens: import_zod4.z.number().int().nonnegative()
|
|
609
753
|
});
|
|
610
|
-
var TurnDiagnosticSchema =
|
|
611
|
-
version:
|
|
612
|
-
code:
|
|
613
|
-
message:
|
|
614
|
-
retryable:
|
|
754
|
+
var TurnDiagnosticSchema = import_zod4.z.object({
|
|
755
|
+
version: import_zod4.z.literal(1),
|
|
756
|
+
code: import_zod4.z.string().regex(/^[A-Z][A-Z0-9_]*$/),
|
|
757
|
+
message: import_zod4.z.string().min(1),
|
|
758
|
+
retryable: import_zod4.z.boolean()
|
|
615
759
|
});
|
|
616
|
-
var
|
|
760
|
+
var SafeIdentifierSchema3 = import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
|
|
617
761
|
var EnvelopeFields = {
|
|
618
|
-
protocol:
|
|
619
|
-
version:
|
|
620
|
-
eventId:
|
|
621
|
-
sessionId:
|
|
622
|
-
turnId:
|
|
623
|
-
sequence:
|
|
624
|
-
emittedAt:
|
|
762
|
+
protocol: import_zod4.z.literal(TURN_PROTOCOL),
|
|
763
|
+
version: import_zod4.z.literal(TURN_PROTOCOL_VERSION),
|
|
764
|
+
eventId: import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
|
|
765
|
+
sessionId: import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
|
|
766
|
+
turnId: import_zod4.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/),
|
|
767
|
+
sequence: import_zod4.z.number().int().nonnegative(),
|
|
768
|
+
emittedAt: import_zod4.z.string().datetime({ offset: true })
|
|
625
769
|
};
|
|
626
|
-
var MemoryMessagesSchema =
|
|
770
|
+
var MemoryMessagesSchema = import_zod4.z.array(import_zod4.z.unknown()).transform((messages, context) => {
|
|
627
771
|
try {
|
|
628
772
|
return (0, import_memory_validation.validateMemoryRecord)({ version: 1, messages }).messages;
|
|
629
773
|
} catch {
|
|
630
774
|
context.addIssue({ code: "custom", message: "Messages are not a valid AgentsKit memory record." });
|
|
631
|
-
return
|
|
775
|
+
return import_zod4.z.NEVER;
|
|
632
776
|
}
|
|
633
777
|
});
|
|
634
|
-
var TurnLineageSchema =
|
|
635
|
-
|
|
636
|
-
|
|
778
|
+
var TurnLineageSchema = import_zod4.z.discriminatedUnion("operation", [
|
|
779
|
+
import_zod4.z.object({ operation: import_zod4.z.literal("submit") }),
|
|
780
|
+
import_zod4.z.object({ operation: import_zod4.z.enum(["retry", "edit", "regenerate"]), parentTurnId: SafeIdentifierSchema3, sourceMessageId: SafeIdentifierSchema3 })
|
|
637
781
|
]);
|
|
638
|
-
var SubmitEventSchema =
|
|
782
|
+
var SubmitEventSchema = import_zod4.z.object({
|
|
639
783
|
...EnvelopeFields,
|
|
640
|
-
event:
|
|
641
|
-
payload:
|
|
642
|
-
input:
|
|
784
|
+
event: import_zod4.z.literal("client.turn.submit"),
|
|
785
|
+
payload: import_zod4.z.object({
|
|
786
|
+
input: import_zod4.z.string().min(1).refine((value) => value.trim().length > 0)
|
|
643
787
|
})
|
|
644
788
|
});
|
|
645
|
-
var SnapshotEventSchema =
|
|
789
|
+
var SnapshotEventSchema = import_zod4.z.object({
|
|
646
790
|
...EnvelopeFields,
|
|
647
|
-
event:
|
|
648
|
-
payload:
|
|
791
|
+
event: import_zod4.z.literal("server.turn.snapshot"),
|
|
792
|
+
payload: import_zod4.z.object({
|
|
649
793
|
messages: MemoryMessagesSchema,
|
|
650
|
-
status:
|
|
794
|
+
status: import_zod4.z.enum(["idle", "streaming", "complete", "error"]),
|
|
651
795
|
usage: TokenUsageSchema,
|
|
652
796
|
error: TurnDiagnosticSchema.optional(),
|
|
653
797
|
lineage: TurnLineageSchema.optional()
|
|
654
798
|
})
|
|
655
799
|
});
|
|
656
|
-
var DiagnosticEventSchema =
|
|
800
|
+
var DiagnosticEventSchema = import_zod4.z.object({
|
|
657
801
|
...EnvelopeFields,
|
|
658
|
-
event:
|
|
802
|
+
event: import_zod4.z.literal("server.turn.diagnostic"),
|
|
659
803
|
payload: TurnDiagnosticSchema
|
|
660
804
|
});
|
|
661
|
-
var TurnEventSchema =
|
|
805
|
+
var TurnEventSchema = import_zod4.z.discriminatedUnion("event", [
|
|
662
806
|
SubmitEventSchema,
|
|
663
807
|
SnapshotEventSchema,
|
|
664
808
|
DiagnosticEventSchema
|
|
@@ -686,7 +830,7 @@ var createSnapshotEvent = (options) => SnapshotEventSchema.parse({
|
|
|
686
830
|
}
|
|
687
831
|
});
|
|
688
832
|
var createTurnSnapshotCursor = (sessionId) => {
|
|
689
|
-
const expectedSessionId =
|
|
833
|
+
const expectedSessionId = SafeIdentifierSchema3.parse(sessionId);
|
|
690
834
|
let snapshot;
|
|
691
835
|
return {
|
|
692
836
|
apply(input) {
|
|
@@ -704,7 +848,7 @@ var eventNames = /* @__PURE__ */ new Set(["client.turn.submit", "server.turn.sna
|
|
|
704
848
|
var safeEventId = (input) => {
|
|
705
849
|
try {
|
|
706
850
|
if (!isRecord(input)) return void 0;
|
|
707
|
-
const parsed =
|
|
851
|
+
const parsed = SafeIdentifierSchema3.safeParse(input.eventId);
|
|
708
852
|
return parsed.success ? parsed.data : void 0;
|
|
709
853
|
} catch {
|
|
710
854
|
return void 0;
|
|
@@ -759,22 +903,22 @@ var snapshotMessages = (event) => {
|
|
|
759
903
|
};
|
|
760
904
|
var SESSION_PROTOCOL = "agentskit.chat.session";
|
|
761
905
|
var SESSION_PROTOCOL_VERSION = 1;
|
|
762
|
-
var SessionDecisionSchema =
|
|
763
|
-
messageId:
|
|
764
|
-
input:
|
|
765
|
-
routeId:
|
|
766
|
-
kind:
|
|
767
|
-
content:
|
|
768
|
-
fromState:
|
|
769
|
-
toState:
|
|
906
|
+
var SessionDecisionSchema = import_zod4.z.object({
|
|
907
|
+
messageId: SafeIdentifierSchema3,
|
|
908
|
+
input: import_zod4.z.string().max(16384),
|
|
909
|
+
routeId: SafeIdentifierSchema3,
|
|
910
|
+
kind: import_zod4.z.enum(["deterministic", "repaired", "fallback"]),
|
|
911
|
+
content: import_zod4.z.string().max(65536),
|
|
912
|
+
fromState: import_zod4.z.string().min(1).max(128),
|
|
913
|
+
toState: import_zod4.z.string().min(1).max(128)
|
|
770
914
|
}).readonly();
|
|
771
|
-
var SessionConfirmationSchema =
|
|
772
|
-
token:
|
|
773
|
-
action:
|
|
774
|
-
input:
|
|
775
|
-
toolCallId:
|
|
776
|
-
expiresAt:
|
|
777
|
-
status:
|
|
915
|
+
var SessionConfirmationSchema = import_zod4.z.object({
|
|
916
|
+
token: SafeIdentifierSchema3,
|
|
917
|
+
action: SafeIdentifierSchema3,
|
|
918
|
+
input: import_zod4.z.record(import_zod4.z.string(), import_zod4.z.unknown()).refine(isBoundedJsonValue),
|
|
919
|
+
toolCallId: SafeIdentifierSchema3,
|
|
920
|
+
expiresAt: import_zod4.z.number().int().nonnegative(),
|
|
921
|
+
status: import_zod4.z.enum(["pending", "approving", "rejecting", "expiring", "approved", "rejected", "expired"])
|
|
778
922
|
}).readonly();
|
|
779
923
|
var uniqueBy = (items, key, context, path) => {
|
|
780
924
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -784,29 +928,29 @@ var uniqueBy = (items, key, context, path) => {
|
|
|
784
928
|
seen.add(value);
|
|
785
929
|
});
|
|
786
930
|
};
|
|
787
|
-
var SessionDecisionsSchema =
|
|
788
|
-
var SessionConfirmationsSchema =
|
|
931
|
+
var SessionDecisionsSchema = import_zod4.z.array(SessionDecisionSchema).max(1e3).superRefine((items, context) => uniqueBy(items, (item) => item.messageId, context, "messageId"));
|
|
932
|
+
var SessionConfirmationsSchema = import_zod4.z.array(SessionConfirmationSchema).max(1e3).superRefine((items, context) => {
|
|
789
933
|
uniqueBy(items, (item) => item.token, context, "token");
|
|
790
934
|
uniqueBy(items, (item) => item.toolCallId, context, "toolCallId");
|
|
791
935
|
});
|
|
792
|
-
var SessionSnapshotObjectSchema =
|
|
793
|
-
protocol:
|
|
794
|
-
version:
|
|
795
|
-
sessionId:
|
|
796
|
-
definitionId:
|
|
797
|
-
definitionRevision:
|
|
798
|
-
updatedAt:
|
|
799
|
-
cursor:
|
|
800
|
-
activeTurn:
|
|
801
|
-
terminalTurns:
|
|
802
|
-
conversation:
|
|
803
|
-
state:
|
|
936
|
+
var SessionSnapshotObjectSchema = import_zod4.z.object({
|
|
937
|
+
protocol: import_zod4.z.literal(SESSION_PROTOCOL),
|
|
938
|
+
version: import_zod4.z.literal(SESSION_PROTOCOL_VERSION),
|
|
939
|
+
sessionId: SafeIdentifierSchema3,
|
|
940
|
+
definitionId: SafeIdentifierSchema3,
|
|
941
|
+
definitionRevision: import_zod4.z.number().int().positive(),
|
|
942
|
+
updatedAt: import_zod4.z.string().datetime({ offset: true }),
|
|
943
|
+
cursor: import_zod4.z.number().int().nonnegative(),
|
|
944
|
+
activeTurn: import_zod4.z.object({ turnId: SafeIdentifierSchema3, expiresAt: import_zod4.z.number().int().nonnegative() }).readonly().optional(),
|
|
945
|
+
terminalTurns: import_zod4.z.array(import_zod4.z.object({ turnId: SafeIdentifierSchema3, outcome: import_zod4.z.enum(["completed", "indeterminate"]) }).readonly()).max(64).superRefine((items, context) => uniqueBy(items, (item) => item.turnId, context, "turnId")).readonly().optional(),
|
|
946
|
+
conversation: import_zod4.z.object({
|
|
947
|
+
state: import_zod4.z.string().min(1).max(128),
|
|
804
948
|
decisions: SessionDecisionsSchema
|
|
805
949
|
}).readonly().optional(),
|
|
806
950
|
confirmations: SessionConfirmationsSchema
|
|
807
951
|
});
|
|
808
952
|
var SessionSnapshotSchema = SessionSnapshotObjectSchema.readonly();
|
|
809
|
-
var LegacySessionSnapshotSchema = SessionSnapshotObjectSchema.omit({ protocol: true, version: true }).extend({ version:
|
|
953
|
+
var LegacySessionSnapshotSchema = SessionSnapshotObjectSchema.omit({ protocol: true, version: true }).extend({ version: import_zod4.z.literal(0) });
|
|
810
954
|
var decodeSessionSnapshot = (input) => {
|
|
811
955
|
let candidate = input;
|
|
812
956
|
if (typeof input === "string") {
|
|
@@ -834,6 +978,11 @@ var decodeSessionSnapshot = (input) => {
|
|
|
834
978
|
ANSWER_MAX_SUGGESTIONS,
|
|
835
979
|
ANSWER_PROTOCOL,
|
|
836
980
|
ANSWER_PROTOCOL_VERSION,
|
|
981
|
+
ASK_BACKEND_MAX_MESSAGES,
|
|
982
|
+
ASK_BACKEND_MAX_MESSAGE_CHARS,
|
|
983
|
+
ASK_BACKEND_MAX_SOURCES,
|
|
984
|
+
ASK_BACKEND_PROTOCOL,
|
|
985
|
+
ASK_BACKEND_PROTOCOL_VERSION,
|
|
837
986
|
ASK_EVENT_MAX_BYTES,
|
|
838
987
|
ASK_EVENT_MAX_RECORDS,
|
|
839
988
|
ASK_SERVICE_PROTOCOL_VERSION,
|
|
@@ -846,6 +995,15 @@ var decodeSessionSnapshot = (input) => {
|
|
|
846
995
|
AnswerConfidenceSchema,
|
|
847
996
|
AnswerResponseSchema,
|
|
848
997
|
AnswerSuggestionSchema,
|
|
998
|
+
AskBackendDiagnosticSchema,
|
|
999
|
+
AskBackendMessageSchema,
|
|
1000
|
+
AskBackendMetricNameSchema,
|
|
1001
|
+
AskBackendMetricSchema,
|
|
1002
|
+
AskBackendRequestSchema,
|
|
1003
|
+
AskBackendSessionRecordSchema,
|
|
1004
|
+
AskBackendSiteConfigSchema,
|
|
1005
|
+
AskBackendSourceSchema,
|
|
1006
|
+
AskBackendUsageSchema,
|
|
849
1007
|
AskEventSchema,
|
|
850
1008
|
AssistantComponentPartSchema,
|
|
851
1009
|
AssistantContentPartSchema,
|