@mastra/server 1.23.0-alpha.2 → 1.23.0-alpha.4

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 (66) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/{chunk-MNZBZOWQ.cjs → chunk-B2OFZDJQ.cjs} +11 -11
  3. package/dist/{chunk-MNZBZOWQ.cjs.map → chunk-B2OFZDJQ.cjs.map} +1 -1
  4. package/dist/{chunk-MFBT6P7Q.js → chunk-DGS7O6Q7.js} +3 -3
  5. package/dist/{chunk-MFBT6P7Q.js.map → chunk-DGS7O6Q7.js.map} +1 -1
  6. package/dist/{chunk-O2RWEEZ3.js → chunk-FLGIOJA5.js} +39 -18
  7. package/dist/chunk-FLGIOJA5.js.map +1 -0
  8. package/dist/{chunk-Z5ETZUOK.cjs → chunk-HHGZGERI.cjs} +4 -4
  9. package/dist/{chunk-Z5ETZUOK.cjs.map → chunk-HHGZGERI.cjs.map} +1 -1
  10. package/dist/{chunk-UZZDH3J2.cjs → chunk-LFZO2LHV.cjs} +5 -2
  11. package/dist/chunk-LFZO2LHV.cjs.map +1 -0
  12. package/dist/{chunk-KBG2XGCA.cjs → chunk-PNCR2M6Y.cjs} +39 -18
  13. package/dist/chunk-PNCR2M6Y.cjs.map +1 -0
  14. package/dist/{chunk-WGB6F36S.cjs → chunk-RNC7VEI6.cjs} +7 -3
  15. package/dist/chunk-RNC7VEI6.cjs.map +1 -0
  16. package/dist/{chunk-27XB5KOK.js → chunk-SE5M6GC6.js} +3 -3
  17. package/dist/{chunk-27XB5KOK.js.map → chunk-SE5M6GC6.js.map} +1 -1
  18. package/dist/{chunk-UUDXDJ7K.js → chunk-SZ2FSVP5.js} +5 -5
  19. package/dist/{chunk-UUDXDJ7K.js.map → chunk-SZ2FSVP5.js.map} +1 -1
  20. package/dist/{chunk-QJMOCS54.js → chunk-UTRP4B2Q.js} +5 -2
  21. package/dist/chunk-UTRP4B2Q.js.map +1 -0
  22. package/dist/{chunk-2HTJTFFI.cjs → chunk-UVK6YXEL.cjs} +119 -112
  23. package/dist/chunk-UVK6YXEL.cjs.map +1 -0
  24. package/dist/{chunk-4HARW5AZ.cjs → chunk-VMA5TY4H.cjs} +19 -19
  25. package/dist/{chunk-4HARW5AZ.cjs.map → chunk-VMA5TY4H.cjs.map} +1 -1
  26. package/dist/{chunk-H77IQ6X3.js → chunk-VXBTV6LH.js} +7 -3
  27. package/dist/chunk-VXBTV6LH.js.map +1 -0
  28. package/dist/{chunk-CUULQ4L3.js → chunk-XUIA3SIB.js} +14 -7
  29. package/dist/chunk-XUIA3SIB.js.map +1 -0
  30. package/dist/docs/SKILL.md +1 -1
  31. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  32. package/dist/{observational-memory-B7AUSTEY-TJ76ZPT6.cjs → observational-memory-JQ34KLFS-CNLSTXO3.cjs} +26 -26
  33. package/dist/{observational-memory-B7AUSTEY-TJ76ZPT6.cjs.map → observational-memory-JQ34KLFS-CNLSTXO3.cjs.map} +1 -1
  34. package/dist/{observational-memory-B7AUSTEY-4KDTDMCO.js → observational-memory-JQ34KLFS-KLWGOGP4.js} +3 -3
  35. package/dist/{observational-memory-B7AUSTEY-4KDTDMCO.js.map → observational-memory-JQ34KLFS-KLWGOGP4.js.map} +1 -1
  36. package/dist/server/handlers/agent-builder.cjs +16 -16
  37. package/dist/server/handlers/agent-builder.js +1 -1
  38. package/dist/server/handlers/conversations.cjs +5 -5
  39. package/dist/server/handlers/conversations.js +1 -1
  40. package/dist/server/handlers/gateway-memory-client.cjs +8 -8
  41. package/dist/server/handlers/gateway-memory-client.d.ts +3 -0
  42. package/dist/server/handlers/gateway-memory-client.d.ts.map +1 -1
  43. package/dist/server/handlers/gateway-memory-client.js +1 -1
  44. package/dist/server/handlers/memory.cjs +27 -27
  45. package/dist/server/handlers/memory.d.ts +8 -0
  46. package/dist/server/handlers/memory.d.ts.map +1 -1
  47. package/dist/server/handlers/memory.js +1 -1
  48. package/dist/server/handlers.cjs +6 -6
  49. package/dist/server/handlers.js +3 -3
  50. package/dist/server/schemas/index.cjs +50 -50
  51. package/dist/server/schemas/index.js +2 -2
  52. package/dist/server/schemas/memory.d.ts +4 -0
  53. package/dist/server/schemas/memory.d.ts.map +1 -1
  54. package/dist/server/server-adapter/index.cjs +47 -47
  55. package/dist/server/server-adapter/index.js +3 -3
  56. package/dist/server/server-adapter/routes/memory.d.ts +8 -0
  57. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  58. package/package.json +6 -6
  59. package/dist/chunk-2HTJTFFI.cjs.map +0 -1
  60. package/dist/chunk-CUULQ4L3.js.map +0 -1
  61. package/dist/chunk-H77IQ6X3.js.map +0 -1
  62. package/dist/chunk-KBG2XGCA.cjs.map +0 -1
  63. package/dist/chunk-O2RWEEZ3.js.map +0 -1
  64. package/dist/chunk-QJMOCS54.js.map +0 -1
  65. package/dist/chunk-UZZDH3J2.cjs.map +0 -1
  66. package/dist/chunk-WGB6F36S.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @mastra/server
