litmus-cli 1.4.6 → 1.4.7
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/dist/commands/doctor.d.ts +1 -41
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +26 -188
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +25 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/lib/ai-tracking.d.ts +10 -0
- package/dist/lib/ai-tracking.d.ts.map +1 -1
- package/dist/lib/ai-tracking.js +25 -0
- package/dist/lib/ai-tracking.js.map +1 -1
- package/dist/lib/backlog-flush.d.ts +118 -0
- package/dist/lib/backlog-flush.d.ts.map +1 -0
- package/dist/lib/backlog-flush.js +268 -0
- package/dist/lib/backlog-flush.js.map +1 -0
- package/dist/lib/hook-logger.cjs +136 -2
- package/dist/lib/keepalive.d.ts +33 -0
- package/dist/lib/keepalive.d.ts.map +1 -0
- package/dist/lib/keepalive.js +39 -0
- package/dist/lib/keepalive.js.map +1 -0
- package/dist/lib/shadow.d.ts +14 -0
- package/dist/lib/shadow.d.ts.map +1 -1
- package/dist/lib/shadow.js +33 -0
- package/dist/lib/shadow.js.map +1 -1
- package/dist/lib/tracker.d.ts.map +1 -1
- package/dist/lib/tracker.js +9 -1
- package/dist/lib/tracker.js.map +1 -1
- package/dist/lib/watcher.js +31 -7
- package/dist/lib/watcher.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/ai-tracking.js
CHANGED
|
@@ -152,6 +152,31 @@ function atomicCopyFileSync(src, target) {
|
|
|
152
152
|
copyFileSync(src, tmp);
|
|
153
153
|
renameSync(tmp, target);
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Sync ~/.litmus/hook-logger.cjs to this build's copy when the bytes differ
|
|
157
|
+
* (ENG-1491). Every health check on the logger is presence-only, and the
|
|
158
|
+
* installers run only when a leg is missing — so a healthy setup would keep a
|
|
159
|
+
* STALE logger across CLI upgrades forever, and logger-side fixes (like the
|
|
160
|
+
* watcher-revival trigger) would never reach exactly the sessions that need
|
|
161
|
+
* them. Doctor calls this on its healthy path. Best-effort: returns whether
|
|
162
|
+
* the copy was refreshed, false on any failure.
|
|
163
|
+
*/
|
|
164
|
+
export function refreshUserScopeLogger(hookLoggerSrc) {
|
|
165
|
+
try {
|
|
166
|
+
const src = readFileSync(hookLoggerSrc);
|
|
167
|
+
try {
|
|
168
|
+
if (src.equals(readFileSync(USER_SCOPE_LOGGER)))
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
catch { /* absent or unreadable counts as different */ }
|
|
172
|
+
mkdirSync(LITMUS_DIR, { recursive: true });
|
|
173
|
+
atomicCopyFileSync(hookLoggerSrc, USER_SCOPE_LOGGER);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
155
180
|
// Synchronous sleep without burning a CPU core. Used by the registry-lock
|
|
156
181
|
// retry loop. Works in CJS and ESM, Node ≥ 18.
|
|
157
182
|
function sleepSync(ms) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tracking.js","sourceRoot":"","sources":["../../src/lib/ai-tracking.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-tracking.js","sourceRoot":"","sources":["../../src/lib/ai-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backlog flush for a dead watcher's un-uploaded tail (ENG-1491, extracted
|
|
3
|
+
* verbatim from `litmus doctor`).
|
|
4
|
+
*
|
|
5
|
+
* Everything the trackers record lands in activity.jsonl first, so the file
|
|
6
|
+
* is the source of truth. When the watcher dies, whatever sat in its
|
|
7
|
+
* in-memory upload buffer (at most one heartbeat interval of events) never
|
|
8
|
+
* reached the server — but it is still on disk. This module delivers that
|
|
9
|
+
* gap through the same /cli/activity endpoint, verbatim (chained watcher
|
|
10
|
+
* events stay verifiable), with a forward-only byte cursor so an interrupted
|
|
11
|
+
* flush resumes without re-sending or skipping anything.
|
|
12
|
+
*
|
|
13
|
+
* Two callers: `litmus doctor` (the loud, candidate-facing repair) and
|
|
14
|
+
* `litmus status`'s tracker revival (quiet — see flushDeathGapBacklog).
|
|
15
|
+
*/
|
|
16
|
+
export declare const FLUSH_WINDOW_BEFORE_LAST_HEARTBEAT_MS: number;
|
|
17
|
+
export declare const MAX_EVENTS_PER_BATCH = 500;
|
|
18
|
+
export declare const MAX_BATCH_BYTES = 2000000;
|
|
19
|
+
export declare const MAX_BATCHES_PER_RUN = 4;
|
|
20
|
+
export interface ActivityScan {
|
|
21
|
+
totalBytes: number;
|
|
22
|
+
eventCount: number;
|
|
23
|
+
malformedCount: number;
|
|
24
|
+
aiPromptCount: number;
|
|
25
|
+
lastEventTs: string | null;
|
|
26
|
+
lastHeartbeatTs: string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Timestamp of the newest LIVE-captured prompt (backfilled events excluded).
|
|
29
|
+
* This is where doctor's automatic backfill window starts: everything before
|
|
30
|
+
* it was demonstrably captured by the live path, everything after it is the
|
|
31
|
+
* potential gap.
|
|
32
|
+
*/
|
|
33
|
+
lastLiveAiPromptTs: string | null;
|
|
34
|
+
}
|
|
35
|
+
/** One pass over raw activity-log text: counts and latest timestamps. */
|
|
36
|
+
export declare function scanActivityLog(text: string): ActivityScan;
|
|
37
|
+
/**
|
|
38
|
+
* Byte offset of the first log line whose event timestamp is at or after
|
|
39
|
+
* `cutoffMs`. Lines without a parseable timestamp don't start the window.
|
|
40
|
+
* Returns the total byte length (i.e. "flush nothing") when no line qualifies.
|
|
41
|
+
*/
|
|
42
|
+
export declare function offsetForFirstEventAtOrAfter(text: string, cutoffMs: number): number;
|
|
43
|
+
export interface FlushBatch {
|
|
44
|
+
events: unknown[];
|
|
45
|
+
/** Byte offset just past the last line included — the next cursor value. */
|
|
46
|
+
endOffset: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Slice the log from `startOffset` into upload batches. Events are passed
|
|
50
|
+
* through VERBATIM (chained watcher events stay verifiable); malformed lines
|
|
51
|
+
* are skipped but still advance the offset so they are never retried forever.
|
|
52
|
+
* `startOffset` must fall on a line boundary (it always does: every stored
|
|
53
|
+
* cursor value is a `FlushBatch.endOffset`); a mid-line offset skips the torn
|
|
54
|
+
* line rather than uploading half an event.
|
|
55
|
+
*/
|
|
56
|
+
export declare function planFlushBatches(text: string, startOffset: number): FlushBatch[];
|
|
57
|
+
export declare function readUploadState(litmusDir: string): number | null;
|
|
58
|
+
export declare function writeUploadState(litmusDir: string, flushFromBytes: number): void;
|
|
59
|
+
export declare function clearUploadState(litmusDir: string): void;
|
|
60
|
+
export interface FlushStartArgs {
|
|
61
|
+
litmusDir: string;
|
|
62
|
+
logText: string;
|
|
63
|
+
/** `scanActivityLog(logText).totalBytes`, or null when the log could not be read. */
|
|
64
|
+
totalBytes: number | null;
|
|
65
|
+
/** The dead watcher's last heartbeat. Pass null when the tracker was
|
|
66
|
+
* healthy — a live watcher owns its own uploads and there is no gap. */
|
|
67
|
+
lastHeartbeatTs: string | null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Where a flush should start, or null when there is nothing to flush. A
|
|
71
|
+
* stored cursor (an earlier interrupted flush) always wins; otherwise the
|
|
72
|
+
* window opens FLUSH_WINDOW_BEFORE_LAST_HEARTBEAT_MS before the dead
|
|
73
|
+
* watcher's last heartbeat.
|
|
74
|
+
*/
|
|
75
|
+
export declare function resolveFlushStart(args: FlushStartArgs): number | null;
|
|
76
|
+
export interface FlushDelivery {
|
|
77
|
+
/** Every event from flushFrom to the end of the log, not just this run's. */
|
|
78
|
+
totalEvents: number;
|
|
79
|
+
sent: number;
|
|
80
|
+
/** Byte offset just past the last delivered batch — the next cursor value. */
|
|
81
|
+
lastGood: number;
|
|
82
|
+
/** First upload error, when one stopped the run early. */
|
|
83
|
+
failure: string | null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Deliver up to MAX_BATCHES_PER_RUN batches starting at `flushFrom`. Stops at
|
|
87
|
+
* the first upload failure; the caller persists `lastGood` so the next run
|
|
88
|
+
* resumes exactly where this one stopped.
|
|
89
|
+
*/
|
|
90
|
+
export declare function deliverFlushBatches(logText: string, flushFrom: number, upload: (events: unknown[]) => Promise<void>): Promise<FlushDelivery>;
|
|
91
|
+
export interface DeathGapFlushOutcome {
|
|
92
|
+
sent: number;
|
|
93
|
+
total: number;
|
|
94
|
+
failure: string | null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The quiet twin of doctor's backlog flush, for `litmus status`'s tracker
|
|
98
|
+
* revival (ENG-1491). When status revives a dead watcher, the dead watcher's
|
|
99
|
+
* last few minutes of events are on disk but never reached the server — and
|
|
100
|
+
* the replacement watcher only uploads what IT captures, so without this the
|
|
101
|
+
* gap sat there until someone happened to run doctor.
|
|
102
|
+
*
|
|
103
|
+
* `logText` must be snapshotted BEFORE the replacement watcher starts
|
|
104
|
+
* appending, so the flush delivers the dead watcher's tail rather than
|
|
105
|
+
* racing the live one's own uploads. Cursor handling matches doctor: cleared
|
|
106
|
+
* when the backlog is fully delivered, advanced to the last good batch when
|
|
107
|
+
* it is not (doctor or the next revival picks up the rest).
|
|
108
|
+
*
|
|
109
|
+
* Returns null when there was nothing to flush. Never throws — a status run
|
|
110
|
+
* must not fail over an upload courtesy.
|
|
111
|
+
*/
|
|
112
|
+
export declare function flushDeathGapBacklog(args: {
|
|
113
|
+
projectRoot: string;
|
|
114
|
+
logText: string;
|
|
115
|
+
backendUrl: string;
|
|
116
|
+
token: string;
|
|
117
|
+
}): Promise<DeathGapFlushOutcome | null>;
|
|
118
|
+
//# sourceMappingURL=backlog-flush.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-flush.d.ts","sourceRoot":"","sources":["../../src/lib/backlog-flush.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAOH,eAAO,MAAM,qCAAqC,QAAiB,CAAA;AAOnE,eAAO,MAAM,oBAAoB,MAAM,CAAA;AACvC,eAAO,MAAM,eAAe,UAAY,CAAA;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAIpC,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;;;;;OAKG;IACH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAiC1D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBnF;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,EAAE,CAsChF;AAUD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAShF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAExD;AAID,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;6EACyE;IACzE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAQrE;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3C,OAAO,CAAC,aAAa,CAAC,CAiBxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA8BvC"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, renameSync, unlinkSync } from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { uploadActivityEvents } from "./api.js";
|
|
4
|
+
/**
|
|
5
|
+
* Backlog flush for a dead watcher's un-uploaded tail (ENG-1491, extracted
|
|
6
|
+
* verbatim from `litmus doctor`).
|
|
7
|
+
*
|
|
8
|
+
* Everything the trackers record lands in activity.jsonl first, so the file
|
|
9
|
+
* is the source of truth. When the watcher dies, whatever sat in its
|
|
10
|
+
* in-memory upload buffer (at most one heartbeat interval of events) never
|
|
11
|
+
* reached the server — but it is still on disk. This module delivers that
|
|
12
|
+
* gap through the same /cli/activity endpoint, verbatim (chained watcher
|
|
13
|
+
* events stay verifiable), with a forward-only byte cursor so an interrupted
|
|
14
|
+
* flush resumes without re-sending or skipping anything.
|
|
15
|
+
*
|
|
16
|
+
* Two callers: `litmus doctor` (the loud, candidate-facing repair) and
|
|
17
|
+
* `litmus status`'s tracker revival (quiet — see flushDeathGapBacklog).
|
|
18
|
+
*/
|
|
19
|
+
// Backlog flush window when there is no cursor: the dead watcher's last
|
|
20
|
+
// heartbeat marks roughly when server uploads stopped, and its unflushed
|
|
21
|
+
// in-memory buffer held at most one heartbeat interval of events. Reaching
|
|
22
|
+
// one extra interval further back trades a few duplicate rows (the server
|
|
23
|
+
// stores batches append-only) for never missing the gap.
|
|
24
|
+
export const FLUSH_WINDOW_BEFORE_LAST_HEARTBEAT_MS = 10 * 60 * 1000;
|
|
25
|
+
// Per-request caps for the backlog flush. The server accepts up to 5000
|
|
26
|
+
// events per batch and rate-limits /cli/activity per candidate, so a bounded
|
|
27
|
+
// number of modest batches per run stays well inside both while still
|
|
28
|
+
// clearing any realistic gap. Anything left over is remembered in the cursor
|
|
29
|
+
// and picked up by the next run.
|
|
30
|
+
export const MAX_EVENTS_PER_BATCH = 500;
|
|
31
|
+
export const MAX_BATCH_BYTES = 2000000;
|
|
32
|
+
export const MAX_BATCHES_PER_RUN = 4;
|
|
33
|
+
/** One pass over raw activity-log text: counts and latest timestamps. */
|
|
34
|
+
export function scanActivityLog(text) {
|
|
35
|
+
const scan = {
|
|
36
|
+
totalBytes: Buffer.byteLength(text, "utf8"),
|
|
37
|
+
eventCount: 0,
|
|
38
|
+
malformedCount: 0,
|
|
39
|
+
aiPromptCount: 0,
|
|
40
|
+
lastEventTs: null,
|
|
41
|
+
lastHeartbeatTs: null,
|
|
42
|
+
lastLiveAiPromptTs: null,
|
|
43
|
+
};
|
|
44
|
+
for (const line of text.split("\n")) {
|
|
45
|
+
if (!line.trim())
|
|
46
|
+
continue;
|
|
47
|
+
let event;
|
|
48
|
+
try {
|
|
49
|
+
event = JSON.parse(line);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
scan.malformedCount++;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (!event || typeof event !== "object") {
|
|
56
|
+
scan.malformedCount++;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
scan.eventCount++;
|
|
60
|
+
const e = event;
|
|
61
|
+
if (typeof e.ts === "string")
|
|
62
|
+
scan.lastEventTs = e.ts;
|
|
63
|
+
if (e.type === "ai_prompt") {
|
|
64
|
+
scan.aiPromptCount++;
|
|
65
|
+
if (e.backfilled !== true && typeof e.ts === "string")
|
|
66
|
+
scan.lastLiveAiPromptTs = e.ts;
|
|
67
|
+
}
|
|
68
|
+
if (e.type === "heartbeat" && typeof e.ts === "string")
|
|
69
|
+
scan.lastHeartbeatTs = e.ts;
|
|
70
|
+
}
|
|
71
|
+
return scan;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Byte offset of the first log line whose event timestamp is at or after
|
|
75
|
+
* `cutoffMs`. Lines without a parseable timestamp don't start the window.
|
|
76
|
+
* Returns the total byte length (i.e. "flush nothing") when no line qualifies.
|
|
77
|
+
*/
|
|
78
|
+
export function offsetForFirstEventAtOrAfter(text, cutoffMs) {
|
|
79
|
+
let offset = 0;
|
|
80
|
+
for (const line of text.split("\n")) {
|
|
81
|
+
const lineBytes = Buffer.byteLength(line, "utf8") + 1; // + newline
|
|
82
|
+
if (line.trim()) {
|
|
83
|
+
try {
|
|
84
|
+
const event = JSON.parse(line);
|
|
85
|
+
if (typeof event.ts === "string") {
|
|
86
|
+
const ts = Date.parse(event.ts);
|
|
87
|
+
if (!isNaN(ts) && ts >= cutoffMs)
|
|
88
|
+
return offset;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch { /* malformed line can't start the window */ }
|
|
92
|
+
}
|
|
93
|
+
offset += lineBytes;
|
|
94
|
+
}
|
|
95
|
+
return Buffer.byteLength(text, "utf8");
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Slice the log from `startOffset` into upload batches. Events are passed
|
|
99
|
+
* through VERBATIM (chained watcher events stay verifiable); malformed lines
|
|
100
|
+
* are skipped but still advance the offset so they are never retried forever.
|
|
101
|
+
* `startOffset` must fall on a line boundary (it always does: every stored
|
|
102
|
+
* cursor value is a `FlushBatch.endOffset`); a mid-line offset skips the torn
|
|
103
|
+
* line rather than uploading half an event.
|
|
104
|
+
*/
|
|
105
|
+
export function planFlushBatches(text, startOffset) {
|
|
106
|
+
const batches = [];
|
|
107
|
+
let offset = 0;
|
|
108
|
+
let current = [];
|
|
109
|
+
let currentBytes = 0;
|
|
110
|
+
let end = startOffset;
|
|
111
|
+
const finish = () => {
|
|
112
|
+
if (current.length > 0) {
|
|
113
|
+
batches.push({ events: current, endOffset: end });
|
|
114
|
+
current = [];
|
|
115
|
+
currentBytes = 0;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
for (const line of text.split("\n")) {
|
|
119
|
+
const lineBytes = Buffer.byteLength(line, "utf8") + 1;
|
|
120
|
+
const lineStart = offset;
|
|
121
|
+
offset += lineBytes;
|
|
122
|
+
if (lineStart < startOffset)
|
|
123
|
+
continue;
|
|
124
|
+
if (!line.trim()) {
|
|
125
|
+
end = Math.min(offset, Buffer.byteLength(text, "utf8"));
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
let event;
|
|
129
|
+
try {
|
|
130
|
+
event = JSON.parse(line);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
end = offset; // skip malformed, but move past it
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const eventBytes = Buffer.byteLength(line, "utf8");
|
|
137
|
+
if (current.length >= MAX_EVENTS_PER_BATCH || currentBytes + eventBytes > MAX_BATCH_BYTES) {
|
|
138
|
+
finish();
|
|
139
|
+
}
|
|
140
|
+
current.push(event);
|
|
141
|
+
currentBytes += eventBytes;
|
|
142
|
+
end = Math.min(offset, Buffer.byteLength(text, "utf8"));
|
|
143
|
+
}
|
|
144
|
+
finish();
|
|
145
|
+
return batches;
|
|
146
|
+
}
|
|
147
|
+
// ── Flush cursor (.litmus/upload-state.json) ─────────────────────
|
|
148
|
+
// Records the byte offset up to which a flush has delivered locally-recorded
|
|
149
|
+
// events to the server. Only exists while a recovery is in flight: a fully
|
|
150
|
+
// flushed backlog removes it (live watcher uploads own everything after
|
|
151
|
+
// that), and it NEVER moves backward.
|
|
152
|
+
const UPLOAD_STATE_FILE = "upload-state.json";
|
|
153
|
+
export function readUploadState(litmusDir) {
|
|
154
|
+
try {
|
|
155
|
+
const raw = JSON.parse(readFileSync(path.join(litmusDir, UPLOAD_STATE_FILE), "utf8"));
|
|
156
|
+
const v = raw?.flushFromBytes;
|
|
157
|
+
if (typeof v === "number" && Number.isFinite(v) && v >= 0)
|
|
158
|
+
return v;
|
|
159
|
+
}
|
|
160
|
+
catch { /* absent or unreadable */ }
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
export function writeUploadState(litmusDir, flushFromBytes) {
|
|
164
|
+
const existing = readUploadState(litmusDir);
|
|
165
|
+
// Forward-only: a smaller offset would make the next run re-upload events
|
|
166
|
+
// the server already has.
|
|
167
|
+
const value = Math.max(existing ?? 0, flushFromBytes);
|
|
168
|
+
const target = path.join(litmusDir, UPLOAD_STATE_FILE);
|
|
169
|
+
const tmp = `${target}.litmus-tmp-${process.pid}-${Date.now()}`;
|
|
170
|
+
writeFileSync(tmp, JSON.stringify({ flushFromBytes: value, updatedAt: new Date().toISOString() }, null, 2) + "\n", "utf8");
|
|
171
|
+
renameSync(tmp, target);
|
|
172
|
+
}
|
|
173
|
+
export function clearUploadState(litmusDir) {
|
|
174
|
+
try {
|
|
175
|
+
unlinkSync(path.join(litmusDir, UPLOAD_STATE_FILE));
|
|
176
|
+
}
|
|
177
|
+
catch { /* already gone */ }
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Where a flush should start, or null when there is nothing to flush. A
|
|
181
|
+
* stored cursor (an earlier interrupted flush) always wins; otherwise the
|
|
182
|
+
* window opens FLUSH_WINDOW_BEFORE_LAST_HEARTBEAT_MS before the dead
|
|
183
|
+
* watcher's last heartbeat.
|
|
184
|
+
*/
|
|
185
|
+
export function resolveFlushStart(args) {
|
|
186
|
+
const cursor = readUploadState(args.litmusDir);
|
|
187
|
+
if (cursor !== null)
|
|
188
|
+
return Math.min(cursor, args.totalBytes ?? cursor);
|
|
189
|
+
if (args.lastHeartbeatTs) {
|
|
190
|
+
const cutoff = Date.parse(args.lastHeartbeatTs) - FLUSH_WINDOW_BEFORE_LAST_HEARTBEAT_MS;
|
|
191
|
+
return offsetForFirstEventAtOrAfter(args.logText, cutoff);
|
|
192
|
+
}
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Deliver up to MAX_BATCHES_PER_RUN batches starting at `flushFrom`. Stops at
|
|
197
|
+
* the first upload failure; the caller persists `lastGood` so the next run
|
|
198
|
+
* resumes exactly where this one stopped.
|
|
199
|
+
*/
|
|
200
|
+
export async function deliverFlushBatches(logText, flushFrom, upload) {
|
|
201
|
+
const batches = planFlushBatches(logText, flushFrom);
|
|
202
|
+
const totalEvents = batches.reduce((n, b) => n + b.events.length, 0);
|
|
203
|
+
let sent = 0;
|
|
204
|
+
let lastGood = flushFrom;
|
|
205
|
+
let failure = null;
|
|
206
|
+
for (const batch of batches.slice(0, MAX_BATCHES_PER_RUN)) {
|
|
207
|
+
try {
|
|
208
|
+
await upload(batch.events);
|
|
209
|
+
sent += batch.events.length;
|
|
210
|
+
lastGood = batch.endOffset;
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
failure = err instanceof Error ? err.message : String(err);
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return { totalEvents, sent, lastGood, failure };
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* The quiet twin of doctor's backlog flush, for `litmus status`'s tracker
|
|
221
|
+
* revival (ENG-1491). When status revives a dead watcher, the dead watcher's
|
|
222
|
+
* last few minutes of events are on disk but never reached the server — and
|
|
223
|
+
* the replacement watcher only uploads what IT captures, so without this the
|
|
224
|
+
* gap sat there until someone happened to run doctor.
|
|
225
|
+
*
|
|
226
|
+
* `logText` must be snapshotted BEFORE the replacement watcher starts
|
|
227
|
+
* appending, so the flush delivers the dead watcher's tail rather than
|
|
228
|
+
* racing the live one's own uploads. Cursor handling matches doctor: cleared
|
|
229
|
+
* when the backlog is fully delivered, advanced to the last good batch when
|
|
230
|
+
* it is not (doctor or the next revival picks up the rest).
|
|
231
|
+
*
|
|
232
|
+
* Returns null when there was nothing to flush. Never throws — a status run
|
|
233
|
+
* must not fail over an upload courtesy.
|
|
234
|
+
*/
|
|
235
|
+
export async function flushDeathGapBacklog(args) {
|
|
236
|
+
try {
|
|
237
|
+
const litmusDir = path.join(args.projectRoot, ".litmus");
|
|
238
|
+
const scan = scanActivityLog(args.logText);
|
|
239
|
+
const flushFrom = resolveFlushStart({
|
|
240
|
+
litmusDir,
|
|
241
|
+
logText: args.logText,
|
|
242
|
+
totalBytes: scan.totalBytes,
|
|
243
|
+
// Revival implies the tracker was dead, so the heartbeat window applies.
|
|
244
|
+
lastHeartbeatTs: scan.lastHeartbeatTs,
|
|
245
|
+
});
|
|
246
|
+
if (flushFrom === null)
|
|
247
|
+
return null;
|
|
248
|
+
const { totalEvents, sent, lastGood, failure } = await deliverFlushBatches(args.logText, flushFrom, (events) => uploadActivityEvents(args.backendUrl, args.token, events));
|
|
249
|
+
if (totalEvents === 0) {
|
|
250
|
+
clearUploadState(litmusDir);
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
if (totalEvents - sent === 0 && failure === null) {
|
|
254
|
+
clearUploadState(litmusDir);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
try {
|
|
258
|
+
writeUploadState(litmusDir, lastGood);
|
|
259
|
+
}
|
|
260
|
+
catch { /* next run recomputes */ }
|
|
261
|
+
}
|
|
262
|
+
return { sent, total: totalEvents, failure };
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=backlog-flush.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-flush.js","sourceRoot":"","sources":["../../src/lib/backlog-flush.ts"],"names":[],"mappings":"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"}
|