@ai-dossier/cli 0.83.2 → 0.84.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 +31 -6
- package/dist/commands/sched.d.ts.map +1 -1
- package/dist/commands/sched.js +8 -1
- package/dist/commands/sched.js.map +1 -1
- package/dist/commands/usage.d.ts +22 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +202 -17
- package/dist/commands/usage.js.map +1 -1
- package/dist/sched-run-stats.d.ts +4 -0
- package/dist/sched-run-stats.d.ts.map +1 -1
- package/dist/sched-run-stats.js +1 -1
- package/dist/sched-run-stats.js.map +1 -1
- package/dist/usage/batch-prep.d.ts +50 -11
- package/dist/usage/batch-prep.d.ts.map +1 -1
- package/dist/usage/batch-prep.js +158 -22
- package/dist/usage/batch-prep.js.map +1 -1
- package/dist/usage/ledger.js +1 -1
- package/dist/usage/ledger.js.map +1 -1
- package/dist/usage/store.d.ts +110 -0
- package/dist/usage/store.d.ts.map +1 -0
- package/dist/usage/store.js +445 -0
- package/dist/usage/store.js.map +1 -0
- package/dist/usage/sync.d.ts +67 -0
- package/dist/usage/sync.d.ts.map +1 -0
- package/dist/usage/sync.js +223 -0
- package/dist/usage/sync.js.map +1 -0
- package/dist/usage/types.d.ts +6 -0
- package/dist/usage/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-prep.d.ts","sourceRoot":"","sources":["../../src/usage/batch-prep.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"batch-prep.d.ts","sourceRoot":"","sources":["../../src/usage/batch-prep.ts"],"names":[],"mappings":"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"}
|
package/dist/usage/batch-prep.js
CHANGED
|
@@ -11,10 +11,20 @@
|
|
|
11
11
|
* that session's spend — subagents included — to `batch:<id>`.
|
|
12
12
|
*
|
|
13
13
|
* An operator session outlives any one batch, so a record does not claim the
|
|
14
|
-
* whole session
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* whole session — it claims a window ending at its own enqueue time (#899):
|
|
15
|
+
*
|
|
16
|
+
* - `marker`: the window starts at the session's first `ai-dossier run
|
|
17
|
+
* …/batch-issues-preparation` (runs.jsonl records every run with its
|
|
18
|
+
* session id) after the previous enqueue — a deterministic prep start, so
|
|
19
|
+
* hours of unrelated work before the prep began are excluded;
|
|
20
|
+
* - `prev-enqueue`: no marker; the window starts at the session's previous
|
|
21
|
+
* enqueue (an upper bound — unrelated work in between counts);
|
|
22
|
+
* - `lookback-cap`: neither; the window reaches back
|
|
23
|
+
* {@link MAX_PREP_LOOKBACK_MS} (the loosest upper bound).
|
|
24
|
+
*
|
|
25
|
+
* One enqueue that creates several batches yields identical windows. Their
|
|
26
|
+
* rows are split across the batches in proportion to member count, so the
|
|
27
|
+
* per-batch figures always sum to the window's tokens — never double-count.
|
|
18
28
|
*/
|
|
19
29
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
30
|
if (k2 === undefined) k2 = k;
|
|
@@ -50,30 +60,38 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
50
60
|
};
|
|
51
61
|
})();
|
|
52
62
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.MAX_PREP_LOOKBACK_MS = exports.BATCH_PREP_FILE = void 0;
|
|
63
|
+
exports.PREP_DOSSIER = exports.MAX_PREP_LOOKBACK_MS = exports.BATCH_PREP_FILE = void 0;
|
|
54
64
|
exports.currentSessionId = currentSessionId;
|
|
55
65
|
exports.recordBatchPrep = recordBatchPrep;
|
|
56
66
|
exports.readBatchPrep = readBatchPrep;
|
|
67
|
+
exports.readPrepMarkers = readPrepMarkers;
|
|
57
68
|
exports.prepWindows = prepWindows;
|
|
58
69
|
exports.applyPrepWindows = applyPrepWindows;
|
|
59
70
|
exports.readAllPrepWindows = readAllPrepWindows;
|
|
71
|
+
exports.prepScanRange = prepScanRange;
|
|
60
72
|
exports.batchPrepTokens = batchPrepTokens;
|
|
61
73
|
const path = __importStar(require("node:path"));
|
|
62
74
|
const sched_1 = require("@ai-dossier/sched");
|
|
63
75
|
const ledger_1 = require("./ledger");
|
|
76
|
+
const store_1 = require("./store");
|
|
64
77
|
const util_1 = require("./util");
|
|
65
78
|
exports.BATCH_PREP_FILE = 'batch-prep.jsonl';
|
|
66
79
|
/** A window never reaches further back than this, however long the session idled before enqueue. */
|
|
67
80
|
exports.MAX_PREP_LOOKBACK_MS = 6 * 60 * 60 * 1000;
|
|
81
|
+
/** The dossier whose first run in a session marks the start of batch prep (#899). */
|
|
82
|
+
exports.PREP_DOSSIER = 'batch-issues-preparation';
|
|
68
83
|
/** The calling Claude Code session, or null outside one. */
|
|
69
84
|
function currentSessionId(env = process.env) {
|
|
70
85
|
const id = env.CLAUDE_CODE_SESSION_ID;
|
|
71
86
|
return typeof id === 'string' && /^[A-Za-z0-9._-]{8,128}$/.test(id) ? id : null;
|
|
72
87
|
}
|
|
73
88
|
/** Append one record per batch. Never throws (telemetry must not fail an enqueue). */
|
|
74
|
-
function recordBatchPrep(schedDir, batches, sessionId, source, now = new Date()) {
|
|
89
|
+
function recordBatchPrep(schedDir, batches, sessionId, source, now = new Date(), members) {
|
|
75
90
|
for (const batch of [...new Set(batches)]) {
|
|
76
91
|
const record = { ts: now.toISOString(), batch, session_id: sessionId, source };
|
|
92
|
+
const count = members?.get(batch);
|
|
93
|
+
if (count !== undefined && count > 0)
|
|
94
|
+
record.members = count;
|
|
77
95
|
(0, sched_1.appendJsonl)(path.join(schedDir, exports.BATCH_PREP_FILE), record);
|
|
78
96
|
}
|
|
79
97
|
}
|
|
@@ -88,8 +106,36 @@ function readBatchPrep(schedDir) {
|
|
|
88
106
|
return [];
|
|
89
107
|
}
|
|
90
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Prep starts recorded in `runs.jsonl`: every `ai-dossier run` of
|
|
111
|
+
* {@link PREP_DOSSIER} that carries a session id. The log stamps completion, so
|
|
112
|
+
* the start is `timestamp - duration_ms`. Never throws.
|
|
113
|
+
*/
|
|
114
|
+
function readPrepMarkers(runsLog) {
|
|
115
|
+
const out = [];
|
|
116
|
+
(0, util_1.forEachLine)(runsLog, (line) => {
|
|
117
|
+
if (!line.includes(exports.PREP_DOSSIER) || !line.includes('"session_id"'))
|
|
118
|
+
return;
|
|
119
|
+
try {
|
|
120
|
+
const e = JSON.parse(line);
|
|
121
|
+
if (!e.session_id || !e.dossier || !e.timestamp)
|
|
122
|
+
return;
|
|
123
|
+
if (e.dossier !== exports.PREP_DOSSIER && !e.dossier.endsWith(`/${exports.PREP_DOSSIER}`))
|
|
124
|
+
return;
|
|
125
|
+
const endMs = Date.parse(e.timestamp);
|
|
126
|
+
if (Number.isNaN(endMs))
|
|
127
|
+
return;
|
|
128
|
+
const startMs = endMs - (typeof e.duration_ms === 'number' ? Math.max(0, e.duration_ms) : 0);
|
|
129
|
+
out.push({ session_id: e.session_id, startMs });
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// torn / foreign line
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
91
137
|
/** Records → the time window each one claims (see the module comment). */
|
|
92
|
-
function prepWindows(records) {
|
|
138
|
+
function prepWindows(records, markers = []) {
|
|
93
139
|
const sorted = [...records].sort((a, b) => Date.parse(a.ts) - Date.parse(b.ts) || a.batch.localeCompare(b.batch));
|
|
94
140
|
return sorted.map((r) => {
|
|
95
141
|
const toMs = Date.parse(r.ts);
|
|
@@ -100,43 +146,113 @@ function prepWindows(records) {
|
|
|
100
146
|
if (other.session_id === r.session_id && otherMs < toMs)
|
|
101
147
|
prevMs = Math.max(prevMs, otherMs);
|
|
102
148
|
}
|
|
149
|
+
// Earliest prep run after the previous enqueue (and not after this one). A marker older than
|
|
150
|
+
// the lookback cap is treated as no marker: a prep run days ago in the same long-lived
|
|
151
|
+
// session is not evidence this batch's prep started then.
|
|
152
|
+
const capMs = toMs - exports.MAX_PREP_LOOKBACK_MS;
|
|
153
|
+
let markerMs = Number.POSITIVE_INFINITY;
|
|
154
|
+
for (const m of markers) {
|
|
155
|
+
if (m.session_id === r.session_id &&
|
|
156
|
+
m.startMs > prevMs &&
|
|
157
|
+
m.startMs >= capMs &&
|
|
158
|
+
m.startMs <= toMs) {
|
|
159
|
+
markerMs = Math.min(markerMs, m.startMs);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
let fromMs;
|
|
163
|
+
let basis;
|
|
164
|
+
if (Number.isFinite(markerMs)) {
|
|
165
|
+
fromMs = markerMs - 1; // rows are matched `ts > fromMs`; include the marker instant
|
|
166
|
+
basis = 'marker';
|
|
167
|
+
}
|
|
168
|
+
else if (prevMs > capMs) {
|
|
169
|
+
fromMs = prevMs;
|
|
170
|
+
basis = 'prev-enqueue';
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
fromMs = capMs;
|
|
174
|
+
basis = 'lookback-cap';
|
|
175
|
+
}
|
|
103
176
|
return {
|
|
104
177
|
batch: r.batch,
|
|
105
178
|
session_id: r.session_id,
|
|
106
|
-
fromMs
|
|
179
|
+
fromMs,
|
|
107
180
|
toMs,
|
|
181
|
+
basis,
|
|
182
|
+
weight: r.members !== undefined && r.members > 0 ? r.members : 1,
|
|
108
183
|
};
|
|
109
184
|
});
|
|
110
185
|
}
|
|
111
186
|
/**
|
|
112
187
|
* Stamp `batch:<id>` onto rows of a prep session (or its subagents) inside a
|
|
113
|
-
* window. Rows already attributed to a dispatch keep that attribution
|
|
114
|
-
*
|
|
188
|
+
* window. Rows already attributed to a dispatch keep that attribution. Batches
|
|
189
|
+
* created by one enqueue share an identical window; its rows are dealt across
|
|
190
|
+
* them in proportion to their weights (member counts) by a hash of the row's stable
|
|
191
|
+
* key — each row goes whole to one batch, so per-batch sums equal the window total.
|
|
115
192
|
*/
|
|
116
193
|
function applyPrepWindows(rows, windows) {
|
|
117
194
|
if (windows.length === 0)
|
|
118
195
|
return;
|
|
196
|
+
const groups = new Map();
|
|
197
|
+
for (const w of windows) {
|
|
198
|
+
const key = `${w.session_id}\u0000${w.fromMs}\u0000${w.toMs}`;
|
|
199
|
+
const list = groups.get(key);
|
|
200
|
+
if (list)
|
|
201
|
+
list.push(w);
|
|
202
|
+
else
|
|
203
|
+
groups.set(key, [w]);
|
|
204
|
+
}
|
|
205
|
+
const byWindow = [...groups.values()];
|
|
119
206
|
for (const row of rows) {
|
|
120
207
|
if (row.unit !== null)
|
|
121
208
|
continue;
|
|
122
209
|
const root = row.session_id.split('/')[0];
|
|
123
210
|
const ts = Date.parse(row.ts);
|
|
124
|
-
const hit =
|
|
211
|
+
const hit = byWindow.find((g) => g[0].session_id === root && ts > g[0].fromMs && ts <= g[0].toMs);
|
|
125
212
|
if (!hit)
|
|
126
213
|
continue;
|
|
127
|
-
|
|
128
|
-
|
|
214
|
+
const winner = hit.length > 1 ? pickWeighted(hit, (0, store_1.rowKey)(row)) : hit[0];
|
|
215
|
+
if (hit.length > 1)
|
|
216
|
+
row.prep_split = hit.length;
|
|
217
|
+
row.unit = `batch:${winner.batch}`;
|
|
218
|
+
row.batch = winner.batch;
|
|
129
219
|
row.role = 'prep';
|
|
220
|
+
row.prep_basis = winner.basis;
|
|
130
221
|
}
|
|
131
222
|
}
|
|
132
|
-
/**
|
|
133
|
-
|
|
223
|
+
/**
|
|
224
|
+
* Pick a window by weight from a hash of the row's stable key — the same row goes to
|
|
225
|
+
* the same batch in every view (`usage`, `sched stats`, a partial collection), and the
|
|
226
|
+
* shares converge on the weights. Batch order is fixed so the pick is reproducible.
|
|
227
|
+
*/
|
|
228
|
+
function pickWeighted(windows, key) {
|
|
229
|
+
const ordered = [...windows].sort((a, b) => a.batch.localeCompare(b.batch));
|
|
230
|
+
const total = ordered.reduce((n, w) => n + w.weight, 0);
|
|
231
|
+
const point = (Number.parseInt(key.slice(0, 8), 16) / 0x1_0000_0000) * total;
|
|
232
|
+
let acc = 0;
|
|
233
|
+
for (const w of ordered) {
|
|
234
|
+
acc += w.weight;
|
|
235
|
+
if (point < acc)
|
|
236
|
+
return w;
|
|
237
|
+
}
|
|
238
|
+
return ordered[ordered.length - 1];
|
|
239
|
+
}
|
|
240
|
+
/** Every project's records under `schedRoot`, as windows (markers read from `runsLog`). */
|
|
241
|
+
function readAllPrepWindows(schedRoot, runsLog) {
|
|
134
242
|
const records = [];
|
|
135
243
|
for (const project of (0, util_1.safeReaddir)(schedRoot)) {
|
|
136
244
|
if (project.isDirectory())
|
|
137
245
|
records.push(...readBatchPrep(path.join(schedRoot, project.name)));
|
|
138
246
|
}
|
|
139
|
-
return prepWindows(records);
|
|
247
|
+
return prepWindows(records, readPrepMarkers(runsLog));
|
|
248
|
+
}
|
|
249
|
+
/** Time range a scan needs for the wanted batches (their windows; siblings share theirs). */
|
|
250
|
+
function prepScanRange(windows, wanted) {
|
|
251
|
+
const w = windows.filter((x) => !wanted || wanted.has(x.batch));
|
|
252
|
+
return {
|
|
253
|
+
sinceMs: Math.min(...w.map((x) => x.fromMs)),
|
|
254
|
+
untilMs: Math.max(...w.map((x) => x.toMs)) + 1,
|
|
255
|
+
};
|
|
140
256
|
}
|
|
141
257
|
/**
|
|
142
258
|
* Prep tokens per batch id recorded in `schedDir`. A batch with no record on
|
|
@@ -145,21 +261,39 @@ function readAllPrepWindows(schedRoot) {
|
|
|
145
261
|
*/
|
|
146
262
|
function batchPrepTokens(schedDir, batchIds, paths = (0, ledger_1.defaultLedgerPaths)()) {
|
|
147
263
|
const wanted = batchIds ? new Set(batchIds) : null;
|
|
148
|
-
|
|
264
|
+
// Windows come from ALL records: a batch's window is shared with its siblings
|
|
265
|
+
// from the same enqueue, so filtering first would hand it their share.
|
|
266
|
+
const records = readBatchPrep(schedDir);
|
|
149
267
|
const out = new Map();
|
|
150
|
-
if (records.
|
|
268
|
+
if (!records.some((r) => !wanted || wanted.has(r.batch)))
|
|
151
269
|
return out;
|
|
152
|
-
const windows = prepWindows(records);
|
|
270
|
+
const windows = prepWindows(records, readPrepMarkers(paths.runsLog));
|
|
153
271
|
const sessions = new Map();
|
|
272
|
+
const bases = new Map();
|
|
154
273
|
for (const w of windows) {
|
|
155
|
-
|
|
274
|
+
if (wanted && !wanted.has(w.batch))
|
|
275
|
+
continue;
|
|
276
|
+
out.set(w.batch, out.get(w.batch) ?? {
|
|
277
|
+
billable_tokens: 0,
|
|
278
|
+
sessions: 0,
|
|
279
|
+
messages: 0,
|
|
280
|
+
basis: w.basis,
|
|
281
|
+
split: false,
|
|
282
|
+
});
|
|
156
283
|
sessions.set(w.batch, (sessions.get(w.batch) ?? new Set()).add(w.session_id));
|
|
284
|
+
bases.set(w.batch, (bases.get(w.batch) ?? new Set()).add(w.basis));
|
|
157
285
|
}
|
|
158
286
|
for (const [batch, set] of sessions)
|
|
159
287
|
out.get(batch).sessions = set.size;
|
|
288
|
+
for (const [batch, set] of bases) {
|
|
289
|
+
out.get(batch).basis = set.size === 1 ? [...set][0] : 'mixed';
|
|
290
|
+
}
|
|
291
|
+
// Only the wanted batches' windows (siblings share theirs) bound the scan — not every
|
|
292
|
+
// prep record ever written, which would read the whole transcript history.
|
|
293
|
+
const range = prepScanRange(windows, wanted);
|
|
160
294
|
const { rows } = (0, ledger_1.collectLedger)({
|
|
161
|
-
sinceMs:
|
|
162
|
-
untilMs:
|
|
295
|
+
sinceMs: range.sinceMs,
|
|
296
|
+
untilMs: range.untilMs,
|
|
163
297
|
paths,
|
|
164
298
|
});
|
|
165
299
|
for (const row of rows) {
|
|
@@ -170,6 +304,8 @@ function batchPrepTokens(schedDir, batchIds, paths = (0, ledger_1.defaultLedgerP
|
|
|
170
304
|
continue;
|
|
171
305
|
entry.billable_tokens += (0, ledger_1.rowTotal)(row);
|
|
172
306
|
entry.messages += 1;
|
|
307
|
+
if (row.prep_split)
|
|
308
|
+
entry.split = true;
|
|
173
309
|
}
|
|
174
310
|
return out;
|
|
175
311
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-prep.js","sourceRoot":"","sources":["../../src/usage/batch-prep.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"batch-prep.js","sourceRoot":"","sources":["../../src/usage/batch-prep.ts"],"names":[],"mappings":"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"}
|
package/dist/usage/ledger.js
CHANGED
|
@@ -115,7 +115,7 @@ function collectLedger(opts) {
|
|
|
115
115
|
}
|
|
116
116
|
const index = (0, collect_dispatch_1.indexDispatchLogs)(opts.paths.schedRoot, opts.sinceMs);
|
|
117
117
|
(0, collect_dispatch_1.applyDispatchIndex)(rows, index);
|
|
118
|
-
(0, batch_prep_1.applyPrepWindows)(rows, (0, batch_prep_1.readAllPrepWindows)(opts.paths.schedRoot));
|
|
118
|
+
(0, batch_prep_1.applyPrepWindows)(rows, (0, batch_prep_1.readAllPrepWindows)(opts.paths.schedRoot, opts.paths.runsLog));
|
|
119
119
|
collectors.push({ source: 'sched-dispatch-logs', status: 'ok', rows: index.size });
|
|
120
120
|
limits.push(...(0, collect_dispatch_1.collectSchedLimitEvents)(opts.paths.schedRoot, opts.sinceMs, opts.untilMs, host));
|
|
121
121
|
limits.sort((a, b) => a.ts.localeCompare(b.ts));
|
package/dist/usage/ledger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/usage/ledger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/usage/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persisted, mergeable usage ledger (#782).
|
|
3
|
+
*
|
|
4
|
+
* `ai-dossier usage` (#769) derives rows on demand from stores that rotate
|
|
5
|
+
* (Claude Code transcripts are purged) and that live on one host. The store
|
|
6
|
+
* persists them under `~/.dossier/usage/hosts/<host>.jsonl` — ONE FILE PER HOST,
|
|
7
|
+
* so merging hosts can never conflict: a host's file is only rewritten from that
|
|
8
|
+
* host's own collection, or from an import of that same host's bundle.
|
|
9
|
+
*
|
|
10
|
+
* Records are keyed by a stable content key ({@link rowKey}); re-collecting or
|
|
11
|
+
* re-importing the same rows replaces them in place, so every operation is
|
|
12
|
+
* idempotent. The wire format between hosts ("bundle") is the same JSONL.
|
|
13
|
+
*/
|
|
14
|
+
import type { LimitEvent, UsageRow } from './types';
|
|
15
|
+
export declare const BUNDLE_VERSION = 1;
|
|
16
|
+
/** Root of the persisted ledger. */
|
|
17
|
+
export declare function usageStoreDir(env?: NodeJS.ProcessEnv): string;
|
|
18
|
+
/** This host's id in rows — `DOSSIER_USAGE_HOST` overrides `os.hostname()` (e.g. to force `wls`). */
|
|
19
|
+
export declare function localHostId(env?: NodeJS.ProcessEnv): string;
|
|
20
|
+
export declare function isValidHostId(host: string): boolean;
|
|
21
|
+
export declare function hostFile(dir: string, host: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Stable identity of a row: the message it was read from, not the attribution
|
|
24
|
+
* later joined onto it (issue/batch/unit may be refined by a re-collection).
|
|
25
|
+
*/
|
|
26
|
+
export declare function rowKey(r: UsageRow): string;
|
|
27
|
+
export declare function limitKey(l: LimitEvent): string;
|
|
28
|
+
/** One host's persisted records, keyed for upsert. */
|
|
29
|
+
export interface HostData {
|
|
30
|
+
rows: Map<string, UsageRow>;
|
|
31
|
+
limits: Map<string, LimitEvent>;
|
|
32
|
+
/**
|
|
33
|
+
* key → when the owning host last wrote that record (ISO). A merge keeps the
|
|
34
|
+
* newer copy, so a stale relay of a host's rows can never overwrite the host's
|
|
35
|
+
* own fresher attribution. Legacy lines without one read as the oldest.
|
|
36
|
+
*/
|
|
37
|
+
at: Map<string, string>;
|
|
38
|
+
}
|
|
39
|
+
export declare function emptyHostData(): HostData;
|
|
40
|
+
/** Parse JSONL text/lines into per-host data. Foreign or malformed lines are counted, never thrown. */
|
|
41
|
+
export declare class Parser {
|
|
42
|
+
readonly byHost: Map<string, HostData>;
|
|
43
|
+
skipped: number;
|
|
44
|
+
header: {
|
|
45
|
+
version: number;
|
|
46
|
+
host: string;
|
|
47
|
+
} | null;
|
|
48
|
+
add(line: string): void;
|
|
49
|
+
private data;
|
|
50
|
+
}
|
|
51
|
+
/** Read one host's file. A missing file is an empty ledger. */
|
|
52
|
+
export declare function readHostFile(file: string): HostData;
|
|
53
|
+
/** Hosts that have a persisted file. */
|
|
54
|
+
export declare function listHosts(dir: string): string[];
|
|
55
|
+
/** Atomic rewrite (tmp + fsync + rename) so a concurrent reader never sees a torn file. */
|
|
56
|
+
export declare function writeHostFile(file: string, data: HostData): void;
|
|
57
|
+
/**
|
|
58
|
+
* Serialize read-merge-write cycles on one host file across processes (a cron
|
|
59
|
+
* `usage sync` racing an interactive one, or a sync racing an `import`): the
|
|
60
|
+
* rename keeps readers safe, the lock keeps two writers from losing each other's rows.
|
|
61
|
+
*/
|
|
62
|
+
export declare function withHostLock<T>(file: string, fn: () => T): T;
|
|
63
|
+
export interface MergeStats {
|
|
64
|
+
added: number;
|
|
65
|
+
updated: number;
|
|
66
|
+
unchanged: number;
|
|
67
|
+
}
|
|
68
|
+
/** Upsert `incoming` into `target`: the copy with the newer `at` wins; equal content is unchanged. */
|
|
69
|
+
export declare function mergeHostData(target: HostData, incoming: HostData): MergeStats;
|
|
70
|
+
/** Persist a fresh collection of THIS host's rows/limits into its file (idempotent). */
|
|
71
|
+
export declare function persistLocal(dir: string, host: string, rows: readonly UsageRow[], limits: readonly LimitEvent[]): MergeStats & {
|
|
72
|
+
total: number;
|
|
73
|
+
};
|
|
74
|
+
/** Newest persisted row time for a host, or null — the incremental-sync cursor. */
|
|
75
|
+
export declare function newestTs(dir: string, host: string): number | null;
|
|
76
|
+
/**
|
|
77
|
+
* Bundle text: a header line then every record of the chosen hosts with
|
|
78
|
+
* `ts >= sinceMs`. `hosts` null = every persisted host.
|
|
79
|
+
*/
|
|
80
|
+
export declare function buildBundle(dir: string, from: string, hosts: readonly string[] | null, sinceMs: number): {
|
|
81
|
+
text: string;
|
|
82
|
+
rows: number;
|
|
83
|
+
};
|
|
84
|
+
export interface ImportResult extends MergeStats {
|
|
85
|
+
hosts: string[];
|
|
86
|
+
/** The exporting host's own id (bundle header) — may differ from the ssh alias used to reach it. */
|
|
87
|
+
from: string | null;
|
|
88
|
+
skipped: number;
|
|
89
|
+
/** Records claiming this host — ignored: a host's own files come only from its own collection. */
|
|
90
|
+
ignored_local: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Merge a bundle into the store, one file per source host. Records for
|
|
94
|
+
* `localHost` are ignored (the local collection is authoritative, and it stops a
|
|
95
|
+
* pushed bundle echoing our own rows back). Idempotent.
|
|
96
|
+
*/
|
|
97
|
+
export declare function importBundle(dir: string, text: string, localHost: string): ImportResult;
|
|
98
|
+
/**
|
|
99
|
+
* Rows/limits for a report: the fresh local collection unioned with everything
|
|
100
|
+
* persisted (fresh wins per key), restricted to `hosts` (null = all).
|
|
101
|
+
*/
|
|
102
|
+
export declare function mergedView(dir: string, localHost: string, fresh: {
|
|
103
|
+
rows: readonly UsageRow[];
|
|
104
|
+
limits: readonly LimitEvent[];
|
|
105
|
+
}, hosts: readonly string[] | null, sinceMs: number, untilMs: number): {
|
|
106
|
+
rows: UsageRow[];
|
|
107
|
+
limits: LimitEvent[];
|
|
108
|
+
hosts: string[];
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"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"}
|