agent-yes 1.293.0 → 1.294.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.
Files changed (31) hide show
  1. package/dist/{SUPPORTED_CLIS-CB98L1zH.js → SUPPORTED_CLIS-BxxxYx1J.js} +2 -2
  2. package/dist/{SUPPORTED_CLIS-rDJ9wt_4.js → SUPPORTED_CLIS-CPXyE9Tg.js} +3 -3
  3. package/dist/{agentShare-DAKBVsJX.js → agentShare-BXg5zEtW.js} +2 -2
  4. package/dist/{callback-CsUXaJ-G.js → callback-MneknqcS.js} +3 -3
  5. package/dist/{callback-BXGJ2Lao.js → callback-TqS7f7-H.js} +2 -2
  6. package/dist/cli.js +5 -5
  7. package/dist/{cmdPs-BPiWShcv.js → cmdPs-BwDyVmFi.js} +2 -2
  8. package/dist/index.js +2 -2
  9. package/dist/{notifyDaemon-B_0fzPev.js → notifyDaemon-lY7jeQcF.js} +2 -2
  10. package/dist/{parentPingLoop-BRhzqYJ-.js → parentPingLoop-BNk9bmkL.js} +2 -2
  11. package/dist/{rustBinary-ByeLQphl.js → rustBinary-DsxZnwXj.js} +2 -2
  12. package/dist/{rustBinary-BOZV2IrF.js → rustBinary-Wh9kNpga.js} +2 -2
  13. package/dist/{schedule-D_ZH65el.js → schedule-yMAymlHZ.js} +4 -4
  14. package/dist/{serve-CplhD9SY.js → serve-Cn6LTsO5.js} +23 -20
  15. package/dist/{setup-CYFWwZAl.js → setup-DAKtsxiB.js} +2 -2
  16. package/dist/{subcommands-bVPnXbfj.js → subcommands-CE0EOwno.js} +1 -1
  17. package/dist/{subcommands-CZZ-l7le.js → subcommands-CyhuIreR.js} +15 -15
  18. package/dist/{terminal-BufLgBpW.js → terminal-D7G7Ngnj.js} +2 -2
  19. package/dist/{trayApp-BfUc_4-h.js → trayApp-C77uhW1i.js} +2 -2
  20. package/dist/trayApp-i6201tMp.js +5 -0
  21. package/dist/{ts-CPqeQSS8.js → ts-DYKrhLtc.js} +3 -3
  22. package/dist/{versionChecker-CqLkSVM1.js → versionChecker-CqaWZAm0.js} +2 -2
  23. package/dist/{widget-DTq1SAWM.js → widget-D2sc3bde.js} +3 -3
  24. package/dist/{ws-BxmJb-CE.js → ws-ClgsUOJu.js} +2 -2
  25. package/dist/{ws-CJompjqD.js → ws-Dsu27GmE.js} +2 -2
  26. package/lab/ui/sw.js +8 -1
  27. package/package.json +1 -1
  28. package/scripts/build-rgui.ts +8 -2
  29. package/ts/serve.spec.ts +20 -0
  30. package/ts/serve.ts +13 -3
  31. package/dist/trayApp-CfVKFhYn.js +0 -5
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-CPqeQSS8.js";
1
+ import { t as CLIS_CONFIG } from "./ts-DYKrhLtc.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-CB98L1zH.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-BxxxYx1J.js.map
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-CqLkSVM1.js";
3
- import "./ts-CPqeQSS8.js";
2
+ import "./versionChecker-CqaWZAm0.js";
3
+ import "./ts-DYKrhLtc.js";
4
4
  import "./todoAutomation-CbVVS4re.js";
5
5
  import "./JsonlStore-BqF7AQ6E.js";
6
6
  import "./globalPidIndex-CRH9L9tn.js";
7
7
  import "./pidStore-DXWqzTSz.js";
8
8
  import "./messageLog-Brx3w6zT.js";
9
9
  import "./todoStore-DF6vxHgV.js";
10
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CB98L1zH.js";
10
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BxxxYx1J.js";
11
11
 
12
12
  export { SUPPORTED_CLIS };
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
5
5
  import "./messageLog-Brx3w6zT.js";
6
6
  import "./e2e-z1xpwSAg.js";
7
7
  import "./configShared-DKTgiz7K.js";
8
- import { J as resolveOne } from "./subcommands-CZZ-l7le.js";
8
+ import { J as resolveOne } from "./subcommands-CyhuIreR.js";
9
9
  import "./notifyStore-2SWKGwZI.js";
10
10
  import "./webrtcLink-CnQf9pmu.js";
11
11
  import "./remotes-5P__pAXA.js";
@@ -232,4 +232,4 @@ function transformEvent(rawEvent, agentId, forwarded) {
232
232
 
233
233
  //#endregion
234
234
  export { createScopedShare, listShares, revokeAllShares, revokeShare };
235
- //# sourceMappingURL=agentShare-DAKBVsJX.js.map
235
+ //# sourceMappingURL=agentShare-BXg5zEtW.js.map
@@ -1,5 +1,5 @@
1
1
  import { t as agentYesHome } from "./agentYesHome-BNtn19J4.js";
2
- import { J as resolveOne } from "./subcommands-CZZ-l7le.js";
2
+ import { J as resolveOne } from "./subcommands-CyhuIreR.js";
3
3
  import { a as mintCapability, o as parseExpires } from "./callbackCore-Bl2gGcxg.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-CplhD9SY.js");
