@mastra/react 1.7.0-alpha.9 → 1.7.1-alpha.0
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/agent/hooks.d.ts.map +1 -1
- package/dist/agent/merge-history.d.ts +7 -0
- package/dist/agent/merge-history.d.ts.map +1 -0
- package/dist/index.cjs +52 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +52 -15
- package/dist/index.js.map +1 -1
- package/dist/lib/mastra-db/accumulator.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/agent/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,eAAe,EAA4B,MAAM,iCAAiC,CAAC;AAE3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAiB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/agent/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MastraDBMessage } from '@mastra/core/agent/message-list';
|
|
2
|
+
export declare const mergeHistoryIntoConversation: ({ conversation, history, previousHistory, }: {
|
|
3
|
+
conversation: MastraDBMessage[];
|
|
4
|
+
history: MastraDBMessage[];
|
|
5
|
+
previousHistory: MastraDBMessage[];
|
|
6
|
+
}) => MastraDBMessage[];
|
|
7
|
+
//# sourceMappingURL=merge-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-history.d.ts","sourceRoot":"","sources":["../../src/agent/merge-history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAiBvE,eAAO,MAAM,4BAA4B,gDAItC;IACD,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC,KAAG,eAAe,EA4BlB,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -298,7 +298,7 @@ const mergeBgTaskMetadata = (existing, mode, args, otherMetadata) => {
|
|
|
298
298
|
* `mapWorkflowStreamChunkToWatchResult` from the previous accumulator.
|
|
299
299
|
*/
|
|
300
300
|
const mapWorkflowStreamChunkToWatchResult = (prev, chunk) => {
|
|
301
|
-
const previous = prev
|
|
301
|
+
const previous = prev && typeof prev === "object" && prev.steps && typeof prev.steps === "object" ? prev : {
|
|
302
302
|
status: "running",
|
|
303
303
|
input: void 0,
|
|
304
304
|
steps: {}
|
|
@@ -1872,6 +1872,46 @@ const extractRunIdFromMessages = (messages) => {
|
|
|
1872
1872
|
for (const message of messages) for (const source of getRunIdMetadataSources(message.content?.metadata)) for (const entry of Object.values(source)) if (isRecord(entry) && typeof entry.runId === "string" && entry.runId.length > 0) return entry.runId;
|
|
1873
1873
|
};
|
|
1874
1874
|
//#endregion
|
|
1875
|
+
//#region src/agent/merge-history.ts
|
|
1876
|
+
const liveClientMessageId = (message) => {
|
|
1877
|
+
const clientMessageId = message.content.metadata?.[CLIENT_MESSAGE_ID_KEY];
|
|
1878
|
+
return typeof clientMessageId === "string" ? clientMessageId : void 0;
|
|
1879
|
+
};
|
|
1880
|
+
const storedClientMessageId = (message) => {
|
|
1881
|
+
const signal = message.content.metadata?.signal;
|
|
1882
|
+
const clientMessageId = isRecord$1(signal) && isRecord$1(signal.metadata) ? signal.metadata[CLIENT_MESSAGE_ID_KEY] : void 0;
|
|
1883
|
+
return typeof clientMessageId === "string" ? clientMessageId : void 0;
|
|
1884
|
+
};
|
|
1885
|
+
const mergeHistoryIntoConversation = ({ conversation, history, previousHistory }) => {
|
|
1886
|
+
const previousById = new Map(previousHistory.map((message) => [message.id, message]));
|
|
1887
|
+
const live = conversation.filter((message) => previousById.get(message.id) !== message);
|
|
1888
|
+
const liveById = new Map(live.map((message) => [message.id, message]));
|
|
1889
|
+
const liveClientMessageIds = new Set(live.flatMap((message) => liveClientMessageId(message) ?? []));
|
|
1890
|
+
const historyIds = new Set(history.map((message) => message.id));
|
|
1891
|
+
const storedClientMessageIds = new Set(history.flatMap((message) => storedClientMessageId(message) ?? []));
|
|
1892
|
+
const mergedHistory = history.map((message) => {
|
|
1893
|
+
const liveCopy = liveById.get(message.id);
|
|
1894
|
+
if (liveCopy) return liveCopy;
|
|
1895
|
+
const clientMessageId = storedClientMessageId(message);
|
|
1896
|
+
if (!clientMessageId || !liveClientMessageIds.has(clientMessageId)) return message;
|
|
1897
|
+
return {
|
|
1898
|
+
...message,
|
|
1899
|
+
content: {
|
|
1900
|
+
...message.content,
|
|
1901
|
+
metadata: {
|
|
1902
|
+
...message.content.metadata,
|
|
1903
|
+
[CLIENT_MESSAGE_ID_KEY]: clientMessageId
|
|
1904
|
+
}
|
|
1905
|
+
}
|
|
1906
|
+
};
|
|
1907
|
+
});
|
|
1908
|
+
const unstoredLive = live.filter((message) => {
|
|
1909
|
+
const clientMessageId = liveClientMessageId(message);
|
|
1910
|
+
return !historyIds.has(message.id) && !(clientMessageId && storedClientMessageIds.has(clientMessageId));
|
|
1911
|
+
});
|
|
1912
|
+
return [...mergedHistory, ...unstoredLive];
|
|
1913
|
+
};
|
|
1914
|
+
//#endregion
|
|
1875
1915
|
//#region src/agent/hooks.ts
|
|
1876
1916
|
const extractPendingToolApprovalIdsFromMessages = (messages, runId) => {
|
|
1877
1917
|
const pendingToolApprovalIds = /* @__PURE__ */ new Set();
|
|
@@ -2028,13 +2068,11 @@ const useChat = ({ agentId, resourceId, threadId, initialMessages, requestContex
|
|
|
2028
2068
|
formattedMessages
|
|
2029
2069
|
};
|
|
2030
2070
|
if (sameThread) {
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
return [...formattedMessages.map((message) => liveById.get(message.id) ?? message), ...live.filter((message) => !historyIds.has(message.id))];
|
|
2037
|
-
});
|
|
2071
|
+
setMessages((current) => mergeHistoryIntoConversation({
|
|
2072
|
+
conversation: current,
|
|
2073
|
+
history: formattedMessages,
|
|
2074
|
+
previousHistory: previous.formattedMessages
|
|
2075
|
+
}));
|
|
2038
2076
|
setTasks(liveTasks.current ?? extractLatestTasksFromMessages(formattedMessages));
|
|
2039
2077
|
const historyRunId = extractRunIdFromMessages(formattedMessages);
|
|
2040
2078
|
if (liveRunFinished.current) return;
|
|
@@ -2224,13 +2262,12 @@ const useChat = ({ agentId, resourceId, threadId, initialMessages, requestContex
|
|
|
2224
2262
|
subscription.processDataStream({ onChunk: (chunk) => {
|
|
2225
2263
|
if (chunk.type === "thread-history") {
|
|
2226
2264
|
const history = resolveInitialMessages(chunk.payload.messages);
|
|
2227
|
-
const
|
|
2228
|
-
setMessages((current) => {
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
});
|
|
2265
|
+
const previousHistory = lastHydration.current?.formattedMessages ?? [];
|
|
2266
|
+
setMessages((current) => mergeHistoryIntoConversation({
|
|
2267
|
+
conversation: current,
|
|
2268
|
+
history,
|
|
2269
|
+
previousHistory
|
|
2270
|
+
}));
|
|
2234
2271
|
setSubscriptionHistory({
|
|
2235
2272
|
key: `${agentId}:${resourceId ?? ""}:${threadId}`,
|
|
2236
2273
|
messages: chunk.payload.messages
|