@assistant-ui/react-ai-sdk 1.3.26 → 1.3.28
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/frontendTools.d.ts +9 -5
- package/dist/frontendTools.d.ts.map +1 -1
- package/dist/frontendTools.js +36 -35
- package/dist/frontendTools.js.map +1 -1
- package/dist/index.d.ts +9 -11
- package/dist/index.js +9 -10
- package/dist/injectQuoteContext.d.ts +6 -2
- package/dist/injectQuoteContext.d.ts.map +1 -1
- package/dist/injectQuoteContext.js +46 -53
- package/dist/injectQuoteContext.js.map +1 -1
- package/dist/modelContentEnvelope.d.ts +12 -10
- package/dist/modelContentEnvelope.d.ts.map +1 -1
- package/dist/modelContentEnvelope.js +17 -15
- package/dist/modelContentEnvelope.js.map +1 -1
- package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts +141 -0
- package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts.map +1 -0
- package/dist/packages/assistant-stream/dist/core/AssistantStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/AssistantStreamChunk.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/accumulators/AssistantMessageStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/accumulators/assistant-message-accumulator.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/modules/assistant-stream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/modules/text.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/modules/tool-call.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/serialization/PlainText.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/serialization/assistant-transport/AssistantTransport.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/serialization/data-stream/DataStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/tool/ToolExecutionStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/tool/schema-utils.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/tool/schema-utils.js +50 -0
- package/dist/packages/assistant-stream/dist/core/tool/schema-utils.js.map +1 -0
- package/dist/packages/assistant-stream/dist/core/tool/tool-types.d.ts +43 -0
- package/dist/packages/assistant-stream/dist/core/tool/tool-types.d.ts.map +1 -0
- package/dist/packages/assistant-stream/dist/core/tool/toolResultStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/utils/stream/AssistantTransformStream.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/core/utils/types.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/index.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/resumable/createResumableAssistantStreamResponse.d.ts +6 -0
- package/dist/packages/assistant-stream/dist/resumable/createResumableAssistantStreamResponse.d.ts.map +1 -0
- package/dist/packages/assistant-stream/dist/resumable/createResumableAssistantStreamResponse.js +6 -0
- package/dist/packages/assistant-stream/dist/resumable/createResumableAssistantStreamResponse.js.map +1 -0
- package/dist/packages/assistant-stream/dist/resumable/index.d.ts +1 -0
- package/dist/packages/assistant-stream/dist/utils/json/json-value.d.ts +10 -0
- package/dist/packages/assistant-stream/dist/utils/json/json-value.d.ts.map +1 -0
- package/dist/packages/assistant-stream/dist/utils.d.ts +1 -0
- package/dist/ui/adapters/aiSDKFormatAdapter.d.ts +8 -4
- package/dist/ui/adapters/aiSDKFormatAdapter.d.ts.map +1 -1
- package/dist/ui/adapters/aiSDKFormatAdapter.js +24 -20
- package/dist/ui/adapters/aiSDKFormatAdapter.js.map +1 -1
- package/dist/ui/getVercelAIMessages.d.ts +7 -3
- package/dist/ui/getVercelAIMessages.d.ts.map +1 -1
- package/dist/ui/getVercelAIMessages.js +7 -3
- package/dist/ui/getVercelAIMessages.js.map +1 -1
- package/dist/ui/resumable.d.ts +18 -15
- package/dist/ui/resumable.d.ts.map +1 -1
- package/dist/ui/resumable.js +21 -20
- package/dist/ui/resumable.js.map +1 -1
- package/dist/ui/use-chat/AssistantChatTransport.d.ts +17 -14
- package/dist/ui/use-chat/AssistantChatTransport.d.ts.map +1 -1
- package/dist/ui/use-chat/AssistantChatTransport.js +98 -108
- package/dist/ui/use-chat/AssistantChatTransport.js.map +1 -1
- package/dist/ui/use-chat/useAISDKRuntime.d.ts +43 -33
- package/dist/ui/use-chat/useAISDKRuntime.d.ts.map +1 -1
- package/dist/ui/use-chat/useAISDKRuntime.js +184 -204
- package/dist/ui/use-chat/useAISDKRuntime.js.map +1 -1
- package/dist/ui/use-chat/useChatRuntime.d.ts +19 -12
- package/dist/ui/use-chat/useChatRuntime.d.ts.map +1 -1
- package/dist/ui/use-chat/useChatRuntime.js +60 -81
- package/dist/ui/use-chat/useChatRuntime.js.map +1 -1
- package/dist/ui/use-chat/useExternalHistory.d.ts +8 -4
- package/dist/ui/use-chat/useExternalHistory.d.ts.map +1 -1
- package/dist/ui/use-chat/useExternalHistory.js +178 -200
- package/dist/ui/use-chat/useExternalHistory.js.map +1 -1
- package/dist/ui/use-chat/useStreamingTiming.d.ts +7 -3
- package/dist/ui/use-chat/useStreamingTiming.d.ts.map +1 -1
- package/dist/ui/use-chat/useStreamingTiming.js +60 -75
- package/dist/ui/use-chat/useStreamingTiming.js.map +1 -1
- package/dist/ui/utils/convertMessage.d.ts +29 -20
- package/dist/ui/utils/convertMessage.d.ts.map +1 -1
- package/dist/ui/utils/convertMessage.js +207 -301
- package/dist/ui/utils/convertMessage.js.map +1 -1
- package/dist/ui/utils/sliceMessagesUntil.d.ts +6 -2
- package/dist/ui/utils/sliceMessagesUntil.d.ts.map +1 -1
- package/dist/ui/utils/sliceMessagesUntil.js +10 -10
- package/dist/ui/utils/sliceMessagesUntil.js.map +1 -1
- package/dist/ui/utils/toCreateMessage.d.ts +7 -3
- package/dist/ui/utils/toCreateMessage.d.ts.map +1 -1
- package/dist/ui/utils/toCreateMessage.js +34 -38
- package/dist/ui/utils/toCreateMessage.js.map +1 -1
- package/dist/ui/utils/vercelAttachmentAdapter.d.ts +6 -2
- package/dist/ui/utils/vercelAttachmentAdapter.d.ts.map +1 -1
- package/dist/ui/utils/vercelAttachmentAdapter.js +37 -35
- package/dist/ui/utils/vercelAttachmentAdapter.js.map +1 -1
- package/dist/usage.d.ts +15 -12
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +80 -99
- package/dist/usage.js.map +1 -1
- package/package.json +11 -11
- package/src/ui/use-chat/useAISDKRuntime.test.ts +2 -2
- package/src/ui/use-chat/useAISDKRuntime.ts +8 -0
- package/src/ui/utils/convertMessage.test.ts +71 -6
- package/src/ui/utils/convertMessage.ts +27 -25
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -186,7 +186,7 @@ describe("AISDKMessageConverter", () => {
|
|
|
186
186
|
});
|
|
187
187
|
});
|
|
188
188
|
|
|
189
|
-
it("deduplicates tool calls by toolCallId and
|
|
189
|
+
it("deduplicates tool calls by toolCallId and surfaces approval / interrupt state", () => {
|
|
190
190
|
const converted = AISDKMessageConverter.toThreadMessages(
|
|
191
191
|
[
|
|
192
192
|
{
|
|
@@ -212,7 +212,7 @@ describe("AISDKMessageConverter", () => {
|
|
|
212
212
|
toolCallId: "tc-2",
|
|
213
213
|
state: "approval-requested",
|
|
214
214
|
input: { action: "deploy" },
|
|
215
|
-
approval: {
|
|
215
|
+
approval: { id: "appr-1" },
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
type: "tool-human",
|
|
@@ -220,6 +220,39 @@ describe("AISDKMessageConverter", () => {
|
|
|
220
220
|
state: "input-available",
|
|
221
221
|
input: { task: "confirm" },
|
|
222
222
|
},
|
|
223
|
+
{
|
|
224
|
+
type: "tool-approve",
|
|
225
|
+
toolCallId: "tc-4",
|
|
226
|
+
state: "approval-responded",
|
|
227
|
+
input: { action: "rollback" },
|
|
228
|
+
approval: { id: "appr-2", approved: true, reason: "looks ok" },
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
type: "tool-approve",
|
|
232
|
+
toolCallId: "tc-5",
|
|
233
|
+
state: "approval-requested",
|
|
234
|
+
input: { action: "auto" },
|
|
235
|
+
approval: { id: "appr-3", isAutomatic: true },
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
type: "tool-approve",
|
|
239
|
+
toolCallId: "tc-6",
|
|
240
|
+
state: "output-denied",
|
|
241
|
+
input: { action: "wipe" },
|
|
242
|
+
approval: {
|
|
243
|
+
id: "appr-4",
|
|
244
|
+
approved: false,
|
|
245
|
+
reason: "user denied",
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
type: "tool-approve",
|
|
250
|
+
toolCallId: "tc-7",
|
|
251
|
+
state: "output-available",
|
|
252
|
+
input: { action: "ship" },
|
|
253
|
+
output: { ok: true },
|
|
254
|
+
approval: { id: "appr-5", approved: true, isAutomatic: true },
|
|
255
|
+
},
|
|
223
256
|
],
|
|
224
257
|
} as any,
|
|
225
258
|
],
|
|
@@ -237,17 +270,49 @@ describe("AISDKMessageConverter", () => {
|
|
|
237
270
|
const toolCalls = converted[0]?.content.filter(
|
|
238
271
|
(part): part is any => part.type === "tool-call",
|
|
239
272
|
);
|
|
240
|
-
expect(toolCalls).toHaveLength(
|
|
273
|
+
expect(toolCalls).toHaveLength(7);
|
|
241
274
|
|
|
242
275
|
expect(toolCalls?.filter((p) => p.toolCallId === "tc-1")).toHaveLength(1);
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
276
|
+
|
|
277
|
+
expect(toolCalls?.find((p) => p.toolCallId === "tc-2")?.approval).toEqual({
|
|
278
|
+
id: "appr-1",
|
|
246
279
|
});
|
|
280
|
+
expect(
|
|
281
|
+
toolCalls?.find((p) => p.toolCallId === "tc-2")?.interrupt,
|
|
282
|
+
).toBeUndefined();
|
|
283
|
+
|
|
247
284
|
expect(toolCalls?.find((p) => p.toolCallId === "tc-3")?.interrupt).toEqual({
|
|
248
285
|
type: "human",
|
|
249
286
|
payload: { kind: "human" },
|
|
250
287
|
});
|
|
288
|
+
expect(
|
|
289
|
+
toolCalls?.find((p) => p.toolCallId === "tc-3")?.approval,
|
|
290
|
+
).toBeUndefined();
|
|
291
|
+
|
|
292
|
+
expect(toolCalls?.find((p) => p.toolCallId === "tc-4")?.approval).toEqual({
|
|
293
|
+
id: "appr-2",
|
|
294
|
+
approved: true,
|
|
295
|
+
reason: "looks ok",
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
expect(toolCalls?.find((p) => p.toolCallId === "tc-5")?.approval).toEqual({
|
|
299
|
+
id: "appr-3",
|
|
300
|
+
isAutomatic: true,
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
const denied = toolCalls?.find((p) => p.toolCallId === "tc-6");
|
|
304
|
+
expect(denied?.approval).toEqual({
|
|
305
|
+
id: "appr-4",
|
|
306
|
+
approved: false,
|
|
307
|
+
reason: "user denied",
|
|
308
|
+
});
|
|
309
|
+
expect(denied?.isError).toBe(true);
|
|
310
|
+
|
|
311
|
+
expect(toolCalls?.find((p) => p.toolCallId === "tc-7")?.approval).toEqual({
|
|
312
|
+
id: "appr-5",
|
|
313
|
+
approved: true,
|
|
314
|
+
isAutomatic: true,
|
|
315
|
+
});
|
|
251
316
|
});
|
|
252
317
|
|
|
253
318
|
it("strips closing delimiters from streaming tool argsText", () => {
|
|
@@ -141,37 +141,39 @@ function stableStringifyToolArgs(
|
|
|
141
141
|
return JSON.stringify(stableArgs);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
144
|
+
function getToolApprovalAndInterrupt(
|
|
145
|
+
part: {
|
|
146
|
+
approval?:
|
|
147
|
+
| {
|
|
148
|
+
id: string;
|
|
149
|
+
approved?: boolean;
|
|
150
|
+
reason?: string;
|
|
151
|
+
isAutomatic?: boolean;
|
|
152
|
+
}
|
|
153
|
+
| undefined;
|
|
154
|
+
},
|
|
153
155
|
toolStatus: { type: string; payload?: unknown } | undefined,
|
|
154
|
-
):
|
|
155
|
-
|
|
156
|
+
): {
|
|
157
|
+
approval?: NonNullable<ToolCallMessagePart["approval"]>;
|
|
158
|
+
interrupt?: NonNullable<ToolCallMessagePart["interrupt"]>;
|
|
159
|
+
} {
|
|
160
|
+
if (part.approval && typeof part.approval.id === "string") {
|
|
161
|
+
const { id, approved, reason, isAutomatic } = part.approval;
|
|
156
162
|
return {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
type: "requires-action" as const,
|
|
163
|
-
reason: "interrupt" as const,
|
|
163
|
+
approval: {
|
|
164
|
+
id,
|
|
165
|
+
...(typeof approved === "boolean" && { approved }),
|
|
166
|
+
...(typeof reason === "string" && { reason }),
|
|
167
|
+
...(isAutomatic === true && { isAutomatic: true }),
|
|
164
168
|
},
|
|
165
169
|
};
|
|
166
170
|
}
|
|
167
171
|
|
|
168
172
|
if (toolStatus?.type === "interrupt") {
|
|
169
173
|
return {
|
|
170
|
-
interrupt: toolStatus.payload
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
reason: "interrupt" as const,
|
|
174
|
-
},
|
|
174
|
+
interrupt: toolStatus.payload as NonNullable<
|
|
175
|
+
ToolCallMessagePart["interrupt"]
|
|
176
|
+
>,
|
|
175
177
|
};
|
|
176
178
|
}
|
|
177
179
|
|
|
@@ -242,7 +244,7 @@ function convertParts(
|
|
|
242
244
|
isError = true;
|
|
243
245
|
result = {
|
|
244
246
|
error:
|
|
245
|
-
(part as { approval
|
|
247
|
+
(part as { approval?: { reason?: string } }).approval?.reason ||
|
|
246
248
|
"Tool approval denied",
|
|
247
249
|
};
|
|
248
250
|
}
|
|
@@ -281,7 +283,7 @@ function convertParts(
|
|
|
281
283
|
isError,
|
|
282
284
|
...(modelContent !== undefined && { modelContent }),
|
|
283
285
|
...(mcpApp && { mcp: { app: mcpApp } }),
|
|
284
|
-
...
|
|
286
|
+
...getToolApprovalAndInterrupt(part, toolStatus),
|
|
285
287
|
} satisfies ToolCallMessagePart;
|
|
286
288
|
}
|
|
287
289
|
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,yCAAsC;AAChE,OAAO,EAAE,cAAc,EAAE,wCAAqC;AAC9D,YAAY,EAAE,qBAAqB,EAAE,wCAAqC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,gDAA6C;AAC9E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,0BAAuB;AACxB,YAAY,EACV,6BAA6B,EAC7B,sBAAsB,GACvB,0BAAuB;AACxB,OAAO,EAAE,aAAa,EAAE,2BAAwB;AAChD,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAC1D,YAAY,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,mBAAgB;AAC9E,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,mBAAgB"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,kDAAkD;AAElD,OAAO,EAAE,eAAe,EAAE,yCAAsC;AAChE,OAAO,EAAE,cAAc,EAAE,wCAAqC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,gDAA6C;AAC9E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,0BAAuB;AAKxB,OAAO,EAAE,aAAa,EAAE,2BAAwB;AAChD,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAE1D,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,mBAAgB"}
|