@mastra/core 0.16.1-alpha.0 → 0.16.1-alpha.1

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 (110) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/agent/index.cjs +11 -11
  3. package/dist/agent/index.d.ts.map +1 -1
  4. package/dist/agent/index.js +2 -2
  5. package/dist/agent/input-processor/index.cjs +6 -6
  6. package/dist/agent/input-processor/index.js +1 -1
  7. package/dist/agent/message-list/index.d.ts.map +1 -1
  8. package/dist/agent/message-list/prompt/image-utils.d.ts +30 -0
  9. package/dist/agent/message-list/prompt/image-utils.d.ts.map +1 -1
  10. package/dist/agent/types.d.ts +2 -2
  11. package/dist/agent/types.d.ts.map +1 -1
  12. package/dist/ai-tracing/context.d.ts +7 -13
  13. package/dist/ai-tracing/context.d.ts.map +1 -1
  14. package/dist/ai-tracing/index.cjs +32 -36
  15. package/dist/ai-tracing/index.js +1 -1
  16. package/dist/{chunk-WEPWZHE4.js → chunk-2NKNTPFR.js} +49 -5
  17. package/dist/chunk-2NKNTPFR.js.map +1 -0
  18. package/dist/{chunk-4FWIB47J.cjs → chunk-2PWFUEQA.cjs} +4 -4
  19. package/dist/{chunk-4FWIB47J.cjs.map → chunk-2PWFUEQA.cjs.map} +1 -1
  20. package/dist/{chunk-2QDX6OPE.js → chunk-BQ43NQXK.js} +3 -3
  21. package/dist/{chunk-2QDX6OPE.js.map → chunk-BQ43NQXK.js.map} +1 -1
  22. package/dist/{chunk-IUF2ESZH.cjs → chunk-C3R2Q3NN.cjs} +89 -61
  23. package/dist/chunk-C3R2Q3NN.cjs.map +1 -0
  24. package/dist/{chunk-KT4WNDGP.cjs → chunk-D3UG2YLU.cjs} +110 -31
  25. package/dist/chunk-D3UG2YLU.cjs.map +1 -0
  26. package/dist/{chunk-H33WOKEO.js → chunk-DUABZASJ.js} +4 -4
  27. package/dist/{chunk-H33WOKEO.js.map → chunk-DUABZASJ.js.map} +1 -1
  28. package/dist/{chunk-LGJCH6XF.cjs → chunk-DYLYA6HQ.cjs} +12 -12
  29. package/dist/{chunk-LGJCH6XF.cjs.map → chunk-DYLYA6HQ.cjs.map} +1 -1
  30. package/dist/{chunk-N3HXDMF2.js → chunk-GJKJXY3K.js} +3 -3
  31. package/dist/{chunk-N3HXDMF2.js.map → chunk-GJKJXY3K.js.map} +1 -1
  32. package/dist/{chunk-Y6MXP3EN.cjs → chunk-IMDDMIVR.cjs} +6 -6
  33. package/dist/{chunk-Y6MXP3EN.cjs.map → chunk-IMDDMIVR.cjs.map} +1 -1
  34. package/dist/{chunk-6FVCJBBG.cjs → chunk-KB4IEMPV.cjs} +5 -3
  35. package/dist/chunk-KB4IEMPV.cjs.map +1 -0
  36. package/dist/{chunk-G7YM2FA2.cjs → chunk-LZWM7RVY.cjs} +7 -7
  37. package/dist/{chunk-G7YM2FA2.cjs.map → chunk-LZWM7RVY.cjs.map} +1 -1
  38. package/dist/{chunk-YUJ7GETS.js → chunk-OF4TXRIV.js} +3 -3
  39. package/dist/{chunk-YUJ7GETS.js.map → chunk-OF4TXRIV.js.map} +1 -1
  40. package/dist/{chunk-OE3SL5VG.cjs → chunk-SJO2HEVU.cjs} +6 -6
  41. package/dist/{chunk-OE3SL5VG.cjs.map → chunk-SJO2HEVU.cjs.map} +1 -1
  42. package/dist/{chunk-ULA3AGAI.js → chunk-TDLB5JKT.js} +5 -3
  43. package/dist/chunk-TDLB5JKT.js.map +1 -0
  44. package/dist/{chunk-WW62UQPE.js → chunk-U2RCB3FQ.js} +5 -5
  45. package/dist/{chunk-WW62UQPE.js.map → chunk-U2RCB3FQ.js.map} +1 -1
  46. package/dist/{chunk-RT2ETR6A.js → chunk-U3OYPZHX.js} +3 -3
  47. package/dist/{chunk-RT2ETR6A.js.map → chunk-U3OYPZHX.js.map} +1 -1
  48. package/dist/{chunk-UFCYMOYH.cjs → chunk-UGCG7DI3.cjs} +49 -6
  49. package/dist/chunk-UGCG7DI3.cjs.map +1 -0
  50. package/dist/{chunk-MW4CYUSP.js → chunk-UM4XJM3Y.js} +53 -25
  51. package/dist/chunk-UM4XJM3Y.js.map +1 -0
  52. package/dist/{chunk-VMV5VND5.cjs → chunk-WGX5V6DE.cjs} +7 -7
  53. package/dist/{chunk-VMV5VND5.cjs.map → chunk-WGX5V6DE.cjs.map} +1 -1
  54. package/dist/{chunk-4BQBSBQP.js → chunk-YI3AIJJL.js} +109 -30
  55. package/dist/chunk-YI3AIJJL.js.map +1 -0
  56. package/dist/index.cjs +38 -38
  57. package/dist/index.js +7 -7
  58. package/dist/loop/index.cjs +2 -2
  59. package/dist/loop/index.js +1 -1
  60. package/dist/mastra/index.cjs +2 -2
  61. package/dist/mastra/index.js +1 -1
  62. package/dist/memory/index.cjs +4 -4
  63. package/dist/memory/index.js +1 -1
  64. package/dist/network/index.cjs +2 -2
  65. package/dist/network/index.js +1 -1
  66. package/dist/network/vNext/index.cjs +14 -14
  67. package/dist/network/vNext/index.js +2 -2
  68. package/dist/processors/index.cjs +8 -8
  69. package/dist/processors/index.js +2 -2
  70. package/dist/processors/processors/structured-output.d.ts +2 -1
  71. package/dist/processors/processors/structured-output.d.ts.map +1 -1
  72. package/dist/relevance/index.cjs +4 -4
  73. package/dist/relevance/index.js +1 -1
  74. package/dist/scores/index.cjs +8 -8
  75. package/dist/scores/index.js +1 -1
  76. package/dist/storage/domains/observability/inmemory.d.ts.map +1 -1
  77. package/dist/storage/index.cjs +5 -3
  78. package/dist/storage/index.cjs.map +1 -1
  79. package/dist/storage/index.js +3 -1
  80. package/dist/storage/index.js.map +1 -1
  81. package/dist/storage/types.d.ts +2 -0
  82. package/dist/storage/types.d.ts.map +1 -1
  83. package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
  84. package/dist/stream/index.cjs +3 -3
  85. package/dist/stream/index.js +1 -1
  86. package/dist/test-utils/llm-mock.cjs +2 -2
  87. package/dist/test-utils/llm-mock.js +1 -1
  88. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  89. package/dist/utils.cjs +17 -17
  90. package/dist/utils.js +1 -1
  91. package/dist/workflows/default.d.ts.map +1 -1
  92. package/dist/workflows/evented/index.cjs +10 -10
  93. package/dist/workflows/evented/index.js +1 -1
  94. package/dist/workflows/index.cjs +10 -10
  95. package/dist/workflows/index.js +1 -1
  96. package/dist/workflows/legacy/index.cjs +22 -22
  97. package/dist/workflows/legacy/index.js +1 -1
  98. package/dist/workflows/types.d.ts +3 -0
  99. package/dist/workflows/types.d.ts.map +1 -1
  100. package/dist/workflows/workflow.d.ts +2 -1
  101. package/dist/workflows/workflow.d.ts.map +1 -1
  102. package/package.json +1 -1
  103. package/dist/chunk-4BQBSBQP.js.map +0 -1
  104. package/dist/chunk-6FVCJBBG.cjs.map +0 -1
  105. package/dist/chunk-IUF2ESZH.cjs.map +0 -1
  106. package/dist/chunk-KT4WNDGP.cjs.map +0 -1
  107. package/dist/chunk-MW4CYUSP.js.map +0 -1
  108. package/dist/chunk-UFCYMOYH.cjs.map +0 -1
  109. package/dist/chunk-ULA3AGAI.js.map +0 -1
  110. package/dist/chunk-WEPWZHE4.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk6FVCJBBG_cjs = require('./chunk-6FVCJBBG.cjs');
