@songsid/agend 2.3.4-beta.8 → 2.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/THIRD_PARTY_NOTICES.md +37 -0
  2. package/dist/agent-cli-instructions.md +1 -1
  3. package/dist/agent-credentials.d.ts +24 -0
  4. package/dist/agent-credentials.js +66 -0
  5. package/dist/agent-credentials.js.map +1 -0
  6. package/dist/agent-endpoint.d.ts +3 -1
  7. package/dist/agent-endpoint.js +13 -0
  8. package/dist/agent-endpoint.js.map +1 -1
  9. package/dist/auth-api.js +5 -0
  10. package/dist/auth-api.js.map +1 -1
  11. package/dist/authority/session-authorizations.d.ts +28 -4
  12. package/dist/authority/session-authorizations.js +63 -17
  13. package/dist/authority/session-authorizations.js.map +1 -1
  14. package/dist/backend/antigravity.js +3 -1
  15. package/dist/backend/antigravity.js.map +1 -1
  16. package/dist/backend/codex-footer-hints.d.ts +4 -0
  17. package/dist/backend/codex-footer-hints.js +27 -0
  18. package/dist/backend/codex-footer-hints.js.map +1 -0
  19. package/dist/backend/codex-metadata.d.ts +14 -0
  20. package/dist/backend/codex-metadata.js +45 -0
  21. package/dist/backend/codex-metadata.js.map +1 -1
  22. package/dist/backend/codex-speed.d.ts +14 -0
  23. package/dist/backend/codex-speed.js +35 -0
  24. package/dist/backend/codex-speed.js.map +1 -0
  25. package/dist/backend/codex.js +17 -5
  26. package/dist/backend/codex.js.map +1 -1
  27. package/dist/backend/kiro.js +11 -1
  28. package/dist/backend/kiro.js.map +1 -1
  29. package/dist/backend/muse.js +5 -3
  30. package/dist/backend/muse.js.map +1 -1
  31. package/dist/cache-ledger.d.ts +95 -0
  32. package/dist/cache-ledger.js +276 -4
  33. package/dist/cache-ledger.js.map +1 -1
  34. package/dist/cache-service.d.ts +5 -0
  35. package/dist/cache-service.js +16 -4
  36. package/dist/cache-service.js.map +1 -1
  37. package/dist/channel/adapters/discord.js +11 -3
  38. package/dist/channel/adapters/discord.js.map +1 -1
  39. package/dist/channel/adapters/telegram.d.ts +51 -0
  40. package/dist/channel/adapters/telegram.js +235 -17
  41. package/dist/channel/adapters/telegram.js.map +1 -1
  42. package/dist/channel/mcp-tools.js +1 -1
  43. package/dist/channel/mcp-tools.js.map +1 -1
  44. package/dist/channel/types.d.ts +2 -0
  45. package/dist/config-validator.js +5 -0
  46. package/dist/config-validator.js.map +1 -1
  47. package/dist/cross-instance-notice.d.ts +10 -0
  48. package/dist/cross-instance-notice.js +67 -5
  49. package/dist/cross-instance-notice.js.map +1 -1
  50. package/dist/daemon.d.ts +3 -0
  51. package/dist/daemon.js +11 -4
  52. package/dist/daemon.js.map +1 -1
  53. package/dist/export-import.d.ts +7 -0
  54. package/dist/export-import.js +44 -10
  55. package/dist/export-import.js.map +1 -1
  56. package/dist/fleet-context.d.ts +2 -0
  57. package/dist/fleet-manager.d.ts +93 -4
  58. package/dist/fleet-manager.js +451 -39
  59. package/dist/fleet-manager.js.map +1 -1
  60. package/dist/general-knowledge/skills/concepts/SKILL.md +3 -0
  61. package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +1 -0
  62. package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +1 -1
  63. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +7 -2
  64. package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
  65. package/dist/instance-config-impact.js +2 -0
  66. package/dist/instance-config-impact.js.map +1 -1
  67. package/dist/instance-lifecycle.d.ts +6 -2
  68. package/dist/instance-lifecycle.js +11 -6
  69. package/dist/instance-lifecycle.js.map +1 -1
  70. package/dist/instance-topic-delete.d.ts +77 -0
  71. package/dist/instance-topic-delete.js +123 -0
  72. package/dist/instance-topic-delete.js.map +1 -0
  73. package/dist/instructions.d.ts +1 -1
  74. package/dist/instructions.js +1 -1
  75. package/dist/instructions.js.map +1 -1
  76. package/dist/locale.js +33 -1
  77. package/dist/locale.js.map +1 -1
  78. package/dist/log-service.d.ts +28 -0
  79. package/dist/log-service.js +29 -0
  80. package/dist/log-service.js.map +1 -1
  81. package/dist/log-steps.d.ts +4 -3
  82. package/dist/log-steps.js +32 -7
  83. package/dist/log-steps.js.map +1 -1
  84. package/dist/logger.d.ts +12 -0
  85. package/dist/logger.js +43 -1
  86. package/dist/logger.js.map +1 -1
  87. package/dist/missed-offline.d.ts +25 -0
  88. package/dist/missed-offline.js +79 -0
  89. package/dist/missed-offline.js.map +1 -0
  90. package/dist/needs-you-hub.d.ts +6 -1
  91. package/dist/needs-you-hub.js +30 -7
  92. package/dist/needs-you-hub.js.map +1 -1
  93. package/dist/needs-you.d.ts +16 -2
  94. package/dist/needs-you.js +9 -1
  95. package/dist/needs-you.js.map +1 -1
  96. package/dist/outbound-handlers.js +3 -3
  97. package/dist/outbound-handlers.js.map +1 -1
  98. package/dist/outbound-schemas.js +5 -2
  99. package/dist/outbound-schemas.js.map +1 -1
  100. package/dist/scheduler/db.d.ts +2 -1
  101. package/dist/scheduler/db.js +23 -9
  102. package/dist/scheduler/db.js.map +1 -1
  103. package/dist/settings-api.d.ts +13 -0
  104. package/dist/settings-api.js +22 -1
  105. package/dist/settings-api.js.map +1 -1
  106. package/dist/settings-change.js +16 -1
  107. package/dist/settings-change.js.map +1 -1
  108. package/dist/settings-instance-patch.js +27 -0
  109. package/dist/settings-instance-patch.js.map +1 -1
  110. package/dist/tool-progress.d.ts +2 -0
  111. package/dist/tool-progress.js +19 -3
  112. package/dist/tool-progress.js.map +1 -1
  113. package/dist/topic-commands.js +4 -0
  114. package/dist/topic-commands.js.map +1 -1
  115. package/dist/ui/chat-md-strings.js +9 -0
  116. package/dist/ui/chat-strings.js +2 -2
  117. package/dist/ui/chat-thread.js +53 -3
  118. package/dist/ui/fleet-usage.js +90 -27
  119. package/dist/ui/panel-chat.js +5 -2
  120. package/dist/ui/panel-needs.js +13 -5
  121. package/dist/ui/preview-panel.js +78 -2
  122. package/dist/ui/settings-codex-copy.js +19 -0
  123. package/dist/ui/settings-dialogs.js +8 -0
  124. package/dist/ui/settings-model.js +16 -2
  125. package/dist/ui/settings-strings.js +2 -2
  126. package/dist/ui/shared/app-i18n.js +2 -2
  127. package/dist/ui/shared/app.css +19 -0
  128. package/dist/ui/shared/panel-view.js +77 -4
  129. package/dist/ui/shared/usage-dialog.js +18 -1
  130. package/dist/ui/shared/view-history.css +17 -0
  131. package/dist/ui/shared/view-history.js +438 -0
  132. package/dist/ui/shared/view-strings.js +16 -0
  133. package/dist/usage/capacity.d.ts +69 -0
  134. package/dist/usage/capacity.js +119 -0
  135. package/dist/usage/capacity.js.map +1 -0
  136. package/dist/usage/i18n-keys.d.ts +1 -1
  137. package/dist/usage/i18n-keys.js +3 -0
  138. package/dist/usage/i18n-keys.js.map +1 -1
  139. package/dist/usage/profile-timeline.d.ts +16 -0
  140. package/dist/usage/profile-timeline.js +58 -0
  141. package/dist/usage/profile-timeline.js.map +1 -0
  142. package/dist/usage/quota-history.d.ts +43 -0
  143. package/dist/usage/quota-history.js +168 -0
  144. package/dist/usage/quota-history.js.map +1 -0
  145. package/dist/usage/usage-api.d.ts +31 -0
  146. package/dist/usage/usage-api.js +80 -1
  147. package/dist/usage/usage-api.js.map +1 -1
  148. package/dist/usage-report.d.ts +25 -1
  149. package/dist/usage-report.js +55 -4
  150. package/dist/usage-report.js.map +1 -1
  151. package/dist/usage-rollup.d.ts +6 -1
  152. package/dist/usage-rollup.js +16 -4
  153. package/dist/usage-rollup.js.map +1 -1
  154. package/dist/view-api.d.ts +16 -0
  155. package/dist/view-api.js +100 -16
  156. package/dist/view-api.js.map +1 -1
  157. package/dist/view-history.d.ts +84 -0
  158. package/dist/view-history.js +116 -0
  159. package/dist/view-history.js.map +1 -0
  160. package/dist/web-api.d.ts +6 -0
  161. package/dist/web-api.js +8 -2
  162. package/dist/web-api.js.map +1 -1
  163. package/dist/web-session-authorization.d.ts +13 -2
  164. package/dist/web-session-authorization.js +10 -3
  165. package/dist/web-session-authorization.js.map +1 -1
  166. package/launcher/private-home.cjs +1 -1
  167. package/package.json +1 -1
