@songsid/agend 2.1.1-beta.2 → 2.1.1-beta.20
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/README.md +1 -0
- package/README.zh-TW.md +1 -0
- package/dist/access-path.js +15 -6
- package/dist/access-path.js.map +1 -1
- package/dist/agent-cli-instructions.md +9 -0
- package/dist/backend/antigravity.d.ts +4 -1
- package/dist/backend/antigravity.js +24 -13
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +37 -0
- package/dist/backend/claude-code.js +47 -8
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex.d.ts +17 -0
- package/dist/backend/codex.js +279 -62
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/gemini-cli.js +4 -7
- package/dist/backend/gemini-cli.js.map +1 -1
- package/dist/backend/grok.d.ts +24 -0
- package/dist/backend/grok.js +57 -8
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +27 -0
- package/dist/backend/kiro.js +96 -15
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/opencode.js +4 -7
- package/dist/backend/opencode.js.map +1 -1
- package/dist/backend/types.d.ts +44 -0
- package/dist/backend/types.js +3 -3
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +15 -0
- package/dist/channel/adapters/discord.js +85 -6
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +21 -0
- package/dist/channel/adapters/telegram.js +132 -15
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/ipc-bridge.d.ts +17 -1
- package/dist/channel/ipc-bridge.js +53 -17
- package/dist/channel/ipc-bridge.js.map +1 -1
- package/dist/channel/ipc-timeouts.d.ts +40 -0
- package/dist/channel/ipc-timeouts.js +58 -0
- package/dist/channel/ipc-timeouts.js.map +1 -0
- package/dist/channel/mcp-server.js +30 -14
- package/dist/channel/mcp-server.js.map +1 -1
- package/dist/channel/mcp-tools.js +25 -0
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/message-queue.d.ts +1 -0
- package/dist/channel/message-queue.js +49 -17
- package/dist/channel/message-queue.js.map +1 -1
- package/dist/channel/reconnect-backoff.d.ts +17 -0
- package/dist/channel/reconnect-backoff.js +21 -0
- package/dist/channel/reconnect-backoff.js.map +1 -0
- package/dist/channel/types.d.ts +29 -0
- package/dist/classic-channel-manager.js +1 -5
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +148 -60
- package/dist/cli.js.map +1 -1
- package/dist/completion.d.ts +27 -0
- package/dist/completion.js +121 -0
- package/dist/completion.js.map +1 -0
- package/dist/config-validator.js +27 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/cost-guard.d.ts +3 -1
- package/dist/cost-guard.js +3 -1
- package/dist/cost-guard.js.map +1 -1
- package/dist/daemon.d.ts +230 -13
- package/dist/daemon.js +975 -335
- package/dist/daemon.js.map +1 -1
- package/dist/event-log.d.ts +31 -0
- package/dist/event-log.js +96 -0
- package/dist/event-log.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -0
- package/dist/fleet-manager.d.ts +209 -4
- package/dist/fleet-manager.js +777 -92
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +22 -0
- package/dist/general-knowledge/skills/model-discovery/SKILL.md +14 -23
- package/dist/general-knowledge/skills/session-management/SKILL.md +15 -34
- package/dist/hang-detector.d.ts +19 -13
- package/dist/hang-detector.js +19 -49
- package/dist/hang-detector.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +21 -1
- package/dist/instance-lifecycle.js +141 -7
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.d.ts +5 -0
- package/dist/instructions.js +10 -5
- package/dist/instructions.js.map +1 -1
- package/dist/locale.js +2 -0
- package/dist/locale.js.map +1 -1
- package/dist/logger.js +14 -0
- package/dist/logger.js.map +1 -1
- package/dist/mcp-liveness.d.ts +21 -0
- package/dist/mcp-liveness.js +27 -0
- package/dist/mcp-liveness.js.map +1 -0
- package/dist/outbound-handlers.d.ts +16 -0
- package/dist/outbound-handlers.js +104 -26
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +2 -0
- package/dist/outbound-schemas.js +10 -2
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/pane-write-lock.d.ts +48 -0
- package/dist/pane-write-lock.js +73 -0
- package/dist/pane-write-lock.js.map +1 -0
- package/dist/process-memory.d.ts +31 -0
- package/dist/process-memory.js +79 -0
- package/dist/process-memory.js.map +1 -0
- package/dist/quickstart.js +17 -16
- package/dist/quickstart.js.map +1 -1
- package/dist/scheduler/db.js +3 -0
- package/dist/scheduler/db.js.map +1 -1
- package/dist/sd-notify.d.ts +45 -0
- package/dist/sd-notify.js +74 -3
- package/dist/sd-notify.js.map +1 -1
- package/dist/secret-file.d.ts +33 -0
- package/dist/secret-file.js +36 -0
- package/dist/secret-file.js.map +1 -0
- package/dist/setup-wizard.js +9 -7
- package/dist/setup-wizard.js.map +1 -1
- package/dist/tmux-control.d.ts +58 -5
- package/dist/tmux-control.js +107 -13
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.d.ts +47 -2
- package/dist/tmux-manager.js +103 -8
- package/dist/tmux-manager.js.map +1 -1
- package/dist/topic-commands.d.ts +35 -1
- package/dist/topic-commands.js +167 -66
- package/dist/topic-commands.js.map +1 -1
- package/dist/tui-glyphs.d.ts +25 -0
- package/dist/tui-glyphs.js +26 -0
- package/dist/tui-glyphs.js.map +1 -0
- package/dist/types.d.ts +19 -0
- package/dist/ui/view.html +291 -33
- package/dist/update-check.d.ts +22 -0
- package/dist/update-check.js +44 -0
- package/dist/update-check.js.map +1 -0
- package/dist/usage/providers.d.ts +50 -0
- package/dist/usage/providers.js +611 -0
- package/dist/usage/providers.js.map +1 -0
- package/dist/usage/usage-api.d.ts +35 -0
- package/dist/usage/usage-api.js +52 -0
- package/dist/usage/usage-api.js.map +1 -0
- package/dist/view-api.d.ts +10 -0
- package/dist/view-api.js +67 -14
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.js +5 -2
- package/dist/web-api.js.map +1 -1
- package/package.json +4 -1
- package/templates/systemd.service.ejs +9 -1
- package/dist/channel/tool-tracker.d.ts +0 -13
- package/dist/channel/tool-tracker.js +0 -58
- package/dist/channel/tool-tracker.js.map +0 -1
- package/dist/daemon-entry.d.ts +0 -1
- package/dist/daemon-entry.js +0 -30
- package/dist/daemon-entry.js.map +0 -1
- package/dist/fleet-system-prompt.d.ts +0 -11
- package/dist/fleet-system-prompt.js +0 -61
- package/dist/fleet-system-prompt.js.map +0 -1
package/dist/sd-notify.js
CHANGED
|
@@ -1,9 +1,80 @@
|
|
|
1
|
-
import { execFileSync } from "node:child_process";
|
|
1
|
+
import { execFile, execFileSync } from "node:child_process";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { getAgendHome } from "./paths.js";
|
|
5
|
+
/**
|
|
6
|
+
* Keep systemd's notification socket private to the fleet process. The socket
|
|
7
|
+
* path is a capability: any child that inherits it can send READY/WATCHDOG/
|
|
8
|
+
* STOPPING on behalf of a NotifyAccess=all service.
|
|
9
|
+
*
|
|
10
|
+
* systemd-notify itself must remain an allowed child sender because Node does
|
|
11
|
+
* not expose AF_UNIX datagram sockets. We therefore remove the capability from
|
|
12
|
+
* the ambient process environment and pass it only to the short-lived helper.
|
|
13
|
+
*/
|
|
14
|
+
export function consumeNotifySocket(environment) {
|
|
15
|
+
const socket = environment.NOTIFY_SOCKET;
|
|
16
|
+
delete environment.NOTIFY_SOCKET;
|
|
17
|
+
return socket || undefined;
|
|
18
|
+
}
|
|
19
|
+
export function buildNotifyEnvironment(environment, socket) {
|
|
20
|
+
return { ...environment, NOTIFY_SOCKET: socket };
|
|
21
|
+
}
|
|
22
|
+
const notifySocket = consumeNotifySocket(process.env);
|
|
23
|
+
/** Only the process recorded as the fleet owner may exercise the capability. */
|
|
24
|
+
export function isFleetOwner(dataDir = getAgendHome(), pid = process.pid) {
|
|
25
|
+
try {
|
|
26
|
+
const fleetPid = Number.parseInt(readFileSync(join(dataDir, "fleet.pid"), "utf8").trim(), 10);
|
|
27
|
+
return Number.isSafeInteger(fleetPid) && fleetPid === pid;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Exported for a focused test of the exact helper environment. */
|
|
34
|
+
export function sendSystemdNotification(state, socket, environment, execute = execFileSync) {
|
|
35
|
+
execute("systemd-notify", [state], {
|
|
36
|
+
env: buildNotifyEnvironment(environment, socket),
|
|
37
|
+
stdio: "ignore",
|
|
38
|
+
timeout: 5000,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** Exported so a test can drive the async path without spawning anything. */
|
|
42
|
+
export function sendSystemdNotificationAsync(state, socket, environment, execute = execFile) {
|
|
43
|
+
execute("systemd-notify", [state], { env: buildNotifyEnvironment(environment, socket), timeout: 5000 }, () => { });
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Send a notification without blocking the event loop.
|
|
47
|
+
*
|
|
48
|
+
* The watchdog ping exists to prove this process is still turning its event
|
|
49
|
+
* loop. Proving it with `execFileSync` stopped the loop for as long as the fork
|
|
50
|
+
* took — up to the 5s timeout — every 30 seconds, and forking is slowest exactly
|
|
51
|
+
* when the machine is loaded, i.e. when the ping matters. A fire-and-forget spawn
|
|
52
|
+
* says the same thing about liveness (the timer fired, the call was made) without
|
|
53
|
+
* contradicting itself.
|
|
54
|
+
*
|
|
55
|
+
* Still a subprocess: Node does not expose AF_UNIX datagram sockets, so
|
|
56
|
+
* systemd-notify remains the only way to reach NOTIFY_SOCKET from here.
|
|
57
|
+
*/
|
|
2
58
|
export function sdNotify(state) {
|
|
3
|
-
if (!
|
|
59
|
+
if (!notifySocket || !isFleetOwner())
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
sendSystemdNotificationAsync(state, notifySocket, process.env);
|
|
63
|
+
}
|
|
64
|
+
catch { /* best effort */ }
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Blocking variant, for the one case where the process is about to exit.
|
|
68
|
+
*
|
|
69
|
+
* `STOPPING=1` has to reach systemd before the event loop stops running, and an
|
|
70
|
+
* async spawn queued on the way out may simply never be executed. Nothing else
|
|
71
|
+
* should use this.
|
|
72
|
+
*/
|
|
73
|
+
export function sdNotifyBlocking(state) {
|
|
74
|
+
if (!notifySocket || !isFleetOwner())
|
|
4
75
|
return;
|
|
5
76
|
try {
|
|
6
|
-
|
|
77
|
+
sendSystemdNotification(state, notifySocket, process.env);
|
|
7
78
|
}
|
|
8
79
|
catch { /* best effort */ }
|
|
9
80
|
}
|
package/dist/sd-notify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-notify.js","sourceRoot":"","sources":["../src/sd-notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"sd-notify.js","sourceRoot":"","sources":["../src/sd-notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAA8B;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC;IACzC,OAAO,WAAW,CAAC,aAAa,CAAC;IACjC,OAAO,MAAM,IAAI,SAAS,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,WAA8B,EAC9B,MAAc;IAEd,OAAO,EAAE,GAAG,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEtD,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAC1B,OAAO,GAAG,YAAY,EAAE,EACxB,GAAG,GAAG,OAAO,CAAC,GAAG;IAEjB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAC9B,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EACvD,EAAE,CACH,CAAC;QACF,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAQD,mEAAmE;AACnE,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,MAAc,EACd,WAA8B,EAC9B,UAA0B,YAAY;IAEtC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE;QACjC,GAAG,EAAE,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC;QAChD,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC;AASD,6EAA6E;AAC7E,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,MAAc,EACd,WAA8B,EAC9B,UAA+B,QAA0C;IAEzE,OAAO,CACL,gBAAgB,EAChB,CAAC,KAAK,CAAC,EACP,EAAE,GAAG,EAAE,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EACnE,GAAG,EAAE,GAAyE,CAAC,CAChF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE;QAAE,OAAO;IAC7C,IAAI,CAAC;QACH,4BAA4B,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE;QAAE,OAAO;IAC7C,IAAI,CAAC;QACH,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Owner read/write only. Anything wider exposes a token to every local user. */
|
|
2
|
+
export declare const SECRET_FILE_MODE = 384;
|
|
3
|
+
export interface SecretWriteResult {
|
|
4
|
+
/** False when the file is readable or writable by anyone but its owner. */
|
|
5
|
+
ok: boolean;
|
|
6
|
+
/** The permission bits actually on disk afterwards, or null if unreadable. */
|
|
7
|
+
mode: number | null;
|
|
8
|
+
reason?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Write a file containing a secret and *confirm* it ended up owner-only.
|
|
12
|
+
*
|
|
13
|
+
* Every call site already passed `{ mode: 0o600 }` to writeFileSync and then
|
|
14
|
+
* re-chmod'd — correctly, because writeFileSync's mode applies only on create, so
|
|
15
|
+
* an existing file keeps whatever permissions it already had. But the chmod was
|
|
16
|
+
* wrapped in a bare `catch {}`, and the only situation where that chmod does
|
|
17
|
+
* anything is the situation where the file is already too permissive. So the one
|
|
18
|
+
* case the code was defending against was also the one case it failed silently:
|
|
19
|
+
* the secret stayed world-readable and nothing said so.
|
|
20
|
+
*
|
|
21
|
+
* This does not throw. A bot token that cannot be tightened is still a bot token
|
|
22
|
+
* the fleet needs, and refusing to start would be worse than running exposed.
|
|
23
|
+
* It reports instead, so the caller can say so where a human will see it.
|
|
24
|
+
*/
|
|
25
|
+
export interface SecretFileOps {
|
|
26
|
+
write(path: string, content: string, mode: number): void;
|
|
27
|
+
chmod(path: string, mode: number): void;
|
|
28
|
+
/** Permission bits currently on disk, or null if they cannot be read. */
|
|
29
|
+
mode(path: string): number | null;
|
|
30
|
+
}
|
|
31
|
+
/** Exported so the failure branches can be tested without an exotic filesystem. */
|
|
32
|
+
export declare const realSecretFileOps: SecretFileOps;
|
|
33
|
+
export declare function writeSecretFile(path: string, content: string, ops?: SecretFileOps): SecretWriteResult;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { chmodSync, statSync, writeFileSync } from "node:fs";
|
|
2
|
+
/** Owner read/write only. Anything wider exposes a token to every local user. */
|
|
3
|
+
export const SECRET_FILE_MODE = 0o600;
|
|
4
|
+
/** Exported so the failure branches can be tested without an exotic filesystem. */
|
|
5
|
+
export const realSecretFileOps = {
|
|
6
|
+
write: (path, content, mode) => writeFileSync(path, content, { mode }),
|
|
7
|
+
chmod: (path, mode) => chmodSync(path, mode),
|
|
8
|
+
mode: readMode,
|
|
9
|
+
};
|
|
10
|
+
export function writeSecretFile(path, content, ops = realSecretFileOps) {
|
|
11
|
+
ops.write(path, content, SECRET_FILE_MODE);
|
|
12
|
+
try {
|
|
13
|
+
ops.chmod(path, SECRET_FILE_MODE);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
return { ok: false, mode: ops.mode(path), reason: err.message };
|
|
17
|
+
}
|
|
18
|
+
const mode = ops.mode(path);
|
|
19
|
+
if (mode === null)
|
|
20
|
+
return { ok: false, mode, reason: "could not stat the file after writing" };
|
|
21
|
+
// Check the group/other bits rather than equality: a stricter mode is fine, and
|
|
22
|
+
// some filesystems (and Windows) will not reproduce 0o600 exactly.
|
|
23
|
+
if ((mode & 0o077) !== 0) {
|
|
24
|
+
return { ok: false, mode, reason: `permissions are ${mode.toString(8)}, expected owner-only` };
|
|
25
|
+
}
|
|
26
|
+
return { ok: true, mode };
|
|
27
|
+
}
|
|
28
|
+
function readMode(path) {
|
|
29
|
+
try {
|
|
30
|
+
return statSync(path).mode & 0o777;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=secret-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-file.js","sourceRoot":"","sources":["../src/secret-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7D,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAgCtC,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC9C,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;IACtE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IAC5C,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,OAAe,EACf,MAAqB,iBAAiB;IAEtC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IAC/F,gFAAgF;IAChF,mEAAmE;IACnE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IACjG,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/setup-wizard.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createInterface } from "node:readline/promises";
|
|
2
|
-
import { writeFileSync, mkdirSync, existsSync, readFileSync
|
|
2
|
+
import { writeFileSync, mkdirSync, existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { writeSecretFile } from "./secret-file.js";
|
|
3
4
|
import { join, resolve } from "node:path";
|
|
4
5
|
import { homedir } from "node:os";
|
|
5
6
|
import { stdin, stdout } from "node:process";
|
|
@@ -637,13 +638,14 @@ export async function runSetupWizard() {
|
|
|
637
638
|
envContent += `GROQ_API_KEY=${groqApiKey}\n`;
|
|
638
639
|
// .env contains the bot token (and possibly third-party API keys) — restrict
|
|
639
640
|
// to owner read/write so other local users / curious processes can't grab it.
|
|
640
|
-
|
|
641
|
-
//
|
|
642
|
-
//
|
|
643
|
-
|
|
644
|
-
|
|
641
|
+
// writeSecretFile handles the overwrite case (writeFileSync's mode is only
|
|
642
|
+
// honoured on create) AND checks the result — the chmod used to be swallowed,
|
|
643
|
+
// so the one case it existed for was the one case that failed silently.
|
|
644
|
+
const envWrite = writeSecretFile(ENV_PATH, envContent);
|
|
645
|
+
if (!envWrite.ok) {
|
|
646
|
+
console.log(` ⚠️ ${ENV_PATH} is not owner-only (${envWrite.reason ?? "unknown"}).`);
|
|
647
|
+
console.log(` It contains your bot token. Fix with: chmod 600 ${ENV_PATH}`);
|
|
645
648
|
}
|
|
646
|
-
catch { /* best-effort on Windows */ }
|
|
647
649
|
console.log(` ${green("✓")} ${ENV_PATH}`);
|
|
648
650
|
// fleet.yaml
|
|
649
651
|
const yaml = await import("js-yaml");
|
package/dist/setup-wizard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/tmux-control.d.ts
CHANGED
|
@@ -25,8 +25,12 @@ export declare class TmuxControlClient extends EventEmitter {
|
|
|
25
25
|
private lastOutputAt;
|
|
26
26
|
private paneToWindow;
|
|
27
27
|
private registeredWindows;
|
|
28
|
+
private resolveFailures;
|
|
28
29
|
private stopped;
|
|
29
30
|
private reconnectTimer;
|
|
31
|
+
/** Epoch ms of the last observation reset. Everything before it is unobservable:
|
|
32
|
+
* the pane cache was dropped, so the absence of a record proves nothing. */
|
|
33
|
+
private observationResetAt;
|
|
30
34
|
private safetySweepTimer;
|
|
31
35
|
constructor(sessionName: string, silenceMs?: number, logger?: Logger | undefined);
|
|
32
36
|
start(): void;
|
|
@@ -38,8 +42,51 @@ export declare class TmuxControlClient extends EventEmitter {
|
|
|
38
42
|
registerWindow(windowId: string): Promise<void>;
|
|
39
43
|
/** Unregister a window (call on killWindow) */
|
|
40
44
|
unregisterWindow(windowId: string): void;
|
|
41
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a window's current pane id and cache the mapping.
|
|
47
|
+
*
|
|
48
|
+
* Drops a registration that has failed to resolve `RESOLVE_FAILURES_BEFORE_DROP`
|
|
49
|
+
* times in a row. Every reconnect re-resolves every registered window, one tmux
|
|
50
|
+
* subprocess each, so a registration for a window that no longer exists is a
|
|
51
|
+
* permanent per-reconnect cost — and callers do forget to unregister (a crash
|
|
52
|
+
* respawn creates a new window id and the dead one used to stay forever).
|
|
53
|
+
*
|
|
54
|
+
* Consecutive failures rather than one: `list-panes` also fails transiently when
|
|
55
|
+
* tmux is busy, e.g. during a fleet-restart storm, and dropping a live window's
|
|
56
|
+
* registration would silence its output events.
|
|
57
|
+
*/
|
|
42
58
|
private resolvePane;
|
|
59
|
+
/**
|
|
60
|
+
* Forget everything we knew about panes, and remember that we have forgotten.
|
|
61
|
+
*
|
|
62
|
+
* Kept as one method so the grace can never be skipped: clearing the maps
|
|
63
|
+
* without arming it is precisely the bug this exists to prevent.
|
|
64
|
+
*/
|
|
65
|
+
private resetPaneObservations;
|
|
66
|
+
/**
|
|
67
|
+
* True while a freshly (re)connected client has not had time to observe output.
|
|
68
|
+
*
|
|
69
|
+
* `connect()` drops the pane cache, so for a moment afterwards *every* pane looks
|
|
70
|
+
* like it has never produced output — including panes that are mid-generation.
|
|
71
|
+
* Reading that as "idle" is the dangerous direction: a delivery would skip its
|
|
72
|
+
* busy branch and paste straight into a working CLI, where Enter is a steering
|
|
73
|
+
* interrupt rather than a new turn.
|
|
74
|
+
*
|
|
75
|
+
* `silenceMs` is the right length because it is already this class's definition
|
|
76
|
+
* of idle: a pane that produces nothing for that long counts as idle anyway, so
|
|
77
|
+
* the grace never suppresses a state the client would otherwise have reported.
|
|
78
|
+
* An actively generating pane re-registers well inside it.
|
|
79
|
+
*/
|
|
80
|
+
private inObservationGrace;
|
|
81
|
+
/**
|
|
82
|
+
* When this client last lost its view of every pane (0 if it never has).
|
|
83
|
+
*
|
|
84
|
+
* A caller reasoning about a *window* of time — "did the pane react in the two
|
|
85
|
+
* seconds after I pressed Enter?" — needs to know whether it could see for all
|
|
86
|
+
* of it. A reset inside that window makes a negative answer meaningless, and
|
|
87
|
+
* acting on it produces confident, wrong conclusions.
|
|
88
|
+
*/
|
|
89
|
+
getObservationResetAt(): number;
|
|
43
90
|
/** Check if a window's pane has been silent for at least silenceMs */
|
|
44
91
|
isIdle(windowId: string): boolean;
|
|
45
92
|
/** Timestamp of the window pane's last observed output, or undefined if unknown. */
|
|
@@ -52,11 +99,17 @@ export declare class TmuxControlClient extends EventEmitter {
|
|
|
52
99
|
*/
|
|
53
100
|
waitForIdle(windowId: string, timeoutMs?: number): Promise<boolean>;
|
|
54
101
|
/**
|
|
55
|
-
* Wait until a window's pane is idle
|
|
56
|
-
*
|
|
57
|
-
*
|
|
102
|
+
* Wait until a window's pane is idle. Used by message delivery to queue behind a
|
|
103
|
+
* busy CLI and deliver the moment it frees up, rather than force-pasting.
|
|
104
|
+
*
|
|
105
|
+
* Resolves `true` on idle (or if the control client stops), `false` if
|
|
106
|
+
* `timeoutMs` elapsed first. This used to have NO timeout at all, so a wedged
|
|
107
|
+
* pane held the pasteLock forever and every message behind it queued silently
|
|
108
|
+
* with no ❌ and no log — the caller believed delivery was merely slow. A very
|
|
109
|
+
* long default keeps the "a busy CLI is not a lost message" behaviour while
|
|
110
|
+
* putting a floor under how long a wedge can absorb the queue unnoticed.
|
|
58
111
|
*/
|
|
59
|
-
waitUntilIdle(windowId: string): Promise<
|
|
112
|
+
waitUntilIdle(windowId: string, timeoutMs?: number): Promise<boolean>;
|
|
60
113
|
/**
|
|
61
114
|
* Wait until a window's pane produces any output.
|
|
62
115
|
* Used to verify CLI startup — if no output within timeout, CLI likely failed.
|
package/dist/tmux-control.js
CHANGED
|
@@ -3,6 +3,12 @@ import { EventEmitter } from "node:events";
|
|
|
3
3
|
import { createInterface } from "node:readline";
|
|
4
4
|
import { getTmuxSocketName } from "./paths.js";
|
|
5
5
|
export const CONTROL_SAFETY_SWEEP_MS = 60_000;
|
|
6
|
+
/**
|
|
7
|
+
* Consecutive `list-panes` failures before a window's registration is dropped.
|
|
8
|
+
* More than one because tmux fails transiently under load, and unregistering a
|
|
9
|
+
* live window would silence the output events its daemon depends on.
|
|
10
|
+
*/
|
|
11
|
+
const RESOLVE_FAILURES_BEFORE_DROP = 3;
|
|
6
12
|
function tmuxArgs(args) {
|
|
7
13
|
const socket = getTmuxSocketName();
|
|
8
14
|
return socket ? ["-L", socket, ...args] : args;
|
|
@@ -36,8 +42,12 @@ export class TmuxControlClient extends EventEmitter {
|
|
|
36
42
|
lastOutputAt = new Map(); // paneId → timestamp
|
|
37
43
|
paneToWindow = new Map(); // paneId → windowId
|
|
38
44
|
registeredWindows = new Set(); // windowIds we should re-resolve on reconnect
|
|
45
|
+
resolveFailures = new Map(); // windowId → consecutive resolve failures
|
|
39
46
|
stopped = false;
|
|
40
47
|
reconnectTimer = null;
|
|
48
|
+
/** Epoch ms of the last observation reset. Everything before it is unobservable:
|
|
49
|
+
* the pane cache was dropped, so the absence of a record proves nothing. */
|
|
50
|
+
observationResetAt = 0;
|
|
41
51
|
safetySweepTimer = null;
|
|
42
52
|
constructor(sessionName, silenceMs = 2000, logger) {
|
|
43
53
|
super();
|
|
@@ -80,6 +90,7 @@ export class TmuxControlClient extends EventEmitter {
|
|
|
80
90
|
/** Unregister a window (call on killWindow) */
|
|
81
91
|
unregisterWindow(windowId) {
|
|
82
92
|
this.registeredWindows.delete(windowId);
|
|
93
|
+
this.resolveFailures.delete(windowId);
|
|
83
94
|
for (const [pane, win] of this.paneToWindow) {
|
|
84
95
|
if (win === windowId) {
|
|
85
96
|
this.paneToWindow.delete(pane);
|
|
@@ -88,30 +99,93 @@ export class TmuxControlClient extends EventEmitter {
|
|
|
88
99
|
}
|
|
89
100
|
}
|
|
90
101
|
}
|
|
91
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* Resolve a window's current pane id and cache the mapping.
|
|
104
|
+
*
|
|
105
|
+
* Drops a registration that has failed to resolve `RESOLVE_FAILURES_BEFORE_DROP`
|
|
106
|
+
* times in a row. Every reconnect re-resolves every registered window, one tmux
|
|
107
|
+
* subprocess each, so a registration for a window that no longer exists is a
|
|
108
|
+
* permanent per-reconnect cost — and callers do forget to unregister (a crash
|
|
109
|
+
* respawn creates a new window id and the dead one used to stay forever).
|
|
110
|
+
*
|
|
111
|
+
* Consecutive failures rather than one: `list-panes` also fails transiently when
|
|
112
|
+
* tmux is busy, e.g. during a fleet-restart storm, and dropping a live window's
|
|
113
|
+
* registration would silence its output events.
|
|
114
|
+
*/
|
|
92
115
|
async resolvePane(windowId) {
|
|
93
116
|
try {
|
|
94
117
|
const paneId = await execTmux([
|
|
95
118
|
"list-panes", "-t", `${this.sessionName}:${windowId}`,
|
|
96
119
|
"-F", "#{pane_id}",
|
|
97
120
|
]);
|
|
121
|
+
this.resolveFailures.delete(windowId);
|
|
98
122
|
if (paneId) {
|
|
99
123
|
this.paneToWindow.set(paneId, windowId);
|
|
100
124
|
this.logger?.debug({ windowId, paneId }, "Registered window→pane mapping");
|
|
101
125
|
}
|
|
102
126
|
}
|
|
103
127
|
catch {
|
|
104
|
-
this.
|
|
128
|
+
const failures = (this.resolveFailures.get(windowId) ?? 0) + 1;
|
|
129
|
+
this.resolveFailures.set(windowId, failures);
|
|
130
|
+
if (failures >= RESOLVE_FAILURES_BEFORE_DROP && this.registeredWindows.has(windowId)) {
|
|
131
|
+
this.logger?.debug({ windowId, failures }, "Window has not resolved for several attempts — dropping its registration");
|
|
132
|
+
this.unregisterWindow(windowId);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.logger?.debug({ windowId, failures }, "Failed to resolve pane ID for window");
|
|
105
136
|
}
|
|
106
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Forget everything we knew about panes, and remember that we have forgotten.
|
|
140
|
+
*
|
|
141
|
+
* Kept as one method so the grace can never be skipped: clearing the maps
|
|
142
|
+
* without arming it is precisely the bug this exists to prevent.
|
|
143
|
+
*/
|
|
144
|
+
resetPaneObservations() {
|
|
145
|
+
this.paneToWindow.clear();
|
|
146
|
+
this.lastOutputAt.clear();
|
|
147
|
+
this.observationResetAt = Date.now();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* True while a freshly (re)connected client has not had time to observe output.
|
|
151
|
+
*
|
|
152
|
+
* `connect()` drops the pane cache, so for a moment afterwards *every* pane looks
|
|
153
|
+
* like it has never produced output — including panes that are mid-generation.
|
|
154
|
+
* Reading that as "idle" is the dangerous direction: a delivery would skip its
|
|
155
|
+
* busy branch and paste straight into a working CLI, where Enter is a steering
|
|
156
|
+
* interrupt rather than a new turn.
|
|
157
|
+
*
|
|
158
|
+
* `silenceMs` is the right length because it is already this class's definition
|
|
159
|
+
* of idle: a pane that produces nothing for that long counts as idle anyway, so
|
|
160
|
+
* the grace never suppresses a state the client would otherwise have reported.
|
|
161
|
+
* An actively generating pane re-registers well inside it.
|
|
162
|
+
*/
|
|
163
|
+
inObservationGrace() {
|
|
164
|
+
return this.observationResetAt > 0 && Date.now() < this.observationResetAt + this.silenceMs;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* When this client last lost its view of every pane (0 if it never has).
|
|
168
|
+
*
|
|
169
|
+
* A caller reasoning about a *window* of time — "did the pane react in the two
|
|
170
|
+
* seconds after I pressed Enter?" — needs to know whether it could see for all
|
|
171
|
+
* of it. A reset inside that window makes a negative answer meaningless, and
|
|
172
|
+
* acting on it produces confident, wrong conclusions.
|
|
173
|
+
*/
|
|
174
|
+
getObservationResetAt() {
|
|
175
|
+
return this.observationResetAt;
|
|
176
|
+
}
|
|
107
177
|
/** Check if a window's pane has been silent for at least silenceMs */
|
|
108
178
|
isIdle(windowId) {
|
|
109
179
|
const paneId = this.windowToPaneId(windowId);
|
|
180
|
+
// "Unknown" means unknown, not idle — but only while that ignorance is fresh.
|
|
181
|
+
// After the grace we fall back to the old optimistic answer, because a window
|
|
182
|
+
// that is genuinely untracked (never registered, or resolve failed) must not
|
|
183
|
+
// block delivery forever.
|
|
110
184
|
if (!paneId)
|
|
111
|
-
return
|
|
185
|
+
return !this.inObservationGrace();
|
|
112
186
|
const last = this.lastOutputAt.get(paneId);
|
|
113
187
|
if (last == null)
|
|
114
|
-
return
|
|
188
|
+
return !this.inObservationGrace();
|
|
115
189
|
return Date.now() - last >= this.silenceMs;
|
|
116
190
|
}
|
|
117
191
|
/** Timestamp of the window pane's last observed output, or undefined if unknown. */
|
|
@@ -150,20 +224,33 @@ export class TmuxControlClient extends EventEmitter {
|
|
|
150
224
|
});
|
|
151
225
|
}
|
|
152
226
|
/**
|
|
153
|
-
* Wait until a window's pane is idle
|
|
154
|
-
*
|
|
155
|
-
*
|
|
227
|
+
* Wait until a window's pane is idle. Used by message delivery to queue behind a
|
|
228
|
+
* busy CLI and deliver the moment it frees up, rather than force-pasting.
|
|
229
|
+
*
|
|
230
|
+
* Resolves `true` on idle (or if the control client stops), `false` if
|
|
231
|
+
* `timeoutMs` elapsed first. This used to have NO timeout at all, so a wedged
|
|
232
|
+
* pane held the pasteLock forever and every message behind it queued silently
|
|
233
|
+
* with no ❌ and no log — the caller believed delivery was merely slow. A very
|
|
234
|
+
* long default keeps the "a busy CLI is not a lost message" behaviour while
|
|
235
|
+
* putting a floor under how long a wedge can absorb the queue unnoticed.
|
|
156
236
|
*/
|
|
157
|
-
waitUntilIdle(windowId) {
|
|
237
|
+
waitUntilIdle(windowId, timeoutMs = 30 * 60_000) {
|
|
158
238
|
if (this.isIdle(windowId))
|
|
159
|
-
return Promise.resolve();
|
|
239
|
+
return Promise.resolve(true);
|
|
160
240
|
return new Promise((resolve) => {
|
|
161
241
|
const check = setInterval(() => {
|
|
162
242
|
if (this.stopped || this.isIdle(windowId)) {
|
|
163
243
|
clearInterval(check);
|
|
164
|
-
|
|
244
|
+
clearTimeout(timer);
|
|
245
|
+
resolve(true);
|
|
165
246
|
}
|
|
166
247
|
}, 200);
|
|
248
|
+
const timer = setTimeout(() => {
|
|
249
|
+
clearInterval(check);
|
|
250
|
+
this.logger?.warn({ windowId, timeoutMs }, "waitUntilIdle timed out — pane appears wedged");
|
|
251
|
+
resolve(false);
|
|
252
|
+
}, timeoutMs);
|
|
253
|
+
timer.unref?.();
|
|
167
254
|
});
|
|
168
255
|
}
|
|
169
256
|
/**
|
|
@@ -204,9 +291,16 @@ export class TmuxControlClient extends EventEmitter {
|
|
|
204
291
|
// disconnect that windows churned) can leave our cached paneId →
|
|
205
292
|
// windowId mapping pointing at a stale or recycled pane. Drop the
|
|
206
293
|
// cache and re-resolve every registered window from the new server.
|
|
207
|
-
this.
|
|
208
|
-
|
|
209
|
-
|
|
294
|
+
this.resetPaneObservations();
|
|
295
|
+
// This is an observation-only client with no real terminal geometry.
|
|
296
|
+
// `ignore-size` prevents tmux's `window-size=latest` policy from treating
|
|
297
|
+
// its synthetic dimensions as authoritative. This flag is now load-bearing,
|
|
298
|
+
// not defense in depth: instance windows use `window-size latest` (see
|
|
299
|
+
// TmuxManager.applyLogicalSize) so a human `tmux attach` can resize them, and
|
|
300
|
+
// without `ignore-size` this client would collapse them to 80 columns.
|
|
301
|
+
this.proc = spawn("tmux", tmuxArgs([
|
|
302
|
+
"-C", "attach", "-f", "ignore-size", "-t", this.sessionName, "-r",
|
|
303
|
+
]), {
|
|
210
304
|
stdio: ["pipe", "pipe", "pipe"],
|
|
211
305
|
});
|
|
212
306
|
this.rl = createInterface({ input: this.proc.stdout });
|