crosspad-mcp-server 6.0.0 → 8.1.1

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 (58) hide show
  1. package/README.md +109 -44
  2. package/dist/config.d.ts +2 -2
  3. package/dist/config.js +42 -8
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.d.ts +14 -1
  6. package/dist/index.js +956 -312
  7. package/dist/index.js.map +1 -1
  8. package/dist/tools/app-manager.d.ts +13 -5
  9. package/dist/tools/app-manager.js +69 -46
  10. package/dist/tools/app-manager.js.map +1 -1
  11. package/dist/tools/architecture.js +13 -4
  12. package/dist/tools/architecture.js.map +1 -1
  13. package/dist/tools/build-check.d.ts +1 -1
  14. package/dist/tools/build-check.js +19 -9
  15. package/dist/tools/build-check.js.map +1 -1
  16. package/dist/tools/build.d.ts +95 -4
  17. package/dist/tools/build.js +312 -15
  18. package/dist/tools/build.js.map +1 -1
  19. package/dist/tools/diff-core.d.ts +5 -1
  20. package/dist/tools/diff-core.js +11 -6
  21. package/dist/tools/diff-core.js.map +1 -1
  22. package/dist/tools/idf-build.d.ts +1 -1
  23. package/dist/tools/idf-build.js +5 -5
  24. package/dist/tools/idf-build.js.map +1 -1
  25. package/dist/tools/idf-flash.d.ts +2 -2
  26. package/dist/tools/idf-flash.js +12 -11
  27. package/dist/tools/idf-flash.js.map +1 -1
  28. package/dist/tools/idf-monitor.d.ts +1 -1
  29. package/dist/tools/idf-monitor.js +57 -3
  30. package/dist/tools/idf-monitor.js.map +1 -1
  31. package/dist/tools/log.d.ts +2 -2
  32. package/dist/tools/log.js +6 -5
  33. package/dist/tools/log.js.map +1 -1
  34. package/dist/tools/repo-actions.js +88 -75
  35. package/dist/tools/repo-actions.js.map +1 -1
  36. package/dist/tools/repos.js +14 -10
  37. package/dist/tools/repos.js.map +1 -1
  38. package/dist/tools/screenshot.js +42 -7
  39. package/dist/tools/screenshot.js.map +1 -1
  40. package/dist/tools/settings.js +11 -1
  41. package/dist/tools/settings.js.map +1 -1
  42. package/dist/tools/symbols.js +13 -8
  43. package/dist/tools/symbols.js.map +1 -1
  44. package/dist/tools/test.d.ts +1 -9
  45. package/dist/tools/test.js +11 -92
  46. package/dist/tools/test.js.map +1 -1
  47. package/dist/utils/exec.d.ts +17 -5
  48. package/dist/utils/exec.js +73 -27
  49. package/dist/utils/exec.js.map +1 -1
  50. package/dist/utils/git.d.ts +9 -0
  51. package/dist/utils/git.js +61 -1
  52. package/dist/utils/git.js.map +1 -1
  53. package/dist/utils/remote-client.js +32 -14
  54. package/dist/utils/remote-client.js.map +1 -1
  55. package/package.json +4 -1
  56. package/dist/tools/scaffold.d.ts +0 -15
  57. package/dist/tools/scaffold.js +0 -192
  58. package/dist/tools/scaffold.js.map +0 -1
@@ -1,9 +1,20 @@
1
1
  import { execSync, spawn } from "child_process";
2
+ import fs from "fs";
2
3
  import { VCVARSALL, IS_WINDOWS, IDF_PATH } from "../config.js";
3
- // ═══════════════════════════════════════════════════════════════════════
4
- // MSVC ENVIRONMENT (Windows-only)
5
- // ═══════════════════════════════════════════════════════════════════════
6
4
  let cachedMsvcEnv = null;
