agent-yes 1.263.0 → 1.264.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 (49) hide show
  1. package/dist/SUPPORTED_CLIS-DlxOPg-j.js +11 -0
  2. package/dist/{SUPPORTED_CLIS-DjFlWHpg.js → SUPPORTED_CLIS-JcVs6jt7.js} +2 -2
  3. package/dist/{agentShare-BP6wiu_5.js → agentShare-B8h_JkOw.js} +3 -3
  4. package/dist/{callback-B0PQUZcK.js → callback-C9rkbjgR.js} +3 -3
  5. package/dist/{callback-DFUFLIZQ.js → callback-DlJ_glcF.js} +3 -3
  6. package/dist/cli.js +9 -9
  7. package/dist/{cwdConflictWarn-B_047KCF.js → cwdConflictWarn-DZTxTGXq.js} +2 -2
  8. package/dist/{forkNested-CBdhC852.js → forkNested-CgJ1rTnT.js} +2 -2
  9. package/dist/globalPidIndex-CQX_0JSB.js +4 -0
  10. package/dist/{globalPidIndex-pwp7Vb7o.js → globalPidIndex-Dq4KY2IV.js} +2 -8
  11. package/dist/index.js +4 -4
  12. package/dist/{notifyDaemon-BskLhHdg.js → notifyDaemon--TDDJupp.js} +3 -3
  13. package/dist/pidStore-D-b8I6Qx.js +6 -0
  14. package/dist/{pidStore-DfSm1jog.js → pidStore-DJqSZPJi.js} +11 -7
  15. package/dist/{rustBinary-Borvwmya.js → rustBinary-DA-C6PjH.js} +2 -2
  16. package/dist/{schedule-BSEIVKQ0.js → schedule-CdgYYRti.js} +6 -6
  17. package/dist/{serve-BEdLsSpv.js → serve-Z8FAjest.js} +20 -20
  18. package/dist/{setup-DFRvZ_ku.js → setup-D6B85mUe.js} +2 -2
  19. package/dist/{spawnGate-D-68B907.js → spawnGate-D0E1uRP7.js} +2 -2
  20. package/dist/spawnGate-DqKBA07k.js +5 -0
  21. package/dist/{subcommands-B1YlmRaZ.js → subcommands-C2ipqBtq.js} +2 -2
  22. package/dist/{subcommands-Bo1MSwuC.js → subcommands-C3w4bg6x.js} +134 -90
  23. package/dist/{terminal-BMQWojIp.js → terminal-iObUHvkj.js} +2 -2
  24. package/dist/{todoCli-DNOk38lq.js → todoCli-CngDeaT2.js} +2 -2
  25. package/dist/{trayApp-CjB5QhdV.js → trayApp-BUI7SXiY.js} +2 -2
  26. package/dist/trayApp-Cb9a-quB.js +5 -0
  27. package/dist/{ts-BSHR_dga.js → ts-ClHKe4d8.js} +123 -5
  28. package/dist/{versionChecker-BTLZ3PAb.js → versionChecker-DRAbaxo-.js} +2 -2
  29. package/dist/{widget-BVss0Z9Y.js → widget-BRBsnbLn.js} +3 -3
  30. package/dist/{ws-DMudFezi.js → ws-BppNz49U.js} +3 -3
  31. package/dist/{ws-DxNNwnrc.js → ws-CAFA4oXH.js} +2 -2
  32. package/package.json +1 -1
  33. package/ts/globalPidIndex.spec.ts +5 -20
  34. package/ts/globalPidIndex.ts +9 -19
  35. package/ts/identity.spec.ts +108 -0
  36. package/ts/identity.ts +124 -0
  37. package/ts/index.ts +12 -4
  38. package/ts/messageLog.ts +0 -2
  39. package/ts/pidStore.spec.ts +14 -24
  40. package/ts/pidStore.ts +13 -10
  41. package/ts/subcommands.spec.ts +11 -120
  42. package/ts/subcommands.ts +13 -103
  43. package/ts/titleScanner.spec.ts +65 -0
  44. package/ts/titleScanner.ts +137 -0
  45. package/dist/SUPPORTED_CLIS--5E9wO4L.js +0 -11
  46. package/dist/globalPidIndex-CHA__9Xf.js +0 -4
  47. package/dist/pidStore-1PQ4ARnh.js +0 -6
  48. package/dist/spawnGate-DbSHnfqA.js +0 -5
  49. package/dist/trayApp-DrdktFnW.js +0 -5
