@cluesmith/codev 3.3.3 → 3.3.4

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 (176) hide show
  1. package/dashboard-dist/assets/{index-CUIjS_Vb.js → index-DZf6pNPE.js} +2 -2
  2. package/dashboard-dist/assets/{index-CUIjS_Vb.js.map → index-DZf6pNPE.js.map} +1 -1
  3. package/dashboard-dist/index.html +1 -1
  4. package/dist/agent-farm/cli.d.ts.map +1 -1
  5. package/dist/agent-farm/cli.js +48 -0
  6. package/dist/agent-farm/cli.js.map +1 -1
  7. package/dist/agent-farm/commands/ide.d.ts +20 -0
  8. package/dist/agent-farm/commands/ide.d.ts.map +1 -0
  9. package/dist/agent-farm/commands/ide.js +138 -0
  10. package/dist/agent-farm/commands/ide.js.map +1 -0
  11. package/dist/agent-farm/commands/inbox.d.ts.map +1 -1
  12. package/dist/agent-farm/commands/inbox.js +15 -3
  13. package/dist/agent-farm/commands/inbox.js.map +1 -1
  14. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  15. package/dist/agent-farm/commands/send.js +16 -1
  16. package/dist/agent-farm/commands/send.js.map +1 -1
  17. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  18. package/dist/agent-farm/commands/spawn-worktree.js +16 -7
  19. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  20. package/dist/agent-farm/commands/tower.d.ts +21 -9
  21. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  22. package/dist/agent-farm/commands/tower.js +90 -30
  23. package/dist/agent-farm/commands/tower.js.map +1 -1
  24. package/dist/agent-farm/db/tower-owner.d.ts +168 -0
  25. package/dist/agent-farm/db/tower-owner.d.ts.map +1 -0
  26. package/dist/agent-farm/db/tower-owner.js +369 -0
  27. package/dist/agent-farm/db/tower-owner.js.map +1 -0
  28. package/dist/agent-farm/db/types.d.ts +30 -5
  29. package/dist/agent-farm/db/types.d.ts.map +1 -1
  30. package/dist/agent-farm/db/types.js.map +1 -1
  31. package/dist/agent-farm/lib/ide-record.d.ts +65 -0
  32. package/dist/agent-farm/lib/ide-record.d.ts.map +1 -0
  33. package/dist/agent-farm/lib/ide-record.js +118 -0
  34. package/dist/agent-farm/lib/ide-record.js.map +1 -0
  35. package/dist/agent-farm/lib/tunnel-client.d.ts +22 -0
  36. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
  37. package/dist/agent-farm/lib/tunnel-client.js +53 -5
  38. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  39. package/dist/agent-farm/servers/gate-profiles.d.ts +23 -2
  40. package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -1
  41. package/dist/agent-farm/servers/gate-profiles.js +43 -2
  42. package/dist/agent-farm/servers/gate-profiles.js.map +1 -1
  43. package/dist/agent-farm/servers/ide-forward.d.ts +62 -0
  44. package/dist/agent-farm/servers/ide-forward.d.ts.map +1 -0
  45. package/dist/agent-farm/servers/ide-forward.js +274 -0
  46. package/dist/agent-farm/servers/ide-forward.js.map +1 -0
  47. package/dist/agent-farm/servers/ide-server.d.ts +68 -0
  48. package/dist/agent-farm/servers/ide-server.d.ts.map +1 -0
  49. package/dist/agent-farm/servers/ide-server.js +281 -0
  50. package/dist/agent-farm/servers/ide-server.js.map +1 -0
  51. package/dist/agent-farm/servers/mailbox-delivery.d.ts +213 -4
  52. package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -1
  53. package/dist/agent-farm/servers/mailbox-delivery.js +489 -68
  54. package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -1
  55. package/dist/agent-farm/servers/mailbox-wiring.d.ts +18 -4
  56. package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -1
  57. package/dist/agent-farm/servers/mailbox-wiring.js +94 -21
  58. package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -1
  59. package/dist/agent-farm/servers/message-write.d.ts +138 -11
  60. package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
  61. package/dist/agent-farm/servers/message-write.js +144 -35
  62. package/dist/agent-farm/servers/message-write.js.map +1 -1
  63. package/dist/agent-farm/servers/overview.d.ts +28 -12
  64. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  65. package/dist/agent-farm/servers/overview.js +130 -79
  66. package/dist/agent-farm/servers/overview.js.map +1 -1
  67. package/dist/agent-farm/servers/render-gate.d.ts +53 -0
  68. package/dist/agent-farm/servers/render-gate.d.ts.map +1 -1
  69. package/dist/agent-farm/servers/render-gate.js +135 -24
  70. package/dist/agent-farm/servers/render-gate.js.map +1 -1
  71. package/dist/agent-farm/servers/session-submit.d.ts +7 -4
  72. package/dist/agent-farm/servers/session-submit.d.ts.map +1 -1
  73. package/dist/agent-farm/servers/session-submit.js +7 -4
  74. package/dist/agent-farm/servers/session-submit.js.map +1 -1
  75. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  76. package/dist/agent-farm/servers/tower-cron.js +4 -1
  77. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  78. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  79. package/dist/agent-farm/servers/tower-instances.js +6 -7
  80. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  81. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  82. package/dist/agent-farm/servers/tower-routes.js +53 -13
  83. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  84. package/dist/agent-farm/servers/tower-server.js +64 -7
  85. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  86. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  87. package/dist/agent-farm/servers/tower-terminals.js +53 -8
  88. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  89. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  90. package/dist/agent-farm/servers/tower-websocket.js +18 -1
  91. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  92. package/dist/agent-farm/utils/message-format.d.ts.map +1 -1
  93. package/dist/agent-farm/utils/message-format.js +5 -6
  94. package/dist/agent-farm/utils/message-format.js.map +1 -1
  95. package/dist/agent-farm/utils/port.d.ts +22 -0
  96. package/dist/agent-farm/utils/port.d.ts.map +1 -0
  97. package/dist/agent-farm/utils/port.js +35 -0
  98. package/dist/agent-farm/utils/port.js.map +1 -0
  99. package/dist/agent-farm/utils/server-utils.d.ts +26 -0
  100. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  101. package/dist/agent-farm/utils/server-utils.js +36 -0
  102. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  103. package/dist/cli.js +2 -2
  104. package/dist/cli.js.map +1 -1
  105. package/dist/commands/consult/index.d.ts.map +1 -1
  106. package/dist/commands/consult/index.js +61 -1
  107. package/dist/commands/consult/index.js.map +1 -1
  108. package/dist/commands/consult/tree-tripwire.d.ts +177 -0
  109. package/dist/commands/consult/tree-tripwire.d.ts.map +1 -0
  110. package/dist/commands/consult/tree-tripwire.js +356 -0
  111. package/dist/commands/consult/tree-tripwire.js.map +1 -0
  112. package/dist/commands/doctor.d.ts +69 -0
  113. package/dist/commands/doctor.d.ts.map +1 -1
  114. package/dist/commands/doctor.js +163 -0
  115. package/dist/commands/doctor.js.map +1 -1
  116. package/dist/commands/generate-image.d.ts +5 -0
  117. package/dist/commands/generate-image.d.ts.map +1 -1
  118. package/dist/commands/generate-image.js +225 -4
  119. package/dist/commands/generate-image.js.map +1 -1
  120. package/dist/lib/agent-env.d.ts +86 -0
  121. package/dist/lib/agent-env.d.ts.map +1 -0
  122. package/dist/lib/agent-env.js +126 -0
  123. package/dist/lib/agent-env.js.map +1 -0
  124. package/dist/lib/forge-contracts.d.ts +10 -0
  125. package/dist/lib/forge-contracts.d.ts.map +1 -1
  126. package/dist/lib/forge-contracts.js.map +1 -1
  127. package/dist/lib/forge-rate-limit.d.ts +45 -0
  128. package/dist/lib/forge-rate-limit.d.ts.map +1 -0
  129. package/dist/lib/forge-rate-limit.js +89 -0
  130. package/dist/lib/forge-rate-limit.js.map +1 -0
  131. package/dist/lib/forge.d.ts +28 -0
  132. package/dist/lib/forge.d.ts.map +1 -1
  133. package/dist/lib/forge.js +63 -10
  134. package/dist/lib/forge.js.map +1 -1
  135. package/dist/lib/github.d.ts +13 -1
  136. package/dist/lib/github.d.ts.map +1 -1
  137. package/dist/lib/github.js +58 -15
  138. package/dist/lib/github.js.map +1 -1
  139. package/dist/lib/test-env.d.ts +17 -0
  140. package/dist/lib/test-env.d.ts.map +1 -1
  141. package/dist/lib/test-env.js +20 -0
  142. package/dist/lib/test-env.js.map +1 -1
  143. package/dist/terminal/pty-session.d.ts +122 -4
  144. package/dist/terminal/pty-session.d.ts.map +1 -1
  145. package/dist/terminal/pty-session.js +142 -7
  146. package/dist/terminal/pty-session.js.map +1 -1
  147. package/dist/terminal/session-manager.d.ts +23 -2
  148. package/dist/terminal/session-manager.d.ts.map +1 -1
  149. package/dist/terminal/session-manager.js +115 -36
  150. package/dist/terminal/session-manager.js.map +1 -1
  151. package/dist/terminal/session-screen.d.ts +34 -5
  152. package/dist/terminal/session-screen.d.ts.map +1 -1
  153. package/dist/terminal/session-screen.js +52 -6
  154. package/dist/terminal/session-screen.js.map +1 -1
  155. package/dist/terminal/terminal-replies.d.ts +102 -0
  156. package/dist/terminal/terminal-replies.d.ts.map +1 -0
  157. package/dist/terminal/terminal-replies.js +181 -0
  158. package/dist/terminal/terminal-replies.js.map +1 -0
  159. package/package.json +4 -4
  160. package/scripts/forge/github/pr-list.sh +6 -2
  161. package/scripts/forge/github/pr-search.sh +4 -2
  162. package/scripts/forge/gitlab/issue-search.sh +1 -0
  163. package/scripts/forge/gitlab/pr-search.sh +35 -2
  164. package/scripts/forge/linear/auth-status.sh +1 -0
  165. package/scripts/forge/linear/issue-comment.sh +1 -0
  166. package/scripts/forge/linear/issue-list.sh +1 -0
  167. package/scripts/forge/linear/issue-search.sh +1 -0
  168. package/scripts/forge/linear/issue-view.sh +1 -0
  169. package/scripts/forge/linear/recently-closed.sh +1 -0
  170. package/scripts/forge/linear/user-identity.sh +1 -0
  171. package/skeleton/.claude/skills/generate-image/SKILL.md +19 -2
  172. package/skeleton/.codex/skills/generate-image/SKILL.md +19 -2
  173. package/skeleton/resources/commands/agent-farm.md +27 -2
  174. package/skeleton/roles/consultant.md +32 -0
  175. package/skeleton/templates/AGENTS.md +1 -1
  176. package/skeleton/templates/CLAUDE.md +1 -1
