@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
@@ -195,13 +195,41 @@ const workspace = new Workspace({
195
195
 
196
196
  ### Tool options
197
197
 
198
- | Option | Type | Description |
199
- | ------------------------ | --------- | ---------------------------------------------------------------------------------------------------------- |
200
- | `enabled` | `boolean` | Whether the tool is available (default: `true`) |
201
- | `requireApproval` | `boolean` | Whether the tool requires user approval before execution (default: `false`) |
202
- | `requireReadBeforeWrite` | `boolean` | For write tools: require reading the file first (default: `false`) |
203
- | `name` | `string` | Custom name for the tool. Replaces the default `mastra_workspace_*` name. |
204
- | `maxOutputTokens` | `number` | Maximum tokens for tool output (default: `2000`). Output exceeding this limit is truncated using tiktoken. |
198
+ | Option | Type | Description |
199
+ | ------------------------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
200
+ | `enabled` | `boolean \| (context) => boolean` | Whether the tool is available (default: `true`). When a function, evaluated at tool-listing time. |
201
+ | `requireApproval` | `boolean \| (context) => boolean` | Whether the tool requires user approval before execution (default: `false`). When a function, evaluated at execution time with access to `args`. |
202
+ | `requireReadBeforeWrite` | `boolean \| (context) => boolean` | For write tools: require reading the file first (default: `false`). When a function, evaluated at execution time with access to `args`. |
203
+ | `name` | `string` | Custom name for the tool. Replaces the default `mastra_workspace_*` name. |
204
+ | `maxOutputTokens` | `number` | Maximum tokens for tool output (default: `2000`). Output exceeding this limit is truncated using tiktoken. |
205
+
206
+ ### Dynamic tool configuration
207
+
208
+ Tool options that accept functions receive a context object and return a boolean. This enables context-aware tool behavior.
209
+
210
+ ```typescript
211
+ const workspace = new Workspace({
212
+ filesystem: new LocalFilesystem({ basePath: './workspace' }),
213
+ tools: {
214
+ // Dynamic enabled: disable command execution unless explicitly allowed
215
+ [WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND]: {
216
+ enabled: async ({ requestContext }) => {
217
+ return requestContext['allowExecution'] === 'true'
218
+ },
219
+ },
220
+
221
+ // Dynamic requireApproval: only require approval for protected paths
222
+ [WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE]: {
223
+ requireApproval: async ({ args }) => {
224
+ return (args.path as string).startsWith('/protected')
225
+ },
226
+ requireReadBeforeWrite: true,
227
+ },
228
+ },
229
+ })
230
+ ```
231
+
232
+ Functions for `enabled` receive `{ requestContext, workspace }`. Functions for `requireApproval` and `requireReadBeforeWrite` also receive `args` since they are evaluated when the tool is called.
205
233
 
206
234
  ### Tool name remapping
207
235
 
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var chunkQFVPZL25_cjs = require('../chunk-QFVPZL25.cjs');
4
- var chunkVDXTOWVO_cjs = require('../chunk-VDXTOWVO.cjs');
3
+ var chunkXCNL4BNL_cjs = require('../chunk-XCNL4BNL.cjs');
4
+ var chunkCH4EKSQP_cjs = require('../chunk-CH4EKSQP.cjs');
5
5
  var chunk7HWDGEET_cjs = require('../chunk-7HWDGEET.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "runEvals", {
10
10
  enumerable: true,
11
- get: function () { return chunkQFVPZL25_cjs.runEvals; }
11
+ get: function () { return chunkXCNL4BNL_cjs.runEvals; }
12
12
  });
13
13
  Object.defineProperty(exports, "MastraScorer", {
14
14
  enumerable: true,
15
- get: function () { return chunkVDXTOWVO_cjs.MastraScorer; }
15
+ get: function () { return chunkCH4EKSQP_cjs.MastraScorer; }
16
16
  });
17
17
  Object.defineProperty(exports, "createScorer", {
18
18
  enumerable: true,
19
- get: function () { return chunkVDXTOWVO_cjs.createScorer; }
19
+ get: function () { return chunkCH4EKSQP_cjs.createScorer; }
20
20
  });
21
21
  Object.defineProperty(exports, "extractTrajectory", {
22
22
  enumerable: true,
@@ -1,5 +1,5 @@
1
- export { runEvals } from '../chunk-Y7KNCAZY.js';
2
- export { MastraScorer, createScorer } from '../chunk-TULT7C36.js';
1
+ export { runEvals } from '../chunk-BKIU77ZJ.js';
2
+ export { MastraScorer, createScorer } from '../chunk-J5QMVI5J.js';
3
3
  export { extractTrajectory, extractTrajectoryFromTrace, extractWorkflowTrajectory, listScoresResponseSchema, saveScorePayloadSchema, scoreResultSchema, scoreRowDataSchema, scoringEntityTypeSchema, scoringExtractStepResultSchema, scoringHookInputSchema, scoringInputSchema, scoringInputWithExtractStepResultAndAnalyzeStepResultSchema, scoringInputWithExtractStepResultAndScoreAndReasonSchema, scoringInputWithExtractStepResultSchema, scoringPromptsSchema, scoringSourceSchema, scoringValueSchema } from '../chunk-56OCTZBD.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkCXQ3QR5K_cjs = require('../../chunk-CXQ3QR5K.cjs');
3
+ var chunkOY6GCNBU_cjs = require('../../chunk-OY6GCNBU.cjs');
4
4
  var chunk7HWDGEET_cjs = require('../../chunk-7HWDGEET.cjs');
5
5
  var chunkW6PDQCCN_cjs = require('../../chunk-W6PDQCCN.cjs');
6
6
  var chunk4U7ZLI36_cjs = require('../../chunk-4U7ZLI36.cjs');
@@ -234,7 +234,7 @@ function transformTraceToScorerInputAndOutput(trace) {
234
234
  }
235
235
 
236
236
  // src/evals/scoreTraces/scoreTracesWorkflow.ts
237
- var getTraceStep = chunkCXQ3QR5K_cjs.createStep({
237
+ var getTraceStep = chunkOY6GCNBU_cjs.createStep({
238
238
  id: "__process-trace-scoring",
239
239
  inputSchema: v4.z.object({
240
240
  targets: v4.z.array(
@@ -429,7 +429,7 @@ async function attachScoreToSpan({
429
429
  } catch {
430
430
  }
431
431
  }
432
- var scoreTracesWorkflow = chunkCXQ3QR5K_cjs.createWorkflow({
432
+ var scoreTracesWorkflow = chunkOY6GCNBU_cjs.createWorkflow({
433
433
  id: "__batch-scoring-traces",
434
434
  inputSchema: v4.z.object({
435
435
  targets: v4.z.array(
@@ -1,4 +1,4 @@
1
- import { createStep, createWorkflow } from '../../chunk-HPVNBI7J.js';
1
+ import { createStep, createWorkflow } from '../../chunk-33TK5IJV.js';
2
2
  import { saveScorePayloadSchema } from '../../chunk-56OCTZBD.js';
3
3
  import { getEntityTypeForSpan } from '../../chunk-LQY5E2LW.js';
4
4
  import { MastraError } from '../../chunk-FJEVLHJT.js';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkNVMXENQS_cjs = require('../chunk-NVMXENQS.cjs');
4
- var chunkVDXTOWVO_cjs = require('../chunk-VDXTOWVO.cjs');
5
- var chunkA67TNS6N_cjs = require('../chunk-A67TNS6N.cjs');
3
+ var chunkP4Q7BSKN_cjs = require('../chunk-P4Q7BSKN.cjs');
4
+ var chunkCH4EKSQP_cjs = require('../chunk-CH4EKSQP.cjs');
5
+ var chunkHIC3WGQU_cjs = require('../chunk-HIC3WGQU.cjs');
6
6
  var chunkW232X652_cjs = require('../chunk-W232X652.cjs');
7
7
  var chunkLDLHW3QN_cjs = require('../chunk-LDLHW3QN.cjs');
8
8
  var chunkXB4FLS7A_cjs = require('../chunk-XB4FLS7A.cjs');
@@ -313,7 +313,7 @@ Use this tool when:
313
313
  };
314
314
  }
315
315
  const workspace = context?.workspace;
316
- const subagent = new chunkVDXTOWVO_cjs.Agent({
316
+ const subagent = new chunkCH4EKSQP_cjs.Agent({
317
317
  id: `subagent-${definition.id}`,
318
318
  name: `${definition.name} Subagent`,
319
319
  instructions: definition.instructions,
@@ -321,8 +321,15 @@ Use this tool when:
321
321
  tools: mergedTools,
322
322
  workspace
323
323
  });
324
- const allWorkspaceToolNames = workspace ? new Set(Object.keys(chunkA67TNS6N_cjs.createWorkspaceTools(workspace))) : void 0;
325
324
  const allowedWs = definition.allowedWorkspaceTools ? new Set(definition.allowedWorkspaceTools) : void 0;
325
+ const allWorkspaceToolNames = workspace && allowedWs ? new Set(
326
+ Object.keys(
327
+ await chunkHIC3WGQU_cjs.createWorkspaceTools(workspace, {
328
+ requestContext: context?.requestContext ?? {},
329
+ workspace
330
+ })
331
+ )
332
+ ) : void 0;
326
333
  const startTime = Date.now();
327
334
  emitEvent?.({
328
335
  type: "subagent_start",
@@ -543,7 +550,7 @@ var Harness = class {
543
550
  throw new Error("Harness requires at least one agent mode");
544
551
  }
545
552
  this.currentModeId = defaultMode.id;
546
- if (config.workspace instanceof chunkA67TNS6N_cjs.Workspace) {
553
+ if (config.workspace instanceof chunkHIC3WGQU_cjs.Workspace) {
547
554
  this.workspace = config.workspace;
548
555
  } else if (typeof config.workspace === "function") {
549
556
  this.workspaceFn = config.workspace;
@@ -562,13 +569,13 @@ var Harness = class {
562
569
  */
563
570
  async init() {
564
571
  if (this.config.storage) {
565
- this.#internalMastra = new chunkNVMXENQS_cjs.Mastra({ logger: false, storage: this.config.storage });
572
+ this.#internalMastra = new chunkP4Q7BSKN_cjs.Mastra({ logger: false, storage: this.config.storage });
566
573
  await this.#internalMastra.getStorage().init();
567
574
  }
568
575
  if (this.config.workspace && !this.workspaceInitialized && !this.workspaceFn) {
569
576
  try {
570
577
  if (!this.workspace) {
571
- this.workspace = new chunkA67TNS6N_cjs.Workspace(this.config.workspace);
578
+ this.workspace = new chunkHIC3WGQU_cjs.Workspace(this.config.workspace);
572
579
  }
573
580
  this.emit({ type: "workspace_status_changed", status: "initializing" });
574
581
  await this.workspace.init();
@@ -814,7 +821,7 @@ var Harness = class {
814
821
  }
815
822
  }
816
823
  try {
817
- const { PROVIDER_REGISTRY } = await import('../provider-registry-DBWCMPP3.cjs');
824
+ const { PROVIDER_REGISTRY } = await import('../provider-registry-MGQGWIDH.cjs');
818
825
  const registry = PROVIDER_REGISTRY;
819
826
  const providerConfig = registry[provider];
820
827
  const envVars = providerConfig?.apiKeyEnvVar;
@@ -834,7 +841,7 @@ var Harness = class {
834
841
  */
835
842
  async listAvailableModels() {
836
843
  try {
837
- const { PROVIDER_REGISTRY } = await import('../provider-registry-DBWCMPP3.cjs');
844
+ const { PROVIDER_REGISTRY } = await import('../provider-registry-MGQGWIDH.cjs');
838
845
  if (!PROVIDER_REGISTRY) return [];
839
846
  const registry = PROVIDER_REGISTRY;
840
847
  const providers = Object.keys(registry);
@@ -893,7 +900,7 @@ var Harness = class {
893
900
  }
894
901
  async getProviderApiKeyEnvVar(provider) {
895
902
  try {
896
- const { PROVIDER_REGISTRY } = await import('../provider-registry-DBWCMPP3.cjs');
903
+ const { PROVIDER_REGISTRY } = await import('../provider-registry-MGQGWIDH.cjs');
897
904
  const registry = PROVIDER_REGISTRY;
898
905
  const envVars = registry[provider]?.apiKeyEnvVar;
899
906
  return Array.isArray(envVars) ? envVars[0] : envVars;