agent-yes 1.258.2 → 1.258.3-beta.620.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/{SUPPORTED_CLIS-a2RZRGGX.js → SUPPORTED_CLIS-BhWOj1dI.js} +2 -2
  2. package/dist/SUPPORTED_CLIS-CfvlH-Rh.js +11 -0
  3. package/dist/{agentShare-B7Kw7jsl.js → agentShare-CkMxqYd_.js} +4 -4
  4. package/dist/{callback-D8b4cqDL.js → callback-BasZ-Lcb.js} +4 -4
  5. package/dist/{callback-4rXZ89hg.js → callback-D299g6BF.js} +3 -3
  6. package/dist/cli.js +27 -20
  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-Cgt9NOpH.js → notifyDaemon-CdAOUQnM.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-CTrWqcUg.js → rustBinary-Bp5Igr9y.js} +2 -2
  18. package/dist/{schedule-CwYc6fmZ.js → schedule-B0gQ5yNc.js} +6 -6
  19. package/dist/{serve-BSqkv0ID.js → serve-C539RcIG.js} +19 -19
  20. package/dist/{setup-GcSqhFuR.js → setup-CGBJthz6.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-JgqyhIMd.js → subcommands-3bC1DKsM.js} +3 -3
  24. package/dist/{subcommands-0PlB-s4J.js → subcommands-BRuNtZW2.js} +93 -24
  25. package/dist/systemPathLink-DTAhFXFx.js +91 -0
  26. package/dist/{terminal-D9Ll04hy.js → terminal-IfgOPIUe.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-DM2Pv1ya.js +5 -0
  30. package/dist/{trayApp-pNVA4NUf.js → trayApp-WaXECfC_.js} +2 -2
  31. package/dist/{ts-VhXG2C8W.js → ts-D6p3vPWv.js} +5 -4
  32. package/dist/{versionChecker-Cgv9K3sr.js → versionChecker-DOTtx_yE.js} +2 -2
  33. package/dist/{webrtcRemote-C3OlHYSt.js → webrtcRemote-BkZcA5yq.js} +1 -1
  34. package/dist/{widget-C56RLLYV.js → widget-BQLTgPkR.js} +3 -3
  35. package/dist/{ws-RsKGmEKG.js → ws-4kZQSH2L.js} +4 -4
  36. package/dist/{ws-DeVCKyoE.js → ws-BtJuCUVI.js} +2 -2
  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/parseCliArgs.spec.ts +27 -33
  47. package/ts/parseCliArgs.ts +42 -28
  48. package/ts/pidStore.spec.ts +26 -0
  49. package/ts/pidStore.ts +10 -0
  50. package/ts/setup.ts +17 -0
  51. package/ts/subcommands.spec.ts +180 -0
  52. package/ts/subcommands.ts +103 -3
  53. package/ts/systemPathLink.spec.ts +69 -0
  54. package/ts/systemPathLink.ts +134 -0
  55. package/dist/SUPPORTED_CLIS-B3WKb4vp.js +0 -11
  56. package/dist/globalPidIndex-CQX_0JSB.js +0 -4
  57. package/dist/pidStore-BbKqQOS8.js +0 -6
  58. package/dist/spawnGate-DqKBA07k.js +0 -5
  59. package/dist/trayApp-DTwdnJdq.js +0 -5
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-VhXG2C8W.js";
1
+ import { t as CLIS_CONFIG } from "./ts-D6p3vPWv.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-a2RZRGGX.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-BhWOj1dI.js.map
@@ -0,0 +1,11 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import "./versionChecker-DOTtx_yE.js";
3
+ import "./ts-D6p3vPWv.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-BhWOj1dI.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-0PlB-s4J.js";
6
+ import { I as resolveOne } from "./subcommands-BRuNtZW2.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-B7Kw7jsl.js.map
232
+ //# sourceMappingURL=agentShare-CkMxqYd_.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-0PlB-s4J.js";
6
+ import "./subcommands-BRuNtZW2.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-4rXZ89hg.js";
10
+ import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-D299g6BF.js";
11
11
 
12
12
  export { cmdCallback };
@@ -1,5 +1,5 @@
1
1
  import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
2
- import { I as resolveOne } from "./subcommands-0PlB-s4J.js";
2
+ import { I as resolveOne } from "./subcommands-BRuNtZW2.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-BSqkv0ID.js");
75
+ const { resolveLocalServeUrl } = await import("./serve-C539RcIG.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-4rXZ89hg.js.map
190
+ //# sourceMappingURL=callback-D299g6BF.js.map
package/dist/cli.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env bun
2
2
  import { t as invokedCliName } from "./invokedCli-uqM2YYA7.js";
3
3
  import { n as logger } from "./logger-CDIsZ-Pp.js";
4
- import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-Cgv9K3sr.js";
5
- import { r as getRustBinary } from "./rustBinary-CTrWqcUg.js";
4
+ import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-DOTtx_yE.js";
5
+ import { r as getRustBinary } from "./rustBinary-Bp5Igr9y.js";
6
6
  import { argv } from "process";
7
7
  import { spawn } from "child_process";
8
8
  import ms from "ms";
@@ -16,7 +16,7 @@ import { hideBin } from "yargs/helpers";
16
16
  */
17
17
  function parseCliArgs(argv, supportedClis) {
18
18
  const cliName = invokedCliName(argv);
19
- const parsedArgv = yargs(hideBin(argv)).usage("Usage: $0 [cli] [agent-yes args] [agent-cli args] [--] [prompts...]").example("$0 claude --timeout=30s -- solve all todos in my codebase, commit one by one", "Run Claude with a 30 seconds idle timeout (will type /exit when timeout), everything after `--` will be treated as the prompt").example("$0 claude --stdpush", "Run Claude with external stdin input enabled via --append-prompt").option("robust", {
19
+ const yargsInstance = yargs(hideBin(argv)).usage("Usage: $0 [agent-yes args] [cli] [agent-cli args] [--] [prompts...]").example("$0 --timeout=30s claude -- solve all todos in my codebase, commit one by one", "Run Claude with a 30 seconds idle timeout (will type /exit when timeout), everything after `--` will be treated as the prompt").example("$0 claude --stdpush", "Run Claude with external stdin input enabled via --append-prompt").option("robust", {
20
20
  type: "boolean",
21
21
  default: true,
22
22
  description: "re-spawn Claude with --continue if it crashes, only works for claude yet",
@@ -137,7 +137,12 @@ function parseCliArgs(argv, supportedClis) {
137
137
  type: "boolean",
138
138
  description: "Show version number",
139
139
  alias: "v"
140
- }).parserConfiguration({ "unknown-options-as-args": true }).parseSync();
140
+ }).parserConfiguration({
141
+ "unknown-options-as-args": true,
142
+ "halt-at-non-option": true
143
+ });
144
+ const parsedArgv = yargsInstance.parseSync();
145
+ const knownAyFlags = new Set(Object.entries(yargsInstance.getOptions().alias ?? {}).flatMap(([key, aliases]) => [key, ...aliases]).concat(Object.keys(yargsInstance.getOptions().key ?? {})).map((k) => `--${k}`));
141
146
  const optionalIndex = (e) => 0 <= e ? e : void 0;
142
147
  const rawArgs = argv.slice(2);
143
148
  const cliArgIndex = optionalIndex(rawArgs.indexOf(String(parsedArgv._[0])));
@@ -158,16 +163,18 @@ function parseCliArgs(argv, supportedClis) {
158
163
  const cliArgsForSpawn = (() => {
159
164
  if (parsedArgv._[0] && !cliName) {
160
165
  const allAfterCli = rawArgs.slice((cliArgIndex ?? 0) + 1, dashIndex ?? void 0);
166
+ const misplaced = allAfterCli.filter((arg) => {
167
+ const [flag] = arg.split("=");
168
+ return flag?.startsWith("--") && (knownAyFlags.has(flag) || flag.startsWith("--no-") && knownAyFlags.has(`--${flag.slice(5)}`)) || false;
169
+ });
170
+ if (misplaced.length > 0) {
171
+ const cli = String(parsedArgv._[0]);
172
+ console.warn(`\x1b[33m⚠ ${misplaced.join(", ")}: agent-yes flags must come BEFORE the CLI name to apply (e.g. \`ay ${misplaced[0].split("=")[0]} ${cli}\`). Placed after \`${cli}\` they are passed to ${cli} instead.\x1b[0m`);
173
+ }
161
174
  const result = [];
162
175
  for (let i = 0; i < allAfterCli.length; i++) {
163
176
  const arg = allAfterCli[i];
164
- const [flag] = arg.split("=");
165
- if (flag && yargsConsumed.has(flag) || flag?.startsWith("--no-") && yargsConsumed.has(`--${flag.slice(5)}`)) {
166
- if (!arg.includes("=") && i + 1 < allAfterCli.length) {
167
- const nextArg = allAfterCli[i + 1];
168
- if (nextArg && !nextArg.startsWith("-")) i++;
169
- }
170
- } else if (arg.startsWith("-")) {
177
+ if (arg.startsWith("-")) {
171
178
  result.push(arg);
172
179
  if (!arg.includes("=") && i + 1 < allAfterCli.length) {
173
180
  const nextArg = allAfterCli[i + 1];
@@ -288,7 +295,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
288
295
  const rawArg = process.argv[2];
289
296
  const managerCommands = !invokedCliName(process.argv);
290
297
  const isHelpFlag = rawArg === "-h" || rawArg === "--help";
291
- const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken } = await import("./subcommands-JgqyhIMd.js");
298
+ const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken } = await import("./subcommands-3bC1DKsM.js");
292
299
  if (isHelpFlag && process.argv.length === 3) {
293
300
  await cmdHelp(managerCommands);
294
301
  process.exit(0);
@@ -298,7 +305,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
298
305
  process.exit(code ?? 0);
299
306
  }
300
307
  {
301
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-B3WKb4vp.js");
308
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-CfvlH-Rh.js");
302
309
  if (isUnknownManagerToken(rawArg, managerCommands, SUPPORTED_CLIS)) {
303
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`);
304
311
  process.exit(1);
@@ -317,16 +324,16 @@ await checkAndAutoUpdate();
317
324
  logger.info(versionString());
318
325
  const config = parseCliArgs(process.argv);
319
326
  if (config.tray) {
320
- const { startTray } = await import("./tray-CgkwxtG6.js");
327
+ const { startTray } = await import("./tray-wWMvGWeY.js");
321
328
  await startTray();
322
329
  await new Promise(() => {});
323
330
  }
324
331
  {
325
- const { ensureTray } = await import("./tray-CgkwxtG6.js");
332
+ const { ensureTray } = await import("./tray-wWMvGWeY.js");
326
333
  ensureTray();
327
334
  }
328
335
  if (!config.showVersion && !config.appendPrompt && !config.tray) {
329
- const { waitForSpawnCapacity } = await import("./spawnGate-DqKBA07k.js");
336
+ const { waitForSpawnCapacity } = await import("./spawnGate-DbSHnfqA.js");
330
337
  await waitForSpawnCapacity({
331
338
  onWait: (reason, waitedMs) => {
332
339
  if (config.verbose || waitedMs === 0) console.error(`[agent-yes] spawn gate: ${reason} — waiting…`);
@@ -335,7 +342,7 @@ if (!config.showVersion && !config.appendPrompt && !config.tray) {
335
342
  });
336
343
  }
337
344
  if (!config.showVersion && !config.appendPrompt && !config.tray) {
338
- const { warnIfCwdOccupied } = await import("./cwdConflictWarn-DZTxTGXq.js");
345
+ const { warnIfCwdOccupied } = await import("./cwdConflictWarn-B_047KCF.js");
339
346
  await warnIfCwdOccupied(process.argv);
340
347
  }
341
348
  if (config.useRust) {
@@ -349,14 +356,14 @@ if (config.useRust) {
349
356
  }
350
357
  }
351
358
  if (rustBinary) {
352
- const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-B3WKb4vp.js");
359
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-CfvlH-Rh.js");
353
360
  const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
354
361
  if (config.verbose) {
355
362
  console.log(`[rust] Using binary: ${rustBinary}`);
356
363
  console.log(`[rust] Args: ${rustArgs.join(" ")}`);
357
364
  }
358
365
  const attach = config.attach || process.env.AGENT_YES_ATTACH === "1";
359
- const { shouldForkNested, buildSpawnTutorial, waitForRegistration, predictedLogPath } = await import("./forkNested-CgJ1rTnT.js");
366
+ const { shouldForkNested, buildSpawnTutorial, waitForRegistration, predictedLogPath } = await import("./forkNested-CBdhC852.js");
360
367
  if (shouldForkNested({
361
368
  isTTY: Boolean(process.stdout.isTTY),
362
369
  ayPid: process.env.AGENT_YES_PID,
@@ -417,7 +424,7 @@ if (config.showVersion) {
417
424
  process.exit(0);
418
425
  }
419
426
  if (config.appendPrompt) {
420
- const { PidStore } = await import("./pidStore-BbKqQOS8.js");
427
+ const { PidStore } = await import("./pidStore-1PQ4ARnh.js");
421
428
  const ipcPath = await PidStore.findActiveFifo(process.cwd());
422
429
  if (!ipcPath) {
423
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-Cgv9K3sr.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-VhXG2C8W.js";
2
+ import "./versionChecker-DOTtx_yE.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-D6p3vPWv.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-0PlB-s4J.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-BRuNtZW2.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-Cgt9NOpH.js.map
839
+ //# sourceMappingURL=notifyDaemon-CdAOUQnM.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-Cgv9K3sr.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-DOTtx_yE.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-CTrWqcUg.js.map
246
+ //# sourceMappingURL=rustBinary-Bp5Igr9y.js.map
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-Cgv9K3sr.js";
3
- import "./ts-VhXG2C8W.js";
2
+ import "./versionChecker-DOTtx_yE.js";
3
+ import "./ts-D6p3vPWv.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-a2RZRGGX.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BhWOj1dI.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-CwYc6fmZ.js.map
156
+ //# sourceMappingURL=schedule-B0gQ5yNc.js.map
@@ -1,27 +1,27 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { r as getInstalledPackage } from "./versionChecker-Cgv9K3sr.js";
3
- import { t as findSpawnHiddenLauncher } from "./rustBinary-CTrWqcUg.js";
4
- import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-VhXG2C8W.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-DOTtx_yE.js";
3
+ import { t as findSpawnHiddenLauncher } from "./rustBinary-Bp5Igr9y.js";
4
+ import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-D6p3vPWv.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-a2RZRGGX.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-0PlB-s4J.js";
14
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-BhWOj1dI.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-BRuNtZW2.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-4rXZ89hg.js";
19
+ import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-D299g6BF.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-DeVCKyoE.js";
23
- import { r as spawnRejectionReason } from "./spawnGate-D0E1uRP7.js";
24
- import { i as launchTray } from "./trayApp-pNVA4NUf.js";
22
+ import { i as importProvisionModule } from "./ws-BtJuCUVI.js";
23
+ import { r as spawnRejectionReason } from "./spawnGate-D-68B907.js";
24
+ import { i as launchTray } from "./trayApp-WaXECfC_.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-RsKGmEKG.js");
2371
+ const ws = await import("./ws-4kZQSH2L.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-RsKGmEKG.js");
2391
+ const ws = await import("./ws-4kZQSH2L.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-B7Kw7jsl.js");
3148
+ const { createScopedShare } = await import("./agentShare-CkMxqYd_.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-B7Kw7jsl.js");
3163
+ const { listShares } = await import("./agentShare-CkMxqYd_.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-B7Kw7jsl.js");
3168
+ const { revokeShare } = await import("./agentShare-CkMxqYd_.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-B7Kw7jsl.js").then((m) => m.revokeAllShares()).catch(() => {});
3470
+ import("./agentShare-CkMxqYd_.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-BSqkv0ID.js.map
3483
+ //# sourceMappingURL=serve-C539RcIG.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-BSqkv0ID.js");
43
+ const { cmdServe } = await import("./serve-C539RcIG.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-GcSqhFuR.js.map
53
+ //# sourceMappingURL=setup-CGBJthz6.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 };
@@ -1,10 +1,10 @@
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 { A as readPtysize, B as runSubcommand, C as lastStdinAt, D as readAgentPtysize, E as menuSelectKeys, F as renderRawLogLines, G as waitForLogQuiet, H as stdinActivityPath, I as resolveOne, K as writeKeysPaced, L as resolveReadWindow, M as recentReadEdges, N as renderLogTailLines, O as readLogForRender, P as renderRawLog, R as resolveResumeArgs, S as isUserTyping, T as matchKeyword, U as stopTipForCli, V as snapshotStatus, W as submitAndConfirm, _ as isExitRequest, a as backoffWhileTyping, b as isSubcommand, c as cursorAbs, d as extractBadges, f as extractMenu, g as isAgentStuck, h as finalizedLines, i as TYPING_WINDOW_MS, j as recentMessageEdges, k as readNotes, l as deriveLiveState, m as extractTaskCounts, n as MAX_RENDER_BYTES, o as cmdHelp, p as extractNeedsInput, q as writeToIpc, r as READ_PAGE_DEFAULT, s as controlCodeFromName, t as GRACEFUL_EXIT_COMMANDS, u as deriveLiveStatus, v as isPidAlive, w as listRecords, x as isUnknownManagerToken, y as isSlashCommand, z as restartHintLines } from "./subcommands-0PlB-s4J.js";
6
+ import { A as readPtysize, B as runSubcommand, C as lastStdinAt, D as readAgentPtysize, E as menuSelectKeys, F as renderRawLogLines, G as waitForLogQuiet, H as stdinActivityPath, I as resolveOne, K as writeKeysPaced, L as resolveReadWindow, M as recentReadEdges, N as renderLogTailLines, O as readLogForRender, P as renderRawLog, R as resolveResumeArgs, S as isUserTyping, T as matchKeyword, U as stopTipForCli, V as snapshotStatus, W as submitAndConfirm, _ as isExitRequest, a as backoffWhileTyping, b as isSubcommand, c as cursorAbs, d as extractBadges, f as extractMenu, g as isAgentStuck, h as finalizedLines, i as TYPING_WINDOW_MS, j as recentMessageEdges, k as readNotes, l as deriveLiveState, m as extractTaskCounts, n as MAX_RENDER_BYTES, o as cmdHelp, p as extractNeedsInput, q as writeToIpc, r as READ_PAGE_DEFAULT, s as controlCodeFromName, t as GRACEFUL_EXIT_COMMANDS, u as deriveLiveStatus, v as isPidAlive, w as listRecords, x as isUnknownManagerToken, y as isSlashCommand, z as restartHintLines } from "./subcommands-BRuNtZW2.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
- import "./remotes-Dy4Rg8Yp.js";
8
+ import "./remotes-Cn-wszbK.js";
9
9
 
10
10
  export { cmdHelp, isSubcommand, isUnknownManagerToken, runSubcommand };