@mastra/server 1.68.0-alpha.9 → 1.68.0

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 (102) hide show
  1. package/dist/_types/@internal_core/dist/storage/index.d.ts +2 -0
  2. package/dist/{api-schema-manifest-Do3IMTk8.js → api-schema-manifest-DRBrp4e0.js} +2 -2
  3. package/dist/{api-schema-manifest-Do3IMTk8.js.map → api-schema-manifest-DRBrp4e0.js.map} +1 -1
  4. package/dist/{api-schema-manifest-CroMayrL.cjs → api-schema-manifest-hEcC_Jev.cjs} +2 -2
  5. package/dist/{api-schema-manifest-CroMayrL.cjs.map → api-schema-manifest-hEcC_Jev.cjs.map} +1 -1
  6. package/dist/{builder-registry-DYGJZJTi.cjs → builder-registry-BtwztV7s.cjs} +2 -2
  7. package/dist/{builder-registry-DYGJZJTi.cjs.map → builder-registry-BtwztV7s.cjs.map} +1 -1
  8. package/dist/{builder-registry-D6MI5ZLX.js → builder-registry-CZW_Z4DV.js} +2 -2
  9. package/dist/{builder-registry-D6MI5ZLX.js.map → builder-registry-CZW_Z4DV.js.map} +1 -1
  10. package/dist/{conversations-DzzjfNa9.js → conversations-BQSekCFg.js} +2 -2
  11. package/dist/{conversations-DzzjfNa9.js.map → conversations-BQSekCFg.js.map} +1 -1
  12. package/dist/{conversations-DHgZXodJ.cjs → conversations-X5vg7ZxV.cjs} +2 -2
  13. package/dist/{conversations-DHgZXodJ.cjs.map → conversations-X5vg7ZxV.cjs.map} +1 -1
  14. package/dist/{datasets-DOZwJ68z.cjs → datasets-DNNuDeQ2.cjs} +36 -10
  15. package/dist/datasets-DNNuDeQ2.cjs.map +1 -0
  16. package/dist/{datasets-DfMv5GX5.js → datasets-L8o0f3nY.js} +36 -10
  17. package/dist/datasets-L8o0f3nY.js.map +1 -0
  18. package/dist/docs/SKILL.md +2 -2
  19. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  20. package/dist/docs/references/reference-observability-tracing-trace-query.md +78 -8
  21. package/dist/{memory-CxfzZmoW.js → memory-CZT-ptes.js} +6 -2
  22. package/dist/memory-CZT-ptes.js.map +1 -0
  23. package/dist/{memory-BNvFGYtR.cjs → memory-D2TG_RVj.cjs} +6 -2
  24. package/dist/memory-D2TG_RVj.cjs.map +1 -0
  25. package/dist/{observability-new-endpoints-BUC8-mAb.cjs → observability-new-endpoints-CDrOjmJw.cjs} +26 -4
  26. package/dist/observability-new-endpoints-CDrOjmJw.cjs.map +1 -0
  27. package/dist/{observability-new-endpoints-CZyppvEy.js → observability-new-endpoints-CWfdrnzJ.js} +27 -5
  28. package/dist/observability-new-endpoints-CWfdrnzJ.js.map +1 -0
  29. package/dist/{routes-lrn-E0Lg.cjs → routes-C_j75KdR.cjs} +3 -3
  30. package/dist/{routes-lrn-E0Lg.cjs.map → routes-C_j75KdR.cjs.map} +1 -1
  31. package/dist/{routes-BiWaSmd-.js → routes-DOL9nlPr.js} +3 -3
  32. package/dist/{routes-BiWaSmd-.js.map → routes-DOL9nlPr.js.map} +1 -1
  33. package/dist/server/handlers/agent-controller.cjs +1 -1
  34. package/dist/server/handlers/agent-controller.js +1 -1
  35. package/dist/server/handlers/agents.cjs +1 -1
  36. package/dist/server/handlers/agents.js +1 -1
  37. package/dist/server/handlers/auth.cjs +1 -4
  38. package/dist/server/handlers/auth.cjs.map +1 -1
  39. package/dist/server/handlers/auth.d.ts.map +1 -1
  40. package/dist/server/handlers/auth.js +1 -4
  41. package/dist/server/handlers/auth.js.map +1 -1
  42. package/dist/server/handlers/builder-registry.cjs +1 -1
  43. package/dist/server/handlers/builder-registry.js +1 -1
  44. package/dist/server/handlers/conversations.cjs +1 -1
  45. package/dist/server/handlers/conversations.js +1 -1
  46. package/dist/server/handlers/datasets.cjs +15 -10
  47. package/dist/server/handlers/datasets.cjs.map +1 -1
  48. package/dist/server/handlers/datasets.d.ts +204 -0
  49. package/dist/server/handlers/datasets.d.ts.map +1 -1
  50. package/dist/server/handlers/datasets.js +15 -10
  51. package/dist/server/handlers/datasets.js.map +1 -1
  52. package/dist/server/handlers/memory.cjs +1 -1
  53. package/dist/server/handlers/memory.d.ts +16 -0
  54. package/dist/server/handlers/memory.d.ts.map +1 -1
  55. package/dist/server/handlers/memory.js +1 -1
  56. package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
  57. package/dist/server/handlers/observability-new-endpoints.d.ts +118 -0
  58. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  59. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  60. package/dist/server/handlers/observability.cjs +1 -1
  61. package/dist/server/handlers/observability.js +1 -1
  62. package/dist/server/handlers/stored-agents.cjs +1 -1
  63. package/dist/server/handlers/stored-agents.js +1 -1
  64. package/dist/server/handlers/system.cjs +1 -1
  65. package/dist/server/handlers/system.js +1 -1
  66. package/dist/server/handlers/workspace.cjs +1 -1
  67. package/dist/server/handlers/workspace.d.ts +12 -12
  68. package/dist/server/handlers/workspace.js +1 -1
  69. package/dist/server/schemas/datasets.d.ts +82 -0
  70. package/dist/server/schemas/datasets.d.ts.map +1 -1
  71. package/dist/server/schemas/index.cjs +4 -4
  72. package/dist/server/schemas/index.js +4 -4
  73. package/dist/server/schemas/memory.d.ts +4 -0
  74. package/dist/server/schemas/memory.d.ts.map +1 -1
  75. package/dist/server/schemas/workspace.d.ts +6 -6
  76. package/dist/server/schemas/workspace.d.ts.map +1 -1
  77. package/dist/server/server-adapter/index.cjs +2 -1
  78. package/dist/server/server-adapter/index.cjs.map +1 -1
  79. package/dist/server/server-adapter/index.d.ts +1 -0
  80. package/dist/server/server-adapter/index.d.ts.map +1 -1
  81. package/dist/server/server-adapter/index.js +2 -2
  82. package/dist/server/server-adapter/index.js.map +1 -1
  83. package/dist/server/server-adapter/routes/datasets.d.ts +204 -0
  84. package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
  85. package/dist/server/server-adapter/routes/memory.d.ts +16 -0
  86. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  87. package/dist/server/server-adapter/routes/observability.d.ts +59 -0
  88. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  89. package/dist/server/server-adapter/routes/workspace.d.ts +6 -6
  90. package/dist/{workspace-Cz9hE2ei.cjs → workspace-BE_j73fm.cjs} +21 -7
  91. package/dist/workspace-BE_j73fm.cjs.map +1 -0
  92. package/dist/{workspace-S5GiJ3Nx.js → workspace-SmQR_sZ4.js} +21 -7
  93. package/dist/workspace-SmQR_sZ4.js.map +1 -0
  94. package/package.json +9 -9
  95. package/dist/datasets-DOZwJ68z.cjs.map +0 -1
  96. package/dist/datasets-DfMv5GX5.js.map +0 -1
  97. package/dist/memory-BNvFGYtR.cjs.map +0 -1
  98. package/dist/memory-CxfzZmoW.js.map +0 -1
  99. package/dist/observability-new-endpoints-BUC8-mAb.cjs.map +0 -1
  100. package/dist/observability-new-endpoints-CZyppvEy.js.map +0 -1
  101. package/dist/workspace-Cz9hE2ei.cjs.map +0 -1
  102. package/dist/workspace-S5GiJ3Nx.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-CZT-ptes.js","names":[],"sources":["../src/server/schemas/memory.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { paginationInfoSchema, createPagePaginationSchema, successResponseSchema } from './common';\nimport { lastMessagesSchema, messageHistorySchema } from './message-history';\n\n// Path parameter schemas\nexport const threadIdPathParams = z.object({\n threadId: z.string().describe('Unique identifier for the conversation thread'),\n});\n\n/**\n * Common query parameter: required agent ID\n */\nexport const agentIdQuerySchema = z.object({\n agentId: z.string(),\n});\n\n/**\n * Common query parameter: optional agent ID\n * Used for read operations that can fall back to storage when agentId is not provided\n */\nexport const optionalAgentIdQuerySchema = z.object({\n agentId: z.string().optional(),\n});\n\n/**\n * Storage order by configuration for threads and agents (have both createdAt and updatedAt)\n * Handles JSON parsing from query strings.\n *\n * The inner object is wrapped in `.optional()` so the preprocess can yield\n * `undefined` (e.g. when a legacy client sends a bare string like\n * `?orderBy=updatedAt`) without tripping a \"expected object, received undefined\"\n * Zod error. Without that inner `.optional()`, valid optional query usage\n * regresses into a hard 400.\n */\nconst storageOrderBySchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n return undefined;\n }\n }\n return val;\n },\n z\n .object({\n field: z.enum(['createdAt', 'updatedAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n })\n .optional(),\n )\n .optional();\n\n/**\n * Storage order by configuration for messages (only have createdAt)\n * Handles JSON parsing from query strings. See `storageOrderBySchema` for why\n * the inner object schema is also `.optional()`.\n */\nexport const messageOrderBySchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n return undefined;\n }\n }\n return val;\n },\n z\n .object({\n field: z.enum(['createdAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n })\n .optional(),\n )\n .optional();\n\n/**\n * Include schema for message listing - handles JSON parsing from query strings\n */\nexport const includeSchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.array will reject string type)\n return val;\n }\n }\n return val;\n },\n z.array(\n z.object({\n id: z.string(),\n threadId: z.string().optional(),\n withPreviousMessages: z.number().optional(),\n withNextMessages: z.number().optional(),\n }),\n ),\n )\n .optional();\n\nconst metadataFilterValueSchema = z.union([z.string(), z.number().finite(), z.boolean(), z.null()]);\nconst metadataFilterKeySchema = z\n .string()\n .max(128)\n .regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/)\n .refine(key => !['__proto__', 'prototype', 'constructor'].includes(key));\n\n/**\n * Metadata filters are deliberately shallow scalar maps so storage adapters can\n * apply exact-match AND semantics consistently.\n */\nconst metadataFilterSchema = z.record(metadataFilterKeySchema, metadataFilterValueSchema);\n\n/**\n * Filter schema for message listing - handles JSON parsing from query strings\n */\nexport const filterSchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.object will reject string type)\n return val;\n }\n }\n return val;\n },\n z.object({\n dateRange: z\n .object({\n start: z.coerce.date().optional(),\n end: z.coerce.date().optional(),\n startExclusive: z.boolean().optional(),\n endExclusive: z.boolean().optional(),\n })\n .optional(),\n roles: z.array(z.string()).optional(),\n metadata: metadataFilterSchema.optional(),\n }),\n )\n .optional();\n\n/**\n * Memory config schema - handles JSON parsing from query strings\n */\nconst memoryConfigSchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.record will reject string type)\n return val;\n }\n }\n return val;\n },\n z.record(z.string(), z.unknown()),\n )\n .optional();\n\n/**\n * Thread object structure\n */\nconst threadSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n resourceId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Message structure for storage\n * Extends coreMessageSchema with storage-specific fields\n */\nconst messageSchema = z.unknown();\n// const messageSchema = coreMessageSchema.extend({\n// id: z.string(),\n// createdAt: z.coerce.date(),\n// threadId: z.string().optional(),\n// resourceId: z.string().optional(),\n// });\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\n/**\n * GET /api/memory/status\n * Includes optional resourceId and threadId for OM status lookup\n */\nexport const getMemoryStatusQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n});\n\n/**\n * GET /memory/config\n */\nexport const getMemoryConfigQuerySchema = agentIdQuerySchema;\n\n/**\n * Inner schema for GET /memory/threads. The outer `listThreadsQuerySchema`\n * wraps this with a back-compat preprocess (see below) that rewrites the\n * legacy `?orderBy=<field>&sortDirection=<dir>` shape — emitted by\n * `@mastra/client-js` < 1.18 (e.g. mobile clients pinned to 1.4.x) — into the\n * current `{ orderBy: { field, direction } }` object shape.\n */\nconst listThreadsQueryInnerSchema = createPagePaginationSchema(100).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n metadata: z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.record will reject string type)\n return val;\n }\n }\n return val;\n },\n z.record(z.string(), z.unknown()),\n )\n .optional(),\n orderBy: storageOrderBySchema,\n});\n\n/**\n * GET /memory/threads\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - when omitted, returns all threads\n * metadata is optional - filters threads by metadata key-value pairs (AND logic)\n *\n * Accepts both the current shape (`orderBy[field]=...&orderBy[direction]=...`)\n * and the legacy shape used by `@mastra/client-js` < 1.18\n * (`orderBy=<field>&sortDirection=<dir>`). The legacy shape is fused into the\n * current shape before schema validation, so existing pinned clients continue\n * to work without server-side breakage.\n */\nexport const listThreadsQuerySchema = z.preprocess(val => {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) return val;\n const record = val as Record<string, unknown>;\n const rawOrderBy = record.orderBy;\n // Only rewrite the legacy bare-string shape. Object / bracket-notation /\n // JSON-stringified orderBy is left alone and handled by storageOrderBySchema.\n if (typeof rawOrderBy !== 'string') return val;\n // A JSON-stringified object is the current \"stringified\" shape, not legacy —\n // let storageOrderBySchema's preprocess parse it.\n const trimmed = rawOrderBy.trim();\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) return val;\n // Legacy shape detected: fuse into `{ field, direction }`.\n const direction = typeof record.sortDirection === 'string' ? record.sortDirection : undefined;\n const { sortDirection: _legacyDir, ...rest } = record;\n return {\n ...rest,\n orderBy: {\n field: rawOrderBy,\n ...(direction !== undefined ? { direction } : {}),\n },\n };\n}, listThreadsQueryInnerSchema);\n\n/**\n * GET /memory/threads/:threadId\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const getThreadByIdQuerySchema = optionalAgentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * GET /memory/threads/:threadId/messages\n * agentId is optional - can use storage fallback when not provided\n */\nexport const listMessagesQuerySchema = createPagePaginationSchema(40).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n orderBy: messageOrderBySchema,\n include: includeSchema,\n filter: filterSchema,\n includeSystemReminders: z\n .preprocess(val => {\n if (val === undefined) return val;\n if (val === 'true') return true;\n if (val === 'false') return false;\n return val;\n }, z.boolean())\n .optional(),\n});\n\n/**\n * GET /memory/threads/:threadId/working-memory\n */\nexport const getWorkingMemoryQuerySchema = z.object({\n agentId: z.string(),\n resourceId: z.string().optional(),\n memoryConfig: memoryConfigSchema,\n});\n\n/**\n * DELETE /memory/threads/:threadId\n * agentId is required\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteThreadQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * POST /memory/messages/delete\n * agentId is required\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteMessagesQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n// ============================================================================\n// Legacy /network Query Parameter Schemas (backward compatibility)\n// ============================================================================\n\n/**\n * GET /memory/network/status\n */\nexport const getMemoryStatusNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * GET /memory/network/threads\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - when omitted, returns all threads\n * metadata is optional - filters threads by metadata key-value pairs (AND logic)\n */\nexport const listThreadsNetworkQuerySchema = createPagePaginationSchema(100).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n metadata: z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.record will reject string type)\n return val;\n }\n }\n return val;\n },\n z.record(z.string(), z.unknown()),\n )\n .optional(),\n orderBy: storageOrderBySchema,\n});\n\n/**\n * GET /memory/network/threads/:threadId\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const getThreadByIdNetworkQuerySchema = optionalAgentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * GET /memory/network/threads/:threadId/messages\n * agentId is optional - can use storage fallback when not provided\n */\nexport const listMessagesNetworkQuerySchema = createPagePaginationSchema(40).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n orderBy: messageOrderBySchema,\n include: includeSchema,\n filter: filterSchema,\n});\n\n/**\n * POST /memory/network/save-messages\n */\nexport const saveMessagesNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * POST /memory/network/threads\n */\nexport const createThreadNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * PATCH /memory/network/threads/:threadId\n */\nexport const updateThreadNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * DELETE /memory/network/threads/:threadId\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteThreadNetworkQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * POST /memory/network/messages/delete\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteMessagesNetworkQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\n/**\n * Response for GET /memory/status\n */\nexport const memoryStatusResponseSchema = z.object({\n result: z.boolean(),\n memoryType: z.enum(['local', 'gateway']).optional(),\n observationalMemory: z\n .object({\n enabled: z.boolean(),\n hasRecord: z.boolean().optional(),\n originType: z.string().optional(),\n lastObservedAt: z.date().optional(),\n tokenCount: z.number().optional(),\n observationTokenCount: z.number().optional(),\n isObserving: z.boolean().optional(),\n isReflecting: z.boolean().optional(),\n })\n .optional(),\n});\n\n/**\n * Observational Memory config schema for API responses\n */\nconst observationalMemoryModelRoutingSchema = z.array(\n z.object({\n upTo: z.number(),\n model: z.string(),\n }),\n);\n\nconst observationalMemoryConfigSchema = z.object({\n enabled: z.boolean(),\n scope: z.enum(['thread', 'resource']).optional(),\n shareTokenBudget: z.boolean().optional(),\n messageTokens: z.union([z.number(), z.object({ min: z.number(), max: z.number() })]).optional(),\n observationTokens: z.union([z.number(), z.object({ min: z.number(), max: z.number() })]).optional(),\n observationModel: z.string().optional(),\n reflectionModel: z.string().optional(),\n observationModelRouting: observationalMemoryModelRoutingSchema.optional(),\n reflectionModelRouting: observationalMemoryModelRoutingSchema.optional(),\n});\n\n/**\n * Response for GET /memory/config\n * MemoryConfig is complex with many optional fields - using passthrough\n */\nexport const memoryConfigResponseSchema = z.object({\n memoryType: z.enum(['local', 'gateway']).optional(),\n config: z\n .object({\n lastMessages: lastMessagesSchema.optional(),\n messageHistory: messageHistorySchema.optional(),\n semanticRecall: z.union([z.boolean(), z.unknown()]).optional(),\n workingMemory: z\n .object({\n enabled: z.boolean().optional(),\n scope: z.enum(['thread', 'resource']).optional(),\n template: z.string().optional(),\n schema: z.unknown().optional(),\n version: z.enum(['stable', 'vnext']).optional(),\n })\n .passthrough() // WorkingMemory has additional experimental fields (useStateSignals, agentManaged)\n .optional(),\n observationalMemory: observationalMemoryConfigSchema.optional(),\n })\n .nullable(),\n});\n\n/**\n * Response for GET /memory/threads\n */\nexport const listThreadsResponseSchema = paginationInfoSchema.extend({\n threads: z.array(threadSchema),\n});\n\n/**\n * Response for GET /memory/threads/:threadId\n */\nexport const getThreadByIdResponseSchema = threadSchema;\n\n/**\n * Response for GET /memory/threads/:threadId/messages\n */\nexport const listMessagesResponseSchema = z.object({\n messages: z.array(messageSchema),\n uiMessages: z.array(z.unknown()).nullable(), // Converted messages in UI format\n // Absent on the gateway path, which has no page metadata to report.\n total: z.number().optional(),\n page: z.number().optional(),\n perPage: z.union([z.number(), z.literal(false)]).optional(),\n hasMore: z.boolean().optional(),\n});\n\n/**\n * Response for GET /memory/threads/:threadId/working-memory\n */\nexport const getWorkingMemoryResponseSchema = z.object({\n workingMemory: z.unknown().nullable(), // Can be string or structured object depending on template\n source: z.enum(['thread', 'resource']),\n workingMemoryTemplate: z.unknown().nullable(), // Template structure varies\n threadExists: z.boolean(),\n});\n\n// ============================================================================\n// Body Parameter Schemas for POST/PUT/DELETE\n// ============================================================================\n\n/**\n * Body schema for POST /memory/messages\n */\nexport const saveMessagesBodySchema = z.object({\n messages: z.array(messageSchema),\n});\n\n/**\n * Body schema for POST /memory/threads\n */\nexport const createThreadBodySchema = z.object({\n resourceId: z.string(),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n threadId: z.string().optional(),\n});\n\n/**\n * Body schema for PUT /memory/threads/:threadId\n */\nexport const updateThreadBodySchema = z.object({\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n});\n\n/**\n * Body schema for POST /memory/threads/:threadId/transfer\n * Reassigns the thread (and its messages) to a different resource.\n */\nexport const transferThreadBodySchema = z.object({\n resourceId: z.string().min(1),\n});\n\n/**\n * Response schema for POST /memory/threads/:threadId/transfer\n */\nexport const transferThreadResponseSchema = threadSchema;\n\n/**\n * Body schema for PUT /memory/threads/:threadId/working-memory\n */\nexport const updateWorkingMemoryBodySchema = z.object({\n workingMemory: z.string(),\n resourceId: z.string().optional(),\n memoryConfig: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Body schema for POST /memory/messages/delete\n * Accepts: string | string[] | { id: string } | { id: string }[]\n */\nexport const deleteMessagesBodySchema = z.object({\n messageIds: z.union([\n z.string(),\n z.array(z.string()),\n z.object({ id: z.string() }),\n z.array(z.object({ id: z.string() })),\n ]),\n});\n\n/**\n * Query schema for GET /memory/search\n */\nexport const searchMemoryQuerySchema = z.object({\n agentId: z.string(),\n searchQuery: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n limit: z.coerce.number().optional().default(20),\n memoryConfig: memoryConfigSchema,\n});\n\n/**\n * Response schemas\n */\nexport const saveMessagesResponseSchema = z.object({\n messages: z.array(messageSchema),\n});\n\nexport const deleteThreadResponseSchema = z.object({\n result: z.string(),\n});\n\nexport const updateWorkingMemoryResponseSchema = successResponseSchema;\n\nexport const deleteMessagesResponseSchema = successResponseSchema.extend({\n message: z.string(),\n});\n\nexport const searchMemoryResponseSchema = z.object({\n results: z.array(z.unknown()),\n count: z.number(),\n query: z.string(),\n searchScope: z.string().optional(),\n searchType: z.string().optional(),\n});\n\n/**\n * Body schema for POST /memory/threads/:threadId/clone\n */\nexport const cloneThreadBodySchema = z.object({\n newThreadId: z.string().optional(),\n resourceId: z.string().optional(),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n options: z\n .object({\n messageLimit: z.number().optional(),\n messageFilter: z\n .object({\n startDate: z.coerce.date().optional(),\n endDate: z.coerce.date().optional(),\n messageIds: z.array(z.string()).optional(),\n })\n .optional(),\n })\n .optional(),\n});\n\n/**\n * Response schema for POST /memory/threads/:threadId/clone\n */\nexport const cloneThreadResponseSchema = z.object({\n thread: threadSchema,\n clonedMessages: z.array(messageSchema),\n});\n\n// ============================================================================\n// Observational Memory Schemas\n// ============================================================================\n\n/**\n * Query schema for GET /api/memory/observational-memory\n */\nexport const getObservationalMemoryQuerySchema = z.object({\n agentId: z.string(),\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n from: z.coerce.date().optional(),\n to: z.coerce.date().optional(),\n offset: z.coerce.number().int().min(0).optional(),\n limit: z.coerce.number().int().min(1).optional(),\n});\n\n/**\n * Observational Memory record schema for API responses\n * Matches the ObservationalMemoryRecord type from @mastra/core/storage\n */\nconst bufferedObservationChunkSchema = z.object({\n id: z.string().optional(),\n cycleId: z.string(),\n observations: z.string(),\n tokenCount: z.number(),\n messageIds: z.array(z.string()).optional(),\n messageTokens: z.number(),\n lastObservedAt: z.date().optional(),\n createdAt: z.date().optional(),\n suggestedContinuation: z.string().optional(),\n currentTask: z.string().optional(),\n threadTitle: z.string().optional(),\n extractedValues: z.record(z.string(), z.unknown()).optional(),\n extractionFailures: z.array(z.object({ slug: z.string(), error: z.string() })).optional(),\n});\n\nconst observationalMemoryRecordSchema = z.object({\n id: z.string(),\n scope: z.enum(['thread', 'resource']),\n resourceId: z.string(),\n threadId: z.string().nullable(),\n activeObservations: z.string(),\n bufferedObservations: z.string().optional(),\n bufferedObservationChunks: z.array(bufferedObservationChunkSchema).optional(),\n bufferedReflection: z.string().optional(),\n originType: z.enum(['initial', 'observation', 'reflection']),\n generationCount: z.number(),\n lastObservedAt: z.date().optional(),\n totalTokensObserved: z.number(),\n observationTokenCount: z.number(),\n pendingMessageTokens: z.number(),\n isObserving: z.boolean(),\n isReflecting: z.boolean(),\n config: z.record(z.string(), z.unknown()),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\n/**\n * Response schema for GET /api/memory/observational-memory\n */\nexport const getObservationalMemoryResponseSchema = z.object({\n record: observationalMemoryRecordSchema.nullable(),\n history: z.array(observationalMemoryRecordSchema).optional(),\n});\n\n/**\n * Body schema for POST /api/memory/observational-memory/buffer-status\n */\nexport const awaitBufferStatusBodySchema = z.object({\n agentId: z.string(),\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n});\n\n/**\n * Response schema for POST /api/memory/observational-memory/buffer-status\n */\nexport const awaitBufferStatusResponseSchema = z.object({\n record: observationalMemoryRecordSchema.nullable(),\n});\n"],"mappings":"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"}
