agent-yes 1.303.0 → 1.303.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.
Files changed (74) hide show
  1. package/dist/{SUPPORTED_CLIS-BvWBFlrN.js → SUPPORTED_CLIS-ByO5twge.js} +3 -3
  2. package/dist/{SUPPORTED_CLIS-CqmE-ESB.js → SUPPORTED_CLIS-Dq9Lq9WJ.js} +2 -2
  3. package/dist/{agentShare-Gb4vxJzE.js → agentShare-suB6yPgO.js} +7 -6
  4. package/dist/{askCli-J9hHcgJz.js → askCli-BU3CNCLU.js} +2 -2
  5. package/dist/{callback-CuIY-75l.js → callback-Ctj3_Wxp.js} +5 -5
  6. package/dist/{callback-ZzRPkYjf.js → callback-D7qfh_7p.js} +7 -6
  7. package/dist/{callbackCore-DXVwvq0X.js → callbackCore-BesbQ6-Z.js} +1 -1
  8. package/dist/{callbackCore-BVEHd6Yt.js → callbackCore-DSJWhqAe.js} +1 -1
  9. package/dist/{channels-BLdkzCbv.js → channels-j5nWuzlQ.js} +2 -2
  10. package/dist/cli.js +11 -11
  11. package/dist/{cmdDsh-CymghOa0.js → cmdDsh-2LP0grim.js} +1 -1
  12. package/dist/{cmdPs-DSKYjOKS.js → cmdPs-wc1j85fi.js} +7 -6
  13. package/dist/{cwdConflictWarn-DXh7qJz6.js → cwdConflictWarn-skQSMwEh.js} +1 -1
  14. package/dist/{cwdPassthroughHint-DADidTOP.js → cwdPassthroughHint-BUbWMoz0.js} +1 -1
  15. package/dist/{expose-ZFn10b_l.js → expose-Dawq1LxC.js} +1 -1
  16. package/dist/{forkNested-DD_4xEL8.js → forkNested-CavHyWzA.js} +1 -1
  17. package/dist/{hist-Dy-JVuUY.js → hist-Cs0KFSUW.js} +1 -1
  18. package/dist/index.js +2 -2
  19. package/dist/{initMsg-BGBIVi_Q.js → initMsg-CcTqFtsp.js} +1 -1
  20. package/dist/{initMsg-NleE4YLm.js → initMsg-D9KJnfgC.js} +1 -1
  21. package/dist/{needsInput-D__56HYf.js → needsInput-hRiWFjGy.js} +1 -1
  22. package/dist/{nodeRuntime-oANVaOqi.js → nodeRuntime-DGMQRTGT.js} +1 -1
  23. package/dist/{notifyDaemon-C_gTWqYZ.js → notifyDaemon-C7GlfJ1E.js} +6 -5
  24. package/dist/{notifyStore-D9cNjXFG.js → notifyStore-C4pH_-zJ.js} +1 -1
  25. package/dist/{notifyStore-DI4iKFut.js → notifyStore-DIfkfKB2.js} +1 -1
  26. package/dist/{openBrowser-B6ZyKxfP.js → openBrowser-1cIo4dJL.js} +1 -1
  27. package/dist/{parentLink-qUr7dRdh.js → parentLink-B58V1RVd.js} +1 -1
  28. package/dist/{parentLink-CB8Nc-dr.js → parentLink-DoEWVGld.js} +1 -1
  29. package/dist/{parentPingLoop-BhVR1EQm.js → parentPingLoop-C73bbmCE.js} +6 -6
  30. package/dist/{procStats-xvUthnOx.js → procStats-BvmrBrOs.js} +1 -1
  31. package/dist/{remotes-COBEhmlr.js → remotes-DevcBeLl.js} +5 -4
  32. package/dist/{remotes-C36aI8Ty.js → remotes-MfdV9M8u.js} +2 -2
  33. package/dist/roomReplyAlias-DFqg_6IU.js +58 -0
  34. package/dist/roomReplyAlias-DuEkSSDI.js +6 -0
  35. package/dist/{rustBinary-eOcvZ5yS.js → rustBinary-7VK7oLlW.js} +24 -3
  36. package/dist/rustBinary-BV4LxMMn.js +4 -0
  37. package/dist/{schedule-E2QlsME5.js → schedule-Dp0qkNO1.js} +6 -6
  38. package/dist/{serve-BWy7zL7j.js → serve-BpOIIOVc.js} +48 -41
  39. package/dist/{serveRust-BgY5Te5E.js → serveRust-CbBrcUrg.js} +2 -2
  40. package/dist/{setup-CD9-RyhT.js → setup-DdIBk6Iv.js} +4 -4
  41. package/dist/{share-530eCWft.js → share-DrS3LYqf.js} +1 -1
  42. package/dist/{share-Jl8Eia9b.js → share-w5oRbvlj.js} +1 -1
  43. package/dist/{shareCmd-Drxb-SjM.js → shareCmd-DDENkBW2.js} +10 -10
  44. package/dist/{spawnGate-CsQ4_N5h.js → spawnGate-DeQBTX-o.js} +1 -1
  45. package/dist/{spawnGate-SX13EqI3.js → spawnGate-lr3tvA6U.js} +2 -2
  46. package/dist/{subcommands-C627cuOl.js → subcommands-DmiswRy4.js} +5 -4
  47. package/dist/{subcommands-Cc6bmEnB.js → subcommands-DxgvDmZX.js} +36 -31
  48. package/dist/{systemPathLink-eWUYHNXm.js → systemPathLink-SjUzgSiq.js} +1 -1
  49. package/dist/{terminal-BddOL2fx.js → terminal-C2h7tpe0.js} +2 -2
  50. package/dist/{todoCli-B62mo9af.js → todoCli-BWm5nZE0.js} +2 -2
  51. package/dist/{todoIdentity-CY1UkEs7.js → todoIdentity-BvXZKWJI.js} +1 -1
  52. package/dist/{tray-DJtC0yib.js → tray-BeRSozJz.js} +1 -1
  53. package/dist/trayApp-C4TAvRvU.js +5 -0
  54. package/dist/{trayApp-D0UYVT6n.js → trayApp-QQjqhDv1.js} +2 -2
  55. package/dist/{ts-Bm6FhYS4.js → ts-6LF7f4fx.js} +5 -5
  56. package/dist/{versionChecker-CFyZKym2.js → versionChecker-Bc62HNf6.js} +2 -2
  57. package/dist/{webrtcLink-CHLgPKWj.js → webrtcLink-SsInrVHU.js} +1 -1
  58. package/dist/{webrtcLink-bWxiCBTV.js → webrtcLink-va_gAR77.js} +1 -1
  59. package/dist/{webrtcRemote-RmkbzY6Y.js → webrtcRemote-BlGyNZDC.js} +2 -2
  60. package/dist/{widget-C6-P26Ue.js → widget-Crb5zeHL.js} +3 -3
  61. package/dist/{workspaceConfig-CWGh8o36.js → workspaceConfig-BLWB5Wu9.js} +1 -1
  62. package/dist/{ws-DmiSL50p.js → ws-BRhPG1Vy.js} +6 -5
  63. package/dist/{ws-DCcdDRXH.js → ws-DIbwNz8Z.js} +3 -3
  64. package/package.json +1 -1
  65. package/ts/buildEnvelope.bun.spec.ts +10 -0
  66. package/ts/buildEnvelope.spec.ts +10 -0
  67. package/ts/remotes.ts +9 -1
  68. package/ts/roomReplyAlias.spec.ts +21 -0
  69. package/ts/roomReplyAlias.ts +67 -0
  70. package/ts/rustBinary.ts +19 -0
  71. package/ts/serve.ts +13 -5
  72. package/ts/subcommands.ts +12 -6
  73. package/dist/rustBinary-Ep0x7WrS.js +0 -4
  74. package/dist/trayApp-CdLbJK5F.js +0 -5
