@mastra/convex 0.0.0-feat-improve-processors-20251205191721

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 (40) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/LICENSE.md +15 -0
  3. package/README.md +123 -0
  4. package/dist/chunk-NZCHEPNU.js +362 -0
  5. package/dist/chunk-NZCHEPNU.js.map +1 -0
  6. package/dist/chunk-QKN2PWR2.cjs +391 -0
  7. package/dist/chunk-QKN2PWR2.cjs.map +1 -0
  8. package/dist/index.cjs +1350 -0
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +1287 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/server/index.cjs +64 -0
  15. package/dist/server/index.cjs.map +1 -0
  16. package/dist/server/index.d.ts +3 -0
  17. package/dist/server/index.d.ts.map +1 -0
  18. package/dist/server/index.js +3 -0
  19. package/dist/server/index.js.map +1 -0
  20. package/dist/server/schema.d.ts +115 -0
  21. package/dist/server/schema.d.ts.map +1 -0
  22. package/dist/server/storage.d.ts +7 -0
  23. package/dist/server/storage.d.ts.map +1 -0
  24. package/dist/storage/client.d.ts +24 -0
  25. package/dist/storage/client.d.ts.map +1 -0
  26. package/dist/storage/domains/memory.d.ts +59 -0
  27. package/dist/storage/domains/memory.d.ts.map +1 -0
  28. package/dist/storage/domains/scores.d.ts +42 -0
  29. package/dist/storage/domains/scores.d.ts.map +1 -0
  30. package/dist/storage/domains/workflows.d.ts +44 -0
  31. package/dist/storage/domains/workflows.d.ts.map +1 -0
  32. package/dist/storage/index.d.ts +161 -0
  33. package/dist/storage/index.d.ts.map +1 -0
  34. package/dist/storage/operations.d.ts +40 -0
  35. package/dist/storage/operations.d.ts.map +1 -0
  36. package/dist/storage/types.d.ts +42 -0
  37. package/dist/storage/types.d.ts.map +1 -0
  38. package/dist/vector/index.d.ts +35 -0
  39. package/dist/vector/index.d.ts.map +1 -0
  40. package/package.json +75 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,29 @@