@@ -375,7 +375,11 @@ const getThreadByIdResponseSchema = threadSchema;
375
375
  */
376
376
  const listMessagesResponseSchema = zod_v4.z.object({
377
377
  messages: zod_v4.z.array(messageSchema),
378
- uiMessages: zod_v4.z.array(zod_v4.z.unknown()).nullable()
378
+ uiMessages: zod_v4.z.array(zod_v4.z.unknown()).nullable(),
379
+ total: zod_v4.z.number().optional(),
380
+ page: zod_v4.z.number().optional(),
381
+ perPage: zod_v4.z.union([zod_v4.z.number(), zod_v4.z.literal(false)]).optional(),
382
+ hasMore: zod_v4.z.boolean().optional()
379
383
  });
380
384
  /**
381
385
  * Response for GET /memory/threads/:threadId/working-memory
@@ -852,4 +856,4 @@ Object.defineProperty(exports, "updateWorkingMemoryResponseSchema", {
852
856
  }
853
857
  });
854
858
 
855
- //# sourceMappingURL=memory-BNvFGYtR.cjs.map
859
+ //# sourceMappingURL=memory-D2TG_RVj.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-D2TG_RVj.cjs","names":["z","createPagePaginationSchema","lastMessagesSchema","messageHistorySchema","paginationInfoSchema","successResponseSchema"],"sources":["../src/server/schemas/memory.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { paginationInfoSchema, createPagePaginationSchema, successResponseSchema } from './common';\nimport { lastMessagesSchema, messageHistorySchema } from './message-history';\n\n// Path parameter schemas\nexport const threadIdPathParams = z.object({\n threadId: z.string().describe('Unique identifier for the conversation thread'),\n});\n\n/**\n * Common query parameter: required agent ID\n */\nexport const agentIdQuerySchema = z.object({\n agentId: z.string(),\n});\n\n/**\n * Common query parameter: optional agent ID\n * Used for read operations that can fall back to storage when agentId is not provided\n */\nexport const optionalAgentIdQuerySchema = z.object({\n agentId: z.string().optional(),\n});\n\n/**\n * Storage order by configuration for threads and agents (have both createdAt and updatedAt)\n * Handles JSON parsing from query strings.\n *\n * The inner object is wrapped in `.optional()` so the preprocess can yield\n * `undefined` (e.g. when a legacy client sends a bare string like\n * `?orderBy=updatedAt`) without tripping a \"expected object, received undefined\"\n * Zod error. Without that inner `.optional()`, valid optional query usage\n * regresses into a hard 400.\n */\nconst storageOrderBySchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n return undefined;\n }\n }\n return val;\n },\n z\n .object({\n field: z.enum(['createdAt', 'updatedAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n })\n .optional(),\n )\n .optional();\n\n/**\n * Storage order by configuration for messages (only have createdAt)\n * Handles JSON parsing from query strings. See `storageOrderBySchema` for why\n * the inner object schema is also `.optional()`.\n */\nexport const messageOrderBySchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n return undefined;\n }\n }\n return val;\n },\n z\n .object({\n field: z.enum(['createdAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n })\n .optional(),\n )\n .optional();\n\n/**\n * Include schema for message listing - handles JSON parsing from query strings\n */\nexport const includeSchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.array will reject string type)\n return val;\n }\n }\n return val;\n },\n z.array(\n z.object({\n id: z.string(),\n threadId: z.string().optional(),\n withPreviousMessages: z.number().optional(),\n withNextMessages: z.number().optional(),\n }),\n ),\n )\n .optional();\n\nconst metadataFilterValueSchema = z.union([z.string(), z.number().finite(), z.boolean(), z.null()]);\nconst metadataFilterKeySchema = z\n .string()\n .max(128)\n .regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/)\n .refine(key => !['__proto__', 'prototype', 'constructor'].includes(key));\n\n/**\n * Metadata filters are deliberately shallow scalar maps so storage adapters can\n * apply exact-match AND semantics consistently.\n */\nconst metadataFilterSchema = z.record(metadataFilterKeySchema, metadataFilterValueSchema);\n\n/**\n * Filter schema for message listing - handles JSON parsing from query strings\n */\nexport const filterSchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.object will reject string type)\n return val;\n }\n }\n return val;\n },\n z.object({\n dateRange: z\n .object({\n start: z.coerce.date().optional(),\n end: z.coerce.date().optional(),\n startExclusive: z.boolean().optional(),\n endExclusive: z.boolean().optional(),\n })\n .optional(),\n roles: z.array(z.string()).optional(),\n metadata: metadataFilterSchema.optional(),\n }),\n )\n .optional();\n\n/**\n * Memory config schema - handles JSON parsing from query strings\n */\nconst memoryConfigSchema = z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.record will reject string type)\n return val;\n }\n }\n return val;\n },\n z.record(z.string(), z.unknown()),\n )\n .optional();\n\n/**\n * Thread object structure\n */\nconst threadSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n resourceId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Message structure for storage\n * Extends coreMessageSchema with storage-specific fields\n */\nconst messageSchema = z.unknown();\n// const messageSchema = coreMessageSchema.extend({\n// id: z.string(),\n// createdAt: z.coerce.date(),\n// threadId: z.string().optional(),\n// resourceId: z.string().optional(),\n// });\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\n/**\n * GET /api/memory/status\n * Includes optional resourceId and threadId for OM status lookup\n */\nexport const getMemoryStatusQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n});\n\n/**\n * GET /memory/config\n */\nexport const getMemoryConfigQuerySchema = agentIdQuerySchema;\n\n/**\n * Inner schema for GET /memory/threads. The outer `listThreadsQuerySchema`\n * wraps this with a back-compat preprocess (see below) that rewrites the\n * legacy `?orderBy=<field>&sortDirection=<dir>` shape — emitted by\n * `@mastra/client-js` < 1.18 (e.g. mobile clients pinned to 1.4.x) — into the\n * current `{ orderBy: { field, direction } }` object shape.\n */\nconst listThreadsQueryInnerSchema = createPagePaginationSchema(100).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n metadata: z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.record will reject string type)\n return val;\n }\n }\n return val;\n },\n z.record(z.string(), z.unknown()),\n )\n .optional(),\n orderBy: storageOrderBySchema,\n});\n\n/**\n * GET /memory/threads\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - when omitted, returns all threads\n * metadata is optional - filters threads by metadata key-value pairs (AND logic)\n *\n * Accepts both the current shape (`orderBy[field]=...&orderBy[direction]=...`)\n * and the legacy shape used by `@mastra/client-js` < 1.18\n * (`orderBy=<field>&sortDirection=<dir>`). The legacy shape is fused into the\n * current shape before schema validation, so existing pinned clients continue\n * to work without server-side breakage.\n */\nexport const listThreadsQuerySchema = z.preprocess(val => {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) return val;\n const record = val as Record<string, unknown>;\n const rawOrderBy = record.orderBy;\n // Only rewrite the legacy bare-string shape. Object / bracket-notation /\n // JSON-stringified orderBy is left alone and handled by storageOrderBySchema.\n if (typeof rawOrderBy !== 'string') return val;\n // A JSON-stringified object is the current \"stringified\" shape, not legacy —\n // let storageOrderBySchema's preprocess parse it.\n const trimmed = rawOrderBy.trim();\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) return val;\n // Legacy shape detected: fuse into `{ field, direction }`.\n const direction = typeof record.sortDirection === 'string' ? record.sortDirection : undefined;\n const { sortDirection: _legacyDir, ...rest } = record;\n return {\n ...rest,\n orderBy: {\n field: rawOrderBy,\n ...(direction !== undefined ? { direction } : {}),\n },\n };\n}, listThreadsQueryInnerSchema);\n\n/**\n * GET /memory/threads/:threadId\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const getThreadByIdQuerySchema = optionalAgentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * GET /memory/threads/:threadId/messages\n * agentId is optional - can use storage fallback when not provided\n */\nexport const listMessagesQuerySchema = createPagePaginationSchema(40).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n orderBy: messageOrderBySchema,\n include: includeSchema,\n filter: filterSchema,\n includeSystemReminders: z\n .preprocess(val => {\n if (val === undefined) return val;\n if (val === 'true') return true;\n if (val === 'false') return false;\n return val;\n }, z.boolean())\n .optional(),\n});\n\n/**\n * GET /memory/threads/:threadId/working-memory\n */\nexport const getWorkingMemoryQuerySchema = z.object({\n agentId: z.string(),\n resourceId: z.string().optional(),\n memoryConfig: memoryConfigSchema,\n});\n\n/**\n * DELETE /memory/threads/:threadId\n * agentId is required\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteThreadQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * POST /memory/messages/delete\n * agentId is required\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteMessagesQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n// ============================================================================\n// Legacy /network Query Parameter Schemas (backward compatibility)\n// ============================================================================\n\n/**\n * GET /memory/network/status\n */\nexport const getMemoryStatusNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * GET /memory/network/threads\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - when omitted, returns all threads\n * metadata is optional - filters threads by metadata key-value pairs (AND logic)\n */\nexport const listThreadsNetworkQuerySchema = createPagePaginationSchema(100).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n metadata: z\n .preprocess(\n val => {\n if (val === undefined) return val;\n if (typeof val === 'string') {\n try {\n return JSON.parse(val);\n } catch {\n // Return invalid string to fail validation (z.record will reject string type)\n return val;\n }\n }\n return val;\n },\n z.record(z.string(), z.unknown()),\n )\n .optional(),\n orderBy: storageOrderBySchema,\n});\n\n/**\n * GET /memory/network/threads/:threadId\n * agentId is optional - can use storage fallback when not provided\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const getThreadByIdNetworkQuerySchema = optionalAgentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * GET /memory/network/threads/:threadId/messages\n * agentId is optional - can use storage fallback when not provided\n */\nexport const listMessagesNetworkQuerySchema = createPagePaginationSchema(40).extend({\n agentId: z.string().optional(),\n resourceId: z.string().optional(),\n orderBy: messageOrderBySchema,\n include: includeSchema,\n filter: filterSchema,\n});\n\n/**\n * POST /memory/network/save-messages\n */\nexport const saveMessagesNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * POST /memory/network/threads\n */\nexport const createThreadNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * PATCH /memory/network/threads/:threadId\n */\nexport const updateThreadNetworkQuerySchema = agentIdQuerySchema;\n\n/**\n * DELETE /memory/network/threads/:threadId\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteThreadNetworkQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n/**\n * POST /memory/network/messages/delete\n * resourceId is optional - used for ownership validation fallback when not set via middleware\n */\nexport const deleteMessagesNetworkQuerySchema = agentIdQuerySchema.extend({\n resourceId: z.string().optional(),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\n/**\n * Response for GET /memory/status\n */\nexport const memoryStatusResponseSchema = z.object({\n result: z.boolean(),\n memoryType: z.enum(['local', 'gateway']).optional(),\n observationalMemory: z\n .object({\n enabled: z.boolean(),\n hasRecord: z.boolean().optional(),\n originType: z.string().optional(),\n lastObservedAt: z.date().optional(),\n tokenCount: z.number().optional(),\n observationTokenCount: z.number().optional(),\n isObserving: z.boolean().optional(),\n isReflecting: z.boolean().optional(),\n })\n .optional(),\n});\n\n/**\n * Observational Memory config schema for API responses\n */\nconst observationalMemoryModelRoutingSchema = z.array(\n z.object({\n upTo: z.number(),\n model: z.string(),\n }),\n);\n\nconst observationalMemoryConfigSchema = z.object({\n enabled: z.boolean(),\n scope: z.enum(['thread', 'resource']).optional(),\n shareTokenBudget: z.boolean().optional(),\n messageTokens: z.union([z.number(), z.object({ min: z.number(), max: z.number() })]).optional(),\n observationTokens: z.union([z.number(), z.object({ min: z.number(), max: z.number() })]).optional(),\n observationModel: z.string().optional(),\n reflectionModel: z.string().optional(),\n observationModelRouting: observationalMemoryModelRoutingSchema.optional(),\n reflectionModelRouting: observationalMemoryModelRoutingSchema.optional(),\n});\n\n/**\n * Response for GET /memory/config\n * MemoryConfig is complex with many optional fields - using passthrough\n */\nexport const memoryConfigResponseSchema = z.object({\n memoryType: z.enum(['local', 'gateway']).optional(),\n config: z\n .object({\n lastMessages: lastMessagesSchema.optional(),\n messageHistory: messageHistorySchema.optional(),\n semanticRecall: z.union([z.boolean(), z.unknown()]).optional(),\n workingMemory: z\n .object({\n enabled: z.boolean().optional(),\n scope: z.enum(['thread', 'resource']).optional(),\n template: z.string().optional(),\n schema: z.unknown().optional(),\n version: z.enum(['stable', 'vnext']).optional(),\n })\n .passthrough() // WorkingMemory has additional experimental fields (useStateSignals, agentManaged)\n .optional(),\n observationalMemory: observationalMemoryConfigSchema.optional(),\n })\n .nullable(),\n});\n\n/**\n * Response for GET /memory/threads\n */\nexport const listThreadsResponseSchema = paginationInfoSchema.extend({\n threads: z.array(threadSchema),\n});\n\n/**\n * Response for GET /memory/threads/:threadId\n */\nexport const getThreadByIdResponseSchema = threadSchema;\n\n/**\n * Response for GET /memory/threads/:threadId/messages\n */\nexport const listMessagesResponseSchema = z.object({\n messages: z.array(messageSchema),\n uiMessages: z.array(z.unknown()).nullable(), // Converted messages in UI format\n // Absent on the gateway path, which has no page metadata to report.\n total: z.number().optional(),\n page: z.number().optional(),\n perPage: z.union([z.number(), z.literal(false)]).optional(),\n hasMore: z.boolean().optional(),\n});\n\n/**\n * Response for GET /memory/threads/:threadId/working-memory\n */\nexport const getWorkingMemoryResponseSchema = z.object({\n workingMemory: z.unknown().nullable(), // Can be string or structured object depending on template\n source: z.enum(['thread', 'resource']),\n workingMemoryTemplate: z.unknown().nullable(), // Template structure varies\n threadExists: z.boolean(),\n});\n\n// ============================================================================\n// Body Parameter Schemas for POST/PUT/DELETE\n// ============================================================================\n\n/**\n * Body schema for POST /memory/messages\n */\nexport const saveMessagesBodySchema = z.object({\n messages: z.array(messageSchema),\n});\n\n/**\n * Body schema for POST /memory/threads\n */\nexport const createThreadBodySchema = z.object({\n resourceId: z.string(),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n threadId: z.string().optional(),\n});\n\n/**\n * Body schema for PUT /memory/threads/:threadId\n */\nexport const updateThreadBodySchema = z.object({\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n});\n\n/**\n * Body schema for POST /memory/threads/:threadId/transfer\n * Reassigns the thread (and its messages) to a different resource.\n */\nexport const transferThreadBodySchema = z.object({\n resourceId: z.string().min(1),\n});\n\n/**\n * Response schema for POST /memory/threads/:threadId/transfer\n */\nexport const transferThreadResponseSchema = threadSchema;\n\n/**\n * Body schema for PUT /memory/threads/:threadId/working-memory\n */\nexport const updateWorkingMemoryBodySchema = z.object({\n workingMemory: z.string(),\n resourceId: z.string().optional(),\n memoryConfig: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Body schema for POST /memory/messages/delete\n * Accepts: string | string[] | { id: string } | { id: string }[]\n */\nexport const deleteMessagesBodySchema = z.object({\n messageIds: z.union([\n z.string(),\n z.array(z.string()),\n z.object({ id: z.string() }),\n z.array(z.object({ id: z.string() })),\n ]),\n});\n\n/**\n * Query schema for GET /memory/search\n */\nexport const searchMemoryQuerySchema = z.object({\n agentId: z.string(),\n searchQuery: z.string(),\n resourceId: z.string(),\n threadId: z.string().optional(),\n limit: z.coerce.number().optional().default(20),\n memoryConfig: memoryConfigSchema,\n});\n\n/**\n * Response schemas\n */\nexport const saveMessagesResponseSchema = z.object({\n messages: z.array(messageSchema),\n});\n\nexport const deleteThreadResponseSchema = z.object({\n result: z.string(),\n});\n\nexport const updateWorkingMemoryResponseSchema = successResponseSchema;\n\nexport const deleteMessagesResponseSchema = successResponseSchema.extend({\n message: z.string(),\n});\n\nexport const searchMemoryResponseSchema = z.object({\n results: z.array(z.unknown()),\n count: z.number(),\n query: z.string(),\n searchScope: z.string().optional(),\n searchType: z.string().optional(),\n});\n\n/**\n * Body schema for POST /memory/threads/:threadId/clone\n */\nexport const cloneThreadBodySchema = z.object({\n newThreadId: z.string().optional(),\n resourceId: z.string().optional(),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n options: z\n .object({\n messageLimit: z.number().optional(),\n messageFilter: z\n .object({\n startDate: z.coerce.date().optional(),\n endDate: z.coerce.date().optional(),\n messageIds: z.array(z.string()).optional(),\n })\n .optional(),\n })\n .optional(),\n});\n\n/**\n * Response schema for POST /memory/threads/:threadId/clone\n */\nexport const cloneThreadResponseSchema = z.object({\n thread: threadSchema,\n clonedMessages: z.array(messageSchema),\n});\n\n// ============================================================================\n// Observational Memory Schemas\n// ============================================================================\n\n/**\n * Query schema for GET /api/memory/observational-memory\n */\nexport const getObservationalMemoryQuerySchema = z.object({\n agentId: z.string(),\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n from: z.coerce.date().optional(),\n to: z.coerce.date().optional(),\n offset: z.coerce.number().int().min(0).optional(),\n limit: z.coerce.number().int().min(1).optional(),\n});\n\n/**\n * Observational Memory record schema for API responses\n * Matches the ObservationalMemoryRecord type from @mastra/core/storage\n */\nconst bufferedObservationChunkSchema = z.object({\n id: z.string().optional(),\n cycleId: z.string(),\n observations: z.string(),\n tokenCount: z.number(),\n messageIds: z.array(z.string()).optional(),\n messageTokens: z.number(),\n lastObservedAt: z.date().optional(),\n createdAt: z.date().optional(),\n suggestedContinuation: z.string().optional(),\n currentTask: z.string().optional(),\n threadTitle: z.string().optional(),\n extractedValues: z.record(z.string(), z.unknown()).optional(),\n extractionFailures: z.array(z.object({ slug: z.string(), error: z.string() })).optional(),\n});\n\nconst observationalMemoryRecordSchema = z.object({\n id: z.string(),\n scope: z.enum(['thread', 'resource']),\n resourceId: z.string(),\n threadId: z.string().nullable(),\n activeObservations: z.string(),\n bufferedObservations: z.string().optional(),\n bufferedObservationChunks: z.array(bufferedObservationChunkSchema).optional(),\n bufferedReflection: z.string().optional(),\n originType: z.enum(['initial', 'observation', 'reflection']),\n generationCount: z.number(),\n lastObservedAt: z.date().optional(),\n totalTokensObserved: z.number(),\n observationTokenCount: z.number(),\n pendingMessageTokens: z.number(),\n isObserving: z.boolean(),\n isReflecting: z.boolean(),\n config: z.record(z.string(), z.unknown()),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\n/**\n * Response schema for GET /api/memory/observational-memory\n */\nexport const getObservationalMemoryResponseSchema = z.object({\n record: observationalMemoryRecordSchema.nullable(),\n history: z.array(observationalMemoryRecordSchema).optional(),\n});\n\n/**\n * Body schema for POST /api/memory/observational-memory/buffer-status\n */\nexport const awaitBufferStatusBodySchema = z.object({\n agentId: z.string(),\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n});\n\n/**\n * Response schema for POST /api/memory/observational-memory/buffer-status\n */\nexport const awaitBufferStatusResponseSchema = z.object({\n record: observationalMemoryRecordSchema.nullable(),\n});\n"],"mappings":"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"}
@@ -6,6 +6,7 @@ const require_server_handlers_error = require("./server/handlers/error.cjs");
6
6
  const require_server_handlers_observability_list_query_schemas = require("./server/handlers/observability-list-query-schemas.cjs");
