charness 3.8.0 → 3.9.1

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 (187) hide show
  1. package/CHANGELOG.md +12 -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/jira/inbound.d.ts +25 -1
  9. package/dist/connectors/jira/inbound.d.ts.map +1 -1
  10. package/dist/connectors/jira/inbound.js +74 -2
  11. package/dist/connectors/jira/inbound.js.map +1 -1
  12. package/dist/connectors/jira/issueContext.d.ts +11 -2
  13. package/dist/connectors/jira/issueContext.d.ts.map +1 -1
  14. package/dist/connectors/jira/issueContext.js +22 -2
  15. package/dist/connectors/jira/issueContext.js.map +1 -1
  16. package/dist/connectors/jira/prompt.d.ts +12 -2
  17. package/dist/connectors/jira/prompt.d.ts.map +1 -1
  18. package/dist/connectors/jira/prompt.js +59 -5
  19. package/dist/connectors/jira/prompt.js.map +1 -1
  20. package/dist/connectors/telegram/commands/runners.d.ts.map +1 -1
  21. package/dist/connectors/telegram/commands/runners.js +64 -26
  22. package/dist/connectors/telegram/commands/runners.js.map +1 -1
  23. package/dist/connectors/telegram/runnerPairingMessages.d.ts +7 -5
  24. package/dist/connectors/telegram/runnerPairingMessages.d.ts.map +1 -1
  25. package/dist/connectors/telegram/runnerPairingMessages.js +17 -10
  26. package/dist/connectors/telegram/runnerPairingMessages.js.map +1 -1
  27. package/dist/i18n/de.d.ts.map +1 -1
  28. package/dist/i18n/de.js +6 -4
  29. package/dist/i18n/de.js.map +1 -1
  30. package/dist/i18n/en.d.ts.map +1 -1
  31. package/dist/i18n/en.js +6 -4
  32. package/dist/i18n/en.js.map +1 -1
  33. package/dist/i18n/es.d.ts.map +1 -1
  34. package/dist/i18n/es.js +6 -4
  35. package/dist/i18n/es.js.map +1 -1
  36. package/dist/i18n/fr.d.ts.map +1 -1
  37. package/dist/i18n/fr.js +6 -4
  38. package/dist/i18n/fr.js.map +1 -1
  39. package/dist/i18n/hi.d.ts.map +1 -1
  40. package/dist/i18n/hi.js +6 -4
  41. package/dist/i18n/hi.js.map +1 -1
  42. package/dist/i18n/ja.d.ts.map +1 -1
  43. package/dist/i18n/ja.js +6 -4
  44. package/dist/i18n/ja.js.map +1 -1
  45. package/dist/i18n/ka.d.ts.map +1 -1
  46. package/dist/i18n/ka.js +6 -4
  47. package/dist/i18n/ka.js.map +1 -1
  48. package/dist/i18n/pt.d.ts.map +1 -1
  49. package/dist/i18n/pt.js +6 -4
  50. package/dist/i18n/pt.js.map +1 -1
  51. package/dist/i18n/ru.d.ts.map +1 -1
  52. package/dist/i18n/ru.js +6 -4
  53. package/dist/i18n/ru.js.map +1 -1
  54. package/dist/i18n/uk.d.ts.map +1 -1
  55. package/dist/i18n/uk.js +6 -4
  56. package/dist/i18n/uk.js.map +1 -1
  57. package/dist/i18n/uz.d.ts.map +1 -1
  58. package/dist/i18n/uz.js +6 -4
  59. package/dist/i18n/uz.js.map +1 -1
  60. package/dist/i18n/zh.d.ts.map +1 -1
  61. package/dist/i18n/zh.js +6 -4
  62. package/dist/i18n/zh.js.map +1 -1
  63. package/dist/index.d.ts +1 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +3 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/remoteRun/pairedRunners.js +1 -1
  68. package/dist/remoteRun/pairedRunners.js.map +1 -1
  69. package/dist/remoteRun/runnerSummary.js +1 -1
  70. package/dist/remoteRun/runnerSummary.js.map +1 -1
  71. package/dist/remoteRun/runners.d.ts +8 -1
  72. package/dist/remoteRun/runners.d.ts.map +1 -1
  73. package/dist/remoteRun/runners.js +14 -2
  74. package/dist/remoteRun/runners.js.map +1 -1
  75. package/dist/remoteRun/runnersConfig.d.ts +2 -0
  76. package/dist/remoteRun/runnersConfig.d.ts.map +1 -1
  77. package/dist/remoteRun/runnersConfig.js.map +1 -1
  78. package/dist/requests/requestHeader.d.ts +2 -1
  79. package/dist/requests/requestHeader.d.ts.map +1 -1
  80. package/dist/requests/requestHeader.js +6 -2
  81. package/dist/requests/requestHeader.js.map +1 -1
  82. package/dist/requests/storedPromptRefresh.d.ts +16 -0
  83. package/dist/requests/storedPromptRefresh.d.ts.map +1 -0
  84. package/dist/requests/storedPromptRefresh.js +36 -0
  85. package/dist/requests/storedPromptRefresh.js.map +1 -0
  86. package/dist/runnerUtility/adminCheck.d.ts +7 -0
  87. package/dist/runnerUtility/adminCheck.d.ts.map +1 -1
  88. package/dist/runnerUtility/adminCheck.js +5 -4
  89. package/dist/runnerUtility/adminCheck.js.map +1 -1
  90. package/dist/runnerUtility/adminService.d.ts +22 -0
  91. package/dist/runnerUtility/adminService.d.ts.map +1 -0
  92. package/dist/runnerUtility/adminService.js +145 -0
  93. package/dist/runnerUtility/adminService.js.map +1 -0
  94. package/dist/runnerUtility/hubClient.d.ts +2 -2
  95. package/dist/runnerUtility/hubClient.d.ts.map +1 -1
  96. package/dist/runnerUtility/hubClient.js +1 -1
  97. package/dist/runnerUtility/hubClient.js.map +1 -1
  98. package/dist/runnerUtility/linkLoop.d.ts +0 -8
  99. package/dist/runnerUtility/linkLoop.d.ts.map +1 -1
  100. package/dist/runnerUtility/linkLoop.js +3 -10
  101. package/dist/runnerUtility/linkLoop.js.map +1 -1
  102. package/dist/runnerUtility/pairArgs.d.ts +16 -0
  103. package/dist/runnerUtility/pairArgs.d.ts.map +1 -0
  104. package/dist/runnerUtility/pairArgs.js +17 -0
  105. package/dist/runnerUtility/pairArgs.js.map +1 -0
  106. package/dist/runnerUtility/rootServiceCli.d.ts +8 -0
  107. package/dist/runnerUtility/rootServiceCli.d.ts.map +1 -0
  108. package/dist/runnerUtility/rootServiceCli.js +31 -0
  109. package/dist/runnerUtility/rootServiceCli.js.map +1 -0
  110. package/dist/runnerUtility/runnerCli.js +29 -23
  111. package/dist/runnerUtility/runnerCli.js.map +1 -1
  112. package/dist/runnerUtility/runnerCommands.d.ts +13 -4
  113. package/dist/runnerUtility/runnerCommands.d.ts.map +1 -1
  114. package/dist/runnerUtility/runnerCommands.js +58 -12
  115. package/dist/runnerUtility/runnerCommands.js.map +1 -1
  116. package/dist/runnerUtility/serviceCommon.d.ts +97 -0
  117. package/dist/runnerUtility/serviceCommon.d.ts.map +1 -0
  118. package/dist/runnerUtility/serviceCommon.js +209 -0
  119. package/dist/runnerUtility/serviceCommon.js.map +1 -0
  120. package/dist/runnerUtility/serviceManager.d.ts +14 -17
  121. package/dist/runnerUtility/serviceManager.d.ts.map +1 -1
  122. package/dist/runnerUtility/serviceManager.js +132 -201
  123. package/dist/runnerUtility/serviceManager.js.map +1 -1
  124. package/dist/runnerUtility/serviceUnits.d.ts +3 -1
  125. package/dist/runnerUtility/serviceUnits.d.ts.map +1 -1
  126. package/dist/runnerUtility/serviceUnits.js +26 -6
  127. package/dist/runnerUtility/serviceUnits.js.map +1 -1
  128. package/dist/runners/bootstrapLine.d.ts +10 -1
  129. package/dist/runners/bootstrapLine.d.ts.map +1 -1
  130. package/dist/runners/bootstrapLine.js +102 -17
  131. package/dist/runners/bootstrapLine.js.map +1 -1
  132. package/dist/runners/gate.d.ts.map +1 -1
  133. package/dist/runners/gate.js +9 -0
  134. package/dist/runners/gate.js.map +1 -1
  135. package/dist/runners/gateProtocol.d.ts +7 -1
  136. package/dist/runners/gateProtocol.d.ts.map +1 -1
  137. package/dist/runners/gateProtocol.js +5 -3
  138. package/dist/runners/gateProtocol.js.map +1 -1
  139. package/dist/runners/hubPairing.d.ts +7 -0
  140. package/dist/runners/hubPairing.d.ts.map +1 -1
  141. package/dist/runners/hubPairing.js +16 -0
  142. package/dist/runners/hubPairing.js.map +1 -1
  143. package/dist/runners/hubPaths.d.ts +4 -0
  144. package/dist/runners/hubPaths.d.ts.map +1 -1
  145. package/dist/runners/hubPaths.js +2 -0
  146. package/dist/runners/hubPaths.js.map +1 -1
  147. package/dist/runners/hubRegistry.d.ts +23 -1
  148. package/dist/runners/hubRegistry.d.ts.map +1 -1
  149. package/dist/runners/hubRegistry.js +48 -2
  150. package/dist/runners/hubRegistry.js.map +1 -1
  151. package/dist/runners/linkControl.d.ts +12 -1
  152. package/dist/runners/linkControl.d.ts.map +1 -1
  153. package/dist/runners/linkControl.js +56 -9
  154. package/dist/runners/linkControl.js.map +1 -1
  155. package/dist/runners/removalTiming.d.ts +13 -0
  156. package/dist/runners/removalTiming.d.ts.map +1 -0
  157. package/dist/runners/removalTiming.js +17 -0
  158. package/dist/runners/removalTiming.js.map +1 -0
  159. package/dist/runners/runnerRemoval.d.ts.map +1 -1
  160. package/dist/runners/runnerRemoval.js +12 -0
  161. package/dist/runners/runnerRemoval.js.map +1 -1
  162. package/dist/runners/runnerServiceKind.d.ts +10 -0
  163. package/dist/runners/runnerServiceKind.d.ts.map +1 -0
  164. package/dist/runners/runnerServiceKind.js +13 -0
  165. package/dist/runners/runnerServiceKind.js.map +1 -0
  166. package/dist/runners/runnersCli.d.ts +11 -2
  167. package/dist/runners/runnersCli.d.ts.map +1 -1
  168. package/dist/runners/runnersCli.js +39 -14
  169. package/dist/runners/runnersCli.js.map +1 -1
  170. package/dist/runners/runnersList.d.ts +6 -9
  171. package/dist/runners/runnersList.d.ts.map +1 -1
  172. package/dist/runners/runnersList.js +9 -7
  173. package/dist/runners/runnersList.js.map +1 -1
  174. package/dist/runners/runnersOverview.d.ts.map +1 -1
  175. package/dist/runners/runnersOverview.js +2 -1
  176. package/dist/runners/runnersOverview.js.map +1 -1
  177. package/dist/selfUpdate/selfCheck.d.ts +13 -0
  178. package/dist/selfUpdate/selfCheck.d.ts.map +1 -1
  179. package/dist/selfUpdate/selfCheck.js +9 -3
  180. package/dist/selfUpdate/selfCheck.js.map +1 -1
  181. package/dist/stt/sttInstallEntry.js +7 -4
  182. package/dist/stt/sttInstallEntry.js.map +1 -1
  183. package/dist/utils/runnersScreenPlan.d.ts +18 -7
  184. package/dist/utils/runnersScreenPlan.d.ts.map +1 -1
  185. package/dist/utils/runnersScreenPlan.js +22 -7
  186. package/dist/utils/runnersScreenPlan.js.map +1 -1
  187. package/package.json +1 -1
