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.
- package/README.md +31 -18
- package/dist/config.d.ts +2 -2
- package/dist/config.js +17 -13
- package/dist/config.js.map +1 -1
- package/dist/index.js +139 -31
- package/dist/index.js.map +1 -1
- package/dist/tools/app-manager.d.ts +43 -9
- package/dist/tools/app-manager.js +195 -117
- package/dist/tools/app-manager.js.map +1 -1
- package/dist/tools/architecture.js +0 -2
- package/dist/tools/architecture.js.map +1 -1
- package/dist/tools/build.d.ts +4 -0
- package/dist/tools/build.js +4 -2
- package/dist/tools/build.js.map +1 -1
- package/dist/tools/idf-build.d.ts +13 -0
- package/dist/tools/idf-build.js +8 -4
- package/dist/tools/idf-build.js.map +1 -1
- package/dist/tools/idf-flash.d.ts +20 -0
- package/dist/tools/idf-flash.js +184 -0
- package/dist/tools/idf-flash.js.map +1 -0
- package/dist/tools/idf-monitor.d.ts +29 -0
- package/dist/tools/idf-monitor.js +168 -0
- package/dist/tools/idf-monitor.js.map +1 -0
- package/dist/tools/midi.d.ts +27 -0
- package/dist/tools/midi.js +112 -0
- package/dist/tools/midi.js.map +1 -0
- package/dist/tools/repo-actions.d.ts +46 -0
- package/dist/tools/repo-actions.js +273 -0
- package/dist/tools/repo-actions.js.map +1 -0
- package/dist/tools/symbols.d.ts +16 -1
- package/dist/tools/symbols.js +118 -50
- package/dist/tools/symbols.js.map +1 -1
- package/dist/tools/test.d.ts +7 -0
- package/dist/tools/test.js +4 -2
- package/dist/tools/test.js.map +1 -1
- package/dist/utils/device.d.ts +38 -0
- package/dist/utils/device.js +287 -0
- package/dist/utils/device.js.map +1 -0
- package/dist/utils/remote-client.d.ts +1 -0
- package/dist/utils/remote-client.js +24 -1
- package/dist/utils/remote-client.js.map +1 -1
- package/package.json +6 -3
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP tool: manage CrossPad app packages via the crosspad-apps registry.
|
|
3
|
-
* - list: reads registry + manifest JSON
|
|
3
|
+
* - list: reads registry + manifest JSON from ALL detected repos (no Python needed)
|
|
4
4
|
* - install/remove/update/sync: delegates to app_manager.py via Python subprocess
|
|
5
|
+
*
|
|
6
|
+
* Each platform repo has app_manager.py at a different path:
|
|
7
|
+
* platform-idf → tools/app_manager.py
|
|
8
|
+
* crosspad-pc → scripts/app_manager.py
|
|
9
|
+
* ESP32-S3 → scripts/app_manager.py
|
|
5
10
|
*/
|
|
6
11
|
import { OnLine } from "../utils/exec.js";
|
|
12
|
+
interface AppEntry {
|
|
13
|
+
name: string;
|
|
14
|
+
version: string;
|
|
15
|
+
description: string;
|
|
16
|
+
repo: string;
|
|
17
|
+
component_path: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
category: string;
|
|
20
|
+
platforms: string[];
|
|
21
|
+
requires: Record<string, string>;
|
|
22
|
+
}
|
|
7
23
|
export interface AppListResult {
|
|
8
24
|
success: boolean;
|
|
9
|
-
platform: string;
|
|
10
25
|
apps: Array<{
|
|
11
26
|
id: string;
|
|
12
27
|
name: string;
|
|
@@ -14,9 +29,11 @@ export interface AppListResult {
|
|
|
14
29
|
description: string;
|
|
15
30
|
category: string;
|
|
16
31
|
platforms: string[];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
32
|
+
installed_in: Array<{
|
|
33
|
+
platform: string;
|
|
34
|
+
version: string;
|
|
35
|
+
ref: string;
|
|
36
|
+
}>;
|
|
20
37
|
compatible: boolean;
|
|
21
38
|
}>;
|
|
22
39
|
installed_count: number;
|
|
@@ -26,12 +43,29 @@ export interface AppListResult {
|
|
|
26
43
|
export interface AppActionResult {
|
|
27
44
|
success: boolean;
|
|
28
45
|
action: string;
|
|
46
|
+
platform: string;
|
|
29
47
|
app_name?: string;
|
|
30
48
|
output: string;
|
|
31
49
|
error?: string;
|
|
32
50
|
}
|
|
51
|
+
interface PlatformInfo {
|
|
52
|
+
label: string;
|
|
53
|
+
root: string;
|
|
54
|
+
scriptDir: string;
|
|
55
|
+
platformId: string;
|
|
56
|
+
}
|
|
57
|
+
/** @internal exported for testing */
|
|
58
|
+
export declare function getAvailablePlatforms(): PlatformInfo[];
|
|
59
|
+
/** @internal exported for testing */
|
|
60
|
+
export declare function isCompatible(app: AppEntry, platformId: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Build a Python command that invokes app_manager.py's AppManager class.
|
|
63
|
+
*/
|
|
64
|
+
/** @internal exported for testing */
|
|
65
|
+
export declare function buildPythonCmd(projectRoot: string, scriptDir: string, method: string, args?: string): string;
|
|
33
66
|
export declare function crosspadAppList(showAll?: boolean): AppListResult;
|
|
34
|
-
export declare function crosspadAppInstall(appName: string, ref?: string, force?: boolean, onLine?: OnLine): Promise<AppActionResult>;
|
|
35
|
-
export declare function crosspadAppRemove(appName: string, onLine?: OnLine): Promise<AppActionResult>;
|
|
36
|
-
export declare function crosspadAppUpdate(appName?: string, updateAll?: boolean, onLine?: OnLine): Promise<AppActionResult>;
|
|
37
|
-
export declare function crosspadAppSync(onLine?: OnLine): Promise<AppActionResult>;
|
|
67
|
+
export declare function crosspadAppInstall(appName: string, platform: string, ref?: string, force?: boolean, onLine?: OnLine): Promise<AppActionResult>;
|
|
68
|
+
export declare function crosspadAppRemove(appName: string, platform: string, onLine?: OnLine): Promise<AppActionResult>;
|
|
69
|
+
export declare function crosspadAppUpdate(platform: string, appName?: string, updateAll?: boolean, onLine?: OnLine): Promise<AppActionResult>;
|
|
70
|
+
export declare function crosspadAppSync(platform: string, onLine?: OnLine): Promise<AppActionResult>;
|
|
71
|
+
export {};
|
|
@@ -1,36 +1,76 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP tool: manage CrossPad app packages via the crosspad-apps registry.
|
|
3
|
-
* - list: reads registry + manifest JSON
|
|
3
|
+
* - list: reads registry + manifest JSON from ALL detected repos (no Python needed)
|
|
4
4
|
* - install/remove/update/sync: delegates to app_manager.py via Python subprocess
|
|
5
|
+
*
|
|
6
|
+
* Each platform repo has app_manager.py at a different path:
|
|
7
|
+
* platform-idf → tools/app_manager.py
|
|
8
|
+
* crosspad-pc → scripts/app_manager.py
|
|
9
|
+
* ESP32-S3 → scripts/app_manager.py
|
|
5
10
|
*/
|
|
6
11
|
import fs from "fs";
|
|
7
12
|
import path from "path";
|
|
8
|
-
import {
|
|
13
|
+
import { execSync } from "child_process";
|
|
14
|
+
import { getRepos } from "../config.js";
|
|
9
15
|
import { runCommand, runCommandStream } from "../utils/exec.js";
|
|
16
|
+
/** @internal exported for testing */
|
|
17
|
+
export function getAvailablePlatforms() {
|
|
18
|
+
const repos = getRepos();
|
|
19
|
+
const platforms = [];
|
|
20
|
+
if (repos["platform-idf"]) {
|
|
21
|
+
platforms.push({
|
|
22
|
+
label: "idf",
|
|
23
|
+
root: repos["platform-idf"],
|
|
24
|
+
scriptDir: "tools",
|
|
25
|
+
platformId: "esp-idf",
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (repos["crosspad-pc"]) {
|
|
29
|
+
platforms.push({
|
|
30
|
+
label: "pc",
|
|
31
|
+
root: repos["crosspad-pc"],
|
|
32
|
+
scriptDir: "scripts",
|
|
33
|
+
platformId: "pc",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (repos["ESP32-S3"]) {
|
|
37
|
+
platforms.push({
|
|
38
|
+
label: "arduino",
|
|
39
|
+
root: repos["ESP32-S3"],
|
|
40
|
+
scriptDir: "scripts",
|
|
41
|
+
platformId: "arduino",
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return platforms;
|
|
45
|
+
}
|
|
46
|
+
function resolvePlatform(platform) {
|
|
47
|
+
return getAvailablePlatforms().find((p) => p.label === platform) ?? null;
|
|
48
|
+
}
|
|
10
49
|
// ═══════════════════════════════════════════════════════════════════════
|
|
11
50
|
// HELPERS
|
|
12
51
|
// ═══════════════════════════════════════════════════════════════════════
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
52
|
+
const REGISTRY_CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
53
|
+
let _registryCache = null;
|
|
54
|
+
function loadRegistryJsonFrom(repoRoot) {
|
|
55
|
+
const registryPath = path.join(repoRoot, "app-registry.json");
|
|
56
|
+
// Return cached if fresh and from same source
|
|
57
|
+
if (_registryCache && _registryCache.source === registryPath && Date.now() - _registryCache.timestamp < REGISTRY_CACHE_TTL_MS) {
|
|
58
|
+
return _registryCache.data;
|
|
59
|
+
}
|
|
60
|
+
if (!fs.existsSync(registryPath))
|
|
61
|
+
return null;
|
|
62
|
+
try {
|
|
63
|
+
const data = JSON.parse(fs.readFileSync(registryPath, "utf-8"));
|
|
64
|
+
const apps = data.apps ?? {};
|
|
65
|
+
_registryCache = { data: apps, timestamp: Date.now(), source: registryPath };
|
|
66
|
+
return apps;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
29
70
|
}
|
|
30
|
-
return null;
|
|
31
71
|
}
|
|
32
|
-
function
|
|
33
|
-
const manifestPath = path.join(
|
|
72
|
+
function loadManifestFrom(repoRoot) {
|
|
73
|
+
const manifestPath = path.join(repoRoot, "apps.json");
|
|
34
74
|
if (!fs.existsSync(manifestPath))
|
|
35
75
|
return {};
|
|
36
76
|
try {
|
|
@@ -41,16 +81,17 @@ function loadManifest() {
|
|
|
41
81
|
return {};
|
|
42
82
|
}
|
|
43
83
|
}
|
|
44
|
-
|
|
45
|
-
|
|
84
|
+
/** @internal exported for testing */
|
|
85
|
+
export function isCompatible(app, platformId) {
|
|
86
|
+
return app.platforms.includes(platformId);
|
|
46
87
|
}
|
|
47
88
|
/**
|
|
48
89
|
* Build a Python command that invokes app_manager.py's AppManager class.
|
|
49
90
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
91
|
+
/** @internal exported for testing */
|
|
92
|
+
export function buildPythonCmd(projectRoot, scriptDir, method, args = "") {
|
|
93
|
+
const toolsDir = path.join(projectRoot, scriptDir).replace(/\\/g, "/");
|
|
94
|
+
const projectDir = projectRoot.replace(/\\/g, "/");
|
|
54
95
|
const script = [
|
|
55
96
|
`import sys, os`,
|
|
56
97
|
`sys.path.insert(0, '${toolsDir}')`,
|
|
@@ -61,44 +102,68 @@ function buildPythonCmd(method, args = "") {
|
|
|
61
102
|
return `python3 -c "${script}"`;
|
|
62
103
|
}
|
|
63
104
|
// ═══════════════════════════════════════════════════════════════════════
|
|
64
|
-
// LIST — reads JSON
|
|
105
|
+
// LIST — reads JSON from ALL repos, aggregates installation status
|
|
65
106
|
// ═══════════════════════════════════════════════════════════════════════
|
|
66
107
|
export function crosspadAppList(showAll = false) {
|
|
67
|
-
|
|
108
|
+
const platforms = getAvailablePlatforms();
|
|
109
|
+
if (platforms.length === 0) {
|
|
68
110
|
return {
|
|
69
111
|
success: false,
|
|
70
|
-
platform: PLATFORM,
|
|
71
112
|
apps: [],
|
|
72
113
|
installed_count: 0,
|
|
73
114
|
total_count: 0,
|
|
74
|
-
error:
|
|
115
|
+
error: "No CrossPad repos found on disk.",
|
|
75
116
|
};
|
|
76
117
|
}
|
|
77
|
-
//
|
|
78
|
-
let
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
118
|
+
// Load registry from first repo that has it
|
|
119
|
+
let registry = null;
|
|
120
|
+
for (const plat of platforms) {
|
|
121
|
+
registry = loadRegistryJsonFrom(plat.root);
|
|
122
|
+
if (registry)
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
if (!registry) {
|
|
126
|
+
// Try refreshing via Python on the first available platform
|
|
127
|
+
const plat = platforms[0];
|
|
128
|
+
const refreshCmd = buildPythonCmd(plat.root, plat.scriptDir, "_load_registry");
|
|
129
|
+
runCommand(refreshCmd, plat.root, 30_000);
|
|
130
|
+
registry = loadRegistryJsonFrom(plat.root);
|
|
84
131
|
}
|
|
85
|
-
if (!
|
|
132
|
+
if (!registry) {
|
|
86
133
|
return {
|
|
87
134
|
success: false,
|
|
88
|
-
platform: PLATFORM,
|
|
89
135
|
apps: [],
|
|
90
136
|
installed_count: 0,
|
|
91
137
|
total_count: 0,
|
|
92
138
|
error: "Could not load registry. Ensure 'gh' CLI is installed and authenticated.",
|
|
93
139
|
};
|
|
94
140
|
}
|
|
95
|
-
|
|
141
|
+
// Load manifests from ALL repos
|
|
142
|
+
const manifests = [];
|
|
143
|
+
for (const plat of platforms) {
|
|
144
|
+
const installed = loadManifestFrom(plat.root);
|
|
145
|
+
if (Object.keys(installed).length > 0) {
|
|
146
|
+
manifests.push({ platform: plat.label, platformId: plat.platformId, installed });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
96
149
|
const result = [];
|
|
97
|
-
for (const [id, app] of Object.entries(
|
|
98
|
-
|
|
150
|
+
for (const [id, app] of Object.entries(registry)) {
|
|
151
|
+
// Check where this app is installed
|
|
152
|
+
const installedIn = [];
|
|
153
|
+
for (const m of manifests) {
|
|
154
|
+
const entry = m.installed[id];
|
|
155
|
+
if (entry) {
|
|
156
|
+
installedIn.push({
|
|
157
|
+
platform: m.platform,
|
|
158
|
+
version: entry.version,
|
|
159
|
+
ref: entry.ref,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Compatible = supported on at least one detected platform
|
|
164
|
+
const compatible = platforms.some((p) => app.platforms.includes(p.platformId));
|
|
99
165
|
if (!showAll && !compatible)
|
|
100
166
|
continue;
|
|
101
|
-
const installed = manifest[id];
|
|
102
167
|
result.push({
|
|
103
168
|
id,
|
|
104
169
|
name: app.name,
|
|
@@ -106,70 +171,113 @@ export function crosspadAppList(showAll = false) {
|
|
|
106
171
|
description: app.description,
|
|
107
172
|
category: app.category,
|
|
108
173
|
platforms: app.platforms,
|
|
109
|
-
|
|
110
|
-
installed_version: installed?.version,
|
|
111
|
-
installed_ref: installed?.ref,
|
|
174
|
+
installed_in: installedIn,
|
|
112
175
|
compatible,
|
|
113
176
|
});
|
|
114
177
|
}
|
|
115
|
-
const installedCount = result.filter((a) => a.
|
|
178
|
+
const installedCount = result.filter((a) => a.installed_in.length > 0).length;
|
|
116
179
|
return {
|
|
117
180
|
success: true,
|
|
118
|
-
platform: PLATFORM,
|
|
119
181
|
apps: result,
|
|
120
182
|
installed_count: installedCount,
|
|
121
|
-
total_count: Object.keys(
|
|
183
|
+
total_count: Object.keys(registry).length,
|
|
122
184
|
};
|
|
123
185
|
}
|
|
124
186
|
// ═══════════════════════════════════════════════════════════════════════
|
|
125
|
-
// INSTALL / REMOVE / UPDATE / SYNC — delegates to Python
|
|
187
|
+
// INSTALL / REMOVE / UPDATE / SYNC — delegates to Python per platform
|
|
126
188
|
// ═══════════════════════════════════════════════════════════════════════
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (onLine) {
|
|
132
|
-
const result = await runCommandStream(cmd, CROSSPAD_IDF_ROOT, onLine, 120_000);
|
|
189
|
+
function requirePlatform(platform) {
|
|
190
|
+
const info = resolvePlatform(platform);
|
|
191
|
+
if (!info) {
|
|
192
|
+
const available = getAvailablePlatforms().map((p) => p.label);
|
|
133
193
|
return {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
194
|
+
error: {
|
|
195
|
+
success: false,
|
|
196
|
+
action: "",
|
|
197
|
+
platform,
|
|
198
|
+
output: "",
|
|
199
|
+
error: `Unknown platform "${platform}". Available: ${available.join(", ")}`,
|
|
200
|
+
},
|
|
139
201
|
};
|
|
140
202
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
203
|
+
return { info };
|
|
204
|
+
}
|
|
205
|
+
let _pythonOk = null;
|
|
206
|
+
function isPythonAvailable() {
|
|
207
|
+
if (_pythonOk !== null)
|
|
208
|
+
return _pythonOk;
|
|
209
|
+
try {
|
|
210
|
+
execSync("python3 --version", { stdio: "ignore", timeout: 5000 });
|
|
211
|
+
_pythonOk = true;
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
_pythonOk = false;
|
|
215
|
+
}
|
|
216
|
+
return _pythonOk;
|
|
217
|
+
}
|
|
218
|
+
function validatePythonSetup(info) {
|
|
219
|
+
if (!isPythonAvailable()) {
|
|
220
|
+
return "python3 is not installed or not in PATH. Install Python 3 to use app management.";
|
|
221
|
+
}
|
|
222
|
+
const scriptPath = path.join(info.root, info.scriptDir, "app_manager.py");
|
|
223
|
+
if (!fs.existsSync(scriptPath)) {
|
|
224
|
+
return `app_manager.py not found at ${scriptPath}. Run 'idf.py app-list' first to bootstrap the script.`;
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
149
227
|
}
|
|
150
|
-
|
|
151
|
-
const
|
|
152
|
-
|
|
228
|
+
async function runPythonAction(info, action, method, args, appName, onLine, timeoutMs) {
|
|
229
|
+
const validationError = validatePythonSetup(info);
|
|
230
|
+
if (validationError) {
|
|
231
|
+
return {
|
|
232
|
+
success: false,
|
|
233
|
+
action,
|
|
234
|
+
platform: info.label,
|
|
235
|
+
app_name: appName,
|
|
236
|
+
output: "",
|
|
237
|
+
error: validationError,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const cmd = buildPythonCmd(info.root, info.scriptDir, method, args);
|
|
153
241
|
if (onLine) {
|
|
154
|
-
const result = await runCommandStream(cmd,
|
|
242
|
+
const result = await runCommandStream(cmd, info.root, onLine, timeoutMs);
|
|
155
243
|
return {
|
|
156
244
|
success: result.success,
|
|
157
|
-
action
|
|
245
|
+
action,
|
|
246
|
+
platform: info.label,
|
|
158
247
|
app_name: appName,
|
|
159
248
|
output: result.stdout,
|
|
160
249
|
error: result.success ? undefined : result.stderr || result.stdout,
|
|
161
250
|
};
|
|
162
251
|
}
|
|
163
|
-
const result = runCommand(cmd,
|
|
252
|
+
const result = runCommand(cmd, info.root, timeoutMs);
|
|
164
253
|
return {
|
|
165
254
|
success: result.success,
|
|
166
|
-
action
|
|
255
|
+
action,
|
|
256
|
+
platform: info.label,
|
|
167
257
|
app_name: appName,
|
|
168
258
|
output: result.stdout,
|
|
169
259
|
error: result.success ? undefined : result.stderr || result.stdout,
|
|
170
260
|
};
|
|
171
261
|
}
|
|
172
|
-
export async function
|
|
262
|
+
export async function crosspadAppInstall(appName, platform, ref = "main", force = false, onLine) {
|
|
263
|
+
const resolved = requirePlatform(platform);
|
|
264
|
+
if ("error" in resolved)
|
|
265
|
+
return { ...resolved.error, action: "install" };
|
|
266
|
+
const forceArg = force ? ", force=True" : "";
|
|
267
|
+
onLine?.("stdout", `[app-manager] Installing ${appName} on ${platform} (ref=${ref})...`);
|
|
268
|
+
return runPythonAction(resolved.info, "install", "install", `'${appName}', ref='${ref}'${forceArg}`, appName, onLine, 120_000);
|
|
269
|
+
}
|
|
270
|
+
export async function crosspadAppRemove(appName, platform, onLine) {
|
|
271
|
+
const resolved = requirePlatform(platform);
|
|
272
|
+
if ("error" in resolved)
|
|
273
|
+
return { ...resolved.error, action: "remove" };
|
|
274
|
+
onLine?.("stdout", `[app-manager] Removing ${appName} from ${platform}...`);
|
|
275
|
+
return runPythonAction(resolved.info, "remove", "remove", `'${appName}'`, appName, onLine, 60_000);
|
|
276
|
+
}
|
|
277
|
+
export async function crosspadAppUpdate(platform, appName, updateAll = false, onLine) {
|
|
278
|
+
const resolved = requirePlatform(platform);
|
|
279
|
+
if ("error" in resolved)
|
|
280
|
+
return { ...resolved.error, action: "update" };
|
|
173
281
|
let args;
|
|
174
282
|
if (updateAll) {
|
|
175
283
|
args = "update_all=True";
|
|
@@ -181,50 +289,20 @@ export async function crosspadAppUpdate(appName, updateAll = false, onLine) {
|
|
|
181
289
|
return {
|
|
182
290
|
success: false,
|
|
183
291
|
action: "update",
|
|
292
|
+
platform,
|
|
184
293
|
output: "",
|
|
185
294
|
error: "Specify app_name or set update_all=true",
|
|
186
295
|
};
|
|
187
296
|
}
|
|
188
|
-
const cmd = buildPythonCmd("update", args);
|
|
189
297
|
const label = updateAll ? "all apps" : appName;
|
|
190
|
-
onLine?.("stdout", `[app-manager] Updating ${label}...`);
|
|
191
|
-
|
|
192
|
-
const result = await runCommandStream(cmd, CROSSPAD_IDF_ROOT, onLine, 120_000);
|
|
193
|
-
return {
|
|
194
|
-
success: result.success,
|
|
195
|
-
action: "update",
|
|
196
|
-
app_name: appName,
|
|
197
|
-
output: result.stdout,
|
|
198
|
-
error: result.success ? undefined : result.stderr || result.stdout,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
const result = runCommand(cmd, CROSSPAD_IDF_ROOT, 120_000);
|
|
202
|
-
return {
|
|
203
|
-
success: result.success,
|
|
204
|
-
action: "update",
|
|
205
|
-
app_name: appName,
|
|
206
|
-
output: result.stdout,
|
|
207
|
-
error: result.success ? undefined : result.stderr || result.stdout,
|
|
208
|
-
};
|
|
298
|
+
onLine?.("stdout", `[app-manager] Updating ${label} on ${platform}...`);
|
|
299
|
+
return runPythonAction(resolved.info, "update", "update", args, appName, onLine, 120_000);
|
|
209
300
|
}
|
|
210
|
-
export async function crosspadAppSync(onLine) {
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
success: result.success,
|
|
217
|
-
action: "sync",
|
|
218
|
-
output: result.stdout,
|
|
219
|
-
error: result.success ? undefined : result.stderr || result.stdout,
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
const result = runCommand(cmd, CROSSPAD_IDF_ROOT, 60_000);
|
|
223
|
-
return {
|
|
224
|
-
success: result.success,
|
|
225
|
-
action: "sync",
|
|
226
|
-
output: result.stdout,
|
|
227
|
-
error: result.success ? undefined : result.stderr || result.stdout,
|
|
228
|
-
};
|
|
301
|
+
export async function crosspadAppSync(platform, onLine) {
|
|
302
|
+
const resolved = requirePlatform(platform);
|
|
303
|
+
if ("error" in resolved)
|
|
304
|
+
return { ...resolved.error, action: "sync" };
|
|
305
|
+
onLine?.("stdout", `[app-manager] Syncing manifest on ${platform}...`);
|
|
306
|
+
return runPythonAction(resolved.info, "sync", "sync", "", undefined, onLine, 60_000);
|
|
229
307
|
}
|
|
230
308
|
//# sourceMappingURL=app-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../../src/tools/app-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../../src/tools/app-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,6 @@ function findImplementations(interfaceName) {
|
|
|
40
40
|
"crosspad-gui": "gui",
|
|
41
41
|
"crosspad-pc": "PC",
|
|
42
42
|
"ESP32-S3": "arduino",
|
|
43
|
-
"2playerCrosspad": "2player",
|
|
44
43
|
"platform-idf": "idf",
|
|
45
44
|
};
|
|
46
45
|
for (const [name, repoPath] of Object.entries(repos)) {
|
|
@@ -92,7 +91,6 @@ function queryCapabilities() {
|
|
|
92
91
|
"crosspad-pc": "PC",
|
|
93
92
|
"ESP32-S3": "arduino",
|
|
94
93
|
"platform-idf": "idf",
|
|
95
|
-
"2playerCrosspad": "2player",
|
|
96
94
|
};
|
|
97
95
|
const platforms = {};
|
|
98
96
|
for (const [name, repoPath] of Object.entries(repos)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/tools/architecture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAe9C,SAAS,cAAc;IACrB,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,SAAS,IAAI,CAAC,GAAW;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAChC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACrD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBACd,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;qBACnC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,CAAC;IAClB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAqB;IAChD,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,sCAAsC,aAAa,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,MAAM,WAAW,GAA2B;QAC1C,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,SAAS;QACrB,
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/tools/architecture.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/build.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export interface BuildResult {
|
|
|
6
6
|
warnings_count: number;
|
|
7
7
|
output_path: string;
|
|
8
8
|
}
|
|
9
|
+
/** @internal exported for testing */
|
|
10
|
+
export declare function parseErrors(output: string): string[];
|
|
11
|
+
/** @internal exported for testing */
|
|
12
|
+
export declare function countWarnings(output: string): number;
|
|
9
13
|
export declare function crosspadBuild(mode: "incremental" | "clean" | "reconfigure", onLine?: OnLine): Promise<BuildResult>;
|
|
10
14
|
export interface RunResult {
|
|
11
15
|
pid: number | null;
|
package/dist/tools/build.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import { CROSSPAD_PC_ROOT, BUILD_DIR, BIN_EXE, VCPKG_TOOLCHAIN } from "../config.js";
|
|
3
3
|
import { runBuild, runBuildStream, spawnDetached } from "../utils/exec.js";
|
|
4
|
-
|
|
4
|
+
/** @internal exported for testing */
|
|
5
|
+
export function parseErrors(output) {
|
|
5
6
|
const errors = [];
|
|
6
7
|
for (const line of output.split("\n")) {
|
|
7
8
|
if (/\berror\b/i.test(line) && !line.includes("error(s)")) {
|
|
@@ -10,7 +11,8 @@ function parseErrors(output) {
|
|
|
10
11
|
}
|
|
11
12
|
return errors.slice(0, 20); // Cap at 20 errors
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
+
/** @internal exported for testing */
|
|
15
|
+
export function countWarnings(output) {
|
|
14
16
|
let count = 0;
|
|
15
17
|
for (const line of output.split("\n")) {
|
|
16
18
|
if (/\bwarning\b/i.test(line) && !line.includes("warning(s)")) {
|