agent-yes 1.140.1 → 1.140.2

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-CKCsYKjz.js";
1
+ import { t as CLIS_CONFIG } from "./ts-B1-x2rKP.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-Cjay1Iru.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-CTOnaXTX.js.map
@@ -0,0 +1,8 @@
1
+ import "./ts-B1-x2rKP.js";
2
+ import "./logger-CDIsZ-Pp.js";
3
+ import "./versionChecker-Bhn4NygE.js";
4
+ import "./pidStore-fqXqTKkh.js";
5
+ import "./globalPidIndex-DlmmJlO8.js";
6
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CTOnaXTX.js";
7
+
8
+ export { SUPPORTED_CLIS };
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bun
2
2
  import { t as invokedCliName } from "./invokedCli-zdFbz1ST.js";
3
3
  import { n as logger } from "./logger-CDIsZ-Pp.js";
4
- import { i as versionString, n as displayVersion, r as getInstalledPackage, t as checkAndAutoUpdate } from "./versionChecker-CZ6UM9LY.js";
4
+ import { i as versionString, n as displayVersion, r as getInstalledPackage, t as checkAndAutoUpdate } from "./versionChecker-Bhn4NygE.js";
5
5
  import { argv } from "process";
6
6
  import { execFileSync, spawn } from "child_process";
7
7
  import ms from "ms";
@@ -480,7 +480,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
480
480
  const rawArg = process.argv[2];
481
481
  const managerCommands = !invokedCliName(process.argv);
482
482
  const isHelpFlag = rawArg === "-h" || rawArg === "--help";
483
- const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-CvO1YYns.js");
483
+ const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-DKizMTs9.js");
484
484
  if (isHelpFlag && process.argv.length === 3) {
485
485
  cmdHelp(managerCommands);
486
486
  process.exit(0);
@@ -513,7 +513,7 @@ if (config.useRust) {
513
513
  }
514
514
  }
