veryfront 0.1.342 → 0.1.344

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.
Files changed (50) hide show
  1. package/esm/deno.js +1 -1
  2. package/esm/src/agent/fork-runtime-stream.d.ts +25 -8
  3. package/esm/src/agent/fork-runtime-stream.d.ts.map +1 -1
  4. package/esm/src/agent/fork-runtime-stream.js +33 -10
  5. package/esm/src/agent/index.d.ts +1 -1
  6. package/esm/src/agent/index.d.ts.map +1 -1
  7. package/esm/src/agent/index.js +1 -1
  8. package/esm/src/agent/runtime/index.js +3 -3
  9. package/esm/src/agent/runtime/runtime-tool-types.d.ts +2 -2
  10. package/esm/src/agent/runtime/runtime-tool-types.d.ts.map +1 -1
  11. package/esm/src/agent/runtime/text-generation-runtime-message-converter.d.ts +19 -0
  12. package/esm/src/agent/runtime/text-generation-runtime-message-converter.d.ts.map +1 -0
  13. package/esm/src/agent/runtime/{model-message-converter.js → text-generation-runtime-message-converter.js} +18 -15
  14. package/esm/src/agent/runtime/text-generation-runtime-message-types.d.ts +44 -0
  15. package/esm/src/agent/runtime/text-generation-runtime-message-types.d.ts.map +1 -0
  16. package/esm/src/agent/runtime/{model-runtime-types.js → text-generation-runtime-message-types.js} +1 -1
  17. package/esm/src/chat/conversation.d.ts +7 -3
  18. package/esm/src/chat/conversation.d.ts.map +1 -1
  19. package/esm/src/chat/conversation.js +5 -1
  20. package/esm/src/chat/message-prep.d.ts +19 -12
  21. package/esm/src/chat/message-prep.d.ts.map +1 -1
  22. package/esm/src/chat/message-prep.js +14 -7
  23. package/esm/src/chat/types.d.ts +3 -0
  24. package/esm/src/chat/types.d.ts.map +1 -1
  25. package/esm/src/runtime/runtime-bridge.d.ts +3 -3
  26. package/esm/src/runtime/runtime-bridge.d.ts.map +1 -1
  27. package/esm/src/utils/version-constant.d.ts +1 -1
  28. package/esm/src/utils/version-constant.js +1 -1
  29. package/package.json +1 -1
  30. package/src/deno.js +1 -1
  31. package/src/deps/esm.sh/@types/react-dom@19.2.3/client.d.ts +1 -1
  32. package/src/deps/esm.sh/@types/{react@19.2.3 → react@19.2.14}/global.d.ts +1 -0
  33. package/src/deps/esm.sh/@types/{react@19.2.3 → react@19.2.14}/index.d.ts +93 -24
  34. package/src/deps/esm.sh/react-dom@19.2.4/client.d.ts +1 -1
  35. package/src/src/agent/fork-runtime-stream.ts +63 -18
  36. package/src/src/agent/index.ts +6 -0
  37. package/src/src/agent/runtime/index.ts +3 -3
  38. package/src/src/agent/runtime/runtime-tool-types.ts +2 -2
  39. package/src/src/agent/runtime/{model-message-converter.ts → text-generation-runtime-message-converter.ts} +33 -25
  40. package/src/src/agent/runtime/text-generation-runtime-message-types.ts +55 -0
  41. package/src/src/chat/conversation.ts +14 -7
  42. package/src/src/chat/message-prep.ts +39 -27
  43. package/src/src/chat/types.ts +3 -0
  44. package/src/src/runtime/runtime-bridge.ts +4 -4
  45. package/src/src/utils/version-constant.ts +1 -1
  46. package/esm/src/agent/runtime/model-message-converter.d.ts +0 -19
  47. package/esm/src/agent/runtime/model-message-converter.d.ts.map +0 -1
  48. package/esm/src/agent/runtime/model-runtime-types.d.ts +0 -44
  49. package/esm/src/agent/runtime/model-runtime-types.d.ts.map +0 -1
  50. package/src/src/agent/runtime/model-runtime-types.ts +0 -55
@@ -33,7 +33,7 @@ import {
33
33
  setSpanAttributes,
34
34
  withSpan,
35
35
  } from "../../observability/tracing/index.js";
