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 CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.195",
3
+ "version": "0.1.197",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -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;CAC9C,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;iBAUxC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;iBAQrC,CAAC;AAiBH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA+BpC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;EAmBlC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAgJ9B,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AA8WhE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA+BzD;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,GAAE;IACL,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,yBAAyB,CAQ3B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,yBAAyB,EAChC,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAoClB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,gBAAgB,CAWpF"}
1
+ {"version":3,"file":"ag-ui.d.ts","sourceRoot":"","sources":["../../../src/src/chat/ag-ui.ts"],"names":[],"mappings":"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"}
@@ -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";
@@ -4,4 +4,3 @@
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";
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.195";
1
+ export declare const VERSION = "0.1.197";
2
2
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.195";
3
+ export const VERSION = "0.1.197";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.195",
3
+ "version": "0.1.197",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
package/src/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.195",
3
+ "version": "0.1.197",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -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(frame: ParsedSseEvent): AgUiWireEvent | null {
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
  }
@@ -1,3 +1,3 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
- export const VERSION = "0.1.195";
3
+ export const VERSION = "0.1.197";