@@ -35,7 +35,7 @@
35
35
  import type Database from 'better-sqlite3';
36
36
  import type { DbMailbox, MailboxGateDetail, MailboxReason } from '../db/types.js';
37
37
  import type { GateProfile, GateVerdict } from './render-gate.js';
38
- import type { PacedSubmitResult } from './message-write.js';
38
+ import { type PacedSubmitResult, type WriteStrategy } from './message-write.js';
39
39
  /**
40
40
  * The structural view of a live PTY session the delivery path needs. `PtySession`
41
41
  * satisfies this (ringBuffer + info getter + the Spec 1313 identity getters +
@@ -72,6 +72,31 @@ export interface DeliverySession {
72
72
  * minute, and writing into a settling composer is what ate the leading bytes in #1521.
73
73
  */
74
74
  readonly lastDataAt: number;
75
+ /**
76
+ * The session's MONOTONE cumulative INPUT-change counter (Issue #1473) — the input-side twin
77
+ * of {@link bytesWritten}, and the half of the gate's change token that a keystroke moves.
78
+ *
79
+ * `bytesWritten` counts OUTPUT, so until this existed a human keystroke landing in the
80
+ * gate→write window moved nothing the gate compared: both samples agreed, the verdict stayed
81
+ * CLEAN, and the message fused into the draft the human had started. Folding this into
82
+ * {@link ringToken} closes that, and — the case that earns it on its own — stops a memoized
83
+ * CLEAN verdict from being reused across a keystroke, which a token of output alone cannot
84
+ * see because PTY input does not advance the ring.
85
+ *
86
+ * REQUIRED, not optional, and test doubles must supply a real number: an optional field would
87
+ * let production compile a port that silently reads "no input ever" while presenting as a
88
+ * working gate.
89
+ */
90
+ readonly inputSeq: number;
91
+ /**
92
+ * Epoch ms of the session's most recent HUMAN input (Issue #1473) — the input-side twin of
93
+ * {@link lastDataAt}, and the only signal that can see input which landed BEFORE the gate
94
+ * sampled anything and has not been echoed yet. No counter comparison can catch that case:
95
+ * both samples agree, correctly, and the classifier reads a genuinely empty composer because
96
+ * the character is still in flight to the TUI. `0` on a session that has never had input,
97
+ * which reads as settled.
98
+ */
99
+ readonly lastInputAt: number;
75
100
  readonly info: {
76
101
  cols: number;
77
102
  rows: number;
@@ -95,10 +120,19 @@ export interface DeliverySession {
95
120
  * {@link deliverAgentMail}'s precheck at the write instant rather than before the lock.
96
121
  */
97
122
  export type WriteAbort =
98
- /** Re-hold the row for this reason and retry on a later clean pass. */
123
+ /**
124
+ * Re-hold the row for this reason and retry on a later clean pass.
125
+ *
126
+ * `detail` carries the gate detail when the in-lock refusal has one to give (Issue #1473's
127
+ * `recent-input`); absent/null keeps the detail-nulling behaviour every other refusal wants.
128
+ * `retryAfterMs` is set when the refusal clears on a known interval of its own — an input
129
+ * settle, or a composer redraw — see {@link DeliveryOutcome.retryAfterMs}.
130
+ */
99
131
  {
100
132
  kind: 'hold';
101
133
  reason: MailboxReason;
134
+ detail?: MailboxGateDetail | null;
135
+ retryAfterMs?: number;
102
136
  }
103
137
  /** The row was dismissed/superseded under us — a terminal state, so it must NOT be re-held. */
104
138
  | {
@@ -137,6 +171,23 @@ export interface DeliveryPorts {
137
171
  * output) classifies not-clean (`no-composer-marker`), exactly as an empty replay always did.
138
172
  */
139
173
  classify(session: DeliverySession, profile: GateProfile): Promise<GateVerdict>;
174
+ /**
175
+ * A fingerprint of the session's composer REGION as rendered right now (Issue #1664) — the
176
+ * signal that replaced whole-screen output quiescence as the "has it stopped being painted?"
177
+ * test. See `composerRegionFingerprint` for what it covers; `null` means no composer region
178
+ * could be located, which every caller here treats as MOVED (fail-toward-hold).
179
+ *
180
+ * SYNCHRONOUS, deliberately. Its second consumer is the in-lock precheck, which runs inside
181
+ * the per-terminal submission lock immediately before the first byte and cannot await. The
182
+ * live binding therefore reads the gate mirror without flushing its parser; the cost is one
183
+ * parse turn of lag, and the caller's stability requirement — the region unchanged across two
184
+ * samples a settle apart — is what carries the safety.
185
+ *
186
+ * REQUIRED, not optional, for the reason {@link DeliverySession.inputSeq} is: an optional
187
+ * port would let production compile a binding that silently answers "the composer never
188
+ * moves" while presenting as a working gate.
189
+ */
190
+ composerFingerprint(session: DeliverySession, profile: GateProfile): string | null;
140
191
  /**
141
192
  * Write a formatted message (text + Enter, unless `noEnter`) to the session as ONE
142
193
  * submission on the session's per-terminal lock, and report what actually happened.
@@ -155,7 +206,13 @@ export interface DeliveryPorts {
155
206
  * submission just changed. All of the reason authority stays here in the delivery
156
207
  * module — the binding only relays the verdict.
157
208
  */
158
- writeMessage(session: DeliverySession, formattedMessage: string, noEnter: boolean, precheck: () => WriteAbort | null): WriteResult | Promise<WriteResult>;
209
+ writeMessage(session: DeliverySession, formattedMessage: string, noEnter: boolean, precheck: () => WriteAbort | null,
210
+ /**
211
+ * Issue #1567: how the frame is put on the wire (bracketed paste + chunking, or the
212
+ * per-line opt-out), resolved from the recipient's gate profile. Optional so unit fakes
213
+ * written before #1567 keep compiling; the live binding forwards it.
214
+ */
215
+ strategy?: WriteStrategy): WriteResult | Promise<WriteResult>;
159
216
  /** Emit the delivered-message broadcast frame. */
160
217
  broadcast(frame: DeliveredBroadcast): void;
161
218
  /**
@@ -313,6 +370,12 @@ export interface UnverifiedDeliveryInfo {
313
370
  mailboxId: string;
314
371
  /** The terminal the bytes were written to, for correlating against its transcript. */
315
372
  terminalId: string;
373
+ /**
374
+ * Why it could not be confirmed (Issue #1473) — the notification text branches on it, since
375
+ * "its header never appeared on that screen" is a false statement about a delivery whose
376
+ * header DID appear and whose tail was eaten by a human keystroke.
377
+ */
378
+ cause: UnverifiedCause;
316
379
  }
317
380
  /**
318
381
  * Metadata for a held row that has crossed the escalation age. Carries NO message body
@@ -333,6 +396,20 @@ export interface EscalationInfo {
333
396
  */
334
397
  detail: MailboxGateDetail | null;
335
398
  }
399
+ /**
400
+ * A hold's diagnostic detail as this module reports it: the render gate's own verdict details,
401
+ * plus two the delivery path decides for itself: `'recent-input'` (Issue #1473), read from the
402
+ * session's input signals rather than from anything on the screen, and `'composer-redraw'`
403
+ * (Issue #1664), read from the composer region's stability across samples — a property no
404
+ * single classify can see.
405
+ *
406
+ * Both stay inert in {@link isUnverifiableVerdict} by construction: that predicate is an
407
+ * allow-list of the two can't-verify details, so a value it does not name can never escalate.
408
+ * They must stay outside it — `'recent-input'` is the same self-clearing "a human is at the
409
+ * line" class as `user-text` and escalating it would false-alarm on every ordinary typist, and
410
+ * `'composer-redraw'` clears one settle after the composer stops moving.
411
+ */
412
+ export type DeliveryDetail = GateVerdict['detail'] | 'recent-input' | 'composer-redraw';
336
413
  /** Outcome of one delivery pass over an agent's held mail. */
337
414
  export interface DeliveryOutcome {
338
415
  /** Row ids delivered this pass — 0 or 1 (one message per clean gate; its Enter makes the line busy). */
@@ -360,8 +437,48 @@ export interface DeliveryOutcome {
360
437
  * which {@link MailboxDrainer.recordStreak} escalates to liveness telemetry. Absent
361
438
  * for non-gate holds (`no-live-pty`/`no-profile`) and deliveries.
362
439
  */
363
- detail?: GateVerdict['detail'];
440
+ detail?: DeliveryDetail;
441
+ /**
442
+ * Why a completed delivery could not be confirmed (Issue #1473). Present only alongside a
443
+ * delivery that was flagged — absent means confirmed, or not verifiable in the first place.
444
+ *
445
+ * - `'input-raced'` — human input landed on the terminal DURING the paced write, so the
446
+ * body may have been truncated (`^U`/`^W`/`^C`) or submitted early (their Enter);
447
+ * - `'no-echo'` — the write completed but the message's header never appeared on screen.
448
+ *
449
+ * `'input-raced'` WINS when both are true: it names the more actionable remedy, and a missing
450
+ * echo is often just the downstream symptom of the race.
451
+ *
452
+ * Deliberately NOT overloaded onto {@link verified}, which would make one field mean two
453
+ * different things — and the input-raced case frequently has `verified: true` (the header did
454
+ * land; it was the tail that was lost), which is exactly why the sender was being told plain
455
+ * "Message delivered" for it.
456
+ */
457
+ unverifiedCause?: UnverifiedCause;
458
+ /**
459
+ * Present when this pass held on a signal that clears by ITSELF after a known interval — the
460
+ * terminal's recent input (Issue #1473: the ms after which {@link inputSettled} would pass) or
461
+ * the composer still being repainted (Issue #1664: the ms after which the current region
462
+ * sample counts as stable). The drainer arms one coalesced, generation-guarded re-drain for
463
+ * it, so the row delivers roughly one settle after the movement stops rather than on the next
464
+ * 1.5 s backstop tick. Which of the two it was is in {@link detail}.
465
+ *
466
+ * It is not a speculative optimisation: the `'submit'` fast trigger fires SYNCHRONOUSLY from
467
+ * `stopComposing`, and the drain it schedules runs in a microtask — so at that pass
468
+ * `lastInputAt` is always `now`, and the submit trigger is now provably always held. Without
469
+ * the re-drain, pressing Enter to clear the line would reliably cost a full backstop period.
470
+ * It also shortens the escalation-blind hold below from "forever" to "one settle".
471
+ */
472
+ retryAfterMs?: number;
364
473
  }
474
+ /**
475
+ * Why a committed delivery is flagged unconfirmed (Issue #1473) — carried to every operator
476
+ * surface, the SENDER included. Before this, `tower-routes` surfaced only `verified` and the
477
+ * CLI warned only on `verified === false`, so the truncation case this exists for — where the
478
+ * header landed and `verified` is `true` — reported an unqualified success to the one human who
479
+ * was standing there.
480
+ */
481
+ export type UnverifiedCause = 'no-echo' | 'input-raced';
365
482
  /**
366
483
  * How long the receiving session's screen must have been QUIET before a gated delivery may
367
484
  * write onto it (Issue #1573).
@@ -393,6 +510,43 @@ export interface EchoWatch {
393
510
  */
394
511
  verify(): Promise<boolean>;
395
512
  }
513
+ /**
514
+ * The longest gap between two observations that can still be treated as ONE continuous run of
515
+ * the composer holding still (Issue #1664).
516
+ *
517
+ * Two equal fingerprints far apart in time prove nothing on their own: between them the
518
+ * composer could have changed and changed back, which is exactly #1521's turn-end redraw. An
519
+ * agent with no held mail is not sampled at all, so without this bound a sample taken minutes
520
+ * ago would authorise an immediate write onto a composer that had just been repainted —
521
+ * observed in the #1664 acceptance harness, where consecutive trials reused a stale sample and
522
+ * delivered on their very first pass.
523
+ *
524
+ * Set above the drainer's 1.5 s backstop so an ordinary chain of passes always counts as
525
+ * continuous, and the delivery of a held row never depends on a faster trigger existing. In
526
+ * practice the gap is far smaller: a `composer-redraw` hold carries a `retryAfterMs`, so the
527
+ * next observation lands about a settle later.
528
+ */
529
+ export declare const MAX_COMPOSER_SAMPLE_GAP_MS = 2000;
530
+ /**
531
+ * How long the receiving session must have been free of HUMAN INPUT before a gated delivery
532
+ * may write onto it (Issue #1473) — the input-side counterpart of {@link SETTLE_BEFORE_WRITE_MS}.
533
+ *
534
+ * The change token catches input that arrives after the gate sampled it. It cannot catch input
535
+ * that arrived just BEFORE the sample and has not been echoed yet: nothing has moved, both
536
+ * samples agree — correctly — and the classifier reads a genuinely empty composer while the
537
+ * character is still travelling to the TUI. Only elapsed time can see that.
538
+ *
539
+ * One notch above the output settle because the round trip it covers is strictly the longer
540
+ * one: an echo has to reach the TUI, be processed, be painted, and come back as output, whereas
541
+ * the output settle only waits for painting to stop.
542
+ *
543
+ * **This BOUNDS the echo-lag window; it does not close it.** Input older than this interval
544
+ * whose echo is still delayed, and input in flight from the browser at sample time, both
545
+ * survive by construction. A larger constant buys coverage at the price of latency on every
546
+ * delivery, which is why the next tightening (if measurement wants one) is a BOUNDED
547
+ * `lastInputAt > lastDataAt` hold rather than a bigger number here.
548
+ */
549
+ export declare const INPUT_SETTLE_BEFORE_WRITE_MS = 300;
396
550
  /**
397
551
  * Reduce text to its alphanumeric skeleton for echo matching (Issue #1573).
398
552
  *
@@ -409,6 +563,17 @@ export interface EchoWatch {
409
563
  * arrived intact, only that the head of the message reached the screen.
410
564
  */
411
565
  export declare function normalizeForEcho(text: string): string;
566
+ /**
567
+ * The paste placards a TUI renders in place of a long bracketed paste (Issue #1567), in
568
+ * {@link normalizeForEcho} form: claude shows `[Pasted text #N +M lines]`, codex
569
+ * `[Pasted Content N chars]` (both measured, `codev/evidence/1567-head-loss/`). A long frame
570
+ * now travels as a bracketed paste, so until it is submitted the composer shows one of these
571
+ * instead of the header — and a `--no-enter` send never submits. The echo watch therefore
572
+ * counts these alongside the header needle; a NEW occurrence of either is evidence the write
573
+ * landed. Counted, not merely matched, for the same reason as the header: a previous paste's
574
+ * placard may already be on screen.
575
+ */
576
+ export declare const PASTE_PLACARD_NEEDLES: readonly string[];
412
577
  /**
413
578
  * The needle {@link DeliveryPorts.watchEcho} opens on: the formatted message's FIRST line,
414
579
  * normalized. Returns `''` when it is too short to be distinctive (see
@@ -493,6 +658,8 @@ export declare class MailboxDrainer {
493
658
  private readonly notifiedAgents;
494
659
  private readonly scheduledDrains;
495
660
  private readonly verdictMemo;
661
+ private readonly inputRetryTimers;
662
+ private readonly consecutiveInputHolds;
496
663
  private generation;
497
664
  constructor(opts?: {
498
665
  intervalMs?: number;
@@ -504,6 +671,48 @@ export declare class MailboxDrainer {
504
671
  stop(): void;
505
672
  /** Per-agent consecutive not-clean count (liveness telemetry; Phase 7 reads this). */
506
673
  get streaks(): ReadonlyMap<string, number>;
674
+ /** Agents with a pending input re-drain timer (Issue #1473; test/observability). */
675
+ get pendingInputRetries(): ReadonlyArray<string>;
676
+ /** Per-agent consecutive input-hold count (Issue #1473; test/observability). */
677
+ get inputHoldStreaks(): ReadonlyMap<string, number>;
678
+ /**
679
+ * Arm the input re-drain for a pass this drainer did not itself run (Issue #1473).
680
+ *
681
+ * The `afx send` REQUEST path calls `deliverAgentMailSerialized` directly rather than going
682
+ * through the drainer, so its outcome — `retryAfterMs` included — never reached
683
+ * {@link armInputRetry}. The visible consequence was that a send arriving while the terminal
684
+ * had just been typed at fell through to the quiescence trigger or the backstop, which is
685
+ * precisely the latency the re-drain exists to remove, in the one case an operator is sitting
686
+ * there watching. Measured, not theorised: the dev-approval evidence run timed that pass at
687
+ * the quiescence debounce rather than one settle.
688
+ *
689
+ * A no-op before the drainer is started, and idempotent per agent — the timer coalesces, so a
690
+ * request-path arm and a backstop arm for the same agent cannot stack.
691
+ */
692
+ noteOutcome(workspacePath: string, toAgent: string, outcome: DeliveryOutcome): void;
693
+ /**
694
+ * Arm the one-shot input re-drain and track the consecutive-input-hold diagnostic
695
+ * (Issue #1473). Called from both pass sites, exactly where {@link recordStreak} is, so the
696
+ * backstop tick and the fast trigger behave identically.
697
+ *
698
+ * The retry exists because the `'submit'` fast trigger is now provably ALWAYS held: it fires
699
+ * synchronously from `stopComposing`, and the drain it schedules runs in a microtask, so at
700
+ * that pass the input timestamp is `now` by construction. Without a retry, the single most
701
+ * common "the line just cleared, deliver now" path would silently degrade to the 1.5 s
702
+ * backstop — as would any navigation key that provokes no output of its own.
703
+ *
704
+ * COALESCED: while a timer is pending for an agent, later input holds do not stack another.
705
+ * GENERATION-GUARDED like {@link scheduleDrain}, so a timer that survives a stop()/start()
706
+ * bails instead of driving the new generation's state.
707
+ */
708
+ private armInputRetry;
709
+ /**
710
+ * The one-shot re-drain timer shared by both self-clearing holds (Issue #1473's input settle
711
+ * and Issue #1664's composer redraw). COALESCED — while a timer is pending for an agent, a
712
+ * later hold does not stack another — and GENERATION-GUARDED, so a timer that survives a
713
+ * stop()/start() bails instead of driving the new generation's state.
714
+ */
715
+ private armRetryTimer;
507
716
  /**
508
717
  * Agent keys that currently hold a cached gate verdict (render-gate memo).
509
718
  * Observability/test only: {@link tick} prunes this to the current held-agent set, so
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-delivery.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/mailbox-delivery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailbox-delivery.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/mailbox-delivery.ts"],"names":[],"mappings":"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"}