@mastra/core 1.15.0-alpha.2 → 1.15.0-alpha.3
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.
- package/CHANGELOG.md +28 -0
- package/dist/agent/index.cjs +8 -8
- package/dist/agent/index.js +1 -1
- package/dist/{chunk-MHTWFVXK.js → chunk-3QVIGF2C.js} +3 -3
- package/dist/{chunk-MHTWFVXK.js.map → chunk-3QVIGF2C.js.map} +1 -1
- package/dist/{chunk-ORHPD25N.cjs → chunk-4HBFSEH5.cjs} +7 -7
- package/dist/{chunk-ORHPD25N.cjs.map → chunk-4HBFSEH5.cjs.map} +1 -1
- package/dist/{chunk-Q64Z437G.cjs → chunk-5TR3QHRW.cjs} +15 -15
- package/dist/{chunk-Q64Z437G.cjs.map → chunk-5TR3QHRW.cjs.map} +1 -1
- package/dist/{chunk-OX63O3QG.cjs → chunk-6H4DIT5W.cjs} +5 -5
- package/dist/{chunk-OX63O3QG.cjs.map → chunk-6H4DIT5W.cjs.map} +1 -1
- package/dist/{chunk-4YKZNIK6.js → chunk-6OM5P63S.js} +4 -4
- package/dist/{chunk-4YKZNIK6.js.map → chunk-6OM5P63S.js.map} +1 -1
- package/dist/{chunk-YV5UMIRV.cjs → chunk-7FCDSKDP.cjs} +3 -3
- package/dist/{chunk-YV5UMIRV.cjs.map → chunk-7FCDSKDP.cjs.map} +1 -1
- package/dist/{chunk-7BM5LQHF.cjs → chunk-A5IWSJLJ.cjs} +75 -75
- package/dist/{chunk-7BM5LQHF.cjs.map → chunk-A5IWSJLJ.cjs.map} +1 -1
- package/dist/{chunk-KCZ3R5SF.js → chunk-AVLD4VHQ.js} +3 -3
- package/dist/{chunk-KCZ3R5SF.js.map → chunk-AVLD4VHQ.js.map} +1 -1
- package/dist/{chunk-ECAVJWAH.js → chunk-B5M72XCG.js} +4 -4
- package/dist/{chunk-ECAVJWAH.js.map → chunk-B5M72XCG.js.map} +1 -1
- package/dist/{chunk-X4RVX77L.cjs → chunk-BAUAKBM6.cjs} +185 -185
- package/dist/{chunk-X4RVX77L.cjs.map → chunk-BAUAKBM6.cjs.map} +1 -1
- package/dist/{chunk-ASVFCNLS.js → chunk-CJHZXD3U.js} +6 -6
- package/dist/{chunk-ASVFCNLS.js.map → chunk-CJHZXD3U.js.map} +1 -1
- package/dist/{chunk-NWC75FLU.cjs → chunk-CTFO2ENI.cjs} +53 -20
- package/dist/chunk-CTFO2ENI.cjs.map +1 -0
- package/dist/{chunk-EFYYAFWD.cjs → chunk-DYFEJA5J.cjs} +17 -17
- package/dist/{chunk-EFYYAFWD.cjs.map → chunk-DYFEJA5J.cjs.map} +1 -1
- package/dist/{chunk-SHQKQEG2.js → chunk-JEF7ZU43.js} +50 -18
- package/dist/chunk-JEF7ZU43.js.map +1 -0
- package/dist/{chunk-M5BDH7B4.cjs → chunk-K5NREJ7B.cjs} +6 -6
- package/dist/{chunk-M5BDH7B4.cjs.map → chunk-K5NREJ7B.cjs.map} +1 -1
- package/dist/{chunk-FNOAF2SZ.js → chunk-K6EF74Q4.js} +3 -3
- package/dist/{chunk-FNOAF2SZ.js.map → chunk-K6EF74Q4.js.map} +1 -1
- package/dist/{chunk-CTJLKJMO.js → chunk-M4AJQGAW.js} +5 -5
- package/dist/{chunk-CTJLKJMO.js.map → chunk-M4AJQGAW.js.map} +1 -1
- package/dist/{chunk-Z76WT6W3.js → chunk-MFB7BS3L.js} +4 -4
- package/dist/{chunk-Z76WT6W3.js.map → chunk-MFB7BS3L.js.map} +1 -1
- package/dist/{chunk-EAWVRIHS.js → chunk-O5KUYSYB.js} +3 -3
- package/dist/{chunk-EAWVRIHS.js.map → chunk-O5KUYSYB.js.map} +1 -1
- package/dist/{chunk-NWPRZZ2K.cjs → chunk-OFY7LQSG.cjs} +48 -48
- package/dist/{chunk-NWPRZZ2K.cjs.map → chunk-OFY7LQSG.cjs.map} +1 -1
- package/dist/{chunk-JIBMK2QP.js → chunk-SVHGG25E.js} +8 -8
- package/dist/{chunk-JIBMK2QP.js.map → chunk-SVHGG25E.js.map} +1 -1
- package/dist/{chunk-TJB7IK7N.cjs → chunk-TRLOXCPX.cjs} +5 -5
- package/dist/{chunk-TJB7IK7N.cjs.map → chunk-TRLOXCPX.cjs.map} +1 -1
- package/dist/{chunk-HIZDAENF.js → chunk-VPN66PYF.js} +3 -3
- package/dist/{chunk-HIZDAENF.js.map → chunk-VPN66PYF.js.map} +1 -1
- package/dist/{chunk-RFZB2PQE.cjs → chunk-XOBYVWML.cjs} +9 -9
- package/dist/{chunk-RFZB2PQE.cjs.map → chunk-XOBYVWML.cjs.map} +1 -1
- package/dist/datasets/index.cjs +11 -11
- package/dist/datasets/index.js +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +119 -119
- package/dist/docs/references/docs-workspace-overview.md +15 -0
- package/dist/docs/references/reference-workspace-filesystem.md +2 -0
- package/dist/docs/references/reference-workspace-local-filesystem.md +2 -0
- package/dist/evals/index.cjs +5 -5
- package/dist/evals/index.js +2 -2
- package/dist/evals/scoreTraces/index.cjs +3 -3
- package/dist/evals/scoreTraces/index.js +1 -1
- package/dist/harness/index.cjs +11 -11
- package/dist/harness/index.js +6 -6
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/llm/index.cjs +16 -16
- package/dist/llm/index.js +5 -5
- package/dist/loop/index.cjs +14 -14
- package/dist/loop/index.js +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +14 -14
- package/dist/memory/index.js +1 -1
- package/dist/models-dev-KSUL2WSE.js +3 -0
- package/dist/{models-dev-E6FRPGHV.js.map → models-dev-KSUL2WSE.js.map} +1 -1
- package/dist/models-dev-N3BB7QC6.cjs +12 -0
- package/dist/{models-dev-WIROJ2IM.cjs.map → models-dev-N3BB7QC6.cjs.map} +1 -1
- package/dist/netlify-5FZZLF2V.cjs +12 -0
- package/dist/{netlify-7IRBQ2BY.cjs.map → netlify-5FZZLF2V.cjs.map} +1 -1
- package/dist/netlify-YHUBX5AX.js +3 -0
- package/dist/{netlify-OAGRP6WY.js.map → netlify-YHUBX5AX.js.map} +1 -1
- package/dist/processor-provider/index.cjs +10 -10
- package/dist/processor-provider/index.js +1 -1
- package/dist/processors/index.cjs +42 -42
- package/dist/processors/index.js +1 -1
- package/dist/provider-registry-52PKE45P.js +3 -0
- package/dist/{provider-registry-2MHU2NP6.js.map → provider-registry-52PKE45P.js.map} +1 -1
- package/dist/provider-registry-YH7WKSYN.cjs +40 -0
- package/dist/{provider-registry-FINEGQHE.cjs.map → provider-registry-YH7WKSYN.cjs.map} +1 -1
- package/dist/relevance/index.cjs +3 -3
- package/dist/relevance/index.js +1 -1
- package/dist/stream/index.cjs +8 -8
- package/dist/stream/index.js +1 -1
- package/dist/tool-loop-agent/index.cjs +4 -4
- package/dist/tool-loop-agent/index.js +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +24 -24
- package/dist/workflows/index.js +1 -1
- package/dist/workspace/errors.d.ts +5 -0
- package/dist/workspace/errors.d.ts.map +1 -1
- package/dist/workspace/filesystem/filesystem.d.ts +6 -0
- package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
- package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
- package/dist/workspace/index.cjs +71 -67
- package/dist/workspace/index.js +1 -1
- package/dist/workspace/tools/ast-edit.d.ts.map +1 -1
- package/dist/workspace/tools/edit-file.d.ts.map +1 -1
- package/dist/workspace/tools/tools.d.ts.map +1 -1
- package/dist/workspace/tools/write-file.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/chunk-NWC75FLU.cjs.map +0 -1
- package/dist/chunk-SHQKQEG2.js.map +0 -1
- package/dist/models-dev-E6FRPGHV.js +0 -3
- package/dist/models-dev-WIROJ2IM.cjs +0 -12
- package/dist/netlify-7IRBQ2BY.cjs +0 -12
- package/dist/netlify-OAGRP6WY.js +0 -3
- package/dist/provider-registry-2MHU2NP6.js +0 -3
- package/dist/provider-registry-FINEGQHE.cjs +0 -40
|
@@ -128,6 +128,18 @@ var FileReadRequiredError = class extends FilesystemError {
|
|
|
128
128
|
this.name = "FileReadRequiredError";
|
|
129
129
|
}
|
|
130
130
|
};
|
|
131
|
+
var StaleFileError = class extends FilesystemError {
|
|
132
|
+
constructor(path7, expectedMtime, actualMtime) {
|
|
133
|
+
super(
|
|
134
|
+
`File was modified externally: ${path7} (expected mtime ${expectedMtime.toISOString()}, actual ${actualMtime.toISOString()})`,
|
|
135
|
+
"ESTALE",
|
|
136
|
+
path7
|
|
137
|
+
);
|
|
138
|
+
this.expectedMtime = expectedMtime;
|
|
139
|
+
this.actualMtime = actualMtime;
|
|
140
|
+
this.name = "StaleFileError";
|
|
141
|
+
}
|
|
142
|
+
};
|
|
131
143
|
var FilesystemNotReadyError = class extends FilesystemError {
|
|
132
144
|
constructor(id) {
|
|
133
145
|
super(`Filesystem "${id}" is not ready. Call init() first or use ensureReady().`, "ENOTREADY", id);
|
|
@@ -992,6 +1004,17 @@ var LocalFilesystem = class extends MastraFilesystem {
|
|
|
992
1004
|
const dir = nodePath.dirname(absolutePath);
|
|
993
1005
|
await fs2.mkdir(dir, { recursive: true });
|
|
994
1006
|
}
|
|
1007
|
+
if (options?.expectedMtime) {
|
|
1008
|
+
try {
|
|
1009
|
+
const currentStat = await fs2.stat(absolutePath);
|
|
1010
|
+
if (currentStat.mtime.getTime() !== options.expectedMtime.getTime()) {
|
|
1011
|
+
throw new StaleFileError(inputPath, options.expectedMtime, currentStat.mtime);
|
|
1012
|
+
}
|
|
1013
|
+
} catch (error) {
|
|
1014
|
+
if (error instanceof StaleFileError) throw error;
|
|
1015
|
+
if (!isEnoentError(error)) throw error;
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
995
1018
|
const writeFlag = options?.overwrite === false ? "wx" : "w";
|
|
996
1019
|
try {
|
|
997
1020
|
await fs2.writeFile(absolutePath, this.toBuffer(content), { flag: writeFlag });
|
|
@@ -6865,7 +6888,10 @@ Pattern replace (for everything else):
|
|
|
6865
6888
|
}
|
|
6866
6889
|
const wasModified = modifiedContent !== content;
|
|
6867
6890
|
if (wasModified) {
|
|
6868
|
-
await filesystem.writeFile(path7, modifiedContent, {
|
|
6891
|
+
await filesystem.writeFile(path7, modifiedContent, {
|
|
6892
|
+
overwrite: true,
|
|
6893
|
+
expectedMtime: context?.__expectedMtime
|
|
6894
|
+
});
|
|
6869
6895
|
}
|
|
6870
6896
|
if (!wasModified) {
|
|
6871
6897
|
return `No changes made to ${path7} (${changes.join("; ")})`;
|
|
@@ -6924,7 +6950,10 @@ Usage:
|
|
|
6924
6950
|
return `Cannot edit binary files. Use the write file tool instead.`;
|
|
6925
6951
|
}
|
|
6926
6952
|
const result = replaceString(content, old_string, new_string, replace_all);
|
|
6927
|
-
await filesystem.writeFile(path7, result.content, {
|
|
6953
|
+
await filesystem.writeFile(path7, result.content, {
|
|
6954
|
+
overwrite: true,
|
|
6955
|
+
expectedMtime: context?.__expectedMtime
|
|
6956
|
+
});
|
|
6928
6957
|
let output = `Replaced ${result.replacements} occurrence${result.replacements !== 1 ? "s" : ""} in ${path7}`;
|
|
6929
6958
|
output += await getEditDiagnosticsText(workspace, path7, result.content);
|
|
6930
6959
|
return output;
|
|
@@ -7806,7 +7835,10 @@ var writeFileTool = createTool({
|
|
|
7806
7835
|
if (filesystem.readOnly) {
|
|
7807
7836
|
throw new WorkspaceReadOnlyError("write_file");
|
|
7808
7837
|
}
|
|
7809
|
-
await filesystem.writeFile(path7, content, {
|
|
7838
|
+
await filesystem.writeFile(path7, content, {
|
|
7839
|
+
overwrite,
|
|
7840
|
+
expectedMtime: context?.__expectedMtime
|
|
7841
|
+
});
|
|
7810
7842
|
const size = Buffer.byteLength(content, "utf-8");
|
|
7811
7843
|
let output = `Wrote ${size} bytes to ${path7}`;
|
|
7812
7844
|
output += await getEditDiagnosticsText(workspace, path7, content);
|
|
@@ -7853,12 +7885,18 @@ function wrapWithReadTracker(tool, workspace, readTracker, config, mode) {
|
|
|
7853
7885
|
return {
|
|
7854
7886
|
...tool,
|
|
7855
7887
|
execute: async (input, context = {}) => {
|
|
7856
|
-
if (mode === "write"
|
|
7888
|
+
if (mode === "write") {
|
|
7889
|
+
const record = readTracker.getReadRecord(input.path);
|
|
7890
|
+
if (record) {
|
|
7891
|
+
context = { ...context, __expectedMtime: record.modifiedAtRead };
|
|
7892
|
+
}
|
|
7857
7893
|
try {
|
|
7858
7894
|
const stat3 = await workspace.filesystem.stat(input.path);
|
|
7859
|
-
|
|
7860
|
-
|
|
7861
|
-
|
|
7895
|
+
if (config.requireReadBeforeWrite) {
|
|
7896
|
+
const check = readTracker.needsReRead(input.path, stat3.modifiedAt);
|
|
7897
|
+
if (check.needsReRead) {
|
|
7898
|
+
throw new FileReadRequiredError(input.path, check.reason);
|
|
7899
|
+
}
|
|
7862
7900
|
}
|
|
7863
7901
|
} catch (error) {
|
|
7864
7902
|
if (!(error instanceof FileNotFoundError)) {
|
|
@@ -7896,19 +7934,13 @@ function createWorkspaceTools(workspace) {
|
|
|
7896
7934
|
const toolsConfig = workspace.getToolsConfig();
|
|
7897
7935
|
const isReadOnly = workspace.filesystem?.readOnly ?? false;
|
|
7898
7936
|
const writeLock = new InMemoryFileWriteLock();
|
|
7899
|
-
|
|
7900
|
-
const writeFileConfig = resolveToolConfig(toolsConfig, WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE);
|
|
7901
|
-
const editFileConfig = resolveToolConfig(toolsConfig, WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE);
|
|
7902
|
-
const astEditConfig = resolveToolConfig(toolsConfig, WORKSPACE_TOOLS.FILESYSTEM.AST_EDIT);
|
|
7903
|
-
if (writeFileConfig.requireReadBeforeWrite || editFileConfig.requireReadBeforeWrite || astEditConfig.requireReadBeforeWrite) {
|
|
7904
|
-
readTracker = new InMemoryFileReadTracker();
|
|
7905
|
-
}
|
|
7937
|
+
const readTracker = new InMemoryFileReadTracker();
|
|
7906
7938
|
const addTool = (name, tool, opts) => {
|
|
7907
7939
|
const config = resolveToolConfig(toolsConfig, name);
|
|
7908
7940
|
if (!config.enabled) return;
|
|
7909
7941
|
if (opts?.requireWrite && isReadOnly) return;
|
|
7910
7942
|
let wrapped = { ...tool, requireApproval: config.requireApproval };
|
|
7911
|
-
if (
|
|
7943
|
+
if (opts?.readTrackerMode) {
|
|
7912
7944
|
wrapped = wrapWithReadTracker(wrapped, workspace, readTracker, config, opts.readTrackerMode);
|
|
7913
7945
|
}
|
|
7914
7946
|
if (opts?.useWriteLock) {
|
|
@@ -7967,6 +7999,6 @@ function createWorkspaceTools(workspace) {
|
|
|
7967
7999
|
return tools;
|
|
7968
8000
|
}
|
|
7969
8001
|
|
|
7970
|
-
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, 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 };
|
|
7971
|
-
//# sourceMappingURL=chunk-
|
|
7972
|
-
//# sourceMappingURL=chunk-
|
|
8002
|
+
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 };
|
|
8003
|
+
//# sourceMappingURL=chunk-JEF7ZU43.js.map
|
|
8004
|
+
//# sourceMappingURL=chunk-JEF7ZU43.js.map
|