@vibe-commit/capture 0.2.3 → 0.4.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 (58) hide show
  1. package/README.md +33 -2
  2. package/dist/agent_hooks.d.ts +53 -8
  3. package/dist/agent_hooks.js +180 -19
  4. package/dist/agent_hooks.js.map +1 -1
  5. package/dist/agent_install.d.ts +0 -17
  6. package/dist/agent_install.js +1 -24
  7. package/dist/agent_install.js.map +1 -1
  8. package/dist/agents/cursor.js +54 -18
  9. package/dist/agents/cursor.js.map +1 -1
  10. package/dist/commands/auth.d.ts +24 -9
  11. package/dist/commands/auth.js +38 -10
  12. package/dist/commands/auth.js.map +1 -1
  13. package/dist/commands/browser_credential.d.ts +89 -0
  14. package/dist/commands/browser_credential.js +181 -0
  15. package/dist/commands/browser_credential.js.map +1 -0
  16. package/dist/commands/connect.d.ts +26 -9
  17. package/dist/commands/connect.js +52 -90
  18. package/dist/commands/connect.js.map +1 -1
  19. package/dist/commands/finalize.d.ts +35 -0
  20. package/dist/commands/finalize.js +283 -0
  21. package/dist/commands/finalize.js.map +1 -0
  22. package/dist/commands/status.js +56 -2
  23. package/dist/commands/status.js.map +1 -1
  24. package/dist/copy/index.d.ts +1 -1
  25. package/dist/copy/index.js +1 -1
  26. package/dist/copy/index.js.map +1 -1
  27. package/dist/copy/strings.d.ts +81 -2
  28. package/dist/copy/strings.js +94 -1
  29. package/dist/copy/strings.js.map +1 -1
  30. package/dist/exit.d.ts +7 -0
  31. package/dist/exit.js +7 -0
  32. package/dist/exit.js.map +1 -1
  33. package/dist/hooks/entry.d.ts +83 -0
  34. package/dist/hooks/entry.js +117 -28
  35. package/dist/hooks/entry.js.map +1 -1
  36. package/dist/hooks/post_rewrite.js +20 -3
  37. package/dist/hooks/post_rewrite.js.map +1 -1
  38. package/dist/index.d.ts +1 -1
  39. package/dist/index.js +14 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/oauth/mint.d.ts +97 -0
  42. package/dist/oauth/mint.js +120 -0
  43. package/dist/oauth/mint.js.map +1 -0
  44. package/dist/oauth/signin.d.ts +25 -0
  45. package/dist/oauth/signin.js +30 -0
  46. package/dist/oauth/signin.js.map +1 -1
  47. package/dist/post.d.ts +53 -0
  48. package/dist/post.js +73 -5
  49. package/dist/post.js.map +1 -1
  50. package/dist/spool.d.ts +37 -0
  51. package/dist/spool.js +244 -36
  52. package/dist/spool.js.map +1 -1
  53. package/dist/state.d.ts +152 -0
  54. package/dist/state.js +255 -2
  55. package/dist/state.js.map +1 -1
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/package.json +1 -1
package/dist/spool.js CHANGED
@@ -40,7 +40,7 @@
40
40
  * the sha; the observation is not. `files` is carried for wave 2 and never put
41
41
  * in a header.
42
42
  */
