@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.
Files changed (258) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/acp/agent.js +155 -167
  3. package/dist/acp/agent.js.map +1 -1
  4. package/dist/acp/event-mapper.js +193 -168
  5. package/dist/acp/event-mapper.js.map +1 -1
  6. package/dist/acp/index.js +60 -49
  7. package/dist/acp/index.js.map +1 -1
  8. package/dist/acp/server.js +31 -30
  9. package/dist/acp/server.js.map +1 -1
  10. package/dist/acp.js +1 -4
  11. package/dist/agents/credential-resolver.js +40 -29
  12. package/dist/agents/credential-resolver.js.map +1 -1
  13. package/dist/agents/custom-provider-source.js +16 -9
  14. package/dist/agents/custom-provider-source.js.map +1 -1
  15. package/dist/agents/instructions.js +27 -36
  16. package/dist/agents/instructions.js.map +1 -1
  17. package/dist/agents/mastracode-gateway.js +355 -428
  18. package/dist/agents/mastracode-gateway.js.map +1 -1
  19. package/dist/agents/memory.js +87 -78
  20. package/dist/agents/memory.js.map +1 -1
  21. package/dist/agents/model.js +114 -119
  22. package/dist/agents/model.js.map +1 -1
  23. package/dist/agents/modes/build.js +12 -13
  24. package/dist/agents/modes/build.js.map +1 -1
  25. package/dist/agents/modes/explore.js +14 -13
  26. package/dist/agents/modes/explore.js.map +1 -1
  27. package/dist/agents/modes/plan.js +14 -15
  28. package/dist/agents/modes/plan.js.map +1 -1
  29. package/dist/agents/prompts/agent-instructions.js +78 -69
  30. package/dist/agents/prompts/agent-instructions.js.map +1 -1
  31. package/dist/agents/prompts/build.js +19 -16
  32. package/dist/agents/prompts/build.js.map +1 -1
  33. package/dist/agents/prompts/fast.js +8 -4
  34. package/dist/agents/prompts/fast.js.map +1 -1
  35. package/dist/agents/prompts/index.js +48 -47
  36. package/dist/agents/prompts/index.js.map +1 -1
  37. package/dist/agents/prompts/model.js +6 -5
  38. package/dist/agents/prompts/model.js.map +1 -1
  39. package/dist/agents/prompts/plan.js +20 -16
  40. package/dist/agents/prompts/plan.js.map +1 -1
  41. package/dist/agents/prompts/tool-guidance.js +77 -109
  42. package/dist/agents/prompts/tool-guidance.js.map +1 -1
  43. package/dist/agents/sandbox-filesystem.js +245 -259
  44. package/dist/agents/sandbox-filesystem.js.map +1 -1
  45. package/dist/agents/sandbox-reattach.js +9 -11
  46. package/dist/agents/sandbox-reattach.js.map +1 -1
  47. package/dist/agents/thread-caveman-state.js +92 -81
  48. package/dist/agents/thread-caveman-state.js.map +1 -1
  49. package/dist/agents/tool-availability.js +62 -80
  50. package/dist/agents/tool-availability.js.map +1 -1
  51. package/dist/agents/tools.js +99 -139
  52. package/dist/agents/tools.js.map +1 -1
  53. package/dist/agents/workspace.js +232 -225
  54. package/dist/agents/workspace.js.map +1 -1
  55. package/dist/analytics.js +139 -128
  56. package/dist/analytics.js.map +1 -1
  57. package/dist/auth/authorization-input.js +39 -25
  58. package/dist/auth/authorization-input.js.map +1 -1
  59. package/dist/auth/device-code.js +112 -80
  60. package/dist/auth/device-code.js.map +1 -1
  61. package/dist/auth/index.js +2 -9
  62. package/dist/auth/pkce.js +27 -16
  63. package/dist/auth/pkce.js.map +1 -1
  64. package/dist/auth/providers/anthropic.js +107 -93
  65. package/dist/auth/providers/anthropic.js.map +1 -1
  66. package/dist/auth/providers/github-copilot.js +304 -293
  67. package/dist/auth/providers/github-copilot.js.map +1 -1
  68. package/dist/auth/providers/openai-codex.js +442 -460
  69. package/dist/auth/providers/openai-codex.js.map +1 -1
  70. package/dist/auth/providers/xai.js +179 -145
  71. package/dist/auth/providers/xai.js.map +1 -1
  72. package/dist/auth/storage.js +182 -175
  73. package/dist/auth/storage.js.map +1 -1
  74. package/dist/auth/types.js +1 -1
  75. package/dist/clipboard/index.js +206 -172
  76. package/dist/clipboard/index.js.map +1 -1
  77. package/dist/constants.js +11 -16
  78. package/dist/constants.js.map +1 -1
  79. package/dist/error-classification.js +19 -11
  80. package/dist/error-classification.js.map +1 -1
  81. package/dist/evals/context-builder.js +145 -104
  82. package/dist/evals/context-builder.js.map +1 -1
  83. package/dist/evals/index.js +4 -7
  84. package/dist/evals/scorers/classify-command.js +62 -41
  85. package/dist/evals/scorers/classify-command.js.map +1 -1
  86. package/dist/evals/scorers/efficiency.js +239 -181
  87. package/dist/evals/scorers/efficiency.js.map +1 -1
  88. package/dist/evals/scorers/extract-tools.js +51 -47
  89. package/dist/evals/scorers/extract-tools.js.map +1 -1
  90. package/dist/evals/scorers/index.js +1 -5
  91. package/dist/evals/scorers/outcome.js +321 -212
  92. package/dist/evals/scorers/outcome.js.map +1 -1
  93. package/dist/goal-manager.js +266 -261
  94. package/dist/goal-manager.js.map +1 -1
  95. package/dist/goal-signal.js +14 -13
  96. package/dist/goal-signal.js.map +1 -1
  97. package/dist/headless/cli.js +153 -154
  98. package/dist/headless/cli.js.map +1 -1
  99. package/dist/headless/flags.js +180 -178
  100. package/dist/headless/flags.js.map +1 -1
  101. package/dist/headless/format.js +72 -71
  102. package/dist/headless/format.js.map +1 -1
  103. package/dist/headless/index.js +5 -31
  104. package/dist/headless/policy.js +35 -31
  105. package/dist/headless/policy.js.map +1 -1
  106. package/dist/headless/run-mc.js +332 -334
  107. package/dist/headless/run-mc.js.map +1 -1
  108. package/dist/headless/types.js +16 -7
  109. package/dist/headless/types.js.map +1 -1
  110. package/dist/hooks/config.js +56 -61
  111. package/dist/hooks/config.js.map +1 -1
  112. package/dist/hooks/executor.js +118 -116
  113. package/dist/hooks/executor.js.map +1 -1
  114. package/dist/hooks/index.js +4 -15
  115. package/dist/hooks/manager.js +221 -280
  116. package/dist/hooks/manager.js.map +1 -1
  117. package/dist/hooks/types.js +5 -4
  118. package/dist/hooks/types.js.map +1 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +632 -712
  121. package/dist/index.js.map +1 -1
  122. package/dist/ipc/ipc-reporter.js +19 -22
  123. package/dist/ipc/ipc-reporter.js.map +1 -1
  124. package/dist/lsp/client.js +248 -306
  125. package/dist/lsp/client.js.map +1 -1
  126. package/dist/lsp/index.js +1 -6
  127. package/dist/lsp/language.js +39 -43
  128. package/dist/lsp/language.js.map +1 -1
  129. package/dist/lsp/manager.js +78 -93
  130. package/dist/lsp/manager.js.map +1 -1
  131. package/dist/lsp/server.js +151 -120
  132. package/dist/lsp/server.js.map +1 -1
  133. package/dist/lsp/workspace.js +50 -47
  134. package/dist/lsp/workspace.js.map +1 -1
  135. package/dist/mcp/config.js +210 -199
  136. package/dist/mcp/config.js.map +1 -1
  137. package/dist/mcp/index.js +2 -9
  138. package/dist/mcp/manager.js +482 -475
  139. package/dist/mcp/manager.js.map +1 -1
  140. package/dist/mcp/types.js +1 -1
  141. package/dist/onboarding/custom-packs.js +14 -17
  142. package/dist/onboarding/custom-packs.js.map +1 -1
  143. package/dist/onboarding/custom-providers.js +22 -20
  144. package/dist/onboarding/custom-providers.js.map +1 -1
  145. package/dist/onboarding/index.d.ts +1 -1
  146. package/dist/onboarding/index.d.ts.map +1 -1
  147. package/dist/onboarding/index.js +3 -21
  148. package/dist/onboarding/om-settings.d.ts +5 -0
  149. package/dist/onboarding/om-settings.d.ts.map +1 -1
  150. package/dist/onboarding/om-settings.js +41 -20
  151. package/dist/onboarding/om-settings.js.map +1 -1
  152. package/dist/onboarding/packs.d.ts +4 -6
  153. package/dist/onboarding/packs.d.ts.map +1 -1
  154. package/dist/onboarding/packs.js +154 -105
  155. package/dist/onboarding/packs.js.map +1 -1
  156. package/dist/onboarding/settings.js +575 -517
  157. package/dist/onboarding/settings.js.map +1 -1
  158. package/dist/permissions.js +112 -99
  159. package/dist/permissions.js.map +1 -1
  160. package/dist/plugin.js +21 -23
  161. package/dist/plugin.js.map +1 -1
  162. package/dist/plugins/dependencies.js +64 -87
  163. package/dist/plugins/dependencies.js.map +1 -1
  164. package/dist/plugins/install.js +159 -169
  165. package/dist/plugins/install.js.map +1 -1
  166. package/dist/plugins/loader.js +170 -185
  167. package/dist/plugins/loader.js.map +1 -1
  168. package/dist/plugins/manager.js +374 -380
  169. package/dist/plugins/manager.js.map +1 -1
  170. package/dist/plugins/manifest.js +38 -63
  171. package/dist/plugins/manifest.js.map +1 -1
  172. package/dist/plugins/package-link.js +48 -64
  173. package/dist/plugins/package-link.js.map +1 -1
  174. package/dist/plugins/paths.js +18 -19
  175. package/dist/plugins/paths.js.map +1 -1
  176. package/dist/plugins/registry.js +97 -81
  177. package/dist/plugins/registry.js.map +1 -1
  178. package/dist/plugins/scaffold.js +62 -98
  179. package/dist/plugins/scaffold.js.map +1 -1
  180. package/dist/plugins/types.js +1 -1
  181. package/dist/processors/plan-rejection-abort.js +45 -44
  182. package/dist/processors/plan-rejection-abort.js.map +1 -1
  183. package/dist/providers/amazon-bedrock-gateway.js +134 -125
  184. package/dist/providers/amazon-bedrock-gateway.js.map +1 -1
  185. package/dist/providers/amazon-bedrock.js +68 -47
  186. package/dist/providers/amazon-bedrock.js.map +1 -1
  187. package/dist/providers/claude-max.js +153 -133
  188. package/dist/providers/claude-max.js.map +1 -1
  189. package/dist/providers/github-copilot.js +232 -230
  190. package/dist/providers/github-copilot.js.map +1 -1
  191. package/dist/providers/openai-codex.js +271 -260
  192. package/dist/providers/openai-codex.js.map +1 -1
  193. package/dist/providers/xai.js +57 -50
  194. package/dist/providers/xai.js.map +1 -1
  195. package/dist/schema.js +91 -89
  196. package/dist/schema.js.map +1 -1
  197. package/dist/theme-palette.js +18 -14
  198. package/dist/theme-palette.js.map +1 -1
  199. package/dist/tool-names.js +46 -37
  200. package/dist/tool-names.js.map +1 -1
  201. package/dist/tools/index.js +2 -8
  202. package/dist/tools/request-sandbox-access.js +71 -80
  203. package/dist/tools/request-sandbox-access.js.map +1 -1
  204. package/dist/tools/utils.js +26 -16
  205. package/dist/tools/utils.js.map +1 -1
  206. package/dist/tools/web-search.js +51 -55
  207. package/dist/tools/web-search.js.map +1 -1
  208. package/dist/utils/binaries.js +65 -61
  209. package/dist/utils/binaries.js.map +1 -1
  210. package/dist/utils/debug-log.js +51 -47
  211. package/dist/utils/debug-log.js.map +1 -1
  212. package/dist/utils/errors.js +157 -192
  213. package/dist/utils/errors.js.map +1 -1
  214. package/dist/utils/gateway-sync.js +49 -37
  215. package/dist/utils/gateway-sync.js.map +1 -1
  216. package/dist/utils/path-security.js +7 -6
  217. package/dist/utils/path-security.js.map +1 -1
  218. package/dist/utils/plan-diff.js +58 -39
  219. package/dist/utils/plan-diff.js.map +1 -1
  220. package/dist/utils/plans.js +92 -74
  221. package/dist/utils/plans.js.map +1 -1
  222. package/dist/utils/project.js +318 -256
  223. package/dist/utils/project.js.map +1 -1
  224. package/dist/utils/signals-pubsub.js +117 -99
  225. package/dist/utils/signals-pubsub.js.map +1 -1
  226. package/dist/utils/slash-command-loader.js +118 -154
  227. package/dist/utils/slash-command-loader.js.map +1 -1
  228. package/dist/utils/slash-command-processor.js +92 -83
  229. package/dist/utils/slash-command-processor.js.map +1 -1
  230. package/dist/utils/stdin-pipe.js +87 -63
  231. package/dist/utils/stdin-pipe.js.map +1 -1
  232. package/dist/utils/storage-factory.js +104 -84
  233. package/dist/utils/storage-factory.js.map +1 -1
  234. package/dist/utils/storage-maintenance.js +249 -211
  235. package/dist/utils/storage-maintenance.js.map +1 -1
  236. package/dist/utils/thread-lock.js +96 -92
  237. package/dist/utils/thread-lock.js.map +1 -1
  238. package/dist/utils/token-estimator.js +12 -12
  239. package/dist/utils/token-estimator.js.map +1 -1
  240. package/dist/utils/update-check.d.ts +1 -1
  241. package/dist/utils/update-check.js +341 -259
  242. package/dist/utils/update-check.js.map +1 -1
  243. package/dist/voice/stt-registry.js +131 -113
  244. package/dist/voice/stt-registry.js.map +1 -1
  245. package/package.json +12 -12
  246. package/dist/acp.js.map +0 -1
  247. package/dist/auth/index.js.map +0 -1
  248. package/dist/auth/types.js.map +0 -1
  249. package/dist/evals/index.js.map +0 -1
  250. package/dist/evals/scorers/index.js.map +0 -1
  251. package/dist/headless/index.js.map +0 -1
  252. package/dist/hooks/index.js.map +0 -1
  253. package/dist/lsp/index.js.map +0 -1
  254. package/dist/mcp/index.js.map +0 -1
  255. package/dist/mcp/types.js.map +0 -1
  256. package/dist/onboarding/index.js.map +0 -1
  257. package/dist/plugins/types.js.map +0 -1
  258. package/dist/tools/index.js.map +0 -1
