claudelink 1.4.0 → 1.5.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/README.md +34 -1
  2. package/dist/arm-compact.d.ts +2 -0
  3. package/dist/arm-compact.js +182 -0
  4. package/dist/arm-compact.js.map +1 -0
  5. package/dist/cli.js +145 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/compact-analyzer.d.ts +67 -0
  8. package/dist/compact-analyzer.js +309 -0
  9. package/dist/compact-analyzer.js.map +1 -0
  10. package/dist/compact-decision.d.ts +19 -0
  11. package/dist/compact-decision.js +47 -0
  12. package/dist/compact-decision.js.map +1 -0
  13. package/dist/compact-executor.d.ts +27 -0
  14. package/dist/compact-executor.js +160 -0
  15. package/dist/compact-executor.js.map +1 -0
  16. package/dist/context-watcher-settings.d.ts +21 -0
  17. package/dist/context-watcher-settings.js +176 -0
  18. package/dist/context-watcher-settings.js.map +1 -0
  19. package/dist/context-watcher.d.ts +70 -0
  20. package/dist/context-watcher.js +1005 -0
  21. package/dist/context-watcher.js.map +1 -0
  22. package/dist/db.d.ts +22 -1
  23. package/dist/db.js +184 -5
  24. package/dist/db.js.map +1 -1
  25. package/dist/hooks/stop-hook.js +30 -1
  26. package/dist/hooks/stop-hook.js.map +1 -1
  27. package/dist/index.js +144 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/manual-decision.d.ts +23 -0
  30. package/dist/manual-decision.js +67 -0
  31. package/dist/manual-decision.js.map +1 -0
  32. package/dist/prompt-clear.d.ts +8 -0
  33. package/dist/prompt-clear.js +33 -0
  34. package/dist/prompt-clear.js.map +1 -0
  35. package/dist/recovery-watcher.d.ts +6 -0
  36. package/dist/recovery-watcher.js +131 -38
  37. package/dist/recovery-watcher.js.map +1 -1
  38. package/dist/role-collision.d.ts +6 -0
  39. package/dist/role-collision.js +51 -0
  40. package/dist/role-collision.js.map +1 -0
  41. package/dist/scheduler.js +47 -0
  42. package/dist/scheduler.js.map +1 -1
  43. package/dist/ui-server.d.ts +4 -0
  44. package/dist/ui-server.js +899 -20
  45. package/dist/ui-server.js.map +1 -1
  46. package/dist/usage-reader.d.ts +79 -0
  47. package/dist/usage-reader.js +553 -0
  48. package/dist/usage-reader.js.map +1 -0
  49. package/package.json +8 -2
@@ -27,6 +27,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.captureScrollback = captureScrollback;
31
+ exports.detectError = detectError;
30
32
  exports.startRecoveryWatcher = startRecoveryWatcher;
31
33
  const path_1 = __importDefault(require("path"));
32
34
  const os_1 = __importDefault(require("os"));
@@ -48,26 +50,55 @@ const LOG_PATH = path_1.default.join(NEXUS_DIR, "recovery-watcher.log");
48
50
  // output from prose that merely DISCUSSES rate-limiting (agent conversations,
49
51
  // docs, log inspection). Without this, the watcher false-fires whenever any
50
52
  // agent talks about rate-limiting.
