agent-yes 1.211.4 → 1.211.5-beta.529.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ import "./ts-BzyOLVV_.js";
2
+ import "./logger-CDIsZ-Pp.js";
3
+ import "./versionChecker-DSwM0NGZ.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-DhxUwJPf.js";
8
+
9
+ export { SUPPORTED_CLIS };
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-Civl956u.js";
1
+ import { t as CLIS_CONFIG } from "./ts-BzyOLVV_.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-CBJSgQdN.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-DhxUwJPf.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 { M as resolveOne } from "./subcommands-BRFPWyBG.js";
5
+ import { M as resolveOne } from "./subcommands-CM3bDveb.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-BA5f2UFD.js.map
232
+ //# sourceMappingURL=agentShare-0gVPIrR1.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-D8f_81GL.js";
5
- import { n as getRustBinary } from "./rustBinary-DDnRX0Gi.js";
4
+ import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-DSwM0NGZ.js";
5
+ import { n as getRustBinary } from "./rustBinary-C4ZcN7eC.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-IyabNq1f.js");
288
+ const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-BoCAPbno.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-BxcTiJ61.js");
330
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-CFbgq7Xl.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-Civl956u.js";
1
+ import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-BzyOLVV_.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-D8f_81GL.js";
3
+ import "./versionChecker-DSwM0NGZ.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-BRFPWyBG.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-CM3bDveb.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-C81MWvD1.js.map
592
+ //# sourceMappingURL=notifyDaemon-MNS8NTtj.js.map
@@ -1,4 +1,4 @@
1
- import { r as getInstalledPackage } from "./versionChecker-D8f_81GL.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-DSwM0NGZ.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-DDnRX0Gi.js.map
228
+ //# sourceMappingURL=rustBinary-C4ZcN7eC.js.map
@@ -1,10 +1,10 @@
1
- import "./ts-Civl956u.js";
1
+ import "./ts-BzyOLVV_.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-D8f_81GL.js";
3
+ import "./versionChecker-DSwM0NGZ.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-CBJSgQdN.js";
7
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DhxUwJPf.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-CelELc3T.js.map
154
+ //# sourceMappingURL=schedule-Ds8FPtP2.js.map
@@ -1,15 +1,15 @@
1
- import "./ts-Civl956u.js";
1
+ import "./ts-BzyOLVV_.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import { r as getInstalledPackage } from "./versionChecker-D8f_81GL.js";
4
- import { t as findSpawnHiddenLauncher } from "./rustBinary-DDnRX0Gi.js";
3
+ import { r as getInstalledPackage } from "./versionChecker-DSwM0NGZ.js";
4
+ import { t as findSpawnHiddenLauncher } from "./rustBinary-C4ZcN7eC.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-CBJSgQdN.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-BRFPWyBG.js";
11
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DhxUwJPf.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-CM3bDveb.js";
13
13
  import "./e2e-jb0Hp43q.js";
14
14
  import "./webrtcLink-B7REGtK2.js";
15
15
  import "./remotes-Cim0dBU7.js";
@@ -1893,7 +1893,7 @@ Options:
1893
1893
  }
1894
1894
  });
