crosspad-mcp-server 5.0.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +31 -18
  2. package/dist/config.d.ts +2 -2
  3. package/dist/config.js +17 -13
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.js +139 -31
  6. package/dist/index.js.map +1 -1
  7. package/dist/tools/app-manager.d.ts +43 -9
  8. package/dist/tools/app-manager.js +195 -117
  9. package/dist/tools/app-manager.js.map +1 -1
  10. package/dist/tools/architecture.js +0 -2
  11. package/dist/tools/architecture.js.map +1 -1
  12. package/dist/tools/build.d.ts +4 -0
  13. package/dist/tools/build.js +4 -2
  14. package/dist/tools/build.js.map +1 -1
  15. package/dist/tools/idf-build.d.ts +13 -0
  16. package/dist/tools/idf-build.js +8 -4
  17. package/dist/tools/idf-build.js.map +1 -1
  18. package/dist/tools/idf-flash.d.ts +20 -0
  19. package/dist/tools/idf-flash.js +184 -0
  20. package/dist/tools/idf-flash.js.map +1 -0
  21. package/dist/tools/idf-monitor.d.ts +29 -0
  22. package/dist/tools/idf-monitor.js +168 -0
  23. package/dist/tools/idf-monitor.js.map +1 -0
  24. package/dist/tools/midi.d.ts +27 -0
  25. package/dist/tools/midi.js +112 -0
  26. package/dist/tools/midi.js.map +1 -0
  27. package/dist/tools/repo-actions.d.ts +46 -0
  28. package/dist/tools/repo-actions.js +273 -0
  29. package/dist/tools/repo-actions.js.map +1 -0
  30. package/dist/tools/symbols.d.ts +16 -1
  31. package/dist/tools/symbols.js +118 -50
  32. package/dist/tools/symbols.js.map +1 -1
  33. package/dist/tools/test.d.ts +7 -0
  34. package/dist/tools/test.js +4 -2
  35. package/dist/tools/test.js.map +1 -1
  36. package/dist/utils/device.d.ts +38 -0
  37. package/dist/utils/device.js +287 -0
  38. package/dist/utils/device.js.map +1 -0
  39. package/dist/utils/remote-client.d.ts +1 -0
  40. package/dist/utils/remote-client.js +24 -1
  41. package/dist/utils/remote-client.js.map +1 -1
  42. package/package.json +6 -3
package/README.md CHANGED
@@ -8,10 +8,13 @@ MCP (Model Context Protocol) server that gives Claude Code full control over the
8
8
  claude mcp add crosspad -- npx -y crosspad-mcp-server
9
9
  ```
10
10
 
11
- Or with a custom repos directory:
11
+ Or with custom repo paths:
12
12
 
13
13
  ```bash