@@ -36,8 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.parseServiceCommand = parseServiceCommand;
37
37
  exports.createServiceDeps = createServiceDeps;
38
38
  exports.readServiceKind = readServiceKind;
39
+ exports.formatSystemServiceRemoval = formatSystemServiceRemoval;
39
40
  exports.installService = installService;
40
41
  exports.uninstallService = uninstallService;
42
+ exports.runSystemStep = runSystemStep;
41
43
  const fs = __importStar(require("fs"));
42
44
  const os = __importStar(require("os"));
43
45
  const path = __importStar(require("path"));
@@ -46,26 +48,25 @@ const localLinkStop_1 = require("./localLinkStop");
46
48
  const pueueDaemon_1 = require("./pueueDaemon");
47
49
  const runnerConfig_1 = require("./runnerConfig");
48
50
  const runnerHome_1 = require("./runnerHome");
51
+ const serviceCommon_1 = require("./serviceCommon");
49
52
  const serviceUnits_1 = require("./serviceUnits");
50
53
  /**
51
- * @description `charness-runner service install|uninstall`: keep the link and Pueue running without a terminal.
54
+ * @description `charness-runner service install|uninstall`: keep the link and Pueue running without a terminal — as the account that runs
55
+ * them, with the account's own rights.
52
56
  *
53
57
  * Linux two systemd USER units and `loginctl enable-linger` — no admin; where polkit wants one for the lingering, the one
54
58
  * `sudo` line is printed and the units are installed all the same
55
59
  * macOS two LaunchAgents — no admin; they run while the account is logged in (switched away included)
56
- * macOS --system two LaunchDaemons with `UserName=<account>`, installed ONCE by an admin (`sudo … service install --system --user
57
- * <account>`): always on, also logged out, across fast user switching; the jobs run as that account, with no extra rights
60
+ * always on (a Mac, logged out too; or Linux lingering set by an admin) is the ADMIN pairing line's work, not this command's: root must
61
+ * not run anything from this account's folder, so the admin line runs `adminService.ts` from a root-owned copy of the
62
+ * package, and that calls back into THIS program, as the account, for the account's own side (`service system-step`
63
+ * below). `--system` here is refused and says so.
58
64
  *
59
65
  * One kind at a time: installing one while the other's files exist is refused with the command that removes it. The kind is written to
60
66
  * `~/.charness-runner/service` (one word) for `status` and for `runner.sh probe`.
61
67
  */
