crosspad-mcp-server 4.0.0 → 5.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 (54) hide show
  1. package/dist/config.d.ts +13 -3
  2. package/dist/config.js +89 -20
  3. package/dist/config.js.map +1 -1
  4. package/dist/index.js +214 -308
  5. package/dist/index.js.map +1 -1
  6. package/dist/tools/app-manager.d.ts +37 -0
  7. package/dist/tools/app-manager.js +230 -0
  8. package/dist/tools/app-manager.js.map +1 -0
  9. package/dist/tools/architecture.d.ts +1 -1
  10. package/dist/tools/architecture.js +43 -32
  11. package/dist/tools/architecture.js.map +1 -1
  12. package/dist/tools/build-check.js +2 -2
  13. package/dist/tools/build-check.js.map +1 -1
  14. package/dist/tools/build.js +2 -4
  15. package/dist/tools/build.js.map +1 -1
  16. package/dist/tools/diff-core.js.map +1 -1
  17. package/dist/tools/idf-build.js +3 -3
  18. package/dist/tools/idf-build.js.map +1 -1
  19. package/dist/tools/log.js +3 -3
  20. package/dist/tools/log.js.map +1 -1
  21. package/dist/tools/repos.js +38 -28
  22. package/dist/tools/repos.js.map +1 -1
  23. package/dist/tools/screenshot.d.ts +1 -2
  24. package/dist/tools/screenshot.js +3 -10
  25. package/dist/tools/screenshot.js.map +1 -1
  26. package/dist/tools/symbols.js +4 -3
  27. package/dist/tools/symbols.js.map +1 -1
  28. package/dist/tools/test.js +2 -5
  29. package/dist/tools/test.js.map +1 -1
  30. package/dist/utils/exec.d.ts +12 -4
  31. package/dist/utils/exec.js +52 -17
  32. package/dist/utils/exec.js.map +1 -1
  33. package/package.json +24 -4
  34. package/server.json +0 -23
  35. package/src/config.ts +0 -45
  36. package/src/index.ts +0 -484
  37. package/src/tools/architecture.ts +0 -260
  38. package/src/tools/build-check.ts +0 -178
  39. package/src/tools/build.ts +0 -130
  40. package/src/tools/diff-core.ts +0 -130
  41. package/src/tools/idf-build.ts +0 -182
  42. package/src/tools/input.ts +0 -80
  43. package/src/tools/log.ts +0 -75
  44. package/src/tools/repos.ts +0 -75
  45. package/src/tools/scaffold.ts +0 -229
  46. package/src/tools/screenshot.ts +0 -100
  47. package/src/tools/settings.ts +0 -68
  48. package/src/tools/stats.ts +0 -38
  49. package/src/tools/symbols.ts +0 -185
  50. package/src/tools/test.ts +0 -264
  51. package/src/utils/exec.ts +0 -376
  52. package/src/utils/git.ts +0 -45
  53. package/src/utils/remote-client.ts +0 -107
  54. package/tsconfig.json +0 -16
package/dist/index.js CHANGED
@@ -2,348 +2,254 @@
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
+ // Tool implementations
5
6
  import { crosspadBuild, crosspadRun } from "./tools/build.js";
6
- import { crosspadReposStatus } from "./tools/repos.js";
7
- import { crosspadScaffoldApp } from "./tools/scaffold.js";
8
- import { crosspadInterfaces, crosspadApps } from "./tools/architecture.js";
9
7
  import { crosspadBuildCheck } from "./tools/build-check.js";
10
- import { crosspadSearchSymbols } from "./tools/symbols.js";
11
- import { crosspadDiffCore } from "./tools/diff-core.js";
12
8
  import { crosspadLog } from "./tools/log.js";
9
+ import { crosspadIdfBuild } from "./tools/idf-build.js";
13
10
  import { crosspadTest, crosspadTestScaffold } from "./tools/test.js";
11
+ import { crosspadReposStatus } from "./tools/repos.js";
12
+ import { crosspadDiffCore } from "./tools/diff-core.js";
13
+ import { crosspadSearchSymbols } from "./tools/symbols.js";
14
+ import { crosspadInterfaces, crosspadApps } from "./tools/architecture.js";
15
+ import { crosspadScaffoldApp } from "./tools/scaffold.js";
14
16
  import { crosspadScreenshot } from "./tools/screenshot.js";
