bb-cc-lite 0.1.6 → 0.1.8

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.
Files changed (51) hide show
  1. package/README.md +38 -29
  2. package/assets/statusline-demo.gif +0 -0
  3. package/dist/baseline-builder.js +64 -64
  4. package/dist/baseline-builder.js.map +1 -1
  5. package/dist/baseline-refresh.d.ts +66 -0
  6. package/dist/baseline-refresh.js +214 -0
  7. package/dist/baseline-refresh.js.map +1 -0
  8. package/dist/baseline.d.ts +11 -1
  9. package/dist/baseline.js +128 -4
  10. package/dist/baseline.js.map +1 -1
  11. package/dist/cli.js +33 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/doctor.d.ts +1 -0
  14. package/dist/doctor.js +29 -0
  15. package/dist/doctor.js.map +1 -1
  16. package/dist/event-store-persistence.js +21 -3
  17. package/dist/event-store-persistence.js.map +1 -1
  18. package/dist/event-store-queries.d.ts +4 -1
  19. package/dist/event-store-queries.js +38 -11
  20. package/dist/event-store-queries.js.map +1 -1
  21. package/dist/failure-episodes.d.ts +21 -0
  22. package/dist/failure-episodes.js +266 -0
  23. package/dist/failure-episodes.js.map +1 -0
  24. package/dist/historical-replay.d.ts +21 -0
  25. package/dist/historical-replay.js +263 -0
  26. package/dist/historical-replay.js.map +1 -0
  27. package/dist/hook-payload.js +11 -7
  28. package/dist/hook-payload.js.map +1 -1
  29. package/dist/hook-summary.d.ts +4 -5
  30. package/dist/hook-summary.js +37 -11
  31. package/dist/hook-summary.js.map +1 -1
  32. package/dist/recovery-stats.d.ts +57 -0
  33. package/dist/recovery-stats.js +234 -0
  34. package/dist/recovery-stats.js.map +1 -0
  35. package/dist/settings.d.ts +1 -1
  36. package/dist/settings.js +7 -0
  37. package/dist/settings.js.map +1 -1
  38. package/dist/signals.js +173 -68
  39. package/dist/signals.js.map +1 -1
  40. package/dist/statusline.d.ts +5 -1
  41. package/dist/statusline.js +8 -3
  42. package/dist/statusline.js.map +1 -1
  43. package/dist/tool-metadata.d.ts +10 -0
  44. package/dist/tool-metadata.js +50 -2
  45. package/dist/tool-metadata.js.map +1 -1
  46. package/dist/transcript.js +106 -25
  47. package/dist/transcript.js.map +1 -1
  48. package/dist/types.d.ts +53 -0
  49. package/dist/why.js +1 -4
  50. package/dist/why.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { asRecord, extractUsage, mergeUsage, stringField } from "./status-input.js";
2
- import { classifyResultPurpose, classifyToolPurpose, isEditTool, safeToolName } from "./tool-metadata.js";
2
+ import { extractFailureEpisodesFromTranscriptLines, summarizeBlindRetry } from "./failure-episodes.js";
3
+ import { classifyResultPurpose, classifyToolIdentity } from "./tool-metadata.js";
3
4
  import { readTranscriptTail } from "./transcript-reader.js";
