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.
Files changed (57) hide show
  1. package/config/skills/orchestrator/restart-crewly/SKILL.md +11 -23
  2. package/config/skills/orchestrator/restart-crewly/execute.sh +7 -5
  3. package/dist/backend/backend/src/constants.d.ts +55 -0
  4. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  5. package/dist/backend/backend/src/constants.js +55 -0
  6. package/dist/backend/backend/src/constants.js.map +1 -1
  7. package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts +67 -0
  8. package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts.map +1 -0
  9. package/dist/backend/backend/src/controllers/system/system-control.controller.js +183 -0
  10. package/dist/backend/backend/src/controllers/system/system-control.controller.js.map +1 -0
  11. package/dist/backend/backend/src/controllers/system/system.controller.d.ts +0 -13
  12. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  13. package/dist/backend/backend/src/controllers/system/system.controller.js +0 -87
  14. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  15. package/dist/backend/backend/src/index.d.ts +7 -0
  16. package/dist/backend/backend/src/index.d.ts.map +1 -1
  17. package/dist/backend/backend/src/index.js +84 -1
  18. package/dist/backend/backend/src/index.js.map +1 -1
  19. package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
  20. package/dist/backend/backend/src/routes/modules/system.routes.js +4 -2
  21. package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
  22. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  23. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +7 -0
  24. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  25. package/dist/backend/backend/src/services/system/auto-update.service.d.ts +58 -0
  26. package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -1
  27. package/dist/backend/backend/src/services/system/auto-update.service.js +128 -52
  28. package/dist/backend/backend/src/services/system/auto-update.service.js.map +1 -1
  29. package/dist/backend/backend/src/services/system/auto-update.utils.d.ts +7 -0
  30. package/dist/backend/backend/src/services/system/auto-update.utils.d.ts.map +1 -1
  31. package/dist/backend/backend/src/services/system/auto-update.utils.js +14 -0
  32. package/dist/backend/backend/src/services/system/auto-update.utils.js.map +1 -1
  33. package/dist/backend/backend/src/services/system/restart-replacement.d.ts +78 -0
  34. package/dist/backend/backend/src/services/system/restart-replacement.d.ts.map +1 -0
  35. package/dist/backend/backend/src/services/system/restart-replacement.js +109 -0
  36. package/dist/backend/backend/src/services/system/restart-replacement.js.map +1 -0
  37. package/dist/backend/backend/src/services/system/supervisor-detect.d.ts +78 -0
  38. package/dist/backend/backend/src/services/system/supervisor-detect.d.ts.map +1 -0
  39. package/dist/backend/backend/src/services/system/supervisor-detect.js +171 -0
  40. package/dist/backend/backend/src/services/system/supervisor-detect.js.map +1 -0
  41. package/dist/backend/backend/src/services/system/system-control.service.d.ts +337 -0
  42. package/dist/backend/backend/src/services/system/system-control.service.d.ts.map +1 -0
  43. package/dist/backend/backend/src/services/system/system-control.service.js +574 -0
  44. package/dist/backend/backend/src/services/system/system-control.service.js.map +1 -0
  45. package/dist/backend/build-info.json +2 -2
  46. package/dist/cli/backend/src/constants.d.ts +55 -0
  47. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  48. package/dist/cli/backend/src/constants.js +55 -0
  49. package/dist/cli/backend/src/constants.js.map +1 -1
  50. package/dist/cli/backend/src/services/system/auto-update.utils.d.ts +7 -0
  51. package/dist/cli/backend/src/services/system/auto-update.utils.d.ts.map +1 -1
  52. package/dist/cli/backend/src/services/system/auto-update.utils.js +14 -0
  53. package/dist/cli/backend/src/services/system/auto-update.utils.js.map +1 -1
  54. package/frontend/dist/assets/{index-36e85ac8.js → index-0726afab.js} +281 -281
  55. package/frontend/dist/assets/{index-15501404.css → index-0c5449b5.css} +1 -1
  56. package/frontend/dist/index.html +2 -2
  57. 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":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAmCtF;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,GAAsB,EAAE,YAAkC;IACjF,IAAI,GAAG,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,GAAsB,EAAE,QAAyB;IACtE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC;IACnC,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACtD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAChC,IAAI,MAAiC,CAAC;IACtC,IAAI,WAAsC,CAAC;IAC3C,MAAM,UAAU,GAAG,GAAkB,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/G,MAAM,eAAe,GAAG,GAAkB,EAAE,CAC3C,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAE1F,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAoB,IAAI,CAAC;QAClC,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAAE,KAAK,GAAG,SAAS,CAAC;aAC5C,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,oBAAoB,CAAC;YAAE,KAAK,GAAG,eAAe,CAAC;aAC9F,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;YAAE,KAAK,GAAG,SAAS,CAAC;QACxD,MAAM,SAAS,GACd,KAAK,KAAK,SAAS;YAClB,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,KAAK,KAAK,eAAe;gBAC1B,CAAC,CAAC,QAAQ,wBAAwB,CAAC,oBAAoB,gDAAgD;gBACvG,CAAC,CAAC,KAAK,KAAK,SAAS;oBACpB,CAAC,CAAC,6CAA6C;oBAC/C,CAAC,CAAC,EAAE,CAAC;QACT,OAAO;YACN,IAAI,EAAE,cAAc;YACpB,KAAK;YACL,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,mDAAmD,SAAS,EAAE;SACtE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3D,OAAO;YACN,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,yCAAyC;SACjD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO;YACN,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,+EAA+E;SACvF,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO;YACN,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,+EAA+E;SACvF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO;YACN,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,qCAAqC;SAC7C,CAAC;IACH,CAAC;IACD,OAAO;QACN,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,6FAA6F;KACrG,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpF,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACtC,OAAO,gBAAgB,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,iBAAiB,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7D,sBAAsB,EAAE,GAAG,EAAE;YAC5B,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}