charness 3.8.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/DEVELOPMENT.md +3 -1
  3. package/SETUP.md +4 -3
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +12 -5
  7. package/dist/cli.js.map +1 -1
  8. package/dist/connectors/telegram/commands/runners.d.ts.map +1 -1
  9. package/dist/connectors/telegram/commands/runners.js +64 -26
  10. package/dist/connectors/telegram/commands/runners.js.map +1 -1
  11. package/dist/connectors/telegram/runnerPairingMessages.d.ts +7 -5
  12. package/dist/connectors/telegram/runnerPairingMessages.d.ts.map +1 -1
  13. package/dist/connectors/telegram/runnerPairingMessages.js +17 -10
  14. package/dist/connectors/telegram/runnerPairingMessages.js.map +1 -1
  15. package/dist/i18n/de.d.ts.map +1 -1
  16. package/dist/i18n/de.js +6 -4
  17. package/dist/i18n/de.js.map +1 -1
  18. package/dist/i18n/en.d.ts.map +1 -1
  19. package/dist/i18n/en.js +6 -4
  20. package/dist/i18n/en.js.map +1 -1
  21. package/dist/i18n/es.d.ts.map +1 -1
  22. package/dist/i18n/es.js +6 -4
  23. package/dist/i18n/es.js.map +1 -1
  24. package/dist/i18n/fr.d.ts.map +1 -1
  25. package/dist/i18n/fr.js +6 -4
  26. package/dist/i18n/fr.js.map +1 -1
  27. package/dist/i18n/hi.d.ts.map +1 -1
  28. package/dist/i18n/hi.js +6 -4
  29. package/dist/i18n/hi.js.map +1 -1
  30. package/dist/i18n/ja.d.ts.map +1 -1
  31. package/dist/i18n/ja.js +6 -4
  32. package/dist/i18n/ja.js.map +1 -1
  33. package/dist/i18n/ka.d.ts.map +1 -1
  34. package/dist/i18n/ka.js +6 -4
  35. package/dist/i18n/ka.js.map +1 -1
  36. package/dist/i18n/pt.d.ts.map +1 -1
  37. package/dist/i18n/pt.js +6 -4
  38. package/dist/i18n/pt.js.map +1 -1
  39. package/dist/i18n/ru.d.ts.map +1 -1
  40. package/dist/i18n/ru.js +6 -4
  41. package/dist/i18n/ru.js.map +1 -1
  42. package/dist/i18n/uk.d.ts.map +1 -1
  43. package/dist/i18n/uk.js +6 -4
  44. package/dist/i18n/uk.js.map +1 -1
  45. package/dist/i18n/uz.d.ts.map +1 -1
  46. package/dist/i18n/uz.js +6 -4
  47. package/dist/i18n/uz.js.map +1 -1
  48. package/dist/i18n/zh.d.ts.map +1 -1
  49. package/dist/i18n/zh.js +6 -4
  50. package/dist/i18n/zh.js.map +1 -1
  51. package/dist/index.d.ts +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +3 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/remoteRun/pairedRunners.js +1 -1
  56. package/dist/remoteRun/pairedRunners.js.map +1 -1
  57. package/dist/remoteRun/runnerSummary.js +1 -1
  58. package/dist/remoteRun/runnerSummary.js.map +1 -1
  59. package/dist/remoteRun/runners.d.ts +8 -1
  60. package/dist/remoteRun/runners.d.ts.map +1 -1
  61. package/dist/remoteRun/runners.js +14 -2
  62. package/dist/remoteRun/runners.js.map +1 -1
  63. package/dist/remoteRun/runnersConfig.d.ts +2 -0
  64. package/dist/remoteRun/runnersConfig.d.ts.map +1 -1
  65. package/dist/remoteRun/runnersConfig.js.map +1 -1
  66. package/dist/runnerUtility/adminCheck.d.ts +7 -0
  67. package/dist/runnerUtility/adminCheck.d.ts.map +1 -1
  68. package/dist/runnerUtility/adminCheck.js +5 -4
  69. package/dist/runnerUtility/adminCheck.js.map +1 -1
  70. package/dist/runnerUtility/adminService.d.ts +22 -0
  71. package/dist/runnerUtility/adminService.d.ts.map +1 -0
  72. package/dist/runnerUtility/adminService.js +145 -0
  73. package/dist/runnerUtility/adminService.js.map +1 -0
  74. package/dist/runnerUtility/hubClient.d.ts +2 -2
  75. package/dist/runnerUtility/hubClient.d.ts.map +1 -1
  76. package/dist/runnerUtility/hubClient.js +1 -1
  77. package/dist/runnerUtility/hubClient.js.map +1 -1
  78. package/dist/runnerUtility/linkLoop.d.ts +0 -8
  79. package/dist/runnerUtility/linkLoop.d.ts.map +1 -1
  80. package/dist/runnerUtility/linkLoop.js +3 -10
  81. package/dist/runnerUtility/linkLoop.js.map +1 -1
  82. package/dist/runnerUtility/pairArgs.d.ts +16 -0
  83. package/dist/runnerUtility/pairArgs.d.ts.map +1 -0
  84. package/dist/runnerUtility/pairArgs.js +17 -0
  85. package/dist/runnerUtility/pairArgs.js.map +1 -0
  86. package/dist/runnerUtility/rootServiceCli.d.ts +8 -0
  87. package/dist/runnerUtility/rootServiceCli.d.ts.map +1 -0
  88. package/dist/runnerUtility/rootServiceCli.js +31 -0
  89. package/dist/runnerUtility/rootServiceCli.js.map +1 -0
  90. package/dist/runnerUtility/runnerCli.js +29 -23
  91. package/dist/runnerUtility/runnerCli.js.map +1 -1
  92. package/dist/runnerUtility/runnerCommands.d.ts +13 -4
  93. package/dist/runnerUtility/runnerCommands.d.ts.map +1 -1
  94. package/dist/runnerUtility/runnerCommands.js +58 -12
  95. package/dist/runnerUtility/runnerCommands.js.map +1 -1
  96. package/dist/runnerUtility/serviceCommon.d.ts +97 -0
  97. package/dist/runnerUtility/serviceCommon.d.ts.map +1 -0
  98. package/dist/runnerUtility/serviceCommon.js +209 -0
  99. package/dist/runnerUtility/serviceCommon.js.map +1 -0
  100. package/dist/runnerUtility/serviceManager.d.ts +14 -17
  101. package/dist/runnerUtility/serviceManager.d.ts.map +1 -1
  102. package/dist/runnerUtility/serviceManager.js +132 -201
  103. package/dist/runnerUtility/serviceManager.js.map +1 -1
  104. package/dist/runnerUtility/serviceUnits.d.ts +3 -1
  105. package/dist/runnerUtility/serviceUnits.d.ts.map +1 -1
  106. package/dist/runnerUtility/serviceUnits.js +26 -6
  107. package/dist/runnerUtility/serviceUnits.js.map +1 -1
  108. package/dist/runners/bootstrapLine.d.ts +10 -1
  109. package/dist/runners/bootstrapLine.d.ts.map +1 -1
  110. package/dist/runners/bootstrapLine.js +102 -17
  111. package/dist/runners/bootstrapLine.js.map +1 -1
  112. package/dist/runners/gate.d.ts.map +1 -1
  113. package/dist/runners/gate.js +9 -0
  114. package/dist/runners/gate.js.map +1 -1
  115. package/dist/runners/gateProtocol.d.ts +7 -1
  116. package/dist/runners/gateProtocol.d.ts.map +1 -1
  117. package/dist/runners/gateProtocol.js +5 -3
  118. package/dist/runners/gateProtocol.js.map +1 -1
  119. package/dist/runners/hubPairing.d.ts +7 -0
  120. package/dist/runners/hubPairing.d.ts.map +1 -1
  121. package/dist/runners/hubPairing.js +16 -0
  122. package/dist/runners/hubPairing.js.map +1 -1
  123. package/dist/runners/hubPaths.d.ts +4 -0
  124. package/dist/runners/hubPaths.d.ts.map +1 -1
  125. package/dist/runners/hubPaths.js +2 -0
  126. package/dist/runners/hubPaths.js.map +1 -1
  127. package/dist/runners/hubRegistry.d.ts +23 -1
  128. package/dist/runners/hubRegistry.d.ts.map +1 -1
  129. package/dist/runners/hubRegistry.js +48 -2
  130. package/dist/runners/hubRegistry.js.map +1 -1
  131. package/dist/runners/linkControl.d.ts +12 -1
  132. package/dist/runners/linkControl.d.ts.map +1 -1
  133. package/dist/runners/linkControl.js +56 -9
  134. package/dist/runners/linkControl.js.map +1 -1
  135. package/dist/runners/removalTiming.d.ts +13 -0
  136. package/dist/runners/removalTiming.d.ts.map +1 -0
  137. package/dist/runners/removalTiming.js +17 -0
  138. package/dist/runners/removalTiming.js.map +1 -0
  139. package/dist/runners/runnerRemoval.d.ts.map +1 -1
  140. package/dist/runners/runnerRemoval.js +12 -0
  141. package/dist/runners/runnerRemoval.js.map +1 -1
  142. package/dist/runners/runnerServiceKind.d.ts +10 -0
  143. package/dist/runners/runnerServiceKind.d.ts.map +1 -0
  144. package/dist/runners/runnerServiceKind.js +13 -0
  145. package/dist/runners/runnerServiceKind.js.map +1 -0
  146. package/dist/runners/runnersCli.d.ts +11 -2
  147. package/dist/runners/runnersCli.d.ts.map +1 -1
  148. package/dist/runners/runnersCli.js +39 -14
  149. package/dist/runners/runnersCli.js.map +1 -1
  150. package/dist/runners/runnersList.d.ts +6 -9
  151. package/dist/runners/runnersList.d.ts.map +1 -1
  152. package/dist/runners/runnersList.js +9 -7
  153. package/dist/runners/runnersList.js.map +1 -1
  154. package/dist/runners/runnersOverview.d.ts.map +1 -1
  155. package/dist/runners/runnersOverview.js +2 -1
  156. package/dist/runners/runnersOverview.js.map +1 -1
  157. package/dist/selfUpdate/selfCheck.d.ts +13 -0
  158. package/dist/selfUpdate/selfCheck.d.ts.map +1 -1
  159. package/dist/selfUpdate/selfCheck.js +9 -3
  160. package/dist/selfUpdate/selfCheck.js.map +1 -1
  161. package/dist/stt/sttInstallEntry.js +7 -4
  162. package/dist/stt/sttInstallEntry.js.map +1 -1
  163. package/dist/utils/runnersScreenPlan.d.ts +18 -7
  164. package/dist/utils/runnersScreenPlan.d.ts.map +1 -1
  165. package/dist/utils/runnersScreenPlan.js +22 -7
  166. package/dist/utils/runnersScreenPlan.js.map +1 -1
  167. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.rootUid = exports.commandTimeoutMs = void 0;