2
2
 
3
+ ## 1.23.0-alpha.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`fff91cf`](https://github.com/mastra-ai/mastra/commit/fff91cf914de0e731578aacebffdeebef82f0440)]:
8
+ - @mastra/core@1.23.0-alpha.4
9
+
10
+ ## 1.23.0-alpha.3
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`1805ddc`](https://github.com/mastra-ai/mastra/commit/1805ddc9c9b3b14b63749735a13c05a45af43a80)]:
15
+ - @mastra/core@1.23.0-alpha.3
16
+
3
17
  ## 1.23.0-alpha.2
4
18
 
5
19
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZ5ETZUOK_cjs = require('./chunk-Z5ETZUOK.cjs');
3
+ var chunkHHGZGERI_cjs = require('./chunk-HHGZGERI.cjs');
4
4
  var chunkOJ72T77G_cjs = require('./chunk-OJ72T77G.cjs');
5
5
  var chunkEPKGVW45_cjs = require('./chunk-EPKGVW45.cjs');
6
6
  var chunkVOCNBP5Q_cjs = require('./chunk-VOCNBP5Q.cjs');
@@ -46,8 +46,8 @@ var CREATE_CONVERSATION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
46
46
  method: "POST",
47
47
  path: "/v1/conversations",
48
48
  responseType: "json",
49
- bodySchema: chunkZ5ETZUOK_cjs.createConversationBodySchema,
50
- responseSchema: chunkZ5ETZUOK_cjs.conversationObjectSchema,
49
+ bodySchema: chunkHHGZGERI_cjs.createConversationBodySchema,
50
+ responseSchema: chunkHHGZGERI_cjs.conversationObjectSchema,
51
51
  summary: "Create a conversation",
52
52
  description: "Creates a new thread-backed conversation for agent-backed Responses API requests",
53
53
  tags: ["Responses"],
@@ -84,8 +84,8 @@ var GET_CONVERSATION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
84
84
  method: "GET",
85
85
  path: "/v1/conversations/:conversationId",
86
86
  responseType: "json",
87
- pathParamSchema: chunkZ5ETZUOK_cjs.conversationIdPathParams,
88
- responseSchema: chunkZ5ETZUOK_cjs.conversationObjectSchema,
87
+ pathParamSchema: chunkHHGZGERI_cjs.conversationIdPathParams,
88
+ responseSchema: chunkHHGZGERI_cjs.conversationObjectSchema,
89
89
  summary: "Retrieve a conversation",
90
90
  description: "Returns a conversation object backed by a Mastra memory thread",
91
91
  tags: ["Responses"],
@@ -107,8 +107,8 @@ var GET_CONVERSATION_ITEMS_ROUTE = chunkEGSCXVMR_cjs.createRoute({
107
107
  method: "GET",
108
108
  path: "/v1/conversations/:conversationId/items",
109
109
  responseType: "json",
110
- pathParamSchema: chunkZ5ETZUOK_cjs.conversationIdPathParams,
111
- responseSchema: chunkZ5ETZUOK_cjs.conversationItemsListSchema,
110
+ pathParamSchema: chunkHHGZGERI_cjs.conversationIdPathParams,
111
+ responseSchema: chunkHHGZGERI_cjs.conversationItemsListSchema,
112
112
  summary: "List conversation items",
113
113
  description: "Returns OpenAI-style conversation items derived from the stored thread messages",
114
114
  tags: ["Responses"],
@@ -135,8 +135,8 @@ var DELETE_CONVERSATION_ROUTE = chunkEGSCXVMR_cjs.createRoute({
135
135
  method: "DELETE",
136
136
  path: "/v1/conversations/:conversationId",
137
137
  responseType: "json",
138
- pathParamSchema: chunkZ5ETZUOK_cjs.conversationIdPathParams,
139
- responseSchema: chunkZ5ETZUOK_cjs.conversationDeletedSchema,
138
+ pathParamSchema: chunkHHGZGERI_cjs.conversationIdPathParams,
139
+ responseSchema: chunkHHGZGERI_cjs.conversationDeletedSchema,
140
140
  summary: "Delete a conversation",
141
141
  description: "Deletes a thread-backed conversation and its stored items",
142
142
  tags: ["Responses"],
@@ -161,5 +161,5 @@ exports.DELETE_CONVERSATION_ROUTE = DELETE_CONVERSATION_ROUTE;
161
161
  exports.GET_CONVERSATION_ITEMS_ROUTE = GET_CONVERSATION_ITEMS_ROUTE;
162
162
  exports.GET_CONVERSATION_ROUTE = GET_CONVERSATION_ROUTE;
163
163
  exports.conversations_exports = conversations_exports;
164
- //# sourceMappingURL=chunk-MNZBZOWQ.cjs.map
165
- //# sourceMappingURL=chunk-MNZBZOWQ.cjs.map
164
+ //# sourceMappingURL=chunk-B2OFZDJQ.cjs.map
165
+ //# sourceMappingURL=chunk-B2OFZDJQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/conversations.ts"],"names":["__export","createRoute","createConversationBodySchema","conversationObjectSchema","HTTPException","getAgentFromSystem","getAgentMemoryStore","randomUUID","getEffectiveResourceId","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"mappings":"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","file":"chunk-MNZBZOWQ.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:create',\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:delete',\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/conversations.ts"],"names":["__export","createRoute","createConversationBodySchema","conversationObjectSchema","HTTPException","getAgentFromSystem","getAgentMemoryStore","randomUUID","getEffectiveResourceId","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"mappings":"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","file":"chunk-B2OFZDJQ.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:create',\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: 'agents:delete',\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { conversationItemSchema } from './chunk-7TKB6WYH.js';
2
- import { getThreadByIdResponseSchema } from './chunk-H77IQ6X3.js';
2
+ import { getThreadByIdResponseSchema } from './chunk-VXBTV6LH.js';
3
3
  import z from 'zod';
4
4
 
5
5
  var conversationIdPathParams = z.object({
@@ -31,5 +31,5 @@ var conversationItemsListSchema = z.object({
31
31
  });
32
32
 
33
33
  export { conversationDeletedSchema, conversationIdPathParams, conversationItemsListSchema, conversationObjectSchema, createConversationBodySchema };
34
- //# sourceMappingURL=chunk-MFBT6P7Q.js.map
35
- //# sourceMappingURL=chunk-MFBT6P7Q.js.map
34
+ //# sourceMappingURL=chunk-DGS7O6Q7.js.map
35
+ //# sourceMappingURL=chunk-DGS7O6Q7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/schemas/conversations.ts"],"names":[],"mappings":";;;;AAIO,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+CAA+C;AACrF,CAAC;AAEM,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wDAAwD,CAAA;AAAA,EACtF,iBAAiB,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EACrG,aAAa,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yDAAyD,CAAA;AAAA,EACrG,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAIM,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,EAChC,MAAA,EAAQ;AACV,CAAC;AAEM,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA,EAChD,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,sBAAsB,CAAA;AAAA,EACxC,OAAA,EAAS,CAAA,CAAE,OAAA,CAAQ,IAAI;AACzB,CAAC;AAEM,IAAM,2BAAA,GAA8B,EAAE,MAAA,CAAO;AAAA,EAClD,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACxB,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,sBAAsB,CAAA;AAAA,EACpC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,QAAA,EAAU,EAAE,OAAA;AACd,CAAC","file":"chunk-MFBT6P7Q.js","sourcesContent":["import z from 'zod';\nimport { getThreadByIdResponseSchema } from './memory';\nimport { conversationItemSchema } from './responses';\n\nexport const conversationIdPathParams = z.object({\n conversationId: z.string().describe('Unique identifier for the conversation thread'),\n});\n\nexport const createConversationBodySchema = z.object({\n agent_id: z.string().describe('Mastra agent ID used to create the conversation thread'),\n conversation_id: z.string().optional().describe('Optional conversation ID to use as the raw threadId'),\n resource_id: z.string().optional().describe('Optional resource ID to associate with the conversation'),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type CreateConversationBody = z.infer<typeof createConversationBodySchema>;\n\nexport const conversationObjectSchema = z.object({\n id: z.string(),\n object: z.literal('conversation'),\n thread: getThreadByIdResponseSchema,\n});\n\nexport const conversationDeletedSchema = z.object({\n id: z.string(),\n object: z.literal('conversation.deleted'),\n deleted: z.literal(true),\n});\n\nexport const conversationItemsListSchema = z.object({\n object: z.literal('list'),\n data: z.array(conversationItemSchema),\n first_id: z.string().nullable(),\n last_id: z.string().nullable(),\n has_more: z.boolean(),\n});\n\nexport type ConversationObject = z.infer<typeof conversationObjectSchema>;\nexport type ConversationItemsList = z.infer<typeof conversationItemsListSchema>;\nexport type ConversationDeleted = z.infer<typeof conversationDeletedSchema>;\n"]}
1
+ {"version":3,"sources":["../src/server/schemas/conversations.ts"],"names":[],"mappings":";;;;AAIO,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+CAA+C;AACrF,CAAC;AAEM,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wDAAwD,CAAA;AAAA,EACtF,iBAAiB,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EACrG,aAAa,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yDAAyD,CAAA;AAAA,EACrG,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAIM,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,EAChC,MAAA,EAAQ;AACV,CAAC;AAEM,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA,EAChD,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,sBAAsB,CAAA;AAAA,EACxC,OAAA,EAAS,CAAA,CAAE,OAAA,CAAQ,IAAI;AACzB,CAAC;AAEM,IAAM,2BAAA,GAA8B,EAAE,MAAA,CAAO;AAAA,EAClD,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACxB,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,sBAAsB,CAAA;AAAA,EACpC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,QAAA,EAAU,EAAE,OAAA;AACd,CAAC","file":"chunk-DGS7O6Q7.js","sourcesContent":["import z from 'zod';\nimport { getThreadByIdResponseSchema } from './memory';\nimport { conversationItemSchema } from './responses';\n\nexport const conversationIdPathParams = z.object({\n conversationId: z.string().describe('Unique identifier for the conversation thread'),\n});\n\nexport const createConversationBodySchema = z.object({\n agent_id: z.string().describe('Mastra agent ID used to create the conversation thread'),\n conversation_id: z.string().optional().describe('Optional conversation ID to use as the raw threadId'),\n resource_id: z.string().optional().describe('Optional resource ID to associate with the conversation'),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type CreateConversationBody = z.infer<typeof createConversationBodySchema>;\n\nexport const conversationObjectSchema = z.object({\n id: z.string(),\n object: z.literal('conversation'),\n thread: getThreadByIdResponseSchema,\n});\n\nexport const conversationDeletedSchema = z.object({\n id: z.string(),\n object: z.literal('conversation.deleted'),\n deleted: z.literal(true),\n});\n\nexport const conversationItemsListSchema = z.object({\n object: z.literal('list'),\n data: z.array(conversationItemSchema),\n first_id: z.string().nullable(),\n last_id: z.string().nullable(),\n has_more: z.boolean(),\n});\n\nexport type ConversationObject = z.infer<typeof conversationObjectSchema>;\nexport type ConversationItemsList = z.infer<typeof conversationItemsListSchema>;\nexport type ConversationDeleted = z.infer<typeof conversationDeletedSchema>;\n"]}
@@ -1954,7 +1954,7 @@ var ObservationStrategy = class _ObservationStrategy {
1954
1954
  static create;
1955
1955
  /**
1956
1956
  * Run the full observation lifecycle.
1957
- * @returns `true` if a full observation cycle completed; `false` if skipped (stale lock) or async-buffer failure was swallowed.
1957
+ * @returns Result with `observed` flag and optional `usage` from the observer LLM call.
1958
1958
  * @throws On sync/resource-scoped observer failure after failed markers (same as pre–Option-A contract).
1959
1959
  */
1960
1960
  async run() {
@@ -1964,7 +1964,7 @@ var ObservationStrategy = class _ObservationStrategy {
1964
1964
  if (this.needsLock) {
1965
1965
  const fresh = await this.storage.getObservationalMemory(record.threadId, record.resourceId);
1966
1966
  if (fresh?.lastObservedAt && record.lastObservedAt && fresh.lastObservedAt > record.lastObservedAt) {
1967
- return false;
1967
+ return { observed: false };
1968
1968
  }
1969
1969
  }
1970
1970
  const { messages, existingObservations } = await this.prepare();
@@ -1985,7 +1985,7 @@ var ObservationStrategy = class _ObservationStrategy {
1985
1985
  observabilityContext: this.opts.observabilityContext
1986
1986
  });
1987
1987
  }
1988
- return true;
1988
+ return { observed: true, usage: output.usage };
1989
1989
  } catch (error) {
1990
1990
  await this.emitFailedMarkers(cycleId, error);
1991
1991
  if (!this.rethrowOnFailure) {
@@ -2004,7 +2004,7 @@ var ObservationStrategy = class _ObservationStrategy {
2004
2004
  });
2005
2005
  if (abortSignal?.aborted) throw error;
2006
2006
  omError("[OM] Observation failed", error);
2007
- return false;
2007
+ return { observed: false };
2008
2008
  }
2009
2009
  omError("[OM] Observation failed", error);
2010
2010
  throw error;
@@ -5188,7 +5188,7 @@ var ReflectorRunner = class {
5188
5188
  /**
5189
5189
  * Start an async buffered reflection in the background.
5190
5190
  */
5191
- startAsyncBufferedReflection(record, observationTokens, lockKey, writer, requestContext, observabilityContext) {
5191
+ startAsyncBufferedReflection(record, observationTokens, lockKey, writer, requestContext, observabilityContext, reflectionHooks) {
5192
5192
  const bufferKey = this.buffering.getReflectionBufferKey(lockKey);
5193
5193
  if (this.buffering.isAsyncBufferingInProgress(bufferKey)) {
5194
5194
  return;
@@ -5198,7 +5198,10 @@ var ReflectorRunner = class {
5198
5198
  this.storage.setBufferingReflectionFlag(record.id, true).catch((err) => {
5199
5199
  omError("[OM] Failed to set buffering reflection flag", err);
5200
5200
  });
5201
- const asyncOp = this.doAsyncBufferedReflection(record, bufferKey, writer, requestContext, observabilityContext).catch(async (error) => {
5201
+ reflectionHooks?.onReflectionStart?.();
5202
+ const asyncOp = this.doAsyncBufferedReflection(record, bufferKey, writer, requestContext, observabilityContext).then((usage) => {
5203
+ reflectionHooks?.onReflectionEnd?.({ usage });
5204
+ }).catch(async (error) => {
5202
5205
  if (writer) {
5203
5206
  const failedMarker = createBufferingFailedMarker({
5204
5207
  cycleId: `reflect-buf-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`,
@@ -5214,6 +5217,10 @@ var ReflectorRunner = class {
5214
5217
  await this.persistMarkerToStorage(failedMarker, record.threadId ?? "", record.resourceId ?? void 0);
5215
5218
  }
5216
5219
  omError("[OM] Async buffered reflection failed", error);
5220
+ reflectionHooks?.onReflectionEnd?.({
5221
+ usage: void 0,
5222
+ error: error instanceof Error ? error : new Error(String(error))
5223
+ });
5217
5224
  BufferingCoordinator.lastBufferedBoundary.delete(bufferKey);
5218
5225
  }).finally(() => {
5219
5226
  BufferingCoordinator.asyncBufferingOps.delete(bufferKey);
@@ -5307,6 +5314,7 @@ var ReflectorRunner = class {
5307
5314
  });
5308
5315
  await this.persistMarkerToStorage(endMarker, currentRecord.threadId ?? "", currentRecord.resourceId ?? void 0);
5309
5316
  }
5317
+ return reflectResult.usage;
5310
5318
  }
5311
5319
  /**
5312
5320
  * Try to activate buffered reflection when threshold is reached.
@@ -5427,7 +5435,8 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
5427
5435
  lockKey,
5428
5436
  writer,
5429
5437
  requestContext,
5430
- observabilityContext
5438
+ observabilityContext,
5439
+ reflectionHooks
5431
5440
  );
5432
5441
  }
5433
5442
  }
@@ -5461,7 +5470,8 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
5461
5470
  lockKey,
5462
5471
  writer,
5463
5472
  requestContext,
5464
- observabilityContext
5473
+ observabilityContext,
5474
+ reflectionHooks
5465
5475
  );
5466
5476
  return;
5467
5477
  }
@@ -5500,6 +5510,8 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
5500
5510
  recordId: record.id,
5501
5511
  threadId
5502
5512
  } : void 0;
5513
+ let reflectionUsage;
5514
+ let reflectionError;
5503
5515
  try {
5504
5516
  const compressionStartLevel = await this.getCompressionStartLevel(requestContext);
5505
5517
  const reflectResult = await this.call(
@@ -5513,6 +5525,7 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
5513
5525
  requestContext,
5514
5526
  observabilityContext
5515
5527
  );
5528
+ reflectionUsage = reflectResult.usage;
5516
5529
  const reflectionTokenCount = this.tokenCounter.countObservations(reflectResult.observations);
5517
5530
  await this.storage.createReflectionGeneration({
5518
5531
  currentRecord: record,
@@ -5557,13 +5570,14 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
5557
5570
  await writer.custom(failedMarker).catch(() => {
5558
5571
  });
5559
5572
  }
5573
+ reflectionError = error instanceof Error ? error : new Error(String(error));
5560
5574
  if (abortSignal?.aborted) {
5561
5575
  throw error;
5562
5576
  }
5563
5577
  omError("[OM] Reflection failed", error);
5564
5578
  } finally {
5565
5579
  await this.storage.setReflectingFlag(record.id, false);
5566
- reflectionHooks?.onReflectionEnd?.();
5580
+ reflectionHooks?.onReflectionEnd?.({ usage: reflectionUsage, error: reflectionError });
5567
5581
  unregisterOp(record.id, "reflecting");
5568
5582
  }
5569
5583
  }
@@ -8906,6 +8920,7 @@ ${grouped}` : grouped;
8906
8920
  const lockKey = this.buffering.getLockKey(threadId, resourceId);
8907
8921
  const reflectionHooks = hooks ? { onReflectionStart: hooks.onReflectionStart, onReflectionEnd: hooks.onReflectionEnd } : void 0;
8908
8922
  let observed = false;
8923
+ let observationUsage;
8909
8924
  let generationBefore = -1;
8910
8925
  await this.withLock(lockKey, async () => {
8911
8926
  const freshRecord = await this.getOrCreateRecord(threadId, resourceId);
@@ -8922,8 +8937,9 @@ ${grouped}` : grouped;
8922
8937
  return;
8923
8938
  }
8924
8939
  hooks?.onObservationStart?.();
8940
+ let observationError;
8925
8941
  try {
8926
- observed = await ObservationStrategy.create(this, {
8942
+ const result = await ObservationStrategy.create(this, {
8927
8943
  record: freshRecord,
8928
8944
  threadId,
8929
8945
  resourceId,
@@ -8933,8 +8949,13 @@ ${grouped}` : grouped;
8933
8949
  writer: opts.writer,
8934
8950
  observabilityContext: opts.observabilityContext
8935
8951
  }).run();
8952
+ observed = result.observed;
8953
+ observationUsage = result.usage;
8954
+ } catch (error) {
8955
+ observationError = error instanceof Error ? error : new Error(String(error));
8956
+ throw error;
8936
8957
  } finally {
8937
- hooks?.onObservationEnd?.();
8958
+ hooks?.onObservationEnd?.({ usage: observationUsage, error: observationError });
8938
8959
  }
8939
8960
  });
8940
8961
  const record = await this.getOrCreateRecord(threadId, resourceId);
@@ -8955,7 +8976,7 @@ ${grouped}` : grouped;
8955
8976
  async reflect(threadId, resourceId, prompt, requestContext, observabilityContext) {
8956
8977
  const record = await this.getOrCreateRecord(threadId, resourceId);
8957
8978
  if (!record.activeObservations) {
8958
- return { reflected: false, record };
8979
+ return { reflected: false, record, usage: void 0 };
8959
8980
  }
8960
8981
  await this.storage.setReflectingFlag(record.id, true);
8961
8982
  registerOp(record.id, "reflecting");
@@ -8980,11 +9001,11 @@ ${grouped}` : grouped;
8980
9001
  tokenCount: reflectionTokenCount
8981
9002
  });
8982
9003
  const updatedRecord = await this.getOrCreateRecord(threadId, resourceId);
8983
- return { reflected: true, record: updatedRecord };
9004
+ return { reflected: true, record: updatedRecord, usage: reflectResult.usage };
8984
9005
  } catch (error) {
8985
9006
  omError("[OM] reflect() failed", error);
8986
9007
  const latestRecord = await this.getOrCreateRecord(threadId, resourceId);
8987
- return { reflected: false, record: latestRecord };
9008
+ return { reflected: false, record: latestRecord, usage: void 0 };
8988
9009
  } finally {
8989
9010
  await this.storage.setReflectingFlag(record.id, false);
8990
9011
  unregisterOp(record.id, "reflecting");
@@ -9008,9 +9029,9 @@ ${grouped}` : grouped;
9008
9029
  /**
9009
9030
  * Get observation history (previous generations)
9010
9031
  */
9011
- async getHistory(threadId, resourceId, limit) {
9032
+ async getHistory(threadId, resourceId, limit, options) {
9012
9033
  const ids = this.getStorageIds(threadId, resourceId);
9013
- return this.storage.getObservationalMemoryHistory(ids.threadId, ids.resourceId, limit);
9034
+ return this.storage.getObservationalMemoryHistory(ids.threadId, ids.resourceId, limit, options);
9014
9035
  }
9015
9036
  /**
9016
9037
  * Clear all memory for a specific thread/resource
@@ -9552,5 +9573,5 @@ function getObservationsAsOf(activeObservations, asOf) {
9552
9573
  }
9553
9574
 
9554
9575
  export { ModelByInputTokens, OBSERVER_SYSTEM_PROMPT, ObservationalMemory, ObservationalMemoryProcessor, TokenCounter, buildObserverPrompt, buildObserverSystemPrompt, combineObservationGroupRanges, deriveObservationGroupProvenance, e, estimateTokenCount, extractCurrentTask, formatMessagesForObserver, formatToolResultForObserver, getObservationsAsOf, hasCurrentTaskSection, injectAnchorIds, optimizeObservationsForContext, parseAnchorId, parseObservationGroups, parseObserverOutput, reconcileObservationGroupsFromReflection, renderObservationGroupsForReflection, resolveToolResultValue, stripEphemeralAnchorIds, stripObservationGroups, truncateStringByTokens, wrapInObservationGroup };
9555
- //# sourceMappingURL=chunk-O2RWEEZ3.js.map
9556
- //# sourceMappingURL=chunk-O2RWEEZ3.js.map
9576
+ //# sourceMappingURL=chunk-FLGIOJA5.js.map
9577
+ //# sourceMappingURL=chunk-FLGIOJA5.js.map