@mastra/core 1.22.0 → 1.23.0-alpha.0

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 (136) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/index.cjs +8 -8
  4. package/dist/agent/index.js +1 -1
  5. package/dist/browser/index.cjs +2 -2
  6. package/dist/browser/index.js +1 -1
  7. package/dist/channels/index.cjs +4 -4
  8. package/dist/channels/index.js +1 -1
  9. package/dist/{chunk-V5FLTMXK.js → chunk-2RUQ6WLT.js} +3 -3
  10. package/dist/chunk-2RUQ6WLT.js.map +1 -0
  11. package/dist/{chunk-HPVNBI7J.js → chunk-33TK5IJV.js} +3 -3
  12. package/dist/{chunk-HPVNBI7J.js.map → chunk-33TK5IJV.js.map} +1 -1
  13. package/dist/{chunk-DRITAH5L.js → chunk-4J2OKODY.js} +3 -3
  14. package/dist/{chunk-DRITAH5L.js.map → chunk-4J2OKODY.js.map} +1 -1
  15. package/dist/{chunk-7RUFTPIY.js → chunk-5UMYIPAN.js} +4 -4
  16. package/dist/{chunk-7RUFTPIY.js.map → chunk-5UMYIPAN.js.map} +1 -1
  17. package/dist/{chunk-KLHUYSDF.cjs → chunk-7VTVEVCQ.cjs} +6 -6
  18. package/dist/{chunk-KLHUYSDF.cjs.map → chunk-7VTVEVCQ.cjs.map} +1 -1
  19. package/dist/{chunk-HXX4JDIB.js → chunk-A2L5N4VL.js} +3 -3
  20. package/dist/{chunk-HXX4JDIB.js.map → chunk-A2L5N4VL.js.map} +1 -1
  21. package/dist/{chunk-Y7KNCAZY.js → chunk-BKIU77ZJ.js} +3 -3
  22. package/dist/{chunk-Y7KNCAZY.js.map → chunk-BKIU77ZJ.js.map} +1 -1
  23. package/dist/{chunk-VRH5HTH5.cjs → chunk-BNDFOTCS.cjs} +7 -7
  24. package/dist/{chunk-VRH5HTH5.cjs.map → chunk-BNDFOTCS.cjs.map} +1 -1
  25. package/dist/{chunk-VDXTOWVO.cjs → chunk-CH4EKSQP.cjs} +63 -19
  26. package/dist/chunk-CH4EKSQP.cjs.map +1 -0
  27. package/dist/{chunk-4CUUOZHE.cjs → chunk-CXNNDMLF.cjs} +9 -9
  28. package/dist/{chunk-4CUUOZHE.cjs.map → chunk-CXNNDMLF.cjs.map} +1 -1
  29. package/dist/{chunk-GYQ22SLZ.js → chunk-EV5XAPDO.js} +4 -4
  30. package/dist/{chunk-GYQ22SLZ.js.map → chunk-EV5XAPDO.js.map} +1 -1
  31. package/dist/{chunk-A67TNS6N.cjs → chunk-HIC3WGQU.cjs} +75 -30
  32. package/dist/chunk-HIC3WGQU.cjs.map +1 -0
  33. package/dist/{chunk-NMRSL5GT.js → chunk-IRNYM55C.js} +9 -9
  34. package/dist/{chunk-NMRSL5GT.js.map → chunk-IRNYM55C.js.map} +1 -1
  35. package/dist/{chunk-TULT7C36.js → chunk-J5QMVI5J.js} +50 -6
  36. package/dist/chunk-J5QMVI5J.js.map +1 -0
  37. package/dist/{chunk-UZVGJ26K.cjs → chunk-JLGX4VZB.cjs} +77 -77
  38. package/dist/{chunk-UZVGJ26K.cjs.map → chunk-JLGX4VZB.cjs.map} +1 -1
  39. package/dist/{chunk-AUJ7TUEZ.cjs → chunk-MQSONVAO.cjs} +185 -185
  40. package/dist/{chunk-AUJ7TUEZ.cjs.map → chunk-MQSONVAO.cjs.map} +1 -1
  41. package/dist/{chunk-CXQ3QR5K.cjs → chunk-OY6GCNBU.cjs} +48 -48
  42. package/dist/{chunk-CXQ3QR5K.cjs.map → chunk-OY6GCNBU.cjs.map} +1 -1
  43. package/dist/{chunk-NVMXENQS.cjs → chunk-P4Q7BSKN.cjs} +17 -17
  44. package/dist/{chunk-NVMXENQS.cjs.map → chunk-P4Q7BSKN.cjs.map} +1 -1
  45. package/dist/{chunk-M7O57C2Y.js → chunk-PGXL3YYH.js} +72 -27
  46. package/dist/chunk-PGXL3YYH.js.map +1 -0
  47. package/dist/{chunk-RHKFYYB6.cjs → chunk-QGLY25ND.cjs} +20 -20
  48. package/dist/{chunk-RHKFYYB6.cjs.map → chunk-QGLY25ND.cjs.map} +1 -1
  49. package/dist/{chunk-PJERQ3YG.cjs → chunk-SKWXGIIH.cjs} +3 -3
  50. package/dist/chunk-SKWXGIIH.cjs.map +1 -0
  51. package/dist/{chunk-NLN4DDI6.js → chunk-TAEBGE3H.js} +6 -6
  52. package/dist/{chunk-NLN4DDI6.js.map → chunk-TAEBGE3H.js.map} +1 -1
  53. package/dist/{chunk-WTVDTW4F.js → chunk-VFCMAAIK.js} +8 -8
  54. package/dist/{chunk-WTVDTW4F.js.map → chunk-VFCMAAIK.js.map} +1 -1
  55. package/dist/{chunk-QFVPZL25.cjs → chunk-XCNL4BNL.cjs} +5 -5
  56. package/dist/{chunk-QFVPZL25.cjs.map → chunk-XCNL4BNL.cjs.map} +1 -1
  57. package/dist/datasets/index.cjs +11 -11
  58. package/dist/datasets/index.js +1 -1
  59. package/dist/docs/SKILL.md +1 -1
  60. package/dist/docs/assets/SOURCE_MAP.json +154 -154
  61. package/dist/docs/references/docs-workspace-overview.md +35 -7
  62. package/dist/evals/index.cjs +5 -5
  63. package/dist/evals/index.js +2 -2
  64. package/dist/evals/scoreTraces/index.cjs +3 -3
  65. package/dist/evals/scoreTraces/index.js +1 -1
  66. package/dist/harness/index.cjs +18 -11
  67. package/dist/harness/index.cjs.map +1 -1
  68. package/dist/harness/index.js +14 -7
  69. package/dist/harness/index.js.map +1 -1
  70. package/dist/harness/tools.d.ts.map +1 -1
  71. package/dist/index.cjs +2 -2
  72. package/dist/index.js +1 -1
  73. package/dist/llm/index.cjs +20 -20
  74. package/dist/llm/index.js +5 -5
  75. package/dist/loop/index.cjs +14 -14
  76. package/dist/loop/index.js +1 -1
  77. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  78. package/dist/mastra/index.cjs +2 -2
  79. package/dist/mastra/index.js +1 -1
  80. package/dist/mastra-6PTZVLRU.cjs +12 -0
  81. package/dist/{mastra-33MCZUH4.cjs.map → mastra-6PTZVLRU.cjs.map} +1 -1
  82. package/dist/mastra-PL2TINKB.js +3 -0
  83. package/dist/{mastra-RY543V4U.js.map → mastra-PL2TINKB.js.map} +1 -1
  84. package/dist/memory/index.cjs +17 -17
  85. package/dist/memory/index.js +1 -1
  86. package/dist/models-dev-LB2MHSPK.js +3 -0
  87. package/dist/{models-dev-2BJQPEQJ.js.map → models-dev-LB2MHSPK.js.map} +1 -1
  88. package/dist/models-dev-RNN2XIDN.cjs +12 -0
  89. package/dist/{models-dev-OZGJCJIG.cjs.map → models-dev-RNN2XIDN.cjs.map} +1 -1
  90. package/dist/netlify-7YIJ54SJ.cjs +12 -0
  91. package/dist/{netlify-TSDN7D7F.cjs.map → netlify-7YIJ54SJ.cjs.map} +1 -1
  92. package/dist/netlify-IAZEAHV7.js +3 -0
  93. package/dist/{netlify-N7PUN3NA.js.map → netlify-IAZEAHV7.js.map} +1 -1
  94. package/dist/processor-provider/index.cjs +10 -10
  95. package/dist/processor-provider/index.js +1 -1
  96. package/dist/processors/index.cjs +44 -44
  97. package/dist/processors/index.js +1 -1
  98. package/dist/provider-registry-3AI2NIS7.js +3 -0
  99. package/dist/{provider-registry-EINTM27D.js.map → provider-registry-3AI2NIS7.js.map} +1 -1
  100. package/dist/provider-registry-MGQGWIDH.cjs +40 -0
  101. package/dist/{provider-registry-DBWCMPP3.cjs.map → provider-registry-MGQGWIDH.cjs.map} +1 -1
  102. package/dist/relevance/index.cjs +3 -3
  103. package/dist/relevance/index.js +1 -1
  104. package/dist/stream/index.cjs +8 -8
  105. package/dist/stream/index.js +1 -1
  106. package/dist/tool-loop-agent/index.cjs +4 -4
  107. package/dist/tool-loop-agent/index.js +1 -1
  108. package/dist/workflows/evented/index.cjs +10 -10
  109. package/dist/workflows/evented/index.js +1 -1
  110. package/dist/workflows/index.cjs +24 -24
  111. package/dist/workflows/index.js +1 -1
  112. package/dist/workspace/index.cjs +68 -68
  113. package/dist/workspace/index.d.ts +1 -1
  114. package/dist/workspace/index.d.ts.map +1 -1
  115. package/dist/workspace/index.js +1 -1
  116. package/dist/workspace/tools/index.d.ts +1 -1
  117. package/dist/workspace/tools/index.d.ts.map +1 -1
  118. package/dist/workspace/tools/tools.d.ts +18 -10
  119. package/dist/workspace/tools/tools.d.ts.map +1 -1
  120. package/dist/workspace/tools/types.d.ts +51 -7
  121. package/dist/workspace/tools/types.d.ts.map +1 -1
  122. package/package.json +6 -6
  123. package/dist/chunk-A67TNS6N.cjs.map +0 -1
  124. package/dist/chunk-M7O57C2Y.js.map +0 -1
  125. package/dist/chunk-PJERQ3YG.cjs.map +0 -1
  126. package/dist/chunk-TULT7C36.js.map +0 -1
  127. package/dist/chunk-V5FLTMXK.js.map +0 -1
  128. package/dist/chunk-VDXTOWVO.cjs.map +0 -1
  129. package/dist/mastra-33MCZUH4.cjs +0 -12
  130. package/dist/mastra-RY543V4U.js +0 -3
  131. package/dist/models-dev-2BJQPEQJ.js +0 -3
  132. package/dist/models-dev-OZGJCJIG.cjs +0 -12
  133. package/dist/netlify-N7PUN3NA.js +0 -3
  134. package/dist/netlify-TSDN7D7F.cjs +0 -12
  135. package/dist/provider-registry-DBWCMPP3.cjs +0 -40
  136. package/dist/provider-registry-EINTM27D.js +0 -3
