agent-yes 1.258.3 → 1.259.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 (57) hide show
  1. package/dist/{SUPPORTED_CLIS-DD6bhkyI.js → SUPPORTED_CLIS-BBeIFAZD.js} +2 -2
  2. package/dist/SUPPORTED_CLIS-BRgPb6Pz.js +11 -0
  3. package/dist/{agentShare-CoI7IHeq.js → agentShare-90Y_SFqK.js} +4 -4
  4. package/dist/{callback-CbdkyTRw.js → callback-CLzRxjEn.js} +3 -3
  5. package/dist/{callback-DNI__ASS.js → callback-DYQ2jQi2.js} +4 -4
  6. package/dist/cli.js +11 -11
  7. package/dist/{cwdConflictWarn-DZTxTGXq.js → cwdConflictWarn-B_047KCF.js} +2 -2
  8. package/dist/{forkNested-CgJ1rTnT.js → forkNested-CBdhC852.js} +2 -2
  9. package/dist/globalPidIndex-CHA__9Xf.js +4 -0
  10. package/dist/{globalPidIndex-Dq4KY2IV.js → globalPidIndex-pwp7Vb7o.js} +8 -2
  11. package/dist/index.js +4 -4
  12. package/dist/{notifyDaemon-BQ6_UbJS.js → notifyDaemon-D5RtFwMq.js} +4 -4
  13. package/dist/pidStore-1PQ4ARnh.js +6 -0
  14. package/dist/{pidStore-Cmcc8Oej.js → pidStore-DfSm1jog.js} +7 -4
  15. package/dist/{remotes-Dy4Rg8Yp.js → remotes-Cn-wszbK.js} +2 -2
  16. package/dist/{remotes-CNe85Icx.js → remotes-lOhHSoSS.js} +1 -1
  17. package/dist/{rustBinary-orhBmTNo.js → rustBinary-BEscpLLP.js} +2 -2
  18. package/dist/{schedule-BQy6gXYk.js → schedule-Cw5nW_di.js} +6 -6
  19. package/dist/{serve-C2mQMjUR.js → serve-DctJ7tY-.js} +19 -19
  20. package/dist/{setup-EEF1vfhi.js → setup-BA9D1ExO.js} +10 -2
  21. package/dist/{spawnGate-D0E1uRP7.js → spawnGate-D-68B907.js} +2 -2
  22. package/dist/spawnGate-DbSHnfqA.js +5 -0
  23. package/dist/{subcommands-CiX7J7hA.js → subcommands-D_cPHm34.js} +93 -24
  24. package/dist/{subcommands-S7uULM_d.js → subcommands-Dg7KkEi6.js} +3 -3
  25. package/dist/systemPathLink-DTAhFXFx.js +91 -0
  26. package/dist/{terminal-i7IimD_R.js → terminal-CB5K4Jjh.js} +2 -2
  27. package/dist/{todoCli-B2kqgqPh.js → todoCli-DNOk38lq.js} +2 -2
  28. package/dist/{tray-CgkwxtG6.js → tray-wWMvGWeY.js} +1 -1
  29. package/dist/trayApp-B1OhYfj3.js +5 -0
  30. package/dist/{trayApp-4sZgxxP-.js → trayApp-Ck3kWM-7.js} +2 -2
  31. package/dist/{ts-D-E4xqpA.js → ts-Bd_7sgVu.js} +5 -4
  32. package/dist/{versionChecker-YDl8a9il.js → versionChecker-DRijpksb.js} +2 -2
  33. package/dist/{webrtcRemote-C3OlHYSt.js → webrtcRemote-BkZcA5yq.js} +1 -1
  34. package/dist/{widget-7j9RrYZR.js → widget-DiRKbtng.js} +3 -3
  35. package/dist/{ws-DjyQ20AD.js → ws-Bp8eOEoV.js} +2 -2
  36. package/dist/{ws-Clem1WQ-.js → ws-Cqn8mxsS.js} +4 -4
  37. package/package.json +1 -1
  38. package/ts/globalPidIndex.spec.ts +36 -0
  39. package/ts/globalPidIndex.ts +19 -1
  40. package/ts/hist.spec.ts +219 -0
  41. package/ts/hist.ts +136 -0
  42. package/ts/histStore.spec.ts +351 -0
  43. package/ts/histStore.ts +494 -0
  44. package/ts/index.ts +4 -0
  45. package/ts/messageLog.ts +2 -0
  46. package/ts/pidStore.spec.ts +26 -0
  47. package/ts/pidStore.ts +10 -0
  48. package/ts/setup.ts +17 -0
  49. package/ts/subcommands.spec.ts +180 -0
  50. package/ts/subcommands.ts +103 -3
  51. package/ts/systemPathLink.spec.ts +69 -0
  52. package/ts/systemPathLink.ts +134 -0
  53. package/dist/SUPPORTED_CLIS-D1BoydrZ.js +0 -11
  54. package/dist/globalPidIndex-CQX_0JSB.js +0 -4
  55. package/dist/pidStore-BbKqQOS8.js +0 -6
  56. package/dist/spawnGate-DqKBA07k.js +0 -5
  57. package/dist/trayApp-C35IkXnz.js +0 -5
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-D-E4xqpA.js";
1
+ import { t as CLIS_CONFIG } from "./ts-Bd_7sgVu.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-DD6bhkyI.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-BBeIFAZD.js.map
@@ -0,0 +1,11 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import "./versionChecker-DRijpksb.js";
3
+ import "./ts-Bd_7sgVu.js";
4
+ import "./todoAutomation-BQRW614S.js";
5
+ import "./JsonlStore-CPGIR0Wy.js";
6
+ import "./globalPidIndex-pwp7Vb7o.js";
7
+ import "./pidStore-DfSm1jog.js";
8
+ import "./messageLog-BYFwioFY.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BBeIFAZD.js";
10
+
11
+ export { SUPPORTED_CLIS };
@@ -1,11 +1,11 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./globalPidIndex-Dq4KY2IV.js";
2
+ import "./globalPidIndex-pwp7Vb7o.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
4
  import "./e2e-CUMZC53I.js";
