crewly 1.20.174 → 1.20.175
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/config/skills/orchestrator/restart-crewly/SKILL.md +11 -23
- package/config/skills/orchestrator/restart-crewly/execute.sh +7 -5
- package/dist/backend/backend/src/constants.d.ts +55 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +55 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts +67 -0
- package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/system/system-control.controller.js +183 -0
- package/dist/backend/backend/src/controllers/system/system-control.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts +0 -13
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.js +0 -87
- package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +7 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +84 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.js +4 -2
- package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +7 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts +58 -0
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.service.js +128 -52
- package/dist/backend/backend/src/services/system/auto-update.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.utils.d.ts +7 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.utils.js +14 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.js.map +1 -1
- package/dist/backend/backend/src/services/system/restart-replacement.d.ts +78 -0
- package/dist/backend/backend/src/services/system/restart-replacement.d.ts.map +1 -0
- package/dist/backend/backend/src/services/system/restart-replacement.js +109 -0
- package/dist/backend/backend/src/services/system/restart-replacement.js.map +1 -0
- package/dist/backend/backend/src/services/system/supervisor-detect.d.ts +78 -0
- package/dist/backend/backend/src/services/system/supervisor-detect.d.ts.map +1 -0
- package/dist/backend/backend/src/services/system/supervisor-detect.js +171 -0
- package/dist/backend/backend/src/services/system/supervisor-detect.js.map +1 -0
- package/dist/backend/backend/src/services/system/system-control.service.d.ts +337 -0
- package/dist/backend/backend/src/services/system/system-control.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/system/system-control.service.js +574 -0
- package/dist/backend/backend/src/services/system/system-control.service.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +55 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +55 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/system/auto-update.utils.d.ts +7 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.d.ts.map +1 -1
- package/dist/cli/backend/src/services/system/auto-update.utils.js +14 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.js.map +1 -1
- package/frontend/dist/assets/{index-36e85ac8.js → index-0726afab.js} +281 -281
- package/frontend/dist/assets/{index-15501404.css → index-0c5449b5.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.utils.js","sourceRoot":"","sources":["../../../../../../backend/src/services/system/auto-update.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auto-update.utils.js","sourceRoot":"","sources":["../../../../../../backend/src/services/system/auto-update.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detached replacement launcher for a restart nobody else will relaunch.
|
|
3
|
+
*
|
|
4
|
+
* When the backend runs without `crewly start` above it (or we cannot tell),
|
|
5
|
+
* the owner's Restart / Upgrade must still bring it back. Right before the
|
|
6
|
+
* graceful shutdown, the backend starts a small detached `node -e` launcher.
|
|
7
|
+
* The launcher:
|
|
8
|
+
*
|
|
9
|
+
* 1. waits until the old backend process is gone (capped);
|
|
10
|
+
* 2. waits a short grace period and checks the port — if something already
|
|
11
|
+
* answers there, a supervisor brought Crewly back and it does nothing;
|
|
12
|
+
* 3. otherwise starts the backend again with the same node, flags, script and
|
|
13
|
+
* arguments, detached, logging to `<crewlyHome>/logs/restart-replacement.log`.
|
|
14
|
+
*
|
|
15
|
+
* The environment is inherited through `spawn` (never put on the command
|
|
16
|
+
* line, where `ps` would show secrets).
|
|
17
|
+
*
|
|
18
|
+
* @module services/system/restart-replacement
|
|
19
|
+
*/
|
|
20
|
+
import { type SpawnOptions, type ChildProcess } from 'child_process';
|
|
21
|
+
/** Everything the launcher needs (passed as one JSON argument). */
|
|
22
|
+
export interface ReplacementPlan {
|
|
23
|
+
/** Node binary to run the backend with */
|
|
24
|
+
execPath: string;
|
|
25
|
+
/** Arguments: node flags, then the entry script and its arguments */
|
|
26
|
+
args: string[];
|
|
27
|
+
/** Working directory for the new backend */
|
|
28
|
+
cwd: string;
|
|
29
|
+
/** The backend that is about to exit */
|
|
30
|
+
oldPid: number;
|
|
31
|
+
/** Port the backend serves on (the "already back" check) */
|
|
32
|
+
port: number;
|
|
33
|
+
/** Wait this long after the old process exits before checking the port (ms) */
|
|
34
|
+
portGraceMs: number;
|
|
35
|
+
/** Give up waiting for the old process after this long (ms) */
|
|
36
|
+
maxWaitMs: number;
|
|
37
|
+
/** Poll interval for the old process (ms) */
|
|
38
|
+
pollMs: number;
|
|
39
|
+
/** Launcher log */
|
|
40
|
+
logFile: string;
|
|
41
|
+
}
|
|
42
|
+
/** Inputs for {@link buildReplacementPlan}. */
|
|
43
|
+
export interface ReplacementPlanInput {
|
|
44
|
+
execPath: string;
|
|
45
|
+
execArgv: string[];
|
|
46
|
+
argv: string[];
|
|
47
|
+
cwd: string;
|
|
48
|
+
pid: number;
|
|
49
|
+
port: number;
|
|
50
|
+
crewlyHome: string;
|
|
51
|
+
/** True when a supervisor might relaunch us first (longer grace before the port check) */
|
|
52
|
+
supervisorUnknown: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build the launcher plan for the running process.
|
|
56
|
+
*
|
|
57
|
+
* @param input - Process facts
|
|
58
|
+
* @returns The plan
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildReplacementPlan(input: ReplacementPlanInput): ReplacementPlan;
|
|
61
|
+
/**
|
|
62
|
+
* The launcher program (CommonJS, run with `node -e`). Reads the plan from
|
|
63
|
+
* `process.argv[1]`.
|
|
64
|
+
*/
|
|
65
|
+
export declare const REPLACEMENT_LAUNCHER_SCRIPT = "\nconst fs = require('fs');\nconst net = require('net');\nconst { spawn, execFileSync } = require('child_process');\nconst p = JSON.parse(process.argv[1]);\nconst log = (m) => { try { fs.appendFileSync(p.logFile, new Date().toISOString() + ' ' + m + '\\n'); } catch (e) {} };\nconst sleep = (ms) => new Promise((r) => setTimeout(r, ms));\nconst alive = (pid) => {\n try { process.kill(pid, 0); } catch (e) { if (e.code !== 'EPERM') return false; }\n if (process.platform === 'win32') return true;\n try { return !/Z/.test(execFileSync('ps', ['-o', 'stat=', '-p', String(pid)], { encoding: 'utf-8' })); } catch (e) { return false; }\n};\nconst answers = () => new Promise((resolve) => {\n const s = net.connect({ port: p.port, host: '127.0.0.1' });\n const done = (v) => { s.destroy(); resolve(v); };\n s.once('connect', () => done(true));\n s.once('error', () => done(false));\n s.setTimeout(2000, () => done(false));\n});\n(async () => {\n const started = Date.now();\n while (alive(p.oldPid)) {\n if (Date.now() - started > p.maxWaitMs) { log('Old Crewly process ' + p.oldPid + ' is still running after ' + p.maxWaitMs + ' ms; not starting a second copy'); return; }\n await sleep(p.pollMs);\n }\n log('Old Crewly process ' + p.oldPid + ' exited');\n await sleep(p.portGraceMs);\n if (await answers()) { log('Port ' + p.port + ' already answers; Crewly was brought back by something else'); return; }\n const fd = fs.openSync(p.logFile, 'a');\n const child = spawn(p.execPath, p.args, { cwd: fs.existsSync(p.cwd) ? p.cwd : undefined, env: process.env, detached: true, stdio: ['ignore', fd, fd] });\n child.on('error', (e) => log('Could not start Crewly: ' + e.message));\n log('Started Crewly again (pid ' + child.pid + '): ' + p.execPath + ' ' + p.args.join(' '));\n child.unref();\n})();\n";
|
|
66
|
+
/** Spawn function (tests inject a fake). */
|
|
67
|
+
export type SpawnFn = (command: string, args: string[], options: SpawnOptions) => Pick<ChildProcess, 'pid' | 'unref'>;
|
|
68
|
+
/**
|
|
69
|
+
* Start the detached launcher. It outlives this process.
|
|
70
|
+
*
|
|
71
|
+
* @param plan - Launcher plan
|
|
72
|
+
* @param launcherCwd - Directory the launcher itself runs in (must outlive an upgrade)
|
|
73
|
+
* @param env - Environment handed to the launcher and, through it, to the new backend
|
|
74
|
+
* @param spawnFn - Spawn (tests)
|
|
75
|
+
* @returns The launcher pid, when known
|
|
76
|
+
*/
|
|
77
|
+
export declare function spawnReplacementLauncher(plan: ReplacementPlan, launcherCwd: string, env?: NodeJS.ProcessEnv, spawnFn?: SpawnFn): number | undefined;
|
|
78
|
+
//# sourceMappingURL=restart-replacement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-replacement.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/system/restart-replacement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAS,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAG5E,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC/B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAcjF;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+xDAkCvC,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;AAEtH;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,GAAE,OAAe,GACtB,MAAM,GAAG,SAAS,CAcpB"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detached replacement launcher for a restart nobody else will relaunch.
|
|
3
|
+
*
|
|
4
|
+
* When the backend runs without `crewly start` above it (or we cannot tell),
|
|
5
|
+
* the owner's Restart / Upgrade must still bring it back. Right before the
|
|
6
|
+
* graceful shutdown, the backend starts a small detached `node -e` launcher.
|
|
7
|
+
* The launcher:
|
|
8
|
+
*
|
|
9
|
+
* 1. waits until the old backend process is gone (capped);
|
|
10
|
+
* 2. waits a short grace period and checks the port — if something already
|
|
11
|
+
* answers there, a supervisor brought Crewly back and it does nothing;
|
|
12
|
+
* 3. otherwise starts the backend again with the same node, flags, script and
|
|
13
|
+
* arguments, detached, logging to `<crewlyHome>/logs/restart-replacement.log`.
|
|
14
|
+
*
|
|
15
|
+
* The environment is inherited through `spawn` (never put on the command
|
|
16
|
+
* line, where `ps` would show secrets).
|
|
17
|
+
*
|
|
18
|
+
* @module services/system/restart-replacement
|
|
19
|
+
*/
|
|
20
|
+
import * as fs from 'fs';
|
|
21
|
+
import * as path from 'path';
|
|
22
|
+
import { spawn } from 'child_process';
|
|
23
|
+
import { SYSTEM_CONTROL_CONSTANTS } from '../../constants.js';
|
|
24
|
+
/**
|
|
25
|
+
* Build the launcher plan for the running process.
|
|
26
|
+
*
|
|
27
|
+
* @param input - Process facts
|
|
28
|
+
* @returns The plan
|
|
29
|
+
*/
|
|
30
|
+
export function buildReplacementPlan(input) {
|
|
31
|
+
return {
|
|
32
|
+
execPath: input.execPath,
|
|
33
|
+
args: [...input.execArgv, ...input.argv.slice(1)],
|
|
34
|
+
cwd: input.cwd,
|
|
35
|
+
oldPid: input.pid,
|
|
36
|
+
port: input.port,
|
|
37
|
+
portGraceMs: input.supervisorUnknown
|
|
38
|
+
? SYSTEM_CONTROL_CONSTANTS.REPLACEMENT_PORT_GRACE_UNKNOWN_MS
|
|
39
|
+
: SYSTEM_CONTROL_CONSTANTS.REPLACEMENT_PORT_GRACE_MS,
|
|
40
|
+
maxWaitMs: SYSTEM_CONTROL_CONSTANTS.REPLACEMENT_MAX_WAIT_MS,
|
|
41
|
+
pollMs: SYSTEM_CONTROL_CONSTANTS.REPLACEMENT_PID_POLL_MS,
|
|
42
|
+
logFile: path.join(input.crewlyHome, 'logs', SYSTEM_CONTROL_CONSTANTS.REPLACEMENT_LOG_FILE),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The launcher program (CommonJS, run with `node -e`). Reads the plan from
|
|
47
|
+
* `process.argv[1]`.
|
|
48
|
+
*/
|
|
49
|
+
export const REPLACEMENT_LAUNCHER_SCRIPT = `
|
|
50
|
+
const fs = require('fs');
|
|
51
|
+
const net = require('net');
|
|
52
|
+
const { spawn, execFileSync } = require('child_process');
|
|
53
|
+
const p = JSON.parse(process.argv[1]);
|
|
54
|
+
const log = (m) => { try { fs.appendFileSync(p.logFile, new Date().toISOString() + ' ' + m + '\\n'); } catch (e) {} };
|
|
55
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
56
|
+
const alive = (pid) => {
|
|
57
|
+
try { process.kill(pid, 0); } catch (e) { if (e.code !== 'EPERM') return false; }
|
|
58
|
+
if (process.platform === 'win32') return true;
|
|
59
|
+
try { return !/Z/.test(execFileSync('ps', ['-o', 'stat=', '-p', String(pid)], { encoding: 'utf-8' })); } catch (e) { return false; }
|
|
60
|
+
};
|
|
61
|
+
const answers = () => new Promise((resolve) => {
|
|
62
|
+
const s = net.connect({ port: p.port, host: '127.0.0.1' });
|
|
63
|
+
const done = (v) => { s.destroy(); resolve(v); };
|
|
64
|
+
s.once('connect', () => done(true));
|
|
65
|
+
s.once('error', () => done(false));
|
|
66
|
+
s.setTimeout(2000, () => done(false));
|
|
67
|
+
});
|
|
68
|
+
(async () => {
|
|
69
|
+
const started = Date.now();
|
|
70
|
+
while (alive(p.oldPid)) {
|
|
71
|
+
if (Date.now() - started > p.maxWaitMs) { log('Old Crewly process ' + p.oldPid + ' is still running after ' + p.maxWaitMs + ' ms; not starting a second copy'); return; }
|
|
72
|
+
await sleep(p.pollMs);
|
|
73
|
+
}
|
|
74
|
+
log('Old Crewly process ' + p.oldPid + ' exited');
|
|
75
|
+
await sleep(p.portGraceMs);
|
|
76
|
+
if (await answers()) { log('Port ' + p.port + ' already answers; Crewly was brought back by something else'); return; }
|
|
77
|
+
const fd = fs.openSync(p.logFile, 'a');
|
|
78
|
+
const child = spawn(p.execPath, p.args, { cwd: fs.existsSync(p.cwd) ? p.cwd : undefined, env: process.env, detached: true, stdio: ['ignore', fd, fd] });
|
|
79
|
+
child.on('error', (e) => log('Could not start Crewly: ' + e.message));
|
|
80
|
+
log('Started Crewly again (pid ' + child.pid + '): ' + p.execPath + ' ' + p.args.join(' '));
|
|
81
|
+
child.unref();
|
|
82
|
+
})();
|
|
83
|
+
`;
|
|
84
|
+
/**
|
|
85
|
+
* Start the detached launcher. It outlives this process.
|
|
86
|
+
*
|
|
87
|
+
* @param plan - Launcher plan
|
|
88
|
+
* @param launcherCwd - Directory the launcher itself runs in (must outlive an upgrade)
|
|
89
|
+
* @param env - Environment handed to the launcher and, through it, to the new backend
|
|
90
|
+
* @param spawnFn - Spawn (tests)
|
|
91
|
+
* @returns The launcher pid, when known
|
|
92
|
+
*/
|
|
93
|
+
export function spawnReplacementLauncher(plan, launcherCwd, env = process.env, spawnFn = spawn) {
|
|
94
|
+
try {
|
|
95
|
+
fs.mkdirSync(path.dirname(plan.logFile), { recursive: true });
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// The launcher logs best-effort
|
|
99
|
+
}
|
|
100
|
+
const child = spawnFn(plan.execPath, ['-e', REPLACEMENT_LAUNCHER_SCRIPT, JSON.stringify(plan)], {
|
|
101
|
+
cwd: launcherCwd,
|
|
102
|
+
env,
|
|
103
|
+
detached: true,
|
|
104
|
+
stdio: 'ignore',
|
|
105
|
+
});
|
|
106
|
+
child.unref();
|
|
107
|
+
return child.pid;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=restart-replacement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-replacement.js","sourceRoot":"","sources":["../../../../../../backend/src/services/system/restart-replacement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAwC,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAqC9D;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAA2B;IAC/D,OAAO;QACN,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,CAAC,GAAG;QACjB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,iBAAiB;YACnC,CAAC,CAAC,wBAAwB,CAAC,iCAAiC;YAC5D,CAAC,CAAC,wBAAwB,CAAC,yBAAyB;QACrD,SAAS,EAAE,wBAAwB,CAAC,uBAAuB;QAC3D,MAAM,EAAE,wBAAwB,CAAC,uBAAuB;QACxD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,wBAAwB,CAAC,oBAAoB,CAAC;KAC3F,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC1C,CAAC;AAKF;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACvC,IAAqB,EACrB,WAAmB,EACnB,MAAyB,OAAO,CAAC,GAAG,EACpC,UAAmB,KAAK;IAExB,IAAI,CAAC;QACJ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACR,gCAAgC;IACjC,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;QAC/F,GAAG,EAAE,WAAW;QAChB,GAAG;QACH,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KACf,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,KAAK,CAAC,GAAG,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Who brings the backend back after it exits?
|
|
3
|
+
*
|
|
4
|
+
* The owner's Restart / Upgrade buttons must never leave a machine down, so
|
|
5
|
+
* before exiting the backend needs to know whether something will relaunch
|
|
6
|
+
* it (specs/2026-10-01-upgrade-restart-controls.md):
|
|
7
|
+
*
|
|
8
|
+
* - `crewly start` (the CLI restart loop) respawns the backend when it exits
|
|
9
|
+
* with RESTART_REQUESTED (120). That is the parent in every supported run
|
|
10
|
+
* mode: foreground, the macOS login item (`~/.crewly/crewly-start.command`),
|
|
11
|
+
* the systemd user unit (`crewly.service`) and the desktop app. The outer
|
|
12
|
+
* layer is reported too, because it decides what happens if the CLI itself
|
|
13
|
+
* dies.
|
|
14
|
+
* - PM2 restarts the app on exit by default.
|
|
15
|
+
* - A backend started some other way (directly under systemd or launchd,
|
|
16
|
+
* a bare `node dist/...`) may or may not come back; that is "unknown", and
|
|
17
|
+
* "none" when there is clearly no supervisor at all.
|
|
18
|
+
*
|
|
19
|
+
* Pure: the environment and process lookups are injected.
|
|
20
|
+
*
|
|
21
|
+
* @module services/system/supervisor-detect
|
|
22
|
+
*/
|
|
23
|
+
/** The process that relaunches the backend, as far as we can tell. */
|
|
24
|
+
export type SupervisorKind = 'crewly-start' | 'pm2' | 'systemd' | 'launchd' | 'none' | 'unknown';
|
|
25
|
+
/** What keeps the `crewly start` chain itself alive. */
|
|
26
|
+
export type OuterSupervisor = 'systemd' | 'login-wrapper' | 'launchd' | null;
|
|
27
|
+
/** Whether the backend will come back after it exits. */
|
|
28
|
+
export type RelaunchAnswer = 'yes' | 'no' | 'unknown';
|
|
29
|
+
/** Result of {@link detectSupervisor}. */
|
|
30
|
+
export interface SupervisorInfo {
|
|
31
|
+
/** Direct relauncher of the backend */
|
|
32
|
+
kind: SupervisorKind;
|
|
33
|
+
/** What keeps the chain above it alive, when known */
|
|
34
|
+
outer: OuterSupervisor;
|
|
35
|
+
/** Whether exiting brings the backend back without our help */
|
|
36
|
+
willRelaunch: RelaunchAnswer;
|
|
37
|
+
/** One owner-readable sentence */
|
|
38
|
+
detail: string;
|
|
39
|
+
}
|
|
40
|
+
/** Inputs for {@link detectSupervisor}. */
|
|
41
|
+
export interface SupervisorProbe {
|
|
42
|
+
/** Backend environment */
|
|
43
|
+
env: NodeJS.ProcessEnv;
|
|
44
|
+
/** Platform */
|
|
45
|
+
platform: NodeJS.Platform;
|
|
46
|
+
/** Command line of the parent process (null when unreadable) */
|
|
47
|
+
parentCommandLine: () => string | null;
|
|
48
|
+
/** Command line of the grandparent process (null when unreadable) */
|
|
49
|
+
grandparentCommandLine: () => string | null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Work out what relaunches the backend.
|
|
53
|
+
*
|
|
54
|
+
* @param probe - Environment and process lookups
|
|
55
|
+
* @returns Supervisor info
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* detectSupervisor({ env: { CREWLY_RESTART_SUPERVISOR: 'cli-start', INVOCATION_ID: 'x' }, platform: 'linux',
|
|
60
|
+
* parentCommandLine: () => null, grandparentCommandLine: () => null });
|
|
61
|
+
* // { kind: 'crewly-start', outer: 'systemd', willRelaunch: 'yes', ... }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function detectSupervisor(probe: SupervisorProbe): SupervisorInfo;
|
|
65
|
+
/**
|
|
66
|
+
* Parent pid of a process (POSIX, via `ps`).
|
|
67
|
+
*
|
|
68
|
+
* @param pid - Process id
|
|
69
|
+
* @returns The parent pid, or null
|
|
70
|
+
*/
|
|
71
|
+
export declare function readParentPid(pid: number): number | null;
|
|
72
|
+
/**
|
|
73
|
+
* Detect the supervisor of the running process.
|
|
74
|
+
*
|
|
75
|
+
* @returns Supervisor info
|
|
76
|
+
*/
|
|
77
|
+
export declare function detectRunningSupervisor(): SupervisorInfo;
|
|
78
|
+
//# sourceMappingURL=supervisor-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-detect.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/system/supervisor-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,sEAAsE;AACtE,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjG,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7E,yDAAyD;AACzD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtD,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC9B,uCAAuC;IACvC,IAAI,EAAE,cAAc,CAAC;IACrB,sDAAsD;IACtD,KAAK,EAAE,eAAe,CAAC;IACvB,+DAA+D;IAC/D,YAAY,EAAE,cAAc,CAAC;IAC7B,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;CACf;AAED,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC/B,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,qEAAqE;IACrE,sBAAsB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC5C;AA6BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,CAwEvE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASxD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,cAAc,CAUxD"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Who brings the backend back after it exits?
|
|
3
|
+
*
|
|
4
|
+
* The owner's Restart / Upgrade buttons must never leave a machine down, so
|
|
5
|
+
* before exiting the backend needs to know whether something will relaunch
|
|
6
|
+
* it (specs/2026-10-01-upgrade-restart-controls.md):
|
|
7
|
+
*
|
|
8
|
+
* - `crewly start` (the CLI restart loop) respawns the backend when it exits
|
|
9
|
+
* with RESTART_REQUESTED (120). That is the parent in every supported run
|
|
10
|
+
* mode: foreground, the macOS login item (`~/.crewly/crewly-start.command`),
|
|
11
|
+
* the systemd user unit (`crewly.service`) and the desktop app. The outer
|
|
12
|
+
* layer is reported too, because it decides what happens if the CLI itself
|
|
13
|
+
* dies.
|
|
14
|
+
* - PM2 restarts the app on exit by default.
|
|
15
|
+
* - A backend started some other way (directly under systemd or launchd,
|
|
16
|
+
* a bare `node dist/...`) may or may not come back; that is "unknown", and
|
|
17
|
+
* "none" when there is clearly no supervisor at all.
|
|
18
|
+
*
|
|
19
|
+
* Pure: the environment and process lookups are injected.
|
|
20
|
+
*
|
|
21
|
+
* @module services/system/supervisor-detect
|
|
22
|
+
*/
|
|
23
|
+
import { execFileSync } from 'child_process';
|
|
24
|
+
import { SYSTEM_CONTROL_CONSTANTS } from '../../constants.js';
|
|
25
|
+
import { hasRestartSupervisor, readProcessCommandLine } from './auto-update.utils.js';
|
|
26
|
+
/**
|
|
27
|
+
* Whether the environment says we run inside a systemd unit.
|
|
28
|
+
*
|
|
29
|
+
* @param env - Environment
|
|
30
|
+
* @param commandLines - Parent / grandparent command lines
|
|
31
|
+
* @returns True under systemd
|
|
32
|
+
*/
|
|
33
|
+
function isUnderSystemd(env, commandLines) {
|
|
34
|
+
if (env.INVOCATION_ID)
|
|
35
|
+
return true;
|
|
36
|
+
return commandLines.some((c) => !!c && c.includes(SYSTEM_CONTROL_CONSTANTS.SYSTEMD_UNIT));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Whether launchd started us as a job (not via Terminal). launchd sets
|
|
40
|
+
* XPC_SERVICE_NAME to the job label; shells in Terminal get `0` or an
|
|
41
|
+
* `application.*` name.
|
|
42
|
+
*
|
|
43
|
+
* @param env - Environment
|
|
44
|
+
* @param platform - Platform
|
|
45
|
+
* @returns True for a launchd job
|
|
46
|
+
*/
|
|
47
|
+
function isLaunchdJob(env, platform) {
|
|
48
|
+
if (platform !== 'darwin')
|
|
49
|
+
return false;
|
|
50
|
+
const label = env.XPC_SERVICE_NAME;
|
|
51
|
+
return !!label && label !== '0' && !label.startsWith('application.');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Work out what relaunches the backend.
|
|
55
|
+
*
|
|
56
|
+
* @param probe - Environment and process lookups
|
|
57
|
+
* @returns Supervisor info
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* detectSupervisor({ env: { CREWLY_RESTART_SUPERVISOR: 'cli-start', INVOCATION_ID: 'x' }, platform: 'linux',
|
|
62
|
+
* parentCommandLine: () => null, grandparentCommandLine: () => null });
|
|
63
|
+
* // { kind: 'crewly-start', outer: 'systemd', willRelaunch: 'yes', ... }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export function detectSupervisor(probe) {
|
|
67
|
+
const { env, platform } = probe;
|
|
68
|
+
let parent;
|
|
69
|
+
let grandparent;
|
|
70
|
+
const readParent = () => (parent === undefined ? (parent = probe.parentCommandLine()) : parent);
|
|
71
|
+
const readGrandparent = () => grandparent === undefined ? (grandparent = probe.grandparentCommandLine()) : grandparent;
|
|
72
|
+
const cliStart = hasRestartSupervisor(env, readParent);
|
|
73
|
+
if (cliStart) {
|
|
74
|
+
const gp = readGrandparent();
|
|
75
|
+
let outer = null;
|
|
76
|
+
if (isUnderSystemd(env, [gp]))
|
|
77
|
+
outer = 'systemd';
|
|
78
|
+
else if (gp && gp.includes(SYSTEM_CONTROL_CONSTANTS.LOGIN_WRAPPER_SCRIPT))
|
|
79
|
+
outer = 'login-wrapper';
|
|
80
|
+
else if (isLaunchdJob(env, platform))
|
|
81
|
+
outer = 'launchd';
|
|
82
|
+
const outerText = outer === 'systemd'
|
|
83
|
+
? ' systemd keeps crewly start itself running.'
|
|
84
|
+
: outer === 'login-wrapper'
|
|
85
|
+
? ` The ${SYSTEM_CONTROL_CONSTANTS.LOGIN_WRAPPER_SCRIPT} login item keeps crewly start itself running.`
|
|
86
|
+
: outer === 'launchd'
|
|
87
|
+
? ' launchd keeps crewly start itself running.'
|
|
88
|
+
: '';
|
|
89
|
+
return {
|
|
90
|
+
kind: 'crewly-start',
|
|
91
|
+
outer,
|
|
92
|
+
willRelaunch: 'yes',
|
|
93
|
+
detail: `crewly start restarts the backend when it exits.${outerText}`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// PM2 (the legacy ecosystem.config.js) restarts the app on exit by default.
|
|
97
|
+
if (env.pm_id !== undefined || env.PM2_HOME !== undefined) {
|
|
98
|
+
return {
|
|
99
|
+
kind: 'pm2',
|
|
100
|
+
outer: null,
|
|
101
|
+
willRelaunch: 'yes',
|
|
102
|
+
detail: 'PM2 restarts the backend when it exits.',
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const p = readParent();
|
|
106
|
+
if (isUnderSystemd(env, [p])) {
|
|
107
|
+
return {
|
|
108
|
+
kind: 'systemd',
|
|
109
|
+
outer: null,
|
|
110
|
+
willRelaunch: 'unknown',
|
|
111
|
+
detail: 'Runs directly under systemd; it comes back only if the unit has Restart= set.',
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (isLaunchdJob(env, platform)) {
|
|
115
|
+
return {
|
|
116
|
+
kind: 'launchd',
|
|
117
|
+
outer: null,
|
|
118
|
+
willRelaunch: 'unknown',
|
|
119
|
+
detail: 'Runs directly under launchd; it comes back only if the job has KeepAlive set.',
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (p === null) {
|
|
123
|
+
return {
|
|
124
|
+
kind: 'unknown',
|
|
125
|
+
outer: null,
|
|
126
|
+
willRelaunch: 'unknown',
|
|
127
|
+
detail: 'Could not tell what started Crewly.',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
kind: 'none',
|
|
132
|
+
outer: null,
|
|
133
|
+
willRelaunch: 'no',
|
|
134
|
+
detail: 'Nothing will relaunch Crewly on its own; a restart starts a new copy before this one exits.',
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Parent pid of a process (POSIX, via `ps`).
|
|
139
|
+
*
|
|
140
|
+
* @param pid - Process id
|
|
141
|
+
* @returns The parent pid, or null
|
|
142
|
+
*/
|
|
143
|
+
export function readParentPid(pid) {
|
|
144
|
+
if (process.platform === 'win32' || !Number.isInteger(pid) || pid <= 1)
|
|
145
|
+
return null;
|
|
146
|
+
try {
|
|
147
|
+
const out = execFileSync('ps', ['-o', 'ppid=', '-p', String(pid)], { encoding: 'utf-8', timeout: 2000 }).trim();
|
|
148
|
+
const ppid = Number.parseInt(out, 10);
|
|
149
|
+
return Number.isInteger(ppid) && ppid > 1 ? ppid : null;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Detect the supervisor of the running process.
|
|
157
|
+
*
|
|
158
|
+
* @returns Supervisor info
|
|
159
|
+
*/
|
|
160
|
+
export function detectRunningSupervisor() {
|
|
161
|
+
return detectSupervisor({
|
|
162
|
+
env: process.env,
|
|
163
|
+
platform: process.platform,
|
|
164
|
+
parentCommandLine: () => readProcessCommandLine(process.ppid),
|
|
165
|
+
grandparentCommandLine: () => {
|
|
166
|
+
const gp = readParentPid(process.ppid);
|
|
167
|
+
return gp ? readProcessCommandLine(gp) : null;
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=supervisor-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-detect.js","sourceRoot":"","sources":["../../../../../../backend/src/services/system/supervisor-detect.ts"],"names":[],"mappings":"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"}
|