14
- claude mcp add crosspad --env CROSSPAD_GIT_DIR=/path/to/your/GIT -- npx -y crosspad-mcp-server
14
+ claude mcp add crosspad \
15
+ --env CROSSPAD_IDF_ROOT=/path/to/platform-idf \
16
+ --env CROSSPAD_PC_ROOT=/path/to/crosspad-pc \
17
+ -- npx -y crosspad-mcp-server
15
18
  ```
16
19
 
17
20
  That's it. Restart Claude Code and the tools are available.
@@ -28,7 +31,8 @@ Add to your repo root — Claude Code picks it up automatically:
28
31
  "command": "npx",
29
32
  "args": ["-y", "crosspad-mcp-server"],
30
33
  "env": {
31
- "CROSSPAD_GIT_DIR": "/path/to/your/GIT"
34
+ "CROSSPAD_IDF_ROOT": "/path/to/platform-idf",
35
+ "CROSSPAD_PC_ROOT": "/path/to/crosspad-pc"
32
36
  }
33
37
  }
34
38
  }
@@ -46,7 +50,7 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) o
46
50
  "command": "npx",
47
51
  "args": ["-y", "crosspad-mcp-server"],
48
52
  "env": {
49
- "CROSSPAD_GIT_DIR": "/path/to/your/GIT"
53
+ "CROSSPAD_IDF_ROOT": "/path/to/platform-idf"
50
54
  }
51
55
  }
52
56
  }
@@ -98,30 +102,35 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) o
98
102
  | `apps` | List REGISTER_APP registrations per platform |
99
103
  | `scaffold` | Generate new app boilerplate (cpp, hpp, CMakeLists.txt) |
100
104
 
101
- ### `crosspad_apps` — App package manager
105
+ ### `crosspad_apps` — App package manager (multi-platform)
102
106
 
103
107
  | Action | What it does |
104
108
  |--------|-------------|
105
- | `list` | Available apps from the crosspad-apps registry |
106
- | `install` | Install app as git submodule |
107
- | `remove` | Remove app submodule |
108
- | `update` | Update one or all installed apps |
109
- | `sync` | Sync manifest with existing submodules |
109
+ | `list` | Available apps from registry + where installed (idf/pc/arduino) |
110
+ | `install` | Install app as git submodule (requires `platform` param) |
111
+ | `remove` | Remove app submodule (requires `platform` param) |
112
+ | `update` | Update one or all installed apps (requires `platform` param) |
113
+ | `sync` | Sync manifest with existing submodules (requires `platform` param) |
114
+
115
+ `list` aggregates `apps.json` from all detected repos. Mutations (`install`, `remove`, `update`, `sync`) target a specific platform via the `platform` parameter (`idf`, `pc`, or `arduino`).
110
116
 
111
117
  ## Configuration
112
118
 
113
- All paths auto-detected. Override via env vars if needed:
119
+ Each repo path is individually configurable via env vars. If not set, falls back to `$CROSSPAD_GIT_DIR/<repo-name>` (flat layout).
114
120
 
115
121
  | Variable | Default | Description |
116
122
  |----------|---------|-------------|
117
- | `CROSSPAD_GIT_DIR` | `~/GIT` | Base directory containing CrossPad repos |
123
+ | `CROSSPAD_GIT_DIR` | `~/GIT` | Base directory (flat layout fallback) |
118
124
  | `CROSSPAD_PC_ROOT` | `$GIT_DIR/crosspad-pc` | PC simulator repo |
119
125
  | `CROSSPAD_IDF_ROOT` | `$GIT_DIR/platform-idf` | ESP-IDF platform repo |
126
+ | `CROSSPAD_ARDUINO_ROOT` | `$GIT_DIR/ESP32-S3` | Arduino platform repo |
127
+ | `CROSSPAD_CORE_ROOT` | `$GIT_DIR/crosspad-core` | crosspad-core (standalone) |
128
+ | `CROSSPAD_GUI_ROOT` | `$GIT_DIR/crosspad-gui` | crosspad-gui (standalone) |
120
129
  | `IDF_PATH` | auto-detected (`~/esp/esp-idf`) | ESP-IDF SDK path |
121
130
  | `VCPKG_ROOT` | `~/vcpkg` (Linux) / `C:/vcpkg` (Win) | vcpkg installation |
122
131
  | `VCVARSALL` | VS2022 default | MSVC vcvarsall.bat (Windows only) |
123
132
 
124
- Repos are discovered dynamically — only repos that exist on disk appear in status/search results.
133
+ Repos are discovered dynamically — only repos that exist on disk appear in tool results. No flat directory structure is assumed when env vars are set.
125
134
 
126
135
  ## How it works
127
136
 
@@ -131,7 +140,7 @@ Repos are discovered dynamically — only repos that exist on disk appear in sta
131
140
 
132
141
  **Streaming** — long-running tools (build, test, log) emit output line-by-line via MCP logging, so Claude sees progress in real-time.
133
142
 
134
- **App manager** — delegates to the Python-based `crosspad_app_manager.py` from [crosspad-apps](https://github.com/CrossPad/crosspad-apps). Reads registry JSON directly for listing, uses Python subprocess for install/remove/update.
143
+ **App manager** — reads registry JSON directly for listing (aggregated across all repos). Mutations delegate to `app_manager.py` (at `tools/` for IDF, `scripts/` for PC/Arduino) from [crosspad-apps](https://github.com/CrossPad/crosspad-apps).
135
144
 
136
145
  ## Development
137
146
 
@@ -139,20 +148,23 @@ Repos are discovered dynamically — only repos that exist on disk appear in sta
139
148
  git clone https://github.com/CrossPad/crosspad-mcp.git
140
149
  cd crosspad-mcp
141
150
  npm install
142
- npm run dev # watch mode
143
- npm run build # one-shot build
151
+ npm run dev # watch mode
152
+ npm run build # one-shot build
153
+ npm test # run unit tests
154
+ npm run test:watch # tests in watch mode
144
155
  ```
145
156
 
