@mastra/server 1.29.0-alpha.0 → 1.29.0-alpha.2
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 +20 -0
- package/dist/{chunk-K2MVNOUC.cjs → chunk-245BXYGJ.cjs} +5 -5
- package/dist/{chunk-K2MVNOUC.cjs.map → chunk-245BXYGJ.cjs.map} +1 -1
- package/dist/{chunk-BORB3KIW.cjs → chunk-2MWLNHBG.cjs} +3 -3
- package/dist/{chunk-BORB3KIW.cjs.map → chunk-2MWLNHBG.cjs.map} +1 -1
- package/dist/{chunk-P4MLFOXM.cjs → chunk-2QNJHTKM.cjs} +3 -3
- package/dist/{chunk-P4MLFOXM.cjs.map → chunk-2QNJHTKM.cjs.map} +1 -1
- package/dist/{chunk-5KQVWRID.js → chunk-4Y5P2GYV.js} +4 -4
- package/dist/{chunk-5KQVWRID.js.map → chunk-4Y5P2GYV.js.map} +1 -1
- package/dist/{chunk-PZRKR3F6.cjs → chunk-53GID5Z5.cjs} +20 -20
- package/dist/{chunk-PZRKR3F6.cjs.map → chunk-53GID5Z5.cjs.map} +1 -1
- package/dist/{chunk-J5JAOQ2A.cjs → chunk-5KM5P23Q.cjs} +3 -3
- package/dist/{chunk-J5JAOQ2A.cjs.map → chunk-5KM5P23Q.cjs.map} +1 -1
- package/dist/{chunk-46UPTG2T.js → chunk-65MQD7JR.js} +5 -5
- package/dist/{chunk-46UPTG2T.js.map → chunk-65MQD7JR.js.map} +1 -1
- package/dist/{chunk-YWL5BE5R.cjs → chunk-6VT7WJZZ.cjs} +7 -7
- package/dist/{chunk-YWL5BE5R.cjs.map → chunk-6VT7WJZZ.cjs.map} +1 -1
- package/dist/{chunk-2GPURBXZ.js → chunk-7E2JRYIE.js} +4 -4
- package/dist/{chunk-2GPURBXZ.js.map → chunk-7E2JRYIE.js.map} +1 -1
- package/dist/{chunk-TEL2DC3C.js → chunk-7GNVIWZY.js} +4 -4
- package/dist/{chunk-TEL2DC3C.js.map → chunk-7GNVIWZY.js.map} +1 -1
- package/dist/{chunk-L5N6WKOZ.cjs → chunk-7VXUWPHS.cjs} +4 -4
- package/dist/{chunk-L5N6WKOZ.cjs.map → chunk-7VXUWPHS.cjs.map} +1 -1
- package/dist/{chunk-FRD3ENZK.js → chunk-AU3AUZU7.js} +5 -5
- package/dist/{chunk-FRD3ENZK.js.map → chunk-AU3AUZU7.js.map} +1 -1
- package/dist/{chunk-2Q4IAQP6.cjs → chunk-B7SBAXEP.cjs} +7 -7
- package/dist/{chunk-2Q4IAQP6.cjs.map → chunk-B7SBAXEP.cjs.map} +1 -1
- package/dist/{chunk-IUDQQ6QI.js → chunk-BPA7HXKB.js} +6 -6
- package/dist/{chunk-IUDQQ6QI.js.map → chunk-BPA7HXKB.js.map} +1 -1
- package/dist/{chunk-XADWQSY7.cjs → chunk-CKZMJIUO.cjs} +9 -5
- package/dist/chunk-CKZMJIUO.cjs.map +1 -0
- package/dist/{chunk-XEXHCRV3.js → chunk-DY6OYCMG.js} +3 -3
- package/dist/{chunk-XEXHCRV3.js.map → chunk-DY6OYCMG.js.map} +1 -1
- package/dist/{chunk-AIJJSCV4.cjs → chunk-E2PSSSTN.cjs} +27 -27
- package/dist/{chunk-AIJJSCV4.cjs.map → chunk-E2PSSSTN.cjs.map} +1 -1
- package/dist/{chunk-YWJQERAH.cjs → chunk-EETF75CE.cjs} +4 -4
- package/dist/{chunk-YWJQERAH.cjs.map → chunk-EETF75CE.cjs.map} +1 -1
- package/dist/{chunk-QWBZJSUT.cjs → chunk-EFMMD5NL.cjs} +18 -18
- package/dist/{chunk-QWBZJSUT.cjs.map → chunk-EFMMD5NL.cjs.map} +1 -1
- package/dist/{chunk-3LCPUJA3.js → chunk-FIP7YYSO.js} +4 -4
- package/dist/{chunk-3LCPUJA3.js.map → chunk-FIP7YYSO.js.map} +1 -1
- package/dist/{chunk-DAFGZEU3.js → chunk-H23VTK56.js} +3 -3
- package/dist/{chunk-DAFGZEU3.js.map → chunk-H23VTK56.js.map} +1 -1
- package/dist/{chunk-ZVLKCQ4A.js → chunk-HSU5D2KT.js} +3 -3
- package/dist/{chunk-ZVLKCQ4A.js.map → chunk-HSU5D2KT.js.map} +1 -1
- package/dist/{chunk-3QNC76KL.cjs → chunk-HTCLQOY7.cjs} +12 -12
- package/dist/{chunk-3QNC76KL.cjs.map → chunk-HTCLQOY7.cjs.map} +1 -1
- package/dist/{chunk-VRBXYEOH.cjs → chunk-HWK6K3DW.cjs} +8 -8
- package/dist/{chunk-VRBXYEOH.cjs.map → chunk-HWK6K3DW.cjs.map} +1 -1
- package/dist/{chunk-HI5I7TAN.js → chunk-HYI4ZAV7.js} +6 -3
- package/dist/chunk-HYI4ZAV7.js.map +1 -0
- package/dist/{chunk-DSZXOCSK.js → chunk-IO7PPBD4.js} +5 -5
- package/dist/{chunk-DSZXOCSK.js.map → chunk-IO7PPBD4.js.map} +1 -1
- package/dist/{chunk-HTITP2OM.cjs → chunk-JOC7WKJ2.cjs} +49 -49
- package/dist/{chunk-HTITP2OM.cjs.map → chunk-JOC7WKJ2.cjs.map} +1 -1
- package/dist/{chunk-H2MUDA4C.js → chunk-LTLTS3RN.js} +3 -3
- package/dist/{chunk-H2MUDA4C.js.map → chunk-LTLTS3RN.js.map} +1 -1
- package/dist/{chunk-4WDBN7FE.cjs → chunk-LWK57QIA.cjs} +3 -3
- package/dist/{chunk-4WDBN7FE.cjs.map → chunk-LWK57QIA.cjs.map} +1 -1
- package/dist/{chunk-PMEZVTMY.cjs → chunk-MROI3O6S.cjs} +4 -4
- package/dist/{chunk-PMEZVTMY.cjs.map → chunk-MROI3O6S.cjs.map} +1 -1
- package/dist/{chunk-3NMXW3ID.js → chunk-N6S7KI4E.js} +4 -4
- package/dist/{chunk-3NMXW3ID.js.map → chunk-N6S7KI4E.js.map} +1 -1
- package/dist/{chunk-74E7YQ6N.js → chunk-NRFMMYTG.js} +3 -3
- package/dist/{chunk-74E7YQ6N.js.map → chunk-NRFMMYTG.js.map} +1 -1
- package/dist/{chunk-PKGKTNYI.js → chunk-NUGBBASK.js} +3 -3
- package/dist/{chunk-PKGKTNYI.js.map → chunk-NUGBBASK.js.map} +1 -1
- package/dist/{chunk-7ZAQD3XO.cjs → chunk-ODOZS3ZD.cjs} +177 -113
- package/dist/chunk-ODOZS3ZD.cjs.map +1 -0
- package/dist/{chunk-42XOE7XV.js → chunk-OV64VJ5L.js} +3 -3
- package/dist/{chunk-42XOE7XV.js.map → chunk-OV64VJ5L.js.map} +1 -1
- package/dist/{chunk-MT5NBKHP.js → chunk-P7QF3UG4.js} +4 -4
- package/dist/{chunk-MT5NBKHP.js.map → chunk-P7QF3UG4.js.map} +1 -1
- package/dist/{chunk-VG6PHTVS.js → chunk-PFEVOAAN.js} +6 -6
- package/dist/{chunk-VG6PHTVS.js.map → chunk-PFEVOAAN.js.map} +1 -1
- package/dist/{chunk-2L2EQ2WP.js → chunk-POGEZPLQ.js} +6 -6
- package/dist/{chunk-2L2EQ2WP.js.map → chunk-POGEZPLQ.js.map} +1 -1
- package/dist/{chunk-DQ6FOZNA.js → chunk-PQETTP2F.js} +9 -5
- package/dist/chunk-PQETTP2F.js.map +1 -0
- package/dist/{chunk-QSNA4LRZ.cjs → chunk-Q2N5GR7X.cjs} +3 -3
- package/dist/{chunk-QSNA4LRZ.cjs.map → chunk-Q2N5GR7X.cjs.map} +1 -1
- package/dist/{chunk-2NEECBQR.js → chunk-R32YJVMM.js} +4 -4
- package/dist/{chunk-2NEECBQR.js.map → chunk-R32YJVMM.js.map} +1 -1
- package/dist/{chunk-H5RPTYTP.cjs → chunk-R4DZSQYI.cjs} +42 -42
- package/dist/{chunk-H5RPTYTP.cjs.map → chunk-R4DZSQYI.cjs.map} +1 -1
- package/dist/{chunk-OQX4IR6X.cjs → chunk-RC6YILOB.cjs} +25 -25
- package/dist/{chunk-OQX4IR6X.cjs.map → chunk-RC6YILOB.cjs.map} +1 -1
- package/dist/{chunk-RRVHQ72N.cjs → chunk-S7REEERK.cjs} +3 -3
- package/dist/{chunk-RRVHQ72N.cjs.map → chunk-S7REEERK.cjs.map} +1 -1
- package/dist/{chunk-VCPZAU2M.js → chunk-T4B6NNIT.js} +71 -8
- package/dist/chunk-T4B6NNIT.js.map +1 -0
- package/dist/{chunk-2R7PRLUL.js → chunk-TFEHE3UN.js} +5 -5
- package/dist/{chunk-2R7PRLUL.js.map → chunk-TFEHE3UN.js.map} +1 -1
- package/dist/{chunk-2UIZWSQ4.cjs → chunk-THQCPWBO.cjs} +5 -5
- package/dist/{chunk-2UIZWSQ4.cjs.map → chunk-THQCPWBO.cjs.map} +1 -1
- package/dist/{chunk-TC6OUECX.cjs → chunk-TNNU7IZK.cjs} +3 -3
- package/dist/{chunk-TC6OUECX.cjs.map → chunk-TNNU7IZK.cjs.map} +1 -1
- package/dist/{chunk-PXNWHW4Y.cjs → chunk-VGR4DSXQ.cjs} +3 -3
- package/dist/{chunk-PXNWHW4Y.cjs.map → chunk-VGR4DSXQ.cjs.map} +1 -1
- package/dist/{chunk-CT2AKZPZ.js → chunk-VLNRGJEM.js} +3 -3
- package/dist/{chunk-CT2AKZPZ.js.map → chunk-VLNRGJEM.js.map} +1 -1
- package/dist/{chunk-INGHVKDO.js → chunk-WC4RIS4D.js} +3 -3
- package/dist/{chunk-INGHVKDO.js.map → chunk-WC4RIS4D.js.map} +1 -1
- package/dist/{chunk-CPPHHMG7.cjs → chunk-XT6GKIYW.cjs} +6 -2
- package/dist/chunk-XT6GKIYW.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/server/handlers/a2a.cjs +9 -9
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +16 -16
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +8 -8
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +40 -36
- package/dist/server/handlers/agents.d.ts +155 -0
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +4 -4
- package/dist/server/handlers/background-tasks.d.ts +2 -0
- package/dist/server/handlers/background-tasks.d.ts.map +1 -1
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/conversations.cjs +5 -5
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +26 -26
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +8 -8
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +8 -8
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/responses.storage.cjs +8 -8
- package/dist/server/handlers/responses.storage.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +7 -7
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-workspaces.cjs +6 -6
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/utils.cjs +9 -9
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/voice.cjs +8 -8
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +24 -24
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +26 -26
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +35 -35
- package/dist/server/handlers.js +12 -12
- package/dist/server/schemas/agents.d.ts +76 -0
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/background-tasks.d.ts +1 -0
- package/dist/server/schemas/background-tasks.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +273 -269
- package/dist/server/schemas/index.js +10 -10
- package/dist/server/server-adapter/index.cjs +261 -233
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +5 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +60 -32
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/agents.d.ts +2 -1
- package/dist/server/server-adapter/routes/agents.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/chunk-7ZAQD3XO.cjs.map +0 -1
- package/dist/chunk-CPPHHMG7.cjs.map +0 -1
- package/dist/chunk-DQ6FOZNA.js.map +0 -1
- package/dist/chunk-HI5I7TAN.js.map +0 -1
- package/dist/chunk-VCPZAU2M.js.map +0 -1
- package/dist/chunk-XADWQSY7.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkLWK57QIA_cjs = require('./chunk-LWK57QIA.cjs');
|
|
4
4
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
5
5
|
|
|
6
6
|
// src/server/handlers/responses.storage.ts
|
|
@@ -69,7 +69,7 @@ async function findResponseTurnRecord({
|
|
|
69
69
|
if (!memoryStore) {
|
|
70
70
|
return null;
|
|
71
71
|
}
|
|
72
|
-
const effectiveResourceId =
|
|
72
|
+
const effectiveResourceId = chunkLWK57QIA_cjs.getEffectiveResourceId(requestContext, void 0);
|
|
73
73
|
const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });
|
|
74
74
|
const message = matchedMessages[0];
|
|
75
75
|
if (!message || message.role !== "assistant") {
|
|
@@ -83,7 +83,7 @@ async function findResponseTurnRecord({
|
|
|
83
83
|
if (!thread) {
|
|
84
84
|
return null;
|
|
85
85
|
}
|
|
86
|
-
await
|
|
86
|
+
await chunkLWK57QIA_cjs.validateThreadOwnership(thread, effectiveResourceId);
|
|
87
87
|
const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];
|
|
88
88
|
const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });
|
|
89
89
|
const messagesById = new Map(responseMessages.map((storedMessage) => [storedMessage.id, storedMessage]));
|
|
@@ -115,7 +115,7 @@ async function findConversationThreadAcrossAgents({
|
|
|
115
115
|
if (!mastra) {
|
|
116
116
|
return null;
|
|
117
117
|
}
|
|
118
|
-
const effectiveResourceId =
|
|
118
|
+
const effectiveResourceId = chunkLWK57QIA_cjs.getEffectiveResourceId(requestContext, void 0);
|
|
119
119
|
const agents = Object.values(mastra.listAgents());
|
|
120
120
|
for (const agent of agents) {
|
|
121
121
|
const memoryStore = await getAgentMemoryStore({ agent, requestContext });
|
|
@@ -126,7 +126,7 @@ async function findConversationThreadAcrossAgents({
|
|
|
126
126
|
if (!thread) {
|
|
127
127
|
continue;
|
|
128
128
|
}
|
|
129
|
-
await
|
|
129
|
+
await chunkLWK57QIA_cjs.validateThreadOwnership(thread, effectiveResourceId);
|
|
130
130
|
return { thread, memoryStore };
|
|
131
131
|
}
|
|
132
132
|
return null;
|
|
@@ -230,5 +230,5 @@ exports.findResponseTurnRecordAcrossAgents = findResponseTurnRecordAcrossAgents;
|
|
|
230
230
|
exports.getAgentMemoryStore = getAgentMemoryStore;
|
|
231
231
|
exports.persistResponseTurnRecord = persistResponseTurnRecord;
|
|
232
232
|
exports.resolveResponseTurnMessagesForStorage = resolveResponseTurnMessagesForStorage;
|
|
233
|
-
//# sourceMappingURL=chunk-
|
|
234
|
-
//# sourceMappingURL=chunk-
|
|
233
|
+
//# sourceMappingURL=chunk-B7SBAXEP.cjs.map
|
|
234
|
+
//# sourceMappingURL=chunk-B7SBAXEP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":["getEffectiveResourceId","validateThreadOwnership","HTTPException"],"mappings":";;;;;;AA0DA,SAAS,cAAc,KAAA,EAAkD;AACvE,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AASA,eAAsB,mBAAA,CAAoB;AAAA,EACxC,KAAA;AAAA,EACA;AACF,CAAA,EAGkC;AAChC,EAAA,MAAM,SAAS,MAAM,KAAA,CAAM,SAAA,CAAU,EAAE,gBAAgB,CAAA;AACvD,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,OAAQ,MAAM,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA,IAAM,IAAA;AAAA,EACtD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAKA,SAAS,+BAA+B,OAAA,EAA6D;AACnG,EAAA,MAAM,cAAA,GAAiB,aAAA,CAAc,OAAA,CAAQ,OAAA,EAAS,QAAA,EAAU,MAAM,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,MAAA,GAAS,IAAA;AAC5G,EAAA,MAAM,mBAAmB,cAAA,IAAkB,aAAA,CAAc,eAAe,QAAQ,CAAA,GAAI,eAAe,QAAA,GAAW,IAAA;AAE9G,EAAA,IACE,CAAC,gBAAA,IACD,OAAO,gBAAA,CAAiB,OAAA,KAAY,QAAA,IACpC,OAAO,gBAAA,CAAiB,KAAA,KAAU,QAAA,IAClC,OAAO,gBAAA,CAAiB,cAAc,QAAA,IACrC,gBAAA,CAAiB,WAAA,KAAgB,IAAA,IAAQ,OAAO,gBAAA,CAAiB,WAAA,KAAgB,QAAA,IACjF,gBAAA,CAAiB,YAAA,KAAiB,MAAA,IAAa,OAAO,gBAAA,CAAiB,YAAA,KAAiB,QAAA,IACxF,gBAAA,CAAiB,SAAS,MAAA,KACxB,CAAC,aAAA,CAAc,gBAAA,CAAiB,IAAI,CAAA,IAAK,CAAC,aAAA,CAAc,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA,CAAA,IACtF,gBAAA,CAAiB,kBAAA,KAAuB,MAAA,IAAa,OAAO,iBAAiB,kBAAA,KAAuB,QAAA,IACrG,CAAC,KAAA,CAAM,OAAA,CAAQ,gBAAA,CAAiB,KAAK,CAAA,IACrC,OAAO,gBAAA,CAAiB,KAAA,KAAU,SAAA,IAClC,CAAC,KAAA,CAAM,OAAA,CAAQ,gBAAA,CAAiB,UAAU,CAAA,EAC1C;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,SAAS,gBAAA,CAAiB,OAAA;AAAA,IAC1B,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,WAAW,gBAAA,CAAiB,SAAA;AAAA,IAC5B,aAAa,gBAAA,CAAiB,WAAA;AAAA,IAC9B,MAAA,EAAQ,gBAAA,CAAiB,MAAA,KAAW,WAAA,GAAc,WAAA,GAAc,YAAA;AAAA,IAChE,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,cAAc,gBAAA,CAAiB,YAAA;AAAA,IAC/B,MAAM,gBAAA,CAAiB,IAAA;AAAA,IACvB,oBAAoB,gBAAA,CAAiB,kBAAA;AAAA,IACrC,iBAAiB,gBAAA,CAAiB,eAAA;AAAA,IAClC,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,OAAO,gBAAA,CAAiB,KAAA;AAAA,IACxB,UAAA,EAAY,iBAAiB,UAAA,CAAW,MAAA,CAAO,CAAC,KAAA,KAA2B,OAAO,UAAU,QAAQ;AAAA,GACtG;AACF;AAKA,SAAS,+BAAA,CACP,SACA,QAAA,EACiB;AACjB,EAAA,MAAM,eAAA,GAAkB,cAAc,OAAA,CAAQ,OAAA,EAAS,QAAQ,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,QAAA,GAAW,EAAC;AAC/F,EAAA,MAAM,iBAAiB,aAAA,CAAc,eAAA,CAAgB,MAAM,CAAA,GAAI,eAAA,CAAgB,SAAS,EAAC;AAEzF,EAAA,OAAO;AAAA,IACL,GAAG,OAAA;AAAA,IACH,OAAA,EAAS;AAAA,MACP,GAAG,OAAA,CAAQ,OAAA;AAAA,MACX,QAAA,EAAU;AAAA,QACR,GAAG,eAAA;AAAA,QACH,MAAA,EAAQ;AAAA,UACN,GAAG,cAAA;AAAA,UACH,QAAA,EAAU;AAAA;AACZ;AACF;AACF,GACF;AACF;AASA,eAAsB,sBAAA,CAAuB;AAAA,EAC3C,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIuC;AACrC,EAAA,MAAM,cAAc,MAAM,mBAAA,CAAoB,EAAE,KAAA,EAAO,gBAAgB,CAAA;AACvE,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,mBAAA,GAAsBA,wCAAA,CAAuB,cAAA,EAAgB,MAAS,CAAA;AAC5E,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,EAAgB,GAAI,MAAM,WAAA,CAAY,gBAAA,CAAiB,EAAE,UAAA,EAAY,CAAC,UAAU,CAAA,EAAG,CAAA;AACrG,EAAA,MAAM,OAAA,GAAU,gBAAgB,CAAC,CAAA;AACjC,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,WAAA,EAAa;AAC5C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,+BAA+B,OAAO,CAAA;AACvD,EAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,OAAA,KAAY,MAAM,EAAA,EAAI;AAC9C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,QAAA,GAAW,MAAM,WAAA,CAAY,aAAA,CAAc,EAAE,QAAA,EAAU,OAAA,CAAQ,QAAA,EAAU,CAAA,GAAI,IAAA;AACpG,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAMC,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AACzD,EAAA,MAAM,UAAA,GAAa,SAAS,UAAA,CAAW,MAAA,GAAS,IAAI,QAAA,CAAS,UAAA,GAAa,CAAC,OAAA,CAAQ,EAAE,CAAA;AACrF,EAAA,MAAM,EAAE,UAAU,gBAAA,EAAiB,GAAI,MAAM,WAAA,CAAY,gBAAA,CAAiB,EAAE,UAAA,EAAY,CAAA;AACxF,EAAA,MAAM,YAAA,GAAe,IAAI,GAAA,CAAI,gBAAA,CAAiB,GAAA,CAAI,CAAA,aAAA,KAAiB,CAAC,aAAA,CAAc,EAAA,EAAI,aAAa,CAAU,CAAC,CAAA;AAC9G,EAAA,MAAM,eAAA,GAAkB,UAAA,CACrB,GAAA,CAAI,CAAA,SAAA,KAAa,aAAa,GAAA,CAAI,SAAS,CAAC,CAAA,CAC5C,MAAA,CAAO,CAAC,aAAA,KAAoD,OAAA,CAAQ,aAAa,CAAC,CAAA;AAErF,EAAA,OAAO,EAAE,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,eAAA,EAAiB,QAAQ,WAAA,EAAY;AAC7E;AAEA,eAAsB,kCAAA,CAAmC;AAAA,EACvD,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIuC;AACrC,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAChD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,QAAQ,MAAM,sBAAA,CAAuB,EAAE,KAAA,EAAO,UAAA,EAAY,gBAAgB,CAAA;AAChF,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAOA,eAAsB,kCAAA,CAAmC;AAAA,EACvD,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAI6C;AAC3C,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,mBAAA,GAAsBD,wCAAA,CAAuB,cAAA,EAAgB,MAAS,CAAA;AAC5E,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAEhD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,cAAc,MAAM,mBAAA,CAAoB,EAAE,KAAA,EAAO,gBAAgB,CAAA;AACvE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,SAAS,MAAM,WAAA,CAAY,cAAc,EAAE,QAAA,EAAU,gBAAgB,CAAA;AAC3E,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAMC,yCAAA,CAAwB,QAAQ,mBAAmB,CAAA;AACzD,IAAA,OAAO,EAAE,QAAQ,WAAA,EAAY;AAAA,EAC/B;AAEA,EAAA,OAAO,IAAA;AACT;AAMA,SAAS,8BAAA,CAA+B;AAAA,EACtC,UAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAIoB;AAClB,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,UAAA;AAAA,IACJ,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,sBAAe,IAAA,EAAK;AAAA,IACpB,UAAU,aAAA,CAAc,QAAA;AAAA,IACxB,YAAY,aAAA,CAAc,UAAA;AAAA,IAC1B,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAAA;AAAA,MACR,KAAA,EAAO,OAAO,CAAC,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,CAAA,GAAI;AAAC;AAC5C,GACF;AACF;AAKA,eAAsB,qCAAA,CAAsC;AAAA,EAC1D,MAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAK+B;AAC7B,EAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,QAAA;AAC9B,EAAA,MAAM,mBAAmB,QAAA,EAAU,UAAA,EAAY,MAAA,GAAS,QAAA,CAAS,aAAa,EAAC;AAE/E,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,IAAI,gBAAA,CAAiB,WAAW,CAAA,EAAG;AACjC,IAAA,OAAO,CAAC,8BAAA,CAA+B,EAAE,YAAY,IAAA,EAAM,aAAA,EAAe,CAAC,CAAA;AAAA,EAC7E;AAEA,EAAA,OAAO,gBAAA;AACT;AAUA,eAAsB,yBAAA,CAA0B;AAAA,EAC9C,WAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAMkB;AAChB,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,+DAA+D,CAAA;AAAA,EACzG;AAEA,EAAA,MAAM,kBAAA,GAAwC,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,MAAY;AAAA,IACrE,GAAG,OAAA;AAAA,IACH,QAAA,EAAU,OAAA,CAAQ,QAAA,IAAY,aAAA,CAAc,QAAA;AAAA,IAC5C,UAAA,EAAY,OAAA,CAAQ,UAAA,IAAc,aAAA,CAAc;AAAA,GAClD,CAAE,CAAA;AAEF,EAAA,MAAM,kBAAA,GAAqB,CAAC,GAAG,kBAAkB,CAAA,CAAE,GAAA,CAAI,CAAA,OAAA,KAAW,OAAA,CAAQ,IAAI,CAAA,CAAE,WAAA,CAAY,WAAW,CAAA;AACvG,EAAA,MAAM,oBAAA,GACJ,sBAAsB,CAAA,GAClB;AAAA,IACE,GAAG,mBAAmB,kBAAkB,CAAA;AAAA,IACxC,EAAA,EAAI;AAAA,GACN,GACC;AAAA,IACC,EAAA,EAAI,UAAA;AAAA,IACJ,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,EAAW,IAAI,IAAA,CAAK,QAAA,CAAS,WAAA,GAAc,SAAS,WAAA,GAAc,GAAA,GAAO,IAAA,CAAK,GAAA,EAAK,CAAA;AAAA,IACnF,UAAU,aAAA,CAAc,QAAA;AAAA,IACxB,YAAY,aAAA,CAAc,UAAA;AAAA,IAC1B,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAAA;AAAA,MACR,OAAO;AAAC;AACV,GACF;AAEN,EAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,IAAA,kBAAA,CAAmB,kBAAkB,CAAA,GAAI,oBAAA;AAAA,EAC3C,CAAA,MAAO;AACL,IAAA,kBAAA,CAAmB,KAAK,oBAAoB,CAAA;AAAA,EAC9C;AAEA,EAAA,MAAM,kBACJ,kBAAA,IAAsB,CAAA,IAAK,SAAS,kBAAkB,CAAA,EAAG,MAAM,QAAA,CAAS,kBAAkB,CAAA,EAAG,EAAA,KAAO,aAChG,CAAC,QAAA,CAAS,kBAAkB,CAAA,CAAG,EAAE,IACjC,EAAC;AAEP,EAAA,MAAM,aAAA,GAAgB,gCAAgC,oBAAA,EAAsB;AAAA,IAC1E,GAAG,QAAA;AAAA,IACH,UAAA,EAAY,kBAAA,CAAmB,GAAA,CAAI,CAAA,OAAA,KAAW,QAAQ,EAAE;AAAA,GACzD,CAAA;AAED,EAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,IAAA,kBAAA,CAAmB,kBAAkB,CAAA,GAAI,aAAA;AAAA,EAC3C,CAAA,MAAO;AACL,IAAA,kBAAA,CAAmB,kBAAA,CAAmB,MAAA,GAAS,CAAC,CAAA,GAAI,aAAA;AAAA,EACtD;AAEA,EAAA,MAAM,WAAA,CAAY,YAAA,CAAa,EAAE,QAAA,EAAU,oBAAoB,CAAA;AAE/D,EAAA,IAAI,eAAA,CAAgB,SAAS,CAAA,EAAG;AAC9B,IAAA,MAAM,WAAA,CAAY,eAAe,eAAe,CAAA;AAAA,EAClD;AACF;AAKA,eAAsB,wBAAA,CAAyB;AAAA,EAC7C;AACF,CAAA,EAEkB;AAChB,EAAA,MAAM,UAAA,GACJ,kBAAA,CAAmB,QAAA,CAAS,MAAA,GAAS,IACjC,kBAAA,CAAmB,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,KAAW,QAAQ,EAAE,CAAA,GACrD,CAAC,kBAAA,CAAmB,QAAQ,EAAE,CAAA;AAEpC,EAAA,MAAM,kBAAA,CAAmB,WAAA,CAAY,cAAA,CAAe,UAAU,CAAA;AAChE","file":"chunk-2Q4IAQP6.cjs","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type { ResponseObject, ResponseTextConfig, ResponseTool, ResponseUsage } from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the backing memory store for a specific agent.\n *\n * This follows the normal agent-memory path. `agent.getMemory()` injects Mastra\n * root storage when the memory has no own storage, so this naturally prefers\n * agent storage first and falls back to Mastra storage through the same codepath.\n */\nexport async function getAgentMemoryStore({\n agent,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n}): Promise<MemoryStorage | null> {\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n return null;\n }\n\n try {\n return (await memory.storage.getStore('memory')) ?? null;\n } catch {\n return null;\n }\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds)\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n agent,\n responseId,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata || metadata.agentId !== agent.id) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\nexport async function findResponseTurnRecordAcrossAgents({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n for (const agent of agents) {\n const match = await findResponseTurnRecord({ agent, responseId, requestContext });\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport type ConversationThreadRecord = {\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\nexport async function findConversationThreadAcrossAgents({\n mastra,\n conversationId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n conversationId: string;\n requestContext: RequestContext;\n}): Promise<ConversationThreadRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n\n for (const agent of agents) {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n continue;\n }\n\n const thread = await memoryStore.getThreadById({ threadId: conversationId });\n if (!thread) {\n continue;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n return { thread, memoryStore };\n }\n\n return null;\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n responseId,\n text,\n threadContext,\n}: {\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return responseMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n memoryStore,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n memoryStore: MemoryStorage | null;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const lastAssistantMessage =\n lastAssistantIndex >= 0\n ? {\n ...normalizedMessages[lastAssistantIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n\n const staleMessageIds =\n lastAssistantIndex >= 0 && messages[lastAssistantIndex]?.id && messages[lastAssistantIndex]?.id !== responseId\n ? [messages[lastAssistantIndex]!.id]\n : [];\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: normalizedMessages.map(message => message.id),\n });\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n await memoryStore.saveMessages({ messages: normalizedMessages });\n\n if (staleMessageIds.length > 0) {\n await memoryStore.deleteMessages(staleMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n responseTurnRecord,\n}: {\n responseTurnRecord: ResponseTurnRecord;\n}): Promise<void> {\n const messageIds =\n responseTurnRecord.messages.length > 0\n ? responseTurnRecord.messages.map(message => message.id)\n : [responseTurnRecord.message.id];\n\n await responseTurnRecord.memoryStore.deleteMessages(messageIds);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":["getEffectiveResourceId","validateThreadOwnership","HTTPException"],"mappings":"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","file":"chunk-B7SBAXEP.cjs","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type { ResponseObject, ResponseTextConfig, ResponseTool, ResponseUsage } from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the backing memory store for a specific agent.\n *\n * This follows the normal agent-memory path. `agent.getMemory()` injects Mastra\n * root storage when the memory has no own storage, so this naturally prefers\n * agent storage first and falls back to Mastra storage through the same codepath.\n */\nexport async function getAgentMemoryStore({\n agent,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n}): Promise<MemoryStorage | null> {\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n return null;\n }\n\n try {\n return (await memory.storage.getStore('memory')) ?? null;\n } catch {\n return null;\n }\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds)\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n agent,\n responseId,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata || metadata.agentId !== agent.id) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\nexport async function findResponseTurnRecordAcrossAgents({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n for (const agent of agents) {\n const match = await findResponseTurnRecord({ agent, responseId, requestContext });\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport type ConversationThreadRecord = {\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\nexport async function findConversationThreadAcrossAgents({\n mastra,\n conversationId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n conversationId: string;\n requestContext: RequestContext;\n}): Promise<ConversationThreadRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n\n for (const agent of agents) {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n continue;\n }\n\n const thread = await memoryStore.getThreadById({ threadId: conversationId });\n if (!thread) {\n continue;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n return { thread, memoryStore };\n }\n\n return null;\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n responseId,\n text,\n threadContext,\n}: {\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return responseMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n memoryStore,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n memoryStore: MemoryStorage | null;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const lastAssistantMessage =\n lastAssistantIndex >= 0\n ? {\n ...normalizedMessages[lastAssistantIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n\n const staleMessageIds =\n lastAssistantIndex >= 0 && messages[lastAssistantIndex]?.id && messages[lastAssistantIndex]?.id !== responseId\n ? [messages[lastAssistantIndex]!.id]\n : [];\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: normalizedMessages.map(message => message.id),\n });\n\n if (lastAssistantIndex >= 0) {\n normalizedMessages[lastAssistantIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n await memoryStore.saveMessages({ messages: normalizedMessages });\n\n if (staleMessageIds.length > 0) {\n await memoryStore.deleteMessages(staleMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n responseTurnRecord,\n}: {\n responseTurnRecord: ResponseTurnRecord;\n}): Promise<void> {\n const messageIds =\n responseTurnRecord.messages.length > 0\n ? responseTurnRecord.messages.map(message => message.id)\n : [responseTurnRecord.message.id];\n\n await responseTurnRecord.memoryStore.deleteMessages(messageIds);\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { getAgentFromSystem } from './chunk-
|
|
1
|
+
import { getAgentFromSystem } from './chunk-T4B6NNIT.js';
|
|
2
|
+
import { listToolsResponseSchema, serializedToolSchema, toolIdPathParams, executeToolResponseSchema, executeToolContextBodySchema, agentToolPathParams, executeToolBodySchema } from './chunk-HYI4ZAV7.js';
|
|
2
3
|
import { stringify } from './chunk-ERKUFMCT.js';
|
|
3
|
-
import { validateBody } from './chunk-
|
|
4
|
+
import { validateBody } from './chunk-VLNRGJEM.js';
|
|
5
|
+
import { optionalRunIdSchema } from './chunk-2YY3EMMS.js';
|
|
4
6
|
import { createRoute, standardSchemaToJSONSchema, toStandardSchema5 } from './chunk-PA2BYLKF.js';
|
|
5
7
|
import { handleError } from './chunk-P23KBWKB.js';
|
|
6
8
|
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
7
|
-
import { listToolsResponseSchema, serializedToolSchema, toolIdPathParams, executeToolResponseSchema, executeToolContextBodySchema, agentToolPathParams, executeToolBodySchema } from './chunk-HI5I7TAN.js';
|
|
8
|
-
import { optionalRunIdSchema } from './chunk-2YY3EMMS.js';
|
|
9
9
|
import { __export } from './chunk-PR4QN5HX.js';
|
|
10
10
|
import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';
|
|
11
11
|
|
|
@@ -225,5 +225,5 @@ var EXECUTE_AGENT_TOOL_ROUTE = createRoute({
|
|
|
225
225
|
});
|
|
226
226
|
|
|
227
227
|
export { EXECUTE_AGENT_TOOL_ROUTE, EXECUTE_TOOL_ROUTE, GET_AGENT_TOOL_ROUTE, GET_TOOL_BY_ID_ROUTE, LIST_TOOLS_ROUTE, tools_exports };
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
229
|
-
//# sourceMappingURL=chunk-
|
|
228
|
+
//# sourceMappingURL=chunk-BPA7HXKB.js.map
|
|
229
|
+
//# sourceMappingURL=chunk-BPA7HXKB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/tools.ts"],"names":["tool"],"mappings":"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","file":"chunk-IUDQQ6QI.js","sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(jsonSchema);\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools }) => {\n try {\n const allTools =\n registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : mastra.listTools() || {};\n\n const serializedTools = Object.entries(allTools).reduce(\n (acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n } else {\n tool = mastra.getToolById(toolId);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n } else {\n tool = mastra.getToolById(toolId);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/tools.ts"],"names":["tool"],"mappings":"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","file":"chunk-BPA7HXKB.js","sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(jsonSchema);\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools }) => {\n try {\n const allTools =\n registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : mastra.listTools() || {};\n\n const serializedTools = Object.entries(allTools).reduce(\n (acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n } else {\n tool = mastra.getToolById(toolId);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n } else {\n tool = mastra.getToolById(toolId);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"]}
|
|
@@ -16,7 +16,8 @@ var backgroundTaskStreamQuerySchema = zod.z.object({
|
|
|
16
16
|
agentId: zod.z.string().optional(),
|
|
17
17
|
runId: zod.z.string().optional(),
|
|
18
18
|
threadId: zod.z.string().optional(),
|
|
19
|
-
resourceId: zod.z.string().optional()
|
|
19
|
+
resourceId: zod.z.string().optional(),
|
|
20
|
+
taskId: zod.z.string().optional()
|
|
20
21
|
});
|
|
21
22
|
var backgroundTaskDateColumnSchema = zod.z.enum(["createdAt", "startedAt", "completedAt"]);
|
|
22
23
|
var listBackgroundTasksQuerySchema = zod.z.object({
|
|
@@ -72,7 +73,8 @@ var BACKGROUND_TASK_STREAM_ROUTE = chunk5UKYK7YK_cjs.createRoute({
|
|
|
72
73
|
summary: "Stream background task events via SSE",
|
|
73
74
|
description: "Real-time Server-Sent Events stream of background task completion/failure events.",
|
|
74
75
|
tags: ["Background Tasks"],
|
|
75
|
-
|
|
76
|
+
requiresAuth: true,
|
|
77
|
+
handler: async ({ mastra, agentId, runId, threadId, resourceId, taskId, abortSignal }) => {
|
|
76
78
|
const bgManager = mastra.backgroundTaskManager;
|
|
77
79
|
if (!bgManager) {
|
|
78
80
|
return new ReadableStream({
|
|
@@ -86,7 +88,7 @@ var BACKGROUND_TASK_STREAM_ROUTE = chunk5UKYK7YK_cjs.createRoute({
|
|
|
86
88
|
}
|
|
87
89
|
});
|
|
88
90
|
}
|
|
89
|
-
return bgManager.stream({ agentId, runId, threadId, resourceId, abortSignal });
|
|
91
|
+
return bgManager.stream({ agentId, runId, threadId, resourceId, taskId, abortSignal });
|
|
90
92
|
}
|
|
91
93
|
});
|
|
92
94
|
var LIST_BACKGROUND_TASKS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
|
|
@@ -98,6 +100,7 @@ var LIST_BACKGROUND_TASKS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
|
|
|
98
100
|
summary: "List background tasks",
|
|
99
101
|
description: "Returns background tasks filtered by status, agent, run, etc.",
|
|
100
102
|
tags: ["Background Tasks"],
|
|
103
|
+
requiresAuth: true,
|
|
101
104
|
handler: async ({ mastra, ...params }) => {
|
|
102
105
|
const bgManager = mastra.backgroundTaskManager;
|
|
103
106
|
if (!bgManager) {
|
|
@@ -115,6 +118,7 @@ var GET_BACKGROUND_TASK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
|
|
|
115
118
|
summary: "Get a background task by ID",
|
|
116
119
|
description: "Returns a background task by ID.",
|
|
117
120
|
tags: ["Background Tasks"],
|
|
121
|
+
requiresAuth: true,
|
|
118
122
|
handler: async ({ mastra, backgroundTaskId }) => {
|
|
119
123
|
const bgManager = mastra.backgroundTaskManager;
|
|
120
124
|
if (!bgManager) {
|
|
@@ -131,5 +135,5 @@ var GET_BACKGROUND_TASK_ROUTE = chunk5UKYK7YK_cjs.createRoute({
|
|
|
131
135
|
exports.BACKGROUND_TASK_STREAM_ROUTE = BACKGROUND_TASK_STREAM_ROUTE;
|
|
132
136
|
exports.GET_BACKGROUND_TASK_ROUTE = GET_BACKGROUND_TASK_ROUTE;
|
|
133
137
|
exports.LIST_BACKGROUND_TASKS_ROUTE = LIST_BACKGROUND_TASKS_ROUTE;
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
135
|
-
//# sourceMappingURL=chunk-
|
|
138
|
+
//# sourceMappingURL=chunk-CKZMJIUO.cjs.map
|
|
139
|
+
//# sourceMappingURL=chunk-CKZMJIUO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/schemas/background-tasks.ts","../src/server/handlers/background-tasks.ts"],"names":["z","createRoute","HTTPException"],"mappings":"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","file":"chunk-CKZMJIUO.cjs","sourcesContent":["import { z } from 'zod';\n\nexport const backgroundTaskStatusSchema = z.enum([\n 'pending',\n 'running',\n 'completed',\n 'failed',\n 'cancelled',\n 'timed_out',\n]);\n\nexport const backgroundTaskStreamQuerySchema = z.object({\n agentId: z.string().optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n taskId: z.string().optional(),\n});\n\nexport const backgroundTaskDateColumnSchema = z.enum(['createdAt', 'startedAt', 'completedAt']);\n\nexport const listBackgroundTasksQuerySchema = z.object({\n agentId: z.string().optional(),\n status: backgroundTaskStatusSchema.optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n dateFilterBy: backgroundTaskDateColumnSchema.optional(),\n orderBy: backgroundTaskDateColumnSchema.optional(),\n orderDirection: z.enum(['asc', 'desc']).optional(),\n page: z.coerce.number().optional(),\n perPage: z.coerce.number().optional(),\n});\n\nexport const backgroundTaskIdPathParams = z.object({\n backgroundTaskId: z.string(),\n});\n\nexport const backgroundTaskResponseSchema = z.object({\n id: z.string(),\n status: backgroundTaskStatusSchema,\n toolName: z.string(),\n toolCallId: z.string(),\n args: z.record(z.string(), z.unknown()),\n agentId: z.string(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n runId: z.string(),\n result: z.unknown().optional(),\n error: z.object({ message: z.string(), stack: z.string().optional() }).optional(),\n createdAt: z.date(),\n startedAt: z.date().optional(),\n completedAt: z.date().optional(),\n retryCount: z.number(),\n maxRetries: z.number(),\n timeoutMs: z.number(),\n});\n\nexport const listBackgroundTaskResponseSchema = z.object({\n tasks: z.array(backgroundTaskResponseSchema),\n total: z.number(),\n});\n\nexport const backgroundTaskStreamResponseSchema = z.any();\n","import { HTTPException } from '../http-exception';\nimport {\n backgroundTaskResponseSchema,\n backgroundTaskStreamQuerySchema,\n backgroundTaskStreamResponseSchema,\n listBackgroundTaskResponseSchema,\n listBackgroundTasksQuerySchema,\n backgroundTaskIdPathParams,\n} from '../schemas/background-tasks';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nexport const BACKGROUND_TASK_STREAM_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n queryParamSchema: backgroundTaskStreamQuerySchema,\n responseSchema: backgroundTaskStreamResponseSchema,\n summary: 'Stream background task events via SSE',\n description: 'Real-time Server-Sent Events stream of background task completion/failure events.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, runId, threadId, resourceId, taskId, abortSignal }) => {\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks are not enabled — return an empty stream that stays\n // open until the client disconnects. This avoids spamming the logs with\n // false-positive errors when clients (e.g. the studio UI) optimistically\n // subscribe to the stream.\n return new ReadableStream({\n start(controller) {\n abortSignal?.addEventListener('abort', () => {\n try {\n controller.close();\n } catch {\n // Already closed\n }\n });\n },\n });\n }\n\n return bgManager.stream({ agentId, runId, threadId, resourceId, taskId, abortSignal });\n },\n});\n\nexport const LIST_BACKGROUND_TASKS_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks',\n responseType: 'json' as const,\n queryParamSchema: listBackgroundTasksQuerySchema,\n responseSchema: listBackgroundTaskResponseSchema,\n summary: 'List background tasks',\n description: 'Returns background tasks filtered by status, agent, run, etc.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — there are no tasks to return.\n return { tasks: [], total: 0 };\n }\n\n return bgManager.listTasks(params);\n },\n});\n\nexport const GET_BACKGROUND_TASK_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/:backgroundTaskId',\n responseType: 'json' as const,\n pathParamSchema: backgroundTaskIdPathParams,\n responseSchema: backgroundTaskResponseSchema,\n summary: 'Get a background task by ID',\n description: 'Returns a background task by ID.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, backgroundTaskId }) => {\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — the task can't exist.\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n\n const task = await bgManager.getTask(backgroundTaskId);\n if (!task) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n return task;\n },\n});\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { listDatasetsResponseSchema, paginationQuerySchema, datasetResponseSchema, createDatasetBodySchema, datasetIdPathParams, updateDatasetBodySchema, listItemsResponseSchema, listItemsQuerySchema, datasetItemResponseSchema, addItemBodySchema, datasetAndItemIdPathParams, updateItemBodySchema, listExperimentsResponseSchema, reviewSummaryResponseSchema, experimentSummaryResponseSchema, triggerExperimentBodySchema, datasetAndExperimentIdPathParams, experimentResponseSchema, listExperimentResultsResponseSchema, experimentResultResponseSchema, updateExperimentResultBodySchema, experimentResultIdPathParams, comparisonResponseSchema, compareExperimentsBodySchema, listDatasetVersionsResponseSchema, listItemVersionsResponseSchema, datasetItemVersionPathParams, batchInsertItemsResponseSchema, batchInsertItemsBodySchema, batchDeleteItemsResponseSchema, batchDeleteItemsBodySchema, generateItemsResponseSchema, generateItemsBodySchema, clusterFailuresResponseSchema, clusterFailuresBodySchema } from './chunk-IFYVRBFS.js';
|
|
2
|
+
import { successResponseSchema } from './chunk-2YY3EMMS.js';
|
|
2
3
|
import { createRoute } from './chunk-PA2BYLKF.js';
|
|
3
4
|
import { handleError } from './chunk-P23KBWKB.js';
|
|
4
5
|
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
5
|
-
import { successResponseSchema } from './chunk-2YY3EMMS.js';
|
|
6
6
|
import { Agent } from '@mastra/core/agent';
|
|
7
7
|
import { MastraError } from '@mastra/core/error';
|
|
8
8
|
import { coreFeatures } from '@mastra/core/features';
|
|
@@ -976,5 +976,5 @@ Return both "clusters" (grouping items by pattern) and "proposedTags" (a list ma
|
|
|
976
976
|
});
|
|
977
977
|
|
|
978
978
|
export { ADD_ITEM_ROUTE, BATCH_DELETE_ITEMS_ROUTE, BATCH_INSERT_ITEMS_ROUTE, CLUSTER_FAILURES_ROUTE, COMPARE_EXPERIMENTS_ROUTE, CREATE_DATASET_ROUTE, DELETE_DATASET_ROUTE, DELETE_ITEM_ROUTE, EXPERIMENT_REVIEW_SUMMARY_ROUTE, GENERATE_ITEMS_ROUTE, GET_DATASET_ROUTE, GET_EXPERIMENT_ROUTE, GET_ITEM_ROUTE, GET_ITEM_VERSION_ROUTE, LIST_ALL_EXPERIMENTS_ROUTE, LIST_DATASETS_ROUTE, LIST_DATASET_VERSIONS_ROUTE, LIST_EXPERIMENTS_ROUTE, LIST_EXPERIMENT_RESULTS_ROUTE, LIST_ITEMS_ROUTE, LIST_ITEM_VERSIONS_ROUTE, TRIGGER_EXPERIMENT_ROUTE, UPDATE_DATASET_ROUTE, UPDATE_EXPERIMENT_RESULT_ROUTE, UPDATE_ITEM_ROUTE };
|
|
979
|
-
//# sourceMappingURL=chunk-
|
|
980
|
-
//# sourceMappingURL=chunk-
|
|
979
|
+
//# sourceMappingURL=chunk-DY6OYCMG.js.map
|
|
980
|
+
//# sourceMappingURL=chunk-DY6OYCMG.js.map
|