75
+ const { resolveLocalServeUrl } = await import("./serve-Cn6LTsO5.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-CsUXaJ-G.js.map
190
+ //# sourceMappingURL=callback-MneknqcS.js.map
@@ -5,11 +5,11 @@ import "./pidStore-DXWqzTSz.js";
5
5
  import "./messageLog-Brx3w6zT.js";
6
6
  import "./e2e-z1xpwSAg.js";
7
7
  import "./configShared-DKTgiz7K.js";
8
- import "./subcommands-CZZ-l7le.js";
8
+ import "./subcommands-CyhuIreR.js";
9
9
  import "./notifyStore-2SWKGwZI.js";
10
10
  import "./webrtcLink-CnQf9pmu.js";
11
11
  import "./remotes-5P__pAXA.js";
12
12
  import "./callbackCore-Bl2gGcxg.js";
13
- import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-CsUXaJ-G.js";
13
+ import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-MneknqcS.js";
14
14
 
15
15
  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-zdFbz1ST.js";
3
3
  import { n as logger } from "./logger-CDIsZ-Pp.js";
4
- import { a as versionString, r as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-CqLkSVM1.js";
5
- import { d as getRustBinary } from "./rustBinary-BOZV2IrF.js";
4
+ import { a as versionString, r as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-CqaWZAm0.js";
5
+ import { d as getRustBinary } from "./rustBinary-Wh9kNpga.js";
6
6
  import { argv } from "process";
7
7
  import { spawn } from "child_process";
8
8
  import ms from "ms";
@@ -295,7 +295,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
295
295
  const rawArg = process.argv[2];
296
296
  const managerCommands = !invokedCliName(process.argv);
297
297
  const isHelpFlag = rawArg === "-h" || rawArg === "--help";
298
- const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken, isBareManagerInvocation } = await import("./subcommands-bVPnXbfj.js");
298
+ const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken, isBareManagerInvocation } = await import("./subcommands-CE0EOwno.js");
299
299
  if (isHelpFlag && process.argv.length === 3) {
300
300
  await cmdHelp(managerCommands);
301
301
  process.exit(0);
@@ -309,7 +309,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
309
309
  process.exit(code ?? 0);
310
310
  }
311
311
  {
312
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-rDJ9wt_4.js");
312
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-CPXyE9Tg.js");
313
313
  if (isUnknownManagerToken(rawArg, managerCommands, SUPPORTED_CLIS)) {
314
314
  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`);
315
315
  process.exit(1);
@@ -360,7 +360,7 @@ if (config.useRust) {
360
360
  }
361
361
  }
362
362
  if (rustBinary) {
363
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-rDJ9wt_4.js");
363
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-CPXyE9Tg.js");
364
364
  const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
365
365
  if (config.verbose) {
366
366
  console.log(`[rust] Using binary: ${rustBinary}`);
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
5
5
  import "./messageLog-Brx3w6zT.js";
6
6
  import "./e2e-z1xpwSAg.js";
7
7
  import "./configShared-DKTgiz7K.js";
8
- import { F as listRecords, dt as buildAgentForest, ft as flattenForest, h as deriveLiveState } from "./subcommands-CZZ-l7le.js";
8
+ import { F as listRecords, dt as buildAgentForest, ft as flattenForest, h as deriveLiveState } from "./subcommands-CyhuIreR.js";
9
9
  import "./notifyStore-2SWKGwZI.js";
10
10
  import "./webrtcLink-CnQf9pmu.js";
11
11
  import "./remotes-5P__pAXA.js";
@@ -330,4 +330,4 @@ function readPpidSync(pid) {
330
330
 
331
331
  //#endregion
332
332
  export { cmdPs };
333
- //# sourceMappingURL=cmdPs-BPiWShcv.js.map
333
+ //# sourceMappingURL=cmdPs-BwDyVmFi.js.map
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-CqLkSVM1.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-CPqeQSS8.js";
2
+ import "./versionChecker-CqaWZAm0.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-DYKrhLtc.js";
4
4
  import { a as renderTree, c as describeBlock, i as renderDigest, l as monitorHint, o as unblockedTasks, r as openBlockers, t as reconcileTodos, u as removeControlCharacters } from "./todoAutomation-CbVVS4re.js";
5
5
  import "./JsonlStore-BqF7AQ6E.js";
6
6
  import "./globalPidIndex-CRH9L9tn.js";
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
5
5
  import "./messageLog-Brx3w6zT.js";
6
6
  import "./e2e-z1xpwSAg.js";
7
7
  import "./configShared-DKTgiz7K.js";
8
- import { D as isPidAlive, F as listRecords, G as renderLogTailLines, h as deriveLiveState } from "./subcommands-CZZ-l7le.js";
8
+ import { D as isPidAlive, F as listRecords, G as renderLogTailLines, h as deriveLiveState } from "./subcommands-CyhuIreR.js";
9
9
  import { f as readInbox, g as daemonLockOwnerPath, h as daemonLockDir, i as gcInboxes, l as listInboxParents, m as shouldStealLock, n as appendEvent, s as hostId, u as liveWatchers, x as notifyDir } from "./notifyStore-2SWKGwZI.js";
10
10
  import "./webrtcLink-CnQf9pmu.js";
11
11
  import "./remotes-5P__pAXA.js";
@@ -879,4 +879,4 @@ async function ensureDaemon() {
879
879
 
880
880
  //#endregion
881
881
  export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
882
- //# sourceMappingURL=notifyDaemon-B_0fzPev.js.map
882
+ //# sourceMappingURL=notifyDaemon-lY7jeQcF.js.map
@@ -338,7 +338,7 @@ async function isParentWatching(parentWrapperPid, parentAgentPid, selfAgentPid,
338
338
  logger.debug("[parent-ping] watcher lookup failed:", error);
339
339
  }
340
340
  try {
341
- const { lastReadAt, READ_WINDOW_MS } = await import("./subcommands-bVPnXbfj.js");
341
+ const { lastReadAt, READ_WINDOW_MS } = await import("./subcommands-CE0EOwno.js");
342
342
  const last = await lastReadAt(`agent:${parentAgentPid}`, selfAgentPid);
343
343
  if (last !== null && now - last <= READ_WINDOW_MS) return true;
344
344
  } catch (error) {
@@ -466,4 +466,4 @@ function startParentPingLoop(opts) {
466
466
 
467
467
  //#endregion
468
468
  export { startParentPingLoop };
469
- //# sourceMappingURL=parentPingLoop-BRhzqYJ-.js.map
469
+ //# sourceMappingURL=parentPingLoop-BNk9bmkL.js.map
@@ -1,4 +1,4 @@
1
- import "./versionChecker-CqLkSVM1.js";
2
- import { a as findSpawnHiddenLauncher, c as getBinDir, d as getRustBinary, i as findRustBinary, l as getBinaryName, n as downloadBinary, o as findTrayLauncher, r as findAyrsBinary, s as gcOldBinaryDirs, t as devBuildInfo, u as getDownloadUrl } from "./rustBinary-BOZV2IrF.js";
1
+ import "./versionChecker-CqaWZAm0.js";
2
+ import { a as findSpawnHiddenLauncher, c as getBinDir, d as getRustBinary, i as findRustBinary, l as getBinaryName, n as downloadBinary, o as findTrayLauncher, r as findAyrsBinary, s as gcOldBinaryDirs, t as devBuildInfo, u as getDownloadUrl } from "./rustBinary-Wh9kNpga.js";
3
3
 
4
4
  export { findAyrsBinary, gcOldBinaryDirs };
@@ -1,4 +1,4 @@
1
- import { i as getInstalledPackage, n as compareVersions } from "./versionChecker-CqLkSVM1.js";
1
+ import { i as getInstalledPackage, n as compareVersions } from "./versionChecker-CqaWZAm0.js";
2
2
  import { execFileSync } from "child_process";
3
3
  import { existsSync, mkdirSync, readdirSync, rmSync, statSync, unlinkSync } from "fs";
4
4
  import { chmod, copyFile } from "fs/promises";
@@ -344,4 +344,4 @@ async function getRustBinary(options = {}) {
344
344
 
345
345
  //#endregion
346
346
  export { findSpawnHiddenLauncher as a, getBinDir as c, getRustBinary as d, findRustBinary as i, getBinaryName as l, downloadBinary as n, findTrayLauncher as o, findAyrsBinary as r, gcOldBinaryDirs as s, devBuildInfo as t, getDownloadUrl as u };
347
- //# sourceMappingURL=rustBinary-BOZV2IrF.js.map
347
+ //# sourceMappingURL=rustBinary-Wh9kNpga.js.map
@@ -1,13 +1,13 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-CqLkSVM1.js";
3
- import "./ts-CPqeQSS8.js";
2
+ import "./versionChecker-CqaWZAm0.js";
3
+ import "./ts-DYKrhLtc.js";
4
4
  import "./todoAutomation-CbVVS4re.js";
5
5
  import "./JsonlStore-BqF7AQ6E.js";
6
6
  import "./globalPidIndex-CRH9L9tn.js";
7
7
  import "./pidStore-DXWqzTSz.js";
8
8
  import "./messageLog-Brx3w6zT.js";
9
9
  import "./todoStore-DF6vxHgV.js";
10
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CB98L1zH.js";
10
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BxxxYx1J.js";
11
11
  import { f as resolveSpawnCwd } from "./workspaceConfig-DTvPtr5j.js";
12
12
  import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-CipjIwfO.js";
13
13
  import { createHash } from "node:crypto";
@@ -154,4 +154,4 @@ async function cmdSchedule(rest) {
154
154
 
155
155
  //#endregion
156
156
  export { cmdSchedule };
157
- //# sourceMappingURL=schedule-D_ZH65el.js.map
157
+ //# sourceMappingURL=schedule-yMAymlHZ.js.map
@@ -1,7 +1,7 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { i as getInstalledPackage } from "./versionChecker-CqLkSVM1.js";
3
- import { a as findSpawnHiddenLauncher } from "./rustBinary-BOZV2IrF.js";
4
- import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-CPqeQSS8.js";
2
+ import { i as getInstalledPackage } from "./versionChecker-CqaWZAm0.js";
3
+ import { a as findSpawnHiddenLauncher } from "./rustBinary-Wh9kNpga.js";
4
+ import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-DYKrhLtc.js";
5
5
  import { t as agentYesHome$1 } from "./agentYesHome-BNtn19J4.js";
6
6
  import { u as removeControlCharacters } from "./todoAutomation-CbVVS4re.js";
7
7
  import "./JsonlStore-BqF7AQ6E.js";
@@ -12,19 +12,19 @@ import { t as pgidForWrapper } from "./reaper-UimuuTfO.js";
12
12
  import "./todoStore-DF6vxHgV.js";
13
13
  import "./e2e-z1xpwSAg.js";
14
14
  import "./configShared-DKTgiz7K.js";
15
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CB98L1zH.js";
16
- import { B as readLogForRender, F as listRecords, G as renderLogTailLines, H as readPtysize, J as resolveOne, K as renderRawLog, M as isUserTyping, O as isSlashCommand, S as extractTaskCounts, U as recentMessageEdges, V as readNotes, W as recentReadEdges, ct as framePaste, et as snapshotStatus, g as deriveLiveStatus, lt as shouldFramePaste, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, st as withIpcLock, u as cliDefaults, ut as TYPING_BADGE, x as extractNeedsInput, y as extractBadges } from "./subcommands-CZZ-l7le.js";
15
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BxxxYx1J.js";
16
+ import { B as readLogForRender, F as listRecords, G as renderLogTailLines, H as readPtysize, J as resolveOne, K as renderRawLog, M as isUserTyping, O as isSlashCommand, S as extractTaskCounts, U as recentMessageEdges, V as readNotes, W as recentReadEdges, ct as framePaste, et as snapshotStatus, g as deriveLiveStatus, lt as shouldFramePaste, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, st as withIpcLock, u as cliDefaults, ut as TYPING_BADGE, x as extractNeedsInput, y as extractBadges } from "./subcommands-CyhuIreR.js";
17
17
  import { c as isTransientLockMkdirError } from "./notifyStore-2SWKGwZI.js";
18
18
  import { i as toWebrtcUrl, n as isWebrtcSpec } from "./webrtcLink-CnQf9pmu.js";
19
19
  import "./remotes-5P__pAXA.js";
20
20
  import { i as frameVisitorMessage, s as verifyCapability, t as MAX_CALLBACK_MSG_BYTES } from "./callbackCore-Bl2gGcxg.js";
21
- import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-CsUXaJ-G.js";
21
+ import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-MneknqcS.js";
22
22
  import { n as sampleTrees } from "./procStats-CyD8h5nx.js";
23
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-DTvPtr5j.js";
24
24
  import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-CipjIwfO.js";
25
- import { i as importProvisionModule } from "./ws-BxmJb-CE.js";
25
+ import { i as importProvisionModule } from "./ws-ClgsUOJu.js";
26
26
  import { r as spawnRejectionReason } from "./spawnGate-YpHopveO.js";
27
- import { i as launchTray } from "./trayApp-BfUc_4-h.js";
27
+ import { i as launchTray } from "./trayApp-C77uhW1i.js";
28
28
  import yargs from "yargs";
29
29
  import { appendFile, mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile } from "fs/promises";
30
30
  import { arch, cpus, freemem, homedir, hostname, loadavg, platform, totalmem, uptime, userInfo } from "os";
@@ -1099,6 +1099,9 @@ async function bootstrapDaemonManager() {
1099
1099
  }
1100
1100
  return null;
1101
1101
  }
1102
+ function oxmgrCmd(argv) {
1103
+ return argv.map((a) => /[\\\s"]/.test(a) ? `"${a.replace(/"/g, "\\\"")}"` : a).join(" ");
1104
+ }
1102
1105
  function ayServeArgv(args) {
1103
1106
  const ayBin = Bun.which("ay");
1104
1107
  return [
@@ -1432,7 +1435,7 @@ async function cmdServeDaemon(sub, args) {
1432
1435
  const managedArgv = spawnHidden ? [spawnHidden, ...serveArgv] : serveArgv;
1433
1436
  const oxmgrHealth = webrtcDaemon && mgr.id === "oxmgr" ? [
1434
1437
  "--health-cmd",
1435
- ayServeArgv(["healthcheck"]).join(" "),
1438
+ oxmgrCmd(ayServeArgv(["healthcheck"])),
1436
1439
  "--health-interval",
1437
1440
  "10",
1438
1441
  "--health-timeout",
@@ -1443,7 +1446,7 @@ async function cmdServeDaemon(sub, args) {
1443
1446
  const startArgv = mgr.id === "oxmgr" ? [
1444
1447
  mgr.bin,
1445
1448
  "start",
1446
- managedArgv.join(" "),
1449
+ oxmgrCmd(managedArgv),
1447
1450
  "--name",
1448
1451
  DAEMON_NAME,
1449
1452
  "--restart",
@@ -1652,7 +1655,7 @@ Options:
1652
1655
  const { planRustServe } = await import("./serveRust-DDQiZmMf.js");
1653
1656
  const plan = planRustServe(rest);
1654
1657
  if (plan.kind === "rust") {
1655
- const { findAyrsBinary } = await import("./rustBinary-ByeLQphl.js");
1658
+ const { findAyrsBinary } = await import("./rustBinary-DsxZnwXj.js");
1656
1659
  const ayrs = findAyrsBinary();
1657
1660
  if (ayrs) return runAyrsServe(ayrs, plan.argv);
1658
1661
  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");
@@ -2627,7 +2630,7 @@ Options:
2627
2630
  }
2628
2631
  });
2629
2632
  if (req.method === "GET" && p === "/api/ws") {
2630
- const ws = await import("./ws-CJompjqD.js");
2633
+ const ws = await import("./ws-Dsu27GmE.js");
2631
2634
  try {
2632
2635
  await ws.loadProvision();
2633
2636
  } catch (e) {
@@ -2647,7 +2650,7 @@ Options:
2647
2650
  if (req.method === "GET" && p === "/api/ws/status") {
2648
2651
  const dirRaw = url.searchParams.get("path");
2649
2652
  if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
2650
- const ws = await import("./ws-CJompjqD.js");
2653
+ const ws = await import("./ws-Dsu27GmE.js");
2651
2654
  let prov;
2652
2655
  try {
2653
2656
  prov = await ws.loadProvision();
@@ -2669,7 +2672,7 @@ Options:
2669
2672
  }
2670
2673
  }
2671
2674
  if (req.method === "GET" && p === "/api/ws/repos") {
2672
- const ws = await import("./ws-CJompjqD.js");
2675
+ const ws = await import("./ws-Dsu27GmE.js");
2673
2676
  try {
2674
2677
  await ws.loadProvision();
2675
2678
  } catch (e) {
@@ -2750,7 +2753,7 @@ Options:
2750
2753
  const m = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/.exec(repoParam);
2751
2754
  if (!m || m[1] === "." || m[1] === ".." || m[2] === "." || m[2] === "..") return new Response("missing/invalid ?repo=<owner>/<repo>", { status: 400 });
2752
2755
  const [, owner, repo] = m;
2753
- const ws = await import("./ws-CJompjqD.js");
2756
+ const ws = await import("./ws-Dsu27GmE.js");
2754
2757
  let prov;
2755
2758
  try {
2756
2759
  prov = await ws.loadProvision();
@@ -3668,7 +3671,7 @@ Options:
3668
3671
  const perm = body.perm ?? "r";
3669
3672
  if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
3670
3673
  try {
3671
- const { createScopedShare } = await import("./agentShare-DAKBVsJX.js");
3674
+ const { createScopedShare } = await import("./agentShare-BXg5zEtW.js");
3672
3675
  const share = await createScopedShare({
3673
3676
  agent: body.agent,
3674
3677
  perm,
@@ -3683,12 +3686,12 @@ Options:
3683
3686
  }
3684
3687
  }
3685
3688
  if (req.method === "GET" && p === "/api/shares") {
3686
- const { listShares } = await import("./agentShare-DAKBVsJX.js");
3689
+ const { listShares } = await import("./agentShare-BXg5zEtW.js");
3687
3690
  return Response.json(listShares());
3688
3691
  }
3689
3692
  const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
3690
3693
  if (req.method === "DELETE" && revokeM) {
3691
- const { revokeShare } = await import("./agentShare-DAKBVsJX.js");
3694
+ const { revokeShare } = await import("./agentShare-BXg5zEtW.js");
3692
3695
  const ok = revokeShare(decodeURIComponent(revokeM[1]));
3693
3696
  return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
3694
3697
  }
@@ -3994,7 +3997,7 @@ Options:
3994
3997
  const shutdown = (resolve) => {
3995
3998
  if (heartbeat) clearInterval(heartbeat);
3996
3999
  closeShare?.();
3997
- import("./agentShare-DAKBVsJX.js").then((m) => m.revokeAllShares()).catch(() => {});
4000
+ import("./agentShare-BXg5zEtW.js").then((m) => m.revokeAllShares()).catch(() => {});
3998
4001
  server?.stop();
3999
4002
  Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
4000
4003
  };
@@ -4007,4 +4010,4 @@ Options:
4007
4010
 
4008
4011
  //#endregion
4009
4012
  export { cmdServe, loadTokenReadOnly, mintScopedTermToken, resolveDaemonHttpBase, resolveLocalServeUrl };
4010
- //# sourceMappingURL=serve-CplhD9SY.js.map
4013
+ //# sourceMappingURL=serve-Cn6LTsO5.js.map
@@ -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-CplhD9SY.js");
100
+ const { cmdServe } = await import("./serve-Cn6LTsO5.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-CYFWwZAl.js.map
110
+ //# sourceMappingURL=setup-DAKtsxiB.js.map
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
5
5
  import "./messageLog-Brx3w6zT.js";
6
6
  import "./e2e-z1xpwSAg.js";
7
7
  import "./configShared-DKTgiz7K.js";
8
- import { $ as sendPayloadCapError, A as isUnknownManagerToken, B as readLogForRender, C as finalizedLines, D as isPidAlive, E as isExitRequest, F as listRecords, G as renderLogTailLines, H as readPtysize, I as matchKeyword, J as resolveOne, K as renderRawLog, L as menuSelectKeys, M as isUserTyping, N as lastReadAt, O as isSlashCommand, P as lastStdinAt, Q as runSubcommand, R as probeStdinReachable, S as extractTaskCounts, T as isBareManagerInvocation, U as recentMessageEdges, V as readNotes, W as recentReadEdges, X as resolveResumeArgs, Y as resolveReadWindow, Z as restartHintLines, _ as envelopeAttribution, a as SEND_BODY_MAX_CHARS, at as writeKeysPaced, b as extractMenu, c as backoffWhileTyping, d as cmdHelp, et as snapshotStatus, f as confirmStdinUnreachable, g as deriveLiveStatus, h as deriveLiveState, i as READ_WINDOW_MS, it as waitForLogQuiet, j as isUnreachableWriteErrno, k as isSubcommand, l as buildEnvelope, m as cursorAbs, n as MAX_RENDER_BYTES, nt as stopTipForCli, o as SEND_EXIT_UNREACHABLE, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, r as READ_PAGE_DEFAULT, rt as submitAndConfirm, s as TYPING_WINDOW_MS, t as GRACEFUL_EXIT_COMMANDS, tt as stdinActivityPath, u as cliDefaults, v as envelopeCostFor, w as isAgentStuck, x as extractNeedsInput, y as extractBadges, z as readAgentPtysize } from "./subcommands-CZZ-l7le.js";
8
+ import { $ as sendPayloadCapError, A as isUnknownManagerToken, B as readLogForRender, C as finalizedLines, D as isPidAlive, E as isExitRequest, F as listRecords, G as renderLogTailLines, H as readPtysize, I as matchKeyword, J as resolveOne, K as renderRawLog, L as menuSelectKeys, M as isUserTyping, N as lastReadAt, O as isSlashCommand, P as lastStdinAt, Q as runSubcommand, R as probeStdinReachable, S as extractTaskCounts, T as isBareManagerInvocation, U as recentMessageEdges, V as readNotes, W as recentReadEdges, X as resolveResumeArgs, Y as resolveReadWindow, Z as restartHintLines, _ as envelopeAttribution, a as SEND_BODY_MAX_CHARS, at as writeKeysPaced, b as extractMenu, c as backoffWhileTyping, d as cmdHelp, et as snapshotStatus, f as confirmStdinUnreachable, g as deriveLiveStatus, h as deriveLiveState, i as READ_WINDOW_MS, it as waitForLogQuiet, j as isUnreachableWriteErrno, k as isSubcommand, l as buildEnvelope, m as cursorAbs, n as MAX_RENDER_BYTES, nt as stopTipForCli, o as SEND_EXIT_UNREACHABLE, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, r as READ_PAGE_DEFAULT, rt as submitAndConfirm, s as TYPING_WINDOW_MS, t as GRACEFUL_EXIT_COMMANDS, tt as stdinActivityPath, u as cliDefaults, v as envelopeCostFor, w as isAgentStuck, x as extractNeedsInput, y as extractBadges, z as readAgentPtysize } from "./subcommands-CyhuIreR.js";
9
9
  import "./notifyStore-2SWKGwZI.js";
10
10
  import "./webrtcLink-CnQf9pmu.js";
11
11
  import "./remotes-5P__pAXA.js";
@@ -1546,7 +1546,7 @@ async function runSubcommand(argv) {
1546
1546
  switch (sub) {
1547
1547
  case "ls":
1548
1548
  case "list": return await cmdLs(rest);
1549
- case "ps": return await (await import("./cmdPs-BPiWShcv.js")).cmdPs(rest);
1549
+ case "ps": return await (await import("./cmdPs-BwDyVmFi.js")).cmdPs(rest);
1550
1550
  case "status": return await cmdStatus(rest);
1551
1551
  case "whoami": return await cmdWhoami(rest);
1552
1552
  case "result": return await cmdResult(rest);
@@ -1593,35 +1593,35 @@ async function runSubcommand(argv) {
1593
1593
  return cmdCh(rest);
1594
1594
  }
1595
1595
  case "term": {
1596
- const { cmdTerm } = await import("./terminal-BufLgBpW.js");
1596
+ const { cmdTerm } = await import("./terminal-D7G7Ngnj.js");
1597
1597
  return cmdTerm(rest);
1598
1598
  }
1599
1599
  case "widget": {
1600
- const { cmdWidget } = await import("./widget-DTq1SAWM.js");
1600
+ const { cmdWidget } = await import("./widget-D2sc3bde.js");
1601
1601
  return cmdWidget(rest);
1602
1602
  }
1603
1603
  case "mint": {
1604
- const { cmdMint } = await import("./widget-DTq1SAWM.js");
1604
+ const { cmdMint } = await import("./widget-D2sc3bde.js");
1605
1605
  return cmdMint(rest);
1606
1606
  }
1607
1607
  case "serve": {
1608
- const { cmdServe } = await import("./serve-CplhD9SY.js");
1608
+ const { cmdServe } = await import("./serve-Cn6LTsO5.js");
1609
1609
  return cmdServe(rest);
1610
1610
  }
1611
1611
  case "tray": {
1612
- const { cmdTray } = await import("./trayApp-CfVKFhYn.js");
1612
+ const { cmdTray } = await import("./trayApp-i6201tMp.js");
1613
1613
  return cmdTray(rest);
1614
1614
  }
1615
1615
  case "setup": {
1616
- const { cmdSetup } = await import("./setup-CYFWwZAl.js");
1616
+ const { cmdSetup } = await import("./setup-DAKtsxiB.js");
1617
1617
  return cmdSetup(rest);
1618
1618
  }
1619
1619
  case "ws": {
1620
- const { cmdWs } = await import("./ws-CJompjqD.js");
1620
+ const { cmdWs } = await import("./ws-Dsu27GmE.js");
1621
1621
  return cmdWs(rest);
1622
1622
  }
1623
1623
  case "schedule": {
1624
- const { cmdSchedule } = await import("./schedule-D_ZH65el.js");
1624
+ const { cmdSchedule } = await import("./schedule-yMAymlHZ.js");
1625
1625
  return cmdSchedule(rest);
1626
1626
  }
1627
1627
  case "remote": {
@@ -1633,7 +1633,7 @@ async function runSubcommand(argv) {
1633
1633
  return cmdExpose(rest);
1634
1634
  }
1635
1635
  case "callback": {
1636
- const { cmdCallback } = await import("./callback-BXGJ2Lao.js");
1636
+ const { cmdCallback } = await import("./callback-TqS7f7-H.js");
1637
1637
  return cmdCallback(rest);
1638
1638
  }
1639
1639
  case "reap":
@@ -1644,7 +1644,7 @@ async function runSubcommand(argv) {
1644
1644
  return await cmdDsh(rest);
1645
1645
  }
1646
1646
  case "gc": {
1647
- const { gcOldBinaryDirs } = await import("./rustBinary-ByeLQphl.js");
1647
+ const { gcOldBinaryDirs } = await import("./rustBinary-DsxZnwXj.js");
1648
1648
  const { gcLogs } = await import("./globalPidIndex-DC93JhHQ.js");
1649
1649
  const bins = gcOldBinaryDirs();
1650
1650
  const logs = await gcLogs();
@@ -4351,7 +4351,7 @@ async function cmdAttach(rest) {
4351
4351
  const winsizeDir = path.join(ayHome, "winsize");
4352
4352
  await mkdir(winsizeDir, { recursive: true });
4353
4353
  const winsizePath = path.join(winsizeDir, String(record.pid));
4354
- const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-CplhD9SY.js");
4354
+ const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-Cn6LTsO5.js");
4355
4355
  const daemonBase = await resolveDaemonHttpBase().catch(() => null);
4356
4356
  const daemonToken = daemonBase ? await loadTokenReadOnly().catch(() => null) ?? "" : "";
4357
4357
  const capViewer = `attach:${process.pid}`;
@@ -5078,7 +5078,7 @@ async function cmdNotify(rest) {
5078
5078
  }
5079
5079
  const ensure = async () => {
5080
5080
  if (!argv["ensure-daemon"]) return;
5081
- const { ensureDaemon } = await import("./notifyDaemon-B_0fzPev.js");
5081
+ const { ensureDaemon } = await import("./notifyDaemon-lY7jeQcF.js");
5082
5082
  await ensureDaemon().catch(() => null);
5083
5083
  };
5084
5084
  await heartbeatWatcher(parent, selfStartedAt);
@@ -5152,7 +5152,7 @@ async function cmdNotifyCursor(args) {
5152
5152
  }
5153
5153
  async function cmdNotifyd(rest) {
5154
5154
  const sub = rest[0] ?? "status";
5155
- const daemon = await import("./notifyDaemon-B_0fzPev.js");
5155
+ const daemon = await import("./notifyDaemon-lY7jeQcF.js");
5156
5156
  switch (sub) {
5157
5157
  case "run": return daemon.runDaemon();
5158
5158
  case "once": return daemon.runDaemon({ once: true });
@@ -5179,4 +5179,4 @@ async function cmdNotifyd(rest) {
5179
5179
 
5180
5180
  //#endregion
5181
5181
  export { sendPayloadCapError as $, isUnknownManagerToken as A, readLogForRender as B, finalizedLines as C, isPidAlive as D, isExitRequest as E, listRecords as F, renderLogTailLines as G, readPtysize as H, matchKeyword as I, resolveOne as J, renderRawLog as K, menuSelectKeys as L, isUserTyping as M, lastReadAt as N, isSlashCommand as O, lastStdinAt as P, runSubcommand as Q, probeStdinReachable as R, extractTaskCounts as S, isBareManagerInvocation as T, recentMessageEdges as U, readNotes as V, recentReadEdges as W, resolveResumeArgs as X, resolveReadWindow as Y, restartHintLines as Z, envelopeAttribution as _, SEND_BODY_MAX_CHARS as a, writeKeysPaced as at, extractMenu as b, backoffWhileTyping as c, framePaste as ct, cmdHelp as d, buildAgentForest as dt, snapshotStatus as et, confirmStdinUnreachable as f, flattenForest as ft, deriveLiveStatus as g, deriveLiveState as h, READ_WINDOW_MS as i, waitForLogQuiet as it, isUnreachableWriteErrno as j, isSubcommand as k, buildEnvelope as l, shouldFramePaste as lt, cursorAbs as m, MAX_RENDER_BYTES as n, stopTipForCli as nt, SEND_EXIT_UNREACHABLE as o, writeToIpc as ot, controlCodeFromName as p, renderRawLogLines as q, READ_PAGE_DEFAULT as r, submitAndConfirm as rt, TYPING_WINDOW_MS as s, withIpcLock as st, GRACEFUL_EXIT_COMMANDS as t, stdinActivityPath as tt, cliDefaults as u, TYPING_BADGE as ut, envelopeCostFor as v, isAgentStuck as w, extractNeedsInput as x, extractBadges as y, readAgentPtysize as z };
5182
- //# sourceMappingURL=subcommands-CZZ-l7le.js.map
5182
+ //# sourceMappingURL=subcommands-CyhuIreR.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-CplhD9SY.js");
101
+ const { mintScopedTermToken } = await import("./serve-Cn6LTsO5.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-BufLgBpW.js.map
138
+ //# sourceMappingURL=terminal-D7G7Ngnj.js.map
@@ -1,4 +1,4 @@
1
- import { o as findTrayLauncher } from "./rustBinary-BOZV2IrF.js";
1
+ import { o as findTrayLauncher } from "./rustBinary-Wh9kNpga.js";
2
2
  import { t as agentYesHome } from "./agentYesHome-BNtn19J4.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-BfUc_4-h.js.map
100
+ //# sourceMappingURL=trayApp-C77uhW1i.js.map
@@ -0,0 +1,5 @@
1
+ import "./versionChecker-CqaWZAm0.js";
2
+ import "./rustBinary-Wh9kNpga.js";
3
+ import { a as trayHiddenMarker, i as launchTray, n as hasDesktop, r as isTrayHidden, t as cmdTray } from "./trayApp-C77uhW1i.js";
4
+
5
+ export { cmdTray };
@@ -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 { i as getInstalledPackage } from "./versionChecker-CqLkSVM1.js";
3
+ import { i as getInstalledPackage } from "./versionChecker-CqaWZAm0.js";
4
4
  import { t as agentYesHome } from "./agentYesHome-BNtn19J4.js";
5
5
  import { u as removeControlCharacters } from "./todoAutomation-CbVVS4re.js";
6
6
  import { i as shouldUseLock, r as releaseLock, t as acquireLock } from "./runningLock-BOIPD_Vs.js";
@@ -2086,7 +2086,7 @@ async function agentYes({ cli, cliArgs = [], skipPermissions = false, prompt, ro
2086
2086
  }, 100);
2087
2087
  const cleanupHeartbeat = () => clearInterval(heartbeatInterval);
2088
2088
  shell.onExit(cleanupHeartbeat);
2089
- const { startParentPingLoop } = await import("./parentPingLoop-BRhzqYJ-.js");
2089
+ const { startParentPingLoop } = await import("./parentPingLoop-BNk9bmkL.js");
2090
2090
  const parentPingLoop = startParentPingLoop({
2091
2091
  parentPid,
2092
2092
  selfWrapperPid: process.pid,
@@ -2349,4 +2349,4 @@ function sleep(ms) {
2349
2349
 
2350
2350
  //#endregion
2351
2351
  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 };
2352
- //# sourceMappingURL=ts-CPqeQSS8.js.map
2352
+ //# sourceMappingURL=ts-DYKrhLtc.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.293.0";
10
+ var version = "1.294.0";
11
11
 
12
12
  //#endregion
13
13
  //#region ts/versionChecker.ts
@@ -285,4 +285,4 @@ async function displayVersion() {
285
285
 
286
286
  //#endregion
287
287
  export { versionString as a, getInstalledPackage as i, compareVersions as n, displayVersion as r, checkAndAutoUpdate as t };
288
- //# sourceMappingURL=versionChecker-CqLkSVM1.js.map
288
+ //# sourceMappingURL=versionChecker-CqaWZAm0.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-CplhD9SY.js");
31
+ const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-Cn6LTsO5.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-CplhD9SY.js");
189
+ const { mintScopedTermToken } = await import("./serve-Cn6LTsO5.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-DTq1SAWM.js.map
205
+ //# sourceMappingURL=widget-D2sc3bde.js.map
@@ -1,4 +1,4 @@
1
- import { F as listRecords } from "./subcommands-CZZ-l7le.js";
1
+ import { F as listRecords } from "./subcommands-CyhuIreR.js";
2
2
  import { a as getProvisionRoot } from "./workspaceConfig-DTvPtr5j.js";
3
3
  import { existsSync } from "fs";
4
4
  import { lstat, opendir } from "fs/promises";
@@ -424,4 +424,4 @@ async function cmdWs(args) {
424
424
 
425
425
  //#endregion
426
426
  export { isPathInside as a, walkWorkspaces as c, importProvisionModule as i, workspaceStatus as l, cmdWs as n, loadProvision as o, collectWorkspaces as r, resolveOperand as s, WS_JSON_SCHEMA as t };
427
- //# sourceMappingURL=ws-BxmJb-CE.js.map
427
+ //# sourceMappingURL=ws-ClgsUOJu.js.map
@@ -5,10 +5,10 @@ import "./pidStore-DXWqzTSz.js";
5
5
  import "./messageLog-Brx3w6zT.js";
6
6
  import "./e2e-z1xpwSAg.js";
7
7
  import "./configShared-DKTgiz7K.js";
8
- import "./subcommands-CZZ-l7le.js";
8
+ import "./subcommands-CyhuIreR.js";
9
9
  import "./notifyStore-2SWKGwZI.js";
10
10
  import "./webrtcLink-CnQf9pmu.js";
11
11
  import "./remotes-5P__pAXA.js";
12
- import { a as isPathInside, c as walkWorkspaces, i as importProvisionModule, l as workspaceStatus, n as cmdWs, o as loadProvision, r as collectWorkspaces, s as resolveOperand, t as WS_JSON_SCHEMA } from "./ws-BxmJb-CE.js";
12
+ import { a as isPathInside, c as walkWorkspaces, i as importProvisionModule, l as workspaceStatus, n as cmdWs, o as loadProvision, r as collectWorkspaces, s as resolveOperand, t as WS_JSON_SCHEMA } from "./ws-ClgsUOJu.js";
13
13
 
14
14
  export { WS_JSON_SCHEMA, cmdWs, collectWorkspaces, isPathInside, loadProvision, walkWorkspaces, workspaceStatus };
package/lab/ui/sw.js CHANGED
@@ -145,8 +145,15 @@ self.addEventListener("install", (e) => {
145
145
  self.addEventListener("activate", (e) => {
146
146
  e.waitUntil(
147
147
  (async () => {
148
+ // Only evict OUR OWN stale versions. Cache Storage is per-origin and
149
+ // agent-yes.com also hosts the /r/ rgui PWA (cache prefix
150
+ // "agent-yes-rgui-") — a blanket delete would wipe its offline shell.
148
151
  const keys = await caches.keys();
149
- await Promise.all(keys.filter((k) => k !== CACHE).map((k) => caches.delete(k)));
152
+ await Promise.all(
153
+ keys
154
+ .filter((k) => k.startsWith("agent-yes-w-") && k !== CACHE)
155
+ .map((k) => caches.delete(k)),
156
+ );
150
157
  await self.clients.claim();
151
158
  })(),
152
159
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-yes",
3
- "version": "1.293.0",
3
+ "version": "1.294.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",
@@ -76,5 +76,11 @@ if (!result.success) {
76
76
  throw new Error("[build-rgui] bundle failed");
77
77
  }
78
78
 
79
- await cp(path.join(root, "lab/ui/rgui/index.html"), path.join(outdir, "index.html"));
80
- console.log(`[build-rgui] ${path.relative(root, outdir)}/ (index.html + main.js)`);
79
+ // Ship the shell + PWA assets beside the bundle so /r/ (and the /rgui/ alias) is
80
+ // an installable, offline-capable PWA — its own manifest/app-title/icon + a
81
+ // service worker, separate from the /w/ console's.
82
+ const PWA_ASSETS = ["index.html", "manifest.webmanifest", "sw.js", "icon.svg"];
83
+ for (const f of PWA_ASSETS) {
84
+ await cp(path.join(root, "lab/ui/rgui", f), path.join(outdir, f));
85
+ }
86
+ console.log(`[build-rgui] → ${path.relative(root, outdir)}/ (${PWA_ASSETS.join(", ")} + main.js)`);
package/ts/serve.spec.ts CHANGED
@@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest";
3
3
  import {
4
4
  installerArgv,
5
5
  isNoNodeExecError,
6
+ oxmgrCmd,
6
7
  oxmgrVersionHasWindowsFix,
7
8
  parseGitUrl,
8
9
  portlessConsoleUrl,
@@ -185,3 +186,22 @@ describe("shareLinkStatus", () => {
185
186
  expect(shareLinkStatus(null, true, false)).toEqual({ link: null, stale: false });
186
187
  });
187
188
  });
189
+
190
+ // oxmgr takes its command as ONE string and shell-splits it, treating `\` as
191
+ // an escape: an unquoted Windows path lost every separator on the way in
192
+ // (`C:\Users\…\ay.exe` → `C:Users…ay.exe` → "failed to spawn"). Quoting is what
193
+ // suppresses that, so every arg carrying a backslash, whitespace or a quote
194
+ // must be double-quoted; plain args stay bare.
195
+ describe("oxmgrCmd", () => {
196
+ it("quotes args with backslashes or spaces and leaves plain ones bare", () => {
197
+ expect(oxmgrCmd([String.raw`C:\x\ay.exe`, "serve", "--share"])).toBe(
198
+ String.raw`"C:\x\ay.exe" serve --share`,
199
+ );
200
+ expect(oxmgrCmd(["/usr/bin/bun", "/x/a b/ay", "serve"])).toBe(
201
+ '/usr/bin/bun "/x/a b/ay" serve',
202
+ );
203
+ });
204
+ it("escapes an embedded double quote inside a quoted arg", () => {
205
+ expect(oxmgrCmd(['say "hi"'])).toBe(String.raw`"say \"hi\""`);
206
+ });
207
+ });
package/ts/serve.ts CHANGED
@@ -940,6 +940,15 @@ async function bootstrapDaemonManager(): Promise<DaemonManager | null> {
940
940
  // environment may not have ~/.bun/bin on PATH, so we use an absolute path.
941
941
  // On Windows the `ay` bin is a self-contained launcher (ay.exe) we exec
942
942
  // directly; on POSIX it's a `#!/usr/bin/env bun` script we run through bun.
943
+ // oxmgr takes its command as ONE string and shell-splits it, treating `\` as an
944
+ // escape — so a bare Windows path arrives with every separator eaten
945
+ // (`C:\Users\…\ay.exe` → `C:Users…ay.exe` → "failed to spawn"). Double-quoting
946
+ // suppresses the escape handling, so quote any arg carrying a backslash or a
947
+ // space. pm2 is unaffected: it gets program + args as separate argv entries.
948
+ export function oxmgrCmd(argv: string[]): string {
949
+ return argv.map((a) => (/[\\\s"]/.test(a) ? `"${a.replace(/"/g, '\\"')}"` : a)).join(" ");
950
+ }
951
+
943
952
  function ayServeArgv(args: string[]): string[] {
944
953
  const ayBin = Bun.which("ay");
945
954
  const launcher = ayBin
@@ -1395,7 +1404,8 @@ async function cmdServeDaemon(sub: string, args: string[]): Promise<number> {
1395
1404
  const spawnHidden = findSpawnHiddenLauncher();
1396
1405
  // The command the manager launches: unchanged normally, or the launcher
1397
1406
  // followed by the real argv when interposing. Split into program + args for
1398
- // pm2 (which takes `<program> … -- <args>`); oxmgr takes the joined string.
1407
+ // pm2 (which takes `<program> … -- <args>`); oxmgr takes it as one quoted
1408
+ // string via oxmgrCmd (see there for why bare backslashes can't be used).
1399
1409
  const managedArgv = spawnHidden ? [spawnHidden, ...serveArgv] : serveArgv;
1400
1410
  // WebRTC daemons get an oxmgr health watchdog: the native WebRTC stack can
1401
1411
  // freeze the JS event loop (host answers nobody, no in-process timer can
@@ -1406,7 +1416,7 @@ async function cmdServeDaemon(sub: string, args: string[]): Promise<number> {
1406
1416
  webrtcDaemon && mgr.id === "oxmgr"
1407
1417
  ? [
1408
1418
  "--health-cmd",
1409
- ayServeArgv(["healthcheck"]).join(" "),
1419
+ oxmgrCmd(ayServeArgv(["healthcheck"])),
1410
1420
  "--health-interval",
1411
1421
  "10",
1412
1422
  "--health-timeout",
@@ -1420,7 +1430,7 @@ async function cmdServeDaemon(sub: string, args: string[]): Promise<number> {
1420
1430
  ? [
1421
1431
  mgr.bin,
1422
1432
  "start",
1423
- managedArgv.join(" "),
1433
+ oxmgrCmd(managedArgv),
1424
1434
  "--name",
1425
1435
  DAEMON_NAME,
1426
1436
  "--restart",
@@ -1,5 +0,0 @@
1
- import "./versionChecker-CqLkSVM1.js";
2
- import "./rustBinary-BOZV2IrF.js";
3
- import { a as trayHiddenMarker, i as launchTray, n as hasDesktop, r as isTrayHidden, t as cmdTray } from "./trayApp-BfUc_4-h.js";
4
-
5
- export { cmdTray };