agent-yes 1.207.0 → 1.209.0
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/default.config.yaml +8 -0
- package/dist/{SUPPORTED_CLIS-B1CDJwYn.js → SUPPORTED_CLIS-BpUR991B.js} +2 -2
- package/dist/SUPPORTED_CLIS-CzaheLtQ.js +9 -0
- package/dist/{agentShare-DdEbHtAn.js → agentShare-Bbm1buCh.js} +2 -2
- package/dist/cli.js +4 -4
- package/dist/index.js +2 -2
- package/dist/{notifyDaemon-DivHVzZx.js → notifyDaemon-CuGUVybF.js} +2 -2
- package/dist/{rustBinary-CuBIr-zX.js → rustBinary-D1akhp-t.js} +2 -2
- package/dist/{schedule-Bg_CDt2j.js → schedule-GpXGrnVP.js} +4 -4
- package/dist/{serve-B-ZCy67S.js → serve-DXqNeB3C.js} +12 -12
- package/dist/{setup-D6UBzk4-.js → setup-D7d3G-2r.js} +2 -2
- package/dist/{subcommands-6AQ8egRn.js → subcommands-BBJOPSTV.js} +7 -7
- package/dist/{subcommands-CeRH9-_h.js → subcommands-BpmSru_8.js} +1 -1
- package/dist/{ts-DZWZvbLM.js → ts-CtJYkOVO.js} +2 -2
- package/dist/{versionChecker-C2CV9VOX.js → versionChecker-C9Q1qyKO.js} +2 -2
- package/dist/{ws-CGNmxCPD.js → ws-8BZZijYd.js} +2 -2
- package/lab/ui/index.html +41 -52
- package/package.json +1 -1
- package/ts/serve.ts +5 -1
- package/ts/sizeNego.spec.ts +1 -6
- package/dist/SUPPORTED_CLIS-vH8hvcZr.js +0 -9
package/default.config.yaml
CHANGED
|
@@ -98,6 +98,14 @@ clis:
|
|
|
98
98
|
# `\s+`/`\s*` tolerate wraps inside the phrase.
|
|
99
99
|
- pattern: 'API Error:[\s\S]{0,40}Connection\s+closed\s+mid-\s*response'
|
|
100
100
|
flags: i
|
|
101
|
+
# "API Error: Stream idle timeout - no chunks received." — the streamed
|
|
102
|
+
# response went idle (no chunks arrived within the client's window) and the
|
|
103
|
+
# client gave up. Same transient/server-side class as the stalled/closed
|
|
104
|
+
# cases above, so retry with backoff. Same "API Error:" chrome anchor keeps
|
|
105
|
+
# an agent merely *discussing* it from self-triggering; `[\s\S]{0,40}` spans
|
|
106
|
+
# the prefix→phrase gap across a line-wrap and `\s+` tolerates wraps.
|
|
107
|
+
- pattern: 'API Error:[\s\S]{0,40}Stream\s+idle\s+timeout'
|
|
108
|
+
flags: i
|
|
101
109
|
# Any 5xx API error (e.g. "API Error: 529 Overloaded", "API Error: 503 …",
|
|
102
110
|
# or a 529 rendered as a raw JSON error blob) is server-side + transient —
|
|
103
111
|
# retry with backoff regardless of the wording. Anchored to "API Error" so
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as CLIS_CONFIG } from "./ts-
|
|
1
|
+
import { t as CLIS_CONFIG } from "./ts-CtJYkOVO.js";
|
|
2
2
|
|
|
3
3
|
//#region ts/SUPPORTED_CLIS.ts
|
|
4
4
|
const SUPPORTED_CLIS = Object.keys(CLIS_CONFIG);
|
|
5
5
|
|
|
6
6
|
//#endregion
|
|
7
7
|
export { SUPPORTED_CLIS as t };
|
|
8
|
-
//# sourceMappingURL=SUPPORTED_CLIS-
|
|
8
|
+
//# sourceMappingURL=SUPPORTED_CLIS-BpUR991B.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "./ts-CtJYkOVO.js";
|
|
2
|
+
import "./logger-CDIsZ-Pp.js";
|
|
3
|
+
import "./versionChecker-C9Q1qyKO.js";
|
|
4
|
+
import "./pidStore-BIvsBQ8X.js";
|
|
5
|
+
import "./globalPidIndex-CoNr7tS8.js";
|
|
6
|
+
import "./messageLog-CxrKJj77.js";
|
|
7
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BpUR991B.js";
|
|
8
|
+
|
|
9
|
+
export { SUPPORTED_CLIS };
|
|
@@ -2,7 +2,7 @@ import "./logger-CDIsZ-Pp.js";
|
|
|
2
2
|
import "./globalPidIndex-CoNr7tS8.js";
|
|
3
3
|
import "./messageLog-CxrKJj77.js";
|
|
4
4
|
import "./configShared-aKTg-sa5.js";
|
|
5
|
-
import { M as resolveOne } from "./subcommands-
|
|
5
|
+
import { M as resolveOne } from "./subcommands-BBJOPSTV.js";
|
|
6
6
|
import "./e2e-jb0Hp43q.js";
|
|
7
7
|
import "./webrtcLink-B7REGtK2.js";
|
|
8
8
|
import "./remotes-Cim0dBU7.js";
|
|
@@ -229,4 +229,4 @@ function transformEvent(rawEvent, agentId, forwarded) {
|
|
|
229
229
|
|
|
230
230
|
//#endregion
|
|
231
231
|
export { createScopedShare, listShares, revokeAllShares, revokeShare };
|
|
232
|
-
//# sourceMappingURL=agentShare-
|
|
232
|
+
//# sourceMappingURL=agentShare-Bbm1buCh.js.map
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { t as invokedCliName } from "./invokedCli-uqM2YYA7.js";
|
|
3
3
|
import { n as logger } from "./logger-CDIsZ-Pp.js";
|
|
4
|
-
import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-
|
|
5
|
-
import { n as getRustBinary } from "./rustBinary-
|
|
4
|
+
import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-C9Q1qyKO.js";
|
|
5
|
+
import { n as getRustBinary } from "./rustBinary-D1akhp-t.js";
|
|
6
6
|
import { argv } from "process";
|
|
7
7
|
import { spawn } from "child_process";
|
|
8
8
|
import ms from "ms";
|
|
@@ -285,7 +285,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
|
|
|
285
285
|
const rawArg = process.argv[2];
|
|
286
286
|
const managerCommands = !invokedCliName(process.argv);
|
|
287
287
|
const isHelpFlag = rawArg === "-h" || rawArg === "--help";
|
|
288
|
-
const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-
|
|
288
|
+
const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-BpmSru_8.js");
|
|
289
289
|
if (isHelpFlag && process.argv.length === 3) {
|
|
290
290
|
await cmdHelp(managerCommands);
|
|
291
291
|
process.exit(0);
|
|
@@ -327,7 +327,7 @@ if (config.useRust) {
|
|
|
327
327
|
}
|
|
328
328
|
}
|
|
329
329
|
if (rustBinary) {
|
|
330
|
-
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-
|
|
330
|
+
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-CzaheLtQ.js");
|
|
331
331
|
const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
|
|
332
332
|
if (config.verbose) {
|
|
333
333
|
console.log(`[rust] Using binary: ${rustBinary}`);
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-
|
|
1
|
+
import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-CtJYkOVO.js";
|
|
2
2
|
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import "./versionChecker-
|
|
3
|
+
import "./versionChecker-C9Q1qyKO.js";
|
|
4
4
|
import "./pidStore-BIvsBQ8X.js";
|
|
5
5
|
import "./globalPidIndex-CoNr7tS8.js";
|
|
6
6
|
import "./messageLog-CxrKJj77.js";
|
|
@@ -2,7 +2,7 @@ import { n as logger } from "./logger-CDIsZ-Pp.js";
|
|
|
2
2
|
import "./globalPidIndex-CoNr7tS8.js";
|
|
3
3
|
import "./messageLog-CxrKJj77.js";
|
|
4
4
|
import "./configShared-aKTg-sa5.js";
|
|
5
|
-
import { $ as daemonLockOwnerPath, G as gcInboxes, J as listInboxParents, K as hostId, Q as daemonLockDir, S as listRecords, W as appendEvent, X as readInbox, Y as liveWatchers, Z as shouldStealLock, _ as isPidAlive, c as deriveLiveState, et as notifyDir, k as renderLogTailLines } from "./subcommands-
|
|
5
|
+
import { $ as daemonLockOwnerPath, G as gcInboxes, J as listInboxParents, K as hostId, Q as daemonLockDir, S as listRecords, W as appendEvent, X as readInbox, Y as liveWatchers, Z as shouldStealLock, _ as isPidAlive, c as deriveLiveState, et as notifyDir, k as renderLogTailLines } from "./subcommands-BBJOPSTV.js";
|
|
6
6
|
import "./e2e-jb0Hp43q.js";
|
|
7
7
|
import "./webrtcLink-B7REGtK2.js";
|
|
8
8
|
import "./remotes-Cim0dBU7.js";
|
|
@@ -589,4 +589,4 @@ async function ensureDaemon() {
|
|
|
589
589
|
|
|
590
590
|
//#endregion
|
|
591
591
|
export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
|
|
592
|
-
//# sourceMappingURL=notifyDaemon-
|
|
592
|
+
//# sourceMappingURL=notifyDaemon-CuGUVybF.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as getInstalledPackage } from "./versionChecker-
|
|
1
|
+
import { r as getInstalledPackage } from "./versionChecker-C9Q1qyKO.js";
|
|
2
2
|
import { execFileSync } from "child_process";
|
|
3
3
|
import { existsSync, mkdirSync, unlinkSync } from "fs";
|
|
4
4
|
import { chmod, copyFile } from "fs/promises";
|
|
@@ -225,4 +225,4 @@ async function getRustBinary(options = {}) {
|
|
|
225
225
|
|
|
226
226
|
//#endregion
|
|
227
227
|
export { getRustBinary as n, findSpawnHiddenLauncher as t };
|
|
228
|
-
//# sourceMappingURL=rustBinary-
|
|
228
|
+
//# sourceMappingURL=rustBinary-D1akhp-t.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./ts-
|
|
1
|
+
import "./ts-CtJYkOVO.js";
|
|
2
2
|
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import "./versionChecker-
|
|
3
|
+
import "./versionChecker-C9Q1qyKO.js";
|
|
4
4
|
import "./pidStore-BIvsBQ8X.js";
|
|
5
5
|
import "./globalPidIndex-CoNr7tS8.js";
|
|
6
6
|
import "./messageLog-CxrKJj77.js";
|
|
7
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
7
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BpUR991B.js";
|
|
8
8
|
import { d as resolveSpawnCwd } from "./workspaceConfig-CjaRvTjf.js";
|
|
9
9
|
import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-CwNJuwH5.js";
|
|
10
10
|
import { createHash } from "node:crypto";
|
|
@@ -151,4 +151,4 @@ async function cmdSchedule(rest) {
|
|
|
151
151
|
|
|
152
152
|
//#endregion
|
|
153
153
|
export { cmdSchedule };
|
|
154
|
-
//# sourceMappingURL=schedule-
|
|
154
|
+
//# sourceMappingURL=schedule-GpXGrnVP.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import "./ts-
|
|
1
|
+
import "./ts-CtJYkOVO.js";
|
|
2
2
|
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import { r as getInstalledPackage } from "./versionChecker-
|
|
4
|
-
import { t as findSpawnHiddenLauncher } from "./rustBinary-
|
|
3
|
+
import { r as getInstalledPackage } from "./versionChecker-C9Q1qyKO.js";
|
|
4
|
+
import { t as findSpawnHiddenLauncher } from "./rustBinary-D1akhp-t.js";
|
|
5
5
|
import { t as agentYesHome$1 } from "./agentYesHome-CtHb5b71.js";
|
|
6
6
|
import "./pidStore-BIvsBQ8X.js";
|
|
7
7
|
import { a as updateGlobalPidStatus } from "./globalPidIndex-CoNr7tS8.js";
|
|
8
8
|
import { r as recordInbox } from "./messageLog-CxrKJj77.js";
|
|
9
9
|
import { t as pgidForWrapper } from "./reaper-BUHCyxdF.js";
|
|
10
10
|
import "./configShared-aKTg-sa5.js";
|
|
11
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
12
|
-
import { A as renderRawLog, D as recentMessageEdges, E as readPtysize, L as snapshotStatus, M as resolveOne, O as recentReadEdges, S as listRecords, T as readNotes, U as writeToIpc, b as isUserTyping, f as extractNeedsInput, k as renderLogTailLines, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, q as isTransientLockMkdirError, tt as TYPING_BADGE, u as extractBadges } from "./subcommands-
|
|
11
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BpUR991B.js";
|
|
12
|
+
import { A as renderRawLog, D as recentMessageEdges, E as readPtysize, L as snapshotStatus, M as resolveOne, O as recentReadEdges, S as listRecords, T as readNotes, U as writeToIpc, b as isUserTyping, f as extractNeedsInput, k as renderLogTailLines, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, q as isTransientLockMkdirError, tt as TYPING_BADGE, u as extractBadges } from "./subcommands-BBJOPSTV.js";
|
|
13
13
|
import "./e2e-jb0Hp43q.js";
|
|
14
14
|
import "./webrtcLink-B7REGtK2.js";
|
|
15
15
|
import "./remotes-Cim0dBU7.js";
|
|
@@ -1868,7 +1868,7 @@ Options:
|
|
|
1868
1868
|
}
|
|
1869
1869
|
});
|
|
1870
1870
|
if (req.method === "GET" && p === "/api/ws") {
|
|
1871
|
-
const ws = await import("./ws-
|
|
1871
|
+
const ws = await import("./ws-8BZZijYd.js");
|
|
1872
1872
|
try {
|
|
1873
1873
|
await ws.loadProvision();
|
|
1874
1874
|
} catch (e) {
|
|
@@ -1888,7 +1888,7 @@ Options:
|
|
|
1888
1888
|
if (req.method === "GET" && p === "/api/ws/status") {
|
|
1889
1889
|
const dirRaw = url.searchParams.get("path");
|
|
1890
1890
|
if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
|
|
1891
|
-
const ws = await import("./ws-
|
|
1891
|
+
const ws = await import("./ws-8BZZijYd.js");
|
|
1892
1892
|
let prov;
|
|
1893
1893
|
try {
|
|
1894
1894
|
prov = await ws.loadProvision();
|
|
@@ -2449,7 +2449,7 @@ Options:
|
|
|
2449
2449
|
const perm = body.perm ?? "r";
|
|
2450
2450
|
if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
|
|
2451
2451
|
try {
|
|
2452
|
-
const { createScopedShare } = await import("./agentShare-
|
|
2452
|
+
const { createScopedShare } = await import("./agentShare-Bbm1buCh.js");
|
|
2453
2453
|
const share = await createScopedShare({
|
|
2454
2454
|
agent: body.agent,
|
|
2455
2455
|
perm,
|
|
@@ -2464,12 +2464,12 @@ Options:
|
|
|
2464
2464
|
}
|
|
2465
2465
|
}
|
|
2466
2466
|
if (req.method === "GET" && p === "/api/shares") {
|
|
2467
|
-
const { listShares } = await import("./agentShare-
|
|
2467
|
+
const { listShares } = await import("./agentShare-Bbm1buCh.js");
|
|
2468
2468
|
return Response.json(listShares());
|
|
2469
2469
|
}
|
|
2470
2470
|
const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
|
|
2471
2471
|
if (req.method === "DELETE" && revokeM) {
|
|
2472
|
-
const { revokeShare } = await import("./agentShare-
|
|
2472
|
+
const { revokeShare } = await import("./agentShare-Bbm1buCh.js");
|
|
2473
2473
|
const ok = revokeShare(decodeURIComponent(revokeM[1]));
|
|
2474
2474
|
return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
|
|
2475
2475
|
}
|
|
@@ -2655,7 +2655,7 @@ Options:
|
|
|
2655
2655
|
const shutdown = (resolve) => {
|
|
2656
2656
|
if (heartbeat) clearInterval(heartbeat);
|
|
2657
2657
|
closeShare?.();
|
|
2658
|
-
import("./agentShare-
|
|
2658
|
+
import("./agentShare-Bbm1buCh.js").then((m) => m.revokeAllShares()).catch(() => {});
|
|
2659
2659
|
server?.stop();
|
|
2660
2660
|
Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
|
|
2661
2661
|
};
|
|
@@ -2668,4 +2668,4 @@ Options:
|
|
|
2668
2668
|
|
|
2669
2669
|
//#endregion
|
|
2670
2670
|
export { cmdServe };
|
|
2671
|
-
//# sourceMappingURL=serve-
|
|
2671
|
+
//# sourceMappingURL=serve-DXqNeB3C.js.map
|
|
@@ -32,7 +32,7 @@ async function cmdSetup(rest) {
|
|
|
32
32
|
if (!existsSync(abs)) process.stderr.write(` note: that directory doesn't exist yet — create it, or agents spawned there will fail\n`);
|
|
33
33
|
if (noShare) return 0;
|
|
34
34
|
process.stdout.write(`\nsharing this machine to agent-yes.com…\n`);
|
|
35
|
-
const { cmdServe } = await import("./serve-
|
|
35
|
+
const { cmdServe } = await import("./serve-DXqNeB3C.js");
|
|
36
36
|
return cmdServe([
|
|
37
37
|
"install",
|
|
38
38
|
"--share",
|
|
@@ -42,4 +42,4 @@ async function cmdSetup(rest) {
|
|
|
42
42
|
|
|
43
43
|
//#endregion
|
|
44
44
|
export { cmdSetup };
|
|
45
|
-
//# sourceMappingURL=setup-
|
|
45
|
+
//# sourceMappingURL=setup-D7d3G-2r.js.map
|
|
@@ -1237,19 +1237,19 @@ async function runSubcommand(argv) {
|
|
|
1237
1237
|
case "restart": return await cmdRestart(rest);
|
|
1238
1238
|
case "note": return await cmdNote(rest);
|
|
1239
1239
|
case "serve": {
|
|
1240
|
-
const { cmdServe } = await import("./serve-
|
|
1240
|
+
const { cmdServe } = await import("./serve-DXqNeB3C.js");
|
|
1241
1241
|
return cmdServe(rest);
|
|
1242
1242
|
}
|
|
1243
1243
|
case "setup": {
|
|
1244
|
-
const { cmdSetup } = await import("./setup-
|
|
1244
|
+
const { cmdSetup } = await import("./setup-D7d3G-2r.js");
|
|
1245
1245
|
return cmdSetup(rest);
|
|
1246
1246
|
}
|
|
1247
1247
|
case "ws": {
|
|
1248
|
-
const { cmdWs } = await import("./ws-
|
|
1248
|
+
const { cmdWs } = await import("./ws-8BZZijYd.js");
|
|
1249
1249
|
return cmdWs(rest);
|
|
1250
1250
|
}
|
|
1251
1251
|
case "schedule": {
|
|
1252
|
-
const { cmdSchedule } = await import("./schedule-
|
|
1252
|
+
const { cmdSchedule } = await import("./schedule-GpXGrnVP.js");
|
|
1253
1253
|
return cmdSchedule(rest);
|
|
1254
1254
|
}
|
|
1255
1255
|
case "remote": {
|
|
@@ -4269,7 +4269,7 @@ async function cmdNotify(rest) {
|
|
|
4269
4269
|
}
|
|
4270
4270
|
const ensure = async () => {
|
|
4271
4271
|
if (!argv["ensure-daemon"]) return;
|
|
4272
|
-
const { ensureDaemon } = await import("./notifyDaemon-
|
|
4272
|
+
const { ensureDaemon } = await import("./notifyDaemon-CuGUVybF.js");
|
|
4273
4273
|
await ensureDaemon().catch(() => null);
|
|
4274
4274
|
};
|
|
4275
4275
|
await heartbeatWatcher(parent, selfStartedAt);
|
|
@@ -4343,7 +4343,7 @@ async function cmdNotifyCursor(args) {
|
|
|
4343
4343
|
}
|
|
4344
4344
|
async function cmdNotifyd(rest) {
|
|
4345
4345
|
const sub = rest[0] ?? "status";
|
|
4346
|
-
const daemon = await import("./notifyDaemon-
|
|
4346
|
+
const daemon = await import("./notifyDaemon-CuGUVybF.js");
|
|
4347
4347
|
switch (sub) {
|
|
4348
4348
|
case "run": return daemon.runDaemon();
|
|
4349
4349
|
case "once": return daemon.runDaemon({ once: true });
|
|
@@ -4370,4 +4370,4 @@ async function cmdNotifyd(rest) {
|
|
|
4370
4370
|
|
|
4371
4371
|
//#endregion
|
|
4372
4372
|
export { daemonLockOwnerPath as $, renderRawLog as A, submitAndConfirm as B, matchKeyword as C, recentMessageEdges as D, readPtysize as E, restartHintLines as F, gcInboxes as G, writeKeysPaced as H, runSubcommand as I, listInboxParents as J, hostId as K, snapshotStatus as L, resolveOne as M, resolveReadWindow as N, recentReadEdges as O, resolveResumeArgs as P, daemonLockDir as Q, stdinActivityPath as R, listRecords as S, readNotes as T, writeToIpc as U, waitForLogQuiet as V, appendEvent as W, readInbox as X, liveWatchers as Y, shouldStealLock as Z, isPidAlive as _, cmdHelp as a, isUserTyping as b, deriveLiveState as c, extractMenu as d, notifyDir as et, extractNeedsInput as f, isExitRequest as g, isAgentStuck as h, backoffWhileTyping as i, renderRawLogLines as j, renderLogTailLines as k, deriveLiveStatus as l, finalizedLines as m, READ_PAGE_DEFAULT as n, controlCodeFromName as o, extractTaskCounts as p, isTransientLockMkdirError as q, TYPING_WINDOW_MS as r, cursorAbs as s, GRACEFUL_EXIT_COMMANDS as t, TYPING_BADGE as tt, extractBadges as u, isSlashCommand as v, menuSelectKeys as w, lastStdinAt as x, isSubcommand as y, stopTipForCli as z };
|
|
4373
|
-
//# sourceMappingURL=subcommands-
|
|
4373
|
+
//# sourceMappingURL=subcommands-BBJOPSTV.js.map
|
|
@@ -2,7 +2,7 @@ import "./logger-CDIsZ-Pp.js";
|
|
|
2
2
|
import "./globalPidIndex-CoNr7tS8.js";
|
|
3
3
|
import "./messageLog-CxrKJj77.js";
|
|
4
4
|
import "./configShared-aKTg-sa5.js";
|
|
5
|
-
import { A as renderRawLog, B as submitAndConfirm, C as matchKeyword, D as recentMessageEdges, E as readPtysize, F as restartHintLines, H as writeKeysPaced, I as runSubcommand, L as snapshotStatus, M as resolveOne, N as resolveReadWindow, O as recentReadEdges, P as resolveResumeArgs, R as stdinActivityPath, S as listRecords, T as readNotes, U as writeToIpc, V as waitForLogQuiet, _ as isPidAlive, a as cmdHelp, b as isUserTyping, c as deriveLiveState, d as extractMenu, f as extractNeedsInput, g as isExitRequest, h as isAgentStuck, i as backoffWhileTyping, j as renderRawLogLines, k as renderLogTailLines, l as deriveLiveStatus, m as finalizedLines, n as READ_PAGE_DEFAULT, o as controlCodeFromName, p as extractTaskCounts, r as TYPING_WINDOW_MS, s as cursorAbs, t as GRACEFUL_EXIT_COMMANDS, u as extractBadges, v as isSlashCommand, w as menuSelectKeys, x as lastStdinAt, y as isSubcommand, z as stopTipForCli } from "./subcommands-
|
|
5
|
+
import { A as renderRawLog, B as submitAndConfirm, C as matchKeyword, D as recentMessageEdges, E as readPtysize, F as restartHintLines, H as writeKeysPaced, I as runSubcommand, L as snapshotStatus, M as resolveOne, N as resolveReadWindow, O as recentReadEdges, P as resolveResumeArgs, R as stdinActivityPath, S as listRecords, T as readNotes, U as writeToIpc, V as waitForLogQuiet, _ as isPidAlive, a as cmdHelp, b as isUserTyping, c as deriveLiveState, d as extractMenu, f as extractNeedsInput, g as isExitRequest, h as isAgentStuck, i as backoffWhileTyping, j as renderRawLogLines, k as renderLogTailLines, l as deriveLiveStatus, m as finalizedLines, n as READ_PAGE_DEFAULT, o as controlCodeFromName, p as extractTaskCounts, r as TYPING_WINDOW_MS, s as cursorAbs, t as GRACEFUL_EXIT_COMMANDS, u as extractBadges, v as isSlashCommand, w as menuSelectKeys, x as lastStdinAt, y as isSubcommand, z as stopTipForCli } from "./subcommands-BBJOPSTV.js";
|
|
6
6
|
import "./e2e-jb0Hp43q.js";
|
|
7
7
|
import "./webrtcLink-B7REGtK2.js";
|
|
8
8
|
import "./remotes-Cim0dBU7.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as logger, t as addTransport } from "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import { r as getInstalledPackage } from "./versionChecker-
|
|
2
|
+
import { r as getInstalledPackage } from "./versionChecker-C9Q1qyKO.js";
|
|
3
3
|
import { t as agentYesHome } from "./agentYesHome-CtHb5b71.js";
|
|
4
4
|
import { i as shouldUseLock, r as releaseLock, t as acquireLock } from "./runningLock-CNMl13dC.js";
|
|
5
5
|
import { t as PidStore } from "./pidStore-BIvsBQ8X.js";
|
|
@@ -1901,4 +1901,4 @@ function sleep(ms) {
|
|
|
1901
1901
|
|
|
1902
1902
|
//#endregion
|
|
1903
1903
|
export { removeControlCharacters as a, AgentContext as i, agentYes as n, config as r, CLIS_CONFIG as t };
|
|
1904
|
-
//# sourceMappingURL=ts-
|
|
1904
|
+
//# sourceMappingURL=ts-CtJYkOVO.js.map
|
|
@@ -7,7 +7,7 @@ import { fileURLToPath } from "url";
|
|
|
7
7
|
|
|
8
8
|
//#region package.json
|
|
9
9
|
var name = "agent-yes";
|
|
10
|
-
var version = "1.
|
|
10
|
+
var version = "1.209.0";
|
|
11
11
|
|
|
12
12
|
//#endregion
|
|
13
13
|
//#region ts/versionChecker.ts
|
|
@@ -215,4 +215,4 @@ async function displayVersion() {
|
|
|
215
215
|
|
|
216
216
|
//#endregion
|
|
217
217
|
export { versionString as i, displayVersion as n, getInstalledPackage as r, checkAndAutoUpdate as t };
|
|
218
|
-
//# sourceMappingURL=versionChecker-
|
|
218
|
+
//# sourceMappingURL=versionChecker-C9Q1qyKO.js.map
|
|
@@ -2,7 +2,7 @@ import "./logger-CDIsZ-Pp.js";
|
|
|
2
2
|
import "./globalPidIndex-CoNr7tS8.js";
|
|
3
3
|
import "./messageLog-CxrKJj77.js";
|
|
4
4
|
import "./configShared-aKTg-sa5.js";
|
|
5
|
-
import { S as listRecords } from "./subcommands-
|
|
5
|
+
import { S as listRecords } from "./subcommands-BBJOPSTV.js";
|
|
6
6
|
import "./e2e-jb0Hp43q.js";
|
|
7
7
|
import "./webrtcLink-B7REGtK2.js";
|
|
8
8
|
import "./remotes-Cim0dBU7.js";
|
|
@@ -418,4 +418,4 @@ async function cmdWs(args) {
|
|
|
418
418
|
|
|
419
419
|
//#endregion
|
|
420
420
|
export { WS_JSON_SCHEMA, cmdWs, collectWorkspaces, isPathInside, loadProvision, workspaceStatus };
|
|
421
|
-
//# sourceMappingURL=ws-
|
|
421
|
+
//# sourceMappingURL=ws-8BZZijYd.js.map
|
package/lab/ui/index.html
CHANGED
|
@@ -695,14 +695,14 @@
|
|
|
695
695
|
align-items: center;
|
|
696
696
|
gap: 8px;
|
|
697
697
|
}
|
|
698
|
-
/*
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
698
|
+
/* The single consolidated fleet summary: "N/M agents · R rooms · 👤 P".
|
|
699
|
+
Rooms/peers segments appear only when there's more than one room / any
|
|
700
|
+
peer, so a solo fleet just reads "N/M agents". Turns yellow ("here") when
|
|
701
|
+
another peer is watching the agent you have open. */
|
|
702
|
+
.count {
|
|
703
703
|
cursor: default;
|
|
704
704
|
}
|
|
705
|
-
.
|
|
705
|
+
.count.here {
|
|
706
706
|
color: var(--peer);
|
|
707
707
|
}
|
|
708
708
|
.connbadge {
|
|
@@ -1851,20 +1851,11 @@
|
|
|
1851
1851
|
</div>
|
|
1852
1852
|
<div class="meta">
|
|
1853
1853
|
<span class="metaleft">
|
|
1854
|
-
<span id="count"></span>
|
|
1855
|
-
<span id="peers" class="peers" hidden></span>
|
|
1854
|
+
<span id="count" class="count"></span>
|
|
1856
1855
|
</span>
|
|
1857
1856
|
<span class="metaright">
|
|
1858
1857
|
<button id="foldbtn" class="viewbtn" title="fold subagent trees">⊞ subs</button>
|
|
1859
1858
|
<button id="sortbtn" class="viewbtn" title="cycle sort order">⇅ state</button>
|
|
1860
|
-
<button
|
|
1861
|
-
id="viewbtn"
|
|
1862
|
-
class="viewbtn"
|
|
1863
|
-
title="toggle compact list"
|
|
1864
|
-
aria-label="Toggle compact list view"
|
|
1865
|
-
>
|
|
1866
|
-
☰
|
|
1867
|
-
</button>
|
|
1868
1859
|
<button id="portsbtn" class="viewbtn" title="manage exposed localhost ports">
|
|
1869
1860
|
⇄ ports
|
|
1870
1861
|
</button>
|
|
@@ -2192,6 +2183,7 @@
|
|
|
2192
2183
|
// row keeps pulsing to. See advanceStdinFlashes/focusSummary (console-logic).
|
|
2193
2184
|
let focusByKey = new Map();
|
|
2194
2185
|
let peerTotal = 0;
|
|
2186
|
+
let shownAgentCount = 0; // agents matching the current filter (for the summary badge)
|
|
2195
2187
|
const stdinSeen = new Map();
|
|
2196
2188
|
const flashUntil = new Map();
|
|
2197
2189
|
const STDIN_FLASH_MS = 1200;
|
|
@@ -3361,29 +3353,34 @@
|
|
|
3361
3353
|
const sum = focusSummary(recs);
|
|
3362
3354
|
focusByKey = sum.byKey;
|
|
3363
3355
|
peerTotal = sum.total;
|
|
3364
|
-
|
|
3356
|
+
updateSummary();
|
|
3365
3357
|
renderList();
|
|
3366
3358
|
}
|
|
3367
|
-
//
|
|
3368
|
-
// agent
|
|
3369
|
-
//
|
|
3370
|
-
|
|
3371
|
-
|
|
3359
|
+
// The ONE consolidated fleet summary in the header, replacing the separate
|
|
3360
|
+
// agent-count and "N peers" badges: "<shown>/<total> agents" plus, only when
|
|
3361
|
+
// relevant, "· R rooms" (multi-room fleets) and "· 👤 P" (other humans here).
|
|
3362
|
+
// Yellow ("here") when a peer shares the agent you have open; the tooltip
|
|
3363
|
+
// breaks the peer count down by agent so you can see who's where. Called both
|
|
3364
|
+
// from renderList (agent list changed) and on presence updates (peers).
|
|
3365
|
+
function updateSummary() {
|
|
3366
|
+
const el = $("count");
|
|
3372
3367
|
if (!el) return;
|
|
3373
|
-
|
|
3374
|
-
|
|
3368
|
+
const rooms = new Set(entries.filter((e) => e._room).map((e) => e._room)).size;
|
|
3369
|
+
let s = `${shownAgentCount} / ${entries.length} agents`;
|
|
3370
|
+
if (rooms > 1) s += ` · ${rooms} rooms`;
|
|
3371
|
+
if (peerTotal > 0) s += ` · 👤 ${peerTotal}`;
|
|
3372
|
+
el.textContent = s;
|
|
3373
|
+
el.classList.toggle("here", !!(sel && focusByKey.get(sel)));
|
|
3374
|
+
if (peerTotal > 0) {
|
|
3375
|
+
const lines = [...focusByKey.entries()].map(([k, n]) => {
|
|
3376
|
+
const e = entries.find((x) => x._key === k);
|
|
3377
|
+
const name = e ? e.title || cliLabel(e) || ident(e) || `pid ${e.pid}` : k;
|
|
3378
|
+
return ` ${n} on ${name}`;
|
|
3379
|
+
});
|
|
3380
|
+
el.title = "peers watching agents in this fleet:\n" + lines.join("\n");
|
|
3381
|
+
} else {
|
|
3375
3382
|
el.removeAttribute("title");
|
|
3376
|
-
return;
|
|
3377
3383
|
}
|
|
3378
|
-
el.hidden = false;
|
|
3379
|
-
el.textContent = `👤 ${peerTotal} peer${peerTotal === 1 ? "" : "s"}`;
|
|
3380
|
-
el.classList.toggle("here", !!(sel && focusByKey.get(sel)));
|
|
3381
|
-
const lines = [...focusByKey.entries()].map(([k, n]) => {
|
|
3382
|
-
const e = entries.find((x) => x._key === k);
|
|
3383
|
-
const name = e ? e.title || cliLabel(e) || ident(e) || `pid ${e.pid}` : k;
|
|
3384
|
-
return ` ${n} on ${name}`;
|
|
3385
|
-
});
|
|
3386
|
-
el.title = "peers watching agents in this fleet:\n" + lines.join("\n");
|
|
3387
3384
|
}
|
|
3388
3385
|
// 3s heartbeat (< the host's 12s TTL): refresh our presence + read others',
|
|
3389
3386
|
// and follow the canonical grid size (resize+scale, never reflow) so all
|
|
@@ -4704,8 +4701,9 @@
|
|
|
4704
4701
|
s.streaming = false;
|
|
4705
4702
|
}
|
|
4706
4703
|
|
|
4707
|
-
// Compact list
|
|
4708
|
-
|
|
4704
|
+
// Compact list is now the ONLY list view (one line per agent: dot + cli +
|
|
4705
|
+
// title). The toggle button was removed — compact is always on.
|
|
4706
|
+
const compactList = true;
|
|
4709
4707
|
|
|
4710
4708
|
// Fold subagent trees: hide nested (sub)agent rows and roll each root's
|
|
4711
4709
|
// hidden descendants into a summary chip. Folded BY DEFAULT (only "0" opts
|
|
@@ -4894,11 +4892,10 @@
|
|
|
4894
4892
|
const rows = foldSubs
|
|
4895
4893
|
? fullRows.filter((r) => !(r.kind === "agent" && r.parentEntry))
|
|
4896
4894
|
: fullRows;
|
|
4897
|
-
|
|
4898
|
-
|
|
4895
|
+
shownAgentCount = agentRows.length;
|
|
4896
|
+
updateSummary(); // one consolidated "agents · rooms · peers" badge
|
|
4899
4897
|
$("foldbtn").textContent = foldSubs ? "⊞ subs" : "⊟ subs";
|
|
4900
4898
|
$("foldbtn").classList.toggle("on", !foldSubs);
|
|
4901
|
-
$("viewbtn").classList.toggle("on", compactList);
|
|
4902
4899
|
// Show the active sort mode on the button so it's self-documenting; the
|
|
4903
4900
|
// default ("state") is also highlighted to hint it's the implicit order.
|
|
4904
4901
|
$("sortbtn").textContent = `⇅ ${sortMode}`;
|
|
@@ -5035,25 +5032,22 @@
|
|
|
5035
5032
|
// the new mtime, so a silent `ay send` still trips the flash within ~1s.
|
|
5036
5033
|
const until = Date.now() + STDIN_FLASH_MS;
|
|
5037
5034
|
for (const k of advanceStdinFlashes(entries, stdinSeen)) flashUntil.set(k, until);
|
|
5038
|
-
//
|
|
5039
|
-
//
|
|
5040
|
-
//
|
|
5041
|
-
//
|
|
5035
|
+
// Connection-status badge ONLY (dot + state). The agent/room/peer COUNTS
|
|
5036
|
+
// live in one place now — the #count summary on the left — so this badge no
|
|
5037
|
+
// longer repeats them; it just shows liveness and stays the rooms-manager
|
|
5038
|
+
// click target (see its title). Red only when nothing is reachable.
|
|
5042
5039
|
const roomSrcs = srcs.filter((s) => s.id !== LOCAL);
|
|
5043
|
-
const liveRooms = new Set(roomSrcs.filter((s) => s.live).map((s) => s.room || s.id)).size;
|
|
5044
5040
|
const anyLive = srcs.some((s) => s.live);
|
|
5045
5041
|
const connecting =
|
|
5046
5042
|
roomSrcs.some((s) => !s.tried) || [...chRooms.values()].some((r) => !r.tried);
|
|
5047
5043
|
const roomCount = roomSrcs.length || chRooms.size;
|
|
5048
|
-
const n = entries.length;
|
|
5049
5044
|
if (!srcs.length && !chRooms.size) {
|
|
5050
5045
|
setConn("● no fleet", "var(--muted)");
|
|
5051
5046
|
} else if (!anyLive) {
|
|
5052
5047
|
if (connecting) setConn("● connecting…", "var(--amber)");
|
|
5053
5048
|
else setConn(roomCount ? "● rooms offline" : "● ay serve down", "var(--red)");
|
|
5054
5049
|
} else {
|
|
5055
|
-
|
|
5056
|
-
setConn(`● ${n} agent${n === 1 ? "" : "s"}${roomBit}`, "var(--green)");
|
|
5050
|
+
setConn("● live", "var(--green)");
|
|
5057
5051
|
}
|
|
5058
5052
|
renderRoomsIfOpen();
|
|
5059
5053
|
renderList();
|
|
@@ -5456,11 +5450,6 @@
|
|
|
5456
5450
|
} catch {}
|
|
5457
5451
|
renderList();
|
|
5458
5452
|
});
|
|
5459
|
-
$("viewbtn").addEventListener("click", () => {
|
|
5460
|
-
compactList = !compactList;
|
|
5461
|
-
localStorage.setItem("ay.compactList", compactList ? "1" : "0");
|
|
5462
|
-
renderList();
|
|
5463
|
-
});
|
|
5464
5453
|
// Fold / unfold every subagent tree (global toggle, persisted per device).
|
|
5465
5454
|
$("foldbtn").addEventListener("click", () => {
|
|
5466
5455
|
foldSubs = !foldSubs;
|
package/package.json
CHANGED
package/ts/serve.ts
CHANGED
|
@@ -1885,7 +1885,11 @@ export async function cmdServe(rest: string[]): Promise<number> {
|
|
|
1885
1885
|
const negoTimers = new Map<number, ReturnType<typeof setTimeout>>();
|
|
1886
1886
|
const NEGO_DEBOUNCE_MS = 350;
|
|
1887
1887
|
const winsizePathFor = (pid: number) =>
|
|
1888
|
-
path.join(
|
|
1888
|
+
path.join(
|
|
1889
|
+
process.env.AGENT_YES_HOME ?? path.join(homedir(), ".agent-yes"),
|
|
1890
|
+
"winsize",
|
|
1891
|
+
String(pid),
|
|
1892
|
+
);
|
|
1889
1893
|
const liveCapsFor = (pid: number): SizeCap[] => {
|
|
1890
1894
|
const now = Date.now();
|
|
1891
1895
|
const caps: SizeCap[] = [];
|
package/ts/sizeNego.spec.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
NEGO_FLOOR_COLS,
|
|
4
|
-
NEGO_FLOOR_ROWS,
|
|
5
|
-
negotiateSize,
|
|
6
|
-
sanitizeCap,
|
|
7
|
-
} from "./sizeNego.ts";
|
|
2
|
+
import { NEGO_FLOOR_COLS, NEGO_FLOOR_ROWS, negotiateSize, sanitizeCap } from "./sizeNego.ts";
|
|
8
3
|
|
|
9
4
|
describe("sanitizeCap", () => {
|
|
10
5
|
it("accepts a normal viewer capacity", () => {
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import "./ts-DZWZvbLM.js";
|
|
2
|
-
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import "./versionChecker-C2CV9VOX.js";
|
|
4
|
-
import "./pidStore-BIvsBQ8X.js";
|
|
5
|
-
import "./globalPidIndex-CoNr7tS8.js";
|
|
6
|
-
import "./messageLog-CxrKJj77.js";
|
|
7
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-B1CDJwYn.js";
|
|
8
|
-
|
|
9
|
-
export { SUPPORTED_CLIS };
|