@songsid/agend 2.2.0-alpha.1 → 2.2.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/README.zh-TW.md +2 -0
- package/dist/agent-cli.js +6 -1
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +68 -12
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-token-header.d.ts +13 -0
- package/dist/agent-token-header.js +16 -0
- package/dist/agent-token-header.js.map +1 -0
- package/dist/backend/antigravity.js +4 -3
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/grok.js +1 -1
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +7 -0
- package/dist/backend/kiro.js +82 -33
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.js +1 -1
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +6 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/cache-analysis.d.ts +92 -0
- package/dist/cache-analysis.js +147 -0
- package/dist/cache-analysis.js.map +1 -0
- package/dist/cache-ledger.d.ts +108 -0
- package/dist/cache-ledger.js +230 -0
- package/dist/cache-ledger.js.map +1 -0
- package/dist/cache-prices.d.ts +32 -0
- package/dist/cache-prices.js +73 -0
- package/dist/cache-prices.js.map +1 -0
- package/dist/cache-scan.d.ts +39 -0
- package/dist/cache-scan.js +115 -0
- package/dist/cache-scan.js.map +1 -0
- package/dist/cache-service.d.ts +115 -0
- package/dist/cache-service.js +417 -0
- package/dist/cache-service.js.map +1 -0
- package/dist/cli-entry.d.ts +19 -0
- package/dist/cli-entry.js +36 -0
- package/dist/cli-entry.js.map +1 -0
- package/dist/cli.js +251 -24
- package/dist/cli.js.map +1 -1
- package/dist/daemon.d.ts +6 -0
- package/dist/daemon.js +90 -37
- package/dist/daemon.js.map +1 -1
- package/dist/event-log.d.ts +4 -1
- package/dist/event-log.js +6 -3
- package/dist/event-log.js.map +1 -1
- package/dist/fleet-control-audit.d.ts +5 -0
- package/dist/fleet-control-audit.js +7 -0
- package/dist/fleet-control-audit.js.map +1 -1
- package/dist/fleet-level-config.js +22 -0
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +46 -0
- package/dist/fleet-manager.js +287 -40
- package/dist/fleet-manager.js.map +1 -1
- package/dist/full-restart.js +2 -3
- package/dist/full-restart.js.map +1 -1
- package/dist/general-knowledge/skills/persona-emoji/SKILL.md +3 -1
- package/dist/install-lock.d.ts +49 -0
- package/dist/install-lock.js +200 -0
- package/dist/install-lock.js.map +1 -0
- package/dist/instance-config-impact.js +3 -2
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/locale.js +14 -0
- package/dist/locale.js.map +1 -1
- package/dist/outbound-schemas.js +1 -1
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/package-preimage.d.ts +26 -0
- package/dist/package-preimage.js +96 -0
- package/dist/package-preimage.js.map +1 -0
- package/dist/public-web-gateway.js +2 -2
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart.js +10 -4
- package/dist/quickstart.js.map +1 -1
- package/dist/restart-guard.d.ts +52 -0
- package/dist/restart-guard.js +109 -0
- package/dist/restart-guard.js.map +1 -0
- package/dist/scheduler/db.js +6 -2
- package/dist/scheduler/db.js.map +1 -1
- package/dist/service-activation.d.ts +47 -5
- package/dist/service-activation.js +156 -51
- package/dist/service-activation.js.map +1 -1
- package/dist/service-installer.d.ts +56 -1
- package/dist/service-installer.js +134 -12
- package/dist/service-installer.js.map +1 -1
- package/dist/service-plan.d.ts +65 -0
- package/dist/service-plan.js +108 -0
- package/dist/service-plan.js.map +1 -0
- package/dist/settings-api.js +46 -5
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +34 -6
- package/dist/settings-change.js.map +1 -1
- package/dist/setup-host.js +2 -3
- package/dist/setup-host.js.map +1 -1
- package/dist/setup-wizard.js +2 -1
- package/dist/setup-wizard.js.map +1 -1
- package/dist/sqlite-open-errors.d.ts +12 -0
- package/dist/sqlite-open-errors.js +13 -0
- package/dist/sqlite-open-errors.js.map +1 -0
- package/dist/tmux-control.d.ts +22 -0
- package/dist/tmux-control.js +89 -5
- package/dist/tmux-control.js.map +1 -1
- package/dist/topic-commands.js +14 -5
- package/dist/topic-commands.js.map +1 -1
- package/dist/ui/chat-commands.js +43 -0
- package/dist/ui/chat-render.js +2 -2
- package/dist/ui/chat-store.js +30 -1
- package/dist/ui/chat-strings.js +22 -2
- package/dist/ui/chat-thread.js +47 -10
- package/dist/ui/fleet-cache.js +168 -0
- package/dist/ui/panel-chat.js +104 -18
- package/dist/ui/panel-fleet.js +26 -12
- package/dist/ui/panel-settings.js +12 -8
- package/dist/ui/preview-panel.js +202 -0
- package/dist/ui/preview.js +7 -3
- package/dist/ui/settings-strings.js +4 -2
- package/dist/ui/shared/app-route.js +1 -1
- package/dist/ui/shared/app-shell.js +6 -4
- package/dist/ui/shared/app.css +147 -3
- package/dist/ui/shared/signin.js +13 -1
- package/dist/ui/shared/ui-icons.js +2 -0
- package/dist/ui/signin.html +2 -1
- package/dist/update-dispatch.d.ts +28 -0
- package/dist/update-dispatch.js +73 -0
- package/dist/update-dispatch.js.map +1 -0
- package/dist/update-install.d.ts +65 -7
- package/dist/update-install.js +126 -26
- package/dist/update-install.js.map +1 -1
- package/dist/web-api.d.ts +14 -0
- package/dist/web-api.js +65 -0
- package/dist/web-api.js.map +1 -1
- package/dist/web-commands.d.ts +77 -0
- package/dist/web-commands.js +81 -0
- package/dist/web-commands.js.map +1 -0
- package/dist/web-shell-routes.d.ts +1 -1
- package/dist/web-shell-routes.js +1 -1
- package/dist/web-shell-routes.js.map +1 -1
- package/launcher/agend +110 -0
- package/launcher/agend-agent +110 -0
- package/launcher/agend-agent.cjs +4 -0
- package/launcher/agend.cjs +4 -0
- package/launcher/install-admission.cjs +105 -0
- package/launcher/launch.cjs +64 -0
- package/launcher/postinstall.cjs +114 -0
- package/launcher/run-in-process.cjs +13 -0
- package/launcher/runtime-platform.cjs +86 -0
- package/launcher/runtime-select.cjs +217 -0
- package/package.json +12 -4
- package/scripts/preinstall-guard.cjs +40 -21
- package/templates/launchd.plist.ejs +2 -2
- package/templates/systemd.service.ejs +1 -1
|
@@ -1,5 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { systemdWords } from "./service-installer.js";
|
|
2
|
+
/**
|
|
3
|
+
* Environment that changes which Node runs or what it loads: never accepted in a service definition AgEnD activates,
|
|
4
|
+
* nor in the service manager's own environment (design C6: absent, as `agend install` renders none of them).
|
|
5
|
+
* AGEND_NODE: the launcher's override — with it set, the launcher a definition starts would pick another Node.
|
|
6
|
+
*/
|
|
7
|
+
export const INTERPRETER_ENV = ["NODE_OPTIONS", "NODE_PATH", "NODE_EXTRA_CA_CERTS", "AGEND_NODE"];
|
|
8
|
+
/**
|
|
9
|
+
* launchd's own environment (`launchctl getenv`), which every job inherits: each interpreter variable must be read to
|
|
10
|
+
* completion and be unset. A failed or timed-out read is uncertainty, never "unset".
|
|
11
|
+
*/
|
|
12
|
+
export function launchdManagerEnvViolation(run) {
|
|
13
|
+
for (const key of INTERPRETER_ENV) {
|
|
14
|
+
const value = run("launchctl", ["getenv", key]);
|
|
15
|
+
if (value.status === null || value.signal !== null || value.status !== 0) {
|
|
16
|
+
return `launchd's ${key} could not be read (launchctl getenv ${value.signal ? `killed by ${value.signal}` : `exited ${value.status}`})`;
|
|
17
|
+
}
|
|
18
|
+
// Unset prints nothing; a set value prints itself and a newline — even " " (macOS 15). Never trimmed: a blank
|
|
19
|
+
// value is still set, and the launcher refuses it.
|
|
20
|
+
if (value.stdout !== "")
|
|
21
|
+
return `launchd's environment sets ${key} for every job, which changes how Node runs (launchctl unsetenv ${key})`;
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A PATH whose lookup depends on the working directory: an empty entry (the cwd, for execvp and `command -v`) or a
|
|
27
|
+
* relative one. Which `node` it finds cannot be proven from the definition alone: refused (#1473 review).
|
|
28
|
+
*/
|
|
29
|
+
export function cwdDependentPath(path) {
|
|
30
|
+
return path.split(":").some(entry => entry === "" || !entry.startsWith("/"));
|
|
31
|
+
}
|
|
3
32
|
/** systemd's PATH when a unit sets none (systemd.exec, "Environment variables in spawned processes"). */
|
|
4
33
|
export const SYSTEMD_DEFAULT_PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
5
34
|
/** launchd's PATH when a job sets none. */
|
|
@@ -78,7 +107,14 @@ export function readLoadedUnit(run, user, unit) {
|
|
|
78
107
|
return { ok: false, reason: "NeedDaemonReload cannot be read" };
|
|
79
108
|
return { ok: true, unit: { tuple: { program: exec[0][0], argv: argv, env }, needDaemonReload: need } };
|
|
80
109
|
}
|
|
81
|
-
|
|
110
|
+
/** XML character data → text: the five named entities and numeric references (EJS writes `"` as `"`), in one pass. */
|
|
111
|
+
const xmlUnescape = (text) => text.replace(/&(?:#(\d+)|#x([0-9a-fA-F]+)|(lt|gt|quot|apos|amp));/g, (whole, dec, hex, name) => {
|
|
112
|
+
if (dec !== undefined || hex !== undefined) {
|
|
113
|
+
const code = dec !== undefined ? Number.parseInt(dec, 10) : Number.parseInt(hex, 16);
|
|
114
|
+
return code <= 0x10ffff ? String.fromCodePoint(code) : whole;
|
|
115
|
+
}
|
|
116
|
+
return { lt: "<", gt: ">", quot: "\"", apos: "'", amp: "&" }[name];
|
|
117
|
+
});
|
|
82
118
|
/** A launchd plist on disk → the tuple it would run (ProgramArguments; EnvironmentVariables). */
|
|
83
119
|
export function parsePlist(xml) {
|
|
84
120
|
const args = /<key>ProgramArguments<\/key>\s*<array>([\s\S]*?)<\/array>/.exec(xml);
|
|
@@ -141,9 +177,9 @@ function scriptInterpreter(script, path, deps) {
|
|
|
141
177
|
}
|
|
142
178
|
/**
|
|
143
179
|
* Does this effective tuple start exactly the verified install? Two shapes are accepted:
|
|
144
|
-
* - the
|
|
145
|
-
* and the interpreter its shebang resolves to on the definition's PATH is the verified Node;
|
|
146
|
-
* - the interpreter explicitly (`<node> <
|
|
180
|
+
* - the entry script itself (`<entry> fleet start`, what `agend install` writes today): its realpath is the verified
|
|
181
|
+
* entry, and the interpreter its shebang resolves to on the definition's PATH is the verified Node;
|
|
182
|
+
* - the interpreter explicitly (`<node> <entry> fleet start`, the private runtime's format): both realpaths verified.
|
|
147
183
|
* Anything else — another entry inside the same package, another checkout, extra arguments, NODE_OPTIONS — is not.
|
|
148
184
|
*/
|
|
149
185
|
export function tupleStartsVerified(tuple, verified, _defaultPath, deps) {
|
|
@@ -153,28 +189,50 @@ export function tupleStartsVerified(tuple, verified, _defaultPath, deps) {
|
|
|
153
189
|
}
|
|
154
190
|
const program = deps.realpath(tuple.program);
|
|
155
191
|
const args = tuple.argv.slice(1);
|
|
156
|
-
|
|
192
|
+
// The package's sh launcher (#1450: a system Node is resolved at each start, never named): the Node its PATH finds
|
|
193
|
+
// must be the verified one — for a bundled runtime it never is (the runtime directory is on no PATH), so such a
|
|
194
|
+
// target is always named instead.
|
|
195
|
+
if (program === verified.bin && verified.bin !== verified.entry && /\/launcher\/agend$/.test(verified.bin)) {
|
|
196
|
+
if (!sameArgs(args, FLEET_START))
|
|
197
|
+
return { ok: false, reason: `its arguments are ${JSON.stringify(args)}, not ["fleet","start"]` };
|
|
198
|
+
if (tuple.env.PATH === undefined)
|
|
199
|
+
return { ok: false, reason: "its environment has no PATH, so the Node its launcher would find cannot be proven" };
|
|
200
|
+
if (cwdDependentPath(tuple.env.PATH))
|
|
201
|
+
return { ok: false, reason: "its PATH has an empty or relative entry, so the Node its launcher would find depends on the working directory" };
|
|
202
|
+
const found = tuple.env.PATH.split(":").filter(Boolean).map(dir => `${dir}/node`).find(candidate => deps.isExecutable(candidate));
|
|
203
|
+
const real = found ? deps.realpath(found) : null;
|
|
204
|
+
if (real !== verified.node)
|
|
205
|
+
return { ok: false, reason: `its launcher would find ${real ?? "no node"}, not the verified ${verified.node}` };
|
|
206
|
+
return { ok: true };
|
|
207
|
+
}
|
|
208
|
+
if (program === verified.entry) {
|
|
157
209
|
if (!sameArgs(args, FLEET_START))
|
|
158
210
|
return { ok: false, reason: `its arguments are ${JSON.stringify(args)}, not ["fleet","start"]` };
|
|
159
211
|
// PATH must be in the definition's effective environment: with none (e.g. UnsetEnvironment=PATH), `env node`
|
|
160
212
|
// searches execvp's built-in path (glibc: /bin:/usr/bin), not any manager default — unprovable here (#1449 r5).
|
|
161
213
|
if (tuple.env.PATH === undefined)
|
|
162
214
|
return { ok: false, reason: "its environment has no PATH, so the Node its `env node` would find cannot be proven" };
|
|
163
|
-
|
|
215
|
+
if (cwdDependentPath(tuple.env.PATH))
|
|
216
|
+
return { ok: false, reason: "its PATH has an empty or relative entry, so the Node its `env node` would find depends on the working directory" };
|
|
217
|
+
const interpreter = scriptInterpreter(verified.entry, tuple.env.PATH, deps);
|
|
164
218
|
if (interpreter !== verified.node)
|
|
165
219
|
return { ok: false, reason: `its Node is ${interpreter ?? "unresolvable"}, not the verified ${verified.node}` };
|
|
166
220
|
return { ok: true };
|
|
167
221
|
}
|
|
168
222
|
if (program === verified.node) {
|
|
169
223
|
const entry = args[0] ? deps.realpath(args[0]) : null;
|
|
170
|
-
if (entry !== verified.
|
|
171
|
-
return { ok: false, reason: `it starts ${args[0] ?? "nothing"}, not ${verified.
|
|
224
|
+
if (entry !== verified.entry)
|
|
225
|
+
return { ok: false, reason: `it starts ${args[0] ?? "nothing"}, not ${verified.entry}` };
|
|
172
226
|
if (!sameArgs(args.slice(1), FLEET_START))
|
|
173
227
|
return { ok: false, reason: `its arguments are ${JSON.stringify(args.slice(1))}, not ["fleet","start"]` };
|
|
174
228
|
return { ok: true };
|
|
175
229
|
}
|
|
176
|
-
return { ok: false, reason: `it starts ${tuple.program} (${program ?? "missing"}), not ${verified.
|
|
230
|
+
return { ok: false, reason: `it starts ${tuple.program} (${program ?? "missing"}), not ${verified.entry}` };
|
|
177
231
|
}
|
|
232
|
+
/** How long launchd may take to finish unloading a booted-out job, or to spawn a bootstrapped one. */
|
|
233
|
+
export const LAUNCHD_SETTLE_MS = 10_000;
|
|
234
|
+
/** launchd states of a job that is being spawned (not yet `running`, not failed). */
|
|
235
|
+
export const LAUNCHD_SPAWNING = ["spawn scheduled", "xpcproxy"];
|
|
178
236
|
/**
|
|
179
237
|
* Refresh, prove, activate. Nothing is stopped before the effective definition is proven, except where the manager's
|
|
180
238
|
* reload IS the activation (launchd: bootout + bootstrap of a RunAtLoad/KeepAlive job), which is done once, then
|
|
@@ -190,25 +248,39 @@ export function activateService(manager, verified, deps) {
|
|
|
190
248
|
}
|
|
191
249
|
if (manager.kind === "systemd") {
|
|
192
250
|
const scope = manager.user ? ["--user"] : [];
|
|
251
|
+
const preimage = manager.unitPath ? deps.readFile(manager.unitPath) : null;
|
|
252
|
+
// C6 step 5, a failure before the restart: the unit preimage goes back and is reloaded, and the LOADED ExecStart
|
|
253
|
+
// must be the preimage's again; then the package preimage. The old fleet was never stopped.
|
|
254
|
+
const fail = (why) => {
|
|
255
|
+
const restored = [];
|
|
256
|
+
if (preimage !== null && manager.unitPath) {
|
|
257
|
+
deps.writeFile(manager.unitPath, preimage);
|
|
258
|
+
const reloaded = deps.run("systemctl", [...scope, "daemon-reload"]);
|
|
259
|
+
const back = reloaded.status === 0 ? readLoadedUnit(deps.run, manager.user, manager.unit) : null;
|
|
260
|
+
const want = systemdWords(/^ExecStart=(.*)$/m.exec(preimage)?.[1] ?? "");
|
|
261
|
+
restored.push(back?.ok && sameArgs(back.unit.tuple.argv, want)
|
|
262
|
+
? `the previous ${manager.unit} is back and loaded`
|
|
263
|
+
: `the previous ${manager.unit} is back on disk but systemd does not show it loaded (run systemctl${manager.user ? " --user" : ""} daemon-reload)`);
|
|
264
|
+
}
|
|
265
|
+
if (deps.restorePackage)
|
|
266
|
+
restored.push(deps.restorePackage());
|
|
267
|
+
return { ok: false, stopped: false, message: ` ✗ ${why}. Not restarting the fleet.${restored.length ? ` ${restored.join("; ")}.` : ""}` };
|
|
268
|
+
};
|
|
193
269
|
const refreshed = deps.refresh();
|
|
194
270
|
if (refreshed.status !== 0)
|
|
195
271
|
deps.log(` ⚠ Service file refresh failed: ${(refreshed.stderr || refreshed.stdout).trim()}`);
|
|
196
272
|
const reload = deps.run("systemctl", [...scope, "daemon-reload"]);
|
|
197
|
-
if (reload.status !== 0)
|
|
198
|
-
return
|
|
199
|
-
}
|
|
273
|
+
if (reload.status !== 0)
|
|
274
|
+
return fail(`systemctl${manager.user ? " --user" : ""} daemon-reload failed, so systemd still runs the old definition`);
|
|
200
275
|
const read = readLoadedUnit(deps.run, manager.user, manager.unit);
|
|
201
|
-
if (!read.ok)
|
|
202
|
-
return
|
|
203
|
-
}
|
|
276
|
+
if (!read.ok)
|
|
277
|
+
return fail(`Cannot prove what systemd will run for ${manager.unit}: ${read.reason}`);
|
|
204
278
|
const loaded = read.unit;
|
|
205
|
-
if (loaded.needDaemonReload)
|
|
206
|
-
return
|
|
207
|
-
}
|
|
279
|
+
if (loaded.needDaemonReload)
|
|
280
|
+
return fail(`systemd still needs a daemon-reload for ${manager.unit} (the loaded definition is not the file)`);
|
|
208
281
|
const match = tupleStartsVerified(loaded.tuple, verified, SYSTEMD_DEFAULT_PATH, deps);
|
|
209
|
-
if (!match.ok)
|
|
210
|
-
return
|
|
211
|
-
}
|
|
282
|
+
if (!match.ok)
|
|
283
|
+
return fail(`systemd's loaded ${manager.unit} does not start the verified install: ${match.reason}`);
|
|
212
284
|
deps.restart();
|
|
213
285
|
return { ok: true, via: "restart" };
|
|
214
286
|
}
|
|
@@ -220,16 +292,12 @@ export function activateService(manager, verified, deps) {
|
|
|
220
292
|
const target = `${manager.domain}/${manager.label}`;
|
|
221
293
|
// Every read must COMPLETE (#1449 r5): a timed-out or failed query is uncertainty, never "unset" or "not loaded".
|
|
222
294
|
const completed = (r) => r.status !== null && r.signal === null;
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
return { ok: false, stopped: false, message: ` ✗ launchd's environment sets ${key} for every job, which changes how Node runs. Not activating; unset it (launchctl unsetenv ${key}).` };
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
const preimage = deps.readFile(manager.plistPath);
|
|
295
|
+
// Every refusal below comes after npm replaced the package: each one puts the previous package back (C6).
|
|
296
|
+
const packageBack = () => (deps.restorePackage ? ` ${deps.restorePackage()}.` : "");
|
|
297
|
+
const managerEnv = launchdManagerEnvViolation(deps.run);
|
|
298
|
+
if (managerEnv)
|
|
299
|
+
return { ok: false, stopped: false, message: ` ✗ ${managerEnv}. Not activating; the service was not changed.${packageBack()}` };
|
|
300
|
+
const preimage = deps.launchdPreimage ?? deps.readFile(manager.plistPath);
|
|
233
301
|
const preimageTuple = preimage !== null ? parsePlist(preimage) : null;
|
|
234
302
|
// The loaded job, or a CONFIRMED absence: launchctl print exits 113 ("Could not find service") for a job that is not
|
|
235
303
|
// loaded. Anything else that is not a complete, readable job is uncertainty: refuse with nothing touched.
|
|
@@ -238,37 +306,70 @@ export function activateService(manager, verified, deps) {
|
|
|
238
306
|
if (completed(before) && before.status === 0) {
|
|
239
307
|
loadedBefore = parseLaunchctlPrint(before.stdout);
|
|
240
308
|
if (!loadedBefore.tuple) {
|
|
241
|
-
return { ok: false, stopped: false, message: ` ✗ launchctl print of ${manager.label} could not be read. Not activating;
|
|
309
|
+
return { ok: false, stopped: false, message: ` ✗ launchctl print of ${manager.label} could not be read. Not activating; the service was not changed.${packageBack()}` };
|
|
242
310
|
}
|
|
243
311
|
}
|
|
244
312
|
else if (!(completed(before) && before.status === 113)) {
|
|
245
|
-
return { ok: false, stopped: false, message: ` ✗ Could not tell whether ${manager.label} is loaded (launchctl print ${before.signal ? `killed by ${before.signal}` : `exited ${before.status}`}). Not activating;
|
|
313
|
+
return { ok: false, stopped: false, message: ` ✗ Could not tell whether ${manager.label} is loaded (launchctl print ${before.signal ? `killed by ${before.signal}` : `exited ${before.status}`}). Not activating; the service was not changed.${packageBack()}` };
|
|
246
314
|
}
|
|
247
315
|
if (loadedBefore && (!loadedBefore.tuple || !preimageTuple || !sameJob(loadedBefore.tuple, preimageTuple))) {
|
|
248
|
-
return { ok: false, stopped: false, message: ` ✗ The job launchd has loaded for ${manager.label} is not the one ${manager.plistPath} describes, so there is no job to roll back to safely. Not activating; reload it (agend install, agend restart) first
|
|
316
|
+
return { ok: false, stopped: false, message: ` ✗ The job launchd has loaded for ${manager.label} is not the one ${manager.plistPath} describes, so there is no job to roll back to safely. Not activating; reload it (agend install, agend restart) first.${packageBack()}` };
|
|
317
|
+
}
|
|
318
|
+
if (deps.launchdPreimage === undefined) {
|
|
319
|
+
const refreshed = deps.refresh();
|
|
320
|
+
if (refreshed.status !== 0)
|
|
321
|
+
deps.log(` ⚠ Service file refresh failed: ${(refreshed.stderr || refreshed.stdout).trim()}`);
|
|
249
322
|
}
|
|
250
|
-
const refreshed = deps.refresh();
|
|
251
|
-
if (refreshed.status !== 0)
|
|
252
|
-
deps.log(` ⚠ Service file refresh failed: ${(refreshed.stderr || refreshed.stdout).trim()}`);
|
|
253
323
|
const onDisk = deps.readFile(manager.plistPath);
|
|
254
324
|
const diskTuple = onDisk ? parsePlist(onDisk) : null;
|
|
255
325
|
const diskMatch = diskTuple ? tupleStartsVerified(diskTuple, verified, LAUNCHD_DEFAULT_PATH, deps) : { ok: false, reason: "the plist cannot be read" };
|
|
256
326
|
if (!diskMatch.ok) {
|
|
257
327
|
if (preimage !== null && onDisk !== preimage)
|
|
258
328
|
deps.writeFile(manager.plistPath, preimage);
|
|
259
|
-
return { ok: false, stopped: false, message: ` ✗ ${manager.plistPath} does not start the verified install: ${diskMatch.reason}. Restored the previous plist; not restarting the fleet
|
|
329
|
+
return { ok: false, stopped: false, message: ` ✗ ${manager.plistPath} does not start the verified install: ${diskMatch.reason}. Restored the previous plist; not restarting the fleet.${packageBack()}` };
|
|
260
330
|
}
|
|
331
|
+
// `launchctl bootout` returns before launchd has finished unloading the job (seen on macOS 15: a bootstrap right
|
|
332
|
+
// after it fails with 5, EIO, and a second bootout still finds the job). So: wait — bounded, on a monotonic clock —
|
|
333
|
+
// until launchd reports the job gone (print → 113) before bootstrapping; and after a bootstrap, wait out the brief
|
|
334
|
+
// spawning states (LAUNCHD_SPAWNING) before judging what runs.
|
|
335
|
+
const sleep = deps.sleep ?? ((ms) => { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); });
|
|
336
|
+
const clock = deps.monotonicNow ?? (() => performance.now());
|
|
337
|
+
const awaitUnloaded = () => {
|
|
338
|
+
const deadline = clock() + LAUNCHD_SETTLE_MS;
|
|
339
|
+
for (;;) {
|
|
340
|
+
const p = deps.run("launchctl", ["print", target]);
|
|
341
|
+
if (completed(p) && p.status === 113)
|
|
342
|
+
return true;
|
|
343
|
+
if (clock() >= deadline)
|
|
344
|
+
return false;
|
|
345
|
+
sleep(100);
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
const awaitStarted = () => {
|
|
349
|
+
const deadline = clock() + LAUNCHD_SETTLE_MS;
|
|
350
|
+
for (;;) {
|
|
351
|
+
const p = deps.run("launchctl", ["print", target]);
|
|
352
|
+
const state = completed(p) && p.status === 0 ? parseLaunchctlPrint(p.stdout) : null;
|
|
353
|
+
// Transitional states right after a bootstrap (macOS 15 shows `xpcproxy` with the pid for a few ms).
|
|
354
|
+
const settling = state !== null && (LAUNCHD_SPAWNING.includes(state.state ?? "") || (state.state === "running" && !state.pid));
|
|
355
|
+
if (!settling || clock() >= deadline)
|
|
356
|
+
return p;
|
|
357
|
+
sleep(100);
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
let unloaded = true;
|
|
261
361
|
if (loadedBefore) {
|
|
262
362
|
const out = deps.run("launchctl", ["bootout", target]);
|
|
263
363
|
if (!completed(out) || out.status !== 0) {
|
|
264
364
|
// The old job may well still be running: leave it, put its plist back.
|
|
265
365
|
if (preimage !== null)
|
|
266
366
|
deps.writeFile(manager.plistPath, preimage);
|
|
267
|
-
return { ok: false, stopped: false, message: ` ✗ launchctl bootout of ${manager.label} did not complete (${out.signal ? `killed by ${out.signal}` : `exit ${out.status}`}). Restored the previous plist; not activating
|
|
367
|
+
return { ok: false, stopped: false, message: ` ✗ launchctl bootout of ${manager.label} did not complete (${out.signal ? `killed by ${out.signal}` : `exit ${out.status}`}). Restored the previous plist; not activating.${packageBack()}` };
|
|
268
368
|
}
|
|
369
|
+
unloaded = awaitUnloaded();
|
|
269
370
|
}
|
|
270
|
-
const boot = deps.run("launchctl", ["bootstrap", manager.domain, manager.plistPath]);
|
|
271
|
-
const after = completed(boot) && boot.status === 0 ?
|
|
371
|
+
const boot = unloaded ? deps.run("launchctl", ["bootstrap", manager.domain, manager.plistPath]) : null;
|
|
372
|
+
const after = boot && completed(boot) && boot.status === 0 ? awaitStarted() : null;
|
|
272
373
|
const printed = after && completed(after) && after.status === 0 ? parseLaunchctlPrint(after.stdout) : null;
|
|
273
374
|
const loadedMatch = printed?.tuple ? tupleStartsVerified(printed.tuple, verified, LAUNCHD_DEFAULT_PATH, deps) : null;
|
|
274
375
|
if (printed?.pid && printed.state === "running" && loadedMatch?.ok)
|
|
@@ -276,25 +377,29 @@ export function activateService(manager, verified, deps) {
|
|
|
276
377
|
// Roll back: whatever loaded goes; the preimage plist goes back on disk; the preimage job comes back only if one was
|
|
277
378
|
// running before, and only counts as restored when launchd runs exactly its tuple.
|
|
278
379
|
deps.run("launchctl", ["bootout", target]);
|
|
380
|
+
const goneForRecovery = awaitUnloaded();
|
|
279
381
|
if (preimage !== null)
|
|
280
382
|
deps.writeFile(manager.plistPath, preimage);
|
|
383
|
+
// The previous job's plist names files inside the package: the package goes back BEFORE that job is bootstrapped.
|
|
384
|
+
const pkgLine = packageBack();
|
|
281
385
|
let recovery = "No job was running before; the previous plist is back on disk.";
|
|
282
386
|
if (loadedBefore && preimageTuple) {
|
|
283
|
-
const reboot = deps.run("launchctl", ["bootstrap", manager.domain, manager.plistPath]);
|
|
284
|
-
const check = completed(reboot) && reboot.status === 0 ?
|
|
387
|
+
const reboot = goneForRecovery ? deps.run("launchctl", ["bootstrap", manager.domain, manager.plistPath]) : null;
|
|
388
|
+
const check = reboot && completed(reboot) && reboot.status === 0 ? awaitStarted() : null;
|
|
285
389
|
const back = check && completed(check) && check.status === 0 ? parseLaunchctlPrint(check.stdout) : null;
|
|
286
390
|
recovery = back?.tuple && back.pid && back.state === "running" && sameJob(back.tuple, preimageTuple)
|
|
287
391
|
? "Rolled back to the previous job, which is running."
|
|
288
392
|
: "The previous job could NOT be restored: run agend install and agend start.";
|
|
289
393
|
}
|
|
290
|
-
const why = !
|
|
291
|
-
: !
|
|
292
|
-
: !printed
|
|
293
|
-
:
|
|
294
|
-
|
|
394
|
+
const why = !boot ? `launchd did not finish unloading the previous job within ${LAUNCHD_SETTLE_MS / 1000}s`
|
|
395
|
+
: !completed(boot) || boot.status !== 0 ? "launchctl bootstrap failed"
|
|
396
|
+
: !printed ? "launchctl print of the new job did not complete"
|
|
397
|
+
: !printed.pid || printed.state !== "running" ? "the job did not start"
|
|
398
|
+
: `launchd loaded a job that ${loadedMatch && !loadedMatch.ok ? loadedMatch.reason : "cannot be read"}`;
|
|
399
|
+
return { ok: false, stopped: loadedBefore !== null, message: ` ✗ Activating the new launchd job failed: ${why}. ${recovery}${pkgLine}` };
|
|
295
400
|
}
|
|
296
401
|
/** Two launchd jobs are the same when their program and argv are identical and every variable the plist sets matches. */
|
|
297
|
-
function sameJob(loaded, plist) {
|
|
402
|
+
export function sameJob(loaded, plist) {
|
|
298
403
|
return loaded.program === plist.program
|
|
299
404
|
&& sameArgs(loaded.argv, plist.argv)
|
|
300
405
|
&& Object.entries(plist.env).every(([key, value]) => loaded.env[key] === value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-activation.js","sourceRoot":"","sources":["../src/service-activation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service-activation.js","sourceRoot":"","sources":["../src/service-activation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
interface ServiceVars {
|
|
2
2
|
label: string;
|
|
3
|
+
/** The CLI the service starts: canonicalCliEntry(). */
|
|
3
4
|
execPath: string;
|
|
5
|
+
/**
|
|
6
|
+
* The Node that runs it, NAMED in the definition (#1450 C6): the selected interpreter — this process's own, since
|
|
7
|
+
* `agend install` runs on what the launcher selected. Never left to `#!/usr/bin/env node` and the service's PATH.
|
|
8
|
+
*/
|
|
9
|
+
nodePath?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Instead of a named Node: the package's sh launcher, which finds Node at each start. Only for a SYSTEM Node (no
|
|
12
|
+
* bundled runtime on this host): a named system Node breaks when an nvm/brew upgrade removes its directory, while
|
|
13
|
+
* the bundled runtime's path only changes with an npm update, which re-renders the service (#1450 leader review).
|
|
14
|
+
*/
|
|
15
|
+
launcherPath?: string;
|
|
4
16
|
path?: string;
|
|
5
17
|
workingDirectory: string;
|
|
6
18
|
logPath: string;
|
|
@@ -19,9 +31,29 @@ export declare function detectPlatform(): "macos" | "linux";
|
|
|
19
31
|
* unit: they're process-local to an npm-script run and self-perpetuate across
|
|
20
32
|
* updates because each `agend install` copies the existing unit's PATH forward.
|
|
21
33
|
*/
|
|
22
|
-
export declare function buildServicePath(basePath?: string, execPath?: string, homeDir?: string
|
|
34
|
+
export declare function buildServicePath(basePath?: string, execPath?: string, homeDir?: string,
|
|
35
|
+
/** The Node this process runs on: under AgEnD's bundled Node it lives in node_modules, and is never added (#1450). */
|
|
36
|
+
nodeExec?: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* What a service starts when the caller does not say: this package's own selection (launcher/runtime-select.cjs, C2)
|
|
39
|
+
* — the bundled runtime or an AGEND_NODE, named; a system Node, through the launcher. Anything that cannot be
|
|
40
|
+
* resolved (a file outside a package, a checkout without a launcher) names this process's Node, as before.
|
|
41
|
+
*/
|
|
42
|
+
export declare function defaultServiceProgram(execPath: string): {
|
|
43
|
+
nodePath: string;
|
|
44
|
+
} | {
|
|
45
|
+
launcherPath: string;
|
|
46
|
+
};
|
|
23
47
|
export declare function renderLaunchdPlist(vars: ServiceVars): string;
|
|
24
48
|
export declare function renderSystemdUnit(vars: ServiceVars): string;
|
|
49
|
+
/**
|
|
50
|
+
* One word of a systemd command line, exactly (#1460 review): double-quoted, with `\` and `"` escaped inside, and
|
|
51
|
+
* systemd's own expansions neutralised — `%` (specifiers) as `%%`, `$` (variables) as `$$`. A path with spaces stays one
|
|
52
|
+
* argument.
|
|
53
|
+
*/
|
|
54
|
+
export declare function systemdQuote(word: string): string;
|
|
55
|
+
/** The words of a systemd command line as systemd splits them: quotes, backslash escapes, `%%` and `$$` undone. */
|
|
56
|
+
export declare function systemdWords(line: string): string[];
|
|
25
57
|
export interface ServiceInfo {
|
|
26
58
|
installed: boolean;
|
|
27
59
|
path: string | null;
|
|
@@ -33,7 +65,30 @@ export interface ServiceInfo {
|
|
|
33
65
|
export declare function isServiceRemovalConfirmed(answer: string): boolean;
|
|
34
66
|
/** Inspect the user service without changing it. `null` means manager unavailable. */
|
|
35
67
|
export declare function inspectService(label?: string): ServiceInfo;
|
|
68
|
+
export interface LaunchdReloadDeps {
|
|
69
|
+
run(command: string, args: string[], inherit?: boolean): {
|
|
70
|
+
status: number | null;
|
|
71
|
+
signal: NodeJS.Signals | null;
|
|
72
|
+
};
|
|
73
|
+
sleep(ms: number): void;
|
|
74
|
+
/** Monotonic ms. */
|
|
75
|
+
now(): number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* `agend install`'s launchd (re)load: bootout whatever is loaded, then bootstrap — but only once launchd has
|
|
79
|
+
* CONFIRMED the job gone (`launchctl print` → 113). bootout returns before the job is unloaded (macOS 15: a bootstrap
|
|
80
|
+
* right after it fails with 5, EIO), so the wait is bounded (10 s, monotonic); a job still loaded, a print that times
|
|
81
|
+
* out or fails is not "gone" — nothing is bootstrapped, and the install says so (#1473 review).
|
|
82
|
+
*/
|
|
83
|
+
export declare function reloadLaunchdJob(domain: string, label: string, plistPath: string, deps?: LaunchdReloadDeps): void;
|
|
36
84
|
export declare function uninstallService(label: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* The CLI file a unit starts: `ExecStart=<entry> fleet start`, or `ExecStart=<node> <entry> fleet start` (the explicit
|
|
87
|
+
* interpreter, #1450). "" when there is no ExecStart.
|
|
88
|
+
*/
|
|
89
|
+
export declare function unitCliEntry(unitText: string): string;
|
|
90
|
+
/** Where `agend install` keeps a launchd job: the user's LaunchAgents (the gui/<uid> domain of a logged-in user). */
|
|
91
|
+
export declare function launchdPlistPath(label: string): string;
|
|
37
92
|
export declare function installService(vars: ServiceVars): string;
|
|
38
93
|
/**
|
|
39
94
|
* #908: bring an installed AgEnD unit up to `KillMode=mixed` before it is
|