@songsid/agend 2.1.6-beta.10 → 2.1.6-beta.12
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/dist/backend/muse.d.ts +9 -4
- package/dist/backend/muse.js +89 -34
- package/dist/backend/muse.js.map +1 -1
- package/dist/fleet-manager.d.ts +17 -1
- package/dist/fleet-manager.js +57 -7
- package/dist/fleet-manager.js.map +1 -1
- package/dist/usage/usage-api.js +9 -1
- package/dist/usage/usage-api.js.map +1 -1
- package/package.json +1 -1
package/dist/backend/muse.d.ts
CHANGED
|
@@ -20,19 +20,24 @@ export declare class MuseBackend implements CliBackend {
|
|
|
20
20
|
private instanceDir;
|
|
21
21
|
readonly binaryName = "muse";
|
|
22
22
|
private binaryPath;
|
|
23
|
+
private readonly sharedXdgConfigHome;
|
|
23
24
|
private workingDirectory?;
|
|
24
25
|
constructor(instanceDir: string);
|
|
25
26
|
buildCommand(config: CliBackendConfig): string;
|
|
26
27
|
/** The daemon's persisted session id (written from getSessionId()), for resume. */
|
|
27
28
|
private storedSessionId;
|
|
28
29
|
/**
|
|
29
|
-
* Per-instance MCP key.
|
|
30
|
-
*
|
|
31
|
-
* non-ASCII name becomes an ASCII slug plus a hash of the original.
|
|
30
|
+
* Per-instance MCP key. Keep tool names stable across the shared-settings
|
|
31
|
+
* migration; a non-ASCII instance name becomes an ASCII slug plus a hash.
|
|
32
32
|
*/
|
|
33
33
|
private mcpKey;
|
|
34
|
-
|
|
34
|
+
private isolatedXdgConfigHome;
|
|
35
|
+
/** Muse's per-process settings location after buildCommand sets XDG_CONFIG_HOME. */
|
|
35
36
|
private settingsPath;
|
|
37
|
+
private sharedSettingsPath;
|
|
38
|
+
private mirrorSharedConfigEntries;
|
|
39
|
+
/** Preserve the user's login while keeping Muse's MCP settings per instance. */
|
|
40
|
+
private linkSharedAuth;
|
|
36
41
|
writeConfig(config: CliBackendConfig): void;
|
|
37
42
|
requiresDeliveryEnterRetry(): boolean;
|
|
38
43
|
getReadyPattern(): RegExp;
|
package/dist/backend/muse.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, chmodSync } from "node:fs";
|
|
1
|
+
import { join, resolve } from "node:path";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, chmodSync, lstatSync, readlinkSync, symlinkSync, renameSync, unlinkSync } from "node:fs";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
|
-
import { createHash } from "node:crypto";
|
|
4
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
5
5
|
import { resolveBinary, shellQuote, validateModel, warnIfModelMismatch } from "./types.js";
|
|
6
6
|
import { appendWithMarker, removeMarker } from "./marker-utils.js";
|
|
7
7
|
/** Session ids are UUIDs (e.g. "01a0c784-fb91-…"); guard before shell interpolation. */
|
|
@@ -36,12 +36,14 @@ export class MuseBackend {
|
|
|
36
36
|
instanceDir;
|
|
37
37
|
binaryName = "muse";
|
|
38
38
|
binaryPath;
|
|
39
|
+
sharedXdgConfigHome;
|
|
39
40
|
// Cached from buildCommand/writeConfig so getSessionId() (which takes no
|
|
40
41
|
// args) can match sessions against this instance's workspace.
|
|
41
42
|
workingDirectory;
|
|
42
43
|
constructor(instanceDir) {
|
|
43
44
|
this.instanceDir = instanceDir;
|
|
44
45
|
this.binaryPath = resolveBinary("muse");
|
|
46
|
+
this.sharedXdgConfigHome = resolve(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"));
|
|
45
47
|
}
|
|
46
48
|
buildCommand(config) {
|
|
47
49
|
this.workingDirectory = config.workingDirectory;
|
|
@@ -51,7 +53,10 @@ export class MuseBackend {
|
|
|
51
53
|
// mid-run would repaint the pane and swap the CLI. One year in seconds
|
|
52
54
|
// keeps the check quiet while staying inside the launcher's own numeric
|
|
53
55
|
// guard (a non-numeric value also disables it, but undocumented).
|
|
54
|
-
|
|
56
|
+
// Muse has one user-level settings.json and loads every MCP server in it.
|
|
57
|
+
// Point only this Muse process at its instance-scoped copy; otherwise two
|
|
58
|
+
// fleet instances both see both socket-bearing MCP tools.
|
|
59
|
+
let cmd = `XDG_CONFIG_HOME=${shellQuote(this.isolatedXdgConfigHome())} MUSE_UPDATE_INTERVAL_SECONDS=31536000 ${this.binaryPath}`;
|
|
55
60
|
// The daemon may prepare a localhost-only usage relay before spawning Muse.
|
|
56
61
|
// If relay preparation fails this remains unset and Muse connects directly;
|
|
57
62
|
// usage must never become a prerequisite for a working conversation.
|
|
@@ -101,9 +106,8 @@ export class MuseBackend {
|
|
|
101
106
|
}
|
|
102
107
|
}
|
|
103
108
|
/**
|
|
104
|
-
* Per-instance MCP key.
|
|
105
|
-
*
|
|
106
|
-
* non-ASCII name becomes an ASCII slug plus a hash of the original.
|
|
109
|
+
* Per-instance MCP key. Keep tool names stable across the shared-settings
|
|
110
|
+
* migration; a non-ASCII instance name becomes an ASCII slug plus a hash.
|
|
107
111
|
*/
|
|
108
112
|
mcpKey(mcpName, instanceName) {
|
|
109
113
|
const ascii = instanceName.replace(/[^\x20-\x7E]/g, "");
|
|
@@ -113,39 +117,82 @@ export class MuseBackend {
|
|
|
113
117
|
const hash = createHash("md5").update(instanceName).digest("hex").slice(0, 8);
|
|
114
118
|
return slug ? `agend-${mcpName}-${slug}-${hash}` : `agend-${mcpName}-${hash}`;
|
|
115
119
|
}
|
|
116
|
-
|
|
120
|
+
isolatedXdgConfigHome() {
|
|
121
|
+
return join(this.instanceDir, "muse-xdg");
|
|
122
|
+
}
|
|
123
|
+
/** Muse's per-process settings location after buildCommand sets XDG_CONFIG_HOME. */
|
|
117
124
|
settingsPath() {
|
|
118
|
-
|
|
119
|
-
|
|
125
|
+
return join(this.isolatedXdgConfigHome(), "muse", "settings.json");
|
|
126
|
+
}
|
|
127
|
+
sharedSettingsPath() {
|
|
128
|
+
return join(this.sharedXdgConfigHome, "muse", "settings.json");
|
|
129
|
+
}
|
|
130
|
+
mirrorSharedConfigEntries(sourceDir, isolatedDir, excluded) {
|
|
131
|
+
for (const name of readdirSync(sourceDir)) {
|
|
132
|
+
if (excluded.has(name))
|
|
133
|
+
continue;
|
|
134
|
+
const link = join(isolatedDir, name);
|
|
135
|
+
try {
|
|
136
|
+
lstatSync(link);
|
|
137
|
+
continue; // Keep any per-instance file Muse already created.
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
if (err.code !== "ENOENT")
|
|
141
|
+
throw err;
|
|
142
|
+
}
|
|
143
|
+
symlinkSync(join(sourceDir, name), link);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/** Preserve the user's login while keeping Muse's MCP settings per instance. */
|
|
147
|
+
linkSharedAuth() {
|
|
148
|
+
const sharedMuseDir = join(this.sharedXdgConfigHome, "muse");
|
|
149
|
+
const isolatedXdgHome = this.isolatedXdgConfigHome();
|
|
150
|
+
const isolatedMuseDir = join(isolatedXdgHome, "muse");
|
|
151
|
+
mkdirSync(sharedMuseDir, { recursive: true, mode: 0o700 });
|
|
152
|
+
mkdirSync(isolatedXdgHome, { recursive: true, mode: 0o700 });
|
|
153
|
+
mkdirSync(isolatedMuseDir, { recursive: true, mode: 0o700 });
|
|
154
|
+
chmodSync(isolatedXdgHome, 0o700);
|
|
155
|
+
chmodSync(isolatedMuseDir, 0o700);
|
|
156
|
+
// XDG_CONFIG_HOME also affects tools run by Muse. Mirror unrelated XDG and
|
|
157
|
+
// Muse config entries, while owning only settings.json in this instance.
|
|
158
|
+
this.mirrorSharedConfigEntries(this.sharedXdgConfigHome, isolatedXdgHome, new Set(["muse"]));
|
|
159
|
+
this.mirrorSharedConfigEntries(sharedMuseDir, isolatedMuseDir, new Set(["settings.json", "auth.json", ".auth.json.lock"]));
|
|
160
|
+
// Muse uses a lock beside auth.json. Both symlinks must point at the same
|
|
161
|
+
// shared files so login/refresh from two instances remains serialized.
|
|
162
|
+
for (const name of ["auth.json", ".auth.json.lock"]) {
|
|
163
|
+
const target = join(sharedMuseDir, name);
|
|
164
|
+
const link = join(isolatedMuseDir, name);
|
|
165
|
+
try {
|
|
166
|
+
const st = lstatSync(link);
|
|
167
|
+
if (st.isSymbolicLink() && readlinkSync(link) === target)
|
|
168
|
+
continue;
|
|
169
|
+
throw new Error(`Muse auth path is already occupied: ${link}`);
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
if (err.code !== "ENOENT")
|
|
173
|
+
throw err;
|
|
174
|
+
}
|
|
175
|
+
symlinkSync(target, link);
|
|
176
|
+
}
|
|
120
177
|
}
|
|
121
178
|
writeConfig(config) {
|
|
122
179
|
this.workingDirectory = config.workingDirectory;
|
|
123
|
-
// Muse reads MCP
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
// instance so instances sharing a machine cannot overwrite each other.
|
|
129
|
-
//
|
|
130
|
-
// Isolating this per instance would mean relocating XDG_CONFIG_HOME, which
|
|
131
|
-
// also moves auth.json — the user's login. Not worth doing blind; left as a
|
|
132
|
-
// follow-up for whoever needs per-instance muse credentials.
|
|
180
|
+
// Muse reads every MCP entry in its single XDG settings.json; namespacing
|
|
181
|
+
// keys inside a shared file still exposes all sibling instances' tools to
|
|
182
|
+
// every Muse process. Copy the user's ordinary settings into this instance's
|
|
183
|
+
// XDG home, excluding all AgEnD MCP entries, then add only this socket.
|
|
184
|
+
this.linkSharedAuth();
|
|
133
185
|
const settingsPath = this.settingsPath();
|
|
134
186
|
let root = {};
|
|
135
187
|
try {
|
|
136
|
-
root = JSON.parse(readFileSync(
|
|
188
|
+
root = JSON.parse(readFileSync(this.sharedSettingsPath(), "utf-8"));
|
|
137
189
|
}
|
|
138
190
|
catch { /* new file */ }
|
|
139
191
|
if (typeof root.schema_version !== "number")
|
|
140
192
|
root.schema_version = 1;
|
|
141
|
-
const servers = (root.mcpServers ?? {});
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
for (const [key, val] of Object.entries(servers)) {
|
|
145
|
-
if (!key.startsWith("agend-"))
|
|
146
|
-
continue;
|
|
147
|
-
const cmd = val?.command;
|
|
148
|
-
if (typeof cmd === "string" && !existsSync(cmd))
|
|
193
|
+
const servers = { ...(root.mcpServers ?? {}) };
|
|
194
|
+
for (const key of Object.keys(servers)) {
|
|
195
|
+
if (key === "agend" || key.startsWith("agend-"))
|
|
149
196
|
delete servers[key];
|
|
150
197
|
}
|
|
151
198
|
for (const [name, entry] of Object.entries(config.mcpServers)) {
|
|
@@ -172,11 +219,18 @@ export class MuseBackend {
|
|
|
172
219
|
};
|
|
173
220
|
}
|
|
174
221
|
root.mcpServers = servers;
|
|
222
|
+
const temporaryPath = `${settingsPath}.${process.pid}.${randomBytes(6).toString("hex")}.tmp`;
|
|
175
223
|
try {
|
|
176
|
-
|
|
177
|
-
|
|
224
|
+
writeFileSync(temporaryPath, JSON.stringify(root, null, 2), { mode: 0o600, flag: "wx" });
|
|
225
|
+
renameSync(temporaryPath, settingsPath);
|
|
226
|
+
chmodSync(settingsPath, 0o600);
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
try {
|
|
230
|
+
unlinkSync(temporaryPath);
|
|
231
|
+
}
|
|
232
|
+
catch { /* renamed or write failed */ }
|
|
178
233
|
}
|
|
179
|
-
catch { /* best effort — a muse without MCP still starts */ }
|
|
180
234
|
// `muse init` scaffolds AGENTS.md and the binary reads it as project rules,
|
|
181
235
|
// the same convention as codex and grok. Additive + idempotent via marker.
|
|
182
236
|
if (config.instructions) {
|
|
@@ -385,7 +439,7 @@ export class MuseBackend {
|
|
|
385
439
|
// The selected model is the one thing muse persists where we can read it.
|
|
386
440
|
let currentModel;
|
|
387
441
|
try {
|
|
388
|
-
const settings = JSON.parse(readFileSync(this.settingsPath(), "utf-8"));
|
|
442
|
+
const settings = JSON.parse(readFileSync(existsSync(this.settingsPath()) ? this.settingsPath() : this.sharedSettingsPath(), "utf-8"));
|
|
389
443
|
if (typeof settings.model === "string")
|
|
390
444
|
currentModel = settings.model;
|
|
391
445
|
}
|
|
@@ -400,7 +454,8 @@ export class MuseBackend {
|
|
|
400
454
|
for (const name of Object.keys(config.mcpServers)) {
|
|
401
455
|
delete root.mcpServers[this.mcpKey(name, config.instanceName)];
|
|
402
456
|
}
|
|
403
|
-
writeFileSync(settingsPath, JSON.stringify(root, null, 2));
|
|
457
|
+
writeFileSync(settingsPath, JSON.stringify(root, null, 2), { mode: 0o600 });
|
|
458
|
+
chmodSync(settingsPath, 0o600);
|
|
404
459
|
}
|
|
405
460
|
}
|
|
406
461
|
catch { /* best effort */ }
|
package/dist/backend/muse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muse.js","sourceRoot":"","sources":["../../src/backend/muse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muse.js","sourceRoot":"","sources":["../../src/backend/muse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7K,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAuH,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAChN,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,wFAAwF;AACxF,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AACvF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,WAAW;IAQF;IAPX,UAAU,GAAG,MAAM,CAAC;IACrB,UAAU,CAAS;IACV,mBAAmB,CAAS;IAC7C,yEAAyE;IACzE,8DAA8D;IACtD,gBAAgB,CAAU;IAElC,YAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;QACrC,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,YAAY,CAAC,MAAwB;QACnC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAEhD,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,kEAAkE;QAClE,0EAA0E;QAC1E,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,GAAG,GAAG,mBAAmB,UAAU,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,0CAA0C,IAAI,CAAC,UAAU,EAAE,CAAC;QAEjI,4EAA4E;QAC5E,4EAA4E;QAC5E,qEAAqE;QACrE,IAAI,MAAM,CAAC,WAAW;YAAE,GAAG,IAAI,eAAe,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAE/E,yEAAyE;QACzE,4EAA4E;QAC5E,mDAAmD;QACnD,EAAE;QACF,sEAAsE;QACtE,0EAA0E;QAC1E,4EAA4E;QAC5E,qEAAqE;QACrE,4DAA4D;QAC5D,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK;YAAE,GAAG,IAAI,uCAAuC,CAAC;QAErF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnC,GAAG,IAAI,YAAY,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,4EAA4E;QAC5E,yEAAyE;QACzE,IAAI,MAAM,CAAC,MAAM;YAAE,GAAG,IAAI,uBAAuB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAE7E,wEAAwE;QACxE,4EAA4E;QAC5E,qEAAqE;QACrE,6EAA6E;QAC7E,qEAAqE;QACrE,8BAA8B;QAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACnC,IAAI,GAAG;gBAAE,GAAG,IAAI,WAAW,GAAG,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mFAAmF;IAC3E,eAAe;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/E,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,OAAe,EAAE,YAAoB;QAClD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,YAAY;YAAE,OAAO,SAAS,OAAO,IAAI,YAAY,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,EAAE,CAAC;IAChF,CAAC;IAEO,qBAAqB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,oFAAoF;IAC5E,YAAY;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACrE,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACjE,CAAC;IAEO,yBAAyB,CAAC,SAAiB,EAAE,WAAmB,EAAE,QAAqB;QAC7F,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,SAAS,CAAC,mDAAmD;YAC/D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAC;YAClE,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,gFAAgF;IACxE,cAAc;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACrD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACtD,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAClC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAClC,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC3H,0EAA0E;QAC1E,uEAAuE;QACvE,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,MAAM;oBAAE,SAAS;gBACnE,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAC;YAClE,CAAC;YACD,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,MAAwB;QAClC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAEhD,0EAA0E;QAC1E,0EAA0E;QAC1E,6EAA6E;QAC7E,wEAAwE;QACxE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,IAAI,GAA4B,EAAE,CAAC;QACvC,IAAI,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QACrG,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;YAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,EAAE,GAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAA6B,EAAE,CAAC;QAC5E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;YAE1E,wEAAwE;YACxE,yEAAyE;YACzE,qEAAqE;YACrE,0EAA0E;YAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,IAAI,KAAK,CAAC,CAAC;YACrE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;iBACtC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;iBACpE,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,mEAAmE;YACnE,aAAa,CACX,WAAW,EACX,gBAAgB,UAAU,yIAAyI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAClP,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;YACF,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAE9B,wEAAwE;YACxE,0EAA0E;YAC1E,kBAAkB;YAClB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG;gBAChD,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,UAAU;aACjB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC1B,MAAM,aAAa,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7F,IAAI,CAAC;YACH,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzF,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YACxC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;QAC5E,CAAC;QAED,4EAA4E;QAC5E,2EAA2E;QAC3E,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YACzG,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,0BAA0B;QACxB,4EAA4E;QAC5E,sEAAsE;QACtE,0EAA0E;QAC1E,kBAAkB;QAClB,EAAE;QACF,cAAc;QACd,cAAc;QACd,cAAc;QACd,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,qEAAqE;QACrE,0EAA0E;QAC1E,2EAA2E;QAC3E,EAAE;QACF,4EAA4E;QAC5E,0EAA0E;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QACb,yEAAyE;QACzE,4EAA4E;QAC5E,uEAAuE;QACvE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc;QACZ,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IAED,gBAAgB;QACd,0EAA0E;QAC1E,4EAA4E;QAC5E,qDAAqD;QACrD,OAAO;YACL,EAAE,OAAO,EAAE,wCAAwC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE;YACjI,EAAE,OAAO,EAAE,gEAAgE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE;YACxJ,EAAE,OAAO,EAAE,mCAAmC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE;SACnH,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,wEAAwE;YACxE,qEAAqE;YACrE,qEAAqE;YACrE,uEAAuE;YACvE,oCAAoC;YACpC;gBACE,OAAO,EAAE,+BAA+B;gBACxC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;gBACpB,WAAW,EAAE,oDAAoD;aAClE;YACD,mEAAmE;YACnE,kEAAkE;YAClE,sEAAsE;YACtE,uBAAuB;YACvB;gBACE,OAAO,EAAE,mDAAmD;gBAC5D,IAAI,EAAE,EAAE;gBACR,WAAW,EAAE,kEAAkE;aAChF;SACF,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,yEAAyE;YACzE,yEAAyE;YACzE,gEAAgE;YAChE;gBACE,OAAO,EAAE,4EAA4E;gBACrF,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;gBACpB,WAAW,EAAE,4BAA4B;aAC1C;SACF,CAAC;IACJ,CAAC;IAED,eAAe;QACb,uEAAuE;QACvE,2EAA2E;QAC3E,2EAA2E;QAC3E,sBAAsB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iEAAiE;IACjE,6EAA6E;IAC7E,6EAA6E;IAC7E,4DAA4D;IAE5D,YAAY;QACV,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,sEAAsE;QACtE,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACpE,IAAI,QAAQ,GAAkB,IAAI,CAAC;YACnC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;YACrB,KAAK,MAAM,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACxC,IAAI,IAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC7F,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBACzC,CAAC;gBAAC,MAAM,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACrB,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB;oBAAE,SAAS;gBAC7D,yEAAyE;gBACzE,wEAAwE;gBACxE,mEAAmE;gBACnE,gDAAgD;gBAChD,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC;oBACH,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;wBACxC,IAAI,CAAC;4BAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;4BAAC,IAAI,CAAC,GAAG,QAAQ;gCAAE,QAAQ,GAAG,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;oBAC/G,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;gBAC5B,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;oBAAC,WAAW,GAAG,QAAQ,CAAC;oBAAC,QAAQ,GAAG,IAAI,CAAC;gBAAC,CAAC;YAC1E,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAC1B,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,6BAA6B;IAC7B,cAAc,KAAoB,OAAO,OAAO,CAAC,CAAC,CAAC;IACnD,UAAU,KAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACtC,iBAAiB,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzC,iBAAiB,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;IAClD,eAAe,KAAoB,OAAO,QAAQ,CAAC,CAAC,CAAC;IAErD;;;;;;OAMG;IACH,YAAY,KAAa,OAAO,QAAQ,CAAC,CAAC,CAAC;IAE3C,4EAA4E;IAC5E,iBAAiB,KAA4C,OAAO,SAAS,CAAC,CAAC,CAAC;IAChF,0EAA0E;IAC1E,uCAAuC;IACvC,eAAe,KAAe,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjF,wEAAwE;IACxE,sBAAsB,KAA4B,OAAO,SAAS,CAAC,CAAC,CAAC;IAErE,KAAK,CAAC,UAAU;QACd,qEAAqE;QACrE,kEAAkE;QAClE,0EAA0E;QAC1E,4EAA4E;QAC5E,6DAA6D;QAC7D,OAAO;YACL,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACjD,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,6CAA6C,EAAE;YAC1F,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACjD,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,6CAA6C,EAAE;SAC3F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,0EAA0E;QAC1E,IAAI,YAAgC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CACtC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EACjF,OAAO,CACR,CAAC,CAAC;YACH,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;gBAAE,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC;IACtG,CAAC;IAED,OAAO,CAAC,MAAwB;QAC9B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjE,CAAC;gBACD,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5E,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAY,EAAE;QACzC,IAAI,CAAC;YAAC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACvD,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACpC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC7D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/fleet-manager.d.ts
CHANGED
|
@@ -292,6 +292,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
292
292
|
private eventLogPruneTimer;
|
|
293
293
|
private logRotateTimer;
|
|
294
294
|
private discordPresenceTimer;
|
|
295
|
+
private discordPresenceEagerTimer;
|
|
296
|
+
private discordPresenceEagerPending;
|
|
295
297
|
private discordPresenceInFlight;
|
|
296
298
|
private static readonly DISCORD_PRESENCE_REFRESH_MS;
|
|
297
299
|
/** Days of event/activity history to keep. */
|
|
@@ -681,6 +683,12 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
681
683
|
startAll(configPath: string): Promise<void>;
|
|
682
684
|
/** Keep Discord profile activity aligned with the same cached usage source as /usage. */
|
|
683
685
|
private startDiscordUsagePresence;
|
|
686
|
+
/**
|
|
687
|
+
* Request one prompt presence refresh after an instance/adapter comes online.
|
|
688
|
+
* Startup can bring several instances up together; a short coalescing window
|
|
689
|
+
* keeps that herd on the existing shared refresh path and one usage fetch.
|
|
690
|
+
*/
|
|
691
|
+
private requestDiscordUsagePresenceRefresh;
|
|
684
692
|
private refreshDiscordUsagePresence;
|
|
685
693
|
/**
|
|
686
694
|
* Delete inbox files older than retentionDays (by mtime). Cleans the shared
|
|
@@ -1668,7 +1676,15 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1668
1676
|
private customProviderFor;
|
|
1669
1677
|
/** Ask a backend for its catalog using ONE instance's real config. Never throws. */
|
|
1670
1678
|
private instanceScopedModels;
|
|
1671
|
-
/**
|
|
1679
|
+
/**
|
|
1680
|
+
* Account-wide catalog: probe cache first, live probe when the cache is
|
|
1681
|
+
* missing or older than the same ~1h window `/model` uses (#888).
|
|
1682
|
+
*
|
|
1683
|
+
* Previously this served anything inside the 24h hard TTL, so `list_models`
|
|
1684
|
+
* could answer with a day-old list `/model` had already re-probed past.
|
|
1685
|
+
* The probe runs under the same deadline `/model` uses: a vendor that stops
|
|
1686
|
+
* answering degrades to the previous list, never stalls the tool call.
|
|
1687
|
+
*/
|
|
1672
1688
|
private globalModelCatalog;
|
|
1673
1689
|
/** `/model` slash handler (admin only). No arg → DC menu; `/model <name>` → apply directly. */
|
|
1674
1690
|
/** Label an effort choice, marking the one currently configured. */
|
package/dist/fleet-manager.js
CHANGED
|
@@ -488,6 +488,8 @@ export class FleetManager {
|
|
|
488
488
|
eventLogPruneTimer = null;
|
|
489
489
|
logRotateTimer = null;
|
|
490
490
|
discordPresenceTimer = null;
|
|
491
|
+
discordPresenceEagerTimer = null;
|
|
492
|
+
discordPresenceEagerPending = false;
|
|
491
493
|
discordPresenceInFlight = null;
|
|
492
494
|
static DISCORD_PRESENCE_REFRESH_MS = 15 * 60_000;
|
|
493
495
|
/** Days of event/activity history to keep. */
|
|
@@ -1839,6 +1841,7 @@ export class FleetManager {
|
|
|
1839
1841
|
catch { /* consumed or absent */ }
|
|
1840
1842
|
// Auto-connect IPC — daemon.start() ensures socket is ready before resolving
|
|
1841
1843
|
await this.connectIpcToInstance(name);
|
|
1844
|
+
this.requestDiscordUsagePresenceRefresh();
|
|
1842
1845
|
}
|
|
1843
1846
|
/** Recreate a daemon for a marker-only paused instance after an explicit wake/delivery. */
|
|
1844
1847
|
async startPersistedPausedInstance(name) {
|
|
@@ -3058,12 +3061,37 @@ export class FleetManager {
|
|
|
3058
3061
|
startDiscordUsagePresence() {
|
|
3059
3062
|
if (this.discordPresenceTimer)
|
|
3060
3063
|
clearInterval(this.discordPresenceTimer);
|
|
3064
|
+
if (this.discordPresenceEagerTimer) {
|
|
3065
|
+
clearTimeout(this.discordPresenceEagerTimer);
|
|
3066
|
+
this.discordPresenceEagerTimer = null;
|
|
3067
|
+
}
|
|
3068
|
+
this.discordPresenceEagerPending = false;
|
|
3061
3069
|
void this.refreshDiscordUsagePresence();
|
|
3062
3070
|
this.discordPresenceTimer = setInterval(() => {
|
|
3063
3071
|
void this.refreshDiscordUsagePresence();
|
|
3064
3072
|
}, FleetManager.DISCORD_PRESENCE_REFRESH_MS);
|
|
3065
3073
|
this.discordPresenceTimer.unref?.();
|
|
3066
3074
|
}
|
|
3075
|
+
/**
|
|
3076
|
+
* Request one prompt presence refresh after an instance/adapter comes online.
|
|
3077
|
+
* Startup can bring several instances up together; a short coalescing window
|
|
3078
|
+
* keeps that herd on the existing shared refresh path and one usage fetch.
|
|
3079
|
+
*/
|
|
3080
|
+
requestDiscordUsagePresenceRefresh() {
|
|
3081
|
+
this.discordPresenceEagerPending = true;
|
|
3082
|
+
// During early fleet startup the interval is not installed yet; its first
|
|
3083
|
+
// refresh in startDiscordUsagePresence already covers all pending starts.
|
|
3084
|
+
if (!this.discordPresenceTimer || this.discordPresenceEagerTimer)
|
|
3085
|
+
return;
|
|
3086
|
+
this.discordPresenceEagerTimer = setTimeout(() => {
|
|
3087
|
+
this.discordPresenceEagerTimer = null;
|
|
3088
|
+
if (!this.discordPresenceEagerPending || !this.discordPresenceTimer)
|
|
3089
|
+
return;
|
|
3090
|
+
this.discordPresenceEagerPending = false;
|
|
3091
|
+
void this.refreshDiscordUsagePresence();
|
|
3092
|
+
}, 50);
|
|
3093
|
+
this.discordPresenceEagerTimer.unref?.();
|
|
3094
|
+
}
|
|
3067
3095
|
refreshDiscordUsagePresence() {
|
|
3068
3096
|
if (this.discordPresenceInFlight)
|
|
3069
3097
|
return this.discordPresenceInFlight;
|
|
@@ -3706,7 +3734,7 @@ export class FleetManager {
|
|
|
3706
3734
|
this.adapter.setChatId(String(fleet.channel.group_id));
|
|
3707
3735
|
}
|
|
3708
3736
|
if (this.discordPresenceTimer && this.adapter.type === "discord") {
|
|
3709
|
-
|
|
3737
|
+
this.requestDiscordUsagePresenceRefresh();
|
|
3710
3738
|
}
|
|
3711
3739
|
this.startTopicCleanupPoller();
|
|
3712
3740
|
// Prune stale external sessions every 5 minutes
|
|
@@ -4051,7 +4079,7 @@ export class FleetManager {
|
|
|
4051
4079
|
adapter.setChatId(String(channelConfig.group_id));
|
|
4052
4080
|
}
|
|
4053
4081
|
if (this.discordPresenceTimer && adapter.type === "discord") {
|
|
4054
|
-
|
|
4082
|
+
this.requestDiscordUsagePresenceRefresh();
|
|
4055
4083
|
}
|
|
4056
4084
|
this.logger.info({ adapterId, type: channelConfig.type }, "Additional adapter started");
|
|
4057
4085
|
}
|
|
@@ -4296,7 +4324,7 @@ export class FleetManager {
|
|
|
4296
4324
|
await adapter.reconnectGateway(previous?.lastError ?? "fleet adapter restart");
|
|
4297
4325
|
this.adapterState.set(id, { status: "connected", retryCount: 0 });
|
|
4298
4326
|
if (this.discordPresenceTimer && adapter.type === "discord") {
|
|
4299
|
-
|
|
4327
|
+
this.requestDiscordUsagePresenceRefresh();
|
|
4300
4328
|
}
|
|
4301
4329
|
this.logger.info({ id }, "Adapter gateway rebuilt successfully");
|
|
4302
4330
|
}
|
|
@@ -4324,7 +4352,7 @@ export class FleetManager {
|
|
|
4324
4352
|
this.logger.info({ id, attempt }, "Adapter restarted successfully");
|
|
4325
4353
|
this.adapterState.set(id, { status: "connected", retryCount: 0 });
|
|
4326
4354
|
if (this.discordPresenceTimer && adapter.type === "discord") {
|
|
4327
|
-
|
|
4355
|
+
this.requestDiscordUsagePresenceRefresh();
|
|
4328
4356
|
}
|
|
4329
4357
|
return;
|
|
4330
4358
|
}
|
|
@@ -10028,17 +10056,25 @@ Plus the operational skills (fleet-health, instance-lifecycle, scheduling, sessi
|
|
|
10028
10056
|
return [];
|
|
10029
10057
|
}
|
|
10030
10058
|
}
|
|
10031
|
-
/**
|
|
10059
|
+
/**
|
|
10060
|
+
* Account-wide catalog: probe cache first, live probe when the cache is
|
|
10061
|
+
* missing or older than the same ~1h window `/model` uses (#888).
|
|
10062
|
+
*
|
|
10063
|
+
* Previously this served anything inside the 24h hard TTL, so `list_models`
|
|
10064
|
+
* could answer with a day-old list `/model` had already re-probed past.
|
|
10065
|
+
* The probe runs under the same deadline `/model` uses: a vendor that stops
|
|
10066
|
+
* answering degrades to the previous list, never stalls the tool call.
|
|
10067
|
+
*/
|
|
10032
10068
|
async globalModelCatalog(backend) {
|
|
10033
10069
|
const cached = this.readCliEnv(backend);
|
|
10034
|
-
if (cached?.models?.length) {
|
|
10070
|
+
if (cached?.models?.length && !this.cliEnvNeedsRefresh(cached)) {
|
|
10035
10071
|
return {
|
|
10036
10072
|
backend, scope: "global", current_model: cached.currentModel ?? null,
|
|
10037
10073
|
models: cached.models, source: "cache",
|
|
10038
10074
|
probed_at: new Date(cached.probedAt).toISOString(),
|
|
10039
10075
|
};
|
|
10040
10076
|
}
|
|
10041
|
-
const env = await this.
|
|
10077
|
+
const env = await this.probeBackendBounded(backend);
|
|
10042
10078
|
if (env?.models?.length) {
|
|
10043
10079
|
return {
|
|
10044
10080
|
backend, scope: "global", current_model: env.currentModel ?? null,
|
|
@@ -10046,6 +10082,15 @@ Plus the operational skills (fleet-health, instance-lifecycle, scheduling, sessi
|
|
|
10046
10082
|
probed_at: new Date(env.probedAt).toISOString(),
|
|
10047
10083
|
};
|
|
10048
10084
|
}
|
|
10085
|
+
// Probe failed or timed out: like `/model`, the previous list is still the
|
|
10086
|
+
// best answer — a stale list beats an empty one.
|
|
10087
|
+
if (cached?.models?.length) {
|
|
10088
|
+
return {
|
|
10089
|
+
backend, scope: "global", current_model: cached.currentModel ?? null,
|
|
10090
|
+
models: cached.models, source: "cache",
|
|
10091
|
+
probed_at: new Date(cached.probedAt).toISOString(),
|
|
10092
|
+
};
|
|
10093
|
+
}
|
|
10049
10094
|
// Reported rather than thrown: "we could not enumerate" is a useful answer,
|
|
10050
10095
|
// and the caller can still set a model by name (AgEnD passes it through).
|
|
10051
10096
|
return {
|
|
@@ -10987,6 +11032,11 @@ Plus the operational skills (fleet-health, instance-lifecycle, scheduling, sessi
|
|
|
10987
11032
|
clearInterval(this.discordPresenceTimer);
|
|
10988
11033
|
this.discordPresenceTimer = null;
|
|
10989
11034
|
}
|
|
11035
|
+
if (this.discordPresenceEagerTimer) {
|
|
11036
|
+
clearTimeout(this.discordPresenceEagerTimer);
|
|
11037
|
+
this.discordPresenceEagerTimer = null;
|
|
11038
|
+
}
|
|
11039
|
+
this.discordPresenceEagerPending = false;
|
|
10990
11040
|
// Cancel-button timers were never cleared here. The idle-check interval is not
|
|
10991
11041
|
// unref'd, so it held the event loop open past shutdown and kept retrying
|
|
10992
11042
|
// deletes against an adapter that was already gone.
|