veryfront 0.1.195 → 0.1.197
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/esm/deno.js +1 -1
- package/esm/src/chat/ag-ui.d.ts +11 -1
- package/esm/src/chat/ag-ui.d.ts.map +1 -1
- package/esm/src/chat/ag-ui.js +14 -3
- package/esm/src/chat/protocol.d.ts +0 -1
- package/esm/src/chat/protocol.js +0 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
- package/src/deno.js +1 -1
- package/src/src/chat/ag-ui.ts +27 -2
- package/src/src/utils/version-constant.ts +1 -1
package/esm/deno.js
CHANGED
package/esm/src/chat/ag-ui.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "../../_dnt.polyfills.js";
|
|
2
1
|
import type { ChatStreamEvent } from "./protocol.js";
|
|
3
2
|
import { z } from "zod";
|
|
4
3
|
type ToolCallState = {
|
|
@@ -19,12 +18,18 @@ export type AgUiDecodedChunk = {
|
|
|
19
18
|
events: AgUiDecodedEvent[];
|
|
20
19
|
remainder: string;
|
|
21
20
|
};
|
|
21
|
+
export type AgUiDecoderValidationMode = "permissive" | "strict";
|
|
22
22
|
export type AgUiChatEventDecoderState = {
|
|
23
23
|
remainder: string;
|
|
24
24
|
lastEventId: number;
|
|
25
25
|
toolCalls: Map<string, ToolCallState>;
|
|
26
26
|
reasoningFallbackIndex: number;
|
|
27
27
|
activeFallbackReasoningPartId: string | null;
|
|
28
|
+
validationMode: AgUiDecoderValidationMode;
|
|
29
|
+
onInvalidJson: ((details: {
|
|
30
|
+
eventName: string | null;
|
|
31
|
+
dataLength: number;
|
|
32
|
+
}) => void) | null;
|
|
28
33
|
};
|
|
29
34
|
export declare const AgUiRunFinishedMetadataSchema: z.ZodObject<{
|
|
30
35
|
provider: z.ZodOptional<z.ZodString>;
|
|
@@ -300,6 +305,11 @@ export type AgUiWireEvent = z.infer<typeof AgUiWireEventSchema>;
|
|
|
300
305
|
export declare function parseSseEvent(raw: string): ParsedSseEvent;
|
|
301
306
|
export declare function createAgUiChatEventDecoderState(input?: {
|
|
302
307
|
lastEventId?: number;
|
|
308
|
+
validationMode?: AgUiDecoderValidationMode;
|
|
309
|
+
onInvalidJson?: (details: {
|
|
310
|
+
eventName: string | null;
|
|
311
|
+
dataLength: number;
|
|
312
|
+
}) => void;
|
|
303
313
|
}): AgUiChatEventDecoderState;
|
|
304
314
|
export declare function decodeAgUiSseChunk(state: AgUiChatEventDecoderState, chunk: string): AgUiDecodedChunk;
|
|
305
315
|
export declare function flushAgUiSseChunk(state: AgUiChatEventDecoderState): AgUiDecodedChunk;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ag-ui.d.ts","sourceRoot":"","sources":["../../../src/src/chat/ag-ui.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,6BAA6B,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ag-ui.d.ts","sourceRoot":"","sources":["../../../src/src/chat/ag-ui.ts"],"names":[],"mappings":"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"}
|
package/esm/src/chat/ag-ui.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "../../_dnt.polyfills.js";
|
|
2
1
|
import { mergeToolInputDelta, parseToolInputObject } from "../agent/data-stream.js";
|
|
3
2
|
import { z } from "zod";
|
|
4
3
|
export const AgUiRunFinishedMetadataSchema = z.object({
|
|
@@ -362,7 +361,7 @@ function isCommentOnlySseFrame(raw) {
|
|
|
362
361
|
.split("\n")
|
|
363
362
|
.every((line) => line.trim().length === 0 || line.trimStart().startsWith(":"));
|
|
364
363
|
}
|
|
365
|
-
function parseAgUiWireEvent(frame) {
|
|
364
|
+
function parseAgUiWireEvent(frame, input) {
|
|
366
365
|
if (frame.data === "[DONE]" || !frame.event || !frame.data) {
|
|
367
366
|
return null;
|
|
368
367
|
}
|
|
@@ -375,6 +374,10 @@ function parseAgUiWireEvent(frame) {
|
|
|
375
374
|
payload = JSON.parse(frame.data);
|
|
376
375
|
}
|
|
377
376
|
catch {
|
|
377
|
+
input.onInvalidJson?.({
|
|
378
|
+
eventName: frame.event,
|
|
379
|
+
dataLength: frame.data.length,
|
|
380
|
+
});
|
|
378
381
|
return null;
|
|
379
382
|
}
|
|
380
383
|
if (!isRecord(payload)) {
|
|
@@ -384,6 +387,9 @@ function parseAgUiWireEvent(frame) {
|
|
|
384
387
|
eventName: eventName.data,
|
|
385
388
|
payload,
|
|
386
389
|
});
|
|
390
|
+
if (!parsed.success && input.validationMode === "strict") {
|
|
391
|
+
throw new Error(`Malformed AG-UI event payload for ${eventName.data}`);
|
|
392
|
+
}
|
|
387
393
|
return parsed.success ? parsed.data : null;
|
|
388
394
|
}
|
|
389
395
|
function mapWireEventToChatEvents(state, wireEvent) {
|
|
@@ -564,6 +570,8 @@ export function createAgUiChatEventDecoderState(input = {}) {
|
|
|
564
570
|
toolCalls: new Map(),
|
|
565
571
|
reasoningFallbackIndex: 0,
|
|
566
572
|
activeFallbackReasoningPartId: null,
|
|
573
|
+
validationMode: input.validationMode ?? "permissive",
|
|
574
|
+
onInvalidJson: input.onInvalidJson ?? null,
|
|
567
575
|
};
|
|
568
576
|
}
|
|
569
577
|
export function decodeAgUiSseChunk(state, chunk) {
|
|
@@ -582,7 +590,10 @@ export function decodeAgUiSseChunk(state, chunk) {
|
|
|
582
590
|
}
|
|
583
591
|
state.lastEventId = frame.id;
|
|
584
592
|
}
|
|
585
|
-
const wireEvent = parseAgUiWireEvent(frame
|
|
593
|
+
const wireEvent = parseAgUiWireEvent(frame, {
|
|
594
|
+
validationMode: state.validationMode,
|
|
595
|
+
onInvalidJson: state.onInvalidJson,
|
|
596
|
+
});
|
|
586
597
|
if (!wireEvent) {
|
|
587
598
|
continue;
|
|
588
599
|
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* These types describe the framework-owned message parts and stream events used
|
|
5
5
|
* by AG-UI-aligned chat clients, hooks, and adapters.
|
|
6
6
|
*/
|
|
7
|
-
import "../../_dnt.polyfills.js";
|
|
8
7
|
export type ChatPartState = "streaming" | "done";
|
|
9
8
|
export interface ChatTextPart {
|
|
10
9
|
type: "text";
|
package/esm/src/chat/protocol.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.197";
|
|
2
2
|
//# sourceMappingURL=version-constant.d.ts.map
|
package/package.json
CHANGED
package/src/deno.js
CHANGED
package/src/src/chat/ag-ui.ts
CHANGED
|
@@ -37,12 +37,16 @@ export type AgUiDecodedChunk = {
|
|
|
37
37
|
remainder: string;
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
+
export type AgUiDecoderValidationMode = "permissive" | "strict";
|
|
41
|
+
|
|
40
42
|
export type AgUiChatEventDecoderState = {
|
|
41
43
|
remainder: string;
|
|
42
44
|
lastEventId: number;
|
|
43
45
|
toolCalls: Map<string, ToolCallState>;
|
|
44
46
|
reasoningFallbackIndex: number;
|
|
45
47
|
activeFallbackReasoningPartId: string | null;
|
|
48
|
+
validationMode: AgUiDecoderValidationMode;
|
|
49
|
+
onInvalidJson: ((details: { eventName: string | null; dataLength: number }) => void) | null;
|
|
46
50
|
};
|
|
47
51
|
|
|
48
52
|
export const AgUiRunFinishedMetadataSchema = z.object({
|
|
@@ -449,7 +453,13 @@ function isCommentOnlySseFrame(raw: string): boolean {
|
|
|
449
453
|
.every((line) => line.trim().length === 0 || line.trimStart().startsWith(":"));
|
|
450
454
|
}
|
|
451
455
|
|
|
452
|
-
function parseAgUiWireEvent(
|
|
456
|
+
function parseAgUiWireEvent(
|
|
457
|
+
frame: ParsedSseEvent,
|
|
458
|
+
input: {
|
|
459
|
+
validationMode: AgUiDecoderValidationMode;
|
|
460
|
+
onInvalidJson: ((details: { eventName: string | null; dataLength: number }) => void) | null;
|
|
461
|
+
},
|
|
462
|
+
): AgUiWireEvent | null {
|
|
453
463
|
if (frame.data === "[DONE]" || !frame.event || !frame.data) {
|
|
454
464
|
return null;
|
|
455
465
|
}
|
|
@@ -463,6 +473,10 @@ function parseAgUiWireEvent(frame: ParsedSseEvent): AgUiWireEvent | null {
|
|
|
463
473
|
try {
|
|
464
474
|
payload = JSON.parse(frame.data);
|
|
465
475
|
} catch {
|
|
476
|
+
input.onInvalidJson?.({
|
|
477
|
+
eventName: frame.event,
|
|
478
|
+
dataLength: frame.data.length,
|
|
479
|
+
});
|
|
466
480
|
return null;
|
|
467
481
|
}
|
|
468
482
|
|
|
@@ -475,6 +489,10 @@ function parseAgUiWireEvent(frame: ParsedSseEvent): AgUiWireEvent | null {
|
|
|
475
489
|
payload,
|
|
476
490
|
});
|
|
477
491
|
|
|
492
|
+
if (!parsed.success && input.validationMode === "strict") {
|
|
493
|
+
throw new Error(`Malformed AG-UI event payload for ${eventName.data}`);
|
|
494
|
+
}
|
|
495
|
+
|
|
478
496
|
return parsed.success ? parsed.data : null;
|
|
479
497
|
}
|
|
480
498
|
|
|
@@ -687,6 +705,8 @@ export function parseSseEvent(raw: string): ParsedSseEvent {
|
|
|
687
705
|
export function createAgUiChatEventDecoderState(
|
|
688
706
|
input: {
|
|
689
707
|
lastEventId?: number;
|
|
708
|
+
validationMode?: AgUiDecoderValidationMode;
|
|
709
|
+
onInvalidJson?: (details: { eventName: string | null; dataLength: number }) => void;
|
|
690
710
|
} = {},
|
|
691
711
|
): AgUiChatEventDecoderState {
|
|
692
712
|
return {
|
|
@@ -695,6 +715,8 @@ export function createAgUiChatEventDecoderState(
|
|
|
695
715
|
toolCalls: new Map<string, ToolCallState>(),
|
|
696
716
|
reasoningFallbackIndex: 0,
|
|
697
717
|
activeFallbackReasoningPartId: null,
|
|
718
|
+
validationMode: input.validationMode ?? "permissive",
|
|
719
|
+
onInvalidJson: input.onInvalidJson ?? null,
|
|
698
720
|
};
|
|
699
721
|
}
|
|
700
722
|
|
|
@@ -721,7 +743,10 @@ export function decodeAgUiSseChunk(
|
|
|
721
743
|
state.lastEventId = frame.id;
|
|
722
744
|
}
|
|
723
745
|
|
|
724
|
-
const wireEvent = parseAgUiWireEvent(frame
|
|
746
|
+
const wireEvent = parseAgUiWireEvent(frame, {
|
|
747
|
+
validationMode: state.validationMode,
|
|
748
|
+
onInvalidJson: state.onInvalidJson,
|
|
749
|
+
});
|
|
725
750
|
if (!wireEvent) {
|
|
726
751
|
continue;
|
|
727
752
|
}
|