@mastra/convex 1.3.2 → 1.4.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 (44) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.md +28 -17
  3. package/dist/{chunk-6P3LEDHY.cjs → chunk-2KILIA33.cjs} +315 -2
  4. package/dist/chunk-2KILIA33.cjs.map +1 -0
  5. package/dist/{chunk-77UWNT5X.js → chunk-MC2EQATP.js} +315 -2
  6. package/dist/chunk-MC2EQATP.js.map +1 -0
  7. package/dist/{chunk-MC75WADX.js → chunk-QWWFHN52.js} +41 -3
  8. package/dist/chunk-QWWFHN52.js.map +1 -0
  9. package/dist/{chunk-SFRHJGSM.cjs → chunk-ZCCKLZQH.cjs} +42 -2
  10. package/dist/chunk-ZCCKLZQH.cjs.map +1 -0
  11. package/dist/docs/SKILL.md +1 -1
  12. package/dist/docs/assets/SOURCE_MAP.json +41 -33
  13. package/dist/docs/references/reference-storage-convex.md +18 -11
  14. package/dist/index.cjs +586 -44
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.js +542 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/schema.cjs +38 -30
  19. package/dist/schema.d.ts +95 -1
  20. package/dist/schema.d.ts.map +1 -1
  21. package/dist/schema.js +1 -1
  22. package/dist/server/index-map.d.ts.map +1 -1
  23. package/dist/server/index.cjs +41 -33
  24. package/dist/server/index.d.ts +1 -1
  25. package/dist/server/index.d.ts.map +1 -1
  26. package/dist/server/index.js +2 -2
  27. package/dist/server/observational-memory.d.ts +52 -0
  28. package/dist/server/observational-memory.d.ts.map +1 -0
  29. package/dist/server/storage.d.ts.map +1 -1
  30. package/dist/storage/db/index.d.ts +65 -14
  31. package/dist/storage/db/index.d.ts.map +1 -1
  32. package/dist/storage/domains/memory/index.d.ts +23 -1
  33. package/dist/storage/domains/memory/index.d.ts.map +1 -1
  34. package/dist/storage/domains/schedules/index.d.ts.map +1 -1
  35. package/dist/storage/domains/scores/index.d.ts.map +1 -1
  36. package/dist/storage/types.d.ts +133 -0
  37. package/dist/storage/types.d.ts.map +1 -1
  38. package/dist/vector/index.d.ts.map +1 -1
  39. package/dist/vector/native.d.ts.map +1 -1
  40. package/package.json +11 -11
  41. package/dist/chunk-6P3LEDHY.cjs.map +0 -1
  42. package/dist/chunk-77UWNT5X.js.map +0 -1
  43. package/dist/chunk-MC75WADX.js.map +0 -1
  44. package/dist/chunk-SFRHJGSM.cjs.map +0 -1
@@ -129,6 +129,43 @@ var mastraBackgroundTasksTable = server.defineTable({
129
129
  suspendedAt: values.v.union(values.v.string(), values.v.null()),
130
130
  completedAt: values.v.union(values.v.string(), values.v.null())
131
131
  }).index("by_record_id", ["id"]).index("by_status_created", ["status", "createdAt"]).index("by_agent_status", ["agent_id", "status"]).index("by_run", ["run_id"]).index("by_tool_call", ["tool_call_id"]).index("by_thread", ["thread_id"]).index("by_resource", ["resource_id"]).index("by_tool", ["tool_name"]).index("by_created", ["createdAt"]);