1
+ # @mastra/convex
2
+
3
+ ## 0.0.0-feat-improve-processors-20251205191721
4
+
5
+ ### Patch Changes
6
+
7
+ - feat(storage): support querying messages from multiple threads ([#10663](https://github.com/mastra-ai/mastra/pull/10663))
8
+ - Fixed TypeScript errors where `threadId: string | string[]` was being passed to places expecting `Scalar` type
9
+ - Added proper multi-thread support for `listMessages` across all adapters when `threadId` is an array
10
+ - Updated `_getIncludedMessages` to look up message threadId by ID (since message IDs are globally unique)
11
+ - **upstash**: Added `msg-idx:{messageId}` index for O(1) message lookups (backwards compatible with fallback to scan for old messages, with automatic backfill)
12
+
13
+ - Convex storage and vector adapter improvements: ([#10421](https://github.com/mastra-ai/mastra/pull/10421))
14
+ - Refactored to use typed Convex tables for each Mastra domain (threads, messages, resources, workflows, scorers, vectors)
15
+ - All tables now include `id` field for Mastra record ID and `by_record_id` index for efficient lookups
16
+ - Fixed 32k document limit issues by using batched operations and indexed queries
17
+ - Updated `saveMessages` and `updateMessages` to automatically update thread `updatedAt` timestamps
18
+ - Fixed `listMessages` to properly fetch messages from different threads when using `include`
19
+ - Fixed `saveResource` to preserve `undefined` metadata instead of converting to empty object
20
+ - Rewrote `ConvexAdminClient` to use Convex HTTP API directly with proper admin authentication
21
+ - Added comprehensive documentation for storage and vector adapters
22
+ - Exported pre-built table definitions from `@mastra/convex/server` for easy schema setup
23
+
24
+ - Updated dependencies [[`ac0d2f4`](https://github.com/mastra-ai/mastra/commit/ac0d2f4ff8831f72c1c66c2be809706d17f65789), [`2319326`](https://github.com/mastra-ai/mastra/commit/2319326f8c64e503a09bbcf14be2dd65405445e0), [`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`21a15de`](https://github.com/mastra-ai/mastra/commit/21a15de369fe82aac26bb642ed7be73505475e8b), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`1a0d3fc`](https://github.com/mastra-ai/mastra/commit/1a0d3fc811482c9c376cdf79ee615c23bae9b2d6), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`85a628b`](https://github.com/mastra-ai/mastra/commit/85a628b1224a8f64cd82ea7f033774bf22df7a7e), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`910db9e`](https://github.com/mastra-ai/mastra/commit/910db9e0312888495eb5617b567f247d03303814), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`d629361`](https://github.com/mastra-ai/mastra/commit/d629361a60f6565b5bfb11976fdaf7308af858e2), [`feb7ee4`](https://github.com/mastra-ai/mastra/commit/feb7ee4d09a75edb46c6669a3beaceec78811747), [`c237233`](https://github.com/mastra-ai/mastra/commit/c23723399ccedf7f5744b3f40997b79246bfbe64), [`08c31c1`](https://github.com/mastra-ai/mastra/commit/08c31c188ebccd598acaf55e888b6397d01f7eae), [`15f9e21`](https://github.com/mastra-ai/mastra/commit/15f9e216177201ea6e3f6d0bfb063fcc0953444f), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`b0e2ea5`](https://github.com/mastra-ai/mastra/commit/b0e2ea5b52c40fae438b9e2f7baee6f0f89c5442), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`ff94dea`](https://github.com/mastra-ai/mastra/commit/ff94dea935f4e34545c63bcb6c29804732698809), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`c456e01`](https://github.com/mastra-ai/mastra/commit/c456e0149e3c176afcefdbd9bb1d2c5917723725), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`5b2ff46`](https://github.com/mastra-ai/mastra/commit/5b2ff4651df70c146523a7fca773f8eb0a2272f8), [`db41688`](https://github.com/mastra-ai/mastra/commit/db4168806d007417e2e60b4f68656dca4e5f40c9), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`ab035c2`](https://github.com/mastra-ai/mastra/commit/ab035c2ef6d8cc7bb25f06f1a38508bd9e6f126b), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`5ca599d`](https://github.com/mastra-ai/mastra/commit/5ca599d0bb59a1595f19f58473fcd67cc71cef58), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`bff1145`](https://github.com/mastra-ai/mastra/commit/bff114556b3cbadad9b2768488708f8ad0e91475), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`5c8ca24`](https://github.com/mastra-ai/mastra/commit/5c8ca247094e0cc2cdbd7137822fb47241f86e77), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`e191844`](https://github.com/mastra-ai/mastra/commit/e1918444ca3f80e82feef1dad506cd4ec6e2875f), [`22553f1`](https://github.com/mastra-ai/mastra/commit/22553f11c63ee5e966a9c034a349822249584691), [`7237163`](https://github.com/mastra-ai/mastra/commit/72371635dbf96a87df4b073cc48fc655afbdce3d), [`2500740`](https://github.com/mastra-ai/mastra/commit/2500740ea23da067d6e50ec71c625ab3ce275e64), [`873ecbb`](https://github.com/mastra-ai/mastra/commit/873ecbb517586aa17d2f1e99283755b3ebb2863f), [`4f9bbe5`](https://github.com/mastra-ai/mastra/commit/4f9bbe5968f42c86f4930b8193de3c3c17e5bd36), [`fd3d338`](https://github.com/mastra-ai/mastra/commit/fd3d338a2c362174ed5b383f1f011ad9fb0302aa), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`8f3fa3a`](https://github.com/mastra-ai/mastra/commit/8f3fa3a652bb77da092f913ec51ae46e3a7e27dc), [`c30400a`](https://github.com/mastra-ai/mastra/commit/c30400a49b994b1b97256fe785eb6c906fc2b232), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`1a46a56`](https://github.com/mastra-ai/mastra/commit/1a46a566f45a3fcbadc1cf36bf86d351f264bfa3), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`69e0a87`](https://github.com/mastra-ai/mastra/commit/69e0a878896a2da9494945d86e056a5f8f05b851), [`cd29ad2`](https://github.com/mastra-ai/mastra/commit/cd29ad23a255534e8191f249593849ed29160886), [`bdf4d8c`](https://github.com/mastra-ai/mastra/commit/bdf4d8cdc656d8a2c21d81834bfa3bfa70f56c16), [`854e3da`](https://github.com/mastra-ai/mastra/commit/854e3dad5daac17a91a20986399d3a51f54bf68b), [`ce18d38`](https://github.com/mastra-ai/mastra/commit/ce18d38678c65870350d123955014a8432075fd9), [`3cf540b`](https://github.com/mastra-ai/mastra/commit/3cf540b9fbfea8f4fc8d3a2319a4e6c0b0cbfd52), [`352a5d6`](https://github.com/mastra-ai/mastra/commit/352a5d625cfe09849b21e8f52a24c9f0366759d5), [`1c6ce51`](https://github.com/mastra-ai/mastra/commit/1c6ce51f875915ab57fd36873623013699a2a65d), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`a97003a`](https://github.com/mastra-ai/mastra/commit/a97003aa1cf2f4022a41912324a1e77263b326b8), [`ccc141e`](https://github.com/mastra-ai/mastra/commit/ccc141ed27da0abc3a3fc28e9e5128152e8e37f4), [`01f8878`](https://github.com/mastra-ai/mastra/commit/01f88783de25e4de048c1c8aace43e26373c6ea5), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`4c77209`](https://github.com/mastra-ai/mastra/commit/4c77209e6c11678808b365d545845918c40045c8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`fe3b897`](https://github.com/mastra-ai/mastra/commit/fe3b897c2ccbcd2b10e81b099438c7337feddf89), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`00123ba`](https://github.com/mastra-ai/mastra/commit/00123ba96dc9e5cd0b110420ebdba56d8f237b25), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`cccf9c8`](https://github.com/mastra-ai/mastra/commit/cccf9c8b2d2dfc1a5e63919395b83d78c89682a0), [`29c4309`](https://github.com/mastra-ai/mastra/commit/29c4309f818b24304c041bcb4a8f19b5f13f6b62), [`16785ce`](https://github.com/mastra-ai/mastra/commit/16785ced928f6f22638f4488cf8a125d99211799), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`d827d08`](https://github.com/mastra-ai/mastra/commit/d827d0808ffe1f3553a84e975806cc989b9735dd), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`db70a48`](https://github.com/mastra-ai/mastra/commit/db70a48aeeeeb8e5f92007e8ede52c364ce15287), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`de8239b`](https://github.com/mastra-ai/mastra/commit/de8239bdcb1d8c0cfa06da21f1569912a66bbc8a), [`23c10a1`](https://github.com/mastra-ai/mastra/commit/23c10a1efdd9a693c405511ab2dc8a1236603162), [`b5e6cd7`](https://github.com/mastra-ai/mastra/commit/b5e6cd77fc8c8e64e0494c1d06cee3d84e795d1e), [`f0fdc14`](https://github.com/mastra-ai/mastra/commit/f0fdc14ee233d619266b3d2bbdeea7d25cfc6d13), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`9b37b56`](https://github.com/mastra-ai/mastra/commit/9b37b565e1f2a76c24f728945cc740c2b09be9da), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`a0a5b4b`](https://github.com/mastra-ai/mastra/commit/a0a5b4bbebe6c701ebbadf744873aa0d5ca01371), [`5d171ad`](https://github.com/mastra-ai/mastra/commit/5d171ad9ef340387276b77c2bb3e83e83332d729), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`3759cb0`](https://github.com/mastra-ai/mastra/commit/3759cb064935b5f74c65ac2f52a1145f7352899d), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`69ea758`](https://github.com/mastra-ai/mastra/commit/69ea758358edd7117f191c2e69c8bb5fc79e7a1a), [`651e772`](https://github.com/mastra-ai/mastra/commit/651e772eb1475fb13e126d3fcc01751297a88214), [`f03ae60`](https://github.com/mastra-ai/mastra/commit/f03ae60500fe350c9d828621006cdafe1975fdd8), [`993ad98`](https://github.com/mastra-ai/mastra/commit/993ad98d7ad3bebda9ecef5fec5c94349a0d04bc), [`676ccc7`](https://github.com/mastra-ai/mastra/commit/676ccc7fe92468d2d45d39c31a87825c89fd1ea0), [`3ff2c17`](https://github.com/mastra-ai/mastra/commit/3ff2c17a58e312fad5ea37377262c12d92ca0908), [`d1e74a0`](https://github.com/mastra-ai/mastra/commit/d1e74a0a293866dece31022047f5dbab65a304d0), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`c10398d`](https://github.com/mastra-ai/mastra/commit/c10398d5b88f1d4af556f4267ff06f1d11e89179), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`b61b93f`](https://github.com/mastra-ai/mastra/commit/b61b93f9e058b11dd2eec169853175d31dbdd567), [`bae33d9`](https://github.com/mastra-ai/mastra/commit/bae33d91a63fbb64d1e80519e1fc1acaed1e9013), [`39e7869`](https://github.com/mastra-ai/mastra/commit/39e7869bc7d0ee391077ce291474d8a84eedccff), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`c0b731f`](https://github.com/mastra-ai/mastra/commit/c0b731fb27d712dc8582e846df5c0332a6a0c5ba), [`5761926`](https://github.com/mastra-ai/mastra/commit/57619260c4a2cdd598763abbacd90de594c6bc76), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`c900fdd`](https://github.com/mastra-ai/mastra/commit/c900fdd504c41348efdffb205cfe80d48c38fa33), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`43ca8f2`](https://github.com/mastra-ai/mastra/commit/43ca8f2c7334851cc7b4d3d2f037d8784bfbdd5f), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`00c2387`](https://github.com/mastra-ai/mastra/commit/00c2387f5f04a365316f851e58666ac43f8c4edf), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`ad6250d`](https://github.com/mastra-ai/mastra/commit/ad6250dbdaad927e29f74a27b83f6c468b50a705), [`604a79f`](https://github.com/mastra-ai/mastra/commit/604a79fecf276e26a54a3fe01bb94e65315d2e0e), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`3a73998`](https://github.com/mastra-ai/mastra/commit/3a73998fa4ebeb7f3dc9301afe78095fc63e7999), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`887f0b4`](https://github.com/mastra-ai/mastra/commit/887f0b4746cdbd7cb7d6b17ac9f82aeb58037ea5), [`2562143`](https://github.com/mastra-ai/mastra/commit/256214336b4faa78646c9c1776612393790d8784), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`2ca67cc`](https://github.com/mastra-ai/mastra/commit/2ca67cc3bb1f6a617353fdcab197d9efebe60d6f), [`e16d553`](https://github.com/mastra-ai/mastra/commit/e16d55338403c7553531cc568125c63d53653dff), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`9e67002`](https://github.com/mastra-ai/mastra/commit/9e67002b52c9be19936c420a489dbee9c5fd6a78), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`35edc49`](https://github.com/mastra-ai/mastra/commit/35edc49ac0556db609189641d6341e76771b81fc), [`4d59f58`](https://github.com/mastra-ai/mastra/commit/4d59f58de2d90d6e2810a19d4518e38ddddb9038), [`ef11a61`](https://github.com/mastra-ai/mastra/commit/ef11a61920fa0ed08a5b7ceedd192875af119749), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365), [`351a11f`](https://github.com/mastra-ai/mastra/commit/351a11fcaf2ed1008977fa9b9a489fc422e51cd4), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`465ac05`](https://github.com/mastra-ai/mastra/commit/465ac0526a91d175542091c675181f1a96c98c46), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`e7266a2`](https://github.com/mastra-ai/mastra/commit/e7266a278db02035c97a5e9cd9d1669a6b7a535d), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
25
+ - @mastra/core@0.0.0-feat-improve-processors-20251205191721
26
+
27
+ ## Unreleased
28
+
29
+ - Initial release.
package/LICENSE.md ADDED
@@ -0,0 +1,15 @@
1
+ # Apache License 2.0
2
+
3
+ Copyright (c) 2025 Kepler Software, Inc.
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,123 @@
1
+ # @mastra/convex
2
+
3
+ Convex adapters for Mastra:
4
+
5
+ - `ConvexStore` implements the Mastra storage contract (threads, messages, workflows, scores, resources).
6
+ - `ConvexVector` stores embeddings inside Convex and performs cosine similarity search.
7
+ - `@mastra/convex/server` exposes the required Convex table definitions and storage mutation.
8
+
9
+ ## Quick start
10
+
11
+ ### 1. Install
12
+
13
+ ```bash
14
+ pnpm add @mastra/convex
15
+ ```
16
+
17
+ ### 2. Set up Convex schema
18
+
19
+ In `convex/schema.ts`:
20
+
21
+ ```ts
22
+ import { defineSchema } from 'convex/server';
23
+ import {
24
+ mastraThreadsTable,
25
+ mastraMessagesTable,
26
+ mastraResourcesTable,
27
+ mastraWorkflowSnapshotsTable,
28
+ mastraScoresTable,
29
+ mastraVectorIndexesTable,
30
+ mastraVectorsTable,
31
+ mastraDocumentsTable,
32
+ } from '@mastra/convex/server';
33
+
34
+ export default defineSchema({
35
+ mastra_threads: mastraThreadsTable,
36
+ mastra_messages: mastraMessagesTable,
37
+ mastra_resources: mastraResourcesTable,
38
+ mastra_workflow_snapshots: mastraWorkflowSnapshotsTable,
39
+ mastra_scorers: mastraScoresTable,
40
+ mastra_vector_indexes: mastraVectorIndexesTable,
41
+ mastra_vectors: mastraVectorsTable,
42
+ mastra_documents: mastraDocumentsTable,
43
+ });
44
+ ```
45
+
46
+ ### 3. Create the storage handler
47
+
48
+ In `convex/mastra/storage.ts`:
49
+
50
+ ```ts
51
+ import { mastraStorage } from '@mastra/convex/server';
52
+
53
+ export const handle = mastraStorage;
54
+ ```
55
+
56
+ ### 4. Deploy to Convex
57
+
58
+ ```bash
59
+ npx convex dev
60
+ # or for production
61
+ npx convex deploy
62
+ ```
63
+
64
+ ### 5. Use in Mastra
65
+
66
+ ```ts
67
+ import { ConvexStore } from '@mastra/convex';
68
+
69
+ const storage = new ConvexStore({
70
+ id: 'convex',
71
+ deploymentUrl: process.env.CONVEX_URL!,
72
+ adminAuthToken: process.env.CONVEX_ADMIN_KEY!,
73
+ storageFunction: 'mastra/storage:handle', // default
74
+ });
75
+ ```
76
+
77
+ For vectors:
78
+
79
+ ```ts
80
+ import { ConvexVector } from '@mastra/convex';
81
+
82
+ const vector = new ConvexVector({
83
+ id: 'convex-vectors',
84
+ deploymentUrl: process.env.CONVEX_URL!,
85
+ adminAuthToken: process.env.CONVEX_ADMIN_KEY!,
86
+ });
87
+ ```
88
+
89
+ ## Architecture
90
+
91
+ This adapter uses **typed Convex tables** for each Mastra domain:
92
+
93
+ | Domain | Convex Table | Purpose |
94
+ | -------------- | --------------------------- | -------------------- |
95
+ | Threads | `mastra_threads` | Conversation threads |
96
+ | Messages | `mastra_messages` | Chat messages |
97
+ | Resources | `mastra_resources` | User working memory |
98
+ | Workflows | `mastra_workflow_snapshots` | Workflow state |
99
+ | Scorers | `mastra_scorers` | Evaluation data |
100
+ | Vector Indexes | `mastra_vector_indexes` | Index metadata |
101
+ | Vectors | `mastra_vectors` | Embeddings |
102
+ | Fallback | `mastra_documents` | Unknown tables |
103
+
104
+ All typed tables include:
105
+
106
+ - An `id` field for Mastra's record ID (distinct from Convex's auto-generated `_id`)
107
+ - A `by_record_id` index for efficient lookups by Mastra ID
108
+
109
+ ## Testing
110
+
111
+ Set the following environment variables before running tests:
112
+
113
+ - `CONVEX_TEST_URL` – the Convex deployment URL (e.g., `https://your-name.convex.cloud`)
114
+ - `CONVEX_TEST_ADMIN_KEY` – an admin token for that deployment
115
+ - `CONVEX_TEST_STORAGE_FUNCTION` _(optional)_ – override if you mounted `mastraStorage` elsewhere
116
+
117
+ ```bash
118
+ pnpm --filter @mastra/convex test
119
+ ```
120
+
121
+ ## Status
122
+
123
+ Experimental – expect breaking changes while the adapter matures.
@@ -0,0 +1,362 @@
1
+ import { TABLE_SCORERS, TABLE_WORKFLOW_SNAPSHOT, TABLE_RESOURCES, TABLE_MESSAGES, TABLE_THREADS, TABLE_SCHEMAS } from '@mastra/core/storage';
2
+ export { TABLE_MESSAGES, TABLE_RESOURCES, TABLE_SCORERS, TABLE_THREADS, TABLE_WORKFLOW_SNAPSHOT } from '@mastra/core/storage';
3
+ import { mutationGeneric, defineTable } from 'convex/server';
4
+ import { v } from 'convex/values';
5
+
6
+ // src/server/storage.ts
7
+ var TABLE_VECTOR_INDEXES = "mastra_vector_indexes";
8
+ var VECTOR_TABLE_PREFIX = "mastra_vector_";
9
+ function resolveTable(tableName) {
10
+ switch (tableName) {
11
+ case TABLE_THREADS:
12
+ return { convexTable: "mastra_threads", isTyped: true };
13
+ case TABLE_MESSAGES:
14
+ return { convexTable: "mastra_messages", isTyped: true };
15
+ case TABLE_RESOURCES:
16
+ return { convexTable: "mastra_resources", isTyped: true };
17
+ case TABLE_WORKFLOW_SNAPSHOT:
18
+ return { convexTable: "mastra_workflow_snapshots", isTyped: true };
19
+ case TABLE_SCORERS:
20
+ return { convexTable: "mastra_scorers", isTyped: true };
21
+ case TABLE_VECTOR_INDEXES:
22
+ return { convexTable: "mastra_vector_indexes", isTyped: true };
23
+ default:
24
+ if (tableName.startsWith(VECTOR_TABLE_PREFIX)) {
25
+ return { convexTable: "mastra_vectors", isTyped: true };
26
+ }
27
+ return { convexTable: "mastra_documents", isTyped: false };
28
+ }
29
+ }
30
+ var mastraStorage = mutationGeneric(async (ctx, request) => {
31
+ try {
32
+ const { convexTable, isTyped } = resolveTable(request.tableName);
33
+ if (request.tableName.startsWith(VECTOR_TABLE_PREFIX) && request.tableName !== TABLE_VECTOR_INDEXES) {
34
+ return handleVectorOperation(ctx, request);
35
+ }
36
+ if (isTyped) {
37
+ return handleTypedOperation(ctx, convexTable, request);
38
+ }
39
+ return handleGenericOperation(ctx, request);
40
+ } catch (error) {
41
+ const err = error;
42
+ return {
43
+ ok: false,
44
+ error: err.message
45
+ };
46
+ }
47
+ });
48
+ async function handleTypedOperation(ctx, convexTable, request) {
49
+ switch (request.op) {
50
+ case "insert": {
51
+ const record = request.record;
52
+ const id = record.id;
53
+ if (!id) {
54
+ throw new Error(`Record is missing an id`);
55
+ }
56
+ const existing = await ctx.db.query(convexTable).withIndex("by_record_id", (q) => q.eq("id", id)).unique();
57
+ if (existing) {
58
+ const { id: _, ...updateData } = record;
59
+ await ctx.db.patch(existing._id, updateData);
60
+ } else {
61
+ await ctx.db.insert(convexTable, record);
62
+ }
63
+ return { ok: true };
64
+ }
65
+ case "batchInsert": {
66
+ for (const record of request.records) {
67
+ const id = record.id;
68
+ if (!id) continue;
69
+ const existing = await ctx.db.query(convexTable).withIndex("by_record_id", (q) => q.eq("id", id)).unique();
70
+ if (existing) {
71
+ const { id: _, ...updateData } = record;
72
+ await ctx.db.patch(existing._id, updateData);
73
+ } else {
74
+ await ctx.db.insert(convexTable, record);
75
+ }
76
+ }
77
+ return { ok: true };
78
+ }
79
+ case "load": {
80
+ const keys = request.keys;
81
+ if (keys.id) {
82
+ const doc = await ctx.db.query(convexTable).withIndex("by_record_id", (q) => q.eq("id", keys.id)).unique();
83
+ return { ok: true, result: doc || null };
84
+ }
85
+ const docs = await ctx.db.query(convexTable).take(1e4);
86
+ const match = docs.find((doc) => Object.entries(keys).every(([key, value]) => doc[key] === value));
87
+ return { ok: true, result: match || null };
88
+ }
89
+ case "queryTable": {
90
+ const maxDocs = request.limit ? Math.min(request.limit * 2, 1e4) : 1e4;
91
+ let docs = await ctx.db.query(convexTable).take(maxDocs);
92
+ if (request.filters && request.filters.length > 0) {
93
+ docs = docs.filter((doc) => request.filters.every((filter) => doc[filter.field] === filter.value));
94
+ }
95
+ if (request.limit) {
96
+ docs = docs.slice(0, request.limit);
97
+ }
98
+ return { ok: true, result: docs };
99
+ }
100
+ case "clearTable":
101
+ case "dropTable": {
102
+ const BATCH_SIZE = 25;
103
+ const docs = await ctx.db.query(convexTable).take(BATCH_SIZE + 1);
104
+ const hasMore = docs.length > BATCH_SIZE;
105
+ const docsToDelete = hasMore ? docs.slice(0, BATCH_SIZE) : docs;
106
+ for (const doc of docsToDelete) {
107
+ await ctx.db.delete(doc._id);
108
+ }
109
+ return { ok: true, hasMore };
110
+ }
111
+ case "deleteMany": {
112
+ for (const id of request.ids) {
113
+ const doc = await ctx.db.query(convexTable).withIndex("by_record_id", (q) => q.eq("id", id)).unique();
114
+ if (doc) {
115
+ await ctx.db.delete(doc._id);
116
+ }
117
+ }
118
+ return { ok: true };
119
+ }
120
+ default:
121
+ return { ok: false, error: `Unsupported operation ${request.op}` };
122
+ }
123
+ }
124
+ async function handleVectorOperation(ctx, request) {
125
+ const indexName = request.tableName.replace(VECTOR_TABLE_PREFIX, "");
126
+ const convexTable = "mastra_vectors";
127
+ switch (request.op) {
128
+ case "insert": {
129
+ const record = request.record;
130
+ const id = record.id;
131
+ if (!id) {
132
+ throw new Error(`Vector record is missing an id`);
133
+ }
134
+ const existing = await ctx.db.query(convexTable).withIndex("by_index_id", (q) => q.eq("indexName", indexName).eq("id", id)).unique();
135
+ if (existing) {
136
+ await ctx.db.patch(existing._id, {
137
+ embedding: record.embedding,
138
+ metadata: record.metadata
139
+ });
140
+ } else {
141
+ await ctx.db.insert(convexTable, {
142
+ id,
143
+ indexName,
144
+ embedding: record.embedding,
145
+ metadata: record.metadata
146
+ });
147
+ }
148
+ return { ok: true };
149
+ }
150
+ case "batchInsert": {
151
+ for (const record of request.records) {
152
+ const id = record.id;
153
+ if (!id) continue;
154
+ const existing = await ctx.db.query(convexTable).withIndex("by_index_id", (q) => q.eq("indexName", indexName).eq("id", id)).unique();
155
+ if (existing) {
156
+ await ctx.db.patch(existing._id, {
157
+ embedding: record.embedding,
158
+ metadata: record.metadata
159
+ });
160
+ } else {
161
+ await ctx.db.insert(convexTable, {
162
+ id,
163
+ indexName,
164
+ embedding: record.embedding,
165
+ metadata: record.metadata
166
+ });
167
+ }
168
+ }
169
+ return { ok: true };
170
+ }
171
+ case "load": {
172
+ const keys = request.keys;
173
+ if (keys.id) {
174
+ const doc = await ctx.db.query(convexTable).withIndex("by_index_id", (q) => q.eq("indexName", indexName).eq("id", keys.id)).unique();
175
+ return { ok: true, result: doc || null };
176
+ }
177
+ return { ok: true, result: null };
178
+ }
179
+ case "queryTable": {
180
+ const maxDocs = request.limit ? Math.min(request.limit * 2, 1e4) : 1e4;
181
+ let docs = await ctx.db.query(convexTable).withIndex("by_index", (q) => q.eq("indexName", indexName)).take(maxDocs);
182
+ if (request.filters && request.filters.length > 0) {
183
+ docs = docs.filter((doc) => request.filters.every((filter) => doc[filter.field] === filter.value));
184
+ }
185
+ if (request.limit) {
186
+ docs = docs.slice(0, request.limit);
187
+ }
188
+ return { ok: true, result: docs };
189
+ }
190
+ case "clearTable":
191
+ case "dropTable": {
192
+ const BATCH_SIZE = 25;
193
+ const docs = await ctx.db.query(convexTable).withIndex("by_index", (q) => q.eq("indexName", indexName)).take(BATCH_SIZE + 1);
194
+ const hasMore = docs.length > BATCH_SIZE;
195
+ const docsToDelete = hasMore ? docs.slice(0, BATCH_SIZE) : docs;
196
+ for (const doc of docsToDelete) {
197
+ await ctx.db.delete(doc._id);
198
+ }
199
+ return { ok: true, hasMore };
200
+ }
201
+ case "deleteMany": {
202
+ for (const id of request.ids) {
203
+ const doc = await ctx.db.query(convexTable).withIndex("by_index_id", (q) => q.eq("indexName", indexName).eq("id", id)).unique();
204
+ if (doc) {
205
+ await ctx.db.delete(doc._id);
206
+ }
207
+ }
208
+ return { ok: true };
209
+ }
210
+ default:
211
+ return { ok: false, error: `Unsupported operation ${request.op}` };
212
+ }
213
+ }
214
+ async function handleGenericOperation(ctx, request) {
215
+ const tableName = request.tableName;
216
+ const convexTable = "mastra_documents";
217
+ switch (request.op) {
218
+ case "insert": {
219
+ const record = request.record;
220
+ if (!record.id) {
221
+ throw new Error(`Record for table ${tableName} is missing an id`);
222
+ }
223
+ const primaryKey = String(record.id);
224
+ const existing = await ctx.db.query(convexTable).withIndex("by_table_primary", (q) => q.eq("table", tableName).eq("primaryKey", primaryKey)).unique();
225
+ if (existing) {
226
+ await ctx.db.patch(existing._id, { record });
227
+ } else {
228
+ await ctx.db.insert(convexTable, {
229
+ table: tableName,
230
+ primaryKey,
231
+ record
232
+ });
233
+ }
234
+ return { ok: true };
235
+ }
236
+ case "batchInsert": {
237
+ for (const record of request.records) {
238
+ if (!record.id) continue;
239
+ const primaryKey = String(record.id);
240
+ const existing = await ctx.db.query(convexTable).withIndex("by_table_primary", (q) => q.eq("table", tableName).eq("primaryKey", primaryKey)).unique();
241
+ if (existing) {
242
+ await ctx.db.patch(existing._id, { record });
243
+ } else {
244
+ await ctx.db.insert(convexTable, {
245
+ table: tableName,
246
+ primaryKey,
247
+ record
248
+ });
249
+ }
250
+ }
251
+ return { ok: true };
252
+ }
253
+ case "load": {
254
+ const keys = request.keys;
255
+ if (keys.id) {
256
+ const existing = await ctx.db.query(convexTable).withIndex("by_table_primary", (q) => q.eq("table", tableName).eq("primaryKey", String(keys.id))).unique();
257
+ return { ok: true, result: existing ? existing.record : null };
258
+ }
259
+ const docs = await ctx.db.query(convexTable).withIndex("by_table", (q) => q.eq("table", tableName)).take(1e4);
260
+ const match = docs.find((doc) => Object.entries(keys).every(([key, value]) => doc.record?.[key] === value));
261
+ return { ok: true, result: match ? match.record : null };
262
+ }
263
+ case "queryTable": {
264
+ const maxDocs = request.limit ? Math.min(request.limit * 2, 1e4) : 1e4;
265
+ const docs = await ctx.db.query(convexTable).withIndex("by_table", (q) => q.eq("table", tableName)).take(maxDocs);
266
+ let records = docs.map((doc) => doc.record);
267
+ if (request.filters && request.filters.length > 0) {
268
+ records = records.filter(
269
+ (record) => request.filters.every((filter) => record?.[filter.field] === filter.value)
270
+ );
271
+ }
272
+ if (request.limit) {
273
+ records = records.slice(0, request.limit);
274
+ }
275
+ return { ok: true, result: records };
276
+ }
277
+ case "clearTable":
278
+ case "dropTable": {
279
+ const BATCH_SIZE = 25;
280
+ const docs = await ctx.db.query(convexTable).withIndex("by_table", (q) => q.eq("table", tableName)).take(BATCH_SIZE + 1);
281
+ const hasMore = docs.length > BATCH_SIZE;
282
+ const docsToDelete = hasMore ? docs.slice(0, BATCH_SIZE) : docs;
283
+ for (const doc of docsToDelete) {
284
+ await ctx.db.delete(doc._id);
285
+ }
286
+ return { ok: true, hasMore };
287
+ }
288
+ case "deleteMany": {
289
+ for (const id of request.ids) {
290
+ const existing = await ctx.db.query(convexTable).withIndex("by_table_primary", (q) => q.eq("table", tableName).eq("primaryKey", String(id))).unique();
291
+ if (existing) {
292
+ await ctx.db.delete(existing._id);
293
+ }
294
+ }
295
+ return { ok: true };
296
+ }
297
+ default:
298
+ return { ok: false, error: `Unsupported operation ${request.op}` };
299
+ }
300
+ }
301
+ function columnToValidator(column) {
302
+ let validator;
303
+ switch (column.type) {
304
+ case "text":
305
+ validator = v.string();
306
+ break;
307
+ case "integer":
308
+ case "bigint":
309
+ case "float":
310
+ validator = v.number();
311
+ break;
312
+ case "boolean":
313
+ validator = v.boolean();
314
+ break;
315
+ case "timestamp":
316
+ validator = v.string();
317
+ break;
318
+ case "jsonb":
319
+ case "json":
320
+ validator = v.any();
321
+ break;
322
+ default:
323
+ validator = v.any();
324
+ }
325
+ return column.nullable ? v.optional(validator) : validator;
326
+ }
327
+ function buildTableFromSchema(schema) {
328
+ const fields = {};
329
+ for (const [key, column] of Object.entries(schema)) {
330
+ fields[key] = columnToValidator(column);
331
+ }
332
+ return fields;
333
+ }
334
+ var mastraThreadsTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_THREADS])).index("by_record_id", ["id"]).index("by_resource", ["resourceId"]).index("by_created", ["createdAt"]).index("by_updated", ["updatedAt"]);
335
+ var mastraMessagesTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_MESSAGES])).index("by_record_id", ["id"]).index("by_thread", ["thread_id"]).index("by_thread_created", ["thread_id", "createdAt"]).index("by_resource", ["resourceId"]);
336
+ var mastraResourcesTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_RESOURCES])).index("by_record_id", ["id"]).index("by_updated", ["updatedAt"]);
337
+ var mastraWorkflowSnapshotsTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_WORKFLOW_SNAPSHOT])).index("by_record_id", ["id"]).index("by_workflow_run", ["workflow_name", "run_id"]).index("by_workflow", ["workflow_name"]).index("by_resource", ["resourceId"]).index("by_created", ["createdAt"]);
338
+ var mastraScoresTable = defineTable(buildTableFromSchema(TABLE_SCHEMAS[TABLE_SCORERS])).index("by_record_id", ["id"]).index("by_scorer", ["scorerId"]).index("by_entity", ["entityId", "entityType"]).index("by_run", ["runId"]).index("by_created", ["createdAt"]);
339
+ var mastraVectorIndexesTable = defineTable({
340
+ id: v.string(),
341
+ // Mastra record ID (same as indexName)
342
+ indexName: v.string(),
343
+ dimension: v.number(),
344
+ metric: v.string(),
345
+ createdAt: v.string()
346
+ }).index("by_record_id", ["id"]).index("by_name", ["indexName"]);
347
+ var mastraVectorsTable = defineTable({
348
+ id: v.string(),
349
+ // Mastra record ID
350
+ indexName: v.string(),
351
+ embedding: v.array(v.float64()),
352
+ metadata: v.optional(v.any())
353
+ }).index("by_index_id", ["indexName", "id"]).index("by_index", ["indexName"]);
354
+ var mastraDocumentsTable = defineTable({
355
+ table: v.string(),
356
+ primaryKey: v.string(),
357
+ record: v.any()
358
+ }).index("by_table", ["table"]).index("by_table_primary", ["table", "primaryKey"]);
359
+
360
+ export { mastraDocumentsTable, mastraMessagesTable, mastraResourcesTable, mastraScoresTable, mastraStorage, mastraThreadsTable, mastraVectorIndexesTable, mastraVectorsTable, mastraWorkflowSnapshotsTable };
361
+ //# sourceMappingURL=chunk-NZCHEPNU.js.map
362
+ //# sourceMappingURL=chunk-NZCHEPNU.js.map