@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.
Files changed (150) hide show
  1. package/README.md +2 -0
  2. package/README.zh-TW.md +2 -0
  3. package/dist/agent-cli.js +6 -1
  4. package/dist/agent-cli.js.map +1 -1
  5. package/dist/agent-endpoint.js +68 -12
  6. package/dist/agent-endpoint.js.map +1 -1
  7. package/dist/agent-token-header.d.ts +13 -0
  8. package/dist/agent-token-header.js +16 -0
  9. package/dist/agent-token-header.js.map +1 -0
  10. package/dist/backend/antigravity.js +4 -3
  11. package/dist/backend/antigravity.js.map +1 -1
  12. package/dist/backend/grok.js +1 -1
  13. package/dist/backend/grok.js.map +1 -1
  14. package/dist/backend/kiro.d.ts +7 -0
  15. package/dist/backend/kiro.js +82 -33
  16. package/dist/backend/kiro.js.map +1 -1
  17. package/dist/backend/muse.js +1 -1
  18. package/dist/backend/muse.js.map +1 -1
  19. package/dist/backend/types.d.ts +6 -0
  20. package/dist/backend/types.js.map +1 -1
  21. package/dist/cache-analysis.d.ts +92 -0
  22. package/dist/cache-analysis.js +147 -0
  23. package/dist/cache-analysis.js.map +1 -0
  24. package/dist/cache-ledger.d.ts +108 -0
  25. package/dist/cache-ledger.js +230 -0
  26. package/dist/cache-ledger.js.map +1 -0
  27. package/dist/cache-prices.d.ts +32 -0
  28. package/dist/cache-prices.js +73 -0
  29. package/dist/cache-prices.js.map +1 -0
  30. package/dist/cache-scan.d.ts +39 -0
  31. package/dist/cache-scan.js +115 -0
  32. package/dist/cache-scan.js.map +1 -0
  33. package/dist/cache-service.d.ts +115 -0
  34. package/dist/cache-service.js +417 -0
  35. package/dist/cache-service.js.map +1 -0
  36. package/dist/cli-entry.d.ts +19 -0
  37. package/dist/cli-entry.js +36 -0
  38. package/dist/cli-entry.js.map +1 -0
  39. package/dist/cli.js +251 -24
  40. package/dist/cli.js.map +1 -1
  41. package/dist/daemon.d.ts +6 -0
  42. package/dist/daemon.js +90 -37
  43. package/dist/daemon.js.map +1 -1
  44. package/dist/event-log.d.ts +4 -1
  45. package/dist/event-log.js +6 -3
  46. package/dist/event-log.js.map +1 -1
  47. package/dist/fleet-control-audit.d.ts +5 -0
  48. package/dist/fleet-control-audit.js +7 -0
  49. package/dist/fleet-control-audit.js.map +1 -1
  50. package/dist/fleet-level-config.js +22 -0
  51. package/dist/fleet-level-config.js.map +1 -1
  52. package/dist/fleet-manager.d.ts +46 -0
  53. package/dist/fleet-manager.js +287 -40
  54. package/dist/fleet-manager.js.map +1 -1
  55. package/dist/full-restart.js +2 -3
  56. package/dist/full-restart.js.map +1 -1
  57. package/dist/general-knowledge/skills/persona-emoji/SKILL.md +3 -1
  58. package/dist/install-lock.d.ts +49 -0
  59. package/dist/install-lock.js +200 -0
  60. package/dist/install-lock.js.map +1 -0
  61. package/dist/instance-config-impact.js +3 -2
  62. package/dist/instance-config-impact.js.map +1 -1
  63. package/dist/locale.js +14 -0
  64. package/dist/locale.js.map +1 -1
  65. package/dist/outbound-schemas.js +1 -1
  66. package/dist/outbound-schemas.js.map +1 -1
  67. package/dist/package-preimage.d.ts +26 -0
  68. package/dist/package-preimage.js +96 -0
  69. package/dist/package-preimage.js.map +1 -0
  70. package/dist/public-web-gateway.js +2 -2
  71. package/dist/public-web-gateway.js.map +1 -1
  72. package/dist/quickstart.js +10 -4
  73. package/dist/quickstart.js.map +1 -1
  74. package/dist/restart-guard.d.ts +52 -0
  75. package/dist/restart-guard.js +109 -0
  76. package/dist/restart-guard.js.map +1 -0
  77. package/dist/scheduler/db.js +6 -2
  78. package/dist/scheduler/db.js.map +1 -1
  79. package/dist/service-activation.d.ts +47 -5
  80. package/dist/service-activation.js +156 -51
  81. package/dist/service-activation.js.map +1 -1
  82. package/dist/service-installer.d.ts +56 -1
  83. package/dist/service-installer.js +134 -12
  84. package/dist/service-installer.js.map +1 -1
  85. package/dist/service-plan.d.ts +65 -0
  86. package/dist/service-plan.js +108 -0
  87. package/dist/service-plan.js.map +1 -0
  88. package/dist/settings-api.js +46 -5
  89. package/dist/settings-api.js.map +1 -1
  90. package/dist/settings-change.js +34 -6
  91. package/dist/settings-change.js.map +1 -1
  92. package/dist/setup-host.js +2 -3
  93. package/dist/setup-host.js.map +1 -1
  94. package/dist/setup-wizard.js +2 -1
  95. package/dist/setup-wizard.js.map +1 -1
  96. package/dist/sqlite-open-errors.d.ts +12 -0
  97. package/dist/sqlite-open-errors.js +13 -0
  98. package/dist/sqlite-open-errors.js.map +1 -0
  99. package/dist/tmux-control.d.ts +22 -0
  100. package/dist/tmux-control.js +89 -5
  101. package/dist/tmux-control.js.map +1 -1
  102. package/dist/topic-commands.js +14 -5
  103. package/dist/topic-commands.js.map +1 -1
  104. package/dist/ui/chat-commands.js +43 -0
  105. package/dist/ui/chat-render.js +2 -2
  106. package/dist/ui/chat-store.js +30 -1
  107. package/dist/ui/chat-strings.js +22 -2
  108. package/dist/ui/chat-thread.js +47 -10
  109. package/dist/ui/fleet-cache.js +168 -0
  110. package/dist/ui/panel-chat.js +104 -18
  111. package/dist/ui/panel-fleet.js +26 -12
  112. package/dist/ui/panel-settings.js +12 -8
  113. package/dist/ui/preview-panel.js +202 -0
  114. package/dist/ui/preview.js +7 -3
  115. package/dist/ui/settings-strings.js +4 -2
  116. package/dist/ui/shared/app-route.js +1 -1
  117. package/dist/ui/shared/app-shell.js +6 -4
  118. package/dist/ui/shared/app.css +147 -3
  119. package/dist/ui/shared/signin.js +13 -1
  120. package/dist/ui/shared/ui-icons.js +2 -0
  121. package/dist/ui/signin.html +2 -1
  122. package/dist/update-dispatch.d.ts +28 -0
  123. package/dist/update-dispatch.js +73 -0
  124. package/dist/update-dispatch.js.map +1 -0
  125. package/dist/update-install.d.ts +65 -7
  126. package/dist/update-install.js +126 -26
  127. package/dist/update-install.js.map +1 -1
  128. package/dist/web-api.d.ts +14 -0
  129. package/dist/web-api.js +65 -0
  130. package/dist/web-api.js.map +1 -1
  131. package/dist/web-commands.d.ts +77 -0
  132. package/dist/web-commands.js +81 -0
  133. package/dist/web-commands.js.map +1 -0
  134. package/dist/web-shell-routes.d.ts +1 -1
  135. package/dist/web-shell-routes.js +1 -1
  136. package/dist/web-shell-routes.js.map +1 -1
  137. package/launcher/agend +110 -0
  138. package/launcher/agend-agent +110 -0
  139. package/launcher/agend-agent.cjs +4 -0
  140. package/launcher/agend.cjs +4 -0
  141. package/launcher/install-admission.cjs +105 -0
  142. package/launcher/launch.cjs +64 -0
  143. package/launcher/postinstall.cjs +114 -0
  144. package/launcher/run-in-process.cjs +13 -0
  145. package/launcher/runtime-platform.cjs +86 -0
  146. package/launcher/runtime-select.cjs +217 -0
  147. package/package.json +12 -4
  148. package/scripts/preinstall-guard.cjs +40 -21
  149. package/templates/launchd.plist.ejs +2 -2
  150. package/templates/systemd.service.ejs +1 -1
