@mastra/server 0.0.0-update-scorers-api-20250801170445 → 0.0.0-usechat-duplicate-20251016110554

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.
Files changed (234) hide show
  1. package/CHANGELOG.md +4048 -0
  2. package/README.md +0 -5
  3. package/dist/chunk-2PLXW4ZX.cjs +2777 -0
  4. package/dist/chunk-2PLXW4ZX.cjs.map +1 -0
  5. package/dist/chunk-2S4IMB6E.cjs +130 -0
  6. package/dist/chunk-2S4IMB6E.cjs.map +1 -0
  7. package/dist/{chunk-X5SDJOY6.cjs → chunk-3LTO44EP.cjs} +66 -53
  8. package/dist/chunk-3LTO44EP.cjs.map +1 -0
  9. package/dist/{chunk-4US5W7PH.cjs → chunk-3SNGNFUJ.cjs} +23 -15
  10. package/dist/chunk-3SNGNFUJ.cjs.map +1 -0
  11. package/dist/{chunk-OW4FX5TS.js → chunk-4QCXUEAT.js} +10 -3
  12. package/dist/chunk-4QCXUEAT.js.map +1 -0
  13. package/dist/{chunk-SQ7KKIH3.js → chunk-67GYDFSB.js} +22 -5
  14. package/dist/chunk-67GYDFSB.js.map +1 -0
  15. package/dist/{chunk-ILCWPBYQ.cjs → chunk-6ZR275MD.cjs} +23 -5
  16. package/dist/chunk-6ZR275MD.cjs.map +1 -0
  17. package/dist/chunk-7HDOBOGG.cjs +17517 -0
  18. package/dist/chunk-7HDOBOGG.cjs.map +1 -0
  19. package/dist/{chunk-4MQU6AJN.js → chunk-ABRFV4XP.js} +4 -4
  20. package/dist/{chunk-4MQU6AJN.js.map → chunk-ABRFV4XP.js.map} +1 -1
  21. package/dist/{chunk-YS66MFDY.js → chunk-AHB4JCIQ.js} +48 -12
  22. package/dist/chunk-AHB4JCIQ.js.map +1 -0
  23. package/dist/{chunk-TXAQU2XN.js → chunk-AW5BU3RQ.js} +63 -22
  24. package/dist/chunk-AW5BU3RQ.js.map +1 -0
  25. package/dist/chunk-BATEJLED.js +124 -0
  26. package/dist/chunk-BATEJLED.js.map +1 -0
  27. package/dist/chunk-BZLZFHAT.cjs +682 -0
  28. package/dist/chunk-BZLZFHAT.cjs.map +1 -0
  29. package/dist/{chunk-BUOJL3MN.js → chunk-DB63UMTV.js} +220 -89
  30. package/dist/chunk-DB63UMTV.js.map +1 -0
  31. package/dist/{chunk-NCS2OXX6.cjs → chunk-EP3JQDPD.cjs} +4 -4
  32. package/dist/{chunk-NCS2OXX6.cjs.map → chunk-EP3JQDPD.cjs.map} +1 -1
  33. package/dist/chunk-FWO7VQDC.js +17481 -0
  34. package/dist/chunk-FWO7VQDC.js.map +1 -0
  35. package/dist/chunk-FZNS32WJ.js +46 -0
  36. package/dist/chunk-FZNS32WJ.js.map +1 -0
  37. package/dist/{chunk-4QSNRCOT.cjs → chunk-G4PUALCE.cjs} +10 -2
  38. package/dist/chunk-G4PUALCE.cjs.map +1 -0
  39. package/dist/chunk-GU4EWMZB.cjs +769 -0
  40. package/dist/chunk-GU4EWMZB.cjs.map +1 -0
  41. package/dist/{chunk-TRWPUPGD.js → chunk-HPXAM2PG.js} +109 -138
  42. package/dist/chunk-HPXAM2PG.js.map +1 -0
  43. package/dist/{chunk-JGVY3KWV.cjs → chunk-I3C4ODGV.cjs} +12 -11
  44. package/dist/chunk-I3C4ODGV.cjs.map +1 -0
  45. package/dist/chunk-JSLAYFEW.js +662 -0
  46. package/dist/chunk-JSLAYFEW.js.map +1 -0
  47. package/dist/chunk-LF2ZLOFP.js +767 -0
  48. package/dist/chunk-LF2ZLOFP.js.map +1 -0
  49. package/dist/{chunk-UVOSITKU.js → chunk-LLUOPR3J.js} +11 -10
  50. package/dist/chunk-LLUOPR3J.js.map +1 -0
  51. package/dist/chunk-LPM6BBAX.cjs +1043 -0
  52. package/dist/chunk-LPM6BBAX.cjs.map +1 -0
  53. package/dist/{chunk-S37KCGOR.cjs → chunk-MQDBNHBT.cjs} +222 -88
  54. package/dist/chunk-MQDBNHBT.cjs.map +1 -0
  55. package/dist/{chunk-G7NVCO5M.js → chunk-MYR4PVGN.js} +3 -3
  56. package/dist/{chunk-G7NVCO5M.js.map → chunk-MYR4PVGN.js.map} +1 -1
  57. package/dist/chunk-O7I5CWRX.cjs +44 -0
  58. package/dist/{chunk-Q7SFCCGT.cjs.map → chunk-O7I5CWRX.cjs.map} +1 -1
  59. package/dist/{chunk-HXIOPAHT.js → chunk-OEOGYAQC.js} +54 -42
  60. package/dist/chunk-OEOGYAQC.js.map +1 -0
  61. package/dist/chunk-OYL5TBJW.cjs +48 -0
  62. package/dist/chunk-OYL5TBJW.cjs.map +1 -0
  63. package/dist/chunk-PR4QN5HX.js +39 -0
  64. package/dist/{chunk-PZ5AY32C.js.map → chunk-PR4QN5HX.js.map} +1 -1
  65. package/dist/{chunk-HWHKM67I.js → chunk-QQXMIP6C.js} +21 -13
  66. package/dist/chunk-QQXMIP6C.js.map +1 -0
  67. package/dist/chunk-RQK4FQUD.js +1012 -0
  68. package/dist/chunk-RQK4FQUD.js.map +1 -0
  69. package/dist/chunk-SIW6CYO3.js +254 -0
  70. package/dist/chunk-SIW6CYO3.js.map +1 -0
  71. package/dist/{chunk-VIGPWTDA.cjs → chunk-SPRRK3P7.cjs} +64 -23
  72. package/dist/chunk-SPRRK3P7.cjs.map +1 -0
  73. package/dist/{chunk-GASWM5HJ.cjs → chunk-TOP25AIO.cjs} +110 -139
  74. package/dist/chunk-TOP25AIO.cjs.map +1 -0
  75. package/dist/{chunk-O4I563YW.cjs → chunk-TRGAMKHX.cjs} +50 -13
  76. package/dist/chunk-TRGAMKHX.cjs.map +1 -0
  77. package/dist/chunk-VY4ENABS.cjs +135 -0
  78. package/dist/chunk-VY4ENABS.cjs.map +1 -0
  79. package/dist/{chunk-BED2O446.cjs → chunk-XN74I6VW.cjs} +7 -7
  80. package/dist/{chunk-BED2O446.cjs.map → chunk-XN74I6VW.cjs.map} +1 -1
  81. package/dist/chunk-XVPBGW6Y.cjs +256 -0
  82. package/dist/chunk-XVPBGW6Y.cjs.map +1 -0
  83. package/dist/chunk-YWOK4F5A.js +131 -0
  84. package/dist/chunk-YWOK4F5A.js.map +1 -0
  85. package/dist/chunk-ZULZ2752.js +2774 -0
  86. package/dist/chunk-ZULZ2752.js.map +1 -0
  87. package/dist/dist-4MVGNSRL.cjs +1150 -0
  88. package/dist/dist-4MVGNSRL.cjs.map +1 -0
  89. package/dist/dist-FZYCV3VB.cjs +940 -0
  90. package/dist/dist-FZYCV3VB.cjs.map +1 -0
  91. package/dist/dist-G2BYZJOC.cjs +928 -0
  92. package/dist/dist-G2BYZJOC.cjs.map +1 -0
  93. package/dist/dist-P4MXBQ3U.cjs +16 -0
  94. package/dist/dist-P4MXBQ3U.cjs.map +1 -0
  95. package/dist/dist-PQZUVLPC.js +937 -0
  96. package/dist/dist-PQZUVLPC.js.map +1 -0
  97. package/dist/dist-R7WYX6LC.js +925 -0
  98. package/dist/dist-R7WYX6LC.js.map +1 -0
  99. package/dist/dist-RFMYFILX.cjs +764 -0
  100. package/dist/dist-RFMYFILX.cjs.map +1 -0
  101. package/dist/dist-X7XR3M3Z.js +1147 -0
  102. package/dist/dist-X7XR3M3Z.js.map +1 -0
  103. package/dist/dist-XVBSOGFK.js +761 -0
  104. package/dist/dist-XVBSOGFK.js.map +1 -0
  105. package/dist/dist-YREX2TJT.js +3 -0
  106. package/dist/dist-YREX2TJT.js.map +1 -0
  107. package/dist/index.cjs +4 -0
  108. package/dist/index.cjs.map +1 -1
  109. package/dist/index.js +3 -0
  110. package/dist/index.js.map +1 -1
  111. package/dist/server/a2a/store.cjs +25 -0
  112. package/dist/server/a2a/store.cjs.map +1 -0
  113. package/dist/server/a2a/store.d.ts +3 -3
  114. package/dist/server/a2a/store.d.ts.map +1 -1
  115. package/dist/server/a2a/store.js +23 -0
  116. package/dist/server/a2a/store.js.map +1 -0
  117. package/dist/server/a2a/tasks.d.ts +7 -7
  118. package/dist/server/a2a/tasks.d.ts.map +1 -1
  119. package/dist/server/handlers/a2a.cjs +11 -11
  120. package/dist/server/handlers/a2a.d.ts +17 -15
  121. package/dist/server/handlers/a2a.d.ts.map +1 -1
  122. package/dist/server/handlers/a2a.js +1 -1
  123. package/dist/server/handlers/agent-builder.cjs +68 -0
  124. package/dist/server/handlers/agent-builder.cjs.map +1 -0
  125. package/dist/server/handlers/agent-builder.d.ts +94 -0
  126. package/dist/server/handlers/agent-builder.d.ts.map +1 -0
  127. package/dist/server/handlers/agent-builder.js +3 -0
  128. package/dist/server/handlers/agent-builder.js.map +1 -0
  129. package/dist/server/handlers/agents.cjs +53 -9
  130. package/dist/server/handlers/agents.d.ts +156 -33
  131. package/dist/server/handlers/agents.d.ts.map +1 -1
  132. package/dist/server/handlers/agents.js +1 -1
  133. package/dist/server/handlers/legacyWorkflows.cjs +11 -11
  134. package/dist/server/handlers/legacyWorkflows.d.ts +1 -1
  135. package/dist/server/handlers/legacyWorkflows.d.ts.map +1 -1
  136. package/dist/server/handlers/legacyWorkflows.js +1 -1
  137. package/dist/server/handlers/logs.cjs +4 -4
  138. package/dist/server/handlers/logs.js +1 -1
  139. package/dist/server/handlers/memory.cjs +19 -15
  140. package/dist/server/handlers/memory.d.ts +24 -19
  141. package/dist/server/handlers/memory.d.ts.map +1 -1
  142. package/dist/server/handlers/memory.js +1 -1
  143. package/dist/server/handlers/observability.cjs +24 -0
  144. package/dist/server/handlers/observability.cjs.map +1 -0
  145. package/dist/server/handlers/observability.d.ts +49 -0
  146. package/dist/server/handlers/observability.d.ts.map +1 -0
  147. package/dist/server/handlers/observability.js +3 -0
  148. package/dist/server/handlers/observability.js.map +1 -0
  149. package/dist/server/handlers/scores.cjs +7 -7
  150. package/dist/server/handlers/scores.d.ts +110 -7
  151. package/dist/server/handlers/scores.d.ts.map +1 -1
  152. package/dist/server/handlers/scores.js +1 -1
  153. package/dist/server/handlers/telemetry.cjs +7 -3
  154. package/dist/server/handlers/telemetry.d.ts +2 -1
  155. package/dist/server/handlers/telemetry.d.ts.map +1 -1
  156. package/dist/server/handlers/telemetry.js +1 -1
  157. package/dist/server/handlers/tools.cjs +9 -5
  158. package/dist/server/handlers/tools.d.ts +5 -1
  159. package/dist/server/handlers/tools.d.ts.map +1 -1
  160. package/dist/server/handlers/tools.js +1 -1
  161. package/dist/server/handlers/utils.cjs +6 -2
  162. package/dist/server/handlers/utils.d.ts +6 -0
  163. package/dist/server/handlers/utils.d.ts.map +1 -1
  164. package/dist/server/handlers/utils.js +1 -1
  165. package/dist/server/handlers/vector.cjs +7 -7
  166. package/dist/server/handlers/vector.d.ts +1 -1
  167. package/dist/server/handlers/vector.js +1 -1
  168. package/dist/server/handlers/voice.cjs +5 -5
  169. package/dist/server/handlers/voice.d.ts +7 -5
  170. package/dist/server/handlers/voice.d.ts.map +1 -1
  171. package/dist/server/handlers/voice.js +1 -1
  172. package/dist/server/handlers/workflows.cjs +28 -16
  173. package/dist/server/handlers/workflows.d.ts +37 -34
  174. package/dist/server/handlers/workflows.d.ts.map +1 -1
  175. package/dist/server/handlers/workflows.js +1 -1
  176. package/dist/server/handlers.cjs +38 -33
  177. package/dist/server/handlers.d.ts +13 -12
  178. package/dist/server/handlers.d.ts.map +1 -1
  179. package/dist/server/handlers.js +13 -12
  180. package/dist/server/utils.d.ts +44 -0
  181. package/dist/server/utils.d.ts.map +1 -0
  182. package/dist/token-53CFGXUO.cjs +64 -0
  183. package/dist/token-53CFGXUO.cjs.map +1 -0
  184. package/dist/token-WAEKDUVY.js +62 -0
  185. package/dist/token-WAEKDUVY.js.map +1 -0
  186. package/dist/token-util-LY37VCIN.js +7 -0
  187. package/dist/token-util-LY37VCIN.js.map +1 -0
  188. package/dist/token-util-S4A355II.cjs +9 -0
  189. package/dist/token-util-S4A355II.cjs.map +1 -0
  190. package/package.json +36 -14
  191. package/dist/chunk-2XIJW7SV.cjs +0 -310
  192. package/dist/chunk-2XIJW7SV.cjs.map +0 -1
  193. package/dist/chunk-4CEZIJWJ.cjs +0 -150
  194. package/dist/chunk-4CEZIJWJ.cjs.map +0 -1
  195. package/dist/chunk-4QSNRCOT.cjs.map +0 -1
  196. package/dist/chunk-4US5W7PH.cjs.map +0 -1
  197. package/dist/chunk-7FHF55WA.js +0 -2041
  198. package/dist/chunk-7FHF55WA.js.map +0 -1
  199. package/dist/chunk-BUOJL3MN.js.map +0 -1
  200. package/dist/chunk-GASWM5HJ.cjs.map +0 -1
  201. package/dist/chunk-HWHKM67I.js.map +0 -1
  202. package/dist/chunk-HXIOPAHT.js.map +0 -1
  203. package/dist/chunk-ILCWPBYQ.cjs.map +0 -1
  204. package/dist/chunk-JGVY3KWV.cjs.map +0 -1
  205. package/dist/chunk-LRUH33B4.cjs +0 -2044
  206. package/dist/chunk-LRUH33B4.cjs.map +0 -1
  207. package/dist/chunk-O4I563YW.cjs.map +0 -1
  208. package/dist/chunk-OW4FX5TS.js.map +0 -1
  209. package/dist/chunk-PZ5AY32C.js +0 -9
  210. package/dist/chunk-Q7SFCCGT.cjs +0 -11
  211. package/dist/chunk-S37KCGOR.cjs.map +0 -1
  212. package/dist/chunk-SQ7KKIH3.js.map +0 -1
  213. package/dist/chunk-TRWPUPGD.js.map +0 -1
  214. package/dist/chunk-TXAQU2XN.js.map +0 -1
  215. package/dist/chunk-UVOSITKU.js.map +0 -1
  216. package/dist/chunk-VIGPWTDA.cjs.map +0 -1
  217. package/dist/chunk-VOY6MGKA.js +0 -301
  218. package/dist/chunk-VOY6MGKA.js.map +0 -1
  219. package/dist/chunk-X5SDJOY6.cjs.map +0 -1
  220. package/dist/chunk-Y3J45CVZ.js +0 -144
  221. package/dist/chunk-Y3J45CVZ.js.map +0 -1
  222. package/dist/chunk-YS66MFDY.js.map +0 -1
  223. package/dist/server/handlers/network.cjs +0 -24
  224. package/dist/server/handlers/network.cjs.map +0 -1
  225. package/dist/server/handlers/network.d.ts +0 -50
  226. package/dist/server/handlers/network.d.ts.map +0 -1
  227. package/dist/server/handlers/network.js +0 -3
  228. package/dist/server/handlers/network.js.map +0 -1
  229. package/dist/server/handlers/vNextNetwork.cjs +0 -220
  230. package/dist/server/handlers/vNextNetwork.cjs.map +0 -1
  231. package/dist/server/handlers/vNextNetwork.d.ts +0 -179
  232. package/dist/server/handlers/vNextNetwork.d.ts.map +0 -1
  233. package/dist/server/handlers/vNextNetwork.js +0 -213
  234. package/dist/server/handlers/vNextNetwork.js.map +0 -1
