bb-cc-lite 0.1.0 → 0.1.2
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 +45 -6
- package/assets/statusline-demo.gif +0 -0
- package/dist/baseline-builder.d.ts +13 -0
- package/dist/baseline-builder.js +666 -0
- package/dist/baseline-builder.js.map +1 -0
- package/dist/baseline.d.ts +113 -0
- package/dist/baseline.js +383 -0
- package/dist/baseline.js.map +1 -0
- package/dist/cli.js +41 -50
- package/dist/cli.js.map +1 -1
- package/dist/decision-presentation.d.ts +11 -0
- package/dist/decision-presentation.js +12 -0
- package/dist/decision-presentation.js.map +1 -0
- package/dist/doctor.d.ts +17 -0
- package/dist/doctor.js +161 -8
- package/dist/doctor.js.map +1 -1
- package/dist/event-store-persistence.d.ts +5 -0
- package/dist/event-store-persistence.js +172 -0
- package/dist/event-store-persistence.js.map +1 -0
- package/dist/event-store-queries.d.ts +9 -0
- package/dist/event-store-queries.js +51 -0
- package/dist/event-store-queries.js.map +1 -0
- package/dist/hook-payload.d.ts +3 -0
- package/dist/hook-payload.js +90 -0
- package/dist/hook-payload.js.map +1 -0
- package/dist/hook-summary.d.ts +12 -0
- package/dist/hook-summary.js +25 -0
- package/dist/hook-summary.js.map +1 -0
- package/dist/hooks.d.ts +2 -14
- package/dist/hooks.js +2 -126
- package/dist/hooks.js.map +1 -1
- package/dist/paths.d.ts +1 -0
- package/dist/paths.js +3 -0
- package/dist/paths.js.map +1 -1
- package/dist/renderer.d.ts +2 -2
- package/dist/renderer.js +15 -7
- package/dist/renderer.js.map +1 -1
- package/dist/session.d.ts +3 -0
- package/dist/session.js +9 -0
- package/dist/session.js.map +1 -0
- package/dist/settings.d.ts +2 -1
- package/dist/settings.js +23 -42
- package/dist/settings.js.map +1 -1
- package/dist/signals.d.ts +2 -1
- package/dist/signals.js +156 -6
- package/dist/signals.js.map +1 -1
- package/dist/statusline.d.ts +1 -0
- package/dist/statusline.js +34 -0
- package/dist/statusline.js.map +1 -0
- package/dist/store.d.ts +3 -10
- package/dist/store.js +3 -84
- package/dist/store.js.map +1 -1
- package/dist/tool-metadata.d.ts +8 -0
- package/dist/tool-metadata.js +52 -0
- package/dist/tool-metadata.js.map +1 -0
- package/dist/transcript-reader.d.ts +9 -0
- package/dist/transcript-reader.js +45 -0
- package/dist/transcript-reader.js.map +1 -0
- package/dist/transcript.d.ts +2 -3
- package/dist/transcript.js +54 -66
- package/dist/transcript.js.map +1 -1
- package/dist/types.d.ts +56 -0
- package/dist/why.d.ts +7 -0
- package/dist/why.js +32 -0
- package/dist/why.js.map +1 -0
- package/package.json +7 -7
package/dist/cli.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { formatDoctorChecks, runDoctor } from "./doctor.js";
|
|
3
|
-
import {
|
|
4
|
-
import { hashValue } from "./paths.js";
|
|
5
|
-
import { estimateCostUsd, loadPricing } from "./pricing.js";
|
|
6
|
-
import { renderStatusLine } from "./renderer.js";
|
|
7
|
-
import { decide } from "./signals.js";
|
|
2
|
+
import { buildPersonalBaseline, clearPersonalBaseline, formatDoctorChecks, PERSONAL_BASELINE_DISCLOSURE, runDoctor } from "./doctor.js";
|
|
3
|
+
import { parseHookPayload } from "./hook-payload.js";
|
|
8
4
|
import { installStatusLine, uninstallStatusLine } from "./settings.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
5
|
+
import { readStdin } from "./status-input.js";
|
|
6
|
+
import { createStatusLine } from "./statusline.js";
|
|
7
|
+
import { recordHookEvent } from "./store.js";
|
|
8
|
+
import { formatWhy, getWhyDecision } from "./why.js";
|
|
12
9
|
async function main() {
|
|
13
10
|
const args = parseArgs(process.argv.slice(2));
|
|
14
11
|
switch (args.command) {
|
|
@@ -18,6 +15,9 @@ async function main() {
|
|
|
18
15
|
case "uninstall":
|
|
19
16
|
await commandUninstall(args);
|
|
20
17
|
break;
|
|
18
|
+
case "unlearn":
|
|
19
|
+
await commandUnlearn(args);
|
|
20
|
+
break;
|
|
21
21
|
case "statusline":
|
|
22
22
|
await commandStatusLine();
|
|
23
23
|
break;
|
|
@@ -47,6 +47,7 @@ async function main() {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
async function commandInstall(args) {
|
|
50
|
+
const shouldLearn = !args.flags["no-learn"];
|
|
50
51
|
const result = await installStatusLine({
|
|
51
52
|
scope: scopeFlag(args),
|
|
52
53
|
replace: Boolean(args.flags.replace),
|
|
@@ -58,9 +59,13 @@ async function commandInstall(args) {
|
|
|
58
59
|
if (result.command) {
|
|
59
60
|
console.log(`Command: ${result.command}`);
|
|
60
61
|
}
|
|
61
|
-
if (
|
|
62
|
-
console.log(
|
|
62
|
+
if (!shouldLearn) {
|
|
63
|
+
console.log("Skipped personal baseline learning because --no-learn was passed.");
|
|
64
|
+
return;
|
|
63
65
|
}
|
|
66
|
+
console.log(PERSONAL_BASELINE_DISCLOSURE);
|
|
67
|
+
const baseline = await buildPersonalBaseline({ homeDir: stringFlag(args, "home") });
|
|
68
|
+
console.log(baseline.message);
|
|
64
69
|
}
|
|
65
70
|
async function commandUninstall(args) {
|
|
66
71
|
const result = await uninstallStatusLine({
|
|
@@ -74,32 +79,14 @@ async function commandUninstall(args) {
|
|
|
74
79
|
process.exitCode = 1;
|
|
75
80
|
}
|
|
76
81
|
}
|
|
82
|
+
async function commandUnlearn(args) {
|
|
83
|
+
await clearPersonalBaseline({ homeDir: stringFlag(args, "home") });
|
|
84
|
+
console.log("Cleared personal baseline.");
|
|
85
|
+
}
|
|
77
86
|
async function commandStatusLine() {
|
|
78
87
|
try {
|
|
79
88
|
const raw = await readStdin();
|
|
80
|
-
|
|
81
|
-
const sessionKey = hashValue(input.sessionId);
|
|
82
|
-
const transcript = mergeHookSummary(await parseTranscriptTail(input.transcriptPath), sessionKey
|
|
83
|
-
? await hookSummary(sessionKey)
|
|
84
|
-
: {
|
|
85
|
-
failedToolResults: 0,
|
|
86
|
-
toolCalls: 0,
|
|
87
|
-
compactionEvents: 0,
|
|
88
|
-
repeatedFailures: []
|
|
89
|
-
});
|
|
90
|
-
const usage = mergeUsage(input.usage, transcript.usage);
|
|
91
|
-
if (input.costUsd === undefined) {
|
|
92
|
-
const estimated = estimateCostUsd(input.model.id || input.model.displayName, usage, await loadPricing());
|
|
93
|
-
if (estimated !== undefined) {
|
|
94
|
-
input.costUsd = estimated;
|
|
95
|
-
input.costSource = "estimated";
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const previous = sessionKey ? await latestDecision(sessionKey) : undefined;
|
|
99
|
-
const decision = decide(input, transcript, { previous });
|
|
100
|
-
await recordDecision(decision);
|
|
101
|
-
const width = input.terminalWidth || process.stdout.columns;
|
|
102
|
-
process.stdout.write(`${renderStatusLine(decision, width)}\n`);
|
|
89
|
+
process.stdout.write(`${await createStatusLine(raw, process.stdout.columns)}\n`);
|
|
103
90
|
}
|
|
104
91
|
catch {
|
|
105
92
|
process.stdout.write("bb: Careful | statusline crashed | run bb-cc-lite doctor\n");
|
|
@@ -118,8 +105,7 @@ async function commandHook(args) {
|
|
|
118
105
|
}
|
|
119
106
|
}
|
|
120
107
|
async function commandWhy(args) {
|
|
121
|
-
const
|
|
122
|
-
const decision = await latestDecision(sessionKey);
|
|
108
|
+
const decision = await getWhyDecision({ sessionId: stringFlag(args, "session") });
|
|
123
109
|
if (args.flags.json) {
|
|
124
110
|
console.log(JSON.stringify(decision || null, null, 2));
|
|
125
111
|
return;
|
|
@@ -136,23 +122,16 @@ async function commandDoctor(args) {
|
|
|
136
122
|
projectDir: stringFlag(args, "project"),
|
|
137
123
|
homeDir: stringFlag(args, "home"),
|
|
138
124
|
transcriptPath: stringFlag(args, "transcript"),
|
|
139
|
-
refreshPricing: Boolean(args.flags["refresh-pricing"])
|
|
125
|
+
refreshPricing: Boolean(args.flags["refresh-pricing"]),
|
|
126
|
+
buildBaseline: Boolean(args.flags["build-baseline"]),
|
|
127
|
+
showBaseline: Boolean(args.flags.baseline),
|
|
128
|
+
clearBaseline: Boolean(args.flags["clear-baseline"])
|
|
140
129
|
});
|
|
141
130
|
console.log(formatDoctorChecks(checks));
|
|
142
131
|
if (checks.some((check) => check.level === "FAIL")) {
|
|
143
132
|
process.exitCode = 1;
|
|
144
133
|
}
|
|
145
134
|
}
|
|
146
|
-
function formatWhy(decision) {
|
|
147
|
-
const cost = decision.costUsd === undefined
|
|
148
|
-
? ""
|
|
149
|
-
: `\nCost evidence: ${decision.costSource === "estimated" ? "estimated " : ""}$${decision.costUsd.toFixed(4)}.`;
|
|
150
|
-
return [
|
|
151
|
-
`Last decision: ${decision.state}.`,
|
|
152
|
-
`Reason: ${decision.primaryEvidence}. ${decision.impact}.`,
|
|
153
|
-
`Next action: ${decision.action}.${cost}`
|
|
154
|
-
].join("\n");
|
|
155
|
-
}
|
|
156
135
|
function parseArgs(argv) {
|
|
157
136
|
const [command = "help", ...rest] = argv;
|
|
158
137
|
const flags = {};
|
|
@@ -194,11 +173,23 @@ function printHelp() {
|
|
|
194
173
|
console.log(`bb-cc-lite
|
|
195
174
|
|
|
196
175
|
Usage:
|
|
197
|
-
bb-cc-lite install [--scope local|project|user] [--
|
|
176
|
+
bb-cc-lite install [--scope local|project|user] [--hooks]
|
|
177
|
+
[--no-learn]
|
|
198
178
|
bb-cc-lite statusline
|
|
199
|
-
bb-cc-lite why [--json]
|
|
179
|
+
bb-cc-lite why [--session <id>] [--json]
|
|
200
180
|
bb-cc-lite doctor [--scope local|project|user] [--transcript <path>] [--refresh-pricing]
|
|
201
|
-
|
|
181
|
+
[--baseline] [--build-baseline] [--clear-baseline]
|
|
182
|
+
bb-cc-lite unlearn
|
|
183
|
+
bb-cc-lite uninstall [--scope local|project|user] [--force]
|
|
184
|
+
|
|
185
|
+
Learning:
|
|
186
|
+
install builds a local personal baseline from Claude JSONL by default.
|
|
187
|
+
install replaces an existing Claude statusLine and backs it up for uninstall.
|
|
188
|
+
learning scans newest eligible JSONL first with capped 512 KiB tails and bounded reads.
|
|
189
|
+
--no-learn skips that scan.
|
|
190
|
+
doctor --baseline shows a safe aggregate summary, including recent and validation categories.
|
|
191
|
+
doctor --build-baseline refreshes the baseline.
|
|
192
|
+
doctor --clear-baseline and unlearn remove only the baseline.
|
|
202
193
|
`);
|
|
203
194
|
}
|
|
204
195
|
main().catch((error) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Decision, DecisionEvidence, DecisionState } from "./types.js";
|
|
2
|
+
export interface DecisionPresentation {
|
|
3
|
+
state: DecisionState;
|
|
4
|
+
diagnosis?: string;
|
|
5
|
+
baselineNote?: string;
|
|
6
|
+
primaryEvidence: string;
|
|
7
|
+
evidence: DecisionEvidence[];
|
|
8
|
+
impact: string;
|
|
9
|
+
action: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function toDecisionPresentation(decision: Decision): DecisionPresentation;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function toDecisionPresentation(decision) {
|
|
2
|
+
return {
|
|
3
|
+
state: decision.state,
|
|
4
|
+
diagnosis: decision.diagnosis,
|
|
5
|
+
baselineNote: decision.baselineNote,
|
|
6
|
+
primaryEvidence: decision.primaryEvidence,
|
|
7
|
+
evidence: decision.evidence,
|
|
8
|
+
impact: decision.impact,
|
|
9
|
+
action: decision.action
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=decision-presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-presentation.js","sourceRoot":"","sources":["../src/decision-presentation.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC"}
|
package/dist/doctor.d.ts
CHANGED
|
@@ -5,11 +5,28 @@ export interface DoctorOptions {
|
|
|
5
5
|
homeDir?: string;
|
|
6
6
|
transcriptPath?: string;
|
|
7
7
|
refreshPricing?: boolean;
|
|
8
|
+
showBaseline?: boolean;
|
|
9
|
+
clearBaseline?: boolean;
|
|
10
|
+
buildBaseline?: boolean;
|
|
11
|
+
appHomePath?: string;
|
|
8
12
|
}
|
|
9
13
|
export interface DoctorCheck {
|
|
10
14
|
level: "OK" | "WARN" | "FAIL";
|
|
11
15
|
name: string;
|
|
12
16
|
message: string;
|
|
13
17
|
}
|
|
18
|
+
export interface PersonalBaselineResult {
|
|
19
|
+
ok: boolean;
|
|
20
|
+
message: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const PERSONAL_BASELINE_DISCLOSURE = "bb-cc-lite personalizes the statusline from your past Claude sessions by default.\n\nIt reads local Claude JSONL once.\nIt stores only counts, rates, weak outcome labels, pattern labels, recovery aggregates, and coarse categories.\nIt does not store prompts, assistant text, commands, command args, tool output, paths, file contents, transcript paths, workspace paths, raw session ids, or per-session rows.\n\nUse --no-learn to skip this.";
|
|
14
23
|
export declare function runDoctor(options?: DoctorOptions): Promise<DoctorCheck[]>;
|
|
15
24
|
export declare function formatDoctorChecks(checks: DoctorCheck[]): string;
|
|
25
|
+
export declare function buildPersonalBaseline(options?: {
|
|
26
|
+
homeDir?: string;
|
|
27
|
+
appHomePath?: string;
|
|
28
|
+
}): Promise<PersonalBaselineResult>;
|
|
29
|
+
export declare function clearPersonalBaseline(options?: {
|
|
30
|
+
homeDir?: string;
|
|
31
|
+
appHomePath?: string;
|
|
32
|
+
}): Promise<PersonalBaselineResult>;
|
package/dist/doctor.js
CHANGED
|
@@ -1,35 +1,46 @@
|
|
|
1
1
|
import { access } from "node:fs/promises";
|
|
2
2
|
import { constants } from "node:fs";
|
|
3
|
-
import {
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { clearBaseline as clearBaselineFile, readBaseline, summarizeBaseline } from "./baseline.js";
|
|
5
|
+
import { buildBaseline } from "./baseline-builder.js";
|
|
6
|
+
import { baselinePath, pricingCachePath } from "./paths.js";
|
|
4
7
|
import { refreshPricing } from "./pricing.js";
|
|
5
|
-
import { hasBbHooks, isBbStatusLine, readHooks, readStatusLine, resolveSettingsTarget } from "./settings.js";
|
|
8
|
+
import { describeSettingsTarget, hasBbHooks, isBbStatusLine, readHooks, readStatusLine, resolveSettingsTarget } from "./settings.js";
|
|
9
|
+
export const PERSONAL_BASELINE_DISCLOSURE = `bb-cc-lite personalizes the statusline from your past Claude sessions by default.
|
|
10
|
+
|
|
11
|
+
It reads local Claude JSONL once.
|
|
12
|
+
It stores only counts, rates, weak outcome labels, pattern labels, recovery aggregates, and coarse categories.
|
|
13
|
+
It does not store prompts, assistant text, commands, command args, tool output, paths, file contents, transcript paths, workspace paths, raw session ids, or per-session rows.
|
|
14
|
+
|
|
15
|
+
Use --no-learn to skip this.`;
|
|
6
16
|
export async function runDoctor(options = {}) {
|
|
7
17
|
const checks = [];
|
|
8
18
|
checks.push(checkNodeVersion());
|
|
9
19
|
const target = resolveSettingsTarget(options);
|
|
20
|
+
const targetLabel = describeSettingsTarget(target);
|
|
10
21
|
try {
|
|
11
22
|
const statusLine = await readStatusLine(target.scope, target.projectDir, target.homeDir);
|
|
12
23
|
if (statusLine && isBbStatusLine(statusLine)) {
|
|
13
|
-
checks.push({ level: "OK", name: "settings", message: `bb-cc-lite statusLine is installed in ${
|
|
24
|
+
checks.push({ level: "OK", name: "settings", message: `bb-cc-lite statusLine is installed in ${targetLabel}` });
|
|
14
25
|
}
|
|
15
26
|
else if (statusLine) {
|
|
16
|
-
checks.push({ level: "WARN", name: "settings", message: `custom statusLine is configured in ${
|
|
27
|
+
checks.push({ level: "WARN", name: "settings", message: `custom statusLine is configured in ${targetLabel}` });
|
|
17
28
|
}
|
|
18
29
|
else {
|
|
19
|
-
checks.push({ level: "WARN", name: "settings", message: `no statusLine found in ${
|
|
30
|
+
checks.push({ level: "WARN", name: "settings", message: `no statusLine found in ${targetLabel}` });
|
|
20
31
|
}
|
|
21
32
|
}
|
|
22
33
|
catch (error) {
|
|
23
34
|
checks.push({
|
|
24
35
|
level: "FAIL",
|
|
25
36
|
name: "settings",
|
|
26
|
-
message: error instanceof Error ? error.message : `could not read ${
|
|
37
|
+
message: error instanceof Error ? error.message : `could not read ${targetLabel}`
|
|
27
38
|
});
|
|
28
39
|
}
|
|
29
40
|
try {
|
|
30
41
|
const hooks = await readHooks(target.scope, target.projectDir, target.homeDir);
|
|
31
42
|
if (hasBbHooks(hooks, target.homeDir)) {
|
|
32
|
-
checks.push({ level: "OK", name: "hooks", message: `optional bb-cc-lite hooks are installed in ${
|
|
43
|
+
checks.push({ level: "OK", name: "hooks", message: `optional bb-cc-lite hooks are installed in ${targetLabel}` });
|
|
33
44
|
}
|
|
34
45
|
else {
|
|
35
46
|
checks.push({ level: "WARN", name: "hooks", message: "optional bb-cc-lite hooks are not installed; run install --hooks to enable faster telemetry" });
|
|
@@ -39,7 +50,7 @@ export async function runDoctor(options = {}) {
|
|
|
39
50
|
checks.push({
|
|
40
51
|
level: "FAIL",
|
|
41
52
|
name: "hooks",
|
|
42
|
-
message: error instanceof Error ? error.message : `could not read hooks from ${
|
|
53
|
+
message: error instanceof Error ? error.message : `could not read hooks from ${targetLabel}`
|
|
43
54
|
});
|
|
44
55
|
}
|
|
45
56
|
if (options.transcriptPath) {
|
|
@@ -59,6 +70,15 @@ export async function runDoctor(options = {}) {
|
|
|
59
70
|
});
|
|
60
71
|
}
|
|
61
72
|
addAnthropicBaseUrlCheck(checks);
|
|
73
|
+
if (options.clearBaseline) {
|
|
74
|
+
await addClearBaselineCheck(checks, options);
|
|
75
|
+
}
|
|
76
|
+
if (options.buildBaseline) {
|
|
77
|
+
await addBuildBaselineCheck(checks, options);
|
|
78
|
+
}
|
|
79
|
+
if (options.showBaseline) {
|
|
80
|
+
await addBaselineSummaryCheck(checks, options);
|
|
81
|
+
}
|
|
62
82
|
await addLiteLLMChecks(checks, options.refreshPricing || false);
|
|
63
83
|
return checks;
|
|
64
84
|
}
|
|
@@ -72,6 +92,139 @@ function checkNodeVersion() {
|
|
|
72
92
|
}
|
|
73
93
|
return { level: "FAIL", name: "node", message: `Node ${process.versions.node}; bb-cc-lite requires Node >=20` };
|
|
74
94
|
}
|
|
95
|
+
async function addClearBaselineCheck(checks, options) {
|
|
96
|
+
await clearPersonalBaseline({ homeDir: options.homeDir, appHomePath: options.appHomePath });
|
|
97
|
+
checks.push({
|
|
98
|
+
level: "OK",
|
|
99
|
+
name: "baseline",
|
|
100
|
+
message: "cleared personal baseline"
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
async function addBuildBaselineCheck(checks, options) {
|
|
104
|
+
const result = await buildPersonalBaseline({ homeDir: options.homeDir, appHomePath: options.appHomePath });
|
|
105
|
+
checks.push({
|
|
106
|
+
level: result.ok ? "OK" : "WARN",
|
|
107
|
+
name: "baseline",
|
|
108
|
+
message: result.message.replaceAll("\n", " ")
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async function addBaselineSummaryCheck(checks, options) {
|
|
112
|
+
const baseline = await readBaseline(baselineFilePath(options));
|
|
113
|
+
if (baseline) {
|
|
114
|
+
checks.push({
|
|
115
|
+
level: "OK",
|
|
116
|
+
name: "baseline",
|
|
117
|
+
message: formatBaselineSummaryMessage(baseline, summarizeBaseline(baseline))
|
|
118
|
+
});
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
checks.push({
|
|
122
|
+
level: "WARN",
|
|
123
|
+
name: "baseline",
|
|
124
|
+
message: "no readable personal baseline found; run doctor --build-baseline to create one"
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
export async function buildPersonalBaseline(options = {}) {
|
|
128
|
+
try {
|
|
129
|
+
const baseline = await buildBaseline({ homeDir: options.homeDir, appHomePath: options.appHomePath });
|
|
130
|
+
return {
|
|
131
|
+
ok: true,
|
|
132
|
+
message: formatBuiltBaselineMessage(baseline)
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return {
|
|
137
|
+
ok: false,
|
|
138
|
+
message: "could not build personal baseline"
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export async function clearPersonalBaseline(options = {}) {
|
|
143
|
+
await clearBaselineFile(baselineFilePath(options));
|
|
144
|
+
return {
|
|
145
|
+
ok: true,
|
|
146
|
+
message: "cleared personal baseline"
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function formatBuiltBaselineMessage(value) {
|
|
150
|
+
const sessionsSeen = sessionsSeenFrom(value);
|
|
151
|
+
return [
|
|
152
|
+
`Built personal baseline from ${sessionsSeen} sessions.`,
|
|
153
|
+
"Stored only counts, rates, weak outcome labels, pattern labels, recovery aggregates, and coarse categories.",
|
|
154
|
+
"No prompts, assistant text, commands, command args, outputs, paths, file contents, transcript paths, workspace paths, raw session ids, or per-session rows were stored."
|
|
155
|
+
].join("\n");
|
|
156
|
+
}
|
|
157
|
+
function formatBaselineSummaryMessage(value, summary) {
|
|
158
|
+
const sessionsSeen = sessionsSeenFrom(value);
|
|
159
|
+
const filesScanned = filesScannedFrom(value);
|
|
160
|
+
const outcomeSummary = typeof summary === "string" && summary.startsWith("Personal baseline:")
|
|
161
|
+
? `; ${summary.replace("Personal baseline:", "outcomes:").replace(/\.$/u, "")}`
|
|
162
|
+
: "";
|
|
163
|
+
const extendedSummary = extendedBaselineSummary(value);
|
|
164
|
+
return `personal baseline: ${sessionsSeen} sessions, ${filesScanned} transcript files; derived aggregate data only${outcomeSummary}${extendedSummary}`;
|
|
165
|
+
}
|
|
166
|
+
function extendedBaselineSummary(value) {
|
|
167
|
+
if (!value || typeof value !== "object") {
|
|
168
|
+
return "";
|
|
169
|
+
}
|
|
170
|
+
const baseline = value;
|
|
171
|
+
const parts = [];
|
|
172
|
+
const recent = baseline.recent;
|
|
173
|
+
if (recent &&
|
|
174
|
+
recent.windowKind === "newest_files" &&
|
|
175
|
+
typeof recent.sessionsSeen === "number" &&
|
|
176
|
+
typeof recent.windowSize === "number") {
|
|
177
|
+
parts.push(`recent newest_files window ${recent.sessionsSeen}/${recent.windowSize}`);
|
|
178
|
+
}
|
|
179
|
+
const validationCategories = baseline.validation ? Object.keys(baseline.validation).sort() : [];
|
|
180
|
+
if (validationCategories.length > 0) {
|
|
181
|
+
parts.push(`validation categories: ${validationCategories.join(", ")}`);
|
|
182
|
+
}
|
|
183
|
+
const toolCategories = baseline.toolCategories ? Object.keys(baseline.toolCategories).sort() : [];
|
|
184
|
+
if (toolCategories.length > 0) {
|
|
185
|
+
parts.push(`tool categories: ${toolCategories.join(", ")}`);
|
|
186
|
+
}
|
|
187
|
+
return parts.length > 0 ? `; ${parts.join("; ")}` : "";
|
|
188
|
+
}
|
|
189
|
+
function sessionsSeenFrom(value) {
|
|
190
|
+
if (!value || typeof value !== "object") {
|
|
191
|
+
return 0;
|
|
192
|
+
}
|
|
193
|
+
const nestedBaseline = value.baseline;
|
|
194
|
+
if (nestedBaseline) {
|
|
195
|
+
return sessionsSeenFrom(nestedBaseline);
|
|
196
|
+
}
|
|
197
|
+
const source = value.source;
|
|
198
|
+
if (source && typeof source === "object" && typeof source.sessionsSeen === "number") {
|
|
199
|
+
return source.sessionsSeen;
|
|
200
|
+
}
|
|
201
|
+
if (typeof value.sessionsSeen === "number") {
|
|
202
|
+
return value.sessionsSeen;
|
|
203
|
+
}
|
|
204
|
+
return 0;
|
|
205
|
+
}
|
|
206
|
+
function filesScannedFrom(value) {
|
|
207
|
+
if (!value || typeof value !== "object") {
|
|
208
|
+
return 0;
|
|
209
|
+
}
|
|
210
|
+
const nestedBaseline = value.baseline;
|
|
211
|
+
if (nestedBaseline) {
|
|
212
|
+
return filesScannedFrom(nestedBaseline);
|
|
213
|
+
}
|
|
214
|
+
const source = value.source;
|
|
215
|
+
if (source &&
|
|
216
|
+
typeof source === "object" &&
|
|
217
|
+
typeof source.transcriptFilesScanned === "number") {
|
|
218
|
+
return source.transcriptFilesScanned;
|
|
219
|
+
}
|
|
220
|
+
if (typeof value.transcriptFilesScanned === "number") {
|
|
221
|
+
return value.transcriptFilesScanned;
|
|
222
|
+
}
|
|
223
|
+
return 0;
|
|
224
|
+
}
|
|
225
|
+
function baselineFilePath(options) {
|
|
226
|
+
return options.appHomePath ? join(options.appHomePath, "baseline.json") : baselinePath(options.homeDir);
|
|
227
|
+
}
|
|
75
228
|
async function addLiteLLMChecks(checks, shouldRefreshPricing) {
|
|
76
229
|
try {
|
|
77
230
|
await access(pricingCachePath(), constants.R_OK);
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EventStoreData } from "./types.js";
|
|
2
|
+
export declare const STORE_LIMIT = 100;
|
|
3
|
+
export declare const HOOK_STORE_LIMIT = 500;
|
|
4
|
+
export declare function readStore(storePath?: string): Promise<EventStoreData>;
|
|
5
|
+
export declare function writeStore(store: EventStoreData, storePath: string): Promise<void>;
|