@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.
- package/README.md +33 -2
- package/dist/agent_hooks.d.ts +53 -8
- package/dist/agent_hooks.js +180 -19
- package/dist/agent_hooks.js.map +1 -1
- package/dist/agent_install.d.ts +0 -17
- package/dist/agent_install.js +1 -24
- package/dist/agent_install.js.map +1 -1
- package/dist/agents/cursor.js +54 -18
- package/dist/agents/cursor.js.map +1 -1
- package/dist/commands/auth.d.ts +24 -9
- package/dist/commands/auth.js +38 -10
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/browser_credential.d.ts +89 -0
- package/dist/commands/browser_credential.js +181 -0
- package/dist/commands/browser_credential.js.map +1 -0
- package/dist/commands/connect.d.ts +26 -9
- package/dist/commands/connect.js +52 -90
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/finalize.d.ts +35 -0
- package/dist/commands/finalize.js +283 -0
- package/dist/commands/finalize.js.map +1 -0
- package/dist/commands/status.js +56 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/copy/index.d.ts +1 -1
- package/dist/copy/index.js +1 -1
- package/dist/copy/index.js.map +1 -1
- package/dist/copy/strings.d.ts +81 -2
- package/dist/copy/strings.js +94 -1
- package/dist/copy/strings.js.map +1 -1
- package/dist/exit.d.ts +7 -0
- package/dist/exit.js +7 -0
- package/dist/exit.js.map +1 -1
- package/dist/hooks/entry.d.ts +83 -0
- package/dist/hooks/entry.js +117 -28
- package/dist/hooks/entry.js.map +1 -1
- package/dist/hooks/post_rewrite.js +20 -3
- package/dist/hooks/post_rewrite.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/oauth/mint.d.ts +97 -0
- package/dist/oauth/mint.js +120 -0
- package/dist/oauth/mint.js.map +1 -0
- package/dist/oauth/signin.d.ts +25 -0
- package/dist/oauth/signin.js +30 -0
- package/dist/oauth/signin.js.map +1 -1
- package/dist/post.d.ts +53 -0
- package/dist/post.js +73 -5
- package/dist/post.js.map +1 -1
- package/dist/spool.d.ts +37 -0
- package/dist/spool.js +244 -36
- package/dist/spool.js.map +1 -1
- package/dist/state.d.ts +152 -0
- package/dist/state.js +255 -2
- package/dist/state.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- 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,
|
|
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
|
-
//
|
|
251
|
-
// observation was gone: MEASURED in a real session as commit
|
|
252
|
-
// nowhere. And it is not an edge case — `Stop` fires at the END of a
|
|
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
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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
|
|
334
|
+
return false;
|
|
282
335
|
const state = sessionStatePath(home, { repoKey, sessionId: envSessionId });
|
|
283
|
-
|
|
284
|
-
|
|
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
|
|
289
|
-
//
|
|
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
|
-
/**
|
|
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
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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;
|