@@ -8239,7 +8239,25 @@ var writeFileTool = createTool({
8239
8239
  });
8240
8240
 
8241
8241
  // src/workspace/tools/tools.ts
8242
- function resolveToolConfig(toolsConfig, toolName) {
8242
+ async function resolveDynamicValue(value, context, safeDefault) {
8243
+ if (value === void 0) return safeDefault;
8244
+ if (typeof value === "boolean") return value;
8245
+ if (!context) return safeDefault;
8246
+ try {
8247
+ return await value(context);
8248
+ } catch (error) {
8249
+ console.warn("[Workspace Tools] Dynamic config function threw, using safe default:", error);
8250
+ return safeDefault;
8251
+ }
8252
+ }
8253
+ function toPlainRequestContext(requestContext) {
8254
+ if (!requestContext) return {};
8255
+ if (typeof requestContext.entries === "function") {
8256
+ return Object.fromEntries(requestContext.entries());
8257
+ }
8258
+ return requestContext;
8259
+ }
8260
+ async function resolveToolConfig(toolsConfig, toolName, context) {
8243
8261
  let enabled = true;
8244
8262
  let requireApproval = false;
8245
8263
  let requireReadBeforeWrite;
@@ -8271,7 +8289,8 @@ function resolveToolConfig(toolsConfig, toolName) {
8271
8289
  }
8272
8290
  }
8273
8291
  }
