@mastra/server 0.0.0-fix-persist-session-cache-option-mcp-server-20251031182703 → 0.0.0-fix-9244-clickhouse-metadata-20251104213434
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 +176 -3
- package/dist/{chunk-BATEJLED.js → chunk-46Z2KDQL.js} +12 -12
- package/dist/chunk-46Z2KDQL.js.map +1 -0
- package/dist/{chunk-7NADHFD2.cjs → chunk-64ITUOXI.cjs} +2 -2
- package/dist/chunk-64ITUOXI.cjs.map +1 -0
- package/dist/{chunk-MMROOK5J.js → chunk-6QWQZI4Q.js} +2 -2
- package/dist/{chunk-7NADHFD2.cjs.map → chunk-6QWQZI4Q.js.map} +1 -1
- package/dist/{chunk-7KNKINQE.js → chunk-73PAWDM5.js} +4 -4
- package/dist/{chunk-7KNKINQE.js.map → chunk-73PAWDM5.js.map} +1 -1
- package/dist/{chunk-PUYDRTPG.cjs → chunk-AEVI2HIU.cjs} +105 -174
- package/dist/chunk-AEVI2HIU.cjs.map +1 -0
- package/dist/{chunk-OEW3R7V4.js → chunk-ALOLTNSO.js} +3 -3
- package/dist/{chunk-OEW3R7V4.js.map → chunk-ALOLTNSO.js.map} +1 -1
- package/dist/{chunk-7YHMDEQ6.cjs → chunk-B6NK4KI5.cjs} +25 -25
- package/dist/{chunk-7YHMDEQ6.cjs.map → chunk-B6NK4KI5.cjs.map} +1 -1
- package/dist/{chunk-6IGZKIRM.cjs → chunk-BANGX6SC.cjs} +28 -28
- package/dist/chunk-BANGX6SC.cjs.map +1 -0
- package/dist/{chunk-BMOVKZO7.cjs → chunk-BHQH5QXD.cjs} +42 -37
- package/dist/chunk-BHQH5QXD.cjs.map +1 -0
- package/dist/{chunk-G4PUALCE.cjs → chunk-BTWIR2B7.cjs} +4 -4
- package/dist/{chunk-G4PUALCE.cjs.map → chunk-BTWIR2B7.cjs.map} +1 -1
- package/dist/{chunk-6562SOHJ.js → chunk-DNUO33HF.js} +3 -4
- package/dist/chunk-DNUO33HF.js.map +1 -0
- package/dist/{chunk-CXVOX4WB.js → chunk-FKZVCLOY.js} +49 -30
- package/dist/chunk-FKZVCLOY.js.map +1 -0
- package/dist/{chunk-2S4IMB6E.cjs → chunk-GTZOYEAU.cjs} +31 -31
- package/dist/chunk-GTZOYEAU.cjs.map +1 -0
- package/dist/{chunk-LZKJT7QP.cjs → chunk-GU4EWMZB.cjs} +34 -64
- package/dist/chunk-GU4EWMZB.cjs.map +1 -0
- package/dist/{chunk-36CWLQQT.js → chunk-IGOWG5V5.js} +22 -22
- package/dist/chunk-IGOWG5V5.js.map +1 -0
- package/dist/{chunk-4BKR6543.cjs → chunk-JIIVA4BA.cjs} +4571 -988
- package/dist/chunk-JIIVA4BA.cjs.map +1 -0
- package/dist/{chunk-2XD2KQEK.js → chunk-JO2AZFJN.js} +21 -16
- package/dist/chunk-JO2AZFJN.js.map +1 -0
- package/dist/{chunk-HLIRV42R.cjs → chunk-JZ65BJ6H.cjs} +82 -89
- package/dist/chunk-JZ65BJ6H.cjs.map +1 -0
- package/dist/{chunk-4YFT3JFJ.js → chunk-KCP6I5F3.js} +4547 -963
- package/dist/chunk-KCP6I5F3.js.map +1 -0
- package/dist/{chunk-MYR4PVGN.js → chunk-KWH5QBXP.js} +4 -4
- package/dist/{chunk-MYR4PVGN.js.map → chunk-KWH5QBXP.js.map} +1 -1
- package/dist/{chunk-GQRJOUV7.js → chunk-LF2ZLOFP.js} +34 -64
- package/dist/chunk-LF2ZLOFP.js.map +1 -0
- package/dist/{chunk-74ZF4DII.js → chunk-LPCK5MAF.js} +5 -5
- package/dist/{chunk-74ZF4DII.js.map → chunk-LPCK5MAF.js.map} +1 -1
- package/dist/{chunk-YNGDJJOH.cjs → chunk-LWLSQ2W4.cjs} +13 -14
- package/dist/chunk-LWLSQ2W4.cjs.map +1 -0
- package/dist/{chunk-WH5RPLO4.cjs → chunk-PPMIB3FQ.cjs} +9 -9
- package/dist/{chunk-WH5RPLO4.cjs.map → chunk-PPMIB3FQ.cjs.map} +1 -1
- package/dist/{chunk-LROVQBIB.cjs → chunk-QFGNUBOA.cjs} +101 -82
- package/dist/chunk-QFGNUBOA.cjs.map +1 -0
- package/dist/{chunk-S4IOWSI3.js → chunk-R6OQFR47.js} +29 -97
- package/dist/chunk-R6OQFR47.js.map +1 -0
- package/dist/{chunk-EP3JQDPD.cjs → chunk-S54HNARD.cjs} +18 -18
- package/dist/{chunk-EP3JQDPD.cjs.map → chunk-S54HNARD.cjs.map} +1 -1
- package/dist/{chunk-4QCXUEAT.js → chunk-SZIFSF4T.js} +3 -3
- package/dist/{chunk-4QCXUEAT.js.map → chunk-SZIFSF4T.js.map} +1 -1
- package/dist/{chunk-CY4TP3FK.js → chunk-UXGQZUYZ.js} +3 -3
- package/dist/{chunk-CY4TP3FK.js.map → chunk-UXGQZUYZ.js.map} +1 -1
- package/dist/{chunk-RE4RPXT2.cjs → chunk-V5WWQN7P.cjs} +4 -4
- package/dist/{chunk-RE4RPXT2.cjs.map → chunk-V5WWQN7P.cjs.map} +1 -1
- package/dist/{chunk-7MCHFMDF.js → chunk-VYR3SAFM.js} +40 -47
- package/dist/chunk-VYR3SAFM.js.map +1 -0
- package/dist/{chunk-SED4H2GJ.cjs → chunk-XXGID4PQ.cjs} +4 -4
- package/dist/{chunk-SED4H2GJ.cjs.map → chunk-XXGID4PQ.cjs.map} +1 -1
- package/dist/server/handlers/a2a.cjs +7 -7
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +20 -24
- package/dist/server/handlers/agent-builder.d.ts +23 -42
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agents.cjs +19 -19
- package/dist/server/handlers/agents.d.ts +8 -9
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/error.cjs +2 -2
- package/dist/server/handlers/error.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/memory.cjs +18 -18
- package/dist/server/handlers/memory.d.ts +17 -16
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability.cjs +6 -6
- package/dist/server/handlers/observability.d.ts +7 -7
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +1 -1
- package/dist/server/handlers/scores.cjs +11 -11
- package/dist/server/handlers/scores.d.ts +16 -16
- package/dist/server/handlers/scores.d.ts.map +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.d.ts.map +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/utils.cjs +3 -3
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/vector.cjs +7 -7
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/voice.cjs +5 -5
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +20 -24
- package/dist/server/handlers/workflows.d.ts +9 -12
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +22 -22
- package/dist/server/handlers.js +11 -11
- package/dist/server/http-exception.d.ts +0 -5
- package/dist/server/http-exception.d.ts.map +1 -1
- package/dist/server/utils.d.ts +1 -1
- package/dist/server/utils.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/chunk-2S4IMB6E.cjs.map +0 -1
- package/dist/chunk-2XD2KQEK.js.map +0 -1
- package/dist/chunk-36CWLQQT.js.map +0 -1
- package/dist/chunk-4BKR6543.cjs.map +0 -1
- package/dist/chunk-4YFT3JFJ.js.map +0 -1
- package/dist/chunk-6562SOHJ.js.map +0 -1
- package/dist/chunk-6IGZKIRM.cjs.map +0 -1
- package/dist/chunk-7MCHFMDF.js.map +0 -1
- package/dist/chunk-BATEJLED.js.map +0 -1
- package/dist/chunk-BMOVKZO7.cjs.map +0 -1
- package/dist/chunk-CXVOX4WB.js.map +0 -1
- package/dist/chunk-GQRJOUV7.js.map +0 -1
- package/dist/chunk-HLIRV42R.cjs.map +0 -1
- package/dist/chunk-LROVQBIB.cjs.map +0 -1
- package/dist/chunk-LZKJT7QP.cjs.map +0 -1
- package/dist/chunk-MMROOK5J.js.map +0 -1
- package/dist/chunk-PUYDRTPG.cjs.map +0 -1
- package/dist/chunk-S4IOWSI3.js.map +0 -1
- package/dist/chunk-YNGDJJOH.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/logs.ts"],"names":["__export","validateBody","handleError"],"mappings":";;;;;;;AAAA,IAAA,YAAA,GAAA;AAAAA,0BAAA,CAAA,YAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,eAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAmBA,eAAsB,eAAA,CAAgB;AAAA,EACpC,MAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,IAAI;AACF,IAAAC,8BAAA,CAAa,EAAE,aAAa,CAAA;AAE5B,IAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,UAAU,IAAA,EAAM,OAAA,EAAQ,GAAI,MAAA,IAAU,EAAC;AAGpF,IAAA,MAAM,OAAA,GAAU,WACZ,MAAA,CAAO,WAAA;AAAA,MAAA,CACJ,KAAA,CAAM,QAAQ,QAAQ,CAAA,GAAI,WAAW,CAAC,QAAQ,CAAA,EAAG,GAAA,CAAI,CAAA,IAAA,KAAQ;AAC5D,QAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AACnC,QAAA,OAAO,CAAC,KAAK,KAAK,CAAA;AAAA,MACpB,CAAC;AAAA,KACH,GACA,MAAA;AAEJ,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,QAAA,CAAS,WAAA,EAAc;AAAA,MAC/C,QAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA,EAAM,IAAA,GAAO,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA;AAAA,MAC5B,OAAA,EAAS,OAAA,GAAU,MAAA,CAAO,OAAO,CAAA,GAAI;AAAA,KACtC,CAAA;AACD,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAOC,6BAAA,CAAY,OAAO,oBAAoB,CAAA;AAAA,EAChD;AACF;AAEA,eAAsB,sBAAA,CAAuB;AAAA,EAC3C,MAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAqE;AACnE,EAAA,IAAI;AACF,IAAAD,8BAAA,CAAa,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AAEnC,IAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,UAAU,IAAA,EAAM,OAAA,EAAQ,GAAI,MAAA,IAAU,EAAC;AAGpF,IAAA,MAAM,OAAA,GAAU,WACZ,MAAA,CAAO,WAAA;AAAA,MAAA,CACJ,KAAA,CAAM,QAAQ,QAAQ,CAAA,GAAI,WAAW,CAAC,QAAQ,CAAA,EAAG,GAAA,CAAI,CAAA,IAAA,KAAQ;AAC5D,QAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AACnC,QAAA,OAAO,CAAC,KAAK,KAAK,CAAA;AAAA,MACpB,CAAC;AAAA,KACH,GACA,MAAA;AAEJ,IAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,eAAA,CAAgB;AAAA,MACxC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA,EAAM,IAAA,GAAO,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA;AAAA,MAC5B,OAAA,EAAS,OAAA,GAAU,MAAA,CAAO,OAAO,CAAA,GAAI;AAAA,KACtC,CAAA;AACD,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAOC,6BAAA,CAAY,OAAO,8BAA8B,CAAA;AAAA,EAC1D;AACF;AAEA,eAAsB,iBAAA,CAAkB,EAAE,MAAA,EAAO,EAAgC;AAC/E,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,IAAA,MAAM,UAAA,GAAa,OAAO,aAAA,EAAc;AAExC,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,aAAa,CAAC,GAAG,WAAW,IAAA,EAAM,IAAI;AAAC,KACrD;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,OAAOA,6BAAA,CAAY,OAAO,8BAA8B,CAAA;AAAA,EAC1D;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/logs.ts"],"names":["__export","validateBody","handleError"],"mappings":"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","file":"chunk-PPMIB3FQ.cjs","sourcesContent":["import type { BaseLogMessage, LogLevel } from '@mastra/core/logger';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ntype LogsContext = {\n mastra: Mastra;\n transportId?: string;\n runId?: string;\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: string | string[];\n page?: number;\n perPage?: number;\n };\n};\n\nexport async function listLogsHandler({\n mastra,\n transportId,\n params,\n}: Pick<LogsContext, 'mastra' | 'transportId' | 'params'>): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n}> {\n try {\n validateBody({ transportId });\n\n const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};\n\n // Parse filter query parameter if present\n const filters = _filters\n ? Object.fromEntries(\n (Array.isArray(_filters) ? _filters : [_filters]).map(attr => {\n const [key, value] = attr.split(':');\n return [key, value];\n }),\n )\n : undefined;\n\n const logs = await mastra.listLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n}\n\nexport async function listLogsByRunIdHandler({\n mastra,\n runId,\n transportId,\n params,\n}: Pick<LogsContext, 'mastra' | 'runId' | 'transportId' | 'params'>) {\n try {\n validateBody({ runId, transportId });\n\n const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};\n\n // Parse filter query parameter if present\n const filters = _filters\n ? Object.fromEntries(\n (Array.isArray(_filters) ? _filters : [_filters]).map(attr => {\n const [key, value] = attr.split(':');\n return [key, value];\n }),\n )\n : undefined;\n\n const logs = await mastra.listLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n}\n\nexport async function listLogTransports({ mastra }: Pick<LogsContext, 'mastra'>) {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkBTWIR2B7_cjs = require('./chunk-BTWIR2B7.cjs');
|
|
4
|
+
var chunkV5WWQN7P_cjs = require('./chunk-V5WWQN7P.cjs');
|
|
5
|
+
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
6
6
|
var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
|
|
7
7
|
var agent = require('@mastra/core/agent');
|
|
8
8
|
var di = require('@mastra/core/di');
|
|
@@ -17,9 +17,9 @@ chunkO7I5CWRX_cjs.__export(memory_exports, {
|
|
|
17
17
|
getMemoryConfigHandler: () => getMemoryConfigHandler,
|
|
18
18
|
getMemoryStatusHandler: () => getMemoryStatusHandler,
|
|
19
19
|
getMessagesHandler: () => getMessagesHandler,
|
|
20
|
-
getMessagesPaginatedHandler: () => getMessagesPaginatedHandler,
|
|
21
20
|
getThreadByIdHandler: () => getThreadByIdHandler,
|
|
22
21
|
getWorkingMemoryHandler: () => getWorkingMemoryHandler,
|
|
22
|
+
listMessagesHandler: () => listMessagesHandler,
|
|
23
23
|
listThreadsHandler: () => listThreadsHandler,
|
|
24
24
|
saveMessagesHandler: () => saveMessagesHandler,
|
|
25
25
|
searchMemoryHandler: () => searchMemoryHandler,
|
|
@@ -57,15 +57,14 @@ async function getMemoryFromContext({
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
if (!agent) {
|
|
60
|
-
throw new
|
|
60
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Agent not found" });
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
if (agent) {
|
|
64
64
|
return await agent?.getMemory({
|
|
65
65
|
requestContext: requestContext ?? new di.RequestContext()
|
|
66
|
-
})
|
|
66
|
+
});
|
|
67
67
|
}
|
|
68
|
-
return mastra.getMemory();
|
|
69
68
|
}
|
|
70
69
|
async function getMemoryStatusHandler({
|
|
71
70
|
mastra,
|
|
@@ -79,7 +78,7 @@ async function getMemoryStatusHandler({
|
|
|
79
78
|
}
|
|
80
79
|
return { result: true };
|
|
81
80
|
} catch (error) {
|
|
82
|
-
return
|
|
81
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error getting memory status");
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
84
|
async function getMemoryConfigHandler({
|
|
@@ -90,12 +89,12 @@ async function getMemoryConfigHandler({
|
|
|
90
89
|
try {
|
|
91
90
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
92
91
|
if (!memory) {
|
|
93
|
-
throw new
|
|
92
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
94
93
|
}
|
|
95
94
|
const config = memory.getMergedThreadConfig({});
|
|
96
95
|
return { config };
|
|
97
96
|
} catch (error) {
|
|
98
|
-
return
|
|
97
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error getting memory configuration");
|
|
99
98
|
}
|
|
100
99
|
}
|
|
101
100
|
async function listThreadsHandler({
|
|
@@ -103,27 +102,25 @@ async function listThreadsHandler({
|
|
|
103
102
|
agentId,
|
|
104
103
|
resourceId,
|
|
105
104
|
requestContext,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
orderBy
|
|
109
|
-
sortDirection
|
|
105
|
+
page,
|
|
106
|
+
perPage,
|
|
107
|
+
orderBy
|
|
110
108
|
}) {
|
|
111
109
|
try {
|
|
112
110
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
113
111
|
if (!memory) {
|
|
114
|
-
throw new
|
|
112
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
115
113
|
}
|
|
116
|
-
|
|
114
|
+
chunkBTWIR2B7_cjs.validateBody({ resourceId });
|
|
117
115
|
const result = await memory.listThreadsByResourceId({
|
|
118
116
|
resourceId,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
orderBy
|
|
122
|
-
sortDirection
|
|
117
|
+
page,
|
|
118
|
+
perPage,
|
|
119
|
+
orderBy
|
|
123
120
|
});
|
|
124
121
|
return result;
|
|
125
122
|
} catch (error) {
|
|
126
|
-
return
|
|
123
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error listing threads");
|
|
127
124
|
}
|
|
128
125
|
}
|
|
129
126
|
async function getThreadByIdHandler({
|
|
@@ -133,18 +130,18 @@ async function getThreadByIdHandler({
|
|
|
133
130
|
requestContext
|
|
134
131
|
}) {
|
|
135
132
|
try {
|
|
136
|
-
|
|
133
|
+
chunkBTWIR2B7_cjs.validateBody({ threadId });
|
|
137
134
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
138
135
|
if (!memory) {
|
|
139
|
-
throw new
|
|
136
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
140
137
|
}
|
|
141
138
|
const thread = await memory.getThreadById({ threadId });
|
|
142
139
|
if (!thread) {
|
|
143
|
-
throw new
|
|
140
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
|
|
144
141
|
}
|
|
145
142
|
return thread;
|
|
146
143
|
} catch (error) {
|
|
147
|
-
return
|
|
144
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error getting thread");
|
|
148
145
|
}
|
|
149
146
|
}
|
|
150
147
|
async function saveMessagesHandler({
|
|
@@ -156,17 +153,17 @@ async function saveMessagesHandler({
|
|
|
156
153
|
try {
|
|
157
154
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
158
155
|
if (!memory) {
|
|
159
|
-
throw new
|
|
156
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
160
157
|
}
|
|
161
158
|
if (!body?.messages) {
|
|
162
|
-
throw new
|
|
159
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Messages are required" });
|
|
163
160
|
}
|
|
164
161
|
if (!Array.isArray(body.messages)) {
|
|
165
|
-
throw new
|
|
162
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Messages should be an array" });
|
|
166
163
|
}
|
|
167
164
|
const invalidMessages = body.messages.filter((message) => !message.threadId || !message.resourceId);
|
|
168
165
|
if (invalidMessages.length > 0) {
|
|
169
|
-
throw new
|
|
166
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, {
|
|
170
167
|
message: `All messages must have threadId and resourceId fields. Found ${invalidMessages.length} invalid message(s).`
|
|
171
168
|
});
|
|
172
169
|
}
|
|
@@ -178,7 +175,7 @@ async function saveMessagesHandler({
|
|
|
178
175
|
const result = await memory.saveMessages({ messages: processedMessages, memoryConfig: {} });
|
|
179
176
|
return result;
|
|
180
177
|
} catch (error) {
|
|
181
|
-
return
|
|
178
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error saving messages");
|
|
182
179
|
}
|
|
183
180
|
}
|
|
184
181
|
async function createThreadHandler({
|
|
@@ -190,9 +187,9 @@ async function createThreadHandler({
|
|
|
190
187
|
try {
|
|
191
188
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
192
189
|
if (!memory) {
|
|
193
|
-
throw new
|
|
190
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
194
191
|
}
|
|
195
|
-
|
|
192
|
+
chunkBTWIR2B7_cjs.validateBody({ resourceId: body?.resourceId });
|
|
196
193
|
const result = await memory.createThread({
|
|
197
194
|
resourceId: body?.resourceId,
|
|
198
195
|
title: body?.title,
|
|
@@ -201,7 +198,7 @@ async function createThreadHandler({
|
|
|
201
198
|
});
|
|
202
199
|
return result;
|
|
203
200
|
} catch (error) {
|
|
204
|
-
return
|
|
201
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error saving thread to memory");
|
|
205
202
|
}
|
|
206
203
|
}
|
|
207
204
|
async function updateThreadHandler({
|
|
@@ -214,17 +211,17 @@ async function updateThreadHandler({
|
|
|
214
211
|
try {
|
|
215
212
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
216
213
|
if (!body) {
|
|
217
|
-
throw new
|
|
214
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Body is required" });
|
|
218
215
|
}
|
|
219
216
|
const { title, metadata, resourceId } = body;
|
|
220
217
|
const updatedAt = /* @__PURE__ */ new Date();
|
|
221
|
-
|
|
218
|
+
chunkBTWIR2B7_cjs.validateBody({ threadId });
|
|
222
219
|
if (!memory) {
|
|
223
|
-
throw new
|
|
220
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
224
221
|
}
|
|
225
222
|
const thread = await memory.getThreadById({ threadId });
|
|
226
223
|
if (!thread) {
|
|
227
|
-
throw new
|
|
224
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
|
|
228
225
|
}
|
|
229
226
|
const updatedThread = {
|
|
230
227
|
...thread,
|
|
@@ -237,7 +234,7 @@ async function updateThreadHandler({
|
|
|
237
234
|
const result = await memory.saveThread({ thread: updatedThread });
|
|
238
235
|
return result;
|
|
239
236
|
} catch (error) {
|
|
240
|
-
return
|
|
237
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error updating thread");
|
|
241
238
|
}
|
|
242
239
|
}
|
|
243
240
|
async function deleteThreadHandler({
|
|
@@ -247,42 +244,53 @@ async function deleteThreadHandler({
|
|
|
247
244
|
requestContext
|
|
248
245
|
}) {
|
|
249
246
|
try {
|
|
250
|
-
|
|
247
|
+
chunkBTWIR2B7_cjs.validateBody({ threadId });
|
|
251
248
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
252
249
|
if (!memory) {
|
|
253
|
-
throw new
|
|
250
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
254
251
|
}
|
|
255
252
|
const thread = await memory.getThreadById({ threadId });
|
|
256
253
|
if (!thread) {
|
|
257
|
-
throw new
|
|
254
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
|
|
258
255
|
}
|
|
259
256
|
await memory.deleteThread(threadId);
|
|
260
257
|
return { result: "Thread deleted" };
|
|
261
258
|
} catch (error) {
|
|
262
|
-
return
|
|
259
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error deleting thread");
|
|
263
260
|
}
|
|
264
261
|
}
|
|
265
|
-
async function
|
|
262
|
+
async function listMessagesHandler({
|
|
266
263
|
mastra,
|
|
267
264
|
threadId,
|
|
268
265
|
resourceId,
|
|
269
|
-
|
|
270
|
-
|
|
266
|
+
perPage,
|
|
267
|
+
page,
|
|
268
|
+
orderBy,
|
|
269
|
+
include,
|
|
270
|
+
filter
|
|
271
271
|
}) {
|
|
272
272
|
try {
|
|
273
|
-
|
|
273
|
+
chunkBTWIR2B7_cjs.validateBody({ threadId });
|
|
274
274
|
const storage = mastra.getStorage();
|
|
275
275
|
if (!storage) {
|
|
276
|
-
throw new
|
|
276
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Storage is not initialized" });
|
|
277
277
|
}
|
|
278
278
|
const thread = await storage.getThreadById({ threadId });
|
|
279
279
|
if (!thread) {
|
|
280
|
-
throw new
|
|
280
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
|
|
281
281
|
}
|
|
282
|
-
const result = await storage.
|
|
282
|
+
const result = await storage.listMessages({
|
|
283
|
+
threadId,
|
|
284
|
+
resourceId,
|
|
285
|
+
perPage,
|
|
286
|
+
page,
|
|
287
|
+
orderBy,
|
|
288
|
+
include,
|
|
289
|
+
filter
|
|
290
|
+
});
|
|
283
291
|
return result;
|
|
284
292
|
} catch (error) {
|
|
285
|
-
return
|
|
293
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error getting messages");
|
|
286
294
|
}
|
|
287
295
|
}
|
|
288
296
|
async function getMessagesHandler({
|
|
@@ -293,26 +301,29 @@ async function getMessagesHandler({
|
|
|
293
301
|
requestContext
|
|
294
302
|
}) {
|
|
295
303
|
if (limit !== void 0 && (!Number.isInteger(limit) || limit <= 0)) {
|
|
296
|
-
throw new
|
|
304
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Invalid limit: must be a positive integer" });
|
|
297
305
|
}
|
|
298
306
|
try {
|
|
299
|
-
|
|
307
|
+
chunkBTWIR2B7_cjs.validateBody({ threadId });
|
|
300
308
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
301
309
|
if (!memory) {
|
|
302
|
-
throw new
|
|
310
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
311
|
+
}
|
|
312
|
+
if (!threadId) {
|
|
313
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "No threadId found" });
|
|
303
314
|
}
|
|
304
315
|
const thread = await memory.getThreadById({ threadId });
|
|
305
316
|
if (!thread) {
|
|
306
|
-
throw new
|
|
317
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
|
|
307
318
|
}
|
|
308
319
|
const result = await memory.query({
|
|
309
320
|
threadId,
|
|
310
321
|
...limit && { selectBy: { last: limit } }
|
|
311
322
|
});
|
|
312
|
-
const uiMessages = agent.convertMessages(result.
|
|
313
|
-
return { messages: result.messages, uiMessages
|
|
323
|
+
const uiMessages = agent.convertMessages(result.messages).to("AIV5.UI");
|
|
324
|
+
return { messages: result.messages, uiMessages };
|
|
314
325
|
} catch (error) {
|
|
315
|
-
return
|
|
326
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error getting messages");
|
|
316
327
|
}
|
|
317
328
|
}
|
|
318
329
|
async function getWorkingMemoryHandler({
|
|
@@ -325,9 +336,9 @@ async function getWorkingMemoryHandler({
|
|
|
325
336
|
}) {
|
|
326
337
|
try {
|
|
327
338
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
328
|
-
|
|
339
|
+
chunkBTWIR2B7_cjs.validateBody({ threadId });
|
|
329
340
|
if (!memory) {
|
|
330
|
-
throw new
|
|
341
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
331
342
|
}
|
|
332
343
|
const thread = await memory.getThreadById({ threadId });
|
|
333
344
|
const threadExists = !!thread;
|
|
@@ -338,7 +349,7 @@ async function getWorkingMemoryHandler({
|
|
|
338
349
|
const source = config.workingMemory?.scope !== "thread" && resourceId ? "resource" : "thread";
|
|
339
350
|
return { workingMemory, source, workingMemoryTemplate, threadExists };
|
|
340
351
|
} catch (error) {
|
|
341
|
-
return
|
|
352
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error getting working memory");
|
|
342
353
|
}
|
|
343
354
|
}
|
|
344
355
|
async function updateWorkingMemoryHandler({
|
|
@@ -349,20 +360,20 @@ async function updateWorkingMemoryHandler({
|
|
|
349
360
|
requestContext
|
|
350
361
|
}) {
|
|
351
362
|
try {
|
|
352
|
-
|
|
363
|
+
chunkBTWIR2B7_cjs.validateBody({ threadId });
|
|
353
364
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
354
365
|
const { resourceId, memoryConfig, workingMemory } = body;
|
|
355
366
|
if (!memory) {
|
|
356
|
-
throw new
|
|
367
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
357
368
|
}
|
|
358
369
|
const thread = await memory.getThreadById({ threadId });
|
|
359
370
|
if (!thread) {
|
|
360
|
-
throw new
|
|
371
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
|
|
361
372
|
}
|
|
362
373
|
await memory.updateWorkingMemory({ threadId, resourceId, workingMemory, memoryConfig });
|
|
363
374
|
return { success: true };
|
|
364
375
|
} catch (error) {
|
|
365
|
-
return
|
|
376
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error updating working memory");
|
|
366
377
|
}
|
|
367
378
|
}
|
|
368
379
|
async function deleteMessagesHandler({
|
|
@@ -373,11 +384,11 @@ async function deleteMessagesHandler({
|
|
|
373
384
|
}) {
|
|
374
385
|
try {
|
|
375
386
|
if (messageIds === void 0 || messageIds === null) {
|
|
376
|
-
throw new
|
|
387
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "messageIds is required" });
|
|
377
388
|
}
|
|
378
389
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
379
390
|
if (!memory) {
|
|
380
|
-
throw new
|
|
391
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
381
392
|
}
|
|
382
393
|
await memory.deleteMessages(messageIds);
|
|
383
394
|
let count = 1;
|
|
@@ -386,7 +397,7 @@ async function deleteMessagesHandler({
|
|
|
386
397
|
}
|
|
387
398
|
return { success: true, message: `${count} message${count === 1 ? "" : "s"} deleted successfully` };
|
|
388
399
|
} catch (error) {
|
|
389
|
-
return
|
|
400
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error deleting messages");
|
|
390
401
|
}
|
|
391
402
|
}
|
|
392
403
|
async function searchMemoryHandler({
|
|
@@ -400,10 +411,10 @@ async function searchMemoryHandler({
|
|
|
400
411
|
memoryConfig
|
|
401
412
|
}) {
|
|
402
413
|
try {
|
|
403
|
-
|
|
414
|
+
chunkBTWIR2B7_cjs.validateBody({ searchQuery, resourceId });
|
|
404
415
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
405
416
|
if (!memory) {
|
|
406
|
-
throw new
|
|
417
|
+
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Memory is not initialized" });
|
|
407
418
|
}
|
|
408
419
|
const config = memory.getMergedThreadConfig(memoryConfig || {});
|
|
409
420
|
const hasSemanticRecall = !!config?.semanticRecall;
|
|
@@ -411,10 +422,10 @@ async function searchMemoryHandler({
|
|
|
411
422
|
if (threadId && !resourceScope) {
|
|
412
423
|
const thread = await memory.getThreadById({ threadId });
|
|
413
424
|
if (!thread) {
|
|
414
|
-
throw new
|
|
425
|
+
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Thread not found" });
|
|
415
426
|
}
|
|
416
427
|
if (thread.resourceId !== resourceId) {
|
|
417
|
-
throw new
|
|
428
|
+
throw new chunk64ITUOXI_cjs.HTTPException(403, { message: "Thread does not belong to the specified resource" });
|
|
418
429
|
}
|
|
419
430
|
}
|
|
420
431
|
const searchResults = [];
|
|
@@ -431,8 +442,13 @@ async function searchMemoryHandler({
|
|
|
431
442
|
}
|
|
432
443
|
}
|
|
433
444
|
if (!threadId) {
|
|
434
|
-
const
|
|
435
|
-
|
|
445
|
+
const { threads } = await memory.listThreadsByResourceId({
|
|
446
|
+
resourceId,
|
|
447
|
+
page: 0,
|
|
448
|
+
perPage: 1,
|
|
449
|
+
orderBy: { field: "updatedAt", direction: "DESC" }
|
|
450
|
+
});
|
|
451
|
+
if (threads.length === 0) {
|
|
436
452
|
return {
|
|
437
453
|
results: [],
|
|
438
454
|
count: 0,
|
|
@@ -441,7 +457,7 @@ async function searchMemoryHandler({
|
|
|
441
457
|
searchType: hasSemanticRecall ? "semantic" : "text"
|
|
442
458
|
};
|
|
443
459
|
}
|
|
444
|
-
threadId =
|
|
460
|
+
threadId = threads[0].id;
|
|
445
461
|
}
|
|
446
462
|
const beforeRange = typeof config.semanticRecall === `boolean` ? 2 : typeof config.semanticRecall?.messageRange === `number` ? config.semanticRecall.messageRange : config.semanticRecall?.messageRange.before || 2;
|
|
447
463
|
const afterRange = typeof config.semanticRecall === `boolean` ? 2 : typeof config.semanticRecall?.messageRange === `number` ? config.semanticRecall.messageRange : config.semanticRecall?.messageRange.after || 2;
|
|
@@ -458,13 +474,16 @@ async function searchMemoryHandler({
|
|
|
458
474
|
vectorMessageSearch: searchQuery,
|
|
459
475
|
config
|
|
460
476
|
});
|
|
461
|
-
const
|
|
462
|
-
|
|
463
|
-
|
|
477
|
+
const threadIds = Array.from(
|
|
478
|
+
new Set(result.messages.map((m) => m.threadId || threadId).filter(Boolean))
|
|
479
|
+
);
|
|
480
|
+
const fetched = await Promise.all(threadIds.map((id) => memory.getThreadById({ threadId: id })));
|
|
481
|
+
const threadMap = new Map(fetched.filter(Boolean).map((t) => [t.id, t]));
|
|
482
|
+
for (const msg of result.messages) {
|
|
464
483
|
const content = typeof msg.content.content === `string` ? msg.content.content : msg.content.parts?.map((p) => p.type === "text" ? p.text : "").join(" ") || "";
|
|
465
484
|
const msgThreadId = msg.threadId || threadId;
|
|
466
485
|
const thread = threadMap.get(msgThreadId);
|
|
467
|
-
const threadMessages = (await memory.query({ threadId: msgThreadId })).
|
|
486
|
+
const threadMessages = (await memory.query({ threadId: msgThreadId })).messages;
|
|
468
487
|
const messageIndex = threadMessages.findIndex((m) => m.id === msg.id);
|
|
469
488
|
const searchResult = {
|
|
470
489
|
id: msg.id,
|
|
@@ -501,7 +520,7 @@ async function searchMemoryHandler({
|
|
|
501
520
|
searchType: hasSemanticRecall ? "semantic" : "text"
|
|
502
521
|
};
|
|
503
522
|
} catch (error) {
|
|
504
|
-
return
|
|
523
|
+
return chunkV5WWQN7P_cjs.handleError(error, "Error searching memory");
|
|
505
524
|
}
|
|
506
525
|
}
|
|
507
526
|
|
|
@@ -511,14 +530,14 @@ exports.deleteThreadHandler = deleteThreadHandler;
|
|
|
511
530
|
exports.getMemoryConfigHandler = getMemoryConfigHandler;
|
|
512
531
|
exports.getMemoryStatusHandler = getMemoryStatusHandler;
|
|
513
532
|
exports.getMessagesHandler = getMessagesHandler;
|
|
514
|
-
exports.getMessagesPaginatedHandler = getMessagesPaginatedHandler;
|
|
515
533
|
exports.getThreadByIdHandler = getThreadByIdHandler;
|
|
516
534
|
exports.getWorkingMemoryHandler = getWorkingMemoryHandler;
|
|
535
|
+
exports.listMessagesHandler = listMessagesHandler;
|
|
517
536
|
exports.listThreadsHandler = listThreadsHandler;
|
|
518
537
|
exports.memory_exports = memory_exports;
|
|
519
538
|
exports.saveMessagesHandler = saveMessagesHandler;
|
|
520
539
|
exports.searchMemoryHandler = searchMemoryHandler;
|
|
521
540
|
exports.updateThreadHandler = updateThreadHandler;
|
|
522
541
|
exports.updateWorkingMemoryHandler = updateWorkingMemoryHandler;
|
|
523
|
-
//# sourceMappingURL=chunk-
|
|
524
|
-
//# sourceMappingURL=chunk-
|
|
542
|
+
//# sourceMappingURL=chunk-QFGNUBOA.cjs.map
|
|
543
|
+
//# sourceMappingURL=chunk-QFGNUBOA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/memory.ts"],"names":["__export","agents","HTTPException","RequestContext","handleError","validateBody","convertMessages","generateEmptyFromSchema"],"mappings":"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","file":"chunk-QFGNUBOA.cjs","sourcesContent":["import { convertMessages } from '@mastra/core/agent';\nimport type { MastraDBMessage } from '@mastra/core/agent';\nimport { RequestContext } from '@mastra/core/di';\nimport type { MastraMemory } from '@mastra/core/memory';\nimport type { StorageListMessagesInput, StorageOrderBy } from '@mastra/core/storage';\nimport { generateEmptyFromSchema } from '@mastra/core/utils';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ninterface MemoryContext extends Context {\n agentId?: string;\n resourceId?: string;\n threadId?: string;\n requestContext?: RequestContext;\n}\n\nasync function getMemoryFromContext({\n mastra,\n agentId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'>): Promise<MastraMemory | null | undefined> {\n const logger = mastra.getLogger();\n let agent;\n if (agentId) {\n try {\n agent = mastra.getAgent(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra, searching agents for agent', error);\n }\n }\n if (agentId && !agent) {\n logger.debug('Agent not found, searching agents for agent', { agentId });\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const agents = await ag.listAgents();\n\n if (agents[agentId]) {\n agent = agents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n }\n\n if (agent) {\n return await agent?.getMemory({\n requestContext: requestContext ?? new RequestContext(),\n });\n }\n}\n\n// Memory handlers\nexport async function getMemoryStatusHandler({\n mastra,\n agentId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n return { result: false };\n }\n\n return { result: true };\n } catch (error) {\n return handleError(error, 'Error getting memory status');\n }\n}\n\nexport async function getMemoryConfigHandler({\n mastra,\n agentId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get the merged configuration (defaults + custom)\n const config = memory.getMergedThreadConfig({});\n\n return { config };\n } catch (error) {\n return handleError(error, 'Error getting memory configuration');\n }\n}\n\nexport async function listThreadsHandler({\n mastra,\n agentId,\n resourceId,\n requestContext,\n page,\n perPage,\n orderBy,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'resourceId' | 'requestContext'> & {\n page: number;\n perPage: number | false;\n orderBy?: StorageOrderBy;\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId });\n\n const result = await memory.listThreadsByResourceId({\n resourceId: resourceId!,\n page,\n perPage,\n orderBy,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error listing threads');\n }\n}\n\nexport async function getThreadByIdHandler({\n mastra,\n agentId,\n threadId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'requestContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n return thread;\n } catch (error) {\n return handleError(error, 'Error getting thread');\n }\n}\n\nexport async function saveMessagesHandler({\n mastra,\n agentId,\n body,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'> & {\n body: {\n messages: Parameters<MastraMemory['saveMessages']>[0]['messages'];\n };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n if (!body?.messages) {\n throw new HTTPException(400, { message: 'Messages are required' });\n }\n\n if (!Array.isArray(body.messages)) {\n throw new HTTPException(400, { message: 'Messages should be an array' });\n }\n\n // Validate that all messages have threadId and resourceId\n const invalidMessages = body.messages.filter(message => !message.threadId || !message.resourceId);\n if (invalidMessages.length > 0) {\n throw new HTTPException(400, {\n message: `All messages must have threadId and resourceId fields. Found ${invalidMessages.length} invalid message(s).`,\n });\n }\n\n const processedMessages = body.messages.map(message => ({\n ...message,\n id: message.id || memory.generateId(),\n createdAt: message.createdAt ? new Date(message.createdAt) : new Date(),\n }));\n\n const result = await memory.saveMessages({ messages: processedMessages, memoryConfig: {} });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving messages');\n }\n}\n\nexport async function createThreadHandler({\n mastra,\n agentId,\n body,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'> & {\n body?: Omit<Parameters<MastraMemory['createThread']>[0], 'resourceId'> & { resourceId?: string };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId: body?.resourceId });\n\n const result = await memory.createThread({\n resourceId: body?.resourceId!,\n title: body?.title,\n metadata: body?.metadata,\n threadId: body?.threadId,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving thread to memory');\n }\n}\n\nexport async function updateThreadHandler({\n mastra,\n agentId,\n threadId,\n body,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'requestContext'> & {\n body?: Parameters<MastraMemory['saveThread']>[0]['thread'];\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!body) {\n throw new HTTPException(400, { message: 'Body is required' });\n }\n\n const { title, metadata, resourceId } = body;\n const updatedAt = new Date();\n\n validateBody({ threadId });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n const updatedThread = {\n ...thread,\n title: title || thread.title,\n metadata: metadata || thread.metadata,\n resourceId: resourceId || thread.resourceId,\n createdAt: thread.createdAt,\n updatedAt,\n };\n\n const result = await memory.saveThread({ thread: updatedThread });\n return result;\n } catch (error) {\n return handleError(error, 'Error updating thread');\n }\n}\n\nexport async function deleteThreadHandler({\n mastra,\n agentId,\n threadId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'requestContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n await memory.deleteThread(threadId!);\n return { result: 'Thread deleted' };\n } catch (error) {\n return handleError(error, 'Error deleting thread');\n }\n}\n\nexport async function listMessagesHandler({\n mastra,\n threadId,\n resourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n}: Pick<MemoryContext, 'mastra'> & StorageListMessagesInput) {\n try {\n validateBody({ threadId });\n\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(400, { message: 'Storage is not initialized' });\n }\n\n const thread = await storage.getThreadById({ threadId: threadId! });\n\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n const result = await storage.listMessages({\n threadId: threadId!,\n resourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n}\n\nexport async function getMessagesHandler({\n mastra,\n agentId,\n threadId,\n limit,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'requestContext'> & {\n limit?: number;\n}) {\n if (limit !== undefined && (!Number.isInteger(limit) || limit <= 0)) {\n throw new HTTPException(400, { message: 'Invalid limit: must be a positive integer' });\n }\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n if (!threadId) {\n throw new HTTPException(400, { message: 'No threadId found' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n const result = await memory.query({\n threadId: threadId,\n ...(limit && { selectBy: { last: limit } }),\n });\n const uiMessages = convertMessages(result.messages).to('AIV5.UI');\n return { messages: result.messages, uiMessages };\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n}\n\n/**\n * Handler to get the working memory for a thread (optionally resource-scoped).\n * @returns workingMemory - the working memory for the thread\n * @returns source - thread or resource\n */\nexport async function getWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n resourceId,\n requestContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'requestContext'> & {\n resourceId?: Parameters<MastraMemory['getWorkingMemory']>[0]['resourceId'];\n memoryConfig?: Parameters<MastraMemory['getWorkingMemory']>[0]['memoryConfig'];\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n validateBody({ threadId });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n const thread = await memory.getThreadById({ threadId: threadId! });\n const threadExists = !!thread;\n const template = await memory.getWorkingMemoryTemplate({ memoryConfig });\n const workingMemoryTemplate =\n template?.format === 'json'\n ? { ...template, content: JSON.stringify(generateEmptyFromSchema(template.content)) }\n : template;\n const workingMemory = await memory.getWorkingMemory({ threadId: threadId!, resourceId, memoryConfig });\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const source = config.workingMemory?.scope !== 'thread' && resourceId ? 'resource' : 'thread';\n return { workingMemory, source, workingMemoryTemplate, threadExists };\n } catch (error) {\n return handleError(error, 'Error getting working memory');\n }\n}\n\n/**\n * Handler to update the working memory for a thread (optionally resource-scoped).\n * @param threadId - the thread id\n * @param body - the body containing the working memory to update and the resource id (optional)\n */\nexport async function updateWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n body,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'requestContext'> & {\n body: Omit<Parameters<MastraMemory['updateWorkingMemory']>[0], 'threadId'>;\n}) {\n try {\n validateBody({ threadId });\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n const { resourceId, memoryConfig, workingMemory } = body;\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n await memory.updateWorkingMemory({ threadId: threadId!, resourceId, workingMemory, memoryConfig });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error updating working memory');\n }\n}\n\ninterface SearchResult {\n id: string;\n role: string;\n content: any;\n createdAt: Date;\n threadId?: string;\n threadTitle?: string;\n score?: number;\n context?: {\n before?: SearchResult[];\n after?: SearchResult[];\n };\n}\n\ninterface SearchResponse {\n results: SearchResult[];\n count: number;\n query: string;\n searchScope?: string;\n searchType?: string;\n}\n\n/**\n * Handler to delete one or more messages.\n * @param messageIds - Can be a single ID, array of IDs, or objects with ID property\n */\nexport async function deleteMessagesHandler({\n mastra,\n agentId,\n messageIds,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'> & {\n messageIds: string | string[] | { id: string } | { id: string }[];\n}) {\n try {\n if (messageIds === undefined || messageIds === null) {\n throw new HTTPException(400, { message: 'messageIds is required' });\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Delete the messages - let the memory method handle validation\n await memory.deleteMessages(messageIds as any);\n\n // Count messages for response\n let count = 1;\n if (Array.isArray(messageIds)) {\n count = messageIds.length;\n }\n\n return { success: true, message: `${count} message${count === 1 ? '' : 's'} deleted successfully` };\n } catch (error) {\n return handleError(error, 'Error deleting messages');\n }\n}\n\nexport async function searchMemoryHandler({\n mastra,\n agentId,\n searchQuery,\n resourceId,\n threadId,\n limit = 20,\n requestContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'> & {\n searchQuery: string;\n resourceId: string;\n threadId?: string;\n limit?: number;\n memoryConfig?: any;\n}): Promise<SearchResponse | ReturnType<typeof handleError>> {\n try {\n validateBody({ searchQuery, resourceId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get memory configuration first to check scope\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const hasSemanticRecall = !!config?.semanticRecall;\n const resourceScope =\n typeof config?.semanticRecall === 'object' ? config?.semanticRecall?.scope !== 'thread' : true;\n\n // Only validate thread ownership if we're in thread scope\n if (threadId && !resourceScope) {\n const thread = await memory.getThreadById({ threadId });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n if (thread.resourceId !== resourceId) {\n throw new HTTPException(403, { message: 'Thread does not belong to the specified resource' });\n }\n }\n\n const searchResults: SearchResult[] = [];\n\n // If threadId is provided and scope is thread-based, check if the thread exists\n if (threadId && !resourceScope) {\n const thread = await memory.getThreadById({ threadId });\n if (!thread) {\n // Thread doesn't exist yet (new unsaved thread) - return empty results\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n }\n\n // If no threadId provided, get one from the resource\n if (!threadId) {\n const { threads } = await memory.listThreadsByResourceId({\n resourceId,\n page: 0,\n perPage: 1,\n orderBy: { field: 'updatedAt', direction: 'DESC' },\n });\n\n if (threads.length === 0) {\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n\n // Use first thread - Memory class will handle scope internally\n threadId = threads[0]!.id;\n }\n\n const beforeRange =\n typeof config.semanticRecall === `boolean`\n ? 2\n : typeof config.semanticRecall?.messageRange === `number`\n ? config.semanticRecall.messageRange\n : config.semanticRecall?.messageRange.before || 2;\n const afterRange =\n typeof config.semanticRecall === `boolean`\n ? 2\n : typeof config.semanticRecall?.messageRange === `number`\n ? config.semanticRecall.messageRange\n : config.semanticRecall?.messageRange.after || 2;\n\n if (resourceScope && config.semanticRecall) {\n config.semanticRecall =\n typeof config.semanticRecall === `boolean`\n ? // make message range 0 so we can highlight the matches in search, message range will include other messages, not the matching ones\n // and we add prev/next messages in a special section on each message anyway\n { messageRange: 0, topK: 2, scope: 'resource' }\n : { ...config.semanticRecall, messageRange: 0 };\n }\n\n // Single call to rememberMessages - just like the agent does\n // The Memory class handles scope (thread vs resource) internally\n const result = await memory.rememberMessages({\n threadId,\n resourceId,\n vectorMessageSearch: searchQuery,\n config,\n });\n\n // Get all threads to build context and show which thread each message is from\n // Fetch threads by IDs from the actual messages to avoid truncation\n const threadIds = Array.from(\n new Set(result.messages.map((m: MastraDBMessage) => m.threadId || threadId!).filter(Boolean)),\n );\n const fetched = await Promise.all(threadIds.map((id: string) => memory.getThreadById({ threadId: id })));\n const threadMap = new Map(fetched.filter(Boolean).map(t => [t!.id, t!]));\n\n // Process each message in the results\n for (const msg of result.messages) {\n const content =\n typeof msg.content.content === `string`\n ? msg.content.content\n : msg.content.parts?.map((p: any) => (p.type === 'text' ? p.text : '')).join(' ') || '';\n\n const msgThreadId = msg.threadId || threadId;\n const thread = threadMap.get(msgThreadId);\n\n // Get thread messages for context\n const threadMessages = (await memory.query({ threadId: msgThreadId })).messages;\n const messageIndex = threadMessages.findIndex(m => m.id === msg.id);\n\n const searchResult: SearchResult = {\n id: msg.id,\n role: msg.role,\n content,\n createdAt: msg.createdAt,\n threadId: msgThreadId,\n threadTitle: thread?.title || msgThreadId,\n };\n\n if (messageIndex !== -1) {\n searchResult.context = {\n before: threadMessages.slice(Math.max(0, messageIndex - beforeRange), messageIndex).map(m => ({\n id: m.id,\n role: m.role,\n content: m.content,\n createdAt: m.createdAt || new Date(),\n })),\n after: threadMessages.slice(messageIndex + 1, messageIndex + afterRange + 1).map(m => ({\n id: m.id,\n role: m.role,\n content: m.content,\n createdAt: m.createdAt || new Date(),\n })),\n };\n }\n\n searchResults.push(searchResult);\n }\n\n // Sort by date (newest first) and limit\n const sortedResults = searchResults\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .slice(0, limit);\n\n return {\n results: sortedResults,\n count: sortedResults.length,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n } catch (error) {\n return handleError(error, 'Error searching memory');\n }\n}\n"]}
|