@mastra/server 0.0.0-ai-v5-20250729012312 → 0.0.0-ai-v5-20250801192614

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 (200) hide show
  1. package/dist/{chunk-AJRURO6F.cjs → chunk-3UVCRG2A.cjs} +26 -24
  2. package/dist/chunk-3UVCRG2A.cjs.map +1 -0
  3. package/dist/{chunk-4D66QEKC.js → chunk-4MQU6AJN.js} +5 -3
  4. package/dist/chunk-4MQU6AJN.js.map +1 -0
  5. package/dist/{chunk-CCGRCYWJ.cjs → chunk-4QSNRCOT.cjs} +4 -2
  6. package/dist/chunk-4QSNRCOT.cjs.map +1 -0
  7. package/dist/{chunk-RHSWAXKB.cjs → chunk-4US5W7PH.cjs} +26 -24
  8. package/dist/chunk-4US5W7PH.cjs.map +1 -0
  9. package/dist/{chunk-36BLNJHS.js → chunk-7FHF55WA.js} +2 -0
  10. package/dist/chunk-7FHF55WA.js.map +1 -0
  11. package/dist/{chunk-EZXKTV2W.js → chunk-7MEJQMCS.js} +7 -5
  12. package/dist/chunk-7MEJQMCS.js.map +1 -0
  13. package/dist/{chunk-2KZFMI6P.cjs → chunk-7NADHFD2.cjs} +2 -0
  14. package/dist/chunk-7NADHFD2.cjs.map +1 -0
  15. package/dist/{chunk-QGX47B5D.cjs → chunk-BED2O446.cjs} +11 -9
  16. package/dist/chunk-BED2O446.cjs.map +1 -0
  17. package/dist/{chunk-T7HAZC2E.js → chunk-BUOJL3MN.js} +6 -4
  18. package/dist/chunk-BUOJL3MN.js.map +1 -0
  19. package/dist/{chunk-HAGPF7OS.cjs → chunk-CERIVHRO.cjs} +16 -14
  20. package/dist/chunk-CERIVHRO.cjs.map +1 -0
  21. package/dist/{chunk-LF7P5PLR.js → chunk-CY4TP3FK.js} +3 -1
  22. package/dist/chunk-CY4TP3FK.js.map +1 -0
  23. package/dist/{chunk-WNVFNNWN.js → chunk-G7NVCO5M.js} +5 -3
  24. package/dist/chunk-G7NVCO5M.js.map +1 -0
  25. package/dist/{chunk-KHZKYUNR.js → chunk-HWHKM67I.js} +6 -4
  26. package/dist/chunk-HWHKM67I.js.map +1 -0
  27. package/dist/{chunk-BYCOGHDE.js → chunk-HXZTRBY4.js} +6 -4
  28. package/dist/chunk-HXZTRBY4.js.map +1 -0
  29. package/dist/{chunk-G7KH752Y.cjs → chunk-ILCWPBYQ.cjs} +9 -7
  30. package/dist/chunk-ILCWPBYQ.cjs.map +1 -0
  31. package/dist/{chunk-UCV4247U.cjs → chunk-JGVY3KWV.cjs} +47 -45
  32. package/dist/chunk-JGVY3KWV.cjs.map +1 -0
  33. package/dist/{chunk-MKHRYD4K.js → chunk-KXXJ7Y4H.js} +37 -5
  34. package/dist/chunk-KXXJ7Y4H.js.map +1 -0
  35. package/dist/{chunk-HISYIDYH.cjs → chunk-LRUH33B4.cjs} +2 -0
  36. package/dist/chunk-LRUH33B4.cjs.map +1 -0
  37. package/dist/{chunk-FC5QBMOM.cjs → chunk-LZASFI6W.cjs} +91 -58
  38. package/dist/chunk-LZASFI6W.cjs.map +1 -0
  39. package/dist/{chunk-LCM566I4.js → chunk-MMROOK5J.js} +2 -0
  40. package/dist/chunk-MMROOK5J.js.map +1 -0
  41. package/dist/{chunk-7TP2LX5L.cjs → chunk-NCS2OXX6.cjs} +20 -18
  42. package/dist/chunk-NCS2OXX6.cjs.map +1 -0
  43. package/dist/{chunk-HRSAZUIK.cjs → chunk-O4I563YW.cjs} +24 -22
  44. package/dist/chunk-O4I563YW.cjs.map +1 -0
  45. package/dist/{chunk-RSEO4XPX.js → chunk-OW4FX5TS.js} +3 -1
  46. package/dist/chunk-OW4FX5TS.js.map +1 -0
  47. package/dist/{chunk-T7WA465P.cjs → chunk-OZE3KILQ.cjs} +4 -2
  48. package/dist/chunk-OZE3KILQ.cjs.map +1 -0
  49. package/dist/{chunk-MLKGABMK.js → chunk-PZ5AY32C.js} +2 -0
  50. package/dist/chunk-PZ5AY32C.js.map +1 -0
  51. package/dist/{chunk-75ZPJI57.cjs → chunk-Q7SFCCGT.cjs} +2 -0
  52. package/dist/chunk-Q7SFCCGT.cjs.map +1 -0
  53. package/dist/{chunk-PZQDCRPV.cjs → chunk-RE4RPXT2.cjs} +4 -2
  54. package/dist/chunk-RE4RPXT2.cjs.map +1 -0
  55. package/dist/{chunk-6KP2OBYA.cjs → chunk-S37KCGOR.cjs} +88 -86
  56. package/dist/chunk-S37KCGOR.cjs.map +1 -0
  57. package/dist/{chunk-RG473F6Y.js → chunk-SQ7KKIH3.js} +5 -3
  58. package/dist/chunk-SQ7KKIH3.js.map +1 -0
  59. package/dist/{chunk-B36R2PHA.js → chunk-TLOXYMXG.js} +3 -1
  60. package/dist/chunk-TLOXYMXG.js.map +1 -0
  61. package/dist/{chunk-6T5JUKOQ.js → chunk-TXAQU2XN.js} +4 -2
  62. package/dist/chunk-TXAQU2XN.js.map +1 -0
  63. package/dist/{chunk-ZYAFP2AV.js → chunk-UVOSITKU.js} +6 -4
  64. package/dist/chunk-UVOSITKU.js.map +1 -0
  65. package/dist/{chunk-424T5F2J.cjs → chunk-VIGPWTDA.cjs} +9 -7
  66. package/dist/chunk-VIGPWTDA.cjs.map +1 -0
  67. package/dist/{chunk-WBRFIHSF.js → chunk-YS66MFDY.js} +7 -5
  68. package/dist/chunk-YS66MFDY.js.map +1 -0
  69. package/dist/index.cjs +2 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +2 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/server/a2a/protocol.d.ts +8 -0
  76. package/dist/server/a2a/protocol.d.ts.map +1 -0
  77. package/dist/server/a2a/store.d.ts +14 -0
  78. package/dist/server/a2a/store.d.ts.map +1 -0
  79. package/dist/server/a2a/tasks.d.ts +20 -0
  80. package/dist/server/a2a/tasks.d.ts.map +1 -0
  81. package/dist/server/handlers/a2a.cjs +9 -7
  82. package/dist/server/handlers/a2a.cjs.map +1 -0
  83. package/dist/server/handlers/a2a.d.ts +66 -6
  84. package/dist/server/handlers/a2a.d.ts.map +1 -0
  85. package/dist/server/handlers/a2a.js +3 -1
  86. package/dist/server/handlers/a2a.js.map +1 -0
  87. package/dist/server/handlers/agents.cjs +10 -8
  88. package/dist/server/handlers/agents.cjs.map +1 -0
  89. package/dist/server/handlers/agents.d.ts +81 -7
  90. package/dist/server/handlers/agents.d.ts.map +1 -0
  91. package/dist/server/handlers/agents.js +3 -1
  92. package/dist/server/handlers/agents.js.map +1 -0
  93. package/dist/server/handlers/error.cjs +4 -2
  94. package/dist/server/handlers/error.cjs.map +1 -0
  95. package/dist/server/handlers/error.d.ts +2 -1
  96. package/dist/server/handlers/error.d.ts.map +1 -0
  97. package/dist/server/handlers/error.js +3 -1
  98. package/dist/server/handlers/error.js.map +1 -0
  99. package/dist/server/handlers/legacyWorkflows.cjs +13 -11
  100. package/dist/server/handlers/legacyWorkflows.cjs.map +1 -0
  101. package/dist/server/handlers/legacyWorkflows.d.ts +59 -10
  102. package/dist/server/handlers/legacyWorkflows.d.ts.map +1 -0
  103. package/dist/server/handlers/legacyWorkflows.js +3 -1
  104. package/dist/server/handlers/legacyWorkflows.js.map +1 -0
  105. package/dist/server/handlers/logs.cjs +6 -4
  106. package/dist/server/handlers/logs.cjs.map +1 -0
  107. package/dist/server/handlers/logs.d.ts +34 -3
  108. package/dist/server/handlers/logs.d.ts.map +1 -0
  109. package/dist/server/handlers/logs.js +3 -1
  110. package/dist/server/handlers/logs.js.map +1 -0
  111. package/dist/server/handlers/memory.cjs +21 -15
  112. package/dist/server/handlers/memory.cjs.map +1 -0
  113. package/dist/server/handlers/memory.d.ts +121 -14
  114. package/dist/server/handlers/memory.d.ts.map +1 -0
  115. package/dist/server/handlers/memory.js +3 -1
  116. package/dist/server/handlers/memory.js.map +1 -0
  117. package/dist/server/handlers/network.cjs +7 -5
  118. package/dist/server/handlers/network.cjs.map +1 -0
  119. package/dist/server/handlers/network.d.ts +51 -4
  120. package/dist/server/handlers/network.d.ts.map +1 -0
  121. package/dist/server/handlers/network.js +3 -1
  122. package/dist/server/handlers/network.js.map +1 -0
  123. package/dist/server/handlers/scores.cjs +9 -7
  124. package/dist/server/handlers/scores.cjs.map +1 -0
  125. package/dist/server/handlers/scores.d.ts +49 -6
  126. package/dist/server/handlers/scores.d.ts.map +1 -0
  127. package/dist/server/handlers/scores.js +3 -1
  128. package/dist/server/handlers/scores.js.map +1 -0
  129. package/dist/server/handlers/telemetry.cjs +5 -3
  130. package/dist/server/handlers/telemetry.cjs.map +1 -0
  131. package/dist/server/handlers/telemetry.d.ts +32 -2
  132. package/dist/server/handlers/telemetry.d.ts.map +1 -0
  133. package/dist/server/handlers/telemetry.js +3 -1
  134. package/dist/server/handlers/telemetry.js.map +1 -0
  135. package/dist/server/handlers/tools.cjs +7 -5
  136. package/dist/server/handlers/tools.cjs.map +1 -0
  137. package/dist/server/handlers/tools.d.ts +21 -4
  138. package/dist/server/handlers/tools.d.ts.map +1 -0
  139. package/dist/server/handlers/tools.js +3 -1
  140. package/dist/server/handlers/tools.js.map +1 -0
  141. package/dist/server/handlers/utils.cjs +4 -2
  142. package/dist/server/handlers/utils.cjs.map +1 -0
  143. package/dist/server/handlers/utils.d.ts +2 -1
  144. package/dist/server/handlers/utils.d.ts.map +1 -0
  145. package/dist/server/handlers/utils.js +3 -1
  146. package/dist/server/handlers/utils.js.map +1 -0
  147. package/dist/server/handlers/vNextNetwork.cjs +25 -23
  148. package/dist/server/handlers/vNextNetwork.cjs.map +1 -0
  149. package/dist/server/handlers/vNextNetwork.d.ts +179 -6
  150. package/dist/server/handlers/vNextNetwork.d.ts.map +1 -0
  151. package/dist/server/handlers/vNextNetwork.js +6 -4
  152. package/dist/server/handlers/vNextNetwork.js.map +1 -0
  153. package/dist/server/handlers/vector.cjs +9 -7
  154. package/dist/server/handlers/vector.cjs.map +1 -0
  155. package/dist/server/handlers/vector.d.ts +51 -6
  156. package/dist/server/handlers/vector.d.ts.map +1 -0
  157. package/dist/server/handlers/vector.js +3 -1
  158. package/dist/server/handlers/vector.js.map +1 -0
  159. package/dist/server/handlers/voice.cjs +7 -5
  160. package/dist/server/handlers/voice.cjs.map +1 -0
  161. package/dist/server/handlers/voice.d.ts +39 -4
  162. package/dist/server/handlers/voice.d.ts.map +1 -0
  163. package/dist/server/handlers/voice.js +3 -1
  164. package/dist/server/handlers/voice.js.map +1 -0
  165. package/dist/server/handlers/workflows.cjs +18 -16
  166. package/dist/server/handlers/workflows.cjs.map +1 -0
  167. package/dist/server/handlers/workflows.d.ts +88 -15
  168. package/dist/server/handlers/workflows.d.ts.map +1 -0
  169. package/dist/server/handlers/workflows.js +3 -1
  170. package/dist/server/handlers/workflows.js.map +1 -0
  171. package/dist/server/handlers.cjs +26 -24
  172. package/dist/server/handlers.cjs.map +1 -0
  173. package/dist/server/handlers.d.ts +13 -12
  174. package/dist/server/handlers.d.ts.map +1 -0
  175. package/dist/server/handlers.js +14 -12
  176. package/dist/server/handlers.js.map +1 -0
  177. package/dist/server/http-exception.d.ts +87 -0
  178. package/dist/server/http-exception.d.ts.map +1 -0
  179. package/dist/server/types.d.ts +10 -0
  180. package/dist/server/types.d.ts.map +1 -0
  181. package/package.json +7 -7
  182. package/dist/_tsup-dts-rollup.d.cts +0 -1262
  183. package/dist/_tsup-dts-rollup.d.ts +0 -1262
  184. package/dist/index.d.cts +0 -1
  185. package/dist/server/handlers/a2a.d.cts +0 -6
  186. package/dist/server/handlers/agents.d.cts +0 -7
  187. package/dist/server/handlers/error.d.cts +0 -1
  188. package/dist/server/handlers/legacyWorkflows.d.cts +0 -10
  189. package/dist/server/handlers/logs.d.cts +0 -3
  190. package/dist/server/handlers/memory.d.cts +0 -14
  191. package/dist/server/handlers/network.d.cts +0 -4
  192. package/dist/server/handlers/scores.d.cts +0 -6
  193. package/dist/server/handlers/telemetry.d.cts +0 -2
  194. package/dist/server/handlers/tools.d.cts +0 -4
  195. package/dist/server/handlers/utils.d.cts +0 -1
  196. package/dist/server/handlers/vNextNetwork.d.cts +0 -6
  197. package/dist/server/handlers/vector.d.cts +0 -6
  198. package/dist/server/handlers/voice.d.cts +0 -4
  199. package/dist/server/handlers/workflows.d.cts +0 -15
  200. package/dist/server/handlers.d.cts +0 -12
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkCCGRCYWJ_cjs = require('./chunk-CCGRCYWJ.cjs');
4
- var chunkPZQDCRPV_cjs = require('./chunk-PZQDCRPV.cjs');
5
- var chunk2KZFMI6P_cjs = require('./chunk-2KZFMI6P.cjs');
6
- var chunk75ZPJI57_cjs = require('./chunk-75ZPJI57.cjs');
3
+ var chunk4QSNRCOT_cjs = require('./chunk-4QSNRCOT.cjs');
4
+ var chunkRE4RPXT2_cjs = require('./chunk-RE4RPXT2.cjs');
5
+ var chunk7NADHFD2_cjs = require('./chunk-7NADHFD2.cjs');
6
+ var chunkQ7SFCCGT_cjs = require('./chunk-Q7SFCCGT.cjs');
7
7
  var core = require('@mastra/core');
