@assistant-ui/ai-sdk 0.0.10 → 0.0.12
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/dist/converters/convertMessage.d.ts +8 -6
- package/dist/converters/convertMessage.d.ts.map +1 -1
- package/dist/converters/convertMessage.js +106 -28
- package/dist/converters/convertMessage.js.map +1 -1
- package/dist/converters/toolApprovalAnswers.d.ts +3 -0
- package/dist/converters/toolApprovalAnswers.d.ts.map +1 -0
- package/dist/converters/toolApprovalAnswers.js +17 -0
- package/dist/converters/toolApprovalAnswers.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.native.d.ts +1 -1
- package/dist/index.native.d.ts.map +1 -1
- package/dist/index.native.js +1 -1
- package/dist/model-context/injectInteractableContext.d.ts +3 -0
- package/dist/model-context/injectInteractableContext.d.ts.map +1 -1
- package/dist/model-context/injectInteractableContext.js +3 -0
- package/dist/model-context/injectInteractableContext.js.map +1 -1
- package/dist/model-context/injectQuoteContext.d.ts +1 -0
- package/dist/model-context/injectQuoteContext.d.ts.map +1 -1
- package/dist/model-context/injectQuoteContext.js +1 -0
- package/dist/model-context/injectQuoteContext.js.map +1 -1
- package/dist/runtime/AISDKChat.js +1 -1
- package/dist/runtime/AISDKThreads.d.ts +5 -0
- package/dist/runtime/AISDKThreads.d.ts.map +1 -1
- package/dist/runtime/AISDKThreads.js +37 -4
- package/dist/runtime/AISDKThreads.js.map +1 -1
- package/dist/runtime/DynamicChatTransport.d.ts +49 -0
- package/dist/runtime/DynamicChatTransport.d.ts.map +1 -0
- package/dist/runtime/DynamicChatTransport.js +147 -0
- package/dist/runtime/DynamicChatTransport.js.map +1 -0
- package/dist/runtime/getResumableAdapter.d.ts +5 -0
- package/dist/runtime/getResumableAdapter.d.ts.map +1 -0
- package/dist/runtime/getResumableAdapter.js +12 -0
- package/dist/runtime/getResumableAdapter.js.map +1 -0
- package/dist/runtime/sdkIdentity.js +1 -1
- package/dist/runtime/toolHistoryCodec.d.ts +20 -0
- package/dist/runtime/toolHistoryCodec.d.ts.map +1 -0
- package/dist/runtime/toolHistoryCodec.js +107 -0
- package/dist/runtime/toolHistoryCodec.js.map +1 -0
- package/dist/runtime/useAISDKRuntime.d.ts +4 -1
- package/dist/runtime/useAISDKRuntime.d.ts.map +1 -1
- package/dist/runtime/useAISDKRuntime.js +154 -155
- package/dist/runtime/useAISDKRuntime.js.map +1 -1
- package/dist/runtime/useChatRuntime.d.ts +14 -2
- package/dist/runtime/useChatRuntime.d.ts.map +1 -1
- package/dist/runtime/useChatRuntime.js +12 -3
- package/dist/runtime/useChatRuntime.js.map +1 -1
- package/dist/runtime/useChatThread.d.ts +3 -2
- package/dist/runtime/useChatThread.d.ts.map +1 -1
- package/dist/runtime/useChatThread.js +56 -36
- package/dist/runtime/useChatThread.js.map +1 -1
- package/dist/runtime/useDynamicChatTransport.d.ts +4 -0
- package/dist/runtime/useDynamicChatTransport.d.ts.map +1 -0
- package/dist/runtime/useDynamicChatTransport.js +64 -0
- package/dist/runtime/useDynamicChatTransport.js.map +1 -0
- package/dist/runtime/useExternalHistory.d.ts.map +1 -1
- package/dist/runtime/useExternalHistory.js +11 -105
- package/dist/runtime/useExternalHistory.js.map +1 -1
- package/dist/runtime/useResourceCleanup.js +1 -1
- package/dist/runtime/useStreamingTiming.js +2 -2
- package/dist/runtime/useStreamingTiming.js.map +1 -1
- package/dist/tools/generativeTools.d.ts +2 -1
- package/dist/tools/generativeTools.d.ts.map +1 -1
- package/dist/tools/generativeTools.js +17 -6
- package/dist/tools/generativeTools.js.map +1 -1
- package/dist/usage.js +1 -1
- package/dist/utils/sliceMessagesUntil.d.ts.map +1 -1
- package/dist/utils/sliceMessagesUntil.js +1 -2
- package/dist/utils/sliceMessagesUntil.js.map +1 -1
- package/package.json +12 -10
- package/src/converters/convertMessage.test.ts +350 -2
- package/src/converters/convertMessage.tool-args-status.test.tsx +185 -0
- package/src/converters/convertMessage.ts +154 -23
- package/src/converters/toCreateMessage.test.ts +27 -0
- package/src/converters/toolApprovalAnswers.ts +27 -0
- package/src/index.native.ts +1 -1
- package/src/index.ts +1 -1
- package/src/model-context/injectInteractableContext.ts +3 -0
- package/src/model-context/injectQuoteContext.ts +1 -0
- package/src/runtime/AISDKChat.integration.test.tsx +57 -2
- package/src/runtime/AISDKThreads.cloud.test.ts +3 -0
- package/src/runtime/AISDKThreads.test.ts +181 -0
- package/src/runtime/AISDKThreads.ts +31 -4
- package/src/runtime/DynamicChatTransport.test.ts +203 -0
- package/src/runtime/DynamicChatTransport.ts +273 -0
- package/src/runtime/__tests__/controlled-transport.ts +3 -0
- package/src/runtime/getResumableAdapter.ts +16 -0
- package/src/runtime/toolHistoryCodec.test.ts +161 -0
- package/src/runtime/toolHistoryCodec.ts +207 -0
- package/src/runtime/useAISDKRuntime.approval.test.tsx +12 -0
- package/src/runtime/useAISDKRuntime.reload.test.tsx +219 -0
- package/src/runtime/useAISDKRuntime.test.ts +538 -5
- package/src/runtime/useAISDKRuntime.ts +161 -51
- package/src/runtime/useChatRuntime.integration.test.tsx +319 -4
- package/src/runtime/useChatRuntime.local-storage.test.tsx +123 -0
- package/src/runtime/useChatRuntime.test.ts +107 -1
- package/src/runtime/useChatRuntime.ts +26 -4
- package/src/runtime/useChatThread.binding.test.tsx +143 -0
- package/src/runtime/useChatThread.ts +98 -81
- package/src/runtime/useDynamicChatTransport.ts +26 -0
- package/src/runtime/useExternalHistory.test.ts +205 -0
- package/src/runtime/useExternalHistory.ts +14 -206
- package/src/runtime/useStreamingTiming.ts +2 -2
- package/src/tools/generativeTools.test.ts +190 -2
- package/src/tools/generativeTools.ts +28 -8
- package/src/utils/sliceMessagesUntil.test.ts +2 -6
- package/src/utils/sliceMessagesUntil.ts +1 -5
- package/dist/converters/modelContentEnvelope.d.ts +0 -14
- package/dist/converters/modelContentEnvelope.d.ts.map +0 -1
- package/dist/converters/modelContentEnvelope.js +0 -22
- package/dist/converters/modelContentEnvelope.js.map +0 -1
- package/dist/converters/toolOutputConversion.d.ts +0 -26
- package/dist/converters/toolOutputConversion.d.ts.map +0 -1
- package/dist/converters/toolOutputConversion.js +0 -31
- package/dist/converters/toolOutputConversion.js.map +0 -1
- package/dist/tools/frontendTools.d.ts +0 -30
- package/dist/tools/frontendTools.d.ts.map +0 -1
- package/dist/tools/frontendTools.js +0 -33
- package/dist/tools/frontendTools.js.map +0 -1
- package/src/converters/modelContentEnvelope.ts +0 -41
- package/src/converters/toolOutputConversion.ts +0 -26
- package/src/tools/frontendTools.test.ts +0 -205
- package/src/tools/frontendTools.ts +0 -83
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { normalizeToolApprovalAnswers } from "../converters/toolApprovalAnswers.js";
|
|
2
|
+
import { isRecord, readToolInteractionLog } from "@assistant-ui/core/internal";
|
|
3
|
+
//#region src/runtime/toolHistoryCodec.ts
|
|
4
|
+
const TOOL_ARTIFACTS_METADATA_KEY = "__aui_toolArtifacts";
|
|
5
|
+
const TOOL_INTERACTIONS_METADATA_KEY = "__aui_toolInteractions";
|
|
6
|
+
const TOOL_APPROVAL_RESPONSES_METADATA_KEY = "__aui_toolApprovalResponses";
|
|
7
|
+
const collectToolArtifacts = (message, toolArtifacts) => {
|
|
8
|
+
if (!toolArtifacts) return void 0;
|
|
9
|
+
const entries = message.content.flatMap((part) => {
|
|
10
|
+
if (part.type !== "tool-call") return [];
|
|
11
|
+
const artifact = toolArtifacts.get(part.toolCallId);
|
|
12
|
+
return artifact === void 0 ? [] : [[part.toolCallId, artifact]];
|
|
13
|
+
});
|
|
14
|
+
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
15
|
+
};
|
|
16
|
+
const collectToolInteractions = (message, toolInteractions) => {
|
|
17
|
+
if (!toolInteractions) return void 0;
|
|
18
|
+
const entries = message.content.flatMap((part) => {
|
|
19
|
+
if (part.type !== "tool-call") return [];
|
|
20
|
+
const interactions = toolInteractions.get(part.toolCallId);
|
|
21
|
+
return interactions === void 0 ? [] : [[part.toolCallId, interactions]];
|
|
22
|
+
});
|
|
23
|
+
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
24
|
+
};
|
|
25
|
+
const collectToolApprovalResponses = (message, toolApprovalResponses) => {
|
|
26
|
+
if (!toolApprovalResponses) return void 0;
|
|
27
|
+
const entries = message.content.flatMap((part) => {
|
|
28
|
+
if (part.type !== "tool-call" || !part.approval) return [];
|
|
29
|
+
const response = toolApprovalResponses.get(part.approval.id);
|
|
30
|
+
if (!response) return [];
|
|
31
|
+
return [[part.approval.id, {
|
|
32
|
+
approved: response.approved,
|
|
33
|
+
...response.optionId != null && { optionId: response.optionId },
|
|
34
|
+
...response.text != null && { text: response.text },
|
|
35
|
+
...response.answers != null && { answers: response.answers },
|
|
36
|
+
...response.reason != null && { reason: response.reason }
|
|
37
|
+
}]];
|
|
38
|
+
});
|
|
39
|
+
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
40
|
+
};
|
|
41
|
+
const addToolData = (message, toolArtifacts, toolInteractions, toolApprovalResponses) => {
|
|
42
|
+
if (!toolArtifacts && !toolInteractions && !toolApprovalResponses || !isRecord(message) || !Array.isArray(message.parts)) return message;
|
|
43
|
+
const toolCallIds = message.parts.flatMap((part) => {
|
|
44
|
+
if (!isRecord(part) || typeof part.toolCallId !== "string") return [];
|
|
45
|
+
return [part.toolCallId];
|
|
46
|
+
});
|
|
47
|
+
const artifacts = toolArtifacts ? Object.fromEntries(toolCallIds.flatMap((toolCallId) => Object.hasOwn(toolArtifacts, toolCallId) ? [[toolCallId, toolArtifacts[toolCallId]]] : [])) : void 0;
|
|
48
|
+
const interactions = toolInteractions ? Object.fromEntries(toolCallIds.flatMap((toolCallId) => Object.hasOwn(toolInteractions, toolCallId) ? [[toolCallId, toolInteractions[toolCallId]]] : [])) : void 0;
|
|
49
|
+
const approvalIds = message.parts.flatMap((part) => {
|
|
50
|
+
if (!isRecord(part) || !isRecord(part.approval)) return [];
|
|
51
|
+
const approvalId = part.approval.id;
|
|
52
|
+
return typeof approvalId === "string" ? [approvalId] : [];
|
|
53
|
+
});
|
|
54
|
+
const approvalResponses = toolApprovalResponses ? Object.fromEntries(approvalIds.flatMap((approvalId) => Object.hasOwn(toolApprovalResponses, approvalId) ? [[approvalId, toolApprovalResponses[approvalId]]] : [])) : void 0;
|
|
55
|
+
const hasArtifacts = !!artifacts && Object.keys(artifacts).length > 0;
|
|
56
|
+
const hasInteractions = !!interactions && Object.keys(interactions).length > 0;
|
|
57
|
+
const hasApprovalResponses = !!approvalResponses && Object.keys(approvalResponses).length > 0;
|
|
58
|
+
if (!hasArtifacts && !hasInteractions && !hasApprovalResponses) return message;
|
|
59
|
+
const metadata = isRecord(message.metadata) ? message.metadata : {};
|
|
60
|
+
return {
|
|
61
|
+
...message,
|
|
62
|
+
metadata: {
|
|
63
|
+
...metadata,
|
|
64
|
+
...hasArtifacts && { [TOOL_ARTIFACTS_METADATA_KEY]: artifacts },
|
|
65
|
+
...hasInteractions && { [TOOL_INTERACTIONS_METADATA_KEY]: interactions },
|
|
66
|
+
...hasApprovalResponses && { [TOOL_APPROVAL_RESPONSES_METADATA_KEY]: approvalResponses }
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
const restoreToolData = (message, toolArtifacts, toolInteractions, toolApprovalResponses) => {
|
|
71
|
+
if (!isRecord(message) || !isRecord(message.metadata)) return message;
|
|
72
|
+
const metadata = message.metadata;
|
|
73
|
+
const hasArtifacts = Object.hasOwn(metadata, TOOL_ARTIFACTS_METADATA_KEY);
|
|
74
|
+
const hasInteractions = Object.hasOwn(metadata, TOOL_INTERACTIONS_METADATA_KEY);
|
|
75
|
+
const hasApprovalResponses = Object.hasOwn(metadata, TOOL_APPROVAL_RESPONSES_METADATA_KEY);
|
|
76
|
+
if (!hasArtifacts && !hasInteractions && !hasApprovalResponses) return message;
|
|
77
|
+
const artifacts = metadata[TOOL_ARTIFACTS_METADATA_KEY];
|
|
78
|
+
if (toolArtifacts && isRecord(artifacts)) for (const [toolCallId, artifact] of Object.entries(artifacts)) toolArtifacts.set(toolCallId, artifact);
|
|
79
|
+
const interactions = metadata[TOOL_INTERACTIONS_METADATA_KEY];
|
|
80
|
+
if (toolInteractions && isRecord(interactions)) for (const [toolCallId, value] of Object.entries(interactions)) {
|
|
81
|
+
const log = readToolInteractionLog(value);
|
|
82
|
+
if (log) toolInteractions.set(toolCallId, log);
|
|
83
|
+
}
|
|
84
|
+
const approvalResponses = metadata[TOOL_APPROVAL_RESPONSES_METADATA_KEY];
|
|
85
|
+
if (toolApprovalResponses && isRecord(approvalResponses)) for (const [approvalId, value] of Object.entries(approvalResponses)) {
|
|
86
|
+
if (!isRecord(value) || typeof value.approved !== "boolean") continue;
|
|
87
|
+
const answers = normalizeToolApprovalAnswers(value.answers);
|
|
88
|
+
toolApprovalResponses.set(approvalId, {
|
|
89
|
+
approvalId,
|
|
90
|
+
approved: value.approved,
|
|
91
|
+
...typeof value.optionId === "string" && { optionId: value.optionId },
|
|
92
|
+
...typeof value.text === "string" && { text: value.text },
|
|
93
|
+
...answers && Object.keys(answers).length > 0 && { answers },
|
|
94
|
+
...typeof value.reason === "string" && { reason: value.reason }
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const { [TOOL_ARTIFACTS_METADATA_KEY]: _, [TOOL_INTERACTIONS_METADATA_KEY]: __, [TOOL_APPROVAL_RESPONSES_METADATA_KEY]: ___, ...restMetadata } = metadata;
|
|
98
|
+
const { metadata: _metadata, ...restMessage } = message;
|
|
99
|
+
return Object.keys(restMetadata).length === 0 ? restMessage : {
|
|
100
|
+
...restMessage,
|
|
101
|
+
metadata: restMetadata
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
//#endregion
|
|
105
|
+
export { addToolData, collectToolApprovalResponses, collectToolArtifacts, collectToolInteractions, restoreToolData };
|
|
106
|
+
|
|
107
|
+
//# sourceMappingURL=toolHistoryCodec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolHistoryCodec.js","names":["RespondToToolApprovalOptions","ThreadMessage","Unstable_ToolInteractionLog","isRecord","readToolInteractionLog","normalizeToolApprovalAnswers","TOOL_ARTIFACTS_METADATA_KEY","TOOL_INTERACTIONS_METADATA_KEY","TOOL_APPROVAL_RESPONSES_METADATA_KEY","StoredToolApprovalResponse","Omit","collectToolArtifacts","message","toolArtifacts","ReadonlyMap","undefined","entries","content","flatMap","part","type","artifact","get","toolCallId","const","length","Object","fromEntries","collectToolInteractions","toolInteractions","interactions","collectToolApprovalResponses","toolApprovalResponses","approval","response","id","approved","optionId","text","answers","reason","addToolData","TMessage","Record","Array","isArray","parts","toolCallIds","artifacts","hasOwn","approvalIds","approvalId","approvalResponses","hasArtifacts","keys","hasInteractions","hasApprovalResponses","metadata","restoreToolData","Map","set","value","log","_","__","___","restMetadata","_metadata","restMessage"],"sources":["../../src/runtime/toolHistoryCodec.ts"],"sourcesContent":["import type {\n RespondToToolApprovalOptions,\n ThreadMessage,\n Unstable_ToolInteractionLog,\n} from \"@assistant-ui/core\";\nimport { isRecord, readToolInteractionLog } from \"@assistant-ui/core/internal\";\nimport { normalizeToolApprovalAnswers } from \"../converters/toolApprovalAnswers\";\n\nconst TOOL_ARTIFACTS_METADATA_KEY = \"__aui_toolArtifacts\";\nconst TOOL_INTERACTIONS_METADATA_KEY = \"__aui_toolInteractions\";\nconst TOOL_APPROVAL_RESPONSES_METADATA_KEY = \"__aui_toolApprovalResponses\";\n\nexport type StoredToolApprovalResponse = Omit<\n RespondToToolApprovalOptions,\n \"approvalId\"\n>;\n\nexport const collectToolArtifacts = (\n message: ThreadMessage,\n toolArtifacts: ReadonlyMap<string, unknown> | undefined,\n) => {\n if (!toolArtifacts) return undefined;\n const entries = message.content.flatMap((part) => {\n if (part.type !== \"tool-call\") return [];\n const artifact = toolArtifacts.get(part.toolCallId);\n return artifact === undefined ? [] : [[part.toolCallId, artifact] as const];\n });\n return entries.length > 0 ? Object.fromEntries(entries) : undefined;\n};\n\nexport const collectToolInteractions = (\n message: ThreadMessage,\n toolInteractions:\n | ReadonlyMap<string, Unstable_ToolInteractionLog>\n | undefined,\n) => {\n if (!toolInteractions) return undefined;\n const entries = message.content.flatMap((part) => {\n if (part.type !== \"tool-call\") return [];\n const interactions = toolInteractions.get(part.toolCallId);\n return interactions === undefined\n ? []\n : [[part.toolCallId, interactions] as const];\n });\n return entries.length > 0 ? Object.fromEntries(entries) : undefined;\n};\n\nexport const collectToolApprovalResponses = (\n message: ThreadMessage,\n toolApprovalResponses:\n | ReadonlyMap<string, RespondToToolApprovalOptions>\n | undefined,\n) => {\n if (!toolApprovalResponses) return undefined;\n const entries = message.content.flatMap((part) => {\n if (part.type !== \"tool-call\" || !part.approval) return [];\n const response = toolApprovalResponses.get(part.approval.id);\n if (!response) return [];\n return [\n [\n part.approval.id,\n {\n approved: response.approved,\n ...(response.optionId != null && { optionId: response.optionId }),\n ...(response.text != null && { text: response.text }),\n ...(response.answers != null && { answers: response.answers }),\n ...(response.reason != null && { reason: response.reason }),\n },\n ] as const,\n ];\n });\n return entries.length > 0 ? Object.fromEntries(entries) : undefined;\n};\n\nexport const addToolData = <TMessage>(\n message: TMessage,\n toolArtifacts: Record<string, unknown> | undefined,\n toolInteractions: Record<string, Unstable_ToolInteractionLog> | undefined,\n toolApprovalResponses: Record<string, StoredToolApprovalResponse> | undefined,\n): TMessage => {\n if (\n (!toolArtifacts && !toolInteractions && !toolApprovalResponses) ||\n !isRecord(message) ||\n !Array.isArray(message.parts)\n )\n return message;\n const toolCallIds = message.parts.flatMap((part) => {\n if (!isRecord(part) || typeof part.toolCallId !== \"string\") return [];\n return [part.toolCallId];\n });\n const artifacts = toolArtifacts\n ? Object.fromEntries(\n toolCallIds.flatMap((toolCallId) =>\n Object.hasOwn(toolArtifacts, toolCallId)\n ? [[toolCallId, toolArtifacts[toolCallId]] as const]\n : [],\n ),\n )\n : undefined;\n const interactions = toolInteractions\n ? Object.fromEntries(\n toolCallIds.flatMap((toolCallId) =>\n Object.hasOwn(toolInteractions, toolCallId)\n ? [[toolCallId, toolInteractions[toolCallId]] as const]\n : [],\n ),\n )\n : undefined;\n const approvalIds = message.parts.flatMap((part) => {\n if (!isRecord(part) || !isRecord(part.approval)) return [];\n const approvalId = part.approval.id;\n return typeof approvalId === \"string\" ? [approvalId] : [];\n });\n const approvalResponses = toolApprovalResponses\n ? Object.fromEntries(\n approvalIds.flatMap((approvalId) =>\n Object.hasOwn(toolApprovalResponses, approvalId)\n ? [[approvalId, toolApprovalResponses[approvalId]] as const]\n : [],\n ),\n )\n : undefined;\n const hasArtifacts = !!artifacts && Object.keys(artifacts).length > 0;\n const hasInteractions =\n !!interactions && Object.keys(interactions).length > 0;\n const hasApprovalResponses =\n !!approvalResponses && Object.keys(approvalResponses).length > 0;\n if (!hasArtifacts && !hasInteractions && !hasApprovalResponses)\n return message;\n const metadata = isRecord(message.metadata) ? message.metadata : {};\n return {\n ...message,\n metadata: {\n ...metadata,\n ...(hasArtifacts && { [TOOL_ARTIFACTS_METADATA_KEY]: artifacts }),\n ...(hasInteractions && {\n [TOOL_INTERACTIONS_METADATA_KEY]: interactions,\n }),\n ...(hasApprovalResponses && {\n [TOOL_APPROVAL_RESPONSES_METADATA_KEY]: approvalResponses,\n }),\n },\n } as TMessage;\n};\n\nexport const restoreToolData = <TMessage>(\n message: TMessage,\n toolArtifacts: Map<string, unknown> | undefined,\n toolInteractions: Map<string, Unstable_ToolInteractionLog> | undefined,\n toolApprovalResponses: Map<string, RespondToToolApprovalOptions> | undefined,\n): TMessage => {\n if (!isRecord(message) || !isRecord(message.metadata)) return message;\n const metadata = message.metadata;\n const hasArtifacts = Object.hasOwn(metadata, TOOL_ARTIFACTS_METADATA_KEY);\n const hasInteractions = Object.hasOwn(\n metadata,\n TOOL_INTERACTIONS_METADATA_KEY,\n );\n const hasApprovalResponses = Object.hasOwn(\n metadata,\n TOOL_APPROVAL_RESPONSES_METADATA_KEY,\n );\n if (!hasArtifacts && !hasInteractions && !hasApprovalResponses)\n return message;\n const artifacts = metadata[TOOL_ARTIFACTS_METADATA_KEY];\n if (toolArtifacts && isRecord(artifacts)) {\n for (const [toolCallId, artifact] of Object.entries(artifacts)) {\n toolArtifacts.set(toolCallId, artifact);\n }\n }\n const interactions = metadata[TOOL_INTERACTIONS_METADATA_KEY];\n if (toolInteractions && isRecord(interactions)) {\n for (const [toolCallId, value] of Object.entries(interactions)) {\n const log = readToolInteractionLog(value);\n if (log) toolInteractions.set(toolCallId, log);\n }\n }\n const approvalResponses = metadata[TOOL_APPROVAL_RESPONSES_METADATA_KEY];\n if (toolApprovalResponses && isRecord(approvalResponses)) {\n for (const [approvalId, value] of Object.entries(approvalResponses)) {\n if (!isRecord(value) || typeof value.approved !== \"boolean\") continue;\n const answers = normalizeToolApprovalAnswers(value.answers);\n toolApprovalResponses.set(approvalId, {\n approvalId,\n approved: value.approved,\n ...(typeof value.optionId === \"string\" && {\n optionId: value.optionId,\n }),\n ...(typeof value.text === \"string\" && { text: value.text }),\n ...(answers && Object.keys(answers).length > 0 && { answers }),\n ...(typeof value.reason === \"string\" && { reason: value.reason }),\n });\n }\n }\n const {\n [TOOL_ARTIFACTS_METADATA_KEY]: _,\n [TOOL_INTERACTIONS_METADATA_KEY]: __,\n [TOOL_APPROVAL_RESPONSES_METADATA_KEY]: ___,\n ...restMetadata\n } = metadata;\n const { metadata: _metadata, ...restMessage } = message;\n return (\n Object.keys(restMetadata).length === 0\n ? restMessage\n : { ...restMessage, metadata: restMetadata }\n ) as TMessage;\n};\n"],"mappings":"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"}
|
|
@@ -10,12 +10,15 @@ export type AISDKRuntimeAdapter<UI_MESSAGE extends UIMessage = UIMessage> = Exte
|
|
|
10
10
|
suggestion?: SuggestionAdapter | undefined;
|
|
11
11
|
}) | undefined;
|
|
12
12
|
toCreateMessage?: CustomToCreateMessageFunction;
|
|
13
|
+
/** @deprecated Experimental since 2026-08-28. Not scheduled for removal; the API may change in any release. */
|
|
13
14
|
unstable_messageRepositoryInstance?: MessageRepository | undefined;
|
|
14
15
|
/**
|
|
15
16
|
* The object a host answer belongs to, normally the `Chat` the runtime
|
|
16
17
|
* renders. A host answer never reaches the `useChat` messages, so without
|
|
17
18
|
* an owner it lives only as long as this runtime. With an owner, it
|
|
18
19
|
* survives runtime remounts over the same chat.
|
|
20
|
+
*
|
|
21
|
+
* @deprecated Experimental since 2026-09-29. Not scheduled for removal; the API may change in any release.
|
|
19
22
|
*/
|
|
20
23
|
unstable_hostApprovalOwner?: object | undefined;
|
|
21
24
|
/**
|
|
@@ -74,7 +77,7 @@ export type AISDKRuntimeAdapter<UI_MESSAGE extends UIMessage = UIMessage> = Exte
|
|
|
74
77
|
* Called after an explicit `switchToBranch` (for example a BranchPicker
|
|
75
78
|
* click). Complements `setMessages` and does not enable switching by itself.
|
|
76
79
|
*
|
|
77
|
-
* @deprecated
|
|
80
|
+
* @deprecated Experimental since 2026-06-23. Not scheduled for removal; the API may change in any release.
|
|
78
81
|
*/
|
|
79
82
|
unstable_onBranchChange?: ExternalStoreAdapter["unstable_onBranchChange"];
|
|
80
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAISDKRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/useAISDKRuntime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAISDKRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/useAISDKRuntime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,SAAS,EACT,OAAO,EACP,eAAe,EAEhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAIhB,uBAAuB,EACvB,aAAa,EAGb,4BAA4B,EAE7B,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAGL,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAuBrC,MAAM,MAAM,6BAA6B,GAAG,CAC1C,UAAU,SAAS,SAAS,GAAG,SAAS,EAExC,OAAO,EAAE,aAAa,KACnB,eAAe,CAAC,UAAU,CAAC,CAAC;AA6BjC,MAAM,MAAM,mBAAmB,CAAC,UAAU,SAAS,SAAS,GAAG,SAAS,IACtE,0BAA0B,GAAG;IAC3B,QAAQ,CAAC,EACL,CAAC,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG;QAC/C,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;QAC3C,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;KAC5C,CAAC,GACF,SAAS,CAAC;IACd,eAAe,CAAC,EAAE,6BAA6B,CAAC;IAChD,+GAA+G;IAC/G,kCAAkC,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACnE;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD;;;;;;;OAOG;IACH,4BAA4B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAC5D;;;;;;OAMG;IACH,uBAAuB,CAAC,EACpB,CAAC,CACC,QAAQ,EAAE,4BAA4B,EACtC,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,sHAAsH;QACtH,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KACtC,KACE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAC1B,SAAS,CAAC;IACd;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACxD;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;CAC3E,CAAC;AAqUJ,eAAO,MAAM,eAAe,GAAI,UAAU,SAAS,SAAS,GAAG,SAAS,EACtE,aAAa,UAAU,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,EACnD,UAAS,mBAAmB,CAAC,UAAU,CAAM,qBAu2B9C,CAAC"}
|