hacklab 0.18.0 → 0.20.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 +43 -34
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +18 -19
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/login.d.ts +4 -2
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +6 -11
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +5 -2
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/setup-rail.d.ts +4 -3
- package/dist/commands/setup-rail.d.ts.map +1 -1
- package/dist/commands/setup-rail.js +5 -4
- package/dist/commands/setup-rail.js.map +1 -1
- package/dist/commands/setup.d.ts +2 -2
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +39 -33
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +32 -17
- package/dist/commands/sync.js.map +1 -1
- package/dist/config.d.ts +8 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/prompt-consent.d.ts +37 -23
- package/dist/prompt-consent.d.ts.map +1 -1
- package/dist/prompt-consent.js +75 -58
- package/dist/prompt-consent.js.map +1 -1
- package/dist/prompt-stats.d.ts +116 -7
- package/dist/prompt-stats.d.ts.map +1 -1
- package/dist/prompt-stats.js +205 -25
- package/dist/prompt-stats.js.map +1 -1
- package/dist/registry.js +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/scanners/incremental.d.ts +114 -17
- package/dist/scanners/incremental.d.ts.map +1 -1
- package/dist/scanners/incremental.js +235 -74
- package/dist/scanners/incremental.js.map +1 -1
- package/dist/scanners/index.d.ts +7 -3
- package/dist/scanners/index.d.ts.map +1 -1
- package/dist/scanners/index.js +8 -40
- package/dist/scanners/index.js.map +1 -1
- package/dist/scanners/util.d.ts +32 -15
- package/dist/scanners/util.d.ts.map +1 -1
- package/dist/scanners/util.js +10 -34
- package/dist/scanners/util.js.map +1 -1
- package/dist/session.d.ts +4 -4
- package/dist/sync.d.ts +3 -3
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +27 -14
- package/dist/sync.js.map +1 -1
- package/package.json +1 -1
package/dist/prompt-stats.js
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
|
-
import { findFiles } from './scanners/util.js';
|
|
6
|
+
import { findFiles, toDateStr } from './scanners/util.js';
|
|
7
7
|
/**
|
|
8
8
|
* Prompt statistics, computed entirely on this machine from the local Claude
|
|
9
9
|
* Code transcripts and uploaded only under an explicit consent tier (see
|
|
10
10
|
* prompt-consent.ts).
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* Three things come out of a full scan:
|
|
13
13
|
*
|
|
14
|
-
* - a histogram of how long the user's own prompts are, in words
|
|
14
|
+
* - a histogram of how long the user's own prompts are, in words — every
|
|
15
|
+
* bucket an exact word count — plus the tail, which is where the prompts
|
|
16
|
+
* longer than the axis are reported, and their only home
|
|
15
17
|
* - a per-project prompt count, keyed by the project's git origin
|
|
18
|
+
* - the prompt *activity* aggregate: per-session start/end/count and a
|
|
19
|
+
* per-day prompt/word tally. That one is also what the minutely tick
|
|
20
|
+
* accumulates incrementally (scanners/incremental.ts), so a full scan can
|
|
21
|
+
* re-base the tick's state without either drifting from the other.
|
|
16
22
|
*
|
|
17
23
|
* and, under the `full` tier only, a sample of the raw prompt text so the
|
|
18
24
|
* backend can score "how technical is this person's prompting". The backend
|
|
@@ -26,8 +32,10 @@ const execFileAsync = promisify(execFile);
|
|
|
26
32
|
/** Buckets are `1..bucketMax`, so the axis stays readable at any prompt length. */
|
|
27
33
|
export const PROMPT_LENGTH_BUCKET_MIN = 10;
|
|
28
34
|
export const PROMPT_LENGTH_BUCKET_MAX = 100;
|
|
29
|
-
/** The percentile that sets `bucketMax`; everything above lands in
|
|
30
|
-
export const
|
|
35
|
+
/** The percentile that sets `bucketMax`; everything above it lands in `tail`. */
|
|
36
|
+
export const PROMPT_LENGTH_AXIS_PERCENTILE = 0.9;
|
|
37
|
+
/** The server's cap on `tail` entries; longer distributions are coarsened. */
|
|
38
|
+
export const PROMPT_TAIL_MAX_ENTRIES = 400;
|
|
31
39
|
/** Matches the backend's cap — anything longer is truncated before upload. */
|
|
32
40
|
export const CONVERSATION_SAMPLE_MAX_CHARS = 20_000;
|
|
33
41
|
/**
|
|
@@ -71,9 +79,93 @@ export function countWords(text) {
|
|
|
71
79
|
const matches = text.match(/\S+/g);
|
|
72
80
|
return matches ? matches.length : 0;
|
|
73
81
|
}
|
|
82
|
+
/** The server's cap on a session id. Longer than this and the row is rejected. */
|
|
83
|
+
export const PROMPT_SESSION_ID_MAX_CHARS = 128;
|
|
74
84
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
85
|
+
* A transcript line as prompt activity, or null when it isn't one.
|
|
86
|
+
*
|
|
87
|
+
* Stricter than `promptTextFrom` on purpose: a prompt with no session id or no
|
|
88
|
+
* usable timestamp can't be placed on a session or a day, and the server's
|
|
89
|
+
* schema would reject it, so it counts towards the histogram (which needs
|
|
90
|
+
* neither) and nothing else.
|
|
91
|
+
*/
|
|
92
|
+
export function parsePromptLine(line) {
|
|
93
|
+
if (!line.trim())
|
|
94
|
+
return null;
|
|
95
|
+
let parsed;
|
|
96
|
+
try {
|
|
97
|
+
parsed = JSON.parse(line);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
const text = promptTextFrom(parsed);
|
|
103
|
+
if (text === null)
|
|
104
|
+
return null;
|
|
105
|
+
const words = countWords(text);
|
|
106
|
+
if (words <= 0)
|
|
107
|
+
return null;
|
|
108
|
+
const entry = parsed;
|
|
109
|
+
const sessionId = typeof entry.sessionId === 'string' ? entry.sessionId.trim() : '';
|
|
110
|
+
if (!sessionId || sessionId.length > PROMPT_SESSION_ID_MAX_CHARS)
|
|
111
|
+
return null;
|
|
112
|
+
const timestamp = normalizeTimestamp(entry.timestamp);
|
|
113
|
+
if (!timestamp)
|
|
114
|
+
return null;
|
|
115
|
+
return { sessionId, timestamp, words };
|
|
116
|
+
}
|
|
117
|
+
/** An ISO-8601 UTC string, or null when the value isn't a usable instant. */
|
|
118
|
+
export function normalizeTimestamp(value) {
|
|
119
|
+
if (typeof value !== 'string' && typeof value !== 'number')
|
|
120
|
+
return null;
|
|
121
|
+
const at = typeof value === 'number' ? value : Date.parse(value);
|
|
122
|
+
if (!Number.isFinite(at))
|
|
123
|
+
return null;
|
|
124
|
+
return new Date(at).toISOString();
|
|
125
|
+
}
|
|
126
|
+
export function emptyPromptActivity() {
|
|
127
|
+
return { sessions: {}, daily: {} };
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Fold one prompt into an activity aggregate, returning the session and date it
|
|
131
|
+
* landed on so an incremental caller can mark exactly those dirty.
|
|
132
|
+
*
|
|
133
|
+
* The date is the UTC day of the timestamp — the same attribution
|
|
134
|
+
* `toDateStr` gives every token daily row, so the two halves of a sync agree
|
|
135
|
+
* about which day a piece of work belongs to.
|
|
136
|
+
*/
|
|
137
|
+
export function addPromptToActivity(activity, line) {
|
|
138
|
+
const session = activity.sessions[line.sessionId];
|
|
139
|
+
if (session) {
|
|
140
|
+
if (line.timestamp < session.startedAt)
|
|
141
|
+
session.startedAt = line.timestamp;
|
|
142
|
+
if (line.timestamp > session.lastActiveAt) {
|
|
143
|
+
session.lastActiveAt = line.timestamp;
|
|
144
|
+
}
|
|
145
|
+
session.promptCount += 1;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
activity.sessions[line.sessionId] = {
|
|
149
|
+
startedAt: line.timestamp,
|
|
150
|
+
lastActiveAt: line.timestamp,
|
|
151
|
+
promptCount: 1,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
const date = toDateStr(line.timestamp);
|
|
155
|
+
const day = activity.daily[date];
|
|
156
|
+
if (day) {
|
|
157
|
+
day.prompts += 1;
|
|
158
|
+
day.words += line.words;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
activity.daily[date] = { prompts: 1, words: line.words };
|
|
162
|
+
}
|
|
163
|
+
return { sessionId: line.sessionId, date };
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Where the histogram's axis ends for this user's own distribution: their p90
|
|
167
|
+
* prompt length rounded up to a multiple of 10, clamped to [10, 100]. Anything
|
|
168
|
+
* longer is reported by `buildTail` instead.
|
|
77
169
|
*
|
|
78
170
|
* Per-user rather than fixed because prompt length varies enormously between
|
|
79
171
|
* people — a fixed axis would either crush a terse user's histogram into the
|
|
@@ -83,23 +175,72 @@ export function bucketMaxFor(wordCounts) {
|
|
|
83
175
|
if (wordCounts.length === 0)
|
|
84
176
|
return PROMPT_LENGTH_BUCKET_MIN;
|
|
85
177
|
const sorted = [...wordCounts].sort((a, b) => a - b);
|
|
86
|
-
const index = Math.min(sorted.length - 1, Math.floor(sorted.length *
|
|
178
|
+
const index = Math.min(sorted.length - 1, Math.floor(sorted.length * PROMPT_LENGTH_AXIS_PERCENTILE));
|
|
87
179
|
const p90 = sorted[index] ?? PROMPT_LENGTH_BUCKET_MIN;
|
|
88
180
|
const rounded = Math.ceil(p90 / 10) * 10;
|
|
89
181
|
return Math.min(PROMPT_LENGTH_BUCKET_MAX, Math.max(PROMPT_LENGTH_BUCKET_MIN, rounded));
|
|
90
182
|
}
|
|
91
183
|
/**
|
|
92
|
-
* Bucket the word counts.
|
|
93
|
-
*
|
|
94
|
-
*
|
|
184
|
+
* Bucket the word counts. Every bucket `1..bucketMax` is an exact word count —
|
|
185
|
+
* there is no overflow bar. Empty buckets are omitted; the chart fills the gaps.
|
|
186
|
+
*
|
|
187
|
+
* Prompts longer than `bucketMax` are not in here at all: they are reported by
|
|
188
|
+
* `buildTail`, and only there. So the histogram and the tail partition the
|
|
189
|
+
* scan — sum(histogram counts) + sum(tail counts) === totalPrompts, always.
|
|
95
190
|
*/
|
|
96
191
|
export function buildHistogram(wordCounts, bucketMax) {
|
|
97
192
|
const counts = new Map();
|
|
98
193
|
for (const words of wordCounts) {
|
|
99
194
|
if (words <= 0)
|
|
100
195
|
continue;
|
|
101
|
-
|
|
102
|
-
|
|
196
|
+
if (words > bucketMax)
|
|
197
|
+
continue;
|
|
198
|
+
counts.set(words, (counts.get(words) ?? 0) + 1);
|
|
199
|
+
}
|
|
200
|
+
return [...counts.entries()]
|
|
201
|
+
.map(([length, count]) => ({ length, count }))
|
|
202
|
+
.sort((a, b) => a.length - b.length);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The exact distribution of everything *longer* than `bucketMax`, which the
|
|
206
|
+
* histogram does not cover at all. One entry per distinct word count,
|
|
207
|
+
* ascending; empty (never absent) when nothing exceeds `bucketMax` — the
|
|
208
|
+
* field's presence on the wire is the marker that the histogram's bars are
|
|
209
|
+
* exact.
|
|
210
|
+
*
|
|
211
|
+
* Lengths only — no prompt text is involved here, or anywhere near it.
|
|
212
|
+
*
|
|
213
|
+
* A machine with a long history can have thousands of distinct long lengths,
|
|
214
|
+
* far past what the server accepts, so an over-cap tail is coarsened: lengths
|
|
215
|
+
* are rounded to multiples of 2, then 4, 8, … until at most
|
|
216
|
+
* `PROMPT_TAIL_MAX_ENTRIES` entries remain, summing the counts that collapse
|
|
217
|
+
* together. Rounding is *up* so that a coarsened entry still sits above
|
|
218
|
+
* `bucketMax` — rounding down could claim a length inside the histogram's own
|
|
219
|
+
* exact range for a prompt the histogram never counted.
|
|
220
|
+
*
|
|
221
|
+
* Deterministic: the result depends only on the multiset of word counts.
|
|
222
|
+
*/
|
|
223
|
+
export function buildTail(wordCounts, bucketMax) {
|
|
224
|
+
const exact = new Map();
|
|
225
|
+
for (const words of wordCounts) {
|
|
226
|
+
if (words <= bucketMax)
|
|
227
|
+
continue;
|
|
228
|
+
exact.set(words, (exact.get(words) ?? 0) + 1);
|
|
229
|
+
}
|
|
230
|
+
if (exact.size === 0)
|
|
231
|
+
return [];
|
|
232
|
+
let counts = exact;
|
|
233
|
+
let step = 1;
|
|
234
|
+
while (counts.size > PROMPT_TAIL_MAX_ENTRIES) {
|
|
235
|
+
step *= 2;
|
|
236
|
+
const coarser = new Map();
|
|
237
|
+
// Always coarsen from the exact counts, so the rounding is one clean
|
|
238
|
+
// division rather than a rounding of a rounding.
|
|
239
|
+
for (const [length, count] of exact) {
|
|
240
|
+
const rounded = Math.ceil(length / step) * step;
|
|
241
|
+
coarser.set(rounded, (coarser.get(rounded) ?? 0) + count);
|
|
242
|
+
}
|
|
243
|
+
counts = coarser;
|
|
103
244
|
}
|
|
104
245
|
return [...counts.entries()]
|
|
105
246
|
.map(([length, count]) => ({ length, count }))
|
|
@@ -121,6 +262,22 @@ export async function gitOriginUrl(cwd) {
|
|
|
121
262
|
return null;
|
|
122
263
|
}
|
|
123
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Newest transcript first. The sample is meant to be the user's *recent*
|
|
267
|
+
* prompting, so the walk order has to be time order — the directory walk's own
|
|
268
|
+
* order is alphabetical and would hand the scorer whatever happens to sort
|
|
269
|
+
* first, which for a long-lived machine is usually a project abandoned years
|
|
270
|
+
* ago. A file we can't stat sorts last rather than dropping out.
|
|
271
|
+
*/
|
|
272
|
+
async function byMtimeDesc(paths) {
|
|
273
|
+
const stamped = await Promise.all(paths.map(async (path) => ({
|
|
274
|
+
path,
|
|
275
|
+
mtimeMs: await stat(path)
|
|
276
|
+
.then((s) => s.mtimeMs)
|
|
277
|
+
.catch(() => 0),
|
|
278
|
+
})));
|
|
279
|
+
return stamped.sort((a, b) => b.mtimeMs - a.mtimeMs).map((f) => f.path);
|
|
280
|
+
}
|
|
124
281
|
/**
|
|
125
282
|
* Scan the local Claude Code transcripts.
|
|
126
283
|
*
|
|
@@ -130,10 +287,11 @@ export async function gitOriginUrl(cwd) {
|
|
|
130
287
|
*/
|
|
131
288
|
export async function scanPromptStats(options = {}) {
|
|
132
289
|
const root = join(homedir(), '.claude', 'projects');
|
|
133
|
-
const files = await findFiles(root, '.jsonl');
|
|
290
|
+
const files = await byMtimeDesc(await findFiles(root, '.jsonl'));
|
|
134
291
|
if (files.length === 0)
|
|
135
292
|
return null;
|
|
136
293
|
const wordCounts = [];
|
|
294
|
+
const activity = emptyPromptActivity();
|
|
137
295
|
const sampleParts = [];
|
|
138
296
|
let sampleChars = 0;
|
|
139
297
|
// Keyed by the transcript's project directory, which is Claude Code's own
|
|
@@ -154,6 +312,12 @@ export async function scanPromptStats(options = {}) {
|
|
|
154
312
|
catch {
|
|
155
313
|
continue;
|
|
156
314
|
}
|
|
315
|
+
// Within a file the newest prompts are last, so the sample is drained in
|
|
316
|
+
// reverse after the file is read. Only collected while the budget is still
|
|
317
|
+
// open, so a full sample doesn't hold a whole history in memory.
|
|
318
|
+
const collectSample = options.includeSample === true &&
|
|
319
|
+
sampleChars < CONVERSATION_SAMPLE_MAX_CHARS;
|
|
320
|
+
const fileSample = [];
|
|
157
321
|
for (const line of content.split('\n')) {
|
|
158
322
|
if (!line.trim())
|
|
159
323
|
continue;
|
|
@@ -176,17 +340,22 @@ export async function scanPromptStats(options = {}) {
|
|
|
176
340
|
continue;
|
|
177
341
|
wordCounts.push(words);
|
|
178
342
|
project.promptCount += 1;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
project.lastActiveAt = at;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (options.includeSample &&
|
|
186
|
-
sampleChars < CONVERSATION_SAMPLE_MAX_CHARS) {
|
|
187
|
-
sampleParts.push(text);
|
|
188
|
-
sampleChars += text.length + 2;
|
|
343
|
+
const at = Date.parse(String(entry.timestamp));
|
|
344
|
+
if (Number.isFinite(at) && at > project.lastActiveAt) {
|
|
345
|
+
project.lastActiveAt = at;
|
|
189
346
|
}
|
|
347
|
+
const promptLine = parsePromptLine(line);
|
|
348
|
+
if (promptLine)
|
|
349
|
+
addPromptToActivity(activity, promptLine);
|
|
350
|
+
if (collectSample)
|
|
351
|
+
fileSample.push(text);
|
|
352
|
+
}
|
|
353
|
+
for (let i = fileSample.length - 1; i >= 0; i--) {
|
|
354
|
+
if (sampleChars >= CONVERSATION_SAMPLE_MAX_CHARS)
|
|
355
|
+
break;
|
|
356
|
+
const text = fileSample[i];
|
|
357
|
+
sampleParts.push(text);
|
|
358
|
+
sampleChars += text.length + 2;
|
|
190
359
|
}
|
|
191
360
|
}
|
|
192
361
|
if (wordCounts.length === 0)
|
|
@@ -196,7 +365,9 @@ export async function scanPromptStats(options = {}) {
|
|
|
196
365
|
totalPrompts: wordCounts.length,
|
|
197
366
|
bucketMax,
|
|
198
367
|
histogram: buildHistogram(wordCounts, bucketMax),
|
|
368
|
+
tail: buildTail(wordCounts, bucketMax),
|
|
199
369
|
projects: await resolveProjects(byProjectDir),
|
|
370
|
+
activity,
|
|
200
371
|
};
|
|
201
372
|
if (options.includeSample && sampleParts.length > 0) {
|
|
202
373
|
stats.conversationSample = sampleParts
|
|
@@ -205,6 +376,15 @@ export async function scanPromptStats(options = {}) {
|
|
|
205
376
|
}
|
|
206
377
|
return stats;
|
|
207
378
|
}
|
|
379
|
+
/**
|
|
380
|
+
* The `promptStats` block as the server takes it. `activity` is deliberately
|
|
381
|
+
* dropped: it is local bookkeeping for the tick's incremental state, and it
|
|
382
|
+
* travels under its own top-level `promptActivity` field instead.
|
|
383
|
+
*/
|
|
384
|
+
export function promptStatsPayload(stats) {
|
|
385
|
+
const { activity: _activity, ...wire } = stats;
|
|
386
|
+
return wire;
|
|
387
|
+
}
|
|
208
388
|
/**
|
|
209
389
|
* Turn the per-directory tallies into repo-keyed entries. Directories with no
|
|
210
390
|
* prompts, no recorded `cwd`, or no git origin drop out — the backend can only
|
package/dist/prompt-stats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-stats.js","sourceRoot":"","sources":["../src/prompt-stats.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompt-stats.js","sourceRoot":"","sources":["../src/prompt-stats.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
1
|
+
import { type PromptActivityAggregate, type PromptLine } from '../prompt-stats.js';
|
|
2
|
+
import { type AggregateScan, type PromptActivity, type ScanResult, type TokensMessages, type Tool, type UsageLine } from './index.js';
|
|
3
|
+
export declare const SCAN_STATE_VERSION = 2;
|
|
4
|
+
/** How long a session is kept in the state after its last prompt. */
|
|
5
|
+
export declare const PROMPT_SESSION_RETENTION_DAYS = 45;
|
|
6
|
+
/** How long a per-day prompt tally is kept. Matches the wire's date cap. */
|
|
7
|
+
export declare const PROMPT_DAILY_RETENTION_DAYS = 400;
|
|
3
8
|
/** Where a file's tail-follow stands: what we saw, and how far we read. */
|
|
4
9
|
export type FileState = {
|
|
5
10
|
size: number;
|
|
@@ -22,11 +27,33 @@ export type HarnessState = {
|
|
|
22
27
|
walMtimeMs?: number;
|
|
23
28
|
/** "date|model" -> tokens/messages */
|
|
24
29
|
daily: Record<string, TokensMessages>;
|
|
25
|
-
/** "date|hour|model" -> tokens/messages */
|
|
26
|
-
hourly: Record<string, TokensMessages>;
|
|
27
30
|
/** model -> cumulative tokens */
|
|
28
31
|
models: Record<string, number>;
|
|
29
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* The prompt half of the state: the same tail-read that counts tokens also
|
|
35
|
+
* counts the user's own prompts, so `promptActivity` can ride out on the tick
|
|
36
|
+
* instead of waiting a day.
|
|
37
|
+
*
|
|
38
|
+
* Unlike the token rows, prompt rows are upserted with GREATEST semantics per
|
|
39
|
+
* (machine, session) and (machine, date), so a resend is free and a date never
|
|
40
|
+
* has to go out "complete". That's why the dirty sets here are per-session and
|
|
41
|
+
* per-date and can be drained a capped batch at a time.
|
|
42
|
+
*/
|
|
43
|
+
export type PromptState = PromptActivityAggregate & {
|
|
44
|
+
/** Session ids changed since the last accepted upload. */
|
|
45
|
+
dirtySessions: string[];
|
|
46
|
+
/** Dates whose tally changed since the last accepted upload. */
|
|
47
|
+
dirtyDates: string[];
|
|
48
|
+
/**
|
|
49
|
+
* Exactly what the last `tickPayload` put on the wire. `markUploaded` clears
|
|
50
|
+
* this and nothing else, so anything a cap held back stays dirty.
|
|
51
|
+
*/
|
|
52
|
+
sent?: {
|
|
53
|
+
sessions: string[];
|
|
54
|
+
dates: string[];
|
|
55
|
+
};
|
|
56
|
+
};
|
|
30
57
|
export type ScanState = {
|
|
31
58
|
version: number;
|
|
32
59
|
harnesses: Record<string, HarnessState>;
|
|
@@ -38,6 +65,8 @@ export type ScanState = {
|
|
|
38
65
|
* rows for it. Cleared only on a 200, so a failed POST retries next tick.
|
|
39
66
|
*/
|
|
40
67
|
dirty: string[];
|
|
68
|
+
/** Prompt sessions and per-day counts, plus what's outstanding. */
|
|
69
|
+
prompts: PromptState;
|
|
41
70
|
/** Cumulative totals as of the last accepted upload. */
|
|
42
71
|
uploaded: {
|
|
43
72
|
toolTotals: Record<string, number>;
|
|
@@ -51,6 +80,7 @@ export type ScanState = {
|
|
|
51
80
|
/** Lives next to the session file, so it honors HACKLAB_SESSION_PATH. */
|
|
52
81
|
export declare function scanStatePath(): string;
|
|
53
82
|
export declare function emptyHarness(): HarnessState;
|
|
83
|
+
export declare function emptyPromptState(): PromptState;
|
|
54
84
|
export declare function emptyState(): ScanState;
|
|
55
85
|
/**
|
|
56
86
|
* The saved state, or null when there isn't a usable one — missing, corrupt, or
|
|
@@ -58,12 +88,11 @@ export declare function emptyState(): ScanState;
|
|
|
58
88
|
* callers must treat that rebuild as a baseline, not as new tokens.
|
|
59
89
|
*/
|
|
60
90
|
export declare function loadScanState(): Promise<ScanState | null>;
|
|
61
|
-
/** Persist the state, pruning
|
|
62
|
-
*
|
|
91
|
+
/** Persist the state, pruning prompt rows that aged out of their retention
|
|
92
|
+
* window (they'd otherwise accumulate forever). Best-effort. */
|
|
63
93
|
export declare function saveScanState(state: ScanState): Promise<void>;
|
|
64
94
|
type Aggregates = {
|
|
65
95
|
daily: Record<string, TokensMessages>;
|
|
66
|
-
hourly: Record<string, TokensMessages>;
|
|
67
96
|
models: Record<string, number>;
|
|
68
97
|
};
|
|
69
98
|
/** A full scanner's result as the maps the state stores. */
|
|
@@ -81,6 +110,12 @@ export type JsonlSource = {
|
|
|
81
110
|
tool: Tool;
|
|
82
111
|
files: () => Promise<string[]>;
|
|
83
112
|
parse: (line: string) => UsageLine | null;
|
|
113
|
+
/**
|
|
114
|
+
* Claude Code only: the same line read as prompt activity. Set here rather
|
|
115
|
+
* than branching on `tool` so the tail-read stays one pass and a test can
|
|
116
|
+
* point a prompt-bearing harness at a tmp dir.
|
|
117
|
+
*/
|
|
118
|
+
parsePrompt?: (line: string) => PromptLine | null;
|
|
84
119
|
};
|
|
85
120
|
export type CodexSource = {
|
|
86
121
|
files: () => Promise<string[]>;
|
|
@@ -106,10 +141,15 @@ export type TickOutcome = {
|
|
|
106
141
|
};
|
|
107
142
|
/**
|
|
108
143
|
* One incremental pass over every harness. `prev` is the saved state, or null
|
|
109
|
-
* for a cold start — in which case this reads everything and marks
|
|
110
|
-
* dirty: those tokens are already on the server (the daily job put them
|
|
111
|
-
* and re-uploading every date would only invite the reconcile to prune
|
|
112
|
-
* this scan can't see (Cursor's, above all).
|
|
144
|
+
* for a cold start — in which case this reads everything and marks no *token*
|
|
145
|
+
* date dirty: those tokens are already on the server (the daily job put them
|
|
146
|
+
* there), and re-uploading every date would only invite the reconcile to prune
|
|
147
|
+
* rows this scan can't see (Cursor's, above all).
|
|
148
|
+
*
|
|
149
|
+
* Prompt rows go the other way on a cold start: everything found is marked
|
|
150
|
+
* dirty. They're idempotent GREATEST upserts, so a resend costs nothing, and a
|
|
151
|
+
* cold start (fresh install, or a state file this version can't read) is
|
|
152
|
+
* exactly the case where we have no evidence any of it ever reached the server.
|
|
113
153
|
*/
|
|
114
154
|
export declare function runTick(prev: ScanState | null, sources?: TickSources): Promise<TickOutcome>;
|
|
115
155
|
/** Cumulative per-tool and per-model totals for this machine. */
|
|
@@ -118,10 +158,19 @@ export declare function cumulativeTotals(state: ScanState): {
|
|
|
118
158
|
modelTotals: Record<string, number>;
|
|
119
159
|
};
|
|
120
160
|
export declare function sameTotals(a: Record<string, number>, b: Record<string, number>): boolean;
|
|
161
|
+
/**
|
|
162
|
+
* Is there prompt activity waiting to go out?
|
|
163
|
+
*
|
|
164
|
+
* A dirty id whose row is gone (pruned between the mark and the send) doesn't
|
|
165
|
+
* count: it would have the tick POST an empty block every minute forever, since
|
|
166
|
+
* there'd be nothing for `markUploaded` to clear.
|
|
167
|
+
*/
|
|
168
|
+
export declare function hasPromptActivity(state: ScanState): boolean;
|
|
121
169
|
/**
|
|
122
170
|
* What a tick uploads: cumulative tool/model totals (the server diffs those
|
|
123
|
-
* against its own per-machine snapshot) plus the daily
|
|
124
|
-
*
|
|
171
|
+
* against its own per-machine snapshot) plus the daily rows for the dirty dates
|
|
172
|
+
* only, and — under the `stats` or `full` tier — the outstanding prompt
|
|
173
|
+
* activity.
|
|
125
174
|
*
|
|
126
175
|
* Every harness's rows go out for a dirty date, including Cursor's — which the
|
|
127
176
|
* tick never scans, and carries over from the last full scan instead. The
|
|
@@ -129,16 +178,64 @@ export declare function sameTotals(a: Record<string, number>, b: Record<string,
|
|
|
129
178
|
* payload didn't mention, so a date has to be reported complete or the harnesses
|
|
130
179
|
* left out of it lose that day.
|
|
131
180
|
*/
|
|
132
|
-
export declare function tickPayload(state: ScanState
|
|
133
|
-
|
|
181
|
+
export declare function tickPayload(state: ScanState, opts?: {
|
|
182
|
+
promptActivity?: boolean;
|
|
183
|
+
}): AggregateScan;
|
|
184
|
+
/** Called on a 200: whatever that payload carried is on the server now. */
|
|
134
185
|
export declare function markUploaded(state: ScanState): void;
|
|
186
|
+
/**
|
|
187
|
+
* What a full scan knows about prompts, and may therefore rewrite.
|
|
188
|
+
*
|
|
189
|
+
* The three cases are genuinely different, and collapsing any two of them
|
|
190
|
+
* loses data: a command that never looked at prompts must not be read as a
|
|
191
|
+
* command that found none.
|
|
192
|
+
*/
|
|
193
|
+
export type StagedPrompts =
|
|
194
|
+
/** A prompt scan ran — re-base the prompt state on its aggregate. */
|
|
195
|
+
{
|
|
196
|
+
scanned: PromptActivityAggregate;
|
|
197
|
+
}
|
|
198
|
+
/** The user is at the `none` tier — drop the prompt state entirely. */
|
|
199
|
+
| {
|
|
200
|
+
scanned: null;
|
|
201
|
+
}
|
|
202
|
+
/** This command never reads prompts (`hacklab scan`) — leave them alone. */
|
|
203
|
+
| 'untouched';
|
|
204
|
+
/**
|
|
205
|
+
* A full scan, re-based and ready to upload: the prompt rows this upload should
|
|
206
|
+
* carry, and the `commit` that records the whole thing as delivered.
|
|
207
|
+
*/
|
|
208
|
+
export type StagedFullScan = {
|
|
209
|
+
/**
|
|
210
|
+
* Outstanding prompt activity to put on this upload, or undefined when there
|
|
211
|
+
* is none (or the user is at the `none` tier).
|
|
212
|
+
*/
|
|
213
|
+
promptActivity?: PromptActivity;
|
|
214
|
+
/**
|
|
215
|
+
* Call once the server took the payload. Persists the re-based state, clears
|
|
216
|
+
* the prompt rows this upload claimed, and leaves anything a cap held back
|
|
217
|
+
* dirty for the next run. Best-effort and never throws.
|
|
218
|
+
*/
|
|
219
|
+
commit: () => Promise<void>;
|
|
220
|
+
};
|
|
135
221
|
/**
|
|
136
222
|
* Rebuild the whole state from a full scan's results — the self-healing half of
|
|
137
223
|
* the design. Whatever the tick's tail-follow got wrong (a rotated log, a
|
|
138
224
|
* mid-file model switch, a Codex date guessed from an mtime) is corrected here,
|
|
139
225
|
* so incremental drift can never outlive a day. Best-effort: a state we failed
|
|
140
|
-
* to rebuild costs a tick, never the sync that
|
|
226
|
+
* to rebuild costs a tick, never the sync that called us.
|
|
227
|
+
*
|
|
228
|
+
* Staged rather than persisted outright, because the full-scan paths carry
|
|
229
|
+
* prompt activity too — a machine with no daemon has no tick to drain it. The
|
|
230
|
+
* rebuild diffs the scan's aggregate against what was already sent, claims the
|
|
231
|
+
* difference for this upload, and only `commit` (on a 200) clears it. A failed
|
|
232
|
+
* POST therefore leaves every row dirty for the next run, which the server's
|
|
233
|
+
* GREATEST upserts make free to resend.
|
|
234
|
+
*
|
|
235
|
+
* `prompts` says whether this caller has any authority over the prompt state —
|
|
236
|
+
* see `StagedPrompts`. Only a caller that actually resolved the consent tier
|
|
237
|
+
* gets to rewrite it, and only such a caller claims prompt rows for the upload.
|
|
141
238
|
*/
|
|
142
|
-
export declare function
|
|
239
|
+
export declare function stageFullScan(results: ScanResult[], prompts?: StagedPrompts, sources?: TickSources): Promise<StagedFullScan>;
|
|
143
240
|
export {};
|
|
144
241
|
//# sourceMappingURL=incremental.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/scanners/incremental.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/scanners/incremental.ts"],"names":[],"mappings":"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"}
|