@songsid/agend 2.2.0-beta.14 → 2.2.0-beta.16

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 (76) hide show
  1. package/dist/cli.js +58 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/compact-watch.d.ts +78 -0
  4. package/dist/compact-watch.js +247 -0
  5. package/dist/compact-watch.js.map +1 -0
  6. package/dist/config-validator.js +14 -0
  7. package/dist/config-validator.js.map +1 -1
  8. package/dist/daemon.js +45 -5
  9. package/dist/daemon.js.map +1 -1
  10. package/dist/doctor.js +7 -0
  11. package/dist/doctor.js.map +1 -1
  12. package/dist/fleet-context.d.ts +2 -0
  13. package/dist/fleet-manager.d.ts +17 -3
  14. package/dist/fleet-manager.js +101 -19
  15. package/dist/fleet-manager.js.map +1 -1
  16. package/dist/instance-avatar.d.ts +4 -3
  17. package/dist/instance-avatar.js +6 -5
  18. package/dist/instance-avatar.js.map +1 -1
  19. package/dist/launchd-handoff.d.ts +43 -0
  20. package/dist/launchd-handoff.js +56 -0
  21. package/dist/launchd-handoff.js.map +1 -0
  22. package/dist/locale.js +24 -4
  23. package/dist/locale.js.map +1 -1
  24. package/dist/login-shell.d.ts +21 -0
  25. package/dist/login-shell.js +98 -0
  26. package/dist/login-shell.js.map +1 -0
  27. package/dist/provider-probe.d.ts +29 -0
  28. package/dist/provider-probe.js +198 -2
  29. package/dist/provider-probe.js.map +1 -1
  30. package/dist/public-web-gateway.js +2 -0
  31. package/dist/public-web-gateway.js.map +1 -1
  32. package/dist/quickstart-api.d.ts +1 -1
  33. package/dist/quickstart-api.js +8 -6
  34. package/dist/quickstart-api.js.map +1 -1
  35. package/dist/quickstart.d.ts +12 -0
  36. package/dist/quickstart.js +36 -6
  37. package/dist/quickstart.js.map +1 -1
  38. package/dist/sd-notify.d.ts +22 -1
  39. package/dist/sd-notify.js +63 -10
  40. package/dist/sd-notify.js.map +1 -1
  41. package/dist/service-installer.d.ts +24 -0
  42. package/dist/service-installer.js +49 -1
  43. package/dist/service-installer.js.map +1 -1
  44. package/dist/service-plan.d.ts +11 -0
  45. package/dist/service-plan.js +23 -0
  46. package/dist/service-plan.js.map +1 -1
  47. package/dist/topic-commands.d.ts +16 -0
  48. package/dist/topic-commands.js +39 -15
  49. package/dist/topic-commands.js.map +1 -1
  50. package/dist/transcript-jsonl.d.ts +7 -2
  51. package/dist/transcript-jsonl.js +13 -7
  52. package/dist/transcript-jsonl.js.map +1 -1
  53. package/dist/ui/chat-store.js +32 -2
  54. package/dist/ui/chat-strings.js +8 -2
  55. package/dist/ui/panel-chat.js +4 -1
  56. package/dist/ui/settings-dialogs.js +9 -4
  57. package/dist/ui/settings-strings.js +6 -2
  58. package/dist/ui/settings-token.js +7 -0
  59. package/dist/ui/settings-wizard.js +5 -3
  60. package/dist/ui/shared/app.css +1 -0
  61. package/dist/ui/shared/panel-view.js +8 -0
  62. package/dist/ui/shared/view-strings.js +8 -0
  63. package/dist/usage/providers.d.ts +28 -8
  64. package/dist/usage/providers.js +96 -41
  65. package/dist/usage/providers.js.map +1 -1
  66. package/dist/view-api.js +26 -9
  67. package/dist/view-api.js.map +1 -1
  68. package/dist/web-api.js +1 -1
  69. package/dist/web-api.js.map +1 -1
  70. package/dist/web-commands.d.ts +14 -1
  71. package/dist/web-commands.js +6 -3
  72. package/dist/web-commands.js.map +1 -1
  73. package/dist/web-upload.d.ts +7 -3
  74. package/dist/web-upload.js +20 -8
  75. package/dist/web-upload.js.map +1 -1
  76. package/package.json +1 -1