53
+ // Note: gap classes use [\s\S]{0,N}? (lazy any-char including newline)
54
+ // rather than [^\n]*, because iTerm2's `contents of session` returns
55
+ // soft-wrapped errors with real \n at the wrap. A long error like
56
+ // `API Error: 529 {"type":"error","error":{"type":"overloaded_error",...}}`
57
+ // arrives in scrollback as multiple lines; [^\n]* would never bridge the
58
+ // gap and the pattern wouldn't fire. The tight upper bound (60-200 chars)
59
+ // keeps the false-positive surface narrow — we still need an error
60
+ // prefix on the same VISUAL block as the keyword, just not the same
61
+ // pre-wrap line.
51
62
  const ERROR_PATTERNS = [
52
63
  // Claude Code's full rate-limit error line — distinctive enough to be
53
64
  // its own pattern. Still subject to position filter below.
54
65
  /API\s*Error:\s*Server is temporarily limiting requests/i,
55
- // Claude Code other API errors — require "API Error:" prefix in the
56
- // same line as the keyword.
57
- /API\s*Error:[^\n]*\brate[ _-]?limit/i,
58
- /API\s*Error:[^\n]*\boverload/i,
59
- /API\s*Error:[^\n]*\b(529|503|429)\b/i,
60
- /API\s*Error:[^\n]*\b(rate_limit_error|overloaded_error)\b/i,
61
- // OpenAI/Codex CLI shapes — require an "error" prefix in the same line.
62
- /\bOpenAI\s*API\s*(error|exception):[^\n]*\b(rate_limit|overload)/i,
63
- /\berror\b[^\n]{0,60}\brate_limit_exceeded\b/i,
64
- // Bare HTTP status lines (still distinctive because they include the
66
+ // Claude Code other API errors — require "API Error:" prefix near the
67
+ // keyword (with bounded any-char gap to allow soft-wrap).
68
+ /API\s*Error:[\s\S]{0,200}?\brate[ _-]?limit/i,
69
+ /API\s*Error:[\s\S]{0,200}?\boverload/i,
70
+ /API\s*Error:[\s\S]{0,200}?\b(529|503|429)\b/i,
71
+ /API\s*Error:[\s\S]{0,200}?\b(rate_limit_error|overloaded_error)\b/i,
72
+ // OpenAI/Codex CLI shapes — require an "error" prefix near the keyword.
73
+ /\bOpenAI\s*API\s*(error|exception):[\s\S]{0,200}?\b(rate_limit|overload)/i,
74
+ /\berror\b[\s\S]{0,60}?\brate_limit_exceeded\b/i,
75
+ // Bare HTTP status lines (distinctive because they include the
65
76
  // canonical status text, which prose-mentions rarely include verbatim).
66
77
  /\b(429|529)\s+Too Many Requests\b/i,
67
78
  /\b503\s+Service Unavailable\b/i,
68
- // Generic CLI-error safety net — "Error" or "Error:" prefix on the
69
- // same line as the rate-limit token, with a tight intra-line cap.
70
- /\bError:?\b[^\n]{0,80}\b(rate[ _-]?limited|rate_limit_error|overloaded_error|request was throttled)\b/i,
79
+ // Generic CLI-error safety net — "Error" / "Error:" near the rate-limit
80
+ // token. Requires the Error token to be at the START OF A VISIBLE LINE
81
+ // (optionally with the Claude Code `⎿` tool-output glyph prefix), so
82
+ // prose mentions of the same phrase in mid-conversation don't trigger.
83
+ // Without the line-start anchor, agents writing about ClaudeLink in
84
+ // their own work (e.g. the build-log writer) hit this as a false positive.
85
+ /(?:^|\n)[\s│⎿]*Error:?\b[\s\S]{0,80}?\b(rate[ _-]?limited|rate_limit_error|overloaded_error|request was throttled)\b/i,
86
+ // Claude Code safety-classifier auto-mode failure. Shape:
87
+ // "<model> is temporarily unavailable, so auto mode cannot determine
88
+ // the safety of <ToolName> right now. Wait briefly and then try..."
89
+ // When the classifier model is down, auto-permission for a tool call
90
+ // (WebFetch / WebSearch / Bash / Read of a sensitive path / etc.) can't
91
+ // be granted, and the agent halts mid-turn waiting on an approval that
92
+ // will never arrive. Model name and tool name both vary; the
93
+ // "is temporarily unavailable, so auto mode cannot determine the safety"
94
+ // clause is invariant across variants we've observed.
95
+ //
96
+ // No "Error:" / "API Error:" prefix needed here — Claude Code emits this
97
+ // as a system advisory, not an API error, so the prefix design rule from
98
+ // the patterns above doesn't apply. The phrase itself is distinctive
99
+ // enough (no one writes it conversationally) and the MAX_DISTANCE_FROM_END
100
+ // guard still keeps any prose mention from firing.
101
+ /\bis\s+temporarily\s+unavailable,?\s+so\s+auto\s+mode\s+cannot\s+determine\s+the\s+safety\b/i,
71
102
  ];
72
103
  // Capture only the last N characters of scrollback. Errors that paused