@@ -1,2 +1,9 @@
1
+ /**
2
+ * The archive file, private from its first byte: created here, exclusively, 0600 (the umask can only narrow it), and
3
+ * never through a link. The archive holds the fleet's secrets (.env), so it must never exist readable by others, not
4
+ * even for the moment a chmod afterwards would leave. An existing destination — a file, a directory or a symlink — is
5
+ * refused, never replaced or followed.
6
+ */
7
+ export declare function openPrivateArchive(path: string): number;
1
8
  export declare function exportConfig(dataDir: string, outputPath: string | undefined, full: boolean): Promise<void>;
2
9
  export declare function importConfig(dataDir: string, filePath: string): Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import { ensureAgendHome } from "./agend-home.js";
2
2
  import { execFileSync } from "node:child_process";
3
3
  import { t } from "./locale.js";
4
- import { existsSync, statSync, copyFileSync, readFileSync, } from "node:fs";
4
+ import { existsSync, statSync, copyFileSync, readFileSync, openSync, closeSync, fsyncSync, unlinkSync, constants as fsConstants, } from "node:fs";
5
5
  import { join, basename, resolve, sep as pathSep } from "node:path";
6
6
  import { homedir } from "node:os";
7
7
  const MINIMAL_FILES = ["fleet.yaml", ".env", "scheduler.db", "classicBot.yaml"];