package/dist/doctor.js CHANGED
@@ -4,6 +4,7 @@ import { platform } from "node:os";
4
4
  import { spawnSync } from "node:child_process";
5
5
  import net from "node:net";
6
6
  import { loadRawFleetConfig } from "./config.js";
7
+ import { validateFleetConfig } from "./config-validator.js";
7
8
  import { hasPausedMarker } from "./pause-marker.js";
8
9
  import { getTmuxSessionName, getTmuxSocketName } from "./paths.js";
9
10
  import { BACKENDS } from "./setup-wizard.js";
@@ -84,6 +85,12 @@ export async function collectDoctorReport(dataDir, service, overrides = {}) {
84
85
  let raw = {};
85
86
  try {
86
87
  raw = loadRawFleetConfig(configPath);
88
+ // #1874 follow-up: the validator's warnings (settings it ignores, e.g. `web.access`), where a hand-editor looks —
89
+ // `agend validate` is not run by someone who edits fleet.yaml by hand.
90
+ if (existsSync(configPath)) {
91
+ for (const w of validateFleetConfig(raw).warnings)
92
+ add("Fleet", "warn", "fleet.yaml", w.path ? `${w.path}: ${w.message}` : w.message);
93
+ }
87
94
  }
88
95
  catch (err) {
89
96
  add("Fleet", "error", "fleet.yaml", t("doctor.config_invalid", err.message.split("\n")[0]));
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,8 @@ export interface FleetContext {
92
92
  isFleetAdmin(userId: string, adapterId?: string): boolean;
93
93
  /** Whether the adapter has any fleet admin at all (an empty allowlist turns the admin commands off). */
94
94
  hasFleetAdmins(adapterId?: string): boolean;
95
+ /** Where that list is in fleet.yaml, as the "disabled" replies name it (`channel.access.allowed_users`, …). */
96
+ adminListKey?(adapterId?: string): string;
95
97
  /** Cached shutdown admission, set synchronously by stopAll before its first await. */
96
98
  isFleetStopping(): boolean;
97
99
  /** Telegram-only General command; owns admin/route checks and completion notice. */
@@ -855,6 +855,9 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
855
855
  /** #1218: the Log tab's on-demand service — made on first use; with `web.log_tab` off it answers off and does nothing. */
856
856
  private logService;
857
857
  private get log();
858
+ /** Board 003648ac: a web /compact followed to its end, from the transcript the Log reads (none: nothing to follow). */
859
+ private compactWatchService;
860
+ private get compactWatch();
858
861
  /** #1218: GET /ui/steps — an instance's steps, read on demand (null: no such instance). */
859
862
  logSteps(name: string, q: LogQuery): Promise<LogAnswer | null>;
860
863
  /**
@@ -992,6 +995,12 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
992
995
  isFleetAdmin(userId: string, adapterId?: string): boolean;
993
996
  /** Whether this adapter has any fleet admin at all (an empty allowlist means the admin commands are off). */
994
997
  hasFleetAdmins(adapterId?: string): boolean;
998
+ /**
999
+ * Where this adapter's fleet-admin list is in fleet.yaml, as the operator wrote it, for the "disabled" replies:
1000
+ * `channel.access.allowed_users` (the single-channel form), else the `channels:` entry — by its `id:`, or its
1001
+ * `type:` when it has none. Read from the raw file: loading turns `channel:` into `channels` and fills in ids.
1002
+ */
1003
+ adminListKey(adapterId?: string): string;
995
1004
  /**
996
1005
  * The one question the privileged commands (/update, /doctor, /dashboard, /collab) ask: may THIS caller,
997
1006
  * through THIS adapter, run it. `disabled` is "nobody can" — an empty list — and is told apart from
@@ -1820,6 +1829,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
1820
1829
  saveFleetConfig(explicitPatches?: RawConfigPatch[]): void;
1821
1830
  /** Why the config written to `candidate` must not replace fleet.yaml, or null: it does not load, or it adds errors. */
1822
1831
  private savedFleetConfigProblem;
1832
+ /**
1833
+ * #1874 follow-up: the validator's warnings, once per start, in daemon.log — a setting fleet.yaml has that AgEnD
1834
+ * ignores (e.g. `web.access`) is otherwise silent unless someone runs `agend validate`.
1835
+ */
1836
+ private logConfigWarningsAtStartup;
1823
1837
  /** One-time upgrade migration; invalid YAML is never rewritten. */
1824
1838
  private slimFleetConfigAtStartup;
1825
1839
  private writeFleetConfigBackup;
@@ -1904,8 +1918,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
1904
1918
  private webImageCache;
1905
1919
  /**
1906
1920
  * The bots instances and ClassicBot rooms speak through, by connections configured now (a connection removed from
1907
- * fleet.yaml is nobody's, whatever an instance still names — #1635 review). `own`: instance → its own bot (not the
1908
- * primary, answering for it alone). `speaking` (#1867): instance → the bot it speaks through — its own, a shared one,
1921
+ * fleet.yaml is nobody's, whatever an instance still names — #1635 review). `own`: instance → its own bot (answering
1922
+ * for it alone; the primary too, when it serves one instance only). `speaking` (#1867): instance → the bot it speaks through — its own, a shared one,
1909
1923
  * or, with none configured for it, the primary.
1910
1924
  */
1911
1925
  private webBots;
@@ -2708,9 +2722,9 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2708
2722
  * The absolute path a fresh login shell resolves `binary` to, or null. Only
2709
2723
  * a real executable file counts: `command -v` also answers with an alias
2710
2724
  * definition or a function name, neither of which a spawn could run.
2725
+ * Async (runOnLoginShell): a login file that backgrounds a process holding the shell's output once froze the fleet loop here.
2711
2726
  */
2712
2727
  private locateBinaryOnLoginShell;
2713
- private locateBinaryOnLoginShellSync;
2714
2728
  /**
2715
2729
  * #1092: the binary in one of the directories its own installer installs to,
2716
2730
  * when no login shell can see it (the installer recorded its PATH in an
@@ -23,7 +23,6 @@ import { ProfileControlServer } from "./profile-control.js";
23
23
  import { existsSync, readFileSync, mkdirSync, writeFileSync, unlinkSync, rmSync, readdirSync, renameSync, copyFileSync, chmodSync, statSync, accessSync, realpathSync, constants as fsConstants, closeSync } from "node:fs";
24
24
  import { atomicWriteFileSync } from "./atomic-write.js";
25
25
  import { createHash, randomBytes, randomUUID } from "node:crypto";
26
- import { spawnSync } from "node:child_process";
27
26
  import { freemem, totalmem, cpus, homedir } from "node:os";
28
27
  import { createServer } from "node:http";
29
28
  import { Worker } from "node:worker_threads";
@@ -34,7 +33,7 @@ import { getAgendHome, ensureWorkspaceGit } from "./paths.js";
34
33
  import { fleetLabel } from "./fleet-label.js";
35
34
  import { beginFullRestartProgress as persistFullRestartProgress, beginUpdateProgress as persistUpdateProgress, clearUpdateMarker, isUpdateInProgress, readUpdateProgress, sameUpdateMarker, setUpdateProgressStage, updateMarkerIdentity, updateProgressOperation, updateReceiptOf, } from "./update-marker.js";
36
35
  import { formatUpdateProgress } from "./update-progress.js";
37
- import { sdNotify, sdNotifyBlocking } from "./sd-notify.js";
36
+ import { sdNotify, sdNotifyBlocking, setSdNotifyWarn } from "./sd-notify.js";
38
37
  import { readFleetMemory } from "./process-memory.js";
39
38
  import { MemoryPressure } from "./memory-pressure.js";
40
39
  import { replyDedupText, ReplyDeduper } from "./reply-dedup.js";
@@ -158,6 +157,7 @@ import { isDisallowedIntentsError, isRejectedTokenError } from "./discord-permis
158
157
  import { filterUsageProviders, formatDiscordUsageActivity, getUsageSnapshot, handleUsageRequest, isUsagePath, usageProviderIdForBackend } from "./usage/usage-api.js";
159
158
  import { LOGIN_FLOWS, LOGIN_BACKEND_ALIASES } from "./login-flows.js";
160
159
  import { LoginSession } from "./login-manager.js";
160
+ import { runOnLoginShell } from "./login-shell.js";
161
161
  import { tightenInstanceDirs } from "./private-dir.js";
162
162
  import { decideSlash } from "./slash-authz.js";
163
163
  import { canonicalCommand, commandSpec, decideCommand, ruleFor } from "./command-table.js";
@@ -194,6 +194,7 @@ import { GENERAL_PAUSE_ERROR, isGeneralInstance } from "./general-instance.js";
194
194
  import { buildOrgChart } from "./web-org.js";
195
195
  import { CacheService, WINDOWS } from "./cache-service.js";
196
196
  import { runWebCommand } from "./web-commands.js";
197
+ import { CompactWatch, launchIdentity } from "./compact-watch.js";
197
198
  import { claudeConfigDirFor, claudeProjectKey } from "./backend/claude-code.js";
198
199
  import { sharedRolloutIndex } from "./rollout-index.js";
199
200
  import { mayUseTool, resolveToolSet, scheduleOpRefusal, toolForIpcType, toolRefusedMessage, } from "./tool-permissions.js";
@@ -2301,7 +2302,7 @@ export class FleetManager {
2301
2302
  async handleUpdateSlash(data, adapterId) {
2302
2303
  const gate = this.fleetAdminGate(data.userId, adapterId);
2303
2304
  if (gate !== "ok") {
2304
- await data.respond(t(gate === "disabled" ? "update.disabled" : "not_authorized"));
2305
+ await data.respond(gate === "disabled" ? t("update.disabled", this.adminListKey(adapterId)) : t("not_authorized"));
2305
2306
  return;
2306
2307
  }
2307
2308
  const messageId = await data.respond(t("update.progress.preparing", 0));
@@ -2811,6 +2812,24 @@ export class FleetManager {
2811
2812
  emit: (event, data) => this.emitSseEvent(event, data),
2812
2813
  });
2813
2814
  }
2815
+ /** Board 003648ac: a web /compact followed to its end, from the transcript the Log reads (none: nothing to follow). */
2816
+ compactWatchService = null;
2817
+ get compactWatch() {
2818
+ return this.compactWatchService ??= new CompactWatch({
2819
+ source: (name) => { const src = this.logSource(name); return { path: src.path, format: src.format }; },
2820
+ // The launch that runs it now (the same value the daemon sends with raw_paste_written).
2821
+ owner: (name) => {
2822
+ const daemon = this.lifecycle.daemons.get(name);
2823
+ try {
2824
+ return daemon ? launchIdentity(daemon.getInteractionSnapshot().owner) : null;
2825
+ }
2826
+ catch {
2827
+ return null;
2828
+ }
2829
+ },
2830
+ changed: () => this.emitSseEvent("status", this.getUiStatus()),
2831
+ });
2832
+ }
2814
2833
  /** #1218: GET /ui/steps — an instance's steps, read on demand (null: no such instance). */
2815
2834
  logSteps(name, q) { return this.log.steps(name, q); }
2816
2835
  /**
@@ -3579,6 +3598,20 @@ export class FleetManager {
3579
3598
  hasFleetAdmins(adapterId) {
3580
3599
  return (this.adminListOf(adapterId)?.length ?? 0) > 0;
3581
3600
  }
3601
+ /**
3602
+ * Where this adapter's fleet-admin list is in fleet.yaml, as the operator wrote it, for the "disabled" replies:
3603
+ * `channel.access.allowed_users` (the single-channel form), else the `channels:` entry — by its `id:`, or its
3604
+ * `type:` when it has none. Read from the raw file: loading turns `channel:` into `channels` and fills in ids.
3605
+ */
3606
+ adminListKey(adapterId) {
3607
+ const raw = this.rawFleetConfig;
3608
+ if (!Array.isArray(raw.channels) && raw.channel)
3609
+ return "channel.access.allowed_users";
3610
+ const channels = Array.isArray(raw.channels) ? raw.channels : this.fleetConfig?.channels ?? [];
3611
+ const id = adapterId ?? this.getPrimaryAdapterId();
3612
+ const entry = channels.find(ch => (ch.id ?? ch.type) === id);
3613
+ return `channels[${entry?.id ? `id: ${entry.id}` : `type: ${entry?.type ?? id}`}].access.allowed_users`;
3614
+ }
3582
3615
  /**
3583
3616
  * The one question the privileged commands (/update, /doctor, /dashboard, /collab) ask: may THIS caller,
3584
3617
  * through THIS adapter, run it. `disabled` is "nobody can" — an empty list — and is told apart from
@@ -3656,6 +3689,9 @@ export class FleetManager {
3656
3689
  if (!decision.allow) {
3657
3690
  this.logger.info({ command: data.command, adapterId, scope, reply: decision.reply[0] }, "Slash command refused by the command table");
3658
3691
  const [key, ...args] = decision.reply;
3692
+ // A command off for want of fleet admins names where they go (`{0}` in its disabled reply).
3693
+ if (decision.reply === spec.disabled)
3694
+ args.push(this.adminListKey(adapterId));
3659
3695
  await data.respond(t(key, ...args)).catch(() => { });
3660
3696
  return;
3661
3697
  }
@@ -5993,6 +6029,7 @@ export class FleetManager {
5993
6029
  this.rotateFleetLogs();
5994
6030
  const fleet = this.loadConfig(configPath);
5995
6031
  this.slimFleetConfigAtStartup();
6032
+ this.logConfigWarningsAtStartup();
5996
6033
  setLocale(detectLocale(fleet)); // user-facing text language (fleet.yaml defaults.locale / timezone)
5997
6034
  // #1737 review: the marker this boot adopts — the startup clear may only ever clear this one.
5998
6035
  const bootUpdateMarker = updateMarkerIdentity(this.dataDir);
@@ -6328,6 +6365,7 @@ export class FleetManager {
6328
6365
  // into the same broken state, and a user who has legitimately stopped every
6329
6366
  // instance would get a restart loop. Those conditions surface through /health
6330
6367
  // (which now returns 503) and through the General-topic notifications instead.
6368
+ setSdNotifyWarn((fields, message) => this.logger.warn(fields, message));
6331
6369
  this.watchdogTimer = setInterval(() => sdNotify("WATCHDOG=1"), 30_000);
6332
6370
  // #1231: a stalled loop is what turns a slash command into "did not respond";
6333
6371
  // put each long stall in the log instead of leaving it to be guessed at.
@@ -7238,6 +7276,11 @@ export class FleetManager {
7238
7276
  });
7239
7277
  }
7240
7278
  }
7279
+ else if (msg.type === "raw_paste_written") {
7280
+ // Board 003648ac: a web /compact's paste reached the pane (or never will): its watch starts, or ends as lost.
7281
+ if (typeof msg.id === "string")
7282
+ this.compactWatchService?.pasted(name, msg.id, msg.outcome === "written", { owner: msg.owner, checkpoint: msg.checkpoint });
7283
+ }
7241
7284
  else if (msg.type === "runtime_switch_result") {
7242
7285
  // #1690: what our own runtime /model came to (the daemon answered claude's "Switch model?" or saw the result).
7243
7286
  const waiter = typeof msg.id === "string" ? this.runtimeSwitchWaiters.get(msg.id) : undefined;
@@ -10052,6 +10095,21 @@ export class FleetManager {
10052
10095
  ? `Refusing to save fleet.yaml: it would be invalid (${introduced.map(e => `${e.path}: ${e.message}`).join("; ")})`
10053
10096
  : null;
10054
10097
  }
10098
+ /**
10099
+ * #1874 follow-up: the validator's warnings, once per start, in daemon.log — a setting fleet.yaml has that AgEnD
10100
+ * ignores (e.g. `web.access`) is otherwise silent unless someone runs `agend validate`.
10101
+ */
10102
+ logConfigWarningsAtStartup() {
10103
+ let warnings = [];
10104
+ try {
10105
+ warnings = validateFleetConfig(this.rawFleetConfig).warnings;
10106
+ }
10107
+ catch (err) {
10108
+ this.logger.debug({ err }, "fleet.yaml validation failed (startup warnings)");
10109
+ }
10110
+ for (const w of warnings)
10111
+ this.logger.warn({ path: w.path }, `fleet.yaml: ${w.path ? `${w.path}: ` : ""}${w.message}`);
10112
+ }
10055
10113
  /** One-time upgrade migration; invalid YAML is never rewritten. */
10056
10114
  slimFleetConfigAtStartup() {
10057
10115
  const redundantPaths = collectRedundantInstanceDefaultPaths(this.rawFleetConfig);
@@ -10225,6 +10283,7 @@ export class FleetManager {
10225
10283
  // must not be shown the old one's conversation, and deleted names must not pile up.
10226
10284
  this.webChatHistory.forget(name);
10227
10285
  this.webFiles.forget(name);
10286
+ this.compactWatchService?.forget(name);
10228
10287
  // #1664: and it is nobody's favorite any more (every device sees that at its next status frame).
10229
10288
  try {
10230
10289
  this.webPrefs.forgetInstance(name);
@@ -10433,8 +10492,8 @@ export class FleetManager {
10433
10492
  }
10434
10493
  /**
10435
10494
  * The bots instances and ClassicBot rooms speak through, by connections configured now (a connection removed from
10436
- * fleet.yaml is nobody's, whatever an instance still names — #1635 review). `own`: instance → its own bot (not the
10437
- * primary, answering for it alone). `speaking` (#1867): instance → the bot it speaks through — its own, a shared one,
10495
+ * fleet.yaml is nobody's, whatever an instance still names — #1635 review). `own`: instance → its own bot (answering
10496
+ * for it alone; the primary too, when it serves one instance only). `speaking` (#1867): instance → the bot it speaks through — its own, a shared one,
10438
10497
  * or, with none configured for it, the primary.
10439
10498
  */
10440
10499
  webBots() {
@@ -10454,7 +10513,7 @@ export class FleetManager {
10454
10513
  if (c)
10455
10514
  speaking.set(instance, c);
10456
10515
  }
10457
- return { own: ownBotConnections(primary, assignments), speaking };
10516
+ return { own: ownBotConnections(assignments), speaking };
10458
10517
  }
10459
10518
  /** instance → the connection that is its own bot (see webBots). */
10460
10519
  ownBots() { return this.webBots().own; }
@@ -12632,7 +12691,22 @@ export class FleetManager {
12632
12691
  return this.classicChannels?.getChannelIdByInstance(instance) !== undefined ? "classic" : null;
12633
12692
  },
12634
12693
  ctx: (instance) => this.topicCommands.getCtxText(instance),
12635
- compact: (instance, instructions) => this.topicCommands.sendCompact(instance, instructions),
12694
+ // Board 003648ac: a watch for the paste, armed when the daemon says it was written (raw_paste_written); one
12695
+ // for a command that was not handed over is dropped.
12696
+ compact: async (instance, instructions) => {
12697
+ let watch = null;
12698
+ try {
12699
+ const r = this.topicCommands.compactInstance(instance, instructions, () => (watch = this.compactWatch.begin(instance)));
12700
+ if (!r.sent && watch)
12701
+ this.compactWatch.cancel(instance, watch);
12702
+ return { ...r, watch: r.sent ? watch : null };
12703
+ }
12704
+ catch (err) {
12705
+ if (watch)
12706
+ this.compactWatch.cancel(instance, watch);
12707
+ throw err;
12708
+ }
12709
+ },
12636
12710
  applyModel: (instance, name) => this.applyModel(instance, name),
12637
12711
  modelChoices: choicesFromCache,
12638
12712
  applyEffort: (instance, level) => this.applyEffort(instance, level),
@@ -12706,7 +12780,8 @@ export class FleetManager {
12706
12780
  // sendClear sends its first IPC synchronously: no await separates this check from the effect.
12707
12781
  if (this.shuttingDown || !entry.fence())
12708
12782
  return { status: 409, text: t("menu.click_stale") };
12709
- return { status: 200, text: await this.topicCommands.sendClear(instance) };
12783
+ const r = this.topicCommands.clearInstance(instance);
12784
+ return r.sent ? { status: 200, text: r.text, sent: true } : { status: 409, text: r.text };
12710
12785
  },
12711
12786
  t: (key, ...args) => t(key, ...args),
12712
12787
  }, input, opts);
@@ -14289,10 +14364,18 @@ export class FleetManager {
14289
14364
  }
14290
14365
  return;
14291
14366
  }
14367
+ // Between the install ending and the sign-in starting there is no
14368
+ // session to cancel; this hand-off is what `/login cancel` stops — from
14369
+ // here on, as the login-shell lookup below is an await.
14370
+ const handoff = { backend, cancelled: false };
14371
+ this.installHandoff = handoff;
14292
14372
  // The installer may only have added the binary to a profile PATH; a
14293
14373
  // fresh login shell sees that, the fleet process's PATH may not.
14294
- const installedAt = this.locateBinaryOnLoginShell(info.binary) ?? this.locateInInstallerBinDirs(info);
14374
+ const installedAt = (await this.locateBinaryOnLoginShell(info.binary)) ?? this.locateInInstallerBinDirs(info);
14375
+ if (handoff.cancelled || this.installHandoff !== handoff)
14376
+ return;
14295
14377
  if (!installedAt) {
14378
+ this.installHandoff = null;
14296
14379
  await chat.adapter.sendText(chat.chatId, t("install.verify_failed", backend, info.binary), { threadId: chat.threadId }).catch(() => { });
14297
14380
  return;
14298
14381
  }
@@ -14302,6 +14385,7 @@ export class FleetManager {
14302
14385
  // installed, reported as verified, and then offered nowhere.
14303
14386
  this.adoptBinaryDirectory(installedAt, backend);
14304
14387
  if (!LOGIN_FLOWS[backend]) {
14388
+ this.installHandoff = null;
14305
14389
  await chat.adapter.sendText(chat.chatId, t("install.success_no_login", backend), { threadId: chat.threadId }).catch(() => { });
14306
14390
  return;
14307
14391
  }
@@ -14310,10 +14394,6 @@ export class FleetManager {
14310
14394
  // publish a durable completion line first so a successful install can
14311
14395
  // never look like it silently disappeared. Include the binary that
14312
14396
  // passed the fresh-login-shell verification and the exact next step.
14313
- // Between the install ending and the sign-in starting there is no
14314
- // session to cancel; this hand-off is what `/login cancel` stops.
14315
- const handoff = { backend, cancelled: false };
14316
- this.installHandoff = handoff;
14317
14397
  await chat.adapter.sendText(chat.chatId, t("install.success", backend, info.binary), { threadId: chat.threadId }).catch(err => this.logger.warn({ err, backend }, "Failed to send durable install success notification"));
14318
14398
  if (handoff.cancelled || this.installHandoff !== handoff)
14319
14399
  return;
@@ -14372,16 +14452,14 @@ export class FleetManager {
14372
14452
  * The absolute path a fresh login shell resolves `binary` to, or null. Only
14373
14453
  * a real executable file counts: `command -v` also answers with an alias
14374
14454
  * definition or a function name, neither of which a spawn could run.
14455
+ * Async (runOnLoginShell): a login file that backgrounds a process holding the shell's output once froze the fleet loop here.
14375
14456
  */
14376
- locateBinaryOnLoginShell(binary) {
14377
- return measureSyncWork("fleet.installLookup", () => this.locateBinaryOnLoginShellSync(binary));
14378
- }
14379
- locateBinaryOnLoginShellSync(binary) {
14457
+ async locateBinaryOnLoginShell(binary) {
14380
14458
  try {
14381
- const result = measureSyncWork("fleet.installLoginShell", () => spawnSync("bash", ["-lc", `command -v ${binary}`], { timeout: 10_000, stdio: "pipe", encoding: "utf8" }));
14459
+ const result = await runOnLoginShell(`command -v ${binary}`);
14382
14460
  if (result.status !== 0)
14383
14461
  return null;
14384
- const path = String(result.stdout ?? "").trim().split("\n").pop()?.trim() ?? "";
14462
+ const path = result.stdout.trim().split("\n").pop()?.trim() ?? "";
14385
14463
  if (!isAbsolute(path))
14386
14464
  return null;
14387
14465
  accessSync(path, fsConstants.X_OK);
@@ -17283,6 +17361,7 @@ Plus the operational skills (fleet-health, instance-lifecycle, scheduling, sessi
17283
17361
  this.eventLogPruneTimer = null;
17284
17362
  }
17285
17363
  this.logService?.unwatchAll(); // #1218: a Log's watch timers end with the fleet
17364
+ this.compactWatchService?.stopAll();
17286
17365
  if (this.outboxPruneTimer) {
17287
17366
  clearInterval(this.outboxPruneTimer);
17288
17367
  this.outboxPruneTimer = null;
@@ -19935,6 +20014,7 @@ Plus the operational skills (fleet-health, instance-lifecycle, scheduling, sessi
19935
20014
  const effort = (effortStrategy === "unsupported" || isAgy) ? null : effortResolved.effort;
19936
20015
  const effort_source = (effortStrategy === "unsupported" || isAgy) ? null : effortResolved.source;
19937
20016
  const identity = resolveInstanceIdentity({ cfg: this.fleetConfig?.instances[name], classic: classicRooms.get(name), profile: profiles.get(name) });
20017
+ const compact = this.compactWatchService?.view(name) ?? null;
19938
20018
  let image;
19939
20019
  try {
19940
20020
  image = this.webIdentityImage(name, identity.display_name, profiles.get(name)?.avatar_path, bots);
@@ -19962,6 +20042,8 @@ Plus the operational skills (fleet-health, instance-lifecycle, scheduling, sessi
19962
20042
  effort,
19963
20043
  effort_source,
19964
20044
  ...this.instancePresentation(name),
20045
+ // Board 003648ac: the last web /compact, while it runs and briefly after (the chat's card follows it).
20046
+ ...(compact ? { compact } : {}),
19965
20047
  };
19966
20048
  });
19967
20049
  return {