73
104
  // execution sit at the bottom of the visible buffer. Reading more wastes
@@ -75,10 +106,19 @@ const ERROR_PATTERNS = [
75
106
  const SCROLLBACK_TAIL_CHARS = 1500;
76
107
  // Matched error text must be within this many characters of the END of
77
108
  // the captured scrollback. When a CLI is genuinely stuck, the error is
78
- // the LAST thing on screen above the prompt. When an agent is merely
79
- // discussing an error in conversation, more text follows the mention,
80
- // pushing it away from the end. This is the key false-positive guard.
81
- const MAX_DISTANCE_FROM_END = 400;
109
+ // near the LAST thing on screen above the prompt. When an agent is
110
+ // merely discussing an error in conversation, more text follows the
111
+ // mention, pushing it well away from the end. This is the key
112
+ // false-positive guard.
113
+ //
114
+ // The threshold sits at 1000 chars because Claude Code renders ~500 chars
115
+ // of UI chrome BELOW a real error (empty prompt line, horizontal
116
+ // separators, the "⏵⏵ auto mode on" footer, blank lines). v1.4.0 was
117
+ // tuned at 400 based on a synthetic test that omitted that chrome and
118
+ // false-negative'd real stuck terminals in production. Discussion cases
119
+ // observed at ≥1250 chars from end, so 1000 keeps a clean margin without
120
+ // re-introducing the false-positive surface.
121
+ const MAX_DISTANCE_FROM_END = 1000;
82
122
  function logLine(line) {
83
123
  try {
84
124
  fs_1.default.appendFileSync(LOG_PATH, `${new Date().toISOString()} ${line}\n`);
@@ -142,35 +182,65 @@ function captureScrollback(c) {
142
182
  return null;
143
183
  }
144
184
  }
145
- // Hash the matched error context to a short signature. We hash the matched
146
- // substring plus a small surrounding window so de-dup compares semantic
147
- // "same error" rather than identical byte-for-byte scrollback (which would
148
- // always differ as the terminal repaints).
185
+ // Hash the matched error context to a short signature. We hash the
186
+ // matched substring plus a small surrounding window, BUT first
187
+ // canonicalize per-request volatile bytes — request IDs, retry counters,
188
+ // timestamps — so de-dup compares semantic "same error" rather than
189
+ // byte-identical scrollback. Without canonicalization, every tick on a
190
+ // genuinely-still-stuck agent produced a fresh signature because Claude
191
+ // Code's retry text included a fresh request ID each time; the cooldown
192
+ // was masking the de-dup failure by accident.
149
193
  function computeSignature(scrollback, match) {
150
194
  const start = Math.max(0, (match.index ?? 0) - 32);
151
195
  const end = Math.min(scrollback.length, (match.index ?? 0) + match[0].length + 32);
152
196
  const window = scrollback.slice(start, end);
153
- return crypto_1.default.createHash("sha1").update(window).digest("hex").slice(0, 16);
197
+ const canon = window
198
+ .toLowerCase()
199
+ .replace(/\b[0-9a-f]{8,}\b/gi, "#") // request IDs, hex tokens (≥8 chars)
200
+ .replace(/\d+/g, "#") // numbers (retry counters, status codes, timestamps)
201
+ .replace(/\s+/g, " ") // collapse whitespace so re-wrap doesn't shift sig
202
+ .trim();
203
+ return crypto_1.default.createHash("sha1").update(canon).digest("hex").slice(0, 16);
154
204
  }
155
- // Match scrollback against the known patterns. Returns the first match's
156
- // signature, or null if no pattern matched OR the match is too far from
157
- // the end of the buffer (likely scrolled-up or mid-conversation prose).
205
+ // Match scrollback against the known patterns. Returns the match CLOSEST
206
+ // to the end of the buffer (across all patterns and all occurrences), or
207
+ // null if nothing matched within MAX_DISTANCE_FROM_END.
208
+ //
209
+ // IMPORTANT: this iterates ALL matches across ALL patterns, not just the
210
+ // first match per pattern. v1.4.0/v1.4.1 used `scrollback.match(re)`
211
+ // which returns only the first occurrence — when Claude Code rendered
212
+ // the same error twice (initial failure + retry), the matcher locked
213
+ // onto the first (out-of-range) copy and silently skipped, leaving real
214
+ // stuck terminals un-nudged. Iterating all matches and picking the
215
+ // nearest-to-end is what guarantees a stuck error gets caught.
216
+ // Exported for testability — pattern-matching regressions are the easiest
217
+ // place for false-positive / false-negative bugs to creep back in.
158
218
  function detectError(scrollback) {
219
+ let best = null;
159
220
  for (const re of ERROR_PATTERNS) {
160
- const m = scrollback.match(re);
161
- if (!m)
162
- continue;
163
- const matchEnd = (m.index ?? 0) + m[0].length;
164
- const distanceFromEnd = scrollback.length - matchEnd;
165
- if (distanceFromEnd > MAX_DISTANCE_FROM_END) {
166
- // Match exists but is too far from the bottom — almost certainly
167
- // historical scrollback or mid-conversation prose, not the current
168
- // stuck state. Skip and try the next pattern.
169
- continue;
221
+ // Force a global flag so exec() iterates rather than locking to first.
222
+ const globalRe = new RegExp(re.source, re.flags.includes("g") ? re.flags : re.flags + "g");
223
+ let m;
224
+ while ((m = globalRe.exec(scrollback)) !== null) {
225
+ const matchEnd = m.index + m[0].length;
226
+ const distance = scrollback.length - matchEnd;
227
+ if (distance > MAX_DISTANCE_FROM_END)
228
+ continue;
229
+ if (best === null || distance < best.distanceFromEnd) {
230
+ best = { match: m, pattern: re, distanceFromEnd: distance };
231
+ }
232
+ // Guard against pathological zero-width matches advancing the
233
+ // regex engine's lastIndex.
234
+ if (m.index === globalRe.lastIndex)
235
+ globalRe.lastIndex++;
170
236
  }
171
- return { pattern: re, signature: computeSignature(scrollback, m) };
172
237
  }
173
- return null;
238
+ if (!best)
239
+ return null;
240
+ return {
241
+ pattern: best.pattern,
242
+ signature: computeSignature(scrollback, best.match),
243
+ };
174
244
  }
175
245
  function fireDesktopNotification(role, message) {
176
246
  try {
@@ -202,6 +272,14 @@ function selectCandidates(db) {
202
272
  function startRecoveryWatcher() {
203
273
  let db = null;
204
274
  let timer = null;
275
+ // Re-entrancy guard. captureScrollback() uses execFileSync with a 3s
276
+ // timeout; on a 14-agent fleet under iTerm2-unresponsive conditions
277
+ // (osascript ETIMEDOUT) a single tick can take 40+ seconds. The
278
+ // setInterval doesn't know or care, and would happily fire the next
279
+ // tick on top, blocking the event loop further. The flag is checked at
280
+ // the head of every tick — if a previous tick is still in flight, the
281
+ // new one logs and returns immediately.
282
+ let tickInProgress = false;
205
283
  const state = new Map();
206
284
  const openDb = () => {
207
285
  if (!db)
@@ -218,9 +296,23 @@ function startRecoveryWatcher() {
218
296
  };
219
297
  const tick = () => {
220
298
  const summary = { checked: 0, fired: 0, suppressed: 0, escalated: 0 };
299
+ if (tickInProgress) {
300
+ logLine(`skip-tick: previous tick still in flight`);
301
+ return summary;
302
+ }
303
+ tickInProgress = true;
304
+ try {
305
+ return runTickBody(summary);
306
+ }
307
+ finally {
308
+ tickInProgress = false;
309
+ }
310
+ };
311
+ const runTickBody = (summary) => {
221
312
  const settings = (0, recovery_watcher_settings_js_1.readRecoveryWatcherSettings)();
222
- if (!settings.enabled)
313
+ if (!settings.enabled) {
223
314
  return summary;
315
+ }
224
316
  let candidates;
225
317
  try {
226
318
  candidates = selectCandidates(openDb());
@@ -282,6 +374,7 @@ function startRecoveryWatcher() {
282
374
  logLine(`fire-failed role=${c.role} result=${result} pattern=${detected.pattern.source}`);
283
375
  }
284
376
  }
377
+ tickInProgress = false;
285
378
  return summary;
286
379
  };
287
380
  const reschedule = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-watcher.js","sourceRoot":"","sources":["../src/recovery-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery-watcher.js","sourceRoot":"","sources":["../src/recovery-watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface AgentLabel {
2
+ role: string;
3
+ description: string | null;
4
+ }
5
+ export declare function roleCollisionWarning(role: string, siblings: AgentLabel[]): string | null;
6
+ export declare function fanoutNotice(role: string, recipients: AgentLabel[]): string | null;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // Pure formatters for the role-collision UX guards.
3
+ //
4
+ // Two unrelated terminals can register under the same generic role string (e.g.
5
+ // "developer"): the agents table intentionally allows duplicate roles and
6
+ // `sendMessage` fans out to every match. That fan-out is correct by design, but
7
+ // it is INVISIBLE — a directed send to a shared role silently delivers to every
8
+ // terminal holding it, and each gets nudged "check for updates" for mail meant
9
+ // for one. (Seen in practice: several terminals each registered as a bare
10
+ // "developer", and one send addressed to that role fanned out to all of them.)
11
+ //
12
+ // These two notices surface the collision at the two moments it matters:
13
+ // registration (#2) and send (#3). Kept pure + exported so the wording is
14
+ // unit-tested independently of the MCP server boot path.
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.roleCollisionWarning = roleCollisionWarning;
17
+ exports.fanoutNotice = fanoutNotice;
18
+ // Identify an agent for a human reader. Siblings of a collision all share the
19
+ // same role, so the description is what actually disambiguates them; fall back
20
+ // to the role alone when there is no description.
21
+ function label(a) {
22
+ const d = a.description ? a.description.trim() : "";
23
+ const short = d.length > 70 ? d.slice(0, 67) + "..." : d;
24
+ return short ? `${a.role} — ${short}` : a.role;
25
+ }
26
+ // #2 — shown in the register response when the just-registered role is already
27
+ // held by >= 1 other LIVE agent. `siblings` are the other live agents sharing
28
+ // the role (caller excludes self and dead rows). Returns null when there is no
29
+ // collision, so the caller can append unconditionally.
30
+ function roleCollisionWarning(role, siblings) {
31
+ if (siblings.length === 0)
32
+ return null;
33
+ const lines = siblings.map((s) => ` • ${label(s)}`).join("\n");
34
+ return (`⚠️ Role "${role}" is already held by ${siblings.length} other live agent(s):\n` +
35
+ `${lines}\n` +
36
+ ` Messages sent to role "${role}" fan out to ALL of them — each gets nudged\n` +
37
+ ` to "check for updates" for mail meant for one. To avoid cross-talk, register\n` +
38
+ ` with a unique, project-qualified role (e.g. "<project> ${role}").`);
39
+ }
40
+ // #3 — appended to the send response when a directed send matched > 1 agent, so
41
+ // the sender SEES the fan-out instead of it being silent. Returns null for the
42
+ // normal single-recipient case.
43
+ function fanoutNotice(role, recipients) {
44
+ if (recipients.length <= 1)
45
+ return null;
46
+ const lines = recipients.map((r) => ` • ${label(r)}`).join("\n");
47
+ return (`⚠️ Role "${role}" matched ${recipients.length} agents — this message fanned out to all:\n` +
48
+ `${lines}\n` +
49
+ ` If you meant just one, target a unique role (get_agents lists them).`);
50
+ }
51
+ //# sourceMappingURL=role-collision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-collision.js","sourceRoot":"","sources":["../src/role-collision.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,EAAE;AACF,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAC/E,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,yDAAyD;;AAoBzD,oDAaC;AAKD,oCAWC;AA1CD,8EAA8E;AAC9E,+EAA+E;AAC/E,kDAAkD;AAClD,SAAS,KAAK,CAAC,CAAa;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,uDAAuD;AACvD,SAAgB,oBAAoB,CAClC,IAAY,EACZ,QAAsB;IAEtB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,OAAO,CACL,aAAa,IAAI,wBAAwB,QAAQ,CAAC,MAAM,yBAAyB;QACjF,GAAG,KAAK,IAAI;QACZ,8BAA8B,IAAI,+CAA+C;QACjF,oFAAoF;QACpF,8DAA8D,IAAI,KAAK,CACxE,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,gCAAgC;AAChC,SAAgB,YAAY,CAC1B,IAAY,EACZ,UAAwB;IAExB,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,CACL,aAAa,IAAI,aAAa,UAAU,CAAC,MAAM,6CAA6C;QAC5F,GAAG,KAAK,IAAI;QACZ,0EAA0E,CAC3E,CAAC;AACJ,CAAC"}
package/dist/scheduler.js CHANGED
@@ -129,6 +129,22 @@ function selectCandidates(db) {
129
129
  .all();
130
130
  return rows.filter((c) => isProcessAlive(c.pid));
131
131
  }
132
+ // Per-agent recheck — guards against shared-broadcast races where an
133
+ // earlier candidate in this tick (or a separate readInbox path like a
134
+ // Stop hook firing concurrently) already consumed the only unread row.
135
+ // SQL mirrors the EXISTS clause in selectCandidates exactly so the
136
+ // "is this agent still eligible?" semantics match the original filter.
137
+ // Returns true if the agent has unread mail right NOW.
138
+ function hasUnreadMail(db, agentId) {
139
+ const row = db
140
+ .prepare(`SELECT 1 FROM messages m
141
+ WHERE m.read = 0
142
+ AND m.from_agent != ?
143
+ AND (m.to_agent = ? OR m.to_agent IS NULL)
144
+ LIMIT 1`)
145
+ .get(agentId, agentId);
146
+ return row !== undefined;
147
+ }
132
148
  function startScheduler() {
133
149
  let db = null;
134
150
  let timer = null;
@@ -151,6 +167,30 @@ function startScheduler() {
151
167
  if (candidates.length === 0)
152
168
  return summary;
153
169
  for (const c of candidates) {
170
+ // Just-in-time recheck. selectCandidates snapshots the candidate set
171
+ // once, but the dispatch loop runs serially with ~600ms-3s per
172
+ // osascript call. With a shared broadcast row (single `read` flag for
173
+ // all recipients), the first agent to consume it via readInbox or a
174
+ // Stop hook flips read=1 globally — leaving subsequent candidates in
175
+ // this tick's snapshot pointing at no actual unread mail. Without the
176
+ // recheck, we'd type "check for updates" into terminals whose inbox
177
+ // is now empty (spurious-check-for-updates symptom).
178
+ let stillEligible;
179
+ try {
180
+ stillEligible = hasUnreadMail(openDb(), c.id);
181
+ }
182
+ catch (e) {
183
+ // Fail-open: treat DB errors as eligible, mirroring the project's
184
+ // stated hook posture. If the DB is truly broken, injectKeystroke
185
+ // will fail too and be logged there.
186
+ logLine(`recheck-error role=${c.role} tty=${c.tty} error="${e?.message ?? String(e)}"`);
187
+ stillEligible = true;
188
+ }
189
+ if (!stillEligible) {
190
+ summary.skipped++;
191
+ logLine(`skip-recheck role=${c.role} tty=${c.tty} reason="inbox drained mid-tick"`);
192
+ continue;
193
+ }
154
194
  const result = injectKeystroke(c, NUDGE_TEXT);
155
195
  if (result === "ok") {
156
196
  summary.fired++;
@@ -163,6 +203,13 @@ function startScheduler() {
163
203
  summary.failed++;
164
204
  }
165
205
  }
206
+ // Tick summary makes the broadcast race observable. A healthy directed-
207
+ // mail tick looks like `candidates=3 fired=3 skipped=0`. A broadcast
208
+ // cascade with race losses looks like `candidates=14 fired=1 skipped=13`
209
+ // — that pattern is the smoking-gun fingerprint.
210
+ if (candidates.length > 0) {
211
+ logLine(`tick-summary candidates=${candidates.length} fired=${summary.fired} skipped=${summary.skipped} failed=${summary.failed}`);
212
+ }
166
213
  return summary;
167
214
  };
168
215
  const reschedule = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,uEAAuE;AACvE,yEAAyE;AACzE,8DAA8D;AAC9D,2EAA2E;AAC3E,6BAA6B;AAC7B,EAAE;AACF,6BAA6B;AAC7B,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,qCAAqC;AACrC,+DAA+D;;;;;AAgD/D,0CAmEC;AAgDD,wCAkHC;AAnRD,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AACpB,iDAA6C;AAC7C,oEAAsC;AACtC,mEAGiC;AAEjC,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAEvD,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAWvC,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,CAAC;QACH,YAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,eAAe,CAAC,CAAiB,EAAE,IAAY;IAC7D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,IAAI,CAAC;QACH,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,OAAO,CACL,aAAa,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,+BAA+B,CAChE,CAAC;gBACF,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,IAAA,4BAAY,EAAC,MAAM,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;gBAClE,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;aACpC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,6DAA6D;YAC7D,EAAE;YACF,oEAAoE;YACpE,uEAAuE;YACvE,yEAAyE;YACzE,uEAAuE;YACvE,0EAA0E;YAC1E,EAAE;YACF,sEAAsE;YACtE,yEAAyE;YACzE,yEAAyE;YACzE,wEAAwE;YACxE,iEAAiE;YACjE,EAAE;YACF,sEAAsE;YACtE,sBAAsB;YACtB,MAAM,MAAM,GAAG;;;;kCAIa,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC;wCACrB,oBAAoB,CAAC,IAAI,CAAC;;;;;;;eAOnD,CAAC;YACV,IAAA,4BAAY,EAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACxC,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;aACpC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+DAA+D;QAC/D,oEAAoE;QACpE,yDAAyD;QACzD,OAAO,CACL,aAAa,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,YAAY,IAAI,MAAM,qCAAqC,CAChH,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CACL,aAAa,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,YAAY,YAAY,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAC3G,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAqB;IAC7C,sEAAsE;IACtE,mEAAmE;IACnE,mEAAmE;IACnE,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;;;;;;WASK,CACN;SACA,GAAG,EAAsB,CAAC;IAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,qEAAqE;AACrE,sEAAsE;AACtE,uEAAuE;AACvE,mEAAmE;AACnE,uEAAuE;AACvE,uDAAuD;AACvD,SAAS,aAAa,CAAC,EAAqB,EAAE,OAAe;IAC3D,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CACN;;;;eAIS,CACV;SACA,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzB,OAAO,GAAG,KAAK,SAAS,CAAC;AAC3B,CAAC;AAQD,SAAgB,cAAc;IAC5B,IAAI,EAAE,GAA6B,IAAI,CAAC;IACxC,IAAI,KAAK,GAA0B,IAAI,CAAC;IACxC,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,UAAU;IAEnC,MAAM,MAAM,GAAG,GAAsB,EAAE;QACrC,IAAI,CAAC,EAAE;YAAE,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAuD,EAAE;QACpE,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACpD,IAAI,UAA4B,CAAC;QACjC,IAAI,CAAC;YACH,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,eAAe,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAE5C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,qEAAqE;YACrE,+DAA+D;YAC/D,sEAAsE;YACtE,oEAAoE;YACpE,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,qDAAqD;YACrD,IAAI,aAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,kEAAkE;gBAClE,kEAAkE;gBAClE,qCAAqC;gBACrC,OAAO,CACL,sBAAsB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAC/E,CAAC;gBACF,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CACL,qBAAqB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,kCAAkC,CAC3E,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC9C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CACL,cAAc,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,YAAY,EAAE,CACnE,CAAC;YACJ,CAAC;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,yEAAyE;QACzE,iDAAiD;QACjD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CACL,2BAA2B,UAAU,CAAC,MAAM,UAAU,OAAO,CAAC,KAAK,YAAY,OAAO,CAAC,OAAO,WAAW,OAAO,CAAC,MAAM,EAAE,CAC1H,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,MAAM,QAAQ,GAAsB,IAAA,6CAAqB,GAAE,CAAC;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC;QAC5C,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC;YACT,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,kBAAkB,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,CAAC,oCAAoC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,IAAI,KAAK,EAAE,CAAC;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,EAAE,GAAG,IAAI,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC"}
@@ -1,2 +1,6 @@
1
1
  import http from "http";
2
+ export declare function findFleetTranscript(opts: {
3
+ pid: number;
4
+ transcript_path: string | null;
5
+ }): string | null;
2
6
  export declare function startUIServer(port?: number): http.Server;