3
+ var chunkKB4IEMPV_cjs = require('./chunk-KB4IEMPV.cjs');
4
4
  var chunkC73WLCY3_cjs = require('./chunk-C73WLCY3.cjs');
5
5
  var crypto = require('crypto');
6
6
  var AIV4 = require('ai');
@@ -613,7 +613,7 @@ function convertDataContentToBase64String(content) {
613
613
  var downloadFromUrl = async ({ url, downloadRetries }) => {
614
614
  const urlText = url.toString();
615
615
  try {
616
- const response = await chunk6FVCJBBG_cjs.fetchWithRetry(
616
+ const response = await chunkKB4IEMPV_cjs.fetchWithRetry(
617
617
  urlText,
618
618
  {
619
619
  method: "GET"
@@ -756,6 +756,45 @@ function getImageCacheKey(image) {
756
756
  }
757
757
  return image;
758
758
  }
759
+ function isValidUrl(str) {
760
+ try {
761
+ new URL(str);
762
+ return true;
763
+ } catch {
764
+ if (str.startsWith("//")) {
765
+ try {
766
+ new URL(`https:${str}`);
767
+ return true;
768
+ } catch {
769
+ return false;
770
+ }
771
+ }
772
+ return false;
773
+ }
774
+ }
775
+ function categorizeFileData(data, fallbackMimeType) {
776
+ const parsed = parseDataUri(data);
777
+ const mimeType = parsed.isDataUri && parsed.mimeType ? parsed.mimeType : fallbackMimeType;
778
+ if (parsed.isDataUri) {
779
+ return {
780
+ type: "dataUri",
781
+ mimeType,
782
+ data
783
+ };
784
+ }
785
+ if (isValidUrl(data)) {
786
+ return {
787
+ type: "url",
788
+ mimeType,
789
+ data
790
+ };
791
+ }
792
+ return {
793
+ type: "raw",
794
+ mimeType,
795
+ data
796
+ };
797
+ }
759
798
 
760
799
  // src/agent/message-list/utils/ai-v5/tool.ts
761
800
  function getToolName(type) {
@@ -1737,6 +1776,25 @@ var MessageList = class _MessageList {
1737
1776
  data: part.data.toString(),
1738
1777
  mimeType: part.mimeType
1739
1778
  });
1779
+ } else if (typeof part.data === "string") {
1780
+ const categorized = categorizeFileData(part.data, part.mimeType);
1781
+ if (categorized.type === "url" || categorized.type === "dataUri") {
1782
+ parts.push({
1783
+ type: "file",
1784
+ data: part.data,
1785
+ mimeType: categorized.mimeType || "image/png"
1786
+ });
1787
+ } else {
1788
+ try {
1789
+ parts.push({
1790
+ type: "file",
1791
+ mimeType: categorized.mimeType || "image/png",
1792
+ data: convertDataContentToBase64String(part.data)
1793
+ });
1794
+ } catch (error) {
1795
+ console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
1796
+ }
1797
+ }
1740
1798
  } else {
1741
1799
  try {
1742
1800
  parts.push({
@@ -2246,7 +2304,8 @@ var MessageList = class _MessageList {
2246
2304
  }
2247
2305
  const originalContent = v3Msg.content.metadata?.__originalContent;
2248
2306
  if (originalContent !== void 0) {
2249
- if (typeof originalContent !== `string` || v2Msg.content.parts.every((p) => p.type === `step-start` || p.type === `text`)) {
2307
+ const hasOnlyTextOrStepStart = v2Msg.content.parts.every((p) => p.type === `step-start` || p.type === `text`);
2308
+ if (typeof originalContent === `string` || hasOnlyTextOrStepStart) {
2250
2309
  v2Msg.content.content = originalContent;
2251
2310
  }
2252
2311
  }
@@ -2254,7 +2313,8 @@ var MessageList = class _MessageList {
2254
2313
  if (originalAttachments && Array.isArray(originalAttachments)) {
2255
2314
  v2Msg.content.experimental_attachments = originalAttachments || [];
2256
2315
  }
2257
- const urlFileParts = v2Msg.content.parts.filter(
2316
+ const originalContentIsV5 = Array.isArray(v3Msg.content.metadata?.__originalContent) && v3Msg.content.metadata?.__originalContent.some((part) => part.type === "file");
2317
+ const urlFileParts = originalContentIsV5 ? [] : v2Msg.content.parts.filter(
2258
2318
  (p) => p.type === "file" && typeof p.data === "string" && (p.data.startsWith("http://") || p.data.startsWith("https://")) && !p.providerMetadata
2259
2319
  // Don't move if it has providerMetadata (needed for roundtrip)
2260
2320
  );
@@ -2362,27 +2422,38 @@ var MessageList = class _MessageList {
2362
2422
  }
2363
2423
  break;
2364
2424
  case "file": {
2365
- if (typeof part.data === "string" && (part.data.startsWith("http://") || part.data.startsWith("https://"))) {
2425
+ const categorized = typeof part.data === "string" ? categorizeFileData(part.data, part.mimeType) : { type: "raw", mimeType: part.mimeType};
2426
+ if (categorized.type === "url" && typeof part.data === "string") {
2366
2427
  parts.push({
2367
2428
  type: "file",
2368
2429
  url: part.data,
2369
- mediaType: part.mimeType || "image/png",
2430
+ mediaType: categorized.mimeType || "image/png",
2370
2431
  providerMetadata: part.providerMetadata
2371
2432
  });
2433
+ fileUrls.add(part.data);
2372
2434
  } else {
2373
2435
  let filePartData;
2374
2436
  let extractedMimeType = part.mimeType;
2375
2437
  if (typeof part.data === "string") {
2376
2438
  const parsed = parseDataUri(part.data);
2377
- filePartData = parsed.base64Content;
2378
- if (parsed.isDataUri && parsed.mimeType) {
2379
- extractedMimeType = extractedMimeType || parsed.mimeType;
2439
+ if (parsed.isDataUri) {
2440
+ filePartData = parsed.base64Content;
2441
+ if (parsed.mimeType) {
2442
+ extractedMimeType = extractedMimeType || parsed.mimeType;
2443
+ }
2444
+ } else {
2445
+ filePartData = part.data;
2380
2446
  }
2381
2447
  } else {
2382
2448
  filePartData = part.data;
2383
2449
  }
2384
2450
  const finalMimeType = extractedMimeType || "image/png";
2385
- const dataUri = createDataUri(filePartData, finalMimeType);
2451
+ let dataUri;
2452
+ if (typeof filePartData === "string" && filePartData.startsWith("data:")) {
2453
+ dataUri = filePartData;
2454
+ } else {
2455
+ dataUri = createDataUri(filePartData, finalMimeType);
2456
+ }
2386
2457
  parts.push({
2387
2458
  type: "file",
2388
2459
  url: dataUri,
@@ -2629,31 +2700,39 @@ var MessageList = class _MessageList {
2629
2700
  providerMetadata: part.providerOptions
2630
2701
  });
2631
2702
  }
2632
- } else {
2633
- try {
2634
- const base64Data = convertDataContentToBase64String(part.data);
2635
- let extractedMimeType = part.mediaType;
2636
- const parsed = parseDataUri(base64Data);
2637
- if (parsed.isDataUri) {
2638
- if (!extractedMimeType && parsed.mimeType) {
2639
- extractedMimeType = parsed.mimeType;
2640
- }
2641
- const dataUri = createDataUri(parsed.base64Content, extractedMimeType || "image/png");
2642
- parts.push({
2643
- type: "file",
2644
- url: dataUri,
2645
- mediaType: extractedMimeType || "image/png",
2646
- providerMetadata: part.providerOptions
2647
- });
2648
- } else {
2649
- const dataUri = createDataUri(base64Data, part.mediaType || "image/png");
2703
+ } else if (typeof part.data === "string") {
2704
+ const categorized = categorizeFileData(part.data, part.mediaType);
2705
+ if (categorized.type === "url" || categorized.type === "dataUri") {
2706
+ parts.push({
2707
+ type: "file",
2708
+ url: part.data,
2709
+ mediaType: categorized.mimeType || "application/octet-stream",
2710
+ providerMetadata: part.providerOptions
2711
+ });
2712
+ } else {
2713
+ try {
2714
+ const base64Data = convertDataContentToBase64String(part.data);
2715
+ const dataUri = createDataUri(base64Data, categorized.mimeType || "image/png");
2650
2716
  parts.push({
2651
2717
  type: "file",
2652
2718
  url: dataUri,
2653
- mediaType: part.mediaType || "image/png",
2719
+ mediaType: categorized.mimeType || "image/png",
2654
2720
  providerMetadata: part.providerOptions
2655
2721
  });
2722
+ } catch (error) {
2723
+ console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
2656
2724
  }
2725
+ }
2726
+ } else {
2727
+ try {
2728
+ const base64Data = convertDataContentToBase64String(part.data);
2729
+ const dataUri = createDataUri(base64Data, part.mediaType || "image/png");
2730
+ parts.push({
2731
+ type: "file",
2732
+ url: dataUri,
2733
+ mediaType: part.mediaType || "image/png",
2734
+ providerMetadata: part.providerOptions
2735
+ });
2657
2736
  } catch (error) {
2658
2737
  console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
2659
2738
  }
@@ -2805,5 +2884,5 @@ exports.DefaultGeneratedFile = DefaultGeneratedFile;
2805
2884
  exports.DefaultGeneratedFileWithType = DefaultGeneratedFileWithType;
2806
2885
  exports.MessageList = MessageList;
2807
2886
  exports.convertMessages = convertMessages;
2808
- //# sourceMappingURL=chunk-KT4WNDGP.cjs.map
2809
- //# sourceMappingURL=chunk-KT4WNDGP.cjs.map
2887
+ //# sourceMappingURL=chunk-D3UG2YLU.cjs.map
2888
+ //# sourceMappingURL=chunk-D3UG2YLU.cjs.map