@mastra/core 1.2.1-alpha.0 → 1.3.0-alpha.2

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 (403) hide show
  1. package/CHANGELOG.md +341 -0
  2. package/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +2093 -262
  3. package/dist/agent/agent-legacy.d.ts.map +1 -1
  4. package/dist/agent/agent.d.ts +12 -3
  5. package/dist/agent/agent.d.ts.map +1 -1
  6. package/dist/agent/index.cjs +13 -13
  7. package/dist/agent/index.js +2 -2
  8. package/dist/agent/message-list/index.cjs +18 -18
  9. package/dist/agent/message-list/index.js +1 -1
  10. package/dist/agent/message-list/message-list.d.ts.map +1 -1
  11. package/dist/agent/types.d.ts +6 -1
  12. package/dist/agent/types.d.ts.map +1 -1
  13. package/dist/agent/workflows/prepare-stream/index.d.ts +3 -1
  14. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  15. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  16. package/dist/agent/workflows/prepare-stream/stream-step.d.ts +3 -1
  17. package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
  18. package/dist/base.cjs +2 -2
  19. package/dist/base.d.ts +13 -1
  20. package/dist/base.d.ts.map +1 -1
  21. package/dist/base.js +1 -1
  22. package/dist/bundler/index.cjs +2 -2
  23. package/dist/bundler/index.js +1 -1
  24. package/dist/cache/index.cjs +3 -3
  25. package/dist/cache/index.js +1 -1
  26. package/dist/{chunk-ENCTSDWC.js → chunk-2GWTJFVM.js} +2410 -1402
  27. package/dist/chunk-2GWTJFVM.js.map +1 -0
  28. package/dist/{chunk-OB4V67IX.cjs → chunk-2K5PNW2U.cjs} +4 -4
  29. package/dist/{chunk-OB4V67IX.cjs.map → chunk-2K5PNW2U.cjs.map} +1 -1
  30. package/dist/{chunk-VZXYBFCX.cjs → chunk-2P6DD7M5.cjs} +10 -10
  31. package/dist/{chunk-VZXYBFCX.cjs.map → chunk-2P6DD7M5.cjs.map} +1 -1
  32. package/dist/{chunk-Q2D7LERO.cjs → chunk-2VD5OGOT.cjs} +4 -4
  33. package/dist/{chunk-Q2D7LERO.cjs.map → chunk-2VD5OGOT.cjs.map} +1 -1
  34. package/dist/{chunk-2DMSFLJY.cjs → chunk-6TZKQI4R.cjs} +8 -8
  35. package/dist/chunk-6TZKQI4R.cjs.map +1 -0
  36. package/dist/{chunk-4NG7CKEG.js → chunk-6VGCVSP4.js} +3 -3
  37. package/dist/{chunk-4NG7CKEG.js.map → chunk-6VGCVSP4.js.map} +1 -1
  38. package/dist/{chunk-IIZF4W7B.cjs → chunk-7UWHFWST.cjs} +52 -5
  39. package/dist/chunk-7UWHFWST.cjs.map +1 -0
  40. package/dist/{chunk-VW7YQWDW.cjs → chunk-BFIOQFGF.cjs} +28 -2
  41. package/dist/chunk-BFIOQFGF.cjs.map +1 -0
  42. package/dist/{chunk-E3VFKTIA.js → chunk-BXLLXTT4.js} +2245 -179
  43. package/dist/chunk-BXLLXTT4.js.map +1 -0
  44. package/dist/{chunk-HMCXNOF6.cjs → chunk-CGPH7CMG.cjs} +2431 -1417
  45. package/dist/chunk-CGPH7CMG.cjs.map +1 -0
  46. package/dist/{chunk-GVLPTDJA.cjs → chunk-D5JZT6EK.cjs} +236 -63
  47. package/dist/chunk-D5JZT6EK.cjs.map +1 -0
  48. package/dist/{chunk-5SOS47PH.cjs → chunk-FLHFB23E.cjs} +454 -222
  49. package/dist/chunk-FLHFB23E.cjs.map +1 -0
  50. package/dist/{chunk-XCPEEIHI.cjs → chunk-GCTAD6B7.cjs} +3012 -927
  51. package/dist/chunk-GCTAD6B7.cjs.map +1 -0
  52. package/dist/{chunk-W3AQUG66.js → chunk-GIY5BINT.js} +4 -4
  53. package/dist/{chunk-W3AQUG66.js.map → chunk-GIY5BINT.js.map} +1 -1
  54. package/dist/{chunk-M6VFJX5A.js → chunk-GMSAGYTB.js} +3 -3
  55. package/dist/{chunk-M6VFJX5A.js.map → chunk-GMSAGYTB.js.map} +1 -1
  56. package/dist/{chunk-JRJJ5VQE.cjs → chunk-GZD6443M.cjs} +99 -55
  57. package/dist/chunk-GZD6443M.cjs.map +1 -0
  58. package/dist/{chunk-Z6NRYYOH.js → chunk-ILQXPZCD.js} +9 -4
  59. package/dist/chunk-ILQXPZCD.js.map +1 -0
  60. package/dist/{chunk-5YVR7B4R.js → chunk-JQNREL64.js} +29 -9
  61. package/dist/chunk-JQNREL64.js.map +1 -0
  62. package/dist/{chunk-QOFI2WBM.cjs → chunk-JU6K7UDX.cjs} +991 -229
  63. package/dist/chunk-JU6K7UDX.cjs.map +1 -0
  64. package/dist/{chunk-HN2MSTR6.cjs → chunk-KAJNBNWP.cjs} +283 -38
  65. package/dist/chunk-KAJNBNWP.cjs.map +1 -0
  66. package/dist/{chunk-MSWXEOZC.js → chunk-KL2JPSRX.js} +5 -5
  67. package/dist/chunk-KL2JPSRX.js.map +1 -0
  68. package/dist/{chunk-MQB7XFXP.js → chunk-LHRHOPUC.js} +3 -3
  69. package/dist/{chunk-MQB7XFXP.js.map → chunk-LHRHOPUC.js.map} +1 -1
  70. package/dist/{chunk-VX7UA3SO.js → chunk-MOOJ3H3C.js} +974 -217
  71. package/dist/chunk-MOOJ3H3C.js.map +1 -0
  72. package/dist/{chunk-HU2ONA2W.cjs → chunk-ON2KVIUJ.cjs} +17 -17
  73. package/dist/{chunk-HU2ONA2W.cjs.map → chunk-ON2KVIUJ.cjs.map} +1 -1
  74. package/dist/{chunk-I66TMZJ3.cjs → chunk-OOCEAC6U.cjs} +21 -18
  75. package/dist/chunk-OOCEAC6U.cjs.map +1 -0
  76. package/dist/{chunk-MNWW2R3U.js → chunk-OV7OOUUR.js} +90 -54
  77. package/dist/chunk-OV7OOUUR.js.map +1 -0
  78. package/dist/{chunk-C4WWWQHT.cjs → chunk-RO47SMI7.cjs} +23 -3
  79. package/dist/chunk-RO47SMI7.cjs.map +1 -0
  80. package/dist/{chunk-6FG6FU5Y.cjs → chunk-RQ56ZSIR.cjs} +4 -4
  81. package/dist/{chunk-6FG6FU5Y.cjs.map → chunk-RQ56ZSIR.cjs.map} +1 -1
  82. package/dist/{chunk-IW3BNL7A.js → chunk-RS6CZXGA.js} +50 -3
  83. package/dist/chunk-RS6CZXGA.js.map +1 -0
  84. package/dist/{chunk-AIJLACR2.js → chunk-S53FKKVL.js} +27 -3
  85. package/dist/chunk-S53FKKVL.js.map +1 -0
  86. package/dist/{chunk-G6E3QNJC.js → chunk-SBPPGJL6.js} +4078 -4333
  87. package/dist/chunk-SBPPGJL6.js.map +1 -0
  88. package/dist/{chunk-UZL4H5P2.cjs → chunk-SH4PCZ3X.cjs} +5375 -5648
  89. package/dist/chunk-SH4PCZ3X.cjs.map +1 -0
  90. package/dist/{chunk-ZWM2CAIM.js → chunk-STKNQDVA.js} +4 -4
  91. package/dist/{chunk-ZWM2CAIM.js.map → chunk-STKNQDVA.js.map} +1 -1
  92. package/dist/{chunk-A5QFWX67.cjs → chunk-U2CABSMC.cjs} +79 -59
  93. package/dist/chunk-U2CABSMC.cjs.map +1 -0
  94. package/dist/{chunk-7MDVYPWX.cjs → chunk-UE2G2LRP.cjs} +9 -4
  95. package/dist/chunk-UE2G2LRP.cjs.map +1 -0
  96. package/dist/{chunk-AUF6U2BL.js → chunk-VM25PDSW.js} +5 -5
  97. package/dist/{chunk-AUF6U2BL.js.map → chunk-VM25PDSW.js.map} +1 -1
  98. package/dist/{chunk-RXD5EGQF.js → chunk-VVD56FI4.js} +228 -55
  99. package/dist/chunk-VVD56FI4.js.map +1 -0
  100. package/dist/{chunk-JIT2OY3X.js → chunk-WCAFTXGK.js} +23 -3
  101. package/dist/chunk-WCAFTXGK.js.map +1 -0
  102. package/dist/{chunk-P62OJXQ4.js → chunk-WL3AW3YA.js} +282 -37
  103. package/dist/chunk-WL3AW3YA.js.map +1 -0
  104. package/dist/{chunk-YLODOPYM.cjs → chunk-XDD5V446.cjs} +4163 -5352
  105. package/dist/chunk-XDD5V446.cjs.map +1 -0
  106. package/dist/{chunk-B4M33FCS.cjs → chunk-XQVYEOI7.cjs} +7 -7
  107. package/dist/{chunk-B4M33FCS.cjs.map → chunk-XQVYEOI7.cjs.map} +1 -1
  108. package/dist/{chunk-BP2TSCBW.js → chunk-ZATLLPIH.js} +4391 -5561
  109. package/dist/chunk-ZATLLPIH.js.map +1 -0
  110. package/dist/{chunk-T6PRRKMW.js → chunk-ZHFM7HCQ.js} +9 -6
  111. package/dist/chunk-ZHFM7HCQ.js.map +1 -0
  112. package/dist/{chunk-WFUNLRQX.js → chunk-ZRUTE56J.js} +366 -134
  113. package/dist/chunk-ZRUTE56J.js.map +1 -0
  114. package/dist/deployer/index.cjs +2 -2
  115. package/dist/deployer/index.js +1 -1
  116. package/dist/docs/SKILL.md +2 -9
  117. package/dist/docs/assets/SOURCE_MAP.json +399 -342
  118. package/dist/docs/references/docs-agents-agent-memory.md +45 -1
  119. package/dist/docs/references/docs-agents-network-approval.md +1 -1
  120. package/dist/docs/references/docs-agents-networks.md +3 -3
  121. package/dist/docs/references/docs-agents-overview.md +8 -0
  122. package/dist/docs/references/docs-agents-using-tools.md +82 -72
  123. package/dist/docs/references/docs-memory-observational-memory.md +11 -8
  124. package/dist/docs/references/docs-observability-overview.md +1 -1
  125. package/dist/docs/references/docs-observability-tracing-exporters-langsmith.md +70 -0
  126. package/dist/docs/references/docs-observability-tracing-overview.md +1 -1
  127. package/dist/docs/references/docs-server-middleware.md +0 -2
  128. package/dist/docs/references/docs-server-request-context.md +17 -0
  129. package/dist/docs/references/docs-workflows-agents-and-tools.md +2 -2
  130. package/dist/docs/references/docs-workflows-overview.md +1 -1
  131. package/dist/docs/references/docs-workspace-filesystem.md +2 -0
  132. package/dist/docs/references/docs-workspace-overview.md +3 -1
  133. package/dist/docs/references/docs-workspace-sandbox.md +2 -0
  134. package/dist/docs/references/docs-workspace-search.md +2 -0
  135. package/dist/docs/references/docs-workspace-skills.md +3 -1
  136. package/dist/docs/references/reference-agents-getTools.md +1 -6
  137. package/dist/docs/references/reference-agents-listAgents.md +1 -1
  138. package/dist/docs/references/reference-agents-network.md +0 -2
  139. package/dist/docs/references/reference-cli-mastra.md +29 -4
  140. package/dist/docs/references/reference-client-js-agents.md +1 -1
  141. package/dist/docs/references/reference-configuration.md +1 -1
  142. package/dist/docs/references/reference-core-getStoredAgentById.md +2 -2
  143. package/dist/docs/references/reference-core-listStoredAgents.md +1 -1
  144. package/dist/docs/references/reference-memory-observational-memory.md +2 -0
  145. package/dist/docs/references/reference-tools-mcp-client.md +0 -2
  146. package/dist/docs/references/reference-workflows-step.md +2 -0
  147. package/dist/docs/references/reference-workflows-workflow-methods-map.md +2 -2
  148. package/dist/docs/references/reference-workspace-filesystem.md +2 -0
  149. package/dist/docs/references/reference-workspace-local-filesystem.md +2 -0
  150. package/dist/docs/references/reference-workspace-local-sandbox.md +2 -0
  151. package/dist/docs/references/reference-workspace-sandbox.md +2 -0
  152. package/dist/docs/references/reference-workspace-workspace-class.md +2 -0
  153. package/dist/docs/references/reference.md +7 -2
  154. package/dist/editor/index.d.ts +1 -1
  155. package/dist/editor/index.d.ts.map +1 -1
  156. package/dist/editor/types.d.ts +53 -48
  157. package/dist/editor/types.d.ts.map +1 -1
  158. package/dist/evals/base.d.ts +15 -0
  159. package/dist/evals/base.d.ts.map +1 -1
  160. package/dist/evals/index.cjs +20 -20
  161. package/dist/evals/index.js +3 -3
  162. package/dist/evals/run/index.d.ts +3 -3
  163. package/dist/evals/run/index.d.ts.map +1 -1
  164. package/dist/evals/scoreTraces/index.cjs +5 -5
  165. package/dist/evals/scoreTraces/index.js +2 -2
  166. package/dist/features/index.cjs +1 -1
  167. package/dist/features/index.cjs.map +1 -1
  168. package/dist/features/index.d.ts.map +1 -1
  169. package/dist/features/index.js +1 -1
  170. package/dist/features/index.js.map +1 -1
  171. package/dist/index.cjs +4 -4
  172. package/dist/index.d.ts +3 -3
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +2 -2
  175. package/dist/integration/index.cjs +2 -2
  176. package/dist/integration/index.js +1 -1
  177. package/dist/llm/index.cjs +16 -16
  178. package/dist/llm/index.js +5 -5
  179. package/dist/llm/model/gateways/constants.d.ts.map +1 -1
  180. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  181. package/dist/llm/model/model.loop.d.ts +1 -1
  182. package/dist/llm/model/model.loop.d.ts.map +1 -1
  183. package/dist/llm/model/provider-types.generated.d.ts +128 -10
  184. package/dist/llm/model/resolve-model.d.ts.map +1 -1
  185. package/dist/loop/index.cjs +12 -12
  186. package/dist/loop/index.js +1 -1
  187. package/dist/loop/network/index.d.ts +3 -3
  188. package/dist/loop/network/index.d.ts.map +1 -1
  189. package/dist/loop/network/run-command-tool.d.ts +1 -1
  190. package/dist/loop/types.d.ts +13 -0
  191. package/dist/loop/types.d.ts.map +1 -1
  192. package/dist/loop/workflows/agentic-execution/index.d.ts +9 -9
  193. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +7 -7
  194. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  195. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +3 -3
  196. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  197. package/dist/loop/workflows/agentic-loop/index.d.ts +9 -9
  198. package/dist/loop/workflows/schema.d.ts +12 -12
  199. package/dist/mastra/index.cjs +2 -2
  200. package/dist/mastra/index.d.ts +91 -5
  201. package/dist/mastra/index.d.ts.map +1 -1
  202. package/dist/mastra/index.js +1 -1
  203. package/dist/mcp/index.cjs +2 -2
  204. package/dist/mcp/index.js +1 -1
  205. package/dist/memory/index.cjs +14 -14
  206. package/dist/memory/index.js +1 -1
  207. package/dist/memory/mock.d.ts.map +1 -1
  208. package/dist/memory/types.d.ts +128 -0
  209. package/dist/memory/types.d.ts.map +1 -1
  210. package/dist/models-dev-FQVUTQ7L.js +3 -0
  211. package/dist/{models-dev-Z45JSLWD.js.map → models-dev-FQVUTQ7L.js.map} +1 -1
  212. package/dist/models-dev-PPIXUUCU.cjs +12 -0
  213. package/dist/{models-dev-OQKVMEIT.cjs.map → models-dev-PPIXUUCU.cjs.map} +1 -1
  214. package/dist/netlify-4RIKF7Y3.js +3 -0
  215. package/dist/{netlify-SSWMYSAX.js.map → netlify-4RIKF7Y3.js.map} +1 -1
  216. package/dist/netlify-V5F7JEJH.cjs +12 -0
  217. package/dist/{netlify-TXZZCT6N.cjs.map → netlify-V5F7JEJH.cjs.map} +1 -1
  218. package/dist/processors/index.cjs +41 -41
  219. package/dist/processors/index.js +1 -1
  220. package/dist/processors/step-schema.d.ts +44 -44
  221. package/dist/provider-registry-C6XCYX44.cjs +40 -0
  222. package/dist/{provider-registry-NR7FXV2Q.cjs.map → provider-registry-C6XCYX44.cjs.map} +1 -1
  223. package/dist/provider-registry-NWU4YFQW.js +3 -0
  224. package/dist/{provider-registry-RPOTQNHI.js.map → provider-registry-NWU4YFQW.js.map} +1 -1
  225. package/dist/provider-registry.json +278 -33
  226. package/dist/relevance/index.cjs +3 -3
  227. package/dist/relevance/index.js +1 -1
  228. package/dist/server/index.cjs +3 -3
  229. package/dist/server/index.js +1 -1
  230. package/dist/storage/base.d.ts +3 -1
  231. package/dist/storage/base.d.ts.map +1 -1
  232. package/dist/storage/constants.cjs +51 -19
  233. package/dist/storage/constants.d.ts +10 -2
  234. package/dist/storage/constants.d.ts.map +1 -1
  235. package/dist/storage/constants.js +1 -1
  236. package/dist/storage/domains/agents/base.d.ts +13 -164
  237. package/dist/storage/domains/agents/base.d.ts.map +1 -1
  238. package/dist/storage/domains/agents/index.d.ts +0 -1
  239. package/dist/storage/domains/agents/index.d.ts.map +1 -1
  240. package/dist/storage/domains/agents/inmemory.d.ts +6 -10
  241. package/dist/storage/domains/agents/inmemory.d.ts.map +1 -1
  242. package/dist/storage/domains/index.d.ts +3 -0
  243. package/dist/storage/domains/index.d.ts.map +1 -1
  244. package/dist/storage/domains/inmemory-db.d.ts +7 -1
  245. package/dist/storage/domains/inmemory-db.d.ts.map +1 -1
  246. package/dist/storage/domains/memory/base.d.ts +45 -5
  247. package/dist/storage/domains/memory/base.d.ts.map +1 -1
  248. package/dist/storage/domains/memory/inmemory.d.ts +7 -7
  249. package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
  250. package/dist/storage/domains/observability/types.d.ts +62 -62
  251. package/dist/storage/domains/operations/inmemory.d.ts.map +1 -1
  252. package/dist/storage/domains/prompt-blocks/base.d.ts +47 -0
  253. package/dist/storage/domains/prompt-blocks/base.d.ts.map +1 -0
  254. package/dist/storage/domains/prompt-blocks/index.d.ts +3 -0
  255. package/dist/storage/domains/prompt-blocks/index.d.ts.map +1 -0
  256. package/dist/storage/domains/prompt-blocks/inmemory.d.ts +31 -0
  257. package/dist/storage/domains/prompt-blocks/inmemory.d.ts.map +1 -0
  258. package/dist/storage/domains/scorer-definitions/base.d.ts +47 -0
  259. package/dist/storage/domains/scorer-definitions/base.d.ts.map +1 -0
  260. package/dist/storage/domains/scorer-definitions/index.d.ts +3 -0
  261. package/dist/storage/domains/scorer-definitions/index.d.ts.map +1 -0
  262. package/dist/storage/domains/scorer-definitions/inmemory.d.ts +31 -0
  263. package/dist/storage/domains/scorer-definitions/inmemory.d.ts.map +1 -0
  264. package/dist/storage/domains/versioned.d.ts +136 -0
  265. package/dist/storage/domains/versioned.d.ts.map +1 -0
  266. package/dist/storage/index.cjs +156 -104
  267. package/dist/storage/index.js +2 -2
  268. package/dist/storage/mock.d.ts.map +1 -1
  269. package/dist/storage/types.d.ts +481 -27
  270. package/dist/storage/types.d.ts.map +1 -1
  271. package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
  272. package/dist/stream/MastraWorkflowStream.d.ts +1 -1
  273. package/dist/stream/RunOutput.d.ts +1 -1
  274. package/dist/stream/RunOutput.d.ts.map +1 -1
  275. package/dist/stream/base/output.d.ts +4 -0
  276. package/dist/stream/base/output.d.ts.map +1 -1
  277. package/dist/stream/index.cjs +11 -11
  278. package/dist/stream/index.js +2 -2
  279. package/dist/test-utils/llm-mock.cjs +4 -4
  280. package/dist/test-utils/llm-mock.js +1 -1
  281. package/dist/tool-loop-agent/index.cjs +4 -4
  282. package/dist/tool-loop-agent/index.js +1 -1
  283. package/dist/tools/index.cjs +4 -4
  284. package/dist/tools/index.js +1 -1
  285. package/dist/tools/is-vercel-tool.cjs +2 -2
  286. package/dist/tools/is-vercel-tool.js +1 -1
  287. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  288. package/dist/tools/types.d.ts +15 -0
  289. package/dist/tools/types.d.ts.map +1 -1
  290. package/dist/tools/validation.d.ts.map +1 -1
  291. package/dist/tts/index.cjs +2 -2
  292. package/dist/tts/index.js +1 -1
  293. package/dist/types/zod-compat.d.ts +2 -2
  294. package/dist/types/zod-compat.d.ts.map +1 -1
  295. package/dist/utils/zod-utils.d.ts +19 -0
  296. package/dist/utils/zod-utils.d.ts.map +1 -1
  297. package/dist/utils.cjs +28 -28
  298. package/dist/utils.d.ts +7 -1
  299. package/dist/utils.d.ts.map +1 -1
  300. package/dist/utils.js +2 -2
  301. package/dist/vector/index.cjs +9 -9
  302. package/dist/vector/index.js +2 -2
  303. package/dist/voice/index.cjs +6 -6
  304. package/dist/voice/index.js +1 -1
  305. package/dist/workflows/evented/index.cjs +10 -10
  306. package/dist/workflows/evented/index.js +1 -1
  307. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  308. package/dist/workflows/evented/workflow.d.ts +3 -1
  309. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  310. package/dist/workflows/execution-engine.d.ts.map +1 -1
  311. package/dist/workflows/index.cjs +25 -25
  312. package/dist/workflows/index.js +1 -1
  313. package/dist/workflows/step.d.ts +4 -3
  314. package/dist/workflows/step.d.ts.map +1 -1
  315. package/dist/workflows/types.d.ts +2 -1
  316. package/dist/workflows/types.d.ts.map +1 -1
  317. package/dist/workflows/workflow.d.ts +12 -4
  318. package/dist/workflows/workflow.d.ts.map +1 -1
  319. package/dist/workspace/errors.d.ts +6 -0
  320. package/dist/workspace/errors.d.ts.map +1 -1
  321. package/dist/workspace/filesystem/composite-filesystem.d.ts +93 -0
  322. package/dist/workspace/filesystem/composite-filesystem.d.ts.map +1 -0
  323. package/dist/workspace/filesystem/filesystem.d.ts +35 -0
  324. package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
  325. package/dist/workspace/filesystem/index.d.ts +2 -0
  326. package/dist/workspace/filesystem/index.d.ts.map +1 -1
  327. package/dist/workspace/filesystem/local-filesystem.d.ts +9 -1
  328. package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
  329. package/dist/workspace/filesystem/mastra-filesystem.d.ts +92 -3
  330. package/dist/workspace/filesystem/mastra-filesystem.d.ts.map +1 -1
  331. package/dist/workspace/filesystem/mount.d.ts +34 -0
  332. package/dist/workspace/filesystem/mount.d.ts.map +1 -0
  333. package/dist/workspace/index.cjs +62 -34
  334. package/dist/workspace/index.d.ts +6 -2
  335. package/dist/workspace/index.d.ts.map +1 -1
  336. package/dist/workspace/index.js +1 -1
  337. package/dist/workspace/lifecycle.d.ts +29 -0
  338. package/dist/workspace/lifecycle.d.ts.map +1 -1
  339. package/dist/workspace/sandbox/errors.d.ts +50 -0
  340. package/dist/workspace/sandbox/errors.d.ts.map +1 -0
  341. package/dist/workspace/sandbox/index.d.ts +3 -0
  342. package/dist/workspace/sandbox/index.d.ts.map +1 -1
  343. package/dist/workspace/sandbox/local-sandbox.d.ts +17 -2
  344. package/dist/workspace/sandbox/local-sandbox.d.ts.map +1 -1
  345. package/dist/workspace/sandbox/mastra-sandbox.d.ts +153 -6
  346. package/dist/workspace/sandbox/mastra-sandbox.d.ts.map +1 -1
  347. package/dist/workspace/sandbox/mount-manager.d.ts +195 -0
  348. package/dist/workspace/sandbox/mount-manager.d.ts.map +1 -0
  349. package/dist/workspace/sandbox/sandbox.d.ts +37 -84
  350. package/dist/workspace/sandbox/sandbox.d.ts.map +1 -1
  351. package/dist/workspace/sandbox/types.d.ts +92 -0
  352. package/dist/workspace/sandbox/types.d.ts.map +1 -0
  353. package/dist/workspace/tools/tools.d.ts.map +1 -1
  354. package/dist/workspace/tools/tree-formatter.d.ts.map +1 -1
  355. package/dist/workspace/workspace.d.ts +73 -3
  356. package/dist/workspace/workspace.d.ts.map +1 -1
  357. package/package.json +16 -16
  358. package/src/llm/model/provider-types.generated.d.ts +128 -10
  359. package/dist/chunk-2DMSFLJY.cjs.map +0 -1
  360. package/dist/chunk-5SOS47PH.cjs.map +0 -1
  361. package/dist/chunk-5YVR7B4R.js.map +0 -1
  362. package/dist/chunk-7MDVYPWX.cjs.map +0 -1
  363. package/dist/chunk-A5QFWX67.cjs.map +0 -1
  364. package/dist/chunk-AIJLACR2.js.map +0 -1
  365. package/dist/chunk-BP2TSCBW.js.map +0 -1
  366. package/dist/chunk-C4WWWQHT.cjs.map +0 -1
  367. package/dist/chunk-E3VFKTIA.js.map +0 -1
  368. package/dist/chunk-ENCTSDWC.js.map +0 -1
  369. package/dist/chunk-G6E3QNJC.js.map +0 -1
  370. package/dist/chunk-GVLPTDJA.cjs.map +0 -1
  371. package/dist/chunk-HMCXNOF6.cjs.map +0 -1
  372. package/dist/chunk-HN2MSTR6.cjs.map +0 -1
  373. package/dist/chunk-I66TMZJ3.cjs.map +0 -1
  374. package/dist/chunk-IIZF4W7B.cjs.map +0 -1
  375. package/dist/chunk-IW3BNL7A.js.map +0 -1
  376. package/dist/chunk-JIT2OY3X.js.map +0 -1
  377. package/dist/chunk-JRJJ5VQE.cjs.map +0 -1
  378. package/dist/chunk-MNWW2R3U.js.map +0 -1
  379. package/dist/chunk-MSWXEOZC.js.map +0 -1
  380. package/dist/chunk-P62OJXQ4.js.map +0 -1
  381. package/dist/chunk-QOFI2WBM.cjs.map +0 -1
  382. package/dist/chunk-RXD5EGQF.js.map +0 -1
  383. package/dist/chunk-T6PRRKMW.js.map +0 -1
  384. package/dist/chunk-UZL4H5P2.cjs.map +0 -1
  385. package/dist/chunk-VW7YQWDW.cjs.map +0 -1
  386. package/dist/chunk-VX7UA3SO.js.map +0 -1
  387. package/dist/chunk-WFUNLRQX.js.map +0 -1
  388. package/dist/chunk-XCPEEIHI.cjs.map +0 -1
  389. package/dist/chunk-YLODOPYM.cjs.map +0 -1
  390. package/dist/chunk-Z6NRYYOH.js.map +0 -1
  391. package/dist/docs/references/docs-tools-mcp-advanced-usage.md +0 -143
  392. package/dist/docs/references/docs-tools-mcp-mcp-overview.md +0 -383
  393. package/dist/docs/references/docs-tools-mcp-overview.md +0 -78
  394. package/dist/docs/references/docs-workflows-input-data-mapping.md +0 -102
  395. package/dist/docs/references/reference-deployer-netlify.md +0 -14
  396. package/dist/docs/references/reference-deployer-vercel.md +0 -39
  397. package/dist/docs/references/reference-tools-client.md +0 -228
  398. package/dist/models-dev-OQKVMEIT.cjs +0 -12
  399. package/dist/models-dev-Z45JSLWD.js +0 -3
  400. package/dist/netlify-SSWMYSAX.js +0 -3
  401. package/dist/netlify-TXZZCT6N.cjs +0 -12
  402. package/dist/provider-registry-NR7FXV2Q.cjs +0 -40
  403. package/dist/provider-registry-RPOTQNHI.js +0 -3
