@mastra/code-sdk 1.0.3-alpha.1 → 1.1.0-alpha.2
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 +38 -0
- package/dist/acp/agent.js +155 -167
- package/dist/acp/agent.js.map +1 -1
- package/dist/acp/event-mapper.js +193 -168
- package/dist/acp/event-mapper.js.map +1 -1
- package/dist/acp/index.js +60 -49
- package/dist/acp/index.js.map +1 -1
- package/dist/acp/server.js +31 -30
- package/dist/acp/server.js.map +1 -1
- package/dist/acp.js +1 -4
- package/dist/agents/credential-resolver.js +40 -29
- package/dist/agents/credential-resolver.js.map +1 -1
- package/dist/agents/custom-provider-source.js +16 -9
- package/dist/agents/custom-provider-source.js.map +1 -1
- package/dist/agents/instructions.js +27 -36
- package/dist/agents/instructions.js.map +1 -1
- package/dist/agents/mastracode-gateway.js +355 -428
- package/dist/agents/mastracode-gateway.js.map +1 -1
- package/dist/agents/memory.js +87 -78
- package/dist/agents/memory.js.map +1 -1
- package/dist/agents/model.js +114 -119
- package/dist/agents/model.js.map +1 -1
- package/dist/agents/modes/build.js +12 -13
- package/dist/agents/modes/build.js.map +1 -1
- package/dist/agents/modes/explore.js +14 -13
- package/dist/agents/modes/explore.js.map +1 -1
- package/dist/agents/modes/plan.js +14 -15
- package/dist/agents/modes/plan.js.map +1 -1
- package/dist/agents/prompts/agent-instructions.js +78 -69
- package/dist/agents/prompts/agent-instructions.js.map +1 -1
- package/dist/agents/prompts/build.js +19 -16
- package/dist/agents/prompts/build.js.map +1 -1
- package/dist/agents/prompts/fast.js +8 -4
- package/dist/agents/prompts/fast.js.map +1 -1
- package/dist/agents/prompts/index.js +48 -47
- package/dist/agents/prompts/index.js.map +1 -1
- package/dist/agents/prompts/model.js +6 -5
- package/dist/agents/prompts/model.js.map +1 -1
- package/dist/agents/prompts/plan.js +20 -16
- package/dist/agents/prompts/plan.js.map +1 -1
- package/dist/agents/prompts/tool-guidance.js +77 -109
- package/dist/agents/prompts/tool-guidance.js.map +1 -1
- package/dist/agents/sandbox-filesystem.js +245 -259
- package/dist/agents/sandbox-filesystem.js.map +1 -1
- package/dist/agents/sandbox-reattach.js +9 -11
- package/dist/agents/sandbox-reattach.js.map +1 -1
- package/dist/agents/thread-caveman-state.js +92 -81
- package/dist/agents/thread-caveman-state.js.map +1 -1
- package/dist/agents/tool-availability.js +62 -80
- package/dist/agents/tool-availability.js.map +1 -1
- package/dist/agents/tools.js +99 -139
- package/dist/agents/tools.js.map +1 -1
- package/dist/agents/workspace.js +232 -225
- package/dist/agents/workspace.js.map +1 -1
- package/dist/analytics.js +139 -128
- package/dist/analytics.js.map +1 -1
- package/dist/auth/authorization-input.js +39 -25
- package/dist/auth/authorization-input.js.map +1 -1
- package/dist/auth/device-code.js +112 -80
- package/dist/auth/device-code.js.map +1 -1
- package/dist/auth/index.js +2 -9
- package/dist/auth/pkce.js +27 -16
- package/dist/auth/pkce.js.map +1 -1
- package/dist/auth/providers/anthropic.js +107 -93
- package/dist/auth/providers/anthropic.js.map +1 -1
- package/dist/auth/providers/github-copilot.js +304 -293
- package/dist/auth/providers/github-copilot.js.map +1 -1
- package/dist/auth/providers/openai-codex.js +442 -460
- package/dist/auth/providers/openai-codex.js.map +1 -1
- package/dist/auth/providers/xai.js +179 -145
- package/dist/auth/providers/xai.js.map +1 -1
- package/dist/auth/storage.js +182 -175
- package/dist/auth/storage.js.map +1 -1
- package/dist/auth/types.js +1 -1
- package/dist/clipboard/index.js +206 -172
- package/dist/clipboard/index.js.map +1 -1
- package/dist/constants.js +11 -16
- package/dist/constants.js.map +1 -1
- package/dist/error-classification.js +19 -11
- package/dist/error-classification.js.map +1 -1
- package/dist/evals/context-builder.js +145 -104
- package/dist/evals/context-builder.js.map +1 -1
- package/dist/evals/index.js +4 -7
- package/dist/evals/scorers/classify-command.js +62 -41
- package/dist/evals/scorers/classify-command.js.map +1 -1
- package/dist/evals/scorers/efficiency.js +239 -181
- package/dist/evals/scorers/efficiency.js.map +1 -1
- package/dist/evals/scorers/extract-tools.js +51 -47
- package/dist/evals/scorers/extract-tools.js.map +1 -1
- package/dist/evals/scorers/index.js +1 -5
- package/dist/evals/scorers/outcome.js +321 -212
- package/dist/evals/scorers/outcome.js.map +1 -1
- package/dist/goal-manager.js +266 -261
- package/dist/goal-manager.js.map +1 -1
- package/dist/goal-signal.js +14 -13
- package/dist/goal-signal.js.map +1 -1
- package/dist/headless/cli.js +153 -154
- package/dist/headless/cli.js.map +1 -1
- package/dist/headless/flags.js +180 -178
- package/dist/headless/flags.js.map +1 -1
- package/dist/headless/format.js +72 -71
- package/dist/headless/format.js.map +1 -1
- package/dist/headless/index.js +5 -31
- package/dist/headless/policy.js +35 -31
- package/dist/headless/policy.js.map +1 -1
- package/dist/headless/run-mc.js +332 -334
- package/dist/headless/run-mc.js.map +1 -1
- package/dist/headless/types.js +16 -7
- package/dist/headless/types.js.map +1 -1
- package/dist/hooks/config.js +56 -61
- package/dist/hooks/config.js.map +1 -1
- package/dist/hooks/executor.js +118 -116
- package/dist/hooks/executor.js.map +1 -1
- package/dist/hooks/index.js +4 -15
- package/dist/hooks/manager.js +221 -280
- package/dist/hooks/manager.js.map +1 -1
- package/dist/hooks/types.js +5 -4
- package/dist/hooks/types.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +632 -712
- package/dist/index.js.map +1 -1
- package/dist/ipc/ipc-reporter.js +19 -22
- package/dist/ipc/ipc-reporter.js.map +1 -1
- package/dist/lsp/client.js +248 -306
- package/dist/lsp/client.js.map +1 -1
- package/dist/lsp/index.js +1 -6
- package/dist/lsp/language.js +39 -43
- package/dist/lsp/language.js.map +1 -1
- package/dist/lsp/manager.js +78 -93
- package/dist/lsp/manager.js.map +1 -1
- package/dist/lsp/server.js +151 -120
- package/dist/lsp/server.js.map +1 -1
- package/dist/lsp/workspace.js +50 -47
- package/dist/lsp/workspace.js.map +1 -1
- package/dist/mcp/config.js +210 -199
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/index.js +2 -9
- package/dist/mcp/manager.js +482 -475
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/types.js +1 -1
- package/dist/onboarding/custom-packs.js +14 -17
- package/dist/onboarding/custom-packs.js.map +1 -1
- package/dist/onboarding/custom-providers.js +22 -20
- package/dist/onboarding/custom-providers.js.map +1 -1
- package/dist/onboarding/index.d.ts +1 -1
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +3 -21
- package/dist/onboarding/om-settings.d.ts +5 -0
- package/dist/onboarding/om-settings.d.ts.map +1 -1
- package/dist/onboarding/om-settings.js +41 -20
- package/dist/onboarding/om-settings.js.map +1 -1
- package/dist/onboarding/packs.d.ts +4 -6
- package/dist/onboarding/packs.d.ts.map +1 -1
- package/dist/onboarding/packs.js +154 -105
- package/dist/onboarding/packs.js.map +1 -1
- package/dist/onboarding/settings.js +575 -517
- package/dist/onboarding/settings.js.map +1 -1
- package/dist/permissions.js +112 -99
- package/dist/permissions.js.map +1 -1
- package/dist/plugin.js +21 -23
- package/dist/plugin.js.map +1 -1
- package/dist/plugins/dependencies.js +64 -87
- package/dist/plugins/dependencies.js.map +1 -1
- package/dist/plugins/install.js +159 -169
- package/dist/plugins/install.js.map +1 -1
- package/dist/plugins/loader.js +170 -185
- package/dist/plugins/loader.js.map +1 -1
- package/dist/plugins/manager.js +374 -380
- package/dist/plugins/manager.js.map +1 -1
- package/dist/plugins/manifest.js +38 -63
- package/dist/plugins/manifest.js.map +1 -1
- package/dist/plugins/package-link.js +48 -64
- package/dist/plugins/package-link.js.map +1 -1
- package/dist/plugins/paths.js +18 -19
- package/dist/plugins/paths.js.map +1 -1
- package/dist/plugins/registry.js +97 -81
- package/dist/plugins/registry.js.map +1 -1
- package/dist/plugins/scaffold.js +62 -98
- package/dist/plugins/scaffold.js.map +1 -1
- package/dist/plugins/types.js +1 -1
- package/dist/processors/plan-rejection-abort.js +45 -44
- package/dist/processors/plan-rejection-abort.js.map +1 -1
- package/dist/providers/amazon-bedrock-gateway.js +134 -125
- package/dist/providers/amazon-bedrock-gateway.js.map +1 -1
- package/dist/providers/amazon-bedrock.js +68 -47
- package/dist/providers/amazon-bedrock.js.map +1 -1
- package/dist/providers/claude-max.js +153 -133
- package/dist/providers/claude-max.js.map +1 -1
- package/dist/providers/github-copilot.js +232 -230
- package/dist/providers/github-copilot.js.map +1 -1
- package/dist/providers/openai-codex.js +271 -260
- package/dist/providers/openai-codex.js.map +1 -1
- package/dist/providers/xai.js +57 -50
- package/dist/providers/xai.js.map +1 -1
- package/dist/schema.js +91 -89
- package/dist/schema.js.map +1 -1
- package/dist/theme-palette.js +18 -14
- package/dist/theme-palette.js.map +1 -1
- package/dist/tool-names.js +46 -37
- package/dist/tool-names.js.map +1 -1
- package/dist/tools/index.js +2 -8
- package/dist/tools/request-sandbox-access.js +71 -80
- package/dist/tools/request-sandbox-access.js.map +1 -1
- package/dist/tools/utils.js +26 -16
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/web-search.js +51 -55
- package/dist/tools/web-search.js.map +1 -1
- package/dist/utils/binaries.js +65 -61
- package/dist/utils/binaries.js.map +1 -1
- package/dist/utils/debug-log.js +51 -47
- package/dist/utils/debug-log.js.map +1 -1
- package/dist/utils/errors.js +157 -192
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/gateway-sync.js +49 -37
- package/dist/utils/gateway-sync.js.map +1 -1
- package/dist/utils/path-security.js +7 -6
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/plan-diff.js +58 -39
- package/dist/utils/plan-diff.js.map +1 -1
- package/dist/utils/plans.js +92 -74
- package/dist/utils/plans.js.map +1 -1
- package/dist/utils/project.js +318 -256
- package/dist/utils/project.js.map +1 -1
- package/dist/utils/signals-pubsub.js +117 -99
- package/dist/utils/signals-pubsub.js.map +1 -1
- package/dist/utils/slash-command-loader.js +118 -154
- package/dist/utils/slash-command-loader.js.map +1 -1
- package/dist/utils/slash-command-processor.js +92 -83
- package/dist/utils/slash-command-processor.js.map +1 -1
- package/dist/utils/stdin-pipe.js +87 -63
- package/dist/utils/stdin-pipe.js.map +1 -1
- package/dist/utils/storage-factory.js +104 -84
- package/dist/utils/storage-factory.js.map +1 -1
- package/dist/utils/storage-maintenance.js +249 -211
- package/dist/utils/storage-maintenance.js.map +1 -1
- package/dist/utils/thread-lock.js +96 -92
- package/dist/utils/thread-lock.js.map +1 -1
- package/dist/utils/token-estimator.js +12 -12
- package/dist/utils/token-estimator.js.map +1 -1
- package/dist/utils/update-check.d.ts +1 -1
- package/dist/utils/update-check.js +341 -259
- package/dist/utils/update-check.js.map +1 -1
- package/dist/voice/stt-registry.js +131 -113
- package/dist/voice/stt-registry.js.map +1 -1
- package/package.json +12 -12
- package/dist/acp.js.map +0 -1
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/types.js.map +0 -1
- package/dist/evals/index.js.map +0 -1
- package/dist/evals/scorers/index.js.map +0 -1
- package/dist/headless/index.js.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/lsp/index.js.map +0 -1
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/types.js.map +0 -1
- package/dist/onboarding/index.js.map +0 -1
- package/dist/plugins/types.js.map +0 -1
- package/dist/tools/index.js.map +0 -1
package/dist/utils/binaries.js
CHANGED
|
@@ -1,74 +1,78 @@
|
|
|
1
|
-
import { execFile, execFileSync } from "
|
|
1
|
+
import { execFile, execFileSync } from "child_process";
|
|
2
|
+
//#region src/utils/binaries.ts
|
|
2
3
|
const COMMON_BINARIES = [
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
"python",
|
|
5
|
+
"python3",
|
|
6
|
+
"node",
|
|
7
|
+
"npm",
|
|
8
|
+
"pnpm",
|
|
9
|
+
"yarn",
|
|
10
|
+
"bun",
|
|
11
|
+
"git",
|
|
12
|
+
"rg",
|
|
13
|
+
"fd",
|
|
14
|
+
"fdfind",
|
|
15
|
+
"curl",
|
|
16
|
+
"wget",
|
|
17
|
+
"docker",
|
|
18
|
+
"make",
|
|
19
|
+
"gcc",
|
|
20
|
+
"g++",
|
|
21
|
+
"go",
|
|
22
|
+
"rustc",
|
|
23
|
+
"cargo"
|
|
23
24
|
];
|
|
24
25
|
let cachedBinaries = null;
|
|
25
26
|
let inFlightPromise = null;
|
|
26
27
|
function resolveBinary(name) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
const command = process.platform === "win32" ? "where" : "which";
|
|
29
|
+
try {
|
|
30
|
+
return execFileSync(command, [name], {
|
|
31
|
+
encoding: "utf-8",
|
|
32
|
+
stdio: [
|
|
33
|
+
"pipe",
|
|
34
|
+
"pipe",
|
|
35
|
+
"pipe"
|
|
36
|
+
]
|
|
37
|
+
}).trim().split(/\r?\n/)[0] || null;
|
|
38
|
+
} catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
34
41
|
}
|
|
35
42
|
function resolveBinaryAsync(name) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
const command = process.platform === "win32" ? "where" : "which";
|
|
44
|
+
return new Promise((resolve) => {
|
|
45
|
+
execFile(command, [name], { encoding: "utf-8" }, (err, stdout) => {
|
|
46
|
+
if (err) {
|
|
47
|
+
resolve(null);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
resolve(stdout.trim().split(/\r?\n/)[0] || null);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
46
53
|
}
|
|
47
54
|
function detectCommonBinaries() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
cachedBinaries ??= COMMON_BINARIES.map((name) => ({
|
|
56
|
+
name,
|
|
57
|
+
path: resolveBinary(name)
|
|
58
|
+
}));
|
|
59
|
+
return cachedBinaries;
|
|
53
60
|
}
|
|
54
61
|
async function detectCommonBinariesAsync() {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
inFlightPromise = null;
|
|
68
|
-
}
|
|
62
|
+
if (cachedBinaries) return cachedBinaries;
|
|
63
|
+
if (inFlightPromise) return inFlightPromise;
|
|
64
|
+
inFlightPromise = Promise.all(COMMON_BINARIES.map(async (name) => ({
|
|
65
|
+
name,
|
|
66
|
+
path: await resolveBinaryAsync(name)
|
|
67
|
+
})));
|
|
68
|
+
try {
|
|
69
|
+
cachedBinaries = await inFlightPromise;
|
|
70
|
+
return cachedBinaries;
|
|
71
|
+
} finally {
|
|
72
|
+
inFlightPromise = null;
|
|
73
|
+
}
|
|
69
74
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
};
|
|
75
|
+
//#endregion
|
|
76
|
+
export { detectCommonBinaries, detectCommonBinariesAsync };
|
|
77
|
+
|
|
74
78
|
//# sourceMappingURL=binaries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/binaries.ts"],"sourcesContent":["import { execFile, execFileSync } from 'node:child_process';\n\nexport interface CommonBinary {\n name: string;\n path: string | null;\n}\n\nconst COMMON_BINARIES = [\n 'python',\n 'python3',\n 'node',\n 'npm',\n 'pnpm',\n 'yarn',\n 'bun',\n 'git',\n 'rg',\n 'fd',\n 'fdfind',\n 'curl',\n 'wget',\n 'docker',\n 'make',\n 'gcc',\n 'g++',\n 'go',\n 'rustc',\n 'cargo',\n] as const;\n\nlet cachedBinaries: CommonBinary[] | null = null;\nlet inFlightPromise: Promise<CommonBinary[]> | null = null;\n\nfunction resolveBinary(name: string): string | null {\n const command = process.platform === 'win32' ? 'where' : 'which';\n try {\n const output = execFileSync(command, [name], { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();\n return output.split(/\\r?\\n/)[0] || null;\n } catch {\n return null;\n }\n}\n\nfunction resolveBinaryAsync(name: string): Promise<string | null> {\n const command = process.platform === 'win32' ? 'where' : 'which';\n return new Promise(resolve => {\n execFile(command, [name], { encoding: 'utf-8' }, (err, stdout) => {\n if (err) {\n resolve(null);\n return;\n }\n resolve(stdout.trim().split(/\\r?\\n/)[0] || null);\n });\n });\n}\n\nexport function detectCommonBinaries(): CommonBinary[] {\n cachedBinaries ??= COMMON_BINARIES.map(name => ({\n name,\n path: resolveBinary(name),\n }));\n\n return cachedBinaries;\n}\n\nexport async function detectCommonBinariesAsync(): Promise<CommonBinary[]> {\n if (cachedBinaries) return cachedBinaries;\n if (inFlightPromise) return inFlightPromise;\n\n inFlightPromise = Promise.all(\n COMMON_BINARIES.map(async name => ({\n name,\n path: await resolveBinaryAsync(name),\n })),\n );\n\n try {\n cachedBinaries = await inFlightPromise;\n return cachedBinaries;\n } finally {\n inFlightPromise = null;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"binaries.js","names":[],"sources":["../../src/utils/binaries.ts"],"sourcesContent":["import { execFile, execFileSync } from 'node:child_process';\n\nexport interface CommonBinary {\n name: string;\n path: string | null;\n}\n\nconst COMMON_BINARIES = [\n 'python',\n 'python3',\n 'node',\n 'npm',\n 'pnpm',\n 'yarn',\n 'bun',\n 'git',\n 'rg',\n 'fd',\n 'fdfind',\n 'curl',\n 'wget',\n 'docker',\n 'make',\n 'gcc',\n 'g++',\n 'go',\n 'rustc',\n 'cargo',\n] as const;\n\nlet cachedBinaries: CommonBinary[] | null = null;\nlet inFlightPromise: Promise<CommonBinary[]> | null = null;\n\nfunction resolveBinary(name: string): string | null {\n const command = process.platform === 'win32' ? 'where' : 'which';\n try {\n const output = execFileSync(command, [name], { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();\n return output.split(/\\r?\\n/)[0] || null;\n } catch {\n return null;\n }\n}\n\nfunction resolveBinaryAsync(name: string): Promise<string | null> {\n const command = process.platform === 'win32' ? 'where' : 'which';\n return new Promise(resolve => {\n execFile(command, [name], { encoding: 'utf-8' }, (err, stdout) => {\n if (err) {\n resolve(null);\n return;\n }\n resolve(stdout.trim().split(/\\r?\\n/)[0] || null);\n });\n });\n}\n\nexport function detectCommonBinaries(): CommonBinary[] {\n cachedBinaries ??= COMMON_BINARIES.map(name => ({\n name,\n path: resolveBinary(name),\n }));\n\n return cachedBinaries;\n}\n\nexport async function detectCommonBinariesAsync(): Promise<CommonBinary[]> {\n if (cachedBinaries) return cachedBinaries;\n if (inFlightPromise) return inFlightPromise;\n\n inFlightPromise = Promise.all(\n COMMON_BINARIES.map(async name => ({\n name,\n path: await resolveBinaryAsync(name),\n })),\n );\n\n try {\n cachedBinaries = await inFlightPromise;\n return cachedBinaries;\n } finally {\n inFlightPromise = null;\n }\n}\n"],"mappings":";;AAOA,MAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,IAAI,iBAAwC;AAC5C,IAAI,kBAAkD;AAEtD,SAAS,cAAc,MAA6B;CAClD,MAAM,UAAU,QAAQ,aAAa,UAAU,UAAU;CACzD,IAAI;EAEF,OADe,aAAa,SAAS,CAAC,IAAI,GAAG;GAAE,UAAU;GAAS,OAAO;IAAC;IAAQ;IAAQ;GAAM;EAAE,CAAC,CAAC,CAAC,KACzF,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,MAAM;CACrC,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,mBAAmB,MAAsC;CAChE,MAAM,UAAU,QAAQ,aAAa,UAAU,UAAU;CACzD,OAAO,IAAI,SAAQ,YAAW;EAC5B,SAAS,SAAS,CAAC,IAAI,GAAG,EAAE,UAAU,QAAQ,IAAI,KAAK,WAAW;GAChE,IAAI,KAAK;IACP,QAAQ,IAAI;IACZ;GACF;GACA,QAAQ,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,MAAM,IAAI;EACjD,CAAC;CACH,CAAC;AACH;AAEA,SAAgB,uBAAuC;CACrD,mBAAmB,gBAAgB,KAAI,UAAS;EAC9C;EACA,MAAM,cAAc,IAAI;CAC1B,EAAE;CAEF,OAAO;AACT;AAEA,eAAsB,4BAAqD;CACzE,IAAI,gBAAgB,OAAO;CAC3B,IAAI,iBAAiB,OAAO;CAE5B,kBAAkB,QAAQ,IACxB,gBAAgB,IAAI,OAAM,UAAS;EACjC;EACA,MAAM,MAAM,mBAAmB,IAAI;CACrC,EAAE,CACJ;CAEA,IAAI;EACF,iBAAiB,MAAM;EACvB,OAAO;CACT,UAAU;EACR,kBAAkB;CACpB;AACF"}
|
package/dist/utils/debug-log.js
CHANGED
|
@@ -1,55 +1,59 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as path from "node:path";
|
|
3
1
|
import { getAppDataDir } from "./project.js";
|
|
2
|
+
import * as fs$1 from "fs";
|
|
3
|
+
import * as path$1 from "path";
|
|
4
|
+
//#region src/utils/debug-log.ts
|
|
4
5
|
const MAX_LOG_SIZE = 5 * 1024 * 1024;
|
|
5
6
|
const KEEP_SIZE = 4 * 1024 * 1024;
|
|
7
|
+
/**
|
|
8
|
+
* Truncate a log file to roughly {@link KEEP_SIZE} bytes if it exceeds
|
|
9
|
+
* {@link MAX_LOG_SIZE}, cutting at the first newline so we don't start mid-line.
|
|
10
|
+
*/
|
|
6
11
|
function truncateLogFile(logFile) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
12
|
+
try {
|
|
13
|
+
const stat = fs$1.statSync(logFile);
|
|
14
|
+
if (stat.size > MAX_LOG_SIZE) {
|
|
15
|
+
const buf = Buffer.alloc(KEEP_SIZE);
|
|
16
|
+
const fd = fs$1.openSync(logFile, "r");
|
|
17
|
+
fs$1.readSync(fd, buf, 0, KEEP_SIZE, stat.size - KEEP_SIZE);
|
|
18
|
+
fs$1.closeSync(fd);
|
|
19
|
+
const firstNewline = buf.indexOf(10);
|
|
20
|
+
const trimmed = firstNewline >= 0 ? buf.subarray(firstNewline + 1) : buf;
|
|
21
|
+
fs$1.writeFileSync(logFile, trimmed);
|
|
22
|
+
}
|
|
23
|
+
} catch {}
|
|
20
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Set up debug logging. When {@link MASTRA_DEBUG} is `"true"`, redirects
|
|
27
|
+
* `console.error` and `console.warn` to a log file (truncating it first if
|
|
28
|
+
* oversized). Otherwise silences them to avoid corrupting the TUI.
|
|
29
|
+
*/
|
|
21
30
|
function setupDebugLogging() {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
47
|
-
console.error = noop;
|
|
48
|
-
console.warn = noop;
|
|
49
|
-
}
|
|
31
|
+
if (["true", "1"].includes(process.env.MASTRA_DEBUG ?? "")) {
|
|
32
|
+
const logFile = path$1.join(getAppDataDir(), "debug.log");
|
|
33
|
+
truncateLogFile(logFile);
|
|
34
|
+
const logStream = fs$1.createWriteStream(logFile, { flags: "a" });
|
|
35
|
+
const fmt = (a) => {
|
|
36
|
+
if (typeof a === "string") return a;
|
|
37
|
+
if (a instanceof Error) return a.stack ?? `${a.name}: ${a.message}`;
|
|
38
|
+
try {
|
|
39
|
+
return JSON.stringify(a);
|
|
40
|
+
} catch {
|
|
41
|
+
return String(a);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
console.error = (...args) => {
|
|
45
|
+
logStream.write(`[ERROR] ${(/* @__PURE__ */ new Date()).toISOString()} ${args.map(fmt).join(" ")}\n`);
|
|
46
|
+
};
|
|
47
|
+
console.warn = (...args) => {
|
|
48
|
+
logStream.write(`[WARN] ${(/* @__PURE__ */ new Date()).toISOString()} ${args.map(fmt).join(" ")}\n`);
|
|
49
|
+
};
|
|
50
|
+
} else {
|
|
51
|
+
const noop = () => {};
|
|
52
|
+
console.error = noop;
|
|
53
|
+
console.warn = noop;
|
|
54
|
+
}
|
|
50
55
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { setupDebugLogging, truncateLogFile };
|
|
58
|
+
|
|
55
59
|
//# sourceMappingURL=debug-log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/debug-log.ts"],"sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport { getAppDataDir } from './project.js';\n\nconst MAX_LOG_SIZE = 5 * 1024 * 1024; // 5 MB\nconst KEEP_SIZE = 4 * 1024 * 1024; // 4 MB\n\n/**\n * Truncate a log file to roughly {@link KEEP_SIZE} bytes if it exceeds\n * {@link MAX_LOG_SIZE}, cutting at the first newline so we don't start mid-line.\n */\nexport function truncateLogFile(logFile: string): void {\n try {\n const stat = fs.statSync(logFile);\n if (stat.size > MAX_LOG_SIZE) {\n const buf = Buffer.alloc(KEEP_SIZE);\n const fd = fs.openSync(logFile, 'r');\n fs.readSync(fd, buf, 0, KEEP_SIZE, stat.size - KEEP_SIZE);\n fs.closeSync(fd);\n const firstNewline = buf.indexOf(10);\n const trimmed = firstNewline >= 0 ? buf.subarray(firstNewline + 1) : buf;\n fs.writeFileSync(logFile, trimmed);\n }\n } catch {\n // File may not exist yet — that's fine\n }\n}\n\n/**\n * Set up debug logging. When {@link MASTRA_DEBUG} is `\"true\"`, redirects\n * `console.error` and `console.warn` to a log file (truncating it first if\n * oversized). Otherwise silences them to avoid corrupting the TUI.\n */\nexport function setupDebugLogging(): void {\n const debugEnabled = ['true', '1'].includes(process.env.MASTRA_DEBUG ?? '');\n\n if (debugEnabled) {\n const logFile = path.join(getAppDataDir(), 'debug.log');\n truncateLogFile(logFile);\n\n const logStream = fs.createWriteStream(logFile, { flags: 'a' });\n const fmt = (a: unknown): string => {\n if (typeof a === 'string') return a;\n if (a instanceof Error) return a.stack ?? `${a.name}: ${a.message}`;\n try {\n return JSON.stringify(a);\n } catch {\n return String(a);\n }\n };\n console.error = (...args: unknown[]) => {\n logStream.write(`[ERROR] ${new Date().toISOString()} ${args.map(fmt).join(' ')}\\n`);\n };\n console.warn = (...args: unknown[]) => {\n logStream.write(`[WARN] ${new Date().toISOString()} ${args.map(fmt).join(' ')}\\n`);\n };\n } else {\n const noop = () => {};\n console.error = noop;\n console.warn = noop;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"debug-log.js","names":["fs","path"],"sources":["../../src/utils/debug-log.ts"],"sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport { getAppDataDir } from './project.js';\n\nconst MAX_LOG_SIZE = 5 * 1024 * 1024; // 5 MB\nconst KEEP_SIZE = 4 * 1024 * 1024; // 4 MB\n\n/**\n * Truncate a log file to roughly {@link KEEP_SIZE} bytes if it exceeds\n * {@link MAX_LOG_SIZE}, cutting at the first newline so we don't start mid-line.\n */\nexport function truncateLogFile(logFile: string): void {\n try {\n const stat = fs.statSync(logFile);\n if (stat.size > MAX_LOG_SIZE) {\n const buf = Buffer.alloc(KEEP_SIZE);\n const fd = fs.openSync(logFile, 'r');\n fs.readSync(fd, buf, 0, KEEP_SIZE, stat.size - KEEP_SIZE);\n fs.closeSync(fd);\n const firstNewline = buf.indexOf(10);\n const trimmed = firstNewline >= 0 ? buf.subarray(firstNewline + 1) : buf;\n fs.writeFileSync(logFile, trimmed);\n }\n } catch {\n // File may not exist yet — that's fine\n }\n}\n\n/**\n * Set up debug logging. When {@link MASTRA_DEBUG} is `\"true\"`, redirects\n * `console.error` and `console.warn` to a log file (truncating it first if\n * oversized). Otherwise silences them to avoid corrupting the TUI.\n */\nexport function setupDebugLogging(): void {\n const debugEnabled = ['true', '1'].includes(process.env.MASTRA_DEBUG ?? '');\n\n if (debugEnabled) {\n const logFile = path.join(getAppDataDir(), 'debug.log');\n truncateLogFile(logFile);\n\n const logStream = fs.createWriteStream(logFile, { flags: 'a' });\n const fmt = (a: unknown): string => {\n if (typeof a === 'string') return a;\n if (a instanceof Error) return a.stack ?? `${a.name}: ${a.message}`;\n try {\n return JSON.stringify(a);\n } catch {\n return String(a);\n }\n };\n console.error = (...args: unknown[]) => {\n logStream.write(`[ERROR] ${new Date().toISOString()} ${args.map(fmt).join(' ')}\\n`);\n };\n console.warn = (...args: unknown[]) => {\n logStream.write(`[WARN] ${new Date().toISOString()} ${args.map(fmt).join(' ')}\\n`);\n };\n } else {\n const noop = () => {};\n console.error = noop;\n console.warn = noop;\n }\n}\n"],"mappings":";;;;AAKA,MAAM,eAAe,IAAI,OAAO;AAChC,MAAM,YAAY,IAAI,OAAO;;;;;AAM7B,SAAgB,gBAAgB,SAAuB;CACrD,IAAI;EACF,MAAM,OAAOA,KAAG,SAAS,OAAO;EAChC,IAAI,KAAK,OAAO,cAAc;GAC5B,MAAM,MAAM,OAAO,MAAM,SAAS;GAClC,MAAM,KAAKA,KAAG,SAAS,SAAS,GAAG;GACnC,KAAG,SAAS,IAAI,KAAK,GAAG,WAAW,KAAK,OAAO,SAAS;GACxD,KAAG,UAAU,EAAE;GACf,MAAM,eAAe,IAAI,QAAQ,EAAE;GACnC,MAAM,UAAU,gBAAgB,IAAI,IAAI,SAAS,eAAe,CAAC,IAAI;GACrE,KAAG,cAAc,SAAS,OAAO;EACnC;CACF,QAAQ,CAER;AACF;;;;;;AAOA,SAAgB,oBAA0B;CAGxC,IAFqB,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,QAAQ,IAAI,gBAAgB,EAEzD,GAAG;EAChB,MAAM,UAAUC,OAAK,KAAK,cAAc,GAAG,WAAW;EACtD,gBAAgB,OAAO;EAEvB,MAAM,YAAYD,KAAG,kBAAkB,SAAS,EAAE,OAAO,IAAI,CAAC;EAC9D,MAAM,OAAO,MAAuB;GAClC,IAAI,OAAO,MAAM,UAAU,OAAO;GAClC,IAAI,aAAa,OAAO,OAAO,EAAE,SAAS,GAAG,EAAE,KAAK,IAAI,EAAE;GAC1D,IAAI;IACF,OAAO,KAAK,UAAU,CAAC;GACzB,QAAQ;IACN,OAAO,OAAO,CAAC;GACjB;EACF;EACA,QAAQ,SAAS,GAAG,SAAoB;GACtC,UAAU,MAAM,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG;EACpF;EACA,QAAQ,QAAQ,GAAG,SAAoB;GACrC,UAAU,MAAM,2BAAU,IAAI,KAAK,EAAA,CAAE,YAAY,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG;EACnF;CACF,OAAO;EACL,MAAM,aAAa,CAAC;EACpB,QAAQ,QAAQ;EAChB,QAAQ,OAAO;CACjB;AACF"}
|