agent-yes 1.210.0 → 1.211.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.
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-Bfh2b5Gk.js";
1
+ import { t as CLIS_CONFIG } from "./ts-4sGpCdsc.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-BaK7l7yG.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-CplqT0aU.js.map
@@ -0,0 +1,9 @@
1
+ import "./ts-4sGpCdsc.js";
2
+ import "./logger-CDIsZ-Pp.js";
3
+ import "./versionChecker-BPwi6kX7.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-CplqT0aU.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-BXDBtecL.js";
5
+ import { M as resolveOne } from "./subcommands-SJDbTON2.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-C20O0OqP.js.map
232
+ //# sourceMappingURL=agentShare--cAI6lgD.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-DxxrRIBx.js";
5
- import { n as getRustBinary } from "./rustBinary-Ditqajgk.js";
4
+ import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-BPwi6kX7.js";
5
+ import { n as getRustBinary } from "./rustBinary-Bbc-6PDU.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-CkX5_lRi.js");
288
+ const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-yLraWQl1.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-eammPigM.js");
330
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-TJHFtwtC.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-Bfh2b5Gk.js";
1
+ import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-4sGpCdsc.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-DxxrRIBx.js";
3
+ import "./versionChecker-BPwi6kX7.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-BXDBtecL.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-SJDbTON2.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-B7cyXKZz.js.map
592
+ //# sourceMappingURL=notifyDaemon-CF5ITpDP.js.map
@@ -1,4 +1,4 @@
1
- import { r as getInstalledPackage } from "./versionChecker-DxxrRIBx.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-BPwi6kX7.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-Ditqajgk.js.map
228
+ //# sourceMappingURL=rustBinary-Bbc-6PDU.js.map
@@ -1,10 +1,10 @@
1
- import "./ts-Bfh2b5Gk.js";
1
+ import "./ts-4sGpCdsc.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-DxxrRIBx.js";
3
+ import "./versionChecker-BPwi6kX7.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-BaK7l7yG.js";
7
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CplqT0aU.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-BcisO8ht.js.map
154
+ //# sourceMappingURL=schedule-CUOrAE1b.js.map
@@ -1,15 +1,15 @@
1
- import "./ts-Bfh2b5Gk.js";
1
+ import "./ts-4sGpCdsc.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import { r as getInstalledPackage } from "./versionChecker-DxxrRIBx.js";
4
- import { t as findSpawnHiddenLauncher } from "./rustBinary-Ditqajgk.js";
3
+ import { r as getInstalledPackage } from "./versionChecker-BPwi6kX7.js";
4
+ import { t as findSpawnHiddenLauncher } from "./rustBinary-Bbc-6PDU.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-BaK7l7yG.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-BXDBtecL.js";
11
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CplqT0aU.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-SJDbTON2.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-DKDhlyWa.js");
1871
+ const ws = await import("./ws-qAVJL0e9.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-DKDhlyWa.js");
1891
+ const ws = await import("./ws-qAVJL0e9.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-C20O0OqP.js");
2452
+ const { createScopedShare } = await import("./agentShare--cAI6lgD.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-C20O0OqP.js");
2467
+ const { listShares } = await import("./agentShare--cAI6lgD.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-C20O0OqP.js");
2472
+ const { revokeShare } = await import("./agentShare--cAI6lgD.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-C20O0OqP.js").then((m) => m.revokeAllShares()).catch(() => {});
2658
+ import("./agentShare--cAI6lgD.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-CkvyEAjS.js.map
2671
+ //# sourceMappingURL=serve-BbtzQr95.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-CkvyEAjS.js");
35
+ const { cmdServe } = await import("./serve-BbtzQr95.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-JGyTMafw.js.map
45
+ //# sourceMappingURL=setup-B30Qs2Ej.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-CkvyEAjS.js");
1240
+ const { cmdServe } = await import("./serve-BbtzQr95.js");
1241
1241
  return cmdServe(rest);
1242
1242
  }
1243
1243
  case "setup": {
1244
- const { cmdSetup } = await import("./setup-JGyTMafw.js");
1244
+ const { cmdSetup } = await import("./setup-B30Qs2Ej.js");
1245
1245
  return cmdSetup(rest);
1246
1246
  }
1247
1247
  case "ws": {
1248
- const { cmdWs } = await import("./ws-DKDhlyWa.js");
1248
+ const { cmdWs } = await import("./ws-qAVJL0e9.js");
1249
1249
  return cmdWs(rest);
1250
1250
  }
1251
1251
  case "schedule": {
1252
- const { cmdSchedule } = await import("./schedule-BcisO8ht.js");
1252
+ const { cmdSchedule } = await import("./schedule-CUOrAE1b.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-B7cyXKZz.js");
4272
+ const { ensureDaemon } = await import("./notifyDaemon-CF5ITpDP.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-B7cyXKZz.js");
4346
+ const daemon = await import("./notifyDaemon-CF5ITpDP.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-BXDBtecL.js.map
4373
+ //# sourceMappingURL=subcommands-SJDbTON2.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-BXDBtecL.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-SJDbTON2.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-DxxrRIBx.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-BPwi6kX7.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-Bfh2b5Gk.js.map
1904
+ //# sourceMappingURL=ts-4sGpCdsc.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.210.0";
10
+ var version = "1.211.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-DxxrRIBx.js.map
218
+ //# sourceMappingURL=versionChecker-BPwi6kX7.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-BXDBtecL.js";
5
+ import { S as listRecords } from "./subcommands-SJDbTON2.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-DKDhlyWa.js.map
421
+ //# sourceMappingURL=ws-qAVJL0e9.js.map
@@ -701,23 +701,30 @@ export function fitTransform(gridW, gridH, paneW, paneH) {
701
701
  return s > 0.985 && s < 1.04 ? "none" : "scale(" + s.toFixed(4) + ")";
702
702
  }
703
703
 
704
- // Centered variant: same scale selection as fitTransform, plus a translate that
705
- // centers the scaled grid in the pane (fit-width → vertically centered,
706
- // fit-height horizontally centered). transform-origin stays top-left, so the
707
- // translate is in pane px and consumers mapping grid→screen coords (peer
708
- // overlays) can read the offset back off this same object. "none" (the crisp
709
- // driver path) never gets a translate grid pane, nothing to center.
710
- export function fitTransformCentered(gridW, gridH, paneW, paneH) {
711
- const t = fitTransform(gridW, gridH, paneW, paneH);
712
- if (t === "none") return { transform: "none", scale: 1, dx: 0, dy: 0 };
704
+ // Fit-by-FONT: the render font size that makes a gridW×gridH-px grid fill the
705
+ // pane. CSS transform:scale() breaks xterm's mouse→cell mapping (events arrive
706
+ // in visual px but xterm divides by the UNSCALED cell metrics, so drag
707
+ // selection lands 1/s off) so the shared-canvas letterbox scales the font
708
+ // instead: layout, hit-testing, selection, and peer-overlay math all stay
709
+ // native, and glyphs render crisp at their real size rather than as shrunken
710
+ // canvas bitmaps. Returns the new font (fractional px is fine for xterm) or
711
+ // null when the current font already fits snugly — same 0.985–1.04 dead band
712
+ // as fitTransform, so the crisp driver path never churns. Callers re-measure
713
+ // after applying (cell metrics round per-font) and iterate to convergence.
714
+ export function fitFontSize(gridW, gridH, paneW, paneH, currentFont, min = 6, max = 64) {
715
+ if (!gridW || !gridH || paneW <= 0 || paneH <= 0 || !(currentFont > 0)) return null;
713
716
  const s = Math.min(paneW / gridW, paneH / gridH);
714
- const dx = Math.max(0, (paneW - gridW * s) / 2);
715
- const dy = Math.max(0, (paneH - gridH * s) / 2);
717
+ if (s > 0.985 && s < 1.04) return null;
718
+ return Math.min(max, Math.max(min, currentFont * s));
719
+ }
720
+
721
+ // Residual centering after a font fit: translate-only, in whole px. Unlike a
722
+ // scale, a translate moves the element's rect with it, so xterm's
723
+ // event-coordinate math is unaffected (coords are taken relative to the rect).
724
+ export function centerOffset(gridW, gridH, paneW, paneH) {
716
725
  return {
717
- transform: `translate(${dx.toFixed(1)}px, ${dy.toFixed(1)}px) ` + t,
718
- scale: s,
719
- dx,
720
- dy,
726
+ dx: Math.max(0, Math.round((paneW - gridW) / 2)),
727
+ dy: Math.max(0, Math.round((paneH - gridH) / 2)),
721
728
  };
722
729
  }
723
730
 
package/lab/ui/index.html CHANGED
@@ -1801,6 +1801,12 @@
1801
1801
  background: var(--line);
1802
1802
  }
1803
1803
  </style>
1804
+ <!-- Fetch the critical console modules while the browser is still parsing the
1805
+ document. Without these hints they are discovered near the end of <body>,
1806
+ adding a serial network step before the first room can connect. -->
1807
+ <link rel="modulepreload" href="./console-logic.js" />
1808
+ <link rel="modulepreload" href="./rtc.js" />
1809
+ <link rel="modulepreload" href="./e2e.js" />
1804
1810
  <link
1805
1811
  rel="stylesheet"
1806
1812
  href="https://cdn.jsdelivr.net/npm/@xterm/xterm@5.5.0/css/xterm.min.css"
@@ -1831,10 +1837,10 @@
1831
1837
  </div>
1832
1838
  <div class="install" title="click to copy">
1833
1839
  install:
1834
- <code class="copy">curl -fsSL https://agent-yes.com/setup.sh | sh</code>
1840
+ <code class="copy" id="setup-sh">curl -fsSL https://agent-yes.com/setup.sh | sh</code>
1835
1841
  <span class="winhint"
1836
1842
  >·&nbsp;Windows:
1837
- <code class="copy"
1843
+ <code class="copy" id="setup-ps"
1838
1844
  >powershell -c "irm https://agent-yes.com/setup.ps1 | iex"</code
1839
1845
  ></span
1840
1846
  >
@@ -2164,7 +2170,8 @@
2164
2170
  selFromBottom,
2165
2171
  parseSel,
2166
2172
  selSegments,
2167
- fitTransformCentered,
2173
+ fitFontSize,
2174
+ centerOffset,
2168
2175
  docTitle,
2169
2176
  omniScore,
2170
2177
  } from "./console-logic.js";
@@ -2221,6 +2228,10 @@
2221
2228
  localStorage.setItem("ay.fontSize", String(termFontSize));
2222
2229
  } catch {}
2223
2230
  if (term) {
2231
+ // The user changed their DESIRED size — drop any fit-derived render
2232
+ // font and restart the fit from the new desire (applyCanvasScale
2233
+ // converges it; for the driver / min viewer it lands exactly here).
2234
+ renderFontSize = 0;
2224
2235
  term.options.fontSize = termFontSize;
2225
2236
  // Negotiating host: the grid is canonical (host-owned) — a font change
2226
2237
  // here only alters our glyph px, so re-letterbox and report the new
@@ -2280,6 +2291,13 @@
2280
2291
  });