@@ -1,74 +1,78 @@
1
- import { execFile, execFileSync } from "node:child_process";
1
+ import { execFile, execFileSync } from "child_process";
2
+ //#region src/utils/binaries.ts
2
3
  const COMMON_BINARIES = [
3
- "python",
4
- "python3",
5
- "node",
6
- "npm",
7
- "pnpm",
8
- "yarn",
9
- "bun",
10
- "git",
11
- "rg",
12
- "fd",
13
- "fdfind",
14
- "curl",
15
- "wget",
16
- "docker",
17
- "make",
18
- "gcc",
19
- "g++",
20
- "go",
21
- "rustc",
22
- "cargo"
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
- const command = process.platform === "win32" ? "where" : "which";
28
- try {
29
- const output = execFileSync(command, [name], { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }).trim();
30
- return output.split(/\r?\n/)[0] || null;
31
- } catch {
32
- return null;
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
- const command = process.platform === "win32" ? "where" : "which";
37
- return new Promise((resolve) => {
38
- execFile(command, [name], { encoding: "utf-8" }, (err, stdout) => {
39
- if (err) {
40
- resolve(null);
41
- return;
42
- }
43
- resolve(stdout.trim().split(/\r?\n/)[0] || null);
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
- cachedBinaries ??= COMMON_BINARIES.map((name) => ({
49
- name,
50
- path: resolveBinary(name)
51
- }));
52
- return cachedBinaries;
55
+ cachedBinaries ??= COMMON_BINARIES.map((name) => ({
56
+ name,
57
+ path: resolveBinary(name)
58
+ }));
59
+ return cachedBinaries;
53
60
  }
54
61
  async function detectCommonBinariesAsync() {
55
- if (cachedBinaries) return cachedBinaries;
56
- if (inFlightPromise) return inFlightPromise;
57
- inFlightPromise = Promise.all(
58
- COMMON_BINARIES.map(async (name) => ({
59
- name,
60
- path: await resolveBinaryAsync(name)
61
- }))
62
- );
63
- try {
64
- cachedBinaries = await inFlightPromise;
65
- return cachedBinaries;
66
- } finally {
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
- export {
71
- detectCommonBinaries,
72
- detectCommonBinariesAsync
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":"AAAA,SAAS,UAAU,oBAAoB;AAOvC,MAAM,kBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAI,iBAAwC;AAC5C,IAAI,kBAAkD;AAEtD,SAAS,cAAc,MAA6B;AAClD,QAAM,UAAU,QAAQ,aAAa,UAAU,UAAU;AACzD,MAAI;AACF,UAAM,SAAS,aAAa,SAAS,CAAC,IAAI,GAAG,EAAE,UAAU,SAAS,OAAO,CAAC,QAAQ,QAAQ,MAAM,EAAE,CAAC,EAAE,KAAK;AAC1G,WAAO,OAAO,MAAM,OAAO,EAAE,CAAC,KAAK;AAAA,EACrC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,mBAAmB,MAAsC;AAChE,QAAM,UAAU,QAAQ,aAAa,UAAU,UAAU;AACzD,SAAO,IAAI,QAAQ,aAAW;AAC5B,aAAS,SAAS,CAAC,IAAI,GAAG,EAAE,UAAU,QAAQ,GAAG,CAAC,KAAK,WAAW;AAChE,UAAI,KAAK;AACP,gBAAQ,IAAI;AACZ;AAAA,MACF;AACA,cAAQ,OAAO,KAAK,EAAE,MAAM,OAAO,EAAE,CAAC,KAAK,IAAI;AAAA,IACjD,CAAC;AAAA,EACH,CAAC;AACH;AAEO,SAAS,uBAAuC;AACrD,qBAAmB,gBAAgB,IAAI,WAAS;AAAA,IAC9C;AAAA,IACA,MAAM,cAAc,IAAI;AAAA,EAC1B,EAAE;AAEF,SAAO;AACT;AAEA,eAAsB,4BAAqD;AACzE,MAAI,eAAgB,QAAO;AAC3B,MAAI,gBAAiB,QAAO;AAE5B,oBAAkB,QAAQ;AAAA,IACxB,gBAAgB,IAAI,OAAM,UAAS;AAAA,MACjC;AAAA,MACA,MAAM,MAAM,mBAAmB,IAAI;AAAA,IACrC,EAAE;AAAA,EACJ;AAEA,MAAI;AACF,qBAAiB,MAAM;AACvB,WAAO;AAAA,EACT,UAAE;AACA,sBAAkB;AAAA,EACpB;AACF;","names":[]}
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"}
@@ -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
- try {
8
- const stat = fs.statSync(logFile);
9
- if (stat.size > MAX_LOG_SIZE) {
10
- const buf = Buffer.alloc(KEEP_SIZE);
11
- const fd = fs.openSync(logFile, "r");
12
- fs.readSync(fd, buf, 0, KEEP_SIZE, stat.size - KEEP_SIZE);
13
- fs.closeSync(fd);
14
- const firstNewline = buf.indexOf(10);
15
- const trimmed = firstNewline >= 0 ? buf.subarray(firstNewline + 1) : buf;
16
- fs.writeFileSync(logFile, trimmed);
17
- }
18
- } catch {
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
- const debugEnabled = ["true", "1"].includes(process.env.MASTRA_DEBUG ?? "");
23
- if (debugEnabled) {
24
- const logFile = path.join(getAppDataDir(), "debug.log");
25
- truncateLogFile(logFile);
26
- const logStream = fs.createWriteStream(logFile, { flags: "a" });
27
- const fmt = (a) => {
28
- if (typeof a === "string") return a;
29
- if (a instanceof Error) return a.stack ?? `${a.name}: ${a.message}`;
30
- try {
31
- return JSON.stringify(a);
32
- } catch {
33
- return String(a);
34
- }
35
- };
36
- console.error = (...args) => {
37
- logStream.write(`[ERROR] ${(/* @__PURE__ */ new Date()).toISOString()} ${args.map(fmt).join(" ")}
38
- `);
39
- };
40
- console.warn = (...args) => {
41
- logStream.write(`[WARN] ${(/* @__PURE__ */ new Date()).toISOString()} ${args.map(fmt).join(" ")}
42
- `);
43
- };
44
- } else {
45
- const noop = () => {
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
- export {
52
- setupDebugLogging,
53
- truncateLogFile
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":"AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AAEtB,SAAS,qBAAqB;AAE9B,MAAM,eAAe,IAAI,OAAO;AAChC,MAAM,YAAY,IAAI,OAAO;AAMtB,SAAS,gBAAgB,SAAuB;AACrD,MAAI;AACF,UAAM,OAAO,GAAG,SAAS,OAAO;AAChC,QAAI,KAAK,OAAO,cAAc;AAC5B,YAAM,MAAM,OAAO,MAAM,SAAS;AAClC,YAAM,KAAK,GAAG,SAAS,SAAS,GAAG;AACnC,SAAG,SAAS,IAAI,KAAK,GAAG,WAAW,KAAK,OAAO,SAAS;AACxD,SAAG,UAAU,EAAE;AACf,YAAM,eAAe,IAAI,QAAQ,EAAE;AACnC,YAAM,UAAU,gBAAgB,IAAI,IAAI,SAAS,eAAe,CAAC,IAAI;AACrE,SAAG,cAAc,SAAS,OAAO;AAAA,IACnC;AAAA,EACF,QAAQ;AAAA,EAER;AACF;AAOO,SAAS,oBAA0B;AACxC,QAAM,eAAe,CAAC,QAAQ,GAAG,EAAE,SAAS,QAAQ,IAAI,gBAAgB,EAAE;AAE1E,MAAI,cAAc;AAChB,UAAM,UAAU,KAAK,KAAK,cAAc,GAAG,WAAW;AACtD,oBAAgB,OAAO;AAEvB,UAAM,YAAY,GAAG,kBAAkB,SAAS,EAAE,OAAO,IAAI,CAAC;AAC9D,UAAM,MAAM,CAAC,MAAuB;AAClC,UAAI,OAAO,MAAM,SAAU,QAAO;AAClC,UAAI,aAAa,MAAO,QAAO,EAAE,SAAS,GAAG,EAAE,IAAI,KAAK,EAAE,OAAO;AACjE,UAAI;AACF,eAAO,KAAK,UAAU,CAAC;AAAA,MACzB,QAAQ;AACN,eAAO,OAAO,CAAC;AAAA,MACjB;AAAA,IACF;AACA,YAAQ,QAAQ,IAAI,SAAoB;AACtC,gBAAU,MAAM,YAAW,oBAAI,KAAK,GAAE,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,CAAI;AAAA,IACpF;AACA,YAAQ,OAAO,IAAI,SAAoB;AACrC,gBAAU,MAAM,WAAU,oBAAI,KAAK,GAAE,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,CAAC;AAAA,CAAI;AAAA,IACnF;AAAA,EACF,OAAO;AACL,UAAM,OAAO,MAAM;AAAA,IAAC;AACpB,YAAQ,QAAQ;AAChB,YAAQ,OAAO;AAAA,EACjB;AACF;","names":[]}
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"}