37
+ exports.fail = fail;
38
+ exports.formatSystemStepAnswer = formatSystemStepAnswer;
39
+ exports.parseSystemStepAnswer = parseSystemStepAnswer;
40
+ exports.getLaunchdFiles = getLaunchdFiles;
41
+ exports.resolveMacAccount = resolveMacAccount;
42
+ exports.resolveLinuxAccount = resolveLinuxAccount;
43
+ exports.writeDefinition = writeDefinition;
44
+ exports.readPreviousDefinitions = readPreviousDefinitions;
45
+ exports.restorePreviousDefinitions = restorePreviousDefinitions;
46
+ exports.bootOutAndWaitUntilGone = bootOutAndWaitUntilGone;
47
+ exports.stopLaunchdJobs = stopLaunchdJobs;
48
+ exports.installLaunchdJobs = installLaunchdJobs;
49
+ const fs = __importStar(require("fs"));
50
+ const path = __importStar(require("path"));
51
+ const commandRunner_1 = require("../selfUpdate/commandRunner");
52
+ /**
53
+ * @description What the account's own service install (`serviceManager.ts`, needs the installed package and so its dependencies) and the
54
+ * admin's root step (`adminService.ts`, runs from a root-owned copy of the package that has NO dependencies) share: the result shape, the
55
+ * account lookups, the launchd job loader with its rollback, and the definition files. Node built-ins only, because the root step may
56
+ * import nothing else.
57
+ */
58
+ exports.commandTimeoutMs = 60 * 1000;
59
+ exports.rootUid = 0;
60
+ const wheelGid = 0;
61
+ const unitFileMode = 0o644;
62
+ const logsDirMode = 0o700;
63
+ const unloadPollMs = 300;
64
+ const unloadPollAttempts = 10;
65
+ function fail(...lines) {
66
+ return { ok: false, lines };
67
+ }
68
+ function formatSystemStepAnswer(answer) {
69
+ return `${JSON.stringify(answer)}\n`;
70
+ }
71
+ /** @description The answer in the LAST non-empty line of `output`, or `null` when there is none that reads as one. */
72
+ function parseSystemStepAnswer(output) {
73
+ const lastLine = output.split('\n').map((line) => line.trim()).filter((line) => line !== '').at(-1);
74
+ if (lastLine === undefined)
75
+ return null;
76
+ try {
77
+ const parsed = JSON.parse(lastLine);
78
+ if (parsed.ok === true && typeof parsed.hadService === 'boolean')
79
+ return { ok: true, hadService: parsed.hadService };
80
+ if (parsed.ok === false && Array.isArray(parsed.lines) && parsed.lines.every((line) => typeof line === 'string'))
81
+ return { ok: false, lines: parsed.lines };
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ return null;
87
+ }
88
+ function getLaunchdFiles(isSystem, homeDir, names, daemonsDir) {
89
+ const directory = isSystem ? daemonsDir : path.join(homeDir, 'Library', 'LaunchAgents');
90
+ return { directory, link: path.join(directory, `${names.launchdLink}.plist`), pueued: path.join(directory, `${names.launchdPueued}.plist`) };
91
+ }
92
+ /**
93
+ * The account from `id` and the directory service (`dscl`). A home folder that cannot be read from there is NOT guessed: root writes
94
+ * definitions that name it, so no answer means no account.
95
+ */
96
+ async function resolveMacAccount(name, runner) {
97
+ const uid = await runner('id', ['-u', name], { timeoutMs: exports.commandTimeoutMs });
98
+ const gid = await runner('id', ['-g', name], { timeoutMs: exports.commandTimeoutMs });
99
+ if (!uid.ok || !gid.ok)
100
+ return null;
101
+ const home = await runner('dscl', ['.', '-read', `/Users/${name}`, 'NFSHomeDirectory'], { timeoutMs: exports.commandTimeoutMs });
102
+ const homeDir = home.ok ? /NFSHomeDirectory:\s*(\S.*)$/m.exec(home.stdout)?.[1].trim() : undefined;
103
+ if (homeDir === undefined || !path.isAbsolute(homeDir))
104
+ return null;
105
+ return { name, uid: Number(uid.stdout.trim()), gid: Number(gid.stdout.trim()), homeDir };
106
+ }
107
+ /** `getent passwd <name>` → `name:x:uid:gid:gecos:home:shell`. */
108
+ async function resolveLinuxAccount(name, runner) {
109
+ const entry = await runner('getent', ['passwd', name], { timeoutMs: exports.commandTimeoutMs });
110
+ if (!entry.ok)
111
+ return null;
112
+ const [accountName, , uid, gid, , homeDir] = entry.stdout.trim().split(':');
113
+ if (accountName !== name || homeDir === undefined || homeDir === '' || !/^\d+$/.test(uid) || !/^\d+$/.test(gid))
114
+ return null;
115
+ return { name, uid: Number(uid), gid: Number(gid), homeDir };
116
+ }
117
+ function writeDefinition(filePath, text) {
118
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
119
+ fs.writeFileSync(filePath, text, { mode: unitFileMode });
120
+ fs.chmodSync(filePath, unitFileMode);
121
+ }
122
+ /** @description The files of a service that already exists, as they are now: a failed re-install puts them back instead of tearing the working service down. */
123
+ function readPreviousDefinitions(files) {
124
+ return files.map((file) => ({ file, content: fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : null }));
125
+ }
126
+ /** @description Put `previous` back: a file that existed gets its text again, one this install made new (it had no earlier version) is removed. */
127
+ function restorePreviousDefinitions(previous) {
128
+ for (const { file, content } of previous) {
129
+ if (content === null)
130
+ fs.rmSync(file, { force: true });
131
+ else
132
+ writeDefinition(file, content);
133
+ }
134
+ }
135
+ /**
136
+ * @description Boot a job out and wait (bounded: 3 s) until launchd no longer has it loaded; `false` when it still is. A `bootstrap` right
137
+ * after a `bootout` often fails with error 5 while launchd is still tearing the old job down, and a check right after it can find the job
138
+ * «still loaded»: `print` succeeds only for a job that is still loaded.
139
+ */
140
+ async function bootOutAndWaitUntilGone(label, domain, runner) {
141
+ await runner('launchctl', ['bootout', `${domain}/${label}`], { timeoutMs: exports.commandTimeoutMs });
142
+ for (let attempt = 0; attempt < unloadPollAttempts; attempt += 1) {
143
+ const loaded = await runner('launchctl', ['print', `${domain}/${label}`], { timeoutMs: exports.commandTimeoutMs });
144
+ if (!loaded.ok)
145
+ return true;
146
+ await new Promise((resolve) => { setTimeout(resolve, unloadPollMs); });
147
+ }
148
+ return false;
149
+ }
150
+ async function stopLaunchdJobs(labels, domain, runner) {
151
+ for (const label of labels) {
152
+ if (!(await bootOutAndWaitUntilGone(label, domain, runner)))
153
+ return `${label} is still loaded in ${domain}`;
154
+ }
155
+ return null;
156
+ }
157
+ /** @description Load the jobs in order; stops at the first that fails. `touchedFiles` are the definitions it had rewritten (and booted out the old job of) by then, the failing one included. */
158
+ async function loadLaunchdJobs(entries, plan) {
159
+ const touchedFiles = [];
160
+ for (const { job, file } of entries) {
161
+ if (plan.isLogDirMade)
162
+ fs.mkdirSync(path.dirname(job.logPath), { recursive: true, mode: logsDirMode });
163
+ touchedFiles.push(file);
164
+ writeDefinition(file, plan.render(job));
165
+ plan.giveToRoot?.(file, exports.rootUid, wheelGid);
166
+ await bootOutAndWaitUntilGone(job.label, plan.domain, plan.runner);
167
+ const boot = await plan.runner('launchctl', ['bootstrap', plan.domain, file], { timeoutMs: exports.commandTimeoutMs });
168
+ if (!boot.ok)
169
+ return { ...fail(`launchctl bootstrap ${plan.domain} failed for ${job.label}: ${(0, commandRunner_1.getOutputTail)(boot, 1)}`), touchedFiles };
170
+ }
171
+ return { ok: true, lines: [], touchedFiles };
172
+ }
173
+ /**
174
+ * @description Write and load the queue's job, then the link's. A failure rolls back: a first install is stopped and its files removed; a
175
+ * re-install gets its earlier definitions back and loaded again, as far as it was touched, and says honestly whether that worked.
176
+ */
177
+ async function installLaunchdJobs(plan) {
178
+ const { files, names, hadService, runner, domain } = plan;
179
+ const previous = hadService ? readPreviousDefinitions([files.pueued, files.link]) : [];
180
+ const loaded = await loadLaunchdJobs([{ job: plan.jobs.pueued, file: files.pueued }, { job: plan.jobs.link, file: files.link }], plan);
181
+ if (loaded.ok)
182
+ return { ok: true, lines: [] };
183
+ if (hadService) {
184
+ // A re-install that fails must not leave the working service unloaded: the definitions this pass rewrote come back, and launchd
185
+ // loads those jobs again. A job the pass never reached keeps running untouched. Each load is checked and the answer is honest.
186
+ const touched = previous.filter((entry) => loaded.touchedFiles.includes(entry.file));
187
+ restorePreviousDefinitions(touched);
188
+ const notLoaded = [];
189
+ for (const { file, content } of touched) {
190
+ const label = file === files.link ? names.launchdLink : names.launchdPueued;
191
+ await bootOutAndWaitUntilGone(label, domain, runner);
192
+ if (content === null)
193
+ continue;
194
+ plan.giveToRoot?.(file, exports.rootUid, wheelGid);
195
+ const reboot = await runner('launchctl', ['bootstrap', domain, file], { timeoutMs: exports.commandTimeoutMs });
196
+ if (!reboot.ok)
197
+ notLoaded.push(label);
198
+ }
199
+ return fail(...loaded.lines, notLoaded.length === 0
200
+ ? 'The service installed before was loaded again as it was.'
201
+ : `The service installed before could NOT be loaded again (${notLoaded.join(', ')}): ${plan.retryText}`);
202
+ }
203
+ await stopLaunchdJobs([names.launchdLink, names.launchdPueued], domain, runner);
204
+ for (const file of [files.link, files.pueued])
205
+ fs.rmSync(file, { force: true });
206
+ await plan.forgetFirstInstall();
207
+ return fail(...loaded.lines, 'Nothing was left installed.');
208
+ }
209
+ //# sourceMappingURL=serviceCommon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceCommon.js","sourceRoot":"","sources":["../../src/runnerUtility/serviceCommon.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,11 @@
1
1
  import { type CommandRunner } from '../selfUpdate/commandRunner';
2
2
  import { type RunnerHomePaths } from './runnerHome';
3
+ import { type ServiceResult, type SystemStepAnswer } from './serviceCommon';
3
4
  export type ServiceKind = 'user-service' | 'system-service';
4
- export interface TargetAccount {
5
- name: string;
6
- uid: number;
7
- gid: number;
8
- homeDir: string;
9
- }
10
5
  export interface ServiceDeps {
11
6
  runner: CommandRunner;
12
7
  platform: NodeJS.Platform;
13
- /** The uid of this process (a `--system` install must be root). */
8
+ /** The uid of this process. */
14
9
  uid: number;
15
10
  /** Is `pid` the runner's link (alive and running `runnerCli.js run`)? A stale or reused pid in `status.json` is not. */
16
11
  checkIsRunnerLink: (pid: number) => boolean;
@@ -18,22 +13,15 @@ export interface ServiceDeps {
18
13
  accountName: string;
19
14
  homeDir: string;
20
15
  nodePath: string;
21
- /** Where LaunchDaemons live (`/Library/LaunchDaemons`; a test's own folder). */
16
+ /** Where LaunchDaemons live (`/Library/LaunchDaemons`; a test's own folder): read to see whether an always-on service is gone. */
22
17
  launchDaemonsDir: string;
23
- /** Give a file to an account (`fs.chownSync`; a test is not root). */
24
- chown: (filePath: string, uid: number, gid: number) => void;
25
- /** Who `--user <name>` names; `null` when there is no such account. */
26
- resolveAccount: (name: string) => Promise<TargetAccount | null>;
27
18
  }
28
19
  export interface ServiceRequest {
29
20
  isSystem: boolean;
30
21
  /** `--user`: required with `--system`. */
31
22
  userName: string | null;
32
23
  }
33
- export interface ServiceResult {
34
- ok: boolean;
35
- lines: string[];
36
- }
24
+ export type { ServiceResult } from './serviceCommon';
37
25
  export type ServiceCommandParsing = {
38
26
  ok: true;
39
27
  action: 'install' | 'uninstall';
@@ -42,13 +30,22 @@ export type ServiceCommandParsing = {
42
30
  ok: false;
43
31
  error: string;
44
32
  };
45
- /** @description `install|uninstall [--system --user <name>]`. */
33
+ /** @description `install|uninstall [--system --user <name>]` (the pair is read only to be refused with the way that works). */
46
34
  export declare function parseServiceCommand(args: readonly string[]): ServiceCommandParsing;
47
35
  export declare function createServiceDeps(): ServiceDeps;
48
36
  /** @description The kind written by the last install, or `null`. */
49
37
  export declare function readServiceKind(paths: RunnerHomePaths): ServiceKind | null;
38
+ /** The admin's commands that remove a runner's always-on service: plain `launchctl` and `rm`, no charness code runs as root. */
39
+ export declare function formatSystemServiceRemoval(paths: RunnerHomePaths, daemonsDir: string): string[];
50
40
  /** @description `service install` for `request`. */
51
41
  export declare function installService(request: ServiceRequest, deps: ServiceDeps): Promise<ServiceResult>;
52
42
  /** @description `service uninstall` for `request`. */
53
43
  export declare function uninstallService(request: ServiceRequest, deps: ServiceDeps): Promise<ServiceResult>;
44
+ /**
45
+ * @description `service system-step prepare|abandon` — the ACCOUNT's side of the always-on install, run by the admin step
46
+ * (`adminService.ts`) through `sudo -u <account>`, never by hand. `prepare` does what must be true before the daemons start (the same as a
47
+ * user service's install, `prepareManagedStart`, and the account must be paired and have no LaunchAgents) and answers in one JSON line;
48
+ * `abandon` forgets the record `prepare` wrote when the daemons could not be loaded and nothing was left installed.
49
+ */
50
+ export declare function runSystemStep(step: string, deps: ServiceDeps): Promise<SystemStepAnswer>;
54
51
  //# sourceMappingURL=serviceManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serviceManager.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/serviceManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI7E,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAiCxE,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,wHAAwH;IACxH,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,uEAAuE;IACvE,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1I,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,qBAAqB,CAgBlF;AAWD,wBAAgB,iBAAiB,IAAI,WAAW,CAa/C;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI,CAO1E;AAqRD,oDAAoD;AACpD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAMvG;AAED,sDAAsD;AACtD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAKzG"}
1
+ {"version":3,"file":"serviceManager.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/serviceManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI7E,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAUL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AA8BzB,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,wHAAwH;IACxH,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,kIAAkI;IAClI,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1I,+HAA+H;AAC/H,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,qBAAqB,CAgBlF;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAW/C;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI,CAO1E;AAwID,gIAAgI;AAChI,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ/F;AAkCD,oDAAoD;AACpD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAOvG;AAED,sDAAsD;AACtD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAMzG;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiB9F"}