feat: AI SDK v6 support (#18433)
This commit is contained in:
@@ -573,11 +573,11 @@ export namespace MessageV2 {
|
||||
}))
|
||||
}
|
||||
|
||||
export function toModelMessages(
|
||||
export async function toModelMessages(
|
||||
input: WithParts[],
|
||||
model: Provider.Model,
|
||||
options?: { stripMedia?: boolean },
|
||||
): ModelMessage[] {
|
||||
): Promise<ModelMessage[]> {
|
||||
const result: UIMessage[] = []
|
||||
const toolNames = new Set<string>()
|
||||
// Track media from tool results that need to be injected as user messages
|
||||
@@ -601,7 +601,8 @@ export namespace MessageV2 {
|
||||
return false
|
||||
})()
|
||||
|
||||
const toModelOutput = (output: unknown) => {
|
||||
const toModelOutput = (options: { toolCallId: string; input: unknown; output: unknown }) => {
|
||||
const output = options.output
|
||||
if (typeof output === "string") {
|
||||
return { type: "text", value: output }
|
||||
}
|
||||
@@ -799,7 +800,7 @@ export namespace MessageV2 {
|
||||
|
||||
const tools = Object.fromEntries(Array.from(toolNames).map((toolName) => [toolName, { toModelOutput }]))
|
||||
|
||||
return convertToModelMessages(
|
||||
return await convertToModelMessages(
|
||||
result.filter((msg) => msg.parts.some((part) => part.type !== "step-start")),
|
||||
{
|
||||
//@ts-expect-error (convertToModelMessages expects a ToolSet but only actually needs tools[name]?.toModelOutput)
|
||||
@@ -871,7 +872,13 @@ export namespace MessageV2 {
|
||||
db.select().from(PartTable).where(eq(PartTable.message_id, message_id)).orderBy(PartTable.id).all(),
|
||||
)
|
||||
return rows.map(
|
||||
(row) => ({ ...row.data, id: row.id, sessionID: row.session_id, messageID: row.message_id }) as MessageV2.Part,
|
||||
(row) =>
|
||||
({
|
||||
...row.data,
|
||||
id: row.id,
|
||||
sessionID: row.session_id,
|
||||
messageID: row.message_id,
|
||||
}) as MessageV2.Part,
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user