1895
1895
  if (req.method === "GET" && p === "/api/ws") {
1896
- const ws = await import("./ws-DtmIaHaL.js");
1896
+ const ws = await import("./ws-CiXyQa_v.js");
1897
1897
  try {
1898
1898
  await ws.loadProvision();
1899
1899
  } catch (e) {
@@ -1913,7 +1913,7 @@ Options:
1913
1913
  if (req.method === "GET" && p === "/api/ws/status") {
1914
1914
  const dirRaw = url.searchParams.get("path");
1915
1915
  if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
1916
- const ws = await import("./ws-DtmIaHaL.js");
1916
+ const ws = await import("./ws-CiXyQa_v.js");
1917
1917
  let prov;
1918
1918
  try {
1919
1919
  prov = await ws.loadProvision();
@@ -2474,7 +2474,7 @@ Options:
2474
2474
  const perm = body.perm ?? "r";
2475
2475
  if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
2476
2476
  try {
2477
- const { createScopedShare } = await import("./agentShare-BA5f2UFD.js");
2477
+ const { createScopedShare } = await import("./agentShare-0gVPIrR1.js");
2478
2478
  const share = await createScopedShare({
2479
2479
  agent: body.agent,
2480
2480
  perm,
@@ -2489,12 +2489,12 @@ Options:
2489
2489
  }
2490
2490
  }
2491
2491
  if (req.method === "GET" && p === "/api/shares") {
2492
- const { listShares } = await import("./agentShare-BA5f2UFD.js");
2492
+ const { listShares } = await import("./agentShare-0gVPIrR1.js");
2493
2493
  return Response.json(listShares());
2494
2494
  }
2495
2495
  const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
2496
2496
  if (req.method === "DELETE" && revokeM) {
2497
- const { revokeShare } = await import("./agentShare-BA5f2UFD.js");
2497
+ const { revokeShare } = await import("./agentShare-0gVPIrR1.js");
2498
2498
  const ok = revokeShare(decodeURIComponent(revokeM[1]));
2499
2499
  return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
2500
2500
  }
@@ -2680,7 +2680,7 @@ Options:
2680
2680
  const shutdown = (resolve) => {
2681
2681
  if (heartbeat) clearInterval(heartbeat);
2682
2682
  closeShare?.();
2683
- import("./agentShare-BA5f2UFD.js").then((m) => m.revokeAllShares()).catch(() => {});
2683
+ import("./agentShare-0gVPIrR1.js").then((m) => m.revokeAllShares()).catch(() => {});
2684
2684
  server?.stop();
2685
2685
  Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
2686
2686
  };
@@ -2693,4 +2693,4 @@ Options:
2693
2693
 
2694
2694
  //#endregion
2695
2695
  export { cmdServe };
2696
- //# sourceMappingURL=serve-CTOTQkWm.js.map
2696
+ //# sourceMappingURL=serve-DbEHBfga.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-CTOTQkWm.js");
35
+ const { cmdServe } = await import("./serve-DbEHBfga.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-DfkP6R_C.js.map
45
+ //# sourceMappingURL=setup-CFVx7meC.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-BRFPWyBG.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-CM3bDveb.js";
6
6
  import "./e2e-jb0Hp43q.js";
7
7
  import "./webrtcLink-B7REGtK2.js";
8
8
  import "./remotes-Cim0dBU7.js";
@@ -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-CTOTQkWm.js");
1240
+ const { cmdServe } = await import("./serve-DbEHBfga.js");
1241
1241
  return cmdServe(rest);
1242
1242
  }
1243
1243
  case "setup": {
1244
- const { cmdSetup } = await import("./setup-DfkP6R_C.js");
1244
+ const { cmdSetup } = await import("./setup-CFVx7meC.js");
1245
1245
  return cmdSetup(rest);
1246
1246
  }
1247
1247
  case "ws": {
1248
- const { cmdWs } = await import("./ws-DtmIaHaL.js");
1248
+ const { cmdWs } = await import("./ws-CiXyQa_v.js");
1249
1249
  return cmdWs(rest);
1250
1250
  }
1251
1251
  case "schedule": {
1252
- const { cmdSchedule } = await import("./schedule-CelELc3T.js");
1252
+ const { cmdSchedule } = await import("./schedule-Ds8FPtP2.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-C81MWvD1.js");
4272
+ const { ensureDaemon } = await import("./notifyDaemon-MNS8NTtj.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-C81MWvD1.js");
4346
+ const daemon = await import("./notifyDaemon-MNS8NTtj.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-BRFPWyBG.js.map
4373
+ //# sourceMappingURL=subcommands-CM3bDveb.js.map
@@ -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-D8f_81GL.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-DSwM0NGZ.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-Civl956u.js.map
1904
+ //# sourceMappingURL=ts-BzyOLVV_.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.211.4";
10
+ var version = "1.211.5-beta.529.1";
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-D8f_81GL.js.map
218
+ //# sourceMappingURL=versionChecker-DSwM0NGZ.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-BRFPWyBG.js";
5
+ import { S as listRecords } from "./subcommands-CM3bDveb.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-DtmIaHaL.js.map
421
+ //# sourceMappingURL=ws-CiXyQa_v.js.map
package/lab/ui/index.html CHANGED
@@ -15,6 +15,13 @@
15
15
  <link rel="icon" href="./icon.svg" />
16
16
  <link rel="apple-touch-icon" href="./icon.svg" />
17
17
  <script>
18
+ // Deploy stamp: build-assets.sh replaces the placeholder with the short
19
+ // commit SHA at deploy time; `ay serve` ships this file raw, so a
20
+ // surviving placeholder means a local/dev copy. Answers "which frontend
21
+ // am I actually running?" — including an offline-cached PWA shell —
22
+ // from the devtools console or the left-panel header.
23
+ window.AY_BUILD = /^__/.test("__AY_BUILD__") ? "dev" : "__AY_BUILD__";
24
+ console.log("agent-yes console build:", window.AY_BUILD);
18
25
  if ("serviceWorker" in navigator) {
19
26
  addEventListener("load", () => navigator.serviceWorker.register("./sw.js").catch(() => {}));
20
27
  }
@@ -155,6 +162,15 @@
155
162
  h1 .tag {
156
163
  color: var(--accent);
157
164
  }
165
+ /* Frontend build stamp (AY_BUILD) — the quick "am I on the new deploy?"
166
+ check, readable even on an offline-cached PWA shell. */
167
+ h1 .build {
168
+ font-size: 10px;
169
+ font-weight: 400;
170
+ color: var(--muted);
171
+ vertical-align: middle;
172
+ user-select: all; /* one tap selects the whole SHA for copy */
173
+ }
158
174
  /* Connection-path pill in the header: at a glance, is the terminal you're
159
175
  watching on the fast local/lan path or the slow relayed path? */
160
176
  /* Per-peer connection-type pill in the terminal header — describes how this
@@ -1831,7 +1847,10 @@
1831
1847
  <div class="app">
1832
1848
  <div class="left">
1833
1849
  <div class="head">
1834
- <h1><span class="tag">agent-yes</span> · console</h1>
1850
+ <h1>
1851
+ <span class="tag">agent-yes</span> · console
1852
+ <span class="build" id="buildtag" title="frontend build (deploy commit)"></span>
1853
+ </h1>
1835
1854
  <div class="sub">
1836
1855
  Live <code>ay ls</code> + per-agent tail &amp; send. Backed by <code>ay serve</code>.
1837
1856
  </div>
@@ -2295,6 +2314,7 @@
2295
2314
  const installOrigin = location.origin;
2296
2315
  const installPackage = BETA_ORIGINS.has(location.hostname) ? "agent-yes@beta" : "agent-yes";
2297
2316
  $("setup-sh").textContent = `curl -fsSL ${installOrigin}/setup.sh | sh`;
2317
+ $("buildtag").textContent = window.AY_BUILD; // deploy stamp (see <head>)
2298
2318
  $("setup-sh").title = `installs ${installPackage}`;
2299
2319
  $("setup-ps").textContent = `powershell -c "irm ${installOrigin}/setup.ps1 | iex"`;
2300
2320
  $("setup-ps").title = `installs ${installPackage}`;
@@ -3685,17 +3705,53 @@
3685
3705
  // rides term.onResize → pushSize); on negotiating hosts the grid is
3686
3706
  // canonical — never reflow it locally, just re-letterbox and report the
3687
3707
  // new capacity so the host can move the min if needed.
3708
+ // Mobile IME toggles resize ONLY the height (the width never moves), and
3709
+ // TUIs keep what matters — the input box, the status line — at the
3710
+ // BOTTOM. After a height-only pane change, snap the viewport to the
3711
+ // bottom so the keyboard open/close storm can't leave it stranded
3712
+ // mid-scrollback. Compares PANE pixels, not the grid: on a negotiating
3713
+ // host the local grid is canonical and never regrids on a keyboard
3714
+ // toggle — only the letterbox rescales — so grid deltas would miss it.
3715
+ // Width changes (rotation, splitter drag) keep the reading position, and
3716
+ // desktop is untouched. Alt-screen TUIs have no scrollback → no-op.
3717
+ // The memo is the PREVIOUS stable pane size: by the time the resize
3718
+ // event fires the layout already has the new dimensions, so a same-call
3719
+ // before/after would always compare equal. select() seeds it (next
3720
+ // frame, once the pane flip has laid out) — without the seed, the very
3721
+ // first keyboard-open after picking an agent would be spent priming the
3722
+ // memo instead of snapping.
3723
+ let lastPaneDims = null;
3724
+ function seedPaneDims() {
3725
+ requestAnimationFrame(() => {
3726
+ const el = $("log");
3727
+ lastPaneDims = el ? { w: el.clientWidth, h: el.clientHeight } : null;
3728
+ });
3729
+ }
3730
+ function snapIfHeightOnly() {
3731
+ const el = $("log");
3732
+ const now = el ? { w: el.clientWidth, h: el.clientHeight } : null;
3733
+ const prev = lastPaneDims;
3734
+ lastPaneDims = now;
3735
+ if (!term || !prev || !now || window.innerWidth > 720) return;
3736
+ if (now.w === prev.w && now.h !== prev.h) {
3737
+ try {
3738
+ term.scrollToBottom();
3739
+ } catch {}
3740
+ }
3741
+ }
3688
3742
  function refitPane() {
3689
3743
  if (!term) return;
3690
3744
  if (negoActive) {
3691
3745
  applyCanvasScale();
3692
3746
  sendPresence();
3747
+ snapIfHeightOnly();
3693
3748
  return;
3694
3749
  }
3695
3750
  if (fit)
3696
3751
  try {
3697
3752
  fit.fit();
3698
3753
  } catch {}
3754
+ snapIfHeightOnly();
3699
3755
  }
3700
3756
  // Follow the canonical grid: resize our xterm to the agent's size (set by the
3701
3757
  // active driver / local owner) WITHOUT reflowing to our pane, then scale to
@@ -3710,9 +3766,18 @@
3710
3766
  }
3711
3767
  if (sz.cols !== term.cols || sz.rows !== term.rows) {
3712
3768
  agentSize = sz;
3769
+ // Grid-level twin of snapIfHeightOnly: the host regrids rows-only in
3770
+ // response to our keyboard-shrunk capacity report — keep the bottom
3771
+ // (TUI input box + status) in view through that reflow too.
3772
+ const rowsOnly = window.innerWidth <= 720 && sz.cols === term.cols;
3713
3773
  try {
3714
3774
  term.resize(sz.cols, sz.rows);
3715
3775
  } catch {}
3776
+ if (rowsOnly) {
3777
+ try {
3778
+ term.scrollToBottom();
3779
+ } catch {}
3780
+ }
3716
3781
  }
3717
3782
  applyCanvasScale();
3718
3783
  }
@@ -3952,6 +4017,12 @@
3952
4017
  }
3953
4018
  // In-console P2P preview: an iframe served from /w/p/<src>/<port>/, which
3954
4019
  // the Service Worker proxies over the machine's WebRTC tunnel (no relay).
4020
+ // The iframe navigates via location.replace(), NEVER src assignment — an
4021
+ // src= write on an already-loaded iframe pushes a TOP-LEVEL history entry,
4022
+ // so each preview open/close silently stacked entries the back key then
4023
+ // chewed through invisibly (URL never changes). previewUrl mirrors what
4024
+ // the frame shows, since the src attribute stays stale with replace().
4025
+ let previewUrl = "";
3955
4026
  function openPreview(src, port) {
3956
4027
  // Scope-relative so it works at both /w/ (agent-yes.com) and / (ay serve).
3957
4028
  const url = new URL("p/" + encodeURIComponent(src) + "/" + port + "/", location.href)
@@ -3959,14 +4030,42 @@
3959
4030
  const frame = $("previewFrame");
3960
4031
  if (!frame) return window.open(url, "_blank");
3961
4032
  $("previewTitle").textContent = "localhost:" + port;
3962
- frame.src = url;
3963
- $("previewOverlay").hidden = false;
4033
+ previewUrl = url;
4034
+ try {
4035
+ frame.contentWindow.location.replace(url);
4036
+ } catch {
4037
+ frame.src = url;
4038
+ }
4039
+ const ov = $("previewOverlay");
4040
+ if (ov.hidden) {
4041
+ ov.hidden = false;
4042
+ // The overlay is a "screen": give it a history entry so the hardware
4043
+ // back key closes it (via popstate) instead of leaving the console.
4044
+ try {
4045
+ history.pushState({ ayPreview: 1 }, "", location.href);
4046
+ } catch {}
4047
+ }
3964
4048
  }
4049
+ // UI close (✕ button): unwind our history entry so depth stays in sync
4050
+ // with what's on screen; the popstate handler does the actual teardown.
4051
+ // If the entry is already gone (user arrived here via back), close direct.
3965
4052
  function closePreview() {
4053
+ if (history.state && history.state.ayPreview) history.back();
4054
+ else closePreviewNow();
4055
+ }
4056
+ function closePreviewNow() {
3966
4057
  const ov = $("previewOverlay");
3967
4058
  if (ov) ov.hidden = true;
4059
+ previewUrl = "";
3968
4060
  const frame = $("previewFrame");
3969
- if (frame) frame.src = "about:blank"; // tear down the app + its tunnel
4061
+ if (frame) {
4062
+ // replace(), not src= (see above); also tears down the app + tunnel.
4063
+ try {
4064
+ frame.contentWindow.location.replace("about:blank");
4065
+ } catch {
4066
+ frame.src = "about:blank";
4067
+ }
4068
+ }
3970
4069
  }
3971
4070
  async function doExpose() {
3972
4071
  const tx = exposePendingTx || localTx;
@@ -4159,12 +4258,14 @@
4159
4258
  });
4160
4259
  $("previewClose")?.addEventListener("click", closePreview);
4161
4260
  $("previewReload")?.addEventListener("click", () => {
4162
- const f = $("previewFrame");
4163
- if (f) f.src = f.src;
4261
+ // reload(), not src re-assignment — src= would push a history entry.
4262
+ try {
4263
+ $("previewFrame")?.contentWindow.location.reload();
4264
+ } catch {}
4164
4265
  });
4165
4266
  $("previewPop")?.addEventListener("click", () => {
4166
- const f = $("previewFrame");
4167
- if (f && f.src && f.src !== "about:blank") window.open(f.src, "_blank");
4267
+ // frame.src stays stale with location.replace() — use the mirror.
4268
+ if (previewUrl) window.open(previewUrl, "_blank");
4168
4269
  });
4169
4270
  })();
4170
4271
  (function shareModalBoot() {
@@ -5176,7 +5277,18 @@
5176
5277
  renderList();
5177
5278
  // Mobile: flip the single-column layout to the terminal ("detail") pane.
5178
5279
  // Done BEFORE term.open below so xterm measures a visible container.
5179
- document.querySelector(".app").classList.add("show-detail");
5280
+ // Entering detail FROM the list gets a history entry, so the hardware
5281
+ // back key / edge-swipe returns to the list (via popstate → goBackNow)
5282
+ // instead of leaving the site — which showed a blank page in the
5283
+ // installed PWA, whose history starts at the console itself.
5284
+ const app = document.querySelector(".app");
5285
+ if (window.innerWidth <= 720 && !app.classList.contains("show-detail")) {
5286
+ try {
5287
+ history.pushState({ ayDetail: 1 }, "", location.href);
5288
+ } catch {}
5289
+ }
5290
+ app.classList.add("show-detail");
5291
+ seedPaneDims(); // arm the IME height-only snap for this pane
5180
5292
  // Shared-view gating (host-enforced; this is UX):
5181
5293
  // • view-only (r) → readonly-agent: hide composer/keybar + ALL agent actions.
5182
5294
  // • read-write (rw) → steer-agent: keep composer/keybar (can type), but hide
@@ -5449,7 +5561,28 @@
5449
5561
  });
5450
5562
  // Mobile back: return to the list pane. The tail keeps streaming in the
5451
5563
  // background (selection unchanged), so reopening the agent is instant.
5452
- const goBack = () => document.querySelector(".app").classList.remove("show-detail");
5564
+ const goBackNow = () => document.querySelector(".app").classList.remove("show-detail");
5565
+ // ‹ button / swipe: unwind the detail history entry select() pushed (the
5566
+ // popstate handler below does the flip), so history depth stays in sync
5567
+ // with what's on screen. Without the entry (desktop), flip directly.
5568
+ const goBack = () => {
5569
+ if (history.state && history.state.ayDetail) history.back();
5570
+ else goBackNow();
5571
+ };
5572
+ // Hardware/gesture back: peel the stacked "screens" (preview overlay,
5573
+ // mobile detail pane) off one at a time instead of leaving the site.
5574
+ // openPreview()/select() push the entries this handler consumes.
5575
+ let suppressHash = false;
5576
+ window.addEventListener("popstate", () => {
5577
+ // The back press may also rewind the #room:pid hash (select() rewrites
5578
+ // it in place). That press meant "close this screen", not "jump to the
5579
+ // previously-hashed agent" — eat the hashchange it triggers.
5580
+ suppressHash = true;
5581
+ setTimeout(() => (suppressHash = false), 0);
5582
+ const ov = $("previewOverlay");
5583
+ if (ov && !ov.hidden) return closePreviewNow();
5584
+ if (window.innerWidth <= 720) goBackNow();
5585
+ });
5453
5586
  $("rback").addEventListener("click", goBack);
5454
5587
  // Swipe-right-from-the-left-edge → back, an alternative to the ‹ button.
5455
5588
  // Passive/read-only so it never fights xterm's own scroll or text
@@ -7110,6 +7243,12 @@
7110
7243
  // on hashchange and jump to that agent. select() writes the hash via
7111
7244
  // history.replaceState (which does NOT fire hashchange), so this never loops.
7112
7245
  window.addEventListener("hashchange", () => {
7246
+ // Back-key screen-close (popstate above) may rewind the hash too; that
7247
+ // navigation is not a deep-link jump — swallow exactly one event.
7248
+ if (suppressHash) {
7249
+ suppressHash = false;
7250
+ return;
7251
+ }
7113
7252
  const h = decodeURIComponent(location.hash.replace(/^#/, ""));
7114
7253
  // Only the #room:pid agent-deep-link form (pid = digits, ≤7 — same bound
7115
7254
  // boot() uses to tell a pid from a numeric token). Other forms (#room,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-yes",
3
- "version": "1.211.4",
3
+ "version": "1.211.5-beta.529.1",
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-Civl956u.js";
2
- import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-D8f_81GL.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-CBJSgQdN.js";
8
-
9
- export { SUPPORTED_CLIS };