@@ -1,8 +1,8 @@
1
- import { MessageList } from './chunk-Z6NRYYOH.js';
2
- import { TABLE_SCHEMAS, TABLE_SCORERS, listTracesArgsSchema, toTraceSpans, TABLE_WORKFLOW_SNAPSHOT } from './chunk-MNWW2R3U.js';
3
- import { deepEqual } from './chunk-T6PRRKMW.js';
1
+ import { MessageList } from './chunk-ILQXPZCD.js';
2
+ import { TABLE_SCHEMAS, TABLE_SCORERS, listTracesArgsSchema, toTraceSpans, TABLE_WORKFLOW_SNAPSHOT } from './chunk-OV7OOUUR.js';
3
+ import { deepEqual } from './chunk-ZHFM7HCQ.js';
4
4
  import { MastraError } from './chunk-FJEVLHJT.js';
5
- import { MastraBase } from './chunk-JIT2OY3X.js';
5
+ import { MastraBase } from './chunk-WCAFTXGK.js';
6
6
 
7
7
  // src/storage/base.ts
8
8
  function normalizePerPage(perPageInput, defaultValue) {
@@ -58,7 +58,9 @@ var MastraCompositeStore = class extends MastraBase {
58
58
  workflows: domainOverrides.workflows ?? defaultStores?.workflows,
59
59
  scores: domainOverrides.scores ?? defaultStores?.scores,
60
60
  observability: domainOverrides.observability ?? defaultStores?.observability,
61
- agents: domainOverrides.agents ?? defaultStores?.agents
61
+ agents: domainOverrides.agents ?? defaultStores?.agents,
62
+ promptBlocks: domainOverrides.promptBlocks ?? defaultStores?.promptBlocks,
63
+ scorerDefinitions: domainOverrides.scorerDefinitions ?? defaultStores?.scorerDefinitions
62
64
  };
63
65
  }