7
7
  const require_server_handlers_observability_shared = require("./server/handlers/observability-shared.cjs");
8
8
  const require_server_handlers_author_enrichment = require("./server/handlers/author-enrichment.cjs");
9
+ const require_server_handlers_authorship = require("./server/handlers/authorship.cjs");
9
10
  let zod_v4 = require("zod/v4");
10
11
  let _mastra_core_storage = require("@mastra/core/storage");
11
12
  _mastra_core_storage = require_rolldown_runtime.__toESM(_mastra_core_storage, 1);
@@ -36,6 +37,8 @@ let EntityType = /* @__PURE__ */ function(EntityType) {
36
37
  EntityType["WORKFLOW_STEP"] = "workflow_step";
37
38
  /** Tool */
38
39
  EntityType["TOOL"] = "tool";
40
+ /** MCP server */
41
+ EntityType["MCP_SERVER"] = "mcp_server";
39
42
  /** Workflow */
40
43
  EntityType["WORKFLOW_RUN"] = "workflow_run";
41
44
  /** Memory */
@@ -965,17 +968,31 @@ const QUERY_TRACES = createNewRoute(require_server_handlers_observability_shared
965
968
  onValidationError: traceQueryValidationError,
966
969
  maxBodySize: 256 * 1024,
967
970
  preserveHttpExceptions: true,
968
- handler: async ({ mastra, timeRange, where, group, orderBy, page, pagination }) => {
971
+ handler: async ({ mastra, requestContext, timeRange, where, group, orderBy, page, pagination, mode, after, limit }) => {
969
972
  let plan;
970
973
  try {
974
+ const user = requestContext.get(require_constants.MASTRA_USER_KEY);
975
+ const userId = user && typeof user === "object" && "id" in user ? user.id : void 0;
976
+ const roles = requestContext.get(require_constants.MASTRA_USER_ROLES_KEY);
977
+ const authorizationBinding = mode === "delta" || pagination !== void 0 ? JSON.stringify({
978
+ userId: typeof userId === "string" || typeof userId === "number" ? userId : null,
979
+ resourceId: requestContext.get("mastra__resourceId") ?? null,
980
+ organizationId: requestContext.get("organizationId") ?? null,
981
+ authMode: requestContext.get("mastra__authMode") ?? null,
982
+ permissions: [...new Set(require_server_handlers_authorship.getCallerPermissions(requestContext))].sort(),
983
+ roles: Array.isArray(roles) ? [...new Set(roles.filter((role) => typeof role === "string"))].sort() : []
984
+ }) : void 0;
971
985
  plan = _mastra_core_storage.planTraceQuery({
972
986
  timeRange,
973
987
  where,
974
988
  group,
975
989
  orderBy,
976
990
  page,
977
- pagination
978
- });
991
+ pagination,
992
+ mode,
993
+ after,
994
+ limit
995
+ }, { authorizationBinding });
979
996
  } catch (error) {
980
997
  if (error instanceof _mastra_core_storage.TraceQueryValidationError) throwTraceQueryError(422, {
981
998
  code: error.code,
@@ -992,6 +1009,7 @@ const QUERY_TRACES = createNewRoute(require_server_handlers_observability_shared
992
1009
  try {
993
1010
  observabilityStore = await require_server_handlers_observability_shared.getObservabilityStore(mastra);
994
1011
  require_server_handlers_observability_shared.assertObservabilityTraceQuerySupported(observabilityStore);
1012
+ if (plan.paginationMode === "delta" && !observabilityStore.getFeatures()?.includes("delta-polling")) throw new require_http_exception.HTTPException(501, { message: "This storage provider does not support observability delta polling" });
995
1013
  } catch (error) {
996
1014
  if (error instanceof require_http_exception.HTTPException && error.status === 501) throwTraceQueryError(501, {
997
1015
  code: "TRACE_QUERY_UNSUPPORTED",
@@ -1002,6 +1020,10 @@ const QUERY_TRACES = createNewRoute(require_server_handlers_observability_shared
1002
1020
  try {
1003
1021
  return await observabilityStore.queryTraces(plan);
1004
1022
  } catch (error) {
1023
+ if (error instanceof _mastra_core_storage.TraceQueryCursorError) throwTraceQueryError(error.code === "TRACE_QUERY_CURSOR_CONFLICT" ? 409 : 400, {
1024
+ code: error.code,
1025
+ message: error.message
1026
+ });
1005
1027
  if (error instanceof _mastra_core_storage.TraceQueryExecutionError) throwTraceQueryError(504, {
1006
1028
  code: error.code,
1007
1029
  message: error.message
@@ -1821,4 +1843,4 @@ Object.defineProperty(exports, "UPDATE_FEEDBACK_REVIEW_STATUS", {
1821
1843
  }
1822
1844
  });
1823
1845
 
1824
- //# sourceMappingURL=observability-new-endpoints-BUC8-mAb.cjs.map
1846
+ //# sourceMappingURL=observability-new-endpoints-CDrOjmJw.cjs.map