@mastra/server 1.75.0-alpha.4 → 1.75.0-alpha.6

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 (86) hide show
  1. package/dist/{agent-versions-RvvNdlZk.cjs → agent-versions-CivkX9fT.cjs} +2 -2
  2. package/dist/{agent-versions-RvvNdlZk.cjs.map → agent-versions-CivkX9fT.cjs.map} +1 -1
  3. package/dist/{agent-versions-CTAEDQuT.js → agent-versions-oCebJ7rc.js} +2 -2
  4. package/dist/{agent-versions-CTAEDQuT.js.map → agent-versions-oCebJ7rc.js.map} +1 -1
  5. package/dist/{api-schema-manifest-BmNlBOvP.cjs → api-schema-manifest-BKsEMyEs.cjs} +2 -2
  6. package/dist/{api-schema-manifest-BmNlBOvP.cjs.map → api-schema-manifest-BKsEMyEs.cjs.map} +1 -1
  7. package/dist/{api-schema-manifest-Bsnp8kpD.js → api-schema-manifest-KsETdHDS.js} +2 -2
  8. package/dist/{api-schema-manifest-Bsnp8kpD.js.map → api-schema-manifest-KsETdHDS.js.map} +1 -1
  9. package/dist/{channels-DJkXEpTr.cjs → channels-DUdpygCQ.cjs} +39 -1
  10. package/dist/channels-DUdpygCQ.cjs.map +1 -0
  11. package/dist/{channels-DzaCNtXe.js → channels-T1KaEfZX.js} +34 -2
  12. package/dist/channels-T1KaEfZX.js.map +1 -0
  13. package/dist/{dist-BFUX7iPi.js → dist-D6XjxNT7.js} +83 -23
  14. package/dist/dist-D6XjxNT7.js.map +1 -0
  15. package/dist/{dist-DgDFoIF5.cjs → dist-Dz_c-SsY.cjs} +83 -23
  16. package/dist/dist-Dz_c-SsY.cjs.map +1 -0
  17. package/dist/docs/SKILL.md +1 -1
  18. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  19. package/dist/{routes--Al6ya95.js → routes-B_ehFjzs.js} +3 -2
  20. package/dist/routes-B_ehFjzs.js.map +1 -0
  21. package/dist/{routes-CeYKJ-Re.cjs → routes-Op7uJGai.cjs} +3 -2
  22. package/dist/routes-Op7uJGai.cjs.map +1 -0
  23. package/dist/{scorer-versions-BfGNw7Wp.cjs → scorer-versions-B8q9-oF2.cjs} +2 -2
  24. package/dist/{scorer-versions-BfGNw7Wp.cjs.map → scorer-versions-B8q9-oF2.cjs.map} +1 -1
  25. package/dist/{scorer-versions-gXsdWw0V.js → scorer-versions-DGLHODqM.js} +2 -2
  26. package/dist/{scorer-versions-gXsdWw0V.js.map → scorer-versions-DGLHODqM.js.map} +1 -1
  27. package/dist/server/handlers/agent-builder.cjs +1 -1
  28. package/dist/server/handlers/agent-builder.js +1 -1
  29. package/dist/server/handlers/agent-versions.cjs +1 -1
  30. package/dist/server/handlers/agent-versions.d.ts +368 -0
  31. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  32. package/dist/server/handlers/agent-versions.js +1 -1
  33. package/dist/server/handlers/agents.cjs +1 -1
  34. package/dist/server/handlers/agents.d.ts +92 -0
  35. package/dist/server/handlers/agents.d.ts.map +1 -1
  36. package/dist/server/handlers/agents.js +1 -1
  37. package/dist/server/handlers/channels.cjs +2 -1
  38. package/dist/server/handlers/channels.d.ts +53 -0
  39. package/dist/server/handlers/channels.d.ts.map +1 -1
  40. package/dist/server/handlers/channels.js +2 -2
  41. package/dist/server/handlers/scorer-versions.cjs +1 -1
  42. package/dist/server/handlers/scorer-versions.js +1 -1
  43. package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
  44. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  45. package/dist/server/handlers/stored-agents.cjs +1 -1
  46. package/dist/server/handlers/stored-agents.d.ts +460 -0
  47. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  48. package/dist/server/handlers/stored-agents.js +1 -1
  49. package/dist/server/handlers/stored-scorers.cjs +1 -1
  50. package/dist/server/handlers/stored-scorers.js +1 -1
  51. package/dist/server/handlers/system.cjs +1 -1
  52. package/dist/server/handlers/system.js +1 -1
  53. package/dist/server/handlers/tool-providers.cjs +2 -1
  54. package/dist/server/handlers/tool-providers.cjs.map +1 -1
  55. package/dist/server/handlers/tool-providers.d.ts.map +1 -1
  56. package/dist/server/handlers/tool-providers.js +2 -1
  57. package/dist/server/handlers/tool-providers.js.map +1 -1
  58. package/dist/server/schemas/agent-versions.d.ts +350 -0
  59. package/dist/server/schemas/agent-versions.d.ts.map +1 -1
  60. package/dist/server/schemas/channels.d.ts +11 -0
  61. package/dist/server/schemas/channels.d.ts.map +1 -1
  62. package/dist/server/schemas/index.cjs +4 -4
  63. package/dist/server/schemas/index.js +4 -4
  64. package/dist/server/schemas/stored-agents.d.ts +989 -149
  65. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  66. package/dist/server/server-adapter/index.cjs +1 -1
  67. package/dist/server/server-adapter/index.js +1 -1
  68. package/dist/server/server-adapter/routes/channels.d.ts +43 -0
  69. package/dist/server/server-adapter/routes/channels.d.ts.map +1 -1
  70. package/dist/{stored-agents-ts0bWw8l.js → stored-agents-BzIvRgtz.js} +3 -2
  71. package/dist/stored-agents-BzIvRgtz.js.map +1 -0
  72. package/dist/{stored-agents-Dmsel7ey.cjs → stored-agents-DpY3ssfx.cjs} +3 -2
  73. package/dist/stored-agents-DpY3ssfx.cjs.map +1 -0
  74. package/dist/{stored-scorers-DySg7-qS.js → stored-scorers-CAt8hFj2.js} +2 -2
  75. package/dist/{stored-scorers-DySg7-qS.js.map → stored-scorers-CAt8hFj2.js.map} +1 -1
  76. package/dist/{stored-scorers-DoW6lYh8.cjs → stored-scorers-DyeqU2Rj.cjs} +2 -2
  77. package/dist/{stored-scorers-DoW6lYh8.cjs.map → stored-scorers-DyeqU2Rj.cjs.map} +1 -1
  78. package/package.json +6 -6
  79. package/dist/channels-DJkXEpTr.cjs.map +0 -1
  80. package/dist/channels-DzaCNtXe.js.map +0 -1
  81. package/dist/dist-BFUX7iPi.js.map +0 -1
  82. package/dist/dist-DgDFoIF5.cjs.map +0 -1
  83. package/dist/routes--Al6ya95.js.map +0 -1
  84. package/dist/routes-CeYKJ-Re.cjs.map +0 -1
  85. package/dist/stored-agents-Dmsel7ey.cjs.map +0 -1
  86. package/dist/stored-agents-ts0bWw8l.js.map +0 -1
