@mastra/server 1.23.0-alpha.7 → 1.23.0-alpha.8

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 (112) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/_types/@internal_core/dist/index.d.ts +3 -1
  3. package/dist/{chunk-VMA5TY4H.cjs → chunk-2KF7EWOT.cjs} +314 -190
  4. package/dist/chunk-2KF7EWOT.cjs.map +1 -0
  5. package/dist/{chunk-VDHLJ6OD.cjs → chunk-3D2IBKF6.cjs} +4 -4
  6. package/dist/{chunk-VDHLJ6OD.cjs.map → chunk-3D2IBKF6.cjs.map} +1 -1
  7. package/dist/{chunk-B2OFZDJQ.cjs → chunk-4HHL4C6V.cjs} +13 -13
  8. package/dist/{chunk-B2OFZDJQ.cjs.map → chunk-4HHL4C6V.cjs.map} +1 -1
  9. package/dist/{chunk-QBXHK27Z.js → chunk-52JPWUPI.js} +3 -3
  10. package/dist/{chunk-QBXHK27Z.js.map → chunk-52JPWUPI.js.map} +1 -1
  11. package/dist/{chunk-VXBTV6LH.js → chunk-6MMZVEFC.js} +8 -3
  12. package/dist/chunk-6MMZVEFC.js.map +1 -0
  13. package/dist/{chunk-4EA2CJG4.js → chunk-A7BSSXDD.js} +3 -3
  14. package/dist/{chunk-4EA2CJG4.js.map → chunk-A7BSSXDD.js.map} +1 -1
  15. package/dist/{chunk-LRJ4LQBR.cjs → chunk-F4TKO2VD.cjs} +6 -6
  16. package/dist/{chunk-LRJ4LQBR.cjs.map → chunk-F4TKO2VD.cjs.map} +1 -1
  17. package/dist/{chunk-ZVSNY6VT.js → chunk-GMZFJZO4.js} +4 -3
  18. package/dist/chunk-GMZFJZO4.js.map +1 -0
  19. package/dist/{chunk-INKHQLVW.js → chunk-HKALCAKJ.js} +3 -3
  20. package/dist/{chunk-INKHQLVW.js.map → chunk-HKALCAKJ.js.map} +1 -1
  21. package/dist/{chunk-VOCNBP5Q.cjs → chunk-HUWHY7SC.cjs} +4 -3
  22. package/dist/chunk-HUWHY7SC.cjs.map +1 -0
  23. package/dist/{chunk-U6CWJTHH.cjs → chunk-I5FEAHJM.cjs} +29 -29
  24. package/dist/{chunk-U6CWJTHH.cjs.map → chunk-I5FEAHJM.cjs.map} +1 -1
  25. package/dist/{chunk-UVK6YXEL.cjs → chunk-IOGPYY6Z.cjs} +77 -75
  26. package/dist/chunk-IOGPYY6Z.cjs.map +1 -0
  27. package/dist/{chunk-5C535ZJO.cjs → chunk-KG5RK6PO.cjs} +4 -4
  28. package/dist/{chunk-5C535ZJO.cjs.map → chunk-KG5RK6PO.cjs.map} +1 -1
  29. package/dist/{chunk-AS6EW5BK.js → chunk-KYVNA2EN.js} +3 -3
  30. package/dist/{chunk-AS6EW5BK.js.map → chunk-KYVNA2EN.js.map} +1 -1
  31. package/dist/{chunk-FLGIOJA5.js → chunk-MO3ZKWYY.js} +80 -10
  32. package/dist/chunk-MO3ZKWYY.js.map +1 -0
  33. package/dist/{chunk-6Q6OH2XV.js → chunk-OOZYQF4U.js} +3 -2
  34. package/dist/chunk-OOZYQF4U.js.map +1 -0
  35. package/dist/{chunk-IFEMVRLI.cjs → chunk-OV2TAONK.cjs} +3 -2
  36. package/dist/chunk-OV2TAONK.cjs.map +1 -0
  37. package/dist/{chunk-DALTY2FC.js → chunk-P72YX3EY.js} +3 -3
  38. package/dist/{chunk-DALTY2FC.js.map → chunk-P72YX3EY.js.map} +1 -1
  39. package/dist/{chunk-SE5M6GC6.js → chunk-T4RZ3X4I.js} +4 -4
  40. package/dist/{chunk-SE5M6GC6.js.map → chunk-T4RZ3X4I.js.map} +1 -1
  41. package/dist/{chunk-XUIA3SIB.js → chunk-TBJHTT7B.js} +6 -4
  42. package/dist/chunk-TBJHTT7B.js.map +1 -0
  43. package/dist/{chunk-SZ2FSVP5.js → chunk-TX3IIDZN.js} +301 -177
  44. package/dist/chunk-TX3IIDZN.js.map +1 -0
  45. package/dist/{chunk-PNCR2M6Y.cjs → chunk-UHWF2UKO.cjs} +80 -10
  46. package/dist/chunk-UHWF2UKO.cjs.map +1 -0
  47. package/dist/{chunk-HHGZGERI.cjs → chunk-UI3SS2JO.cjs} +4 -4
  48. package/dist/{chunk-HHGZGERI.cjs.map → chunk-UI3SS2JO.cjs.map} +1 -1
  49. package/dist/{chunk-RNC7VEI6.cjs → chunk-WKBMLKBC.cjs} +8 -3
  50. package/dist/chunk-WKBMLKBC.cjs.map +1 -0
  51. package/dist/{chunk-SHWDJY3O.js → chunk-WZ6XPWVK.js} +3 -3
  52. package/dist/{chunk-SHWDJY3O.js.map → chunk-WZ6XPWVK.js.map} +1 -1
  53. package/dist/{chunk-SCEPRIRF.cjs → chunk-X2IFWP5E.cjs} +5 -5
  54. package/dist/{chunk-SCEPRIRF.cjs.map → chunk-X2IFWP5E.cjs.map} +1 -1
  55. package/dist/{chunk-DGS7O6Q7.js → chunk-XO5PXSFC.js} +3 -3
  56. package/dist/{chunk-DGS7O6Q7.js.map → chunk-XO5PXSFC.js.map} +1 -1
  57. package/dist/{chunk-LV4FV46S.cjs → chunk-ZWKZK4WO.cjs} +6 -6
  58. package/dist/{chunk-LV4FV46S.cjs.map → chunk-ZWKZK4WO.cjs.map} +1 -1
  59. package/dist/docs/SKILL.md +1 -1
  60. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  61. package/dist/{observational-memory-JQ34KLFS-CNLSTXO3.cjs → observational-memory-OVRHDQRG-OCHV6RZ7.cjs} +26 -26
  62. package/dist/{observational-memory-JQ34KLFS-CNLSTXO3.cjs.map → observational-memory-OVRHDQRG-OCHV6RZ7.cjs.map} +1 -1
  63. package/dist/{observational-memory-JQ34KLFS-KLWGOGP4.js → observational-memory-OVRHDQRG-RC3PRA65.js} +3 -3
  64. package/dist/{observational-memory-JQ34KLFS-KLWGOGP4.js.map → observational-memory-OVRHDQRG-RC3PRA65.js.map} +1 -1
  65. package/dist/server/handlers/a2a.cjs +9 -9
  66. package/dist/server/handlers/a2a.js +1 -1
  67. package/dist/server/handlers/agent-builder.cjs +16 -16
  68. package/dist/server/handlers/agent-builder.js +1 -1
  69. package/dist/server/handlers/agents.cjs +35 -35
  70. package/dist/server/handlers/agents.d.ts.map +1 -1
  71. package/dist/server/handlers/agents.js +1 -1
  72. package/dist/server/handlers/conversations.cjs +5 -5
  73. package/dist/server/handlers/conversations.js +1 -1
  74. package/dist/server/handlers/memory.cjs +27 -27
  75. package/dist/server/handlers/memory.d.ts +4 -0
  76. package/dist/server/handlers/memory.d.ts.map +1 -1
  77. package/dist/server/handlers/memory.js +1 -1
  78. package/dist/server/handlers/observability-new-endpoints.cjs +27 -27
  79. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  80. package/dist/server/handlers/observability.cjs +33 -33
  81. package/dist/server/handlers/observability.js +2 -2
  82. package/dist/server/handlers/responses.cjs +4 -4
  83. package/dist/server/handlers/responses.js +1 -1
  84. package/dist/server/handlers/scores.cjs +7 -7
  85. package/dist/server/handlers/scores.js +1 -1
  86. package/dist/server/handlers/tools.cjs +6 -6
  87. package/dist/server/handlers/tools.js +1 -1
  88. package/dist/server/handlers/voice.cjs +8 -8
  89. package/dist/server/handlers/voice.js +1 -1
  90. package/dist/server/handlers.cjs +20 -20
  91. package/dist/server/handlers.js +10 -10
  92. package/dist/server/schemas/index.cjs +50 -50
  93. package/dist/server/schemas/index.js +2 -2
  94. package/dist/server/schemas/memory.d.ts +2 -0
  95. package/dist/server/schemas/memory.d.ts.map +1 -1
  96. package/dist/server/server-adapter/index.cjs +129 -129
  97. package/dist/server/server-adapter/index.js +11 -11
  98. package/dist/server/server-adapter/routes/memory.d.ts +4 -0
  99. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  100. package/package.json +5 -5
  101. package/dist/chunk-6Q6OH2XV.js.map +0 -1
  102. package/dist/chunk-FLGIOJA5.js.map +0 -1
  103. package/dist/chunk-IFEMVRLI.cjs.map +0 -1
  104. package/dist/chunk-PNCR2M6Y.cjs.map +0 -1
  105. package/dist/chunk-RNC7VEI6.cjs.map +0 -1
  106. package/dist/chunk-SZ2FSVP5.js.map +0 -1
  107. package/dist/chunk-UVK6YXEL.cjs.map +0 -1
  108. package/dist/chunk-VMA5TY4H.cjs.map +0 -1
  109. package/dist/chunk-VOCNBP5Q.cjs.map +0 -1
  110. package/dist/chunk-VXBTV6LH.js.map +0 -1
  111. package/dist/chunk-XUIA3SIB.js.map +0 -1
  112. package/dist/chunk-ZVSNY6VT.js.map +0 -1