@@ -1,5 +1,34 @@
1
- /** Environment that changes what Node runs or loads: never accepted in a service definition AgEnD activates. */
2
- const INTERPRETER_ENV = ["NODE_OPTIONS", "NODE_PATH"];
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
- const xmlUnescape = (text) => text.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&apos;/g, "'").replace(/&amp;/g, "&");
110
+ /** XML character data → text: the five named entities and numeric references (EJS writes `"` as `&#34;`), 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 bin script itself (`<bin> fleet start`, what `agend install` writes today): its realpath is the verified bin,
145
- * and the interpreter its shebang resolves to on the definition's PATH is the verified Node;
146
- * - the interpreter explicitly (`<node> <bin> fleet start`, the private runtime's format): both realpaths verified.
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
- if (program === verified.bin) {
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
- const interpreter = scriptInterpreter(verified.bin, tuple.env.PATH, deps);
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.bin)
171
- return { ok: false, reason: `it starts ${args[0] ?? "nothing"}, not ${verified.bin}` };
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.bin}` };
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 { ok: false, stopped: false, message: ` ✗ systemctl${manager.user ? " --user" : ""} daemon-reload failed, so systemd still runs the old definition. Not restarting the fleet.` };
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 { ok: false, stopped: false, message: ` ✗ Cannot prove what systemd will run for ${manager.unit}: ${read.reason}. Not restarting the fleet.` };
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 { ok: false, stopped: false, message: ` ✗ systemd still needs a daemon-reload for ${manager.unit} (the loaded definition is not the file). Not restarting the fleet.` };
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 { ok: false, stopped: false, message: ` ✗ systemd's loaded ${manager.unit} does not start the verified install: ${match.reason}. Not restarting the fleet; fix the unit (agend install) and run agend restart.` };
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
- for (const key of ["NODE_OPTIONS", "NODE_PATH"]) {
224
- const value = deps.run("launchctl", ["getenv", key]);
225
- if (!completed(value) || value.status !== 0) {
226
- return { ok: false, stopped: false, message: ` ✗ Could not read launchd's ${key} (launchctl getenv ${value.signal ? `killed by ${value.signal}` : `exited ${value.status}`}). Not activating; nothing was changed.` };
227
- }
228
- if (value.stdout.trim() !== "") {
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; nothing was changed.` };
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; nothing was changed.` };
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 ? deps.run("launchctl", ["print", target]) : null;
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 ? deps.run("launchctl", ["print", target]) : null;
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 = !completed(boot) || boot.status !== 0 ? "launchctl bootstrap failed"
291
- : !printed ? "launchctl print of the new job did not complete"
292
- : !printed.pid || printed.state !== "running" ? "the job did not start"
293
- : `launchd loaded a job that ${loadedMatch && !loadedMatch.ok ? loadedMatch.reason : "cannot be read"}`;
294
- return { ok: false, stopped: loadedBefore !== null, message: ` ✗ Activating the new launchd job failed: ${why}. ${recovery}` };
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): 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