@@ -0,0 +1,130 @@
1
+ 'use strict';
2
+
3
+ var chunkRE4RPXT2_cjs = require('./chunk-RE4RPXT2.cjs');
4
+ var chunk7NADHFD2_cjs = require('./chunk-7NADHFD2.cjs');
5
+ var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
6
+ var scoreTraces = require('@mastra/core/scores/scoreTraces');
7
+
8
+ // src/server/handlers/observability.ts
9
+ var observability_exports = {};
10
+ chunkO7I5CWRX_cjs.__export(observability_exports, {
11
+ getAITraceHandler: () => getAITraceHandler,
12
+ getAITracesPaginatedHandler: () => getAITracesPaginatedHandler,
13
+ getScoresBySpan: () => getScoresBySpan,
14
+ scoreTracesHandler: () => scoreTracesHandler
15
+ });
16
+ async function getAITraceHandler({ mastra, traceId }) {
17
+ try {
18
+ if (!traceId) {
19
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Trace ID is required" });
20
+ }
21
+ const storage = mastra.getStorage();
22
+ if (!storage) {
23
+ throw new chunk7NADHFD2_cjs.HTTPException(500, { message: "Storage is not available" });
24
+ }
25
+ const trace = await storage.getAITrace(traceId);
26
+ if (!trace) {
27
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: `Trace with ID '${traceId}' not found` });
28
+ }
29
+ return trace;
30
+ } catch (error) {
31
+ chunkRE4RPXT2_cjs.handleError(error, "Error getting AI trace");
32
+ }
33
+ }
34
+ async function getAITracesPaginatedHandler({ mastra, body }) {
35
+ try {
36
+ const storage = mastra.getStorage();
37
+ if (!storage) {
38
+ throw new chunk7NADHFD2_cjs.HTTPException(500, { message: "Storage is not available" });
39
+ }
40
+ if (!body) {
41
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Request body is required" });
42
+ }
43
+ const { filters, pagination } = body;
44
+ if (pagination?.page && pagination.page < 0) {
45
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Page must be a non-negative integer" });
46
+ }
47
+ if (pagination?.perPage && pagination.perPage < 0) {
48
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Per page must be a non-negative integer" });
49
+ }
50
+ if (pagination?.dateRange) {
51
+ const { start, end } = pagination.dateRange;
52
+ if (start && !(start instanceof Date)) {
53
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Invalid date format in date range" });
54
+ }
55
+ if (end && !(end instanceof Date)) {
56
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Invalid date format in date range" });
57
+ }
58
+ }
59
+ return storage.getAITracesPaginated({
60
+ pagination,
61
+ filters
62
+ });
63
+ } catch (error) {
64
+ chunkRE4RPXT2_cjs.handleError(error, "Error getting AI traces paginated");
65
+ }
66
+ }
67
+ async function scoreTracesHandler({ mastra, body }) {
68
+ try {
69
+ if (!body) {
70
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Request body is required" });
71
+ }
72
+ const { scorerName, targets } = body;
73
+ if (!scorerName) {
74
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Scorer Name is required" });
75
+ }
76
+ if (!targets || targets.length === 0) {
77
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "At least one target is required" });
78
+ }
79
+ const storage = mastra.getStorage();
80
+ if (!storage) {
81
+ throw new chunk7NADHFD2_cjs.HTTPException(500, { message: "Storage is not available" });
82
+ }
83
+ const scorer = mastra.getScorerByName(scorerName);
84
+ if (!scorer) {
85
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: `Scorer '${scorerName}' not found` });
86
+ }
87
+ const logger = mastra.getLogger();
88
+ scoreTraces.scoreTraces({
89
+ scorerName,
90
+ targets,
91
+ mastra
92
+ }).catch((error) => {
93
+ logger?.error(`Background trace scoring failed: ${error.message}`, error);
94
+ });
95
+ return {
96
+ status: "success",
97
+ message: `Scoring started for ${targets.length} ${targets.length === 1 ? "trace" : "traces"}`,
98
+ traceCount: targets.length
99
+ };
100
+ } catch (error) {
101
+ chunkRE4RPXT2_cjs.handleError(error, "Error processing trace scoring");
102
+ }
103
+ }
104
+ async function getScoresBySpan({
105
+ mastra,
106
+ traceId,
107
+ spanId,
108
+ pagination
109
+ }) {
110
+ try {
111
+ const storage = mastra.getStorage();
112
+ if (!storage) {
113
+ throw new chunk7NADHFD2_cjs.HTTPException(500, { message: "Storage is not available" });
114
+ }
115
+ if (!traceId || !spanId) {
116
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Trace ID and span ID are required" });
117
+ }
118
+ return await storage.getScoresBySpan({ traceId, spanId, pagination });
119
+ } catch (error) {
120
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting scores by span");
121
+ }
122
+ }
123
+
124
+ exports.getAITraceHandler = getAITraceHandler;
125
+ exports.getAITracesPaginatedHandler = getAITracesPaginatedHandler;
126
+ exports.getScoresBySpan = getScoresBySpan;
127
+ exports.observability_exports = observability_exports;
128
+ exports.scoreTracesHandler = scoreTracesHandler;
129
+ //# sourceMappingURL=chunk-2S4IMB6E.cjs.map
130
+ //# sourceMappingURL=chunk-2S4IMB6E.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/observability.ts"],"names":["__export","HTTPException","handleError","scoreTraces"],"mappings":";;;;;;;;AAAA,IAAA,qBAAA,GAAA;AAAAA,0BAAA,CAAA,qBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,kBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAyBA,eAAsB,iBAAA,CAAkB,EAAE,MAAA,EAAQ,OAAA,EAAQ,EAA+C;AACvG,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,wBAAwB,CAAA;AAAA,IAClE;AAEA,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA;AAE9C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,eAAA,EAAkB,OAAO,eAAe,CAAA;AAAA,IAClF;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAAC,6BAAA,CAAY,OAAO,wBAAwB,CAAA;AAAA,EAC7C;AACF;AAMA,eAAsB,2BAAA,CAA4B,EAAE,MAAA,EAAQ,IAAA,EAAK,EAAyB;AACxF,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAID,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAW,GAAI,IAAA;AAEhC,IAAA,IAAI,UAAA,EAAY,IAAA,IAAQ,UAAA,CAAW,IAAA,GAAO,CAAA,EAAG;AAC3C,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,uCAAuC,CAAA;AAAA,IACjF;AAEA,IAAA,IAAI,UAAA,EAAY,OAAA,IAAW,UAAA,CAAW,OAAA,GAAU,CAAA,EAAG;AACjD,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,2CAA2C,CAAA;AAAA,IACrF;AAEA,IAAA,IAAI,YAAY,SAAA,EAAW;AACzB,MAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,UAAA,CAAW,SAAA;AAElC,MAAA,IAAI,KAAA,IAAS,EAAE,KAAA,YAAiB,IAAA,CAAA,EAAO;AACrC,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AAEA,MAAA,IAAI,GAAA,IAAO,EAAE,GAAA,YAAe,IAAA,CAAA,EAAO;AACjC,QAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AAAA,IACF;AAEA,IAAA,OAAO,QAAQ,oBAAA,CAAqB;AAAA,MAClC,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAAC,6BAAA,CAAY,OAAO,mCAAmC,CAAA;AAAA,EACxD;AACF;AAMA,eAAsB,kBAAA,CAAmB,EAAE,MAAA,EAAQ,IAAA,EAAK,EAAuB;AAC7E,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,IAAID,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,EAAE,UAAA,EAAY,OAAA,EAAQ,GAAI,IAAA;AAEhC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,2BAA2B,CAAA;AAAA,IACrE;AAEA,IAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AACpC,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,mCAAmC,CAAA;AAAA,IAC7E;AAEA,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,eAAA,CAAgB,UAAU,CAAA;AAChD,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,QAAA,EAAW,UAAU,eAAe,CAAA;AAAA,IAC9E;AAEA,IAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,IAAAE,uBAAA,CAAY;AAAA,MACV,UAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA,CAAE,KAAA,CAAM,CAAA,KAAA,KAAS;AAChB,MAAA,MAAA,EAAQ,KAAA,CAAM,CAAA,iCAAA,EAAoC,KAAA,CAAM,OAAO,IAAI,KAAK,CAAA;AAAA,IAC1E,CAAC,CAAA;AAGD,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,SAAA;AAAA,MACR,OAAA,EAAS,uBAAuB,OAAA,CAAQ,MAAM,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,GAAI,OAAA,GAAU,QAAQ,CAAA,CAAA;AAAA,MAC3F,YAAY,OAAA,CAAQ;AAAA,KACtB;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAAD,6BAAA,CAAY,OAAO,gCAAgC,CAAA;AAAA,EACrD;AACF;AAEA,eAAsB,eAAA,CAAgB;AAAA,EACpC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAiF;AAC/E,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAID,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,MAAA,EAAQ;AACvB,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,IAC/E;AAEA,IAAA,OAAO,MAAM,OAAA,CAAQ,eAAA,CAAgB,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,CAAA;AAAA,EACtE,SAAS,KAAA,EAAO;AACd,IAAA,OAAOC,6BAAA,CAAY,OAAO,8BAA8B,CAAA;AAAA,EAC1D;AACF","file":"chunk-2S4IMB6E.cjs","sourcesContent":["import type { AITracesPaginatedArg, StoragePagination } from '@mastra/core';\nimport { scoreTraces } from '@mastra/core/scores/scoreTraces';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\nimport { handleError } from './error';\n\ninterface ObservabilityContext extends Context {\n traceId?: string;\n body?: AITracesPaginatedArg;\n}\n\ninterface ScoreTracesContext extends Context {\n body?: {\n scorerName: string;\n targets: Array<{\n traceId: string;\n spanId?: string;\n }>;\n };\n}\n\n/**\n * Get a complete AI trace by trace ID\n * Returns all spans in the trace with their parent-child relationships\n */\nexport async function getAITraceHandler({ mastra, traceId }: ObservabilityContext & { traceId: string }) {\n try {\n if (!traceId) {\n throw new HTTPException(400, { message: 'Trace ID is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const trace = await storage.getAITrace(traceId);\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n handleError(error, 'Error getting AI trace');\n }\n}\n\n/**\n * Get paginated AI traces with filtering and pagination\n * Returns only root spans (parent spans) for pagination, not child spans\n */\nexport async function getAITracesPaginatedHandler({ mastra, body }: ObservabilityContext) {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (!body) {\n throw new HTTPException(400, { message: 'Request body is required' });\n }\n\n const { filters, pagination } = body;\n\n if (pagination?.page && pagination.page < 0) {\n throw new HTTPException(400, { message: 'Page must be a non-negative integer' });\n }\n\n if (pagination?.perPage && pagination.perPage < 0) {\n throw new HTTPException(400, { message: 'Per page must be a non-negative integer' });\n }\n\n if (pagination?.dateRange) {\n const { start, end } = pagination.dateRange;\n\n if (start && !(start instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n\n if (end && !(end instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n }\n\n return storage.getAITracesPaginated({\n pagination,\n filters,\n });\n } catch (error) {\n handleError(error, 'Error getting AI traces paginated');\n }\n}\n\n/**\n * Score traces using a specified scorer\n * Fire-and-forget approach - returns immediately while scoring runs in background\n */\nexport async function scoreTracesHandler({ mastra, body }: ScoreTracesContext) {\n try {\n if (!body) {\n throw new HTTPException(400, { message: 'Request body is required' });\n }\n\n const { scorerName, targets } = body;\n\n if (!scorerName) {\n throw new HTTPException(400, { message: 'Scorer Name is required' });\n }\n\n if (!targets || targets.length === 0) {\n throw new HTTPException(400, { message: 'At least one target is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const scorer = mastra.getScorerByName(scorerName);\n if (!scorer) {\n throw new HTTPException(404, { message: `Scorer '${scorerName}' not found` });\n }\n\n const logger = mastra.getLogger();\n scoreTraces({\n scorerName,\n targets,\n mastra,\n }).catch(error => {\n logger?.error(`Background trace scoring failed: ${error.message}`, error);\n });\n\n // Return immediate response\n return {\n status: 'success',\n message: `Scoring started for ${targets.length} ${targets.length === 1 ? 'trace' : 'traces'}`,\n traceCount: targets.length,\n };\n } catch (error) {\n handleError(error, 'Error processing trace scoring');\n }\n}\n\nexport async function getScoresBySpan({\n mastra,\n traceId,\n spanId,\n pagination,\n}: Context & { traceId: string; spanId: string; pagination: StoragePagination }) {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (!traceId || !spanId) {\n throw new HTTPException(400, { message: 'Trace ID and span ID are required' });\n }\n\n return await storage.getScoresBySpan({ traceId, spanId, pagination });\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n}\n"]}
@@ -1,14 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunk4QSNRCOT_cjs = require('./chunk-4QSNRCOT.cjs');
3
+ var chunkG4PUALCE_cjs = require('./chunk-G4PUALCE.cjs');
4
4
  var chunkRE4RPXT2_cjs = require('./chunk-RE4RPXT2.cjs');