@@ -13,6 +13,43 @@ const RUNTIME_EXCLUDES = [
13
13
  "fleet.log",
14
14
  "node_modules",
15
15
  ];
16
+ /**
17
+ * The archive file, private from its first byte: created here, exclusively, 0600 (the umask can only narrow it), and
18
+ * never through a link. The archive holds the fleet's secrets (.env), so it must never exist readable by others, not
19
+ * even for the moment a chmod afterwards would leave. An existing destination — a file, a directory or a symlink — is
20
+ * refused, never replaced or followed.
21
+ */
22
+ export function openPrivateArchive(path) {
23
+ // O_CREAT | O_EXCL fails on any existing path — a symlink included, which it never follows (POSIX open(2)).
24
+ const flags = fsConstants.O_WRONLY | fsConstants.O_CREAT | fsConstants.O_EXCL;
25
+ try {
26
+ return openSync(path, flags, 0o600);
27
+ }
28
+ catch (err) {
29
+ if (err.code === "EEXIST") {
30
+ console.error(`${path} already exists. Choose another output path, or move that file away first.`);
31
+ process.exit(1);
32
+ }
33
+ throw err;
34
+ }
35
+ }
36
+ /** tar into the private archive (its stdout is the archive's fd); on failure the partial archive is removed. */
37
+ function tarInto(outFile, args) {
38
+ const fd = openPrivateArchive(outFile);
39
+ try {
40
+ execFileSync("tar", ["czf", "-", ...args], { stdio: ["ignore", fd, "pipe"] });
41
+ fsyncSync(fd);
42
+ }
43
+ catch (err) {
44
+ closeSync(fd);
45
+ try {
46
+ unlinkSync(outFile);
47
+ }
48
+ catch { /* already gone */ }
49
+ throw err;
50
+ }
51
+ closeSync(fd);
52
+ }
16
53
  // Reject tarballs above this size to blunt zip-bomb style exhaustion.