2281
2292
 
2282
2293
  const $ = (id) => document.getElementById(id);
2294
+ const BETA_ORIGINS = new Set(["beta.agent-yes.pages.dev", "beta.agent-yes.com"]);
2295
+ const installOrigin = location.origin;
2296
+ const installPackage = BETA_ORIGINS.has(location.hostname) ? "agent-yes@beta" : "agent-yes";
2297
+ $("setup-sh").textContent = `curl -fsSL ${installOrigin}/setup.sh | sh`;
2298
+ $("setup-sh").title = `installs ${installPackage}`;
2299
+ $("setup-ps").textContent = `powershell -c "irm ${installOrigin}/setup.ps1 | iex"`;
2300
+ $("setup-ps").title = `installs ${installPackage}`;
2283
2301
  // Escape for HTML — including BOTH quote styles, because esc() is
2284
2302
  // interpolated into double-quoted attribute values (title="${esc(...)}",
2285
2303
  // data-key="${esc(...)}", …), not just element text. A remote host controls
@@ -3293,7 +3311,19 @@
3293
3311
  try {
3294
3312
  if (!isReadonlyEnt(cur.e) && fit) {
3295
3313
  const d = fit.proposeDimensions();
3296
- if (d && d.cols > 0 && d.rows > 0) cap = { cols: d.cols, rows: d.rows };
3314
+ if (d && d.cols > 0 && d.rows > 0) {
3315
+ // proposeDimensions measures at the RENDER font, which may be the
3316
+ // fit-derived letterbox size — but capacity is defined at the
3317
+ // user's DESIRED font (termFontSize). Rescale by the font ratio
3318
+ // (cell px ∝ font px), else a letterboxed viewer's grown render
3319
+ // font would shrink its reported cap and feed back into the
3320
+ // negotiation as a death spiral.
3321
+ const k = (renderFontSize || termFontSize) / termFontSize;
3322
+ cap = {
3323
+ cols: Math.max(1, Math.floor(d.cols * k)),
3324
+ rows: Math.max(1, Math.floor(d.rows * k)),
3325
+ };
3326
+ }
3297
3327
  }
3298
3328
  } catch {}