5
5
  var chunk7NADHFD2_cjs = require('./chunk-7NADHFD2.cjs');
6
- var chunkQ7SFCCGT_cjs = require('./chunk-Q7SFCCGT.cjs');
7
- var core = require('@mastra/core');
6
+ var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
7
+ var agent = require('@mastra/core/agent');
8
+ var utils = require('@mastra/core/utils');
8
9
 
9
10
  // src/server/handlers/memory.ts
10
11
  var memory_exports = {};
11
- chunkQ7SFCCGT_cjs.__export(memory_exports, {
12
+ chunkO7I5CWRX_cjs.__export(memory_exports, {
12
13
  createThreadHandler: () => createThreadHandler,
13
14
  deleteMessagesHandler: () => deleteMessagesHandler,
14
15
  deleteThreadHandler: () => deleteThreadHandler,
@@ -18,6 +19,7 @@ chunkQ7SFCCGT_cjs.__export(memory_exports, {
18
19
  getMessagesPaginatedHandler: () => getMessagesPaginatedHandler,
19
20
  getThreadByIdHandler: () => getThreadByIdHandler,
20
21
  getThreadsHandler: () => getThreadsHandler,
22
+ getThreadsPaginatedHandler: () => getThreadsPaginatedHandler,
21
23
  getWorkingMemoryHandler: () => getWorkingMemoryHandler,
22
24
  saveMessagesHandler: () => saveMessagesHandler,
23
25
  searchMemoryHandler: () => searchMemoryHandler,
@@ -27,33 +29,26 @@ chunkQ7SFCCGT_cjs.__export(memory_exports, {
27
29
  async function getMemoryFromContext({
28
30
  mastra,
29
31
  agentId,
30
- networkId,
31
32
  runtimeContext
32
33
  }) {
33
34
  const agent = agentId ? mastra.getAgent(agentId) : null;
34
35
  if (agentId && !agent) {
35
36
  throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Agent not found" });
36
37
  }
37
- const network = networkId ? mastra.vnext_getNetwork(networkId) : null;
38
- if (networkId && !network) {
39
- throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Network not found" });
40
- }
41
38
  if (agent) {
42
- return await agent?.getMemory() || mastra.getMemory();
43
- }
44
- if (network) {
45
- return await network?.getMemory({ runtimeContext }) || mastra.getMemory();
39
+ return await agent?.getMemory({
40
+ runtimeContext
41
+ }) || mastra.getMemory();
46
42
  }
47
43
  return mastra.getMemory();
48
44
  }
49
45
  async function getMemoryStatusHandler({
50
46
  mastra,
51
47
  agentId,
52
- networkId,
53
48
  runtimeContext
54
49
  }) {
55
50
  try {
56
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
51
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
57
52
  if (!memory) {
58
53
  return { result: false };
59
54
  }
@@ -65,11 +60,10 @@ async function getMemoryStatusHandler({
65
60
  async function getMemoryConfigHandler({
66
61
  mastra,
67
62
  agentId,
68
- networkId,
69
63
  runtimeContext
70
64
  }) {
71
65
  try {
72
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
66
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
73
67
  if (!memory) {
74
68
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
75
69
  }
@@ -83,17 +77,16 @@ async function getThreadsHandler({
83
77
  mastra,
84
78
  agentId,
85
79
  resourceId,
86
- networkId,
87
80
  runtimeContext,
88
81
  orderBy,
89
82
  sortDirection
90
83
  }) {
91
84
  try {
92
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
85
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
93
86
  if (!memory) {
94
87
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
95
88
  }
96
- chunk4QSNRCOT_cjs.validateBody({ resourceId });
89
+ chunkG4PUALCE_cjs.validateBody({ resourceId });
97
90
  const threads = await memory.getThreadsByResourceId({
98
91
  resourceId,
99
92
  orderBy,
@@ -104,16 +97,43 @@ async function getThreadsHandler({
104
97
  return chunkRE4RPXT2_cjs.handleError(error, "Error getting threads");
105
98
  }
106
99
  }
100
+ async function getThreadsPaginatedHandler({
101
+ mastra,
102
+ agentId,
103
+ resourceId,
104
+ runtimeContext,
105
+ page,
106
+ perPage,
107
+ orderBy,
108
+ sortDirection
109
+ }) {
110
+ try {
111
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
112
+ if (!memory) {
113
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
114
+ }
115
+ chunkG4PUALCE_cjs.validateBody({ resourceId });
116
+ const result = await memory.getThreadsByResourceIdPaginated({
117
+ resourceId,
118
+ page,
119
+ perPage,
120
+ orderBy,
121
+ sortDirection
122
+ });
123
+ return result;
124
+ } catch (error) {
125
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting paginated threads");
126
+ }
127
+ }
107
128
  async function getThreadByIdHandler({
108
129
  mastra,
109
130
  agentId,
110
131
  threadId,
111
- networkId,
112
132
  runtimeContext
113
133
  }) {
114
134
  try {
115
- chunk4QSNRCOT_cjs.validateBody({ threadId });
116
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
135
+ chunkG4PUALCE_cjs.validateBody({ threadId });
136
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
117
137
  if (!memory) {
118
138
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
119
139
  }
@@ -130,11 +150,10 @@ async function saveMessagesHandler({
130
150
  mastra,
131
151
  agentId,
132
152
  body,
133
- networkId,
134
153
  runtimeContext
135
154
  }) {
136
155
  try {
137
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
156
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
138
157
  if (!memory) {
139
158
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
140
159
  }
@@ -165,15 +184,14 @@ async function createThreadHandler({
165
184
  mastra,
166
185
  agentId,
167
186
  body,
168
- networkId,
169
187
  runtimeContext
170
188
  }) {
171
189
  try {
172
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
190
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
173
191
  if (!memory) {
174
192
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
175
193
  }
176
- chunk4QSNRCOT_cjs.validateBody({ resourceId: body?.resourceId });
194
+ chunkG4PUALCE_cjs.validateBody({ resourceId: body?.resourceId });
177
195
  const result = await memory.createThread({
178
196
  resourceId: body?.resourceId,
179
197
  title: body?.title,
@@ -190,17 +208,16 @@ async function updateThreadHandler({
190
208
  agentId,
191
209
  threadId,
192
210
  body,
193
- networkId,
194
211
  runtimeContext
195
212
  }) {
196
213
  try {
197
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
214
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
198
215
  if (!body) {
199
216
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Body is required" });
200
217
  }
201
218
  const { title, metadata, resourceId } = body;
202
219
  const updatedAt = /* @__PURE__ */ new Date();
203
- chunk4QSNRCOT_cjs.validateBody({ threadId });
220
+ chunkG4PUALCE_cjs.validateBody({ threadId });
204
221
  if (!memory) {
205
222
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
206
223
  }
@@ -226,12 +243,11 @@ async function deleteThreadHandler({
226
243
  mastra,
227
244
  agentId,
228
245
  threadId,
229
- networkId,
230
246
  runtimeContext
231
247
  }) {
232
248
  try {
233
- chunk4QSNRCOT_cjs.validateBody({ threadId });
234
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
249
+ chunkG4PUALCE_cjs.validateBody({ threadId });
250
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
235
251
  if (!memory) {
236
252
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
237
253
  }
@@ -253,7 +269,7 @@ async function getMessagesPaginatedHandler({
253
269
  format
254
270
  }) {
255
271
  try {
256
- chunk4QSNRCOT_cjs.validateBody({ threadId });
272
+ chunkG4PUALCE_cjs.validateBody({ threadId });
257
273
  const storage = mastra.getStorage();
258
274
  if (!storage) {
259
275
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Storage is not initialized" });
@@ -273,15 +289,14 @@ async function getMessagesHandler({
273
289
  agentId,
274
290
  threadId,
275
291
  limit,
276
- networkId,
277
292
  runtimeContext
278
293
  }) {
279
294
  if (limit !== void 0 && (!Number.isInteger(limit) || limit <= 0)) {
280
295
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Invalid limit: must be a positive integer" });
281
296
  }
282
297
  try {
283
- chunk4QSNRCOT_cjs.validateBody({ threadId });
284
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
298
+ chunkG4PUALCE_cjs.validateBody({ threadId });
299
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
285
300
  if (!memory) {
286
301
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
287
302
  }
@@ -293,7 +308,8 @@ async function getMessagesHandler({
293
308
  threadId,
294
309
  ...limit && { selectBy: { last: limit } }
295
310
  });
296
- return { messages: result.messages, uiMessages: result.uiMessages };
311
+ const uiMessages = agent.convertMessages(result.messages).to("AIV5.UI");
312
+ return { messages: result.messages, uiMessages, legacyMessages: result.uiMessages };
297
313
  } catch (error) {
298
314
  return chunkRE4RPXT2_cjs.handleError(error, "Error getting messages");
299
315
  }
@@ -303,20 +319,19 @@ async function getWorkingMemoryHandler({
303
319
  agentId,
304
320
  threadId,
305
321
  resourceId,
306
- networkId,
307
322
  runtimeContext,
308
323
  memoryConfig
309
324
  }) {
310
325
  try {
311
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
312
- chunk4QSNRCOT_cjs.validateBody({ threadId });
326
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
327
+ chunkG4PUALCE_cjs.validateBody({ threadId });
313
328
  if (!memory) {
314
329
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
315
330
  }
316
331
  const thread = await memory.getThreadById({ threadId });
317
332
  const threadExists = !!thread;
318
333
  const template = await memory.getWorkingMemoryTemplate({ memoryConfig });
319
- const workingMemoryTemplate = template?.format === "json" ? { ...template, content: JSON.stringify(core.generateEmptyFromSchema(template.content)) } : template;
334
+ const workingMemoryTemplate = template?.format === "json" ? { ...template, content: JSON.stringify(utils.generateEmptyFromSchema(template.content)) } : template;
320
335
  const workingMemory = await memory.getWorkingMemory({ threadId, resourceId, memoryConfig });
321
336
  const config = memory.getMergedThreadConfig(memoryConfig || {});
322
337
  const source = config.workingMemory?.scope === "resource" && resourceId ? "resource" : "thread";
@@ -330,12 +345,11 @@ async function updateWorkingMemoryHandler({
330
345
  agentId,
331
346
  threadId,
332
347
  body,
333
- networkId,
334
348
  runtimeContext
335
349
  }) {
336
350
  try {
337
- chunk4QSNRCOT_cjs.validateBody({ threadId });
338
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
351
+ chunkG4PUALCE_cjs.validateBody({ threadId });
352
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
339
353
  const { resourceId, memoryConfig, workingMemory } = body;
340
354
  if (!memory) {
341
355
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
@@ -354,14 +368,13 @@ async function deleteMessagesHandler({
354
368
  mastra,
355
369
  agentId,
356
370
  messageIds,
357
- networkId,
358
371
  runtimeContext
359
372
  }) {
360
373
  try {
361
374
  if (messageIds === void 0 || messageIds === null) {
362
375
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "messageIds is required" });
363
376
  }
364
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
377
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
365
378
  if (!memory) {
366
379
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
367
380
  }
@@ -382,13 +395,12 @@ async function searchMemoryHandler({
382
395
  resourceId,
383
396
  threadId,
384
397
  limit = 20,
385
- networkId,
386
398
  runtimeContext,
387
399
  memoryConfig
388
400
  }) {
389
401
  try {
390
- chunk4QSNRCOT_cjs.validateBody({ searchQuery, resourceId });
391
- const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
402
+ chunkG4PUALCE_cjs.validateBody({ searchQuery, resourceId });
403
+ const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });
392
404
  if (!memory) {
393
405
  throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
394
406
  }
@@ -547,11 +559,12 @@ exports.getMessagesHandler = getMessagesHandler;
547
559
  exports.getMessagesPaginatedHandler = getMessagesPaginatedHandler;
548
560
  exports.getThreadByIdHandler = getThreadByIdHandler;
549
561
  exports.getThreadsHandler = getThreadsHandler;
562
+ exports.getThreadsPaginatedHandler = getThreadsPaginatedHandler;
550
563
  exports.getWorkingMemoryHandler = getWorkingMemoryHandler;
551
564
  exports.memory_exports = memory_exports;
552
565
  exports.saveMessagesHandler = saveMessagesHandler;
553
566
  exports.searchMemoryHandler = searchMemoryHandler;
554
567
  exports.updateThreadHandler = updateThreadHandler;
555
568
  exports.updateWorkingMemoryHandler = updateWorkingMemoryHandler;
556
- //# sourceMappingURL=chunk-X5SDJOY6.cjs.map
557
- //# sourceMappingURL=chunk-X5SDJOY6.cjs.map
569
+ //# sourceMappingURL=chunk-3LTO44EP.cjs.map
570
+ //# sourceMappingURL=chunk-3LTO44EP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/memory.ts"],"names":["__export","HTTPException","handleError","validateBody","convertMessages","generateEmptyFromSchema"],"mappings":"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","file":"chunk-3LTO44EP.cjs","sourcesContent":["import { convertMessages } from '@mastra/core/agent';\nimport type { RuntimeContext } from '@mastra/core/di';\nimport type { MastraMemory } from '@mastra/core/memory';\nimport type { StorageGetMessagesArg, ThreadSortOptions } 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 runtimeContext?: RuntimeContext;\n}\n\nasync function getMemoryFromContext({\n mastra,\n agentId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'runtimeContext'>): Promise<MastraMemory | null | undefined> {\n const agent = agentId ? mastra.getAgent(agentId) : null;\n if (agentId && !agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n if (agent) {\n return (\n (await agent?.getMemory({\n runtimeContext,\n })) || mastra.getMemory()\n );\n }\n\n return mastra.getMemory();\n}\n\n// Memory handlers\nexport async function getMemoryStatusHandler({\n mastra,\n agentId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'runtimeContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'runtimeContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 getThreadsHandler({\n mastra,\n agentId,\n resourceId,\n runtimeContext,\n orderBy,\n sortDirection,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'resourceId' | 'runtimeContext'> & ThreadSortOptions) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId });\n\n const threads = await memory.getThreadsByResourceId({\n resourceId: resourceId!,\n orderBy,\n sortDirection,\n });\n return threads;\n } catch (error) {\n return handleError(error, 'Error getting threads');\n }\n}\n\nexport async function getThreadsPaginatedHandler({\n mastra,\n agentId,\n resourceId,\n runtimeContext,\n page,\n perPage,\n orderBy,\n sortDirection,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'resourceId' | 'runtimeContext'> & {\n page: number;\n perPage: number;\n} & ThreadSortOptions) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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.getThreadsByResourceIdPaginated({\n resourceId: resourceId!,\n page,\n perPage,\n orderBy,\n sortDirection,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error getting paginated threads');\n }\n}\n\nexport async function getThreadByIdHandler({\n mastra,\n agentId,\n threadId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'runtimeContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'runtimeContext'> & {\n body: {\n messages: Parameters<MastraMemory['saveMessages']>[0]['messages'];\n };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'runtimeContext'> & {\n body?: Omit<Parameters<MastraMemory['createThread']>[0], 'resourceId'> & { resourceId?: string };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'runtimeContext'> & {\n body?: Parameters<MastraMemory['saveThread']>[0]['thread'];\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'runtimeContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 getMessagesPaginatedHandler({\n mastra,\n threadId,\n resourceId,\n selectBy,\n format,\n}: StorageGetMessagesArg & Pick<MemoryContext, 'mastra'>) {\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.getMessagesPaginated({ threadId: threadId!, resourceId, selectBy, format });\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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'runtimeContext'> & {\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, runtimeContext });\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 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, legacyMessages: result.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 runtimeContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'runtimeContext'> & {\n resourceId?: Parameters<MastraMemory['getWorkingMemory']>[0]['resourceId'];\n memoryConfig?: Parameters<MastraMemory['getWorkingMemory']>[0]['memoryConfig'];\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 === 'resource' && 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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'runtimeContext'> & {\n body: Omit<Parameters<MastraMemory['updateWorkingMemory']>[0], 'threadId'>;\n}) {\n try {\n validateBody({ threadId });\n const memory = await getMemoryFromContext({ mastra, agentId, runtimeContext });\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 runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'runtimeContext'> & {\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, runtimeContext });\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 runtimeContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'runtimeContext'> & {\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, runtimeContext });\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 = typeof config?.semanticRecall === 'object' && config?.semanticRecall?.scope === 'resource';\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 const messageMap = new Map<string, boolean>(); // For deduplication\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: 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n }\n\n // If resource scope is enabled or no threadId provided, search across all threads\n if (!threadId || resourceScope) {\n // Search across all threads for this resource\n const threads = await memory.getThreadsByResourceId({ resourceId });\n\n // If no threads exist yet, return empty results\n if (threads.length === 0) {\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: 'resource',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n\n for (const thread of threads) {\n // Use rememberMessages for semantic search\n const result = await memory.rememberMessages({\n threadId: thread.id,\n resourceId,\n vectorMessageSearch: searchQuery,\n config,\n });\n\n // Get thread messages for context\n const threadMessages = (await memory.query({ threadId: thread.id })).uiMessages;\n\n // Process results\n result.messagesV2.forEach(msg => {\n if (messageMap.has(msg.id)) return;\n messageMap.set(msg.id, true);\n\n const content =\n msg.content.content || msg.content.parts?.map(p => (p.type === 'text' ? p.text : '')).join(' ') || '';\n\n if (!hasSemanticRecall && !content.toLowerCase().includes(searchQuery.toLowerCase())) {\n return;\n }\n\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: msg.threadId || thread.id,\n threadTitle: thread.title || msg.threadId || thread.id,\n };\n\n if (messageIndex !== -1) {\n searchResult.context = {\n before: threadMessages.slice(Math.max(0, messageIndex - 2), 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 + 3).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 } else if (threadId) {\n // Search in specific thread only\n const thread = await memory.getThreadById({ threadId });\n if (!thread) {\n // Thread doesn't exist yet - return empty results\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n\n const result = await memory.rememberMessages({\n threadId,\n resourceId,\n vectorMessageSearch: searchQuery,\n config,\n });\n\n const threadMessages = (await memory.query({ threadId })).uiMessages;\n\n result.messagesV2.forEach(msg => {\n // Skip duplicates\n if (messageMap.has(msg.id)) return;\n messageMap.set(msg.id, true);\n\n // Extract content\n const content =\n msg.content.content || msg.content.parts?.map(p => (p.type === 'text' ? p.text : '')).join(' ') || '';\n\n // If not using semantic recall, filter by text search\n if (!hasSemanticRecall && !content.toLowerCase().includes(searchQuery.toLowerCase())) {\n return;\n }\n\n // Find message index for context\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: threadId,\n threadTitle: thread?.title || threadId,\n };\n\n // Add context if found\n if (messageIndex !== -1) {\n searchResult.context = {\n before: threadMessages.slice(Math.max(0, messageIndex - 2), 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 + 3).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\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"]}