@@ -0,0 +1,11 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import "./versionChecker-DRAbaxo-.js";
3
+ import "./ts-ClHKe4d8.js";
4
+ import "./todoAutomation-BQRW614S.js";
5
+ import "./JsonlStore-CPGIR0Wy.js";
6
+ import "./globalPidIndex-Dq4KY2IV.js";
7
+ import "./pidStore-DJqSZPJi.js";
8
+ import "./messageLog-BYFwioFY.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-JcVs6jt7.js";
10
+
11
+ export { SUPPORTED_CLIS };
@@ -1,8 +1,8 @@
1
- import { t as CLIS_CONFIG } from "./ts-BSHR_dga.js";
1
+ import { t as CLIS_CONFIG } from "./ts-ClHKe4d8.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-DjFlWHpg.js.map
8
+ //# sourceMappingURL=SUPPORTED_CLIS-JcVs6jt7.js.map
@@ -1,9 +1,9 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./globalPidIndex-pwp7Vb7o.js";
2
+ import "./globalPidIndex-Dq4KY2IV.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
4
  import "./e2e-CUMZC53I.js";
5
5
  import "./configShared-DtHMBCl7.js";
6
- import { L as resolveOne } from "./subcommands-Bo1MSwuC.js";
6
+ import { L as resolveOne } from "./subcommands-C3w4bg6x.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
8
  import "./remotes-Cn-wszbK.js";
9
9
  import { a as startShare } from "./share-B-e_9WBx.js";
@@ -229,4 +229,4 @@ function transformEvent(rawEvent, agentId, forwarded) {
229
229
 
230
230
  //#endregion
231
231
  export { createScopedShare, listShares, revokeAllShares, revokeShare };
232
- //# sourceMappingURL=agentShare-BP6wiu_5.js.map
232
+ //# sourceMappingURL=agentShare-B8h_JkOw.js.map
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./globalPidIndex-pwp7Vb7o.js";
2
+ import "./globalPidIndex-Dq4KY2IV.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
4
  import "./e2e-CUMZC53I.js";
5
5
  import "./configShared-DtHMBCl7.js";
6
- import "./subcommands-Bo1MSwuC.js";
6
+ import "./subcommands-C3w4bg6x.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
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-DFUFLIZQ.js";
10
+ import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-DlJ_glcF.js";
11
11
 
12
12
  export { cmdCallback };
@@ -1,5 +1,5 @@
1
1
  import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
2
- import { L as resolveOne } from "./subcommands-Bo1MSwuC.js";
2
+ import { L as resolveOne } from "./subcommands-C3w4bg6x.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-BEdLsSpv.js");
75
+ const { resolveLocalServeUrl } = await import("./serve-Z8FAjest.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-DFUFLIZQ.js.map
190
+ //# sourceMappingURL=callback-DlJ_glcF.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-BTLZ3PAb.js";
5
- import { r as getRustBinary } from "./rustBinary-Borvwmya.js";
4
+ import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-DRAbaxo-.js";
5
+ import { r as getRustBinary } from "./rustBinary-DA-C6PjH.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-B1YlmRaZ.js");
298
+ const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken } = await import("./subcommands-C2ipqBtq.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--5E9wO4L.js");
308
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-DlxOPg-j.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);
@@ -333,7 +333,7 @@ if (config.tray) {
333
333
  ensureTray();
334
334
  }