146
157
  ```
147
158
  src/
148
159
  index.ts — 6 tool registrations with action dispatch
149
- config.ts — env-agnostic paths, dynamic repo discovery
160
+ config.ts — per-repo env vars, dynamic discovery, IDF/MSVC paths
161
+ config.test.ts — config unit tests (fs mocking)
150
162
  utils/
151
163
  exec.ts — platform-aware command execution (MSVC/IDF/shell)
152
164
  git.ts — repo status, submodule pins
153
165
  remote-client.ts — TCP client for simulator (localhost:19840)
154
166
  tools/
155
- app-manager.ts — crosspad_apps (Python subprocess)
167
+ app-manager.ts — crosspad_apps: multi-platform registry + Python subprocess
156
168
  architecture.ts — interfaces, REGISTER_APP scan
157
169
  build.ts — PC build + run
158
170
  build-check.ts — build health check
@@ -167,6 +179,7 @@ src/
167
179
  stats.ts — simulator runtime stats
168
180
  symbols.ts — cross-repo symbol search
169
181
  test.ts — Catch2 test runner
182
+ *.test.ts — unit tests for each module
170
183
  ```
171
184
 
172
185
  ## License
package/dist/config.d.ts CHANGED
@@ -11,8 +11,8 @@ export declare const BIN_EXE: string;
11
11
  export declare function getRepos(): Record<string, string>;
12
12
  export declare const REPOS: Record<string, string>;
13
13
  /**
14
- * Resolve the crosspad-core include path. Checks:
15
- * 1. Standalone repo at $GIT_DIR/crosspad-core
14
+ * Resolve the crosspad-core path. Checks:
15
+ * 1. Standalone repo ($CROSSPAD_CORE_ROOT or $GIT_DIR/crosspad-core)
16
16
  * 2. Submodule inside platform-idf: $IDF_ROOT/components/crosspad-core
17
17
  * 3. Submodule inside crosspad-pc: $PC_ROOT/crosspad-core
18
18
  * Returns null if not found anywhere.
package/dist/config.js CHANGED
@@ -4,18 +4,24 @@ import os from "os";
4
4
  export const IS_WINDOWS = process.platform === "win32";
5
5
  export const IS_MAC = process.platform === "darwin";
6
6
  // ═══════════════════════════════════════════════════════════════════════
7
- // BASE PATHSall overridable via env vars
7
+ // BASE PATHonly used as fallback when per-repo env vars are not set
8
8
  // ═══════════════════════════════════════════════════════════════════════
9
9
  const GIT_DIR = process.env.CROSSPAD_GIT_DIR || path.join(os.homedir(), "GIT");
10
+ // ═══════════════════════════════════════════════════════════════════════
11
+ // PER-REPO PATHS — each overridable via its own env var
12
+ // Env var takes priority → then flat layout ($GIT_DIR/<name>)
13
+ // ═══════════════════════════════════════════════════════════════════════
10
14
  export const CROSSPAD_PC_ROOT = process.env.CROSSPAD_PC_ROOT || path.join(GIT_DIR, "crosspad-pc");
11
15
  export const CROSSPAD_IDF_ROOT = process.env.CROSSPAD_IDF_ROOT || path.join(GIT_DIR, "platform-idf");
16
+ const CROSSPAD_ARDUINO_ROOT = process.env.CROSSPAD_ARDUINO_ROOT || path.join(GIT_DIR, "ESP32-S3");
17
+ const CROSSPAD_CORE_ROOT = process.env.CROSSPAD_CORE_ROOT || path.join(GIT_DIR, "crosspad-core");
18
+ const CROSSPAD_GUI_ROOT = process.env.CROSSPAD_GUI_ROOT || path.join(GIT_DIR, "crosspad-gui");
12
19
  // ═══════════════════════════════════════════════════════════════════════
13
20
  // ESP-IDF SDK PATH — fallback chain
14
21
  // ═══════════════════════════════════════════════════════════════════════
15
22
  function findIdfPath() {
16
23
  if (process.env.IDF_PATH)
17
24
  return process.env.IDF_PATH;
18
- // Try common paths
19
25
  const candidates = [
20
26
  path.join(os.homedir(), "esp", "esp-idf"),
21
27
  path.join(os.homedir(), "esp", "v5.5.4", "esp-idf"),
@@ -25,7 +31,6 @@ function findIdfPath() {
25
31
  if (fs.existsSync(p))
26
32
  return p;
27
33
  }
28
- // Last resort — return the most common default even if missing
29
34
  return path.join(os.homedir(), "esp", "esp-idf");
30
35
  }
31
36
  export const IDF_PATH = findIdfPath();
@@ -44,16 +49,15 @@ export const BUILD_DIR = path.join(CROSSPAD_PC_ROOT, "build");
44
49
  const EXE_EXT = IS_WINDOWS ? ".exe" : "";
45
50
  export const BIN_EXE = path.join(CROSSPAD_PC_ROOT, "bin", `main${EXE_EXT}`);
46
51
  // ═══════════════════════════════════════════════════════════════════════
47
- // REPOS — dynamic discovery, cached
52
+ // REPOS — dynamic discovery from per-repo paths, cached
48
53
  // ═══════════════════════════════════════════════════════════════════════
49
- /** Known repo candidates: name → expected path */
54
+ /** Maps repo name → resolved path (from env vars or flat layout default) */
50
55
  const REPO_CANDIDATES = {
51
- "crosspad-core": path.join(GIT_DIR, "crosspad-core"),
52
- "crosspad-gui": path.join(GIT_DIR, "crosspad-gui"),
56
+ "crosspad-core": CROSSPAD_CORE_ROOT,
57
+ "crosspad-gui": CROSSPAD_GUI_ROOT,
53
58
  "crosspad-pc": CROSSPAD_PC_ROOT,
54
59
  "platform-idf": CROSSPAD_IDF_ROOT,
55
- "ESP32-S3": path.join(GIT_DIR, "ESP32-S3"),
56
- "2playerCrosspad": path.join(GIT_DIR, "2playerCrosspad"),
60
+ "ESP32-S3": CROSSPAD_ARDUINO_ROOT,
57
61
  };
