@songsid/agend 2.1.10 → 2.1.11-beta.1
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/antigravity.js +3 -2
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +7 -0
- package/dist/backend/claude-code.js +107 -3
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/cli-env-probe-worker.js +2 -10
- package/dist/backend/cli-env-probe-worker.js.map +1 -1
- package/dist/backend/cli-env-probe.d.ts +14 -0
- package/dist/backend/cli-env-probe.js +13 -0
- package/dist/backend/cli-env-probe.js.map +1 -0
- package/dist/backend/codex-metadata.d.ts +14 -0
- package/dist/backend/codex-metadata.js +70 -0
- package/dist/backend/codex-metadata.js.map +1 -0
- package/dist/backend/codex.d.ts +1 -2
- package/dist/backend/codex.js +112 -65
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/effort-metadata.d.ts +32 -0
- package/dist/backend/effort-metadata.js +21 -0
- package/dist/backend/effort-metadata.js.map +1 -0
- package/dist/backend/grok.js +3 -2
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +3 -0
- package/dist/backend/kiro.js +19 -4
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.js +3 -2
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/opencode.d.ts +31 -4
- package/dist/backend/opencode.js +66 -23
- package/dist/backend/opencode.js.map +1 -1
- package/dist/backend/types.d.ts +14 -1
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/adapters/discord.js +10 -2
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/cli.js +48 -6
- package/dist/cli.js.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +24 -0
- package/dist/daemon.js +109 -12
- package/dist/daemon.js.map +1 -1
- package/dist/doctor.d.ts +3 -1
- package/dist/doctor.js +11 -0
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -2
- package/dist/fleet-control-audit.d.ts +83 -0
- package/dist/fleet-control-audit.js +195 -0
- package/dist/fleet-control-audit.js.map +1 -0
- package/dist/fleet-manager.d.ts +45 -35
- package/dist/fleet-manager.js +327 -384
- package/dist/fleet-manager.js.map +1 -1
- package/dist/full-restart.js +2 -1
- package/dist/full-restart.js.map +1 -1
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +3 -2
- package/dist/host-memory.d.ts +16 -0
- package/dist/host-memory.js +32 -0
- package/dist/host-memory.js.map +1 -0
- package/dist/instance-lifecycle.js +4 -1
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +62 -16
- package/dist/locale.js.map +1 -1
- package/dist/log-tail.d.ts +34 -0
- package/dist/log-tail.js +66 -0
- package/dist/log-tail.js.map +1 -0
- package/dist/logger.d.ts +15 -0
- package/dist/logger.js +89 -1
- package/dist/logger.js.map +1 -1
- package/dist/login-controller.d.ts +1 -3
- package/dist/login-controller.js +2 -6
- package/dist/login-controller.js.map +1 -1
- package/dist/login-flows.d.ts +0 -8
- package/dist/login-flows.js +1 -11
- package/dist/login-flows.js.map +1 -1
- package/dist/login-manager.d.ts +5 -20
- package/dist/login-manager.js +0 -53
- package/dist/login-manager.js.map +1 -1
- package/dist/login-window-lock.d.ts +1 -1
- package/dist/login-window-lock.js +1 -1
- package/dist/memory-pressure.d.ts +41 -0
- package/dist/memory-pressure.js +117 -0
- package/dist/memory-pressure.js.map +1 -0
- package/dist/probe-worker-pool.d.ts +28 -0
- package/dist/probe-worker-pool.js +129 -0
- package/dist/probe-worker-pool.js.map +1 -0
- package/dist/resource-report.d.ts +31 -0
- package/dist/resource-report.js +209 -0
- package/dist/resource-report.js.map +1 -0
- package/dist/rollout-index.d.ts +66 -0
- package/dist/rollout-index.js +124 -0
- package/dist/rollout-index.js.map +1 -0
- package/dist/slash-authz.d.ts +50 -0
- package/dist/slash-authz.js +19 -0
- package/dist/slash-authz.js.map +1 -0
- package/dist/spawn-gate.d.ts +13 -1
- package/dist/spawn-gate.js +108 -39
- package/dist/spawn-gate.js.map +1 -1
- package/dist/storm-window.d.ts +42 -0
- package/dist/storm-window.js +84 -1
- package/dist/storm-window.js.map +1 -1
- package/dist/topic-commands.d.ts +29 -2
- package/dist/topic-commands.js +77 -21
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-sources.d.ts +21 -4
- package/dist/transcript-sources.js +55 -41
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/ui/settings.html +14 -13
- package/package.json +1 -1
package/dist/storm-window.js
CHANGED
|
@@ -22,7 +22,17 @@ export class StormWindow extends EventEmitter {
|
|
|
22
22
|
backoffsMs;
|
|
23
23
|
stableResetMs;
|
|
24
24
|
recoveryTimeoutMs;
|
|
25
|
+
windowLossThreshold;
|
|
26
|
+
/** The span in which `windowLossThreshold` distinct losses make one event. */
|
|
27
|
+
windowLossWindowMs;
|
|
25
28
|
phase = "closed";
|
|
29
|
+
kind = "server";
|
|
30
|
+
windowLosses = new Map();
|
|
31
|
+
/**
|
|
32
|
+
* Instances whose last respawn finished outside a storm. A fresh loss withdraws
|
|
33
|
+
* the entry (noteWindowLoss), so it only ever speaks for the loss it followed.
|
|
34
|
+
*/
|
|
35
|
+
windowLossRecovered = new Set();
|
|
26
36
|
generation = 0;
|
|
27
37
|
crashLevel = 0;
|
|
28
38
|
crashCount = 0;
|
|
@@ -47,10 +57,13 @@ export class StormWindow extends EventEmitter {
|
|
|
47
57
|
this.backoffsMs = options.backoffsMs ?? [30_000, 2 * 60_000, 10 * 60_000];
|
|
48
58
|
this.stableResetMs = options.stableResetMs ?? 10 * 60_000;
|
|
49
59
|
this.recoveryTimeoutMs = options.recoveryTimeoutMs ?? 10 * 60_000;
|
|
60
|
+
this.windowLossThreshold = Math.max(2, options.windowLossThreshold ?? 4);
|
|
61
|
+
this.windowLossWindowMs = options.windowLossWindowMs ?? 60_000;
|
|
50
62
|
}
|
|
51
63
|
snapshot() {
|
|
52
64
|
return {
|
|
53
65
|
phase: this.phase,
|
|
66
|
+
kind: this.kind,
|
|
54
67
|
generation: this.generation,
|
|
55
68
|
crashLevel: this.crashLevel,
|
|
56
69
|
crashCount: this.crashCount,
|
|
@@ -119,6 +132,69 @@ export class StormWindow extends EventEmitter {
|
|
|
119
132
|
this.closeWindow("recovered");
|
|
120
133
|
}
|
|
121
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* An instance confirmed that its tmux window is gone while the server is
|
|
137
|
+
* alive. One such loss is an ordinary crash; several inside the window are one
|
|
138
|
+
* infrastructure event, and N independent respawn loops would stampede (#1127).
|
|
139
|
+
* Returns true when THIS call opens the window. Once a window is open, a loss
|
|
140
|
+
* simply joins it.
|
|
141
|
+
*/
|
|
142
|
+
noteWindowLoss(name) {
|
|
143
|
+
if (this.stopped)
|
|
144
|
+
return false;
|
|
145
|
+
const now = this.now();
|
|
146
|
+
for (const [other, at] of this.windowLosses) {
|
|
147
|
+
if (now - at > this.windowLossWindowMs)
|
|
148
|
+
this.windowLosses.delete(other);
|
|
149
|
+
}
|
|
150
|
+
this.windowLosses.set(name, now);
|
|
151
|
+
this.windowLossRecovered.delete(name);
|
|
152
|
+
if (this.isActive()) {
|
|
153
|
+
this.addAffected(name);
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
if (this.windowLosses.size < this.windowLossThreshold)
|
|
157
|
+
return false;
|
|
158
|
+
this.openWindowLossBurst([...this.windowLosses.keys()]);
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
openWindowLossBurst(names) {
|
|
162
|
+
this.kind = "window_loss";
|
|
163
|
+
this.generation++;
|
|
164
|
+
this.phase = "recovering";
|
|
165
|
+
this.backoffMs = 0;
|
|
166
|
+
this.retryAt = null;
|
|
167
|
+
this.affected = new Set(names);
|
|
168
|
+
// Members that were respawned before the burst was recognised have already
|
|
169
|
+
// recovered; do not hold their delivery again (#1156 review).
|
|
170
|
+
this.recovered = new Set(names.filter(name => this.windowLossRecovered.has(name)));
|
|
171
|
+
this.suppressed.clear();
|
|
172
|
+
if (this.stableTimer) {
|
|
173
|
+
this.clearTimer(this.stableTimer);
|
|
174
|
+
this.stableTimer = null;
|
|
175
|
+
}
|
|
176
|
+
if (this.recoveryTimer)
|
|
177
|
+
this.clearTimer(this.recoveryTimer);
|
|
178
|
+
this.recoveryTimer = this.setTimer(() => this.closeWindow("timeout"), this.recoveryTimeoutMs);
|
|
179
|
+
this.recoveryTimer?.unref?.();
|
|
180
|
+
this.emit("opened", this.snapshot());
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* A respawn finished outside a storm. Remember it, so that an instance that
|
|
184
|
+
* recovered before a burst was recognised is not counted as still down when
|
|
185
|
+
* the next loss opens one (inside an open window the caller marks recovery).
|
|
186
|
+
*/
|
|
187
|
+
noteWindowRecovered(name) {
|
|
188
|
+
this.windowLossRecovered.add(name);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* A live pane inside an open window-loss burst is recovery evidence on its own
|
|
192
|
+
* (a server storm is different: a pane alive then says nothing about the CLI).
|
|
193
|
+
*/
|
|
194
|
+
noteWindowAlive(name) {
|
|
195
|
+
if (this.kind === "window_loss" && this.needsRecovery(name))
|
|
196
|
+
this.markRecovered(name);
|
|
197
|
+
}
|
|
122
198
|
shouldSuppress(kind) {
|
|
123
199
|
if (!this.isActive() || !STORM_INCIDENT_KINDS.has(kind))
|
|
124
200
|
return false;
|
|
@@ -152,6 +228,8 @@ export class StormWindow extends EventEmitter {
|
|
|
152
228
|
recordDistinctCrash() {
|
|
153
229
|
const now = this.now();
|
|
154
230
|
const wasClosed = this.phase === "closed";
|
|
231
|
+
const wasWindowLoss = !wasClosed && this.kind === "window_loss";
|
|
232
|
+
this.kind = "server";
|
|
155
233
|
this.generation++;
|
|
156
234
|
this.crashCount++;
|
|
157
235
|
this.crashLevel = Math.min(this.crashLevel + 1, this.backoffsMs.length);
|
|
@@ -173,7 +251,10 @@ export class StormWindow extends EventEmitter {
|
|
|
173
251
|
this.clearTimer(this.stableTimer);
|
|
174
252
|
this.stableTimer = null;
|
|
175
253
|
}
|
|
176
|
-
|
|
254
|
+
// A window-loss burst turning into a server storm is a NEW storm for the
|
|
255
|
+
// fleet: it must enroll every running instance, not just the four that lost
|
|
256
|
+
// a window (#1156 review).
|
|
257
|
+
this.emit(wasClosed || wasWindowLoss ? "opened" : "extended", this.snapshot());
|
|
177
258
|
}
|
|
178
259
|
beginRecovery() {
|
|
179
260
|
this.backoffTimer = null;
|
|
@@ -211,6 +292,8 @@ export class StormWindow extends EventEmitter {
|
|
|
211
292
|
this.release(this.spawnWaiters);
|
|
212
293
|
this.releaseAllDelivery();
|
|
213
294
|
this.emit("closed", snapshot, reason);
|
|
295
|
+
this.windowLosses.clear();
|
|
296
|
+
this.kind = "server";
|
|
214
297
|
this.affected.clear();
|
|
215
298
|
this.recovered.clear();
|
|
216
299
|
this.suppressed.clear();
|
package/dist/storm-window.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storm-window.js","sourceRoot":"","sources":["../src/storm-window.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storm-window.js","sourceRoot":"","sources":["../src/storm-window.ts"],"names":[],"mappings":"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"}
|
package/dist/topic-commands.d.ts
CHANGED
|
@@ -28,6 +28,33 @@ export declare function parsePauseWakeCommand(text: string): {
|
|
|
28
28
|
instance?: string;
|
|
29
29
|
} | null;
|
|
30
30
|
export declare function compactCommandForBackend(backend: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Backends whose `/compact` verifiably takes custom summarization instructions
|
|
33
|
+
* (#1145). Checked against the real CLIs, not assumed:
|
|
34
|
+
* - claude-code 2.1.288: `/compact <text>` appends the text to the summary
|
|
35
|
+
* request under `Additional Instructions:` (confirmed in the request body).
|
|
36
|
+
* - codex 0.160.0: `/compact <text>` is NOT a compaction — the whole line is
|
|
37
|
+
* submitted as an ordinary chat message. Passing the text would turn a
|
|
38
|
+
* compact into a prompt, so it must never be appended.
|
|
39
|
+
* - grok 1.0.46: the binary answers "/compact takes no arguments."
|
|
40
|
+
* - opencode 1.18: `/compact` calls session.summarize with no text.
|
|
41
|
+
* - kiro-cli: takes none (audit); antigravity has no summarizing compact.
|
|
42
|
+
* - muse 1.4.2: accepts the line (empty session: "nothing to summarize") but
|
|
43
|
+
* no use of the text is verifiable — unsupported until shown otherwise.
|
|
44
|
+
*/
|
|
45
|
+
export declare function backendSupportsCompactInstructions(backend: string): boolean;
|
|
46
|
+
/** Longest custom-instructions text AgEnD pastes (one line; refused, never truncated, beyond it). */
|
|
47
|
+
export declare const COMPACT_INSTRUCTIONS_MAX = 1000;
|
|
48
|
+
/**
|
|
49
|
+
* One line, no control characters: the text is pasted into a TUI whose Enter
|
|
50
|
+
* submits it, so a newline would end the command and run the rest as a message.
|
|
51
|
+
* Blank means "none" (Claude Code ignores whitespace-only text the same way).
|
|
52
|
+
*/
|
|
53
|
+
export declare function normalizeCompactInstructions(raw: unknown): string;
|
|
54
|
+
/** The optional argument of a typed `/compact [@bot] [instructions]`, or null when the text is not /compact. */
|
|
55
|
+
export declare function parseCompactCommand(text: string): {
|
|
56
|
+
instructions: string;
|
|
57
|
+
} | null;
|
|
31
58
|
/**
|
|
32
59
|
* Full conversation-reset command for a backend NAME. Keep this routing-only
|
|
33
60
|
* lookup in sync with CliBackend.getClearCommand(); the fleet process does not
|
|
@@ -143,7 +170,7 @@ export declare class TopicCommands {
|
|
|
143
170
|
*/
|
|
144
171
|
private autoPauseLineFor;
|
|
145
172
|
/** Send the backend-appropriate compact command to an instance's tmux pane */
|
|
146
|
-
sendCompact(instanceName: string): Promise<string>;
|
|
173
|
+
sendCompact(instanceName: string, instructions?: string): Promise<string>;
|
|
147
174
|
/** Whether the instance backend exposes a verified full-reset command. */
|
|
148
175
|
supportsClear(instanceName: string): boolean;
|
|
149
176
|
/**
|
|
@@ -175,7 +202,7 @@ export declare class TopicCommands {
|
|
|
175
202
|
*/
|
|
176
203
|
private handleUsageCommand;
|
|
177
204
|
/**
|
|
178
|
-
* `/login [backend] |
|
|
205
|
+
* `/login [backend] | cancel` — remote CLI re-login.
|
|
179
206
|
* Fleet-admin only: the flow emits live authorization URLs/codes, and anyone
|
|
180
207
|
* completing one binds their own account to this fleet's CLI.
|
|
181
208
|
*/
|
package/dist/topic-commands.js
CHANGED
|
@@ -14,6 +14,7 @@ import { clampContextPercent, parseContextPercent, parseTokenContextRatio, } fro
|
|
|
14
14
|
import { isGeneralInstance } from "./general-instance.js";
|
|
15
15
|
import { backendSupportsSteer } from "./steer-capability.js";
|
|
16
16
|
import { SYSINFO_BACKEND_IDS } from "./backend/types.js";
|
|
17
|
+
import { recordInternalRequest, withOrigin } from "./fleet-control-audit.js";
|
|
17
18
|
export { parseContextPercent, parseTokenContextRatio } from "./context-percent.js";
|
|
18
19
|
/** Sanitize a directory name into a valid instance name. Keeps Unicode letters (incl. CJK). */
|
|
19
20
|
export function sanitizeInstanceName(name) {
|
|
@@ -108,6 +109,42 @@ export function compactCommandForBackend(backend) {
|
|
|
108
109
|
return "/clear";
|
|
109
110
|
return "/compact";
|
|
110
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Backends whose `/compact` verifiably takes custom summarization instructions
|
|
114
|
+
* (#1145). Checked against the real CLIs, not assumed:
|
|
115
|
+
* - claude-code 2.1.288: `/compact <text>` appends the text to the summary
|
|
116
|
+
* request under `Additional Instructions:` (confirmed in the request body).
|
|
117
|
+
* - codex 0.160.0: `/compact <text>` is NOT a compaction — the whole line is
|
|
118
|
+
* submitted as an ordinary chat message. Passing the text would turn a
|
|
119
|
+
* compact into a prompt, so it must never be appended.
|
|
120
|
+
* - grok 1.0.46: the binary answers "/compact takes no arguments."
|
|
121
|
+
* - opencode 1.18: `/compact` calls session.summarize with no text.
|
|
122
|
+
* - kiro-cli: takes none (audit); antigravity has no summarizing compact.
|
|
123
|
+
* - muse 1.4.2: accepts the line (empty session: "nothing to summarize") but
|
|
124
|
+
* no use of the text is verifiable — unsupported until shown otherwise.
|
|
125
|
+
*/
|
|
126
|
+
export function backendSupportsCompactInstructions(backend) {
|
|
127
|
+
return backend === "claude-code";
|
|
128
|
+
}
|
|
129
|
+
/** Longest custom-instructions text AgEnD pastes (one line; refused, never truncated, beyond it). */
|
|
130
|
+
export const COMPACT_INSTRUCTIONS_MAX = 1000;
|
|
131
|
+
/**
|
|
132
|
+
* One line, no control characters: the text is pasted into a TUI whose Enter
|
|
133
|
+
* submits it, so a newline would end the command and run the rest as a message.
|
|
134
|
+
* Blank means "none" (Claude Code ignores whitespace-only text the same way).
|
|
135
|
+
*/
|
|
136
|
+
export function normalizeCompactInstructions(raw) {
|
|
137
|
+
return String(raw ?? "")
|
|
138
|
+
// eslint-disable-next-line no-control-regex
|
|
139
|
+
.replace(/[\u0000-\u001f\u007f-\u009f\u2028\u2029]+/g, " ")
|
|
140
|
+
.replace(/\s+/g, " ")
|
|
141
|
+
.trim();
|
|
142
|
+
}
|
|
143
|
+
/** The optional argument of a typed `/compact [@bot] [instructions]`, or null when the text is not /compact. */
|
|
144
|
+
export function parseCompactCommand(text) {
|
|
145
|
+
const match = text.trim().match(/^\/compact(?:@\S+)?(?:\s+([\s\S]*))?$/);
|
|
146
|
+
return match ? { instructions: match[1] ?? "" } : null;
|
|
147
|
+
}
|
|
111
148
|
/**
|
|
112
149
|
* Full conversation-reset command for a backend NAME. Keep this routing-only
|
|
113
150
|
* lookup in sync with CliBackend.getClearCommand(); the fleet process does not
|
|
@@ -390,12 +427,12 @@ export class TopicCommands {
|
|
|
390
427
|
return;
|
|
391
428
|
const chatId = msg.chatId;
|
|
392
429
|
const threadId = msg.threadId;
|
|
393
|
-
|
|
394
|
-
if (
|
|
430
|
+
// The caller's own adapter decides, and an empty list means the command is off for everyone.
|
|
431
|
+
if (!this.ctx.hasFleetAdmins(msg.adapterId)) {
|
|
395
432
|
await adapter.sendText(chatId, t("dashboard.disabled"), { threadId });
|
|
396
433
|
return;
|
|
397
434
|
}
|
|
398
|
-
if (!
|
|
435
|
+
if (!this.ctx.isFleetAdmin(msg.userId, msg.adapterId)) {
|
|
399
436
|
await adapter.sendText(chatId, t("not_authorized"), { threadId });
|
|
400
437
|
return;
|
|
401
438
|
}
|
|
@@ -495,11 +532,12 @@ export class TopicCommands {
|
|
|
495
532
|
}
|
|
496
533
|
return true;
|
|
497
534
|
}
|
|
498
|
-
|
|
535
|
+
const compact = parseCompactCommand(text);
|
|
536
|
+
if (compact) {
|
|
499
537
|
const adapter = this.getReplyAdapter(msg);
|
|
500
538
|
if (!adapter)
|
|
501
539
|
return false;
|
|
502
|
-
const result = await this.sendCompact(instanceName);
|
|
540
|
+
const result = await this.sendCompact(instanceName, compact.instructions);
|
|
503
541
|
await adapter.sendText(msg.chatId, result, { threadId: msg.threadId });
|
|
504
542
|
return true;
|
|
505
543
|
}
|
|
@@ -693,7 +731,7 @@ export class TopicCommands {
|
|
|
693
731
|
return `\n${t("ctx.auto_pause", `${minutes}m`)}`;
|
|
694
732
|
}
|
|
695
733
|
/** Send the backend-appropriate compact command to an instance's tmux pane */
|
|
696
|
-
async sendCompact(instanceName) {
|
|
734
|
+
async sendCompact(instanceName, instructions) {
|
|
697
735
|
const ipc = this.ctx.instanceIpcClients.get(instanceName);
|
|
698
736
|
if (ipc?.connected) {
|
|
699
737
|
const classicBackend = this.ctx.classicChannels?.getChannelIdByInstance(instanceName)
|
|
@@ -702,9 +740,24 @@ export class TopicCommands {
|
|
|
702
740
|
const backend = this.ctx.fleetConfig?.instances[instanceName]?.backend
|
|
703
741
|
?? classicBackend
|
|
704
742
|
?? this.ctx.fleetConfig?.defaults?.backend ?? "claude-code";
|
|
705
|
-
const
|
|
706
|
-
|
|
707
|
-
|
|
743
|
+
const base = compactCommandForBackend(backend);
|
|
744
|
+
const custom = normalizeCompactInstructions(instructions);
|
|
745
|
+
if (custom.length > COMPACT_INSTRUCTIONS_MAX) {
|
|
746
|
+
// Refuse rather than cut: a truncated instruction is a different instruction.
|
|
747
|
+
return t("compact.instructions_too_long", String(COMPACT_INSTRUCTIONS_MAX));
|
|
748
|
+
}
|
|
749
|
+
if (!custom) {
|
|
750
|
+
ipc.send({ type: "raw_paste", content: base });
|
|
751
|
+
return t("compact.sent", base);
|
|
752
|
+
}
|
|
753
|
+
if (backendSupportsCompactInstructions(backend)) {
|
|
754
|
+
ipc.send({ type: "raw_paste", content: `${base} ${custom}` });
|
|
755
|
+
return t("compact.sent_with_instructions", base);
|
|
756
|
+
}
|
|
757
|
+
// Compact as asked, without the text, and say so — never send it (codex
|
|
758
|
+
// would take it for a chat message) and never drop it unannounced.
|
|
759
|
+
ipc.send({ type: "raw_paste", content: base });
|
|
760
|
+
return `${t("compact.sent", base)}\n${t("compact.instructions_ignored", backend)}`;
|
|
708
761
|
}
|
|
709
762
|
return t("compact.not_connected");
|
|
710
763
|
}
|
|
@@ -822,6 +875,7 @@ export class TopicCommands {
|
|
|
822
875
|
await adapter.sendText(chatId, t("restart.usage"), { threadId });
|
|
823
876
|
return;
|
|
824
877
|
}
|
|
878
|
+
recordInternalRequest(this.ctx.dataDir, "restart", `command /restart ${mode ?? "graceful"} by ${msg.adapterId}:${msg.userId}`);
|
|
825
879
|
if (mode !== "full") {
|
|
826
880
|
await adapter.sendText(chatId, t("restart.graceful"), { threadId });
|
|
827
881
|
process.kill(process.pid, "SIGUSR2");
|
|
@@ -864,7 +918,7 @@ export class TopicCommands {
|
|
|
864
918
|
}
|
|
865
919
|
}
|
|
866
920
|
/**
|
|
867
|
-
* `/login [backend] |
|
|
921
|
+
* `/login [backend] | cancel` — remote CLI re-login.
|
|
868
922
|
* Fleet-admin only: the flow emits live authorization URLs/codes, and anyone
|
|
869
923
|
* completing one binds their own account to this fleet's CLI.
|
|
870
924
|
*/
|
|
@@ -876,8 +930,7 @@ export class TopicCommands {
|
|
|
876
930
|
await adapter.sendText(msg.chatId, t("permission.denied"), { threadId: msg.threadId });
|
|
877
931
|
return;
|
|
878
932
|
}
|
|
879
|
-
if (!this.ctx.startLoginSession || !this.ctx.promptLoginBackends
|
|
880
|
-
|| !this.ctx.loginSubmitInput || !this.ctx.cancelLoginSession) {
|
|
933
|
+
if (!this.ctx.startLoginSession || !this.ctx.promptLoginBackends || !this.ctx.cancelLoginSession) {
|
|
881
934
|
await adapter.sendText(msg.chatId, t("login.no_session"), { threadId: msg.threadId });
|
|
882
935
|
return;
|
|
883
936
|
}
|
|
@@ -1159,13 +1212,12 @@ export class TopicCommands {
|
|
|
1159
1212
|
return;
|
|
1160
1213
|
const chatId = msg.chatId;
|
|
1161
1214
|
const threadId = msg.threadId;
|
|
1162
|
-
// Access control — only
|
|
1163
|
-
|
|
1164
|
-
if (allowed.length === 0) {
|
|
1215
|
+
// Access control — only fleet admins of THIS adapter can trigger an update; empty = disabled
|
|
1216
|
+
if (!this.ctx.hasFleetAdmins(msg.adapterId)) {
|
|
1165
1217
|
await adapter.sendText(chatId, t("update.disabled"), { threadId });
|
|
1166
1218
|
return;
|
|
1167
1219
|
}
|
|
1168
|
-
if (!
|
|
1220
|
+
if (!this.ctx.isFleetAdmin(msg.userId, msg.adapterId)) {
|
|
1169
1221
|
await adapter.sendText(chatId, t("not_authorized"), { threadId });
|
|
1170
1222
|
return;
|
|
1171
1223
|
}
|
|
@@ -1174,7 +1226,11 @@ export class TopicCommands {
|
|
|
1174
1226
|
const currentVersion = createRequire(import.meta.url)("../package.json").version ?? "";
|
|
1175
1227
|
const updateCmd = currentVersion.includes("beta") ? "agend update --beta" : "agend update";
|
|
1176
1228
|
const { spawn } = await import("node:child_process");
|
|
1177
|
-
const
|
|
1229
|
+
const origin = `command /update by ${msg.adapterId}:${msg.userId}`;
|
|
1230
|
+
recordInternalRequest(this.ctx.dataDir, "update", origin);
|
|
1231
|
+
const child = spawn("sh", ["-c", `sleep 2 && ${updateCmd}`], {
|
|
1232
|
+
detached: true, stdio: "ignore", env: withOrigin(origin),
|
|
1233
|
+
});
|
|
1178
1234
|
child.once("error", err => this.ctx.failUpdateProgress?.(err.message));
|
|
1179
1235
|
child.unref();
|
|
1180
1236
|
}
|
|
@@ -1184,8 +1240,8 @@ export class TopicCommands {
|
|
|
1184
1240
|
return;
|
|
1185
1241
|
const chatId = msg.chatId;
|
|
1186
1242
|
const threadId = msg.threadId;
|
|
1187
|
-
|
|
1188
|
-
if (
|
|
1243
|
+
// Same rule as /update: this adapter's fleet admins only, and an empty list is "nobody", not "everybody".
|
|
1244
|
+
if (!this.ctx.hasFleetAdmins(msg.adapterId) || !this.ctx.isFleetAdmin(msg.userId, msg.adapterId)) {
|
|
1189
1245
|
await adapter.sendText(chatId, t("not_authorized"), { threadId });
|
|
1190
1246
|
return;
|
|
1191
1247
|
}
|
|
@@ -1335,7 +1391,7 @@ export class TopicCommands {
|
|
|
1335
1391
|
{ command: "sysinfo", description: t("slash.sysinfo") },
|
|
1336
1392
|
{ command: "dashboard", description: "🔒 " + t("slash.dashboard") },
|
|
1337
1393
|
{ command: "ctx", description: t("slash.ctx") },
|
|
1338
|
-
{ command: "compact", description: t("slash.compact") },
|
|
1394
|
+
{ command: "compact", description: `${t("slash.compact")} ${t("slash.compact_arg")}` },
|
|
1339
1395
|
{ command: "steer", description: t("slash.steer") },
|
|
1340
1396
|
{ command: "btw", description: t("slash.btw") },
|
|
1341
1397
|
{ command: "clear", description: "🔒 " + t("slash.clear") },
|
|
@@ -1372,7 +1428,7 @@ export class TopicCommands {
|
|
|
1372
1428
|
const classicCommands = [
|
|
1373
1429
|
{ command: "start", description: "🔒 " + t("slash.start") },
|
|
1374
1430
|
{ command: "stop", description: "🔒 " + t("slash.stop") },
|
|
1375
|
-
{ command: "compact", description:
|
|
1431
|
+
{ command: "compact", description: `🔒 ${t("slash.compact")} ${t("slash.compact_arg")}` },
|
|
1376
1432
|
{ command: "steer", description: t("slash.steer") },
|
|
1377
1433
|
{ command: "btw", description: t("slash.btw") },
|
|
1378
1434
|
{ command: "clear", description: "🔒 " + t("slash.clear") },
|