5
5
  import "./configShared-DtHMBCl7.js";
6
- import { I as resolveOne } from "./subcommands-CiX7J7hA.js";
6
+ import { I as resolveOne } from "./subcommands-D_cPHm34.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
- import "./remotes-Dy4Rg8Yp.js";
8
+ import "./remotes-Cn-wszbK.js";
9
9
  import { a as startShare } from "./share-B-e_9WBx.js";
10
10
 
11
11
  //#region ts/agentShare.ts
@@ -229,4 +229,4 @@ function transformEvent(rawEvent, agentId, forwarded) {
229
229
 
230
230
  //#endregion
231
231
  export { createScopedShare, listShares, revokeAllShares, revokeShare };
232
- //# sourceMappingURL=agentShare-CoI7IHeq.js.map
232
+ //# sourceMappingURL=agentShare-90Y_SFqK.js.map
@@ -1,5 +1,5 @@
1
1
  import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
2
- import { I as resolveOne } from "./subcommands-CiX7J7hA.js";
2
+ import { I as resolveOne } from "./subcommands-D_cPHm34.js";
3
3
  import { a as mintCapability, o as parseExpires } from "./callbackCore-Cg3Ye0ZS.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-C2mQMjUR.js");
75
+ const { resolveLocalServeUrl } = await import("./serve-DctJ7tY-.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-CbdkyTRw.js.map
190
+ //# sourceMappingURL=callback-CLzRxjEn.js.map
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./globalPidIndex-Dq4KY2IV.js";
2
+ import "./globalPidIndex-pwp7Vb7o.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
4
  import "./e2e-CUMZC53I.js";
5
5
  import "./configShared-DtHMBCl7.js";
6
- import "./subcommands-CiX7J7hA.js";
6
+ import "./subcommands-D_cPHm34.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
- import "./remotes-Dy4Rg8Yp.js";
8
+ import "./remotes-Cn-wszbK.js";
9
9
  import "./callbackCore-Cg3Ye0ZS.js";
10
- import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-CbdkyTRw.js";
10
+ import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-CLzRxjEn.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-YDl8a9il.js";
5
- import { r as getRustBinary } from "./rustBinary-orhBmTNo.js";
4
+ import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-DRijpksb.js";
5
+ import { r as getRustBinary } from "./rustBinary-BEscpLLP.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 } = await import("./subcommands-S7uULM_d.js");
298
+ const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken } = await import("./subcommands-Dg7KkEi6.js");
299
299
  if (isHelpFlag && process.argv.length === 3) {
300
300
  await cmdHelp(managerCommands);
301
301
  process.exit(0);
@@ -305,7 +305,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
305
305
  process.exit(code ?? 0);
306
306
  }
