agent-yes 1.252.0 → 1.253.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-hMS7Hkpn.js";
3
- import "./ts-1rQZA3oo.js";
2
+ import "./versionChecker-o3gSKYQw.js";
3
+ import "./ts-HPsoqAas.js";
4
4
  import "./todoAutomation-Buo457VO.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
6
  import "./globalPidIndex-D9DOSd-c.js";
7
7
  import "./pidStore-vnX0bgra.js";
8
8
  import "./messageLog-C-YIzhRj.js";
9
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-kkxFgTKh.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DxMhp5DJ.js";
10
10
 
11
11
  export { SUPPORTED_CLIS };
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-1rQZA3oo.js";
1
+ import { t as CLIS_CONFIG } from "./ts-HPsoqAas.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-kkxFgTKh.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-DxMhp5DJ.js.map
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
3
3
  import "./messageLog-C-YIzhRj.js";
4
4
  import "./e2e-CEIdJGZ7.js";
5
5
  import "./configShared-IBbnn9b8.js";
6
- import { P as resolveOne } from "./subcommands-DeUbXdTK.js";
6
+ import { P as resolveOne } from "./subcommands-rCZF2xXL.js";
7
7
  import "./webrtcLink-BMYneHbu.js";
8
8
  import "./remotes-a0bGDae9.js";
9
9
  import { a as startShare } from "./share-BGl3wutJ.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-BXLfevNX.js.map
232
+ //# sourceMappingURL=agentShare-DwM61sza.js.map
@@ -1,5 +1,5 @@
1
1
  import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
2
- import { P as resolveOne } from "./subcommands-DeUbXdTK.js";
2
+ import { P as resolveOne } from "./subcommands-rCZF2xXL.js";
3
3
  import { a as mintCapability, o as parseExpires } from "./callbackCore-Dd28_cBM.js";
4
4
  import { randomBytes } from "node:crypto";
5
5
  import { chmodSync, readFileSync, renameSync, writeFileSync } from "node:fs";