62
- const commandTimeoutMs = 60 * 1000;
63
- const unitFileMode = 0o644;
64
- const logsDirMode = 0o700;
65
- const rootUid = 0;
66
- const wheelGid = 0;
67
68
  const markerMode = 0o644;
68
- /** @description `install|uninstall [--system --user <name>]`. */
69
+ /** @description `install|uninstall [--system --user <name>]` (the pair is read only to be refused with the way that works). */
69
70
  function parseServiceCommand(args) {
70
71
  const [action, ...flags] = args;
71
72
  if (action !== 'install' && action !== 'uninstall')
@@ -87,15 +88,6 @@ function parseServiceCommand(args) {
87
88
  return { ok: false, error: '--system and --user <account> go together (the daemon runs as that account)' };
88
89
  return { ok: true, action, request };
89
90
  }
90
- async function resolveMacAccount(name, runner) {
91
- const uid = await runner('id', ['-u', name], { timeoutMs: commandTimeoutMs });
92
- const gid = await runner('id', ['-g', name], { timeoutMs: commandTimeoutMs });
93
- if (!uid.ok || !gid.ok)
94
- return null;
95
- const home = await runner('dscl', ['.', '-read', `/Users/${name}`, 'NFSHomeDirectory'], { timeoutMs: commandTimeoutMs });
96
- const homeDir = home.ok ? /NFSHomeDirectory:\s*(\S.*)$/m.exec(home.stdout)?.[1].trim() : undefined;
97
- return { name, uid: Number(uid.stdout.trim()), gid: Number(gid.stdout.trim()), homeDir: homeDir ?? `/Users/${name}` };
98
- }
99
91
  function createServiceDeps() {
100
92
  return {
101
93
  runner: commandRunner_1.runCommand,
@@ -106,8 +98,6 @@ function createServiceDeps() {
106
98
  homeDir: os.homedir(),
107
99
  nodePath: process.execPath,
108
100
  launchDaemonsDir: '/Library/LaunchDaemons',
109
- chown: fs.chownSync,
110
- resolveAccount: (name) => resolveMacAccount(name, commandRunner_1.runCommand),
111
101
  };
112
102
  }
113
103
  /** @description The kind written by the last install, or `null`. */
@@ -124,49 +114,11 @@ function getSystemdFiles(homeDir, names) {
124
114
  const directory = path.join(homeDir, '.config', 'systemd', 'user');
125
115
  return { directory, link: path.join(directory, names.systemdLink), pueued: path.join(directory, names.systemdPueued) };
126
116
  }
127
- function getLaunchdFiles(isSystem, homeDir, names, daemonsDir) {
128
- const directory = isSystem ? daemonsDir : path.join(homeDir, 'Library', 'LaunchAgents');
129
- return { directory, link: path.join(directory, `${names.launchdLink}.plist`), pueued: path.join(directory, `${names.launchdPueued}.plist`) };
130
- }
131
- function writeDefinition(filePath, text) {
132
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
133
- fs.writeFileSync(filePath, text, { mode: unitFileMode });
134
- fs.chmodSync(filePath, unitFileMode);
135
- }
136
- /** @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. */
137
- function readPreviousDefinitions(files) {
138
- return files.map((file) => ({ file, content: fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : null }));
139
- }
140
- /** @description Put `previous` back: a file that existed gets its text again, one this install made new (it had no earlier version) is removed. */
141
- function restorePreviousDefinitions(previous) {
142
- for (const { file, content } of previous) {
143
- if (content === null)
144
- fs.rmSync(file, { force: true });
145
- else
146
- writeDefinition(file, content);
147
- }
148
- }
149
- function writeMarker(paths, kind, owner, chown) {
117
+ function writeMarker(paths, kind) {
150
118
  fs.mkdirSync(paths.root, { recursive: true, mode: 0o700 });
151
119
  fs.writeFileSync(paths.serviceMarker, `${kind}\n`, { mode: markerMode });
152
- if (owner !== null)
153
- chown(paths.serviceMarker, owner.uid, owner.gid);
154
- }
155
- function fail(...lines) {
156
- return { ok: false, lines };
157
120
  }
158
121
  const stillRunningStates = ['active', 'activating', 'reloading', 'deactivating'];
159
- /** Give the whole folder to the account (the `--system` install runs as root and creates what the daemons, running as the account, must write). */
160
- function giveTreeTo(directory, owner, chown) {
161
- chown(directory, owner.uid, owner.gid);
162
- for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
163
- const entryPath = path.join(directory, entry.name);
164
- if (entry.isDirectory())
165
- giveTreeTo(entryPath, owner, chown);
166
- else
167
- chown(entryPath, owner.uid, owner.gid);
168
- }
169
- }
170
122
  /**
171
123
  * Everything that must be true BEFORE either service starts, or the services start into a mess:
172
124
  * - the Pueue binaries exist (a unit that cannot start would restart in a loop);
@@ -177,10 +129,11 @@ function giveTreeTo(directory, owner, chown) {
177
129
  * - Pueue's private configuration exists, and the service record is written, so the first start of the queue has its configuration and
178
130
  * the link, seeing the record, waits for the service's queue instead of starting a daemon of its own.
179
131
  * Returns the refusal, or `null` when the services may start. `hadService` tells a re-install (the daemon is the service's own then).
132
+ * All of it is the ACCOUNT's own doing, in the account's own tree (the always-on install reaches it through `service system-step`).
180
133
  */
181
- async function prepareManagedStart(paths, deps, kind, owner) {
134
+ async function prepareManagedStart(paths, deps, kind) {
182
135
  const hadService = readServiceKind(paths) !== null;
183
- const refuse = (...lines) => ({ refusal: fail(...lines), hadService });
136
+ const refuse = (...lines) => ({ refusal: (0, serviceCommon_1.fail)(...lines), hadService });
184
137
  if (!fs.existsSync(path.join(paths.binDir, 'pueued')))
185
138
  return refuse('Pueue is not installed for this runner yet: run `charness-runner check` (it installs it), then install the service.');
186
139
  if (!hadService) {
@@ -197,15 +150,13 @@ async function prepareManagedStart(paths, deps, kind, owner) {
197
150
  return refuse('An idle Pueue daemon is running and did not shut down; stop it by hand and install the service again.');
198
151
  }
199
152
  (0, pueueDaemon_1.ensurePueueConfig)(paths);
200
- if (owner !== null)
201
- giveTreeTo(paths.pueueDir, owner, deps.chown);
202
- writeMarker(paths, kind, owner, deps.chown);
153
+ writeMarker(paths, kind);
203
154
  return { refusal: null, hadService };
204
155
  }
205
156
  async function stopSystemdUnits(names, deps) {
206
- await deps.runner('systemctl', ['--user', 'disable', '--now', names.systemdLink, names.systemdPueued], { timeoutMs: commandTimeoutMs });
157
+ await deps.runner('systemctl', ['--user', 'disable', '--now', names.systemdLink, names.systemdPueued], { timeoutMs: serviceCommon_1.commandTimeoutMs });
207
158
  for (const unit of [names.systemdLink, names.systemdPueued]) {
208
- const state = await deps.runner('systemctl', ['--user', 'show', '-p', 'ActiveState', '--value', unit], { timeoutMs: commandTimeoutMs });
159
+ const state = await deps.runner('systemctl', ['--user', 'show', '-p', 'ActiveState', '--value', unit], { timeoutMs: serviceCommon_1.commandTimeoutMs });
209
160
  if (!state.ok)
210
161
  return `systemd cannot be asked whether ${unit} still runs (${state.stderr.trim().split('\n').slice(-1)[0] || 'no answer'})`;
211
162
  if (stillRunningStates.includes(state.stdout.trim()))
@@ -216,42 +167,42 @@ async function stopSystemdUnits(names, deps) {
216
167
  async function installSystemd(paths, deps) {
217
168
  const names = (0, serviceUnits_1.getServiceNames)(paths.root);
218
169
  const files = getSystemdFiles(paths.homeDir, names);
219
- const { refusal, hadService } = await prepareManagedStart(paths, deps, 'user-service', null);
170
+ const { refusal, hadService } = await prepareManagedStart(paths, deps, 'user-service');
220
171
  if (refusal !== null)
221
172
  return refusal;
222
- const previous = hadService ? readPreviousDefinitions([files.link, files.pueued]) : [];
173
+ const previous = hadService ? (0, serviceCommon_1.readPreviousDefinitions)([files.link, files.pueued]) : [];
223
174
  const rollBack = async (...reason) => {
224
175
  if (hadService) {
225
176
  // A re-install that fails must not take the working service down with it: its definitions come back, its units are not touched.
226
- restorePreviousDefinitions(previous);
227
- const reloaded = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
228
- return fail(...reason, reloaded.ok
177
+ (0, serviceCommon_1.restorePreviousDefinitions)(previous);
178
+ const reloaded = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
179
+ return (0, serviceCommon_1.fail)(...reason, reloaded.ok
229
180
  ? 'The service installed before was left as it was.'
230
181
  : 'Its definitions are back as they were, but systemd could not be asked to read them again: run `systemctl --user daemon-reload`.');
231
182
  }
232
183
  await stopSystemdUnits(names, deps);
233
184
  for (const file of [files.link, files.pueued])
234
185
  fs.rmSync(file, { force: true });
235
- await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
186
+ await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
236
187
  fs.rmSync(paths.serviceMarker, { force: true });
237
- return fail(...reason, 'Nothing was left installed.');
188
+ return (0, serviceCommon_1.fail)(...reason, 'Nothing was left installed.');
238
189
  };
239
- writeDefinition(files.pueued, (0, serviceUnits_1.renderSystemdPueuedUnit)(paths));
240
- writeDefinition(files.link, (0, serviceUnits_1.renderSystemdLinkUnit)(paths, names));
241
- const reload = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
190
+ (0, serviceCommon_1.writeDefinition)(files.pueued, (0, serviceUnits_1.renderSystemdPueuedUnit)(paths));
191
+ (0, serviceCommon_1.writeDefinition)(files.link, (0, serviceUnits_1.renderSystemdLinkUnit)(paths, names));
192
+ const reload = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
242
193
  if (!reload.ok) {
243
194
  return rollBack('systemctl --user cannot reach a user session. Log in with ssh or the console (not `su` / `sudo -u`), or `export XDG_RUNTIME_DIR=/run/user/$(id -u)`, then run this again.');
244
195
  }
245
- const enable = await deps.runner('systemctl', ['--user', 'enable', '--now', names.systemdPueued, names.systemdLink], { timeoutMs: commandTimeoutMs });
196
+ const enable = await deps.runner('systemctl', ['--user', 'enable', '--now', names.systemdPueued, names.systemdLink], { timeoutMs: serviceCommon_1.commandTimeoutMs });
246
197
  if (!enable.ok)
247
198
  return rollBack(`systemctl --user enable failed: ${enable.stderr.trim().split('\n').slice(-1)[0]}`);
248
199
  const lines = [`Installed two user services: ${names.systemdLink} (the link) and ${names.systemdPueued} (the queue).`];
249
- const lingering = await deps.runner('loginctl', ['show-user', deps.accountName, '-p', 'Linger'], { timeoutMs: commandTimeoutMs });
200
+ const lingering = await deps.runner('loginctl', ['show-user', deps.accountName, '-p', 'Linger'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
250
201
  if ((0, serviceUnits_1.parseLingerState)(lingering.stdout) === 'yes') {
251
202
  lines.push('Lingering is on: they run without a login and start at boot.');
252
203
  }
253
204
  else {
254
- const enableLinger = await deps.runner('loginctl', ['enable-linger'], { timeoutMs: commandTimeoutMs });
205
+ const enableLinger = await deps.runner('loginctl', ['enable-linger'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
255
206
  lines.push(enableLinger.ok ? 'Lingering switched on: they run without a login and start at boot.' : (0, serviceUnits_1.describeLingerRemedy)(deps.accountName));
256
207
  }
257
208
  return { ok: true, lines };
@@ -261,153 +212,133 @@ async function uninstallSystemd(paths, deps) {
261
212
  const files = getSystemdFiles(paths.homeDir, names);
262
213
  const reason = await stopSystemdUnits(names, deps);
263
214
  if (reason !== null) {
264
- return fail(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again; to stop them by hand: ' + `systemctl --user stop ${names.systemdLink} ${names.systemdPueued}`);
215
+ return (0, serviceCommon_1.fail)(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again; to stop them by hand: ' + `systemctl --user stop ${names.systemdLink} ${names.systemdPueued}`);
265
216
  }
266
217
  for (const file of [files.link, files.pueued])
267
218
  fs.rmSync(file, { force: true });
268
- await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
219
+ await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
269
220
  fs.rmSync(paths.serviceMarker, { force: true });
270
221
  return { ok: true, lines: ['Removed the two user services (stopped, and checked to be stopped). Lingering is left as it was.'] };
271
222
  }
272
- const unloadPollMs = 300;
273
- const unloadPollAttempts = 10;
274
- /**
275
- * @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
276
- * 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
277
- * «still loaded»: `print` succeeds only for a job that is still loaded.
278
- */
279
- async function bootOutAndWaitUntilGone(label, domain, deps) {
280
- await deps.runner('launchctl', ['bootout', `${domain}/${label}`], { timeoutMs: commandTimeoutMs });
281
- for (let attempt = 0; attempt < unloadPollAttempts; attempt += 1) {
282
- const loaded = await deps.runner('launchctl', ['print', `${domain}/${label}`], { timeoutMs: commandTimeoutMs });
283
- if (!loaded.ok)
284
- return true;
285
- await new Promise((resolve) => { setTimeout(resolve, unloadPollMs); });
286
- }
287
- return false;
288
- }
289
- async function stopLaunchdJobs(labels, domain, deps) {
290
- for (const label of labels) {
291
- if (!(await bootOutAndWaitUntilGone(label, domain, deps)))
292
- return `${label} is still loaded in ${domain}`;
293
- }
294
- return null;
295
- }
296
- /** @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. */
297
- async function loadLaunchdJobs(entries, domain, deps, owner, isSystem) {
298
- const touchedFiles = [];
299
- for (const { job, file } of entries) {
300
- fs.mkdirSync(path.dirname(job.logPath), { recursive: true, mode: logsDirMode });
301
- if (owner !== null)
302
- deps.chown(path.dirname(job.logPath), owner.uid, owner.gid);
303
- touchedFiles.push(file);
304
- writeDefinition(file, (0, serviceUnits_1.renderLaunchdPlist)(job));
305
- if (isSystem)
306
- deps.chown(file, rootUid, wheelGid);
307
- await bootOutAndWaitUntilGone(job.label, domain, deps);
308
- const boot = await deps.runner('launchctl', ['bootstrap', domain, file], { timeoutMs: commandTimeoutMs });
309
- if (!boot.ok)
310
- return { ...fail(`launchctl bootstrap ${domain} failed for ${job.label}: ${boot.stderr.trim().split('\n').slice(-1)[0]}`), touchedFiles };
311
- }
312
- return { ok: true, lines: [], touchedFiles };
313
- }
314
- async function installLaunchd(request, deps, paths, owner) {
223
+ const adminLineText = 'paste a fresh admin line from /runners (or `charness runners pair`) in an admin account\'s terminal on this machine';
224
+ async function installLaunchd(deps, paths) {
315
225
  const names = (0, serviceUnits_1.getServiceNames)(paths.root);
316
- const files = getLaunchdFiles(request.isSystem, paths.homeDir, names, deps.launchDaemonsDir);
317
- const otherFiles = getLaunchdFiles(!request.isSystem, paths.homeDir, names, deps.launchDaemonsDir);
318
- if (fs.existsSync(otherFiles.link) || fs.existsSync(otherFiles.pueued)) {
319
- return fail(request.isSystem ? 'A user service (LaunchAgent) is installed for this runner: remove it first with `charness-runner service uninstall`.' : 'A system service (LaunchDaemon) is installed for this runner: remove it first with `sudo charness-runner service uninstall --system --user <account>`.');
226
+ const files = (0, serviceCommon_1.getLaunchdFiles)(false, paths.homeDir, names, deps.launchDaemonsDir);
227
+ const daemonFiles = (0, serviceCommon_1.getLaunchdFiles)(true, paths.homeDir, names, deps.launchDaemonsDir);
228
+ if (fs.existsSync(daemonFiles.link) || fs.existsSync(daemonFiles.pueued)) {
229
+ return (0, serviceCommon_1.fail)('A system service (LaunchDaemon) is installed for this runner: remove it first with `charness-runner service uninstall` (it prints the admin commands).');
320
230
  }
321
- const kind = request.isSystem ? 'system-service' : 'user-service';
322
- const { refusal, hadService } = await prepareManagedStart(paths, deps, kind, owner);
231
+ const { refusal, hadService } = await prepareManagedStart(paths, deps, 'user-service');
323
232
  if (refusal !== null)
324
233
  return refusal;
325
- const accountName = owner?.name ?? deps.accountName;
326
- const jobs = (0, serviceUnits_1.planLaunchdJobs)(paths, names, accountName, path.dirname(deps.nodePath), request.isSystem ? accountName : null);
327
- const domain = request.isSystem ? 'system' : `gui/${deps.uid}`;
328
- const previous = hadService ? readPreviousDefinitions([files.pueued, files.link]) : [];
329
- const loaded = await loadLaunchdJobs([{ job: jobs.pueued, file: files.pueued }, { job: jobs.link, file: files.link }], domain, deps, owner, request.isSystem);
330
- if (!loaded.ok) {
331
- if (hadService) {
332
- // A re-install that fails must not leave the working service unloaded: the definitions this pass rewrote come back, and launchd
333
- // loads those jobs again. A job the pass never reached keeps running untouched. Each load is checked and the answer is honest.
334
- const touched = previous.filter((entry) => loaded.touchedFiles.includes(entry.file));
335
- restorePreviousDefinitions(touched);
336
- const notLoaded = [];
337
- for (const { file, content } of touched) {
338
- const label = file === files.link ? names.launchdLink : names.launchdPueued;
339
- await bootOutAndWaitUntilGone(label, domain, deps);
340
- if (content === null)
341
- continue;
342
- if (request.isSystem)
343
- deps.chown(file, rootUid, wheelGid);
344
- const reboot = await deps.runner('launchctl', ['bootstrap', domain, file], { timeoutMs: commandTimeoutMs });
345
- if (!reboot.ok)
346
- notLoaded.push(label);
347
- }
348
- return fail(...loaded.lines, notLoaded.length === 0
349
- ? 'The service installed before was loaded again as it was.'
350
- : `The service installed before could NOT be loaded again (${notLoaded.join(', ')}): run \`${request.isSystem ? `sudo ${paths.launcher} service install --system --user ${accountName}` : 'charness-runner service install'}\` again.`);
351
- }
352
- await stopLaunchdJobs([names.launchdLink, names.launchdPueued], domain, deps);
353
- for (const file of [files.link, files.pueued])
354
- fs.rmSync(file, { force: true });
355
- fs.rmSync(paths.serviceMarker, { force: true });
356
- return fail(...loaded.lines, 'Nothing was left installed.');
234
+ const jobs = (0, serviceUnits_1.planLaunchdJobs)(paths, names, deps.accountName, path.dirname(deps.nodePath), null);
235
+ const result = await (0, serviceCommon_1.installLaunchdJobs)({
236
+ runner: deps.runner,
237
+ domain: `gui/${deps.uid}`,
238
+ files,
239
+ names,
240
+ jobs,
241
+ hadService,
242
+ isLogDirMade: true,
243
+ forgetFirstInstall: () => { fs.rmSync(paths.serviceMarker, { force: true }); },
244
+ retryText: 'run `charness-runner service install` again.',
245
+ render: serviceUnits_1.renderLaunchdPlist,
246
+ });
247
+ if (!result.ok)
248
+ return result;
249
+ return { ok: true, lines: [`Installed two LaunchAgents (${names.launchdLink}, ${names.launchdPueued}): they run while ${deps.accountName} is logged in. For always-on (also logged out), an admin can ${adminLineText}.`] };
250
+ }
251
+ /** The admin's commands that remove a runner's always-on service: plain `launchctl` and `rm`, no charness code runs as root. */
252
+ function formatSystemServiceRemoval(paths, daemonsDir) {
253
+ const names = (0, serviceUnits_1.getServiceNames)(paths.root);
254
+ const files = (0, serviceCommon_1.getLaunchdFiles)(true, paths.homeDir, names, daemonsDir);
255
+ return [
256
+ `sudo launchctl bootout system/${names.launchdLink}`,
257
+ `sudo launchctl bootout system/${names.launchdPueued}`,
258
+ `sudo rm ${files.link} ${files.pueued}`,
259
+ ];
260
+ }
261
+ /**
262
+ * The runner is an always-on (system) service: only an admin can stop it, and root must not run this program to do it (see the file's
263
+ * head). Once the admin has run the plain commands, running this again FORGETS the service record — and only then, when both daemons are
264
+ * gone from launchd and from `/Library/LaunchDaemons`.
265
+ */
266
+ async function removeSystemService(paths, deps) {
267
+ const names = (0, serviceUnits_1.getServiceNames)(paths.root);
268
+ const files = (0, serviceCommon_1.getLaunchdFiles)(true, paths.homeDir, names, deps.launchDaemonsDir);
269
+ const isLoaded = async (label) => (await deps.runner('launchctl', ['print', `system/${label}`], { timeoutMs: serviceCommon_1.commandTimeoutMs })).ok;
270
+ const isPresent = fs.existsSync(files.link) || fs.existsSync(files.pueued) || (await isLoaded(names.launchdLink)) || (await isLoaded(names.launchdPueued));
271
+ if (isPresent) {
272
+ return (0, serviceCommon_1.fail)('This runner runs as a system service (always on), which only an admin can stop. As an admin, run:', ...formatSystemServiceRemoval(paths, deps.launchDaemonsDir).map((line) => ` ${line}`), 'then run `charness-runner service uninstall` again here, as this account: it forgets the service once they are gone.');
357
273
  }
358
- return {
359
- ok: true,
360
- lines: request.isSystem
361
- ? [`Installed two LaunchDaemons (${names.launchdLink}, ${names.launchdPueued}) that run as ${accountName}: always on, also logged out.`]
362
- : [`Installed two LaunchAgents (${names.launchdLink}, ${names.launchdPueued}): they run while ${accountName} is logged in. For always-on (also logged out), an admin runs once: sudo ${paths.launcher} service install --system --user ${accountName}`],
363
- };
274
+ fs.rmSync(paths.serviceMarker, { force: true });
275
+ return { ok: true, lines: ['The always-on service is gone (stopped and removed by an admin): its record here is forgotten.'] };
364
276
  }
365
- async function uninstallLaunchd(request, deps, paths) {
277
+ async function uninstallLaunchd(deps, paths) {
366
278
  const names = (0, serviceUnits_1.getServiceNames)(paths.root);
367
- const files = getLaunchdFiles(request.isSystem, paths.homeDir, names, deps.launchDaemonsDir);
368
- const domain = request.isSystem ? 'system' : `gui/${deps.uid}`;
369
- const reason = await stopLaunchdJobs([names.launchdLink, names.launchdPueued], domain, deps);
279
+ const files = (0, serviceCommon_1.getLaunchdFiles)(false, paths.homeDir, names, deps.launchDaemonsDir);
280
+ const domain = `gui/${deps.uid}`;
281
+ const reason = await (0, serviceCommon_1.stopLaunchdJobs)([names.launchdLink, names.launchdPueued], domain, deps.runner);
370
282
  if (reason !== null) {
371
- return fail(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again.');
283
+ return (0, serviceCommon_1.fail)(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again.');
372
284
  }
373
285
  for (const file of [files.link, files.pueued])
374
286
  fs.rmSync(file, { force: true });
375
287
  fs.rmSync(paths.serviceMarker, { force: true });
376
- return { ok: true, lines: [`Removed the two ${request.isSystem ? 'LaunchDaemons' : 'LaunchAgents'} (stopped, and checked to be stopped).`] };
377
- }
378
- /** The paths of the account the request is about: this one, or — with `--system --user` — the named one. */
379
- async function resolveTarget(request, action, deps) {
380
- if (!request.isSystem)
381
- return { paths: (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir), owner: null };
382
- if (deps.platform !== 'darwin')
383
- return fail('--system is for macOS (a LaunchDaemon). On Linux `service install` makes a user service that lingers: no admin, it runs without a login.');
384
- if (deps.uid !== rootUid)
385
- return fail(`A system service is installed by an admin, once: sudo ${(0, runnerHome_1.getRunnerHomePaths)(deps.homeDir).launcher} service ${action} --system --user ${request.userName ?? '<account>'}`);
386
- const owner = request.userName === null ? null : await deps.resolveAccount(request.userName);
387
- if (owner === null)
388
- return fail(`There is no account named «${request.userName ?? ''}».`);
389
- if (owner.uid === rootUid)
390
- return fail('The service must run as a standard account, not as root.');
391
- return { paths: (0, runnerHome_1.getRunnerHomePaths)(owner.homeDir), owner };
288
+ return { ok: true, lines: ['Removed the two LaunchAgents (stopped, and checked to be stopped).'] };
392
289
  }
290
+ const systemRefusal = `An always-on service is installed by an admin, through a pairing line: ${adminLineText}. It pairs a machine that is not paired yet, and for one that is, only installs the service. This command does not do it, because it would run this account's own files as root.`;
393
291
  /** @description `service install` for `request`. */
394
292
  async function installService(request, deps) {
395
293
  if (deps.platform !== 'linux' && deps.platform !== 'darwin')
396
- return fail(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
397
- const target = await resolveTarget(request, 'install', deps);
398
- if ('ok' in target)
399
- return target;
400
- if ((0, runnerConfig_1.readRunnerConfig)(target.paths) === null)
401
- return fail('This account is not paired yet: run the line from /runners on this machine first, then install the service.');
402
- return deps.platform === 'linux' ? installSystemd(target.paths, deps) : installLaunchd(request, deps, target.paths, target.owner);
294
+ return (0, serviceCommon_1.fail)(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
295
+ if (request.isSystem)
296
+ return (0, serviceCommon_1.fail)(systemRefusal);
297
+ const paths = (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir);
298
+ if ((0, runnerConfig_1.readRunnerConfig)(paths) === null)
299
+ return (0, serviceCommon_1.fail)('This account is not paired yet: run the line from /runners on this machine first, then install the service.');
300
+ if (readServiceKind(paths) === 'system-service')
301
+ return (0, serviceCommon_1.fail)('This runner runs as a system service already; `charness-runner service uninstall` shows how an admin removes it.');
302
+ return deps.platform === 'linux' ? installSystemd(paths, deps) : installLaunchd(deps, paths);
403
303
  }
404
304
  /** @description `service uninstall` for `request`. */
405
305
  async function uninstallService(request, deps) {
406
306
  if (deps.platform !== 'linux' && deps.platform !== 'darwin')
407
- return fail(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
408
- const target = await resolveTarget(request, 'uninstall', deps);
409
- if ('ok' in target)
410
- return target;
411
- return deps.platform === 'linux' ? uninstallSystemd(target.paths, deps) : uninstallLaunchd(request, deps, target.paths);
307
+ return (0, serviceCommon_1.fail)(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
308
+ if (request.isSystem)
309
+ return (0, serviceCommon_1.fail)('An always-on service is removed by an admin with plain `launchctl` commands (no charness program runs as root): `charness-runner service uninstall` as the account prints them.');
310
+ const paths = (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir);
311
+ if (readServiceKind(paths) === 'system-service')
312
+ return removeSystemService(paths, deps);
313
+ return deps.platform === 'linux' ? uninstallSystemd(paths, deps) : uninstallLaunchd(deps, paths);
314
+ }
315
+ /**
316
+ * @description `service system-step prepare|abandon` — the ACCOUNT's side of the always-on install, run by the admin step
317
+ * (`adminService.ts`) through `sudo -u <account>`, never by hand. `prepare` does what must be true before the daemons start (the same as a
318
+ * user service's install, `prepareManagedStart`, and the account must be paired and have no LaunchAgents) and answers in one JSON line;
319
+ * `abandon` forgets the record `prepare` wrote when the daemons could not be loaded and nothing was left installed.
320
+ */
321
+ async function runSystemStep(step, deps) {
322
+ if (deps.platform !== 'darwin')
323
+ return { ok: false, lines: ['The always-on service is for macOS (a LaunchDaemon); a Linux account installs its own user service.'] };
324
+ if (deps.uid === 0)
325
+ return { ok: false, lines: ['This step is the account\'s own: it must not run as root.'] };
326
+ const paths = (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir);
327
+ if (step === 'abandon') {
328
+ if (readServiceKind(paths) === 'system-service')
329
+ fs.rmSync(paths.serviceMarker, { force: true });
330
+ return { ok: true, hadService: false };
331
+ }
332
+ if (step !== 'prepare')
333
+ return { ok: false, lines: [`unknown step: ${step}`] };
334
+ if ((0, runnerConfig_1.readRunnerConfig)(paths) === null)
335
+ return { ok: false, lines: ['This account is not paired yet: run the line from /runners on this machine first, then install the service.'] };
336
+ const names = (0, serviceUnits_1.getServiceNames)(paths.root);
337
+ const agentFiles = (0, serviceCommon_1.getLaunchdFiles)(false, paths.homeDir, names, deps.launchDaemonsDir);
338
+ if (fs.existsSync(agentFiles.link) || fs.existsSync(agentFiles.pueued)) {
339
+ return { ok: false, lines: ['A user service (LaunchAgent) is installed for this runner: remove it first with `charness-runner service uninstall`.'] };
340
+ }
341
+ const { refusal, hadService } = await prepareManagedStart(paths, deps, 'system-service');
342
+ return refusal === null ? { ok: true, hadService } : { ok: false, lines: refusal.lines };
412
343
  }
413
344
  //# sourceMappingURL=serviceManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serviceManager.js","sourceRoot":"","sources":["../../src/runnerUtility/serviceManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serviceManager.js","sourceRoot":"","sources":["../../src/runnerUtility/serviceManager.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export declare function renderSystemdPueuedUnit(paths: RunnerHomePaths): string;
12
12
  export interface LaunchdJobSpec {
13
13
  label: string;
14
14
  programArguments: readonly string[];
15
- /** Set for a LaunchDaemon: the account the job runs as. */
15
+ /** Set for a LaunchDaemon: the account the job runs as (and the job then logs through its own shell, see {@link getLaunchdProgramArguments}). */
16
16
  userName: string | null;
17
17
  homeDir: string;
18
18
  accountName: string;
@@ -20,6 +20,8 @@ export interface LaunchdJobSpec {
20
20
  logPath: string;
21
21
  niceness: number | null;
22
22
  }
23
+ /** The program and arguments launchd starts: the job's own for a LaunchAgent, the account's shell around them for a LaunchDaemon. */
24
+ export declare function getLaunchdProgramArguments(spec: LaunchdJobSpec): readonly string[];
23
25
  /** @description The property list of one launchd job. */
24
26
  export declare function renderLaunchdPlist(spec: LaunchdJobSpec): string;
25
27
  export interface LaunchdJobs {
@@ -1 +1 @@
1
- {"version":3,"file":"serviceUnits.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/serviceUnits.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqBpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAS/D;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAmBzF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAiBtE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAMD,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAiC/D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAMvJ;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAG5D;AAED,0IAA0I;AAC1I,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE"}
1
+ {"version":3,"file":"serviceUnits.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/serviceUnits.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqBpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAS/D;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAmBzF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAiBtE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,iJAAiJ;IACjJ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAqBD,qIAAqI;AACrI,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CAElF;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAkC/D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAMvJ;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAG5D;AAED,0IAA0I;AAC1I,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE"}