agent-yes 1.180.0 → 1.181.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.
@@ -0,0 +1,8 @@
1
+ import "./ts-D03587mT.js";
2
+ import "./logger-CDIsZ-Pp.js";
3
+ import "./versionChecker-Dg5qWFeC.js";
4
+ import "./pidStore-BIvsBQ8X.js";
5
+ import "./globalPidIndex-CoNr7tS8.js";
6
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Dr9nuhhJ.js";
7
+
8
+ export { SUPPORTED_CLIS };
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-DHfLvqs_.js";
1
+ import { t as CLIS_CONFIG } from "./ts-D03587mT.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-Dnjsd2rP.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-Dr9nuhhJ.js.map
@@ -1,7 +1,7 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-CoNr7tS8.js";
3
3
  import "./configShared-0MnIQ652.js";
4
- import { j as resolveOne } from "./subcommands-CmBR4VO1.js";
4
+ import { j as resolveOne } from "./subcommands-DPesJGLU.js";
5
5
  import "./e2e-BeKjLhmO.js";
6
6
  import "./webrtcLink-BG0Xc4-W.js";
7
7
  import "./remotes-DsTnQhyx.js";
@@ -228,4 +228,4 @@ function transformEvent(rawEvent, agentId, forwarded) {
228
228
 
229
229
  //#endregion
230
230
  export { createScopedShare, listShares, revokeAllShares, revokeShare };
231
- //# sourceMappingURL=agentShare-3UnX86C0.js.map
231
+ //# sourceMappingURL=agentShare-CO3WvhhK.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-BpVojVKc.js";
5
- import { n as getRustBinary } from "./rustBinary-WVFA8nBv.js";
4
+ import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-Dg5qWFeC.js";
5
+ import { n as getRustBinary } from "./rustBinary-TmEmA8-Z.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-CN3U4oAZ.js");
288
+ const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-TgD2PgkV.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-CL4MbVUV.js");
330
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-Do3V3vX8.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-DHfLvqs_.js";
1
+ import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-D03587mT.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-BpVojVKc.js";
3
+ import "./versionChecker-Dg5qWFeC.js";
4
4
  import "./pidStore-BIvsBQ8X.js";
5
5
  import "./globalPidIndex-CoNr7tS8.js";
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { n as logger } from "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-CoNr7tS8.js";
3
3
  import "./configShared-0MnIQ652.js";
4
- import { G as hostId, J as readInbox, K as listInboxParents, O as renderLogTailLines, Q as notifyDir, S as listRecords, U as appendEvent, W as gcInboxes, X as daemonLockDir, Y as shouldStealLock, Z as daemonLockOwnerPath, _ as isPidAlive, c as deriveLiveState, q as liveWatchers } from "./subcommands-CmBR4VO1.js";
4
+ import { G as hostId, J as readInbox, K as listInboxParents, O as renderLogTailLines, Q as notifyDir, S as listRecords, U as appendEvent, W as gcInboxes, X as daemonLockDir, Y as shouldStealLock, Z as daemonLockOwnerPath, _ as isPidAlive, c as deriveLiveState, q as liveWatchers } from "./subcommands-DPesJGLU.js";
5
5
  import "./e2e-BeKjLhmO.js";
6
6
  import "./webrtcLink-BG0Xc4-W.js";
7
7
  import "./remotes-DsTnQhyx.js";