@@ -7253,6 +7253,47 @@ Async buffering is enabled by default \u2014 this opt-out is only needed when us
7253
7253
  }
7254
7254
  }
7255
7255
  }
7256
+ /**
7257
+ * Resolve the effective messageTokens for a record.
7258
+ * Only explicit per-record overrides (stored under `_overrides`) win;
7259
+ * the initial config snapshot written by getOrCreateRecord() is ignored
7260
+ * so that later instance-level changes still take effect.
7261
+ *
7262
+ * Overrides that fall below the instance-level buffering floor
7263
+ * (bufferTokens / absolute bufferActivation) are clamped to the
7264
+ * instance threshold to preserve buffering invariants.
7265
+ */
7266
+ getEffectiveMessageTokens(record) {
7267
+ const overrides = record.config?._overrides;
7268
+ const recordTokens = overrides?.observation?.messageTokens;
7269
+ if (recordTokens) {
7270
+ const maxOverride = getMaxThreshold(recordTokens);
7271
+ const bufferTokens = this.observationConfig.bufferTokens;
7272
+ if (bufferTokens && maxOverride <= bufferTokens) {
7273
+ return this.observationConfig.messageTokens;
7274
+ }
7275
+ const bufferActivation = this.observationConfig.bufferActivation;
7276
+ if (bufferActivation && bufferActivation >= 1e3 && maxOverride <= bufferActivation) {
7277
+ return this.observationConfig.messageTokens;
7278
+ }
7279
+ return recordTokens;
7280
+ }
7281
+ return this.observationConfig.messageTokens;
7282
+ }
7283
+ /**
7284
+ * Resolve the effective reflection observationTokens for a record.
7285
+ * Only explicit per-record overrides (stored under `_overrides`) win;
7286
+ * the initial config snapshot is ignored so instance-level changes
7287
+ * still take effect for existing records.
7288
+ */
7289
+ getEffectiveReflectionTokens(record) {
7290
+ const overrides = record.config?._overrides;
7291
+ const recordTokens = overrides?.reflection?.observationTokens;
7292
+ if (recordTokens) {
7293
+ return recordTokens;
7294
+ }
7295
+ return this.reflectionConfig.observationTokens;
7296
+ }
7256
7297
  /**
7257
7298
  * Check whether the unobserved message tokens meet the observation threshold.
7258
7299
  */
