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

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 +16 -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
@@ -7251,6 +7251,47 @@ Async buffering is enabled by default \u2014 this opt-out is only needed when us
7251
7251
  }
7252
7252
  }
7253
7253
  }
7254
+ /**
7255
+ * Resolve the effective messageTokens for a record.
7256
+ * Only explicit per-record overrides (stored under `_overrides`) win;
7257
+ * the initial config snapshot written by getOrCreateRecord() is ignored
7258
+ * so that later instance-level changes still take effect.
7259
+ *
7260
+ * Overrides that fall below the instance-level buffering floor
7261
+ * (bufferTokens / absolute bufferActivation) are clamped to the
7262
+ * instance threshold to preserve buffering invariants.
7263
+ */
7264
+ getEffectiveMessageTokens(record) {
7265
+ const overrides = record.config?._overrides;
7266
+ const recordTokens = overrides?.observation?.messageTokens;
7267
+ if (recordTokens) {
7268
+ const maxOverride = getMaxThreshold(recordTokens);
7269
+ const bufferTokens = this.observationConfig.bufferTokens;
7270
+ if (bufferTokens && maxOverride <= bufferTokens) {
7271
+ return this.observationConfig.messageTokens;
7272
+ }
7273
+ const bufferActivation = this.observationConfig.bufferActivation;
7274
+ if (bufferActivation && bufferActivation >= 1e3 && maxOverride <= bufferActivation) {
7275
+ return this.observationConfig.messageTokens;
7276
+ }
7277
+ return recordTokens;
7278
+ }
7279
+ return this.observationConfig.messageTokens;
7280
+ }
7281
+ /**
7282
+ * Resolve the effective reflection observationTokens for a record.
7283
+ * Only explicit per-record overrides (stored under `_overrides`) win;
7284
+ * the initial config snapshot is ignored so instance-level changes
7285
+ * still take effect for existing records.
7286
+ */
7287
+ getEffectiveReflectionTokens(record) {
7288
+ const overrides = record.config?._overrides;
7289
+ const recordTokens = overrides?.reflection?.observationTokens;
7290
+ if (recordTokens) {
7291
+ return recordTokens;
7292
+ }
7293
+ return this.reflectionConfig.observationTokens;
7294
+ }
7254
7295
  /**
7255
7296
  * Check whether the unobserved message tokens meet the observation threshold.
7256
7297
  */
@@ -7258,7 +7299,7 @@ Async buffering is enabled by default \u2014 this opt-out is only needed when us
7258
7299
  const { record, unobservedTokens, extraTokens = 0 } = opts;
7259
7300
  const pendingTokens = (record.pendingMessageTokens ?? 0) + unobservedTokens + extraTokens;
7260
7301
  const currentObservationTokens = record.observationTokenCount ?? 0;
7261
- const threshold = calculateDynamicThreshold(this.observationConfig.messageTokens, currentObservationTokens);
7302
+ const threshold = calculateDynamicThreshold(this.getEffectiveMessageTokens(record), currentObservationTokens);
7262
7303
  return pendingTokens >= threshold;
7263
7304
  }