36
- import { convertToModelMessages } from "./model-message-converter.js";
36
+ import { convertToTextGenerationRuntimeMessages } from "./text-generation-runtime-message-converter.js";
37
37
  import { convertToolsToRuntimeTools } from "./model-tool-converter.js";
38
38
  import { resolveProviderOptionsWithDefaults } from "./default-provider-options.js";
39
39
  import {
@@ -789,7 +789,7 @@ export class AgentRuntime {
789
789
  return generateText({
790
790
  model: languageModel,
791
791
  system: currentSystemPrompt,
792
- messages: convertToModelMessages(currentMessages),
792
+ messages: convertToTextGenerationRuntimeMessages(currentMessages),
793
793
  tools: convertToolsToRuntimeTools(tools, {
794
794
  model: effectiveModel,
795
795
  allowedToolNames: allowedRemoteToolNames,
@@ -1069,7 +1069,7 @@ export class AgentRuntime {
1069
1069
  const result = streamText({
1070
1070
  model: languageModel,
1071
1071
  system: currentSystemPrompt,
1072
- messages: convertToModelMessages(currentMessages),
1072
+ messages: convertToTextGenerationRuntimeMessages(currentMessages),
1073
1073
  tools: convertToolsToRuntimeTools(tools, {
1074
1074
  model: effectiveModel,
1075
1075
  allowedToolNames: allowedRemoteToolNames,
@@ -5,7 +5,7 @@
5
5
  * boundary. These cover only the shapes the framework consumes today.
6
6
  */
7
7
 
8
- import type { ModelRuntimeMessage } from "./model-runtime-types.js";
8
+ import type { TextGenerationRuntimeMessage } from "./text-generation-runtime-message-types.js";
9
9
 
10
10
  export type RuntimeToolSet = Record<string, unknown>;
11
11
 
@@ -47,7 +47,7 @@ export interface RuntimeRepairToolCall {
47
47
  export interface RuntimeToolCallRepairContext {
48
48
  error: unknown;
49
49
  inputSchema: (...args: unknown[]) => unknown;
50
- messages: ModelRuntimeMessage[];
50
+ messages: TextGenerationRuntimeMessage[];
51
51
  system?: string;
52
52
  toolCall: RuntimeRepairToolCall;
53
53
  tools: RuntimeToolSet;
@@ -1,19 +1,19 @@
1
1
  /**
2
- * Model Message Converter
2
+ * Text-Generation Runtime Message Converter
3
3
  *
4
4
  * Converts between veryfront's internal Message format and the current
5
- * model-runtime message format.
5
+ * text-generation runtime message format.
6
6
  *
7
- * @module ai/agent/runtime/model-message-converter
7
+ * @module ai/agent/runtime/text-generation-runtime-message-converter
8
8
  */
9
9
 
10
10
  import type {
11
- ModelRuntimeAssistantMessage,
12
- ModelRuntimeMessage,
13
- ModelRuntimeTextPart,
14
- ModelRuntimeToolCallPart,
15
- ModelRuntimeToolMessage,
16
- } from "./model-runtime-types.js";
11
+ TextGenerationRuntimeAssistantMessage,
12
+ TextGenerationRuntimeMessage,
13
+ TextGenerationRuntimeTextPart,
14
+ TextGenerationRuntimeToolCallPart,
15
+ TextGenerationRuntimeToolMessage,
16
+ } from "./text-generation-runtime-message-types.js";
17
17
  import {
18
18
  getTextFromParts,
19
19
  getToolArguments,
@@ -23,9 +23,9 @@ import {
23
23
  } from "../types.js";
24
24
 
25
25
  /**
26
- * Convert a veryfront Message to the current model-runtime message format.
26
+ * Convert a veryfront Message to the current text-generation runtime message format.
27
27
  */
28
- export function convertToModelMessage(msg: Message): ModelRuntimeMessage {
28
+ export function convertToTextGenerationRuntimeMessage(msg: Message): TextGenerationRuntimeMessage {
29
29
  switch (msg.role) {
30
30
  case "system": {
31
31
  const text = getTextFromParts(msg.parts);
@@ -38,7 +38,7 @@ export function convertToModelMessage(msg: Message): ModelRuntimeMessage {
38
38
  }
39
39
 
40
40
  case "assistant": {
41
- const content: Array<ModelRuntimeTextPart | ModelRuntimeToolCallPart> = [];
41
+ const content: Array<TextGenerationRuntimeTextPart | TextGenerationRuntimeToolCallPart> = [];
42
42
 
43
43
  for (const part of msg.parts) {
44
44
  if (part.type === "text" && "text" in part) {
@@ -66,12 +66,15 @@ export function convertToModelMessage(msg: Message): ModelRuntimeMessage {
66
66
  content.push({ type: "text", text: "" });
67
67
  }
68
68
 
69
- const assistantMessage: ModelRuntimeAssistantMessage = { role: "assistant", content };
69
+ const assistantMessage: TextGenerationRuntimeAssistantMessage = {
70
+ role: "assistant",
71
+ content,
72
+ };
70
73
  return assistantMessage;
71
74
  }
72
75
 
73
76
  case "tool": {
74
- const content: ModelRuntimeToolMessage["content"] = [];
77
+ const content: TextGenerationRuntimeToolMessage["content"] = [];
75
78
 
76
79
  for (const part of msg.parts) {
77
80
  if (part.type !== "tool-result") continue;
@@ -85,7 +88,7 @@ export function convertToModelMessage(msg: Message): ModelRuntimeMessage {
85
88
  });
86
89
  }
87
90
 
88
- const toolMessage: ModelRuntimeToolMessage = { role: "tool", content };
91
+ const toolMessage: TextGenerationRuntimeToolMessage = { role: "tool", content };
89
92
  return toolMessage;
90
93
  }
91
94
 
@@ -99,7 +102,7 @@ export function convertToModelMessage(msg: Message): ModelRuntimeMessage {
99
102
 
100
103
  function convertToolResultPart(
101
104
  part: ToolResultPart,
102
- ): ModelRuntimeToolMessage {
105
+ ): TextGenerationRuntimeToolMessage {
103
106
  return {
104
107
  role: "tool",
105
108
  content: [{
@@ -112,15 +115,17 @@ function convertToolResultPart(
112
115
  }
113
116
 
114
117
  /**
115
- * Convert an array of veryfront Messages to the current model-runtime message format.
118
+ * Convert an array of veryfront Messages to the current text-generation runtime message format.
116
119
  */
117
- export function convertToModelMessages(messages: Message[]): ModelRuntimeMessage[] {
118
- const modelMessages: ModelRuntimeMessage[] = [];
120
+ export function convertToTextGenerationRuntimeMessages(
121
+ messages: Message[],
122
+ ): TextGenerationRuntimeMessage[] {
123
+ const textGenerationRuntimeMessages: TextGenerationRuntimeMessage[] = [];
119
124
  const toolResultMessageIndexes = new Map<string, number>();
120
125
 
121
126
  for (const message of messages) {
122
127
  if (message.role !== "tool") {
123
- modelMessages.push(convertToModelMessage(message));
128
+ textGenerationRuntimeMessages.push(convertToTextGenerationRuntimeMessage(message));
124
129
  continue;
125
130
  }
126
131
 
@@ -129,7 +134,7 @@ export function convertToModelMessages(messages: Message[]): ModelRuntimeMessage
129
134
  );
130
135
 
131
136
  if (toolResultParts.length === 0) {
132
- modelMessages.push(convertToModelMessage(message));
137
+ textGenerationRuntimeMessages.push(convertToTextGenerationRuntimeMessage(message));
133
138
  continue;
134
139
  }
135
140
 
@@ -138,14 +143,17 @@ export function convertToModelMessages(messages: Message[]): ModelRuntimeMessage
138
143
  const existingIndex = toolResultMessageIndexes.get(toolResultPart.toolCallId);
139
144
 
140
145
  if (existingIndex === undefined) {
141
- toolResultMessageIndexes.set(toolResultPart.toolCallId, modelMessages.length);
142
- modelMessages.push(toolResultMessage);
146
+ toolResultMessageIndexes.set(
147
+ toolResultPart.toolCallId,
148
+ textGenerationRuntimeMessages.length,
149
+ );
150
+ textGenerationRuntimeMessages.push(toolResultMessage);
143
151
  continue;
144
152
  }
145
153
 
146
- modelMessages[existingIndex] = toolResultMessage;
154
+ textGenerationRuntimeMessages[existingIndex] = toolResultMessage;
147
155
  }
148
156
  }
149
157
 
150
- return modelMessages;
158
+ return textGenerationRuntimeMessages;
151
159
  }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Text-Generation Runtime Message Types
3
+ *
4
+ * Framework-owned message types for the current text-generation runtime
5
+ * boundary. These describe the subset of message shapes the runtime uses
6
+ * today without exposing SDK-owned message contracts upward.
7
+ */
8
+
9
+ export interface TextGenerationRuntimeTextPart {
10
+ type: "text";
11
+ text: string;
12
+ }
13
+
14
+ export interface TextGenerationRuntimeToolCallPart {
15
+ type: "tool-call";
16
+ toolCallId: string;
17
+ toolName: string;
18
+ input: Record<string, unknown>;
19
+ }
20
+
21
+ export interface TextGenerationRuntimeToolResultPart {
22
+ type: "tool-result";
23
+ toolCallId: string;
24
+ toolName: string;
25
+ output: {
26
+ type: "json";
27
+ value: unknown;
28
+ };
29
+ }
30
+
31
+ export interface TextGenerationRuntimeSystemMessage {
32
+ role: "system";
33
+ content: string;
34
+ }
35
+
36
+ export interface TextGenerationRuntimeUserMessage {
37
+ role: "user";
38
+ content: string;
39
+ }
40
+
41
+ export interface TextGenerationRuntimeAssistantMessage {
42
+ role: "assistant";
43
+ content: Array<TextGenerationRuntimeTextPart | TextGenerationRuntimeToolCallPart>;
44
+ }
45
+
46
+ export interface TextGenerationRuntimeToolMessage {
47
+ role: "tool";
48
+ content: TextGenerationRuntimeToolResultPart[];
49
+ }
50
+
51
+ export type TextGenerationRuntimeMessage =
52
+ | TextGenerationRuntimeSystemMessage
53
+ | TextGenerationRuntimeUserMessage
54
+ | TextGenerationRuntimeAssistantMessage
55
+ | TextGenerationRuntimeToolMessage;
@@ -1,6 +1,6 @@
1
1
  import "../../_dnt.polyfills.js";
2
2
  import { z } from "zod";
3
- import type { ChatModelMessage, ChatUiMessage, ChatUiMessagePart } from "./types.js";
3
+ import type { ChatUiMessage, ChatUiMessagePart, ProviderModelMessage } from "./types.js";
4
4
 
5
5
  const textPartSchema = z.object({ type: z.literal("text"), text: z.string() });
6
6
  const imagePartSchema = z.object({
@@ -470,7 +470,7 @@ export function isReasoningPart(value: unknown): value is ReasoningPartLike {
470
470
  return isRecord(value) && value.type === "reasoning" && typeof value.text === "string";
471
471
  }
472
472
 
473
- export function extractTextFromMessage(message: ChatModelMessage): string {
473
+ export function extractTextFromMessage(message: ProviderModelMessage): string {
474
474
  if (!message || !message.content) return "";
475
475
 
476
476
  const { content } = message;
@@ -704,7 +704,7 @@ function buildToolResultOutput(toolPart: { state: string; output?: unknown; erro
704
704
  return null;
705
705
  }
706
706
 
707
- function convertSystemMessage(message: ChatUiMessage): ChatModelMessage[] {
707
+ function convertSystemMessage(message: ChatUiMessage): ProviderModelMessage[] {
708
708
  const content = message.parts.flatMap((part) => (isTextPart(part) ? [part.text] : [])).join("");
709
709
  if (content.length === 0) {
710
710
  return [];
@@ -718,7 +718,7 @@ function convertSystemMessage(message: ChatUiMessage): ChatModelMessage[] {
718
718
  ];
719
719
  }
720
720
 
721
- function convertUserMessage(message: ChatUiMessage): ChatModelMessage[] {
721
+ function convertUserMessage(message: ChatUiMessage): ProviderModelMessage[] {
722
722
  const content: Array<
723
723
  { type: "text"; text: string } | {
724
724
  type: "file";
@@ -752,7 +752,7 @@ function convertUserMessage(message: ChatUiMessage): ChatModelMessage[] {
752
752
  ];
753
753
  }
754
754
 
755
- function convertAssistantMessage(message: ChatUiMessage): ChatModelMessage[] {
755
+ function convertAssistantMessage(message: ChatUiMessage): ProviderModelMessage[] {
756
756
  const rawToolNamesById = buildRawToolNameMap(message.parts);
757
757
  const assistantContent: Array<
758
758
  | { type: "text"; text: string }
@@ -776,7 +776,7 @@ function convertAssistantMessage(message: ChatUiMessage): ChatModelMessage[] {
776
776
  };
777
777
  }> = [];
778
778
  const pendingToolCallIds = new Set<string>();
779
- const messages: ChatModelMessage[] = [];
779
+ const messages: ProviderModelMessage[] = [];
780
780
 
781
781
  const flushAssistantMessage = (content: typeof assistantContent) => {
782
782
  if (content.length === 0) {
@@ -915,7 +915,9 @@ function convertAssistantMessage(message: ChatUiMessage): ChatModelMessage[] {
915
915
  return messages;
916
916
  }
917
917
 
918
- export function convertUiMessagesToModelMessages(messages: ChatUiMessage[]): ChatModelMessage[] {
918
+ export function convertUiMessagesToProviderModelMessages(
919
+ messages: ChatUiMessage[],
920
+ ): ProviderModelMessage[] {
919
921
  return messages.flatMap((message) => {
920
922
  switch (message.role) {
921
923
  case "system":
@@ -929,3 +931,8 @@ export function convertUiMessagesToModelMessages(messages: ChatUiMessage[]): Cha
929
931
  }
930
932
  });
931
933
  }
934
+
935
+ /**
936
+ * @deprecated Use convertUiMessagesToProviderModelMessages for provider-facing model payloads.
937
+ */
938
+ export const convertUiMessagesToModelMessages = convertUiMessagesToProviderModelMessages;
@@ -1,6 +1,6 @@
1
1
  import "../../_dnt.polyfills.js";
2
2
  import {
3
- convertUiMessagesToModelMessages,
3
+ convertUiMessagesToProviderModelMessages,
4
4
  getStringField,
5
5
  isReasoningPart,
6
6
  isToolCallPart,
@@ -8,12 +8,12 @@ import {
8
8
  } from "./conversation.js";
9
9
  import {
10
10
  buildDataFileAnnotation,
11
- type ChatModelMessage,
12
11
  type ChatToolResultOutput,
13
12
  type ChatToolResultPart,
14
13
  type ChatUiMessage,
15
14
  type ChatUiMessagePart,
16
15
  normalizeInlineAttachmentMediaType,
16
+ type ProviderModelMessage,
17
17
  type UploadedFileReference,
18
18
  } from "./types.js";
19
19
 
@@ -29,10 +29,10 @@ function truncate(text: string, maxLen: number): string {
29
29
  }
30
30
 
31
31
  export function compressTurn(
32
- messages: ChatModelMessage[],
32
+ messages: ProviderModelMessage[],
33
33
  startIdx: number,
34
34
  endIdx: number,
35
- ): ChatModelMessage[] {
35
+ ): ProviderModelMessage[] {
36
36
  let userQuery = "";
37
37
  const toolNames: string[] = [];
38
38
  let assistantConclusion = "";
@@ -72,7 +72,7 @@ interface TurnWindow {
72
72
  compressed?: boolean;
73
73
  }
74
74
 
75
- function collectTurns(messages: ChatModelMessage[]): TurnWindow[] {
75
+ function collectTurns(messages: ProviderModelMessage[]): TurnWindow[] {
76
76
  const turns: TurnWindow[] = [];
77
77
  let currentTurn: TurnWindow | null = null;
78
78
 
@@ -98,10 +98,10 @@ function collectTurns(messages: ChatModelMessage[]): TurnWindow[] {
98
98
  }
99
99
 
100
100
  export function enforceTokenBudgetWithTurnCompression(
101
- messages: ChatModelMessage[],
101
+ messages: ProviderModelMessage[],
102
102
  budget: number,
103
103
  overhead: number,
104
- ): ChatModelMessage[] {
104
+ ): ProviderModelMessage[] {
105
105
  const effectiveBudget = budget - overhead;
106
106
  let totalTokens = messages.reduce((sum, message) => sum + estimateTokens(message.content), 0);
107
107
  if (totalTokens <= effectiveBudget) return messages;
@@ -337,7 +337,7 @@ function isKeepableModelPart(part: unknown, includeReasoning: boolean): boolean
337
337
  }
338
338
  }
339
339
 
340
- function hasValidContent(message: ChatModelMessage): boolean {
340
+ function hasValidContent(message: ProviderModelMessage): boolean {
341
341
  const content = message.content;
342
342
 
343
343
  if (content === undefined || content === null) return false;
@@ -351,8 +351,10 @@ function cleanContent<T>(content: T[]): T[] {
351
351
  return content.filter((part) => isKeepableModelPart(part, hasSubstantiveContent));
352
352
  }
353
353
 
354
- export function sanitizeModelMessages(messages: ChatModelMessage[]): ChatModelMessage[] {
355
- const result: ChatModelMessage[] = [];
354
+ export function sanitizeProviderModelMessages(
355
+ messages: ProviderModelMessage[],
356
+ ): ProviderModelMessage[] {
357
+ const result: ProviderModelMessage[] = [];
356
358
 
357
359
  for (const message of messages) {
358
360
  if (Array.isArray(message.content)) {
@@ -377,7 +379,12 @@ export function sanitizeModelMessages(messages: ChatModelMessage[]): ChatModelMe
377
379
  return result;
378
380
  }
379
381
 
380
- function filterValidMessages(messages: ChatModelMessage[]): ChatModelMessage[] {
382
+ /**
383
+ * @deprecated Use sanitizeProviderModelMessages for provider-facing model payloads.
384
+ */
385
+ export const sanitizeModelMessages = sanitizeProviderModelMessages;
386
+
387
+ function filterValidMessages(messages: ProviderModelMessage[]): ProviderModelMessage[] {
381
388
  return messages.filter((message) => {
382
389
  const content = message.content;
383
390
  if (content === undefined || content === null) return false;
@@ -387,23 +394,25 @@ function filterValidMessages(messages: ChatModelMessage[]): ChatModelMessage[] {
387
394
  });
388
395
  }
389
396
 
390
- export function prepareModelMessagesFromUiMessages(messages: ChatUiMessage[]): ChatModelMessage[] {
397
+ export function prepareProviderModelMessagesFromUiMessages(
398
+ messages: ChatUiMessage[],
399
+ ): ProviderModelMessage[] {
391
400
  const validMessages = messages.filter((message) =>
392
401
  message && typeof message === "object" && "role" in message
393
402
  );
394
403
  const normalizedMessages = normalizeMessageFilePartMediaTypes(validMessages);
395
404
  const strippedPendingToolMessages = stripPendingToolParts(normalizedMessages);
396
405
  const rewrittenMessages = rewriteUnsupportedFilePartsAsAnnotations(strippedPendingToolMessages);
397
- const modelMessages = convertUiMessagesToModelMessages(rewrittenMessages);
398
- const patchedMessages = ensureToolCallInputs(dedupeToolHistory(modelMessages));
399
- const sanitized = sanitizeModelMessages(patchedMessages);
406
+ const providerModelMessages = convertUiMessagesToProviderModelMessages(rewrittenMessages);
407
+ const patchedMessages = ensureToolCallInputs(dedupeToolHistory(providerModelMessages));
408
+ const sanitized = sanitizeProviderModelMessages(patchedMessages);
400
409
  const masked = maskOldToolOutputs(sanitized);
401
410
  const compacted = enforceTokenBudget(masked);
402
411
  const filtered = filterValidMessages(compacted);
403
412
  return repairToolPairs(filtered);
404
413
  }
405
414
 
406
- function buildToolCallMap(messages: ChatModelMessage[]): Map<string, ToolCallInfo> {
415
+ function buildToolCallMap(messages: ProviderModelMessage[]): Map<string, ToolCallInfo> {
407
416
  const map = new Map<string, ToolCallInfo>();
408
417
 
409
418
  for (const msg of messages) {
@@ -493,7 +502,7 @@ function wrapToolResultOutput(
493
502
  return original;
494
503
  }
495
504
 
496
- export function maskOldToolOutputs(messages: ChatModelMessage[]): ChatModelMessage[] {
505
+ export function maskOldToolOutputs(messages: ProviderModelMessage[]): ProviderModelMessage[] {
497
506
  let lastUserIdx = -1;
498
507
  for (let i = messages.length - 1; i >= 0; i--) {
499
508
  if (messages[i].role === "user") {
@@ -573,7 +582,7 @@ function createSyntheticToolResult(toolCallId: string, toolName: string): ChatTo
573
582
  };
574
583
  }
575
584
 
576
- export function repairToolPairs(messages: ChatModelMessage[]): ChatModelMessage[] {
585
+ export function repairToolPairs(messages: ProviderModelMessage[]): ProviderModelMessage[] {
577
586
  const result = [...messages];
578
587
  let mutated = false;
579
588
 
@@ -702,7 +711,7 @@ export function repairToolPairs(messages: ChatModelMessage[]): ChatModelMessage[
702
711
  content: [...repairedResults, ...nextMessage.content],
703
712
  };
704
713
  } else {
705
- const toolMessage: ChatModelMessage = {
714
+ const toolMessage: ProviderModelMessage = {
706
715
  role: "tool",
707
716
  content: repairedResults,
708
717
  };
@@ -719,7 +728,7 @@ export function estimateOverhead(instructions: unknown, toolCount: number): numb
719
728
  return instructionTokens + toolCount * TOKENS_PER_TOOL;
720
729
  }
721
730
 
722
- export function ensureToolCallInputs(messages: ChatModelMessage[]): ChatModelMessage[] {
731
+ export function ensureToolCallInputs(messages: ProviderModelMessage[]): ProviderModelMessage[] {
723
732
  let mutated = false;
724
733
 
725
734
  const result = messages.map((msg) => {
@@ -750,9 +759,9 @@ export function ensureToolCallInputs(messages: ChatModelMessage[]): ChatModelMes
750
759
  }
751
760
 
752
761
  export function compactForStep(
753
- messages: ChatModelMessage[],
762
+ messages: ProviderModelMessage[],
754
763
  overhead: number = 0,
755
- ): ChatModelMessage[] {
764
+ ): ProviderModelMessage[] {
756
765
  const compacted = enforceTokenBudget(
757
766
  maskOldToolOutputs(messages),
758
767
  DEFAULT_TOKEN_BUDGET,
@@ -769,12 +778,12 @@ export function compactForStep(
769
778
  return ensureToolCallInputs(repairToolPairs(dedupeToolHistory(trimmed)));
770
779
  }
771
780
 
772
- export function dedupeToolHistory(messages: ChatModelMessage[]): ChatModelMessage[] {
781
+ export function dedupeToolHistory(messages: ProviderModelMessage[]): ProviderModelMessage[] {
773
782
  const seenToolCallIds = new Set<string>();
774
783
  const seenToolResultIds = new Set<string>();
775
784
  let mutated = false;
776
785
 
777
- const deduped: ChatModelMessage[] = [];
786
+ const deduped: ProviderModelMessage[] = [];
778
787
 
779
788
  const filterParts = <T>(parts: T[]): { filtered: T[]; changed: boolean } => {
780
789
  const filtered = parts.filter((part) => {
@@ -830,10 +839,10 @@ export function dedupeToolHistory(messages: ChatModelMessage[]): ChatModelMessag
830
839
  }
831
840
 
832
841
  export function enforceTokenBudget(
833
- messages: ChatModelMessage[],
842
+ messages: ProviderModelMessage[],
834
843
  budget: number = DEFAULT_TOKEN_BUDGET,
835
844
  overhead: number = 0,
836
- ): ChatModelMessage[] {
845
+ ): ProviderModelMessage[] {
837
846
  if (messages.length === 0) {
838
847
  return messages;
839
848
  }
@@ -841,4 +850,7 @@ export function enforceTokenBudget(
841
850
  return enforceTokenBudgetWithTurnCompression(messages, budget, overhead);
842
851
  }
843
852
 
844
- export const prepareProviderModelMessagesFromUiMessages = prepareModelMessagesFromUiMessages;
853
+ /**
854
+ * @deprecated Use prepareProviderModelMessagesFromUiMessages for provider-facing model payloads.
855
+ */
856
+ export const prepareModelMessagesFromUiMessages = prepareProviderModelMessagesFromUiMessages;
@@ -251,6 +251,9 @@ export type ProviderModelMessage =
251
251
  | ChatAssistantMessage
252
252
  | ChatToolMessage;
253
253
 
254
+ /**
255
+ * @deprecated Use ProviderModelMessage for provider-facing model payloads.
256
+ */
254
257
  export type ChatModelMessage = ProviderModelMessage;
255
258
 
256
259
  export interface DurableRootRunDescriptor {
@@ -5,7 +5,7 @@
5
5
  * module. Higher-level framework code imports framework-owned runtime
6
6
  * types and calls into this bridge at the edge.
7
7
  */
8
- import type { ModelRuntimeMessage } from "../agent/runtime/model-runtime-types.js";
8
+ import type { TextGenerationRuntimeMessage } from "../agent/runtime/text-generation-runtime-message-types.js";
9
9
  import type {
10
10
  RuntimeGenerateTextResult,
11
11
  RuntimeStreamResult,
@@ -21,7 +21,7 @@ import type {
21
21
  type GenerateTextOptions = {
22
22
  model: ModelRuntime;
23
23
  system?: unknown;
24
- messages: ModelRuntimeMessage[];
24
+ messages: TextGenerationRuntimeMessage[];
25
25
  tools?: RuntimeToolSet;
26
26
  experimental_repairToolCall?: RuntimeToolCallRepairFunction;
27
27
  maxOutputTokens?: number;
@@ -41,7 +41,7 @@ type GenerateTextOptions = {
41
41
  type StreamTextOptions = {
42
42
  model: ModelRuntime;
43
43
  system?: unknown;
44
- messages: ModelRuntimeMessage[];
44
+ messages: TextGenerationRuntimeMessage[];
45
45
  tools?: RuntimeToolSet;
46
46
  experimental_repairToolCall?: RuntimeToolCallRepairFunction;
47
47
  maxOutputTokens?: number;
@@ -165,7 +165,7 @@ function normalizeSystemPrompt(system: GenerateTextOptions["system"]): string |
165
165
 
166
166
  function toRuntimePrompt(
167
167
  system: string | undefined,
168
- messages: ModelRuntimeMessage[],
168
+ messages: TextGenerationRuntimeMessage[],
169
169
  ): RuntimePromptMessage[] {
170
170
  const prompt: RuntimePromptMessage[] = [];
171
171
 
@@ -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.342";
3
+ export const VERSION = "0.1.344";
@@ -1,19 +0,0 @@
1
- /**
2
- * Model Message Converter
3
- *
4
- * Converts between veryfront's internal Message format and the current
5
- * model-runtime message format.
6
- *
7
- * @module ai/agent/runtime/model-message-converter
8
- */
9
- import type { ModelRuntimeMessage } from "./model-runtime-types.js";
10
- import { type Message } from "../types.js";
11
- /**
12
- * Convert a veryfront Message to the current model-runtime message format.
13
- */
14
- export declare function convertToModelMessage(msg: Message): ModelRuntimeMessage;
15
- /**
16
- * Convert an array of veryfront Messages to the current model-runtime message format.
17
- */
18
- export declare function convertToModelMessages(messages: Message[]): ModelRuntimeMessage[];
19
- //# sourceMappingURL=model-message-converter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-message-converter.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/model-message-converter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,mBAAmB,EAIpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,OAAO,EAGb,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAsEvE;AAgBD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAkCjF"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Model Runtime Types
3
- *
4
- * Framework-owned message types for the current text-generation runtime
5
- * boundary. These describe the subset of message shapes the runtime uses
6
- * today without exposing SDK-owned message contracts upward.
7
- */
8
- export interface ModelRuntimeTextPart {
9
- type: "text";
10
- text: string;
11
- }
12
- export interface ModelRuntimeToolCallPart {
13
- type: "tool-call";
14
- toolCallId: string;
15
- toolName: string;
16
- input: Record<string, unknown>;
17
- }
18
- export interface ModelRuntimeToolResultPart {
19
- type: "tool-result";
20
- toolCallId: string;
21
- toolName: string;
22
- output: {
23
- type: "json";
24
- value: unknown;
25
- };
26
- }
27
- export interface ModelRuntimeSystemMessage {
28
- role: "system";
29
- content: string;
30
- }
31
- export interface ModelRuntimeUserMessage {
32
- role: "user";
33
- content: string;
34
- }
35
- export interface ModelRuntimeAssistantMessage {
36
- role: "assistant";
37
- content: Array<ModelRuntimeTextPart | ModelRuntimeToolCallPart>;
38
- }
39
- export interface ModelRuntimeToolMessage {
40
- role: "tool";
41
- content: ModelRuntimeToolResultPart[];
42
- }
43
- export type ModelRuntimeMessage = ModelRuntimeSystemMessage | ModelRuntimeUserMessage | ModelRuntimeAssistantMessage | ModelRuntimeToolMessage;
44
- //# sourceMappingURL=model-runtime-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-runtime-types.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/model-runtime-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC;AAED,MAAM,MAAM,mBAAmB,GAC3B,yBAAyB,GACzB,uBAAuB,GACvB,4BAA4B,GAC5B,uBAAuB,CAAC"}