veryfront 0.1.202 → 0.1.205

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.202",
3
+ "version": "0.1.205",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -1 +1 @@
1
- {"version":3,"file":"ag-ui-browser-encoder.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;AAuND,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CAyM3B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
1
+ {"version":3,"file":"ag-ui-browser-encoder.d.ts","sourceRoot":"","sources":["../../../src/src/agent/ag-ui-browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAYvE;AAuND,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CA6M3B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
@@ -253,13 +253,17 @@ export function mapRuntimeStreamEventToAgUiBrowserEvents(state, event) {
253
253
  if (typeof event.toolCallId === "string") {
254
254
  state.streamedToolInputIds.add(event.toolCallId);
255
255
  }
256
- return [{
256
+ return [
257
+ ...closeOpenTextEvent(state),
258
+ ...closeOpenReasoningEvent(state),
259
+ {
257
260
  event: "ToolCallArgs",
258
261
  payload: {
259
262
  toolCallId: event.toolCallId,
260
263
  delta: typeof event.inputTextDelta === "string" ? event.inputTextDelta : "",
261
264
  },
262
- }];
265
+ },
266
+ ];
263
267
  case "tool-input-available": {
264
268
  state.sawVisibleOutput = true;
265
269
  return [
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import { type AgentConfig, type AgentResponse, type Message, type ToolCall, type ToolResultPart } from "../types.js";
14
14
  import { type Memory } from "../memory/index.js";
15
- import { type ChatStreamState, type StreamingToolResult } from "./chat-stream-handler.js";
15
+ import { type ChatStreamState, type StreamingToolCall, type StreamingToolResult } from "./chat-stream-handler.js";
16
16
  export { closeSSEStream, generateMessageId, sendSSE } from "./sse-utils.js";
17
17
  export { RunAlreadyExistsError, RunCancelledError, RunNotActiveError, RunResumeSessionManager, WaitConflictError, WaitNotPendingError, } from "./resume-session.js";
18
18
  export type { RunResumeSessionManagerOptions, RunSessionStatus, SubmitResumeValueOutcome, } from "./resume-session.js";
@@ -26,6 +26,11 @@ import type { RuntimeGenerateToolResult } from "./runtime-tool-types.js";
26
26
  export declare function collectFinalStreamToolResults(state: Pick<ChatStreamState, "toolResults">): Map<string, StreamingToolResult>;
27
27
  export declare function collectPersistedToolResults(messages: Message[]): Map<string, ToolResultPart>;
28
28
  export declare function collectGeneratedToolResults(toolResults: RuntimeGenerateToolResult[] | undefined): Map<string, RuntimeGenerateToolResult>;
29
+ export declare function captureStreamedToolCallInput(toolCall: Pick<StreamingToolCall, "arguments">): {
30
+ args: Record<string, unknown>;
31
+ inputText?: string;
32
+ parseError?: string;
33
+ };
29
34
  /**
30
35
  * Extract and validate the skill policy from a load-skill tool result.
31
36
  * Returns `[]` (no tools allowed) for invalid/missing policies instead of
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"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"}
@@ -91,6 +91,14 @@ export function collectGeneratedToolResults(toolResults) {
91
91
  }
92
92
  return generatedToolResults;
93
93
  }
94
+ export function captureStreamedToolCallInput(toolCall) {
95
+ const { args, error } = parseToolArgs(toolCall.arguments);
96
+ return {
97
+ args,
98
+ ...(toolCall.arguments.length > 0 ? { inputText: toolCall.arguments } : {}),
99
+ ...(error ? { parseError: error } : {}),
100
+ };
101
+ }
94
102
  function isToolResultPart(part) {
95
103
  return part.type === "tool-result" && "result" in part;
96
104
  }
@@ -641,18 +649,19 @@ export class AgentRuntime {
641
649
  if (state.accumulatedText)
642
650
  streamParts.push({ type: "text", text: state.accumulatedText });
643
651
  for (const tc of state.toolCalls.values()) {
644
- const { args, error } = parseToolArgs(tc.arguments);
645
- if (error) {
652
+ const capturedInput = captureStreamedToolCallInput(tc);
653
+ if (capturedInput.parseError) {
646
654
  logger.warn("Failed to parse streamed tool arguments", {
647
655
  toolCallId: tc.id,
648
- error,
656
+ error: capturedInput.parseError,
649
657
  });
650
658
  }
651
659
  streamParts.push({
652
660
  type: `tool-${tc.name}`,
653
661
  toolCallId: tc.id,
654
662
  toolName: tc.name,
655
- args,
663
+ args: capturedInput.args,
664
+ ...(capturedInput.inputText ? { inputText: capturedInput.inputText } : {}),
656
665
  });
657
666
  }
658
667
  const assistantMessage = {
@@ -702,8 +711,14 @@ export class AgentRuntime {
702
711
  streamedToolCalls.some((tc) => tc.name === LOAD_SKILL_TOOL_ID);
703
712
  for (const tc of streamedToolCalls) {
704
713
  throwIfAborted(abortSignal);
705
- const { args, error: argError } = parseToolArgs(tc.arguments);
706
- const toolCall = { id: tc.id, name: tc.name, args, status: "pending" };
714
+ const capturedInput = captureStreamedToolCallInput(tc);
715
+ const toolCall = {
716
+ id: tc.id,
717
+ name: tc.name,
718
+ args: capturedInput.args,
719
+ ...(capturedInput.inputText ? { inputText: capturedInput.inputText } : {}),
720
+ status: "pending",
721
+ };
707
722
  const matchingResult = finalToolResults.get(tc.id);
708
723
  const persistedResult = currentStepToolResults.get(tc.id);
709
724
  if (matchingResult) {
@@ -724,19 +739,19 @@ export class AgentRuntime {
724
739
  toolCalls.push(toolCall);
725
740
  continue;
726
741
  }
727
- if (argError) {
742
+ if (capturedInput.parseError) {
728
743
  logger.warn("Invalid streamed tool arguments", {
729
744
  toolCallId: tc.id,
730
- error: argError,
745
+ error: capturedInput.parseError,
731
746
  });
732
747
  const dynamic = isDynamicTool(tc.name);
733
748
  sendSSE(controller, encoder, {
734
749
  type: "tool-input-error",
735
750
  toolCallId: tc.id,
736
- errorText: `Invalid tool arguments: ${argError}`,
751
+ errorText: `Invalid tool arguments: ${capturedInput.parseError}`,
737
752
  ...(dynamic ? { dynamic: true } : {}),
738
753
  });
739
- await this.recordToolError(toolCall, `Invalid tool arguments: ${argError}`, controller, encoder, currentMessages, toolCalls);
754
+ await this.recordToolError(toolCall, `Invalid tool arguments: ${capturedInput.parseError}`, controller, encoder, currentMessages, toolCalls);
740
755
  continue;
741
756
  }
742
757
  const policyCheck = enforceSkillPolicy(tc.name, activeSkillPolicy, mustLoadSkillFirst);
@@ -1 +1 @@
1
- {"version":3,"file":"resume-session.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/resume-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAClD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5F,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,SAAkB;CAItC;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI3C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI3C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AA2BD,MAAM,WAAW,8BAA8B,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,YAAY,CAAC;IACrC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;CACvC;AAMD,qBAAa,uBAAuB,CAAC,CAAC;IAIlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAG1C,OAAO,GAAE,8BAA8B,CAAC,CAAC,CAAM;IAGlE,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,eAAe;IAWvB,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IA4BjE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAiBhD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAuD/D,YAAY,CACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,GACnC,wBAAwB;IA+C3B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAkBjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIpD,KAAK,IAAI,IAAI;CAOd"}
1
+ {"version":3,"file":"resume-session.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/resume-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAClD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5F,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,SAAkB;CAItC;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI3C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI3C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AA2BD,MAAM,WAAW,8BAA8B,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,YAAY,CAAC;IACrC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;CACvC;AAMD,qBAAa,uBAAuB,CAAC,CAAC;IAIlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAG1C,OAAO,GAAE,8BAA8B,CAAC,CAAC,CAAM;IAGlE,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,eAAe;IAWvB,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IA4BjE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAiBhD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAuD/D,YAAY,CACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,GACnC,wBAAwB;IA+C3B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAsBjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIpD,KAAK,IAAI,IAAI;CAOd"}
@@ -224,7 +224,11 @@ export class RunResumeSessionManager {
224
224
  return false;
225
225
  }
226
226
  const waitingState = session.waitingState;
227
- session.abortController.abort(new RunCancelledError());
227
+ // Abort with an AbortError-shaped DOMException so provider SDK fetch
228
+ // consumers treat it as cancellation and don't surface unhandled
229
+ // rejections. The waiting-state reject path keeps RunCancelledError
230
+ // so callers can still `instanceof` it.
231
+ session.abortController.abort(new DOMException("Run cancelled", "AbortError"));
228
232
  waitingState?.reject(new RunCancelledError());
229
233
  this.finalizeSession(session, "cancelled");
230
234
  return true;
@@ -34,23 +34,27 @@ export declare const ToolCallPartWithArgsSchema: z.ZodObject<{
34
34
  toolCallId: z.ZodString;
35
35
  toolName: z.ZodString;
36
36
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
37
+ inputText: z.ZodOptional<z.ZodString>;
37
38
  }, z.core.$strip>;
38
39
  export declare const ToolCallPartWithInputSchema: z.ZodObject<{
39
40
  type: z.ZodString;
40
41
  toolCallId: z.ZodString;
41
42
  toolName: z.ZodString;
42
43
  input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
44
+ inputText: z.ZodOptional<z.ZodString>;
43
45
  }, z.core.$strip>;
44
46
  export declare const ToolCallPartSchema: z.ZodUnion<readonly [z.ZodObject<{
45
47
  type: z.ZodString;
46
48
  toolCallId: z.ZodString;
47
49
  toolName: z.ZodString;
48
50
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
51
+ inputText: z.ZodOptional<z.ZodString>;
49
52
  }, z.core.$strip>, z.ZodObject<{
50
53
  type: z.ZodString;
51
54
  toolCallId: z.ZodString;
52
55
  toolName: z.ZodString;
53
56
  input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
57
+ inputText: z.ZodOptional<z.ZodString>;
54
58
  }, z.core.$strip>]>;
55
59
  export declare const ToolResultPartSchema: z.ZodObject<{
56
60
  type: z.ZodLiteral<"tool-result">;
@@ -66,11 +70,13 @@ export declare const MessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
66
70
  toolCallId: z.ZodString;
67
71
  toolName: z.ZodString;
68
72
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
73
+ inputText: z.ZodOptional<z.ZodString>;
69
74
  }, z.core.$strip>, z.ZodObject<{
70
75
  type: z.ZodString;
71
76
  toolCallId: z.ZodString;
72
77
  toolName: z.ZodString;
73
78
  input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
79
+ inputText: z.ZodOptional<z.ZodString>;
74
80
  }, z.core.$strip>]>, z.ZodObject<{
75
81
  type: z.ZodLiteral<"tool-call">;
76
82
  toolCallId: z.ZodString;
@@ -98,11 +104,13 @@ export declare const MessageSchema: z.ZodObject<{
98
104
  toolCallId: z.ZodString;
99
105
  toolName: z.ZodString;
100
106
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
107
+ inputText: z.ZodOptional<z.ZodString>;
101
108
  }, z.core.$strip>, z.ZodObject<{
102
109
  type: z.ZodString;
103
110
  toolCallId: z.ZodString;
104
111
  toolName: z.ZodString;
105
112
  input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
113
+ inputText: z.ZodOptional<z.ZodString>;
106
114
  }, z.core.$strip>]>, z.ZodObject<{
107
115
  type: z.ZodLiteral<"tool-call">;
108
116
  toolCallId: z.ZodString;
@@ -126,6 +134,7 @@ export declare const ToolCallSchema: z.ZodObject<{
126
134
  id: z.ZodString;
127
135
  name: z.ZodString;
128
136
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
137
+ inputText: z.ZodOptional<z.ZodString>;
129
138
  status: z.ZodEnum<{
130
139
  error: "error";
131
140
  pending: "pending";
@@ -154,11 +163,13 @@ export declare const AgentResponseSchema: z.ZodObject<{
154
163
  toolCallId: z.ZodString;
155
164
  toolName: z.ZodString;
156
165
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
166
+ inputText: z.ZodOptional<z.ZodString>;
157
167
  }, z.core.$strip>, z.ZodObject<{
158
168
  type: z.ZodString;
159
169
  toolCallId: z.ZodString;
160
170
  toolName: z.ZodString;
161
171
  input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
172
+ inputText: z.ZodOptional<z.ZodString>;
162
173
  }, z.core.$strip>]>, z.ZodObject<{
163
174
  type: z.ZodLiteral<"tool-call">;
164
175
  toolCallId: z.ZodString;
@@ -177,6 +188,7 @@ export declare const AgentResponseSchema: z.ZodObject<{
177
188
  id: z.ZodString;
178
189
  name: z.ZodString;
179
190
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
191
+ inputText: z.ZodOptional<z.ZodString>;
180
192
  status: z.ZodEnum<{
181
193
  error: "error";
182
194
  pending: "pending";
@@ -222,11 +234,13 @@ export declare const AgentContextSchema: z.ZodObject<{
222
234
  toolCallId: z.ZodString;
223
235
  toolName: z.ZodString;
224
236
  args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
237
+ inputText: z.ZodOptional<z.ZodString>;
225
238
  }, z.core.$strip>, z.ZodObject<{
226
239
  type: z.ZodString;
227
240
  toolCallId: z.ZodString;
228
241
  toolName: z.ZodString;
229
242
  input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
243
+ inputText: z.ZodOptional<z.ZodString>;
230
244
  }, z.core.$strip>]>, z.ZodObject<{
231
245
  type: z.ZodLiteral<"tool-call">;
232
246
  toolCallId: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/schemas/agent.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;EAAqD,CAAC;AAEtF,eAAO,MAAM,iBAAiB;;;;;;;EAO5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;iBAI7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;iBAKrC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;iBAKtC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;mBAG7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;iBAK/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;mBAa5B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMxB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;iBAQzB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO7B,CAAC;AAGH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"agent.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/schemas/agent.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;EAAqD,CAAC;AAEtF,eAAO,MAAM,iBAAiB;;;;;;;EAO5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;iBAI7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;iBAMrC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;iBAMtC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;mBAG7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;iBAK/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;mBAa5B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMxB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;iBASzB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO7B,CAAC;AAGH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -24,12 +24,14 @@ export const ToolCallPartWithArgsSchema = z.object({
24
24
  toolCallId: z.string(),
25
25
  toolName: z.string(),
26
26
  args: z.record(z.string(), z.unknown()),
27
+ inputText: z.string().optional(),
27
28
  });
28
29
  export const ToolCallPartWithInputSchema = z.object({
29
30
  type: z.string().regex(/^tool-.+$/),
30
31
  toolCallId: z.string(),
31
32
  toolName: z.string(),
32
33
  input: z.record(z.string(), z.unknown()),
34
+ inputText: z.string().optional(),
33
35
  });
34
36
  export const ToolCallPartSchema = z.union([
35
37
  ToolCallPartWithArgsSchema,
@@ -71,6 +73,7 @@ export const ToolCallSchema = z.object({
71
73
  id: z.string(),
72
74
  name: z.string(),
73
75
  args: z.record(z.string(), z.unknown()),
76
+ inputText: z.string().optional(),
74
77
  status: z.enum(["pending", "executing", "completed", "error"]),
75
78
  result: z.unknown().optional(),
76
79
  error: z.string().optional(),
@@ -180,6 +180,7 @@ export declare const AgUiWireEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
180
180
  payload: z.ZodObject<{
181
181
  messageId: z.ZodOptional<z.ZodString>;
182
182
  toolCallId: z.ZodString;
183
+ input: z.ZodOptional<z.ZodUnknown>;
183
184
  content: z.ZodOptional<z.ZodUnknown>;
184
185
  result: z.ZodOptional<z.ZodUnknown>;
185
186
  role: z.ZodOptional<z.ZodLiteral<"tool">>;
@@ -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,YAAY,GAAG,QAAQ,CAAC;AAEhE,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;IAC7C,cAAc,EAAE,yBAAyB,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7F,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;AA4XhE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA+BzD;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,GAAE;IACL,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,yBAAyB,CAAC;IAC3C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAChF,GACL,yBAAyB,CAU3B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,yBAAyB,EAChC,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAuClB;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":"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,YAAY,GAAG,QAAQ,CAAC;AAEhE,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;IAC7C,cAAc,EAAE,yBAAyB,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7F,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAiJ9B,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;AA4XhE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA+BzD;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,GAAE;IACL,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,yBAAyB,CAAC;IAC3C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAChF,GACL,yBAAyB,CAU3B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,yBAAyB,EAChC,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAuClB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,gBAAgB,CAWpF"}
@@ -160,6 +160,7 @@ export const AgUiWireEventSchema = z.discriminatedUnion("eventName", [
160
160
  payload: z.object({
161
161
  messageId: z.string().min(1).optional(),
162
162
  toolCallId: z.string().min(1),
163
+ input: z.unknown().optional(),
163
164
  content: z.unknown().optional(),
164
165
  result: z.unknown().optional(),
165
166
  role: z.literal("tool").optional(),
@@ -485,7 +486,7 @@ function mapWireEventToChatEvents(state, wireEvent) {
485
486
  type: "tool-input-available",
486
487
  toolCallId: wireEvent.payload.toolCallId,
487
488
  toolName: "tool",
488
- input: {},
489
+ input: wireEvent.payload.input ?? {},
489
490
  dynamic: true,
490
491
  providerExecuted: true,
491
492
  });
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-loader.d.ts","sourceRoot":"","sources":["../../../src/src/provider/runtime-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AA8pDD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAkDd;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd,YAAY,CA4Dd;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAkDd;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CA0ClB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CAgDlB"}
1
+ {"version":3,"file":"runtime-loader.d.ts","sourceRoot":"","sources":["../../../src/src/provider/runtime-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AA2tDD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAkDd;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd,YAAY,CA4Dd;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAkDd;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CA0ClB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CAgDlB"}
@@ -171,7 +171,7 @@ function toOpenAICompatibleTools(tools) {
171
171
  type: "function",
172
172
  function: {
173
173
  name: tool.name,
174
- parameters: tool.inputSchema,
174
+ parameters: unwrapToolInputSchema(tool.inputSchema),
175
175
  ...(typeof tool.description === "string" ? { description: tool.description } : {}),
176
176
  },
177
177
  }]
@@ -323,7 +323,7 @@ function toAnthropicTools(tools) {
323
323
  normalized.push({
324
324
  name: tool.name,
325
325
  ...(typeof tool.description === "string" ? { description: tool.description } : {}),
326
- input_schema: tool.inputSchema,
326
+ input_schema: unwrapToolInputSchema(tool.inputSchema),
327
327
  });
328
328
  continue;
329
329
  }
@@ -354,12 +354,55 @@ function createAnthropicRequestHeaders(options) {
354
354
  }
355
355
  return headers;
356
356
  }
357
+ /**
358
+ * Anthropic's Messages API requires `max_tokens` on every call, so the
359
+ * outbound request builder must always supply a number. Picking the right
360
+ * one means knowing the model: different Claude families have wildly
361
+ * different maximum output budgets, and a flat default either truncates
362
+ * modern models mid-response or gets rejected with "too many tokens" on
363
+ * older ones. Return the model's advertised maximum as the default, and
364
+ * clamp caller-provided values at that same ceiling for known models so a
365
+ * bad input becomes a clipped response rather than an API error. Unknown
366
+ * model ids get a conservative 4096 fallback and pass caller values
367
+ * through unchanged, since we have no intel to clamp against.
368
+ */
369
+ function getAnthropicModelCapabilities(modelId) {
370
+ if (modelId.includes("claude-sonnet-4-6") || modelId.includes("claude-opus-4-6")) {
371
+ return { maxOutputTokens: 128_000, isKnownModel: true };
372
+ }
373
+ if (modelId.includes("claude-sonnet-4-5") ||
374
+ modelId.includes("claude-opus-4-5") ||
375
+ modelId.includes("claude-haiku-4-5")) {
376
+ return { maxOutputTokens: 64_000, isKnownModel: true };
377
+ }
378
+ if (modelId.includes("claude-opus-4-1")) {
379
+ return { maxOutputTokens: 32_000, isKnownModel: true };
380
+ }
381
+ if (modelId.includes("claude-sonnet-4-")) {
382
+ return { maxOutputTokens: 64_000, isKnownModel: true };
383
+ }
384
+ if (modelId.includes("claude-opus-4-")) {
385
+ return { maxOutputTokens: 32_000, isKnownModel: true };
386
+ }
387
+ if (modelId.includes("claude-3-haiku")) {
388
+ return { maxOutputTokens: 4096, isKnownModel: true };
389
+ }
390
+ return { maxOutputTokens: 4096, isKnownModel: false };
391
+ }
392
+ function resolveAnthropicMaxTokens(modelId, callerMaxOutputTokens) {
393
+ const { maxOutputTokens: modelMax, isKnownModel } = getAnthropicModelCapabilities(modelId);
394
+ const requested = callerMaxOutputTokens ?? modelMax;
395
+ if (isKnownModel && requested > modelMax) {
396
+ return modelMax;
397
+ }
398
+ return requested;
399
+ }
357
400
  function buildAnthropicMessagesRequest(modelId, providerName, options, stream) {
358
401
  const { system, messages } = toAnthropicMessages(options.prompt);
359
402
  const body = {
360
403
  model: modelId,
361
404
  messages,
362
- max_tokens: options.maxOutputTokens ?? 1024,
405
+ max_tokens: resolveAnthropicMaxTokens(modelId, options.maxOutputTokens),
363
406
  ...(stream ? { stream: true } : {}),
364
407
  ...(system ? { system } : {}),
365
408
  ...(options.temperature !== undefined ? { temperature: options.temperature } : {}),
@@ -813,11 +856,18 @@ function toGoogleTools(tools) {
813
856
  ? [{
814
857
  name: tool.name,
815
858
  ...(typeof tool.description === "string" ? { description: tool.description } : {}),
816
- parameters: tool.inputSchema,
859
+ parameters: unwrapToolInputSchema(tool.inputSchema),
817
860
  }]
818
861
  : []);
819
862
  return functionDeclarations.length > 0 ? [{ functionDeclarations }] : undefined;
820
863
  }
864
+ function unwrapToolInputSchema(inputSchema) {
865
+ if (typeof inputSchema !== "object" || inputSchema === null || Array.isArray(inputSchema)) {
866
+ return inputSchema;
867
+ }
868
+ const candidate = Reflect.get(inputSchema, "jsonSchema");
869
+ return candidate ?? inputSchema;
870
+ }
821
871
  function normalizeGoogleToolChoice(toolChoice) {
822
872
  if (toolChoice === undefined) {
823
873
  return undefined;
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.202";
1
+ export declare const VERSION = "0.1.205";
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.202";
3
+ export const VERSION = "0.1.205";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.202",
3
+ "version": "0.1.205",
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.202",
3
+ "version": "0.1.205",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -361,13 +361,17 @@ export function mapRuntimeStreamEventToAgUiBrowserEvents(
361
361
  if (typeof event.toolCallId === "string") {
362
362
  state.streamedToolInputIds.add(event.toolCallId);
363
363
  }
364
- return [{
365
- event: "ToolCallArgs",
366
- payload: {
367
- toolCallId: event.toolCallId,
368
- delta: typeof event.inputTextDelta === "string" ? event.inputTextDelta : "",
364
+ return [
365
+ ...closeOpenTextEvent(state),
366
+ ...closeOpenReasoningEvent(state),
367
+ {
368
+ event: "ToolCallArgs",
369
+ payload: {
370
+ toolCallId: event.toolCallId,
371
+ delta: typeof event.inputTextDelta === "string" ? event.inputTextDelta : "",
372
+ },
369
373
  },
370
- }];
374
+ ];
371
375
 
372
376
  case "tool-input-available": {
373
377
  state.sawVisibleOutput = true;
@@ -40,6 +40,7 @@ import {
40
40
  type ChatStreamState,
41
41
  createStreamState,
42
42
  processStream,
43
+ type StreamingToolCall,
43
44
  type StreamingToolResult,
44
45
  } from "./chat-stream-handler.js";
45
46
  import { repairToolCall } from "./repair-tool-call.js";
@@ -182,6 +183,21 @@ export function collectGeneratedToolResults(
182
183
  return generatedToolResults;
183
184
  }
184
185
 
186
+ export function captureStreamedToolCallInput(
187
+ toolCall: Pick<StreamingToolCall, "arguments">,
188
+ ): {
189
+ args: Record<string, unknown>;
190
+ inputText?: string;
191
+ parseError?: string;
192
+ } {
193
+ const { args, error } = parseToolArgs(toolCall.arguments);
194
+ return {
195
+ args,
196
+ ...(toolCall.arguments.length > 0 ? { inputText: toolCall.arguments } : {}),
197
+ ...(error ? { parseError: error } : {}),
198
+ };
199
+ }
200
+
185
201
  function isToolResultPart(part: MessagePart): part is ToolResultPart {
186
202
  return part.type === "tool-result" && "result" in part;
187
203
  }
@@ -945,18 +961,19 @@ export class AgentRuntime {
945
961
  if (state.accumulatedText) streamParts.push({ type: "text", text: state.accumulatedText });
946
962
 
947
963
  for (const tc of state.toolCalls.values()) {
948
- const { args, error } = parseToolArgs(tc.arguments);
949
- if (error) {
964
+ const capturedInput = captureStreamedToolCallInput(tc);
965
+ if (capturedInput.parseError) {
950
966
  logger.warn("Failed to parse streamed tool arguments", {
951
967
  toolCallId: tc.id,
952
- error,
968
+ error: capturedInput.parseError,
953
969
  });
954
970
  }
955
971
  streamParts.push({
956
972
  type: `tool-${tc.name}`,
957
973
  toolCallId: tc.id,
958
974
  toolName: tc.name,
959
- args,
975
+ args: capturedInput.args,
976
+ ...(capturedInput.inputText ? { inputText: capturedInput.inputText } : {}),
960
977
  });
961
978
  }
962
979
 
@@ -1016,8 +1033,14 @@ export class AgentRuntime {
1016
1033
 
1017
1034
  for (const tc of streamedToolCalls) {
1018
1035
  throwIfAborted(abortSignal);
1019
- const { args, error: argError } = parseToolArgs(tc.arguments);
1020
- const toolCall: ToolCall = { id: tc.id, name: tc.name, args, status: "pending" };
1036
+ const capturedInput = captureStreamedToolCallInput(tc);
1037
+ const toolCall: ToolCall = {
1038
+ id: tc.id,
1039
+ name: tc.name,
1040
+ args: capturedInput.args,
1041
+ ...(capturedInput.inputText ? { inputText: capturedInput.inputText } : {}),
1042
+ status: "pending",
1043
+ };
1021
1044
  const matchingResult = finalToolResults.get(tc.id);
1022
1045
  const persistedResult = currentStepToolResults.get(tc.id);
1023
1046
 
@@ -1041,23 +1064,23 @@ export class AgentRuntime {
1041
1064
  continue;
1042
1065
  }
1043
1066
 
1044
- if (argError) {
1067
+ if (capturedInput.parseError) {
1045
1068
  logger.warn("Invalid streamed tool arguments", {
1046
1069
  toolCallId: tc.id,
1047
- error: argError,
1070
+ error: capturedInput.parseError,
1048
1071
  });
1049
1072
 
1050
1073
  const dynamic = isDynamicTool(tc.name);
1051
1074
  sendSSE(controller, encoder, {
1052
1075
  type: "tool-input-error",
1053
1076
  toolCallId: tc.id,
1054
- errorText: `Invalid tool arguments: ${argError}`,
1077
+ errorText: `Invalid tool arguments: ${capturedInput.parseError}`,
1055
1078
  ...(dynamic ? { dynamic: true } : {}),
1056
1079
  });
1057
1080
 
1058
1081
  await this.recordToolError(
1059
1082
  toolCall,
1060
- `Invalid tool arguments: ${argError}`,
1083
+ `Invalid tool arguments: ${capturedInput.parseError}`,
1061
1084
  controller,
1062
1085
  encoder,
1063
1086
  currentMessages,
@@ -317,7 +317,11 @@ export class RunResumeSessionManager<T> {
317
317
  }
318
318
 
319
319
  const waitingState = session.waitingState;
320
- session.abortController.abort(new RunCancelledError());
320
+ // Abort with an AbortError-shaped DOMException so provider SDK fetch
321
+ // consumers treat it as cancellation and don't surface unhandled
322
+ // rejections. The waiting-state reject path keeps RunCancelledError
323
+ // so callers can still `instanceof` it.
324
+ session.abortController.abort(new DOMException("Run cancelled", "AbortError"));
321
325
  waitingState?.reject(new RunCancelledError());
322
326
  this.finalizeSession(session, "cancelled");
323
327
  return true;
@@ -29,6 +29,7 @@ export const ToolCallPartWithArgsSchema = z.object({
29
29
  toolCallId: z.string(),
30
30
  toolName: z.string(),
31
31
  args: z.record(z.string(), z.unknown()),
32
+ inputText: z.string().optional(),
32
33
  });
33
34
 
34
35
  export const ToolCallPartWithInputSchema = z.object({
@@ -36,6 +37,7 @@ export const ToolCallPartWithInputSchema = z.object({
36
37
  toolCallId: z.string(),
37
38
  toolName: z.string(),
38
39
  input: z.record(z.string(), z.unknown()),
40
+ inputText: z.string().optional(),
39
41
  });
40
42
 
41
43
  export const ToolCallPartSchema = z.union([
@@ -83,6 +85,7 @@ export const ToolCallSchema = z.object({
83
85
  id: z.string(),
84
86
  name: z.string(),
85
87
  args: z.record(z.string(), z.unknown()),
88
+ inputText: z.string().optional(),
86
89
  status: z.enum(["pending", "executing", "completed", "error"]),
87
90
  result: z.unknown().optional(),
88
91
  error: z.string().optional(),
@@ -214,6 +214,7 @@ export const AgUiWireEventSchema = z.discriminatedUnion("eventName", [
214
214
  payload: z.object({
215
215
  messageId: z.string().min(1).optional(),
216
216
  toolCallId: z.string().min(1),
217
+ input: z.unknown().optional(),
217
218
  content: z.unknown().optional(),
218
219
  result: z.unknown().optional(),
219
220
  role: z.literal("tool").optional(),
@@ -608,7 +609,7 @@ function mapWireEventToChatEvents(
608
609
  type: "tool-input-available",
609
610
  toolCallId: wireEvent.payload.toolCallId,
610
611
  toolName: "tool",
611
- input: {},
612
+ input: wireEvent.payload.input ?? {},
612
613
  dynamic: true,
613
614
  providerExecuted: true,
614
615
  });
@@ -412,7 +412,7 @@ function toOpenAICompatibleTools(
412
412
  type: "function" as const,
413
413
  function: {
414
414
  name: tool.name,
415
- parameters: tool.inputSchema,
415
+ parameters: unwrapToolInputSchema(tool.inputSchema),
416
416
  ...(typeof tool.description === "string" ? { description: tool.description } : {}),
417
417
  },
418
418
  }]
@@ -623,7 +623,7 @@ function toAnthropicTools(
623
623
  normalized.push({
624
624
  name: tool.name,
625
625
  ...(typeof tool.description === "string" ? { description: tool.description } : {}),
626
- input_schema: tool.inputSchema,
626
+ input_schema: unwrapToolInputSchema(tool.inputSchema),
627
627
  });
628
628
  continue;
629
629
  }
@@ -665,6 +665,58 @@ function createAnthropicRequestHeaders(options: {
665
665
  return headers;
666
666
  }
667
667
 
668
+ /**
669
+ * Anthropic's Messages API requires `max_tokens` on every call, so the
670
+ * outbound request builder must always supply a number. Picking the right
671
+ * one means knowing the model: different Claude families have wildly
672
+ * different maximum output budgets, and a flat default either truncates
673
+ * modern models mid-response or gets rejected with "too many tokens" on
674
+ * older ones. Return the model's advertised maximum as the default, and
675
+ * clamp caller-provided values at that same ceiling for known models so a
676
+ * bad input becomes a clipped response rather than an API error. Unknown
677
+ * model ids get a conservative 4096 fallback and pass caller values
678
+ * through unchanged, since we have no intel to clamp against.
679
+ */
680
+ function getAnthropicModelCapabilities(
681
+ modelId: string,
682
+ ): { maxOutputTokens: number; isKnownModel: boolean } {
683
+ if (modelId.includes("claude-sonnet-4-6") || modelId.includes("claude-opus-4-6")) {
684
+ return { maxOutputTokens: 128_000, isKnownModel: true };
685
+ }
686
+ if (
687
+ modelId.includes("claude-sonnet-4-5") ||
688
+ modelId.includes("claude-opus-4-5") ||
689
+ modelId.includes("claude-haiku-4-5")
690
+ ) {
691
+ return { maxOutputTokens: 64_000, isKnownModel: true };
692
+ }
693
+ if (modelId.includes("claude-opus-4-1")) {
694
+ return { maxOutputTokens: 32_000, isKnownModel: true };
695
+ }
696
+ if (modelId.includes("claude-sonnet-4-")) {
697
+ return { maxOutputTokens: 64_000, isKnownModel: true };
698
+ }
699
+ if (modelId.includes("claude-opus-4-")) {
700
+ return { maxOutputTokens: 32_000, isKnownModel: true };
701
+ }
702
+ if (modelId.includes("claude-3-haiku")) {
703
+ return { maxOutputTokens: 4096, isKnownModel: true };
704
+ }
705
+ return { maxOutputTokens: 4096, isKnownModel: false };
706
+ }
707
+
708
+ function resolveAnthropicMaxTokens(
709
+ modelId: string,
710
+ callerMaxOutputTokens: number | undefined,
711
+ ): number {
712
+ const { maxOutputTokens: modelMax, isKnownModel } = getAnthropicModelCapabilities(modelId);
713
+ const requested = callerMaxOutputTokens ?? modelMax;
714
+ if (isKnownModel && requested > modelMax) {
715
+ return modelMax;
716
+ }
717
+ return requested;
718
+ }
719
+
668
720
  function buildAnthropicMessagesRequest(
669
721
  modelId: string,
670
722
  providerName: string,
@@ -675,7 +727,7 @@ function buildAnthropicMessagesRequest(
675
727
  const body: AnthropicCompatibleRequest = {
676
728
  model: modelId,
677
729
  messages,
678
- max_tokens: options.maxOutputTokens ?? 1024,
730
+ max_tokens: resolveAnthropicMaxTokens(modelId, options.maxOutputTokens),
679
731
  ...(stream ? { stream: true } : {}),
680
732
  ...(system ? { system } : {}),
681
733
  ...(options.temperature !== undefined ? { temperature: options.temperature } : {}),
@@ -1257,7 +1309,7 @@ function toGoogleTools(
1257
1309
  ? [{
1258
1310
  name: tool.name,
1259
1311
  ...(typeof tool.description === "string" ? { description: tool.description } : {}),
1260
- parameters: tool.inputSchema,
1312
+ parameters: unwrapToolInputSchema(tool.inputSchema),
1261
1313
  }]
1262
1314
  : []
1263
1315
  );
@@ -1265,6 +1317,15 @@ function toGoogleTools(
1265
1317
  return functionDeclarations.length > 0 ? [{ functionDeclarations }] : undefined;
1266
1318
  }
1267
1319
 
1320
+ function unwrapToolInputSchema(inputSchema: unknown): unknown {
1321
+ if (typeof inputSchema !== "object" || inputSchema === null || Array.isArray(inputSchema)) {
1322
+ return inputSchema;
1323
+ }
1324
+
1325
+ const candidate = Reflect.get(inputSchema, "jsonSchema");
1326
+ return candidate ?? inputSchema;
1327
+ }
1328
+
1268
1329
  function normalizeGoogleToolChoice(toolChoice: unknown):
1269
1330
  | GoogleCompatibleRequest["toolConfig"]
1270
1331
  | undefined {
@@ -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.202";
3
+ export const VERSION = "0.1.205";