@@ -588,4 +588,4 @@ async function ensureDaemon() {
588
588
 
589
589
  //#endregion
590
590
  export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
591
- //# sourceMappingURL=notifyDaemon-DpZX5_Hv.js.map
591
+ //# sourceMappingURL=notifyDaemon-RrSGnk8y.js.map
@@ -1,4 +1,4 @@
1
- import { r as getInstalledPackage } from "./versionChecker-BpVojVKc.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-Dg5qWFeC.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-WVFA8nBv.js.map
228
+ //# sourceMappingURL=rustBinary-TmEmA8-Z.js.map
@@ -1,9 +1,9 @@
1
- import "./ts-DHfLvqs_.js";
1
+ import "./ts-D03587mT.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-BpVojVKc.js";
3
+ import "./versionChecker-Dg5qWFeC.js";
4
4
  import "./pidStore-BIvsBQ8X.js";
5
5
  import "./globalPidIndex-CoNr7tS8.js";
6
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Dnjsd2rP.js";
6
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Dr9nuhhJ.js";
7
7
  import { d as resolveSpawnCwd } from "./workspaceConfig-DKd6UvVm.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-DLXWkR0z.js.map
144
+ //# sourceMappingURL=schedule-Dn21cWJc.js.map
@@ -1,13 +1,13 @@
1
- import "./ts-DHfLvqs_.js";
1
+ import "./ts-D03587mT.js";
2
2
  import "./logger-CDIsZ-Pp.js";
3
- import { r as getInstalledPackage } from "./versionChecker-BpVojVKc.js";
4
- import { t as findSpawnHiddenLauncher } from "./rustBinary-WVFA8nBv.js";
3
+ import { r as getInstalledPackage } from "./versionChecker-Dg5qWFeC.js";
4
+ import { t as findSpawnHiddenLauncher } from "./rustBinary-TmEmA8-Z.js";
5
5
  import "./pidStore-BIvsBQ8X.js";
6
6
  import { a as updateGlobalPidStatus } from "./globalPidIndex-CoNr7tS8.js";
7
7
  import { t as pgidForWrapper } from "./reaper-CWF2_ATd.js";
8
8
  import "./configShared-0MnIQ652.js";
9
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Dnjsd2rP.js";
10
- import { $ as TYPING_BADGE, D as recentReadEdges, E as readPtysize, H as writeToIpc, I as snapshotStatus, O as renderLogTailLines, S as listRecords, T as readNotes, b as isUserTyping, f as extractNeedsInput, j as resolveOne, k as renderRawLog, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, u as extractBadges } from "./subcommands-CmBR4VO1.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Dr9nuhhJ.js";
10
+ import { $ as TYPING_BADGE, D as recentReadEdges, E as readPtysize, H as writeToIpc, I as snapshotStatus, O as renderLogTailLines, S as listRecords, T as readNotes, b as isUserTyping, f as extractNeedsInput, j as resolveOne, k as renderRawLog, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, u as extractBadges } from "./subcommands-DPesJGLU.js";
11
11
  import "./e2e-BeKjLhmO.js";
12
12
  import "./webrtcLink-BG0Xc4-W.js";
13
13
  import "./remotes-DsTnQhyx.js";
@@ -1115,6 +1115,15 @@ Options:
1115
1115
  const byWrapper = new Map(records.map((r) => [r.wrapper_pid ?? r.pid, r.pid]));
1116
1116
  const nid = (pid) => `${ns}/${pid}`;
1117
1117
  const embedBase = `${url.protocol}//${url.host}`;
1118
+ const NODE_W = 520;
1119
+ const sizeOf = async (pid) => {
1120
+ const s = await readPtysize(pid).catch(() => null);
1121
+ const aspect = s?.cols && s?.rows ? s.cols / (2 * s.rows) : 2;
1122
+ return {
1123
+ w: NODE_W,
1124
+ h: Math.round(Math.min(NODE_W * 2, Math.max(96, NODE_W / aspect)))
1125
+ };
1126
+ };
1118
1127
  const hintsOf = async (r) => {
1119
1128
  const embed = { url: `${embedBase}/r/#node=${r.pid}&embed&k=${encodeURIComponent(token)}` };
1120
1129
  const lines = await logPreviewLines(r.log_file);
@@ -1139,13 +1148,10 @@ Options:
1139
1148
  status: r.status,
1140
1149
  parent: r.parent_pid && byWrapper.has(r.parent_pid) ? nid(byWrapper.get(r.parent_pid)) : void 0,
1141
1150
  pos: {
1142
- x: i % 8 * 320,
1143
- y: Math.floor(i / 8) * 200
1144
- },
1145
- size: {
1146
- w: 256,
1147
- h: 128
1151
+ x: i % 8 * (NODE_W + 64),
1152
+ y: Math.floor(i / 8) * 480
1148
1153
  },
1154
+ size: await sizeOf(r.pid),
1149
1155
  inputs: [textIn],
1150
1156
  outputs: [textOut],
1151
1157
  renderHints: await hintsOf(r)
@@ -1162,11 +1168,11 @@ Options:
1162
1168
  parent: void 0,
1163
1169
  pos: {
1164
1170
  x: 0,
1165
- y: -240
1171
+ y: -560
1166
1172
  },
1167
- size: {
1168
- w: 256,
1169
- h: 128
1173
+ size: codex ? await sizeOf(codex.pid) : {
1174
+ w: NODE_W,
1175
+ h: 260
1170
1176
  },
1171
1177
  inputs: [textIn],
1172
1178
  outputs: [textOut],
@@ -1736,7 +1742,7 @@ Options:
1736
1742
  const perm = body.perm ?? "r";
1737
1743
  if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
1738
1744
  try {
1739
- const { createScopedShare } = await import("./agentShare-3UnX86C0.js");
1745
+ const { createScopedShare } = await import("./agentShare-CO3WvhhK.js");
1740
1746
  const share = await createScopedShare({
1741
1747
  agent: body.agent,
1742
1748
  perm,
@@ -1751,12 +1757,12 @@ Options:
1751
1757
  }
1752
1758
  }
1753
1759
  if (req.method === "GET" && p === "/api/shares") {
1754
- const { listShares } = await import("./agentShare-3UnX86C0.js");
1760
+ const { listShares } = await import("./agentShare-CO3WvhhK.js");
1755
1761
  return Response.json(listShares());
1756
1762
  }
1757
1763
  const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
1758
1764
  if (req.method === "DELETE" && revokeM) {
1759
- const { revokeShare } = await import("./agentShare-3UnX86C0.js");
1765
+ const { revokeShare } = await import("./agentShare-CO3WvhhK.js");
1760
1766
  const ok = revokeShare(decodeURIComponent(revokeM[1]));
1761
1767
  return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
1762
1768
  }
@@ -1901,7 +1907,7 @@ Options:
1901
1907
  const shutdown = (resolve) => {
1902
1908
  if (heartbeat) clearInterval(heartbeat);
1903
1909
  closeShare?.();
1904
- import("./agentShare-3UnX86C0.js").then((m) => m.revokeAllShares()).catch(() => {});
1910
+ import("./agentShare-CO3WvhhK.js").then((m) => m.revokeAllShares()).catch(() => {});
1905
1911
  server?.stop();
1906
1912
  resolve();
1907
1913
  };
@@ -1914,4 +1920,4 @@ Options:
1914
1920
 
1915
1921
  //#endregion
1916
1922
  export { cmdServe };
1917
- //# sourceMappingURL=serve-B0k-MNB1.js.map
1923
+ //# sourceMappingURL=serve-mgHilzwX.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-B0k-MNB1.js");
35
+ const { cmdServe } = await import("./serve-mgHilzwX.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-DSaBdB74.js.map
45
+ //# sourceMappingURL=setup-C4tV45C-.js.map
@@ -1145,15 +1145,15 @@ async function runSubcommand(argv) {
1145
1145
  case "restart": return await cmdRestart(rest);
1146
1146
  case "note": return await cmdNote(rest);
1147
1147
  case "serve": {
1148
- const { cmdServe } = await import("./serve-B0k-MNB1.js");
1148
+ const { cmdServe } = await import("./serve-mgHilzwX.js");
1149
1149
  return cmdServe(rest);
1150
1150
  }
1151
1151
  case "setup": {
1152
- const { cmdSetup } = await import("./setup-DSaBdB74.js");
1152
+ const { cmdSetup } = await import("./setup-C4tV45C-.js");
1153
1153
  return cmdSetup(rest);
1154
1154
  }
1155
1155
  case "schedule": {
1156
- const { cmdSchedule } = await import("./schedule-DLXWkR0z.js");
1156
+ const { cmdSchedule } = await import("./schedule-Dn21cWJc.js");
1157
1157
  return cmdSchedule(rest);
1158
1158
  }
1159
1159
  case "remote": {
@@ -3991,7 +3991,7 @@ async function cmdNotify(rest) {
3991
3991
  }
3992
3992
  const ensure = async () => {
3993
3993
  if (!argv["ensure-daemon"]) return;
3994
- const { ensureDaemon } = await import("./notifyDaemon-DpZX5_Hv.js");
3994
+ const { ensureDaemon } = await import("./notifyDaemon-RrSGnk8y.js");
3995
3995
  await ensureDaemon().catch(() => null);
3996
3996
  };
3997
3997
  await heartbeatWatcher(parent, selfStartedAt);
@@ -4065,7 +4065,7 @@ async function cmdNotifyCursor(args) {
4065
4065
  }
4066
4066
  async function cmdNotifyd(rest) {
4067
4067
  const sub = rest[0] ?? "status";
4068
- const daemon = await import("./notifyDaemon-DpZX5_Hv.js");
4068
+ const daemon = await import("./notifyDaemon-RrSGnk8y.js");
4069
4069
  switch (sub) {
4070
4070
  case "run": return daemon.runDaemon();
4071
4071
  case "once": return daemon.runDaemon({ once: true });
@@ -4092,4 +4092,4 @@ async function cmdNotifyd(rest) {
4092
4092
 
4093
4093
  //#endregion
4094
4094
  export { TYPING_BADGE as $, renderRawLogLines as A, waitForLogQuiet as B, matchKeyword as C, recentReadEdges as D, readPtysize as E, runSubcommand as F, hostId as G, writeToIpc as H, snapshotStatus as I, readInbox as J, listInboxParents as K, stdinActivityPath as L, resolveReadWindow as M, resolveResumeArgs as N, renderLogTailLines as O, restartHintLines as P, notifyDir as Q, stopTipForCli as R, listRecords as S, readNotes as T, appendEvent as U, writeKeysPaced as V, gcInboxes as W, daemonLockDir as X, shouldStealLock as Y, daemonLockOwnerPath as Z, isPidAlive as _, cmdHelp as a, isUserTyping as b, deriveLiveState as c, extractMenu as d, extractNeedsInput as f, isExitRequest as g, isAgentStuck as h, backoffWhileTyping as i, resolveOne as j, renderRawLog as k, deriveLiveStatus as l, finalizedLines as m, READ_PAGE_DEFAULT as n, controlCodeFromName as o, extractTaskCounts as p, liveWatchers as q, TYPING_WINDOW_MS as r, cursorAbs as s, GRACEFUL_EXIT_COMMANDS as t, extractBadges as u, isSlashCommand as v, menuSelectKeys as w, lastStdinAt as x, isSubcommand as y, submitAndConfirm as z };
4095
- //# sourceMappingURL=subcommands-CmBR4VO1.js.map
4095
+ //# sourceMappingURL=subcommands-DPesJGLU.js.map
@@ -1,7 +1,7 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-CoNr7tS8.js";
3
3
  import "./configShared-0MnIQ652.js";
4
- import { A as renderRawLogLines, B as waitForLogQuiet, C as matchKeyword, D as recentReadEdges, E as readPtysize, F as runSubcommand, H as writeToIpc, I as snapshotStatus, L as stdinActivityPath, M as resolveReadWindow, N as resolveResumeArgs, O as renderLogTailLines, P as restartHintLines, R as stopTipForCli, S as listRecords, T as readNotes, V as writeKeysPaced, _ 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 resolveOne, k as renderRawLog, 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 submitAndConfirm } from "./subcommands-CmBR4VO1.js";
4
+ import { A as renderRawLogLines, B as waitForLogQuiet, C as matchKeyword, D as recentReadEdges, E as readPtysize, F as runSubcommand, H as writeToIpc, I as snapshotStatus, L as stdinActivityPath, M as resolveReadWindow, N as resolveResumeArgs, O as renderLogTailLines, P as restartHintLines, R as stopTipForCli, S as listRecords, T as readNotes, V as writeKeysPaced, _ 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 resolveOne, k as renderRawLog, 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 submitAndConfirm } from "./subcommands-DPesJGLU.js";
5
5
  import "./e2e-BeKjLhmO.js";
6
6
  import "./webrtcLink-BG0Xc4-W.js";
7
7
  import "./remotes-DsTnQhyx.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-BpVojVKc.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-Dg5qWFeC.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";
@@ -1824,4 +1824,4 @@ function sleep(ms) {
1824
1824
 
1825
1825
  //#endregion
1826
1826
  export { removeControlCharacters as a, AgentContext as i, agentYes as n, config as r, CLIS_CONFIG as t };
1827
- //# sourceMappingURL=ts-DHfLvqs_.js.map
1827
+ //# sourceMappingURL=ts-D03587mT.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.180.0";
10
+ var version = "1.181.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-BpVojVKc.js.map
218
+ //# sourceMappingURL=versionChecker-Dg5qWFeC.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-yes",
3
- "version": "1.180.0",
3
+ "version": "1.181.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",
package/ts/serve.ts CHANGED
@@ -1654,6 +1654,15 @@ export async function cmdServe(rest: string[]): Promise<number> {
1654
1654
  // fallback). Carries the serve token: the feed itself is gated by the
1655
1655
  // same token, so its consumers hold it already.
1656
1656
  const embedBase = `${url.protocol}//${url.host}`;
1657
+ // node size mirrors the agent's REAL PTY aspect so a consumer that
1658
+ // derives height from width (otoji chain slots) shows the embed with no
1659
+ // letterboxing. Terminal cells are ~1:2 (w:h), so px aspect = cols/(2*rows).
1660
+ const NODE_W = 520;
1661
+ const sizeOf = async (pid: number) => {
1662
+ const s = await readPtysize(pid).catch(() => null);
1663
+ const aspect = s?.cols && s?.rows ? s.cols / (2 * s.rows) : 2;
1664
+ return { w: NODE_W, h: Math.round(Math.min(NODE_W * 2, Math.max(96, NODE_W / aspect))) };
1665
+ };
1657
1666
  const hintsOf = async (r: (typeof records)[number]) => {
1658
1667
  const embed = {
1659
1668
  url: `${embedBase}/r/#node=${r.pid}&embed&k=${encodeURIComponent(token)}`,
@@ -1673,8 +1682,8 @@ export async function cmdServe(rest: string[]): Promise<number> {
1673
1682
  owner: `agent-yes:${origin}`,
1674
1683
  status: r.status,
1675
1684
  parent: r.parent_pid && byWrapper.has(r.parent_pid) ? nid(byWrapper.get(r.parent_pid)!) : undefined,
1676
- pos: { x: (i % 8) * 320, y: Math.floor(i / 8) * 200 },
1677
- size: { w: 256, h: 128 },
1685
+ pos: { x: (i % 8) * (NODE_W + 64), y: Math.floor(i / 8) * 480 },
1686
+ size: await sizeOf(r.pid),
1678
1687
  inputs: [textIn],
1679
1688
  outputs: [textOut],
1680
1689
  renderHints: await hintsOf(r),
@@ -1692,8 +1701,8 @@ export async function cmdServe(rest: string[]): Promise<number> {
1692
1701
  owner: `agent-yes:${origin}`,
1693
1702
  status: codex?.status ?? "offline",
1694
1703
  parent: undefined,
1695
- pos: { x: 0, y: -240 },
1696
- size: { w: 256, h: 128 },
1704
+ pos: { x: 0, y: -560 },
1705
+ size: codex ? await sizeOf(codex.pid) : { w: NODE_W, h: 260 },
1697
1706
  inputs: [textIn],
1698
1707
  outputs: [textOut],
1699
1708
  renderHints: codex ? await hintsOf(codex) : undefined,
@@ -1,8 +0,0 @@
1
- import "./ts-DHfLvqs_.js";
2
- import "./logger-CDIsZ-Pp.js";
3
- import "./versionChecker-BpVojVKc.js";
4
- import "./pidStore-BIvsBQ8X.js";
5
- import "./globalPidIndex-CoNr7tS8.js";
6
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Dnjsd2rP.js";
7
-
8
- export { SUPPORTED_CLIS };