5
+ function statMtime(p) {
6
+ try {
7
+ return fs.statSync(p).mtimeMs;
8
+ }
9
+ catch {
10
+ return 0;
11
+ }
12
+ }
13
+ /** @internal exported for testing — drop both env caches. */
14
+ export function _resetEnvCaches() {
15
+ cachedMsvcEnv = null;
16
+ cachedIdfEnv = null;
17
+ }
7
18
  /**
8
19
  * Capture MSVC environment by running vcvarsall.bat and parsing `set` output.
9
20
  * Cached for the lifetime of the server process. Windows-only.
@@ -12,8 +23,9 @@ export function getMsvcEnv() {
12
23
  if (!IS_WINDOWS) {
13
24
  return { ...process.env };
14
25
  }
15
- if (cachedMsvcEnv)
16
- return cachedMsvcEnv;
26
+ const mtime = statMtime(VCVARSALL);
27
+ if (cachedMsvcEnv && cachedMsvcEnv.mtimeMs === mtime)
28
+ return cachedMsvcEnv.data;
17
29
  const cmd = `"${VCVARSALL}" x64 >nul 2>&1 && set`;
18
30
  const output = execSync(cmd, {
19
31
  shell: "cmd.exe",
@@ -27,7 +39,7 @@ export function getMsvcEnv() {
27
39
  env[line.slice(0, eq)] = line.slice(eq + 1).trimEnd();
28
40
  }
29
41
  }
30
- cachedMsvcEnv = env;
42
+ cachedMsvcEnv = { data: env, mtimeMs: mtime };
31
43
  return env;
32
44
  }
33
45
  // ═══════════════════════════════════════════════════════════════════════
@@ -101,12 +113,12 @@ export function runCommand(cmd, cwd, timeoutMs = 60_000) {
101
113
  // ═══════════════════════════════════════════════════════════════════════
102
114
  /**
103
115
  * Helper: spawn a process and stream stdout/stderr line-by-line via onLine.
104
- * Returns the same ExecResult as the sync variants.
116
+ * Supports argv mode (shell:false + args[]) and AbortSignal-driven cancellation.
105
117
  */