307
307
  {
308
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-D1BoydrZ.js");
308
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-BRgPb6Pz.js");
309
309
  if (isUnknownManagerToken(rawArg, managerCommands, SUPPORTED_CLIS)) {
310
310
  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`);
311
311
  process.exit(1);
@@ -324,16 +324,16 @@ await checkAndAutoUpdate();
324
324
  logger.info(versionString());
325
325
  const config = parseCliArgs(process.argv);
326
326
  if (config.tray) {
327
- const { startTray } = await import("./tray-CgkwxtG6.js");
327
+ const { startTray } = await import("./tray-wWMvGWeY.js");
328
328
  await startTray();
329
329
  await new Promise(() => {});
330
330
  }
331
331
  {
332
- const { ensureTray } = await import("./tray-CgkwxtG6.js");
332
+ const { ensureTray } = await import("./tray-wWMvGWeY.js");
333
333
  ensureTray();
334
334
  }
335
335
  if (!config.showVersion && !config.appendPrompt && !config.tray) {
336
- const { waitForSpawnCapacity } = await import("./spawnGate-DqKBA07k.js");
336
+ const { waitForSpawnCapacity } = await import("./spawnGate-DbSHnfqA.js");
337
337
  await waitForSpawnCapacity({
338
338
  onWait: (reason, waitedMs) => {
339
339
  if (config.verbose || waitedMs === 0) console.error(`[agent-yes] spawn gate: ${reason} — waiting…`);
@@ -342,7 +342,7 @@ if (!config.showVersion && !config.appendPrompt && !config.tray) {
342
342
  });
343
343
  }
344
344
  if (!config.showVersion && !config.appendPrompt && !config.tray) {
345
- const { warnIfCwdOccupied } = await import("./cwdConflictWarn-DZTxTGXq.js");
345
+ const { warnIfCwdOccupied } = await import("./cwdConflictWarn-B_047KCF.js");
346
346
  await warnIfCwdOccupied(process.argv);
347
347
  }
348
348
  if (config.useRust) {
@@ -356,14 +356,14 @@ if (config.useRust) {
356
356
  }
357
357
  }
358
358
  if (rustBinary) {
359
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-D1BoydrZ.js");
359
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-BRgPb6Pz.js");
360
360
  const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
361
361
  if (config.verbose) {
362
362
  console.log(`[rust] Using binary: ${rustBinary}`);
363
363
  console.log(`[rust] Args: ${rustArgs.join(" ")}`);
364
364
  }
365
365
  const attach = config.attach || process.env.AGENT_YES_ATTACH === "1";
366
- const { shouldForkNested, buildSpawnTutorial, waitForRegistration, predictedLogPath } = await import("./forkNested-CgJ1rTnT.js");
366
+ const { shouldForkNested, buildSpawnTutorial, waitForRegistration, predictedLogPath } = await import("./forkNested-CBdhC852.js");
367
367
  if (shouldForkNested({
368
368
  isTTY: Boolean(process.stdout.isTTY),
369
369
  ayPid: process.env.AGENT_YES_PID,
@@ -424,7 +424,7 @@ if (config.showVersion) {
424
424
  process.exit(0);
425
425
  }
426
426
  if (config.appendPrompt) {
427
- const { PidStore } = await import("./pidStore-BbKqQOS8.js");
427
+ const { PidStore } = await import("./pidStore-1PQ4ARnh.js");
428
428
  const ipcPath = await PidStore.findActiveFifo(process.cwd());
429
429
  if (!ipcPath) {
430
430
  console.error("No active agent with IPC found in current directory.");
@@ -1,5 +1,5 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { i as readGlobalPids } from "./globalPidIndex-Dq4KY2IV.js";
2
+ import { i as readGlobalPids } from "./globalPidIndex-pwp7Vb7o.js";
3
3
  import path from "path";
4
4
 
5
5
  //#region ts/cwdConflictWarn.ts
@@ -61,4 +61,4 @@ async function warnIfCwdOccupied(rawArgv) {
61
61
 
62
62
  //#endregion
63
63
  export { warnIfCwdOccupied };
64
- //# sourceMappingURL=cwdConflictWarn-DZTxTGXq.js.map
64
+ //# sourceMappingURL=cwdConflictWarn-B_047KCF.js.map
@@ -49,7 +49,7 @@ function buildSpawnTutorial(cli, pid) {
49
49
  * fast instead of waiting out the whole window).
50
50
  */
51
51
  async function waitForRegistration(pid, timeoutMs = 5e3, aborted) {
52
- const { readGlobalPids } = await import("./globalPidIndex-CQX_0JSB.js");
52
+ const { readGlobalPids } = await import("./globalPidIndex-CHA__9Xf.js");
53
53
  const isRegistered = async () => (await readGlobalPids()).some((r) => r.pid === pid && r.status !== "exited");
54
54
  const deadline = Date.now() + timeoutMs;
55
55
  while (Date.now() < deadline) {
@@ -68,4 +68,4 @@ function predictedLogPath(cwd, pid) {
68
68
 
69
69
  //#endregion
70
70
  export { buildSpawnTutorial, predictedLogPath, shouldForkNested, waitForRegistration };
71
- //# sourceMappingURL=forkNested-CgJ1rTnT.js.map
71
+ //# sourceMappingURL=forkNested-CBdhC852.js.map
@@ -0,0 +1,4 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import { a as sanitizeRole, i as readGlobalPids, n as maybeCompactGlobalPids, o as updateGlobalPidStatus, r as pruneOldLogs, t as appendGlobalPid } from "./globalPidIndex-pwp7Vb7o.js";
3
+
4
+ export { readGlobalPids };
@@ -5,6 +5,12 @@ import path from "path";
5
5
  import { lock } from "proper-lockfile";
6
6
 
7
7
  //#region ts/globalPidIndex.ts
8
+ const ROLE_RE = /^[A-Za-z0-9._-]{1,32}$/;
9
+ /** Validate a role name; returns the trimmed role or null when unusable. */
10
+ function sanitizeRole(raw) {
11
+ const trimmed = raw?.trim();
12
+ return trimmed && ROLE_RE.test(trimmed) ? trimmed : null;
13
+ }
8
14
  /**
9
15
  * Resolved at call time (not module load time) so tests and other callers
10
16
  * can override via $AGENT_YES_HOME without juggling module-cache resets.
@@ -187,5 +193,5 @@ async function pruneOldLogs(maxAgeMs = retentionMs()) {
187
193
  }
188
194
 
189
195
  //#endregion
190
- export { updateGlobalPidStatus as a, readGlobalPids as i, maybeCompactGlobalPids as n, pruneOldLogs as r, appendGlobalPid as t };
191
- //# sourceMappingURL=globalPidIndex-Dq4KY2IV.js.map
196
+ export { sanitizeRole as a, readGlobalPids as i, maybeCompactGlobalPids as n, updateGlobalPidStatus as o, pruneOldLogs as r, appendGlobalPid as t };
197
+ //# sourceMappingURL=globalPidIndex-pwp7Vb7o.js.map
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-YDl8a9il.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-D-E4xqpA.js";
2
+ import "./versionChecker-DRijpksb.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-Bd_7sgVu.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-BQRW614S.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
- import "./globalPidIndex-Dq4KY2IV.js";
7
- import "./pidStore-Cmcc8Oej.js";
6
+ import "./globalPidIndex-pwp7Vb7o.js";
7
+ import "./pidStore-DfSm1jog.js";
8
8
  import "./messageLog-BYFwioFY.js";
9
9
 
10
10
  export { AgentContext, CLIS_CONFIG, CycleError, DONE_STATE, LIFECYCLES, ORPHANED_STATE, TodoStore, answerAsk, canTransition, config, agentYes as default, describeBlock, hasTodoStore, initialState, isKnownKind, listAsks, listAsksForProject, monitorHint, nextStates, openBlockers, openStore, reconcileTodos, removeControlCharacters, renderDigest, renderTree, requiredGate, statesOf, unblockedTasks };
@@ -1,11 +1,11 @@
1
1
  import { n as logger } from "./logger-CDIsZ-Pp.js";
2
- import "./globalPidIndex-Dq4KY2IV.js";
2
+ import "./globalPidIndex-pwp7Vb7o.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
4
  import "./e2e-CUMZC53I.js";
5
5
  import "./configShared-DtHMBCl7.js";
6
- import { $ as liveWatchers, J as appendEvent, N as renderLogTailLines, Q as listInboxParents, X as hostId, Y as gcInboxes, et as readInbox, it as notifyDir, l as deriveLiveState, nt as daemonLockDir, rt as daemonLockOwnerPath, tt as shouldStealLock, v as isPidAlive, w as listRecords } from "./subcommands-CiX7J7hA.js";
6
+ import { $ as liveWatchers, J as appendEvent, N as renderLogTailLines, Q as listInboxParents, X as hostId, Y as gcInboxes, et as readInbox, it as notifyDir, l as deriveLiveState, nt as daemonLockDir, rt as daemonLockOwnerPath, tt as shouldStealLock, v as isPidAlive, w as listRecords } from "./subcommands-D_cPHm34.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
- import "./remotes-Dy4Rg8Yp.js";
8
+ import "./remotes-Cn-wszbK.js";
9
9
  import { mkdir, readFile, rename, rm, stat, writeFile } from "fs/promises";
10
10
  import { randomUUID } from "node:crypto";
11
11
  import { execFile, execFileSync } from "node:child_process";
@@ -836,4 +836,4 @@ async function ensureDaemon() {
836
836
 
837
837
  //#endregion
838
838
  export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
839
- //# sourceMappingURL=notifyDaemon-BQ6_UbJS.js.map
839
+ //# sourceMappingURL=notifyDaemon-D5RtFwMq.js.map
@@ -0,0 +1,6 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import "./JsonlStore-CPGIR0Wy.js";
3
+ import "./globalPidIndex-pwp7Vb7o.js";
4
+ import { t as PidStore } from "./pidStore-DfSm1jog.js";
5
+
6
+ export { PidStore };
@@ -1,7 +1,7 @@
1
1
  import { n as logger } from "./logger-CDIsZ-Pp.js";
2
2
  import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
3
3
  import { t as JsonlStore } from "./JsonlStore-CPGIR0Wy.js";
4
- import { a as updateGlobalPidStatus, n as maybeCompactGlobalPids, r as pruneOldLogs, t as appendGlobalPid } from "./globalPidIndex-Dq4KY2IV.js";
4
+ import { a as sanitizeRole, n as maybeCompactGlobalPids, o as updateGlobalPidStatus, r as pruneOldLogs, t as appendGlobalPid } from "./globalPidIndex-pwp7Vb7o.js";
5
5
  import { mkdir, writeFile } from "fs/promises";
6
6
  import path from "path";
7
7
  import { randomBytes } from "node:crypto";
@@ -32,6 +32,7 @@ var PidStore = class PidStore {
32
32
  const injected = process.env.AGENT_YES_AGENT_ID;
33
33
  const existing = this.store.findOne((doc) => doc.pid === pid);
34
34
  const agentId = existing?.agentId ?? (injected && /^[0-9a-f]{6,32}$/i.test(injected) ? injected : randomBytes(6).toString("hex"));
35
+ const role = sanitizeRole(process.env.AGENT_YES_ROLE) ?? existing?.role;
35
36
  const record = {
36
37
  pid,
37
38
  cli,
@@ -44,7 +45,8 @@ var PidStore = class PidStore {
44
45
  status: "active",
45
46
  exitReason: "",
46
47
  startedAt: now,
47
- agentId
48
+ agentId,
49
+ ...role ? { role } : {}
48
50
  };
49
51
  if (existing) await this.store.updateById(existing._id, record);
50
52
  else await this.store.append(record);
@@ -69,7 +71,8 @@ var PidStore = class PidStore {
69
71
  wrapper_pid: wrapperPid ?? null,
70
72
  parent_pid: parentPid ?? null,
71
73
  agent_id: agentId,
72
- permissions: permissions ?? null
74
+ permissions: permissions ?? null,
75
+ role: role ?? null
73
76
  }).then(() => maybeCompactGlobalPids()).catch(() => null);
74
77
  return result;
75
78
  }
@@ -190,4 +193,4 @@ pid-db/
190
193
 
191
194
  //#endregion
192
195
  export { PidStore as t };
193
- //# sourceMappingURL=pidStore-Cmcc8Oej.js.map
196
+ //# sourceMappingURL=pidStore-DfSm1jog.js.map
@@ -86,7 +86,7 @@ async function resolveRemoteSpec(spec) {
86
86
  * The bridge lives for the rest of the process (torn down on `process.exit`).
87
87
  */
88
88
  async function resolveWebrtc(link, keyword) {
89
- const { startWebrtcBridge } = await import("./webrtcRemote-C3OlHYSt.js");
89
+ const { startWebrtcBridge } = await import("./webrtcRemote-BkZcA5yq.js");
90
90
  const bridge = await startWebrtcBridge(link);
91
91
  return {
92
92
  url: bridge.baseUrl,
@@ -173,4 +173,4 @@ async function cmdRemote(rest) {
173
173
 
174
174
  //#endregion
175
175
  export { resolveRemoteSpec as a, readRemotes as i, deleteRemoteAlias as n, writeRemoteAlias as o, parseDirectRemoteSpec as r, cmdRemote as t };
176
- //# sourceMappingURL=remotes-Dy4Rg8Yp.js.map
176
+ //# sourceMappingURL=remotes-Cn-wszbK.js.map
@@ -1,5 +1,5 @@
1
1
  import "./e2e-CUMZC53I.js";
2
2
  import "./webrtcLink-CS4D-3G1.js";
3
- import { a as resolveRemoteSpec, i as readRemotes, n as deleteRemoteAlias, o as writeRemoteAlias, r as parseDirectRemoteSpec, t as cmdRemote } from "./remotes-Dy4Rg8Yp.js";
3
+ import { a as resolveRemoteSpec, i as readRemotes, n as deleteRemoteAlias, o as writeRemoteAlias, r as parseDirectRemoteSpec, t as cmdRemote } from "./remotes-Cn-wszbK.js";
4
4
 
5
5
  export { cmdRemote };
@@ -1,4 +1,4 @@
1
- import { r as getInstalledPackage } from "./versionChecker-YDl8a9il.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-DRijpksb.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-orhBmTNo.js.map
246
+ //# sourceMappingURL=rustBinary-BEscpLLP.js.map
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-YDl8a9il.js";
3
- import "./ts-D-E4xqpA.js";
2
+ import "./versionChecker-DRijpksb.js";
3
+ import "./ts-Bd_7sgVu.js";
4
4
  import "./todoAutomation-BQRW614S.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
- import "./globalPidIndex-Dq4KY2IV.js";
7
- import "./pidStore-Cmcc8Oej.js";
6
+ import "./globalPidIndex-pwp7Vb7o.js";
7
+ import "./pidStore-DfSm1jog.js";
8
8
  import "./messageLog-BYFwioFY.js";
9
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DD6bhkyI.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BBeIFAZD.js";
10
10
  import { f as resolveSpawnCwd } from "./workspaceConfig-Bxuk_MOq.js";
11
11
  import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-vhOBffJ3.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-BQy6gXYk.js.map
156
+ //# sourceMappingURL=schedule-Cw5nW_di.js.map
@@ -1,27 +1,27 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { r as getInstalledPackage } from "./versionChecker-YDl8a9il.js";
3
- import { t as findSpawnHiddenLauncher } from "./rustBinary-orhBmTNo.js";
4
- import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-D-E4xqpA.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-DRijpksb.js";
3
+ import { t as findSpawnHiddenLauncher } from "./rustBinary-BEscpLLP.js";
4
+ import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-Bd_7sgVu.js";
5
5
  import { t as agentYesHome$1 } from "./agentYesHome-CtmsY6I-.js";
6
6
  import { x as removeControlCharacters } from "./todoAutomation-BQRW614S.js";
7
7
  import "./JsonlStore-CPGIR0Wy.js";
8
- import { a as updateGlobalPidStatus } from "./globalPidIndex-Dq4KY2IV.js";
9
- import "./pidStore-Cmcc8Oej.js";
8
+ import { o as updateGlobalPidStatus } from "./globalPidIndex-pwp7Vb7o.js";
9
+ import "./pidStore-DfSm1jog.js";
10
10
  import { r as recordInbox } from "./messageLog-BYFwioFY.js";
11
11
  import { t as pgidForWrapper } from "./reaper-C4BvNylH.js";
12
12
  import "./e2e-CUMZC53I.js";
13
13
  import "./configShared-DtHMBCl7.js";
14
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DD6bhkyI.js";
15
- import { A as readPtysize, F as renderRawLogLines, I as resolveOne, M as recentReadEdges, N as renderLogTailLines, O as readLogForRender, P as renderRawLog, S as isUserTyping, V as snapshotStatus, Z as isTransientLockMkdirError, at as TYPING_BADGE, d as extractBadges, j as recentMessageEdges, k as readNotes, m as extractTaskCounts, p as extractNeedsInput, q as writeToIpc, s as controlCodeFromName, u as deriveLiveStatus, w as listRecords } from "./subcommands-CiX7J7hA.js";
14
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BBeIFAZD.js";
15
+ import { A as readPtysize, F as renderRawLogLines, I as resolveOne, M as recentReadEdges, N as renderLogTailLines, O as readLogForRender, P as renderRawLog, S as isUserTyping, V as snapshotStatus, Z as isTransientLockMkdirError, at as TYPING_BADGE, d as extractBadges, j as recentMessageEdges, k as readNotes, m as extractTaskCounts, p as extractNeedsInput, q as writeToIpc, s as controlCodeFromName, u as deriveLiveStatus, w as listRecords } from "./subcommands-D_cPHm34.js";
16
16
  import "./webrtcLink-CS4D-3G1.js";
17
- import "./remotes-Dy4Rg8Yp.js";
17
+ import "./remotes-Cn-wszbK.js";
18
18
  import { i as frameVisitorMessage, s as verifyCapability, t as MAX_CALLBACK_MSG_BYTES } from "./callbackCore-Cg3Ye0ZS.js";
19
- import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-CbdkyTRw.js";
19
+ import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-CLzRxjEn.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-Bxuk_MOq.js";
21
21
  import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-vhOBffJ3.js";
22
- import { i as importProvisionModule } from "./ws-DjyQ20AD.js";
23
- import { r as spawnRejectionReason } from "./spawnGate-D0E1uRP7.js";
24
- import { i as launchTray } from "./trayApp-4sZgxxP-.js";
22
+ import { i as importProvisionModule } from "./ws-Bp8eOEoV.js";
23
+ import { r as spawnRejectionReason } from "./spawnGate-D-68B907.js";
24
+ import { i as launchTray } from "./trayApp-Ck3kWM-7.js";
25
25
  import yargs from "yargs";
26
26
  import { appendFile, mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile } from "fs/promises";
27
27
  import { arch, cpus, freemem, homedir, hostname, loadavg, platform, totalmem, uptime, userInfo } from "os";
@@ -2368,7 +2368,7 @@ Options:
2368
2368
  }
2369
2369
  });
2370
2370
  if (req.method === "GET" && p === "/api/ws") {
2371
- const ws = await import("./ws-Clem1WQ-.js");
2371
+ const ws = await import("./ws-Cqn8mxsS.js");
2372
2372
  try {
2373
2373
  await ws.loadProvision();
2374
2374
  } catch (e) {
@@ -2388,7 +2388,7 @@ Options:
2388
2388
  if (req.method === "GET" && p === "/api/ws/status") {
2389
2389
  const dirRaw = url.searchParams.get("path");
2390
2390
  if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
2391
- const ws = await import("./ws-Clem1WQ-.js");
2391
+ const ws = await import("./ws-Cqn8mxsS.js");
2392
2392
  let prov;
2393
2393
  try {
2394
2394
  prov = await ws.loadProvision();
@@ -3145,7 +3145,7 @@ Options:
3145
3145
  const perm = body.perm ?? "r";
3146
3146
  if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
3147
3147
  try {
3148
- const { createScopedShare } = await import("./agentShare-CoI7IHeq.js");
3148
+ const { createScopedShare } = await import("./agentShare-90Y_SFqK.js");
3149
3149
  const share = await createScopedShare({
3150
3150
  agent: body.agent,
3151
3151
  perm,
@@ -3160,12 +3160,12 @@ Options:
3160
3160
  }
3161
3161
  }
3162
3162
  if (req.method === "GET" && p === "/api/shares") {
3163
- const { listShares } = await import("./agentShare-CoI7IHeq.js");
3163
+ const { listShares } = await import("./agentShare-90Y_SFqK.js");
3164
3164
  return Response.json(listShares());
3165
3165
  }
3166
3166
  const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
3167
3167
  if (req.method === "DELETE" && revokeM) {
3168
- const { revokeShare } = await import("./agentShare-CoI7IHeq.js");
3168
+ const { revokeShare } = await import("./agentShare-90Y_SFqK.js");
3169
3169
  const ok = revokeShare(decodeURIComponent(revokeM[1]));
3170
3170
  return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
3171
3171
  }
@@ -3467,7 +3467,7 @@ Options:
3467
3467
  const shutdown = (resolve) => {
3468
3468
  if (heartbeat) clearInterval(heartbeat);
3469
3469
  closeShare?.();
3470
- import("./agentShare-CoI7IHeq.js").then((m) => m.revokeAllShares()).catch(() => {});
3470
+ import("./agentShare-90Y_SFqK.js").then((m) => m.revokeAllShares()).catch(() => {});
3471
3471
  server?.stop();
3472
3472
  Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
3473
3473
  };
@@ -3480,4 +3480,4 @@ Options:
3480
3480
 
3481
3481
  //#endregion
3482
3482
  export { cmdServe, loadTokenReadOnly, mintScopedTermToken, resolveDaemonHttpBase, resolveLocalServeUrl };
3483
- //# sourceMappingURL=serve-C2mQMjUR.js.map
3483
+ //# sourceMappingURL=serve-DctJ7tY-.js.map
@@ -30,9 +30,17 @@ async function cmdSetup(rest) {
30
30
  const abs = setWorkspaceRoot(ws);
31
31
  process.stdout.write(`workspace root: ${abs}\n`);
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
+ try {
34
+ const { linkBunBinsToSystemPath } = await import("./systemPathLink-DTAhFXFx.js");
35
+ const r = linkBunBinsToSystemPath();
36
+ if (r && (r.linked.length || r.refreshed.length)) {
37
+ const n = r.linked.length + r.refreshed.length;
38
+ process.stdout.write(`linked ${n} CLI${n === 1 ? "" : "s"} into ${r.target} (resolvable in non-login shells)\n`);
39
+ }
40
+ } catch {}
33
41
  if (noShare) return 0;
34
42
  process.stdout.write(`\nsharing this machine to agent-yes.com…\n`);
35
- const { cmdServe } = await import("./serve-C2mQMjUR.js");
43
+ const { cmdServe } = await import("./serve-DctJ7tY-.js");
36
44
  return cmdServe([
37
45
  "install",
38
46
  "--share",
@@ -42,4 +50,4 @@ async function cmdSetup(rest) {
42
50
 
43
51
  //#endregion
44
52
  export { cmdSetup };
45
- //# sourceMappingURL=setup-EEF1vfhi.js.map
53
+ //# sourceMappingURL=setup-BA9D1ExO.js.map
@@ -1,4 +1,4 @@
1
- import { i as readGlobalPids } from "./globalPidIndex-Dq4KY2IV.js";
1
+ import { i as readGlobalPids } from "./globalPidIndex-pwp7Vb7o.js";
2
2
  import { n as getMaxAgents, r as getMinFreeMb, s as getSpawnWaitMs } from "./workspaceConfig-Bxuk_MOq.js";
3
3
  import { readFile } from "fs/promises";
4
4
 
@@ -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-D0E1uRP7.js.map
107
+ //# sourceMappingURL=spawnGate-D-68B907.js.map
@@ -0,0 +1,5 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import "./globalPidIndex-pwp7Vb7o.js";
3
+ import { i as waitForSpawnCapacity, n as spawnGateEnabled, r as spawnRejectionReason, t as memAvailableMb } from "./spawnGate-D-68B907.js";
4
+
5
+ export { waitForSpawnCapacity };