15
17
  import { crosspadInput } from "./tools/input.js";
16
- import { crosspadSettingsGet, crosspadSettingsSet } from "./tools/settings.js";
17
18
  import { crosspadStats } from "./tools/stats.js";
18
- import { crosspadIdfBuild } from "./tools/idf-build.js";
19
- const server = new McpServer({
20
- name: "crosspad",
21
- version: "4.0.0",
22
- }, {
23
- capabilities: {
24
- logging: {},
25
- },
26
- });
27
- /**
28
- * Create an OnLine callback that streams each line to the MCP client
29
- * via logging notifications. Build output is "info", errors are "error".
30
- */
19
+ import { crosspadSettingsGet, crosspadSettingsSet } from "./tools/settings.js";
20
+ import { crosspadAppList, crosspadAppInstall, crosspadAppRemove, crosspadAppUpdate, crosspadAppSync, } from "./tools/app-manager.js";
21
+ const server = new McpServer({ name: "crosspad", version: "5.0.0" }, { capabilities: { logging: {} } });
31
22
  function makeStreamLogger(logger) {
32
23
  return (stream, line) => {
33
24
  if (!line.trim())
34
- return; // skip empty lines
25
+ return;
35
26
  const level = stream === "stderr" ? "warning" : "info";
36
27
  server.server.sendLoggingMessage({ level, logger, data: line }).catch(() => { });
37
28
  };
38
29
  }
30
+ function jsonResponse(data) {
31
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
32
+ }
39
33
  // ═══════════════════════════════════════════════════════════════════════
40
- // BUILD & RUN
34
+ // TOOL 1: crosspad_build
41
35
  // ═══════════════════════════════════════════════════════════════════════
42
- server.tool("crosspad_build", "Build crosspad-pc simulator (incremental, clean, or reconfigure)", {
43
- mode: z
44
- .enum(["incremental", "clean", "reconfigure"])
45
- .default("incremental")
46
- .describe("incremental: just cmake --build. clean: delete build dir + full rebuild. reconfigure: cmake configure + build (use after adding new source files)"),
47
- }, async ({ mode }) => {
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."),
39
+ mode: z.enum(["incremental", "clean", "reconfigure", "fullclean"]).default("incremental")
40
+ .describe("Build mode (pc: incremental/clean/reconfigure, idf: build/fullclean/clean)").optional(),
41
+ timeout_seconds: z.number().default(5).optional()
42
+ .describe("pc_log: capture duration in seconds"),
43
+ max_lines: z.number().default(200).optional()
44
+ .describe("pc_log: max output lines"),
45
+ }, async ({ action, mode, timeout_seconds, max_lines }) => {
48
46
  const onLine = makeStreamLogger("build");
49
- const result = await crosspadBuild(mode, onLine);
50
- return {
51
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
52
- };
53
- });
54
- server.tool("crosspad_run", "Launch the crosspad-pc simulator (bin/CrossPad.exe). Returns immediately with PID.", {}, async () => {
55
- const result = crosspadRun();
56
- return {
57
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
58
- };
59
- });
60
- server.tool("crosspad_build_check", "Quick health check: is the build up to date? Detects stale exe, new source files needing reconfigure, submodule drift, dirty working trees. Use before build to know what mode to use.", {}, async () => {
61
- const result = crosspadBuildCheck();
62
- return {
63
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
64
- };
65
- });
66
- server.tool("crosspad_log", "Launch CrossPad.exe, capture stdout/stderr for a few seconds, then kill it. Great for checking init sequence, crash messages, or runtime errors without leaving the process running.", {
67
- timeout_seconds: z
68
- .number()
69
- .default(5)
70
- .describe("How long to let the process run before killing it (default: 5)"),
71
- max_lines: z
72
- .number()
73
- .default(200)
74
- .describe("Max lines of output to return (default: 200)"),
75
- }, async ({ timeout_seconds, max_lines }) => {
76
- const onLine = makeStreamLogger("log");
77
- const result = await crosspadLog(timeout_seconds, max_lines, onLine);
78
- return {
79
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
80
- };
81
- });
82
- // ═══════════════════════════════════════════════════════════════════════
83
- // ESP-IDF BUILD
84
- // ═══════════════════════════════════════════════════════════════════════
85
- server.tool("crosspad_idf_build", "Build the crosspad-idf ESP32-S3 firmware using idf.py. Use fullclean after adding new app directories or CMakeLists.txt changes.", {
86
- mode: z
87
- .enum(["build", "fullclean", "clean"])
88
- .default("build")
89
- .describe("build: incremental idf.py build. fullclean: idf.py fullclean + build (required after new app dirs). clean: delete build/ + build."),
90
- }, async ({ mode }) => {
91
- const onLine = makeStreamLogger("idf-build");
92
- const result = await crosspadIdfBuild(mode, onLine);
93
- return {
94
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
95
- };
47
+ switch (action) {
48
+ case "pc": {
49
+ const m = (mode === "fullclean" ? "clean" : mode ?? "incremental");
50
+ return jsonResponse(await crosspadBuild(m, onLine));
51
+ }
52
+ case "pc_run":
53
+ return jsonResponse(crosspadRun());
54
+ case "pc_check":
55
+ return jsonResponse(crosspadBuildCheck());
56
+ case "pc_log":
57
+ return jsonResponse(await crosspadLog(timeout_seconds ?? 5, max_lines ?? 200, onLine));
58
+ case "idf": {
59
+ const m = (mode === "reconfigure" ? "build" : mode ?? "build");
60
+ return jsonResponse(await crosspadIdfBuild(m, onLine));
61
+ }
62
+ }
96
63
  });