@@ -4637,7 +4637,7 @@ function splitLines(text) {
4637
4637
  return result;
4638
4638
  }
4639
4639
  //#endregion
4640
- //#region ../memory/dist/src-BxI-PDpC.js
4640
+ //#region ../memory/dist/src-BPHEGTkT.js
4641
4641
  var __defProp$3 = Object.defineProperty;
4642
4642
  var __exportAll = (all, no_symbols) => {
4643
4643
  let target = {};
@@ -23310,8 +23310,38 @@ const TRANSIENT_MESSAGE_SUBSTRINGS = [
23310
23310
  "request timed out",
23311
23311
  "request timeout",
23312
23312
  "connection reset",
23313
- "connection closed"
23313
+ "connection closed",
23314
+ "finished with finishreason \"other\""
23314
23315
  ];
23316
+ const INCOMPLETE_FINISH_REASONS = /* @__PURE__ */ new Set(["other", "unknown"]);
23317
+ /**
23318
+ * A model reply that ended before the model finished. Carries the AI SDK's
23319
+ * `isRetryable` flag, which `isTransientLLMError` and core's error processors
23320
+ * already recognize.
23321
+ *
23322
+ * @internal
23323
+ */
23324
+ var OmIncompleteResponseError = class extends Error {
23325
+ finishReason;
23326
+ isRetryable = true;
23327
+ constructor(label, finishReason) {
23328
+ super(`${label} response ended early (finishReason: ${finishReason})`);
23329
+ this.finishReason = finishReason;
23330
+ this.name = "OmIncompleteResponseError";
23331
+ }
23332
+ };
23333
+ /**
23334
+ * OM calls are single-step (`maxSteps: 1`). A step that ends with `other` or
23335
+ * `unknown` means the stream closed before the model finished, so its text is
23336
+ * partial. Throw a retryable error so `withRetry` re-runs the whole call
23337
+ * instead of saving it.
23338
+ *
23339
+ * @internal
23340
+ */
23341
+ function assertCompleteModelResponse(output, label) {
23342
+ if (output.finishReason && INCOMPLETE_FINISH_REASONS.has(output.finishReason)) throw new OmIncompleteResponseError(label, output.finishReason);
23343
+ return output;
23344
+ }
23315
23345
  function isRecord$5(value) {
23316
23346
  return typeof value === "object" && value !== null;
23317
23347
  }
@@ -25310,6 +25340,25 @@ function getObserverMessageLabel(msg) {
25310
25340
  if (isSystemReminderMessage(msg)) return "system-reminder";
25311
25341
  return msg.role.charAt(0).toUpperCase() + msg.role.slice(1);
25312
25342
  }
25343
+ /**
25344
+ * Attachment URLs the agent already found undownloadable. Core records them on the user
25345
+ * message (`metadata.mastra.unavailableAttachments`) so they are not fetched again.
25346
+ */
25347
+ function getUnavailableAttachmentUrls(msg) {
25348
+ const mastra = msg.content?.metadata?.mastra;
25349
+ const urls = isRecord$2(mastra) ? mastra.unavailableAttachments : void 0;
25350
+ return new Set(Array.isArray(urls) ? urls.filter((url) => typeof url === "string") : []);
25351
+ }
25352
+ function getObserverAttachmentUrl(part) {
25353
+ const asset = part.type === "image" ? part.image : part.data ?? part.url;
25354
+ if (asset instanceof URL) return asset.toString();
25355
+ if (typeof asset !== "string") return void 0;
25356
+ try {
25357
+ return new URL(asset).toString();
25358
+ } catch {
25359
+ return;
25360
+ }
25361
+ }
25313
25362
  function formatObserverMessage(msg, counter, toolFormatting, options) {
25314
25363
  const maxLen = options?.maxPartLength;
25315
25364
  const maxToolResultTokens = options?.maxToolResultTokens ?? 5e3;
@@ -25318,6 +25367,7 @@ function formatObserverMessage(msg, counter, toolFormatting, options) {
25318
25367
  const role = getObserverMessageLabel(msg);
25319
25368
  const attachments = [];
25320
25369
  const messageCreatedAt = normalizeObserverCreatedAt(msg.createdAt);
25370
+ const unavailableUrls = getUnavailableAttachmentUrls(msg);
25321
25371
  let lines = [];
25322
25372
  const temporalGapText = isTemporalGapMarker(msg) ? getTemporalGapMarkerText(msg) : void 0;
25323
25373
  const pushLine = (title, body, createdAt) => {
@@ -25376,7 +25426,8 @@ function formatObserverMessage(msg, counter, toolFormatting, options) {
25376
25426
  }
25377
25427
  if (partType === "image" || partType === "file") {
25378
25428
  const attachment = part;
25379
- if (shouldIncludeObserverAttachment(attachment, attachmentFilter)) {
25429
+ const attachmentUrl = unavailableUrls.size > 0 ? getObserverAttachmentUrl(attachment) : void 0;
25430
+ if (!(attachmentUrl !== void 0 && unavailableUrls.has(attachmentUrl)) && shouldIncludeObserverAttachment(attachment, attachmentFilter)) {
25380
25431
  const inputAttachment = toObserverInputAttachmentPart(attachment);
25381
25432
  if (inputAttachment) attachments.push(inputAttachment);
25382
25433
  }
@@ -25879,20 +25930,20 @@ function optimizeObservationsForContext(observations) {
25879
25930
  return optimized.trim();
25880
25931
  }
25881
25932
  function createTemporaryOmMemoryContext(prefix) {
25882
- const options = {
25883
- thread: `${prefix}-${globalThis.crypto.randomUUID()}`,
25884
- resource: prefix,
25885
- options: {
25886
- lastMessages: 10,
25887
- generateTitle: false
25888
- }
25933
+ const memoryOptions = {
25934
+ lastMessages: 10,
25935
+ generateTitle: false
25889
25936
  };
25890
25937
  return {
25891
25938
  memory: new Memory({
25892
25939
  storage: new InMemoryStore(),
25893
- options: options.options
25940
+ options: memoryOptions
25894
25941
  }),
25895
- options
25942
+ newThread: () => ({
25943
+ thread: `${prefix}-${globalThis.crypto.randomUUID()}`,
25944
+ resource: prefix,
25945
+ options: memoryOptions
25946
+ })
25896
25947
  };
25897
25948
  }
25898
25949
  const PHASE_CONFIG = {
@@ -26031,6 +26082,7 @@ var ObserverRunner = class {
26031
26082
  id: isMultiThread ? "multi-thread-observer" : "observational-memory-observer",
26032
26083
  name: isMultiThread ? "multi-thread-observer" : "Observer",
26033
26084
  maxRetries: 0,
26085
+ errorProcessorDefaults: false,
26034
26086
  instructions: buildObserverSystemPrompt(isMultiThread, this.observationConfig.instruction, this.observationConfig.threadTitle, extractors),
26035
26087
  model: agentModel,
26036
26088
  ...memory ? { memory } : {},
@@ -26119,6 +26171,7 @@ var ObserverRunner = class {
26119
26171
  const temporaryMemory = activeExtractors.filter((extractor) => extractor.mode === "structured").length > 0 ? await createTemporaryOmMemoryContext("structured-observer") : void 0;
26120
26172
  const agent = temporaryMemory ? this.createAgent(resolvedModel.model, false, temporaryMemory.memory, activeExtractors) : this.createAgent(resolvedModel.model, false, void 0, activeExtractors);
26121
26173
  const internalRequestContext = withOmInternalThreadId(options?.requestContext, agent.id);
26174
+ let attemptMemory;
26122
26175
  const attachmentFilter = this.resolveAttachmentFilter(resolvedModel.model, options?.requestContext);
26123
26176
  const observerMessages = [buildObserverRequestMessage(existingObservations, messagesToObserve, {
26124
26177
  ...options,
@@ -26146,14 +26199,16 @@ var ObserverRunner = class {
26146
26199
  },
26147
26200
  callback: (childObservabilityContext) => this.withAbortCheck(async () => {
26148
26201
  try {
26149
- return await (await agent.stream(observerMessages, {
26202
+ attemptMemory = temporaryMemory?.newThread();
26203
+ return assertCompleteModelResponse(await (await agent.stream(observerMessages, {
26204
+ maxSteps: 1,
26150
26205
  modelSettings: { ...this.observationConfig.modelSettings },
26151
26206
  providerOptions: this.observationConfig.providerOptions,
26152
- ...temporaryMemory ? { memory: temporaryMemory.options } : {},
26207
+ ...attemptMemory ? { memory: attemptMemory } : {},
26153
26208
  ...abortSignal ? { abortSignal } : {},
26154
26209
  ...internalRequestContext ? { requestContext: internalRequestContext } : {},
26155
26210
  ...childObservabilityContext
26156
- })).getFullOutput();
26211
+ })).getFullOutput(), "OM observer");
26157
26212
  } catch (error) {
26158
26213
  this.mastra?.getLogger?.().error("OM observer provider call failed", {
26159
26214
  diagnostic: formatOmError(error),
@@ -26192,7 +26247,7 @@ var ObserverRunner = class {
26192
26247
  agent,
26193
26248
  source: "observer",
26194
26249
  extractors: activeExtractors,
26195
- memory: temporaryMemory?.options,
26250
+ memory: attemptMemory,
26196
26251
  priorExtractedValues: options?.priorExtractedValues,
26197
26252
  requestContext: internalRequestContext,
26198
26253
  observabilityContext: options?.observabilityContext,
@@ -26352,13 +26407,14 @@ var ObserverRunner = class {
26352
26407
  },
26353
26408
  callback: (childObservabilityContext) => this.withAbortCheck(async () => {
26354
26409
  try {
26355
- return await (await agent.stream(observerMessages, {
26410
+ return assertCompleteModelResponse(await (await agent.stream(observerMessages, {
26411
+ maxSteps: 1,
26356
26412
  modelSettings: { ...this.observationConfig.modelSettings },
26357
26413
  providerOptions: this.observationConfig.providerOptions,
26358
26414
  ...abortSignal ? { abortSignal } : {},
26359
26415
  ...internalRequestContext ? { requestContext: internalRequestContext } : {},
26360
26416
  ...childObservabilityContext
26361
- })).getFullOutput();
26417
+ })).getFullOutput(), "OM multi-thread observer");
26362
26418
  } catch (error) {
26363
26419
  this.mastra?.getLogger?.().error("OM multi-thread observer provider call failed", {
26364
26420
  diagnostic: formatOmError(error),
@@ -33302,6 +33358,7 @@ var ReflectorRunner = class {
33302
33358
  instructions: buildReflectorSystemPrompt(this.reflectionConfig.instruction, extractors),
33303
33359
  model: agentModel,
33304
33360
  maxRetries: 0,
33361
+ errorProcessorDefaults: false,
33305
33362
  ...memory ? { memory } : {},
33306
33363
  ...this.mastra ? { mastra: this.mastra } : {}
33307
33364
  });
@@ -33342,6 +33399,7 @@ var ReflectorRunner = class {
33342
33399
  const temporaryMemory = activeExtractors.filter((extractor) => extractor.mode === "structured").length > 0 ? await createTemporaryOmMemoryContext("structured-reflector") : void 0;
33343
33400
  const agent = temporaryMemory ? this.createAgent(resolvedModel.model, temporaryMemory.memory, activeExtractors) : this.createAgent(resolvedModel.model, void 0, activeExtractors);
33344
33401
  const internalRequestContext = withOmInternalThreadId(requestContext, agent.id);
33402
+ let attemptMemory;
33345
33403
  const targetThreshold = observationTokensThreshold ?? getMaxThreshold(this.reflectionConfig.observationTokens);
33346
33404
  let totalUsage = {
33347
33405
  inputTokens: 0,
@@ -33384,10 +33442,12 @@ var ReflectorRunner = class {
33384
33442
  callback: (childObservabilityContext) => withAbortCheck(async () => {
33385
33443
  chunkCount = 0;
33386
33444
  try {
33387
- return await (await agent.stream(prompt, {
33445
+ attemptMemory = temporaryMemory?.newThread();
33446
+ return assertCompleteModelResponse(await (await agent.stream(prompt, {
33447
+ maxSteps: 1,
33388
33448
  modelSettings: { ...this.reflectionConfig.modelSettings },
33389
33449
  providerOptions: this.reflectionConfig.providerOptions,
33390
- ...temporaryMemory ? { memory: temporaryMemory.options } : {},
33450
+ ...attemptMemory ? { memory: attemptMemory } : {},
33391
33451
  ...abortSignal ? { abortSignal } : {},
33392
33452
  ...internalRequestContext ? { requestContext: internalRequestContext } : {},
33393
33453
  ...childObservabilityContext,
@@ -33409,7 +33469,7 @@ var ReflectorRunner = class {
33409
33469
  omError(`[OM:callReflector] onError after ${chunkCount} chunks`, error);
33410
33470
  }
33411
33471
  } : {}
33412
- })).getFullOutput();
33472
+ })).getFullOutput(), "OM reflector");
33413
33473
  } catch (error) {
33414
33474
  if (abortSignal?.aborted || !isOmModelExecutionFailure(error)) throw error;
33415
33475
  throw new OmModelExecutionError("reflector-model", error);
@@ -33483,7 +33543,7 @@ var ReflectorRunner = class {
33483
33543
  agent,
33484
33544
  source: "reflector",
33485
33545
  extractors: activeExtractors,
33486
- memory: temporaryMemory?.options,
33546
+ memory: attemptMemory,
33487
33547
  priorExtractedValues,
33488
33548
  requestContext: internalRequestContext,
33489
33549
  observabilityContext,
@@ -50463,4 +50523,4 @@ const agentBuilderWorkflows = {
50463
50523
  //#endregion
50464
50524
  export { agentBuilderWorkflows };
50465
50525
 
50466
- //# sourceMappingURL=dist-BFUX7iPi.js.map
50526
+ //# sourceMappingURL=dist-D6XjxNT7.js.map