@mastra/react 1.7.0-alpha.0 → 1.7.0-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/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 +58 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +58 -14
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -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
|
@@ -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;
|
|
@@ -2171,6 +2209,13 @@ const useChat = ({ agentId, resourceId, threadId, initialMessages, requestContex
|
|
|
2171
2209
|
pendingToolApprovalIdsRef.current.add(toolCallId);
|
|
2172
2210
|
setIsAwaitingToolApproval(true);
|
|
2173
2211
|
}
|
|
2212
|
+
if (runId) {
|
|
2213
|
+
if (!liveRunId.current || liveRunFinished.current) {
|
|
2214
|
+
liveRunId.current = runId;
|
|
2215
|
+
liveRunFinished.current = false;
|
|
2216
|
+
}
|
|
2217
|
+
if (liveRunId.current === runId) _currentRunId.current = runId;
|
|
2218
|
+
}
|
|
2174
2219
|
setIsRunning(false);
|
|
2175
2220
|
}
|
|
2176
2221
|
if (isTerminal) {
|
|
@@ -2217,13 +2262,12 @@ const useChat = ({ agentId, resourceId, threadId, initialMessages, requestContex
|
|
|
2217
2262
|
subscription.processDataStream({ onChunk: (chunk) => {
|
|
2218
2263
|
if (chunk.type === "thread-history") {
|
|
2219
2264
|
const history = resolveInitialMessages(chunk.payload.messages);
|
|
2220
|
-
const
|
|
2221
|
-
setMessages((current) => {
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
});
|
|
2265
|
+
const previousHistory = lastHydration.current?.formattedMessages ?? [];
|
|
2266
|
+
setMessages((current) => mergeHistoryIntoConversation({
|
|
2267
|
+
conversation: current,
|
|
2268
|
+
history,
|
|
2269
|
+
previousHistory
|
|
2270
|
+
}));
|
|
2227
2271
|
setSubscriptionHistory({
|
|
2228
2272
|
key: `${agentId}:${resourceId ?? ""}:${threadId}`,
|
|
2229
2273
|
messages: chunk.payload.messages
|