335
335
  if (!config.showVersion && !config.appendPrompt && !config.tray) {
336
- const { waitForSpawnCapacity } = await import("./spawnGate-DbSHnfqA.js");
336
+ const { waitForSpawnCapacity } = await import("./spawnGate-DqKBA07k.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-B_047KCF.js");
345
+ const { warnIfCwdOccupied } = await import("./cwdConflictWarn-DZTxTGXq.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--5E9wO4L.js");
359
+ const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-DlxOPg-j.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-CBdhC852.js");
366
+ const { shouldForkNested, buildSpawnTutorial, waitForRegistration, predictedLogPath } = await import("./forkNested-CgJ1rTnT.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-1PQ4ARnh.js");
427
+ const { PidStore } = await import("./pidStore-D-b8I6Qx.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-pwp7Vb7o.js";
2
+ import { i as readGlobalPids } from "./globalPidIndex-Dq4KY2IV.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-B_047KCF.js.map
64
+ //# sourceMappingURL=cwdConflictWarn-DZTxTGXq.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-CHA__9Xf.js");
52
+ const { readGlobalPids } = await import("./globalPidIndex-CQX_0JSB.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-CBdhC852.js.map
71
+ //# sourceMappingURL=forkNested-CgJ1rTnT.js.map
@@ -0,0 +1,4 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import { a as updateGlobalPidStatus, i as readGlobalPids, n as maybeCompactGlobalPids, r as pruneOldLogs, t as appendGlobalPid } from "./globalPidIndex-Dq4KY2IV.js";
3
+
4
+ export { readGlobalPids };
@@ -5,12 +5,6 @@ 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
- }
14
8
  /**
15
9
  * Resolved at call time (not module load time) so tests and other callers
16
10
  * can override via $AGENT_YES_HOME without juggling module-cache resets.
@@ -193,5 +187,5 @@ async function pruneOldLogs(maxAgeMs = retentionMs()) {
193
187
  }
194
188
 
195
189
  //#endregion
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
190
+ export { updateGlobalPidStatus as a, readGlobalPids as i, maybeCompactGlobalPids as n, pruneOldLogs as r, appendGlobalPid as t };
191
+ //# sourceMappingURL=globalPidIndex-Dq4KY2IV.js.map
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-BTLZ3PAb.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-BSHR_dga.js";
2
+ import "./versionChecker-DRAbaxo-.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-ClHKe4d8.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-pwp7Vb7o.js";
7
- import "./pidStore-DfSm1jog.js";
6
+ import "./globalPidIndex-Dq4KY2IV.js";
7
+ import "./pidStore-DJqSZPJi.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,9 +1,9 @@
1
1
  import { n as logger } from "./logger-CDIsZ-Pp.js";
2
- import "./globalPidIndex-pwp7Vb7o.js";
2
+ import "./globalPidIndex-Dq4KY2IV.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
4
  import "./e2e-CUMZC53I.js";
5
5
  import "./configShared-DtHMBCl7.js";
6
- import { $ as listInboxParents, P as renderLogTailLines, T as listRecords, X as gcInboxes, Y as appendEvent, Z as hostId, at as notifyDir, et as liveWatchers, it as daemonLockOwnerPath, nt as shouldStealLock, rt as daemonLockDir, tt as readInbox, u as deriveLiveState, y as isPidAlive } from "./subcommands-Bo1MSwuC.js";
6
+ import { $ as listInboxParents, P as renderLogTailLines, T as listRecords, X as gcInboxes, Y as appendEvent, Z as hostId, at as notifyDir, et as liveWatchers, it as daemonLockOwnerPath, nt as shouldStealLock, rt as daemonLockDir, tt as readInbox, u as deriveLiveState, y as isPidAlive } from "./subcommands-C3w4bg6x.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
8
  import "./remotes-Cn-wszbK.js";
9
9
  import { mkdir, readFile, rename, rm, stat, writeFile } from "fs/promises";
@@ -836,4 +836,4 @@ async function ensureDaemon() {
836
836
 
837
837
  //#endregion
838
838
  export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
839
- //# sourceMappingURL=notifyDaemon-BskLhHdg.js.map
839
+ //# sourceMappingURL=notifyDaemon--TDDJupp.js.map
@@ -0,0 +1,6 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import "./JsonlStore-CPGIR0Wy.js";
3
+ import "./globalPidIndex-Dq4KY2IV.js";
4
+ import { t as PidStore } from "./pidStore-DJqSZPJi.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 sanitizeRole, n as maybeCompactGlobalPids, o as updateGlobalPidStatus, r as pruneOldLogs, t as appendGlobalPid } from "./globalPidIndex-pwp7Vb7o.js";
4
+ import { a as updateGlobalPidStatus, n as maybeCompactGlobalPids, r as pruneOldLogs, t as appendGlobalPid } from "./globalPidIndex-Dq4KY2IV.js";
5
5
  import { mkdir, writeFile } from "fs/promises";
6
6
  import path from "path";
7
7
  import { randomBytes } from "node:crypto";
@@ -32,7 +32,6 @@ 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;
36
35
  const record = {
37
36
  pid,
38
37
  cli,
@@ -45,8 +44,7 @@ var PidStore = class PidStore {
45
44
  status: "active",
46
45
  exitReason: "",
47
46
  startedAt: now,
48
- agentId,
49
- ...role ? { role } : {}
47
+ agentId
50
48
  };
51
49
  if (existing) await this.store.updateById(existing._id, record);
52
50
  else await this.store.append(record);
@@ -71,8 +69,7 @@ var PidStore = class PidStore {
71
69
  wrapper_pid: wrapperPid ?? null,
72
70
  parent_pid: parentPid ?? null,
73
71
  agent_id: agentId,
74
- permissions: permissions ?? null,
75
- role: role ?? null
72
+ permissions: permissions ?? null
76
73
  }).then(() => maybeCompactGlobalPids()).catch(() => null);
77
74
  return result;
78
75
  }
@@ -90,6 +87,13 @@ var PidStore = class PidStore {
90
87
  exit_reason: extra?.exitReason ?? null
91
88
  }).catch(() => null);
92
89
  }
90
+ /** Record the child CLI's latest terminal title (see ts/titleScanner.ts —
91
+ * callers are change-gated + rate-limited, so each call may write). */
92
+ async updateTitle(pid, title) {
93
+ const existing = this.store.findOne((doc) => doc.pid === pid);
94
+ if (existing && existing.title !== title) await this.store.updateById(existing._id, { title });
95
+ updateGlobalPidStatus(pid, { title }).catch(() => null);
96
+ }
93
97
  getAllRecords() {
94
98
  return this.store.getAll();
95
99
  }
@@ -193,4 +197,4 @@ pid-db/
193
197
 
194
198
  //#endregion
195
199
  export { PidStore as t };
196
- //# sourceMappingURL=pidStore-DfSm1jog.js.map
200
+ //# sourceMappingURL=pidStore-DJqSZPJi.js.map
@@ -1,4 +1,4 @@
1
- import { r as getInstalledPackage } from "./versionChecker-BTLZ3PAb.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-DRAbaxo-.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-Borvwmya.js.map
246
+ //# sourceMappingURL=rustBinary-DA-C6PjH.js.map
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-BTLZ3PAb.js";
3
- import "./ts-BSHR_dga.js";
2
+ import "./versionChecker-DRAbaxo-.js";
3
+ import "./ts-ClHKe4d8.js";
4
4
  import "./todoAutomation-BQRW614S.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
- import "./globalPidIndex-pwp7Vb7o.js";
7
- import "./pidStore-DfSm1jog.js";
6
+ import "./globalPidIndex-Dq4KY2IV.js";
7
+ import "./pidStore-DJqSZPJi.js";
8
8
  import "./messageLog-BYFwioFY.js";
9
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-DjFlWHpg.js";
9
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-JcVs6jt7.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-BSEIVKQ0.js.map
156
+ //# sourceMappingURL=schedule-CdgYYRti.js.map
@@ -1,27 +1,27 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { r as getInstalledPackage } from "./versionChecker-BTLZ3PAb.js";
3
- import { t as findSpawnHiddenLauncher } from "./rustBinary-Borvwmya.js";
4
- import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-BSHR_dga.js";
2
+ import { r as getInstalledPackage } from "./versionChecker-DRAbaxo-.js";
3
+ import { t as findSpawnHiddenLauncher } from "./rustBinary-DA-C6PjH.js";
4
+ import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-ClHKe4d8.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 { o as updateGlobalPidStatus } from "./globalPidIndex-pwp7Vb7o.js";
9
- import "./pidStore-DfSm1jog.js";
8
+ import { a as updateGlobalPidStatus } from "./globalPidIndex-Dq4KY2IV.js";
9
+ import "./pidStore-DJqSZPJi.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-DjFlWHpg.js";
15
- import { A as readNotes, C as isUserTyping, F as renderRawLog, H as snapshotStatus, I as renderRawLogLines, J as writeToIpc, L as resolveOne, M as recentMessageEdges, N as recentReadEdges, P as renderLogTailLines, Q as isTransientLockMkdirError, T as listRecords, c as controlCodeFromName, d as deriveLiveStatus, f as extractBadges, h as extractTaskCounts, j as readPtysize, k as readLogForRender, m as extractNeedsInput, ot as TYPING_BADGE } from "./subcommands-Bo1MSwuC.js";
14
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-JcVs6jt7.js";
15
+ import { A as readNotes, C as isUserTyping, F as renderRawLog, H as snapshotStatus, I as renderRawLogLines, J as writeToIpc, L as resolveOne, M as recentMessageEdges, N as recentReadEdges, P as renderLogTailLines, Q as isTransientLockMkdirError, T as listRecords, c as controlCodeFromName, d as deriveLiveStatus, f as extractBadges, h as extractTaskCounts, j as readPtysize, k as readLogForRender, m as extractNeedsInput, ot as TYPING_BADGE } from "./subcommands-C3w4bg6x.js";
16
16
  import "./webrtcLink-CS4D-3G1.js";
17
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-DFUFLIZQ.js";
19
+ import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-DlJ_glcF.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-DxNNwnrc.js";
23
- import { r as spawnRejectionReason } from "./spawnGate-D-68B907.js";
24
- import { i as launchTray } from "./trayApp-CjB5QhdV.js";
22
+ import { i as importProvisionModule } from "./ws-CAFA4oXH.js";
23
+ import { r as spawnRejectionReason } from "./spawnGate-D0E1uRP7.js";
24
+ import { i as launchTray } from "./trayApp-BUI7SXiY.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";
@@ -2425,7 +2425,7 @@ Options:
2425
2425
  }
2426
2426
  });
2427
2427
  if (req.method === "GET" && p === "/api/ws") {
2428
- const ws = await import("./ws-DMudFezi.js");
2428
+ const ws = await import("./ws-BppNz49U.js");
2429
2429
  try {
2430
2430
  await ws.loadProvision();
2431
2431
  } catch (e) {
@@ -2445,7 +2445,7 @@ Options:
2445
2445
  if (req.method === "GET" && p === "/api/ws/status") {
2446
2446
  const dirRaw = url.searchParams.get("path");
2447
2447
  if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
2448
- const ws = await import("./ws-DMudFezi.js");
2448
+ const ws = await import("./ws-BppNz49U.js");
2449
2449
  let prov;
2450
2450
  try {
2451
2451
  prov = await ws.loadProvision();
@@ -2467,7 +2467,7 @@ Options:
2467
2467
  }
2468
2468
  }
2469
2469
  if (req.method === "GET" && p === "/api/ws/repos") {
2470
- const ws = await import("./ws-DMudFezi.js");
2470
+ const ws = await import("./ws-BppNz49U.js");
2471
2471
  try {
2472
2472
  await ws.loadProvision();
2473
2473
  } catch (e) {
@@ -2548,7 +2548,7 @@ Options:
2548
2548
  const m = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/.exec(repoParam);
2549
2549
  if (!m || m[1] === "." || m[1] === ".." || m[2] === "." || m[2] === "..") return new Response("missing/invalid ?repo=<owner>/<repo>", { status: 400 });
2550
2550
  const [, owner, repo] = m;
2551
- const ws = await import("./ws-DMudFezi.js");
2551
+ const ws = await import("./ws-BppNz49U.js");
2552
2552
  let prov;
2553
2553
  try {
2554
2554
  prov = await ws.loadProvision();
@@ -3456,7 +3456,7 @@ Options:
3456
3456
  const perm = body.perm ?? "r";
3457
3457
  if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
3458
3458
  try {
3459
- const { createScopedShare } = await import("./agentShare-BP6wiu_5.js");
3459
+ const { createScopedShare } = await import("./agentShare-B8h_JkOw.js");
3460
3460
  const share = await createScopedShare({
3461
3461
  agent: body.agent,
3462
3462
  perm,
@@ -3471,12 +3471,12 @@ Options:
3471
3471
  }
3472
3472
  }
3473
3473
  if (req.method === "GET" && p === "/api/shares") {
3474
- const { listShares } = await import("./agentShare-BP6wiu_5.js");
3474
+ const { listShares } = await import("./agentShare-B8h_JkOw.js");
3475
3475
  return Response.json(listShares());
3476
3476
  }
3477
3477
  const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
3478
3478
  if (req.method === "DELETE" && revokeM) {
3479
- const { revokeShare } = await import("./agentShare-BP6wiu_5.js");
3479
+ const { revokeShare } = await import("./agentShare-B8h_JkOw.js");
3480
3480
  const ok = revokeShare(decodeURIComponent(revokeM[1]));
3481
3481
  return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
3482
3482
  }
@@ -3778,7 +3778,7 @@ Options:
3778
3778
  const shutdown = (resolve) => {
3779
3779
  if (heartbeat) clearInterval(heartbeat);
3780
3780
  closeShare?.();
3781
- import("./agentShare-BP6wiu_5.js").then((m) => m.revokeAllShares()).catch(() => {});
3781
+ import("./agentShare-B8h_JkOw.js").then((m) => m.revokeAllShares()).catch(() => {});
3782
3782
  server?.stop();
3783
3783
  Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
3784
3784
  };
@@ -3791,4 +3791,4 @@ Options:
3791
3791
 
3792
3792
  //#endregion
3793
3793
  export { cmdServe, loadTokenReadOnly, mintScopedTermToken, resolveDaemonHttpBase, resolveLocalServeUrl };
3794
- //# sourceMappingURL=serve-BEdLsSpv.js.map
3794
+ //# sourceMappingURL=serve-Z8FAjest.js.map
@@ -40,7 +40,7 @@ async function cmdSetup(rest) {
40
40
  } catch {}
41
41
  if (noShare) return 0;
42
42
  process.stdout.write(`\nsharing this machine to agent-yes.com…\n`);
43
- const { cmdServe } = await import("./serve-BEdLsSpv.js");
43
+ const { cmdServe } = await import("./serve-Z8FAjest.js");
44
44
  return cmdServe([
45
45
  "install",
46
46
  "--share",
@@ -50,4 +50,4 @@ async function cmdSetup(rest) {
50
50
 
51
51
  //#endregion
52
52
  export { cmdSetup };
53
- //# sourceMappingURL=setup-DFRvZ_ku.js.map
53
+ //# sourceMappingURL=setup-D6B85mUe.js.map
@@ -1,4 +1,4 @@
1
- import { i as readGlobalPids } from "./globalPidIndex-pwp7Vb7o.js";
1
+ import { i as readGlobalPids } from "./globalPidIndex-Dq4KY2IV.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-D-68B907.js.map
107
+ //# sourceMappingURL=spawnGate-D0E1uRP7.js.map
@@ -0,0 +1,5 @@
1
+ import "./logger-CDIsZ-Pp.js";
2
+ import "./globalPidIndex-Dq4KY2IV.js";
3
+ import { i as waitForSpawnCapacity, n as spawnGateEnabled, r as spawnRejectionReason, t as memAvailableMb } from "./spawnGate-D0E1uRP7.js";
4
+
5
+ export { waitForSpawnCapacity };
@@ -1,9 +1,9 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./globalPidIndex-pwp7Vb7o.js";
2
+ import "./globalPidIndex-Dq4KY2IV.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
4
  import "./e2e-CUMZC53I.js";
5
5
  import "./configShared-DtHMBCl7.js";
6
- import { A as readNotes, B as restartHintLines, C as isUserTyping, D as menuSelectKeys, E as matchKeyword, F as renderRawLog, G as submitAndConfirm, H as snapshotStatus, I as renderRawLogLines, J as writeToIpc, K as waitForLogQuiet, L as resolveOne, M as recentMessageEdges, N as recentReadEdges, O as readAgentPtysize, P as renderLogTailLines, R as resolveReadWindow, S as isUnknownManagerToken, T as listRecords, U as stdinActivityPath, V as runSubcommand, W as stopTipForCli, _ as isAgentStuck, a as backoffWhileTyping, b as isSlashCommand, c as controlCodeFromName, d as deriveLiveStatus, f as extractBadges, g as finalizedLines, h as extractTaskCounts, i as TYPING_WINDOW_MS, j as readPtysize, k as readLogForRender, l as cursorAbs, m as extractNeedsInput, n as MAX_RENDER_BYTES, o as cmdDeepseek, p as extractMenu, q as writeKeysPaced, r as READ_PAGE_DEFAULT, s as cmdHelp, t as GRACEFUL_EXIT_COMMANDS, u as deriveLiveState, v as isExitRequest, w as lastStdinAt, x as isSubcommand, y as isPidAlive, z as resolveResumeArgs } from "./subcommands-Bo1MSwuC.js";
6
+ import { A as readNotes, B as restartHintLines, C as isUserTyping, D as menuSelectKeys, E as matchKeyword, F as renderRawLog, G as submitAndConfirm, H as snapshotStatus, I as renderRawLogLines, J as writeToIpc, K as waitForLogQuiet, L as resolveOne, M as recentMessageEdges, N as recentReadEdges, O as readAgentPtysize, P as renderLogTailLines, R as resolveReadWindow, S as isUnknownManagerToken, T as listRecords, U as stdinActivityPath, V as runSubcommand, W as stopTipForCli, _ as isAgentStuck, a as backoffWhileTyping, b as isSlashCommand, c as controlCodeFromName, d as deriveLiveStatus, f as extractBadges, g as finalizedLines, h as extractTaskCounts, i as TYPING_WINDOW_MS, j as readPtysize, k as readLogForRender, l as cursorAbs, m as extractNeedsInput, n as MAX_RENDER_BYTES, o as cmdDeepseek, p as extractMenu, q as writeKeysPaced, r as READ_PAGE_DEFAULT, s as cmdHelp, t as GRACEFUL_EXIT_COMMANDS, u as deriveLiveState, v as isExitRequest, w as lastStdinAt, x as isSubcommand, y as isPidAlive, z as resolveResumeArgs } from "./subcommands-C3w4bg6x.js";
7
7
  import "./webrtcLink-CS4D-3G1.js";
8
8
  import "./remotes-Cn-wszbK.js";
9
9