3299
3329
  cur.tx
@@ -3605,18 +3635,29 @@
3605
3635
  ov.innerHTML = html.join("");
3606
3636
  }
3607
3637
 
3608
- // ---- shared canvas: scale (don't reflow) the grid to fit our pane --------
3638
+ // ---- shared canvas: fit the grid to our pane BY FONT SIZE ---------------
3609
3639
  // When we render at the canonical (driver/agent) grid size and it doesn't
3610
- // match our pane, CSS-scale the whole .xterm to fit so every viewer shows
3611
- // identical content and selections/overlays line up. For the driver / single
3612
- // viewer the grid already fits the pane (scale 1) no transform, so the
3613
- // common path is byte-for-byte unchanged. Best-effort + guarded.
3614
- function applyCanvasScale() {
3640
+ // match our pane, adjust the render FONT so the grid fills the pane
3641
+ // never a CSS transform:scale(). A scale breaks xterm's mouse→cell
3642
+ // mapping (events arrive in visual px, xterm divides by the unscaled cell
3643
+ // metrics drag selection lands 1/s off); a font change keeps layout,
3644
+ // hit-testing, and the peer overlay all native, and glyphs render crisp
3645
+ // at their real size. The residual letterbox (cell rounding) is centered
3646
+ // with a translate-only transform, which moves the rect and therefore
3647
+ // does NOT disturb the coordinate math.
3648
+ //
3649
+ // renderFontSize is the fit-derived size actually rendered; termFontSize
3650
+ // stays the USER's desired size — the pinch/menu zoom control and the
3651
+ // capacity (presence cap) basis. For the driver / min viewer the grid
3652
+ // matches the pane at the desired font (dead band) → renderFontSize
3653
+ // converges back to termFontSize and no transform is applied, so the
3654
+ // common path stays byte-for-byte crisp. Best-effort + guarded.
3655
+ let renderFontSize = 0; // 0 = following termFontSize (no fit override)
3656
+ function applyCanvasScale(depth = 0) {
3615
3657
  try {
3616
3658
  const logEl = $("log");
3617
3659
  const xt = logEl && logEl.querySelector(".xterm");
3618
- if (!xt) return;
3619
- xt.style.transform = "none"; // measure the natural (unscaled) grid
3660
+ if (!xt || !term) return;
3620
3661
  const screen = xt.querySelector(".xterm-screen");
3621
3662
  if (!screen) return;
3622
3663
  const gw = screen.offsetWidth,
@@ -3625,12 +3666,18 @@
3625
3666
  const cs = getComputedStyle(logEl);
3626
3667
  const pw = logEl.clientWidth - parseFloat(cs.paddingLeft) - parseFloat(cs.paddingRight);
3627
3668
  const ph = logEl.clientHeight - parseFloat(cs.paddingTop) - parseFloat(cs.paddingBottom);
3628
- // fitTransformCentered (console-logic.js, unit-tested) decides
3629
- // none-vs-scale and centers the letterboxed grid in the pane (fit
3630
- // width vertically centered, fit height horizontally). The peer
3631
- // overlay reads the transformed screen rect back via
3632
- // getBoundingClientRect, so the translate needs no extra bookkeeping.
3633
- xt.style.transform = fitTransformCentered(gw, gh, pw, ph).transform;
3669
+ const cur = renderFontSize || termFontSize;
3670
+ const nf = fitFontSize(gw, gh, pw, ph, cur);
3671
+ // Cell metrics round per font size, so one analytic step may land a
3672
+ // hair off re-measure and iterate (bounded) until inside the band.
3673
+ if (nf != null && Math.abs(nf - cur) >= 0.25 && depth < 3) {
3674
+ renderFontSize = nf;
3675
+ term.options.fontSize = nf;
3676
+ requestAnimationFrame(() => applyCanvasScale(depth + 1));
3677
+ return;
3678
+ }
3679
+ const { dx, dy } = centerOffset(gw, gh, pw, ph);
3680
+ xt.style.transform = dx || dy ? `translate(${dx}px, ${dy}px)` : "none";
3634
3681
  } catch {}
3635
3682
  }
3636
3683
  // Pane geometry changed (window resize, splitter drag, soft keyboard, tab
@@ -5153,6 +5200,7 @@
5153
5200
  }