106
- function spawnStreaming(cmd, cwd, env, shell, onLine, timeoutMs) {
118
+ function spawnStreaming(cmd, cwd, env, shell, onLine, timeoutMs, args = [], signal) {
107
119
  return new Promise((resolve) => {
108
120
  const start = Date.now();
109
- const child = spawn(cmd, [], {
121
+ const child = spawn(cmd, args, {
110
122
  cwd,
111
123
  env,
112
124
  shell,
@@ -118,10 +130,23 @@ function spawnStreaming(cmd, cwd, env, shell, onLine, timeoutMs) {
118
130
  let stdoutBuf = "";
119
131
  let stderrBuf = "";
120
132
  let killed = false;
133
+ let cancelled = false;
121
134
  const timer = setTimeout(() => {
122
135
  killed = true;
123
136
  child.kill("SIGTERM");
124
137
  }, timeoutMs);
138
+ const escalateKill = () => {
139
+ child.kill("SIGTERM");
140
+ setTimeout(() => { if (!child.killed)
141
+ child.kill("SIGKILL"); }, 2000);
142
+ };
143
+ const onAbort = () => { cancelled = true; killed = true; escalateKill(); };
144
+ if (signal) {
145
+ if (signal.aborted)
146
+ onAbort();
147
+ else
148
+ signal.addEventListener("abort", onAbort, { once: true });
149
+ }
125
150
  function flushLines(buf, stream) {
126
151
  const parts = buf.split("\n");
127
152
  for (let i = 0; i < parts.length - 1; i++) {
@@ -144,6 +169,8 @@ function spawnStreaming(cmd, cwd, env, shell, onLine, timeoutMs) {
144
169
  });
145
170
  child.on("close", (code) => {
146
171
  clearTimeout(timer);
172
+ if (signal)
173
+ signal.removeEventListener("abort", onAbort);
147
174
  if (stdoutBuf.length > 0)
148
175
  onLine("stdout", stdoutBuf.replace(/\r$/, ""));
149
176
  if (stderrBuf.length > 0)
@@ -151,13 +178,15 @@ function spawnStreaming(cmd, cwd, env, shell, onLine, timeoutMs) {
151
178
  resolve({
152
179
  success: killed ? false : code === 0,
153
180
  stdout: normalizeLineEndings(stdout),
154
- stderr: normalizeLineEndings(stderr),
181
+ stderr: normalizeLineEndings(cancelled ? stderr + "\n[cancelled]" : stderr),
155
182
  exitCode: killed ? -1 : (code ?? 1),
156
183
  durationMs: Date.now() - start,
157
184
  });
158
185
  });
159
186
  child.on("error", (err) => {
160
187
  clearTimeout(timer);
188
+ if (signal)
189
+ signal.removeEventListener("abort", onAbort);
161
190
  resolve({
162
191
  success: false,
163
192
  stdout: normalizeLineEndings(stdout),
@@ -168,18 +197,25 @@ function spawnStreaming(cmd, cwd, env, shell, onLine, timeoutMs) {
168
197
  });
169
198
  });
170
199
  }
200
+ /**
201
+ * Run an arbitrary executable with argv array (no shell). Use for inputs that
202
+ * may contain user-controlled strings — eliminates shell-injection risk.
203
+ */
204
+ export function runArgvStream(cmd, args, cwd, onLine, timeoutMs = 60_000, signal, env) {
205
+ return spawnStreaming(cmd, cwd, env, false, onLine, timeoutMs, args, signal);
206
+ }
171
207
  /**
172
208
  * Run a command with the MSVC environment, streaming output line-by-line.
173
209
  */
174
- export function runWithMsvcStream(cmd, cwd, onLine, timeoutMs = 300_000) {
210
+ export function runWithMsvcStream(cmd, cwd, onLine, timeoutMs = 300_000, signal) {
175
211
  const env = getMsvcEnv();
176
- return spawnStreaming(cmd, cwd, env, "cmd.exe", onLine, timeoutMs);
212
+ return spawnStreaming(cmd, cwd, env, "cmd.exe", onLine, timeoutMs, [], signal);
177
213
  }
178
214
  /**
179
215
  * Run a command in the default shell, streaming output line-by-line.
180
216
  */
181
- export function runCommandStream(cmd, cwd, onLine, timeoutMs = 60_000) {
182
- return spawnStreaming(cmd, cwd, undefined, true, onLine, timeoutMs);
217
+ export function runCommandStream(cmd, cwd, onLine, timeoutMs = 60_000, signal) {
218
+ return spawnStreaming(cmd, cwd, undefined, true, onLine, timeoutMs, [], signal);
183
219
  }
184
220
  // ═══════════════════════════════════════════════════════════════════════
185
221
  // ESP-IDF ENVIRONMENT
@@ -191,10 +227,12 @@ let cachedIdfEnv = null;
191
227
  * - Linux/Mac: sources export.sh and captures env via null-delimited output
192
228
  */
193
229
  export function getIdfEnv() {
194
- if (cachedIdfEnv)
195
- return cachedIdfEnv;
230
+ const exportPath = IS_WINDOWS ? `${IDF_PATH}\\export.bat` : `${IDF_PATH}/export.sh`;
231
+ const mtime = statMtime(exportPath);
232
+ if (cachedIdfEnv && cachedIdfEnv.mtimeMs === mtime)
233
+ return cachedIdfEnv.data;
196
234
  if (IS_WINDOWS) {
197
- const exportBat = `${IDF_PATH}\\export.bat`;
235
+ const exportBat = exportPath;
198
236
  const cmd = `set MSYSTEM=&& set PYTHONIOENCODING=utf-8&& call "${exportBat}" >nul 2>&1 && set`;
199
237
  const output = execSync(cmd, {
200
238
  shell: "cmd.exe",
@@ -208,11 +246,11 @@ export function getIdfEnv() {
208
246
  env[line.slice(0, eq)] = line.slice(eq + 1).trimEnd();
209
247
  }
210
248
  }
211
- cachedIdfEnv = env;
249
+ cachedIdfEnv = { data: env, mtimeMs: mtime };
212
250
  return env;
213
251
  }
214
252
  // Linux/Mac: source export.sh and capture environment
215
- const exportSh = `${IDF_PATH}/export.sh`;
253
+ const exportSh = exportPath;
216
254
  const cmd = `bash -c '. "${exportSh}" >/dev/null 2>&1 && env -0'`;
217
255
  const output = execSync(cmd, {
218
256
  encoding: "utf-8",
@@ -228,7 +266,7 @@ export function getIdfEnv() {
228
266
  env[entry.slice(0, eq)] = entry.slice(eq + 1);
229
267
  }
230
268
  }
231
- cachedIdfEnv = env;
269
+ cachedIdfEnv = { data: env, mtimeMs: mtime };
232
270
  return env;
233
271
  }
234
272
  const IDF_SHELL = IS_WINDOWS ? "cmd.exe" : "/bin/bash";
@@ -268,9 +306,17 @@ export function runWithIdf(cmd, cwd, timeoutMs = 600_000) {
268
306
  /**
269
307
  * Run a command with the ESP-IDF environment, streaming output line-by-line.
270
308
  */
271
- export function runWithIdfStream(cmd, cwd, onLine, timeoutMs = 600_000) {
309
+ export function runWithIdfStream(cmd, cwd, onLine, timeoutMs = 600_000, signal) {
310
+ const env = getIdfEnv();
311
+ return spawnStreaming(cmd, cwd, env, IDF_SHELL, onLine, timeoutMs, [], signal);
312
+ }
313
+ /**
314
+ * Run with IDF env in argv mode (no shell) — use for commands taking
315
+ * user-controlled args (port path, firmware path).
316
+ */
317
+ export function runIdfArgvStream(cmd, args, cwd, onLine, timeoutMs = 600_000, signal) {
272
318
  const env = getIdfEnv();
273
- return spawnStreaming(cmd, cwd, env, IDF_SHELL, onLine, timeoutMs);
319
+ return spawnStreaming(cmd, cwd, env, false, onLine, timeoutMs, args, signal);
274
320
  }
275
321
  // ═══════════════════════════════════════════════════════════════════════
276
322
  // PLATFORM-AGNOSTIC BUILD WRAPPERS
@@ -289,11 +335,11 @@ export function runBuild(cmd, cwd, timeoutMs = 300_000) {
289
335
  * Run a build command with streaming output, platform-aware.
290
336
  * Windows: MSVC env + cmd.exe shell. Unix: default shell.
291
337
  */
292
- export function runBuildStream(cmd, cwd, onLine, timeoutMs = 300_000) {
338
+ export function runBuildStream(cmd, cwd, onLine, timeoutMs = 300_000, signal) {
293
339
  if (IS_WINDOWS) {
294
- return runWithMsvcStream(cmd, cwd, onLine, timeoutMs);
340
+ return runWithMsvcStream(cmd, cwd, onLine, timeoutMs, signal);
295
341
  }
296
- return runCommandStream(cmd, cwd, onLine, timeoutMs);
342
+ return runCommandStream(cmd, cwd, onLine, timeoutMs, signal);
297
343
  }
298
344
  /**
299
345
  * Run a command with the ESP-IDF environment, platform-aware.
@@ -304,8 +350,8 @@ export function runIdf(cmd, cwd, timeoutMs = 600_000) {
304
350
  /**
305
351
  * Run a command with the ESP-IDF environment, streaming, platform-aware.
306
352
  */
307
- export function runIdfStream(cmd, cwd, onLine, timeoutMs = 600_000) {
308
- return runWithIdfStream(cmd, cwd, onLine, timeoutMs);
353
+ export function runIdfStream(cmd, cwd, onLine, timeoutMs = 600_000, signal) {
354
+ return runWithIdfStream(cmd, cwd, onLine, timeoutMs, signal);
309
355
  }
310
356
  /** Strip \r from Windows line endings */
311
357
  function normalizeLineEndings(s) {
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/utils/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/utils/exec.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,14 @@ export interface RepoStatus {
6
6
  dirtyFiles: string[];
7
7
  }
8
8
  export declare function getRepoStatus(name: string, repoPath: string): RepoStatus;
9
+ /**
10
+ * Get the pinned commit hash of a submodule.
11
+ *
12
+ * `submodule` may be either a canonical name (e.g. "crosspad-core") or a
13
+ * relative path (e.g. "lib/crosspad-core"). Names are resolved via .gitmodules.
14
+ */
9
15
  export declare function getSubmodulePin(repoPath: string, submodule: string): string | null;
10
16
  export declare function getHead(repoPath: string): string | null;
17
+ export declare function listSubmodules(repoPath: string): Record<string, string>;
18
+ /** Resolve a submodule's path within a parent repo by canonical name. Null if not present. */
19
+ export declare function findSubmodulePath(repoPath: string, submoduleName: string): string | null;
package/dist/utils/git.js CHANGED
@@ -1,3 +1,5 @@
1
+ import fs from "fs";
2
+ import path from "path";
1
3
  import { runCommand } from "./exec.js";
2
4
  export function getRepoStatus(name, repoPath) {
3
5
  const branch = runCommand("git branch --show-current", repoPath);
@@ -14,8 +16,25 @@ export function getRepoStatus(name, repoPath) {
14
16
  .filter((l) => l.length > 0),
15
17
  };
16
18
  }
19
+ /**
20
+ * Get the pinned commit hash of a submodule.
21
+ *
22
+ * `submodule` may be either a canonical name (e.g. "crosspad-core") or a
23
+ * relative path (e.g. "lib/crosspad-core"). Names are resolved via .gitmodules.
24
+ */
17
25
  export function getSubmodulePin(repoPath, submodule) {
18
- const result = runCommand(`git submodule status ${submodule}`, repoPath);
26
+ // Resolve name path if needed
27
+ let subPath = submodule;
28
+ const subs = listSubmodules(repoPath);
29
+ if (!subs[submodule] && Object.values(subs).includes(submodule)) {
30
+ // already a path, keep as-is
31
+ }
32
+ else {
33
+ const resolved = findSubmodulePath(repoPath, submodule);
34
+ if (resolved)
35
+ subPath = resolved;
36
+ }
37
+ const result = runCommand(`git submodule status "${subPath}"`, repoPath);
19
38
  if (!result.success)
20
39
  return null;
21
40
  // Output format: " abc1234 submodule-name (desc)" or "+abc1234 ..."
@@ -26,4 +45,45 @@ export function getHead(repoPath) {
26
45
  const result = runCommand("git rev-parse HEAD", repoPath);
27
46
  return result.success ? result.stdout.trim() : null;
28
47
  }
48
+ /**
49
+ * Parse `.gitmodules` and return map of submodule name → path within parent.
50
+ * Returns empty map if no submodules or `.gitmodules` missing.
51
+ *
52
+ * Cached per repoPath since `.gitmodules` rarely changes during server lifetime.
53
+ */
54
+ const submoduleMapCache = new Map();
55
+ export function listSubmodules(repoPath) {
56
+ const cached = submoduleMapCache.get(repoPath);
57
+ if (cached)
58
+ return cached;
59
+ const gitmodules = path.join(repoPath, ".gitmodules");
60
+ if (!fs.existsSync(gitmodules)) {
61
+ submoduleMapCache.set(repoPath, {});
62
+ return {};
63
+ }
64
+ // git config returns lines like: submodule.<name>.path <relative-path>
65
+ const result = runCommand(`git config -f .gitmodules --get-regexp "^submodule\\..*\\.path$"`, repoPath);
66
+ const map = {};
67
+ if (result.success) {
68
+ for (const line of result.stdout.split("\n")) {
69
+ const m = line.match(/^submodule\.(.+)\.path\s+(.+)$/);
70
+ if (m)
71
+ map[m[1]] = m[2].trim();
72
+ }
73
+ }
74
+ submoduleMapCache.set(repoPath, map);
75
+ return map;
76
+ }
77
+ /** Resolve a submodule's path within a parent repo by canonical name. Null if not present. */
78
+ export function findSubmodulePath(repoPath, submoduleName) {
79
+ const subs = listSubmodules(repoPath);
80
+ if (subs[submoduleName])
81
+ return subs[submoduleName];
82
+ // Fallback: search by basename match (e.g. "crosspad-core" matching "lib/crosspad-core")
83
+ for (const [, p] of Object.entries(subs)) {
84
+ if (path.basename(p) === submoduleName)
85
+ return p;
86
+ }
87
+ return null;
88
+ }
29
89
  //# sourceMappingURL=git.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAUvC,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAE9D,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;QACvB,UAAU,EAAE,MAAM,CAAC,MAAM;aACtB,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,SAAiB;IAEjB,MAAM,MAAM,GAAG,UAAU,CACvB,wBAAwB,SAAS,EAAE,EACnC,QAAQ,CACT,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACjC,oEAAoE;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,QAAgB;IACtC,MAAM,MAAM,GAAG,UAAU,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,36 @@
3
3
  * Protocol: newline-delimited JSON over TCP on localhost:19840.
4
4
  */
5
5
  import { Socket } from "net";
6
- const REMOTE_PORT = 19840;
7
- const REMOTE_HOST = "127.0.0.1";
6
+ import { z } from "zod";
7
+ /**
8
+ * Minimal contract enforced on every TCP simulator response.
9
+ * Body must be a JSON object with `ok` boolean. Anything else (array, scalar,
10
+ * missing `ok`) is treated as a malformed response — caller gets a synthetic
11
+ * `{ok:false, error:"..."}` so downstream code can rely on the shape.
12
+ */
13
+ const RemoteEnvelopeSchema = z.object({ ok: z.boolean() }).passthrough();
14
+ function parseRemoteResponse(raw) {
15
+ let parsed;
16
+ try {
17
+ parsed = JSON.parse(raw);
18
+ }
19
+ catch {
20
+ return { ok: false, error: "invalid JSON response", raw };
21
+ }
22
+ const result = RemoteEnvelopeSchema.safeParse(parsed);
23
+ if (!result.success) {
24
+ return { ok: false, error: "malformed response (expected object with `ok` boolean)", raw };
25
+ }
26
+ return result.data;
27
+ }
28
+ const REMOTE_PORT = (() => {
29
+ const raw = process.env.CROSSPAD_REMOTE_PORT;
30
+ if (!raw)
31
+ return 19840;
32
+ const n = parseInt(raw, 10);
33
+ return Number.isFinite(n) && n > 0 && n < 65536 ? n : 19840;
34
+ })();
35
+ const REMOTE_HOST = process.env.CROSSPAD_REMOTE_HOST || "127.0.0.1";
8
36
  const CONNECT_TIMEOUT = 3000;
9
37
  const RESPONSE_TIMEOUT = 15000;
10
38
  const MAX_RETRIES = 3;
@@ -62,12 +90,7 @@ function sendRemoteCommandOnce(command) {
62
90
  const line = buffer.slice(0, nlIdx);
63
91
  resolved = true;
64
92
  socket.destroy();
65
- try {
66
- resolve(JSON.parse(line));
67
- }
68
- catch {
69
- resolve({ ok: false, error: "invalid JSON response", raw: line });
70
- }
93
+ resolve(parseRemoteResponse(line));
71
94
  }
72
95
  });
73
96
  socket.on("timeout", () => {
@@ -87,12 +110,7 @@ function sendRemoteCommandOnce(command) {
87
110
  if (!resolved) {
88
111
  resolved = true;
89
112
  if (buffer.length > 0) {
90
- try {
91
- resolve(JSON.parse(buffer));
92
- }
93
- catch {
94
- resolve({ ok: false, error: "incomplete response", raw: buffer });
95
- }
113
+ resolve(parseRemoteResponse(buffer));
96
114
  }
97
115
  else {
98
116
  reject(new Error("Connection closed without response"));
@@ -1 +1 @@
1
- {"version":3,"file":"remote-client.js","sourceRoot":"","sources":["../../src/utils/remote-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-client.js","sourceRoot":"","sources":["../../src/utils/remote-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crosspad-mcp-server",
3
- "version": "6.0.0",
3
+ "version": "8.1.1",
4
4
  "description": "MCP development server for CrossPad — build, test, manage apps, interact with simulator",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,6 +25,9 @@
25
25
  "url": "https://github.com/CrossPad/crosspad-mcp.git"
26
26
  },
27
27
  "license": "MIT",
28
+ "engines": {
29
+ "node": ">=18.0.0"
30
+ },
28
31
  "scripts": {
29
32
  "build": "tsc",
30
33
  "prepublishOnly": "tsc",
@@ -1,15 +0,0 @@
1
- export interface ScaffoldParams {
2
- name: string;
3
- display_name?: string;
4
- has_pad_logic?: boolean;
5
- icon?: string;
6
- }
7
- export interface ScaffoldResult {
8
- files: Record<string, string>;
9
- cmake_patch: {
10
- file: string;
11
- after_pattern: string;
12
- content: string;
13
- };
14
- }
15
- export declare function crosspadScaffoldApp(params: ScaffoldParams): ScaffoldResult;