64
66
  }
@@ -103,6 +105,12 @@ var MastraCompositeStore = class extends MastraBase {
103
105
  if (this.stores?.agents) {
104
106
  initTasks.push(this.stores.agents.init());
105
107
  }
108
+ if (this.stores?.promptBlocks) {
109
+ initTasks.push(this.stores.promptBlocks.init());
110
+ }
111
+ if (this.stores?.scorerDefinitions) {
112
+ initTasks.push(this.stores.scorerDefinitions.init());
113
+ }
106
114
  this.hasInitialized = Promise.all(initTasks).then(() => true);
107
115
  await this.hasInitialized;
108
116
  }
@@ -121,12 +129,12 @@ var StorageDomain = class extends MastraBase {
121
129
  }
122
130
  };
123
131
 
124
- // src/storage/domains/agents/base.ts
125
- var AGENT_ORDER_BY_SET = {
132
+ // src/storage/domains/versioned.ts
133
+ var ENTITY_ORDER_BY_SET = {
126
134
  createdAt: true,
127
135
  updatedAt: true
128
136
  };
129
- var AGENT_SORT_DIRECTION_SET = {
137
+ var SORT_DIRECTION_SET = {
130
138
  ASC: true,
131
139
  DESC: true
132
140
  };
@@ -134,119 +142,106 @@ var VERSION_ORDER_BY_SET = {
134
142
  versionNumber: true,
135
143
  createdAt: true
136
144
  };
137
- var AgentsStorage = class extends StorageDomain {
138
- constructor() {
139
- super({
140
- component: "STORAGE",
141
- name: "AGENTS"
142
- });
145
+ var VersionedStorageDomain = class extends StorageDomain {
146
+ // ==========================================================================
147
+ // Concrete resolution methods
148
+ // ==========================================================================
149
+ /**
150
+ * Strips version metadata fields from a version row, leaving only snapshot config fields.
151
+ */
152
+ extractSnapshotConfig(version) {
153
+ const result = {};
154
+ const metadataSet = new Set(this.versionMetadataFields);
155
+ for (const [key, value] of Object.entries(version)) {
156
+ if (!metadataSet.has(key)) {
157
+ result[key] = value;
158
+ }
159
+ }
160
+ return result;
143
161
  }
144
162
  /**
145
- * Retrieves an agent by its unique identifier, resolving config from the active version.
146
- * This is the preferred method for fetching stored agents as it ensures the returned
147
- * configuration matches the active version.
148
- *
149
- * @param id - The unique identifier of the agent
150
- * @returns The resolved agent (metadata + version config), or null if not found
163
+ * Resolves an entity by merging its thin record with the active (or latest) version config.
151
164
  */
152
- async getAgentByIdResolved({ id }) {
153
- const agent = await this.getAgentById({ id });
154
- if (!agent) {
165
+ async getByIdResolved(id) {
166
+ const entity = await this.getById(id);
167
+ if (!entity) {
155
168
  return null;
156
169
  }
170
+ return this.resolveEntity(entity);
171
+ }
172
+ /**
173
+ * Lists entities with version resolution.
174
+ */
175
+ async listResolved(args) {
176
+ const result = await this.list(args);
177
+ const entities = result[this.listKey];
178
+ const resolved = await Promise.all(entities.map((entity) => this.resolveEntity(entity)));
179
+ return {
180
+ ...result,
181
+ [this.listKey]: resolved
182
+ };
183
+ }
184
+ /**
185
+ * Resolves a single entity by merging it with its active or latest version.
186
+ */
187
+ async resolveEntity(entity) {
157
188
  let version = null;
158
- if (agent.activeVersionId) {
159
- version = await this.getVersion(agent.activeVersionId);
189
+ if (entity.activeVersionId) {
190
+ version = await this.getVersion(entity.activeVersionId);
160
191
  if (!version) {
161
- console.warn(
162
- `[AgentsStorage] Agent ${agent.id} has activeVersionId ${agent.activeVersionId} but version not found. Falling back to latest version.`
192
+ this.logger?.warn?.(
193
+ `Entity ${entity.id} has activeVersionId ${entity.activeVersionId} but version not found. Falling back to latest version.`
163
194
  );
164
195
  }
165
196
  }
166
197
  if (!version) {
167
- version = await this.getLatestVersion(agent.id);
198
+ version = await this.getLatestVersion(entity.id);
168
199
  }
169
200
  if (version) {
170
- const {
171
- id: _versionId,
172
- agentId: _agentId,
173
- versionNumber: _versionNumber,
174
- changedFields: _changedFields,
175
- changeMessage: _changeMessage,
176
- createdAt: _createdAt,
177
- ...snapshotConfig
178
- } = version;
201
+ const snapshotConfig = this.extractSnapshotConfig(version);
179
202
  return {
180
- ...agent,
203
+ ...entity,
181
204
  ...snapshotConfig
182
205
  };
183
206
  }
184
- return agent;
185
- }
186
- /**
187
- * Lists all agents with version resolution.
188
- * For each agent that has an activeVersionId, the config is resolved from the version.
189
- *
190
- * @param args - Pagination and ordering options
191
- * @returns Paginated list of resolved agents
192
- */
193
- async listAgentsResolved(args) {
194
- const result = await this.listAgents(args);
195
- const resolvedAgents = await Promise.all(
196
- result.agents.map(async (agent) => {
197
- let version = null;
198
- if (agent.activeVersionId) {
199
- version = await this.getVersion(agent.activeVersionId);
200
- }
201
- if (!version) {
202
- version = await this.getLatestVersion(agent.id);
203
- }
204
- if (version) {
205
- const {
206
- id: _versionId,
207
- agentId: _agentId,
208
- versionNumber: _versionNumber,
209
- changedFields: _changedFields,
210
- changeMessage: _changeMessage,
211
- createdAt: _createdAt,
212
- ...snapshotConfig
213
- } = version;
214
- return {
215
- ...agent,
216
- ...snapshotConfig
217
- };
218
- }
219
- return agent;
220
- })
221
- );
222
- return {
223
- ...result,
224
- agents: resolvedAgents
225
- };
207
+ return entity;
226
208
  }
227
209
  // ==========================================================================
228
210
  // Protected Helper Methods
229
211
  // ==========================================================================
230
- /**
231
- * Parses orderBy input for consistent agent sorting behavior.
232
- */
233
212
  parseOrderBy(orderBy, defaultDirection = "DESC") {
234
213
  return {
235
- field: orderBy?.field && orderBy.field in AGENT_ORDER_BY_SET ? orderBy.field : "createdAt",
236
- direction: orderBy?.direction && orderBy.direction in AGENT_SORT_DIRECTION_SET ? orderBy.direction : defaultDirection
214
+ field: orderBy?.field && orderBy.field in ENTITY_ORDER_BY_SET ? orderBy.field : "createdAt",
215
+ direction: orderBy?.direction && orderBy.direction in SORT_DIRECTION_SET ? orderBy.direction : defaultDirection
237
216
  };
238
217
  }
239
- /**
240
- * Parses orderBy input for consistent version sorting behavior.
241
- */
242
218
  parseVersionOrderBy(orderBy, defaultDirection = "DESC") {
243
219
  return {
244
220
  field: orderBy?.field && orderBy.field in VERSION_ORDER_BY_SET ? orderBy.field : "versionNumber",
245
- direction: orderBy?.direction && orderBy.direction in AGENT_SORT_DIRECTION_SET ? orderBy.direction : defaultDirection
221
+ direction: orderBy?.direction && orderBy.direction in SORT_DIRECTION_SET ? orderBy.direction : defaultDirection
246
222
  };
247
223
  }
248
224
  };
249
225
 
226
+ // src/storage/domains/agents/base.ts
227
+ var AgentsStorage = class extends VersionedStorageDomain {
228
+ listKey = "agents";
229
+ versionMetadataFields = [
230
+ "id",
231
+ "agentId",
232
+ "versionNumber",
233
+ "changedFields",
234
+ "changeMessage",
235
+ "createdAt"
236
+ ];
237
+ constructor() {
238
+ super({
239
+ component: "STORAGE",
240
+ name: "AGENTS"
241
+ });
242
+ }
243
+ };
244
+
250
245
  // src/storage/domains/agents/inmemory.ts
251
246
  var InMemoryAgentsStorage = class extends AgentsStorage {
252
247
  db;
@@ -261,13 +256,14 @@ var InMemoryAgentsStorage = class extends AgentsStorage {
261
256
  // ==========================================================================
262
257
  // Agent CRUD Methods
263
258
  // ==========================================================================
264
- async getAgentById({ id }) {
265
- this.logger.debug(`InMemoryAgentsStorage: getAgentById called for ${id}`);
259
+ async getById(id) {
260
+ this.logger.debug(`InMemoryAgentsStorage: getById called for ${id}`);
266
261
  const agent = this.db.agents.get(id);
267
262
  return agent ? this.deepCopyAgent(agent) : null;
268
263
  }
269
- async createAgent({ agent }) {
270
- this.logger.debug(`InMemoryAgentsStorage: createAgent called for ${agent.id}`);
264
+ async create(input) {
265
+ const { agent } = input;
266
+ this.logger.debug(`InMemoryAgentsStorage: create called for ${agent.id}`);
271
267
  if (this.db.agents.has(agent.id)) {
272
268
  throw new Error(`Agent with id ${agent.id} already exists`);
273
269
  }
@@ -294,8 +290,9 @@ var InMemoryAgentsStorage = class extends AgentsStorage {
294
290
  });
295
291
  return this.deepCopyAgent(newAgent);
296
292
  }
297
- async updateAgent({ id, ...updates }) {
298
- this.logger.debug(`InMemoryAgentsStorage: updateAgent called for ${id}`);
293
+ async update(input) {
294
+ const { id, ...updates } = input;
295
+ this.logger.debug(`InMemoryAgentsStorage: update called for ${id}`);
299
296
  const existingAgent = this.db.agents.get(id);
300
297
  if (!existingAgent) {
301
298
  throw new Error(`Agent with id ${id} not found`);
@@ -343,36 +340,41 @@ var InMemoryAgentsStorage = class extends AgentsStorage {
343
340
  createdAt: _createdAt,
344
341
  ...latestConfig
345
342
  } = latestVersion;
343
+ const sanitizedConfigFields = Object.fromEntries(
344
+ Object.entries(configFields).map(([key, value]) => [key, value === null ? void 0 : value])
345
+ );
346
346
  const newConfig = {
347
347
  ...latestConfig,
348
- ...configFields
348
+ ...sanitizedConfigFields
349
349
  };
350
350
  const changedFields = configFieldNames.filter(
351
- (field) => field in configFields && configFields[field] !== latestConfig[field]
351
+ (field) => field in configFields && JSON.stringify(configFields[field]) !== JSON.stringify(latestConfig[field])
352
352
  );
353
- const newVersionId = crypto.randomUUID();
354
- const newVersionNumber = latestVersion.versionNumber + 1;
355
- await this.createVersion({
356
- id: newVersionId,
357
- agentId: id,
358
- versionNumber: newVersionNumber,
359
- ...newConfig,
360
- changedFields,
361
- changeMessage: `Updated ${changedFields.join(", ")}`
362
- });
353
+ if (changedFields.length > 0) {
354
+ const newVersionId = crypto.randomUUID();
355
+ const newVersionNumber = latestVersion.versionNumber + 1;
356
+ await this.createVersion({
357
+ id: newVersionId,
358
+ agentId: id,
359
+ versionNumber: newVersionNumber,
360
+ ...newConfig,
361
+ changedFields,
362
+ changeMessage: `Updated ${changedFields.join(", ")}`
363
+ });
364
+ }
363
365
  }
364
366
  this.db.agents.set(id, updatedAgent);
365
367
  return this.deepCopyAgent(updatedAgent);
366
368
  }
367
- async deleteAgent({ id }) {
368
- this.logger.debug(`InMemoryAgentsStorage: deleteAgent called for ${id}`);
369
+ async delete(id) {
370
+ this.logger.debug(`InMemoryAgentsStorage: delete called for ${id}`);
369
371
  this.db.agents.delete(id);
370
- await this.deleteVersionsByAgentId(id);
372
+ await this.deleteVersionsByParentId(id);
371
373
  }
372
- async listAgents(args) {
374
+ async list(args) {
373
375
  const { page = 0, perPage: perPageInput, orderBy, authorId, metadata } = args || {};
374
376
  const { field, direction } = this.parseOrderBy(orderBy);
375
- this.logger.debug(`InMemoryAgentsStorage: listAgents called`);
377
+ this.logger.debug(`InMemoryAgentsStorage: list called`);
376
378
  const perPage = normalizePerPage(perPageInput, 100);
377
379
  if (page < 0) {
378
380
  throw new Error("page must be >= 0");
@@ -478,11 +480,11 @@ var InMemoryAgentsStorage = class extends AgentsStorage {
478
480
  this.logger.debug(`InMemoryAgentsStorage: deleteVersion called for ${id}`);
479
481
  this.db.agentVersions.delete(id);
480
482
  }
481
- async deleteVersionsByAgentId(agentId) {
482
- this.logger.debug(`InMemoryAgentsStorage: deleteVersionsByAgentId called for agent ${agentId}`);
483
+ async deleteVersionsByParentId(entityId) {
484
+ this.logger.debug(`InMemoryAgentsStorage: deleteVersionsByParentId called for agent ${entityId}`);
483
485
  const idsToDelete = [];
484
486
  for (const [id, version] of this.db.agentVersions.entries()) {
485
- if (version.agentId === agentId) {
487
+ if (version.agentId === entityId) {
486
488
  idsToDelete.push(id);
487
489
  }
488
490
  }
@@ -516,20 +518,7 @@ var InMemoryAgentsStorage = class extends AgentsStorage {
516
518
  * Deep copy a version to prevent external mutation of stored data
517
519
  */
518
520
  deepCopyVersion(version) {
519
- return {
520
- ...version,
521
- model: { ...version.model },
522
- tools: version.tools ? [...version.tools] : version.tools,
523
- defaultOptions: version.defaultOptions ? { ...version.defaultOptions } : version.defaultOptions,
524
- workflows: version.workflows ? [...version.workflows] : version.workflows,
525
- agents: version.agents ? [...version.agents] : version.agents,
526
- integrationTools: version.integrationTools ? [...version.integrationTools] : version.integrationTools,
527
- inputProcessors: version.inputProcessors ? [...version.inputProcessors] : version.inputProcessors,
528
- outputProcessors: version.outputProcessors ? [...version.outputProcessors] : version.outputProcessors,
529
- memory: version.memory ? { ...version.memory } : version.memory,
530
- scorers: version.scorers ? { ...version.scorers } : version.scorers,
531
- changedFields: version.changedFields ? [...version.changedFields] : version.changedFields
532
- };
521
+ return structuredClone(version);
533
522
  }
534
523
  sortAgents(agents, field, direction) {
535
524
  return agents.sort((a, b) => {
@@ -564,6 +553,10 @@ var InMemoryDB = class {
564
553
  traces = /* @__PURE__ */ new Map();
565
554
  agents = /* @__PURE__ */ new Map();
566
555
  agentVersions = /* @__PURE__ */ new Map();
556
+ promptBlocks = /* @__PURE__ */ new Map();
557
+ promptBlockVersions = /* @__PURE__ */ new Map();
558
+ scorerDefinitions = /* @__PURE__ */ new Map();
559
+ scorerDefinitionVersions = /* @__PURE__ */ new Map();
567
560
  /** Observational memory records, keyed by resourceId, each holding array of records (generations) */
568
561
  observationalMemory = /* @__PURE__ */ new Map();
569
562
  /**
@@ -579,6 +572,10 @@ var InMemoryDB = class {
579
572
  this.traces.clear();
580
573
  this.agents.clear();
581
574
  this.agentVersions.clear();
575
+ this.promptBlocks.clear();
576
+ this.promptBlockVersions.clear();
577
+ this.scorerDefinitions.clear();
578
+ this.scorerDefinitionVersions.clear();
582
579
  this.observationalMemory.clear();
583
580
  }
584
581
  };
@@ -847,40 +844,29 @@ var MemoryStorage = class extends StorageDomain {
847
844
  throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
848
845
  }
849
846
  // ============================================
850
- // Buffering Methods (DISABLED - not currently used)
851
- // These methods were designed for async observation buffering
852
- // which has been disabled. Keeping commented for future reference.
847
+ // Buffering Methods (for async observation/reflection)
848
+ // These methods support async buffering when `bufferTokens` is configured.
853
849
  // ============================================
854
- // /**
855
- // * Update buffered observations.
856
- // * Called when observations are created asynchronously.
857
- // */
858
- // async updateBufferedObservations(_input: UpdateBufferedObservationsInput): Promise<void> {
859
- // throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
860
- // }
861
- // /**
862
- // * Swap buffered observations to active.
863
- // * Atomic operation that:
864
- // * 1. Moves bufferedObservations → activeObservations
865
- // * 2. Moves bufferedMessageIds → observedMessageIds
866
- // * 3. Clears buffered state
867
- // */
868
- // async swapBufferedToActive(_id: string): Promise<void> {
869
- // throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
870
- // }
871
- // /**
872
- // * Mark messages as currently being observed (in-flight).
873
- // */
874
- // async markMessagesAsBuffering(_id: string, _messageIds: string[]): Promise<void> {
875
- // throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
876
- // }
877
- // /**
878
- // * Mark messages as buffered (observation complete but not active).
879
- // * Moves messageIds from bufferingMessageIds → bufferedMessageIds.
880
- // */
881
- // async markMessagesAsBuffered(_id: string, _messageIds: string[]): Promise<void> {
882
- // throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
883
- // }
850
+ /**
851
+ * Update buffered observations.
852
+ * Called when observations are created asynchronously via `bufferTokens`.
853
+ */
854
+ async updateBufferedObservations(_input) {
855
+ throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
856
+ }
857
+ /**
858
+ * Swap buffered observations to active.
859
+ * Atomic operation that:
860
+ * 1. Appends bufferedObservations → activeObservations (based on activationRatio)
861
+ * 2. Moves activated bufferedMessageIds → observedMessageIds
862
+ * 3. Keeps remaining buffered content if activationRatio < 100
863
+ * 4. Updates lastObservedAt
864
+ *
865
+ * Returns info about what was activated for UI feedback.
866
+ */
867
+ async swapBufferedToActive(_input) {
868
+ throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
869
+ }
884
870
  /**
885
871
  * Create a new generation from a reflection.
886
872
  * Creates a new record with:
@@ -891,19 +877,21 @@ var MemoryStorage = class extends StorageDomain {
891
877
  async createReflectionGeneration(_input) {
892
878
  throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
893
879
  }
894
- // /**
895
- // * Update buffered reflection (async reflection in progress).
896
- // */
897
- // async updateBufferedReflection(_id: string, _reflection: string): Promise<void> {
898
- // throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
899
- // }
900
- // /**
901
- // * Swap buffered reflection to active observations.
902
- // * Creates a new generation and makes it the active one.
903
- // */
904
- // async swapReflectionToActive(_id: string): Promise<ObservationalMemoryRecord> {
905
- // throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
906
- // }
880
+ /**
881
+ * Update buffered reflection (async reflection in progress).
882
+ * Called when reflection runs asynchronously via `bufferTokens`.
883
+ */
884
+ async updateBufferedReflection(_input) {
885
+ throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
886
+ }
887
+ /**
888
+ * Swap buffered reflection to active observations.
889
+ * Creates a new generation where activeObservations = bufferedReflection + unreflected observations.
890
+ * The `tokenCount` in input is the processor-computed token count for the combined content.
891
+ */
892
+ async swapBufferedReflectionToActive(_input) {
893
+ throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
894
+ }
907
895
  /**
908
896
  * Set the isReflecting flag.
909
897
  */
@@ -916,6 +904,23 @@ var MemoryStorage = class extends StorageDomain {
916
904
  async setObservingFlag(_id, _isObserving) {
917
905
  throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
918
906
  }
907
+ /**
908
+ * Set the isBufferingObservation flag and update lastBufferedAtTokens.
909
+ * Called when async observation buffering starts (true) or ends/fails (false).
910
+ * @param id - Record ID
911
+ * @param isBuffering - Whether buffering is in progress
912
+ * @param lastBufferedAtTokens - The pending token count at which this buffer was triggered (only set when isBuffering=true)
913
+ */
914
+ async setBufferingObservationFlag(_id, _isBuffering, _lastBufferedAtTokens) {
915
+ throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
916
+ }
917
+ /**
918
+ * Set the isBufferingReflection flag.
919
+ * Called when async reflection buffering starts (true) or ends/fails (false).
920
+ */
921
+ async setBufferingReflectionFlag(_id, _isBuffering) {
922
+ throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
923
+ }
919
924
  /**
920
925
  * Clear all observational memory for a thread/resource.
921
926
  * Removes all records and history.
@@ -924,11 +929,11 @@ var MemoryStorage = class extends StorageDomain {
924
929
  throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
925
930
  }
926
931
  /**
927
- * Add to the pending message token count.
928
- * Called when messages are processed but observation hasn't triggered yet.
929
- * This allows accumulating tokens across multiple sessions.
932
+ * Set the pending message token count.
933
+ * Called at the end of each OM processing step to persist the current
934
+ * context window token count so the UI can display it on page load.
930
935
  */
931
- async addPendingMessageTokens(_id, _tokenCount) {
936
+ async setPendingMessageTokens(_id, _tokenCount) {
932
937
  throw new Error(`Observational memory is not implemented by this storage adapter (${this.constructor.name}).`);
933
938
  }
934
939
  /**
@@ -1613,6 +1618,10 @@ var InMemoryMemory = class extends MemoryStorage {
1613
1618
  // State flags
1614
1619
  isReflecting: false,
1615
1620
  isObserving: false,
1621
+ isBufferingObservation: false,
1622
+ isBufferingReflection: false,
1623
+ lastBufferedAtTokens: 0,
1624
+ lastBufferedAtTime: null,
1616
1625
  // Configuration
1617
1626
  config,
1618
1627
  // Timezone used for observation date formatting
@@ -1641,46 +1650,114 @@ var InMemoryMemory = class extends MemoryStorage {
1641
1650
  }
1642
1651
  }
1643
1652
  async updateBufferedObservations(input) {
1644
- const { id, observations } = input;
1653
+ const { id, chunk } = input;
1645
1654
  const record = this.findObservationalMemoryRecordById(id);
1646
1655
  if (!record) {
1647
1656
  throw new Error(`Observational memory record not found: ${id}`);
1648
1657
  }
1649
- record.bufferedObservations = observations;
1658
+ const newChunk = {
1659
+ id: `ombuf-${crypto.randomUUID()}`,
1660
+ cycleId: chunk.cycleId,
1661
+ observations: chunk.observations,
1662
+ tokenCount: chunk.tokenCount,
1663
+ messageIds: chunk.messageIds,
1664
+ messageTokens: chunk.messageTokens,
1665
+ lastObservedAt: chunk.lastObservedAt,
1666
+ createdAt: /* @__PURE__ */ new Date(),
1667
+ suggestedContinuation: chunk.suggestedContinuation,
1668
+ currentTask: chunk.currentTask
1669
+ };
1670
+ const existingChunks = Array.isArray(record.bufferedObservationChunks) ? record.bufferedObservationChunks : [];
1671
+ record.bufferedObservationChunks = [...existingChunks, newChunk];
1672
+ if (input.lastBufferedAtTime) {
1673
+ record.lastBufferedAtTime = input.lastBufferedAtTime;
1674
+ }
1650
1675
  record.updatedAt = /* @__PURE__ */ new Date();
1651
1676
  }
1652
- async swapBufferedToActive(id) {
1677
+ async swapBufferedToActive(input) {
1678
+ const { id, activationRatio, lastObservedAt } = input;
1653
1679
  const record = this.findObservationalMemoryRecordById(id);
1654
1680
  if (!record) {
1655
1681
  throw new Error(`Observational memory record not found: ${id}`);
1656
1682
  }
1657
- if (!record.bufferedObservations) {
1658
- return;
1683
+ const chunks = Array.isArray(record.bufferedObservationChunks) ? record.bufferedObservationChunks : [];
1684
+ if (chunks.length === 0) {
1685
+ return {
1686
+ chunksActivated: 0,
1687
+ messageTokensActivated: 0,
1688
+ observationTokensActivated: 0,
1689
+ messagesActivated: 0,
1690
+ activatedCycleIds: [],
1691
+ activatedMessageIds: []
1692
+ };
1693
+ }
1694
+ const retentionFloor = input.messageTokensThreshold * (1 - activationRatio);
1695
+ const targetMessageTokens = Math.max(0, input.currentPendingTokens - retentionFloor);
1696
+ let cumulativeMessageTokens = 0;
1697
+ let bestBoundary = 0;
1698
+ let bestBoundaryMessageTokens = 0;
1699
+ for (let i = 0; i < chunks.length; i++) {
1700
+ cumulativeMessageTokens += chunks[i].messageTokens ?? 0;
1701
+ const boundary = i + 1;
1702
+ const isUnder = cumulativeMessageTokens <= targetMessageTokens;
1703
+ const bestIsUnder = bestBoundaryMessageTokens <= targetMessageTokens;
1704
+ if (bestBoundary === 0) {
1705
+ bestBoundary = boundary;
1706
+ bestBoundaryMessageTokens = cumulativeMessageTokens;
1707
+ } else if (isUnder && !bestIsUnder) {
1708
+ bestBoundary = boundary;
1709
+ bestBoundaryMessageTokens = cumulativeMessageTokens;
1710
+ } else if (isUnder && bestIsUnder) {
1711
+ if (cumulativeMessageTokens > bestBoundaryMessageTokens) {
1712
+ bestBoundary = boundary;
1713
+ bestBoundaryMessageTokens = cumulativeMessageTokens;
1714
+ }
1715
+ } else if (!isUnder && !bestIsUnder) {
1716
+ if (cumulativeMessageTokens < bestBoundaryMessageTokens) {
1717
+ bestBoundary = boundary;
1718
+ bestBoundaryMessageTokens = cumulativeMessageTokens;
1719
+ }
1720
+ }
1659
1721
  }
1722
+ const chunksToActivate = bestBoundary === 0 ? 1 : bestBoundary;
1723
+ const activatedChunks = chunks.slice(0, chunksToActivate);
1724
+ const remainingChunks = chunks.slice(chunksToActivate);
1725
+ const activatedContent = activatedChunks.map((c) => c.observations).join("\n\n");
1726
+ const activatedTokens = activatedChunks.reduce((sum, c) => sum + c.tokenCount, 0);
1727
+ const activatedMessageTokens = activatedChunks.reduce((sum, c) => sum + (c.messageTokens ?? 0), 0);
1728
+ const activatedMessageCount = activatedChunks.reduce((sum, c) => sum + c.messageIds.length, 0);
1729
+ const activatedCycleIds = activatedChunks.map((c) => c.cycleId).filter((id2) => !!id2);
1730
+ const activatedMessageIds = activatedChunks.flatMap((c) => c.messageIds);
1731
+ const latestChunk = activatedChunks[activatedChunks.length - 1];
1732
+ const derivedLastObservedAt = lastObservedAt ?? (latestChunk?.lastObservedAt ? new Date(latestChunk.lastObservedAt) : /* @__PURE__ */ new Date());
1660
1733
  if (record.activeObservations) {
1661
1734
  record.activeObservations = `${record.activeObservations}
1662
1735
 
1663
- ${record.bufferedObservations}`;
1736
+ ${activatedContent}`;
1664
1737
  } else {
1665
- record.activeObservations = record.bufferedObservations;
1666
- }
1667
- record.bufferedObservations = void 0;
1668
- record.lastObservedAt = /* @__PURE__ */ new Date();
1669
- record.updatedAt = /* @__PURE__ */ new Date();
1670
- }
1671
- async markMessagesAsBuffering(id, _messageIds) {
1672
- const record = this.findObservationalMemoryRecordById(id);
1673
- if (!record) {
1674
- throw new Error(`Observational memory record not found: ${id}`);
1675
- }
1676
- record.updatedAt = /* @__PURE__ */ new Date();
1677
- }
1678
- async markMessagesAsBuffered(id, _messageIds) {
1679
- const record = this.findObservationalMemoryRecordById(id);
1680
- if (!record) {
1681
- throw new Error(`Observational memory record not found: ${id}`);
1738
+ record.activeObservations = activatedContent;
1682
1739
  }
1740
+ record.observationTokenCount = (record.observationTokenCount ?? 0) + activatedTokens;
1741
+ record.pendingMessageTokens = Math.max(0, (record.pendingMessageTokens ?? 0) - activatedMessageTokens);
1742
+ record.bufferedObservationChunks = remainingChunks.length > 0 ? remainingChunks : void 0;
1743
+ record.lastObservedAt = derivedLastObservedAt;
1683
1744
  record.updatedAt = /* @__PURE__ */ new Date();
1745
+ return {
1746
+ chunksActivated: activatedChunks.length,
1747
+ messageTokensActivated: activatedMessageTokens,
1748
+ observationTokensActivated: activatedTokens,
1749
+ messagesActivated: activatedMessageCount,
1750
+ activatedCycleIds,
1751
+ activatedMessageIds,
1752
+ observations: activatedContent,
1753
+ perChunk: activatedChunks.map((c) => ({
1754
+ cycleId: c.cycleId ?? "",
1755
+ messageTokens: c.messageTokens ?? 0,
1756
+ observationTokens: c.tokenCount,
1757
+ messageCount: c.messageIds.length,
1758
+ observations: c.observations
1759
+ }))
1760
+ };
1684
1761
  }
1685
1762
  async createReflectionGeneration(input) {
1686
1763
  const { currentRecord, reflection, tokenCount } = input;
@@ -1705,6 +1782,10 @@ ${record.bufferedObservations}`;
1705
1782
  pendingMessageTokens: 0,
1706
1783
  isReflecting: false,
1707
1784
  isObserving: false,
1785
+ isBufferingObservation: false,
1786
+ isBufferingReflection: false,
1787
+ lastBufferedAtTokens: 0,
1788
+ lastBufferedAtTime: null,
1708
1789
  // Timezone used for observation date formatting
1709
1790
  observedTimezone: currentRecord.observedTimezone,
1710
1791
  // Extensible metadata (optional)
@@ -1714,29 +1795,48 @@ ${record.bufferedObservations}`;
1714
1795
  this.db.observationalMemory.set(key, [newRecord, ...existing]);
1715
1796
  return newRecord;
1716
1797
  }
1717
- async updateBufferedReflection(id, reflection) {
1798
+ async updateBufferedReflection(input) {
1799
+ const { id, reflection, tokenCount, inputTokenCount, reflectedObservationLineCount } = input;
1718
1800
  const record = this.findObservationalMemoryRecordById(id);
1719
1801
  if (!record) {
1720
1802
  throw new Error(`Observational memory record not found: ${id}`);
1721
1803
  }
1722
- record.bufferedReflection = reflection;
1804
+ const existing = record.bufferedReflection || "";
1805
+ record.bufferedReflection = existing ? `${existing}
1806
+
1807
+ ${reflection}` : reflection;
1808
+ record.bufferedReflectionTokens = (record.bufferedReflectionTokens || 0) + tokenCount;
1809
+ record.bufferedReflectionInputTokens = (record.bufferedReflectionInputTokens || 0) + inputTokenCount;
1810
+ record.reflectedObservationLineCount = reflectedObservationLineCount;
1723
1811
  record.updatedAt = /* @__PURE__ */ new Date();
1724
1812
  }
1725
- async swapReflectionToActive(id) {
1726
- const record = this.findObservationalMemoryRecordById(id);
1813
+ async swapBufferedReflectionToActive(input) {
1814
+ const { currentRecord } = input;
1815
+ const record = this.findObservationalMemoryRecordById(currentRecord.id);
1727
1816
  if (!record) {
1728
- throw new Error(`Observational memory record not found: ${id}`);
1817
+ throw new Error(`Observational memory record not found: ${currentRecord.id}`);
1729
1818
  }
1730
1819
  if (!record.bufferedReflection) {
1731
1820
  throw new Error("No buffered reflection to swap");
1732
1821
  }
1822
+ const bufferedReflection = record.bufferedReflection;
1823
+ const reflectedLineCount = record.reflectedObservationLineCount ?? 0;
1824
+ const currentObservations = record.activeObservations ?? "";
1825
+ const allLines = currentObservations.split("\n");
1826
+ const unreflectedLines = allLines.slice(reflectedLineCount);
1827
+ const unreflectedContent = unreflectedLines.join("\n").trim();
1828
+ const newObservations = unreflectedContent ? `${bufferedReflection}
1829
+
1830
+ ${unreflectedContent}` : bufferedReflection;
1733
1831
  const newRecord = await this.createReflectionGeneration({
1734
1832
  currentRecord: record,
1735
- reflection: record.bufferedReflection,
1736
- tokenCount: 0
1737
- // Will be calculated by caller
1833
+ reflection: newObservations,
1834
+ tokenCount: input.tokenCount
1738
1835
  });
1739
1836
  record.bufferedReflection = void 0;
1837
+ record.bufferedReflectionTokens = void 0;
1838
+ record.bufferedReflectionInputTokens = void 0;
1839
+ record.reflectedObservationLineCount = void 0;
1740
1840
  return newRecord;
1741
1841
  }
1742
1842
  async setReflectingFlag(id, isReflecting) {
@@ -1755,16 +1855,35 @@ ${record.bufferedObservations}`;
1755
1855
  record.isObserving = isObserving;
1756
1856
  record.updatedAt = /* @__PURE__ */ new Date();
1757
1857
  }
1858
+ async setBufferingObservationFlag(id, isBuffering, lastBufferedAtTokens) {
1859
+ const record = this.findObservationalMemoryRecordById(id);
1860
+ if (!record) {
1861
+ throw new Error(`Observational memory record not found: ${id}`);
1862
+ }
1863
+ record.isBufferingObservation = isBuffering;
1864
+ if (lastBufferedAtTokens !== void 0) {
1865
+ record.lastBufferedAtTokens = lastBufferedAtTokens;
1866
+ }
1867
+ record.updatedAt = /* @__PURE__ */ new Date();
1868
+ }
1869
+ async setBufferingReflectionFlag(id, isBuffering) {
1870
+ const record = this.findObservationalMemoryRecordById(id);
1871
+ if (!record) {
1872
+ throw new Error(`Observational memory record not found: ${id}`);
1873
+ }
1874
+ record.isBufferingReflection = isBuffering;
1875
+ record.updatedAt = /* @__PURE__ */ new Date();
1876
+ }
1758
1877
  async clearObservationalMemory(threadId, resourceId) {
1759
1878
  const key = this.getObservationalMemoryKey(threadId, resourceId);
1760
1879
  this.db.observationalMemory.delete(key);
1761
1880
  }
1762
- async addPendingMessageTokens(id, tokenCount) {
1881
+ async setPendingMessageTokens(id, tokenCount) {
1763
1882
  const record = this.findObservationalMemoryRecordById(id);
1764
1883
  if (!record) {
1765
1884
  throw new Error(`Observational memory record not found: ${id}`);
1766
1885
  }
1767
- record.pendingMessageTokens = (record.pendingMessageTokens ?? 0) + tokenCount;
1886
+ record.pendingMessageTokens = tokenCount;
1768
1887
  record.updatedAt = /* @__PURE__ */ new Date();
1769
1888
  }
1770
1889
  /**
@@ -2216,6 +2335,638 @@ var ObservabilityInMemory = class extends ObservabilityStorage {
2216
2335
  }
2217
2336
  };
2218
2337
 
2338
+ // src/storage/domains/prompt-blocks/base.ts
2339
+ var PromptBlocksStorage = class extends VersionedStorageDomain {
2340
+ listKey = "promptBlocks";
2341
+ versionMetadataFields = [
2342
+ "id",
2343
+ "blockId",
2344
+ "versionNumber",
2345
+ "changedFields",
2346
+ "changeMessage",
2347
+ "createdAt"
2348
+ ];
2349
+ constructor() {
2350
+ super({
2351
+ component: "STORAGE",
2352
+ name: "PROMPT_BLOCKS"
2353
+ });
2354
+ }
2355
+ };
2356
+
2357
+ // src/storage/domains/prompt-blocks/inmemory.ts
2358
+ var InMemoryPromptBlocksStorage = class extends PromptBlocksStorage {
2359
+ db;
2360
+ constructor({ db }) {
2361
+ super();
2362
+ this.db = db;
2363
+ }
2364
+ async dangerouslyClearAll() {
2365
+ this.db.promptBlocks.clear();
2366
+ this.db.promptBlockVersions.clear();
2367
+ }
2368
+ // ==========================================================================
2369
+ // Prompt Block CRUD Methods
2370
+ // ==========================================================================
2371
+ async getById(id) {
2372
+ this.logger.debug(`InMemoryPromptBlocksStorage: getById called for ${id}`);
2373
+ const block = this.db.promptBlocks.get(id);
2374
+ return block ? this.deepCopyBlock(block) : null;
2375
+ }
2376
+ async create(input) {
2377
+ const { promptBlock } = input;
2378
+ this.logger.debug(`InMemoryPromptBlocksStorage: create called for ${promptBlock.id}`);
2379
+ if (this.db.promptBlocks.has(promptBlock.id)) {
2380
+ throw new Error(`Prompt block with id ${promptBlock.id} already exists`);
2381
+ }
2382
+ const now = /* @__PURE__ */ new Date();
2383
+ const newBlock = {
2384
+ id: promptBlock.id,
2385
+ status: "draft",
2386
+ activeVersionId: void 0,
2387
+ authorId: promptBlock.authorId,
2388
+ metadata: promptBlock.metadata,
2389
+ createdAt: now,
2390
+ updatedAt: now
2391
+ };
2392
+ this.db.promptBlocks.set(promptBlock.id, newBlock);
2393
+ const { id: _id, authorId: _authorId, metadata: _metadata, ...snapshotConfig } = promptBlock;
2394
+ const versionId = crypto.randomUUID();
2395
+ await this.createVersion({
2396
+ id: versionId,
2397
+ blockId: promptBlock.id,
2398
+ versionNumber: 1,
2399
+ ...snapshotConfig,
2400
+ changedFields: Object.keys(snapshotConfig),
2401
+ changeMessage: "Initial version"
2402
+ });
2403
+ return this.deepCopyBlock(newBlock);
2404
+ }
2405
+ async update(input) {
2406
+ const { id, ...updates } = input;
2407
+ this.logger.debug(`InMemoryPromptBlocksStorage: update called for ${id}`);
2408
+ const existingBlock = this.db.promptBlocks.get(id);
2409
+ if (!existingBlock) {
2410
+ throw new Error(`Prompt block with id ${id} not found`);
2411
+ }
2412
+ const { authorId, activeVersionId, metadata, status, ...configFields } = updates;
2413
+ const configFieldNames = ["name", "description", "content", "rules"];
2414
+ const hasConfigUpdate = configFieldNames.some((field) => field in configFields);
2415
+ const updatedBlock = {
2416
+ ...existingBlock,
2417
+ ...authorId !== void 0 && { authorId },
2418
+ ...activeVersionId !== void 0 && { activeVersionId },
2419
+ ...status !== void 0 && { status },
2420
+ ...metadata !== void 0 && {
2421
+ metadata: { ...existingBlock.metadata, ...metadata }
2422
+ },
2423
+ updatedAt: /* @__PURE__ */ new Date()
2424
+ };
2425
+ if (activeVersionId !== void 0) {
2426
+ updatedBlock.status = "published";
2427
+ }
2428
+ if (hasConfigUpdate) {
2429
+ const latestVersion = await this.getLatestVersion(id);
2430
+ if (!latestVersion) {
2431
+ throw new Error(`No versions found for prompt block ${id}`);
2432
+ }
2433
+ const {
2434
+ id: _versionId,
2435
+ blockId: _blockId,
2436
+ versionNumber: _versionNumber,
2437
+ changedFields: _changedFields,
2438
+ changeMessage: _changeMessage,
2439
+ createdAt: _createdAt,
2440
+ ...latestConfig
2441
+ } = latestVersion;
2442
+ const newConfig = {
2443
+ ...latestConfig,
2444
+ ...configFields
2445
+ };
2446
+ const changedFields = configFieldNames.filter(
2447
+ (field) => field in configFields && JSON.stringify(configFields[field]) !== JSON.stringify(latestConfig[field])
2448
+ );
2449
+ if (changedFields.length > 0) {
2450
+ const newVersionId = crypto.randomUUID();
2451
+ const newVersionNumber = latestVersion.versionNumber + 1;
2452
+ await this.createVersion({
2453
+ id: newVersionId,
2454
+ blockId: id,
2455
+ versionNumber: newVersionNumber,
2456
+ ...newConfig,
2457
+ changedFields,
2458
+ changeMessage: `Updated ${changedFields.join(", ")}`
2459
+ });
2460
+ }
2461
+ }
2462
+ this.db.promptBlocks.set(id, updatedBlock);
2463
+ return this.deepCopyBlock(updatedBlock);
2464
+ }
2465
+ async delete(id) {
2466
+ this.logger.debug(`InMemoryPromptBlocksStorage: delete called for ${id}`);
2467
+ this.db.promptBlocks.delete(id);
2468
+ await this.deleteVersionsByParentId(id);
2469
+ }
2470
+ async list(args) {
2471
+ const { page = 0, perPage: perPageInput, orderBy, authorId, metadata } = args || {};
2472
+ const { field, direction } = this.parseOrderBy(orderBy);
2473
+ this.logger.debug(`InMemoryPromptBlocksStorage: list called`);
2474
+ const perPage = normalizePerPage(perPageInput, 100);
2475
+ if (page < 0) {
2476
+ throw new Error("page must be >= 0");
2477
+ }
2478
+ const maxOffset = Number.MAX_SAFE_INTEGER / 2;
2479
+ if (page * perPage > maxOffset) {
2480
+ throw new Error("page value too large");
2481
+ }
2482
+ let blocks = Array.from(this.db.promptBlocks.values());
2483
+ if (authorId !== void 0) {
2484
+ blocks = blocks.filter((block) => block.authorId === authorId);
2485
+ }
2486
+ if (metadata && Object.keys(metadata).length > 0) {
2487
+ blocks = blocks.filter((block) => {
2488
+ if (!block.metadata) return false;
2489
+ return Object.entries(metadata).every(([key, value]) => deepEqual(block.metadata[key], value));
2490
+ });
2491
+ }
2492
+ const sortedBlocks = this.sortBlocks(blocks, field, direction);
2493
+ const clonedBlocks = sortedBlocks.map((block) => this.deepCopyBlock(block));
2494
+ const { offset, perPage: perPageForResponse } = calculatePagination(page, perPageInput, perPage);
2495
+ return {
2496
+ promptBlocks: clonedBlocks.slice(offset, offset + perPage),
2497
+ total: clonedBlocks.length,
2498
+ page,
2499
+ perPage: perPageForResponse,
2500
+ hasMore: offset + perPage < clonedBlocks.length
2501
+ };
2502
+ }
2503
+ // ==========================================================================
2504
+ // Prompt Block Version Methods
2505
+ // ==========================================================================
2506
+ async createVersion(input) {
2507
+ this.logger.debug(`InMemoryPromptBlocksStorage: createVersion called for block ${input.blockId}`);
2508
+ if (this.db.promptBlockVersions.has(input.id)) {
2509
+ throw new Error(`Version with id ${input.id} already exists`);
2510
+ }
2511
+ for (const version2 of this.db.promptBlockVersions.values()) {
2512
+ if (version2.blockId === input.blockId && version2.versionNumber === input.versionNumber) {
2513
+ throw new Error(`Version number ${input.versionNumber} already exists for prompt block ${input.blockId}`);
2514
+ }
2515
+ }
2516
+ const version = {
2517
+ ...input,
2518
+ createdAt: /* @__PURE__ */ new Date()
2519
+ };
2520
+ this.db.promptBlockVersions.set(input.id, this.deepCopyVersion(version));
2521
+ return this.deepCopyVersion(version);
2522
+ }
2523
+ async getVersion(id) {
2524
+ this.logger.debug(`InMemoryPromptBlocksStorage: getVersion called for ${id}`);
2525
+ const version = this.db.promptBlockVersions.get(id);
2526
+ return version ? this.deepCopyVersion(version) : null;
2527
+ }
2528
+ async getVersionByNumber(blockId, versionNumber) {
2529
+ this.logger.debug(`InMemoryPromptBlocksStorage: getVersionByNumber called for block ${blockId}, v${versionNumber}`);
2530
+ for (const version of this.db.promptBlockVersions.values()) {
2531
+ if (version.blockId === blockId && version.versionNumber === versionNumber) {
2532
+ return this.deepCopyVersion(version);
2533
+ }
2534
+ }
2535
+ return null;
2536
+ }
2537
+ async getLatestVersion(blockId) {
2538
+ this.logger.debug(`InMemoryPromptBlocksStorage: getLatestVersion called for block ${blockId}`);
2539
+ let latest = null;
2540
+ for (const version of this.db.promptBlockVersions.values()) {
2541
+ if (version.blockId === blockId) {
2542
+ if (!latest || version.versionNumber > latest.versionNumber) {
2543
+ latest = version;
2544
+ }
2545
+ }
2546
+ }
2547
+ return latest ? this.deepCopyVersion(latest) : null;
2548
+ }
2549
+ async listVersions(input) {
2550
+ const { blockId, page = 0, perPage: perPageInput, orderBy } = input;
2551
+ const { field, direction } = this.parseVersionOrderBy(orderBy);
2552
+ this.logger.debug(`InMemoryPromptBlocksStorage: listVersions called for block ${blockId}`);
2553
+ const perPage = normalizePerPage(perPageInput, 20);
2554
+ if (page < 0) {
2555
+ throw new Error("page must be >= 0");
2556
+ }
2557
+ const maxOffset = Number.MAX_SAFE_INTEGER / 2;
2558
+ if (page * perPage > maxOffset) {
2559
+ throw new Error("page value too large");
2560
+ }
2561
+ let versions = Array.from(this.db.promptBlockVersions.values()).filter((v) => v.blockId === blockId);
2562
+ versions = this.sortVersions(versions, field, direction);
2563
+ const clonedVersions = versions.map((v) => this.deepCopyVersion(v));
2564
+ const total = clonedVersions.length;
2565
+ const { offset, perPage: perPageForResponse } = calculatePagination(page, perPageInput, perPage);
2566
+ const paginatedVersions = clonedVersions.slice(offset, offset + perPage);
2567
+ return {
2568
+ versions: paginatedVersions,
2569
+ total,
2570
+ page,
2571
+ perPage: perPageForResponse,
2572
+ hasMore: offset + perPage < total
2573
+ };
2574
+ }
2575
+ async deleteVersion(id) {
2576
+ this.logger.debug(`InMemoryPromptBlocksStorage: deleteVersion called for ${id}`);
2577
+ this.db.promptBlockVersions.delete(id);
2578
+ }
2579
+ async deleteVersionsByParentId(entityId) {
2580
+ this.logger.debug(`InMemoryPromptBlocksStorage: deleteVersionsByParentId called for block ${entityId}`);
2581
+ const idsToDelete = [];
2582
+ for (const [id, version] of this.db.promptBlockVersions.entries()) {
2583
+ if (version.blockId === entityId) {
2584
+ idsToDelete.push(id);
2585
+ }
2586
+ }
2587
+ for (const id of idsToDelete) {
2588
+ this.db.promptBlockVersions.delete(id);
2589
+ }
2590
+ }
2591
+ async countVersions(blockId) {
2592
+ this.logger.debug(`InMemoryPromptBlocksStorage: countVersions called for block ${blockId}`);
2593
+ let count = 0;
2594
+ for (const version of this.db.promptBlockVersions.values()) {
2595
+ if (version.blockId === blockId) {
2596
+ count++;
2597
+ }
2598
+ }
2599
+ return count;
2600
+ }
2601
+ // ==========================================================================
2602
+ // Private Helper Methods
2603
+ // ==========================================================================
2604
+ deepCopyBlock(block) {
2605
+ return {
2606
+ ...block,
2607
+ metadata: block.metadata ? { ...block.metadata } : block.metadata
2608
+ };
2609
+ }
2610
+ deepCopyVersion(version) {
2611
+ return {
2612
+ ...version,
2613
+ rules: version.rules ? JSON.parse(JSON.stringify(version.rules)) : version.rules,
2614
+ changedFields: version.changedFields ? [...version.changedFields] : version.changedFields
2615
+ };
2616
+ }
2617
+ sortBlocks(blocks, field, direction) {
2618
+ return blocks.sort((a, b) => {
2619
+ const aValue = a[field].getTime();
2620
+ const bValue = b[field].getTime();
2621
+ return direction === "ASC" ? aValue - bValue : bValue - aValue;
2622
+ });
2623
+ }
2624
+ sortVersions(versions, field, direction) {
2625
+ return versions.sort((a, b) => {
2626
+ let aVal;
2627
+ let bVal;
2628
+ if (field === "createdAt") {
2629
+ aVal = a.createdAt.getTime();
2630
+ bVal = b.createdAt.getTime();
2631
+ } else {
2632
+ aVal = a.versionNumber;
2633
+ bVal = b.versionNumber;
2634
+ }
2635
+ return direction === "ASC" ? aVal - bVal : bVal - aVal;
2636
+ });
2637
+ }
2638
+ };
2639
+
2640
+ // src/storage/domains/scorer-definitions/base.ts
2641
+ var ScorerDefinitionsStorage = class extends VersionedStorageDomain {
2642
+ listKey = "scorerDefinitions";
2643
+ versionMetadataFields = [
2644
+ "id",
2645
+ "scorerDefinitionId",
2646
+ "versionNumber",
2647
+ "changedFields",
2648
+ "changeMessage",
2649
+ "createdAt"
2650
+ ];
2651
+ constructor() {
2652
+ super({
2653
+ component: "STORAGE",
2654
+ name: "SCORER_DEFINITIONS"
2655
+ });
2656
+ }
2657
+ };
2658
+
2659
+ // src/storage/domains/scorer-definitions/inmemory.ts
2660
+ var InMemoryScorerDefinitionsStorage = class extends ScorerDefinitionsStorage {
2661
+ db;
2662
+ constructor({ db }) {
2663
+ super();
2664
+ this.db = db;
2665
+ }
2666
+ async dangerouslyClearAll() {
2667
+ this.db.scorerDefinitions.clear();
2668
+ this.db.scorerDefinitionVersions.clear();
2669
+ }
2670
+ // ==========================================================================
2671
+ // Scorer Definition CRUD Methods
2672
+ // ==========================================================================
2673
+ async getById(id) {
2674
+ this.logger.debug(`InMemoryScorerDefinitionsStorage: getById called for ${id}`);
2675
+ const scorer = this.db.scorerDefinitions.get(id);
2676
+ return scorer ? this.deepCopyScorer(scorer) : null;
2677
+ }
2678
+ async create(input) {
2679
+ const { scorerDefinition } = input;
2680
+ this.logger.debug(`InMemoryScorerDefinitionsStorage: create called for ${scorerDefinition.id}`);
2681
+ if (this.db.scorerDefinitions.has(scorerDefinition.id)) {
2682
+ throw new Error(`Scorer definition with id ${scorerDefinition.id} already exists`);
2683
+ }
2684
+ const now = /* @__PURE__ */ new Date();
2685
+ const newScorer = {
2686
+ id: scorerDefinition.id,
2687
+ status: "draft",
2688
+ activeVersionId: void 0,
2689
+ authorId: scorerDefinition.authorId,
2690
+ metadata: scorerDefinition.metadata,
2691
+ createdAt: now,
2692
+ updatedAt: now
2693
+ };
2694
+ this.db.scorerDefinitions.set(scorerDefinition.id, newScorer);
2695
+ const { id: _id, authorId: _authorId, metadata: _metadata, ...snapshotConfig } = scorerDefinition;
2696
+ const versionId = crypto.randomUUID();
2697
+ await this.createVersion({
2698
+ id: versionId,
2699
+ scorerDefinitionId: scorerDefinition.id,
2700
+ versionNumber: 1,
2701
+ ...snapshotConfig,
2702
+ changedFields: Object.keys(snapshotConfig),
2703
+ changeMessage: "Initial version"
2704
+ });
2705
+ return this.deepCopyScorer(newScorer);
2706
+ }
2707
+ async update(input) {
2708
+ const { id, ...updates } = input;
2709
+ this.logger.debug(`InMemoryScorerDefinitionsStorage: update called for ${id}`);
2710
+ const existingScorer = this.db.scorerDefinitions.get(id);
2711
+ if (!existingScorer) {
2712
+ throw new Error(`Scorer definition with id ${id} not found`);
2713
+ }
2714
+ const { authorId, activeVersionId, metadata, status, ...configFields } = updates;
2715
+ const configFieldNames = [
2716
+ "name",
2717
+ "description",
2718
+ "type",
2719
+ "model",
2720
+ "instructions",
2721
+ "scoreRange",
2722
+ "presetConfig",
2723
+ "defaultSampling"
2724
+ ];
2725
+ const hasConfigUpdate = configFieldNames.some((field) => field in configFields);
2726
+ const updatedScorer = {
2727
+ ...existingScorer,
2728
+ ...authorId !== void 0 && { authorId },
2729
+ ...activeVersionId !== void 0 && { activeVersionId },
2730
+ ...status !== void 0 && { status },
2731
+ ...metadata !== void 0 && {
2732
+ metadata: { ...existingScorer.metadata, ...metadata }
2733
+ },
2734
+ updatedAt: /* @__PURE__ */ new Date()
2735
+ };
2736
+ if (activeVersionId !== void 0) {
2737
+ updatedScorer.status = "published";
2738
+ }
2739
+ if (hasConfigUpdate) {
2740
+ const latestVersion = await this.getLatestVersion(id);
2741
+ if (!latestVersion) {
2742
+ throw new Error(`No versions found for scorer definition ${id}`);
2743
+ }
2744
+ const {
2745
+ id: _versionId,
2746
+ scorerDefinitionId: _scorerDefinitionId,
2747
+ versionNumber: _versionNumber,
2748
+ changedFields: _changedFields,
2749
+ changeMessage: _changeMessage,
2750
+ createdAt: _createdAt,
2751
+ ...latestConfig
2752
+ } = latestVersion;
2753
+ const newConfig = {
2754
+ ...latestConfig,
2755
+ ...configFields
2756
+ };
2757
+ const changedFields = configFieldNames.filter(
2758
+ (field) => field in configFields && JSON.stringify(configFields[field]) !== JSON.stringify(latestConfig[field])
2759
+ );
2760
+ if (changedFields.length > 0) {
2761
+ const newVersionId = crypto.randomUUID();
2762
+ const newVersionNumber = latestVersion.versionNumber + 1;
2763
+ await this.createVersion({
2764
+ id: newVersionId,
2765
+ scorerDefinitionId: id,
2766
+ versionNumber: newVersionNumber,
2767
+ ...newConfig,
2768
+ changedFields,
2769
+ changeMessage: `Updated ${changedFields.join(", ")}`
2770
+ });
2771
+ }
2772
+ }
2773
+ this.db.scorerDefinitions.set(id, updatedScorer);
2774
+ return this.deepCopyScorer(updatedScorer);
2775
+ }
2776
+ async delete(id) {
2777
+ this.logger.debug(`InMemoryScorerDefinitionsStorage: delete called for ${id}`);
2778
+ this.db.scorerDefinitions.delete(id);
2779
+ await this.deleteVersionsByParentId(id);
2780
+ }
2781
+ async list(args) {
2782
+ const { page = 0, perPage: perPageInput, orderBy, authorId, metadata } = args || {};
2783
+ const { field, direction } = this.parseOrderBy(orderBy);
2784
+ this.logger.debug(`InMemoryScorerDefinitionsStorage: list called`);
2785
+ const perPage = normalizePerPage(perPageInput, 100);
2786
+ if (page < 0) {
2787
+ throw new Error("page must be >= 0");
2788
+ }
2789
+ const maxOffset = Number.MAX_SAFE_INTEGER / 2;
2790
+ if (page * perPage > maxOffset) {
2791
+ throw new Error("page value too large");
2792
+ }
2793
+ let scorers = Array.from(this.db.scorerDefinitions.values());
2794
+ if (authorId !== void 0) {
2795
+ scorers = scorers.filter((scorer) => scorer.authorId === authorId);
2796
+ }
2797
+ if (metadata && Object.keys(metadata).length > 0) {
2798
+ scorers = scorers.filter((scorer) => {
2799
+ if (!scorer.metadata) return false;
2800
+ return Object.entries(metadata).every(([key, value]) => deepEqual(scorer.metadata[key], value));
2801
+ });
2802
+ }
2803
+ const sortedScorers = this.sortScorers(scorers, field, direction);
2804
+ const clonedScorers = sortedScorers.map((scorer) => this.deepCopyScorer(scorer));
2805
+ const { offset, perPage: perPageForResponse } = calculatePagination(page, perPageInput, perPage);
2806
+ return {
2807
+ scorerDefinitions: clonedScorers.slice(offset, offset + perPage),
2808
+ total: clonedScorers.length,
2809
+ page,
2810
+ perPage: perPageForResponse,
2811
+ hasMore: offset + perPage < clonedScorers.length
2812
+ };
2813
+ }
2814
+ // ==========================================================================
2815
+ // Scorer Definition Version Methods
2816
+ // ==========================================================================
2817
+ async createVersion(input) {
2818
+ this.logger.debug(
2819
+ `InMemoryScorerDefinitionsStorage: createVersion called for scorer definition ${input.scorerDefinitionId}`
2820
+ );
2821
+ if (this.db.scorerDefinitionVersions.has(input.id)) {
2822
+ throw new Error(`Version with id ${input.id} already exists`);
2823
+ }
2824
+ for (const version2 of this.db.scorerDefinitionVersions.values()) {
2825
+ if (version2.scorerDefinitionId === input.scorerDefinitionId && version2.versionNumber === input.versionNumber) {
2826
+ throw new Error(
2827
+ `Version number ${input.versionNumber} already exists for scorer definition ${input.scorerDefinitionId}`
2828
+ );
2829
+ }
2830
+ }
2831
+ const version = {
2832
+ ...input,
2833
+ createdAt: /* @__PURE__ */ new Date()
2834
+ };
2835
+ this.db.scorerDefinitionVersions.set(input.id, this.deepCopyVersion(version));
2836
+ return this.deepCopyVersion(version);
2837
+ }
2838
+ async getVersion(id) {
2839
+ this.logger.debug(`InMemoryScorerDefinitionsStorage: getVersion called for ${id}`);
2840
+ const version = this.db.scorerDefinitionVersions.get(id);
2841
+ return version ? this.deepCopyVersion(version) : null;
2842
+ }
2843
+ async getVersionByNumber(scorerDefinitionId, versionNumber) {
2844
+ this.logger.debug(
2845
+ `InMemoryScorerDefinitionsStorage: getVersionByNumber called for scorer definition ${scorerDefinitionId}, v${versionNumber}`
2846
+ );
2847
+ for (const version of this.db.scorerDefinitionVersions.values()) {
2848
+ if (version.scorerDefinitionId === scorerDefinitionId && version.versionNumber === versionNumber) {
2849
+ return this.deepCopyVersion(version);
2850
+ }
2851
+ }
2852
+ return null;
2853
+ }
2854
+ async getLatestVersion(scorerDefinitionId) {
2855
+ this.logger.debug(
2856
+ `InMemoryScorerDefinitionsStorage: getLatestVersion called for scorer definition ${scorerDefinitionId}`
2857
+ );
2858
+ let latest = null;
2859
+ for (const version of this.db.scorerDefinitionVersions.values()) {
2860
+ if (version.scorerDefinitionId === scorerDefinitionId) {
2861
+ if (!latest || version.versionNumber > latest.versionNumber) {
2862
+ latest = version;
2863
+ }
2864
+ }
2865
+ }
2866
+ return latest ? this.deepCopyVersion(latest) : null;
2867
+ }
2868
+ async listVersions(input) {
2869
+ const { scorerDefinitionId, page = 0, perPage: perPageInput, orderBy } = input;
2870
+ const { field, direction } = this.parseVersionOrderBy(orderBy);
2871
+ this.logger.debug(
2872
+ `InMemoryScorerDefinitionsStorage: listVersions called for scorer definition ${scorerDefinitionId}`
2873
+ );
2874
+ const perPage = normalizePerPage(perPageInput, 20);
2875
+ if (page < 0) {
2876
+ throw new Error("page must be >= 0");
2877
+ }
2878
+ const maxOffset = Number.MAX_SAFE_INTEGER / 2;
2879
+ if (page * perPage > maxOffset) {
2880
+ throw new Error("page value too large");
2881
+ }
2882
+ let versions = Array.from(this.db.scorerDefinitionVersions.values()).filter(
2883
+ (v) => v.scorerDefinitionId === scorerDefinitionId
2884
+ );
2885
+ versions = this.sortVersions(versions, field, direction);
2886
+ const clonedVersions = versions.map((v) => this.deepCopyVersion(v));
2887
+ const total = clonedVersions.length;
2888
+ const { offset, perPage: perPageForResponse } = calculatePagination(page, perPageInput, perPage);
2889
+ const paginatedVersions = clonedVersions.slice(offset, offset + perPage);
2890
+ return {
2891
+ versions: paginatedVersions,
2892
+ total,
2893
+ page,
2894
+ perPage: perPageForResponse,
2895
+ hasMore: offset + perPage < total
2896
+ };
2897
+ }
2898
+ async deleteVersion(id) {
2899
+ this.logger.debug(`InMemoryScorerDefinitionsStorage: deleteVersion called for ${id}`);
2900
+ this.db.scorerDefinitionVersions.delete(id);
2901
+ }
2902
+ async deleteVersionsByParentId(entityId) {
2903
+ this.logger.debug(
2904
+ `InMemoryScorerDefinitionsStorage: deleteVersionsByParentId called for scorer definition ${entityId}`
2905
+ );
2906
+ const idsToDelete = [];
2907
+ for (const [id, version] of this.db.scorerDefinitionVersions.entries()) {
2908
+ if (version.scorerDefinitionId === entityId) {
2909
+ idsToDelete.push(id);
2910
+ }
2911
+ }
2912
+ for (const id of idsToDelete) {
2913
+ this.db.scorerDefinitionVersions.delete(id);
2914
+ }
2915
+ }
2916
+ async countVersions(scorerDefinitionId) {
2917
+ this.logger.debug(
2918
+ `InMemoryScorerDefinitionsStorage: countVersions called for scorer definition ${scorerDefinitionId}`
2919
+ );
2920
+ let count = 0;
2921
+ for (const version of this.db.scorerDefinitionVersions.values()) {
2922
+ if (version.scorerDefinitionId === scorerDefinitionId) {
2923
+ count++;
2924
+ }
2925
+ }
2926
+ return count;
2927
+ }
2928
+ // ==========================================================================
2929
+ // Private Helper Methods
2930
+ // ==========================================================================
2931
+ deepCopyScorer(scorer) {
2932
+ return {
2933
+ ...scorer,
2934
+ metadata: scorer.metadata ? { ...scorer.metadata } : scorer.metadata
2935
+ };
2936
+ }
2937
+ deepCopyVersion(version) {
2938
+ return {
2939
+ ...version,
2940
+ model: version.model ? JSON.parse(JSON.stringify(version.model)) : version.model,
2941
+ scoreRange: version.scoreRange ? JSON.parse(JSON.stringify(version.scoreRange)) : version.scoreRange,
2942
+ presetConfig: version.presetConfig ? JSON.parse(JSON.stringify(version.presetConfig)) : version.presetConfig,
2943
+ defaultSampling: version.defaultSampling ? JSON.parse(JSON.stringify(version.defaultSampling)) : version.defaultSampling,
2944
+ changedFields: version.changedFields ? [...version.changedFields] : version.changedFields
2945
+ };
2946
+ }
2947
+ sortScorers(scorers, field, direction) {
2948
+ return scorers.sort((a, b) => {
2949
+ const aValue = a[field].getTime();
2950
+ const bValue = b[field].getTime();
2951
+ return direction === "ASC" ? aValue - bValue : bValue - aValue;
2952
+ });
2953
+ }
2954
+ sortVersions(versions, field, direction) {
2955
+ return versions.sort((a, b) => {
2956
+ let aVal;
2957
+ let bVal;
2958
+ if (field === "createdAt") {
2959
+ aVal = a.createdAt.getTime();
2960
+ bVal = b.createdAt.getTime();
2961
+ } else {
2962
+ aVal = a.versionNumber;
2963
+ bVal = b.versionNumber;
2964
+ }
2965
+ return direction === "ASC" ? aVal - bVal : bVal - aVal;
2966
+ });
2967
+ }
2968
+ };
2969
+
2219
2970
  // src/storage/domains/scores/base.ts
2220
2971
  var ScoresStorage = class extends StorageDomain {
2221
2972
  constructor() {
@@ -2638,7 +3389,9 @@ var InMemoryStore = class extends MastraCompositeStore {
2638
3389
  workflows: new WorkflowsInMemory({ db: this.#db }),
2639
3390
  scores: new ScoresInMemory({ db: this.#db }),
2640
3391
  observability: new ObservabilityInMemory({ db: this.#db }),
2641
- agents: new InMemoryAgentsStorage({ db: this.#db })
3392
+ agents: new InMemoryAgentsStorage({ db: this.#db }),
3393
+ promptBlocks: new InMemoryPromptBlocksStorage({ db: this.#db }),
3394
+ scorerDefinitions: new InMemoryScorerDefinitionsStorage({ db: this.#db })
2642
3395
  };
2643
3396
  }
2644
3397
  /**
@@ -2773,7 +3526,11 @@ var StoreOperationsInMemory = class extends StoreOperations {
2773
3526
  mastra_ai_spans: /* @__PURE__ */ new Map(),
2774
3527
  mastra_agents: /* @__PURE__ */ new Map(),
2775
3528
  mastra_agent_versions: /* @__PURE__ */ new Map(),
2776
- mastra_observational_memory: /* @__PURE__ */ new Map()
3529
+ mastra_observational_memory: /* @__PURE__ */ new Map(),
3530
+ mastra_prompt_blocks: /* @__PURE__ */ new Map(),
3531
+ mastra_prompt_block_versions: /* @__PURE__ */ new Map(),
3532
+ mastra_scorer_definitions: /* @__PURE__ */ new Map(),
3533
+ mastra_scorer_definition_versions: /* @__PURE__ */ new Map()
2777
3534
  };
2778
3535
  }
2779
3536
  getDatabase() {
@@ -2838,6 +3595,6 @@ var StoreOperationsInMemory = class extends StoreOperations {
2838
3595
  }
2839
3596
  };
2840
3597
 
2841
- export { AgentsStorage, InMemoryAgentsStorage, InMemoryDB, InMemoryMemory, InMemoryStore, MastraCompositeStore, MastraStorage, MemoryStorage, MockStore, ObservabilityInMemory, ObservabilityStorage, ScoresInMemory, ScoresStorage, StorageDomain, StoreOperations, StoreOperationsInMemory, WorkflowsInMemory, WorkflowsStorage, calculatePagination, createPendingMarker, createStorageErrorId, createStoreErrorId, createVectorErrorId, ensureDate, filterByDateRange, getDefaultValue, getSqlType, jsonValueEquals, normalizePerPage, safelyParseJSON, serializeDate, transformRow, transformScoreRow };
2842
- //# sourceMappingURL=chunk-VX7UA3SO.js.map
2843
- //# sourceMappingURL=chunk-VX7UA3SO.js.map
3598
+ export { AgentsStorage, InMemoryAgentsStorage, InMemoryDB, InMemoryMemory, InMemoryPromptBlocksStorage, InMemoryScorerDefinitionsStorage, InMemoryStore, MastraCompositeStore, MastraStorage, MemoryStorage, MockStore, ObservabilityInMemory, ObservabilityStorage, PromptBlocksStorage, ScorerDefinitionsStorage, ScoresInMemory, ScoresStorage, StorageDomain, StoreOperations, StoreOperationsInMemory, VersionedStorageDomain, WorkflowsInMemory, WorkflowsStorage, calculatePagination, createPendingMarker, createStorageErrorId, createStoreErrorId, createVectorErrorId, ensureDate, filterByDateRange, getDefaultValue, getSqlType, jsonValueEquals, normalizePerPage, safelyParseJSON, serializeDate, transformRow, transformScoreRow };
3599
+ //# sourceMappingURL=chunk-MOOJ3H3C.js.map
3600
+ //# sourceMappingURL=chunk-MOOJ3H3C.js.map