@crewx/app 0.1.0-rc.5 → 0.1.0-rc.7
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/SKILL.md +29 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/src/engine.d.ts +2 -0
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +667 -16
- package/dist/src/engine.js.map +1 -1
- package/package.json +1 -1
package/SKILL.md
CHANGED
|
@@ -15,8 +15,37 @@ metadata:
|
|
|
15
15
|
| `crewx app state <instanceId>` | Read AI-visible state, buttons, and agent access |
|
|
16
16
|
| `crewx app run <instanceId|appId> <actionId> [--input <JSON>|-] [--request-id <id>]` | Run one available action |
|
|
17
17
|
| `crewx app receipt <receiptId>` | Read a safe action receipt |
|
|
18
|
+
| `crewx app dev <app> [--no-open]` | Start a foreground App dev session with build and reload watching |
|
|
19
|
+
| `crewx app check <app> [--json]` | Run the App dev checks |
|
|
20
|
+
| `crewx app run --dev <app> <actionId> [--input <JSON>|-]` | Run an App action through the dev checks |
|
|
18
21
|
| `crewx app usage` | Show this guide |
|
|
19
22
|
|
|
23
|
+
`<app>` is the App folder name under `apps/` or its `pluginId` from `ui-plugin.json`.
|
|
24
|
+
|
|
25
|
+
## App development
|
|
26
|
+
|
|
27
|
+
Run the watcher from a developer terminal and leave it in the foreground until you stop it with Ctrl-C:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
crewx app dev <app>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use `--no-open` when a browser tab is not needed. The watcher runs `npm run build` when the App has a `build` script,
|
|
34
|
+
then reloads the dev tab after each build. Without a build script, file changes trigger a manual reload.
|
|
35
|
+
|
|
36
|
+
For a one-shot agent run, build and check before calling an action:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd apps/<app>
|
|
40
|
+
npm run build
|
|
41
|
+
cd ../..
|
|
42
|
+
crewx app check <app> --json
|
|
43
|
+
crewx app run --dev <app> <actionId> --input '{"key":"value"}'
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`check` exits with code 13 when errors remain. `run --dev` prints the server result and checks; it exits non-zero when the
|
|
47
|
+
action did not succeed. A one-shot agent should use this build/check/run loop instead of holding the foreground watcher.
|
|
48
|
+
|
|
20
49
|
## When blocked
|
|
21
50
|
|
|
22
51
|
- Exit 3, 9, 10, or 11: do not click the screen, use CUA, or open another browser. Report that you could not use the App route.
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AA6BA,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9D"}
|
package/dist/cli.js
CHANGED
|
@@ -40,8 +40,11 @@ const path = __importStar(require("node:path"));
|
|
|
40
40
|
const engine_js_1 = require("./src/engine.js");
|
|
41
41
|
function emitOutcome(outcome) {
|
|
42
42
|
const ticket = process.env['CREWX_TASK_TICKET'] ?? '';
|
|
43
|
-
const
|
|
44
|
-
|
|
43
|
+
const output = outcome.stdout
|
|
44
|
+
?? (outcome.suppressOutput ? '' : `${JSON.stringify(outcome.payload)}\n`);
|
|
45
|
+
const redactedOutput = ticket ? output.split(ticket).join('[redacted]') : output;
|
|
46
|
+
if (redactedOutput)
|
|
47
|
+
process.stdout.write(redactedOutput);
|
|
45
48
|
if (outcome.stderr) {
|
|
46
49
|
const stderr = ticket ? outcome.stderr.split(ticket).join('[redacted]') : outcome.stderr;
|
|
47
50
|
process.stderr.write(`${stderr}\n`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/engine.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export interface AppCommandOutcome {
|
|
|
2
2
|
exitCode: number;
|
|
3
3
|
payload: Record<string, unknown>;
|
|
4
4
|
stderr?: string;
|
|
5
|
+
stdout?: string;
|
|
6
|
+
suppressOutput?: boolean;
|
|
5
7
|
}
|
|
6
8
|
export declare function executeAppCommand(args: string[]): Promise<AppCommandOutcome>;
|
|
7
9
|
//# sourceMappingURL=engine.d.ts.map
|
package/dist/src/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAstCD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+DlF"}
|
package/dist/src/engine.js
CHANGED
|
@@ -35,25 +35,36 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.executeAppCommand = executeAppCommand;
|
|
37
37
|
const node_crypto_1 = require("node:crypto");
|
|
38
|
+
const node_child_process_1 = require("node:child_process");
|
|
38
39
|
const fs = __importStar(require("node:fs"));
|
|
39
40
|
const http = __importStar(require("node:http"));
|
|
40
41
|
const https = __importStar(require("node:https"));
|
|
42
|
+
const path = __importStar(require("node:path"));
|
|
41
43
|
const node_url_1 = require("node:url");
|
|
44
|
+
const crewx_api_credential_1 = require("@crewx/shared/crewx-api-credential");
|
|
42
45
|
const REQUEST_TIMEOUT_MS = 15000;
|
|
46
|
+
const DEV_ACTION_TIMEOUT_MS = 60000;
|
|
47
|
+
const MAX_BUILD_OUTPUT_BYTES = 64 * 1024;
|
|
43
48
|
const APP_ID_PREFIX = 'uic_';
|
|
49
|
+
const APP_DEV_API_PREFIX = '/api/v1';
|
|
50
|
+
const APP_DEV_CAPABILITIES_PATH = '/api/v1/app-dev/capabilities';
|
|
51
|
+
const APP_DEV_SESSIONS_PATH = '/api/v1/app-dev/sessions';
|
|
52
|
+
const APP_DEV_TOO_OLD_EXIT = 12;
|
|
53
|
+
const APP_DEV_CHECK_FAILED_EXIT = 13;
|
|
44
54
|
const REQUEST_ID_PATTERN = /^[A-Za-z0-9_-]{8,128}$/;
|
|
45
55
|
const LOOPBACK_HOSTS = new Set(['127.0.0.1', '[::1]', 'localhost']);
|
|
56
|
+
const DEFAULT_APP_DEV_ENDPOINT = 'http://localhost:8150';
|
|
46
57
|
const BLOCKED_ROUTE_MESSAGE = 'Do not work around this by clicking the screen or using another browser. Report that you could not use the App route.';
|
|
47
58
|
const UNAUTHORIZED_MESSAGE = 'Do not retry. Report the failure.';
|
|
48
59
|
function isRecord(value) {
|
|
49
60
|
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
50
61
|
}
|
|
51
|
-
function failure(exitCode, code, status) {
|
|
52
|
-
let stderr;
|
|
53
|
-
if (exitCode === 3 || exitCode === 9 || exitCode === 10 || exitCode === 11) {
|
|
62
|
+
function failure(exitCode, code, status, message) {
|
|
63
|
+
let stderr = message;
|
|
64
|
+
if (!stderr && (exitCode === 3 || exitCode === 9 || exitCode === 10 || exitCode === 11)) {
|
|
54
65
|
stderr = BLOCKED_ROUTE_MESSAGE;
|
|
55
66
|
}
|
|
56
|
-
else if (exitCode === 4) {
|
|
67
|
+
else if (!stderr && exitCode === 4) {
|
|
57
68
|
stderr = UNAUTHORIZED_MESSAGE;
|
|
58
69
|
}
|
|
59
70
|
return {
|
|
@@ -204,21 +215,21 @@ function networkFailure(error) {
|
|
|
204
215
|
? failure(11, 'SANDBOX_BLOCKED', null)
|
|
205
216
|
: failure(10, 'SERVER_UNREACHABLE', null);
|
|
206
217
|
}
|
|
207
|
-
function requestJson(
|
|
208
|
-
const requestFunction =
|
|
209
|
-
const hostname =
|
|
218
|
+
function requestJson(endpoint, authorizationToken, method, requestPath, body, timeoutMs = REQUEST_TIMEOUT_MS) {
|
|
219
|
+
const requestFunction = endpoint.protocol === 'https:' ? https.request : http.request;
|
|
220
|
+
const hostname = endpoint.hostname === '[::1]'
|
|
210
221
|
? '::1'
|
|
211
|
-
:
|
|
212
|
-
const port =
|
|
222
|
+
: endpoint.hostname;
|
|
223
|
+
const port = endpoint.port ? Number(endpoint.port) : undefined;
|
|
213
224
|
const bodyText = body === undefined ? undefined : JSON.stringify(body);
|
|
214
225
|
const request = requestFunction({
|
|
215
|
-
protocol:
|
|
226
|
+
protocol: endpoint.protocol,
|
|
216
227
|
hostname,
|
|
217
228
|
...(port !== undefined ? { port } : {}),
|
|
218
229
|
method,
|
|
219
230
|
path: requestPath,
|
|
220
231
|
headers: {
|
|
221
|
-
Authorization: `Bearer ${
|
|
232
|
+
Authorization: `Bearer ${authorizationToken}`,
|
|
222
233
|
Accept: 'application/json',
|
|
223
234
|
...(bodyText !== undefined ? { 'Content-Type': 'application/json' } : {}),
|
|
224
235
|
},
|
|
@@ -227,7 +238,7 @@ function requestJson(context, method, requestPath, body) {
|
|
|
227
238
|
if (status >= 300 && status < 400) {
|
|
228
239
|
response.destroy();
|
|
229
240
|
clearTimeout(timeout);
|
|
230
|
-
resolveResponse({ status, data: undefined, invalidJson: false });
|
|
241
|
+
resolveResponse({ status, data: undefined, invalidJson: false, rawText: '' });
|
|
231
242
|
return;
|
|
232
243
|
}
|
|
233
244
|
const chunks = [];
|
|
@@ -238,10 +249,10 @@ function requestJson(context, method, requestPath, body) {
|
|
|
238
249
|
clearTimeout(timeout);
|
|
239
250
|
const raw = chunks.join('');
|
|
240
251
|
try {
|
|
241
|
-
resolveResponse({ status, data: JSON.parse(raw), invalidJson: false });
|
|
252
|
+
resolveResponse({ status, data: JSON.parse(raw), invalidJson: false, rawText: raw });
|
|
242
253
|
}
|
|
243
254
|
catch {
|
|
244
|
-
resolveResponse({ status, data: undefined, invalidJson: true });
|
|
255
|
+
resolveResponse({ status, data: undefined, invalidJson: true, rawText: raw });
|
|
245
256
|
}
|
|
246
257
|
});
|
|
247
258
|
});
|
|
@@ -256,7 +267,7 @@ function requestJson(context, method, requestPath, body) {
|
|
|
256
267
|
const error = new Error('Request timed out');
|
|
257
268
|
error.code = 'ETIMEDOUT';
|
|
258
269
|
request.destroy(error);
|
|
259
|
-
},
|
|
270
|
+
}, timeoutMs);
|
|
260
271
|
request.on('socket', (socket) => {
|
|
261
272
|
socket.once('error', (error) => {
|
|
262
273
|
socketError = error;
|
|
@@ -273,7 +284,7 @@ function requestJson(context, method, requestPath, body) {
|
|
|
273
284
|
}
|
|
274
285
|
async function performRequest(context, method, requestPath, body) {
|
|
275
286
|
try {
|
|
276
|
-
const response = await requestJson(context, method, requestPath, body);
|
|
287
|
+
const response = await requestJson(context.endpoint, context.ticket, method, requestPath, body);
|
|
277
288
|
if (response.status < 200 || response.status >= 300) {
|
|
278
289
|
return { ok: false, outcome: classifyHttpFailure(response) };
|
|
279
290
|
}
|
|
@@ -293,6 +304,221 @@ async function performRequest(context, method, requestPath, body) {
|
|
|
293
304
|
return { ok: false, outcome: networkFailure(error) };
|
|
294
305
|
}
|
|
295
306
|
}
|
|
307
|
+
function appDevTooOld(status) {
|
|
308
|
+
return failure(APP_DEV_TOO_OLD_EXIT, 'SERVER_TOO_OLD', status, 'The running CrewX does not support App dev mode.');
|
|
309
|
+
}
|
|
310
|
+
function appDevCredentialFailure(error) {
|
|
311
|
+
if (error instanceof crewx_api_credential_1.CrewxCredentialError) {
|
|
312
|
+
return failure(error.exitCode, error.code, null, error.message);
|
|
313
|
+
}
|
|
314
|
+
return failure(1, 'ERROR', null);
|
|
315
|
+
}
|
|
316
|
+
function appDevEndpoint() {
|
|
317
|
+
const raw = process.env['CREWX_ENDPOINT']?.trim() || DEFAULT_APP_DEV_ENDPOINT;
|
|
318
|
+
return getEndpoint(raw);
|
|
319
|
+
}
|
|
320
|
+
function isDirectory(directory) {
|
|
321
|
+
try {
|
|
322
|
+
return fs.statSync(directory).isDirectory();
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function isFile(filePath) {
|
|
329
|
+
try {
|
|
330
|
+
return fs.statSync(filePath).isFile();
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function resolveWorkspaceRoot(startDirectory = process.cwd()) {
|
|
337
|
+
let current = path.resolve(startDirectory);
|
|
338
|
+
while (true) {
|
|
339
|
+
if (isDirectory(path.join(current, 'apps')) || isFile(path.join(current, 'crewx.yaml'))) {
|
|
340
|
+
try {
|
|
341
|
+
return fs.realpathSync(current);
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
return undefined;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const parent = path.dirname(current);
|
|
348
|
+
if (parent === current)
|
|
349
|
+
return undefined;
|
|
350
|
+
current = parent;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
function readAppManifest(directory) {
|
|
354
|
+
try {
|
|
355
|
+
const parsed = JSON.parse(fs.readFileSync(path.join(directory, 'ui-plugin.json'), 'utf8'));
|
|
356
|
+
return isRecord(parsed) ? parsed : undefined;
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
return undefined;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
function isPathInside(parentDirectory, candidate) {
|
|
363
|
+
const relative = path.relative(parentDirectory, candidate);
|
|
364
|
+
return relative !== '' && relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative);
|
|
365
|
+
}
|
|
366
|
+
function resolveWorkspaceApp(workspacePath, appSelector) {
|
|
367
|
+
if (!appSelector || appSelector === '.' || appSelector === '..' || /[\\/]/.test(appSelector)) {
|
|
368
|
+
return failure(2, 'USAGE', null, 'App must be a folder name or pluginId.');
|
|
369
|
+
}
|
|
370
|
+
const appsDirectory = path.join(workspacePath, 'apps');
|
|
371
|
+
const directDirectory = path.join(appsDirectory, appSelector);
|
|
372
|
+
let appDirectory = isDirectory(directDirectory) ? directDirectory : undefined;
|
|
373
|
+
if (!appDirectory && isDirectory(appsDirectory)) {
|
|
374
|
+
try {
|
|
375
|
+
for (const item of fs.readdirSync(appsDirectory, { withFileTypes: true })) {
|
|
376
|
+
if (!item.isDirectory())
|
|
377
|
+
continue;
|
|
378
|
+
const candidate = path.join(appsDirectory, item.name);
|
|
379
|
+
const manifest = readAppManifest(candidate);
|
|
380
|
+
if (manifest?.['pluginId'] === appSelector) {
|
|
381
|
+
appDirectory = candidate;
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
let appId = appSelector;
|
|
390
|
+
if (appDirectory) {
|
|
391
|
+
try {
|
|
392
|
+
appDirectory = fs.realpathSync(appDirectory);
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
return failure(6, 'APP_INVALID', null);
|
|
396
|
+
}
|
|
397
|
+
if (!isPathInside(fs.realpathSync(appsDirectory), appDirectory)) {
|
|
398
|
+
return failure(2, 'USAGE', null, 'App folder must be inside the workspace apps directory.');
|
|
399
|
+
}
|
|
400
|
+
const manifest = readAppManifest(appDirectory);
|
|
401
|
+
if (typeof manifest?.['pluginId'] === 'string' && manifest['pluginId'].length > 0) {
|
|
402
|
+
appId = manifest['pluginId'];
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
appDirectory = directDirectory;
|
|
407
|
+
}
|
|
408
|
+
return { appId, appDirectory };
|
|
409
|
+
}
|
|
410
|
+
function successEnvelope(response) {
|
|
411
|
+
if (response.status < 200 || response.status >= 300) {
|
|
412
|
+
return { ok: false, outcome: classifyHttpFailure(response) };
|
|
413
|
+
}
|
|
414
|
+
if (response.invalidJson || !isRecord(response.data) || response.data['success'] !== true
|
|
415
|
+
|| !isRecord(response.data['data'])) {
|
|
416
|
+
return { ok: false, outcome: failure(1, responseErrorCode(response.data, 'ERROR'), response.status) };
|
|
417
|
+
}
|
|
418
|
+
return {
|
|
419
|
+
ok: true,
|
|
420
|
+
value: response.data,
|
|
421
|
+
status: response.status,
|
|
422
|
+
rawText: response.rawText,
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
async function checkAppDevCapabilities(endpoint, token) {
|
|
426
|
+
try {
|
|
427
|
+
const response = await requestJson(endpoint, token, 'GET', APP_DEV_CAPABILITIES_PATH);
|
|
428
|
+
if (response.status === 404 || (response.status >= 300 && response.status < 400)
|
|
429
|
+
|| response.invalidJson) {
|
|
430
|
+
return { ok: false, outcome: appDevTooOld(response.status) };
|
|
431
|
+
}
|
|
432
|
+
if (response.status < 200 || response.status >= 300) {
|
|
433
|
+
return { ok: false, outcome: classifyHttpFailure(response) };
|
|
434
|
+
}
|
|
435
|
+
if (!isRecord(response.data) || response.data['success'] !== true
|
|
436
|
+
|| !isRecord(response.data['data']) || response.data['data']['appDev'] !== 1) {
|
|
437
|
+
return { ok: false, outcome: appDevTooOld(response.status) };
|
|
438
|
+
}
|
|
439
|
+
return {
|
|
440
|
+
ok: true,
|
|
441
|
+
value: response.data,
|
|
442
|
+
status: response.status,
|
|
443
|
+
rawText: response.rawText,
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
return { ok: false, outcome: networkFailure(error) };
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
async function prepareAppDevContext(appSelector) {
|
|
451
|
+
const endpoint = appDevEndpoint();
|
|
452
|
+
if (!endpoint)
|
|
453
|
+
return { ok: false, outcome: failure(9, 'ENDPOINT_REJECTED', null) };
|
|
454
|
+
let token;
|
|
455
|
+
try {
|
|
456
|
+
token = (0, crewx_api_credential_1.resolveCrewxApiCredential)('app-dev').token;
|
|
457
|
+
}
|
|
458
|
+
catch (error) {
|
|
459
|
+
return { ok: false, outcome: appDevCredentialFailure(error) };
|
|
460
|
+
}
|
|
461
|
+
const capabilities = await checkAppDevCapabilities(endpoint, token);
|
|
462
|
+
if (!capabilities.ok)
|
|
463
|
+
return { ok: false, outcome: capabilities.outcome };
|
|
464
|
+
const workspacePath = resolveWorkspaceRoot();
|
|
465
|
+
if (!workspacePath) {
|
|
466
|
+
return {
|
|
467
|
+
ok: false,
|
|
468
|
+
outcome: failure(2, 'WORKSPACE_NOT_FOUND', null, 'No workspace root with apps/ or crewx.yaml was found.'),
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
const app = resolveWorkspaceApp(workspacePath, appSelector);
|
|
472
|
+
if ('exitCode' in app)
|
|
473
|
+
return { ok: false, outcome: app };
|
|
474
|
+
let response;
|
|
475
|
+
try {
|
|
476
|
+
response = await requestJson(endpoint, token, 'POST', APP_DEV_SESSIONS_PATH, {
|
|
477
|
+
workspacePath,
|
|
478
|
+
appId: app.appId,
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
catch (error) {
|
|
482
|
+
return { ok: false, outcome: networkFailure(error) };
|
|
483
|
+
}
|
|
484
|
+
const opened = successEnvelope(response);
|
|
485
|
+
if (!opened.ok)
|
|
486
|
+
return { ok: false, outcome: opened.outcome };
|
|
487
|
+
const data = opened.value['data'];
|
|
488
|
+
if (!isRecord(data)
|
|
489
|
+
|| typeof data['workspaceSlug'] !== 'string'
|
|
490
|
+
|| typeof data['appId'] !== 'string'
|
|
491
|
+
|| typeof data['devPath'] !== 'string'
|
|
492
|
+
|| !data['devPath'].startsWith('/ws/')) {
|
|
493
|
+
return { ok: false, outcome: failure(1, 'ERROR', response.status) };
|
|
494
|
+
}
|
|
495
|
+
if (!isDirectory(app.appDirectory)) {
|
|
496
|
+
return { ok: false, outcome: failure(6, 'APP_INVALID', response.status) };
|
|
497
|
+
}
|
|
498
|
+
return {
|
|
499
|
+
ok: true,
|
|
500
|
+
context: {
|
|
501
|
+
endpoint,
|
|
502
|
+
token,
|
|
503
|
+
workspacePath,
|
|
504
|
+
appId: data['appId'],
|
|
505
|
+
appDirectory: app.appDirectory,
|
|
506
|
+
devPath: data['devPath'],
|
|
507
|
+
},
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
function appDevPath(context, ...segments) {
|
|
511
|
+
return `${APP_DEV_API_PREFIX}${context.devPath}${segments.length > 0 ? `/${segments.map(segment).join('/')}` : ''}`;
|
|
512
|
+
}
|
|
513
|
+
async function performAppDevRequest(context, method, requestPath, body, timeoutMs = REQUEST_TIMEOUT_MS) {
|
|
514
|
+
try {
|
|
515
|
+
const response = await requestJson(context.endpoint, context.token, method, requestPath, body, timeoutMs);
|
|
516
|
+
return successEnvelope(response);
|
|
517
|
+
}
|
|
518
|
+
catch (error) {
|
|
519
|
+
return { ok: false, outcome: networkFailure(error) };
|
|
520
|
+
}
|
|
521
|
+
}
|
|
296
522
|
function appIdFrom(value) {
|
|
297
523
|
const direct = value['appId'] ?? value['id'];
|
|
298
524
|
if (typeof direct === 'string' && direct.length > 0)
|
|
@@ -484,7 +710,432 @@ function contextFromEnvironment() {
|
|
|
484
710
|
function isAppCommandOutcome(value) {
|
|
485
711
|
return 'exitCode' in value;
|
|
486
712
|
}
|
|
713
|
+
function parseSingleAppCommand(args, command) {
|
|
714
|
+
if (args[0] !== command)
|
|
715
|
+
return null;
|
|
716
|
+
const positional = [];
|
|
717
|
+
let flag = false;
|
|
718
|
+
for (const arg of args.slice(1)) {
|
|
719
|
+
if (arg === (command === 'dev' ? '--no-open' : '--json')) {
|
|
720
|
+
if (flag)
|
|
721
|
+
return null;
|
|
722
|
+
flag = true;
|
|
723
|
+
}
|
|
724
|
+
else if (arg.startsWith('--')) {
|
|
725
|
+
return null;
|
|
726
|
+
}
|
|
727
|
+
else {
|
|
728
|
+
positional.push(arg);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
if (positional.length !== 1)
|
|
732
|
+
return null;
|
|
733
|
+
return { appSelector: positional[0], flag };
|
|
734
|
+
}
|
|
735
|
+
function standardJsonOutput(outcome) {
|
|
736
|
+
return `${JSON.stringify(outcome.payload)}\n`;
|
|
737
|
+
}
|
|
738
|
+
async function executeAppCheck(args) {
|
|
739
|
+
const parsed = parseSingleAppCommand(args, 'check');
|
|
740
|
+
if (!parsed)
|
|
741
|
+
return usageFailure();
|
|
742
|
+
const prepared = await prepareAppDevContext(parsed.appSelector);
|
|
743
|
+
if (!prepared.ok)
|
|
744
|
+
return prepared.outcome;
|
|
745
|
+
const response = await performAppDevRequest(prepared.context, 'GET', appDevPath(prepared.context, 'check'));
|
|
746
|
+
if (!response.ok)
|
|
747
|
+
return response.outcome;
|
|
748
|
+
const data = response.value['data'];
|
|
749
|
+
if (!isRecord(data))
|
|
750
|
+
return failure(1, 'ERROR', response.status);
|
|
751
|
+
const summary = isRecord(data['summary']) ? data['summary'] : {};
|
|
752
|
+
const items = Array.isArray(data['items']) ? data['items'] : [];
|
|
753
|
+
const errors = typeof summary['errors'] === 'number'
|
|
754
|
+
? summary['errors']
|
|
755
|
+
: items.filter((item) => isRecord(item) && item['severity'] === 'error').length;
|
|
756
|
+
const warnings = typeof summary['warnings'] === 'number'
|
|
757
|
+
? summary['warnings']
|
|
758
|
+
: items.filter((item) => isRecord(item) && item['severity'] === 'warning').length;
|
|
759
|
+
const exitCode = errors === 0 ? 0 : APP_DEV_CHECK_FAILED_EXIT;
|
|
760
|
+
if (parsed.flag) {
|
|
761
|
+
return {
|
|
762
|
+
exitCode,
|
|
763
|
+
payload: response.value,
|
|
764
|
+
stdout: `${response.rawText ?? standardJsonOutput({ exitCode, payload: response.value })}`
|
|
765
|
+
+ (response.rawText?.endsWith('\n') ? '' : '\n'),
|
|
766
|
+
suppressOutput: true,
|
|
767
|
+
};
|
|
768
|
+
}
|
|
769
|
+
const lines = items.flatMap((item) => {
|
|
770
|
+
if (!isRecord(item))
|
|
771
|
+
return [];
|
|
772
|
+
const severity = item['severity'];
|
|
773
|
+
const marker = severity === 'error' ? '✕' : severity === 'ok' ? '✓' : '!';
|
|
774
|
+
const where = typeof item['where'] === 'string' ? item['where'] : '';
|
|
775
|
+
const code = typeof item['code'] === 'string' ? item['code'] : '';
|
|
776
|
+
return [`${marker} ${where} ${code}`];
|
|
777
|
+
});
|
|
778
|
+
lines.push(`Summary: ${errors} errors, ${warnings} warnings`);
|
|
779
|
+
return {
|
|
780
|
+
exitCode,
|
|
781
|
+
payload: {},
|
|
782
|
+
stdout: `${lines.join('\n')}\n`,
|
|
783
|
+
suppressOutput: true,
|
|
784
|
+
};
|
|
785
|
+
}
|
|
786
|
+
async function getPairingDevUrl(context) {
|
|
787
|
+
let pairingToken;
|
|
788
|
+
try {
|
|
789
|
+
pairingToken = (0, crewx_api_credential_1.resolveCrewxApiCredential)('pairing').token;
|
|
790
|
+
}
|
|
791
|
+
catch (error) {
|
|
792
|
+
return appDevCredentialFailure(error);
|
|
793
|
+
}
|
|
794
|
+
let response;
|
|
795
|
+
try {
|
|
796
|
+
response = await requestJson(context.endpoint, pairingToken, 'POST', '/api/v1/auth/local/code');
|
|
797
|
+
}
|
|
798
|
+
catch (error) {
|
|
799
|
+
return networkFailure(error);
|
|
800
|
+
}
|
|
801
|
+
if (response.status < 200 || response.status >= 300) {
|
|
802
|
+
return classifyHttpFailure(response);
|
|
803
|
+
}
|
|
804
|
+
if (response.invalidJson || !isRecord(response.data) || typeof response.data['url'] !== 'string') {
|
|
805
|
+
return failure(1, 'PAIRING_CODE_INVALID', response.status);
|
|
806
|
+
}
|
|
807
|
+
try {
|
|
808
|
+
const pairingUrl = new node_url_1.URL(response.data['url']);
|
|
809
|
+
const pairingEndpoint = getEndpoint(pairingUrl.origin);
|
|
810
|
+
const match = pairingUrl.hash.match(/^#pair=(.+)$/);
|
|
811
|
+
if (!pairingEndpoint || !match)
|
|
812
|
+
return failure(1, 'PAIRING_CODE_INVALID', response.status);
|
|
813
|
+
return `${pairingEndpoint.origin}${context.devPath}#pair=${encodeURIComponent(match[1])}`;
|
|
814
|
+
}
|
|
815
|
+
catch {
|
|
816
|
+
return failure(1, 'PAIRING_CODE_INVALID', response.status);
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
async function openPlatformUrl(url) {
|
|
820
|
+
const command = process.platform === 'darwin'
|
|
821
|
+
? 'open'
|
|
822
|
+
: process.platform === 'win32' ? 'explorer.exe' : 'xdg-open';
|
|
823
|
+
const child = (0, node_child_process_1.spawn)(command, [url], { detached: true, stdio: 'ignore' });
|
|
824
|
+
await new Promise((resolve, reject) => {
|
|
825
|
+
child.once('error', reject);
|
|
826
|
+
child.once('spawn', () => {
|
|
827
|
+
child.unref();
|
|
828
|
+
resolve();
|
|
829
|
+
});
|
|
830
|
+
});
|
|
831
|
+
}
|
|
832
|
+
async function executeAppDevAction(args) {
|
|
833
|
+
const parsed = parseCommand(['run', ...args.slice(2)]);
|
|
834
|
+
if (!parsed || parsed.command !== 'run')
|
|
835
|
+
return usageFailure();
|
|
836
|
+
const [appSelector, actionId] = parsed.positional;
|
|
837
|
+
const prepared = await prepareAppDevContext(appSelector);
|
|
838
|
+
if (!prepared.ok)
|
|
839
|
+
return prepared.outcome;
|
|
840
|
+
const state = await performAppDevRequest(prepared.context, 'GET', appDevPath(prepared.context, 'state'));
|
|
841
|
+
if (!state.ok)
|
|
842
|
+
return state.outcome;
|
|
843
|
+
const stateData = state.value['data'];
|
|
844
|
+
if (!isRecord(stateData) || typeof stateData['revision'] !== 'number') {
|
|
845
|
+
return failure(1, 'APP_DEV_RESPONSE_INVALID', state.status);
|
|
846
|
+
}
|
|
847
|
+
const requestId = parsed.requestId ?? `cxa_${(0, node_crypto_1.randomBytes)(16).toString('base64url')}`;
|
|
848
|
+
const response = await performAppDevRequest(prepared.context, 'POST', appDevPath(prepared.context, 'actions'), {
|
|
849
|
+
actionId,
|
|
850
|
+
requestId,
|
|
851
|
+
input: parsed.input,
|
|
852
|
+
expectedRevision: stateData['revision'],
|
|
853
|
+
}, DEV_ACTION_TIMEOUT_MS);
|
|
854
|
+
if (!response.ok)
|
|
855
|
+
return response.outcome;
|
|
856
|
+
const responseData = response.value['data'];
|
|
857
|
+
const receipt = isRecord(responseData) && isRecord(responseData['receipt'])
|
|
858
|
+
? responseData['receipt']
|
|
859
|
+
: undefined;
|
|
860
|
+
return {
|
|
861
|
+
exitCode: receipt?.['outcome'] === 'succeeded' ? 0 : 1,
|
|
862
|
+
payload: response.value,
|
|
863
|
+
stdout: `${response.rawText ?? standardJsonOutput({ exitCode: 0, payload: response.value })}`
|
|
864
|
+
+ (response.rawText?.endsWith('\n') ? '' : '\n'),
|
|
865
|
+
suppressOutput: true,
|
|
866
|
+
};
|
|
867
|
+
}
|
|
868
|
+
function hasBuildScript(appDirectory) {
|
|
869
|
+
try {
|
|
870
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(appDirectory, 'package.json'), 'utf8'));
|
|
871
|
+
if (!isRecord(packageJson) || !isRecord(packageJson['scripts']))
|
|
872
|
+
return false;
|
|
873
|
+
const build = packageJson['scripts']['build'];
|
|
874
|
+
return typeof build === 'string' && build.trim().length > 0;
|
|
875
|
+
}
|
|
876
|
+
catch {
|
|
877
|
+
return false;
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
function buildOutputPaths(appDirectory) {
|
|
881
|
+
const result = new Set([path.normalize('ui-plugin.json')]);
|
|
882
|
+
const manifest = readAppManifest(appDirectory);
|
|
883
|
+
const entry = manifest?.['entry'];
|
|
884
|
+
if (typeof entry === 'string' && entry.length > 0 && !path.isAbsolute(entry)) {
|
|
885
|
+
const normalized = path.normalize(entry);
|
|
886
|
+
if (normalized !== '..' && !normalized.startsWith(`..${path.sep}`))
|
|
887
|
+
result.add(normalized);
|
|
888
|
+
}
|
|
889
|
+
return result;
|
|
890
|
+
}
|
|
891
|
+
function outputFingerprint(appDirectory, relativePath) {
|
|
892
|
+
try {
|
|
893
|
+
const stats = fs.statSync(path.join(appDirectory, relativePath));
|
|
894
|
+
return `${stats.size}:${stats.mtimeMs}:${stats.ino}`;
|
|
895
|
+
}
|
|
896
|
+
catch {
|
|
897
|
+
return null;
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
function snapshotBuildOutputs(appDirectory, paths) {
|
|
901
|
+
return new Map([...paths].map((relativePath) => [
|
|
902
|
+
relativePath,
|
|
903
|
+
outputFingerprint(appDirectory, relativePath),
|
|
904
|
+
]));
|
|
905
|
+
}
|
|
906
|
+
function runNpmBuild(appDirectory, onChild) {
|
|
907
|
+
const startedAt = Date.now();
|
|
908
|
+
let output = '';
|
|
909
|
+
let settled = false;
|
|
910
|
+
const appendOutput = (chunk) => {
|
|
911
|
+
const next = Buffer.from(output + (Buffer.isBuffer(chunk) ? chunk.toString('utf8') : chunk), 'utf8');
|
|
912
|
+
output = next.length > MAX_BUILD_OUTPUT_BYTES
|
|
913
|
+
? next.subarray(next.length - MAX_BUILD_OUTPUT_BYTES).toString('utf8')
|
|
914
|
+
: next.toString('utf8');
|
|
915
|
+
};
|
|
916
|
+
return new Promise((resolve) => {
|
|
917
|
+
const child = (0, node_child_process_1.spawn)('npm', ['run', 'build'], {
|
|
918
|
+
cwd: appDirectory,
|
|
919
|
+
env: process.env,
|
|
920
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
921
|
+
});
|
|
922
|
+
onChild(child);
|
|
923
|
+
child.stdout?.on('data', appendOutput);
|
|
924
|
+
child.stderr?.on('data', appendOutput);
|
|
925
|
+
const finish = (ok) => {
|
|
926
|
+
if (settled)
|
|
927
|
+
return;
|
|
928
|
+
settled = true;
|
|
929
|
+
onChild(undefined);
|
|
930
|
+
resolve({
|
|
931
|
+
ok,
|
|
932
|
+
ms: Math.max(0, Date.now() - startedAt),
|
|
933
|
+
output,
|
|
934
|
+
});
|
|
935
|
+
};
|
|
936
|
+
child.once('error', (error) => {
|
|
937
|
+
appendOutput(`${error.message}\n`);
|
|
938
|
+
finish(false);
|
|
939
|
+
});
|
|
940
|
+
child.once('close', (code) => finish(code === 0));
|
|
941
|
+
});
|
|
942
|
+
}
|
|
943
|
+
function responseCode(outcome) {
|
|
944
|
+
const error = outcome.payload['error'];
|
|
945
|
+
return isRecord(error) && typeof error['code'] === 'string' ? error['code'] : 'ERROR';
|
|
946
|
+
}
|
|
947
|
+
async function postAppDevReload(context, body) {
|
|
948
|
+
const response = await performAppDevRequest(context, 'POST', appDevPath(context, 'reload'), body);
|
|
949
|
+
if (!response.ok)
|
|
950
|
+
return { errorCode: responseCode(response.outcome) };
|
|
951
|
+
const data = response.value['data'];
|
|
952
|
+
return isRecord(data) && typeof data['generation'] === 'number'
|
|
953
|
+
? { generation: data['generation'] }
|
|
954
|
+
: { errorCode: 'APP_DEV_RESPONSE_INVALID' };
|
|
955
|
+
}
|
|
956
|
+
async function runAppDevWatcher(context, buildEnabled) {
|
|
957
|
+
const parentPid = process.ppid;
|
|
958
|
+
let watcher;
|
|
959
|
+
try {
|
|
960
|
+
watcher = fs.watch(context.appDirectory, { recursive: true }, (_event, filename) => {
|
|
961
|
+
onFileChange(filename);
|
|
962
|
+
});
|
|
963
|
+
}
|
|
964
|
+
catch (error) {
|
|
965
|
+
return failure(1, 'WATCH_FAILED', null, error instanceof Error ? error.message : 'Unable to watch the App folder.');
|
|
966
|
+
}
|
|
967
|
+
let closed = false;
|
|
968
|
+
let stopRequested = false;
|
|
969
|
+
let cycleRunning = false;
|
|
970
|
+
let queuedChange = false;
|
|
971
|
+
let queuedPath = '';
|
|
972
|
+
let pendingPath = '';
|
|
973
|
+
let debounceTimer;
|
|
974
|
+
let parentCheckTimer;
|
|
975
|
+
let activeBuild;
|
|
976
|
+
let finalOutcome = { exitCode: 0, payload: {}, suppressOutput: true };
|
|
977
|
+
const recentOutputEvents = new Map();
|
|
978
|
+
let resolveRun;
|
|
979
|
+
const result = new Promise((resolve) => {
|
|
980
|
+
resolveRun = resolve;
|
|
981
|
+
});
|
|
982
|
+
const writeLine = (line) => {
|
|
983
|
+
process.stdout.write(`${line}\n`);
|
|
984
|
+
};
|
|
985
|
+
const finish = () => {
|
|
986
|
+
if (closed)
|
|
987
|
+
return;
|
|
988
|
+
closed = true;
|
|
989
|
+
if (debounceTimer)
|
|
990
|
+
clearTimeout(debounceTimer);
|
|
991
|
+
if (parentCheckTimer)
|
|
992
|
+
clearInterval(parentCheckTimer);
|
|
993
|
+
process.removeListener('SIGINT', onSignal);
|
|
994
|
+
process.removeListener('SIGTERM', onSignal);
|
|
995
|
+
resolveRun(finalOutcome);
|
|
996
|
+
};
|
|
997
|
+
const onSignal = () => {
|
|
998
|
+
if (stopRequested)
|
|
999
|
+
return;
|
|
1000
|
+
stopRequested = true;
|
|
1001
|
+
watcher.close();
|
|
1002
|
+
if (debounceTimer)
|
|
1003
|
+
clearTimeout(debounceTimer);
|
|
1004
|
+
if (activeBuild && activeBuild.exitCode === null)
|
|
1005
|
+
activeBuild.kill('SIGTERM');
|
|
1006
|
+
if (!cycleRunning)
|
|
1007
|
+
finish();
|
|
1008
|
+
};
|
|
1009
|
+
const onFileChange = (filename) => {
|
|
1010
|
+
if (stopRequested || closed)
|
|
1011
|
+
return;
|
|
1012
|
+
const relativePath = filename === null ? '' : path.normalize(filename.toString());
|
|
1013
|
+
const parts = relativePath.split(path.sep);
|
|
1014
|
+
if (parts.some((part) => part === 'node_modules' || part === '.crewx' || part === 'dist'))
|
|
1015
|
+
return;
|
|
1016
|
+
const outputPaths = buildEnabled ? buildOutputPaths(context.appDirectory) : new Set();
|
|
1017
|
+
if (activeBuild && outputPaths.has(relativePath))
|
|
1018
|
+
return;
|
|
1019
|
+
const suppressedUntil = recentOutputEvents.get(relativePath);
|
|
1020
|
+
if (suppressedUntil !== undefined) {
|
|
1021
|
+
if (Date.now() <= suppressedUntil)
|
|
1022
|
+
return;
|
|
1023
|
+
recentOutputEvents.delete(relativePath);
|
|
1024
|
+
}
|
|
1025
|
+
if (cycleRunning) {
|
|
1026
|
+
queuedChange = true;
|
|
1027
|
+
queuedPath = relativePath || 'App files';
|
|
1028
|
+
return;
|
|
1029
|
+
}
|
|
1030
|
+
pendingPath = relativePath || 'App files';
|
|
1031
|
+
if (debounceTimer)
|
|
1032
|
+
clearTimeout(debounceTimer);
|
|
1033
|
+
debounceTimer = setTimeout(() => {
|
|
1034
|
+
debounceTimer = undefined;
|
|
1035
|
+
const changedPath = pendingPath || 'App files';
|
|
1036
|
+
pendingPath = '';
|
|
1037
|
+
void runCycle(changedPath, false);
|
|
1038
|
+
}, 200);
|
|
1039
|
+
};
|
|
1040
|
+
const reloadLabel = async (body) => {
|
|
1041
|
+
const reload = await postAppDevReload(context, body);
|
|
1042
|
+
return reload.generation === undefined ? `failed ${reload.errorCode ?? 'ERROR'}` : String(reload.generation);
|
|
1043
|
+
};
|
|
1044
|
+
const runCycle = async (changedPath, initial) => {
|
|
1045
|
+
if (stopRequested || closed)
|
|
1046
|
+
return;
|
|
1047
|
+
cycleRunning = true;
|
|
1048
|
+
if (buildEnabled) {
|
|
1049
|
+
const outputPaths = buildOutputPaths(context.appDirectory);
|
|
1050
|
+
const before = snapshotBuildOutputs(context.appDirectory, outputPaths);
|
|
1051
|
+
const build = await runNpmBuild(context.appDirectory, (child) => {
|
|
1052
|
+
activeBuild = child;
|
|
1053
|
+
});
|
|
1054
|
+
const after = snapshotBuildOutputs(context.appDirectory, outputPaths);
|
|
1055
|
+
for (const [outputPath, fingerprint] of after) {
|
|
1056
|
+
if (before.get(outputPath) !== fingerprint) {
|
|
1057
|
+
recentOutputEvents.set(outputPath, Date.now() + 1000);
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
if (stopRequested) {
|
|
1061
|
+
cycleRunning = false;
|
|
1062
|
+
finish();
|
|
1063
|
+
return;
|
|
1064
|
+
}
|
|
1065
|
+
const reloadBody = {
|
|
1066
|
+
reason: 'build',
|
|
1067
|
+
build: {
|
|
1068
|
+
ok: build.ok,
|
|
1069
|
+
ms: build.ms,
|
|
1070
|
+
...(!build.ok ? { output: build.output } : {}),
|
|
1071
|
+
},
|
|
1072
|
+
};
|
|
1073
|
+
const generationLabel = await reloadLabel(reloadBody);
|
|
1074
|
+
writeLine(`${initial ? 'initial' : changedPath} -> build ${build.ok ? 'ok' : 'failed'} ${build.ms}ms -> reload ${generationLabel}`);
|
|
1075
|
+
}
|
|
1076
|
+
else if (!initial) {
|
|
1077
|
+
const generationLabel = await reloadLabel({ reason: 'manual' });
|
|
1078
|
+
writeLine(`${changedPath} -> reload ${generationLabel}`);
|
|
1079
|
+
}
|
|
1080
|
+
cycleRunning = false;
|
|
1081
|
+
if (stopRequested) {
|
|
1082
|
+
finish();
|
|
1083
|
+
return;
|
|
1084
|
+
}
|
|
1085
|
+
if (queuedChange) {
|
|
1086
|
+
const nextPath = queuedPath || 'App files';
|
|
1087
|
+
queuedChange = false;
|
|
1088
|
+
queuedPath = '';
|
|
1089
|
+
void runCycle(nextPath, false);
|
|
1090
|
+
return;
|
|
1091
|
+
}
|
|
1092
|
+
if (stopRequested)
|
|
1093
|
+
finish();
|
|
1094
|
+
};
|
|
1095
|
+
watcher.once('error', (error) => {
|
|
1096
|
+
finalOutcome = failure(1, 'WATCH_FAILED', null, error.message);
|
|
1097
|
+
onSignal();
|
|
1098
|
+
});
|
|
1099
|
+
process.once('SIGINT', onSignal);
|
|
1100
|
+
process.once('SIGTERM', onSignal);
|
|
1101
|
+
parentCheckTimer = setInterval(() => {
|
|
1102
|
+
if (process.ppid !== parentPid)
|
|
1103
|
+
onSignal();
|
|
1104
|
+
}, 1000);
|
|
1105
|
+
parentCheckTimer.unref();
|
|
1106
|
+
if (buildEnabled)
|
|
1107
|
+
void runCycle('initial', true);
|
|
1108
|
+
return result;
|
|
1109
|
+
}
|
|
1110
|
+
async function executeAppDev(args) {
|
|
1111
|
+
const parsed = parseSingleAppCommand(args, 'dev');
|
|
1112
|
+
if (!parsed)
|
|
1113
|
+
return usageFailure();
|
|
1114
|
+
const prepared = await prepareAppDevContext(parsed.appSelector);
|
|
1115
|
+
if (!prepared.ok)
|
|
1116
|
+
return prepared.outcome;
|
|
1117
|
+
const browserUrl = `${prepared.context.endpoint.origin}${prepared.context.devPath}`;
|
|
1118
|
+
process.stdout.write(`${browserUrl}\n`);
|
|
1119
|
+
if (!parsed.flag) {
|
|
1120
|
+
const pairingUrl = await getPairingDevUrl(prepared.context);
|
|
1121
|
+
if (typeof pairingUrl !== 'string')
|
|
1122
|
+
return pairingUrl;
|
|
1123
|
+
try {
|
|
1124
|
+
await openPlatformUrl(pairingUrl);
|
|
1125
|
+
}
|
|
1126
|
+
catch (error) {
|
|
1127
|
+
return failure(1, 'BROWSER_OPEN_FAILED', null, error instanceof Error ? error.message : 'Could not open the App dev tab.');
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
return runAppDevWatcher(prepared.context, hasBuildScript(prepared.context.appDirectory));
|
|
1131
|
+
}
|
|
487
1132
|
async function executeAppCommand(args) {
|
|
1133
|
+
if (args[0] === 'dev')
|
|
1134
|
+
return executeAppDev(args);
|
|
1135
|
+
if (args[0] === 'check')
|
|
1136
|
+
return executeAppCheck(args);
|
|
1137
|
+
if (args[0] === 'run' && args[1] === '--dev')
|
|
1138
|
+
return executeAppDevAction(args);
|
|
488
1139
|
const parsed = parseCommand(args);
|
|
489
1140
|
if (!parsed)
|
|
490
1141
|
return usageFailure();
|
package/dist/src/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|