8274
- return { enabled, requireApproval, requireReadBeforeWrite, maxOutputTokens, name };
8292
+ const resolvedEnabled = await resolveDynamicValue(enabled, context, false);
8293
+ return { enabled: resolvedEnabled, requireApproval, requireReadBeforeWrite, maxOutputTokens, name };
8275
8294
  }
8276
8295
  function wrapWithReadTracker(tool, workspace, readTracker, config, mode) {
8277
8296
  return {
@@ -8284,10 +8303,17 @@ function wrapWithReadTracker(tool, workspace, readTracker, config, mode) {
8284
8303
  }
8285
8304
  try {
8286
8305
  const stat3 = await workspace.filesystem.stat(input.path);
8287
- if (config.requireReadBeforeWrite) {
8288
- const check = readTracker.needsReRead(input.path, stat3.modifiedAt);
8289
- if (check.needsReRead) {
8290
- throw new FileReadRequiredError(input.path, check.reason);
8306
+ if (config.requireReadBeforeWrite !== void 0) {
8307
+ const shouldRequireRead = await resolveDynamicValue(
8308
+ config.requireReadBeforeWrite,
8309
+ { args: input, requestContext: context.requestContext ?? {}, workspace },
8310
+ true
8311
+ );
8312
+ if (shouldRequireRead) {
8313
+ const check = readTracker.needsReRead(input.path, stat3.modifiedAt);
8314
+ if (check.needsReRead) {
8315
+ throw new FileReadRequiredError(input.path, check.reason);
8316
+ }
8291
8317
  }
8292
8318
  }
8293
8319
  } catch (error) {
@@ -8321,17 +8347,36 @@ function wrapWithWriteLock(tool, writeLock) {
8321
8347
  }
8322
8348
  };
8323
8349
  }
8324
- function createWorkspaceTools(workspace) {
8350
+ async function createWorkspaceTools(workspace, configContext) {
8351
+ const effectiveConfigContext = configContext ? { ...configContext, requestContext: toPlainRequestContext(configContext.requestContext) } : { requestContext: {}, workspace };
8325
8352
  const tools = {};
8326
8353
  const toolsConfig = workspace.getToolsConfig();
8327
8354
  const isReadOnly = workspace.filesystem?.readOnly ?? false;
8328
8355
  const writeLock = new InMemoryFileWriteLock();
8329
8356
  const readTracker = new InMemoryFileReadTracker();
8330
- const addTool = (name, tool, opts) => {
8331
- const config = resolveToolConfig(toolsConfig, name);
8357
+ const addTool = async (name, tool, opts) => {
8358
+ const config = await resolveToolConfig(toolsConfig, name, effectiveConfigContext);
8332
8359
  if (!config.enabled) return;
8333
8360
  if (opts?.requireWrite && isReadOnly) return;
8334
- let wrapped = { ...tool, requireApproval: config.requireApproval };
8361
+ let wrapped;
8362
+ if (typeof config.requireApproval === "function") {
8363
+ const approvalFn = config.requireApproval;
8364
+ wrapped = {
8365
+ ...tool,
8366
+ requireApproval: true,
8367
+ needsApprovalFn: async (args, ctx) => resolveDynamicValue(
8368
+ approvalFn,
8369
+ {
8370
+ args,
8371
+ requestContext: toPlainRequestContext(ctx?.requestContext),
8372
+ workspace: ctx?.workspace ?? workspace
8373
+ },
8374
+ true
8375
+ )
8376
+ };
8377
+ } else {
8378
+ wrapped = { ...tool, requireApproval: config.requireApproval };
8379
+ }
8335
8380
  if (opts?.readTrackerMode) {
8336
8381
  wrapped = wrapWithReadTracker(wrapped, workspace, readTracker, config, opts.readTrackerMode);
8337
8382
  }
@@ -8350,24 +8395,24 @@ function createWorkspaceTools(workspace) {
8350
8395
  tools[exposedName] = wrapped;
8351
8396
  };
8352
8397
  if (workspace.filesystem) {
8353
- addTool(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE, readFileTool, { readTrackerMode: "read" });
8354
- addTool(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE, writeFileTool, {
8398
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE, readFileTool, { readTrackerMode: "read" });
8399
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE, writeFileTool, {
8355
8400
  requireWrite: true,
8356
8401
  readTrackerMode: "write",
8357
8402
  useWriteLock: true
8358
8403
  });
8359
- addTool(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE, editFileTool, {
8404
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE, editFileTool, {
8360
8405
  requireWrite: true,
8361
8406
  readTrackerMode: "write",
8362
8407
  useWriteLock: true
8363
8408
  });
8364
- addTool(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES, listFilesTool);
8365
- addTool(WORKSPACE_TOOLS.FILESYSTEM.DELETE, deleteFileTool, { requireWrite: true, useWriteLock: true });
8366
- addTool(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT, fileStatTool);
8367
- addTool(WORKSPACE_TOOLS.FILESYSTEM.MKDIR, mkdirTool, { requireWrite: true });
8368
- addTool(WORKSPACE_TOOLS.FILESYSTEM.GREP, grepTool);
8409
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES, listFilesTool);
8410
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.DELETE, deleteFileTool, { requireWrite: true, useWriteLock: true });
8411
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT, fileStatTool);
8412
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.MKDIR, mkdirTool, { requireWrite: true });
8413
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.GREP, grepTool);
8369
8414
  if (isAstGrepAvailable()) {
8370
- addTool(WORKSPACE_TOOLS.FILESYSTEM.AST_EDIT, astEditTool, {
8415
+ await addTool(WORKSPACE_TOOLS.FILESYSTEM.AST_EDIT, astEditTool, {
8371
8416
  requireWrite: true,
8372
8417
  readTrackerMode: "write",
8373
8418
  useWriteLock: true
@@ -8375,23 +8420,23 @@ function createWorkspaceTools(workspace) {
8375
8420
  }
8376
8421
  }
8377
8422
  if (workspace.canBM25 || workspace.canVector) {
8378
- addTool(WORKSPACE_TOOLS.SEARCH.SEARCH, searchTool);
8379
- addTool(WORKSPACE_TOOLS.SEARCH.INDEX, indexContentTool, { requireWrite: true });
8423
+ await addTool(WORKSPACE_TOOLS.SEARCH.SEARCH, searchTool);
8424
+ await addTool(WORKSPACE_TOOLS.SEARCH.INDEX, indexContentTool, { requireWrite: true });
8380
8425
  }
8381
8426
  if (workspace.sandbox) {
8382
8427
  if (workspace.sandbox.executeCommand) {
8383
8428
  const baseTool = workspace.sandbox.processes ? executeCommandWithBackgroundTool : executeCommandTool;
8384
- addTool(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND, baseTool);
8429
+ await addTool(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND, baseTool);
8385
8430
  }
8386
8431
  if (workspace.sandbox.processes) {
8387
- addTool(WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT, getProcessOutputTool);
8388
- addTool(WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS, killProcessTool);
8432
+ await addTool(WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT, getProcessOutputTool);
8433
+ await addTool(WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS, killProcessTool);
8389
8434
  }
8390
8435
  }
8391
- addTool(WORKSPACE_TOOLS.LSP.LSP_INSPECT, lspInspectTool);
8436
+ await addTool(WORKSPACE_TOOLS.LSP.LSP_INSPECT, lspInspectTool);
8392
8437
  return tools;
8393
8438
  }
8394
8439
 
8395
8440
  export { BM25Index, CompositeFilesystem, CompositeVersionedSkillSource, DirectoryNotEmptyError, DirectoryNotFoundError, FileExistsError, FileNotFoundError, FileReadRequiredError, FilesystemError, FilesystemNotAvailableError, FilesystemNotMountableError, FilesystemNotReadyError, IsDirectoryError, IsolationUnavailableError, LocalFilesystem, LocalSandbox, LocalSkillSource, MastraFilesystem, MastraSandbox, MountError, MountManager, MountNotSupportedError, NotDirectoryError, PermissionError, ProcessHandle, SandboxError, SandboxExecutionError, SandboxFeatureNotSupportedError, SandboxNotAvailableError, SandboxNotReadyError, SandboxProcessManager, SandboxTimeoutError, SearchNotAvailableError, StaleFileError, VersionedSkillSource, WORKSPACE_TOOLS, WORKSPACE_TOOLS_PREFIX, Workspace, WorkspaceError, WorkspaceNotAvailableError, WorkspaceNotReadyError, WorkspaceReadOnlyError, callLifecycle, collectSkillForPublish, createGlobMatcher, createSkillTools, createWorkspaceTools, deleteFileTool, detectIsolation, editFileTool, executeCommandTool, extractGlobBase, fileStatTool, getRecommendedIsolation, getTiktoken, indexContentTool, isGlobPattern, isIsolationAvailable, listFilesTool, matchGlob, mkdirTool, publishSkillFromSource, readFileTool, requireFilesystem, requireSandbox, requireWorkspace, resolveToolConfig, searchTool, writeFileTool };
8396
- //# sourceMappingURL=chunk-M7O57C2Y.js.map
8397
- //# sourceMappingURL=chunk-M7O57C2Y.js.map
8441
+ //# sourceMappingURL=chunk-PGXL3YYH.js.map
8442
+ //# sourceMappingURL=chunk-PGXL3YYH.js.map