7264
7305
  /**
@@ -8407,7 +8448,7 @@ ${grouped}` : grouped;
8407
8448
  const projectedMessageRemoval = calculateProjectedMessageRemoval(
8408
8449
  bufferedChunks,
8409
8450
  this.observationConfig.bufferActivation ?? 1,
8410
- getMaxThreshold(this.observationConfig.messageTokens),
8451
+ getMaxThreshold(this.getEffectiveMessageTokens(record)),
8411
8452
  pendingTokens
8412
8453
  );
8413
8454
  let obsBufferStatus = "idle";
@@ -8496,7 +8537,7 @@ ${grouped}` : grouped;
8496
8537
  otherThreadTokens = otherContext ? this.tokenCounter.countString(otherContext) : 0;
8497
8538
  }
8498
8539
  const pendingTokens = Math.max(0, contextWindowTokens + otherThreadTokens);
8499
- const threshold = calculateDynamicThreshold(this.observationConfig.messageTokens, currentObservationTokens);
8540
+ const threshold = calculateDynamicThreshold(this.getEffectiveMessageTokens(record), currentObservationTokens);
8500
8541
  const bufferedChunks = getBufferedChunks(record);
8501
8542
  const bufferedChunkCount = bufferedChunks.length;
8502
8543
  const bufferedChunkTokens = bufferedChunks.reduce((sum, chunk) => sum + (chunk.messageTokens ?? 0), 0);
@@ -8513,11 +8554,12 @@ ${grouped}` : grouped;
8513
8554
  );
8514
8555
  }
8515
8556
  const shouldObserve = pendingTokens >= threshold;
8516
- const reflectThreshold = getMaxThreshold(this.reflectionConfig.observationTokens);
8557
+ const reflectThreshold = getMaxThreshold(this.getEffectiveReflectionTokens(record));
8517
8558
  const shouldReflect = currentObservationTokens >= reflectThreshold;
8518
8559
  const canActivate = bufferedChunkCount > 0;
8519
- const isSharedBudget = typeof this.observationConfig.messageTokens !== "number";
8520
- const totalBudget = isSharedBudget ? this.observationConfig.messageTokens.max : 0;
8560
+ const effectiveMessageTokens = this.getEffectiveMessageTokens(record);
8561
+ const isSharedBudget = typeof effectiveMessageTokens !== "number";
8562
+ const totalBudget = isSharedBudget ? effectiveMessageTokens.max : 0;
8521
8563
  const effectiveObservationTokensThreshold = isSharedBudget ? Math.max(totalBudget - threshold, 1e3) : reflectThreshold;
8522
8564
  const unbufferedPendingTokens = Math.max(0, pendingTokens - bufferedChunkTokens);
8523
8565
  return {
@@ -8832,7 +8874,7 @@ ${grouped}` : grouped;
8832
8874
  if (!freshChunks.length) {
8833
8875
  return { activated: false, record };
8834
8876
  }
8835
- const messageTokensThreshold = getMaxThreshold(this.observationConfig.messageTokens);
8877
+ const messageTokensThreshold = getMaxThreshold(this.getEffectiveMessageTokens(freshRecord));
8836
8878
  const bufferActivation = this.observationConfig.bufferActivation ?? 0.7;
8837
8879
  const activationRatio = resolveActivationRatio(bufferActivation, messageTokensThreshold);
8838
8880
  const totalChunkMessageTokens = freshChunks.reduce((sum, c) => sum + (c.messageTokens ?? 0), 0);
@@ -8981,7 +9023,7 @@ ${grouped}` : grouped;
8981
9023
  await this.storage.setReflectingFlag(record.id, true);
8982
9024
  registerOp(record.id, "reflecting");
8983
9025
  try {
8984
- const reflectThreshold = getMaxThreshold(this.reflectionConfig.observationTokens);
9026
+ const reflectThreshold = getMaxThreshold(this.getEffectiveReflectionTokens(record));
8985
9027
  const reflectResult = await this.reflector.call(
8986
9028
  record.activeObservations,
8987
9029
  prompt,
@@ -9026,6 +9068,34 @@ ${grouped}` : grouped;
9026
9068
  const ids = this.getStorageIds(threadId, resourceId);
9027
9069
  return this.storage.getObservationalMemory(ids.threadId, ids.resourceId);
9028
9070
  }
9071
+ /**
9072
+ * Update per-record config overrides for observation and/or reflection thresholds.
9073
+ * The provided config is deep-merged into the record's `_overrides` key,
9074
+ * so you only need to specify the fields you want to change.
9075
+ *
9076
+ * Overrides that violate buffering invariants (e.g. messageTokens below
9077
+ * bufferTokens) are silently ignored at read time — the helpers fall back
9078
+ * to the instance-level config.
9079
+ *
9080
+ * @example
9081
+ * ```ts
9082
+ * await om.updateRecordConfig('thread-1', undefined, {
9083
+ * observation: { messageTokens: 2000 },
9084
+ * reflection: { observationTokens: 8000 },
9085
+ * });
9086
+ * ```
9087
+ */
9088
+ async updateRecordConfig(threadId, resourceId, config) {
9089
+ const ids = this.getStorageIds(threadId, resourceId);
9090
+ const record = await this.storage.getObservationalMemory(ids.threadId, ids.resourceId);
9091
+ if (!record) {
9092
+ throw new Error(`No observational memory record found for thread ${ids.threadId}`);
9093
+ }
9094
+ await this.storage.updateObservationalMemoryConfig({
9095
+ id: record.id,
9096
+ config: { _overrides: config }
9097
+ });
9098
+ }
9029
9099
  /**
9030
9100
  * Get observation history (previous generations)
9031
9101
  */
@@ -9573,5 +9643,5 @@ function getObservationsAsOf(activeObservations, asOf) {
9573
9643
  }
9574
9644
 
9575
9645
  export { ModelByInputTokens, OBSERVER_SYSTEM_PROMPT, ObservationalMemory, ObservationalMemoryProcessor, TokenCounter, buildObserverPrompt, buildObserverSystemPrompt, combineObservationGroupRanges, deriveObservationGroupProvenance, e, estimateTokenCount, extractCurrentTask, formatMessagesForObserver, formatToolResultForObserver, getObservationsAsOf, hasCurrentTaskSection, injectAnchorIds, optimizeObservationsForContext, parseAnchorId, parseObservationGroups, parseObserverOutput, reconcileObservationGroupsFromReflection, renderObservationGroupsForReflection, resolveToolResultValue, stripEphemeralAnchorIds, stripObservationGroups, truncateStringByTokens, wrapInObservationGroup };
9576
- //# sourceMappingURL=chunk-FLGIOJA5.js.map
9577
- //# sourceMappingURL=chunk-FLGIOJA5.js.map
9646
+ //# sourceMappingURL=chunk-MO3ZKWYY.js.map
9647
+ //# sourceMappingURL=chunk-MO3ZKWYY.js.map