17
54
  const MAX_IMPORT_BYTES = 500 * 1024 * 1024;
18
55
  export async function exportConfig(dataDir, outputPath, full) {
@@ -20,14 +57,13 @@ export async function exportConfig(dataDir, outputPath, full) {
20
57
  console.error(`Data directory not found: ${dataDir}`);
21
58
  process.exit(1);
22
59
  }
23
- const date = new Date().toISOString().slice(0, 10);
24
- const outFile = resolve(outputPath ?? `agend-export-${date}.tar.gz`);
60
+ // The default name carries the time to the second (UTC), so a second export on the same day gets its own file
61
+ // instead of meeting an existing one (which openPrivateArchive refuses). An explicit path is used as given.
62
+ const stamp = new Date().toISOString().slice(0, 19).replace(/[-:]/g, "").replace("T", "-");
63
+ const outFile = resolve(outputPath ?? `agend-export-${stamp}.tar.gz`);
25
64
  if (full) {
26
65
  const excludeArgs = RUNTIME_EXCLUDES.flatMap((p) => ["--exclude", p]);
27
- execFileSync("tar", [
28
- "czf", outFile, ...excludeArgs,
29
- "-C", join(dataDir, ".."), basename(dataDir),
30
- ], { stdio: "pipe" });
66
+ tarInto(outFile, [...excludeArgs, "-C", join(dataDir, ".."), basename(dataDir)]);
31
67
  }
32
68
  else {
33
69
  // Minimal: only config files that exist
@@ -37,9 +73,7 @@ export async function exportConfig(dataDir, outputPath, full) {
37
73
  process.exit(1);
38
74
  }
39
75
  const fileArgs = existing.map((f) => `${basename(dataDir)}/${f}`);
40
- execFileSync("tar", [
41
- "czf", outFile, "-C", join(dataDir, ".."), ...fileArgs,
42
- ], { stdio: "pipe" });
76
+ tarInto(outFile, ["-C", join(dataDir, ".."), ...fileArgs]);
43
77
  }
44
78
  const size = statSync(outFile).size;
45
79
  const sizeStr = size < 1024
@@ -1 +1 @@
1
- {"version":3,"file":"export-import.js","sourceRoot":"","sources":["../src/export-import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-import.js","sourceRoot":"","sources":["../src/export-import.ts"],"names":[],"mappings":"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"}
@@ -120,6 +120,8 @@ export interface FleetContext {
120
120
  saveFleetConfig(): void;
121
121
  getInstanceDir(name: string): string;
122
122
  createForumTopic(topicName: string, adapterId?: string): Promise<number | string>;
123
+ /** #3055: a topic with this id is being deleted right now (its agent was deleted); binding it waits until it is over. */
124
+ isTopicDeletionInFlight?(topicId: number | string): boolean;
123
125
  removeInstance(name: string, authorization: ExplicitInstanceRemoval): Promise<void>;
124
126
  /** Quarantine a provider-confirmed missing topic without deleting user data. */
125
127
  quarantineMissingTopic(threadId: string, target: RouteTarget, evidence: {
@@ -15,6 +15,7 @@ import type { FleetConfig, RawFleetConfig, InstanceConfig, WebVerifiedAuthorityC
15
15
  import { type DeliveryStatus, type GuildEmoji, type GuildEmojiGroup, type ResolvedStatusEmojis } from "./status-emojis.js";
16
16
  import { type RouteTarget } from "./fleet-context.js";
17
17
  import { EventLog } from "./event-log.js";
18
+ import { type TopicDeleteOutcome } from "./instance-topic-delete.js";
18
19
  import { BackendAvailabilityStore, type AvailabilityProbes, type BackendAvailability } from "./backend-availability.js";
19
20
  import { AdapterWorld } from "./adapter-world.js";
20
21
  import { CostGuard } from "./cost-guard.js";
@@ -61,6 +62,7 @@ export declare function applyTaskListCap<T extends {
61
62
  } | T[];
62
63
  import { type PublicPreviewForUi } from "./web-api.js";
63
64
  import { type LogAnswer, type LogQuery } from "./log-service.js";
65
+ import { type ViewHistoryAnswer, type ViewHistoryQuery } from "./view-history.js";
64
66
  import { WebChatHistory, type WebChatPost } from "./web-chat-history.js";
65
67
  import { type WebEchoCopy } from "./web-reactions.js";
66
68
  import { SeenUsers, type MentionNames, type MentionQuery } from "./web-mentions.js";
@@ -87,6 +89,7 @@ import { WebBackendLogins, type SignInTarget } from "./web-backend-login.js";
87
89
  import { BrowserBackendSignIns } from "./browser-backend-signins.js";
88
90
  import { type RawConfigPatch } from "./settings-api.js";
89
91
  import { type AgentEndpointContext } from "./agent-endpoint.js";
92
+ import { AgentCredentials } from "./agent-credentials.js";
90
93
  import { ClassicChannelManager } from "./classic-channel-manager.js";
91
94
  import { type ExplicitInstanceRemoval } from "./instance-removal.js";
92
95
  import { type SessionOomRetry } from "./session-oom-stop.js";
@@ -476,6 +479,7 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
476
479
  private kiroMigrationRuns;
477
480
  /** #1386 "Needs you": the list, its live chat messages and Acknowledge. Started with the fleet (finishStartup). */
478
481
  private needsYou;
482
+ private missedOfflineStore;
479
483
  private configHistory;
480
484
  private configHistoryTimer;
481
485
  private loadedFleetSource;
@@ -584,6 +588,9 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
584
588
  private discordPresenceEagerPending;
585
589
  private discordPresenceInFlight;
586
590
  private static readonly DISCORD_PRESENCE_REFRESH_MS;
591
+ /** #3066 §1d: how often a fleet with no Discord bot reads the quota for its history (the user's choice: 30 min). */
592
+ static readonly QUOTA_BACKGROUND_READ_MS: number;
593
+ private quotaReadTimer;
587
594
  /** Days of event/activity history to keep. */
588
595
  private static readonly EVENT_LOG_RETENTION_DAYS;
589
596
  private watchdogTimer;
@@ -884,6 +891,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
884
891
  * startup-only key at startup. See checkStartupSignatureConsistency(). */
885
892
  private fleetSignatureMismatch;
886
893
  private healthServerListening;
894
+ private agentCredentialsCache?;
895
+ get agentCredentials(): AgentCredentials;
887
896
  constructor(dataDir: string);
888
897
  /** #1266: a reply's buttons — the store (reply-buttons.db) and what a click does. Created on first use. */
889
898
  private replyButtonsCtl;
@@ -1214,6 +1223,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
1214
1223
  /** Board 003648ac: a web /compact followed to its end, from the transcript the Log reads (none: nothing to follow). */
1215
1224
  private compactWatchService;
1216
1225
  private get compactWatch();
1226
+ /**
1227
+ * Claude history in the View: an instance's earlier conversation for its View, from the transcript the Log reads —
1228
+ * the View's route applied its own access rules first (view-api.ts); the Log's switch plays no part.
1229
+ */
1230
+ viewHistory(name: string, q: ViewHistoryQuery): Promise<ViewHistoryAnswer | null>;
1217
1231
  /** #1218: GET /ui/steps — an instance's steps, read on demand (null: no such instance). */
1218
1232
  logSteps(name: string, q: LogQuery): Promise<LogAnswer | null>;
1219
1233
  /**
@@ -2046,6 +2060,35 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2046
2060
  /** Start all instances from fleet config */
2047
2061
  startAll(configPath: string): Promise<void>;
2048
2062
  private startAllWithinDeadline;
2063
+ /**
2064
+ * #3066 §1d (the user: yes, every 30 min): the quota history (usage/quota-history.ts) records only the readings AgEnD
2065
+ * makes. A Discord bot's presence refresh reads every 15 min; without one, nothing reads while nobody looks. So, with no
2066
+ * Discord bot and while some account has a running agent, read every 30 min — the same cached read (its 5-minute TTL
2067
+ * still bounds the vendor calls), recorded like any other.
2068
+ */
2069
+ private startQuotaBackgroundReads;
2070
+ /** #3066 §1: the latest estimates, by `provider\0metric` (what usage-api's lookup reads, synchronously). */
2071
+ private capacityEstimates;
2072
+ private capacityTimer;
2073
+ static readonly CAPACITY_REFRESH_MS: number;
2074
+ /**
2075
+ * #3066 §1: estimate each account's weekly 100% from the quota history (§1d) and the usage ledger's hours — both read
2076
+ * asynchronously, the arithmetic small (usage/capacity.ts). An account is its usage provider id ("claude",
2077
+ * "claude:hsinlin", "codex:yanxianchen"): its hours are the ledger sources of that backend under that credential profile
2078
+ * (Codex's "unrecorded" hours are no account's). A per-model weekly ("Sonnet (weekly)") counts only that model's tokens.
2079
+ *
2080
+ * Prism #3073: no estimate rather than a wrong one —
2081
+ * - a window is measured only where the ledger has its hours: kept (31 days) and scanned (`days.coverage`) for every
2082
+ * instance of the account's backend, and every instance whose hours count for it; the quota history goes back 12 weeks;
2083
+ * - a profile literally named "default", "unknown" or "unrecorded" (configured, on disk, or in the quota history) makes
2084
+ * those hours ambiguous: neither the host
2085
+ * account nor the named one is estimated (each would be credited the other's use, or lose its own);
2086
+ * - only a metric the vendor marks per-model (`scope: "model"`) is filtered by model; another named weekly pool
2087
+ * ("Luna Reserve (weekly)", Antigravity pools) is no model name and is not estimated.
2088
+ */
2089
+ refreshCapacity(): Promise<number>;
2090
+ /** One background quota read, when nothing else reads (no Discord bot) and an account has a running agent. */
2091
+ backgroundQuotaRead(): Promise<boolean>;
2049
2092
  /** Keep Discord profile activity aligned with the same cached usage source as /usage. */
2050
2093
  private startDiscordUsagePresence;
2051
2094
  /**
@@ -2271,6 +2314,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2271
2314
  * copies retain their permissive handling when that identity is unknown.
2272
2315
  */
2273
2316
  private isOwnerCommandCopy;
2317
+ /** File a Telegram update that was too old to inject; Needs you lists it until Acknowledge. */
2318
+ private recordMissedOffline;
2274
2319
  /**
2275
2320
  * #1085: coincident topic numbers must not route across Telegram groups.
2276
2321
  */
@@ -2428,6 +2473,12 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2428
2473
  * of the schedule response on IPC.
2429
2474
  */
2430
2475
  private performScheduleOp;
2476
+ /**
2477
+ * `post_decision` with `supersedes` changes a decision someone else may have recorded (it stops being active): the
2478
+ * same permission as `update_decision`, asked through the same live check (tool set + dashboard switches), on both
2479
+ * create paths. An empty or absent value supersedes nothing and needs nothing; anything else must be an id.
2480
+ */
2481
+ private decisionSupersedes;
2431
2482
  handleDecisionCrudHttp(instance: string, op: string, args: Record<string, unknown>): Promise<unknown>;
2432
2483
  handleTaskCrudHttp(instance: string, args: Record<string, unknown>): Promise<unknown>;
2433
2484
  handleSetDisplayNameHttp(instance: string, name: string): Promise<unknown>;
@@ -2443,7 +2494,41 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2443
2494
  private handleTaskCrud;
2444
2495
  /** Create a forum topic via the adapter. Returns the message_thread_id. */
2445
2496
  createForumTopic(topicName: string, adapterId?: string): Promise<number | string>;
2446
- deleteForumTopic(topicId: number | string, adapterId?: string): Promise<void>;
2497
+ /**
2498
+ * Delete an agent and, unless asked not to, its own chat topic (user decision: by default). The topic is planned
2499
+ * before the removal (its id and bot go with the fleet.yaml entry) and deleted through the agent's OWN bot after it;
2500
+ * the outcome is the platform's answer (instance-topic-delete.ts). A topic that cannot go never fails the removal.
2501
+ */
2502
+ removeInstanceAndTopic(name: string, authorization: ExplicitInstanceRemoval, opts: {
2503
+ deleteTopic: boolean;
2504
+ execution?: SettingsExecution;
2505
+ }): Promise<TopicDeleteOutcome>;
2506
+ /** #3055: destinations whose platform deletion is running now; a binding to one waits until it is over. */
2507
+ private readonly topicDeletionsInFlight;
2508
+ /** True while a topic with this id is being deleted on any connection (a new binding of it is refused meanwhile). */
2509
+ isTopicDeletionInFlight(topicId: number | string): boolean;
2510
+ /**
2511
+ * #3055 review r2 (Prism P1-3): would this instance config bind a topic whose deletion is running now? Compared by
2512
+ * physical destination, so the same thread number in another Telegram group is not held. Settings asks it at commit.
2513
+ */
2514
+ topicBindingInFlight(inst: {
2515
+ channel_id?: unknown;
2516
+ topic_id?: unknown;
2517
+ }): boolean;
2518
+ /** Any topic deletion running now (a connection's group or General may not be re-pointed meanwhile). */
2519
+ topicDeletionPending(): boolean;
2520
+ /** The physical destination of `topicId` on the bot `adapterId`. */
2521
+ private destinationFor;
2522
+ /** The adapter of the bot `adapterId` names — never a substitute for a bot that is not there. */
2523
+ private instanceTopicAdapter;
2524
+ /**
2525
+ * Topic ownership by physical destination (#3055 review, Prism P1): an instance's topic is where its bot's platform
2526
+ * puts it (a Telegram group + thread, a Discord channel), so two bots in one group, or two instances on one
2527
+ * channel, are seen to share it; and every connection's own General is protected, with or without a General agent.
2528
+ */
2529
+ private topicOwnership;
2530
+ /** What deleting `name`'s topic would act on: its own bot only — a bot that is not there is never substituted. */
2531
+ private planInstanceTopicDelete;
2447
2532
  getForumTopicDeleter(adapterId?: string): ((topicId: number | string) => Promise<void>) | null;
2448
2533
  private topicCleanupTimer;
2449
2534
  private sessionPruneTimer;
@@ -3429,9 +3514,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
3429
3514
  * Make a tool summary safe to paste into a channel message.
3430
3515
  *
3431
3516
  * The text is agent-controlled (it is built from tool inputs — file paths,
3432
- * shell commands), so it gets flattened to one line, capped, and stripped of
3433
- * the two Discord mass-mention triggers. Neither channel renders it with a
3434
- * parse mode, so no markup escaping is needed beyond that.
3517
+ * shell commands), so it gets flattened to one line, secrets masked, capped,
3518
+ * and stripped of the two Discord mass-mention triggers. Masking comes BEFORE
3519
+ * the cap: a cap can cut a mask's context but must never be what hides (or
3520
+ * fails to hide) a secret. Neither channel renders it with a parse mode, so no
3521
+ * markup escaping is needed beyond that.
3435
3522
  */
3436
3523
  private static sanitizeActivity;
3437
3524
  /**
@@ -3471,6 +3558,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
3471
3558
  */
3472
3559
  /** Configured threshold before elapsed time appears, in ms. */
3473
3560
  progressMinElapsedMs(): number;
3561
+ /** M-2391: when the instance's live (not retiring) bubble started — the current turn's start — or undefined. */
3562
+ private liveButtonStart;
3474
3563
  private startProgressTicker;
3475
3564
  /**
3476
3565
  * After a reply: give the instance REPLY_RETIRE_GRACE_MS to resume working; if