58
62
  let cachedRepos = null;
59
63
  /** Returns only repos that actually exist on disk. Cached for server lifetime. */
@@ -69,15 +73,15 @@ export function getRepos() {
69
73
  cachedRepos = found;
70
74
  return found;
71
75
  }
72
- // Legacy compat — some tool files still import REPOS directly
76
+ // Legacy compat
73
77
  export const REPOS = REPO_CANDIDATES;
74
78
  // ═══════════════════════════════════════════════════════════════════════
75
79
  // CROSSPAD-CORE RESOLUTION — finds crosspad-core wherever it lives
76
80
  // ═══════════════════════════════════════════════════════════════════════
77
81
  let cachedCrosspadCorePath = undefined;
78
82
  /**
79
- * Resolve the crosspad-core include path. Checks:
80
- * 1. Standalone repo at $GIT_DIR/crosspad-core
83
+ * Resolve the crosspad-core path. Checks:
84
+ * 1. Standalone repo ($CROSSPAD_CORE_ROOT or $GIT_DIR/crosspad-core)
81
85
  * 2. Submodule inside platform-idf: $IDF_ROOT/components/crosspad-core
82
86
  * 3. Submodule inside crosspad-pc: $PC_ROOT/crosspad-core
83
87
  * Returns null if not found anywhere.
@@ -86,7 +90,7 @@ export function resolveCrosspadCore() {
86
90
  if (cachedCrosspadCorePath !== undefined)
87
91
  return cachedCrosspadCorePath;
88
92
  const candidates = [
89
- path.join(GIT_DIR, "crosspad-core"),
93
+ CROSSPAD_CORE_ROOT,
90
94
  path.join(CROSSPAD_IDF_ROOT, "components", "crosspad-core"),
91
95
  path.join(CROSSPAD_PC_ROOT, "crosspad-core"),
92
96
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,14 +2,22 @@
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { z } from "zod";
5
+ import fs from "fs";
6
+ import { createRequire } from "module";
7
+ const require = createRequire(import.meta.url);
8
+ const { version } = require("../package.json");
5
9
  // Tool implementations
6
10
  import { crosspadBuild, crosspadRun } from "./tools/build.js";
7
11
  import { crosspadBuildCheck } from "./tools/build-check.js";
8
12
  import { crosspadLog } from "./tools/log.js";
9
13
  import { crosspadIdfBuild } from "./tools/idf-build.js";
14
+ import { crosspadIdfFlash, crosspadIdfOta } from "./tools/idf-flash.js";
15
+ import { crosspadIdfMonitor } from "./tools/idf-monitor.js";
16
+ import { listDevices } from "./utils/device.js";
10
17
  import { crosspadTest, crosspadTestScaffold } from "./tools/test.js";
11
18
  import { crosspadReposStatus } from "./tools/repos.js";
12
19
  import { crosspadDiffCore } from "./tools/diff-core.js";
20
+ import { crosspadSubmoduleUpdate, crosspadCommit } from "./tools/repo-actions.js";
13
21
  import { crosspadSearchSymbols } from "./tools/symbols.js";
14
22
  import { crosspadInterfaces, crosspadApps } from "./tools/architecture.js";
15
23
  import { crosspadScaffoldApp } from "./tools/scaffold.js";
@@ -17,8 +25,9 @@ import { crosspadScreenshot } from "./tools/screenshot.js";
17
25
  import { crosspadInput } from "./tools/input.js";
18
26
  import { crosspadStats } from "./tools/stats.js";
19
27
  import { crosspadSettingsGet, crosspadSettingsSet } from "./tools/settings.js";
28
+ import { crosspadMidiSend } from "./tools/midi.js";
20
29
  import { crosspadAppList, crosspadAppInstall, crosspadAppRemove, crosspadAppUpdate, crosspadAppSync, } from "./tools/app-manager.js";
21
- const server = new McpServer({ name: "crosspad", version: "5.0.0" }, { capabilities: { logging: {} } });
30
+ const server = new McpServer({ name: "crosspad", version }, { capabilities: { logging: {} } });
22
31
  function makeStreamLogger(logger) {
23
32
  return (stream, line) => {
24
33
  if (!line.trim())
@@ -33,16 +42,22 @@ function jsonResponse(data) {
33
42
  // ═══════════════════════════════════════════════════════════════════════
34
43
  // TOOL 1: crosspad_build
35
44
  // ═══════════════════════════════════════════════════════════════════════
36
- server.tool("crosspad_build", "Build, run, or check the CrossPad PC simulator or ESP-IDF firmware.", {
37
- action: z.enum(["pc", "pc_run", "pc_check", "pc_log", "idf"])
38
- .describe("pc: build simulator. pc_run: launch exe. pc_check: build health check. pc_log: capture stdout. idf: build ESP-IDF firmware."),
45
+ server.tool("crosspad_build", "Build, run, flash, or monitor CrossPad PC simulator and ESP-IDF firmware. Supports multiple connected devices.", {
46
+ action: z.enum(["pc", "pc_run", "pc_check", "pc_log", "idf", "idf_flash", "idf_ota", "idf_monitor", "devices"])
47
+ .describe("pc: build simulator. pc_run: launch exe. pc_check: build health check. pc_log: capture stdout. idf: build ESP-IDF firmware. idf_flash: flash via UART. idf_ota: flash via OTA CDC. idf_monitor: capture serial logs. devices: list connected CrossPad devices."),
39
48
  mode: z.enum(["incremental", "clean", "reconfigure", "fullclean"]).default("incremental")
40
49
  .describe("Build mode (pc: incremental/clean/reconfigure, idf: build/fullclean/clean)").optional(),
50
+ port: z.string().optional()
51
+ .describe("idf_flash/idf_ota/idf_monitor: serial port (auto-detect if omitted, required when multiple devices connected)"),
52
+ firmware_path: z.string().optional()
53
+ .describe("idf_ota: custom firmware binary path (default: build/CrossPad.bin)"),
41
54
  timeout_seconds: z.number().default(5).optional()
42
- .describe("pc_log: capture duration in seconds"),
55
+ .describe("pc_log/idf_monitor: capture duration in seconds"),
43
56
  max_lines: z.number().default(200).optional()
44
- .describe("pc_log: max output lines"),
45
- }, async ({ action, mode, timeout_seconds, max_lines }) => {
57
+ .describe("pc_log/idf_monitor: max output lines"),
58
+ filter: z.string().optional()
59
+ .describe("idf_monitor: only return lines containing this string"),
60
+ }, async ({ action, mode, port, firmware_path, timeout_seconds, max_lines, filter }) => {
46
61
  const onLine = makeStreamLogger("build");
47
62
  switch (action) {
48
63
  case "pc": {
@@ -59,6 +74,14 @@ server.tool("crosspad_build", "Build, run, or check the CrossPad PC simulator or
59
74
  const m = (mode === "reconfigure" ? "build" : mode ?? "build");
60
75
  return jsonResponse(await crosspadIdfBuild(m, onLine));
61
76
  }
77
+ case "idf_flash":
78
+ return jsonResponse(await crosspadIdfFlash(port, onLine));
79
+ case "idf_ota":
80
+ return jsonResponse(await crosspadIdfOta(port, firmware_path, onLine));
81
+ case "idf_monitor":
82
+ return jsonResponse(await crosspadIdfMonitor(port, timeout_seconds ?? 10, max_lines ?? 500, filter, onLine));
83
+ case "devices":
84
+ return jsonResponse(listDevices());
62
85
  }
63
86
  });
64
87
  // ═══════════════════════════════════════════════════════════════════════
@@ -81,9 +104,9 @@ server.tool("crosspad_test", "Run Catch2 tests or scaffold test infrastructure f
81
104
  // ═══════════════════════════════════════════════════════════════════════
82
105
  // TOOL 3: crosspad_sim
83
106
  // ═══════════════════════════════════════════════════════════════════════
84
- server.tool("crosspad_sim", "Interact with the running simulator: screenshots, input, stats, settings.", {
85
- action: z.enum(["screenshot", "input", "stats", "settings_get", "settings_set"])
86
- .describe("screenshot: capture PNG. input: send event. stats: runtime diagnostics. settings_get/set: read/write settings."),
107
+ server.tool("crosspad_sim", "Interact with the running simulator: screenshots, input, MIDI, stats, settings.", {
108
+ action: z.enum(["screenshot", "input", "midi_send", "stats", "settings_get", "settings_set"])
109
+ .describe("screenshot: capture PNG. input: send event. midi_send: send MIDI to simulator. stats: runtime diagnostics. settings_get/set: read/write settings."),
87
110
  // screenshot params
88
111
  region: z.enum(["full", "lcd"]).default("full").optional()
89
112
  .describe("screenshot: full window or LCD only"),
@@ -100,6 +123,17 @@ server.tool("crosspad_sim", "Interact with the running simulator: screenshots, i
100
123
  velocity: z.number().optional().describe("input pad_press: velocity 0-127"),
101
124
  delta: z.number().optional().describe("input encoder_rotate: rotation delta"),
102
125
  keycode: z.number().optional().describe("input key: SDL keycode"),
126
+ // midi params
127
+ midi_type: z.enum(["note_on", "note_off", "cc", "program_change"]).optional()
128
+ .describe("midi_send: MIDI event type"),
129
+ channel: z.number().default(0).optional()
130
+ .describe("midi_send: MIDI channel 0-15"),
131
+ note: z.number().optional()
132
+ .describe("midi_send: note number 0-127 (note_on/note_off)"),
133
+ cc_num: z.number().optional()
134
+ .describe("midi_send: CC number 0-127 (cc)"),
135
+ midi_value: z.number().optional()
136
+ .describe("midi_send: value 0-127 (cc value or program number)"),
103
137
  // settings params
104
138
  category: z.string().default("all").optional()
105
139
  .describe("settings_get: all/display/keypad/vibration/wireless/audio/system"),
@@ -107,10 +141,30 @@ server.tool("crosspad_sim", "Interact with the running simulator: screenshots, i
107
141
  .describe("settings_set: dotted key name (e.g. 'lcd_brightness')"),
108
142
  value: z.number().optional()
109
143
  .describe("settings_set: numeric value"),
110
- }, async ({ action, region, filename, save_to_file, input_action, x, y, pad, velocity, delta, keycode, category, key, value }) => {
144
+ }, async ({ action, region, filename, save_to_file, input_action, x, y, pad, velocity, delta, keycode, midi_type, channel, note, cc_num, midi_value, category, key, value }) => {
111
145
  switch (action) {
112
- case "screenshot":
113
- return jsonResponse(await crosspadScreenshot(save_to_file ?? true, filename));
146
+ case "screenshot": {
147
+ const result = await crosspadScreenshot(save_to_file ?? true, filename);
148
+ if (result.success) {
149
+ let imageData = result.data_base64;
150
+ // Read from file if saved to disk
151
+ if (!imageData && result.file_path) {
152
+ try {
153
+ imageData = fs.readFileSync(result.file_path).toString("base64");
154
+ }
155
+ catch { /* fall through to JSON response */ }
156
+ }
157
+ if (imageData) {
158
+ return {
159
+ content: [
160
+ { type: "image", data: imageData, mimeType: "image/png" },
161
+ { type: "text", text: JSON.stringify({ success: true, width: result.width, height: result.height, format: result.format, file_path: result.file_path }, null, 2) },
162
+ ],
163
+ };
164
+ }
165
+ }
166
+ return jsonResponse(result);
167
+ }
114
168
  case "input": {
115
169
  if (!input_action) {
116
170
  return jsonResponse({ success: false, error: "input_action is required for action=input" });
@@ -141,6 +195,20 @@ server.tool("crosspad_sim", "Interact with the running simulator: screenshots, i
141
195
  }
142
196
  return jsonResponse(await crosspadInput(input));
143
197
  }
198
+ case "midi_send": {
199
+ if (!midi_type) {
200
+ return jsonResponse({ success: false, error: "midi_type is required for action=midi_send" });
201
+ }
202
+ return jsonResponse(await crosspadMidiSend({
203
+ type: midi_type,
204
+ channel: channel ?? 0,
205
+ note,
206
+ velocity,
207
+ cc_num,
208
+ value: midi_value,
209
+ program: midi_value,
210
+ }));
211
+ }
144
212
  case "stats":
145
213
  return jsonResponse(await crosspadStats());
146
214
  case "settings_get":
@@ -156,17 +224,43 @@ server.tool("crosspad_sim", "Interact with the running simulator: screenshots, i
156
224
  // ═══════════════════════════════════════════════════════════════════════
157
225
  // TOOL 4: crosspad_repo
158
226
  // ═══════════════════════════════════════════════════════════════════════
159
- server.tool("crosspad_repo", "Git status and submodule diffs across all CrossPad repos.", {
160
- action: z.enum(["status", "diff"])
161
- .describe("status: git status all repos. diff: submodule drift analysis."),
162
- submodule: z.enum(["crosspad-core", "crosspad-gui", "both"]).default("both").optional()
163
- .describe("diff: which submodule to analyze"),
164
- }, async ({ action, submodule }) => {
227
+ server.tool("crosspad_repo", "Git status, submodule diffs, submodule updates, and commits across CrossPad repos.", {
228
+ action: z.enum(["status", "diff", "submodule_update", "commit"])
229
+ .describe("status: git status all repos. diff: submodule drift. submodule_update: pull latest submodule. commit: commit staged changes."),
230
+ submodule: z.enum(["crosspad-core", "crosspad-gui", "crosspad-instructions", "crosspad-sampler", "both"]).default("both").optional()
231
+ .describe("diff/submodule_update: which submodule"),
232
+ repo: z.string().optional()
233
+ .describe("submodule_update/commit: target repo (idf, pc, arduino, core, gui, or full name)"),
234
+ branch: z.string().default("main").optional()
235
+ .describe("submodule_update: remote branch to checkout (default: main)"),
236
+ message: z.string().optional()
237
+ .describe("commit: commit message"),
238
+ files: z.array(z.string()).optional()
239
+ .describe("commit: specific files to stage+commit (omit to commit what's staged)"),
240
+ }, async ({ action, submodule, repo, branch, message, files }) => {
165
241
  switch (action) {
166
242
  case "status":
167
243
  return jsonResponse(crosspadReposStatus());
168
244
  case "diff":
169
- return jsonResponse(crosspadDiffCore(submodule ?? "both"));
245
+ return jsonResponse(crosspadDiffCore(submodule === "both" ? "both" : submodule ?? "both"));
246
+ case "submodule_update": {
247
+ if (!submodule || submodule === "both") {
248
+ return jsonResponse({ error: "Specify a single submodule (e.g. crosspad-core)" });
249
+ }
250
+ if (!repo) {
251
+ return jsonResponse({ error: "repo is required for submodule_update (e.g. idf, pc, arduino)" });
252
+ }
253
+ return jsonResponse(crosspadSubmoduleUpdate(submodule, repo, branch ?? "main"));
254
+ }
255
+ case "commit": {
256
+ if (!repo) {
257
+ return jsonResponse({ error: "repo is required for commit" });
258
+ }
259
+ if (!message) {
260
+ return jsonResponse({ error: "message is required for commit" });
261
+ }
262
+ return jsonResponse(crosspadCommit(repo, message, files));
263
+ }
170
264
  }
171
265
  });
172
266
  // ═══════════════════════════════════════════════════════════════════════
@@ -184,6 +278,8 @@ server.tool("crosspad_code", "Search symbols, query interfaces, list registered
184
278
  .describe("search: repo names to scan, or ['all']"),
185
279
  max_results: z.number().default(50).optional()
186
280
  .describe("search: result cap"),
281
+ context_lines: z.number().default(0).optional()
282
+ .describe("search: lines of surrounding context (0-10, like grep -C)"),
187
283
  // apps params
188
284
  platform: z.enum(["pc", "idf", "arduino", "all"]).default("all").optional()
189
285
  .describe("apps: platform to scan"),
@@ -196,12 +292,12 @@ server.tool("crosspad_code", "Search symbols, query interfaces, list registered
196
292
  .describe("scaffold: generate IPadLogicHandler stub"),
197
293
  icon: z.string().default("CrossPad_Logo_110w.png").optional()
198
294
  .describe("scaffold: icon filename"),
199
- }, async ({ action, query, kind, repos, max_results, platform, name, display_name, has_pad_logic, icon }) => {
295
+ }, async ({ action, query, kind, repos, max_results, context_lines, platform, name, display_name, has_pad_logic, icon }) => {
200
296
  switch (action) {
201
297
  case "search": {
202
298
  if (!query)
203
299
  return jsonResponse({ error: "query is required for action=search" });
204
- return jsonResponse(crosspadSearchSymbols(query, kind ?? "all", repos ?? ["all"], max_results ?? 50));
300
+ return jsonResponse(crosspadSearchSymbols(query, kind ?? "all", repos ?? ["all"], max_results ?? 50, context_lines ?? 0));
205
301
  }
206
302
  case "interfaces": {
207
303
  return jsonResponse(crosspadInterfaces(query ?? "list"));
@@ -218,9 +314,11 @@ server.tool("crosspad_code", "Search symbols, query interfaces, list registered
218
314
  // ═══════════════════════════════════════════════════════════════════════
219
315
  // TOOL 6: crosspad_apps
220
316
  // ═══════════════════════════════════════════════════════════════════════
221
- server.tool("crosspad_apps", "Manage CrossPad app packages: list, install, remove, update from the crosspad-apps registry.", {
317
+ server.tool("crosspad_apps", "Manage CrossPad app packages: list, install, remove, update from the crosspad-apps registry. List aggregates status across all detected repos (idf, pc, arduino).", {
222
318
  action: z.enum(["list", "install", "remove", "update", "sync"])
223
- .describe("list: available apps. install: add app submodule. remove: remove app. update: update app(s). sync: sync manifest."),
319
+ .describe("list: available apps + where installed. install: add app submodule. remove: remove app. update: update app(s). sync: sync manifest."),
320
+ platform: z.enum(["idf", "pc", "arduino"]).optional()
321
+ .describe("install/remove/update/sync: target platform repo (required for mutations)"),
224
322
  app_name: z.string().optional()
225
323
  .describe("install/remove/update: app ID from registry"),
226
324
  ref: z.string().default("main").optional()
@@ -231,7 +329,7 @@ server.tool("crosspad_apps", "Manage CrossPad app packages: list, install, remov
231
329
  .describe("update: update all installed apps"),
232
330
  show_all: z.boolean().default(false).optional()
233
331
  .describe("list: include incompatible apps"),
234
- }, async ({ action, app_name, ref, force, update_all, show_all }) => {
332
+ }, async ({ action, platform, app_name, ref, force, update_all, show_all }) => {
235
333
  const onLine = makeStreamLogger("app-manager");
236
334
  switch (action) {
237
335
  case "list":
@@ -239,17 +337,27 @@ server.tool("crosspad_apps", "Manage CrossPad app packages: list, install, remov
239
337
  case "install": {
240
338
  if (!app_name)
241
339
  return jsonResponse({ success: false, error: "app_name required" });
242
- return jsonResponse(await crosspadAppInstall(app_name, ref ?? "main", force ?? false, onLine));
340
+ if (!platform)
341
+ return jsonResponse({ success: false, error: "platform required for install (idf, pc, or arduino)" });
342
+ return jsonResponse(await crosspadAppInstall(app_name, platform, ref ?? "main", force ?? false, onLine));
243
343
  }
244
344
  case "remove": {
245
345
  if (!app_name)
246
346
  return jsonResponse({ success: false, error: "app_name required" });
247
- return jsonResponse(await crosspadAppRemove(app_name, onLine));
347
+ if (!platform)
348
+ return jsonResponse({ success: false, error: "platform required for remove (idf, pc, or arduino)" });
349
+ return jsonResponse(await crosspadAppRemove(app_name, platform, onLine));
350
+ }
351
+ case "update": {
352
+ if (!platform)
353
+ return jsonResponse({ success: false, error: "platform required for update (idf, pc, or arduino)" });
354
+ return jsonResponse(await crosspadAppUpdate(platform, app_name, update_all ?? false, onLine));
355
+ }
356
+ case "sync": {
357
+ if (!platform)
358
+ return jsonResponse({ success: false, error: "platform required for sync (idf, pc, or arduino)" });
359
+ return jsonResponse(await crosspadAppSync(platform, onLine));
248
360
  }
249
- case "update":
250
- return jsonResponse(await crosspadAppUpdate(app_name, update_all ?? false, onLine));
251
- case "sync":
252
- return jsonResponse(await crosspadAppSync(onLine));
253
361
  }
254
362
  });
255
363
  // ═══════════════════════════════════════════════════════════════════════
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}