@mastra/react 0.0.0-netlify-no-bundle-20251127120354 → 0.0.0-partial-response-backport-20251204204441
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/CHANGELOG.md +142 -39
- package/dist/index.cjs +24 -84
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -84
- package/dist/index.js.map +1 -1
- package/dist/react.css +1 -1
- package/dist/src/agent/hooks.d.ts +2 -2
- package/package.json +14 -10
- package/dist/src/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.d.ts +0 -10
- package/dist/src/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.test.d.ts +0 -1
package/dist/index.js
CHANGED
|
@@ -438,10 +438,11 @@ const toUIMessage = ({ chunk, conversation, metadata }) => {
|
|
|
438
438
|
const lastMessage = result[result.length - 1];
|
|
439
439
|
if (!lastMessage || lastMessage.role !== "assistant") return result;
|
|
440
440
|
const parts = lastMessage.parts.map((part) => {
|
|
441
|
-
if (
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
441
|
+
if (part.type === "text" && part.state === "streaming") {
|
|
442
|
+
return { ...part, state: "done" };
|
|
443
|
+
}
|
|
444
|
+
if (part.type === "reasoning" && part.state === "streaming") {
|
|
445
|
+
return { ...part, state: "done" };
|
|
445
446
|
}
|
|
446
447
|
return part;
|
|
447
448
|
});
|
|
@@ -613,23 +614,13 @@ const toAssistantUIMessage = (message) => {
|
|
|
613
614
|
};
|
|
614
615
|
}
|
|
615
616
|
if (part.type === "file") {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
metadata: message.metadata
|
|
624
|
-
};
|
|
625
|
-
}
|
|
626
|
-
if (type === "image") {
|
|
627
|
-
return {
|
|
628
|
-
type,
|
|
629
|
-
image: part.url,
|
|
630
|
-
metadata: message.metadata
|
|
631
|
-
};
|
|
632
|
-
}
|
|
617
|
+
return {
|
|
618
|
+
type: "file",
|
|
619
|
+
mimeType: part.mediaType,
|
|
620
|
+
data: part.url,
|
|
621
|
+
// Use URL as data source
|
|
622
|
+
metadata: message.metadata
|
|
623
|
+
};
|
|
633
624
|
}
|
|
634
625
|
if (part.type === "dynamic-tool") {
|
|
635
626
|
const baseToolCall = {
|
|
@@ -720,9 +711,7 @@ const toAssistantUIMessage = (message) => {
|
|
|
720
711
|
|
|
721
712
|
const resolveInitialMessages = (messages) => {
|
|
722
713
|
return messages.map((message) => {
|
|
723
|
-
const networkPart = message.parts.find(
|
|
724
|
-
(part) => typeof part === "object" && part !== null && "type" in part && part.type === "text" && "text" in part && typeof part.text === "string" && part.text.includes('"isNetwork":true')
|
|
725
|
-
);
|
|
714
|
+
const networkPart = message.parts.find((part) => part.type === "text" && part.text.includes('"isNetwork":true'));
|
|
726
715
|
if (networkPart && networkPart.type === "text") {
|
|
727
716
|
try {
|
|
728
717
|
const json = JSON.parse(networkPart.text);
|
|
@@ -1207,51 +1196,6 @@ class AISdkNetworkTransformer {
|
|
|
1207
1196
|
};
|
|
1208
1197
|
}
|
|
1209
1198
|
|
|
1210
|
-
const fromCoreUserMessageToUIMessage = (coreUserMessage) => {
|
|
1211
|
-
const id = `user-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
1212
|
-
const parts = typeof coreUserMessage.content === "string" ? [
|
|
1213
|
-
{
|
|
1214
|
-
type: "text",
|
|
1215
|
-
text: coreUserMessage.content
|
|
1216
|
-
}
|
|
1217
|
-
] : coreUserMessage.content.map((part) => {
|
|
1218
|
-
switch (part.type) {
|
|
1219
|
-
case "text": {
|
|
1220
|
-
return {
|
|
1221
|
-
type: "text",
|
|
1222
|
-
text: part.text
|
|
1223
|
-
};
|
|
1224
|
-
}
|
|
1225
|
-
case "image": {
|
|
1226
|
-
const url = typeof part.image === "string" ? part.image : part.image instanceof URL ? part.image.toString() : "";
|
|
1227
|
-
return {
|
|
1228
|
-
type: "file",
|
|
1229
|
-
mediaType: part.mimeType ?? "image/*",
|
|
1230
|
-
url
|
|
1231
|
-
};
|
|
1232
|
-
}
|
|
1233
|
-
case "file": {
|
|
1234
|
-
const url = typeof part.data === "string" ? part.data : part.data instanceof URL ? part.data.toString() : "";
|
|
1235
|
-
return {
|
|
1236
|
-
type: "file",
|
|
1237
|
-
mediaType: part.mimeType,
|
|
1238
|
-
url,
|
|
1239
|
-
...part.filename !== void 0 ? { filename: part.filename } : {}
|
|
1240
|
-
};
|
|
1241
|
-
}
|
|
1242
|
-
default: {
|
|
1243
|
-
const exhaustiveCheck = part;
|
|
1244
|
-
throw new Error(`Unhandled content part type: ${exhaustiveCheck.type}`);
|
|
1245
|
-
}
|
|
1246
|
-
}
|
|
1247
|
-
});
|
|
1248
|
-
return {
|
|
1249
|
-
id,
|
|
1250
|
-
role: "user",
|
|
1251
|
-
parts
|
|
1252
|
-
};
|
|
1253
|
-
};
|
|
1254
|
-
|
|
1255
1199
|
const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
1256
1200
|
const extractRunIdFromMessages = (messages2) => {
|
|
1257
1201
|
for (const message of messages2) {
|
|
@@ -1275,7 +1219,7 @@ const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
|
1275
1219
|
const [isRunning, setIsRunning] = useState(false);
|
|
1276
1220
|
const generate = async ({
|
|
1277
1221
|
coreUserMessages,
|
|
1278
|
-
|
|
1222
|
+
runtimeContext,
|
|
1279
1223
|
threadId,
|
|
1280
1224
|
modelSettings,
|
|
1281
1225
|
signal,
|
|
@@ -1313,7 +1257,7 @@ const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
|
1313
1257
|
topP
|
|
1314
1258
|
},
|
|
1315
1259
|
instructions,
|
|
1316
|
-
|
|
1260
|
+
runtimeContext,
|
|
1317
1261
|
...threadId ? { threadId, resourceId: resourceId || agentId } : {},
|
|
1318
1262
|
providerOptions
|
|
1319
1263
|
});
|
|
@@ -1329,7 +1273,7 @@ const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
|
1329
1273
|
setMessages((prev) => [...prev, ...mastraUIMessages]);
|
|
1330
1274
|
}
|
|
1331
1275
|
};
|
|
1332
|
-
const stream = async ({ coreUserMessages,
|
|
1276
|
+
const stream = async ({ coreUserMessages, runtimeContext, threadId, onChunk, modelSettings, signal }) => {
|
|
1333
1277
|
const {
|
|
1334
1278
|
frequencyPenalty,
|
|
1335
1279
|
presencePenalty,
|
|
@@ -1364,7 +1308,7 @@ const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
|
1364
1308
|
topP
|
|
1365
1309
|
},
|
|
1366
1310
|
instructions,
|
|
1367
|
-
|
|
1311
|
+
runtimeContext,
|
|
1368
1312
|
...threadId ? { threadId, resourceId: resourceId || agentId } : {},
|
|
1369
1313
|
providerOptions,
|
|
1370
1314
|
requireToolApproval
|
|
@@ -1381,7 +1325,7 @@ const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
|
1381
1325
|
};
|
|
1382
1326
|
const network = async ({
|
|
1383
1327
|
coreUserMessages,
|
|
1384
|
-
|
|
1328
|
+
runtimeContext,
|
|
1385
1329
|
threadId,
|
|
1386
1330
|
onNetworkChunk,
|
|
1387
1331
|
modelSettings,
|
|
@@ -1408,7 +1352,7 @@ const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
|
1408
1352
|
topP
|
|
1409
1353
|
},
|
|
1410
1354
|
runId,
|
|
1411
|
-
|
|
1355
|
+
runtimeContext,
|
|
1412
1356
|
...threadId ? { thread: threadId, resourceId: resourceId || agentId } : {}
|
|
1413
1357
|
});
|
|
1414
1358
|
const transformer = new AISdkNetworkTransformer();
|
|
@@ -1461,18 +1405,14 @@ const useChat = ({ agentId, resourceId, initializeMessages }) => {
|
|
|
1461
1405
|
};
|
|
1462
1406
|
const sendMessage = async ({ mode = "stream", ...args }) => {
|
|
1463
1407
|
const nextMessage = { role: "user", content: [{ type: "text", text: args.message }] };
|
|
1464
|
-
const
|
|
1465
|
-
|
|
1466
|
-
coreUserMessages.push(...args.coreUserMessages);
|
|
1467
|
-
}
|
|
1468
|
-
const uiMessages = coreUserMessages.map(fromCoreUserMessageToUIMessage);
|
|
1469
|
-
setMessages((s) => [...s, ...uiMessages]);
|
|
1408
|
+
const messages2 = args.coreUserMessages ? [nextMessage, ...args.coreUserMessages] : [nextMessage];
|
|
1409
|
+
setMessages((s) => [...s, { role: "user", parts: [{ type: "text", text: args.message }] }]);
|
|
1470
1410
|
if (mode === "generate") {
|
|
1471
|
-
await generate({ ...args, coreUserMessages });
|
|
1411
|
+
await generate({ ...args, coreUserMessages: messages2 });
|
|
1472
1412
|
} else if (mode === "stream") {
|
|
1473
|
-
await stream({ ...args, coreUserMessages });
|
|
1413
|
+
await stream({ ...args, coreUserMessages: messages2 });
|
|
1474
1414
|
} else if (mode === "network") {
|
|
1475
|
-
await network({ ...args, coreUserMessages });
|
|
1415
|
+
await network({ ...args, coreUserMessages: messages2 });
|
|
1476
1416
|
}
|
|
1477
1417
|
};
|
|
1478
1418
|
return {
|