bb-cc-lite 0.1.11 → 0.1.12
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 +150 -71
- package/dist/audit.d.ts +47 -0
- package/dist/audit.js +427 -0
- package/dist/audit.js.map +1 -0
- package/dist/cli.js +42 -0
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,48 +2,96 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/softcane/bb-cc-lite/actions/workflows/ci.yml)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Behavioral health monitoring for Claude Code sessions.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Claude Code can look busy while doing the wrong thing. It can retry the same failed test, edit without verification, burn tokens, fill the context window, thrash across files, and keep going long after a human should stop it.
|
|
8
|
+
|
|
9
|
+
The small local status line answers one question:
|
|
8
10
|
|
|
9
11
|
> Should I let this Claude Code session keep going?
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
Token spend tells you what it cost. `bb-cc-lite` tries to show whether the session behavior still looks healthy: continue, verify, or stop before more turns are burned.
|
|
14
|
+
|
|
15
|
+
It is local. It is not a cloud dashboard, telemetry service, proxy, gateway, or message router.
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
bb: Healthy | ctx 42% | $0.18 | continue normally
|
|
19
|
+
bb: Healthy | validation resolved | continue normally
|
|
20
|
+
bb: Careful | edits have not been checked yet | run the smallest relevant check
|
|
21
|
+
bb: Careful | same test failed twice without a fix | inspect first failure
|
|
22
|
+
bb: Careful | 9 non-read tool calls, no check or recovery seen | pause and ask what changed
|
|
23
|
+
bb: Stop | why: same failure retried 3x without a fix | do: stop and inspect first failure
|
|
24
|
+
```
|
|
12
25
|
|
|
13
26
|

|
|
14
27
|
|
|
15
|
-
|
|
28
|
+
_The demo shows the difference between healthy progress, unchecked edits, repeated validation failures, and Stop-level retry loops._
|
|
16
29
|
|
|
17
|
-
|
|
18
|
-
- Claude Code with status line support
|
|
30
|
+
## Why This Exists
|
|
19
31
|
|
|
20
|
-
|
|
32
|
+
Activity is not progress.
|
|
21
33
|
|
|
22
|
-
|
|
23
|
-
npx --yes bb-cc-lite install --scope local
|
|
24
|
-
```
|
|
34
|
+
The hard part is not seeing that Claude Code is active. The hard part is knowing whether its activity is still useful. Busy output, tool calls, and token spend can hide negative progress.
|
|
25
35
|
|
|
26
|
-
|
|
36
|
+
Humans usually notice too late: after the same check has failed three times, after a broad edit streak was never verified, or after the context window is already under pressure.
|
|
27
37
|
|
|
28
|
-
|
|
38
|
+
`bb-cc-lite` watches local derived signals from the Claude Code status input, transcript tail, and optional hooks. It classifies the current session as `Healthy`, `Careful`, or `Stop`.
|
|
29
39
|
|
|
30
|
-
|
|
40
|
+
## What It Catches
|
|
31
41
|
|
|
32
|
-
|
|
42
|
+
- Retry loops where the same validation check or tool fails repeatedly without a fix.
|
|
43
|
+
- Repeated test, lint, typecheck, or build failures.
|
|
44
|
+
- Long edit streaks without a test, lint, typecheck, or build check.
|
|
45
|
+
- Busy sessions with many tool calls but no observed check or recovery.
|
|
46
|
+
- Context pressure before the session gets too full to reason clearly.
|
|
47
|
+
- Cost and time budget warnings that make a stuck session easier to spot.
|
|
48
|
+
- Local baseline patterns, when there is enough aggregate local history.
|
|
33
49
|
|
|
34
|
-
|
|
50
|
+
## Healthy / Careful / Stop
|
|
35
51
|
|
|
36
|
-
|
|
37
|
-
|
|
52
|
+
`Healthy` means the session still looks safe to continue.
|
|
53
|
+
|
|
54
|
+
`Careful` means slow down. Ask for verification, inspect the pattern, or make the next step smaller.
|
|
55
|
+
|
|
56
|
+
`Stop` does not mean the project failed. It means the session pattern is no longer worth blindly continuing. Take over, redirect Claude, or inspect the first failure before spending more turns.
|
|
57
|
+
|
|
58
|
+
## How It Helps Claude
|
|
59
|
+
|
|
60
|
+
`bb-cc-lite` can run in three install modes.
|
|
61
|
+
|
|
62
|
+
`observe-only` keeps the status line and local derived event data, but does not send feedback to Claude.
|
|
63
|
+
|
|
64
|
+
`coach` is the default. It keeps the status line and can send short, safe Claude-facing notes when a risky pattern is visible, such as repeated validation failure, unchecked edits, high budget with no progress signal, or unresolved validation risk at finish.
|
|
65
|
+
|
|
66
|
+
`guard` includes coach feedback. It may deny a high-confidence repeated Bash validation retry, such as rerunning the same test/lint/typecheck/build category after repeated failures without an edit or passing check. It does not broadly block normal reads, edits, or arbitrary commands.
|
|
67
|
+
|
|
68
|
+
`bb-cc-lite` also records safe feedback outcomes. For example, if bb asks Claude to validate after an edit and Claude runs a passing test, `bb-cc-lite why` can show that the feedback was resolved.
|
|
69
|
+
|
|
70
|
+
When available, `why` includes the recent bb loop:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
Recent bb loop:
|
|
74
|
+
1. Coach feedback: edits needed validation.
|
|
75
|
+
2. Claude ran tests.
|
|
76
|
+
3. Tests passed.
|
|
77
|
+
4. Outcome: resolved.
|
|
38
78
|
```
|
|
39
79
|
|
|
40
|
-
|
|
80
|
+
## Install
|
|
81
|
+
|
|
82
|
+
Requirements:
|
|
83
|
+
|
|
84
|
+
- Node.js 20 or newer
|
|
85
|
+
- Claude Code with status line support
|
|
41
86
|
|
|
42
87
|
```bash
|
|
43
|
-
|
|
44
|
-
bb-cc-lite install --scope local
|
|
88
|
+
npx --yes bb-cc-lite install --scope local
|
|
45
89
|
```
|
|
46
90
|
|
|
91
|
+
Restart Claude Code in the project. The status line appears at the bottom.
|
|
92
|
+
|
|
93
|
+
Default install uses coach mode and builds a small local baseline when possible. It preserves an existing Claude Code `statusLine` unless you pass `--replace`.
|
|
94
|
+
|
|
47
95
|
To replace an existing status line:
|
|
48
96
|
|
|
49
97
|
```bash
|
|
@@ -56,81 +104,69 @@ To observe only, without sending feedback to Claude:
|
|
|
56
104
|
npx --yes bb-cc-lite install --scope local --observe-only
|
|
57
105
|
```
|
|
58
106
|
|
|
59
|
-
To enable stricter
|
|
107
|
+
To enable stricter repeated-validation retry denial:
|
|
60
108
|
|
|
61
109
|
```bash
|
|
62
110
|
npx --yes bb-cc-lite install --scope local --guard
|
|
63
111
|
```
|
|
64
112
|
|
|
65
|
-
Guard mode includes coach feedback. It may deny a high-confidence repeated validation retry with a safe reason. It does not broadly block normal reads or edits.
|
|
66
|
-
|
|
67
113
|
To disable baseline learning and lesson memory:
|
|
68
114
|
|
|
69
115
|
```bash
|
|
70
116
|
npx --yes bb-cc-lite install --scope local --no-learn
|
|
71
117
|
```
|
|
72
118
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- Retry loops where the same command or test fails repeatedly without a fix.
|
|
76
|
-
- Long stretches of editing without a test, lint, typecheck, or build check.
|
|
77
|
-
- Busy sessions with many tool calls but no observed check or recovery.
|
|
78
|
-
- Context pressure before the session gets too full to reason clearly.
|
|
79
|
-
- Cost and time budget signals that make a stuck session easier to spot.
|
|
80
|
-
- Project baseline patterns, when there is enough local aggregate history.
|
|
119
|
+
To uninstall:
|
|
81
120
|
|
|
82
|
-
|
|
121
|
+
```bash
|
|
122
|
+
npx --yes bb-cc-lite uninstall --scope local
|
|
123
|
+
```
|
|
83
124
|
|
|
84
|
-
|
|
125
|
+
Prefer a global install?
|
|
85
126
|
|
|
86
|
-
|
|
127
|
+
```bash
|
|
128
|
+
npm install -g bb-cc-lite
|
|
129
|
+
bb-cc-lite install --scope local
|
|
130
|
+
```
|
|
87
131
|
|
|
88
|
-
|
|
132
|
+
Supported install scopes are `local`, `project`, and `user`. Use `local` for the current repo unless you have a specific reason to edit project or user Claude settings.
|
|
89
133
|
|
|
90
|
-
|
|
134
|
+
## Try Before Installing
|
|
91
135
|
|
|
92
|
-
|
|
136
|
+
Run a retrospective audit against recent local Claude Code history:
|
|
93
137
|
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
bb: Healthy | read-only exploration | continue normally
|
|
98
|
-
bb: Careful | edits have not been checked yet | ask Claude to run the smallest relevant check
|
|
99
|
-
bb: Careful | 9 non-read tool calls, no check or recovery seen | pause and ask Claude what changed
|
|
100
|
-
bb: Careful | session ran 1h plus 9 non-read tool calls, no check or recovery seen | pause and ask Claude what changed before continuing
|
|
101
|
-
bb: Careful | same test failed twice without a fix | inspect first failure
|
|
102
|
-
bb: Careful | tests failed twice; usually passes after one targeted fix | inspect first failure
|
|
103
|
-
bb: Careful | estimated cost $2.25 | ask Claude to summarize progress before continuing
|
|
104
|
-
bb: Stop | why: same failure retried 3x without a fix | do: stop and inspect first failure
|
|
105
|
-
bb: Stop | why: same test retried after feedback | do: inspect first failure
|
|
106
|
-
bb: Stop | why: test loop rarely recovered after 3 failures | do: stop retrying and inspect first failure
|
|
107
|
-
bb: Stop | why: high cost plus repeated failures | do: stop and inspect first failure
|
|
138
|
+
```bash
|
|
139
|
+
npx --yes bb-cc-lite audit --project .
|
|
140
|
+
npx --yes bb-cc-lite audit --all-projects --recent 200
|
|
108
141
|
```
|
|
109
142
|
|
|
110
|
-
`
|
|
111
|
-
|
|
112
|
-
When available, `why` includes the recent bb loop:
|
|
113
|
-
|
|
114
|
-
```text
|
|
115
|
-
Recent bb loop:
|
|
116
|
-
1. Coach feedback: edits needed validation.
|
|
117
|
-
2. Claude ran tests.
|
|
118
|
-
3. Tests passed.
|
|
119
|
-
4. Outcome: resolved.
|
|
120
|
-
```
|
|
143
|
+
`audit` scans recent local Claude Code JSONL history and reports where `bb-cc-lite` would have warned. It highlights repeated retries and risky session patterns; it only shows duplicate retry cost/time when the transcript contains usable measured metadata. It does not install a status line or hooks. Use `--all-projects` only when you want to inspect newest transcripts across local Claude projects.
|
|
121
144
|
|
|
122
145
|
## Useful Commands
|
|
123
146
|
|
|
124
147
|
```bash
|
|
148
|
+
bb-cc-lite audit --project .
|
|
149
|
+
bb-cc-lite audit --all-projects --recent 200
|
|
125
150
|
bb-cc-lite why
|
|
126
151
|
bb-cc-lite doctor
|
|
152
|
+
bb-cc-lite doctor --baseline
|
|
127
153
|
bb-cc-lite unlearn
|
|
128
154
|
bb-cc-lite uninstall --scope local
|
|
129
155
|
```
|
|
130
156
|
|
|
131
|
-
`
|
|
157
|
+
`audit` scans recent history without installing.
|
|
158
|
+
|
|
159
|
+
`why` explains the latest stored status line decision and recent feedback outcomes when available. It reads the local derived event store; it does not reopen transcripts to expose raw content. Interactive `why` output is lightly colored; set `NO_COLOR=1` or `BB_CC_LITE_COLOR=0` for plain text.
|
|
160
|
+
|
|
161
|
+
`doctor` checks Node, Claude settings, optional hooks, transcript access, pricing cache, and related diagnostics.
|
|
162
|
+
|
|
163
|
+
`doctor --baseline` shows safe aggregate baseline facts.
|
|
164
|
+
|
|
165
|
+
`unlearn` clears learned personal baselines, project baselines, and lesson memory.
|
|
132
166
|
|
|
133
|
-
|
|
167
|
+
`uninstall` removes bb-owned status line and hooks. When a valid backup exists, it restores the previous Claude Code status line.
|
|
168
|
+
|
|
169
|
+
Budget thresholds can be changed with environment variables:
|
|
134
170
|
|
|
135
171
|
```bash
|
|
136
172
|
BB_CC_LITE_BUDGET_COST_USD=1.25
|
|
@@ -138,9 +174,20 @@ BB_CC_LITE_BUDGET_COST_DELTA_USD=0.25
|
|
|
138
174
|
BB_CC_LITE_BUDGET_DURATION_MINUTES=30
|
|
139
175
|
```
|
|
140
176
|
|
|
141
|
-
##
|
|
177
|
+
## Validation Signals
|
|
178
|
+
|
|
179
|
+
`bb-cc-lite` observes checks Claude Code runs. It does not run tests, lint, typecheck, or build commands by itself.
|
|
180
|
+
|
|
181
|
+
It recognizes common Bash validation commands and groups them into safe categories:
|
|
142
182
|
|
|
143
|
-
|
|
183
|
+
- tests
|
|
184
|
+
- lint
|
|
185
|
+
- typecheck
|
|
186
|
+
- build
|
|
187
|
+
|
|
188
|
+
Those categories are used for retry-loop detection, recovery baselines, coach feedback, and guard-mode retry denial.
|
|
189
|
+
|
|
190
|
+
## Project-Specific Checks
|
|
144
191
|
|
|
145
192
|
If your project uses custom validation commands, you can add an optional `.bb-cc-lite.json`:
|
|
146
193
|
|
|
@@ -156,14 +203,46 @@ If your project uses custom validation commands, you can add an optional `.bb-cc
|
|
|
156
203
|
|
|
157
204
|
This file is not generated automatically. It is only needed when you want to teach bb what your project's test, lint, typecheck, or build commands look like. bb uses it for classification, but does not copy those raw commands into its event history.
|
|
158
205
|
|
|
206
|
+
## When This Is Useful
|
|
207
|
+
|
|
208
|
+
- Claude keeps retrying the same failing test.
|
|
209
|
+
- Claude edits many files without running checks.
|
|
210
|
+
- Context is getting high and reasoning quality may drop.
|
|
211
|
+
- Cost or time is climbing but validation is not improving.
|
|
212
|
+
- A session has many tool calls but no clear recovery signal.
|
|
213
|
+
- You want a quick signal before deciding to continue or intervene.
|
|
214
|
+
- You want local feedback without adding a dashboard or service.
|
|
215
|
+
|
|
159
216
|
## Privacy
|
|
160
217
|
|
|
161
|
-
|
|
218
|
+
`bb-cc-lite` is local-first. There is no cloud backend, SaaS dashboard, transcript upload, proxy, gateway, or message router.
|
|
219
|
+
|
|
220
|
+
The health event store and baselines use derived metadata only: state, reason code, counts, rates, percentiles, confidence labels, feedback outcomes such as `resolved` or `ignored`, safe categories such as `tests`, token/cost/context fields, timestamps, weak pattern labels, hashed session keys, and hashed project keys.
|
|
221
|
+
|
|
222
|
+
The health data is designed not to store prompts, assistant text, tool output, shell output, command arguments, file contents, transcript paths, workspace paths, API keys, raw Claude session ids, or raw MCP names.
|
|
162
223
|
|
|
163
|
-
|
|
224
|
+
Local files live under `~/.claude/bb-cc-lite` by default, unless `BB_CC_LITE_HOME` or other override environment variables are set. This includes:
|
|
164
225
|
|
|
165
|
-
|
|
226
|
+
- `events.json` for derived local decisions and hook events.
|
|
227
|
+
- `baseline.json` for the personal aggregate baseline.
|
|
228
|
+
- `project-baselines/<hashed-project>.json` for aggregate project baselines.
|
|
229
|
+
- `project-lessons/<hashed-project>.json` for decaying project lesson memory.
|
|
230
|
+
- `litellm-pricing.json` for cached public pricing data when refreshed.
|
|
231
|
+
- `backups/` for Claude settings backups used by uninstall.
|
|
166
232
|
|
|
167
|
-
|
|
233
|
+
Install backups are local settings snapshots so uninstall can restore prior Claude settings. They may contain whatever status line, hook commands, or paths existed in those Claude settings. They are not uploaded by `bb-cc-lite`.
|
|
168
234
|
|
|
169
|
-
LiteLLM is used only as public pricing data for cost estimates. `bb-cc-lite` does not run a proxy
|
|
235
|
+
LiteLLM is used only as public pricing data for cost estimates. `bb-cc-lite` does not run a LiteLLM proxy or route messages.
|
|
236
|
+
|
|
237
|
+
## More Examples
|
|
238
|
+
|
|
239
|
+
```text
|
|
240
|
+
bb: Healthy | read-only exploration | continue normally
|
|
241
|
+
bb: Careful | estimated cost $2.25 | ask Claude to summarize progress before continuing
|
|
242
|
+
bb: Careful | session ran 1h plus 9 non-read tool calls, no check or recovery seen | pause and ask what changed before continuing
|
|
243
|
+
bb: Careful | ctx 83% | ask Claude for a 6-bullet handoff before more work
|
|
244
|
+
bb: Careful | compaction event seen | ask Claude to restate current goal and next 3 steps
|
|
245
|
+
bb: Careful | tests failed twice; usually passes after one targeted fix | inspect first failure
|
|
246
|
+
bb: Stop | why: same test retried after feedback | do: inspect first failure
|
|
247
|
+
bb: Stop | why: test loop rarely recovered after 3 failures | do: stop retrying and inspect first failure
|
|
248
|
+
```
|
package/dist/audit.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { DecisionConfidence, DecisionState } from "./types.js";
|
|
2
|
+
export interface AuditOptions {
|
|
3
|
+
projectDir?: string;
|
|
4
|
+
homeDir?: string;
|
|
5
|
+
transcriptPath?: string;
|
|
6
|
+
allProjects?: boolean;
|
|
7
|
+
recent?: number;
|
|
8
|
+
maxBytesPerTranscript?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AuditReport {
|
|
11
|
+
scope: "project" | "all-projects" | "transcript";
|
|
12
|
+
recentLimit: number;
|
|
13
|
+
sessionsScanned: number;
|
|
14
|
+
transcriptsFound: number;
|
|
15
|
+
unreadableTranscripts: number;
|
|
16
|
+
sessionsWithFindings: number;
|
|
17
|
+
findings: AuditFinding[];
|
|
18
|
+
repeatedRetriesSpotted: number;
|
|
19
|
+
estimatedSavings: AuditSavingsEstimate;
|
|
20
|
+
reportConfidence: DecisionConfidence;
|
|
21
|
+
reportConfidenceReason: string;
|
|
22
|
+
}
|
|
23
|
+
export interface AuditFinding {
|
|
24
|
+
session: number;
|
|
25
|
+
state: DecisionState;
|
|
26
|
+
confidence: DecisionConfidence;
|
|
27
|
+
reasonCode: string;
|
|
28
|
+
evidence: string;
|
|
29
|
+
action: string;
|
|
30
|
+
repeatedRetries?: number;
|
|
31
|
+
estimatedDurationMs?: number;
|
|
32
|
+
estimatedCostUsd?: number;
|
|
33
|
+
savingsEstimateSource?: "measured" | "fallback";
|
|
34
|
+
}
|
|
35
|
+
export interface AuditSavingsEstimate {
|
|
36
|
+
durationMinutes: number;
|
|
37
|
+
costUsd: number;
|
|
38
|
+
repeatedToolRunsAvoided: number;
|
|
39
|
+
confidence: DecisionConfidence;
|
|
40
|
+
basis: string;
|
|
41
|
+
measured: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface FormatAuditReportOptions {
|
|
44
|
+
color?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare function runAudit(options?: AuditOptions): Promise<AuditReport>;
|
|
47
|
+
export declare function formatAuditReport(report: AuditReport, options?: FormatAuditReportOptions): string;
|
package/dist/audit.js
ADDED
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
import { readdir, stat } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { asRecord, numberField } from "./status-input.js";
|
|
5
|
+
import { parseTranscriptLines } from "./transcript.js";
|
|
6
|
+
import { readTranscriptTail } from "./transcript-reader.js";
|
|
7
|
+
const DEFAULT_RECENT_SESSIONS = 30;
|
|
8
|
+
const DEFAULT_MAX_BYTES_PER_TRANSCRIPT = 1024 * 1024;
|
|
9
|
+
const MAX_FORMATTED_FINDINGS = 8;
|
|
10
|
+
const MAX_RETRY_DURATION_MS = 5 * 60_000;
|
|
11
|
+
const MAX_RETRY_COST_USD = 0.25;
|
|
12
|
+
const RESET = "\u001b[0m";
|
|
13
|
+
const COLORS = {
|
|
14
|
+
title: "\u001b[1m",
|
|
15
|
+
Healthy: "\u001b[32m",
|
|
16
|
+
Careful: "\u001b[33m",
|
|
17
|
+
Stop: "\u001b[1;31m",
|
|
18
|
+
high: "\u001b[1;31m",
|
|
19
|
+
medium: "\u001b[33m",
|
|
20
|
+
low: "\u001b[2m"
|
|
21
|
+
};
|
|
22
|
+
export async function runAudit(options = {}) {
|
|
23
|
+
const recentLimit = normalizedRecentLimit(options.recent);
|
|
24
|
+
const candidates = options.transcriptPath
|
|
25
|
+
? await directTranscriptCandidate(options.transcriptPath)
|
|
26
|
+
: options.allProjects
|
|
27
|
+
? await allProjectTranscriptCandidates(options.homeDir, recentLimit)
|
|
28
|
+
: await projectTranscriptCandidates(options.homeDir, options.projectDir, recentLimit);
|
|
29
|
+
const findings = [];
|
|
30
|
+
let unreadableTranscripts = 0;
|
|
31
|
+
for (const [index, candidate] of candidates.entries()) {
|
|
32
|
+
const tail = await readTranscriptTail(candidate.path, {
|
|
33
|
+
maxBytes: options.maxBytesPerTranscript ?? DEFAULT_MAX_BYTES_PER_TRANSCRIPT
|
|
34
|
+
});
|
|
35
|
+
if (!tail.pathReadable) {
|
|
36
|
+
unreadableTranscripts += 1;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const summary = parseTranscriptLines(tail.lines, tail.bytesRead);
|
|
40
|
+
if (!summary.pathReadable) {
|
|
41
|
+
unreadableTranscripts += 1;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const finding = withSavingsEstimate(findingFromSummary(summary, index + 1), summary, transcriptMeasurementFromLines(tail.lines));
|
|
45
|
+
if (finding) {
|
|
46
|
+
findings.push(finding);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const sessionsWithFindings = new Set(findings.map((finding) => finding.session)).size;
|
|
50
|
+
const repeatedRetriesSpotted = findings.reduce((total, finding) => total + (finding.repeatedRetries || 0), 0);
|
|
51
|
+
const estimatedSavings = savingsEstimate(findings);
|
|
52
|
+
const confidence = reportConfidence(candidates.length - unreadableTranscripts, findings);
|
|
53
|
+
return {
|
|
54
|
+
scope: auditScope(options),
|
|
55
|
+
recentLimit,
|
|
56
|
+
sessionsScanned: candidates.length - unreadableTranscripts,
|
|
57
|
+
transcriptsFound: candidates.length,
|
|
58
|
+
unreadableTranscripts,
|
|
59
|
+
sessionsWithFindings,
|
|
60
|
+
findings: sortFindings(findings),
|
|
61
|
+
repeatedRetriesSpotted,
|
|
62
|
+
estimatedSavings,
|
|
63
|
+
reportConfidence: confidence.confidence,
|
|
64
|
+
reportConfidenceReason: confidence.reason
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function formatAuditReport(report, options = {}) {
|
|
68
|
+
const color = options.color === true;
|
|
69
|
+
const lines = [];
|
|
70
|
+
const scopeLabel = report.scope === "project"
|
|
71
|
+
? `project transcripts, newest ${report.recentLimit}`
|
|
72
|
+
: report.scope === "all-projects"
|
|
73
|
+
? `all local project transcripts, newest ${report.recentLimit}`
|
|
74
|
+
: "provided transcript";
|
|
75
|
+
const summaryLines = [
|
|
76
|
+
colorize("bb retrospective audit", "title", color),
|
|
77
|
+
`Scope: ${scopeLabel}`,
|
|
78
|
+
`Scanned: ${formatCount(report.sessionsScanned, "Claude Code session")}`
|
|
79
|
+
];
|
|
80
|
+
if (report.unreadableTranscripts > 0) {
|
|
81
|
+
summaryLines.push(`Skipped: ${formatCount(report.unreadableTranscripts, "unreadable transcript")}`);
|
|
82
|
+
}
|
|
83
|
+
summaryLines.push(`Would have helped: ${formatCount(report.sessionsWithFindings, "session")}`);
|
|
84
|
+
lines.push(...box(summaryLines));
|
|
85
|
+
lines.push("");
|
|
86
|
+
if (report.findings.length === 0) {
|
|
87
|
+
lines.push(...box(["Findings", "none in the scanned transcript window."]));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
lines.push(...box(["Findings"]));
|
|
91
|
+
lines.push("State Conf Evidence");
|
|
92
|
+
for (const finding of report.findings.slice(0, MAX_FORMATTED_FINDINGS)) {
|
|
93
|
+
const state = colorize(finding.state.padEnd(7), finding.state, color);
|
|
94
|
+
const confidence = colorize(finding.confidence.padEnd(7), finding.confidence, color);
|
|
95
|
+
lines.push(`${state} ${confidence} session ${finding.session}: ${finding.evidence}`);
|
|
96
|
+
lines.push(` do: ${finding.action}`);
|
|
97
|
+
}
|
|
98
|
+
if (report.findings.length > MAX_FORMATTED_FINDINGS) {
|
|
99
|
+
lines.push(` plus ${report.findings.length - MAX_FORMATTED_FINDINGS} more derived findings`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
lines.push("");
|
|
103
|
+
const evidenceLines = [`Repeated retries spotted: ${report.repeatedRetriesSpotted}`];
|
|
104
|
+
if (report.estimatedSavings.measured) {
|
|
105
|
+
evidenceLines.push(`Measured duplicate retry cost/time: ${report.estimatedSavings.durationMinutes} min, ${formatCurrency(report.estimatedSavings.costUsd)}`);
|
|
106
|
+
}
|
|
107
|
+
else if (report.repeatedRetriesSpotted > 0) {
|
|
108
|
+
evidenceLines.push("Cost/time: not estimated; transcripts did not expose usable cost/duration metadata");
|
|
109
|
+
}
|
|
110
|
+
evidenceLines.push(`Report confidence: ${report.reportConfidence} - ${report.reportConfidenceReason}`);
|
|
111
|
+
lines.push(...box(evidenceLines));
|
|
112
|
+
lines.push("");
|
|
113
|
+
lines.push("Privacy: derived metadata only; no prompts, tool output, command text, file contents, raw paths, or raw session ids printed/stored.");
|
|
114
|
+
lines.push("Install live protection:");
|
|
115
|
+
lines.push("npx --yes bb-cc-lite install --scope local");
|
|
116
|
+
return lines.join("\n");
|
|
117
|
+
}
|
|
118
|
+
function findingFromSummary(summary, session) {
|
|
119
|
+
const episodeFinding = findingFromEpisodes(summary.failureEpisodes || [], session);
|
|
120
|
+
if (episodeFinding) {
|
|
121
|
+
return episodeFinding;
|
|
122
|
+
}
|
|
123
|
+
if (summary.editTestLoopFailures >= 2) {
|
|
124
|
+
return {
|
|
125
|
+
session,
|
|
126
|
+
state: "Stop",
|
|
127
|
+
confidence: "high",
|
|
128
|
+
reasonCode: "edit_test_retry_loop",
|
|
129
|
+
evidence: `edit-test loop failed ${summary.editTestLoopFailures}x`,
|
|
130
|
+
action: "inspect the failing test manually, then ask Claude for one targeted fix",
|
|
131
|
+
repeatedRetries: Math.max(0, summary.editTestLoopFailures - 1)
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (summary.hasUnvalidatedEdits) {
|
|
135
|
+
return {
|
|
136
|
+
session,
|
|
137
|
+
state: "Careful",
|
|
138
|
+
confidence: "medium",
|
|
139
|
+
reasonCode: "edit_without_validation",
|
|
140
|
+
evidence: "edits were left without validation",
|
|
141
|
+
action: "ask Claude to run the smallest relevant check"
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
if (isBusyWithoutProgress(summary)) {
|
|
145
|
+
return {
|
|
146
|
+
session,
|
|
147
|
+
state: "Careful",
|
|
148
|
+
confidence: "medium",
|
|
149
|
+
reasonCode: "busy_no_observed_progress",
|
|
150
|
+
evidence: `${summary.toolCalls} tool calls, no check or recovery seen`,
|
|
151
|
+
action: "pause and ask Claude what changed"
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (summary.compactionEvents > 0 && summary.postCompactionActivity === 0) {
|
|
155
|
+
return {
|
|
156
|
+
session,
|
|
157
|
+
state: "Careful",
|
|
158
|
+
confidence: "medium",
|
|
159
|
+
reasonCode: "compaction_boundary",
|
|
160
|
+
evidence: "compaction event ended the scanned window",
|
|
161
|
+
action: "ask Claude to restate current goal and next 3 steps"
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
function withSavingsEstimate(finding, summary, measurement) {
|
|
167
|
+
if (!finding) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
const repeatedRetries = finding.repeatedRetries || 0;
|
|
171
|
+
if (repeatedRetries <= 0) {
|
|
172
|
+
return {
|
|
173
|
+
...finding,
|
|
174
|
+
estimatedDurationMs: 0,
|
|
175
|
+
estimatedCostUsd: 0,
|
|
176
|
+
savingsEstimateSource: "fallback"
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
const toolCalls = Math.max(1, summary.toolCalls);
|
|
180
|
+
const measuredDurationPerRetry = measurement.durationMs === undefined ? undefined : clamp(measurement.durationMs / toolCalls, 0, MAX_RETRY_DURATION_MS);
|
|
181
|
+
const measuredCostPerRetry = measurement.costUsd === undefined ? undefined : clamp(measurement.costUsd / toolCalls, 0, MAX_RETRY_COST_USD);
|
|
182
|
+
const hasMeasuredSavings = measuredDurationPerRetry !== undefined || measuredCostPerRetry !== undefined;
|
|
183
|
+
return {
|
|
184
|
+
...finding,
|
|
185
|
+
estimatedDurationMs: measuredDurationPerRetry === undefined ? undefined : repeatedRetries * measuredDurationPerRetry,
|
|
186
|
+
estimatedCostUsd: measuredCostPerRetry === undefined ? undefined : repeatedRetries * measuredCostPerRetry,
|
|
187
|
+
savingsEstimateSource: hasMeasuredSavings ? "measured" : "fallback"
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function findingFromEpisodes(episodes, session) {
|
|
191
|
+
const risky = episodes
|
|
192
|
+
.filter((episode) => episode.attemptCount >= 2 || episode.blindRetryFailureCount >= 2)
|
|
193
|
+
.sort((left, right) => episodeScore(right) - episodeScore(left))[0];
|
|
194
|
+
if (!risky) {
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
const state = risky.attemptCount >= 3 || risky.blindRetryFailureCount >= 3 ? "Stop" : "Careful";
|
|
198
|
+
const confidence = state === "Stop" && (risky.blindRetryFailureCount >= 3 || risky.activeEnded) ? "high" : state === "Stop" ? "medium" : "medium";
|
|
199
|
+
const blindRetry = risky.blindRetryFailureCount >= risky.attemptCount || risky.blindRetryFailureCount >= 2;
|
|
200
|
+
return {
|
|
201
|
+
session,
|
|
202
|
+
state,
|
|
203
|
+
confidence,
|
|
204
|
+
reasonCode: state === "Stop" ? (blindRetry ? "blind_retry_loop" : "repeated_tool_failure") : blindRetry ? "blind_retry" : "tool_failure_repeated",
|
|
205
|
+
evidence: episodeEvidence(risky, blindRetry),
|
|
206
|
+
action: state === "Stop" ? "stop and inspect first failure" : "pause and inspect first failure before another retry",
|
|
207
|
+
repeatedRetries: Math.max(0, Math.max(risky.attemptCount, risky.blindRetryFailureCount) - 1)
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function episodeEvidence(episode, blindRetry) {
|
|
211
|
+
const count = Math.max(episode.attemptCount, episode.blindRetryFailureCount);
|
|
212
|
+
if (blindRetry) {
|
|
213
|
+
return `same ${episode.label} failed ${formatFailureCount(count)} without a fix`;
|
|
214
|
+
}
|
|
215
|
+
if (episode.recovered) {
|
|
216
|
+
return `${episode.label} failed ${formatFailureCount(count)} before recovery`;
|
|
217
|
+
}
|
|
218
|
+
return `${episode.label} failed ${formatFailureCount(count)} without recovery`;
|
|
219
|
+
}
|
|
220
|
+
function episodeScore(episode) {
|
|
221
|
+
const count = Math.max(episode.attemptCount, episode.blindRetryFailureCount);
|
|
222
|
+
const stateScore = count >= 3 ? 100 : 50;
|
|
223
|
+
const activeScore = episode.activeEnded ? 10 : 0;
|
|
224
|
+
const blindScore = episode.blindRetryFailureCount >= 2 ? 5 : 0;
|
|
225
|
+
return stateScore + activeScore + blindScore + count;
|
|
226
|
+
}
|
|
227
|
+
function isBusyWithoutProgress(summary) {
|
|
228
|
+
const nonReadToolCalls = Math.max(0, summary.toolCalls - summary.readToolCalls);
|
|
229
|
+
return (summary.toolCalls >= 8 &&
|
|
230
|
+
nonReadToolCalls >= 6 &&
|
|
231
|
+
summary.failedToolResults === 0 &&
|
|
232
|
+
!summary.hasUnvalidatedEdits &&
|
|
233
|
+
!hasObservedProgress(summary) &&
|
|
234
|
+
!isReadHeavy(summary));
|
|
235
|
+
}
|
|
236
|
+
function isReadHeavy(summary) {
|
|
237
|
+
return (summary.toolCalls >= 4 &&
|
|
238
|
+
summary.readToolCalls >= 3 &&
|
|
239
|
+
summary.readToolCalls / Math.max(1, summary.toolCalls) >= 0.6 &&
|
|
240
|
+
summary.failedToolResults === 0 &&
|
|
241
|
+
!summary.hasUnvalidatedEdits);
|
|
242
|
+
}
|
|
243
|
+
function hasObservedProgress(summary) {
|
|
244
|
+
return Boolean(summary.observedProgress ||
|
|
245
|
+
summary.validationRecovered ||
|
|
246
|
+
(summary.validationSuccesses || 0) > 0 ||
|
|
247
|
+
(summary.toolRecoveryEvents || 0) > 0);
|
|
248
|
+
}
|
|
249
|
+
async function directTranscriptCandidate(path) {
|
|
250
|
+
const mtimeMs = await readableFileMtimeMs(path);
|
|
251
|
+
return mtimeMs === undefined ? [] : [{ path, mtimeMs }];
|
|
252
|
+
}
|
|
253
|
+
async function projectTranscriptCandidates(homeDir = homedir(), projectDir = process.cwd(), recentLimit = DEFAULT_RECENT_SESSIONS) {
|
|
254
|
+
const root = join(resolve(homeDir), ".claude", "projects", claudeProjectDirectoryName(projectDir));
|
|
255
|
+
return (await listTranscriptCandidates(root))
|
|
256
|
+
.sort((left, right) => right.mtimeMs - left.mtimeMs || left.path.localeCompare(right.path))
|
|
257
|
+
.slice(0, recentLimit);
|
|
258
|
+
}
|
|
259
|
+
async function allProjectTranscriptCandidates(homeDir = homedir(), recentLimit = DEFAULT_RECENT_SESSIONS) {
|
|
260
|
+
const root = join(resolve(homeDir), ".claude", "projects");
|
|
261
|
+
return (await listTranscriptCandidates(root))
|
|
262
|
+
.sort((left, right) => right.mtimeMs - left.mtimeMs || left.path.localeCompare(right.path))
|
|
263
|
+
.slice(0, recentLimit);
|
|
264
|
+
}
|
|
265
|
+
async function listTranscriptCandidates(root) {
|
|
266
|
+
const candidates = [];
|
|
267
|
+
const pending = [root];
|
|
268
|
+
while (pending.length > 0) {
|
|
269
|
+
const current = pending.pop();
|
|
270
|
+
let entries;
|
|
271
|
+
try {
|
|
272
|
+
entries = await readdir(current, { withFileTypes: true });
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
for (const entry of entries) {
|
|
278
|
+
const child = join(current, entry.name);
|
|
279
|
+
if (entry.isDirectory()) {
|
|
280
|
+
pending.push(child);
|
|
281
|
+
}
|
|
282
|
+
else if (entry.isFile() && entry.name.endsWith(".jsonl")) {
|
|
283
|
+
const mtimeMs = await readableFileMtimeMs(child);
|
|
284
|
+
if (mtimeMs !== undefined) {
|
|
285
|
+
candidates.push({ path: child, mtimeMs });
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return candidates;
|
|
291
|
+
}
|
|
292
|
+
async function readableFileMtimeMs(path) {
|
|
293
|
+
try {
|
|
294
|
+
return (await stat(path)).mtimeMs;
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return undefined;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function transcriptMeasurementFromLines(lines) {
|
|
301
|
+
let costUsd;
|
|
302
|
+
let durationMs;
|
|
303
|
+
for (const line of lines) {
|
|
304
|
+
let parsed;
|
|
305
|
+
try {
|
|
306
|
+
parsed = JSON.parse(line);
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
const entry = asRecord(parsed);
|
|
312
|
+
if (!entry) {
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
const entryCost = costUsdFromEntry(entry);
|
|
316
|
+
if (entryCost !== undefined) {
|
|
317
|
+
costUsd = Math.max(costUsd ?? 0, entryCost);
|
|
318
|
+
}
|
|
319
|
+
const entryDuration = durationMsFromEntry(entry);
|
|
320
|
+
if (entryDuration !== undefined) {
|
|
321
|
+
durationMs = Math.max(durationMs ?? 0, entryDuration);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return { costUsd, durationMs };
|
|
325
|
+
}
|
|
326
|
+
function costUsdFromEntry(entry) {
|
|
327
|
+
const cost = asRecord(entry.cost);
|
|
328
|
+
return (numberField(cost?.total_cost_usd) ??
|
|
329
|
+
numberField(cost?.totalCostUsd) ??
|
|
330
|
+
numberField(cost?.cost_usd) ??
|
|
331
|
+
numberField(entry.total_cost_usd) ??
|
|
332
|
+
numberField(entry.costUsd));
|
|
333
|
+
}
|
|
334
|
+
function durationMsFromEntry(entry) {
|
|
335
|
+
const cost = asRecord(entry.cost);
|
|
336
|
+
return (numberField(cost?.total_duration_ms) ??
|
|
337
|
+
numberField(cost?.totalDurationMs) ??
|
|
338
|
+
numberField(entry.duration_ms) ??
|
|
339
|
+
numberField(entry.durationMs));
|
|
340
|
+
}
|
|
341
|
+
function savingsEstimate(findings) {
|
|
342
|
+
const repeatedToolRunsAvoided = findings.reduce((total, finding) => total + (finding.repeatedRetries || 0), 0);
|
|
343
|
+
const durationMs = findings.reduce((total, finding) => total + (finding.estimatedDurationMs || 0), 0);
|
|
344
|
+
const costUsd = findings.reduce((total, finding) => total + (finding.estimatedCostUsd || 0), 0);
|
|
345
|
+
const measuredFindings = findings.filter((finding) => finding.savingsEstimateSource === "measured").length;
|
|
346
|
+
const measured = repeatedToolRunsAvoided > 0 && measuredFindings === findings.length && findings.length > 0;
|
|
347
|
+
const confidence = repeatedToolRunsAvoided === 0 ? "low" : measured ? "medium" : "low";
|
|
348
|
+
const basis = repeatedToolRunsAvoided === 0
|
|
349
|
+
? "no repeated retries were found"
|
|
350
|
+
: measured
|
|
351
|
+
? "time/cost used transcript metadata where Claude recorded it"
|
|
352
|
+
: "time/cost not estimated because transcripts did not expose usable cost/duration metadata";
|
|
353
|
+
return {
|
|
354
|
+
durationMinutes: measured ? Math.round(durationMs / 60_000) : 0,
|
|
355
|
+
costUsd: measured ? roundCurrency(costUsd) : 0,
|
|
356
|
+
repeatedToolRunsAvoided,
|
|
357
|
+
confidence,
|
|
358
|
+
basis,
|
|
359
|
+
measured
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
function normalizedRecentLimit(value) {
|
|
363
|
+
if (value === undefined || !Number.isFinite(value)) {
|
|
364
|
+
return DEFAULT_RECENT_SESSIONS;
|
|
365
|
+
}
|
|
366
|
+
return Math.max(1, Math.floor(value));
|
|
367
|
+
}
|
|
368
|
+
function auditScope(options) {
|
|
369
|
+
if (options.transcriptPath) {
|
|
370
|
+
return "transcript";
|
|
371
|
+
}
|
|
372
|
+
return options.allProjects ? "all-projects" : "project";
|
|
373
|
+
}
|
|
374
|
+
function claudeProjectDirectoryName(projectDir) {
|
|
375
|
+
return resolve(projectDir).replaceAll(/[\\/]/gu, "-");
|
|
376
|
+
}
|
|
377
|
+
function sortFindings(findings) {
|
|
378
|
+
return [...findings].sort((left, right) => findingScore(right) - findingScore(left) || left.session - right.session);
|
|
379
|
+
}
|
|
380
|
+
function findingScore(finding) {
|
|
381
|
+
const stateScore = finding.state === "Stop" ? 100 : finding.state === "Careful" ? 50 : 0;
|
|
382
|
+
const confidenceScore = finding.confidence === "high" ? 10 : finding.confidence === "medium" ? 5 : 0;
|
|
383
|
+
return stateScore + confidenceScore + (finding.repeatedRetries || 0);
|
|
384
|
+
}
|
|
385
|
+
function reportConfidence(sessionsScanned, findings) {
|
|
386
|
+
if (sessionsScanned === 0) {
|
|
387
|
+
return { confidence: "low", reason: "no local Claude Code transcripts were found for this scope" };
|
|
388
|
+
}
|
|
389
|
+
if (findings.some((finding) => finding.confidence === "high" && finding.state === "Stop")) {
|
|
390
|
+
return { confidence: "high", reason: "high-signal repeated failure patterns were found in scanned transcripts" };
|
|
391
|
+
}
|
|
392
|
+
if (findings.length > 0) {
|
|
393
|
+
return { confidence: "medium", reason: "moderate risk patterns were found, but retrospective replay cannot prove outcome changes" };
|
|
394
|
+
}
|
|
395
|
+
if (sessionsScanned >= 10) {
|
|
396
|
+
return { confidence: "medium", reason: "enough sessions were scanned, but no risky patterns surfaced" };
|
|
397
|
+
}
|
|
398
|
+
return { confidence: "low", reason: "small scanned sample and no risky patterns surfaced" };
|
|
399
|
+
}
|
|
400
|
+
function formatFailureCount(count) {
|
|
401
|
+
return count === 2 ? "twice" : `${count}x`;
|
|
402
|
+
}
|
|
403
|
+
function formatCount(count, noun) {
|
|
404
|
+
return `${count} ${noun}${count === 1 ? "" : "s"}`;
|
|
405
|
+
}
|
|
406
|
+
function formatCurrency(value) {
|
|
407
|
+
return `$${value.toFixed(2)}`;
|
|
408
|
+
}
|
|
409
|
+
function roundCurrency(value) {
|
|
410
|
+
return Number(value.toFixed(2));
|
|
411
|
+
}
|
|
412
|
+
function clamp(value, min, max) {
|
|
413
|
+
return Math.min(max, Math.max(min, value));
|
|
414
|
+
}
|
|
415
|
+
function box(lines) {
|
|
416
|
+
const width = Math.max(...lines.map(visibleLength), 0);
|
|
417
|
+
const border = `+${"-".repeat(width + 2)}+`;
|
|
418
|
+
return [border, ...lines.map((line) => `| ${line}${" ".repeat(width - visibleLength(line))} |`), border];
|
|
419
|
+
}
|
|
420
|
+
function colorize(value, key, enabled) {
|
|
421
|
+
return enabled ? `${COLORS[key]}${value}${RESET}` : value;
|
|
422
|
+
}
|
|
423
|
+
function visibleLength(value) {
|
|
424
|
+
// eslint-disable-next-line no-control-regex
|
|
425
|
+
return value.replace(/\u001b\[[0-9;]*m/gu, "").length;
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { buildPersonalBaseline, clearPersonalBaseline, formatDoctorChecks, runDoctor } from "./doctor.js";
|
|
3
|
+
import { formatAuditReport, runAudit } from "./audit.js";
|
|
3
4
|
import { runBaselineRefresh } from "./baseline-refresh.js";
|
|
4
5
|
import { handleHook } from "./hook-control.js";
|
|
5
6
|
import { installStatusLine, uninstallStatusLine } from "./settings.js";
|
|
@@ -27,6 +28,9 @@ async function main() {
|
|
|
27
28
|
case "doctor":
|
|
28
29
|
await commandDoctor(args);
|
|
29
30
|
break;
|
|
31
|
+
case "audit":
|
|
32
|
+
await commandAudit(args);
|
|
33
|
+
break;
|
|
30
34
|
case "baseline-refresh":
|
|
31
35
|
await commandBaselineRefresh(args);
|
|
32
36
|
break;
|
|
@@ -169,6 +173,29 @@ async function commandDoctor(args) {
|
|
|
169
173
|
process.exitCode = 1;
|
|
170
174
|
}
|
|
171
175
|
}
|
|
176
|
+
async function commandAudit(args) {
|
|
177
|
+
if (args.flags["all-projects"] && args.flags.transcript) {
|
|
178
|
+
throw new Error("--all-projects cannot be combined with --transcript");
|
|
179
|
+
}
|
|
180
|
+
if (args.flags["all-projects"] && args.flags.project) {
|
|
181
|
+
throw new Error("--all-projects cannot be combined with --project");
|
|
182
|
+
}
|
|
183
|
+
const report = await runAudit({
|
|
184
|
+
projectDir: stringFlag(args, "project"),
|
|
185
|
+
homeDir: stringFlag(args, "home"),
|
|
186
|
+
transcriptPath: stringFlag(args, "transcript"),
|
|
187
|
+
allProjects: Boolean(args.flags["all-projects"]),
|
|
188
|
+
recent: numberFlag(args, "recent")
|
|
189
|
+
});
|
|
190
|
+
if (args.flags.json) {
|
|
191
|
+
console.log(JSON.stringify(report, null, 2));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
console.log(formatAuditReport(report, { color: shouldUseColor() }));
|
|
195
|
+
}
|
|
196
|
+
function shouldUseColor() {
|
|
197
|
+
return Boolean(process.stdout.isTTY && !process.env.NO_COLOR && process.env.BB_CC_LITE_COLOR !== "0");
|
|
198
|
+
}
|
|
172
199
|
function parseArgs(argv) {
|
|
173
200
|
const [command = "help", ...rest] = argv;
|
|
174
201
|
const flags = {};
|
|
@@ -225,10 +252,23 @@ function stringFlag(args, name) {
|
|
|
225
252
|
const value = args.flags[name];
|
|
226
253
|
return typeof value === "string" ? value : undefined;
|
|
227
254
|
}
|
|
255
|
+
function numberFlag(args, name) {
|
|
256
|
+
const value = stringFlag(args, name);
|
|
257
|
+
if (value === undefined) {
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
260
|
+
const parsed = Number(value);
|
|
261
|
+
if (Number.isFinite(parsed) && parsed > 0) {
|
|
262
|
+
return parsed;
|
|
263
|
+
}
|
|
264
|
+
throw new Error(`Invalid --${name} ${value}; expected a positive number`);
|
|
265
|
+
}
|
|
228
266
|
function printHelp() {
|
|
229
267
|
console.log(`bb-cc-lite
|
|
230
268
|
|
|
231
269
|
Usage:
|
|
270
|
+
bb-cc-lite audit [--project <path>] [--all-projects] [--transcript <path>]
|
|
271
|
+
[--recent <count>] [--json]
|
|
232
272
|
bb-cc-lite install [--scope local|project|user] [--observe-only] [--guard]
|
|
233
273
|
[--replace] [--no-learn]
|
|
234
274
|
bb-cc-lite statusline
|
|
@@ -239,6 +279,8 @@ Usage:
|
|
|
239
279
|
bb-cc-lite uninstall [--scope local|project|user] [--force]
|
|
240
280
|
|
|
241
281
|
Learning:
|
|
282
|
+
audit scans recent local Claude JSONL history without installing bb-cc-lite.
|
|
283
|
+
--all-projects scans newest local transcripts across ~/.claude/projects.
|
|
242
284
|
install enables coach mode and builds a small local baseline by default.
|
|
243
285
|
--observe-only keeps display and local telemetry without Claude-facing feedback.
|
|
244
286
|
--guard enables coach feedback plus strict repeated-validation retry denial.
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAwC,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQnF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM;QACR,KAAK,WAAW;YACd,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM;QACR,KAAK,YAAY;YACf,MAAM,iBAAiB,EAAE,CAAC;YAC1B,MAAM;QACR,KAAK,KAAK;YACR,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,kBAAkB;YACrB,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClD,SAAS,EAAE,CAAC;gBACZ,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAgB;IAC5C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,KAAK,EAAE,IAAI;QACX,IAAI;QACJ,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QACvC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1H,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAgB;IAC9C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;QACvC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;QACtB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAChC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QACvC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAgB;IAC5C,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAAgB;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;QACtC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QACjC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QACvC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;KAC/C,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAgB;IACzC,IAAI,CAAC;QACH,MAAM,iBAAiB,GACrB,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,mBAAmB,CAAC,CAAC;QACzG,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,SAAS,EAAE,EAAE;YACnD,iBAAiB;YACjB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;YACpB,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,GAAG;SACpD,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAgB;IACxC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1G,OAAO;IACT,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,kGAAkG,CAAC,CAAC;QAChH,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAgB;IAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;QAC7B,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QACvC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QACjC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;QAC9C,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACrD,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACrB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAC,IAAgB;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC;IACnD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,oCAAoC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB;IACnC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACjD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAY;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED