agent-yes 1.267.2 → 1.269.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 (108) hide show
  1. package/README.md +73 -0
  2. package/dist/{SUPPORTED_CLIS-CpWKDCtL.js → SUPPORTED_CLIS-Bne04-66.js} +2 -2
  3. package/dist/SUPPORTED_CLIS-CdyjhpZP.js +12 -0
  4. package/dist/{agent-yes.config-DzNini0E.js → agent-yes.config-2xKNJM5Y.js} +2 -2
  5. package/dist/{agentShare-D0reU6LW.js → agentShare-BI126Ej9.js} +8 -8
  6. package/dist/askCli-Bbxt9Umz.js +272 -0
  7. package/dist/{browser-DSduVZeZ.js → browser-CorYp8Yu.js} +1 -1
  8. package/dist/{browser-B7eYrBy7.js → browser-_2ndf80G.js} +5 -5
  9. package/dist/callback-BnUbjH7p.js +13 -0
  10. package/dist/{callback-Dlqwh9n7.js → callback-DI2r3NrV.js} +5 -5
  11. package/dist/{callbackCore-K99x3C75.js → callbackCore-Bbe7rpN2.js} +1 -1
  12. package/dist/{callbackCore-DcptaZwH.js → callbackCore-C0Cg9RbS.js} +1 -1
  13. package/dist/{channels-DQaZbare.js → channels-3gz9gHP7.js} +6 -6
  14. package/dist/{channels-yE1YUHCl.js → channels-CkaCyvEp.js} +2 -2
  15. package/dist/channels.js +5 -5
  16. package/dist/cli.js +11 -11
  17. package/dist/{cmdPs-D8gsRFVV.js → cmdPs-CVnlflxP.js} +7 -7
  18. package/dist/{configShared-DtHMBCl7.js → configShared-DYxlvrH0.js} +1 -1
  19. package/dist/{cwdConflictWarn-BpweoAiy.js → cwdConflictWarn-Buy3r_qc.js} +1 -1
  20. package/dist/{cwdPassthroughHint-BlRuOGo_.js → cwdPassthroughHint-BlWO-h5w.js} +1 -1
  21. package/dist/{e2e-CUMZC53I.js → e2e-OLfcNxiv.js} +1 -1
  22. package/dist/{expose-DyiZ5AU0.js → expose-Bfo-dZdy.js} +1 -1
  23. package/dist/{forkNested-B_4c-TQk.js → forkNested-jc2ER9xn.js} +1 -1
  24. package/dist/{hist-BoZPJ2ah.js → hist-DiOYRXuD.js} +1 -1
  25. package/dist/{html2canvas-pro.esm-cq4l_ZIw.js → html2canvas-pro.esm-D19oTQeV.js} +1 -1
  26. package/dist/identity-BmDYOuZE.js +3 -0
  27. package/dist/identity-CLaJ9-uE.js +109 -0
  28. package/dist/index.js +4 -3
  29. package/dist/{initMsg-D8cmdY76.js → initMsg-Bat5PUDf.js} +1 -1
  30. package/dist/{initMsg-BKqWDYFk.js → initMsg-CTAIqBWF.js} +8 -4
  31. package/dist/{needsInput-103zhZ90.js → needsInput-DhfIwxse.js} +1 -1
  32. package/dist/{nodeRuntime-QihGFQbI.js → nodeRuntime-CKc1BN5J.js} +1 -1
  33. package/dist/{notifyDaemon-TKtSYtEO.js → notifyDaemon-Cf4KHDOr.js} +7 -7
  34. package/dist/{notifyStore-CEDiVyis.js → notifyStore-0hlFPa6z.js} +1 -1
  35. package/dist/{notifyStore-Cbw2ZJ0X.js → notifyStore-Dus2D1XA.js} +1 -1
  36. package/dist/{openBrowser-Cs46NiH6.js → openBrowser-Dmg2Oi4q.js} +1 -1
  37. package/dist/{parentLink-CTgZZCgw.js → parentLink-BwX4jaGD.js} +1 -1
  38. package/dist/{parentLink-CQrn998L.js → parentLink-DS-XflaJ.js} +1 -1
  39. package/dist/{parentPingLoop-BEvJ2ElR.js → parentPingLoop-Bxd3dXWO.js} +6 -6
  40. package/dist/{peer-DIl5xtx8.js → peer-Dr4zvtcd.js} +3 -3
  41. package/dist/peer-u1AUAZeA.js +4 -0
  42. package/dist/{remotes-M8FbM92D.js → remotes-BiftUp09.js} +3 -3
  43. package/dist/{remotes-DdAfueOu.js → remotes-IzQHupeo.js} +3 -3
  44. package/dist/{rustBinary-B9FEbqTu.js → rustBinary-B2lNFJSe.js} +2 -2
  45. package/dist/{schedule-Bmh5uaDr.js → schedule-D1CNvuKT.js} +8 -7
  46. package/dist/{serve-BqRNIxeq.js → serve-BaHCO0bU.js} +49 -42
  47. package/dist/{setup-GYkQYxlf.js → setup-B8EL0SWL.js} +4 -4
  48. package/dist/{share-Db_zb6gH.js → share-DTPZgbfH.js} +2 -2
  49. package/dist/{share-NUhi-Wdd.js → share-RgJUhzqG.js} +2 -2
  50. package/dist/{spawnGate-CZlMs6uV.js → spawnGate-C6YKlnmb.js} +1 -1
  51. package/dist/{spawnGate-DN4wNXHq.js → spawnGate-CS3oFdJ9.js} +2 -2
  52. package/dist/{store-BW5NBouz.js → store-C7I2CAu9.js} +1 -1
  53. package/dist/{subcommands-DJpVXIb6.js → subcommands-03ghe-aZ.js} +192 -157
  54. package/dist/{subcommands-DLrJfG4D.js → subcommands-BS4lnTrb.js} +6 -6
  55. package/dist/{systemPathLink-BHv1I6wh.js → systemPathLink-DGVcx0fg.js} +1 -1
  56. package/dist/{terminal-CRLPUaKF.js → terminal-DrCP-200.js} +2 -2
  57. package/dist/terminal.js +1 -1
  58. package/dist/todoAutomation-BETGOik9.js +302 -0
  59. package/dist/{todoCli-BYGZ7_C5.js → todoCli-DUoxA1dh.js} +164 -37
  60. package/dist/todoIdentity-BffBxRHA.js +138 -0
  61. package/dist/{todoAutomation-BQRW614S.js → todoStore-Wk8U4zJ8.js} +63 -280
  62. package/dist/{tray-CzGs9-ch.js → tray-Bxq_sfvU.js} +1 -1
  63. package/dist/trayApp-BDMzlxRo.js +5 -0
  64. package/dist/{trayApp-DLMUu2sB.js → trayApp-DC4qjut7.js} +2 -2
  65. package/dist/{ts-ClwhahH9.js → ts-D0Pk-WJg.js} +14 -8
  66. package/dist/{versionChecker-ZQYirfMp.js → versionChecker-V6ceVsu9.js} +2 -2
  67. package/dist/{webrtcLink-DyCj380i.js → webrtcLink-B72AQ2eb.js} +2 -2
  68. package/dist/{webrtcRemote-Bl8eowma.js → webrtcRemote-D68dkqFp.js} +3 -3
  69. package/dist/{widget-DtZ1WXkf.js → widget-BM03OkC1.js} +3 -3
  70. package/dist/widget.js +1 -1
  71. package/dist/widgets.js +5 -5
  72. package/dist/{workspaceConfig-CBKlgA_q.js → workspaceConfig-EK7XNsgR.js} +1 -1
  73. package/dist/{ws-CiR2nOD3.js → ws-6l7Wb_0r.js} +7 -7
  74. package/dist/{ws-Ba372Tym.js → ws-pRFrqms9.js} +3 -3
  75. package/lab/ui/console-logic.js +64 -0
  76. package/lab/ui/index.html +58 -4
  77. package/package.json +1 -1
  78. package/ts/askCli.spec.ts +304 -0
  79. package/ts/askCli.ts +378 -0
  80. package/ts/identity.spec.ts +80 -1
  81. package/ts/identity.ts +16 -9
  82. package/ts/index.ts +6 -1
  83. package/ts/initMsg.spec.ts +22 -14
  84. package/ts/initMsg.ts +7 -2
  85. package/ts/ipcLock.spec.ts +107 -0
  86. package/ts/ipcLock.ts +130 -0
  87. package/ts/serve.ts +68 -17
  88. package/ts/subcommandMirror.spec.ts +76 -0
  89. package/ts/subcommands.spec.ts +115 -10
  90. package/ts/subcommands.ts +108 -36
  91. package/ts/todoAutomation.spec.ts +64 -0
  92. package/ts/todoAutomation.ts +25 -2
  93. package/ts/todoBlock.spec.ts +31 -1
  94. package/ts/todoBlock.ts +33 -1
  95. package/ts/todoCli.spec.ts +199 -4
  96. package/ts/todoCli.ts +266 -42
  97. package/ts/todoIdentity.spec.ts +85 -0
  98. package/ts/todoIdentity.ts +76 -0
  99. package/ts/todoLifecycle.spec.ts +13 -1
  100. package/ts/todoLifecycle.ts +35 -1
  101. package/ts/todoRoot.spec.ts +117 -0
  102. package/ts/todoRoot.ts +90 -0
  103. package/ts/todoStore.spec.ts +25 -0
  104. package/ts/todoStore.ts +36 -2
  105. package/dist/SUPPORTED_CLIS-DDs0xUvV.js +0 -11
  106. package/dist/callback-Bgehh-IW.js +0 -13
  107. package/dist/peer-Cvntlw1i.js +0 -4
  108. package/dist/trayApp-CoD89Y1_.js +0 -5
@@ -1,12 +1,12 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-Dq4KY2IV.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
- import "./e2e-CUMZC53I.js";
5
- import "./configShared-DtHMBCl7.js";
6
- import { $ as buildAgentForest, O as listRecords, d as deriveLiveState, et as flattenForest } from "./subcommands-DJpVXIb6.js";
7
- import "./notifyStore-Cbw2ZJ0X.js";
8
- import "./webrtcLink-DyCj380i.js";
9
- import "./remotes-DdAfueOu.js";
4
+ import "./e2e-OLfcNxiv.js";
5
+ import "./configShared-DYxlvrH0.js";
6
+ import { O as listRecords, d as deriveLiveState, et as buildAgentForest, tt as flattenForest } from "./subcommands-03ghe-aZ.js";
7
+ import "./notifyStore-Dus2D1XA.js";
8
+ import "./webrtcLink-B72AQ2eb.js";
9
+ import "./remotes-IzQHupeo.js";
10
10
  import yargs from "yargs";
11
11
  import { execFile } from "node:child_process";
12
12
  import { readFileSync } from "node:fs";
@@ -574,4 +574,4 @@ function readPpidSync(pid) {
574
574
 
575
575
  //#endregion
576
576
  export { cmdPs };
577
- //# sourceMappingURL=cmdPs-D8gsRFVV.js.map
577
+ //# sourceMappingURL=cmdPs-CVnlflxP.js.map
@@ -69,4 +69,4 @@ async function loadSharedCliDefaults(fromUrl = import.meta.url) {
69
69
 
70
70
  //#endregion
71
71
  export { normalizeAgentYesConfig as n, loadSharedCliDefaults as t };
72
- //# sourceMappingURL=configShared-DtHMBCl7.js.map
72
+ //# sourceMappingURL=configShared-DYxlvrH0.js.map
@@ -61,4 +61,4 @@ async function warnIfCwdOccupied(rawArgv) {
61
61
 
62
62
  //#endregion
63
63
  export { warnIfCwdOccupied };
64
- //# sourceMappingURL=cwdConflictWarn-BpweoAiy.js.map
64
+ //# sourceMappingURL=cwdConflictWarn-Buy3r_qc.js.map
@@ -85,4 +85,4 @@ function detectCwdPassthrough(argv) {
85
85
 
86
86
  //#endregion
87
87
  export { SUPPRESS_CWD_WARN_ENV, detectCwdPassthrough };
88
- //# sourceMappingURL=cwdPassthroughHint-BlRuOGo_.js.map
88
+ //# sourceMappingURL=cwdPassthroughHint-BlWO-h5w.js.map
@@ -172,4 +172,4 @@ function randomHex(n) {
172
172
 
173
173
  //#endregion
174
174
  export { computeTranscriptHash as a, open as c, randomHex as d, seal as f, MAX_CHUNK as i, packEnvelope as l, validateS as m, FLAG_CONFIRM as n, deriveAuthToken as o, unpackEnvelope as p, MARKER as r, deriveDirKeys as s, CONFIRM_TIMEOUT_MS as t, parseSecret as u };
175
- //# sourceMappingURL=e2e-CUMZC53I.js.map
175
+ //# sourceMappingURL=e2e-OLfcNxiv.js.map
@@ -549,4 +549,4 @@ async function cmdExpose(args) {
549
549
 
550
550
  //#endregion
551
551
  export { cmdExpose, ensureExposure, listExposures, stopExposure };
552
- //# sourceMappingURL=expose-DyiZ5AU0.js.map
552
+ //# sourceMappingURL=expose-Bfo-dZdy.js.map
@@ -138,4 +138,4 @@ async function confirmAgentStarted(pid, graceMs = 1500, aborted) {
138
138
 
139
139
  //#endregion
140
140
  export { buildSpawnTutorial, confirmAgentStarted, predictedLogPath, shouldForkNested, waitForRegistration };
141
- //# sourceMappingURL=forkNested-B_4c-TQk.js.map
141
+ //# sourceMappingURL=forkNested-jc2ER9xn.js.map
@@ -439,4 +439,4 @@ async function cmdHist(rest) {
439
439
 
440
440
  //#endregion
441
441
  export { cmdHist };
442
- //# sourceMappingURL=hist-BoZPJ2ah.js.map
442
+ //# sourceMappingURL=hist-DiOYRXuD.js.map
@@ -10895,4 +10895,4 @@ const html2canvas = (element, options = {}, config) => {
10895
10895
 
10896
10896
  //#endregion
10897
10897
  export { Html2CanvasConfig, PerformanceMonitor, Validator, createDefaultValidator, html2canvas as default, html2canvas };
10898
- //# sourceMappingURL=html2canvas-pro.esm-cq4l_ZIw.js.map
10898
+ //# sourceMappingURL=html2canvas-pro.esm-D19oTQeV.js.map
@@ -0,0 +1,3 @@
1
+ import { a as safeBranch, i as readGitBranch, n as localHost, o as safeToken, r as localUser, s as tildify, t as formatIdentity } from "./identity-CLaJ9-uE.js";
2
+
3
+ export { formatIdentity };
@@ -0,0 +1,109 @@
1
+ import { readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { homedir, hostname, userInfo } from "node:os";
4
+
5
+ //#region ts/identity.ts
6
+ /**
7
+ * The standardized agent identity string:
8
+ *
9
+ * <username>@<hostname>:<path>:<branch>#<pid>
10
+ * e.g. sno@Mac:~/ws/symval/symval/tree/crm:main#30402
11
+ *
12
+ * One line answers "who is this agent" across every surface that names one —
13
+ * the `ay send` envelope header, `ay whoami`, logs. The branch segment usually
14
+ * carries the lane name for free (worktree checkouts like `crm-yamamoto-wifi`
15
+ * or `fix/t173-tone-core` name their purpose), which is why there is no
16
+ * separate role concept.
17
+ *
18
+ * Parsing (right-to-left, for consumers that need it): `#<pid>` from the end;
19
+ * the branch is after the last `:` (git forbids `:` in ref names); the
20
+ * username is before the first `@`; the hostname is between that `@` and the
21
+ * next `:` (hostnames contain no `:`). The path in the middle may itself
22
+ * contain `@`/`:` (Windows drives), which is why parsing anchors on the ends.
23
+ *
24
+ * Every token is clamped before rendering: the identity is embedded in the
25
+ * `<ay-msg …>` envelope's OPEN tag, which is not nonce-protected — whitespace
26
+ * or `>` in a token could forge header structure.
27
+ */
28
+ /** Replace anything outside a conservative charset so a token can never break
29
+ * out of the envelope header line. Collapses runs to a single `-`.
30
+ * Exported only so the shared cross-runtime case table
31
+ * (tests/fixtures/identity-cases.json) can pin it against the Rust port. */
32
+ function safeToken(raw, max) {
33
+ return raw.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, max);
34
+ }
35
+ /** The local username, header-safe ("John Smith" → "John-Smith"). */
36
+ function localUser() {
37
+ try {
38
+ return safeToken(userInfo().username, 32) || "unknown";
39
+ } catch {
40
+ return "unknown";
41
+ }
42
+ }
43
+ /** The local hostname's first label ("Macs-MBP.local" → "Macs-MBP"). */
44
+ function localHost() {
45
+ return safeToken(hostname().split(".")[0] ?? "", 32) || "unknown";
46
+ }
47
+ /**
48
+ * The checked-out branch of the git repo containing `cwd`, or a short commit
49
+ * id when detached, or null when `cwd` is not inside a git checkout. Pure
50
+ * file reads — never spawns git — so it is cheap enough to run on every send:
51
+ * walk up to the nearest `.git`, follow a worktree's `gitdir:` indirection
52
+ * file, then parse `HEAD`.
53
+ */
54
+ function readGitBranch(cwd) {
55
+ let dir = path.resolve(cwd);
56
+ for (let depth = 0; depth < 32; depth++) {
57
+ const dotGit = path.join(dir, ".git");
58
+ let gitDir = null;
59
+ try {
60
+ const content = readFileSync(dotGit, "utf8");
61
+ const m = /^gitdir:\s*(.+)\s*$/m.exec(content);
62
+ gitDir = m ? path.resolve(dir, m[1].trim()) : null;
63
+ } catch (err) {
64
+ if (err?.code === "EISDIR") gitDir = dotGit;
65
+ }
66
+ if (gitDir) try {
67
+ const head = readFileSync(path.join(gitDir, "HEAD"), "utf8").trim();
68
+ const ref = /^ref:\s*refs\/heads\/(.+)$/.exec(head);
69
+ if (ref) return safeBranch(ref[1]);
70
+ if (/^[0-9a-f]{40}$/i.test(head)) return head.slice(0, 12);
71
+ return null;
72
+ } catch {
73
+ return null;
74
+ }
75
+ const parent = path.dirname(dir);
76
+ if (parent === dir) return null;
77
+ dir = parent;
78
+ }
79
+ return null;
80
+ }
81
+ /** Branch names never contain `:`/space/`~`/`^` (git forbids them), but they
82
+ * DO allow `/` and `#` — keep `/` (readable, unambiguous: parsing anchors on
83
+ * `#<pid>` at the end) and clamp everything else defensively.
84
+ * Exported only for the shared cross-runtime case table — see `safeToken`. */
85
+ function safeBranch(raw) {
86
+ return raw.replace(/[^A-Za-z0-9._/#-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 64);
87
+ }
88
+ /** Abbreviate the home directory to `~`, mirroring how `ay ls` prints cwds.
89
+ * `home` is a seam (mirrored by the Rust port's `tildify`) so the shared
90
+ * cross-runtime case table can pin a home that is not the running machine's;
91
+ * omit it in production. */
92
+ function tildify(p, home = homedir()) {
93
+ return home !== "" && p.startsWith(home) ? "~" + p.slice(home.length) : p;
94
+ }
95
+ /**
96
+ * Render the standardized identity for an agent. `user`/`host` default to the
97
+ * local machine (correct for the envelope: the sending wrapper runs on the
98
+ * agent's own host), `branch` auto-detects from `cwd` unless given.
99
+ */
100
+ function formatIdentity(parts) {
101
+ const user = parts.user ?? localUser();
102
+ const host = parts.host ?? localHost();
103
+ const branch = parts.branch === void 0 ? readGitBranch(parts.cwd) : parts.branch;
104
+ return `${user}@${host}:${tildify(parts.cwd, parts.home)}${branch ? `:${branch}` : ""}#${parts.pid}`;
105
+ }
106
+
107
+ //#endregion
108
+ export { safeBranch as a, readGitBranch as i, localHost as n, safeToken as o, localUser as r, tildify as s, formatIdentity as t };
109
+ //# sourceMappingURL=identity-CLaJ9-uE.js.map
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-ZQYirfMp.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-ClwhahH9.js";
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";
2
+ import "./versionChecker-V6ceVsu9.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-D0Pk-WJg.js";
4
+ import { a as renderTree, c as describeBlock, i as renderDigest, l as monitorHint, o as unblockedTasks, r as openBlockers, t as reconcileTodos, u as removeControlCharacters } from "./todoAutomation-BETGOik9.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
6
  import "./globalPidIndex-Dq4KY2IV.js";
7
7
  import "./pidStore-DJqSZPJi.js";
8
8
  import "./messageLog-BYFwioFY.js";
9
+ import { a as LIFECYCLES, c as initialState, d as requiredGate, f as statesOf, i as DONE_STATE, l as isKnownKind, n as TodoStore, o as ORPHANED_STATE, r as openStore, s as canTransition, t as CycleError, u as nextStates } from "./todoStore-Wk8U4zJ8.js";
9
10
 
10
11
  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,3 +1,3 @@
1
- import { n as replyTargetOf, r as shortenHome, t as buildInitMsg } from "./initMsg-BKqWDYFk.js";
1
+ import { n as replyTargetOf, r as shortenHome, t as buildInitMsg } from "./initMsg-CTAIqBWF.js";
2
2
 
3
3
  export { buildInitMsg };
@@ -47,13 +47,17 @@ function replyTargetOf(spawner) {
47
47
  * Returns the prompt unchanged when there is no spawner (a top-level agent
48
48
  * started from a human shell has nobody to report to, and the block would be
49
49
  * pure noise on the overwhelmingly common path).
50
+ *
51
+ * `identity` is the spawner's standardized identity
52
+ * (`user@host:path:branch#pid`, see ts/identity.ts) — passed IN rather than
53
+ * computed here so the golden fixture can pin a machine-independent value, and
54
+ * so this stays a pure function of its arguments in both runtimes.
50
55
  */
51
- function buildInitMsg(prompt, spawner, nonce) {
56
+ function buildInitMsg(prompt, spawner, nonce, identity) {
52
57
  if (!spawner) return prompt;
53
58
  const target = replyTargetOf(spawner);
54
- const where = shortenHome(spawner.cwd);
55
59
  return [
56
- `<ay-init-msg ${nonce} from ${spawner.cli} #${spawner.pid} @ ${where} — reply: ay send ${target} "...">`,
60
+ `<ay-init-msg ${nonce} from ${spawner.cli} ${identity} — reply: ay send ${target} "...">`,
57
61
  `<ay-task ${nonce}>`,
58
62
  prompt,
59
63
  `</ay-task ${nonce}>`,
@@ -82,4 +86,4 @@ function buildInitMsg(prompt, spawner, nonce) {
82
86
 
83
87
  //#endregion
84
88
  export { replyTargetOf as n, shortenHome as r, buildInitMsg as t };
85
- //# sourceMappingURL=initMsg-BKqWDYFk.js.map
89
+ //# sourceMappingURL=initMsg-CTAIqBWF.js.map
@@ -76,4 +76,4 @@ function isWorkingScreen(lines, working) {
76
76
 
77
77
  //#endregion
78
78
  export { isWorkingScreen as n, parseMenu as r, classifyNeedsInput as t };
79
- //# sourceMappingURL=needsInput-103zhZ90.js.map
79
+ //# sourceMappingURL=needsInput-DhfIwxse.js.map
@@ -53,4 +53,4 @@ async function ensureNodeRuntime(which = Bun.which) {
53
53
 
54
54
  //#endregion
55
55
  export { liveEnv as n, ensureNodeRuntime as t };
56
- //# sourceMappingURL=nodeRuntime-QihGFQbI.js.map
56
+ //# sourceMappingURL=nodeRuntime-CKc1BN5J.js.map
@@ -1,12 +1,12 @@
1
1
  import { n as logger } from "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-Dq4KY2IV.js";
3
3
  import "./messageLog-BYFwioFY.js";
4
- import "./e2e-CUMZC53I.js";
5
- import "./configShared-DtHMBCl7.js";
6
- import { L as renderLogTailLines, O as listRecords, d as deriveLiveState, x as isPidAlive } from "./subcommands-DJpVXIb6.js";
7
- import { f as readInbox, g as daemonLockOwnerPath, h as daemonLockDir, i as gcInboxes, l as listInboxParents, m as shouldStealLock, n as appendEvent, s as hostId, u as liveWatchers, x as notifyDir } from "./notifyStore-Cbw2ZJ0X.js";
8
- import "./webrtcLink-DyCj380i.js";
9
- import "./remotes-DdAfueOu.js";
4
+ import "./e2e-OLfcNxiv.js";
5
+ import "./configShared-DYxlvrH0.js";
6
+ import { L as renderLogTailLines, O as listRecords, d as deriveLiveState, x as isPidAlive } from "./subcommands-03ghe-aZ.js";
7
+ import { f as readInbox, g as daemonLockOwnerPath, h as daemonLockDir, i as gcInboxes, l as listInboxParents, m as shouldStealLock, n as appendEvent, s as hostId, u as liveWatchers, x as notifyDir } from "./notifyStore-Dus2D1XA.js";
8
+ import "./webrtcLink-B72AQ2eb.js";
9
+ import "./remotes-IzQHupeo.js";
10
10
  import { mkdir, readFile, rename, rm, stat, writeFile } from "fs/promises";
11
11
  import { randomUUID } from "node:crypto";
12
12
  import { execFile, execFileSync } from "node:child_process";
@@ -863,4 +863,4 @@ async function ensureDaemon() {
863
863
 
864
864
  //#endregion
865
865
  export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
866
- //# sourceMappingURL=notifyDaemon-TKtSYtEO.js.map
866
+ //# sourceMappingURL=notifyDaemon-Cf4KHDOr.js.map
@@ -1,4 +1,4 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import { a as getCursor, c as isTransientLockMkdirError, d as minConsumerCursor, f as readInbox, i as gcInboxes, l as listInboxParents, m as shouldStealLock, n as appendEvent, o as heartbeatWatcher, p as setCursor, r as clearWatcher, s as hostId, t as acquireLock, u as liveWatchers } from "./notifyStore-Cbw2ZJ0X.js";
2
+ import { a as getCursor, c as isTransientLockMkdirError, d as minConsumerCursor, f as readInbox, i as gcInboxes, l as listInboxParents, m as shouldStealLock, n as appendEvent, o as heartbeatWatcher, p as setCursor, r as clearWatcher, s as hostId, t as acquireLock, u as liveWatchers } from "./notifyStore-Dus2D1XA.js";
3
3
 
4
4
  export { liveWatchers };
@@ -556,4 +556,4 @@ async function liveWatchers(now = Date.now()) {
556
556
 
557
557
  //#endregion
558
558
  export { postmortemStartedAt as S, filterSinceSeq as _, getCursor as a, maxSeq as b, isTransientLockMkdirError as c, minConsumerCursor as d, readInbox as f, daemonLockOwnerPath as g, daemonLockDir as h, gcInboxes as i, listInboxParents as l, shouldStealLock as m, appendEvent as n, heartbeatWatcher as o, setCursor as p, clearWatcher as r, hostId as s, acquireLock as t, liveWatchers as u, filterSinceTs as v, notifyDir as x, filterUnread as y };
559
- //# sourceMappingURL=notifyStore-Cbw2ZJ0X.js.map
559
+ //# sourceMappingURL=notifyStore-Dus2D1XA.js.map
@@ -68,4 +68,4 @@ async function offerOpenInBrowser(url, prompt = "Open in browser now? [Y/n] ") {
68
68
 
69
69
  //#endregion
70
70
  export { offerOpenInBrowser };
71
- //# sourceMappingURL=openBrowser-Cs46NiH6.js.map
71
+ //# sourceMappingURL=openBrowser-Dmg2Oi4q.js.map
@@ -50,4 +50,4 @@ function spawnerFromRecords(records, parentPid) {
50
50
 
51
51
  //#endregion
52
52
  export { spawnerFromRecords as n, resolveSpawner as t };
53
- //# sourceMappingURL=parentLink-CTgZZCgw.js.map
53
+ //# sourceMappingURL=parentLink-BwX4jaGD.js.map
@@ -1,5 +1,5 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-Dq4KY2IV.js";
3
- import { n as spawnerFromRecords, t as resolveSpawner } from "./parentLink-CTgZZCgw.js";
3
+ import { n as spawnerFromRecords, t as resolveSpawner } from "./parentLink-BwX4jaGD.js";
4
4
 
5
5
  export { resolveSpawner };
@@ -1,8 +1,8 @@
1
1
  import { n as logger } from "./logger-CDIsZ-Pp.js";
2
2
  import "./globalPidIndex-Dq4KY2IV.js";
3
- import { t as classifyNeedsInput } from "./needsInput-103zhZ90.js";
4
- import { n as replyTargetOf, r as shortenHome } from "./initMsg-BKqWDYFk.js";
5
- import { t as resolveSpawner } from "./parentLink-CTgZZCgw.js";
3
+ import { t as classifyNeedsInput } from "./needsInput-DhfIwxse.js";
4
+ import { n as replyTargetOf, r as shortenHome } from "./initMsg-CTAIqBWF.js";
5
+ import { t as resolveSpawner } from "./parentLink-BwX4jaGD.js";
6
6
  import { spawn } from "node:child_process";
7
7
 
8
8
  //#region ts/parentPing.ts
@@ -332,13 +332,13 @@ function shouldDeliverReport(opts) {
332
332
  */
333
333
  async function isParentWatching(parentWrapperPid, parentAgentPid, selfAgentPid, now = Date.now()) {
334
334
  try {
335
- const { liveWatchers } = await import("./notifyStore-CEDiVyis.js");
335
+ const { liveWatchers } = await import("./notifyStore-0hlFPa6z.js");
336
336
  if ((await liveWatchers(now)).has(parentWrapperPid)) return true;
337
337
  } catch (error) {
338
338
  logger.debug("[parent-ping] watcher lookup failed:", error);
339
339
  }
340
340
  try {
341
- const { lastReadAt, READ_WINDOW_MS } = await import("./subcommands-DLrJfG4D.js");
341
+ const { lastReadAt, READ_WINDOW_MS } = await import("./subcommands-BS4lnTrb.js");
342
342
  const last = await lastReadAt(`agent:${parentAgentPid}`, selfAgentPid);
343
343
  if (last !== null && now - last <= READ_WINDOW_MS) return true;
344
344
  } catch (error) {
@@ -466,4 +466,4 @@ function startParentPingLoop(opts) {
466
466
 
467
467
  //#endregion
468
468
  export { startParentPingLoop };
469
- //# sourceMappingURL=parentPingLoop-BEvJ2ElR.js.map
469
+ //# sourceMappingURL=parentPingLoop-Bxd3dXWO.js.map
@@ -1,5 +1,5 @@
1
- import { a as computeTranscriptHash, c as open, d as randomHex, f as seal, l as packEnvelope, n as FLAG_CONFIRM, o as deriveAuthToken, p as unpackEnvelope, s as deriveDirKeys, t as CONFIRM_TIMEOUT_MS } from "./e2e-CUMZC53I.js";
2
- import { i as opsMissing, s as isValidOp, t as haveVector } from "./store-BW5NBouz.js";
1
+ import { a as computeTranscriptHash, c as open, d as randomHex, f as seal, l as packEnvelope, n as FLAG_CONFIRM, o as deriveAuthToken, p as unpackEnvelope, s as deriveDirKeys, t as CONFIRM_TIMEOUT_MS } from "./e2e-OLfcNxiv.js";
2
+ import { i as opsMissing, s as isValidOp, t as haveVector } from "./store-C7I2CAu9.js";
3
3
 
4
4
  //#region ts/channels/peer.ts
5
5
  const SIGNAL_SUBPROTOCOL = "ay-signal-1";
@@ -363,4 +363,4 @@ var ChannelPeer = class {
363
363
 
364
364
  //#endregion
365
365
  export { ChannelPeer as t };
366
- //# sourceMappingURL=peer-DIl5xtx8.js.map
366
+ //# sourceMappingURL=peer-Dr4zvtcd.js.map
@@ -0,0 +1,4 @@
1
+ import "./e2e-OLfcNxiv.js";
2
+ import { t as ChannelPeer } from "./peer-Dr4zvtcd.js";
3
+
4
+ export { ChannelPeer };
@@ -1,5 +1,5 @@
1
- import "./e2e-CUMZC53I.js";
2
- import "./webrtcLink-DyCj380i.js";
3
- import { a as resolveRemoteSpec, i as readRemotes, n as deleteRemoteAlias, o as writeRemoteAlias, r as parseDirectRemoteSpec, t as cmdRemote } from "./remotes-DdAfueOu.js";
1
+ import "./e2e-OLfcNxiv.js";
2
+ import "./webrtcLink-B72AQ2eb.js";
3
+ import { a as resolveRemoteSpec, i as readRemotes, n as deleteRemoteAlias, o as writeRemoteAlias, r as parseDirectRemoteSpec, t as cmdRemote } from "./remotes-IzQHupeo.js";
4
4
 
5
5
  export { cmdRemote };
@@ -1,4 +1,4 @@
1
- import { n as isWebrtcSpec } from "./webrtcLink-DyCj380i.js";
1
+ import { n as isWebrtcSpec } from "./webrtcLink-B72AQ2eb.js";
2
2
  import { mkdir, readFile, writeFile } from "fs/promises";
3
3
  import { homedir } from "os";
4
4
  import path from "path";
@@ -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-Bl8eowma.js");
89
+ const { startWebrtcBridge } = await import("./webrtcRemote-D68dkqFp.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-DdAfueOu.js.map
176
+ //# sourceMappingURL=remotes-IzQHupeo.js.map
@@ -1,4 +1,4 @@
1
- import { r as getInstalledPackage } from "./versionChecker-ZQYirfMp.js";
1
+ import { r as getInstalledPackage } from "./versionChecker-V6ceVsu9.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-B9FEbqTu.js.map
246
+ //# sourceMappingURL=rustBinary-B2lNFJSe.js.map
@@ -1,14 +1,15 @@
1
1
  import "./logger-CDIsZ-Pp.js";
2
- import "./versionChecker-ZQYirfMp.js";
3
- import "./ts-ClwhahH9.js";
4
- import "./todoAutomation-BQRW614S.js";
2
+ import "./versionChecker-V6ceVsu9.js";
3
+ import "./ts-D0Pk-WJg.js";
4
+ import "./todoAutomation-BETGOik9.js";
5
5
  import "./JsonlStore-CPGIR0Wy.js";
6
6
  import "./globalPidIndex-Dq4KY2IV.js";
7
7
  import "./pidStore-DJqSZPJi.js";
8
8
  import "./messageLog-BYFwioFY.js";
9
- import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CpWKDCtL.js";
10
- import { f as resolveSpawnCwd } from "./workspaceConfig-CBKlgA_q.js";
11
- import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-QihGFQbI.js";
9
+ import "./todoStore-Wk8U4zJ8.js";
10
+ import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Bne04-66.js";
11
+ import { f as resolveSpawnCwd } from "./workspaceConfig-EK7XNsgR.js";
12
+ import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-CKc1BN5J.js";
12
13
  import { createHash } from "node:crypto";
13
14
 
14
15
  //#region ts/oxmgrService.ts
@@ -153,4 +154,4 @@ async function cmdSchedule(rest) {
153
154
 
154
155
  //#endregion
155
156
  export { cmdSchedule };
156
- //# sourceMappingURL=schedule-Bmh5uaDr.js.map
157
+ //# sourceMappingURL=schedule-D1CNvuKT.js.map