5154
5201
  const logEl = $("log");
5155
5202
  logEl.innerHTML = "";
5203
+ renderFontSize = 0; // fresh terminal starts at the desired font (no fit override)
5156
5204
  term = new Terminal({
5157
5205
  convertEol: false,
5158
5206
  disableStdin: false,
@@ -6507,10 +6555,14 @@
6507
6555
  loadList();
6508
6556
  }
6509
6557
 
6510
- // Connect to every saved room at once (called on boot).
6511
- function connectAllRooms() {
6558
+ // Connect to every saved room at once (called on boot). A room already
6559
+ // started from the URL/hash can be skipped so it gets a brief uncontended
6560
+ // head start before the rest of the fleet performs crypto + ICE setup.
6561
+ function connectAllRooms(exceptRoom = null) {
6512
6562
  const r = loadRooms();
6513
- for (const name of Object.keys(r)) addRoomSource(name, r[name].token, r[name].host);
6563
+ for (const name of Object.keys(r)) {
6564
+ if (name !== exceptRoom) addRoomSource(name, r[name].token, r[name].host);
6565
+ }
6514
6566
  }
6515
6567
 
6516
6568
  // Back-compat alias: a freshly pasted/linked room is added like any other.
@@ -7041,8 +7093,15 @@
7041
7093
  // saved room in the BACKGROUND so a dead/slow room never blanks the page,
7042
7094
  // and they all stream their agents into one list at once.
7043
7095
  startPolling();
7044
- if (pending) connectRoom(pending.room, pending.token, pending.host);
7045
- connectAllRooms();
7096
+ if (pending) {
7097
+ connectRoom(pending.room, pending.token, pending.host);
7098
+ // On a returning console, several simultaneous WebRTC handshakes compete
7099
+ // with the selected room for CPU and network setup. Let that room start
7100
+ // first, then fan out quickly enough that the fleet still feels instant.
7101
+ setTimeout(() => connectAllRooms(pending.room), 150);
7102
+ } else {
7103
+ connectAllRooms();
7104
+ }
7046
7105
  }
7047
7106
 
7048
7107
  // Deep-link navigation in an ALREADY-OPEN console. boot() only processes the
@@ -219,10 +219,10 @@
219
219
  </div>
220
220
  <div class="install">
221
221
  <pre><code># macOS / Linux
222
- curl -fsSL https://agent-yes.com/setup.sh | sh
222
+ <span id="setup-sh">curl -fsSL https://agent-yes.com/setup.sh | sh</span>
223
223
 
224
224
  # Windows (PowerShell)
225
- powershell -c "irm https://agent-yes.com/setup.ps1 | iex"</code></pre>
225
+ <span id="setup-ps">powershell -c "irm https://agent-yes.com/setup.ps1 | iex"</span></code></pre>
226
226
  <div class="clis">
227
227
  Wrappers: <b>claude-yes</b> · <b>codex-yes</b> · <b>gemini-yes</b> ·
228
228
  <b>copilot-yes</b> · <b>cursor-yes</b> · <b>qwen-yes</b> · <b>grok-yes</b> — or just
@@ -278,6 +278,14 @@ powershell -c "irm https://agent-yes.com/setup.ps1 | iex"</code></pre>
278
278
  // straight on it. `autofocus` on <a> isn't honored everywhere, so back it
279
279
  // up here — but skip on touch devices where focusing scroll-jumps the page.
280
280
  (function () {
281
+ var beta = /^(beta\.agent-yes\.pages\.dev|beta\.agent-yes\.com)$/.test(location.hostname);
282
+ var pkg = beta ? "agent-yes@beta" : "agent-yes";
283
+ document.getElementById("setup-sh").textContent =
284
+ "curl -fsSL " + location.origin + "/setup.sh | sh";
285
+ document.getElementById("setup-sh").title = "installs " + pkg;
286
+ document.getElementById("setup-ps").textContent =
287
+ 'powershell -c "irm ' + location.origin + '/setup.ps1 | iex"';
288
+ document.getElementById("setup-ps").title = "installs " + pkg;
281
289
  if (matchMedia("(hover: none)").matches) return;
282
290
  var cta = document.querySelector(".hero .cta a.btn");
283
291
  if (cta) cta.focus({ preventScroll: true });
package/lab/ui/sw.js CHANGED
@@ -123,6 +123,7 @@ const SHELL = [
123
123
  "./index.html",
124
124
  "./room-client.js",
125
125
  "./console-logic.js",
126
+ "./rtc.js",
126
127
  "./e2e.js",
127
128
  "./qrcode.js",
128
129
  "./manifest.webmanifest",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-yes",
3
- "version": "1.210.0",
3
+ "version": "1.211.0",
4
4
  "description": "A wrapper tool that automates interactions with various AI CLI tools by automatically handling common prompts and responses.",
5
5
  "keywords": [
6
6
  "ai",
@@ -1,9 +0,0 @@
1
- import "./ts-Bfh2b5Gk.js";
2
- import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-DxxrRIBx.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-BaK7l7yG.js";
8
-
9
- export { SUPPORTED_CLIS };