43
- import { appendFileSync, chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs";
43
+ import { appendFileSync, chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
44
44
  import { dirname, join } from "node:path";
45
45
  import { repoSessionsDir, sessionStatePath } from "./paths.js";
46
46
  /**
@@ -169,6 +169,43 @@ export function dropSpooled(home, key, count) {
169
169
  return false;
170
170
  }
171
171
  }
172
+ /**
173
+ * Settle the first `count` lines against the server's `X-Commits-Retry`
174
+ * (`CR-222`, D209 §4): KEEP a line only if it went on the wire and the server
175
+ * named its sha; drop every other consumed line. Kept lines stay at the head, in
176
+ * order, so they ride the next delta first. Returns false on any failure.
177
+ *
178
+ * ⛔ **NOT `dropSpooled` WITH A SMALLER N.** `dropSpooled` removes a PREFIX, and
179
+ * the lines to keep need not be one: a batch can bind its first sha and not its
180
+ * second. Truncating by any count would either delete the unbound sha or keep a
181
+ * BOUND one — and a bound sha resent into a sealed turn is a second, permanent
182
+ * edge (`cr071:157`). Only the per-line decision is right.
183
+ *
184
+ * ⚠ THE SAME LINE ARITHMETIC AS `dropSpooled`, deliberately: it works on raw
185
+ * non-empty lines, because `count` was computed from them via `capSpool`. A line
186
+ * that does not parse, or carries a rung that never goes on the wire, is dropped
187
+ * exactly as `dropSpooled` would drop it — the server cannot have named it.
188
+ *
189
+ * ⚠ The residual race `dropSpooled` documents applies here unchanged.
190
+ */
191
+ export function settleSpooled(home, key, count, keep) {
192
+ const path = spoolPath(home, key);
193
+ if (path === null || count <= 0)
194
+ return false;
195
+ try {
196
+ const lines = readFileSync(path, "utf8").split("\n").filter((l) => l.trim() !== "");
197
+ const kept = lines.slice(0, count).filter((line) => {
198
+ const entry = parseEntry(line);
199
+ return entry !== null && WIRE_RUNGS.includes(entry.attribution) && keep.has(entry.sha);
200
+ });
201
+ writeFileSync(path, [...kept, ...lines.slice(count)].map((l) => `${l}\n`).join(""), { mode: 0o600 });
202
+ chmodSync(path, 0o600);
203
+ return true;
204
+ }
205
+ catch {
206
+ return false;
207
+ }
208
+ }
172
209
  /**
173
210
  * Which session, if any, is live for this repo right now — ⛔ **AND HOW WE KNOW.**
174
211
  *
@@ -247,10 +284,10 @@ export function activeSessionFor(home, repoKey, envSessionId, nowMs = Date.now()
247
284
  }
248
285
  // ⛔ **THE COLD CASE — `CR-195`/D208, and it used to DROP THE COMMIT SILENTLY.**
249
286
  //
250
- // No state file is live for this repo. Until D208 that returned `null` and the
251
- // observation was gone: MEASURED in a real session as commit `f1608bc`, spooled
252
- // nowhere. And it is not an edge case — `Stop` fires at the END of a turn, so
253
- // **every commit made during a session's first turn lands here**, which is
287
+ // The environment names a session and NO state file exists for it. Until D208 that
288
+ // returned `null` and the observation was gone: MEASURED in a real session as commit
289
+ // `f1608bc`, spooled nowhere. And it is not an edge case — `Stop` fires at the END of a
290
+ // turn, so **every commit made during a session's first turn lands here**, which is
254
291
  // exactly what a tester does before asking `blame_commit`.
255
292
  //
256
293
  // ⚠ **Rung 1 cannot cover it, structurally.** That rung requires
@@ -260,33 +297,54 @@ export function activeSessionFor(home, repoKey, envSessionId, nowMs = Date.now()
260
297
  // So when the committing process DID name itself, record the observation at a
261
298
  // rung that says exactly that and cannot mint an edge. When it did not, there
262
299
  // is genuinely nothing to record and the silence stands.
263
- if (live.length === 0) {
264
- // ⛔ **ONLY FOR A SESSION THAT HAS NO STATE FILE AT ALL, NEVER A STALE ONE.**
265
- // `activeSessionFor(…, SESSION, +9h)` must stay `null`, and the reason is
266
- // pinned by a cell: *"an id naming a session that went quiet nine hours ago
267
- // is still nothing — otherwise a shell that exported the value once would
268
- // keep a session alive for as long as the terminal lived."* That hazard is
269
- // real and this rung would have re-opened it, because state files are never
270
- // deleted: a lingering variable would file every future commit under one
271
- // ancient session, and promotion would then mint permanent edges for it.
272
- //
273
- // ⚠ The distinction is exactly the case this rung is for: a session on its
274
- // FIRST turn has written nothing yet, while a dead one left a file behind.
275
- // ⚠ Absence of the file is the line between too EARLY and too LATE. (Worded
276
- // to avoid `from` followed by a quoted string: `provenance.test.ts` walls
277
- // RAW TEXT and reads that shape as an escaping import specifier. Third time
278
- // this guard has fired on ordinary prose in this package; the house response
279
- // is to move the wording and leave the guard alone.)
300
+ //
301
+ // ⭐ **`TODOS[172]` — AND IT IS INDEPENDENT OF WHO ELSE IS LIVE.** This rung was guarded by
302
+ // `live.length === 0`, so a second session started within the 30-minute window of a first
303
+ // reached the NAMED REFUSAL below instead, which files the commit under `live[0]` (another
304
+ // session's bucket) as `env_session_unmatched` — a rung that can never mint an edge. Two
305
+ // terminals, or a quick second `claude -p`, lost every first-turn commit of the second one,
306
+ // forever. The refusal's premise — *we were TOLD who committed, and it is none of these* —
307
+ // is false for a session that has merely not written its state file YET.
308
+ //
309
+ // ⛔ **ONLY FOR A SESSION THAT HAS NO STATE FILE AT ALL, NEVER A STALE ONE.**
310
+ // `activeSessionFor(…, SESSION, +9h)` must stay `null`, and the reason is
311
+ // pinned by a cell: *"an id naming a session that went quiet nine hours ago
312
+ // is still nothing — otherwise a shell that exported the value once would
313
+ // keep a session alive for as long as the terminal lived."* That hazard is
314
+ // real and this rung would have re-opened it, because state files are never
315
+ // deleted: a lingering variable would file every future commit under one
316
+ // ancient session, and promotion would then mint permanent edges for it.
317
+ //
318
+ // ⚠ The distinction is exactly the case this rung is for: a session on its
319
+ // FIRST turn has written nothing yet, while a dead one left a file behind.
320
+ // ⚠ Absence of the file is the line between too EARLY and too LATE. (Worded
321
+ // to avoid `from` followed by a quoted string: `provenance.test.ts` walls
322
+ // RAW TEXT and reads that shape as an escaping import specifier. Third time
323
+ // this guard has fired on ordinary prose in this package; the house response
324
+ // is to move the wording and leave the guard alone.)
325
+ //
326
+ // ⚠ WHAT THIS COSTS, stated rather than discovered: an environment naming a session this
327
+ // clone has NEVER captured now opens a `.pending.jsonl` bucket even when others are live
328
+ // (Codex under an outer Claude session is the case `agents/registry.ts:11-13` describes).
329
+ // That is the same exposure the all-quiet case already accepted. The line is `pending`, not
330
+ // sendable: it promotes only if THAT session's own hook later corroborates it, and otherwise
331
+ // ages out under `MAX_PENDING_SHAS`.
332
+ const envHasNoStateFile = (() => {
280
333
  if (envSessionId === null)
281
- return null;
334
+ return false;
282
335
  const state = sessionStatePath(home, { repoKey, sessionId: envSessionId });
283
- if (state === null || existsSync(state))
284
- return null;
336
+ return state !== null && !existsSync(state);
337
+ })();
338
+ if (envSessionId !== null && envHasNoStateFile) {
285
339
  return { sessionId: envSessionId, attribution: "env_session_uncorroborated" };
286
340
  }
341
+ if (live.length === 0)
342
+ return null;
287
343
  // ⛔ THE NAMED REFUSAL, AND IT COMES BEFORE BOTH WRITE RUNGS. We were TOLD who
288
- // committed, and it is none of these. Falling through would attribute the
289
- // commit to a session we have positive evidence did not make it.
344
+ // committed, and it is none of these — and now only when there is POSITIVE
345
+ // evidence against the named session: its state file exists, so it is not on its
346
+ // first turn, and it is not live. Falling through would attribute the commit to a
347
+ // session we have positive evidence did not make it.
290
348
  if (envSessionId !== null) {
291
349
  return { sessionId: live[0].sessionId, attribution: "env_session_unmatched" };
292
350
  }
@@ -300,7 +358,22 @@ export function activeSessionFor(home, repoKey, envSessionId, nowMs = Date.now()
300
358
  // requires exactly that, and a cardinality-one row is refused 23514.
301
359
  return { sessionId: live[0].sessionId, attribution: "recency_heuristic" };
302
360
  }
303
- /** Every session state file touched inside the window, most recent first. */
361
+ /**
362
+ * `SessionState.liveAt` of one state file, or null when it is absent, unreadable or not a positive number.
363
+ *
364
+ * ⚠ Read straight from the JSON rather than through `state.ts`: that module imports this one's `commitLinesFor`, and the
365
+ * field is one number. `state.ts` owns the schema and its docblock; this is the single reader of it outside that module.
366
+ */
367
+ function readLiveAt(path) {
368
+ try {
369
+ const v = JSON.parse(readFileSync(path, "utf8")).liveAt;
370
+ return typeof v === "number" && Number.isFinite(v) && v > 0 ? v : null;
371
+ }
372
+ catch {
373
+ return null;
374
+ }
375
+ }
376
+ /** Every session whose hook last ran inside the window, most recent first. */
304
377
  function liveSessions(home, repoKey, nowMs, windowMs) {
305
378
  const dir = repoSessionsDir(home, repoKey);
306
379
  if (dir === null)
@@ -320,14 +393,12 @@ function liveSessions(home, repoKey, nowMs, windowMs) {
320
393
  // load-bearing spelling `spoolPath` documents.
321
394
  if (!entry.endsWith(".json"))
322
395
  continue;
323
- let touchedAt;
324
- try {
325
- touchedAt = statSync(join(dir, entry)).mtimeMs;
326
- }
327
- catch {
328
- continue;
329
- }
330
- if (nowMs - touchedAt > windowMs)
396
+ // ⛔ THE CONTENT CLOCK, NEVER THE FILE'S MTIME (VG review 2, D2). `SessionState.liveAt` is written only by a hook;
397
+ // a `vibecommit finalize` of a long-dead session rewrites the file and moved the mtime, which made that session
398
+ // "live" and let a plain-terminal commit be filed under it at an edge-minting rung. A file with no `liveAt`
399
+ // (written by 0.3.0) is NOT live — see the field's docblock for the stated cost.
400
+ const touchedAt = readLiveAt(join(dir, entry));
401
+ if (touchedAt === null || nowMs - touchedAt > windowMs)
331
402
  continue;
332
403
  live.push({ sessionId: entry.slice(0, -".json".length), at: touchedAt });
333
404
  }
@@ -506,6 +577,143 @@ export function capSuccessors(pairs) {
506
577
  const taken = pairs.slice(0, MAX_SPOOLED_PAIRS);
507
578
  return { pairs: taken.map(wirePair), count: taken.length };
508
579
  }
580
+ // ---------------------------------------------------------------------------
581
+ // ⭐ TODOS[169] — the DANGLING INTERMEDIATE of an interactive-rebase squash.
582
+ //
583
+ // A 3 → 1 `rebase -i` squash fires `post-commit` for an intermediate `I1` (git builds it as
584
+ // "# This is a combination of 2 commits" and then amends it), so `I1` gets a `capture_commits`
585
+ // row. It fires `post-rewrite` as `amend` twice — `A→I1`, `I1→F` — which this package
586
+ // SUPPRESSED (see `hooks/post_rewrite.ts`), and then as `rebase` once, carrying only
587
+ // original→final. So `I1` has a capture row and NO successor row, and `blame_commit` on it
588
+ // answers `turns` + `superseded_by: []` — "untouched" — about a commit that was never on any
589
+ // branch. MEASURED on a real stack, capture 0.3.0 (`8e64faa9`).
590
+ //
591
+ // The cure uses git's OWN mapping, so every row stays `exact`: remember the suppressed `amend`
592
+ // pairs in a per-repo scratch file, and at the final `rebase` fire collapse each chain to
593
+ // `I → F` — for the shas `post-commit` OBSERVED and no others, because an intermediate nobody
594
+ // observed has no capture row to explain and naming it would only add noise. The scratch lives
595
+ // beside the spools (never ending in `.json`: `liveSessions` and `lastSendForRepo` would read it
596
+ // as session state) and is consumed by the final fire.
597
+ // ---------------------------------------------------------------------------
598
+ /** `<sessions dir>/rebase-amends.jsonl` — per REPO, because a rebase has no session of its own. */
599
+ export function rebaseAmendsPath(home, repoKey) {
600
+ const dir = repoSessionsDir(home, repoKey);
601
+ return dir === null ? null : join(dir, "rebase-amends.jsonl");
602
+ }
603
+ /** A leftover older than this is an aborted rebase's, not this one's. */
604
+ const REBASE_AMENDS_MAX_AGE_MS = 6 * 60 * 60 * 1000;
605
+ /** Bound on the scratch: a rebase of hundreds of squashes must not grow a file forever. */
606
+ const REBASE_AMENDS_MAX_LINES = 256;
607
+ /** Remember `amend` pairs seen DURING a rebase. Never throws: this runs inside the user's `git rebase`. */
608
+ export function recordRebaseAmends(home, repoKey, pairs, nowMs = Date.now()) {
609
+ const path = rebaseAmendsPath(home, repoKey);
610
+ if (path === null || pairs.length === 0)
611
+ return;
612
+ try {
613
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
614
+ let kept = [];
615
+ try {
616
+ kept = readFileSync(path, "utf8").split("\n").filter((l) => l.trim() !== "");
617
+ }
618
+ catch {
619
+ /* no scratch yet */
620
+ }
621
+ for (const pair of pairs)
622
+ kept.push(JSON.stringify({ ancestor: pair.ancestor, successor: pair.successor, at: nowMs }));
623
+ writeFileSync(path, kept.slice(-REBASE_AMENDS_MAX_LINES).map((l) => `${l}\n`).join(""), { mode: 0o600 });
624
+ chmodSync(path, 0o600);
625
+ }
626
+ catch {
627
+ /* the scratch is an optimisation of the record, never a reason to disturb a rebase */
628
+ }
629
+ }
630
+ /** Read the scratch and DELETE it. Entries older than six hours are an aborted rebase's and are ignored. */
631
+ export function takeRebaseAmends(home, repoKey, nowMs = Date.now()) {
632
+ const path = rebaseAmendsPath(home, repoKey);
633
+ if (path === null)
634
+ return [];
635
+ let raw;
636
+ try {
637
+ raw = readFileSync(path, "utf8");
638
+ }
639
+ catch {
640
+ return [];
641
+ }
642
+ try {
643
+ rmSync(path, { force: true });
644
+ }
645
+ catch {
646
+ /* an undeletable scratch is re-read next time; the terminal-in-finals rule still guards it */
647
+ }
648
+ const out = [];
649
+ for (const line of raw.split("\n")) {
650
+ if (line.trim() === "")
651
+ continue;
652
+ try {
653
+ const o = JSON.parse(line);
654
+ if (typeof o.ancestor !== "string" || typeof o.successor !== "string")
655
+ continue;
656
+ if (!isFullSha(o.ancestor) || !isFullSha(o.successor))
657
+ continue;
658
+ if (typeof o.at === "number" && nowMs - o.at > REBASE_AMENDS_MAX_AGE_MS)
659
+ continue;
660
+ out.push({ ancestor: o.ancestor, successor: o.successor });
661
+ }
662
+ catch {
663
+ /* a torn line costs that line only */
664
+ }
665
+ }
666
+ return out;
667
+ }
668
+ /**
669
+ * Collapse the suppressed `amend` chains into `intermediate → final` pairs.
670
+ *
671
+ * Follow each `amend` pair to its chain's TERMINAL. Emit `x → terminal` only when:
672
+ * - the terminal is a SUCCESSOR in this rebase's own pairs (so a chain left by an ABORTED rebase
673
+ * cannot attach to an unrelated one — its terminal is not a final here);
674
+ * - `x` was OBSERVED by `post-commit` (it has, or is about to have, a capture row to explain);
675
+ * - `x` is not already an ancestor in the rebase's own pairs and is not the terminal itself.
676
+ * Pure, cycle-safe, and total: it returns `[]` rather than ever throwing.
677
+ */
678
+ export function collapseObservedIntermediates(amends, finals, observedShas) {
679
+ const next = new Map();
680
+ for (const a of amends)
681
+ next.set(a.ancestor, a.successor);
682
+ const finalSuccessors = new Set(finals.map((p) => p.successor));
683
+ const finalAncestors = new Set(finals.map((p) => p.ancestor));
684
+ const out = [];
685
+ const emitted = new Set();
686
+ for (const start of next.keys()) {
687
+ let node = start;
688
+ const seen = new Set([node]);
689
+ let cyclic = false;
690
+ for (;;) {
691
+ const to = next.get(node);
692
+ if (to === undefined)
693
+ break;
694
+ if (seen.has(to)) {
695
+ cyclic = true;
696
+ break;
697
+ }
698
+ seen.add(to);
699
+ node = to;
700
+ }
701
+ if (cyclic)
702
+ continue;
703
+ const terminal = node;
704
+ if (!finalSuccessors.has(terminal))
705
+ continue;
706
+ // Every node on the chain except the terminal is a candidate; the chain is walked again from `start` only.
707
+ if (start === terminal || finalAncestors.has(start) || !observedShas.has(start))
708
+ continue;
709
+ const key = `${start}:${terminal}`;
710
+ if (emitted.has(key))
711
+ continue;
712
+ emitted.add(key);
713
+ out.push({ ancestor: start, successor: terminal });
714
+ }
715
+ return out;
716
+ }
509
717
  /** The wire spelling of one pair. Also the dedup key. */
510
718
  function wirePair(pair) {
511
719
  return `${pair.ancestor}:${pair.successor}`;
package/dist/spool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"spool.js","sourceRoot":"","sources":["../src/spool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spool.js","sourceRoot":"","sources":["../src/spool.ts"],"names":[],"mappings":"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"}
package/dist/state.d.ts CHANGED
@@ -68,6 +68,89 @@ export interface SessionState {
68
68
  * comment fix and not a migration.
69
69
  */
70
70
  readonly files: Readonly<Record<string, FileState>>;
71
+ /**
72
+ * What the most recent `SessionEnd` HELD instead of writing off — `CR-228`,
73
+ * `TODOS[142]`. Null when it held nothing, or when no `SessionEnd` has run.
74
+ *
75
+ * ⛔ **THE RECORD THAT MAKES A HOLD NOT SILENT.** Before `CR-228` a held span
76
+ * at `SessionEnd` was stamped as a gap, which at least counted it. Holding
77
+ * leaves `FileState` exactly as the failure policy left it — so without this
78
+ * field a hold would be indistinguishable from a hook the watchdog cut off
79
+ * before it decided anything, and `status` would have no way to say that a
80
+ * session ENDED owing bytes, as opposed to owing them until the next turn.
81
+ */
82
+ readonly endHold: EndHold | null;
83
+ /**
84
+ * ⭐ `TODOS[145]` — what the server said about the most recent MAIN-transcript delivery that
85
+ * it accepted. Null until one has been delivered, and in every file written before this field.
86
+ *
87
+ * ⛔ **THE CLIENT USED TO DISCARD THE ONE FIELD THAT SAYS WHETHER ANYTHING CAME OF A DELIVERY.**
88
+ * The ingest response carries `X-Capture-Id`: non-empty when the delta sealed a capture, EMPTY
89
+ * when it sealed no turn. A 200 therefore means the bytes arrived, never that a commit can bind,
90
+ * and `status` printed "ok" over repos where nothing could. Sub-agent deliveries are deliberately
91
+ * NOT recorded here: they seal nothing by construction, and would overwrite the main stream's
92
+ * answer with a permanent "sealed nothing".
93
+ */
94
+ readonly lastReceipt: Receipt | null;
95
+ /**
96
+ * ⭐ `TODOS[146]` — when the session last ENDED (`SessionEnd` ran), cleared by the next delivery.
97
+ * Lets `status` separate a turn that is open because the session is still live from one that is open
98
+ * because the session is over and nothing will ever close it.
99
+ */
100
+ readonly endedAt: number | null;
101
+ /** ⭐ `TODOS[146]` — the server acknowledged a caller-driven `vibecommit finalize`. */
102
+ readonly finalized: Finalized | null;
103
+ /**
104
+ * ⛔ **WHEN A HOOK LAST SAW THIS SESSION ALIVE — and the ONLY clock the attribution ladder reads (VG review 2, D2).**
105
+ * Liveness used to be this file's mtime. Any writer that is not a hook moved it: `vibecommit finalize` of a
106
+ * session that had been dead for nine hours rewrote the file, the file read as touched a second ago, and a
107
+ * plain-terminal commit with no session environment was filed under the dead session at `sole_live_session`,
108
+ * which is an edge-minting rung. The mtime is a fact about the FILE; liveness is a fact about the SESSION, and
109
+ * only a hook's own write is evidence of it.
110
+ *
111
+ * Written by hook-side saves only (`deliver()` when `byHook`, the `SessionEnd` writes). Every other writer
112
+ * spreads the loaded state and so CARRIES it, unchanged — which is why a future non-hook writer cannot
113
+ * reintroduce the defect by forgetting something: forgetting is the safe direction.
114
+ *
115
+ * ⚠ **NULL IS "NOT LIVE", INCLUDING FOR A FILE WRITTEN BEFORE THIS FIELD EXISTED (0.3.0).** Falling back to
116
+ * the mtime there would keep D2 alive for exactly the sessions a user finalizes right after upgrading. The
117
+ * cost is stated, not hidden: a session whose last hook ran under 0.3.0 reads as not live until its next hook
118
+ * fire stamps it, and a commit made in between files at a rung that cannot mint an edge instead of
119
+ * `env_session_id` / `sole_live_session`.
120
+ */
121
+ readonly liveAt: number | null;
122
+ }
123
+ /** What `X-Capture-Id` said: `true` a capture was sealed, `false` the delta sealed nothing, `null` the header was absent (an older server). */
124
+ export interface Receipt {
125
+ readonly at: number;
126
+ readonly sealed: boolean | null;
127
+ /**
128
+ * True once ANY main-stream delivery of this session sealed a capture. Distinguishes a one-shot
129
+ * session (never sealed, so nothing of it is recorded) from a long one whose final turn is open
130
+ * like every session's: only the first is a loss `status` should raise on its own.
131
+ */
132
+ readonly everSealed: boolean;
133
+ }
134
+ /** The server's `X-Session-Final` acknowledgement of a finalize, and when. */
135
+ export interface Finalized {
136
+ readonly at: number;
137
+ readonly ack: "sealed" | "already";
138
+ }
139
+ /**
140
+ * The streams one `SessionEnd` committed to and did not deliver.
141
+ *
142
+ * ⚠ **AN EOF, NOT AN AMOUNT, AND THAT IS WHAT LETS IT HEAL.** What is still
143
+ * owed is `eof - sentOffset`, derived when read. If the session's hooks fire
144
+ * again and deliver, the offsets move and the owed amount falls to zero with no
145
+ * second write to this record; if the backlog's own caps later shed a span,
146
+ * that becomes a gap and is counted once, there. Recording a byte count here
147
+ * instead would go stale on the first successful send.
148
+ */
149
+ export interface EndHold {
150
+ /** Epoch ms of the `SessionEnd` that held. */
151
+ readonly at: number;
152
+ /** Per `FileKey`: the EOF that invocation measured and could not deliver. */
153
+ readonly eof: Readonly<Record<string, number>>;
71
154
  }
72
155
  export declare const EMPTY_SESSION_STATE: SessionState;
73
156
  export declare function loadSessionState(home: string, key: SessionKey): SessionState;
@@ -96,6 +179,75 @@ export interface LastSend {
96
179
  * recorded yet" rather than as a date.
97
180
  */
98
181
  export declare function lastSendForRepo(home: string, repoKey: string): LastSend | null;
182
+ /** What this repo's sessions advanced past WITHOUT delivering — `CR-228`. */
183
+ export interface WrittenOff {
184
+ /** Σ `gapBytes` across every stream of every session for the repo. */
185
+ readonly bytes: number;
186
+ /** Σ `gapCount` — one per hole, so a session can contribute several. */
187
+ readonly gaps: number;
188
+ /** Sessions with at least one hole. */
189
+ readonly sessions: number;
190
+ }
191
+ /**
192
+ * Every byte this repo's sessions WROTE OFF, across every session and file —
193
+ * `CR-228`, `TODOS[142]`.
194
+ *
195
+ * ⛔ **THE COUNTERS EXISTED; NOTHING READ THEM.** `markSkipped` and `enforceCaps`
196
+ * have always added to `gapBytes`/`gapCount`, and until this function no
197
+ * consumer anywhere did — so `status` printed "ok Capture is on" over a session
198
+ * whose 323,147 bytes were gone (`CR-227` Gate A). A written-off byte is never
199
+ * re-offered (`sentOffset` is already past it), so this is the only place the
200
+ * loss can ever be seen from this machine.
201
+ *
202
+ * ⛔ **NO `lastSentAt` FILTER, AND THAT IS THE POINT.** `lastSendForRepo` above
203
+ * skips every stream that never delivered, and `markSkipped` deliberately
204
+ * CARRIES `lastSentAt` — so a session that sent nothing and lost everything has
205
+ * `lastSentAt === 0` and `gapCount > 0`. That is the measured failure's own
206
+ * shape. A counter added inside that loop would read zero on exactly the case
207
+ * that motivated it (VD, reviewing this task).
208
+ *
209
+ * A scan for the same reason `lastSendForRepo` is one: `status` has no
210
+ * `session_id`, and a second index would be a second truth to go stale.
211
+ */
212
+ export declare function writtenOffForRepo(home: string, repoKey: string): WrittenOff;
213
+ /** What this repo's ended sessions still OWE — `CR-228`. */
214
+ export interface HeldAtEnd {
215
+ /** Σ over held streams of `eof - sentOffset`, floored at zero. */
216
+ readonly bytes: number;
217
+ /** Sessions still owing at least one byte. */
218
+ readonly sessions: number;
219
+ }
220
+ /**
221
+ * Bytes a `SessionEnd` HELD that have not since been delivered — `CR-228`.
222
+ *
223
+ * The other half of `writtenOffForRepo`, and the reason the hold is not the
224
+ * same defect with a longer fuse: a session that ended owing bytes is reported
225
+ * as owing them for as long as it does. ⚠ A resumed session drains its hold on
226
+ * its next successful send (measured — see `stampGaps`), and one never resumed
227
+ * never does; this machine cannot know which a given session will be. So this
228
+ * counts what is owed and claims nothing about recovery.
229
+ */
230
+ export declare function heldAtEndForRepo(home: string, repoKey: string): HeldAtEnd;
231
+ /** A session that ENDED with its last turn open — `TODOS[145]`/`[146]`. */
232
+ export interface OpenTail {
233
+ /** Session ids (the state-file stem), most recently ended first. */
234
+ readonly ids: readonly string[];
235
+ }
236
+ /**
237
+ * Sessions of this repo that ended with the last turn still open AND a loss to name — `TODOS[145]`.
238
+ *
239
+ * ⛔ **THE SERVER SEALS A TURN ONLY WHEN A FOLLOWING PROMPT ARRIVES**, so EVERY session ends with its last
240
+ * turn open; raising that on every session would be noise and would teach the user to ignore the line.
241
+ * The loss is real in two cases, and only those are named: the session NEVER sealed anything (a one-shot
242
+ * run — none of it is recorded), or it ended with commits still waiting for a turn to close. A session
243
+ * the caller already finalized, or whose newest delivery sealed something, is not listed. A header the
244
+ * server did not send (`sealed: null`, an older server) is unknown, and unknown is not reported.
245
+ */
246
+ export declare function openTailForRepo(home: string, repoKey: string): OpenTail;
247
+ /** Commit lines this repo is holding because no turn has closed over them yet. */
248
+ export declare function commitsWaitingForRepo(home: string, repoKey: string): number;
249
+ /** The newest main-stream receipt across this repo's sessions, or null. */
250
+ export declare function lastReceiptForRepo(home: string, repoKey: string): Receipt | null;
99
251
  /** Persist. Returns false on any failure — the caller must not throw from a hook. */
100
252
  export declare function saveSessionState(home: string, key: SessionKey, next: SessionState): boolean;
101
253
  export declare function fileState(session: SessionState, fileKey: string): FileState;