515
515
  if (rustBinary) {
516
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-dlEtFEAn.js");
516
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-DYcaH-bR.js");
517
517
  const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
518
518
  if (config.verbose) {
519
519
  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-CKCsYKjz.js";
1
+ import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-B1-x2rKP.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-CZ6UM9LY.js";
3
+ import "./versionChecker-Bhn4NygE.js";
4
4
  import "./pidStore-fqXqTKkh.js";
5
5
  import "./globalPidIndex-DlmmJlO8.js";
6
6
 
@@ -1,9 +1,9 @@
1
- import "./ts-CKCsYKjz.js";
1
+ import "./ts-B1-x2rKP.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-CZ6UM9LY.js";
3
+ import "./versionChecker-Bhn4NygE.js";
4
4
  import "./pidStore-fqXqTKkh.js";
5
5
  import "./globalPidIndex-DlmmJlO8.js";
6
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Cjay1Iru.js";
6
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CTOnaXTX.js";
7
7
  import { n as resolveSpawnCwd } from "./workspaceConfig-BCOqRBEW.js";
8
8
  import { createHash } from "node:crypto";
9
9
 
@@ -141,4 +141,4 @@ async function cmdSchedule(rest) {
141
141
 
142
142
  //#endregion
143
143
  export { cmdSchedule };
144
- //# sourceMappingURL=schedule-DEcxVffO.js.map
144
+ //# sourceMappingURL=schedule-DZb7ZQgW.js.map
@@ -1,13 +1,13 @@
1
- import "./ts-CKCsYKjz.js";
1
+ import "./ts-B1-x2rKP.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import { r as getInstalledPackage } from "./versionChecker-CZ6UM9LY.js";
3
+ import { r as getInstalledPackage } from "./versionChecker-Bhn4NygE.js";
4
4
  import "./pidStore-fqXqTKkh.js";
5
5
  import { a as updateGlobalPidStatus } from "./globalPidIndex-DlmmJlO8.js";
6
6
  import { t as pgidForWrapper } from "./reaper-C-eWAxIj.js";
7
7
  import "./configShared-C1C04bbq.js";
8
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Cjay1Iru.js";
8
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CTOnaXTX.js";
9
9
  import "./remotes-PKKjfTI1.js";
10
- import { S as writeToIpc, _ as resolveOne, b as snapshotStatus, c as extractTaskCounts, f as listRecords, h as renderRawLog, i as controlCodeFromName, m as readNotes, o as deriveLiveStatus } from "./subcommands-D4BFGRle.js";
10
+ import { S as writeToIpc, _ as resolveOne, b as snapshotStatus, c as extractTaskCounts, f as listRecords, h as renderRawLog, i as controlCodeFromName, m as readNotes, o as deriveLiveStatus } from "./subcommands-Cz7-sHOT.js";
11
11
  import yargs from "yargs";
12
12
  import { mkdir, open, readFile, stat, writeFile } from "fs/promises";
13
13
  import { homedir, hostname, userInfo } from "os";
@@ -1175,4 +1175,4 @@ Options:
1175
1175
 
1176
1176
  //#endregion
1177
1177
  export { cmdServe };
1178
- //# sourceMappingURL=serve-BAZlVy52.js.map
1178
+ //# sourceMappingURL=serve-BBwXw8gY.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-BAZlVy52.js");
35
+ const { cmdServe } = await import("./serve-BBwXw8gY.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-C9csSnJG.js.map
45
+ //# sourceMappingURL=setup-S9LoYWK5.js.map
@@ -351,6 +351,7 @@ async function compactNotes() {
351
351
  await writeFile(notesPath(), lines ? lines + "\n" : "");
352
352
  }
353
353
  const READ_WINDOW_MS = 6e4;
354
+ const IPC_WRITE_TIMEOUT_MS = 1e4;
354
355
  const READS_KEY_SEP = "\0";
355
356
  function readsPath() {
356
357
  const dir = process.env.AGENT_YES_HOME ?? path.join(homedir(), ".agent-yes");
@@ -533,15 +534,15 @@ async function runSubcommand(argv) {
533
534
  case "restart": return await cmdRestart(rest);
534
535
  case "note": return await cmdNote(rest);
535
536
  case "serve": {
536
- const { cmdServe } = await import("./serve-BAZlVy52.js");
537
+ const { cmdServe } = await import("./serve-BBwXw8gY.js");
537
538
  return cmdServe(rest);
538
539
  }
539
540
  case "setup": {
540
- const { cmdSetup } = await import("./setup-C9csSnJG.js");
541
+ const { cmdSetup } = await import("./setup-S9LoYWK5.js");
541
542
  return cmdSetup(rest);
542
543
  }
543
544
  case "schedule": {
544
- const { cmdSchedule } = await import("./schedule-DEcxVffO.js");
545
+ const { cmdSchedule } = await import("./schedule-DZb7ZQgW.js");
545
546
  return cmdSchedule(rest);
546
547
  }
547
548
  case "remote": {
@@ -1847,10 +1848,26 @@ async function writeToIpc(ipcPath, payload) {
1847
1848
  });
1848
1849
  });
1849
1850
  } else {
1850
- const { openSync, writeFileSync, closeSync, constants } = await import("fs");
1851
+ const { openSync, writeSync, closeSync, constants } = await import("fs");
1851
1852
  const fd = openSync(ipcPath, constants.O_WRONLY | constants.O_NONBLOCK);
1852
1853
  try {
1853
- writeFileSync(fd, payload);
1854
+ const buf = Buffer.from(payload, "utf8");
1855
+ const deadline = Date.now() + IPC_WRITE_TIMEOUT_MS;
1856
+ let off = 0;
1857
+ while (off < buf.length) {
1858
+ let wrote = 0;
1859
+ try {
1860
+ wrote = writeSync(fd, buf, off, buf.length - off);
1861
+ } catch (e) {
1862
+ const code = e?.code;
1863
+ if (code !== "EAGAIN" && code !== "EWOULDBLOCK") throw e;
1864
+ }
1865
+ off += wrote;
1866
+ if (off < buf.length) {
1867
+ if (Date.now() >= deadline) throw new Error(`writeToIpc: ${ipcPath} reader not draining — wrote ${off}/${buf.length} bytes in ${IPC_WRITE_TIMEOUT_MS}ms`);
1868
+ await new Promise((r) => setTimeout(r, wrote > 0 ? 1 : 15));
1869
+ }
1870
+ }
1854
1871
  } finally {
1855
1872
  closeSync(fd);
1856
1873
  }
@@ -2440,4 +2457,4 @@ async function cmdResultSet(rest) {
2440
2457
 
2441
2458
  //#endregion
2442
2459
  export { writeToIpc as S, resolveOne as _, cursorAbs as a, snapshotStatus as b, extractTaskCounts as c, isSubcommand as d, listRecords as f, renderRawLogLines as g, renderRawLog as h, controlCodeFromName as i, finalizedLines as l, readNotes as m, READ_PAGE_DEFAULT as n, deriveLiveStatus as o, matchKeyword as p, cmdHelp as r, extractNeedsInput as s, GRACEFUL_EXIT_COMMANDS as t, isPidAlive as u, resolveReadWindow as v, stopTipForCli as x, runSubcommand as y };
2443
- //# sourceMappingURL=subcommands-D4BFGRle.js.map
2460
+ //# sourceMappingURL=subcommands-Cz7-sHOT.js.map
@@ -2,6 +2,6 @@ import "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-DlmmJlO8.js";
3
3
  import "./configShared-C1C04bbq.js";
4
4
  import "./remotes-PKKjfTI1.js";
5
- import { S as writeToIpc, _ as resolveOne, a as cursorAbs, b as snapshotStatus, c as extractTaskCounts, d as isSubcommand, f as listRecords, g as renderRawLogLines, h as renderRawLog, i as controlCodeFromName, l as finalizedLines, m as readNotes, n as READ_PAGE_DEFAULT, o as deriveLiveStatus, p as matchKeyword, r as cmdHelp, s as extractNeedsInput, t as GRACEFUL_EXIT_COMMANDS, u as isPidAlive, v as resolveReadWindow, x as stopTipForCli, y as runSubcommand } from "./subcommands-D4BFGRle.js";
5
+ import { S as writeToIpc, _ as resolveOne, a as cursorAbs, b as snapshotStatus, c as extractTaskCounts, d as isSubcommand, f as listRecords, g as renderRawLogLines, h as renderRawLog, i as controlCodeFromName, l as finalizedLines, m as readNotes, n as READ_PAGE_DEFAULT, o as deriveLiveStatus, p as matchKeyword, r as cmdHelp, s as extractNeedsInput, t as GRACEFUL_EXIT_COMMANDS, u as isPidAlive, v as resolveReadWindow, x as stopTipForCli, y as runSubcommand } from "./subcommands-Cz7-sHOT.js";
6
6
 
7
7
  export { cmdHelp, isSubcommand, runSubcommand };
@@ -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-CZ6UM9LY.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-Bhn4NygE.js";
3
3
  import { t as agentYesHome } from "./agentYesHome-_eJa3DaX.js";
4
4
  import { i as shouldUseLock, r as releaseLock, t as acquireLock } from "./runningLock-V4qvXgAw.js";
5
5
  import { t as PidStore } from "./pidStore-fqXqTKkh.js";
@@ -1788,4 +1788,4 @@ function sleep(ms) {
1788
1788
 
1789
1789
  //#endregion
1790
1790
  export { removeControlCharacters as a, AgentContext as i, agentYes as n, config as r, CLIS_CONFIG as t };
1791
- //# sourceMappingURL=ts-CKCsYKjz.js.map
1791
+ //# sourceMappingURL=ts-B1-x2rKP.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.140.1";
10
+ var version = "1.140.2";
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-CZ6UM9LY.js.map
218
+ //# sourceMappingURL=versionChecker-Bhn4NygE.js.map
@@ -440,7 +440,7 @@ export function selSegments(sel, myLast, vy, myRows, peerCols, myCols) {
440
440
  rB = myLast - sel.fb,
441
441
  cA = sel.ca,
442
442
  cB = sel.cb;
443
- if (rA > rB) ([rA, rB] = [rB, rA]), ([cA, cB] = [cB, cA]); // rA = top row
443
+ if (rA > rB) (([rA, rB] = [rB, rA]), ([cA, cB] = [cB, cA])); // rA = top row
444
444
  const segs = [];
445
445
  const from = Math.max(rA, vy),
446
446
  to = Math.min(rB, vy + myRows - 1);
package/lab/ui/index.html CHANGED
@@ -1489,7 +1489,10 @@
1489
1489
  />
1490
1490
  <div class="omni-results" id="omni-results"></div>
1491
1491
  <div class="omni-foot">
1492
- <span><b>↑↓</b> move &nbsp; <b>⏎</b> open &nbsp; <b>⌘⏎</b> spawn here &nbsp; <b>esc</b> close</span>
1492
+ <span
1493
+ ><b>↑↓</b> move &nbsp; <b>⏎</b> open &nbsp; <b>⌘⏎</b> spawn here &nbsp;
1494
+ <b>esc</b> close</span
1495
+ >
1493
1496
  </div>
1494
1497
  </div>
1495
1498
  </div>
@@ -2699,9 +2702,17 @@
2699
2702
  const sel = parseSel(p.sel);
2700
2703
  if (!sel) continue;
2701
2704
  const hue = hashHue(p.viewer);
2702
- const tag = esc(String(p.viewer).slice(0, 4)) + " " + (p.cols || "?") + "×" + (p.rows || "?");
2705
+ const tag =
2706
+ esc(String(p.viewer).slice(0, 4)) + " " + (p.cols || "?") + "×" + (p.rows || "?");
2703
2707
  let tagged = false;
2704
- for (const seg of selSegments(sel, myLast, vy, term.rows, p.cols || term.cols, term.cols)) {
2708
+ for (const seg of selSegments(
2709
+ sel,
2710
+ myLast,
2711
+ vy,
2712
+ term.rows,
2713
+ p.cols || term.cols,
2714
+ term.cols,
2715
+ )) {
2705
2716
  const vr = seg.row - vy; // our buffer row → our viewport row
2706
2717
  if (vr < 0 || vr > term.rows - 1) continue; // safety (selSegments already clips)
2707
2718
  const left = ox + seg.a * cw;
@@ -3740,7 +3751,9 @@
3740
3751
  const seq = ++omniTailSeq;
3741
3752
  const have = new Set(omniRows.filter((r) => r.kind === "agent").map((r) => r.entry._key));
3742
3753
  const ql = q.toLowerCase();
3743
- const cands = entries.filter((e) => !have.has(e._key) && e.status !== "exited").slice(0, 20);
3754
+ const cands = entries
3755
+ .filter((e) => !have.has(e._key) && e.status !== "exited")
3756
+ .slice(0, 20);
3744
3757
  await Promise.all(
3745
3758
  cands.map(async (e) => {
3746
3759
  const src = srcFor(e);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-yes",
3
- "version": "1.140.1",
3
+ "version": "1.140.2",
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",
@@ -719,6 +719,54 @@ describe("subcommands.cmdSend writes bytes to FIFO", () => {
719
719
  });
720
720
  });
721
721
 
722
+ describe("subcommands.writeToIpc reliable delivery", () => {
723
+ const itUnix = process.platform === "linux" || process.platform === "darwin";
724
+
725
+ it.skipIf(!itUnix)(
726
+ "delivers a payload larger than the FIFO buffer to a slow reader",
727
+ async () => {
728
+ const { writeToIpc } = await loadModule();
729
+ const { spawnSync } = await import("child_process");
730
+ const fs = await import("fs");
731
+ const tmp = await mkdtemp(path.join(tmpdir(), "ay-ipc-"));
732
+ try {
733
+ const fifo = path.join(tmp, "big.fifo");
734
+ if (spawnSync("mkfifo", [fifo]).status !== 0) return;
735
+ // Reader present (so open() doesn't ENXIO) but draining slowly, in small
736
+ // chunks on a timer — this backs the ~8KB kernel buffer up and makes the
737
+ // old single non-blocking writeFileSync EAGAIN/truncate.
738
+ const rfd = fs.openSync(fifo, fs.constants.O_RDONLY | fs.constants.O_NONBLOCK);
739
+ const chunks: Buffer[] = [];
740
+ const drain = setInterval(() => {
741
+ const b = Buffer.alloc(1000);
742
+ try {
743
+ const n = fs.readSync(rfd, b, 0, b.length, null);
744
+ if (n > 0) chunks.push(Buffer.from(b.subarray(0, n)));
745
+ } catch {
746
+ /* EAGAIN when momentarily empty */
747
+ }
748
+ }, 5);
749
+ try {
750
+ // 50KB >> the FIFO buffer: forces many partial writes + EAGAIN retries.
751
+ const payload = "abcdefghij".repeat(5000);
752
+ await writeToIpc(fifo, payload);
753
+ // Let the drainer flush whatever is still buffered.
754
+ const deadline = Date.now() + 3000;
755
+ while (Buffer.concat(chunks).length < payload.length && Date.now() < deadline) {
756
+ await new Promise((r) => setTimeout(r, 10));
757
+ }
758
+ expect(Buffer.concat(chunks).toString("utf8")).toBe(payload);
759
+ } finally {
760
+ clearInterval(drain);
761
+ fs.closeSync(rfd);
762
+ }
763
+ } finally {
764
+ await rm(tmp, { recursive: true, force: true }).catch(() => null);
765
+ }
766
+ },
767
+ );
768
+ });
769
+
722
770
  describe("subcommands.cmdSend safety guards", () => {
723
771
  it("maps AGENT_YES_PID→wrapper_pid and blocks an agent from sending to itself", async () => {
724
772
  const { runSubcommand } = await loadModule();
package/ts/subcommands.ts CHANGED
Binary file
@@ -1,8 +0,0 @@
1
- import "./ts-CKCsYKjz.js";
2
- import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-CZ6UM9LY.js";
4
- import "./pidStore-fqXqTKkh.js";
5
- import "./globalPidIndex-DlmmJlO8.js";
6
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Cjay1Iru.js";
7
-
8
- export { SUPPORTED_CLIS };