@ironbee-ai/cli 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +2 -95
- package/dist/clients/claude/hooks/session-status.d.ts +5 -0
- package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-status.js +120 -17
- package/dist/clients/claude/hooks/session-status.js.map +1 -1
- package/dist/clients/claude/index.d.ts.map +1 -1
- package/dist/clients/claude/index.js +11 -14
- package/dist/clients/claude/index.js.map +1 -1
- package/dist/clients/claude/oauth.d.ts +96 -0
- package/dist/clients/claude/oauth.d.ts.map +1 -0
- package/dist/clients/claude/oauth.js +290 -0
- package/dist/clients/claude/oauth.js.map +1 -0
- package/dist/clients/cursor/hooks/session-start.js +1 -1
- package/dist/clients/cursor/hooks/session-start.js.map +1 -1
- package/dist/clients/cursor/index.d.ts.map +1 -1
- package/dist/clients/cursor/index.js +9 -13
- package/dist/clients/cursor/index.js.map +1 -1
- package/dist/commands/claude.d.ts +30 -0
- package/dist/commands/claude.d.ts.map +1 -0
- package/dist/commands/claude.js +188 -0
- package/dist/commands/claude.js.map +1 -0
- package/dist/commands/status.js +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +1 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +41 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +42 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/fs-prune.d.ts +1 -1
- package/dist/lib/fs-prune.js +1 -1
- package/dist/tui/config/schema.d.ts.map +1 -1
- package/dist/tui/config/schema.js +19 -0
- package/dist/tui/config/schema.js.map +1 -1
- package/dist/tui/sessions/area.d.ts.map +1 -1
- package/dist/tui/sessions/area.js +2 -45
- package/dist/tui/sessions/area.js.map +1 -1
- package/package.json +1 -1
- package/dist/analysis/code-changes.d.ts +0 -22
- package/dist/analysis/code-changes.d.ts.map +0 -1
- package/dist/analysis/code-changes.js +0 -141
- package/dist/analysis/code-changes.js.map +0 -1
- package/dist/analysis/cross-session.d.ts +0 -34
- package/dist/analysis/cross-session.d.ts.map +0 -1
- package/dist/analysis/cross-session.js +0 -230
- package/dist/analysis/cross-session.js.map +0 -1
- package/dist/analysis/fix-effectiveness.d.ts +0 -16
- package/dist/analysis/fix-effectiveness.d.ts.map +0 -1
- package/dist/analysis/fix-effectiveness.js +0 -99
- package/dist/analysis/fix-effectiveness.js.map +0 -1
- package/dist/analysis/scoring.d.ts +0 -15
- package/dist/analysis/scoring.d.ts.map +0 -1
- package/dist/analysis/scoring.js +0 -59
- package/dist/analysis/scoring.js.map +0 -1
- package/dist/analysis/time-analysis.d.ts +0 -22
- package/dist/analysis/time-analysis.d.ts.map +0 -1
- package/dist/analysis/time-analysis.js +0 -174
- package/dist/analysis/time-analysis.js.map +0 -1
- package/dist/analysis/verdict-details.d.ts +0 -23
- package/dist/analysis/verdict-details.d.ts.map +0 -1
- package/dist/analysis/verdict-details.js +0 -59
- package/dist/analysis/verdict-details.js.map +0 -1
- package/dist/analysis/verification-quality.d.ts +0 -20
- package/dist/analysis/verification-quality.d.ts.map +0 -1
- package/dist/analysis/verification-quality.js +0 -145
- package/dist/analysis/verification-quality.js.map +0 -1
- package/dist/clients/claude/commands/ironbee-analyze.md +0 -42
- package/dist/clients/cursor/commands/ironbee-analyze/SKILL.md +0 -48
- package/dist/commands/analyze.d.ts +0 -3
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js +0 -329
- package/dist/commands/analyze.js.map +0 -1
package/dist/commands/analyze.js
DELETED
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.analyzeCommand = void 0;
|
|
4
|
-
const commander_1 = require("commander");
|
|
5
|
-
const fs_1 = require("fs");
|
|
6
|
-
const path_1 = require("path");
|
|
7
|
-
const output_1 = require("../lib/output");
|
|
8
|
-
const time_analysis_1 = require("../analysis/time-analysis");
|
|
9
|
-
const verification_quality_1 = require("../analysis/verification-quality");
|
|
10
|
-
const code_changes_1 = require("../analysis/code-changes");
|
|
11
|
-
const fix_effectiveness_1 = require("../analysis/fix-effectiveness");
|
|
12
|
-
const scoring_1 = require("../analysis/scoring");
|
|
13
|
-
const cross_session_1 = require("../analysis/cross-session");
|
|
14
|
-
const verdict_details_1 = require("../analysis/verdict-details");
|
|
15
|
-
/**
|
|
16
|
-
* Detect a monitoring-only-mode session (verification disabled when it ran).
|
|
17
|
-
* The reliable signal is zero `verification_requested` events: enabled mode
|
|
18
|
-
* emits one per Stop hook fire (allow or block path), while monitoring mode
|
|
19
|
-
* runs `activity-end` instead, which never writes that event.
|
|
20
|
-
*
|
|
21
|
-
* We deliberately do NOT use zero `verification_start` — an enabled-mode
|
|
22
|
-
* session where the agent never edited code also has zero of those, but
|
|
23
|
-
* still gets `verification_requested` from the Stop hook.
|
|
24
|
-
*/
|
|
25
|
-
function isMonitoringOnlySession(actionsFile) {
|
|
26
|
-
if (!(0, fs_1.existsSync)(actionsFile)) {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
let content;
|
|
30
|
-
try {
|
|
31
|
-
content = (0, fs_1.readFileSync)(actionsFile, "utf-8");
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
const lines = content.split("\n");
|
|
37
|
-
for (const line of lines) {
|
|
38
|
-
if (line.includes("\"type\":\"verification_requested\"") || line.includes("\"type\": \"verification_requested\"")) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// No verification_requested at all: monitoring-only OR a session that
|
|
43
|
-
// never reached Stop. Distinguish by requiring at least one session_start
|
|
44
|
-
// — without that we have no useful context anyway.
|
|
45
|
-
return content.includes("\"type\":\"session_start\"") || content.includes("\"type\": \"session_start\"");
|
|
46
|
-
}
|
|
47
|
-
function formatDuration(ms) {
|
|
48
|
-
if (ms < 1000) {
|
|
49
|
-
return "0s";
|
|
50
|
-
}
|
|
51
|
-
const totalSeconds = Math.floor(ms / 1000);
|
|
52
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
53
|
-
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
54
|
-
const seconds = totalSeconds % 60;
|
|
55
|
-
if (hours > 0) {
|
|
56
|
-
return `${hours}h ${minutes}m`;
|
|
57
|
-
}
|
|
58
|
-
if (minutes > 0) {
|
|
59
|
-
return `${minutes}m ${seconds.toString().padStart(2, "0")}s`;
|
|
60
|
-
}
|
|
61
|
-
return `${seconds}s`;
|
|
62
|
-
}
|
|
63
|
-
function bar(percent, width = 20) {
|
|
64
|
-
const filled = Math.round(percent / 100 * width);
|
|
65
|
-
const empty = width - filled;
|
|
66
|
-
return `${"█".repeat(filled)}${"░".repeat(empty)}`;
|
|
67
|
-
}
|
|
68
|
-
function scoreColor(score, max = 100) {
|
|
69
|
-
const pct = max === 1 ? score * 100 : (score / max) * 100;
|
|
70
|
-
if (pct >= 80) {
|
|
71
|
-
return (s) => output_1.pc.bold(output_1.pc.green(s));
|
|
72
|
-
}
|
|
73
|
-
if (pct >= 50) {
|
|
74
|
-
return (s) => output_1.pc.yellow(s);
|
|
75
|
-
}
|
|
76
|
-
return (s) => output_1.pc.red(s);
|
|
77
|
-
}
|
|
78
|
-
function rateColor(rate) {
|
|
79
|
-
if (rate >= 80) {
|
|
80
|
-
return (s) => output_1.pc.green(s);
|
|
81
|
-
}
|
|
82
|
-
if (rate >= 50) {
|
|
83
|
-
return (s) => output_1.pc.yellow(s);
|
|
84
|
-
}
|
|
85
|
-
return (s) => output_1.pc.red(s);
|
|
86
|
-
}
|
|
87
|
-
function shortPath(filePath) {
|
|
88
|
-
const parts = filePath.split("/");
|
|
89
|
-
if (parts.length <= 3) {
|
|
90
|
-
return filePath;
|
|
91
|
-
}
|
|
92
|
-
return ".../" + parts.slice(-3).join("/");
|
|
93
|
-
}
|
|
94
|
-
function section(title, emoji) {
|
|
95
|
-
console.log();
|
|
96
|
-
console.log(` ${emoji} ${output_1.pc.bold(output_1.pc.underline(title))}`);
|
|
97
|
-
}
|
|
98
|
-
// ── Cross-Session Output ─────────────────────────────────
|
|
99
|
-
function printCrossSessionAnalysis(analysis, projectDir, opts) {
|
|
100
|
-
console.log();
|
|
101
|
-
console.log(` ${output_1.pc.bold("📊 Project Analysis")} ${output_1.pc.dim(`(${analysis.totalSessions} session${analysis.totalSessions !== 1 ? "s" : ""})`)}`);
|
|
102
|
-
// Session History
|
|
103
|
-
const displaySummaries = analysis.sessionSummaries.slice(0, 20);
|
|
104
|
-
if (displaySummaries.length > 0) {
|
|
105
|
-
section("Session History", "📋");
|
|
106
|
-
for (const s of displaySummaries) {
|
|
107
|
-
const dateStr = new Date(s.timestamp).toISOString().slice(0, 10);
|
|
108
|
-
const durationStr = formatDuration(s.duration).padEnd(10);
|
|
109
|
-
const verifyStr = `${s.verificationCycles} verify`;
|
|
110
|
-
const fixStr = `${s.fixCycles} fix`;
|
|
111
|
-
const firstPassStr = s.lastVerdictStatus === "pass" ? output_1.pc.green("✓") : s.lastVerdictStatus === "fail" ? output_1.pc.red("✗") : output_1.pc.dim("—");
|
|
112
|
-
const scoreVal = s.agentEfficiencyScore;
|
|
113
|
-
const color = scoreColor(scoreVal);
|
|
114
|
-
const idShort = s.sessionId.length > 12 ? s.sessionId.slice(0, 12) : s.sessionId;
|
|
115
|
-
console.log(` ${firstPassStr} ${output_1.pc.cyan(idShort.padEnd(14))} ${output_1.pc.dim(dateStr)} ${durationStr} ${verifyStr.padEnd(10)} ${fixStr.padEnd(8)} ${color(`${scoreVal}pts`)}`);
|
|
116
|
-
}
|
|
117
|
-
if (analysis.sessionSummaries.length > 20) {
|
|
118
|
-
console.log(` ${output_1.pc.dim(`... and ${analysis.sessionSummaries.length - 20} more`)}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// Aggregate Metrics
|
|
122
|
-
section("Aggregate Metrics", "📈");
|
|
123
|
-
console.log(` ${"Avg duration".padEnd(18)} ${output_1.pc.cyan(formatDuration(analysis.averageSessionDuration))}`);
|
|
124
|
-
console.log(` ${"Avg verifies".padEnd(18)} ${output_1.pc.cyan(String(analysis.averageVerificationCycles))}`);
|
|
125
|
-
console.log(` ${"Avg fixes".padEnd(18)} ${output_1.pc.cyan(String(analysis.averageFixCycles))}`);
|
|
126
|
-
console.log(` ${"First-pass".padEnd(18)} ${rateColor(analysis.aggregateFirstPassRate)(`${analysis.aggregateFirstPassRate}%`.padEnd(8))} ${output_1.pc.dim(bar(analysis.aggregateFirstPassRate))}`);
|
|
127
|
-
console.log(` ${"Fix success".padEnd(18)} ${rateColor(analysis.aggregateFixSuccessRate)(`${analysis.aggregateFixSuccessRate}%`.padEnd(8))} ${output_1.pc.dim(bar(analysis.aggregateFixSuccessRate))}`);
|
|
128
|
-
console.log(` ${"Abandon rate".padEnd(18)} ${output_1.pc.dim(`${analysis.abandonRate}%`)}`);
|
|
129
|
-
// Scores
|
|
130
|
-
section("Scores", "🏆");
|
|
131
|
-
console.log(` ${"Efficiency".padEnd(18)} ${scoreColor(analysis.averageEfficiencyScore)(`${analysis.averageEfficiencyScore}%`.padEnd(8))} ${output_1.pc.dim(bar(analysis.averageEfficiencyScore))}`);
|
|
132
|
-
console.log(` ${"Confidence".padEnd(18)} ${scoreColor(analysis.averageCodeConfidence)(`${analysis.averageCodeConfidence}%`.padEnd(8))} ${output_1.pc.dim(bar(analysis.averageCodeConfidence))}`);
|
|
133
|
-
// Most Problematic Files
|
|
134
|
-
if (analysis.mostProblematicFiles.length > 0) {
|
|
135
|
-
section("Problematic Files", "🔥");
|
|
136
|
-
for (const f of analysis.mostProblematicFiles) {
|
|
137
|
-
const label = shortPath(f.filePath);
|
|
138
|
-
console.log(` ${output_1.pc.red("●")} ${label.padEnd(40)} ${output_1.pc.dim(`${f.fixEditCount} fix edit${f.fixEditCount !== 1 ? "s" : ""}`)}`);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// Verdict Details (--detailed)
|
|
142
|
-
if (opts.detailed) {
|
|
143
|
-
section("All Verdict Details", "📋");
|
|
144
|
-
for (const s of analysis.sessionSummaries) {
|
|
145
|
-
const actionsFile = (0, path_1.join)(projectDir, ".ironbee", "sessions", s.sessionId, "actions.jsonl");
|
|
146
|
-
const details = (0, verdict_details_1.extractVerdictDetails)(actionsFile);
|
|
147
|
-
if (details && details.verdicts.length > 0) {
|
|
148
|
-
const idShort = s.sessionId.length > 12 ? s.sessionId.slice(0, 12) : s.sessionId;
|
|
149
|
-
console.log();
|
|
150
|
-
console.log(` ${output_1.pc.bold(output_1.pc.cyan(idShort))} ${output_1.pc.dim(new Date(s.timestamp).toISOString().slice(0, 10))}`);
|
|
151
|
-
for (let i = 0; i < details.verdicts.length; i++) {
|
|
152
|
-
const v = details.verdicts[i];
|
|
153
|
-
const statusIcon = v.status === "pass" ? output_1.pc.green("✓") : output_1.pc.red("✗");
|
|
154
|
-
console.log(` ${statusIcon} ${output_1.pc.bold(`#${i + 1}`)} ${v.status === "pass" ? output_1.pc.green(v.status) : output_1.pc.red(v.status)}`);
|
|
155
|
-
if (v.issues.length > 0) {
|
|
156
|
-
console.log(` ${"Issues".padEnd(8)} ${output_1.pc.red(v.issues.join(", "))}`);
|
|
157
|
-
}
|
|
158
|
-
if (v.fixes.length > 0) {
|
|
159
|
-
console.log(` ${"Fixes".padEnd(8)} ${output_1.pc.green(v.fixes.join(", "))}`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
console.log();
|
|
166
|
-
}
|
|
167
|
-
// ── Single-Session Output ────────────────────────────────
|
|
168
|
-
function runSingleSessionAnalysis(sessionId, projectDir, opts) {
|
|
169
|
-
const actionsFile = (0, path_1.join)(projectDir, ".ironbee", "sessions", sessionId, "actions.jsonl");
|
|
170
|
-
const result = (0, time_analysis_1.analyzeTime)(actionsFile);
|
|
171
|
-
const qualityResult = (0, verification_quality_1.analyzeVerificationQuality)(actionsFile);
|
|
172
|
-
const codeChanges = (0, code_changes_1.analyzeCodeChanges)(actionsFile);
|
|
173
|
-
const fixEffectiveness = (0, fix_effectiveness_1.analyzeFixEffectiveness)(actionsFile);
|
|
174
|
-
const scoring = (0, scoring_1.calculateScoring)(result, qualityResult);
|
|
175
|
-
if (result === null && qualityResult === null && codeChanges === null && fixEffectiveness === null) {
|
|
176
|
-
output_1.log.warn("No analyzable session data found.");
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
const monitoringOnly = isMonitoringOnlySession(actionsFile);
|
|
180
|
-
if (opts.json) {
|
|
181
|
-
const output = { ...result, ...qualityResult, ...codeChanges, ...fixEffectiveness, ...scoring };
|
|
182
|
-
if (monitoringOnly) {
|
|
183
|
-
output.mode = "monitoring-only";
|
|
184
|
-
}
|
|
185
|
-
if (opts.detailed) {
|
|
186
|
-
const details = (0, verdict_details_1.extractVerdictDetails)(actionsFile);
|
|
187
|
-
if (details) {
|
|
188
|
-
output.verdicts = details.verdicts;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
console.log(JSON.stringify(output, null, 2));
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
if (result !== null) {
|
|
195
|
-
console.log();
|
|
196
|
-
console.log(` 📊 ${output_1.pc.bold("Session:")} ${output_1.pc.cyan(sessionId)}`);
|
|
197
|
-
console.log(` ${output_1.pc.bold("Duration:")} ${output_1.pc.cyan(formatDuration(result.sessionDuration))}`);
|
|
198
|
-
if (monitoringOnly) {
|
|
199
|
-
console.log(` ${output_1.pc.yellow("⚠")} ${output_1.pc.yellow("Monitoring-only mode")} ${output_1.pc.dim("— verification metrics unavailable for this session")}`);
|
|
200
|
-
}
|
|
201
|
-
section("Phase Distribution", "⏱️");
|
|
202
|
-
const codingBar = bar(result.codingPercent);
|
|
203
|
-
const verifyBar = bar(result.verificationPercent);
|
|
204
|
-
const fixBar = bar(result.fixPercent);
|
|
205
|
-
console.log(` ${"Coding".padEnd(18)} ${output_1.pc.cyan(formatDuration(result.codingTime).padEnd(10))} ${output_1.pc.green(codingBar)} ${output_1.pc.dim(`${result.codingPercent}%`)}`);
|
|
206
|
-
console.log(` ${"Verification".padEnd(18)} ${output_1.pc.cyan(formatDuration(result.verificationTime).padEnd(10))} ${output_1.pc.blue(verifyBar)} ${output_1.pc.dim(`${result.verificationPercent}%`)}`);
|
|
207
|
-
console.log(` ${"Fixing".padEnd(18)} ${output_1.pc.cyan(formatDuration(result.fixTime).padEnd(10))} ${output_1.pc.yellow(fixBar)} ${output_1.pc.dim(`${result.fixPercent}%`)}`);
|
|
208
|
-
section("Cycles", "🔄");
|
|
209
|
-
console.log(` ${"Verifications".padEnd(18)} ${output_1.pc.cyan(String(result.verificationCycles))}`);
|
|
210
|
-
console.log(` ${"Fixes".padEnd(18)} ${output_1.pc.cyan(String(result.fixCycles))}`);
|
|
211
|
-
console.log(` ${"Avg verify".padEnd(18)} ${result.averageVerificationDuration !== null ? output_1.pc.cyan(formatDuration(result.averageVerificationDuration)) : output_1.pc.dim("n/a")}`);
|
|
212
|
-
console.log(` ${"Avg fix".padEnd(18)} ${result.averageFixDuration !== null ? output_1.pc.cyan(formatDuration(result.averageFixDuration)) : output_1.pc.dim("n/a")}`);
|
|
213
|
-
console.log(` ${"First verify".padEnd(18)} ${result.timeToFirstVerification !== null ? output_1.pc.cyan(formatDuration(result.timeToFirstVerification)) : output_1.pc.dim("n/a")}`);
|
|
214
|
-
}
|
|
215
|
-
if (qualityResult !== null) {
|
|
216
|
-
section("Verification Quality", "✅");
|
|
217
|
-
const passRate = `${qualityResult.firstPassSuccessRate}%`;
|
|
218
|
-
console.log(` ${"First-pass rate".padEnd(18)} ${rateColor(qualityResult.firstPassSuccessRate)(passRate.padEnd(8))} ${output_1.pc.dim(bar(qualityResult.firstPassSuccessRate))}`);
|
|
219
|
-
console.log(` ${"Verdicts".padEnd(18)} ${output_1.pc.cyan(String(qualityResult.totalVerifications).padEnd(8))} ${output_1.pc.dim(`(${output_1.pc.green(`${qualityResult.passCount} pass`)}, ${output_1.pc.red(`${qualityResult.failCount} fail`)})`)}`);
|
|
220
|
-
console.log(` ${"Avg retries".padEnd(18)} ${output_1.pc.cyan(String(qualityResult.averageRetries))}`);
|
|
221
|
-
console.log(` ${"Avg checks".padEnd(18)} ${output_1.pc.cyan(String(qualityResult.averageChecksCount))}`);
|
|
222
|
-
}
|
|
223
|
-
if (codeChanges !== null) {
|
|
224
|
-
section("Code Changes", "📝");
|
|
225
|
-
console.log(` ${"Total edits".padEnd(18)} ${output_1.pc.cyan(String(codeChanges.totalFileEdits))}`);
|
|
226
|
-
console.log(` ${"Unique files".padEnd(18)} ${output_1.pc.cyan(String(codeChanges.uniqueFilesEdited))}`);
|
|
227
|
-
console.log(` ${"Avg per verify".padEnd(18)} ${output_1.pc.cyan(String(codeChanges.filesEditedPerVerification))}`);
|
|
228
|
-
console.log(` ${"Avg per fix".padEnd(18)} ${output_1.pc.cyan(String(codeChanges.filesChangedPerFix))}`);
|
|
229
|
-
if (codeChanges.hotFiles.length > 0) {
|
|
230
|
-
console.log();
|
|
231
|
-
console.log(` ${output_1.pc.bold("🔥 Hot Files:")}`);
|
|
232
|
-
for (const f of codeChanges.hotFiles) {
|
|
233
|
-
const label = shortPath(f.filePath);
|
|
234
|
-
console.log(` ${output_1.pc.yellow("●")} ${label.padEnd(40)} ${output_1.pc.dim(`${f.editCount} edit${f.editCount !== 1 ? "s" : ""}`)}`);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
if (codeChanges.problematicFiles.length > 0) {
|
|
238
|
-
console.log();
|
|
239
|
-
console.log(` ${output_1.pc.bold("⚠️ Problematic Files:")}`);
|
|
240
|
-
for (const f of codeChanges.problematicFiles) {
|
|
241
|
-
const label = shortPath(f.filePath);
|
|
242
|
-
console.log(` ${output_1.pc.red("●")} ${label.padEnd(40)} ${output_1.pc.dim(`${f.fixEditCount} fix edit${f.fixEditCount !== 1 ? "s" : ""}`)}`);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
if (codeChanges.editChurnFiles.length > 0) {
|
|
246
|
-
console.log();
|
|
247
|
-
console.log(` ${output_1.pc.bold("🔁 Edit Churn")} ${output_1.pc.dim("(edited in 2+ fix cycles):")}`);
|
|
248
|
-
for (const filePath of codeChanges.editChurnFiles) {
|
|
249
|
-
console.log(` ${output_1.pc.red("●")} ${shortPath(filePath)}`);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
if (fixEffectiveness !== null) {
|
|
254
|
-
section("Fix Effectiveness", "🔧");
|
|
255
|
-
console.log(` ${"Success rate".padEnd(18)} ${rateColor(fixEffectiveness.fixSuccessRate)(`${fixEffectiveness.fixSuccessRate}%`.padEnd(8))} ${output_1.pc.dim(bar(fixEffectiveness.fixSuccessRate))} ${output_1.pc.dim(`${fixEffectiveness.successfulFixes}/${fixEffectiveness.totalFixAttempts}`)}`);
|
|
256
|
-
const reFailStr = fixEffectiveness.reFailRate > 0 ? `${fixEffectiveness.reFailRate}%` : "0%";
|
|
257
|
-
const reFailColored = fixEffectiveness.reFailRate > 0 ? output_1.pc.red(reFailStr.padEnd(8)) : output_1.pc.green(reFailStr.padEnd(8));
|
|
258
|
-
console.log(` ${"Re-fail rate".padEnd(18)} ${reFailColored} ${output_1.pc.dim(bar(fixEffectiveness.reFailRate))} ${output_1.pc.dim(`${fixEffectiveness.failedFixes}/${fixEffectiveness.totalFixAttempts}`)}`);
|
|
259
|
-
console.log(` ${"Fix/verify".padEnd(18)} ${output_1.pc.cyan(String(fixEffectiveness.fixToVerifyRatio))}`);
|
|
260
|
-
}
|
|
261
|
-
if (scoring !== null) {
|
|
262
|
-
section("Scoring", "🏆");
|
|
263
|
-
console.log(` ${"Efficiency".padEnd(18)} ${scoreColor(scoring.agentEfficiencyScore)(`${scoring.agentEfficiencyScore}%`.padEnd(8))} ${output_1.pc.dim(bar(scoring.agentEfficiencyScore))}`);
|
|
264
|
-
console.log(` ${"Quality".padEnd(18)} ${scoreColor(scoring.verificationQualityScore)(`${scoring.verificationQualityScore}%`.padEnd(8))} ${output_1.pc.dim(bar(scoring.verificationQualityScore))}`);
|
|
265
|
-
console.log(` ${"Confidence".padEnd(18)} ${scoreColor(scoring.codeConfidenceScore)(`${scoring.codeConfidenceScore}%`.padEnd(8))} ${output_1.pc.dim(bar(scoring.codeConfidenceScore))}`);
|
|
266
|
-
}
|
|
267
|
-
if (opts.detailed) {
|
|
268
|
-
const details = (0, verdict_details_1.extractVerdictDetails)(actionsFile);
|
|
269
|
-
if (details) {
|
|
270
|
-
section("Verdict Details", "📋");
|
|
271
|
-
for (let i = 0; i < details.verdicts.length; i++) {
|
|
272
|
-
const v = details.verdicts[i];
|
|
273
|
-
const statusIcon = v.status === "pass" ? output_1.pc.green("✓") : output_1.pc.red("✗");
|
|
274
|
-
const dateStr = new Date(v.timestamp).toISOString().slice(0, 19).replace("T", " ");
|
|
275
|
-
console.log(` ${statusIcon} ${output_1.pc.bold(`#${i + 1}`)} ${output_1.pc.dim(dateStr)} ${v.status === "pass" ? output_1.pc.green(v.status) : output_1.pc.red(v.status)}`);
|
|
276
|
-
if (v.checks.length > 0) {
|
|
277
|
-
console.log(` ${"Checks".padEnd(10)} ${v.checks.join(", ")}`);
|
|
278
|
-
}
|
|
279
|
-
if (v.issues.length > 0) {
|
|
280
|
-
console.log(` ${"Issues".padEnd(10)} ${output_1.pc.red(v.issues.join(", "))}`);
|
|
281
|
-
}
|
|
282
|
-
if (v.fixes.length > 0) {
|
|
283
|
-
console.log(` ${"Fixes".padEnd(10)} ${output_1.pc.green(v.fixes.join(", "))}`);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
console.log();
|
|
289
|
-
}
|
|
290
|
-
exports.analyzeCommand = new commander_1.Command("analyze")
|
|
291
|
-
.description("Analyze session metrics (single session or all sessions)")
|
|
292
|
-
.argument("[session-id]", "session ID to analyze (omit for cross-session analysis)")
|
|
293
|
-
.option("--project-dir <dir>", "project directory")
|
|
294
|
-
.option("--json", "output as JSON")
|
|
295
|
-
.option("--detailed", "include verdict details (checks, issues, fixes) for semantic analysis")
|
|
296
|
-
.option("--all", "analyze all sessions in the project")
|
|
297
|
-
.action((sessionId, opts) => {
|
|
298
|
-
const projectDir = (0, path_1.resolve)(opts.projectDir ?? ".");
|
|
299
|
-
// Cross-session mode: no session-id or --all flag
|
|
300
|
-
if (sessionId === undefined || opts.all === true) {
|
|
301
|
-
const sessionsDir = (0, path_1.join)(projectDir, ".ironbee", "sessions");
|
|
302
|
-
const crossResult = (0, cross_session_1.analyzeCrossSessions)(sessionsDir);
|
|
303
|
-
if (crossResult === null) {
|
|
304
|
-
output_1.log.warn("No sessions found to analyze.");
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
if (opts.json) {
|
|
308
|
-
const output = crossResult;
|
|
309
|
-
if (opts.detailed) {
|
|
310
|
-
const allVerdicts = [];
|
|
311
|
-
for (const s of crossResult.sessionSummaries) {
|
|
312
|
-
const actionsFile = (0, path_1.join)(projectDir, ".ironbee", "sessions", s.sessionId, "actions.jsonl");
|
|
313
|
-
const details = (0, verdict_details_1.extractVerdictDetails)(actionsFile);
|
|
314
|
-
if (details) {
|
|
315
|
-
allVerdicts.push({ sessionId: s.sessionId, verdicts: details.verdicts });
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
output.verdictDetails = allVerdicts;
|
|
319
|
-
}
|
|
320
|
-
console.log(JSON.stringify(output, null, 2));
|
|
321
|
-
return;
|
|
322
|
-
}
|
|
323
|
-
printCrossSessionAnalysis(crossResult, projectDir, opts);
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
// Single-session mode
|
|
327
|
-
runSingleSessionAnalysis(sessionId, projectDir, opts);
|
|
328
|
-
});
|
|
329
|
-
//# sourceMappingURL=analyze.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
|