@@ -72,7 +72,7 @@ async function resolveBase(flag) {
72
72
  if (flag) return flag;
73
73
  if (process.env.AGENT_YES_CALLBACK_BASE) return process.env.AGENT_YES_CALLBACK_BASE;
74
74
  try {
75
- const { resolveLocalServeUrl } = await import("./serve-H8y95HWl.js");
75
+ const { resolveLocalServeUrl } = await import("./serve-DSJOkyoR.js");
76
76
  const url = await resolveLocalServeUrl();
77
77
  if (url) return url;
78
78
  } catch {}
@@ -187,4 +187,4 @@ async function cmdCallback(rest) {
187
187
 
188
188
  //#endregion
189
189
  export { loadOrCreateCallbackSecret as i, isCallbackRevoked as n, loadCallbackSecretReadOnly as r, cmdCallback as t };
190
- //# sourceMappingURL=callback-D63YERtT.js.map
190
+ //# sourceMappingURL=callback-C-Gzi5uO.js.map
@@ -3,10 +3,10 @@ import "./globalPidIndex-D9DOSd-c.js";
3
3
  import "./messageLog-C-YIzhRj.js";
4
4
  import "./e2e-CEIdJGZ7.js";
5
5
  import "./configShared-IBbnn9b8.js";
6
- import "./subcommands-DeUbXdTK.js";
6
+ import "./subcommands-rCZF2xXL.js";
7
7
  import "./webrtcLink-BMYneHbu.js";
8
8
  import "./remotes-a0bGDae9.js";
9
9
  import "./callbackCore-Dd28_cBM.js";
10
- import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-D63YERtT.js";
10
+ import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-C-Gzi5uO.js";
11
11
 
12
12
  export { cmdCallback };
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-hMS7Hkpn.js";
5
- import { r as getRustBinary } from "./rustBinary-BBOpYC-y.js";
4
+ import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-o3gSKYQw.js";
5
+ import { r as getRustBinary } from "./rustBinary-tOgWamgf.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, isUnknownManagerToken } = await import("./subcommands-BGrZZAZ2.js");
288
+ const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken } = await import("./subcommands-DLoxeSaD.js");
289
289
  if (isHelpFlag && process.argv.length === 3) {
290
290
  await cmdHelp(managerCommands);
291
291
  process.exit(0);
@@ -295,7 +295,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
295
295
  process.exit(code ?? 0);
296
296
  }
297
297
  {
298
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-ZDqi9LbP.js");
298
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-C3NCuiuo.js");
299
299
  if (isUnknownManagerToken(rawArg, managerCommands, SUPPORTED_CLIS)) {
300
300
  process.stderr.write(`ay: unknown subcommand or CLI '${rawArg}'.\n See 'ay help' for subcommands. To run an agent, name a CLI:\n 'ay <cli> …' (e.g. 'ay claude …') or 'ay --cli <cli> …'.\n`);
301
301
  process.exit(1);
@@ -346,7 +346,7 @@ if (config.useRust) {
346
346
  }
347
347
  }
348
348
  if (rustBinary) {
349
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-ZDqi9LbP.js");
349
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-C3NCuiuo.js");
350
350
  const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
351
351
  if (config.verbose) {
352
352
  console.log(`[rust] Using binary: ${rustBinary}`);
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-hMS7Hkpn.js";
3
- import { a as hasTodoStore, i as answerAsk, l as AgentContext, n as agentYes, o as listAsks, r as config, s as listAsksForProject, t as CLIS_CONFIG } from "./ts-1rQZA3oo.js";
2
+ import "./versionChecker-o3gSKYQw.js";
3
+ import { a as hasTodoStore, i as answerAsk, l as AgentContext, n as agentYes, o as listAsks, r as config, s as listAsksForProject, t as CLIS_CONFIG } from "./ts-HPsoqAas.js";
4
4
  import { _ as isKnownKind, a as renderTree, b as statesOf, c as monitorHint, d as openStore, f as DONE_STATE, g as initialState, h as canTransition, i as renderDigest, l as CycleError, m as ORPHANED_STATE, o as unblockedTasks, p as LIFECYCLES, r as openBlockers, s as describeBlock, t as reconcileTodos, u as TodoStore, v as nextStates, x as removeControlCharacters, y as requiredGate } from "./todoAutomation-Buo457VO.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
6
  import "./globalPidIndex-D9DOSd-c.js";
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
3
3
  import "./messageLog-C-YIzhRj.js";
4
4
  import "./e2e-CEIdJGZ7.js";
5
5
  import "./configShared-IBbnn9b8.js";
6
- import { $ as shouldStealLock, C as listRecords, J as hostId, K as appendEvent, Q as readInbox, X as listInboxParents, Z as liveWatchers, _ as isPidAlive, c as deriveLiveState, et as daemonLockDir, j as renderLogTailLines, nt as notifyDir, q as gcInboxes, tt as daemonLockOwnerPath } from "./subcommands-DeUbXdTK.js";
6
+ import { $ as shouldStealLock, C as listRecords, J as hostId, K as appendEvent, Q as readInbox, X as listInboxParents, Z as liveWatchers, _ as isPidAlive, c as deriveLiveState, et as daemonLockDir, j as renderLogTailLines, nt as notifyDir, q as gcInboxes, tt as daemonLockOwnerPath } from "./subcommands-rCZF2xXL.js";
7
7
  import "./webrtcLink-BMYneHbu.js";
8
8
  import "./remotes-a0bGDae9.js";
9
9
  import { mkdir, readFile, rename, rm, stat, writeFile } from "fs/promises";
@@ -836,4 +836,4 @@ async function ensureDaemon() {
836
836
 
837
837
  //#endregion
838
838
  export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
839
- //# sourceMappingURL=notifyDaemon-FhMvFDm8.js.map
839
+ //# sourceMappingURL=notifyDaemon-CwNMPuQA.js.map
@@ -1,4 +1,4 @@
1
- import { r as getInstalledPackage } from "./versionChecker-hMS7Hkpn.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-o3gSKYQw.js";
2
2
  import { execFileSync } from "child_process";
3
3
  import { existsSync, mkdirSync, unlinkSync } from "fs";
4
4
  import { chmod, copyFile } from "fs/promises";
@@ -243,4 +243,4 @@ async function getRustBinary(options = {}) {
243
243
 
244
244
  //#endregion
245
245
  export { findTrayLauncher as n, getRustBinary as r, findSpawnHiddenLauncher as t };
246
- //# sourceMappingURL=rustBinary-BBOpYC-y.js.map
246
+ //# sourceMappingURL=rustBinary-tOgWamgf.js.map
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-hMS7Hkpn.js";
3
- import "./ts-1rQZA3oo.js";
2
+ import "./versionChecker-o3gSKYQw.js";
3
+ import "./ts-HPsoqAas.js";
4
4
  import "./todoAutomation-Buo457VO.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
6
  import "./globalPidIndex-D9DOSd-c.js";
7
7
  import "./pidStore-vnX0bgra.js";
8
8
  import "./messageLog-C-YIzhRj.js";
9
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-kkxFgTKh.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DxMhp5DJ.js";
10
10
  import { f as resolveSpawnCwd } from "./workspaceConfig-CpilQzMY.js";
11
11
  import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-BtL6Oo1o.js";
12
12
  import { createHash } from "node:crypto";
@@ -153,4 +153,4 @@ async function cmdSchedule(rest) {
153
153
 
154
154
  //#endregion
155
155
  export { cmdSchedule };
156
- //# sourceMappingURL=schedule-B5w4JNpg.js.map
156
+ //# sourceMappingURL=schedule-CHJTU0ps.js.map
@@ -1,7 +1,7 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { r as getInstalledPackage } from "./versionChecker-hMS7Hkpn.js";
3
- import { t as findSpawnHiddenLauncher } from "./rustBinary-BBOpYC-y.js";
4
- import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-1rQZA3oo.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-o3gSKYQw.js";
3
+ import { t as findSpawnHiddenLauncher } from "./rustBinary-tOgWamgf.js";
4
+ import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-HPsoqAas.js";
5
5
  import { t as agentYesHome$1 } from "./agentYesHome-CtmsY6I-.js";
6
6
  import { x as removeControlCharacters } from "./todoAutomation-Buo457VO.js";
7
7
  import "./JsonlStore-CPGIR0Wy.js";
@@ -11,16 +11,16 @@ import { r as recordInbox } from "./messageLog-C-YIzhRj.js";
11
11
  import { t as pgidForWrapper } from "./reaper-DP49VCKx.js";
12
12
  import "./e2e-CEIdJGZ7.js";
13
13
  import "./configShared-IBbnn9b8.js";
14
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-kkxFgTKh.js";
15
- import { A as recentReadEdges, C as listRecords, D as readNotes, G as writeToIpc, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, Y as isTransientLockMkdirError, f as extractNeedsInput, j as renderLogTailLines, k as recentMessageEdges, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, rt as TYPING_BADGE, u as extractBadges, x as isUserTyping, z as snapshotStatus } from "./subcommands-DeUbXdTK.js";
14
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DxMhp5DJ.js";
15
+ import { A as recentReadEdges, C as listRecords, D as readNotes, G as writeToIpc, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, Y as isTransientLockMkdirError, f as extractNeedsInput, j as renderLogTailLines, k as recentMessageEdges, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, rt as TYPING_BADGE, u as extractBadges, x as isUserTyping, z as snapshotStatus } from "./subcommands-rCZF2xXL.js";
16
16
  import "./webrtcLink-BMYneHbu.js";
17
17
  import "./remotes-a0bGDae9.js";
18
18
  import { i as frameVisitorMessage, s as verifyCapability, t as MAX_CALLBACK_MSG_BYTES } from "./callbackCore-Dd28_cBM.js";
19
- import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-D63YERtT.js";
19
+ import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-C-Gzi5uO.js";
20
20
  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-CpilQzMY.js";
21
21
  import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-BtL6Oo1o.js";
22
22
  import { r as spawnRejectionReason } from "./spawnGate-BFJPdHCQ.js";
23
- import { i as launchTray } from "./trayApp-DEmn5LW0.js";
23
+ import { i as launchTray } from "./trayApp-Cmx43kTB.js";
24
24
  import yargs from "yargs";
25
25
  import { appendFile, mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile } from "fs/promises";
26
26
  import { arch, cpus, freemem, homedir, hostname, loadavg, platform, totalmem, uptime, userInfo } from "os";
@@ -2367,7 +2367,7 @@ Options:
2367
2367
  }
2368
2368
  });
2369
2369
  if (req.method === "GET" && p === "/api/ws") {
2370
- const ws = await import("./ws-GVmilTGt.js");
2370
+ const ws = await import("./ws-BHzfyDqh.js");
2371
2371
  try {
2372
2372
  await ws.loadProvision();
2373
2373
  } catch (e) {
@@ -2387,7 +2387,7 @@ Options:
2387
2387
  if (req.method === "GET" && p === "/api/ws/status") {
2388
2388
  const dirRaw = url.searchParams.get("path");
2389
2389
  if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
2390
- const ws = await import("./ws-GVmilTGt.js");
2390
+ const ws = await import("./ws-BHzfyDqh.js");
2391
2391
  let prov;
2392
2392
  try {
2393
2393
  prov = await ws.loadProvision();
@@ -3144,7 +3144,7 @@ Options:
3144
3144
  const perm = body.perm ?? "r";
3145
3145
  if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
3146
3146
  try {
3147
- const { createScopedShare } = await import("./agentShare-BXLfevNX.js");
3147
+ const { createScopedShare } = await import("./agentShare-DwM61sza.js");
3148
3148
  const share = await createScopedShare({
3149
3149
  agent: body.agent,
3150
3150
  perm,
@@ -3159,12 +3159,12 @@ Options:
3159
3159
  }
3160
3160
  }
3161
3161
  if (req.method === "GET" && p === "/api/shares") {
3162
- const { listShares } = await import("./agentShare-BXLfevNX.js");
3162
+ const { listShares } = await import("./agentShare-DwM61sza.js");
3163
3163
  return Response.json(listShares());
3164
3164
  }
3165
3165
  const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
3166
3166
  if (req.method === "DELETE" && revokeM) {
3167
- const { revokeShare } = await import("./agentShare-BXLfevNX.js");
3167
+ const { revokeShare } = await import("./agentShare-DwM61sza.js");
3168
3168
  const ok = revokeShare(decodeURIComponent(revokeM[1]));
3169
3169
  return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
3170
3170
  }
@@ -3466,7 +3466,7 @@ Options:
3466
3466
  const shutdown = (resolve) => {
3467
3467
  if (heartbeat) clearInterval(heartbeat);
3468
3468
  closeShare?.();
3469
- import("./agentShare-BXLfevNX.js").then((m) => m.revokeAllShares()).catch(() => {});
3469
+ import("./agentShare-DwM61sza.js").then((m) => m.revokeAllShares()).catch(() => {});
3470
3470
  server?.stop();
3471
3471
  Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
3472
3472
  };
@@ -3479,4 +3479,4 @@ Options:
3479
3479
 
3480
3480
  //#endregion
3481
3481
  export { cmdServe, loadTokenReadOnly, mintScopedTermToken, resolveDaemonHttpBase, resolveLocalServeUrl };
3482
- //# sourceMappingURL=serve-H8y95HWl.js.map
3482
+ //# sourceMappingURL=serve-DSJOkyoR.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-H8y95HWl.js");
35
+ const { cmdServe } = await import("./serve-DSJOkyoR.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-CRJSyz9Z.js.map
45
+ //# sourceMappingURL=setup-B-LvL4We.js.map
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
3
3
  import "./messageLog-C-YIzhRj.js";
4
4
  import "./e2e-CEIdJGZ7.js";
5
5
  import "./configShared-IBbnn9b8.js";
6
- import { A as recentReadEdges, B as stdinActivityPath, C as listRecords, D as readNotes, E as readAgentPtysize, F as resolveReadWindow, G as writeToIpc, H as submitAndConfirm, I as resolveResumeArgs, L as restartHintLines, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, R as runSubcommand, S as lastStdinAt, T as menuSelectKeys, U as waitForLogQuiet, V as stopTipForCli, W as writeKeysPaced, _ as isPidAlive, a as cmdHelp, b as isUnknownManagerToken, c as deriveLiveState, d as extractMenu, f as extractNeedsInput, g as isExitRequest, h as isAgentStuck, i as backoffWhileTyping, j as renderLogTailLines, k as recentMessageEdges, 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 matchKeyword, x as isUserTyping, y as isSubcommand, z as snapshotStatus } from "./subcommands-DeUbXdTK.js";
6
+ import { A as recentReadEdges, B as stdinActivityPath, C as listRecords, D as readNotes, E as readAgentPtysize, F as resolveReadWindow, G as writeToIpc, H as submitAndConfirm, I as resolveResumeArgs, L as restartHintLines, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, R as runSubcommand, S as lastStdinAt, T as menuSelectKeys, U as waitForLogQuiet, V as stopTipForCli, W as writeKeysPaced, _ as isPidAlive, a as cmdHelp, b as isUnknownManagerToken, c as deriveLiveState, d as extractMenu, f as extractNeedsInput, g as isExitRequest, h as isAgentStuck, i as backoffWhileTyping, j as renderLogTailLines, k as recentMessageEdges, 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 matchKeyword, x as isUserTyping, y as isSubcommand, z as snapshotStatus } from "./subcommands-rCZF2xXL.js";
7
7
  import "./webrtcLink-BMYneHbu.js";
8
8
  import "./remotes-a0bGDae9.js";
9
9
 
@@ -1340,35 +1340,35 @@ async function runSubcommand(argv) {
1340
1340
  return cmdCh(rest);
1341
1341
  }
1342
1342
  case "term": {
1343
- const { cmdTerm } = await import("./terminal-BMHnUWFm.js");
1343
+ const { cmdTerm } = await import("./terminal-Cnp7Q7w2.js");
1344
1344
  return cmdTerm(rest);
1345
1345
  }
1346
1346
  case "widget": {
1347
- const { cmdWidget } = await import("./widget-D55SUI6o.js");
1347
+ const { cmdWidget } = await import("./widget-X6r1WRKT.js");
1348
1348
  return cmdWidget(rest);
1349
1349
  }
1350
1350
  case "mint": {
1351
- const { cmdMint } = await import("./widget-D55SUI6o.js");
1351
+ const { cmdMint } = await import("./widget-X6r1WRKT.js");
1352
1352
  return cmdMint(rest);
1353
1353
  }
1354
1354
  case "serve": {
1355
- const { cmdServe } = await import("./serve-H8y95HWl.js");
1355
+ const { cmdServe } = await import("./serve-DSJOkyoR.js");
1356
1356
  return cmdServe(rest);
1357
1357
  }
1358
1358
  case "tray": {
1359
- const { cmdTray } = await import("./trayApp-DELeG-wq.js");
1359
+ const { cmdTray } = await import("./trayApp-3RuIwXOR.js");
1360
1360
  return cmdTray(rest);
1361
1361
  }
1362
1362
  case "setup": {
1363
- const { cmdSetup } = await import("./setup-CRJSyz9Z.js");
1363
+ const { cmdSetup } = await import("./setup-B-LvL4We.js");
1364
1364
  return cmdSetup(rest);
1365
1365
  }
1366
1366
  case "ws": {
1367
- const { cmdWs } = await import("./ws-GVmilTGt.js");
1367
+ const { cmdWs } = await import("./ws-BHzfyDqh.js");
1368
1368
  return cmdWs(rest);
1369
1369
  }
1370
1370
  case "schedule": {
1371
- const { cmdSchedule } = await import("./schedule-B5w4JNpg.js");
1371
+ const { cmdSchedule } = await import("./schedule-CHJTU0ps.js");
1372
1372
  return cmdSchedule(rest);
1373
1373
  }
1374
1374
  case "remote": {
@@ -1380,7 +1380,7 @@ async function runSubcommand(argv) {
1380
1380
  return cmdExpose(rest);
1381
1381
  }
1382
1382
  case "callback": {
1383
- const { cmdCallback } = await import("./callback-D_gfdf2c.js");
1383
+ const { cmdCallback } = await import("./callback-C3lV9OB1.js");
1384
1384
  return cmdCallback(rest);
1385
1385
  }
1386
1386
  case "reap":
@@ -3783,7 +3783,7 @@ async function cmdAttach(rest) {
3783
3783
  const winsizeDir = path.join(ayHome, "winsize");
3784
3784
  await mkdir(winsizeDir, { recursive: true });
3785
3785
  const winsizePath = path.join(winsizeDir, String(record.pid));
3786
- const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-H8y95HWl.js");
3786
+ const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-DSJOkyoR.js");
3787
3787
  const daemonBase = await resolveDaemonHttpBase().catch(() => null);
3788
3788
  const daemonToken = daemonBase ? await loadTokenReadOnly().catch(() => null) ?? "" : "";
3789
3789
  const capViewer = `attach:${process.pid}`;
@@ -4493,7 +4493,7 @@ async function cmdNotify(rest) {
4493
4493
  }
4494
4494
  const ensure = async () => {
4495
4495
  if (!argv["ensure-daemon"]) return;
4496
- const { ensureDaemon } = await import("./notifyDaemon-FhMvFDm8.js");
4496
+ const { ensureDaemon } = await import("./notifyDaemon-CwNMPuQA.js");
4497
4497
  await ensureDaemon().catch(() => null);
4498
4498
  };
4499
4499
  await heartbeatWatcher(parent, selfStartedAt);
@@ -4567,7 +4567,7 @@ async function cmdNotifyCursor(args) {
4567
4567
  }
4568
4568
  async function cmdNotifyd(rest) {
4569
4569
  const sub = rest[0] ?? "status";
4570
- const daemon = await import("./notifyDaemon-FhMvFDm8.js");
4570
+ const daemon = await import("./notifyDaemon-CwNMPuQA.js");
4571
4571
  switch (sub) {
4572
4572
  case "run": return daemon.runDaemon();
4573
4573
  case "once": return daemon.runDaemon({ once: true });
@@ -4594,4 +4594,4 @@ async function cmdNotifyd(rest) {
4594
4594
 
4595
4595
  //#endregion
4596
4596
  export { shouldStealLock as $, recentReadEdges as A, stdinActivityPath as B, listRecords as C, readNotes as D, readAgentPtysize as E, resolveReadWindow as F, writeToIpc as G, submitAndConfirm as H, resolveResumeArgs as I, hostId as J, appendEvent as K, restartHintLines as L, renderRawLog as M, renderRawLogLines as N, readPtysize as O, resolveOne as P, readInbox as Q, runSubcommand as R, lastStdinAt as S, menuSelectKeys as T, waitForLogQuiet as U, stopTipForCli as V, writeKeysPaced as W, listInboxParents as X, isTransientLockMkdirError as Y, liveWatchers as Z, isPidAlive as _, cmdHelp as a, isUnknownManagerToken as b, deriveLiveState as c, extractMenu as d, daemonLockDir as et, extractNeedsInput as f, isExitRequest as g, isAgentStuck as h, backoffWhileTyping as i, renderLogTailLines as j, recentMessageEdges as k, deriveLiveStatus as l, finalizedLines as m, READ_PAGE_DEFAULT as n, notifyDir as nt, controlCodeFromName as o, extractTaskCounts as p, gcInboxes as q, TYPING_WINDOW_MS as r, TYPING_BADGE as rt, cursorAbs as s, GRACEFUL_EXIT_COMMANDS as t, daemonLockOwnerPath as tt, extractBadges as u, isSlashCommand as v, matchKeyword as w, isUserTyping as x, isSubcommand as y, snapshotStatus as z };
4597
- //# sourceMappingURL=subcommands-DeUbXdTK.js.map
4597
+ //# sourceMappingURL=subcommands-rCZF2xXL.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-H8y95HWl.js");
101
+ const { mintScopedTermToken } = await import("./serve-DSJOkyoR.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-BMHnUWFm.js.map
138
+ //# sourceMappingURL=terminal-Cnp7Q7w2.js.map
@@ -0,0 +1,5 @@
1
+ import "./versionChecker-o3gSKYQw.js";
2
+ import "./rustBinary-tOgWamgf.js";
3
+ import { a as trayHiddenMarker, i as launchTray, n as hasDesktop, r as isTrayHidden, t as cmdTray } from "./trayApp-Cmx43kTB.js";
4
+
5
+ export { cmdTray };
@@ -1,4 +1,4 @@
1
- import { n as findTrayLauncher } from "./rustBinary-BBOpYC-y.js";
1
+ import { n as findTrayLauncher } from "./rustBinary-tOgWamgf.js";
2
2
  import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
3
3
  import { existsSync } from "node:fs";
4
4
  import path from "node:path";
@@ -97,4 +97,4 @@ async function cmdTray(args) {
97
97
 
98
98
  //#endregion
99
99
  export { trayHiddenMarker as a, launchTray as i, hasDesktop as n, isTrayHidden as r, cmdTray as t };
100
- //# sourceMappingURL=trayApp-DEmn5LW0.js.map
100
+ //# sourceMappingURL=trayApp-Cmx43kTB.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin, r as __exportAll } from "./chunk-cZBX9HZv.js";
2
2
  import { n as logger, t as addTransport } from "./logger-CDIsZ-Pp.js";
3
- import { r as getInstalledPackage } from "./versionChecker-hMS7Hkpn.js";
3
+ import { r as getInstalledPackage } from "./versionChecker-o3gSKYQw.js";
4
4
  import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
5
5
  import { d as openStore, p as LIFECYCLES, x as removeControlCharacters } from "./todoAutomation-Buo457VO.js";
6
6
  import { i as shouldUseLock, r as releaseLock, t as acquireLock } from "./runningLock-DBoONoM-.js";
@@ -2155,4 +2155,4 @@ function sleep(ms) {
2155
2155
 
2156
2156
  //#endregion
2157
2157
  export { hasTodoStore as a, permissionBadge as c, answerAsk as i, AgentContext as l, agentYes as n, listAsks as o, config as r, listAsksForProject as s, CLIS_CONFIG as t, CLAUDE_SESSION_PIN_ENV as u };
2158
- //# sourceMappingURL=ts-1rQZA3oo.js.map
2158
+ //# sourceMappingURL=ts-HPsoqAas.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.252.0";
10
+ var version = "1.253.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-hMS7Hkpn.js.map
218
+ //# sourceMappingURL=versionChecker-o3gSKYQw.js.map
@@ -28,7 +28,7 @@ function parseFlags(args, known) {
28
28
  }
29
29
  /** Resolve the local daemon base URL + token (flags override discovery). */
30
30
  async function daemonTarget(flags) {
31
- const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-H8y95HWl.js");
31
+ const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-DSJOkyoR.js");
32
32
  const base = typeof flags.base === "string" ? flags.base : await resolveDaemonHttpBase();
33
33
  if (!base) throw new Error("no running ay serve daemon found — start `ay serve` or pass --base <url> (e.g. http://127.0.0.1:PORT)");
34
34
  const token = typeof flags.token === "string" ? flags.token : await loadTokenReadOnly() ?? "";
@@ -186,7 +186,7 @@ async function cmdMint(args) {
186
186
  const bad = caps.filter((c) => !KNOWN_CAPS.has(c));
187
187
  if (bad.length) throw new Error(`unknown cap(s): ${bad.join(", ")} (valid: ${[...KNOWN_CAPS].join(", ")})`);
188
188
  const ttlSec = parseTtlSec(typeof flags.ttl === "string" ? flags.ttl : "15m");
189
- const { mintScopedTermToken } = await import("./serve-H8y95HWl.js");
189
+ const { mintScopedTermToken } = await import("./serve-DSJOkyoR.js");
190
190
  const r = await mintScopedTermToken(target, {
191
191
  ttlSec,
192
192
  caps
@@ -202,4 +202,4 @@ async function cmdMint(args) {
202
202
 
203
203
  //#endregion
204
204
  export { cmdMint, cmdWidget };
205
- //# sourceMappingURL=widget-D55SUI6o.js.map
205
+ //# sourceMappingURL=widget-X6r1WRKT.js.map
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
3
3
  import "./messageLog-C-YIzhRj.js";
4
4
  import "./e2e-CEIdJGZ7.js";
5
5
  import "./configShared-IBbnn9b8.js";
6
- import { C as listRecords } from "./subcommands-DeUbXdTK.js";
6
+ import { C as listRecords } from "./subcommands-rCZF2xXL.js";
7
7
  import "./webrtcLink-BMYneHbu.js";
8
8
  import "./remotes-a0bGDae9.js";
9
9
  import { a as getProvisionRoot } from "./workspaceConfig-CpilQzMY.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-GVmilTGt.js.map
421
+ //# sourceMappingURL=ws-BHzfyDqh.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-yes",
3
- "version": "1.252.0",
3
+ "version": "1.253.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",
@@ -114,6 +114,8 @@
114
114
  "build:rgui": "bun scripts/build-rgui.ts",
115
115
  "dev:rgui": "bun lab/ui/rgui/dev.ts",
116
116
  "build:rs": "bun ./scripts/build-rs.ts",
117
+ "build:rs:fast": "bun ./scripts/build-rs.ts --fast",
118
+ "build:rs:dev": "bun ./scripts/build-rs.ts --dev",
117
119
  "postbuild": "bun ./ts/postbuild.ts",
118
120
  "demo": "bun run build && bun link && claude-yes -- demo",
119
121
  "dev": "bun ts/index.ts",
@@ -11,7 +11,7 @@
11
11
  // On macOS/Linux a running binary can be replaced directly, so this is a no-op
12
12
  // there and we just run cargo.
13
13
  import { spawnSync } from "child_process";
14
- import { existsSync, readdirSync, renameSync, rmSync } from "fs";
14
+ import { copyFileSync, existsSync, readdirSync, renameSync, rmSync } from "fs";
15
15
  import os from "os";
16
16
  import path from "path";
17
17
 
@@ -22,7 +22,7 @@ const cargoHome = process.env.CARGO_HOME || path.join(os.homedir(), ".cargo");
22
22
  // each [[bin]] in the package. Any of these can be locked by a live process,
23
23
  // and cargo install refuses to overwrite an existing installed binary (even
24
24
  // with --force it can't delete a locked one), so each must be moved aside.
25
- const exeNames = ["agent-yes.exe", "ay-spawn-hidden.exe"];
25
+ const exeNames = ["agent-yes.exe", "ay-spawn-hidden.exe", "ayrs.exe"];
26
26
  const targets = exeNames.flatMap((exe) => [
27
27
  path.join(repoRoot, "rs", "target", "release", exe),
28
28
  path.join(cargoHome, "bin", exe),
@@ -69,14 +69,11 @@ function moveLockedBinariesAside(): Array<{ original: string; aside: string }> {
69
69
 
70
70
  const moved = process.platform === "win32" ? moveLockedBinariesAside() : [];
71
71
 
72
- const args = ["install", "--path", "rs", "--features", "swarm", ...process.argv.slice(2)];
73
- console.log(`[build-rs] cargo ${args.join(" ")}`);
74
- const result = spawnSync("cargo", args, { cwd: repoRoot, stdio: "inherit" });
75
-
76
- // On failure cargo never wrote the fresh originals, so restore anything we
77
- // moved aside — otherwise a build error would leave agent-yes.exe missing
78
- // from PATH until the next successful build.
79
- if (result.status !== 0) {
72
+ // On a failed build cargo never wrote the fresh originals, so restore anything
73
+ // moveLockedBinariesAside() set aside — otherwise a build error leaves the .exe
74
+ // missing from PATH until the next successful build. Shared by both the default
75
+ // and the fast/dev paths.
76
+ function restoreMoved(): void {
80
77
  for (const { original, aside } of moved) {
81
78
  if (!existsSync(original) && existsSync(aside)) {
82
79
  try {
@@ -89,4 +86,65 @@ if (result.status !== 0) {
89
86
  }
90
87
  }
91
88
 
89
+ // Dev-iteration fast paths. The default full build (release + full LTO +
90
+ // --features swarm) takes ~145s incremental — dominated by LTO relinking the
91
+ // whole webrtc binary every change (benchmarked; see docs/serve-rust-vs-ts-
92
+ // benchmark.md). These flags trade shipped-binary optimization for build speed:
93
+ //
94
+ // --fast ayrs-only, no swarm, LTO OFF → ~26s (5.6x). Still opt-level 3, so
95
+ // the binary is a legit optimized console host — safe to actually run.
96
+ // --dev ayrs-only, no swarm, dev profile (opt0) → ~3s (48x). Unoptimized;
97
+ // for rapid correctness iteration, NOT for a production host.
98
+ //
99
+ // Both build ONLY the `ayrs` bin (skips the ~65-crate libp2p tree that only the
100
+ // `agent-yes` P2P binary needs). CI / shipping uses the flagless full build.
101
+ const rawArgs = process.argv.slice(2);
102
+ const fast = rawArgs.includes("--fast");
103
+ const dev = rawArgs.includes("--dev");
104
+ const passthrough = rawArgs.filter((a) => a !== "--fast" && a !== "--dev");
105
+
106
+ // Fast dev paths use `cargo build` + copy, NOT `cargo install`: install builds in
107
+ // a temp target dir and can't reuse the rs/target incremental cache, so it rebuilds
108
+ // the whole graph (~110s) even when `cargo build` reuses the cache (~27s / ~3s).
109
+ if (fast || dev) {
110
+ const env = { ...process.env } as Record<string, string>;
111
+ // --manifest-path (not just --path like `cargo install`) so `cargo build` finds
112
+ // the crate while cwd stays at repoRoot for the copy paths below.
113
+ const buildArgs = ["build", "--manifest-path", path.join("rs", "Cargo.toml"), "--bin", "ayrs"]; // no swarm (ayrs doesn't use libp2p)
114
+ if (!dev) {
115
+ buildArgs.push("--release");
116
+ env.CARGO_PROFILE_RELEASE_LTO = "false"; // the dominant incremental cost
117
+ }
118
+ buildArgs.push(...passthrough);
119
+ console.log(
120
+ `[build-rs] FAST dev build (${dev ? "dev/opt0" : "release/no-LTO"}, ayrs only, no swarm): cargo ${buildArgs.join(" ")}`,
121
+ );
122
+ const build = spawnSync("cargo", buildArgs, { cwd: repoRoot, stdio: "inherit", env });
123
+ if (build.status === 0) {
124
+ const exe = process.platform === "win32" ? "ayrs.exe" : "ayrs";
125
+ const built = path.join(repoRoot, "rs", "target", dev ? "debug" : "release", exe);
126
+ const dest = path.join(cargoHome, "bin", exe); // moveLockedBinariesAside already freed a locked dest on Windows
127
+ // Copy to a temp name then rename over the dest: an in-place copy fails with
128
+ // ETXTBSY when the dest binary is currently executing (e.g. `ayrs serve`
129
+ // running under oxmgr), but an atomic rename replaces the name while the live
130
+ // process keeps its old inode — the same trick `cargo install` uses.
131
+ const tmp = `${dest}.new-${process.pid}`;
132
+ copyFileSync(built, tmp);
133
+ renameSync(tmp, dest);
134
+ console.log(`[build-rs] installed ${dest}`);
135
+ console.log(`[build-rs] NOTE: dev build — run \`bun run build:rs\` for the fully-optimized shipped binary`);
136
+ } else {
137
+ // Build failed and cargo never wrote a fresh binary — restore anything the
138
+ // Windows lock-aside moved, else ayrs.exe would be missing from PATH.
139
+ restoreMoved();
140
+ }
141
+ process.exit(build.status ?? 1);
142
+ }
143
+
144
+ const args = ["install", "--path", "rs", "--features", "swarm", ...passthrough];
145
+ console.log(`[build-rs] cargo ${args.join(" ")}`);
146
+ const result = spawnSync("cargo", args, { cwd: repoRoot, stdio: "inherit" });
147
+
148
+ if (result.status !== 0) restoreMoved();
149
+
92
150
  process.exit(result.status ?? 1);
@@ -1,5 +0,0 @@
1
- import "./versionChecker-hMS7Hkpn.js";
2
- import "./rustBinary-BBOpYC-y.js";
3
- import { a as trayHiddenMarker, i as launchTray, n as hasDesktop, r as isTrayHidden, t as cmdTray } from "./trayApp-DEmn5LW0.js";
4
-
5
- export { cmdTray };