@mastra/react 0.4.1-alpha.1 → 0.4.1-alpha.10
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 +77 -0
- package/dist/agent/hooks.d.ts +7 -1
- package/dist/agent/hooks.d.ts.map +1 -1
- package/dist/index.cjs +119 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +119 -49
- package/dist/index.js.map +1 -1
- package/dist/lib/ai-sdk/utils/toUIMessage.d.ts.map +1 -1
- package/dist/mastra-react-provider.d.ts +1 -1
- package/package.json +9 -5
package/dist/index.js
CHANGED
|
@@ -67,39 +67,6 @@ var MastraReactProvider = ({
|
|
|
67
67
|
);
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
// src/agent/extractRunIdFromMessages.ts
|
|
71
|
-
var extractRunIdFromMessages = (messages) => {
|
|
72
|
-
for (const message of messages) {
|
|
73
|
-
const metadataSources = [
|
|
74
|
-
message.metadata?.pendingToolApprovals,
|
|
75
|
-
message.metadata?.requireApprovalMetadata,
|
|
76
|
-
message.metadata?.suspendedTools
|
|
77
|
-
];
|
|
78
|
-
for (const source of metadataSources) {
|
|
79
|
-
if (!source || typeof source !== "object") continue;
|
|
80
|
-
for (const suspensionData of Object.values(source)) {
|
|
81
|
-
if (suspensionData && typeof suspensionData === "object" && typeof suspensionData.runId === "string" && suspensionData.runId.length > 0) {
|
|
82
|
-
return suspensionData.runId;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return void 0;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
// src/agent/signal-data.ts
|
|
91
|
-
function convertSignalDataToBase64String(content) {
|
|
92
|
-
if (typeof content === "string") {
|
|
93
|
-
return content;
|
|
94
|
-
}
|
|
95
|
-
const bytes = content instanceof ArrayBuffer ? new Uint8Array(content) : content;
|
|
96
|
-
let binary = "";
|
|
97
|
-
for (const byte of bytes) {
|
|
98
|
-
binary += String.fromCharCode(byte);
|
|
99
|
-
}
|
|
100
|
-
return btoa(binary);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
70
|
// src/lib/ai-sdk/utils/formatCompletionFeedback.ts
|
|
104
71
|
var formatBaseCompletionFeedback = (result, maxIterationReached, formatScorerHeading, incompleteMessage) => {
|
|
105
72
|
const lines = [];
|
|
@@ -511,6 +478,39 @@ var toUIMessage = ({ chunk, conversation, metadata }) => {
|
|
|
511
478
|
}
|
|
512
479
|
];
|
|
513
480
|
}
|
|
481
|
+
case "reasoning-start": {
|
|
482
|
+
const lastMessage = result[result.length - 1];
|
|
483
|
+
if (!lastMessage || lastMessage.role !== "assistant") {
|
|
484
|
+
const newMessage = {
|
|
485
|
+
id: `reasoning-${chunk.runId + Date.now()}`,
|
|
486
|
+
role: "assistant",
|
|
487
|
+
parts: [
|
|
488
|
+
{
|
|
489
|
+
type: "reasoning",
|
|
490
|
+
text: "",
|
|
491
|
+
state: "streaming",
|
|
492
|
+
providerMetadata: chunk.payload.providerMetadata
|
|
493
|
+
}
|
|
494
|
+
],
|
|
495
|
+
metadata
|
|
496
|
+
};
|
|
497
|
+
return [...result, newMessage];
|
|
498
|
+
}
|
|
499
|
+
const parts = [...lastMessage.parts];
|
|
500
|
+
parts.push({
|
|
501
|
+
type: "reasoning",
|
|
502
|
+
text: "",
|
|
503
|
+
state: "streaming",
|
|
504
|
+
providerMetadata: chunk.payload.providerMetadata
|
|
505
|
+
});
|
|
506
|
+
return [
|
|
507
|
+
...result.slice(0, -1),
|
|
508
|
+
{
|
|
509
|
+
...lastMessage,
|
|
510
|
+
parts
|
|
511
|
+
}
|
|
512
|
+
];
|
|
513
|
+
}
|
|
514
514
|
case "reasoning-delta": {
|
|
515
515
|
const lastMessage = result[result.length - 1];
|
|
516
516
|
if (!lastMessage || lastMessage.role !== "assistant") {
|
|
@@ -554,6 +554,36 @@ var toUIMessage = ({ chunk, conversation, metadata }) => {
|
|
|
554
554
|
}
|
|
555
555
|
];
|
|
556
556
|
}
|
|
557
|
+
case "reasoning-end": {
|
|
558
|
+
const lastMessage = result[result.length - 1];
|
|
559
|
+
if (!lastMessage || lastMessage.role !== "assistant") return result;
|
|
560
|
+
const parts = [...lastMessage.parts];
|
|
561
|
+
const reasoningPartIndex = parts.findLastIndex(
|
|
562
|
+
(part) => part.type === "reasoning" && part.state === "streaming"
|
|
563
|
+
);
|
|
564
|
+
if (reasoningPartIndex === -1) return result;
|
|
565
|
+
const reasoningPart = parts[reasoningPartIndex];
|
|
566
|
+
if (reasoningPart.type !== "reasoning") return result;
|
|
567
|
+
const existingMetadata = reasoningPart.providerMetadata;
|
|
568
|
+
const endMetadata = chunk.payload.providerMetadata;
|
|
569
|
+
parts[reasoningPartIndex] = {
|
|
570
|
+
...reasoningPart,
|
|
571
|
+
state: "done",
|
|
572
|
+
...existingMetadata || endMetadata ? {
|
|
573
|
+
providerMetadata: {
|
|
574
|
+
...existingMetadata ?? {},
|
|
575
|
+
...endMetadata ?? {}
|
|
576
|
+
}
|
|
577
|
+
} : {}
|
|
578
|
+
};
|
|
579
|
+
return [
|
|
580
|
+
...result.slice(0, -1),
|
|
581
|
+
{
|
|
582
|
+
...lastMessage,
|
|
583
|
+
parts
|
|
584
|
+
}
|
|
585
|
+
];
|
|
586
|
+
}
|
|
557
587
|
case "tool-call": {
|
|
558
588
|
const lastMessage = result[result.length - 1];
|
|
559
589
|
if (!lastMessage || lastMessage.role !== "assistant") {
|
|
@@ -1956,6 +1986,39 @@ var fromCoreUserMessageToUIMessage = (coreUserMessage) => {
|
|
|
1956
1986
|
};
|
|
1957
1987
|
};
|
|
1958
1988
|
|
|
1989
|
+
// src/agent/extractRunIdFromMessages.ts
|
|
1990
|
+
var extractRunIdFromMessages = (messages) => {
|
|
1991
|
+
for (const message of messages) {
|
|
1992
|
+
const metadataSources = [
|
|
1993
|
+
message.metadata?.pendingToolApprovals,
|
|
1994
|
+
message.metadata?.requireApprovalMetadata,
|
|
1995
|
+
message.metadata?.suspendedTools
|
|
1996
|
+
];
|
|
1997
|
+
for (const source of metadataSources) {
|
|
1998
|
+
if (!source || typeof source !== "object") continue;
|
|
1999
|
+
for (const suspensionData of Object.values(source)) {
|
|
2000
|
+
if (suspensionData && typeof suspensionData === "object" && typeof suspensionData.runId === "string" && suspensionData.runId.length > 0) {
|
|
2001
|
+
return suspensionData.runId;
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
2006
|
+
return void 0;
|
|
2007
|
+
};
|
|
2008
|
+
|
|
2009
|
+
// src/agent/signal-data.ts
|
|
2010
|
+
function convertSignalDataToBase64String(content) {
|
|
2011
|
+
if (typeof content === "string") {
|
|
2012
|
+
return content;
|
|
2013
|
+
}
|
|
2014
|
+
const bytes = content instanceof ArrayBuffer ? new Uint8Array(content) : content;
|
|
2015
|
+
let binary = "";
|
|
2016
|
+
for (const byte of bytes) {
|
|
2017
|
+
binary += String.fromCharCode(byte);
|
|
2018
|
+
}
|
|
2019
|
+
return btoa(binary);
|
|
2020
|
+
}
|
|
2021
|
+
|
|
1959
2022
|
// src/agent/hooks.ts
|
|
1960
2023
|
var isThreadSignalUnsupportedError = (error) => {
|
|
1961
2024
|
const candidate = error;
|
|
@@ -1971,6 +2034,7 @@ var useChat = ({
|
|
|
1971
2034
|
threadId,
|
|
1972
2035
|
initialMessages,
|
|
1973
2036
|
requestContext: propsRequestContext,
|
|
2037
|
+
clientTools: hookClientTools,
|
|
1974
2038
|
onSignalSent,
|
|
1975
2039
|
onSignalEcho,
|
|
1976
2040
|
onThreadSignalsUnsupported,
|
|
@@ -2164,6 +2228,7 @@ var useChat = ({
|
|
|
2164
2228
|
requireToolApproval
|
|
2165
2229
|
} = modelSettings || {};
|
|
2166
2230
|
const resolvedRequestContext = requestContext ?? propsRequestContext;
|
|
2231
|
+
const resolvedClientTools = clientTools ?? hookClientTools;
|
|
2167
2232
|
_requestContext.current = resolvedRequestContext;
|
|
2168
2233
|
setIsRunning(true);
|
|
2169
2234
|
const clientWithAbort = new MastraClient({
|
|
@@ -2191,7 +2256,7 @@ var useChat = ({
|
|
|
2191
2256
|
providerOptions,
|
|
2192
2257
|
tracingOptions,
|
|
2193
2258
|
requireToolApproval,
|
|
2194
|
-
clientTools
|
|
2259
|
+
clientTools: resolvedClientTools
|
|
2195
2260
|
});
|
|
2196
2261
|
if (response.finishReason === "suspended" && response.suspendPayload) {
|
|
2197
2262
|
const { toolCallId, toolName, args } = response.suspendPayload;
|
|
@@ -2251,6 +2316,23 @@ var useChat = ({
|
|
|
2251
2316
|
requireToolApproval
|
|
2252
2317
|
} = modelSettings || {};
|
|
2253
2318
|
const resolvedRequestContext = requestContext ?? propsRequestContext;
|
|
2319
|
+
const resolvedClientTools = clientTools ?? hookClientTools;
|
|
2320
|
+
const signalContinuationOptions = {
|
|
2321
|
+
maxSteps,
|
|
2322
|
+
modelSettings: {
|
|
2323
|
+
frequencyPenalty,
|
|
2324
|
+
presencePenalty,
|
|
2325
|
+
maxRetries,
|
|
2326
|
+
maxOutputTokens: maxTokens,
|
|
2327
|
+
temperature,
|
|
2328
|
+
topK,
|
|
2329
|
+
topP
|
|
2330
|
+
},
|
|
2331
|
+
instructions,
|
|
2332
|
+
providerOptions,
|
|
2333
|
+
requireToolApproval,
|
|
2334
|
+
tracingOptions
|
|
2335
|
+
};
|
|
2254
2336
|
_requestContext.current = resolvedRequestContext;
|
|
2255
2337
|
setIsRunning(true);
|
|
2256
2338
|
_streamAbortRef.current?.abort();
|
|
@@ -2285,7 +2367,7 @@ var useChat = ({
|
|
|
2285
2367
|
providerOptions,
|
|
2286
2368
|
requireToolApproval,
|
|
2287
2369
|
tracingOptions,
|
|
2288
|
-
clientTools
|
|
2370
|
+
clientTools: resolvedClientTools
|
|
2289
2371
|
});
|
|
2290
2372
|
_onChunk.current = onChunk;
|
|
2291
2373
|
_currentRunId.current = runId;
|
|
@@ -2320,21 +2402,9 @@ var useChat = ({
|
|
|
2320
2402
|
threadId: threadId2,
|
|
2321
2403
|
ifIdle: {
|
|
2322
2404
|
streamOptions: {
|
|
2323
|
-
|
|
2324
|
-
modelSettings: {
|
|
2325
|
-
frequencyPenalty,
|
|
2326
|
-
presencePenalty,
|
|
2327
|
-
maxRetries,
|
|
2328
|
-
maxOutputTokens: maxTokens,
|
|
2329
|
-
temperature,
|
|
2330
|
-
topK,
|
|
2331
|
-
topP
|
|
2332
|
-
},
|
|
2333
|
-
instructions,
|
|
2405
|
+
...signalContinuationOptions,
|
|
2334
2406
|
requestContext: resolvedRequestContext,
|
|
2335
|
-
|
|
2336
|
-
requireToolApproval,
|
|
2337
|
-
tracingOptions
|
|
2407
|
+
clientTools: resolvedClientTools
|
|
2338
2408
|
}
|
|
2339
2409
|
}
|
|
2340
2410
|
});
|