4
5
  export async function parseTranscriptTail(transcriptPath, options = {}) {
5
6
  const tail = await readTranscriptTail(transcriptPath, options);
@@ -9,6 +10,8 @@ export async function parseTranscriptTail(transcriptPath, options = {}) {
9
10
  return parseTranscriptLines(tail.lines, tail.bytesRead);
10
11
  }
11
12
  export function parseTranscriptLines(lines, bytesRead = Buffer.byteLength(lines.join("\n"))) {
13
+ const failureEpisodes = extractFailureEpisodesFromTranscriptLines(lines);
14
+ const blindRetry = summarizeBlindRetry(failureEpisodes);
12
15
  const toolById = new Map();
13
16
  const failureCounts = new Map();
14
17
  let recentEditBeforeTest = false;
@@ -23,8 +26,12 @@ export function parseTranscriptLines(lines, bytesRead = Buffer.byteLength(lines.
23
26
  let failedToolResults = 0;
24
27
  let malformedLines = 0;
25
28
  let compactionEvents = 0;
29
+ let postCompactionActivity = 0;
26
30
  let usage = {};
31
+ let latestUsage;
32
+ let latestUsageTimestamp;
27
33
  let latestTimestamp;
34
+ let latestCompactionTimestamp;
28
35
  for (const line of lines) {
29
36
  let parsed;
30
37
  try {
@@ -39,44 +46,61 @@ export function parseTranscriptLines(lines, bytesRead = Buffer.byteLength(lines.
39
46
  malformedLines += 1;
40
47
  continue;
41
48
  }
42
- latestTimestamp = stringField(entry.timestamp) || latestTimestamp;
43
- usage = mergeUsage(usage, extractUsage(entry), extractUsage(asRecord(entry.message)));
49
+ const entryTimestamp = stringField(entry.timestamp);
50
+ latestTimestamp = entryTimestamp || latestTimestamp;
51
+ const entryUsage = mergeUsage(extractUsage(entry), extractUsage(asRecord(entry.message)));
52
+ usage = mergeUsage(usage, entryUsage);
53
+ if (hasUsage(entryUsage)) {
54
+ latestUsage = entryUsage;
55
+ latestUsageTimestamp = entryTimestamp || latestUsageTimestamp;
56
+ }
57
+ const toolUses = extractToolUses(entry);
58
+ const toolResults = extractToolResults(entry);
44
59
  if (isCompactionEvent(entry)) {
45
60
  compactionEvents += 1;
61
+ postCompactionActivity = 0;
62
+ latestCompactionTimestamp = entryTimestamp || latestCompactionTimestamp;
63
+ }
64
+ else if (compactionEvents > 0 && isPostCompactionActivity(entry, toolUses, toolResults)) {
65
+ postCompactionActivity += 1;
46
66
  }
47
- for (const toolUse of extractToolUses(entry)) {
67
+ for (const toolUse of toolUses) {
48
68
  toolCalls += 1;
49
- if (isReadLikeTool(toolUse.name)) {
69
+ const identity = classifyToolIdentity(toolUse.name, toolUse.input, { basenameOnly: true });
70
+ if (identity.isReadSearch) {
50
71
  readToolCalls += 1;
51
72
  }
52
73
  if (toolUse.id) {
53
- const isEdit = isEditTool(toolUse.name, { basenameOnly: true });
54
74
  toolById.set(toolUse.id, {
55
- name: safeToolName(toolUse.name, { basenameOnly: true }),
56
- purpose: classifyToolPurpose(toolUse.name, toolUse.input, { basenameOnly: true }),
57
- isEdit
75
+ name: identity.displayName,
76
+ purpose: identity.purpose,
77
+ category: identity.category,
78
+ identityHash: identity.identityHash,
79
+ isEdit: identity.isEdit,
80
+ isReadSearch: identity.isReadSearch
58
81
  });
59
82
  }
60
- if (isEditTool(toolUse.name, { basenameOnly: true })) {
83
+ if (identity.isEdit) {
61
84
  recentEditBeforeTest = true;
62
85
  }
63
86
  }
64
- for (const toolResult of extractToolResults(entry)) {
87
+ for (const toolResult of toolResults) {
65
88
  toolResultStep += 1;
66
89
  const meta = (toolResult.toolUseId ? toolById.get(toolResult.toolUseId) : undefined) ||
67
90
  (toolResult.toolName
68
- ? { name: safeToolName(toolResult.toolName, { basenameOnly: true }), purpose: undefined, isEdit: false }
91
+ ? metaFromToolName(toolResult.toolName)
69
92
  : undefined) ||
70
- { name: "tool", purpose: undefined, isEdit: false };
71
- const purpose = toolResult.purpose || meta.purpose;
72
- const key = `${meta.name}:${purpose || ""}`;
93
+ { name: "tool", purpose: undefined, isEdit: false, isReadSearch: false };
94
+ const purpose = meta.name === "Bash" ? toolResult.purpose || meta.purpose : meta.purpose;
95
+ const key = failureKey(meta, purpose);
96
+ const isValidation = meta.name === "Bash" && isValidationPurpose(purpose);
73
97
  if (!toolResult.isError) {
74
98
  failureCounts.delete(key);
75
99
  if (meta.isEdit) {
76
100
  hasUnvalidatedEdits = true;
77
101
  unvalidatedEditStep = toolResultStep;
78
102
  }
79
- else if (meta.name === "Bash" && purpose === "tests") {
103
+ else if (isValidation) {
80
104
  if (validationFailedSinceSuccess) {
81
105
  validationRecovered = true;
82
106
  }
@@ -90,16 +114,12 @@ export function parseTranscriptLines(lines, bytesRead = Buffer.byteLength(lines.
90
114
  }
91
115
  failedToolResults += 1;
92
116
  const existing = failureCounts.get(key);
93
- failureCounts.set(key, {
94
- toolName: meta.name,
95
- purpose,
96
- count: (existing?.count || 0) + 1
97
- });
117
+ failureCounts.set(key, failureSummary(meta, purpose, (existing?.count || 0) + 1));
98
118
  if (meta.name === "Bash" && purpose === "tests" && recentEditBeforeTest) {
99
119
  editTestLoopFailures += 1;
100
120
  recentEditBeforeTest = false;
101
121
  }
102
- if (meta.name === "Bash" && purpose === "tests") {
122
+ if (isValidation) {
103
123
  validationFailedSinceSuccess = true;
104
124
  }
105
125
  }
@@ -113,13 +133,19 @@ export function parseTranscriptLines(lines, bytesRead = Buffer.byteLength(lines.
113
133
  readToolCalls,
114
134
  failedToolResults,
115
135
  repeatedFailures: [...failureCounts.values()].filter((item) => item.count >= 2),
136
+ failureEpisodes,
137
+ blindRetry,
116
138
  editTestLoopFailures,
117
139
  hasUnvalidatedEdits,
118
140
  unvalidatedEditToolSteps: hasUnvalidatedEdits && unvalidatedEditStep !== undefined ? toolResultStep - unvalidatedEditStep : undefined,
119
141
  validationRecovered,
120
142
  compactionEvents,
143
+ postCompactionActivity,
121
144
  usage,
122
- latestTimestamp
145
+ latestUsage,
146
+ latestUsageTimestamp,
147
+ latestTimestamp,
148
+ latestCompactionTimestamp
123
149
  };
124
150
  }
125
151
  function emptySummary(pathReadable) {
@@ -136,11 +162,49 @@ function emptySummary(pathReadable) {
136
162
  hasUnvalidatedEdits: false,
137
163
  validationRecovered: false,
138
164
  compactionEvents: 0,
165
+ postCompactionActivity: 0,
139
166
  usage: {}
140
167
  };
141
168
  }
142
- function isReadLikeTool(toolName) {
143
- return /^(Read|Grep|Glob|LS|WebFetch|WebSearch)$/u.test(safeToolName(toolName, { basenameOnly: true }));
169
+ function isValidationPurpose(purpose) {
170
+ return purpose === "tests" || purpose === "lint" || purpose === "typecheck" || purpose === "build";
171
+ }
172
+ function metaFromToolName(toolName) {
173
+ const identity = classifyToolIdentity(toolName, undefined, { basenameOnly: true });
174
+ return {
175
+ name: identity.displayName,
176
+ purpose: identity.purpose,
177
+ category: identity.category,
178
+ identityHash: identity.identityHash,
179
+ isEdit: identity.isEdit,
180
+ isReadSearch: identity.isReadSearch
181
+ };
182
+ }
183
+ function failureKey(meta, purpose = meta.purpose) {
184
+ return meta.category === "MCP" && meta.identityHash ? `MCP:${meta.identityHash}` : `${meta.name}:${purpose || ""}`;
185
+ }
186
+ function failureSummary(meta, purpose, count) {
187
+ const summary = {
188
+ toolName: meta.name,
189
+ count
190
+ };
191
+ if (purpose) {
192
+ summary.purpose = purpose;
193
+ }
194
+ if (meta.category) {
195
+ summary.category = meta.category;
196
+ }
197
+ if (meta.identityHash) {
198
+ summary.identityHash = meta.identityHash;
199
+ }
200
+ return summary;
201
+ }
202
+ function hasUsage(usage) {
203
+ return (usage.inputTokens !== undefined ||
204
+ usage.outputTokens !== undefined ||
205
+ usage.cacheCreationInputTokens !== undefined ||
206
+ usage.cacheReadInputTokens !== undefined ||
207
+ usage.totalTokens !== undefined);
144
208
  }
145
209
  function extractToolUses(entry) {
146
210
  const result = [];
@@ -216,4 +280,21 @@ function isCompactionEvent(entry) {
216
280
  const content = typeof entry.content === "string" ? entry.content : typeof message?.content === "string" ? message.content : "";
217
281
  return role === "system" && /\b(compact|compaction)\b/i.test(content);
218
282
  }
283
+ function isPostCompactionActivity(entry, toolUses, toolResults) {
284
+ if (toolUses.length > 0 || toolResults.length > 0) {
285
+ return true;
286
+ }
287
+ const message = asRecord(entry.message);
288
+ const role = stringField(message?.role) || stringField(entry.role);
289
+ return (role === "assistant" || role === "user") && hasContent(entry.content ?? message?.content);
290
+ }
291
+ function hasContent(value) {
292
+ if (typeof value === "string") {
293
+ return value.length > 0;
294
+ }
295
+ if (Array.isArray(value)) {
296
+ return value.length > 0;
297
+ }
298
+ return Boolean(asRecord(value));
299
+ }
219
300
  //# sourceMappingURL=transcript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -30,6 +30,29 @@ export interface ToolFailureSummary {
30
30
  toolName: string;
31
31
  count: number;
32
32
  purpose?: string;
33
+ category?: "MCP";
34
+ identityHash?: string;
35
+ }
36
+ export type FailureRecoveryCategory = "tests" | "lint" | "typecheck" | "build" | "read" | "grep" | "glob" | "ls" | "edit" | "mcp" | "tool";
37
+ export interface FailureEpisodeSummary {
38
+ identity: string;
39
+ category: FailureRecoveryCategory;
40
+ label: string;
41
+ attemptCount: number;
42
+ recovered: boolean;
43
+ activeEnded: boolean;
44
+ blindRetryFailureCount: number;
45
+ meaningfulIntervention?: Array<"edit" | "validation_success" | "same_failure_success">;
46
+ identityHash?: string;
47
+ }
48
+ export interface BlindRetrySummary {
49
+ category: FailureRecoveryCategory;
50
+ label: string;
51
+ attemptCount: number;
52
+ recovered: boolean;
53
+ activeEnded: boolean;
54
+ blindRetryFailureCount: number;
55
+ identityHash?: string;
33
56
  }
34
57
  export interface TranscriptSummary {
35
58
  pathReadable: boolean;
@@ -40,13 +63,19 @@ export interface TranscriptSummary {
40
63
  readToolCalls: number;
41
64
  failedToolResults: number;
42
65
  repeatedFailures: ToolFailureSummary[];
66
+ failureEpisodes?: FailureEpisodeSummary[];
67
+ blindRetry?: BlindRetrySummary;
43
68
  editTestLoopFailures: number;
44
69
  hasUnvalidatedEdits: boolean;
45
70
  unvalidatedEditToolSteps?: number;
46
71
  validationRecovered: boolean;
47
72
  compactionEvents: number;
73
+ postCompactionActivity: number;
48
74
  usage: TokenUsage;
75
+ latestUsage?: TokenUsage;
76
+ latestUsageTimestamp?: string;
49
77
  latestTimestamp?: string;
78
+ latestCompactionTimestamp?: string;
50
79
  }
51
80
  export type HookEventKind = "tool_success" | "tool_failure" | "tool_batch" | "compaction" | "stop" | "session_end";
52
81
  export interface DerivedHookEvent {
@@ -56,6 +85,8 @@ export interface DerivedHookEvent {
56
85
  hookEventName: string;
57
86
  toolName?: string;
58
87
  purpose?: string;
88
+ category?: "MCP";
89
+ identityHash?: string;
59
90
  toolCount?: number;
60
91
  }
61
92
  export interface StoredHookEvent extends DerivedHookEvent {
@@ -111,6 +142,28 @@ export interface DecisionPersonalBaseline {
111
142
  unrecovered?: number;
112
143
  recoveryRate?: number;
113
144
  }>>;
145
+ failureRecovery?: Partial<Record<FailureRecoveryCategory, {
146
+ episodes?: number;
147
+ recovered?: number;
148
+ unrecovered?: number;
149
+ activeEnded?: number;
150
+ recoveryRate?: number;
151
+ medianAttemptsBeforeRecovery?: number;
152
+ p75AttemptsBeforeRecovery?: number;
153
+ blindRetryEpisodes?: number;
154
+ blindRetryRecovered?: number;
155
+ blindRetryUnrecovered?: number;
156
+ confidence?: DecisionConfidence;
157
+ }>>;
158
+ blindRetry?: Partial<Record<FailureRecoveryCategory, {
159
+ episodes?: number;
160
+ recovered?: number;
161
+ unrecovered?: number;
162
+ recoveryRate?: number;
163
+ carefulLikeEpisodes?: number;
164
+ stopLikeEpisodes?: number;
165
+ confidence?: DecisionConfidence;
166
+ }>>;
114
167
  }
115
168
  export interface Decision {
116
169
  state: DecisionState;
package/dist/why.js CHANGED
@@ -22,10 +22,7 @@ function baselineWhyLine(decision) {
22
22
  return undefined;
23
23
  }
24
24
  if (decision.diagnosisCode === "read_heavy_debugging") {
25
- return "Baseline: read-heavy sessions were usually Healthy-like for you.";
26
- }
27
- if (decision.baselineNote === "usually Stop-like for you") {
28
- return "Baseline: this pattern was Stop-like in past sessions.";
25
+ return "Baseline: similar research-heavy sessions usually ended OK.";
29
26
  }
30
27
  return `Baseline: ${decision.baselineNote}.`;
31
28
  }
package/dist/why.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"why.js","sourceRoot":"","sources":["../src/why.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAsB,EAAE;IAC3D,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,MAAM,IAAI,GACR,QAAQ,CAAC,OAAO,KAAK,SAAS;QAC5B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,oBAAoB,QAAQ,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpH,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACL,kBAAkB,QAAQ,CAAC,KAAK,GAAG;QACnC,WAAW,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAC,MAAM,GAAG;QAC1D,QAAQ;QACR,gBAAgB,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;KAC1C;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,QAAkB;IACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,aAAa,KAAK,sBAAsB,EAAE,CAAC;QACtD,OAAO,kEAAkE,CAAC;IAC5E,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,KAAK,2BAA2B,EAAE,CAAC;QAC1D,OAAO,wDAAwD,CAAC;IAClE,CAAC;IACD,OAAO,aAAa,QAAQ,CAAC,YAAY,GAAG,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"why.js","sourceRoot":"","sources":["../src/why.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAsB,EAAE;IAC3D,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,MAAM,IAAI,GACR,QAAQ,CAAC,OAAO,KAAK,SAAS;QAC5B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,oBAAoB,QAAQ,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpH,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACL,kBAAkB,QAAQ,CAAC,KAAK,GAAG;QACnC,WAAW,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAC,MAAM,GAAG;QAC1D,QAAQ;QACR,gBAAgB,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;KAC1C;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,QAAkB;IACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,aAAa,KAAK,sBAAsB,EAAE,CAAC;QACtD,OAAO,6DAA6D,CAAC;IACvE,CAAC;IACD,OAAO,aAAa,QAAQ,CAAC,YAAY,GAAG,CAAC;AAC/C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bb-cc-lite",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Black Box Claude Code Lite: a small Claude Code status line that says when to continue, slow down, or stop.",
5
5
  "type": "module",
6
6
  "author": "Softcane",