hacklab 0.19.0 → 0.21.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 +44 -25
- package/dist/cli.js +1 -1
- 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/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.d.ts.map +1 -1
- package/dist/commands/setup.js +32 -26
- 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 +149 -7
- package/dist/prompt-stats.d.ts.map +1 -1
- package/dist/prompt-stats.js +288 -28
- package/dist/prompt-stats.js.map +1 -1
- package/dist/scanners/incremental.d.ts +131 -17
- package/dist/scanners/incremental.d.ts.map +1 -1
- package/dist/scanners/incremental.js +252 -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/sync.d.ts +3 -3
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +32 -14
- package/dist/sync.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/sync.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as clack from '@clack/prompts';
|
|
2
2
|
import { appendSyncLog, clearSyncPaused, markSyncPaused, readSyncPaused, trimSyncLog, } from '../daily-sync.js';
|
|
3
3
|
import { captureEvent } from '../posthog.js';
|
|
4
|
-
import {
|
|
5
|
-
import { cumulativeTotals, loadScanState, markUploaded,
|
|
4
|
+
import { loadPromptSync, parsePromptSyncFlag, resolvePromptSync, savePromptSync, } from '../prompt-consent.js';
|
|
5
|
+
import { cumulativeTotals, hasPromptActivity, loadScanState, markUploaded, runTick, sameTotals, saveScanState, stageFullScan, tickPayload, } from '../scanners/incremental.js';
|
|
6
6
|
import { collectToolScans, mergeToolScans } from '../scanners/index.js';
|
|
7
7
|
import { loadSessionState } from '../session.js';
|
|
8
8
|
import { checkSession, ensureFreshSession, formatTokens, LOGIN_EXPIRED_MESSAGE, refreshSession, runSync, SyncUploadError, scanConsentedPromptStats, syncGithubRepos, uploadTokenScan, } from '../sync.js';
|
|
@@ -17,11 +17,11 @@ const SESSION_EXPIRED_REASON = 'your hacklab session expired — run `hacklab lo
|
|
|
17
17
|
* --quiet the unattended daily run (logs to a file, no output)
|
|
18
18
|
*/
|
|
19
19
|
export async function sync(args = []) {
|
|
20
|
-
// Pull --share-prompt-
|
|
20
|
+
// Pull --share-prompt-sync out first so it works alongside every mode
|
|
21
21
|
// below (an agent can set consent on the same run that installs the daemon).
|
|
22
|
-
const { tier: flagTier, rest } =
|
|
22
|
+
const { tier: flagTier, rest } = parsePromptSyncFlag(args);
|
|
23
23
|
if (flagTier)
|
|
24
|
-
await
|
|
24
|
+
await savePromptSync(flagTier);
|
|
25
25
|
args = rest;
|
|
26
26
|
if (args.includes('--install-daily')) {
|
|
27
27
|
// Kept working (it shipped, and installed CLIs / old docs still say it) but
|
|
@@ -66,14 +66,24 @@ async function quietSync() {
|
|
|
66
66
|
const scan = mergeToolScans(results);
|
|
67
67
|
// Whatever the user already consented to. The unattended run never asks, so
|
|
68
68
|
// a machine that has never answered uploads token counts only.
|
|
69
|
-
const promptStats = await scanConsentedPromptStats((await
|
|
69
|
+
const promptStats = await scanConsentedPromptStats((await loadPromptSync()) ?? 'none');
|
|
70
70
|
// Upload tokens AND mirror pinned repos together, so the after-refresh retry
|
|
71
71
|
// below does the exact same work as the happy path (no silently-skipped repo
|
|
72
|
-
// sync on a day the session had to be refreshed mid-run).
|
|
73
|
-
//
|
|
72
|
+
// sync on a day the session had to be refreshed mid-run).
|
|
73
|
+
//
|
|
74
|
+
// The state rebuild is staged first: it works out which prompt rows are still
|
|
75
|
+
// outstanding, and this upload carries them, so a machine whose minutely tick
|
|
76
|
+
// never runs still gets its prompt activity up. Re-staging on the retry is
|
|
77
|
+
// free — the failed attempt committed nothing, so the claim comes out the
|
|
78
|
+
// same.
|
|
74
79
|
const push = async (s) => {
|
|
75
|
-
await
|
|
76
|
-
|
|
80
|
+
const staged = await stageFullScan(results, {
|
|
81
|
+
scanned: promptStats?.activity ?? null,
|
|
82
|
+
});
|
|
83
|
+
await uploadTokenScan(s, staged.promptActivity
|
|
84
|
+
? { ...scan, promptActivity: staged.promptActivity }
|
|
85
|
+
: scan, { promptStats });
|
|
86
|
+
await staged.commit();
|
|
77
87
|
await syncGithubRepos(s);
|
|
78
88
|
};
|
|
79
89
|
try {
|
|
@@ -158,8 +168,13 @@ async function tickSync() {
|
|
|
158
168
|
}
|
|
159
169
|
const session = await ensureFreshSession(sessionState.session);
|
|
160
170
|
const { state, changed } = await runTick(saved);
|
|
171
|
+
// A background job never asks: an unanswered machine syncs tokens only, and
|
|
172
|
+
// the prompt activity the tick counted stays on disk.
|
|
173
|
+
const promptSync = (await loadPromptSync()) ?? 'none';
|
|
174
|
+
const promptPending = promptSync !== 'none' && hasPromptActivity(state);
|
|
161
175
|
const totals = cumulativeTotals(state);
|
|
162
176
|
if (state.dirty.length === 0 &&
|
|
177
|
+
!promptPending &&
|
|
163
178
|
sameTotals(totals.toolTotals, state.uploaded.toolTotals) &&
|
|
164
179
|
sameTotals(totals.modelTotals, state.uploaded.modelTotals)) {
|
|
165
180
|
// The common case: nothing new to say. Persist only if the walk actually
|
|
@@ -168,11 +183,11 @@ async function tickSync() {
|
|
|
168
183
|
await saveScanState(state);
|
|
169
184
|
return;
|
|
170
185
|
}
|
|
171
|
-
const scan = tickPayload(state);
|
|
186
|
+
const scan = tickPayload(state, { promptActivity: promptPending });
|
|
172
187
|
const dates = state.dirty.length;
|
|
173
|
-
// No prompt
|
|
174
|
-
// minutely run has no business re-reading transcripts. Not
|
|
175
|
-
// — a background tick isn't user activity.
|
|
188
|
+
// No full prompt scan and no GitHub mirror: those are the daily job's work,
|
|
189
|
+
// and a minutely run has no business re-reading whole transcripts. Not
|
|
190
|
+
// interactive either — a background tick isn't user activity.
|
|
176
191
|
try {
|
|
177
192
|
const result = await uploadTokenScan(session, scan);
|
|
178
193
|
markUploaded(state);
|
|
@@ -238,7 +253,7 @@ async function interactiveSync() {
|
|
|
238
253
|
const session = await ensureFreshSession(sessionState.session);
|
|
239
254
|
// Ask before scanning anything conversational. Asked once, then remembered;
|
|
240
255
|
// an unanswered or non-TTY run resolves to 'none'.
|
|
241
|
-
const
|
|
256
|
+
const promptSync = await resolvePromptSync(null, { interactive: true });
|
|
242
257
|
console.log('');
|
|
243
258
|
console.log(bold(' hacklab sync'));
|
|
244
259
|
console.log(dim(' scanning local AI tool usage...'));
|
|
@@ -247,7 +262,7 @@ async function interactiveSync() {
|
|
|
247
262
|
try {
|
|
248
263
|
// Manual `hacklab sync` — tag the upload as interactive so the backend counts
|
|
249
264
|
// it as user activity (the daily background job doesn't).
|
|
250
|
-
result = await runSync(session, { interactive: true,
|
|
265
|
+
result = await runSync(session, { interactive: true, promptSync });
|
|
251
266
|
}
|
|
252
267
|
catch (e) {
|
|
253
268
|
error(e instanceof Error ? e.message : 'sync failed');
|
|
@@ -285,7 +300,7 @@ async function interactiveSync() {
|
|
|
285
300
|
}
|
|
286
301
|
if (result.promptStats) {
|
|
287
302
|
const { totalPrompts } = result.promptStats;
|
|
288
|
-
info(` prompts ${formatTokens(totalPrompts)} scanned${
|
|
303
|
+
info(` prompts ${formatTokens(totalPrompts)} scanned${promptSync === 'full' ? dim(' (+ text sample)') : ''}`);
|
|
289
304
|
// The backend can only attach a project's count if the repo matches one of
|
|
290
305
|
// this user's own projects. Reporting the match rate keeps a scan that
|
|
291
306
|
// matched nothing from reading as a success.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -20,10 +20,16 @@ export type HacklabConfig = {
|
|
|
20
20
|
cursorEmail?: string;
|
|
21
21
|
dailySync?: DailySyncRecord;
|
|
22
22
|
/**
|
|
23
|
-
* Consent for
|
|
23
|
+
* Consent for syncing Claude Code conversation data: 'none' | 'stats' |
|
|
24
24
|
* 'full'. Absent means never asked — see prompt-consent.ts, which owns the
|
|
25
25
|
* tiers and treats an unset value as "ask", never as a yes.
|
|
26
26
|
*/
|
|
27
|
+
promptSync?: string;
|
|
28
|
+
/**
|
|
29
|
+
* The obsolete one-off prompt-stats consent. Declared only so
|
|
30
|
+
* `savePromptSync` can delete it: it answered a narrower question (a scan
|
|
31
|
+
* uploaded once a day) than `promptSync` asks, so it never carries over.
|
|
32
|
+
*/
|
|
27
33
|
promptStatsConsent?: string;
|
|
28
34
|
};
|
|
29
35
|
/** Where a resolved credential came from, so `config` can show what actually wins. */
|
|
@@ -59,7 +65,7 @@ export declare function saveConfig(config: HacklabConfig): Promise<void>;
|
|
|
59
65
|
* the rest of it. Unlike `loadConfig`, which flattens every read failure to
|
|
60
66
|
* `{}`, this refuses to write when the file exists but can't be parsed —
|
|
61
67
|
* spreading `{}` over an unreadable config would silently drop the user's cursor
|
|
62
|
-
* key and prompt-
|
|
68
|
+
* key and prompt-sync consent, and nothing here is worth that.
|
|
63
69
|
*
|
|
64
70
|
* `mutate` returns the config to write, or null for "nothing to change" (no
|
|
65
71
|
* write at all — a background job shouldn't rewrite config.json for nothing).
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;mDAE+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAID,sFAAsF;AACtF,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,gBAAgB,CAAA;IAC9B,WAAW,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,CAgB7D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAOzD;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI,GACtD,OAAO,CAAC,OAAO,CAAC,CA6BlB"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;mDAE+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAID,sFAAsF;AACtF,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,gBAAgB,CAAA;IAC9B,WAAW,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,CAgB7D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAOzD;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI,GACtD,OAAO,CAAC,OAAO,CAAC,CA6BlB"}
|
package/dist/config.js
CHANGED
|
@@ -51,7 +51,7 @@ export async function saveConfig(config) {
|
|
|
51
51
|
* the rest of it. Unlike `loadConfig`, which flattens every read failure to
|
|
52
52
|
* `{}`, this refuses to write when the file exists but can't be parsed —
|
|
53
53
|
* spreading `{}` over an unreadable config would silently drop the user's cursor
|
|
54
|
-
* key and prompt-
|
|
54
|
+
* key and prompt-sync consent, and nothing here is worth that.
|
|
55
55
|
*
|
|
56
56
|
* `mutate` returns the config to write, or null for "nothing to change" (no
|
|
57
57
|
* write at all — a background job shouldn't rewrite config.json for nothing).
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/prompt-consent.d.ts
CHANGED
|
@@ -1,40 +1,54 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Consent for
|
|
2
|
+
* Consent for syncing anything derived from the user's Claude Code
|
|
3
3
|
* conversations.
|
|
4
4
|
*
|
|
5
5
|
* Nothing conversation-derived leaves the machine until someone has answered
|
|
6
6
|
* this explicitly. The tiers are additive:
|
|
7
7
|
*
|
|
8
|
-
* none token counts only —
|
|
9
|
-
* stats + prompt
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* none token counts only — nothing prompt-related leaves the machine
|
|
9
|
+
* stats + continuous prompt metadata: counts, word counts, timestamps and
|
|
10
|
+
* session ids, synced every minute alongside tokens, so the profile
|
|
11
|
+
* can show sessions, concurrent sessions and prompt counts. Prompt
|
|
12
|
+
* text never leaves the machine.
|
|
13
|
+
* full + a rolling sample of the most recent prompts (up to 20,000
|
|
14
|
+
* characters) sent with the daily sync, used only to estimate a
|
|
15
|
+
* technical-level score and then discarded. Never stored.
|
|
13
16
|
*
|
|
14
|
-
* The answer is remembered in ~/.hacklab/config.json so the
|
|
15
|
-
* once, and can be changed or revoked at any time with
|
|
16
|
-
* `hacklab config prompt-
|
|
17
|
+
* The answer is remembered in ~/.hacklab/config.json under `promptSync` so the
|
|
18
|
+
* question is asked once, and can be changed or revoked at any time with
|
|
19
|
+
* `hacklab config prompt-sync <tier>`.
|
|
17
20
|
*/
|
|
18
|
-
export declare const
|
|
19
|
-
export type
|
|
20
|
-
export declare function
|
|
21
|
-
/** The stored answer, or null when the user has never been asked. */
|
|
22
|
-
export declare function loadPromptConsent(): Promise<PromptConsentTier | null>;
|
|
23
|
-
export declare function savePromptConsent(tier: PromptConsentTier): Promise<void>;
|
|
21
|
+
export declare const PROMPT_SYNC_TIERS: readonly ["none", "stats", "full"];
|
|
22
|
+
export type PromptSyncTier = (typeof PROMPT_SYNC_TIERS)[number];
|
|
23
|
+
export declare function isPromptSyncTier(value: unknown): value is PromptSyncTier;
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* The stored answer, or null when the user has never been asked *this*
|
|
26
|
+
* question. The pre-continuous-sync key (`promptStatsConsent`) is deliberately
|
|
27
|
+
* not read: it answered a different question — a one-off scan, not a minutely
|
|
28
|
+
* sync of session metadata — so it can't stand in for this one.
|
|
29
|
+
*/
|
|
30
|
+
export declare function loadPromptSync(): Promise<PromptSyncTier | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Remember the answer. Read-modify-write via `updateConfig` rather than a bare
|
|
33
|
+
* `saveConfig`, because the background jobs call this too and must never
|
|
34
|
+
* flatten a config file they couldn't read. The obsolete key goes with it, so
|
|
35
|
+
* a machine is never carrying two answers to two different questions.
|
|
36
|
+
*/
|
|
37
|
+
export declare function savePromptSync(tier: PromptSyncTier): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Read `--share-prompt-sync[=<tier>]` out of a command's args.
|
|
26
40
|
*
|
|
27
41
|
* This is the agent-friendly path: it answers the question up front so an
|
|
28
42
|
* unattended run never blocks on a prompt it can't see. Bare
|
|
29
|
-
* `--share-prompt-
|
|
43
|
+
* `--share-prompt-sync` means the metadata-only tier — the safe reading of an
|
|
30
44
|
* unqualified yes, since sending prompt *text* should always be deliberate.
|
|
31
|
-
* `--no-share-prompt-
|
|
45
|
+
* `--no-share-prompt-sync` is an explicit refusal.
|
|
32
46
|
*
|
|
33
47
|
* Returns the chosen tier, or null when the flag is absent. `rest` is the args
|
|
34
48
|
* with the flag removed so per-command parsing never sees it.
|
|
35
49
|
*/
|
|
36
|
-
export declare function
|
|
37
|
-
tier:
|
|
50
|
+
export declare function parsePromptSyncFlag(args: string[]): {
|
|
51
|
+
tier: PromptSyncTier | null;
|
|
38
52
|
rest: string[];
|
|
39
53
|
};
|
|
40
54
|
/**
|
|
@@ -49,13 +63,13 @@ export declare function parsePromptStatsFlag(args: string[]): {
|
|
|
49
63
|
*/
|
|
50
64
|
export declare function askYesNo(question: string): Promise<boolean | null>;
|
|
51
65
|
/**
|
|
52
|
-
* Resolve the
|
|
66
|
+
* Resolve the prompt-sync tier for this run.
|
|
53
67
|
*
|
|
54
68
|
* Precedence: an explicit flag wins (and is remembered), then the stored
|
|
55
69
|
* answer, then the interactive questions. An unattended run that has never
|
|
56
70
|
* answered gets `none` — silence is never consent.
|
|
57
71
|
*/
|
|
58
|
-
export declare function
|
|
72
|
+
export declare function resolvePromptSync(flagTier: PromptSyncTier | null, opts?: {
|
|
59
73
|
interactive?: boolean;
|
|
60
|
-
}): Promise<
|
|
74
|
+
}): Promise<PromptSyncTier>;
|
|
61
75
|
//# sourceMappingURL=prompt-consent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-consent.d.ts","sourceRoot":"","sources":["../src/prompt-consent.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"prompt-consent.d.ts","sourceRoot":"","sources":["../src/prompt-consent.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,iBAAiB,oCAAqC,CAAA;AACnE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGrE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACnD,IAAI,EAAE,cAAc,GAAG,IAAI,CAAA;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,CAsBA;AAED;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAoBxE;AA+BD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,cAAc,CAAC,CA8CzB"}
|
package/dist/prompt-consent.js
CHANGED
|
@@ -1,67 +1,81 @@
|
|
|
1
1
|
import { createInterface } from 'node:readline';
|
|
2
|
-
import { loadConfig,
|
|
2
|
+
import { loadConfig, updateConfig } from './config.js';
|
|
3
3
|
import { bold, dim, info } from './ui.js';
|
|
4
4
|
/**
|
|
5
|
-
* Consent for
|
|
5
|
+
* Consent for syncing anything derived from the user's Claude Code
|
|
6
6
|
* conversations.
|
|
7
7
|
*
|
|
8
8
|
* Nothing conversation-derived leaves the machine until someone has answered
|
|
9
9
|
* this explicitly. The tiers are additive:
|
|
10
10
|
*
|
|
11
|
-
* none token counts only —
|
|
12
|
-
* stats + prompt
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* none token counts only — nothing prompt-related leaves the machine
|
|
12
|
+
* stats + continuous prompt metadata: counts, word counts, timestamps and
|
|
13
|
+
* session ids, synced every minute alongside tokens, so the profile
|
|
14
|
+
* can show sessions, concurrent sessions and prompt counts. Prompt
|
|
15
|
+
* text never leaves the machine.
|
|
16
|
+
* full + a rolling sample of the most recent prompts (up to 20,000
|
|
17
|
+
* characters) sent with the daily sync, used only to estimate a
|
|
18
|
+
* technical-level score and then discarded. Never stored.
|
|
16
19
|
*
|
|
17
|
-
* The answer is remembered in ~/.hacklab/config.json so the
|
|
18
|
-
* once, and can be changed or revoked at any time with
|
|
19
|
-
* `hacklab config prompt-
|
|
20
|
+
* The answer is remembered in ~/.hacklab/config.json under `promptSync` so the
|
|
21
|
+
* question is asked once, and can be changed or revoked at any time with
|
|
22
|
+
* `hacklab config prompt-sync <tier>`.
|
|
20
23
|
*/
|
|
21
|
-
export const
|
|
22
|
-
export function
|
|
24
|
+
export const PROMPT_SYNC_TIERS = ['none', 'stats', 'full'];
|
|
25
|
+
export function isPromptSyncTier(value) {
|
|
23
26
|
return (typeof value === 'string' &&
|
|
24
|
-
|
|
27
|
+
PROMPT_SYNC_TIERS.includes(value));
|
|
25
28
|
}
|
|
26
|
-
/**
|
|
27
|
-
|
|
29
|
+
/**
|
|
30
|
+
* The stored answer, or null when the user has never been asked *this*
|
|
31
|
+
* question. The pre-continuous-sync key (`promptStatsConsent`) is deliberately
|
|
32
|
+
* not read: it answered a different question — a one-off scan, not a minutely
|
|
33
|
+
* sync of session metadata — so it can't stand in for this one.
|
|
34
|
+
*/
|
|
35
|
+
export async function loadPromptSync() {
|
|
28
36
|
const config = await loadConfig();
|
|
29
|
-
return
|
|
30
|
-
? config.promptStatsConsent
|
|
31
|
-
: null;
|
|
37
|
+
return isPromptSyncTier(config.promptSync) ? config.promptSync : null;
|
|
32
38
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Remember the answer. Read-modify-write via `updateConfig` rather than a bare
|
|
41
|
+
* `saveConfig`, because the background jobs call this too and must never
|
|
42
|
+
* flatten a config file they couldn't read. The obsolete key goes with it, so
|
|
43
|
+
* a machine is never carrying two answers to two different questions.
|
|
44
|
+
*/
|
|
45
|
+
export async function savePromptSync(tier) {
|
|
46
|
+
await updateConfig((config) => {
|
|
47
|
+
config.promptSync = tier;
|
|
48
|
+
delete config.promptStatsConsent;
|
|
49
|
+
return config;
|
|
50
|
+
});
|
|
37
51
|
}
|
|
38
52
|
/**
|
|
39
|
-
* Read `--share-prompt-
|
|
53
|
+
* Read `--share-prompt-sync[=<tier>]` out of a command's args.
|
|
40
54
|
*
|
|
41
55
|
* This is the agent-friendly path: it answers the question up front so an
|
|
42
56
|
* unattended run never blocks on a prompt it can't see. Bare
|
|
43
|
-
* `--share-prompt-
|
|
57
|
+
* `--share-prompt-sync` means the metadata-only tier — the safe reading of an
|
|
44
58
|
* unqualified yes, since sending prompt *text* should always be deliberate.
|
|
45
|
-
* `--no-share-prompt-
|
|
59
|
+
* `--no-share-prompt-sync` is an explicit refusal.
|
|
46
60
|
*
|
|
47
61
|
* Returns the chosen tier, or null when the flag is absent. `rest` is the args
|
|
48
62
|
* with the flag removed so per-command parsing never sees it.
|
|
49
63
|
*/
|
|
50
|
-
export function
|
|
64
|
+
export function parsePromptSyncFlag(args) {
|
|
51
65
|
const rest = [];
|
|
52
66
|
let tier = null;
|
|
53
67
|
for (const arg of args) {
|
|
54
|
-
if (arg === '--no-share-prompt-
|
|
68
|
+
if (arg === '--no-share-prompt-sync') {
|
|
55
69
|
tier = 'none';
|
|
56
70
|
continue;
|
|
57
71
|
}
|
|
58
|
-
if (arg === '--share-prompt-
|
|
72
|
+
if (arg === '--share-prompt-sync') {
|
|
59
73
|
tier = 'stats';
|
|
60
74
|
continue;
|
|
61
75
|
}
|
|
62
|
-
if (arg.startsWith('--share-prompt-
|
|
63
|
-
const value = arg.slice('--share-prompt-
|
|
64
|
-
tier =
|
|
76
|
+
if (arg.startsWith('--share-prompt-sync=')) {
|
|
77
|
+
const value = arg.slice('--share-prompt-sync='.length);
|
|
78
|
+
tier = isPromptSyncTier(value) ? value : 'stats';
|
|
65
79
|
continue;
|
|
66
80
|
}
|
|
67
81
|
rest.push(arg);
|
|
@@ -106,62 +120,65 @@ export async function askYesNo(question) {
|
|
|
106
120
|
/** The disclosure. Printed verbatim before the first question. */
|
|
107
121
|
function printDisclosure() {
|
|
108
122
|
console.log('');
|
|
109
|
-
console.log(bold('
|
|
123
|
+
console.log(bold(' sync your prompt activity?'));
|
|
110
124
|
console.log('');
|
|
111
|
-
info(' hacklab can
|
|
112
|
-
info(`
|
|
125
|
+
info(' hacklab can keep your profile up to date with how you work with AI,');
|
|
126
|
+
info(` reading your Claude Code history from ${dim('~/.claude/projects')}.`);
|
|
113
127
|
console.log('');
|
|
114
|
-
info(` ${bold('what would be
|
|
115
|
-
info('
|
|
116
|
-
info('
|
|
128
|
+
info(` ${bold('what would be synced, every minute:')}`);
|
|
129
|
+
info(` ${dim('-')} how many prompts you send, and how long they are in words`);
|
|
130
|
+
info(` ${dim('-')} when each session started and last ran, and its session id`);
|
|
131
|
+
info(` ${dim('-')} a prompt count per project, matched by its git remote`);
|
|
117
132
|
console.log('');
|
|
118
|
-
info(` ${bold('what
|
|
119
|
-
info('
|
|
120
|
-
info('
|
|
133
|
+
info(` ${bold('what stays on this machine:')}`);
|
|
134
|
+
info(` ${dim('-')} the text of your prompts, unless you separately say yes below`);
|
|
135
|
+
info(` ${dim('-')} anything from a project without a git remote`);
|
|
121
136
|
console.log('');
|
|
122
|
-
info(dim('
|
|
123
|
-
info(dim('
|
|
137
|
+
info(dim(' your profile shows your sessions, how many you run at once, and'));
|
|
138
|
+
info(dim(' your prompt counts. change or revoke this any time with'));
|
|
139
|
+
info(dim(' `hacklab config prompt-sync <none|stats|full>`.'));
|
|
124
140
|
console.log('');
|
|
125
141
|
}
|
|
126
142
|
/**
|
|
127
|
-
* Resolve the
|
|
143
|
+
* Resolve the prompt-sync tier for this run.
|
|
128
144
|
*
|
|
129
145
|
* Precedence: an explicit flag wins (and is remembered), then the stored
|
|
130
146
|
* answer, then the interactive questions. An unattended run that has never
|
|
131
147
|
* answered gets `none` — silence is never consent.
|
|
132
148
|
*/
|
|
133
|
-
export async function
|
|
149
|
+
export async function resolvePromptSync(flagTier, opts = {}) {
|
|
134
150
|
if (flagTier) {
|
|
135
|
-
await
|
|
151
|
+
await savePromptSync(flagTier);
|
|
136
152
|
return flagTier;
|
|
137
153
|
}
|
|
138
|
-
const stored = await
|
|
154
|
+
const stored = await loadPromptSync();
|
|
139
155
|
if (stored)
|
|
140
156
|
return stored;
|
|
141
157
|
if (!opts.interactive || !process.stdin.isTTY)
|
|
142
158
|
return 'none';
|
|
143
159
|
printDisclosure();
|
|
144
|
-
const
|
|
145
|
-
if (
|
|
160
|
+
const shareActivity = await askYesNo(' sync this to hacklab?');
|
|
161
|
+
if (shareActivity === null)
|
|
146
162
|
return 'none';
|
|
147
|
-
if (!
|
|
148
|
-
await
|
|
163
|
+
if (!shareActivity) {
|
|
164
|
+
await savePromptSync('none');
|
|
149
165
|
console.log('');
|
|
150
|
-
info(dim(' no problem — syncing token counts only
|
|
166
|
+
info(dim(' no problem — syncing token counts only.'));
|
|
151
167
|
return 'none';
|
|
152
168
|
}
|
|
153
169
|
console.log('');
|
|
154
|
-
info(' optional: a sample of your
|
|
155
|
-
info('
|
|
156
|
-
info(` scores it and ${bold('discards it')}
|
|
170
|
+
info(' optional: a rolling sample of your most recent prompts (up to 20,000');
|
|
171
|
+
info(' characters) can go out with the daily sync, so a model can estimate');
|
|
172
|
+
info(` how technical your prompting is. hacklab scores it and ${bold('discards it')} —`);
|
|
173
|
+
info(' the text is never stored.');
|
|
157
174
|
console.log('');
|
|
158
|
-
const shareText = await askYesNo(' also send a sample of your
|
|
175
|
+
const shareText = await askYesNo(' also send a sample of your most recent prompts?');
|
|
159
176
|
const tier = shareText === true ? 'full' : 'stats';
|
|
160
|
-
await
|
|
177
|
+
await savePromptSync(tier);
|
|
161
178
|
console.log('');
|
|
162
179
|
info(dim(tier === 'full'
|
|
163
|
-
? '
|
|
164
|
-
: '
|
|
180
|
+
? ' syncing prompt activity and a text sample.'
|
|
181
|
+
: ' syncing prompt activity. numbers only, no text.'));
|
|
165
182
|
return tier;
|
|
166
183
|
}
|
|
167
184
|
//# sourceMappingURL=prompt-consent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-consent.js","sourceRoot":"","sources":["../src/prompt-consent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"prompt-consent.js","sourceRoot":"","sources":["../src/prompt-consent.ts"],"names":[],"mappings":"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"}
|