@@ -1,7 +1,7 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { i as getInstalledPackage } from "./versionChecker-CFyZKym2.js";
3
- import { s as findSpawnHiddenLauncher } from "./rustBinary-eOcvZ5yS.js";
4
- import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-Bm6FhYS4.js";
2
+ import { i as getInstalledPackage } from "./versionChecker-Bc62HNf6.js";
3
+ import { c as findSpawnHiddenLauncher } from "./rustBinary-7VK7oLlW.js";
4
+ import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-6LF7f4fx.js";
5
5
  import { t as agentYesHome$1 } from "./agentYesHome-JmJC28YX.js";
6
6
  import { u as removeControlCharacters } from "./todoAutomation-TTp_Qz9G.js";
7
7
  import "./JsonlStore-BpYZZTap.js";
@@ -12,19 +12,20 @@ import { t as pgidForWrapper } from "./reaper-C2cuougX.js";
12
12
  import "./todoStore-C9RTz0Vs.js";
13
13
  import "./e2e-BdLf8DvY.js";
14
14
  import "./configShared-De4bR5hH.js";
15
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CqmE-ESB.js";
16
- import { $ as renderLogTailLines, C as extractBadges, E as extractTaskCounts, J as readLogForRender, P as isSlashCommand, Q as recentReadEdges, R as isUserTyping, T as extractNeedsInput, V as listRecords, X as readPtysize, Y as readNotes, Z as recentMessageEdges, _t as shouldFramePaste, ct as snapshotStatus, et as renderRawLog, f as cliDefaults, gt as framePaste, h as controlCodeFromName, ht as withIpcLock, mt as writeToIpc, nt as resolveOne, tt as renderRawLogLines, vt as TYPING_BADGE, y as deriveLiveStatus } from "./subcommands-Cc6bmEnB.js";
17
- import { c as isTransientLockMkdirError } from "./notifyStore-DI4iKFut.js";
18
- import { i as isWebrtcSpec, o as toWebrtcUrl } from "./webrtcLink-bWxiCBTV.js";
19
- import "./remotes-COBEhmlr.js";
20
- import { i as frameVisitorMessage, s as verifyCapability, t as MAX_CALLBACK_MSG_BYTES } from "./callbackCore-DXVwvq0X.js";
21
- import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-CuIY-75l.js";
22
- import { n as sampleTrees } from "./procStats-xvUthnOx.js";
23
- import { a as getProvisionRoot, d as isProvisionAllowed, f as resolveSpawnCwd, i as getProvisionHook, l as hasProvisionHook, o as getSpawnHook, t as allowsSkipPermissions, u as hasSpawnHook } from "./workspaceConfig-CWGh8o36.js";
24
- import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-oANVaOqi.js";
25
- import { i as importProvisionModule } from "./ws-DCcdDRXH.js";
26
- import { r as spawnRejectionReason } from "./spawnGate-SX13EqI3.js";
27
- import { i as launchTray } from "./trayApp-D0UYVT6n.js";
15
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Dq9Lq9WJ.js";
16
+ import { i as isWebrtcSpec, o as toWebrtcUrl } from "./webrtcLink-va_gAR77.js";
17
+ import "./remotes-DevcBeLl.js";
18
+ import "./roomReplyAlias-DFqg_6IU.js";
19
+ import { $ as renderLogTailLines, C as extractBadges, E as extractTaskCounts, J as readLogForRender, P as isSlashCommand, Q as recentReadEdges, R as isUserTyping, T as extractNeedsInput, V as listRecords, X as readPtysize, Y as readNotes, Z as recentMessageEdges, _t as shouldFramePaste, ct as snapshotStatus, et as renderRawLog, f as cliDefaults, gt as framePaste, h as controlCodeFromName, ht as withIpcLock, mt as writeToIpc, nt as resolveOne, tt as renderRawLogLines, vt as TYPING_BADGE, y as deriveLiveStatus } from "./subcommands-DxgvDmZX.js";
20
+ import { c as isTransientLockMkdirError } from "./notifyStore-DIfkfKB2.js";
21
+ import { i as frameVisitorMessage, s as verifyCapability, t as MAX_CALLBACK_MSG_BYTES } from "./callbackCore-BesbQ6-Z.js";
22
+ import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-Ctj3_Wxp.js";
23
+ import { n as sampleTrees } from "./procStats-BvmrBrOs.js";
24
+ import { a as getProvisionRoot, d as isProvisionAllowed, f as resolveSpawnCwd, i as getProvisionHook, l as hasProvisionHook, o as getSpawnHook, t as allowsSkipPermissions, u as hasSpawnHook } from "./workspaceConfig-BLWB5Wu9.js";
25
+ import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-DGMQRTGT.js";
26
+ import { i as importProvisionModule } from "./ws-DIbwNz8Z.js";
27
+ import { r as spawnRejectionReason } from "./spawnGate-lr3tvA6U.js";
28
+ import { i as launchTray } from "./trayApp-QQjqhDv1.js";
28
29
  import yargs from "yargs";
29
30
  import { appendFile, mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile } from "fs/promises";
30
31
  import { arch, cpus, freemem, homedir, hostname, loadavg, platform, totalmem, uptime, userInfo } from "os";
@@ -1343,8 +1344,8 @@ async function warnStrayServeProcesses() {
1343
1344
  process.stderr.write(`warning: ${stray.length} unmanaged ay serve process(es) running (pid ${pids.join(", ")}) — they will fight the daemon for the WebRTC room; stop them: kill ${pids.join(" ")}\n`);
1344
1345
  }
1345
1346
  async function daemonShareRuntime(args) {
1346
- const { daemonShareRuntime: decide } = await import("./serveRust-BgY5Te5E.js");
1347
- const { findAyrsBinary } = await import("./rustBinary-Ep0x7WrS.js");
1347
+ const { daemonShareRuntime: decide } = await import("./serveRust-CbBrcUrg.js");
1348
+ const { findAyrsBinary } = await import("./rustBinary-BV4LxMMn.js");
1348
1349
  return decide(args, () => !!findAyrsBinary());
1349
1350
  }