132
+ var mastraObservationalMemoryTable = server.defineTable({
133
+ id: values.v.string(),
134
+ lookupKey: values.v.string(),
135
+ scope: values.v.string(),
136
+ // Nullable in core's OBSERVATIONAL_MEMORY_SCHEMA; the adapter always writes it.
137
+ resourceId: values.v.optional(values.v.union(values.v.string(), values.v.null())),
138
+ threadId: values.v.optional(values.v.union(values.v.string(), values.v.null())),
139
+ activeObservations: values.v.string(),
140
+ activeObservationsPendingUpdate: values.v.optional(values.v.union(values.v.string(), values.v.null())),
141
+ originType: values.v.string(),
142
+ config: values.v.string(),
143
+ generationCount: values.v.number(),
144
+ lastObservedAt: values.v.optional(values.v.union(values.v.string(), values.v.null())),
145
+ lastReflectionAt: values.v.optional(values.v.union(values.v.string(), values.v.null())),
146
+ pendingMessageTokens: values.v.number(),
147
+ totalTokensObserved: values.v.number(),
148
+ observationTokenCount: values.v.number(),
149
+ isObserving: values.v.boolean(),
150
+ isReflecting: values.v.boolean(),
151
+ observedMessageIds: values.v.optional(values.v.union(values.v.array(values.v.string()), values.v.null())),
152
+ observedTimezone: values.v.optional(values.v.union(values.v.string(), values.v.null())),
153
+ bufferedObservations: values.v.optional(values.v.union(values.v.string(), values.v.null())),
154
+ bufferedObservationTokens: values.v.optional(values.v.union(values.v.number(), values.v.null())),
155
+ bufferedMessageIds: values.v.optional(values.v.union(values.v.array(values.v.string()), values.v.null())),
156
+ bufferedReflection: values.v.optional(values.v.union(values.v.string(), values.v.null())),
157
+ bufferedReflectionTokens: values.v.optional(values.v.union(values.v.number(), values.v.null())),
158
+ bufferedReflectionInputTokens: values.v.optional(values.v.union(values.v.number(), values.v.null())),
159
+ reflectedObservationLineCount: values.v.optional(values.v.union(values.v.number(), values.v.null())),
160
+ bufferedObservationChunks: values.v.optional(values.v.union(values.v.string(), values.v.null())),
161
+ isBufferingObservation: values.v.boolean(),
162
+ isBufferingReflection: values.v.boolean(),
163
+ lastBufferedAtTokens: values.v.number(),
164
+ lastBufferedAtTime: values.v.optional(values.v.union(values.v.string(), values.v.null())),
165
+ metadata: values.v.optional(values.v.union(values.v.string(), values.v.null())),
166
+ createdAt: values.v.string(),
167
+ updatedAt: values.v.string()
168
+ }).index("by_record_id", ["id"]).index("by_lookup_key", ["lookupKey", "generationCount"]);
132
169
  var mastraVectorIndexesTable = server.defineTable({
133
170
  id: values.v.string(),
134
171
  // Mastra record ID (same as indexName)
@@ -191,6 +228,7 @@ var mastraDocumentsTable = server.defineTable({
191
228
  var TABLE_VECTOR_INDEXES = "mastra_vector_indexes";
192
229
  var TABLE_VECTORS = "mastra_vectors";
193
230
  var TABLE_DOCUMENTS = "mastra_documents";
231
+ var TABLE_OBSERVATIONAL_MEMORY = "mastra_observational_memory";
194
232
 
195
233
  Object.defineProperty(exports, "TABLE_BACKGROUND_TASKS", {
196
234
  enumerable: true,
@@ -233,6 +271,7 @@ Object.defineProperty(exports, "TABLE_WORKFLOW_SNAPSHOT", {
233
271
  get: function () { return constants.TABLE_WORKFLOW_SNAPSHOT; }
234
272
  });
235
273
  exports.TABLE_DOCUMENTS = TABLE_DOCUMENTS;
274
+ exports.TABLE_OBSERVATIONAL_MEMORY = TABLE_OBSERVATIONAL_MEMORY;
236
275
  exports.TABLE_VECTORS = TABLE_VECTORS;
237
276
  exports.TABLE_VECTOR_INDEXES = TABLE_VECTOR_INDEXES;
238
277
  exports.defineMastraNativeVectorTable = defineMastraNativeVectorTable;
@@ -243,6 +282,7 @@ exports.mastraChannelConfigTable = mastraChannelConfigTable;
243
282
  exports.mastraChannelInstallationsTable = mastraChannelInstallationsTable;
244
283
  exports.mastraDocumentsTable = mastraDocumentsTable;
245
284
  exports.mastraMessagesTable = mastraMessagesTable;
285
+ exports.mastraObservationalMemoryTable = mastraObservationalMemoryTable;
246
286
  exports.mastraResourcesTable = mastraResourcesTable;
247
287
  exports.mastraScheduleTriggersTable = mastraScheduleTriggersTable;
248
288
  exports.mastraSchedulesTable = mastraSchedulesTable;
@@ -251,5 +291,5 @@ exports.mastraThreadsTable = mastraThreadsTable;
251
291
  exports.mastraVectorIndexesTable = mastraVectorIndexesTable;
252
292
  exports.mastraVectorsTable = mastraVectorsTable;
253
293
  exports.mastraWorkflowSnapshotsTable = mastraWorkflowSnapshotsTable;
254
- //# sourceMappingURL=chunk-SFRHJGSM.cjs.map
255
- //# sourceMappingURL=chunk-SFRHJGSM.cjs.map
294
+ //# sourceMappingURL=chunk-ZCCKLZQH.cjs.map
295
+ //# sourceMappingURL=chunk-ZCCKLZQH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema.ts"],"names":["v","defineTable","TABLE_SCHEMAS","TABLE_THREADS","TABLE_MESSAGES","TABLE_RESOURCES","TABLE_SCORERS"],"mappings":"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","file":"chunk-ZCCKLZQH.cjs","sourcesContent":["/**\n * Convex schema definitions for Mastra tables.\n *\n * This file dynamically builds Convex table definitions from the canonical\n * TABLE_SCHEMAS in @mastra/core/storage/constants to ensure they stay in sync.\n *\n * The import path @mastra/core/storage/constants is specifically designed to\n * avoid pulling in Node.js dependencies, making it safe to use in Convex's\n * sandboxed schema evaluation environment.\n */\nimport {\n TABLE_SCHEMAS,\n TABLE_WORKFLOW_SNAPSHOT,\n TABLE_MESSAGES,\n TABLE_THREADS,\n TABLE_RESOURCES,\n TABLE_SCORERS,\n TABLE_SCHEDULES,\n TABLE_SCHEDULE_TRIGGERS,\n TABLE_CHANNEL_INSTALLATIONS,\n TABLE_CHANNEL_CONFIG,\n TABLE_BACKGROUND_TASKS,\n} from '@mastra/core/storage/constants';\nimport { defineTable } from 'convex/server';\nimport { v } from 'convex/values';\n\n/**\n * Helper to convert Mastra StorageColumn type to Convex validator\n */\nfunction columnToValidator(column: { type: string; nullable?: boolean }) {\n let validator;\n switch (column.type) {\n case 'text':\n validator = v.string();\n break;\n case 'integer':\n case 'float':\n validator = v.number();\n break;\n case 'bigint':\n validator = v.int64();\n break;\n case 'boolean':\n validator = v.boolean();\n break;\n case 'timestamp':\n validator = v.string(); // Store as ISO string\n break;\n case 'jsonb':\n case 'json':\n validator = v.any();\n break;\n default:\n validator = v.any();\n }\n return column.nullable ? v.optional(validator) : validator;\n}\n\n/**\n * Build Convex table definition from Mastra schema.\n * Includes the `id` field as a regular field (Convex auto-generates _id).\n */\nfunction buildTableFromSchema(schema: Record<string, { type: string; nullable?: boolean; primaryKey?: boolean }>) {\n const fields: Record<string, any> = {};\n for (const [key, column] of Object.entries(schema)) {\n fields[key] = columnToValidator(column);\n }\n return fields;\n}\n\n// ============================================================================\n// Table Definitions - Built from @mastra/core TABLE_SCHEMAS\n// ============================================================================\n\n/**\n * Threads table - stores conversation threads\n * Schema: TABLE_SCHEMAS[TABLE_THREADS]\n */\nexport const mastraThreadsTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_THREADS]))\n .index('by_record_id', ['id'])\n .index('by_resource', ['resourceId'])\n .index('by_created', ['createdAt'])\n .index('by_updated', ['updatedAt']);\n\n/**\n * Messages table - stores conversation messages\n * Schema: TABLE_SCHEMAS[TABLE_MESSAGES]\n */\nexport const mastraMessagesTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_MESSAGES]))\n .index('by_record_id', ['id'])\n .index('by_thread', ['thread_id'])\n .index('by_thread_created', ['thread_id', 'createdAt'])\n .index('by_resource', ['resourceId']);\n\n/**\n * Resources table - stores resource/user working memory\n * Schema: TABLE_SCHEMAS[TABLE_RESOURCES]\n */\nexport const mastraResourcesTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_RESOURCES]))\n .index('by_record_id', ['id'])\n .index('by_updated', ['updatedAt']);\n\n/**\n * Workflow snapshots table - stores workflow execution state\n * Schema: TABLE_SCHEMAS[TABLE_WORKFLOW_SNAPSHOT]\n *\n * Note: The `id` field is added explicitly for Convex's by_record_id index.\n * The core schema uses (workflow_name, run_id) as a composite key, but Convex\n * requires a single-column index. The id value is generated at runtime as\n * `${workflow_name}-${run_id}` by the Convex storage adapter's normalizeRecord().\n *\n * Fields are defined explicitly (not using buildTableFromSchema) because TypeScript's\n * type inference doesn't work well with spread operators in Convex's defineTable.\n */\nexport const mastraWorkflowSnapshotsTable = defineTable({\n id: v.optional(v.string()), // Synthetic ID for Convex index, generated at runtime\n workflow_name: v.string(),\n run_id: v.string(),\n resourceId: v.optional(v.string()),\n snapshot: v.any(),\n createdAt: v.string(),\n updatedAt: v.string(),\n})\n .index('by_record_id', ['id'])\n .index('by_workflow_run', ['workflow_name', 'run_id'])\n .index('by_workflow', ['workflow_name'])\n .index('by_resource', ['resourceId'])\n .index('by_created', ['createdAt']);\n\n/**\n * Scores table - stores evaluation scores\n * Schema: TABLE_SCHEMAS[TABLE_SCORERS]\n */\nexport const mastraScoresTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_SCORERS]))\n .index('by_record_id', ['id'])\n .index('by_scorer', ['scorerId'])\n .index('by_entity', ['entityId', 'entityType'])\n .index('by_run', ['runId'])\n .index('by_created', ['createdAt']);\n\n/**\n * Schedules table - stores workflow scheduler state.\n *\n * Schedule times are represented as JavaScript millisecond timestamps. Target\n * and metadata payloads are serialized JSON strings because user-provided JSON\n * can contain Convex-reserved field names such as `$schema`.\n */\nexport const mastraSchedulesTable = defineTable({\n id: v.string(),\n target: v.string(),\n cron: v.string(),\n timezone: v.optional(v.union(v.string(), v.null())),\n status: v.string(),\n next_fire_at: v.number(),\n last_fire_at: v.optional(v.union(v.number(), v.null())),\n last_run_id: v.optional(v.union(v.string(), v.null())),\n created_at: v.number(),\n updated_at: v.number(),\n metadata: v.optional(v.union(v.string(), v.null())),\n owner_type: v.optional(v.union(v.string(), v.null())),\n owner_id: v.optional(v.union(v.string(), v.null())),\n workflow_id: v.optional(v.union(v.string(), v.null())),\n})\n .index('by_record_id', ['id'])\n .index('by_status_next_fire_at', ['status', 'next_fire_at'])\n .index('by_workflow_status', ['workflow_id', 'status'])\n .index('by_workflow_id', ['workflow_id'])\n .index('by_owner', ['owner_type', 'owner_id'])\n .index('by_owner_id', ['owner_id'])\n .index('by_created', ['created_at']);\n\n/**\n * Schedule trigger table - stores scheduler trigger history.\n */\nexport const mastraScheduleTriggersTable = defineTable({\n id: v.string(),\n schedule_id: v.string(),\n run_id: v.optional(v.union(v.string(), v.null())),\n scheduled_fire_at: v.number(),\n actual_fire_at: v.number(),\n outcome: v.string(),\n error: v.optional(v.union(v.string(), v.null())),\n trigger_kind: v.string(),\n parent_trigger_id: v.optional(v.union(v.string(), v.null())),\n metadata: v.optional(v.union(v.string(), v.null())),\n})\n .index('by_record_id', ['id'])\n .index('by_schedule_actual', ['schedule_id', 'actual_fire_at'])\n .index('by_parent_trigger', ['parent_trigger_id']);\n\n/**\n * Channel installations table - stores platform app installations for agents.\n *\n * Platform data is serialized as a JSON string because user/platform payloads\n * can contain Convex-reserved field names such as `$schema`.\n */\nexport const mastraChannelInstallationsTable = defineTable({\n id: v.string(),\n platform: v.string(),\n agentId: v.string(),\n status: v.string(),\n webhookId: v.optional(v.union(v.string(), v.null())),\n data: v.string(),\n configHash: v.optional(v.union(v.string(), v.null())),\n error: v.optional(v.union(v.string(), v.null())),\n createdAt: v.string(),\n updatedAt: v.string(),\n})\n .index('by_record_id', ['id'])\n .index('by_webhook', ['webhookId'])\n .index('by_platform_agent', ['platform', 'agentId'])\n .index('by_platform', ['platform']);\n\n/**\n * Channel config table - stores platform-level channel configuration.\n *\n * The synthetic id mirrors `platform` so the generic Convex storage operations\n * can use their existing by-record-id lookup path.\n */\nexport const mastraChannelConfigTable = defineTable({\n id: v.string(),\n platform: v.string(),\n data: v.string(),\n updatedAt: v.string(),\n})\n .index('by_record_id', ['id'])\n .index('by_platform', ['platform']);\n\n/**\n * Background tasks table - stores durable background task state.\n *\n * JSON-like payloads are stored as encoded strings to match the existing\n * Convex storage serialization used by this adapter.\n *\n * Optional fields are stored as null when cleared so partial Convex patches can\n * preserve the existing task row while explicitly removing suspended state.\n */\nexport const mastraBackgroundTasksTable = defineTable({\n id: v.string(),\n tool_call_id: v.string(),\n tool_name: v.string(),\n agent_id: v.string(),\n run_id: v.string(),\n thread_id: v.union(v.string(), v.null()),\n resource_id: v.union(v.string(), v.null()),\n status: v.union(\n v.literal('pending'),\n v.literal('running'),\n v.literal('suspended'),\n v.literal('completed'),\n v.literal('failed'),\n v.literal('cancelled'),\n v.literal('timed_out'),\n ),\n args: v.string(),\n result: v.union(v.string(), v.null()),\n error: v.union(v.string(), v.null()),\n suspend_payload: v.union(v.string(), v.null()),\n retry_count: v.number(),\n max_retries: v.number(),\n timeout_ms: v.number(),\n createdAt: v.string(),\n startedAt: v.union(v.string(), v.null()),\n suspendedAt: v.union(v.string(), v.null()),\n completedAt: v.union(v.string(), v.null()),\n})\n .index('by_record_id', ['id'])\n .index('by_status_created', ['status', 'createdAt'])\n .index('by_agent_status', ['agent_id', 'status'])\n .index('by_run', ['run_id'])\n .index('by_tool_call', ['tool_call_id'])\n .index('by_thread', ['thread_id'])\n .index('by_resource', ['resource_id'])\n .index('by_tool', ['tool_name'])\n .index('by_created', ['createdAt']);\n\n/**\n * Observational memory table - stores observational memory generations.\n *\n * Fields mirror @mastra/core's OBSERVATIONAL_MEMORY_SCHEMA (storage/constants.ts).\n * The schema is defined explicitly (not via buildTableFromSchema) because the\n * core export is intentionally excluded from TABLE_SCHEMAS (OM is optional) and\n * older cores in the peer range may not export it at all.\n *\n * Serialization conventions:\n * - Timestamps are ISO strings.\n * - `config`, `metadata`, and `bufferedObservationChunks` are JSON strings\n * because user-influenced payloads can contain Convex-reserved field names\n * such as `$schema` (same reasoning as mastraSchedulesTable).\n * - Nullable fields accept explicit null so cleared state can travel over JSON.\n *\n * Records are keyed by `lookupKey` ('thread:{id}' or 'resource:{id}'); the\n * latest generation is the highest `generationCount` per lookupKey, served by\n * the by_lookup_key index in descending order.\n */\nexport const mastraObservationalMemoryTable = defineTable({\n id: v.string(),\n lookupKey: v.string(),\n scope: v.string(),\n // Nullable in core's OBSERVATIONAL_MEMORY_SCHEMA; the adapter always writes it.\n resourceId: v.optional(v.union(v.string(), v.null())),\n threadId: v.optional(v.union(v.string(), v.null())),\n activeObservations: v.string(),\n activeObservationsPendingUpdate: v.optional(v.union(v.string(), v.null())),\n originType: v.string(),\n config: v.string(),\n generationCount: v.number(),\n lastObservedAt: v.optional(v.union(v.string(), v.null())),\n lastReflectionAt: v.optional(v.union(v.string(), v.null())),\n pendingMessageTokens: v.number(),\n totalTokensObserved: v.number(),\n observationTokenCount: v.number(),\n isObserving: v.boolean(),\n isReflecting: v.boolean(),\n observedMessageIds: v.optional(v.union(v.array(v.string()), v.null())),\n observedTimezone: v.optional(v.union(v.string(), v.null())),\n bufferedObservations: v.optional(v.union(v.string(), v.null())),\n bufferedObservationTokens: v.optional(v.union(v.number(), v.null())),\n bufferedMessageIds: v.optional(v.union(v.array(v.string()), v.null())),\n bufferedReflection: v.optional(v.union(v.string(), v.null())),\n bufferedReflectionTokens: v.optional(v.union(v.number(), v.null())),\n bufferedReflectionInputTokens: v.optional(v.union(v.number(), v.null())),\n reflectedObservationLineCount: v.optional(v.union(v.number(), v.null())),\n bufferedObservationChunks: v.optional(v.union(v.string(), v.null())),\n isBufferingObservation: v.boolean(),\n isBufferingReflection: v.boolean(),\n lastBufferedAtTokens: v.number(),\n lastBufferedAtTime: v.optional(v.union(v.string(), v.null())),\n metadata: v.optional(v.union(v.string(), v.null())),\n createdAt: v.string(),\n updatedAt: v.string(),\n})\n .index('by_record_id', ['id'])\n .index('by_lookup_key', ['lookupKey', 'generationCount']);\n\n// ============================================================================\n// Vector Tables - Not in core schemas (vector-specific)\n// ============================================================================\n\n/**\n * Vector indexes table - stores metadata about vector indexes\n */\nexport const mastraVectorIndexesTable = defineTable({\n id: v.string(), // Mastra record ID (same as indexName)\n indexName: v.string(),\n dimension: v.number(),\n metric: v.string(),\n createdAt: v.string(),\n})\n .index('by_record_id', ['id'])\n .index('by_name', ['indexName']);\n\n/**\n * Vectors table - stores vector embeddings\n * Uses indexName field to support multiple indexes with different dimensions\n */\nexport const mastraVectorsTable = defineTable({\n id: v.string(), // Mastra record ID\n indexName: v.string(),\n embedding: v.array(v.float64()),\n metadata: v.optional(v.any()),\n})\n .index('by_index_id', ['indexName', 'id']) // Composite for scoped lookups per index\n .index('by_index', ['indexName']);\n\nexport type MastraNativeVectorTableConfig = {\n /**\n * Vector dimensions for the deployed Convex vector index.\n */\n dimensions: number;\n /**\n * Convex vector index name.\n *\n * @default 'by_embedding'\n */\n vectorIndexName?: string;\n /**\n * Stage the vector index for a later backfill.\n *\n * @default false\n */\n staged?: boolean;\n};\n\n/**\n * Defines a dedicated Convex table for native vector search with the default\n * `ConvexNativeVector` field names.\n *\n * Use a custom `defineTable()` when you need native vector `filterFields`,\n * because filter fields must also be declared in the table schema.\n */\nexport function defineMastraNativeVectorTable({\n dimensions,\n vectorIndexName = 'by_embedding',\n staged = false,\n}: MastraNativeVectorTableConfig) {\n if (!Number.isInteger(dimensions) || dimensions < 2 || dimensions > 4096) {\n throw new Error('defineMastraNativeVectorTable: dimensions must be an integer between 2 and 4096.');\n }\n\n const table = defineTable({\n id: v.string(),\n embedding: v.array(v.float64()),\n metadata: v.optional(v.any()),\n }).index('by_record_id', ['id']);\n\n if (staged) {\n return table.vectorIndex(vectorIndexName, {\n vectorField: 'embedding',\n dimensions,\n staged: true,\n });\n }\n\n return table.vectorIndex(vectorIndexName, {\n vectorField: 'embedding',\n dimensions,\n });\n}\n\n// ============================================================================\n// Server Cache Tables - Used by ConvexServerCache\n// ============================================================================\n\n/**\n * Cache metadata table - stores scalar cache values, list counters, and numeric\n * counters used by ConvexServerCache.\n */\nexport const mastraCacheTable = defineTable({\n key: v.string(),\n keyPrefix: v.string(),\n kind: v.union(v.literal('value'), v.literal('list'), v.literal('counter'), v.literal('deleted')),\n value: v.optional(v.string()),\n counter: v.optional(v.number()),\n expiresAt: v.union(v.number(), v.null()),\n})\n .index('by_key', ['key'])\n .index('by_key_prefix', ['keyPrefix']);\n\n/**\n * Cache list item table - stores each list entry as its own row so replay\n * history does not grow into a single large Convex document.\n */\nexport const mastraCacheListItemsTable = defineTable({\n key: v.string(),\n keyPrefix: v.string(),\n index: v.number(),\n value: v.string(),\n})\n .index('by_key_prefix', ['keyPrefix'])\n .index('by_key_index', ['key', 'index']);\n\n// ============================================================================\n// Fallback Table - For unknown/custom tables\n// ============================================================================\n\n/**\n * Generic documents table - fallback for unknown table types\n */\nexport const mastraDocumentsTable = defineTable({\n table: v.string(),\n primaryKey: v.string(),\n record: v.any(),\n})\n .index('by_table', ['table'])\n .index('by_table_primary', ['table', 'primaryKey']);\n\n// ============================================================================\n// Re-export table name constants for convenience\n// ============================================================================\n\nexport {\n TABLE_WORKFLOW_SNAPSHOT,\n TABLE_MESSAGES,\n TABLE_THREADS,\n TABLE_RESOURCES,\n TABLE_SCORERS,\n TABLE_SCHEDULES,\n TABLE_SCHEDULE_TRIGGERS,\n TABLE_CHANNEL_INSTALLATIONS,\n TABLE_CHANNEL_CONFIG,\n TABLE_BACKGROUND_TASKS,\n};\n\n// Additional table name constants for vector tables (not in core)\nexport const TABLE_VECTOR_INDEXES = 'mastra_vector_indexes';\nexport const TABLE_VECTORS = 'mastra_vectors';\nexport const TABLE_DOCUMENTS = 'mastra_documents';\n\n// Observational memory table name. Defined locally (not imported from core)\n// because this file is bundled into the user's Convex deployment and must not\n// rely on value exports that older @mastra/core versions in the peer range lack.\nexport const TABLE_OBSERVATIONAL_MEMORY = 'mastra_observational_memory';\n"]}
@@ -3,7 +3,7 @@ name: mastra-convex
3
3
  description: Documentation for @mastra/convex. Use when working with @mastra/convex APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/convex"
6
- version: "1.3.2"
6
+ version: "1.4.0"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,131 +1,139 @@
1
1
  {
2
- "version": "1.3.2",
2
+ "version": "1.4.0",
3
3
  "package": "@mastra/convex",
4
4
  "exports": {
5
5
  "mastraCache": {
6
6
  "types": "dist/index.d.ts",
7
- "implementation": "dist/chunk-77UWNT5X.js"
7
+ "implementation": "dist/chunk-MC2EQATP.js"
8
8
  },
9
9
  "mastraNativeVectorAction": {
10
10
  "types": "dist/index.d.ts",
11
- "implementation": "dist/chunk-77UWNT5X.js"
11
+ "implementation": "dist/chunk-MC2EQATP.js"
12
12
  },
13
13
  "mastraNativeVectorMutation": {
14
14
  "types": "dist/index.d.ts",
15
- "implementation": "dist/chunk-77UWNT5X.js"
15
+ "implementation": "dist/chunk-MC2EQATP.js"
16
16
  },
17
17
  "mastraNativeVectorQuery": {
18
18
  "types": "dist/index.d.ts",
19
- "implementation": "dist/chunk-77UWNT5X.js"
19
+ "implementation": "dist/chunk-MC2EQATP.js"
20
20
  },
21
21
  "mastraStorage": {
22
22
  "types": "dist/index.d.ts",
23
- "implementation": "dist/chunk-77UWNT5X.js"
23
+ "implementation": "dist/chunk-MC2EQATP.js"
24
24
  },
25
25
  "TABLE_BACKGROUND_TASKS": {
26
26
  "types": "dist/index.d.ts",
27
- "implementation": "dist/chunk-MC75WADX.js"
27
+ "implementation": "dist/chunk-QWWFHN52.js"
28
28
  },
29
29
  "TABLE_CHANNEL_CONFIG": {
30
30
  "types": "dist/index.d.ts",
31
- "implementation": "dist/chunk-MC75WADX.js"
31
+ "implementation": "dist/chunk-QWWFHN52.js"
32
32
  },
33
33
  "TABLE_CHANNEL_INSTALLATIONS": {
34
34
  "types": "dist/index.d.ts",
35
- "implementation": "dist/chunk-MC75WADX.js"
35
+ "implementation": "dist/chunk-QWWFHN52.js"
36
36
  },
37
37
  "TABLE_MESSAGES": {
38
38
  "types": "dist/index.d.ts",
39
- "implementation": "dist/chunk-MC75WADX.js"
39
+ "implementation": "dist/chunk-QWWFHN52.js"
40
+ },
41
+ "TABLE_OBSERVATIONAL_MEMORY": {
42
+ "types": "dist/index.d.ts",
43
+ "implementation": "dist/chunk-QWWFHN52.js"
40
44
  },
41
45
  "TABLE_RESOURCES": {
42
46
  "types": "dist/index.d.ts",
43
- "implementation": "dist/chunk-MC75WADX.js"
47
+ "implementation": "dist/chunk-QWWFHN52.js"
44
48
  },
45
49
  "TABLE_SCHEDULES": {
46
50
  "types": "dist/index.d.ts",
47
- "implementation": "dist/chunk-MC75WADX.js"
51
+ "implementation": "dist/chunk-QWWFHN52.js"
48
52
  },
49
53
  "TABLE_SCHEDULE_TRIGGERS": {
50
54
  "types": "dist/index.d.ts",
51
- "implementation": "dist/chunk-MC75WADX.js"
55
+ "implementation": "dist/chunk-QWWFHN52.js"
52
56
  },
53
57
  "TABLE_SCORERS": {
54
58
  "types": "dist/index.d.ts",
55
- "implementation": "dist/chunk-MC75WADX.js"
59
+ "implementation": "dist/chunk-QWWFHN52.js"
56
60
  },
57
61
  "TABLE_THREADS": {
58
62
  "types": "dist/index.d.ts",
59
- "implementation": "dist/chunk-MC75WADX.js"
63
+ "implementation": "dist/chunk-QWWFHN52.js"
60
64
  },
61
65
  "TABLE_WORKFLOW_SNAPSHOT": {
62
66
  "types": "dist/index.d.ts",
63
- "implementation": "dist/chunk-MC75WADX.js"
67
+ "implementation": "dist/chunk-QWWFHN52.js"
64
68
  },
65
69
  "defineMastraNativeVectorTable": {
66
70
  "types": "dist/index.d.ts",
67
- "implementation": "dist/chunk-MC75WADX.js",
68
- "line": 146
71
+ "implementation": "dist/chunk-QWWFHN52.js",
72
+ "line": 183
69
73
  },
70
74
  "mastraBackgroundTasksTable": {
71
75
  "types": "dist/index.d.ts",
72
- "implementation": "dist/chunk-MC75WADX.js"
76
+ "implementation": "dist/chunk-QWWFHN52.js"
73
77
  },
74
78
  "mastraCacheListItemsTable": {
75
79
  "types": "dist/index.d.ts",
76
- "implementation": "dist/chunk-MC75WADX.js"
80
+ "implementation": "dist/chunk-QWWFHN52.js"
77
81
  },
78
82
  "mastraCacheTable": {
79
83
  "types": "dist/index.d.ts",
80
- "implementation": "dist/chunk-MC75WADX.js"
84
+ "implementation": "dist/chunk-QWWFHN52.js"
81
85
  },
82
86
  "mastraChannelConfigTable": {
83
87
  "types": "dist/index.d.ts",
84
- "implementation": "dist/chunk-MC75WADX.js"
88
+ "implementation": "dist/chunk-QWWFHN52.js"
85
89
  },
86
90
  "mastraChannelInstallationsTable": {
87
91
  "types": "dist/index.d.ts",
88
- "implementation": "dist/chunk-MC75WADX.js"
92
+ "implementation": "dist/chunk-QWWFHN52.js"
89
93
  },
90
94
  "mastraDocumentsTable": {
91
95
  "types": "dist/index.d.ts",
92
- "implementation": "dist/chunk-MC75WADX.js"
96
+ "implementation": "dist/chunk-QWWFHN52.js"
93
97
  },
94
98
  "mastraMessagesTable": {
95
99
  "types": "dist/index.d.ts",
96
- "implementation": "dist/chunk-MC75WADX.js"
100
+ "implementation": "dist/chunk-QWWFHN52.js"
101
+ },
102
+ "mastraObservationalMemoryTable": {
103
+ "types": "dist/index.d.ts",
104
+ "implementation": "dist/chunk-QWWFHN52.js"
97
105
  },
98
106
  "mastraResourcesTable": {
99
107
  "types": "dist/index.d.ts",
100
- "implementation": "dist/chunk-MC75WADX.js"
108
+ "implementation": "dist/chunk-QWWFHN52.js"
101
109
  },
102
110
  "mastraScheduleTriggersTable": {
103
111
  "types": "dist/index.d.ts",
104
- "implementation": "dist/chunk-MC75WADX.js"
112
+ "implementation": "dist/chunk-QWWFHN52.js"
105
113
  },
106
114
  "mastraSchedulesTable": {
107
115
  "types": "dist/index.d.ts",
108
- "implementation": "dist/chunk-MC75WADX.js"
116
+ "implementation": "dist/chunk-QWWFHN52.js"
109
117
  },
110
118
  "mastraScoresTable": {
111
119
  "types": "dist/index.d.ts",
112
- "implementation": "dist/chunk-MC75WADX.js"
120
+ "implementation": "dist/chunk-QWWFHN52.js"
113
121
  },
114
122
  "mastraThreadsTable": {
115
123
  "types": "dist/index.d.ts",
116
- "implementation": "dist/chunk-MC75WADX.js"
124
+ "implementation": "dist/chunk-QWWFHN52.js"
117
125
  },
118
126
  "mastraVectorIndexesTable": {
119
127
  "types": "dist/index.d.ts",
120
- "implementation": "dist/chunk-MC75WADX.js"
128
+ "implementation": "dist/chunk-QWWFHN52.js"
121
129
  },
122
130
  "mastraVectorsTable": {
123
131
  "types": "dist/index.d.ts",
124
- "implementation": "dist/chunk-MC75WADX.js"
132
+ "implementation": "dist/chunk-QWWFHN52.js"
125
133
  },
126
134
  "mastraWorkflowSnapshotsTable": {
127
135
  "types": "dist/index.d.ts",
128
- "implementation": "dist/chunk-MC75WADX.js"
136
+ "implementation": "dist/chunk-QWWFHN52.js"
129
137
  }
130
138
  },
131
139
  "modules": {}
@@ -6,7 +6,7 @@ The Convex storage implementation provides a serverless storage solution using [
6
6
 
7
7
  > **Observability Not Supported:** Convex storage **doesn't support the observability domain**. Traces from the `MastraStorageExporter` can't be persisted to Convex, and [Studio's](https://mastra.ai/docs/studio/overview) observability features won't work with Convex as your only storage provider. To enable observability, use [composite storage](https://mastra.ai/reference/storage/composite) to route observability data to a supported provider like ClickHouse.
8
8
 
9
- > **Record Size Limit:** Convex enforces a **1 MiB maximum record size**. This limit can be exceeded when storing messages with base64-encoded attachments such as images. See [Handling large attachments](https://mastra.ai/docs/memory/storage) for workarounds including uploading attachments to external storage like S3, Cloudflare R2, or [Convex file storage](https://docs.convex.dev/file-storage).
9
+ > **Record Size Limit:** Convex enforces a **1 MiB maximum record size**. This limit can be exceeded when storing messages with base64-encoded attachments such as images. See [Handling large attachments](https://mastra.ai/docs/memory/memory-processors) for workarounds including uploading attachments to external storage like S3, Cloudflare R2, or [Convex file storage](https://docs.convex.dev/file-storage).
10
10
 
11
11
  ## Installation
12
12
 
@@ -50,6 +50,7 @@ import {
50
50
  mastraResourcesTable,
51
51
  mastraWorkflowSnapshotsTable,
52
52
  mastraScoresTable,
53
+ mastraObservationalMemoryTable,
53
54
  mastraVectorIndexesTable,
54
55
  mastraVectorsTable,
55
56
  mastraCacheTable,
@@ -63,6 +64,7 @@ export default defineSchema({
63
64
  mastra_resources: mastraResourcesTable,
64
65
  mastra_workflow_snapshots: mastraWorkflowSnapshotsTable,
65
66
  mastra_scorers: mastraScoresTable,
67
+ mastra_observational_memory: mastraObservationalMemoryTable,
66
68
  mastra_vector_indexes: mastraVectorIndexesTable,
67
69
  mastra_vectors: mastraVectorsTable,
68
70
  mastra_cache: mastraCacheTable,
@@ -192,16 +194,21 @@ Use a non-empty `keyPrefix` unless you intentionally want `clear()` to remove ev
192
194
 
193
195
  The storage implementation uses typed Convex tables for each Mastra domain:
194
196
 
195
- | Domain | Convex Table | Purpose |
196
- | ----------- | --------------------------- | ----------------------------------------- |
197
- | Threads | `mastra_threads` | Conversation threads |
198
- | Messages | `mastra_messages` | Chat messages |
199
- | Resources | `mastra_resources` | User working memory |
200
- | Workflows | `mastra_workflow_snapshots` | Workflow state |
201
- | Scorers | `mastra_scorers` | Evaluation data |
202
- | Cache | `mastra_cache` | Cache values, counters, and list metadata |
203
- | Cache Items | `mastra_cache_list_items` | Cache list entries |
204
- | Fallback | `mastra_documents` | Unknown tables |
197
+ | Domain | Convex Table | Purpose |
198
+ | -------------------- | ----------------------------- | ----------------------------------------- |
199
+ | Threads | `mastra_threads` | Conversation threads |
200
+ | Messages | `mastra_messages` | Chat messages |
201
+ | Resources | `mastra_resources` | User working memory |
202
+ | Observational Memory | `mastra_observational_memory` | Observational memory generations |
203
+ | Workflows | `mastra_workflow_snapshots` | Workflow state |
204
+ | Scorers | `mastra_scorers` | Evaluation data |
205
+ | Cache | `mastra_cache` | Cache values, counters, and list metadata |
206
+ | Cache Items | `mastra_cache_list_items` | Cache list entries |
207
+ | Fallback | `mastra_documents` | Unknown tables |
208
+
209
+ ### Observational memory
210
+
211
+ `ConvexStore` supports [observational memory](https://mastra.ai/docs/memory/observational-memory). Add `mastraObservationalMemoryTable` to your Convex schema and redeploy with `npx convex deploy` to enable it. Existing deployments created before this table was added need the same schema update.
205
212
 
206
213
  ### Architecture
207
214