@@ -7260,7 +7301,7 @@ Async buffering is enabled by default \u2014 this opt-out is only needed when us
7260
7301
  const { record, unobservedTokens, extraTokens = 0 } = opts;
7261
7302
  const pendingTokens = (record.pendingMessageTokens ?? 0) + unobservedTokens + extraTokens;
7262
7303
  const currentObservationTokens = record.observationTokenCount ?? 0;
7263
- const threshold = calculateDynamicThreshold(this.observationConfig.messageTokens, currentObservationTokens);
7304
+ const threshold = calculateDynamicThreshold(this.getEffectiveMessageTokens(record), currentObservationTokens);
7264
7305
  return pendingTokens >= threshold;
7265
7306
  }
7266
7307
  /**
@@ -8409,7 +8450,7 @@ ${grouped}` : grouped;
8409
8450
  const projectedMessageRemoval = calculateProjectedMessageRemoval(
8410
8451
  bufferedChunks,
8411
8452
  this.observationConfig.bufferActivation ?? 1,
8412
- getMaxThreshold(this.observationConfig.messageTokens),
8453
+ getMaxThreshold(this.getEffectiveMessageTokens(record)),
8413
8454
  pendingTokens
8414
8455
  );
8415
8456
  let obsBufferStatus = "idle";
@@ -8498,7 +8539,7 @@ ${grouped}` : grouped;
8498
8539
  otherThreadTokens = otherContext ? this.tokenCounter.countString(otherContext) : 0;
8499
8540
  }
8500
8541
  const pendingTokens = Math.max(0, contextWindowTokens + otherThreadTokens);
8501
- const threshold = calculateDynamicThreshold(this.observationConfig.messageTokens, currentObservationTokens);
8542
+ const threshold = calculateDynamicThreshold(this.getEffectiveMessageTokens(record), currentObservationTokens);
8502
8543
  const bufferedChunks = getBufferedChunks(record);
8503
8544
  const bufferedChunkCount = bufferedChunks.length;
8504
8545
  const bufferedChunkTokens = bufferedChunks.reduce((sum, chunk) => sum + (chunk.messageTokens ?? 0), 0);
@@ -8515,11 +8556,12 @@ ${grouped}` : grouped;
8515
8556
  );
8516
8557
  }
8517
8558
  const shouldObserve = pendingTokens >= threshold;
8518
- const reflectThreshold = getMaxThreshold(this.reflectionConfig.observationTokens);
8559
+ const reflectThreshold = getMaxThreshold(this.getEffectiveReflectionTokens(record));
8519
8560
  const shouldReflect = currentObservationTokens >= reflectThreshold;
8520
8561
  const canActivate = bufferedChunkCount > 0;
8521
- const isSharedBudget = typeof this.observationConfig.messageTokens !== "number";
8522
- const totalBudget = isSharedBudget ? this.observationConfig.messageTokens.max : 0;
8562
+ const effectiveMessageTokens = this.getEffectiveMessageTokens(record);
8563
+ const isSharedBudget = typeof effectiveMessageTokens !== "number";
8564
+ const totalBudget = isSharedBudget ? effectiveMessageTokens.max : 0;
8523
8565
  const effectiveObservationTokensThreshold = isSharedBudget ? Math.max(totalBudget - threshold, 1e3) : reflectThreshold;
8524
8566
  const unbufferedPendingTokens = Math.max(0, pendingTokens - bufferedChunkTokens);
8525
8567
  return {
@@ -8834,7 +8876,7 @@ ${grouped}` : grouped;
8834
8876
  if (!freshChunks.length) {
8835
8877
  return { activated: false, record };
8836
8878
  }
8837
- const messageTokensThreshold = getMaxThreshold(this.observationConfig.messageTokens);
8879
+ const messageTokensThreshold = getMaxThreshold(this.getEffectiveMessageTokens(freshRecord));
8838
8880
  const bufferActivation = this.observationConfig.bufferActivation ?? 0.7;
8839
8881
  const activationRatio = resolveActivationRatio(bufferActivation, messageTokensThreshold);
8840
8882
  const totalChunkMessageTokens = freshChunks.reduce((sum, c) => sum + (c.messageTokens ?? 0), 0);
@@ -8983,7 +9025,7 @@ ${grouped}` : grouped;
8983
9025
  await this.storage.setReflectingFlag(record.id, true);
8984
9026
  registerOp(record.id, "reflecting");
8985
9027
  try {
8986
- const reflectThreshold = getMaxThreshold(this.reflectionConfig.observationTokens);
9028
+ const reflectThreshold = getMaxThreshold(this.getEffectiveReflectionTokens(record));
8987
9029
  const reflectResult = await this.reflector.call(
8988
9030
  record.activeObservations,
8989
9031
  prompt,
@@ -9028,6 +9070,34 @@ ${grouped}` : grouped;
9028
9070
  const ids = this.getStorageIds(threadId, resourceId);
9029
9071
  return this.storage.getObservationalMemory(ids.threadId, ids.resourceId);
9030
9072
  }
9073
+ /**
9074
+ * Update per-record config overrides for observation and/or reflection thresholds.
9075
+ * The provided config is deep-merged into the record's `_overrides` key,
9076
+ * so you only need to specify the fields you want to change.
9077
+ *
9078
+ * Overrides that violate buffering invariants (e.g. messageTokens below
9079
+ * bufferTokens) are silently ignored at read time — the helpers fall back
9080
+ * to the instance-level config.
9081
+ *
9082
+ * @example
9083
+ * ```ts
9084
+ * await om.updateRecordConfig('thread-1', undefined, {
9085
+ * observation: { messageTokens: 2000 },
9086
+ * reflection: { observationTokens: 8000 },
9087
+ * });
9088
+ * ```
9089
+ */
9090
+ async updateRecordConfig(threadId, resourceId, config) {
9091
+ const ids = this.getStorageIds(threadId, resourceId);
9092
+ const record = await this.storage.getObservationalMemory(ids.threadId, ids.resourceId);
9093
+ if (!record) {
9094
+ throw new Error(`No observational memory record found for thread ${ids.threadId}`);
9095
+ }
9096
+ await this.storage.updateObservationalMemoryConfig({
9097
+ id: record.id,
9098
+ config: { _overrides: config }
9099
+ });
9100
+ }
9031
9101
  /**
9032
9102
  * Get observation history (previous generations)
9033
9103
  */
@@ -9602,5 +9672,5 @@ exports.stripEphemeralAnchorIds = stripEphemeralAnchorIds;
9602
9672
  exports.stripObservationGroups = stripObservationGroups;
9603
9673
  exports.truncateStringByTokens = truncateStringByTokens;
9604
9674
  exports.wrapInObservationGroup = wrapInObservationGroup;
9605
- //# sourceMappingURL=chunk-PNCR2M6Y.cjs.map
9606
- //# sourceMappingURL=chunk-PNCR2M6Y.cjs.map
9675
+ //# sourceMappingURL=chunk-UHWF2UKO.cjs.map
9676
+ //# sourceMappingURL=chunk-UHWF2UKO.cjs.map