1350
1351
  function explicitWebrtcUrl(args) {
@@ -1482,7 +1483,7 @@ async function cmdServeDaemon(sub, args) {
1482
1483
  let shareLinkMinted = false;
1483
1484
  let roomFile = ".share-room";
1484
1485
  if (webrtcDaemon) try {
1485
- const { loadOrCreateShareRoom, shareLinkFromRoomUrl, shareRoomFileName } = await import("./share-530eCWft.js");
1486
+ const { loadOrCreateShareRoom, shareLinkFromRoomUrl, shareRoomFileName } = await import("./share-DrS3LYqf.js");
1486
1487
  const runtime = await daemonShareRuntime(effArgs);
1487
1488
  roomFile = shareRoomFileName(runtime);
1488
1489
  const explicit = explicitWebrtcUrl(effArgs);
@@ -1493,7 +1494,7 @@ async function cmdServeDaemon(sub, args) {
1493
1494
  if (!webrtcDaemon) return;
1494
1495
  if (shareLink) {
1495
1496
  process.stdout.write(`\nshared over WebRTC — open this link (the token is eaten from the URL on open):\n ${shareLink}\n` + (shareLinkMinted ? ` (persistent room — same link across restarts; delete ~/.agent-yes/${roomFile} to rotate)\n` : ``));
1496
- const { offerOpenInBrowser } = await import("./openBrowser-B6ZyKxfP.js");
1497
+ const { offerOpenInBrowser } = await import("./openBrowser-1cIo4dJL.js");
1497
1498
  await offerOpenInBrowser(shareLink);
1498
1499
  } else process.stdout.write(`
1499
1500
  the WebRTC share link carries a secret, so the daemon does NOT log it —
@@ -1642,7 +1643,7 @@ async function cmdServeStatus(args) {
1642
1643
  const token = await loadTokenReadOnly();
1643
1644
  const daemonArgs = mgr ? await readDaemonServeArgs(mgr) : null;
1644
1645
  const installed = daemonArgs !== null;
1645
- const { daemonShareLink, foregroundAyrsShareLink } = await import("./shareCmd-Drxb-SjM.js");
1646
+ const { daemonShareLink, foregroundAyrsShareLink } = await import("./shareCmd-DDENkBW2.js");
1646
1647
  const shareLink = (installed ? await daemonShareLink(daemonArgs) : await foregroundAyrsShareLink()) ?? await readShareLink();
1647
1648
  const running = installed ? await readDaemonRunning(mgr) : false;
1648
1649
  const a = daemonArgs ?? [];
@@ -1773,18 +1774,18 @@ Options:
1773
1774
  return 0;
1774
1775
  }
1775
1776
  {
1776
- const { planRustServe } = await import("./serveRust-BgY5Te5E.js");
1777
+ const { planRustServe } = await import("./serveRust-CbBrcUrg.js");
1777
1778
  const plan = planRustServe(rest);
1778
1779
  if (plan.kind === "rust-only") {
1779
- const { findAyrsBinary } = await import("./rustBinary-Ep0x7WrS.js");
1780
- const ayrs = findAyrsBinary();
1780
+ const { ensureAyrsBinary } = await import("./rustBinary-BV4LxMMn.js");
1781
+ const ayrs = await ensureAyrsBinary();
1781
1782
  if (ayrs) return runAyrsServe(ayrs, plan.argv);
1782
1783
  process.stderr.write(`ay serve: ${plan.feature} needs the Rust daemon (ayrs), which was not found (bun run build:rs, or reinstall)\n`);
1783
1784
  return 1;
1784
1785
  }
1785
1786
  if (plan.kind === "rust") {
1786
- const { findAyrsBinary } = await import("./rustBinary-Ep0x7WrS.js");
1787
- const ayrs = findAyrsBinary();
1787
+ const { ensureAyrsBinary } = await import("./rustBinary-BV4LxMMn.js");
1788
+ const ayrs = await ensureAyrsBinary();
1788
1789
  if (ayrs) return runAyrsServe(ayrs, plan.argv);
1789
1790
  process.stderr.write("ay serve: ayrs binary not found — running the TypeScript server (bun run build:rs, or reinstall, to get the Rust daemon)\n");
1790
1791
  } else {
@@ -2764,7 +2765,7 @@ Options:
2764
2765
  }
2765
2766
  });
2766
2767
  if (req.method === "GET" && p === "/api/ws") {
2767
- const ws = await import("./ws-DmiSL50p.js");
2768
+ const ws = await import("./ws-BRhPG1Vy.js");
2768
2769
  try {
2769
2770
  await ws.loadProvision();
2770
2771
  } catch (e) {
@@ -2784,7 +2785,7 @@ Options:
2784
2785
  if (req.method === "GET" && p === "/api/ws/status") {
2785
2786
  const dirRaw = url.searchParams.get("path");
2786
2787
  if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
2787
- const ws = await import("./ws-DmiSL50p.js");
2788
+ const ws = await import("./ws-BRhPG1Vy.js");
2788
2789
  let prov;
2789
2790
  try {
2790
2791
  prov = await ws.loadProvision();
@@ -2806,7 +2807,7 @@ Options:
2806
2807
  }
2807
2808
  }
2808
2809
  if (req.method === "GET" && p === "/api/ws/repos") {
2809
- const ws = await import("./ws-DmiSL50p.js");
2810
+ const ws = await import("./ws-BRhPG1Vy.js");
2810
2811
  try {
2811
2812
  await ws.loadProvision();
2812
2813
  } catch (e) {
@@ -2887,7 +2888,7 @@ Options:
2887
2888
  const m = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/.exec(repoParam);
2888
2889
  if (!m || m[1] === "." || m[1] === ".." || m[2] === "." || m[2] === "..") return new Response("missing/invalid ?repo=<owner>/<repo>", { status: 400 });
2889
2890
  const [, owner, repo] = m;
2890
- const ws = await import("./ws-DmiSL50p.js");
2891
+ const ws = await import("./ws-BRhPG1Vy.js");
2891
2892
  let prov;
2892
2893
  try {
2893
2894
  prov = await ws.loadProvision();
@@ -3247,7 +3248,13 @@ Options:
3247
3248
  } catch {
3248
3249
  return new Response("invalid JSON body", { status: 400 });
3249
3250
  }
3250
- const { keyword, msg = "", code = "enter", from = null, raw = false } = body;
3251
+ const { keyword, code = "enter", from = null, raw = false } = body;
3252
+ let msg = body.msg ?? "";
3253
+ if (!raw && msg.startsWith("<ay-msg ") && msg.includes("<alias-for-room-")) {
3254
+ const { fillRoomAlias, roomAliases } = await import("./roomReplyAlias-DuEkSSDI.js");
3255
+ const aliases = await roomAliases();
3256
+ msg = fillRoomAlias(msg, (room) => aliases.get(room));
3257
+ }
3251
3258
  if (!keyword || typeof keyword !== "string") return new Response("missing keyword", { status: 400 });
3252
3259
  if (authResult.kind === "scoped" && !await scopedKeywordOk(keyword, authResult.scope)) return new Response("scoped token: not bound to this agent", { status: 403 });
3253
3260
  try {
@@ -3805,7 +3812,7 @@ Options:
3805
3812
  const perm = body.perm ?? "r";
3806
3813
  if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
3807
3814
  try {
3808
- const { createScopedShare } = await import("./agentShare-Gb4vxJzE.js");
3815
+ const { createScopedShare } = await import("./agentShare-suB6yPgO.js");
3809
3816
  const share = await createScopedShare({
3810
3817
  agent: body.agent,
3811
3818
  perm,
@@ -3820,12 +3827,12 @@ Options:
3820
3827
  }
3821
3828
  }
3822
3829
  if (req.method === "GET" && p === "/api/shares") {
3823
- const { listShares } = await import("./agentShare-Gb4vxJzE.js");
3830
+ const { listShares } = await import("./agentShare-suB6yPgO.js");
3824
3831
  return Response.json(listShares());
3825
3832
  }
3826
3833
  const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
3827
3834
  if (req.method === "DELETE" && revokeM) {
3828
- const { revokeShare } = await import("./agentShare-Gb4vxJzE.js");
3835
+ const { revokeShare } = await import("./agentShare-suB6yPgO.js");
3829
3836
  const ok = revokeShare(decodeURIComponent(revokeM[1]));
3830
3837
  return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
3831
3838
  }
@@ -3839,7 +3846,7 @@ Options:
3839
3846
  const port = Number(body.port);
3840
3847
  if (!Number.isInteger(port) || port < 1 || port > 65535) return new Response("valid port required", { status: 400 });
3841
3848
  try {
3842
- const { ensureExposure } = await import("./expose-ZFn10b_l.js");
3849
+ const { ensureExposure } = await import("./expose-Dawq1LxC.js");
3843
3850
  const h = await ensureExposure(port, body.relay);
3844
3851
  return Response.json({
3845
3852
  id: h.id,
@@ -3853,12 +3860,12 @@ Options:
3853
3860
  }
3854
3861
  }
3855
3862
  if (req.method === "GET" && p === "/api/exposes") {
3856
- const { listExposures } = await import("./expose-ZFn10b_l.js");
3863
+ const { listExposures } = await import("./expose-Dawq1LxC.js");
3857
3864
  return Response.json(listExposures());
3858
3865
  }
3859
3866
  const unexposeM = /^\/api\/expose\/(\d+)$/.exec(p);
3860
3867
  if (req.method === "DELETE" && unexposeM) {
3861
- const { stopExposure } = await import("./expose-ZFn10b_l.js");
3868
+ const { stopExposure } = await import("./expose-Dawq1LxC.js");
3862
3869
  const ok = stopExposure(Number(unexposeM[1]));
3863
3870
  return new Response(ok ? "revoked" : "no such exposure", { status: ok ? 200 : 404 });
3864
3871
  }
@@ -4087,7 +4094,7 @@ Options:
4087
4094
  if (wantWebrtc) {
4088
4095
  const explicitUrl = explicitRoomUrl;
4089
4096
  try {
4090
- const { startShare, loadOrCreateShareRoom } = await import("./share-530eCWft.js");
4097
+ const { startShare, loadOrCreateShareRoom } = await import("./share-DrS3LYqf.js");
4091
4098
  const linkFile = path.join(process.env.AGENT_YES_HOME ?? path.join(homedir(), ".agent-yes"), ".share-link");
4092
4099
  const announce = async (room, link, joinLink, rotated) => {
4093
4100
  const lead = rotated ? "the room was rejected by signaling (stale generation) — rotated to a fresh link" : "shared over WebRTC — open this link (the token is eaten from the URL on open)";
@@ -4095,7 +4102,7 @@ Options:
4095
4102
  const persistNote = explicitUrl ? "\n" : ` (persistent room — same link across restarts; delete ~/.agent-yes/.share-room to rotate)\n\n`;
4096
4103
  process.stdout.write(`${wantHttp ? "\n" : ""}${lead}:\n ${link}\n\nto attach ANOTHER machine to this room, open this there (or paste it into\n\`ay serve --webrtc\`) — one machine per link:\n ${joinLink}\n` + persistNote);
4097
4104
  if (!rotated) {
4098
- const { offerOpenInBrowser } = await import("./openBrowser-B6ZyKxfP.js");
4105
+ const { offerOpenInBrowser } = await import("./openBrowser-1cIo4dJL.js");
4099
4106
  await offerOpenInBrowser(link);
4100
4107
  }
4101
4108
  } else {
@@ -4137,7 +4144,7 @@ Options:
4137
4144
  const shutdown = (resolve) => {
4138
4145
  if (heartbeat) clearInterval(heartbeat);
4139
4146
  closeShare?.();
4140
- import("./agentShare-Gb4vxJzE.js").then((m) => m.revokeAllShares()).catch(() => {});
4147
+ import("./agentShare-suB6yPgO.js").then((m) => m.revokeAllShares()).catch(() => {});
4141
4148
  server?.stop();
4142
4149
  Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
4143
4150
  };
@@ -4150,4 +4157,4 @@ Options:
4150
4157
 
4151
4158
  //#endregion
4152
4159
  export { cmdServe, inspectServeDaemon, loadTokenReadOnly, mintScopedTermToken, resolveDaemonHttpBase, resolveLocalServeUrl };
4153
- //# sourceMappingURL=serve-BWy7zL7j.js.map
4160
+ //# sourceMappingURL=serve-BpOIIOVc.js.map
@@ -1,5 +1,5 @@
1
1
  import "./e2e-BdLf8DvY.js";
2
- import { o as toWebrtcUrl } from "./webrtcLink-bWxiCBTV.js";
2
+ import { o as toWebrtcUrl } from "./webrtcLink-va_gAR77.js";
3
3
 
4
4
  //#region ts/serveRust.ts
5
5
  /**
@@ -182,4 +182,4 @@ function daemonShareRuntime(args, hasAyrs, env = process.env) {
182
182
 
183
183
  //#endregion
184
184
  export { daemonShareRuntime, planRustServe };
185
- //# sourceMappingURL=serveRust-BgY5Te5E.js.map
185
+ //# sourceMappingURL=serveRust-CbBrcUrg.js.map
@@ -1,4 +1,4 @@
1
- import { c as getWorkspaceRoot, p as setWorkspaceRoot } from "./workspaceConfig-CWGh8o36.js";
1
+ import { c as getWorkspaceRoot, p as setWorkspaceRoot } from "./workspaceConfig-BLWB5Wu9.js";
2
2
  import { homedir } from "os";
3
3
  import path from "path";
4
4
  import { existsSync } from "node:fs";
@@ -88,7 +88,7 @@ async function cmdSetup(rest) {
88
88
  process.stdout.write(`workspace root: ${abs}\n`);
89
89
  if (!existsSync(abs)) process.stderr.write(` note: that directory doesn't exist yet — create it, or agents spawned there will fail\n`);
90
90
  try {
91
- const { linkBunBinsToSystemPath } = await import("./systemPathLink-eWUYHNXm.js");
91
+ const { linkBunBinsToSystemPath } = await import("./systemPathLink-SjUzgSiq.js");
92
92
  const r = linkBunBinsToSystemPath();
93
93
  if (r && (r.linked.length || r.refreshed.length)) {
94
94
  const n = r.linked.length + r.refreshed.length;
@@ -97,7 +97,7 @@ async function cmdSetup(rest) {
97
97
  } catch {}
98
98
  if (noShare) return 0;
99
99
  process.stdout.write(`\nsharing this machine to agent-yes.com…\n`);
100
- const { cmdServe } = await import("./serve-BWy7zL7j.js");
100
+ const { cmdServe } = await import("./serve-BpOIIOVc.js");
101
101
  return cmdServe([
102
102
  "install",
103
103
  "--share",
@@ -107,4 +107,4 @@ async function cmdSetup(rest) {
107
107
 
108
108
  //#endregion
109
109
  export { cmdSetup };
110
- //# sourceMappingURL=setup-CD9-RyhT.js.map
110
+ //# sourceMappingURL=setup-DdIBk6Iv.js.map
@@ -1,4 +1,4 @@
1
1
  import "./e2e-BdLf8DvY.js";
2
- import { a as readShareRoom, c as shareRoomPath, i as loadOrCreateShareRoom, l as startShare, n as getIceServers, o as shareLinkFromRoomUrl, r as importRTC, s as shareRoomFileName, t as formatRoomLink } from "./share-Jl8Eia9b.js";
2
+ import { a as readShareRoom, c as shareRoomPath, i as loadOrCreateShareRoom, l as startShare, n as getIceServers, o as shareLinkFromRoomUrl, r as importRTC, s as shareRoomFileName, t as formatRoomLink } from "./share-w5oRbvlj.js";
3
3
 
4
4
  export { getIceServers, importRTC, loadOrCreateShareRoom, readShareRoom, shareLinkFromRoomUrl, shareRoomFileName, startShare };
@@ -642,4 +642,4 @@ async function startShare(opts) {
642
642
 
643
643
  //#endregion
644
644
  export { readShareRoom as a, shareRoomPath as c, loadOrCreateShareRoom as i, startShare as l, getIceServers as n, shareLinkFromRoomUrl as o, importRTC as r, shareRoomFileName as s, formatRoomLink as t };
645
- //# sourceMappingURL=share-Jl8Eia9b.js.map
645
+ //# sourceMappingURL=share-w5oRbvlj.js.map
@@ -243,12 +243,12 @@ shown first and needs a y at a [y/N] prompt.
243
243
  Options:
244
244
  --port N HTTP port (default: ${DEFAULT_SHARE_PORT}, or the daemon's)\n --path /ay tailscale mount path (default: ${DEFAULT_TS_PATH})\n -y, --yes approve the shown commands without prompting\n --json print {mode, url} as JSON\n\nThe URL carries this host's serve token: whoever holds it can read and steer\nevery agent here. Rotate: rm ~/.agent-yes/.serve-token && ay serve install\n`;
245
245
  async function shareRuntimeOf(args) {
246
- const { daemonShareRuntime } = await import("./serveRust-BgY5Te5E.js");
247
- const { findAyrsBinary } = await import("./rustBinary-Ep0x7WrS.js");
246
+ const { daemonShareRuntime } = await import("./serveRust-CbBrcUrg.js");
247
+ const { findAyrsBinary } = await import("./rustBinary-BV4LxMMn.js");
248
248
  return daemonShareRuntime(args ?? [], () => !!findAyrsBinary());
249
249
  }
250
250
  async function daemonShareLink(args) {
251
- const { readShareRoom, shareLinkFromRoomUrl } = await import("./share-530eCWft.js");
251
+ const { readShareRoom, shareLinkFromRoomUrl } = await import("./share-DrS3LYqf.js");
252
252
  const room = await readShareRoom(await shareRuntimeOf(args));
253
253
  if (!room) return null;
254
254
  try {
@@ -258,9 +258,9 @@ async function daemonShareLink(args) {
258
258
  }
259
259
  }
260
260
  async function foregroundAyrsShareLink() {
261
- const { readShareRoom, shareLinkFromRoomUrl } = await import("./share-530eCWft.js");
262
- const { parseWebrtcLink } = await import("./webrtcLink-CHLgPKWj.js");
263
- const { isPidAlive } = await import("./subcommands-C627cuOl.js");
261
+ const { readShareRoom, shareLinkFromRoomUrl } = await import("./share-DrS3LYqf.js");
262
+ const { parseWebrtcLink } = await import("./webrtcLink-SsInrVHU.js");
263
+ const { isPidAlive } = await import("./subcommands-DmiswRy4.js");
264
264
  const { agentYesHome } = await import("./agentYesHome-CYNNNP71.js");
265
265
  const { readFile } = await import("fs/promises");
266
266
  const path = await import("path");
@@ -276,7 +276,7 @@ async function foregroundAyrsShareLink() {
276
276
  }
277
277
  }
278
278
  async function cmdShareStatus(mount) {
279
- const { inspectServeDaemon } = await import("./serve-BWy7zL7j.js");
279
+ const { inspectServeDaemon } = await import("./serve-BpOIIOVc.js");
280
280
  const [d, ts] = await Promise.all([inspectServeDaemon(), detectTailscale()]);
281
281
  const line = (k, v) => process.stdout.write(`${k.padEnd(11)}${v}\n`);
282
282
  if (d.args === null) {
@@ -323,7 +323,7 @@ async function cmdShare(rest) {
323
323
  process.stderr.write(`ay share: unknown mode '${mode}' — one of ${SHARE_MODES.join(", ")}\n`);
324
324
  return 1;
325
325
  }
326
- const { inspectServeDaemon, cmdServe } = await import("./serve-BWy7zL7j.js");
326
+ const { inspectServeDaemon, cmdServe } = await import("./serve-BpOIIOVc.js");
327
327
  const [daemon, ts] = await Promise.all([inspectServeDaemon(), detectTailscale()]);
328
328
  const lanIp = pickLanIp(networkInterfaces());
329
329
  if (!mode) {
@@ -414,7 +414,7 @@ async function cmdShare(rest) {
414
414
  let url;
415
415
  const port = state.port ?? (portArg ? Number(portArg) : DEFAULT_SHARE_PORT);
416
416
  if (mode === "webrtc") {
417
- const { loadOrCreateShareRoom, shareLinkFromRoomUrl } = await import("./share-530eCWft.js");
417
+ const { loadOrCreateShareRoom, shareLinkFromRoomUrl } = await import("./share-DrS3LYqf.js");
418
418
  url = shareLinkFromRoomUrl(await loadOrCreateShareRoom(void 0, await shareRuntimeOf(state.args)));
419
419
  } else if (mode === "portless") url = state.consoleUrl ?? httpShareUrl("https://agent-yes.localhost", state.token);
420
420
  else if (mode === "local") url = httpShareUrl(`http://127.0.0.1:${port}`, state.token);
@@ -448,4 +448,4 @@ async function cmdShare(rest) {
448
448
 
449
449
  //#endregion
450
450
  export { cmdShare, daemonShareLink, foregroundAyrsShareLink };
451
- //# sourceMappingURL=shareCmd-Drxb-SjM.js.map
451
+ //# sourceMappingURL=shareCmd-DDENkBW2.js.map
@@ -1,5 +1,5 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-CRB5KtyL.js";
3
- import { i as waitForSpawnCapacity, n as spawnGateEnabled, r as spawnRejectionReason, t as memAvailableMb } from "./spawnGate-SX13EqI3.js";
3
+ import { i as waitForSpawnCapacity, n as spawnGateEnabled, r as spawnRejectionReason, t as memAvailableMb } from "./spawnGate-lr3tvA6U.js";
4
4
 
5
5
  export { waitForSpawnCapacity };
@@ -1,5 +1,5 @@
1
1
  import { a as readGlobalPids } from "./globalPidIndex-CRB5KtyL.js";
2
- import { n as getMaxAgents, r as getMinFreeMb, s as getSpawnWaitMs } from "./workspaceConfig-CWGh8o36.js";
2
+ import { n as getMaxAgents, r as getMinFreeMb, s as getSpawnWaitMs } from "./workspaceConfig-BLWB5Wu9.js";
3
3
  import { readFile } from "fs/promises";
4
4
 
5
5
  //#region ts/spawnGate.ts
@@ -104,4 +104,4 @@ async function waitForSpawnCapacity(opts) {
104
104
 
105
105
  //#endregion
106
106
  export { waitForSpawnCapacity as i, spawnGateEnabled as n, spawnRejectionReason as r, memAvailableMb as t };
107
- //# sourceMappingURL=spawnGate-SX13EqI3.js.map
107
+ //# sourceMappingURL=spawnGate-lr3tvA6U.js.map
@@ -5,9 +5,10 @@ import "./pidStore-433kvh9D.js";
5
5
  import "./messageLog-Dq_ka-Bt.js";
6
6
  import "./e2e-BdLf8DvY.js";
7
7
  import "./configShared-De4bR5hH.js";
8
- import { $ as renderLogTailLines, A as isAgentStuck, B as lastStdinAt, C as extractBadges, D as finalizedLines, E as extractTaskCounts, F as isSubcommand, G as probeStdinReachable, H as matchKeyword, I as isUnknownManagerToken, J as readLogForRender, K as readAgentPtysize, L as isUnreachableWriteErrno, M as isExitRequest, N as isPidAlive, O as inspectSubmission, P as isSlashCommand, Q as recentReadEdges, R as isUserTyping, S as envelopeCostFor, T as extractNeedsInput, U as menuSelectKeys, V as listRecords, W as ownedCollapsedPaste, X as readPtysize, Y as readNotes, Z as recentMessageEdges, _ as cwdLabel, a as READ_WINDOW_MS, at as restartHintLines, b as drainerLauncher, c as SEND_EXIT_UNREACHABLE, ct as snapshotStatus, d as buildEnvelope, dt as submitAndConfirm, et as renderRawLog, f as cliDefaults, ft as waitForLogQuiet, g as cursorAbs, h as controlCodeFromName, i as READ_PAGE_DEFAULT, it as resolveResumeArgs, j as isBareManagerInvocation, k as isAgentIdShaped, l as TYPING_WINDOW_MS, lt as stdinActivityPath, m as confirmStdinUnreachable, mt as writeToIpc, n as GRACEFUL_EXIT_COMMANDS, nt as resolveOne, o as SEND_BODY_MAX_CHARS, ot as runSubcommand, p as cmdHelp, pt as writeKeysPaced, q as readComposerState, r as MAX_RENDER_BYTES, rt as resolveReadWindow, s as SEND_EXIT_QUEUED, st as sendPayloadCapError, t as COMPOSER_WINDOWS, tt as renderRawLogLines, u as backoffWhileTyping, ut as stopTipForCli, v as deriveLiveState, w as extractMenu, x as envelopeAttribution, y as deriveLiveStatus, z as lastReadAt } from "./subcommands-Cc6bmEnB.js";
9
- import "./notifyStore-DI4iKFut.js";
10
- import "./webrtcLink-bWxiCBTV.js";
11
- import "./remotes-COBEhmlr.js";
8
+ import "./webrtcLink-va_gAR77.js";
9
+ import "./remotes-DevcBeLl.js";
10
+ import "./roomReplyAlias-DFqg_6IU.js";
11
+ import { $ as renderLogTailLines, A as isAgentStuck, B as lastStdinAt, C as extractBadges, D as finalizedLines, E as extractTaskCounts, F as isSubcommand, G as probeStdinReachable, H as matchKeyword, I as isUnknownManagerToken, J as readLogForRender, K as readAgentPtysize, L as isUnreachableWriteErrno, M as isExitRequest, N as isPidAlive, O as inspectSubmission, P as isSlashCommand, Q as recentReadEdges, R as isUserTyping, S as envelopeCostFor, T as extractNeedsInput, U as menuSelectKeys, V as listRecords, W as ownedCollapsedPaste, X as readPtysize, Y as readNotes, Z as recentMessageEdges, _ as cwdLabel, a as READ_WINDOW_MS, at as restartHintLines, b as drainerLauncher, c as SEND_EXIT_UNREACHABLE, ct as snapshotStatus, d as buildEnvelope, dt as submitAndConfirm, et as renderRawLog, f as cliDefaults, ft as waitForLogQuiet, g as cursorAbs, h as controlCodeFromName, i as READ_PAGE_DEFAULT, it as resolveResumeArgs, j as isBareManagerInvocation, k as isAgentIdShaped, l as TYPING_WINDOW_MS, lt as stdinActivityPath, m as confirmStdinUnreachable, mt as writeToIpc, n as GRACEFUL_EXIT_COMMANDS, nt as resolveOne, o as SEND_BODY_MAX_CHARS, ot as runSubcommand, p as cmdHelp, pt as writeKeysPaced, q as readComposerState, r as MAX_RENDER_BYTES, rt as resolveReadWindow, s as SEND_EXIT_QUEUED, st as sendPayloadCapError, t as COMPOSER_WINDOWS, tt as renderRawLogLines, u as backoffWhileTyping, ut as stopTipForCli, v as deriveLiveState, w as extractMenu, x as envelopeAttribution, y as deriveLiveStatus, z as lastReadAt } from "./subcommands-DxgvDmZX.js";
12
+ import "./notifyStore-DIfkfKB2.js";
12
13
 
13
14
  export { READ_WINDOW_MS, cmdHelp, isBareManagerInvocation, isPidAlive, isSubcommand, isUnknownManagerToken, lastReadAt, runSubcommand };
@@ -5,10 +5,11 @@ import { t as PidStore } from "./pidStore-433kvh9D.js";
5
5
  import { a as recordOutbox, i as recordMessage, n as readMailbox, o as senderLabel, t as partyMatches } from "./messageLog-Dq_ka-Bt.js";
6
6
  import { t as loadSharedCliDefaults } from "./configShared-De4bR5hH.js";
7
7
  import { n as localHost, r as localUser, t as formatIdentity } from "./identity-Bk-aG_xl.js";
8
- import { n as isWorkingScreen, r as parseMenu, t as classifyNeedsInput } from "./needsInput-D__56HYf.js";
9
- import { S as postmortemStartedAt, _ as filterSinceSeq, a as getCursor, b as maxSeq, f as readInbox, o as heartbeatWatcher, p as setCursor, r as clearWatcher, s as hostId, v as filterSinceTs, y as filterUnread } from "./notifyStore-DI4iKFut.js";
10
- import { i as isWebrtcSpec } from "./webrtcLink-bWxiCBTV.js";
11
- import { l as readRemotes, u as resolveRemoteSpec } from "./remotes-COBEhmlr.js";
8
+ import { i as isWebrtcSpec } from "./webrtcLink-va_gAR77.js";
9
+ import { l as readRemotes, u as resolveRemoteSpec } from "./remotes-DevcBeLl.js";
10
+ import { n as hostedRoomMember, r as roomAliasPlaceholder } from "./roomReplyAlias-DFqg_6IU.js";
11
+ import { n as isWorkingScreen, r as parseMenu, t as classifyNeedsInput } from "./needsInput-hRiWFjGy.js";
12
+ import { S as postmortemStartedAt, _ as filterSinceSeq, a as getCursor, b as maxSeq, f as readInbox, o as heartbeatWatcher, p as setCursor, r as clearWatcher, s as hostId, v as filterSinceTs, y as filterUnread } from "./notifyStore-DIfkfKB2.js";
12
13
  import { execFile } from "child_process";
13
14
  import ms from "ms";
14
15
  import yargs from "yargs";
@@ -2001,7 +2002,8 @@ const SEND_BODY_MAX_CHARS = 1024;
2001
2002
  function buildEnvelope(opts) {
2002
2003
  const attrib = envelopeAttribution(opts.via);
2003
2004
  const via = opts.remote ? " via remote" : "";
2004
- const reply = opts.remote ? `reply: ay send <your-remote-alias-for-${opts.remote.senderHost}>:${opts.replyTarget} "..."` : `reply: ay send ${opts.replyTarget} "..."`;
2005
+ const room = opts.remote?.room;
2006
+ const reply = room ? `reply: ay send ${roomAliasPlaceholder(room.id)}:${room.member}:${opts.replyTarget} "..."` : opts.remote ? `reply: ay send <your-remote-alias-for-${opts.remote.senderHost}>:${opts.replyTarget} "..."` : `reply: ay send ${opts.replyTarget} "..."`;
2005
2007
  return {
2006
2008
  prefix: `<ay-msg ${opts.nonce} from ${opts.cli}${attrib}${via} ${opts.identity} — ${reply}>\n`,
2007
2009
  suffix: `\n</ay-msg ${opts.nonce}>`
@@ -2143,7 +2145,7 @@ async function runSubcommand(argv) {
2143
2145
  switch (sub) {
2144
2146
  case "ls":
2145
2147
  case "list": return await cmdLs(rest);
2146
- case "ps": return await (await import("./cmdPs-DSKYjOKS.js")).cmdPs(rest);
2148
+ case "ps": return await (await import("./cmdPs-wc1j85fi.js")).cmdPs(rest);
2147
2149
  case "status": return await cmdStatus(rest);
2148
2150
  case "whoami": return await cmdWhoami(rest);
2149
2151
  case "result": return await cmdResult(rest);
@@ -2154,7 +2156,7 @@ async function runSubcommand(argv) {
2154
2156
  case "tail": return await cmdRead(rest, { mode: "tail" });
2155
2157
  case "head": return await cmdRead(rest, { mode: "head" });
2156
2158
  case "hist":
2157
- case "history": return await (await import("./hist-Dy-JVuUY.js")).cmdHist(rest);
2159
+ case "history": return await (await import("./hist-Cs0KFSUW.js")).cmdHist(rest);
2158
2160
  case "send": return await cmdSend(rest);
2159
2161
  case "send-drain": return await cmdSendDrain(rest);
2160
2162
  case "ls-refresh": return await cmdLsRefresh(rest);
@@ -2169,7 +2171,7 @@ async function runSubcommand(argv) {
2169
2171
  case "note": return await cmdNote(rest);
2170
2172
  case "ask":
2171
2173
  case "answer": {
2172
- const { runAskSubcommand, runAnswerSubcommand } = await import("./askCli-J9hHcgJz.js");
2174
+ const { runAskSubcommand, runAnswerSubcommand } = await import("./askCli-BU3CNCLU.js");
2173
2175
  const deps = {
2174
2176
  resolveAgent: (keyword) => resolveOne(keyword, {
2175
2177
  all: true,
@@ -2183,75 +2185,75 @@ async function runSubcommand(argv) {
2183
2185
  return sub === "ask" ? await runAskSubcommand(rest, deps) : await runAnswerSubcommand(rest, deps);
2184
2186
  }
2185
2187
  case "todo": {
2186
- const { runTodoSubcommand } = await import("./todoCli-B62mo9af.js");
2188
+ const { runTodoSubcommand } = await import("./todoCli-BWm5nZE0.js");
2187
2189
  return runTodoSubcommand(rest);
2188
2190
  }
2189
2191
  case "ch":
2190
2192
  case "channels": {
2191
- const { cmdCh } = await import("./channels-BLdkzCbv.js");
2193
+ const { cmdCh } = await import("./channels-j5nWuzlQ.js");
2192
2194
  return cmdCh(rest);
2193
2195
  }
2194
2196
  case "term": {
2195
- const { cmdTerm } = await import("./terminal-BddOL2fx.js");
2197
+ const { cmdTerm } = await import("./terminal-C2h7tpe0.js");
2196
2198
  return cmdTerm(rest);
2197
2199
  }
2198
2200
  case "widget": {
2199
- const { cmdWidget } = await import("./widget-C6-P26Ue.js");
2201
+ const { cmdWidget } = await import("./widget-Crb5zeHL.js");
2200
2202
  return cmdWidget(rest);
2201
2203
  }
2202
2204
  case "mint": {
2203
- const { cmdMint } = await import("./widget-C6-P26Ue.js");
2205
+ const { cmdMint } = await import("./widget-Crb5zeHL.js");
2204
2206
  return cmdMint(rest);
2205
2207
  }
2206
2208
  case "serve": {
2207
- const { cmdServe } = await import("./serve-BWy7zL7j.js");
2209
+ const { cmdServe } = await import("./serve-BpOIIOVc.js");
2208
2210
  return cmdServe(rest);
2209
2211
  }
2210
2212
  case "tray": {
2211
- const { cmdTray } = await import("./trayApp-CdLbJK5F.js");
2213
+ const { cmdTray } = await import("./trayApp-C4TAvRvU.js");
2212
2214
  return cmdTray(rest);
2213
2215
  }
2214
2216
  case "setup": {
2215
- const { cmdSetup } = await import("./setup-CD9-RyhT.js");
2217
+ const { cmdSetup } = await import("./setup-DdIBk6Iv.js");
2216
2218
  return cmdSetup(rest);
2217
2219
  }
2218
2220
  case "ws": {
2219
- const { cmdWs } = await import("./ws-DmiSL50p.js");
2221
+ const { cmdWs } = await import("./ws-BRhPG1Vy.js");
2220
2222
  return cmdWs(rest);
2221
2223
  }
2222
2224
  case "schedule": {
2223
- const { cmdSchedule } = await import("./schedule-E2QlsME5.js");
2225
+ const { cmdSchedule } = await import("./schedule-Dp0qkNO1.js");
2224
2226
  return cmdSchedule(rest);
2225
2227
  }
2226
2228
  case "remote": {
2227
- const { cmdRemote } = await import("./remotes-C36aI8Ty.js");
2229
+ const { cmdRemote } = await import("./remotes-MfdV9M8u.js");
2228
2230
  return cmdRemote(rest);
2229
2231
  }
2230
2232
  case "share": {
2231
- const { cmdShare } = await import("./shareCmd-Drxb-SjM.js");
2233
+ const { cmdShare } = await import("./shareCmd-DDENkBW2.js");
2232
2234
  return cmdShare(rest);
2233
2235
  }
2234
2236
  case "connect": {
2235
- const { cmdConnect } = await import("./remotes-C36aI8Ty.js");
2237
+ const { cmdConnect } = await import("./remotes-MfdV9M8u.js");
2236
2238
  return cmdConnect(rest);
2237
2239
  }
2238
2240
  case "expose": {
2239
- const { cmdExpose } = await import("./expose-ZFn10b_l.js");
2241
+ const { cmdExpose } = await import("./expose-Dawq1LxC.js");
2240
2242
  return cmdExpose(rest);
2241
2243
  }
2242
2244
  case "callback": {
2243
- const { cmdCallback } = await import("./callback-ZzRPkYjf.js");
2245
+ const { cmdCallback } = await import("./callback-D7qfh_7p.js");
2244
2246
  return cmdCallback(rest);
2245
2247
  }
2246
2248
  case "reap":
2247
2249
  await (await import("./reaper-DsZhX5FH.js")).sweep();
2248
2250
  return 0;
2249
2251
  case "dsh-legacy": {
2250
- const { cmdDsh } = await import("./cmdDsh-CymghOa0.js");
2252
+ const { cmdDsh } = await import("./cmdDsh-2LP0grim.js");
2251
2253
  return await cmdDsh(rest);
2252
2254
  }
2253
2255
  case "gc": {
2254
- const { gcOldBinaryDirs } = await import("./rustBinary-Ep0x7WrS.js");
2256
+ const { gcOldBinaryDirs } = await import("./rustBinary-BV4LxMMn.js");
2255
2257
  const { gcLogs } = await import("./globalPidIndex-BftWlg2V.js");
2256
2258
  const bins = gcOldBinaryDirs();
2257
2259
  const logs = await gcLogs();
@@ -2757,7 +2759,10 @@ async function runRemoteSend(remote, msg, code, raw = false) {
2757
2759
  }),
2758
2760
  replyTarget: sender.agent.agent_id || sender.agent.pid,
2759
2761
  via: sender.via,
2760
- remote: { senderHost: localHost() }
2762
+ remote: {
2763
+ senderHost: localHost(),
2764
+ room: await hostedRoomMember(remote.room)
2765
+ }
2761
2766
  });
2762
2767
  wire = prefix + msg + suffix;
2763
2768
  }
@@ -2857,7 +2862,7 @@ async function fetchRemoteRecordsRaw(url, token, opts, onReachable) {
2857
2862
  let base = url;
2858
2863
  let bearer = token;
2859
2864
  if (isWebrtcSpec(url)) {
2860
- const { startWebrtcBridge } = await import("./webrtcRemote-RmkbzY6Y.js");
2865
+ const { startWebrtcBridge } = await import("./webrtcRemote-BlGyNZDC.js");
2861
2866
  bridge = await startWebrtcBridge(url);
2862
2867
  base = bridge.baseUrl;
2863
2868
  bearer = bridge.token;
@@ -6008,7 +6013,7 @@ async function cmdAttach(rest) {
6008
6013
  const winsizeDir = path.join(ayHome, "winsize");
6009
6014
  await mkdir(winsizeDir, { recursive: true });
6010
6015
  const winsizePath = path.join(winsizeDir, String(record.pid));
6011
- const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-BWy7zL7j.js");
6016
+ const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-BpOIIOVc.js");
6012
6017
  const daemonBase = await resolveDaemonHttpBase().catch(() => null);
6013
6018
  const daemonToken = daemonBase ? await loadTokenReadOnly().catch(() => null) ?? "" : "";
6014
6019
  const capViewer = `attach:${process.pid}`;
@@ -6757,7 +6762,7 @@ async function cmdNotify(rest) {
6757
6762
  }
6758
6763
  const ensure = async () => {
6759
6764
  if (!argv["ensure-daemon"]) return;
6760
- const { ensureDaemon } = await import("./notifyDaemon-C_gTWqYZ.js");
6765
+ const { ensureDaemon } = await import("./notifyDaemon-C7GlfJ1E.js");
6761
6766
  await ensureDaemon().catch(() => null);
6762
6767
  };
6763
6768
  await heartbeatWatcher(parent, selfStartedAt);
@@ -6831,7 +6836,7 @@ async function cmdNotifyCursor(args) {
6831
6836
  }
6832
6837
  async function cmdNotifyd(rest) {
6833
6838
  const sub = rest[0] ?? "status";
6834
- const daemon = await import("./notifyDaemon-C_gTWqYZ.js");
6839
+ const daemon = await import("./notifyDaemon-C7GlfJ1E.js");
6835
6840
  switch (sub) {
6836
6841
  case "run": return daemon.runDaemon();
6837
6842
  case "once": return daemon.runDaemon({ once: true });
@@ -6858,4 +6863,4 @@ async function cmdNotifyd(rest) {
6858
6863
 
6859
6864
  //#endregion
6860
6865
  export { renderLogTailLines as $, isAgentStuck as A, lastStdinAt as B, extractBadges as C, finalizedLines as D, extractTaskCounts as E, isSubcommand as F, probeStdinReachable as G, matchKeyword as H, isUnknownManagerToken as I, readLogForRender as J, readAgentPtysize as K, isUnreachableWriteErrno as L, isExitRequest as M, isPidAlive as N, inspectSubmission as O, isSlashCommand as P, recentReadEdges as Q, isUserTyping as R, envelopeCostFor as S, extractNeedsInput as T, menuSelectKeys as U, listRecords as V, ownedCollapsedPaste as W, readPtysize as X, readNotes as Y, recentMessageEdges as Z, cwdLabel as _, shouldFramePaste as _t, READ_WINDOW_MS as a, restartHintLines as at, drainerLauncher as b, flattenForest as bt, SEND_EXIT_UNREACHABLE as c, snapshotStatus as ct, buildEnvelope as d, submitAndConfirm as dt, renderRawLog as et, cliDefaults as f, waitForLogQuiet as ft, cursorAbs as g, framePaste as gt, controlCodeFromName as h, withIpcLock as ht, READ_PAGE_DEFAULT as i, resolveResumeArgs as it, isBareManagerInvocation as j, isAgentIdShaped as k, TYPING_WINDOW_MS as l, stdinActivityPath as lt, confirmStdinUnreachable as m, writeToIpc as mt, GRACEFUL_EXIT_COMMANDS as n, resolveOne as nt, SEND_BODY_MAX_CHARS as o, runSubcommand as ot, cmdHelp as p, writeKeysPaced as pt, readComposerState as q, MAX_RENDER_BYTES as r, resolveReadWindow as rt, SEND_EXIT_QUEUED as s, sendPayloadCapError as st, COMPOSER_WINDOWS as t, renderRawLogLines as tt, backoffWhileTyping as u, stopTipForCli as ut, deriveLiveState as v, TYPING_BADGE as vt, extractMenu as w, envelopeAttribution as x, deriveLiveStatus as y, buildAgentForest as yt, lastReadAt as z };
6861
- //# sourceMappingURL=subcommands-Cc6bmEnB.js.map
6866
+ //# sourceMappingURL=subcommands-DxgvDmZX.js.map
@@ -88,4 +88,4 @@ function linkBunBinsToSystemPath(opts) {
88
88
 
89
89
  //#endregion
90
90
  export { linkBunBinsToSystemPath };
91
- //# sourceMappingURL=systemPathLink-eWUYHNXm.js.map
91
+ //# sourceMappingURL=systemPathLink-SjUzgSiq.js.map
@@ -98,7 +98,7 @@ async function cmdTermMint(args) {
98
98
  if (flags.ro && flags.interactive) throw new Error("--ro and --interactive are mutually exclusive");
99
99
  const ttlSec = parseTtlSec(typeof flags.ttl === "string" ? flags.ttl : "15m");
100
100
  const canSend = flags.interactive === true;
101
- const { mintScopedTermToken } = await import("./serve-BWy7zL7j.js");
101
+ const { mintScopedTermToken } = await import("./serve-BpOIIOVc.js");
102
102
  const r = await mintScopedTermToken(pid, {
103
103
  ttlSec,
104
104
  canSend
@@ -135,4 +135,4 @@ async function cmdTerm(args) {
135
135
 
136
136
  //#endregion
137
137
  export { cmdTerm };
138
- //# sourceMappingURL=terminal-BddOL2fx.js.map
138
+ //# sourceMappingURL=terminal-C2h7tpe0.js.map