97
64
  // ═══════════════════════════════════════════════════════════════════════
98
- // TEST
65
+ // TOOL 2: crosspad_test
99
66
  // ═══════════════════════════════════════════════════════════════════════
100
- server.tool("crosspad_test", "Build and run the Catch2 test suite. If no tests/ dir exists, tells you to scaffold. Supports filtering by test name.", {
101
- filter: z
102
- .string()
103
- .default("")
104
- .describe("Catch2 test name filter (e.g. '[core]' or 'PadManager')"),
105
- list_only: z
106
- .boolean()
107
- .default(false)
108
- .describe("Just list available tests without running them"),
109
- }, async ({ filter, list_only }) => {
67
+ server.tool("crosspad_test", "Run Catch2 tests or scaffold test infrastructure for crosspad-pc.", {
68
+ action: z.enum(["run", "scaffold"])
69
+ .describe("run: build + run tests. scaffold: generate test boilerplate."),
70
+ filter: z.string().default("").optional()
71
+ .describe("Catch2 test name filter (e.g. '[core]')"),
72
+ list_only: z.boolean().default(false).optional()
73
+ .describe("List tests without running"),
74
+ }, async ({ action, filter, list_only }) => {
75
+ if (action === "scaffold") {
76
+ return jsonResponse(crosspadTestScaffold());
77
+ }
110
78
  const onLine = makeStreamLogger("test");
111
- const result = await crosspadTest(filter, list_only, onLine);
112
- return {
113
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
114
- };
115
- });
116
- server.tool("crosspad_test_scaffold", "Generate test infrastructure: tests/CMakeLists.txt (Catch2 v3), sample test file, and CMake patch instructions. Returns file contents — does NOT write to disk.", {}, async () => {
117
- const result = crosspadTestScaffold();
118
- return {
119
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
120
- };
79
+ return jsonResponse(await crosspadTest(filter ?? "", list_only ?? false, onLine));
121
80
  });
122
81
  // ═══════════════════════════════════════════════════════════════════════
123
- // REPOS & SUBMODULES
82
+ // TOOL 3: crosspad_sim
124
83
  // ═══════════════════════════════════════════════════════════════════════
125
- server.tool("crosspad_repos_status", "Show git status across all CrossPad repos (crosspad-core, crosspad-gui, crosspad-pc, ESP32-S3, 2playerCrosspad). Detects dev-mode vs submodule-mode and checks submodule pin sync.", {}, async () => {
126
- const result = crosspadReposStatus();
127
- return {
128
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
129
- };
130
- });
131
- server.tool("crosspad_diff_core", "Show what changed in crosspad-core and/or crosspad-gui relative to the pinned submodule commit. Shows commits ahead/behind, changed files, uncommitted changes. Essential for dev-mode workflows.", {
132
- submodule: z
133
- .enum(["crosspad-core", "crosspad-gui", "both"])
134
- .default("both")
135
- .describe("Which submodule(s) to diff"),
136
- }, async ({ submodule }) => {
137
- const result = crosspadDiffCore(submodule);
138
- return {
139
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
140
- };
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."),
87
+ // screenshot params
88
+ region: z.enum(["full", "lcd"]).default("full").optional()
89
+ .describe("screenshot: full window or LCD only"),
90
+ filename: z.string().optional()
91
+ .describe("screenshot: custom filename"),
92
+ save_to_file: z.boolean().default(true).optional()
93
+ .describe("screenshot: save to disk (default) or return base64"),
94
+ // input params
95
+ input_action: z.enum(["click", "pad_press", "pad_release", "encoder_rotate", "encoder_press", "encoder_release", "key"]).optional()
96
+ .describe("input: event type"),
97
+ x: z.number().optional().describe("input click: X coordinate"),
98
+ y: z.number().optional().describe("input click: Y coordinate"),
99
+ pad: z.number().optional().describe("input pad: index 0-15"),
100
+ velocity: z.number().optional().describe("input pad_press: velocity 0-127"),
101
+ delta: z.number().optional().describe("input encoder_rotate: rotation delta"),
102
+ keycode: z.number().optional().describe("input key: SDL keycode"),
103
+ // settings params
104
+ category: z.string().default("all").optional()
105
+ .describe("settings_get: all/display/keypad/vibration/wireless/audio/system"),
106
+ key: z.string().optional()
107
+ .describe("settings_set: dotted key name (e.g. 'lcd_brightness')"),
108
+ value: z.number().optional()
109
+ .describe("settings_set: numeric value"),
110
+ }, async ({ action, region, filename, save_to_file, input_action, x, y, pad, velocity, delta, keycode, category, key, value }) => {
111
+ switch (action) {
112
+ case "screenshot":
113
+ return jsonResponse(await crosspadScreenshot(save_to_file ?? true, filename));
114
+ case "input": {
115
+ if (!input_action) {
116
+ return jsonResponse({ success: false, error: "input_action is required for action=input" });
117
+ }
118
+ let input;
119
+ switch (input_action) {
120
+ case "click":
121
+ input = { action: "click", x: x ?? 0, y: y ?? 0 };
122
+ break;
123
+ case "pad_press":
124
+ input = { action: "pad_press", pad: pad ?? 0, velocity: velocity ?? 127 };
125
+ break;
126
+ case "pad_release":
127
+ input = { action: "pad_release", pad: pad ?? 0 };
128
+ break;
129
+ case "encoder_rotate":
130
+ input = { action: "encoder_rotate", delta: delta ?? 1 };
131
+ break;
132
+ case "encoder_press":
133
+ input = { action: "encoder_press" };
134
+ break;
135
+ case "encoder_release":
136
+ input = { action: "encoder_release" };
137
+ break;
138
+ case "key":
139
+ input = { action: "key", keycode: keycode ?? 0 };
140
+ break;
141
+ }
142
+ return jsonResponse(await crosspadInput(input));
143
+ }
144
+ case "stats":
145
+ return jsonResponse(await crosspadStats());
146
+ case "settings_get":
147
+ return jsonResponse(await crosspadSettingsGet(category ?? "all"));
148
+ case "settings_set": {
149
+ if (!key || value === undefined) {
150
+ return jsonResponse({ success: false, error: "key and value required for settings_set" });
151
+ }
152
+ return jsonResponse(await crosspadSettingsSet(key, value));
153
+ }
154
+ }
141
155
  });
142
156
  // ═══════════════════════════════════════════════════════════════════════
143
- // CODE & ARCHITECTURE
157
+ // TOOL 4: crosspad_repo
144
158
  // ═══════════════════════════════════════════════════════════════════════
145
- server.tool("crosspad_search_symbols", "Search for classes, functions, macros, enums across all CrossPad repos. Faster than manual grep — uses git grep under the hood.", {
146
- query: z.string().describe("Symbol name or substring to search for"),
147
- kind: z
148
- .enum(["class", "function", "macro", "enum", "typedef", "all"])
149
- .default("all")
150
- .describe("Filter by symbol kind"),
151
- repos: z
152
- .array(z.string())
153
- .default(["all"])
154
- .describe('Repo names to search: "crosspad-core", "crosspad-pc", "ESP32-S3", etc. or ["all"]'),
155
- max_results: z
156
- .number()
157
- .default(50)
158
- .describe("Max results to return"),
159
- }, async ({ query, kind, repos, max_results }) => {
160
- const result = crosspadSearchSymbols(query, kind, repos, max_results);
161
- return {
162
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
163
- };
164
- });
165
- server.tool("crosspad_scaffold_app", "Generate boilerplate for a new CrossPad app (cpp, hpp, CMakeLists.txt, optional pad logic). Returns file contents for Claude to write — does NOT create files on disk.", {
166
- name: z
167
- .string()
168
- .describe("PascalCase app name, e.g. 'Metronome'"),
169
- display_name: z
170
- .string()
171
- .optional()
172
- .describe("Human-readable name (defaults to name)"),
173
- has_pad_logic: z
174
- .boolean()
175
- .default(false)
176
- .describe("Generate IPadLogicHandler stub"),
177
- icon: z
178
- .string()
179
- .default("CrossPad_Logo_110w.png")
180
- .describe("Icon filename"),
181
- }, async ({ name, display_name, has_pad_logic, icon }) => {
182
- const result = crosspadScaffoldApp({
183
- name,
184
- display_name,
185
- has_pad_logic,
186
- icon,
187
- });
188
- return {
189
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
190
- };
191
- });
192
- server.tool("crosspad_interfaces", 'Query crosspad-core interfaces and their implementations across all platforms. Use query="list" to list all interfaces, "implementations <InterfaceName>" to find implementations, or "capabilities" to show platform capability flags.', {
193
- query: z
194
- .string()
195
- .describe('"list", "implementations <InterfaceName>", or "capabilities"'),
196
- }, async ({ query }) => {
197
- const result = crosspadInterfaces(query);
198
- return {
199
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
200
- };
201
- });
202
- server.tool("crosspad_apps", "List all registered CrossPad apps (found via REGISTER_APP macro or _register_*_app functions).", {
203
- platform: z
204
- .enum(["pc", "esp32", "2player", "all"])
205
- .default("pc")
206
- .describe("Which platform to scan"),
207
- }, async ({ platform }) => {
208
- const result = crosspadApps(platform);
209
- return {
210
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
211
- };
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 }) => {
165
+ switch (action) {
166
+ case "status":
167
+ return jsonResponse(crosspadReposStatus());
168
+ case "diff":
169
+ return jsonResponse(crosspadDiffCore(submodule ?? "both"));
170
+ }
212
171
  });
213
172
  // ═══════════════════════════════════════════════════════════════════════
214
- // SIMULATOR INTERACTION (requires running simulator with remote control)
173
+ // TOOL 5: crosspad_code
215
174
  // ═══════════════════════════════════════════════════════════════════════
216
- server.tool("crosspad_screenshot", "Capture a screenshot from the running CrossPad simulator. Saves PNG to screenshots/ dir by default. Requires the simulator to be running (use crosspad_run first).", {
217
- save_to_file: z
218
- .boolean()
219
- .default(true)
220
- .describe("Save to disk (default: true). If false, returns base64 data inline."),
221
- filename: z
222
- .string()
223
- .optional()
224
- .describe("Custom filename (default: screenshot_<timestamp>.png)"),
225
- region: z
226
- .enum(["full", "lcd"])
227
- .default("full")
228
- .describe("full: entire simulator window (490x680). lcd: LCD screen only (320x240)."),
229
- }, async ({ save_to_file, filename, region }) => {
230
- const result = await crosspadScreenshot(save_to_file, filename, region);
231
- return {
232
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
233
- };
234
- });
235
- server.tool("crosspad_input", `Send input events to the running CrossPad simulator. Requires simulator to be running.
236
-
237
- Actions:
238
- click {x, y} — mouse click at window coordinates (490x680 window)
239
- pad_press {pad, vel} — press pad 0-15 with velocity 0-127
240
- pad_release {pad} release pad 0-15
241
- encoder_rotate {delta} — rotate encoder (positive=CW, negative=CCW)
242
- encoder_press — press encoder button
243
- encoder_release — release encoder button
244
- key {keycode} — SDL keycode (e.g. 13=Enter, 27=Escape)
245
-
246
- LCD area is centered at roughly x=85..405, y=20..260 within the 490x680 window.`, {
247
- action: z
248
- .enum(["click", "pad_press", "pad_release", "encoder_rotate", "encoder_press", "encoder_release", "key"])
249
- .describe("Input action type"),
250
- x: z.number().optional().describe("X coordinate for click"),
251
- y: z.number().optional().describe("Y coordinate for click"),
252
- pad: z.number().optional().describe("Pad index 0-15 for pad_press/pad_release"),
253
- velocity: z.number().optional().describe("Velocity 0-127 for pad_press (default: 127)"),
254
- delta: z.number().optional().describe("Rotation delta for encoder_rotate"),
255
- keycode: z.number().optional().describe("SDL keycode for key action"),
256
- }, async ({ action, x, y, pad, velocity, delta, keycode }) => {
257
- let input;
175
+ server.tool("crosspad_code", "Search symbols, query interfaces, list registered apps, or scaffold new apps across CrossPad repos.", {
176
+ action: z.enum(["search", "interfaces", "apps", "scaffold"])
177
+ .describe("search: find classes/functions/macros. interfaces: query crosspad-core interfaces. apps: list REGISTER_APP registrations. scaffold: generate app boilerplate."),
178
+ // search params
179
+ query: z.string().optional()
180
+ .describe("search: symbol name. interfaces: 'list', 'implementations <Name>', or 'capabilities'."),
181
+ kind: z.enum(["class", "function", "macro", "enum", "typedef", "all"]).default("all").optional()
182
+ .describe("search: filter by symbol kind"),
183
+ repos: z.array(z.string()).default(["all"]).optional()
184
+ .describe("search: repo names to scan, or ['all']"),
185
+ max_results: z.number().default(50).optional()
186
+ .describe("search: result cap"),
187
+ // apps params
188
+ platform: z.enum(["pc", "idf", "arduino", "all"]).default("all").optional()
189
+ .describe("apps: platform to scan"),
190
+ // scaffold params
191
+ name: z.string().optional()
192
+ .describe("scaffold: PascalCase app name"),
193
+ display_name: z.string().optional()
194
+ .describe("scaffold: human-readable name"),
195
+ has_pad_logic: z.boolean().default(false).optional()
196
+ .describe("scaffold: generate IPadLogicHandler stub"),
197
+ icon: z.string().default("CrossPad_Logo_110w.png").optional()
198
+ .describe("scaffold: icon filename"),
199
+ }, async ({ action, query, kind, repos, max_results, platform, name, display_name, has_pad_logic, icon }) => {
258
200
  switch (action) {
259
- case "click":
260
- input = { action: "click", x: x ?? 0, y: y ?? 0 };
261
- break;
262
- case "pad_press":
263
- input = { action: "pad_press", pad: pad ?? 0, velocity: velocity ?? 127 };
264
- break;
265
- case "pad_release":
266
- input = { action: "pad_release", pad: pad ?? 0 };
267
- break;
268
- case "encoder_rotate":
269
- input = { action: "encoder_rotate", delta: delta ?? 1 };
270
- break;
271
- case "encoder_press":
272
- input = { action: "encoder_press" };
273
- break;
274
- case "encoder_release":
275
- input = { action: "encoder_release" };
276
- break;
277
- case "key":
278
- input = { action: "key", keycode: keycode ?? 0 };
279
- break;
280
- default:
281
- return {
282
- content: [{ type: "text", text: JSON.stringify({ success: false, error: "Unknown action" }) }],
283
- };
201
+ case "search": {
202
+ if (!query)
203
+ return jsonResponse({ error: "query is required for action=search" });
204
+ return jsonResponse(crosspadSearchSymbols(query, kind ?? "all", repos ?? ["all"], max_results ?? 50));
205
+ }
206
+ case "interfaces": {
207
+ return jsonResponse(crosspadInterfaces(query ?? "list"));
208
+ }
209
+ case "apps":
210
+ return jsonResponse(crosspadApps(platform ?? "all"));
211
+ case "scaffold": {
212
+ if (!name)
213
+ return jsonResponse({ error: "name is required for action=scaffold" });
214
+ return jsonResponse(crosspadScaffoldApp({ name, display_name, has_pad_logic: has_pad_logic ?? false, icon: icon ?? "CrossPad_Logo_110w.png" }));
215
+ }
284
216
  }
285
- const result = await crosspadInput(input);
286
- return {
287
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
288
- };
289
- });
290
- server.tool("crosspad_stats", `Query runtime statistics from the running simulator. Returns:
291
- - Platform capabilities (active flags)
292
- - Pad state (16 pads: pressed, playing, note, channel, RGB color)
293
- - Active/registered pad logic handlers
294
- - Registered apps list
295
- - Heap stats (SRAM/PSRAM free/total)
296
- - Settings summary (brightness, theme, kit, audio engine)`, {}, async () => {
297
- const result = await crosspadStats();
298
- return {
299
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
300
- };
301
217
  });
302
- server.tool("crosspad_settings", `Read or write CrossPad settings on the running simulator.
303
-
304
- Read: action="get", category="all"|"display"|"keypad"|"vibration"|"wireless"|"audio"|"system"
305
- Write: action="set", key="<setting_key>", value=<number> (booleans: 0/1)
306
-
307
- Writable keys:
308
- lcd_brightness (0-255), rgb_brightness (0-255), theme_color (0-255), perf_stats_flags (bitmask)
309
- kit (0-255), audio_engine (0/1)
310
- keypad.enable, keypad.inactive_lights, keypad.eco_mode, keypad.send_stm/ble/usb/cc (0/1)
311
- vibration.enable, vibration.on_touch, vibration.in_min/max, vibration.out_min/max (0-255)
312
- master_fx.mute (0/1), master_fx.in_volume, master_fx.out_volume (0-100)
313
-
314
- Changes are auto-saved to ~/.crosspad/preferences.json.`, {
315
- action: z
316
- .enum(["get", "set"])
317
- .describe("Read or write settings"),
318
- category: z
319
- .string()
320
- .default("all")
321
- .describe("For get: all, display, keypad, vibration, wireless, audio, system"),
322
- key: z
323
- .string()
324
- .optional()
325
- .describe("For set: dotted key name (e.g. 'lcd_brightness', 'keypad.eco_mode')"),
326
- value: z
327
- .number()
328
- .optional()
329
- .describe("For set: numeric value (booleans: 0=false, 1=true)"),
330
- }, async ({ action, category, key, value }) => {
331
- if (action === "get") {
332
- const result = await crosspadSettingsGet(category);
333
- return {
334
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
335
- };
336
- }
337
- else {
338
- if (!key || value === undefined) {
339
- return {
340
- content: [{ type: "text", text: JSON.stringify({ success: false, error: "key and value required for set" }) }],
341
- };
218
+ // ═══════════════════════════════════════════════════════════════════════
219
+ // TOOL 6: crosspad_apps
220
+ // ═══════════════════════════════════════════════════════════════════════
221
+ server.tool("crosspad_apps", "Manage CrossPad app packages: list, install, remove, update from the crosspad-apps registry.", {
222
+ 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."),
224
+ app_name: z.string().optional()
225
+ .describe("install/remove/update: app ID from registry"),
226
+ ref: z.string().default("main").optional()
227
+ .describe("install: git ref (branch/tag/commit)"),
228
+ force: z.boolean().default(false).optional()
229
+ .describe("install: install even if incompatible"),
230
+ update_all: z.boolean().default(false).optional()
231
+ .describe("update: update all installed apps"),
232
+ show_all: z.boolean().default(false).optional()
233
+ .describe("list: include incompatible apps"),
234
+ }, async ({ action, app_name, ref, force, update_all, show_all }) => {
235
+ const onLine = makeStreamLogger("app-manager");
236
+ switch (action) {
237
+ case "list":
238
+ return jsonResponse(crosspadAppList(show_all ?? false));
239
+ case "install": {
240
+ if (!app_name)
241
+ return jsonResponse({ success: false, error: "app_name required" });
242
+ return jsonResponse(await crosspadAppInstall(app_name, ref ?? "main", force ?? false, onLine));
243
+ }
244
+ case "remove": {
245
+ if (!app_name)
246
+ return jsonResponse({ success: false, error: "app_name required" });
247
+ return jsonResponse(await crosspadAppRemove(app_name, onLine));
342
248
  }
343
- const result = await crosspadSettingsSet(key, value);
344
- return {
345
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
346
- };
249
+ case "update":
250
+ return jsonResponse(await crosspadAppUpdate(app_name, update_all ?? false, onLine));
251
+ case "sync":
252
+ return jsonResponse(await crosspadAppSync(onLine));
347
253
  }
348
254
  });
349
255
  // ═══════════════════════════════════════════════════════════════════════
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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"}