8
8
 
9
9
  // src/server/handlers/memory.ts
10
10
  var memory_exports = {};
11
- chunk75ZPJI57_cjs.__export(memory_exports, {
11
+ chunkQ7SFCCGT_cjs.__export(memory_exports, {
12
12
  createThreadHandler: () => createThreadHandler,
13
13
  deleteMessagesHandler: () => deleteMessagesHandler,
14
14
  deleteThreadHandler: () => deleteThreadHandler,
@@ -18,6 +18,7 @@ chunk75ZPJI57_cjs.__export(memory_exports, {
18
18
  getMessagesPaginatedHandler: () => getMessagesPaginatedHandler,
19
19
  getThreadByIdHandler: () => getThreadByIdHandler,
20
20
  getThreadsHandler: () => getThreadsHandler,
21
+ getThreadsPaginatedHandler: () => getThreadsPaginatedHandler,
21
22
  getWorkingMemoryHandler: () => getWorkingMemoryHandler,
22
23
  saveMessagesHandler: () => saveMessagesHandler,
23
24
  searchMemoryHandler: () => searchMemoryHandler,
@@ -32,11 +33,11 @@ async function getMemoryFromContext({
32
33
  }) {
33
34
  const agent = agentId ? mastra.getAgent(agentId) : null;
34
35
  if (agentId && !agent) {
35
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Agent not found" });
36
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Agent not found" });
36
37
  }
37
38
  const network = networkId ? mastra.vnext_getNetwork(networkId) : null;
38
39
  if (networkId && !network) {
39
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Network not found" });
40
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Network not found" });
40
41
  }
41
42
  if (agent) {
42
43
  return await agent?.getMemory() || mastra.getMemory();
@@ -59,7 +60,7 @@ async function getMemoryStatusHandler({
59
60
  }
60
61
  return { result: true };
61
62
  } catch (error) {
62
- return chunkPZQDCRPV_cjs.handleError(error, "Error getting memory status");
63
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting memory status");
63
64
  }
64
65
  }
65
66
  async function getMemoryConfigHandler({
@@ -71,12 +72,12 @@ async function getMemoryConfigHandler({
71
72
  try {
72
73
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
73
74
  if (!memory) {
74
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
75
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
75
76
  }
76
77
  const config = memory.getMergedThreadConfig({});
77
78
  return { config };
78
79
  } catch (error) {
79
- return chunkPZQDCRPV_cjs.handleError(error, "Error getting memory configuration");
80
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting memory configuration");
80
81
  }
81
82
  }
82
83
  async function getThreadsHandler({
@@ -91,9 +92,9 @@ async function getThreadsHandler({
91
92
  try {
92
93
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
93
94
  if (!memory) {
94
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
95
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
95
96
  }
96
- chunkCCGRCYWJ_cjs.validateBody({ resourceId });
97
+ chunk4QSNRCOT_cjs.validateBody({ resourceId });
97
98
  const threads = await memory.getThreadsByResourceId({
98
99
  resourceId,
99
100
  orderBy,
@@ -101,7 +102,36 @@ async function getThreadsHandler({
101
102
  });
102
103
  return threads;
103
104
  } catch (error) {
104
- return chunkPZQDCRPV_cjs.handleError(error, "Error getting threads");
105
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting threads");
106
+ }
107
+ }
108
+ async function getThreadsPaginatedHandler({
109
+ mastra,
110
+ agentId,
111
+ resourceId,
112
+ networkId,
113
+ runtimeContext,
114
+ page,
115
+ perPage,
116
+ orderBy,
117
+ sortDirection
118
+ }) {
119
+ try {
120
+ const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
121
+ if (!memory) {
122
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
123
+ }
124
+ chunk4QSNRCOT_cjs.validateBody({ resourceId });
125
+ const result = await memory.getThreadsByResourceIdPaginated({
126
+ resourceId,
127
+ page,
128
+ perPage,
129
+ orderBy,
130
+ sortDirection
131
+ });
132
+ return result;
133
+ } catch (error) {
134
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting paginated threads");
105
135
  }
106
136
  }
107
137
  async function getThreadByIdHandler({
@@ -112,18 +142,18 @@ async function getThreadByIdHandler({
112
142
  runtimeContext
113
143
  }) {
114
144
  try {
115
- chunkCCGRCYWJ_cjs.validateBody({ threadId });
145
+ chunk4QSNRCOT_cjs.validateBody({ threadId });
116
146
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
117
147
  if (!memory) {
118
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
148
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
119
149
  }
120
150
  const thread = await memory.getThreadById({ threadId });
121
151
  if (!thread) {
122
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Thread not found" });
152
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Thread not found" });
123
153
  }
124
154
  return thread;
125
155
  } catch (error) {
126
- return chunkPZQDCRPV_cjs.handleError(error, "Error getting thread");
156
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting thread");
127
157
  }
128
158
  }
129
159
  async function saveMessagesHandler({
@@ -136,17 +166,17 @@ async function saveMessagesHandler({
136
166
  try {
137
167
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
138
168
  if (!memory) {
139
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
169
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
140
170
  }
141
171
  if (!body?.messages) {
142
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Messages are required" });
172
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Messages are required" });
143
173
  }
144
174
  if (!Array.isArray(body.messages)) {
145
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Messages should be an array" });
175
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Messages should be an array" });
146
176
  }
147
177
  const invalidMessages = body.messages.filter((message) => !message.threadId || !message.resourceId);
148
178
  if (invalidMessages.length > 0) {
149
- throw new chunk2KZFMI6P_cjs.HTTPException(400, {
179
+ throw new chunk7NADHFD2_cjs.HTTPException(400, {
150
180
  message: `All messages must have threadId and resourceId fields. Found ${invalidMessages.length} invalid message(s).`
151
181
  });
152
182
  }
@@ -158,7 +188,7 @@ async function saveMessagesHandler({
158
188
  const result = await memory.saveMessages({ messages: processedMessages, memoryConfig: {} });
159
189
  return result;
160
190
  } catch (error) {
161
- return chunkPZQDCRPV_cjs.handleError(error, "Error saving messages");
191
+ return chunkRE4RPXT2_cjs.handleError(error, "Error saving messages");
162
192
  }
163
193
  }
164
194
  async function createThreadHandler({
@@ -171,9 +201,9 @@ async function createThreadHandler({
171
201
  try {
172
202
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
173
203
  if (!memory) {
174
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
204
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
175
205
  }
176
- chunkCCGRCYWJ_cjs.validateBody({ resourceId: body?.resourceId });
206
+ chunk4QSNRCOT_cjs.validateBody({ resourceId: body?.resourceId });
177
207
  const result = await memory.createThread({
178
208
  resourceId: body?.resourceId,
179
209
  title: body?.title,
@@ -182,7 +212,7 @@ async function createThreadHandler({
182
212
  });
183
213
  return result;
184
214
  } catch (error) {
185
- return chunkPZQDCRPV_cjs.handleError(error, "Error saving thread to memory");
215
+ return chunkRE4RPXT2_cjs.handleError(error, "Error saving thread to memory");
186
216
  }
187
217
  }
188
218
  async function updateThreadHandler({
@@ -196,17 +226,17 @@ async function updateThreadHandler({
196
226
  try {
197
227
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
198
228
  if (!body) {
199
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Body is required" });
229
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Body is required" });
200
230
  }
201
231
  const { title, metadata, resourceId } = body;
202
232
  const updatedAt = /* @__PURE__ */ new Date();
203
- chunkCCGRCYWJ_cjs.validateBody({ threadId });
233
+ chunk4QSNRCOT_cjs.validateBody({ threadId });
204
234
  if (!memory) {
205
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
235
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
206
236
  }
207
237
  const thread = await memory.getThreadById({ threadId });
208
238
  if (!thread) {
209
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Thread not found" });
239
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Thread not found" });
210
240
  }
211
241
  const updatedThread = {
212
242
  ...thread,
@@ -219,7 +249,7 @@ async function updateThreadHandler({
219
249
  const result = await memory.saveThread({ thread: updatedThread });
220
250
  return result;
221
251
  } catch (error) {
222
- return chunkPZQDCRPV_cjs.handleError(error, "Error updating thread");
252
+ return chunkRE4RPXT2_cjs.handleError(error, "Error updating thread");
223
253
  }
224
254
  }
225
255
  async function deleteThreadHandler({
@@ -230,19 +260,19 @@ async function deleteThreadHandler({
230
260
  runtimeContext
231
261
  }) {
232
262
  try {
233
- chunkCCGRCYWJ_cjs.validateBody({ threadId });
263
+ chunk4QSNRCOT_cjs.validateBody({ threadId });
234
264
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
235
265
  if (!memory) {
236
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
266
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
237
267
  }
238
268
  const thread = await memory.getThreadById({ threadId });
239
269
  if (!thread) {
240
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Thread not found" });
270
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Thread not found" });
241
271
  }
242
272
  await memory.deleteThread(threadId);
243
273
  return { result: "Thread deleted" };
244
274
  } catch (error) {
245
- return chunkPZQDCRPV_cjs.handleError(error, "Error deleting thread");
275
+ return chunkRE4RPXT2_cjs.handleError(error, "Error deleting thread");
246
276
  }
247
277
  }
248
278
  async function getMessagesPaginatedHandler({
@@ -253,19 +283,19 @@ async function getMessagesPaginatedHandler({
253
283
  format
254
284
  }) {
255
285
  try {
256
- chunkCCGRCYWJ_cjs.validateBody({ threadId });
286
+ chunk4QSNRCOT_cjs.validateBody({ threadId });
257
287
  const storage = mastra.getStorage();
258
288
  if (!storage) {
259
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Storage is not initialized" });
289
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Storage is not initialized" });
260
290
  }
261
291
  const thread = await storage.getThreadById({ threadId });
262
292
  if (!thread) {
263
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Thread not found" });
293
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Thread not found" });
264
294
  }
265
295
  const result = await storage.getMessagesPaginated({ threadId, resourceId, selectBy, format });
266
296
  return result;
267
297
  } catch (error) {
268
- return chunkPZQDCRPV_cjs.handleError(error, "Error getting messages");
298
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting messages");
269
299
  }
270
300
  }
271
301
  async function getMessagesHandler({
@@ -279,17 +309,17 @@ async function getMessagesHandler({
279
309
  runtimeContext
280
310
  }) {
281
311
  if (limit !== void 0 && (!Number.isInteger(limit) || limit <= 0)) {
282
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Invalid limit: must be a positive integer" });
312
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Invalid limit: must be a positive integer" });
283
313
  }
284
314
  try {
285
- chunkCCGRCYWJ_cjs.validateBody({ threadId });
315
+ chunk4QSNRCOT_cjs.validateBody({ threadId });
286
316
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
287
317
  if (!memory) {
288
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
318
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
289
319
  }
290
320
  const thread = await memory.getThreadById({ threadId });
291
321
  if (!thread) {
292
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Thread not found" });
322
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Thread not found" });
293
323
  }
294
324
  const result = await memory.query({
295
325
  threadId,
@@ -308,7 +338,7 @@ async function getMessagesHandler({
308
338
  }
309
339
  return { messages: result.messages, uiMessages: result.uiMessages };
310
340
  } catch (error) {
311
- return chunkPZQDCRPV_cjs.handleError(error, "Error getting messages");
341
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting messages");
312
342
  }
313
343
  }
314
344
  async function getWorkingMemoryHandler({
@@ -322,9 +352,9 @@ async function getWorkingMemoryHandler({
322
352
  }) {
323
353
  try {
324
354
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
325
- chunkCCGRCYWJ_cjs.validateBody({ threadId });
355
+ chunk4QSNRCOT_cjs.validateBody({ threadId });
326
356
  if (!memory) {
327
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
357
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
328
358
  }
329
359
  const thread = await memory.getThreadById({ threadId });
330
360
  const threadExists = !!thread;
@@ -335,7 +365,7 @@ async function getWorkingMemoryHandler({
335
365
  const source = config.workingMemory?.scope === "resource" && resourceId ? "resource" : "thread";
336
366
  return { workingMemory, source, workingMemoryTemplate, threadExists };
337
367
  } catch (error) {
338
- return chunkPZQDCRPV_cjs.handleError(error, "Error getting working memory");
368
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting working memory");
339
369
  }
340
370
  }
341
371
  async function updateWorkingMemoryHandler({
@@ -347,20 +377,20 @@ async function updateWorkingMemoryHandler({
347
377
  runtimeContext
348
378
  }) {
349
379
  try {
350
- chunkCCGRCYWJ_cjs.validateBody({ threadId });
380
+ chunk4QSNRCOT_cjs.validateBody({ threadId });
351
381
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
352
382
  const { resourceId, memoryConfig, workingMemory } = body;
353
383
  if (!memory) {
354
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
384
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
355
385
  }
356
386
  const thread = await memory.getThreadById({ threadId });
357
387
  if (!thread) {
358
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Thread not found" });
388
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Thread not found" });
359
389
  }
360
390
  await memory.updateWorkingMemory({ threadId, resourceId, workingMemory, memoryConfig });
361
391
  return { success: true };
362
392
  } catch (error) {
363
- return chunkPZQDCRPV_cjs.handleError(error, "Error updating working memory");
393
+ return chunkRE4RPXT2_cjs.handleError(error, "Error updating working memory");
364
394
  }
365
395
  }
366
396
  async function deleteMessagesHandler({
@@ -372,11 +402,11 @@ async function deleteMessagesHandler({
372
402
  }) {
373
403
  try {
374
404
  if (messageIds === void 0 || messageIds === null) {
375
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "messageIds is required" });
405
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "messageIds is required" });
376
406
  }
377
407
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
378
408
  if (!memory) {
379
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
409
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
380
410
  }
381
411
  await memory.deleteMessages(messageIds);
382
412
  let count = 1;
@@ -385,7 +415,7 @@ async function deleteMessagesHandler({
385
415
  }
386
416
  return { success: true, message: `${count} message${count === 1 ? "" : "s"} deleted successfully` };
387
417
  } catch (error) {
388
- return chunkPZQDCRPV_cjs.handleError(error, "Error deleting messages");
418
+ return chunkRE4RPXT2_cjs.handleError(error, "Error deleting messages");
389
419
  }
390
420
  }
391
421
  async function searchMemoryHandler({
@@ -400,10 +430,10 @@ async function searchMemoryHandler({
400
430
  memoryConfig
401
431
  }) {
402
432
  try {
403
- chunkCCGRCYWJ_cjs.validateBody({ searchQuery, resourceId });
433
+ chunk4QSNRCOT_cjs.validateBody({ searchQuery, resourceId });
404
434
  const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });
405
435
  if (!memory) {
406
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Memory is not initialized" });
436
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Memory is not initialized" });
407
437
  }
408
438
  const config = memory.getMergedThreadConfig(memoryConfig || {});
409
439
  const hasSemanticRecall = !!config?.semanticRecall;
@@ -411,10 +441,10 @@ async function searchMemoryHandler({
411
441
  if (threadId && !resourceScope) {
412
442
  const thread = await memory.getThreadById({ threadId });
413
443
  if (!thread) {
414
- throw new chunk2KZFMI6P_cjs.HTTPException(404, { message: "Thread not found" });
444
+ throw new chunk7NADHFD2_cjs.HTTPException(404, { message: "Thread not found" });
415
445
  }
416
446
  if (thread.resourceId !== resourceId) {
417
- throw new chunk2KZFMI6P_cjs.HTTPException(403, { message: "Thread does not belong to the specified resource" });
447
+ throw new chunk7NADHFD2_cjs.HTTPException(403, { message: "Thread does not belong to the specified resource" });
418
448
  }
419
449
  }
420
450
  const searchResults = [];
@@ -555,7 +585,7 @@ async function searchMemoryHandler({
555
585
  searchType: hasSemanticRecall ? "semantic" : "text"
556
586
  };
557
587
  } catch (error) {
558
- return chunkPZQDCRPV_cjs.handleError(error, "Error searching memory");
588
+ return chunkRE4RPXT2_cjs.handleError(error, "Error searching memory");
559
589
  }
560
590
  }
561
591
 
@@ -568,9 +598,12 @@ exports.getMessagesHandler = getMessagesHandler;
568
598
  exports.getMessagesPaginatedHandler = getMessagesPaginatedHandler;
569
599
  exports.getThreadByIdHandler = getThreadByIdHandler;
570
600
  exports.getThreadsHandler = getThreadsHandler;
601
+ exports.getThreadsPaginatedHandler = getThreadsPaginatedHandler;
571
602
  exports.getWorkingMemoryHandler = getWorkingMemoryHandler;
572
603
  exports.memory_exports = memory_exports;
573
604
  exports.saveMessagesHandler = saveMessagesHandler;
574
605
  exports.searchMemoryHandler = searchMemoryHandler;
575
606
  exports.updateThreadHandler = updateThreadHandler;
576
607
  exports.updateWorkingMemoryHandler = updateWorkingMemoryHandler;
608
+ //# sourceMappingURL=chunk-LZASFI6W.cjs.map
609
+ //# sourceMappingURL=chunk-LZASFI6W.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/memory.ts"],"names":["__export","HTTPException","handleError","validateBody","generateEmptyFromSchema"],"mappings":"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","file":"chunk-LZASFI6W.cjs","sourcesContent":["import { generateEmptyFromSchema } from '@mastra/core';\nimport type { StorageGetMessagesArg } from '@mastra/core';\nimport type { RuntimeContext } from '@mastra/core/di';\nimport type { MastraMemory } from '@mastra/core/memory';\nimport type { ThreadSortOptions } from '@mastra/core/storage';\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 networkId?: string;\n runtimeContext?: RuntimeContext;\n}\n\nasync function getMemoryFromContext({\n mastra,\n agentId,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'>): Promise<\n MastraMemory | null | undefined\n> {\n const agent = agentId ? mastra.getAgent(agentId) : null;\n if (agentId && !agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const network = networkId ? mastra.vnext_getNetwork(networkId) : null;\n\n if (networkId && !network) {\n throw new HTTPException(404, { message: 'Network not found' });\n }\n\n if (agent) {\n return (await agent?.getMemory()) || mastra.getMemory();\n }\n\n if (network) {\n return (await network?.getMemory({ runtimeContext })) || mastra.getMemory();\n }\n\n return mastra.getMemory();\n}\n\n// Memory handlers\nexport async function getMemoryStatusHandler({\n mastra,\n agentId,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n orderBy,\n sortDirection,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'resourceId' | 'networkId' | 'runtimeContext'> & ThreadSortOptions) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n page,\n perPage,\n orderBy,\n sortDirection,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'resourceId' | 'networkId' | 'runtimeContext'> & {\n page: number;\n perPage: number;\n} & ThreadSortOptions) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'> & {\n body: {\n messages: Parameters<MastraMemory['saveMessages']>[0]['messages'];\n };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'> & {\n body?: Omit<Parameters<MastraMemory['createThread']>[0], 'resourceId'> & { resourceId?: string };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'> & {\n body?: Parameters<MastraMemory['saveThread']>[0]['thread'];\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 format,\n clientSdkCompat,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'> & {\n limit?: number;\n format?: 'aiv4' | 'aiv5';\n clientSdkCompat?: string;\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, networkId, 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\n // Determine format: explicit format parameter, auto-detection, or default to v5\n let useV4Format = false;\n if (format === 'aiv4') {\n useV4Format = true;\n } else if (format === 'aiv5') {\n useV4Format = false;\n } else {\n // No explicit format - check for client header override first, then fall back to Mastra config\n useV4Format = clientSdkCompat === 'v4' || mastra.getAiSdkCompatMode() === 'v4';\n }\n\n // Return appropriate format\n if (useV4Format) {\n return { messages: result.messages, uiMessages: result.uiMessagesV4 };\n }\n\n return { messages: result.messages, uiMessages: 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 networkId,\n runtimeContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | '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, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'> & {\n body: Omit<Parameters<MastraMemory['updateWorkingMemory']>[0], 'threadId'>;\n}) {\n try {\n validateBody({ threadId });\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, 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 networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | '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, networkId, 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 networkId,\n runtimeContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | '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, networkId, 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, format: 'v2' })).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.parts\n .map(p => (p.type === `text` ? p.text : null))\n .filter(Boolean)\n .join(`\\n`),\n // @ts-ignore\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.parts\n .map(p => (p.type === `text` ? p.text : null))\n .filter(Boolean)\n .join(`\\n`),\n // @ts-ignore\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, format: 'v2' })).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.parts\n .map(p => (p.type === `text` ? p.text : null))\n .filter(Boolean)\n .join(`\\n`),\n // @ts-ignore\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.parts\n .map(p => (p.type === `text` ? p.text : null))\n .filter(Boolean)\n .join(`\\n`),\n // @ts-ignore\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"]}
@@ -33,3 +33,5 @@ var HTTPException = class extends Error {
33
33
  };
34
34
 
35
35
  export { HTTPException };
36
+ //# sourceMappingURL=chunk-MMROOK5J.js.map
37
+ //# sourceMappingURL=chunk-MMROOK5J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/http-exception.ts"],"names":[],"mappings":";AAgHO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAC9B,GAAA;AAAA,EACA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,MAAA,GAAqB,GAAA,EAAK,OAAA,EAAgC;AACpE,IAAA,KAAA,CAAM,SAAS,OAAA,EAAS,EAAE,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA;AACjD,IAAA,IAAA,CAAK,MAAM,OAAA,EAAS,GAAA;AACpB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,OAAA,EAAS,KAAA,IAAS,IAAA,CAAK,KAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAA,GAAwB;AACtB,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,MAAM,WAAA,GAAc,IAAI,QAAA,CAAS,IAAA,CAAK,IAAI,IAAA,EAAM;AAAA,QAC9C,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,OAAA,EAAS,KAAK,GAAA,CAAI;AAAA,OACnB,CAAA;AACD,MAAA,OAAO,WAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,OAAA,EAAS;AAAA,MAChC,QAAQ,IAAA,CAAK;AAAA,KACd,CAAA;AAAA,EACH;AACF","file":"chunk-MMROOK5J.js","sourcesContent":["// Copied from https://github.com/honojs/hono/blob/main/packages/hono/src/http-exception.ts\n\n/**\n * @module\n * This module provides the `HTTPException` class.\n */\n\ntype InfoStatusCode = 100 | 101 | 102 | 103;\ntype SuccessStatusCode = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226;\ntype DeprecatedStatusCode = 305 | 306;\ntype RedirectStatusCode = 300 | 301 | 302 | 303 | 304 | DeprecatedStatusCode | 307 | 308;\ntype ClientErrorStatusCode =\n | 400\n | 401\n | 402\n | 403\n | 404\n | 405\n | 406\n | 407\n | 408\n | 409\n | 410\n | 411\n | 412\n | 413\n | 414\n | 415\n | 416\n | 417\n | 418\n | 421\n | 422\n | 423\n | 424\n | 425\n | 426\n | 428\n | 429\n | 431\n | 451;\ntype ServerErrorStatusCode = 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511;\n\n/**\n * `UnofficialStatusCode` can be used to specify an unofficial status code.\n * @example\n *\n * ```ts\n * app.get('/unknown', (c) => {\n * return c.text(\"Unknown Error\", 520 as UnofficialStatusCode)\n * })\n * ```\n */\nexport type UnofficialStatusCode = -1;\n\n/**\n * @deprecated\n * Use `UnofficialStatusCode` instead.\n */\nexport type UnOfficalStatusCode = UnofficialStatusCode;\n\n/**\n * If you want to use an unofficial status, use `UnofficialStatusCode`.\n */\nexport type StatusCode =\n | InfoStatusCode\n | SuccessStatusCode\n | RedirectStatusCode\n | ClientErrorStatusCode\n | ServerErrorStatusCode\n | UnofficialStatusCode;\n\n/**\n * Options for creating an `HTTPException`.\n * @property res - Optional response object to use.\n * @property message - Optional custom error message.\n * @property cause - Optional cause of the error.\n * @property stack - Optional stack trace for the error.\n */\ntype HTTPExceptionOptions = {\n res?: Response;\n message?: string;\n cause?: unknown;\n stack?: string;\n};\n\n/**\n * `HTTPException` must be used when a fatal error such as authentication failure occurs.\n *\n * @see {@link https://hono.dev/docs/api/exception}\n *\n * @param {StatusCode} status - status code of HTTPException\n * @param {HTTPExceptionOptions} options - options of HTTPException\n * @param {HTTPExceptionOptions[\"res\"]} options.res - response of options of HTTPException\n * @param {HTTPExceptionOptions[\"message\"]} options.message - message of options of HTTPException\n * @param {HTTPExceptionOptions[\"cause\"]} options.cause - cause of options of HTTPException\n *\n * @example\n * ```ts\n * import { HTTPException } from 'hono/http-exception'\n *\n * // ...\n *\n * app.post('/auth', async (c, next) => {\n * // authentication\n * if (authorized === false) {\n * throw new HTTPException(401, { message: 'Custom error message' })\n * }\n * await next()\n * })\n * ```\n */\nexport class HTTPException extends Error {\n readonly res?: Response;\n readonly status: StatusCode;\n\n /**\n * Creates an instance of `HTTPException`.\n * @param status - HTTP status code for the exception. Defaults to 500.\n * @param options - Additional options for the exception.\n */\n constructor(status: StatusCode = 500, options?: HTTPExceptionOptions) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n this.stack = options?.stack || this.stack;\n }\n\n /**\n * Returns the response object associated with the exception.\n * If a response object is not provided, a new response is created with the error message and status code.\n * @returns The response object.\n */\n getResponse(): Response {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers,\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status,\n });\n }\n}\n"]}