@hanfour.huang/caliber 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +667 -0
- package/dist/analyzers/section.d.ts +9 -0
- package/dist/analyzers/section.d.ts.map +1 -0
- package/dist/analyzers/section.js +503 -0
- package/dist/analyzers/section.js.map +1 -0
- package/dist/analyzers/usage.d.ts +3 -0
- package/dist/analyzers/usage.d.ts.map +1 -0
- package/dist/analyzers/usage.js +141 -0
- package/dist/analyzers/usage.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +295 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +156 -0
- package/dist/config.js.map +1 -0
- package/dist/data-quality.d.ts +3 -0
- package/dist/data-quality.d.ts.map +1 -0
- package/dist/data-quality.js +54 -0
- package/dist/data-quality.js.map +1 -0
- package/dist/extractors/claude-code.d.ts +6 -0
- package/dist/extractors/claude-code.d.ts.map +1 -0
- package/dist/extractors/claude-code.js +216 -0
- package/dist/extractors/claude-code.js.map +1 -0
- package/dist/extractors/codex.d.ts +5 -0
- package/dist/extractors/codex.d.ts.map +1 -0
- package/dist/extractors/codex.js +184 -0
- package/dist/extractors/codex.js.map +1 -0
- package/dist/i18n.d.ts +53 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +163 -0
- package/dist/i18n.js.map +1 -0
- package/dist/period.d.ts +5 -0
- package/dist/period.d.ts.map +1 -0
- package/dist/period.js +25 -0
- package/dist/period.js.map +1 -0
- package/dist/reporters/report.d.ts +7 -0
- package/dist/reporters/report.d.ts.map +1 -0
- package/dist/reporters/report.js +440 -0
- package/dist/reporters/report.js.map +1 -0
- package/dist/standard.d.ts +5 -0
- package/dist/standard.d.ts.map +1 -0
- package/dist/standard.js +98 -0
- package/dist/standard.js.map +1 -0
- package/dist/types.d.ts +216 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +17 -0
- package/dist/utils.js.map +1 -0
- package/package.json +59 -0
- package/templates/eval-standard.json +174 -0
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
// ── Constants ──
|
|
2
|
+
const DEEP_SESSION_MIN_MESSAGES = 10;
|
|
3
|
+
const DEEP_SESSION_MIN_TOOLS = 20;
|
|
4
|
+
const CODEX_ITERATIVE_MIN_MESSAGES = 3;
|
|
5
|
+
const CODEX_DEEP_MIN_TOOL_CALLS = 10;
|
|
6
|
+
const CODEX_DEEP_MIN_TOKENS = 50_000;
|
|
7
|
+
const SECURITY_KEYWORDS = [
|
|
8
|
+
"security",
|
|
9
|
+
"vulnerability",
|
|
10
|
+
"injection",
|
|
11
|
+
"xss",
|
|
12
|
+
"csrf",
|
|
13
|
+
"authentication",
|
|
14
|
+
"authorization",
|
|
15
|
+
"credential",
|
|
16
|
+
"sanitize",
|
|
17
|
+
"security review",
|
|
18
|
+
"risk assessment",
|
|
19
|
+
"安全",
|
|
20
|
+
"漏洞",
|
|
21
|
+
"注入",
|
|
22
|
+
];
|
|
23
|
+
const PERFORMANCE_KEYWORDS = [
|
|
24
|
+
"performance",
|
|
25
|
+
"bottleneck",
|
|
26
|
+
"memory leak",
|
|
27
|
+
"optimize",
|
|
28
|
+
"latency",
|
|
29
|
+
"cache invalidat",
|
|
30
|
+
"slow query",
|
|
31
|
+
"timeout",
|
|
32
|
+
"n+1",
|
|
33
|
+
"效能",
|
|
34
|
+
"瓶頸",
|
|
35
|
+
"記憶體洩漏",
|
|
36
|
+
];
|
|
37
|
+
// ── Threshold description ──
|
|
38
|
+
function describeThreshold(key, metrics) {
|
|
39
|
+
const value = metrics[key] ?? 0;
|
|
40
|
+
const labels = {
|
|
41
|
+
iterativeRatio: "iterative evidence ratio reached threshold",
|
|
42
|
+
correctionCount: `${value} active corrections`,
|
|
43
|
+
keywordHits: `${value} decision/risk keyword hits`,
|
|
44
|
+
avgToolUses: `${value} average tool uses per session`,
|
|
45
|
+
securityCount: `${value} security signals`,
|
|
46
|
+
performanceCount: `${value} performance signals`,
|
|
47
|
+
bugsCaught: `${value} AI bugs caught`,
|
|
48
|
+
frictionSessions: `${value} friction sessions`,
|
|
49
|
+
codexErrorSessions: `${value} Codex error-handling sessions`,
|
|
50
|
+
};
|
|
51
|
+
return labels[key] ?? `${key}: ${value}`;
|
|
52
|
+
}
|
|
53
|
+
// ── Superior score determination ──
|
|
54
|
+
function shouldScoreGroupedSuperior(metThresholdKeys, strongThresholds, supportThresholds, minStrongMatched, minSupportMatched) {
|
|
55
|
+
const metStrongCount = strongThresholds.filter((key) => metThresholdKeys.has(key)).length;
|
|
56
|
+
const metSupportCount = supportThresholds.filter((key) => metThresholdKeys.has(key)).length;
|
|
57
|
+
return (metStrongCount >= minStrongMatched && metSupportCount >= minSupportMatched);
|
|
58
|
+
}
|
|
59
|
+
function shouldScoreSuperior(section, metThresholdKeys) {
|
|
60
|
+
const rules = section.superiorRules;
|
|
61
|
+
if (!rules || rules.mode === "any" || !rules.mode) {
|
|
62
|
+
return metThresholdKeys.size > 0;
|
|
63
|
+
}
|
|
64
|
+
if (rules.mode === "grouped") {
|
|
65
|
+
return shouldScoreGroupedSuperior(metThresholdKeys, rules.strongThresholds ?? Object.keys(section.thresholds), rules.supportThresholds ?? [], rules.minStrongMatched ?? 1, rules.minSupportMatched ?? 0);
|
|
66
|
+
}
|
|
67
|
+
return metThresholdKeys.size > 0;
|
|
68
|
+
}
|
|
69
|
+
function collectFacetSignals(facets) {
|
|
70
|
+
const signals = [];
|
|
71
|
+
let iterativeSessions = 0;
|
|
72
|
+
let multiTaskSessions = 0;
|
|
73
|
+
let frictionSessions = 0;
|
|
74
|
+
let bugsCaught = 0;
|
|
75
|
+
for (const [sid, facet] of facets) {
|
|
76
|
+
if (facet.sessionType === "iterative_refinement") {
|
|
77
|
+
iterativeSessions++;
|
|
78
|
+
signals.push({
|
|
79
|
+
type: "iterative_refinement",
|
|
80
|
+
description: "Session shows iterative guidance pattern (A → B → C)",
|
|
81
|
+
sessionId: sid,
|
|
82
|
+
detail: facet.briefSummary,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (facet.sessionType === "multi_task") {
|
|
86
|
+
multiTaskSessions++;
|
|
87
|
+
signals.push({
|
|
88
|
+
type: "multi_task",
|
|
89
|
+
description: "Session involves coordinating multiple AI tasks",
|
|
90
|
+
sessionId: sid,
|
|
91
|
+
detail: facet.underlyingGoal,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (facet.outcome === "fully_achieved" &&
|
|
95
|
+
(facet.claudeHelpfulness === "very_helpful" ||
|
|
96
|
+
facet.claudeHelpfulness === "extremely_helpful")) {
|
|
97
|
+
signals.push({
|
|
98
|
+
type: "effective_outcome",
|
|
99
|
+
description: "Session fully achieved with high AI helpfulness",
|
|
100
|
+
sessionId: sid,
|
|
101
|
+
detail: `Goal: ${facet.underlyingGoal} | Outcome: ${facet.outcome}`,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
const frictionKeys = Object.keys(facet.frictionCounts);
|
|
105
|
+
if (frictionKeys.length > 0) {
|
|
106
|
+
frictionSessions++;
|
|
107
|
+
if (facet.frictionCounts["buggy_code"]) {
|
|
108
|
+
bugsCaught += facet.frictionCounts["buggy_code"];
|
|
109
|
+
signals.push({
|
|
110
|
+
type: "bugs_caught",
|
|
111
|
+
description: `Caught ${facet.frictionCounts["buggy_code"]} AI-generated bugs`,
|
|
112
|
+
sessionId: sid,
|
|
113
|
+
detail: facet.frictionDetail,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (facet.frictionCounts["wrong_approach"]) {
|
|
117
|
+
signals.push({
|
|
118
|
+
type: "wrong_approach_caught",
|
|
119
|
+
description: "Identified and corrected wrong AI approach",
|
|
120
|
+
sessionId: sid,
|
|
121
|
+
detail: facet.frictionDetail,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (facet.primarySuccess === "good_debugging") {
|
|
126
|
+
signals.push({
|
|
127
|
+
type: "good_debugging",
|
|
128
|
+
description: "Session recognized for effective debugging",
|
|
129
|
+
sessionId: sid,
|
|
130
|
+
detail: facet.briefSummary,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
signals,
|
|
136
|
+
iterativeSessions,
|
|
137
|
+
multiTaskSessions,
|
|
138
|
+
frictionSessions,
|
|
139
|
+
bugsCaught,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function collectClaudeSessionSignals(sessions) {
|
|
143
|
+
const signals = [];
|
|
144
|
+
let totalToolUses = 0;
|
|
145
|
+
let correctionCount = 0;
|
|
146
|
+
for (const s of sessions) {
|
|
147
|
+
const toolCount = Object.values(s.toolCounts).reduce((a, b) => a + b, 0);
|
|
148
|
+
totalToolUses += toolCount;
|
|
149
|
+
correctionCount += s.userInterruptions;
|
|
150
|
+
if (s.userMessageCount >= DEEP_SESSION_MIN_MESSAGES &&
|
|
151
|
+
toolCount >= DEEP_SESSION_MIN_TOOLS) {
|
|
152
|
+
signals.push({
|
|
153
|
+
type: "deep_engagement",
|
|
154
|
+
description: `Deep session: ${s.userMessageCount} user messages, ${toolCount} tool uses`,
|
|
155
|
+
sessionId: s.sessionId,
|
|
156
|
+
detail: s.firstPrompt.slice(0, 150),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (s.toolErrors > 0) {
|
|
160
|
+
signals.push({
|
|
161
|
+
type: "tool_errors_handled",
|
|
162
|
+
description: `Handled ${s.toolErrors} tool errors in session`,
|
|
163
|
+
sessionId: s.sessionId,
|
|
164
|
+
detail: Object.entries(s.toolErrorCategories)
|
|
165
|
+
.map(([k, v]) => `${k}: ${v}`)
|
|
166
|
+
.join(", "),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return { signals, totalToolUses, correctionCount };
|
|
171
|
+
}
|
|
172
|
+
function collectCodexSignals(codexSessions, codexInsights, sectionId, sectionCodexSignalSessionIds) {
|
|
173
|
+
const signals = [];
|
|
174
|
+
let totalToolUses = 0;
|
|
175
|
+
let iterativeSessions = 0;
|
|
176
|
+
let deepSessions = 0;
|
|
177
|
+
let errorSessions = 0;
|
|
178
|
+
let followUpCount = 0;
|
|
179
|
+
let multiTurnSessions = 0;
|
|
180
|
+
for (const session of codexSessions) {
|
|
181
|
+
const insight = codexInsights.get(session.id);
|
|
182
|
+
const userMessageCount = insight?.userMessages.length ?? 0;
|
|
183
|
+
const followUps = Math.max(0, userMessageCount - 1);
|
|
184
|
+
const toolCallCount = insight?.toolCallCount ?? 0;
|
|
185
|
+
const errorCount = insight?.errorCount ?? 0;
|
|
186
|
+
totalToolUses += toolCallCount;
|
|
187
|
+
followUpCount += followUps;
|
|
188
|
+
if (userMessageCount >= 2) {
|
|
189
|
+
multiTurnSessions++;
|
|
190
|
+
signals.push({
|
|
191
|
+
type: "codex_multi_turn",
|
|
192
|
+
description: `Codex thread has ${userMessageCount} user prompts`,
|
|
193
|
+
sessionId: session.id,
|
|
194
|
+
detail: session.title || session.firstUserMessage.slice(0, 150),
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (userMessageCount >= CODEX_ITERATIVE_MIN_MESSAGES &&
|
|
198
|
+
(sectionId !== "interaction" ||
|
|
199
|
+
sectionCodexSignalSessionIds.has(session.id))) {
|
|
200
|
+
iterativeSessions++;
|
|
201
|
+
signals.push({
|
|
202
|
+
type: "codex_iterative_refinement",
|
|
203
|
+
description: `Codex thread shows iterative guidance with ${userMessageCount} user prompts`,
|
|
204
|
+
sessionId: session.id,
|
|
205
|
+
detail: session.title || session.firstUserMessage.slice(0, 150),
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
if (toolCallCount >= CODEX_DEEP_MIN_TOOL_CALLS ||
|
|
209
|
+
session.tokensUsed >= CODEX_DEEP_MIN_TOKENS) {
|
|
210
|
+
deepSessions++;
|
|
211
|
+
signals.push({
|
|
212
|
+
type: "codex_deep_engagement",
|
|
213
|
+
description: `Codex deep thread: ${toolCallCount} tool calls, ${session.tokensUsed.toLocaleString("en-US")} tokens`,
|
|
214
|
+
sessionId: session.id,
|
|
215
|
+
detail: session.title || session.firstUserMessage.slice(0, 150),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
if (errorCount > 0) {
|
|
219
|
+
errorSessions++;
|
|
220
|
+
signals.push({
|
|
221
|
+
type: "codex_tool_errors_handled",
|
|
222
|
+
description: `Codex thread handled ${errorCount} logged errors`,
|
|
223
|
+
sessionId: session.id,
|
|
224
|
+
detail: session.title || session.firstUserMessage.slice(0, 150),
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
signals,
|
|
230
|
+
totalToolUses,
|
|
231
|
+
iterativeSessions,
|
|
232
|
+
deepSessions,
|
|
233
|
+
errorSessions,
|
|
234
|
+
followUpCount,
|
|
235
|
+
multiTurnSessions,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function collectKeywordSignals(sectionId, claudeSignals, codexSignals) {
|
|
239
|
+
const signals = [];
|
|
240
|
+
let securityCount = 0;
|
|
241
|
+
let performanceCount = 0;
|
|
242
|
+
const matchesCategory = (keyword, categoryKeywords) => {
|
|
243
|
+
const lower = keyword.toLowerCase();
|
|
244
|
+
return categoryKeywords.some((ck) => lower.includes(ck) || ck.includes(lower));
|
|
245
|
+
};
|
|
246
|
+
for (const sig of claudeSignals) {
|
|
247
|
+
const isSecHit = sig.keywords.some((k) => matchesCategory(k, SECURITY_KEYWORDS));
|
|
248
|
+
const isPerfHit = sig.keywords.some((k) => matchesCategory(k, PERFORMANCE_KEYWORDS));
|
|
249
|
+
if (isSecHit)
|
|
250
|
+
securityCount++;
|
|
251
|
+
if (isPerfHit)
|
|
252
|
+
performanceCount++;
|
|
253
|
+
signals.push({
|
|
254
|
+
type: `keyword_${sectionId}`,
|
|
255
|
+
description: `Keyword match: [${sig.keywords.join(", ")}]`,
|
|
256
|
+
sessionId: sig.sessionId,
|
|
257
|
+
detail: sig.content,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
const codexSignalSessionIds = new Set();
|
|
261
|
+
for (const sig of codexSignals) {
|
|
262
|
+
codexSignalSessionIds.add(sig.sessionId);
|
|
263
|
+
const isSecHit = sig.keywords.some((k) => matchesCategory(k, SECURITY_KEYWORDS));
|
|
264
|
+
const isPerfHit = sig.keywords.some((k) => matchesCategory(k, PERFORMANCE_KEYWORDS));
|
|
265
|
+
signals.push({
|
|
266
|
+
type: `codex_keyword_${sectionId}`,
|
|
267
|
+
description: `Codex thread keyword match: [${sig.keywords.join(", ")}]`,
|
|
268
|
+
sessionId: sig.sessionId,
|
|
269
|
+
detail: sig.content,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
signals,
|
|
274
|
+
securityCount,
|
|
275
|
+
performanceCount,
|
|
276
|
+
codexKeywordSessions: codexSignalSessionIds.size,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
// ── Evidence builders ──
|
|
280
|
+
function buildEvidenceParts(params) {
|
|
281
|
+
const parts = [];
|
|
282
|
+
if (params.iterativeSessions > 0)
|
|
283
|
+
parts.push(`${params.iterativeSessions} iterative refinement sessions`);
|
|
284
|
+
if (params.codexIterativeSessions > 0)
|
|
285
|
+
parts.push(`${params.codexIterativeSessions} Codex iterative threads`);
|
|
286
|
+
if (params.codexMultiTurnSessions > 0)
|
|
287
|
+
parts.push(`${params.codexMultiTurnSessions} Codex multi-turn threads`);
|
|
288
|
+
if (params.multiTaskSessions > 0)
|
|
289
|
+
parts.push(`${params.multiTaskSessions} multi-task sessions`);
|
|
290
|
+
if (params.correctionCount > 0)
|
|
291
|
+
parts.push(`${params.correctionCount} active corrections`);
|
|
292
|
+
if (params.codexFollowUpCount > 0)
|
|
293
|
+
parts.push(`${params.codexFollowUpCount} Codex follow-up prompts`);
|
|
294
|
+
if (params.bugsCaught > 0)
|
|
295
|
+
parts.push(`${params.bugsCaught} AI bugs caught`);
|
|
296
|
+
if (params.securityCount > 0)
|
|
297
|
+
parts.push(`${params.securityCount} security discussions`);
|
|
298
|
+
if (params.performanceCount > 0)
|
|
299
|
+
parts.push(`${params.performanceCount} performance discussions`);
|
|
300
|
+
if (params.codexSignalCount > 0)
|
|
301
|
+
parts.push(`${params.codexSignalCount} Codex keyword signals`);
|
|
302
|
+
if (params.codexDeepSessions > 0)
|
|
303
|
+
parts.push(`${params.codexDeepSessions} deep Codex threads`);
|
|
304
|
+
return parts;
|
|
305
|
+
}
|
|
306
|
+
function buildUsageEvidence(params) {
|
|
307
|
+
const evidence = [];
|
|
308
|
+
if (params.claudeSessionCount > 0)
|
|
309
|
+
evidence.push(`${params.claudeSessionCount} Claude Code sessions in period`);
|
|
310
|
+
if (params.codexSessionCount > 0)
|
|
311
|
+
evidence.push(`${params.codexSessionCount} Codex threads in period`);
|
|
312
|
+
if (params.avgToolUses > 0)
|
|
313
|
+
evidence.push(`Average ${params.avgToolUses} tool uses per session/thread`);
|
|
314
|
+
if (params.codexDeepSessions > 0)
|
|
315
|
+
evidence.push(`${params.codexDeepSessions} deep Codex threads with high tool/token depth`);
|
|
316
|
+
if (params.frictionSessions > 0)
|
|
317
|
+
evidence.push(`${params.frictionSessions} friction sessions were recorded`);
|
|
318
|
+
return evidence;
|
|
319
|
+
}
|
|
320
|
+
function buildScoreEvidence(section, metThresholds, metThresholdKeys, isSuperior, metrics) {
|
|
321
|
+
const evidence = metThresholds.map((key) => describeThreshold(key, metrics));
|
|
322
|
+
if (metThresholdKeys.size > 0 && !isSuperior) {
|
|
323
|
+
const rules = section.superiorRules;
|
|
324
|
+
if (rules?.mode === "grouped") {
|
|
325
|
+
const strong = rules.strongThresholds ?? Object.keys(section.thresholds);
|
|
326
|
+
const support = rules.supportThresholds ?? [];
|
|
327
|
+
const metStrong = strong.filter((k) => metThresholdKeys.has(k));
|
|
328
|
+
const metSupport = support.filter((k) => metThresholdKeys.has(k));
|
|
329
|
+
evidence.push(`Thresholds met [${metThresholds.join(", ")}] but grouped rule requires ` +
|
|
330
|
+
`>=${rules.minStrongMatched ?? 1} strong (met ${metStrong.length}/${strong.length}: [${metStrong.join(", ")}]) ` +
|
|
331
|
+
`and >=${rules.minSupportMatched ?? 0} support (met ${metSupport.length}/${support.length}: [${metSupport.join(", ")}]). ` +
|
|
332
|
+
`Not sufficient for Superior.`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return evidence;
|
|
336
|
+
}
|
|
337
|
+
function buildSummary(params) {
|
|
338
|
+
const parts = [];
|
|
339
|
+
parts.push(`${params.totalSessions} sessions analyzed.`);
|
|
340
|
+
if (params.claudeSessionCount > 0)
|
|
341
|
+
parts.push(`${params.claudeSessionCount} Claude Code sessions.`);
|
|
342
|
+
if (params.codexSessionCount > 0)
|
|
343
|
+
parts.push(`${params.codexSessionCount} Codex threads.`);
|
|
344
|
+
if (params.iterativeSessions > 0)
|
|
345
|
+
parts.push(`${params.iterativeSessions} iterative refinement sessions.`);
|
|
346
|
+
if (params.codexIterativeSessions > 0)
|
|
347
|
+
parts.push(`${params.codexIterativeSessions} iterative Codex threads.`);
|
|
348
|
+
if (params.codexMultiTurnSessions > 0)
|
|
349
|
+
parts.push(`${params.codexMultiTurnSessions} multi-turn Codex threads.`);
|
|
350
|
+
if (params.multiTaskSessions > 0)
|
|
351
|
+
parts.push(`${params.multiTaskSessions} multi-task sessions.`);
|
|
352
|
+
if (params.frictionSessions > 0)
|
|
353
|
+
parts.push(`${params.frictionSessions} friction sessions (AI issues caught).`);
|
|
354
|
+
if (params.bugsCaught > 0)
|
|
355
|
+
parts.push(`${params.bugsCaught} AI bugs caught.`);
|
|
356
|
+
if (params.keywordHits > 0)
|
|
357
|
+
parts.push(`${params.keywordHits} keyword signals detected.`);
|
|
358
|
+
if (params.codexFollowUpCount > 0)
|
|
359
|
+
parts.push(`${params.codexFollowUpCount} Codex follow-up prompts.`);
|
|
360
|
+
parts.push(`Avg ${params.avgToolUses} tool uses/session.`);
|
|
361
|
+
return parts.join(" ");
|
|
362
|
+
}
|
|
363
|
+
// ── Main section analyzer ──
|
|
364
|
+
/**
|
|
365
|
+
* Generic section analyzer.
|
|
366
|
+
*
|
|
367
|
+
* Collects evidence from facets, sessions, and conversation signals,
|
|
368
|
+
* then determines standard vs superior score based on section thresholds.
|
|
369
|
+
*/
|
|
370
|
+
export function analyzeSection(section, claudeSessions, facets, claudeSignals, codexSessions, codexInsights, codexSignals) {
|
|
371
|
+
const totalSessions = claudeSessions.length + codexSessions.length;
|
|
372
|
+
if (totalSessions === 0) {
|
|
373
|
+
return {
|
|
374
|
+
id: section.id,
|
|
375
|
+
name: section.name,
|
|
376
|
+
weight: section.weight,
|
|
377
|
+
score: section.standard.score,
|
|
378
|
+
label: section.standard.label,
|
|
379
|
+
reason: "No sessions found in the evaluation period.",
|
|
380
|
+
metThresholds: [],
|
|
381
|
+
usageEvidence: [],
|
|
382
|
+
scoreEvidence: [],
|
|
383
|
+
signals: [],
|
|
384
|
+
metrics: {},
|
|
385
|
+
summary: "No sessions found in the evaluation period.",
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
// ── Collect signals from all sources ──
|
|
389
|
+
const sectionClaudeSignals = claudeSignals.filter((s) => s.type === section.id);
|
|
390
|
+
const sectionCodexSignals = codexSignals.filter((s) => s.type === section.id);
|
|
391
|
+
const sectionCodexSignalSessionIds = new Set(sectionCodexSignals.map((s) => s.sessionId));
|
|
392
|
+
const facetResult = collectFacetSignals(facets);
|
|
393
|
+
const claudeResult = collectClaudeSessionSignals(claudeSessions);
|
|
394
|
+
const codexResult = collectCodexSignals(codexSessions, codexInsights, section.id, sectionCodexSignalSessionIds);
|
|
395
|
+
const keywordResult = collectKeywordSignals(section.id, sectionClaudeSignals, sectionCodexSignals);
|
|
396
|
+
const collectedSignals = [
|
|
397
|
+
...facetResult.signals,
|
|
398
|
+
...claudeResult.signals,
|
|
399
|
+
...codexResult.signals,
|
|
400
|
+
...keywordResult.signals,
|
|
401
|
+
];
|
|
402
|
+
const totalToolUses = claudeResult.totalToolUses + codexResult.totalToolUses;
|
|
403
|
+
const avgToolUses = totalSessions > 0 ? Math.round(totalToolUses / totalSessions) : 0;
|
|
404
|
+
// ── Store metrics ──
|
|
405
|
+
const metrics = {
|
|
406
|
+
sessions: totalSessions,
|
|
407
|
+
claudeSessions: claudeSessions.length,
|
|
408
|
+
codexSessions: codexSessions.length,
|
|
409
|
+
iterativeSessions: facetResult.iterativeSessions,
|
|
410
|
+
codexIterativeSessions: codexResult.iterativeSessions,
|
|
411
|
+
codexMultiTurnSessions: codexResult.multiTurnSessions,
|
|
412
|
+
multiTaskSessions: facetResult.multiTaskSessions,
|
|
413
|
+
correctionCount: claudeResult.correctionCount,
|
|
414
|
+
codexFollowUpCount: codexResult.followUpCount,
|
|
415
|
+
avgToolUses,
|
|
416
|
+
keywordHits: sectionClaudeSignals.length + sectionCodexSignals.length,
|
|
417
|
+
codexKeywordSessions: keywordResult.codexKeywordSessions,
|
|
418
|
+
frictionSessions: facetResult.frictionSessions,
|
|
419
|
+
bugsCaught: facetResult.bugsCaught,
|
|
420
|
+
securityCount: keywordResult.securityCount,
|
|
421
|
+
performanceCount: keywordResult.performanceCount,
|
|
422
|
+
codexDeepSessions: codexResult.deepSessions,
|
|
423
|
+
codexErrorSessions: codexResult.errorSessions,
|
|
424
|
+
};
|
|
425
|
+
// ── Score determination via thresholds ──
|
|
426
|
+
const metThresholdKeys = new Set();
|
|
427
|
+
for (const [key, threshold] of Object.entries(section.thresholds)) {
|
|
428
|
+
if (key === "iterativeRatio") {
|
|
429
|
+
const ratio = totalSessions > 0
|
|
430
|
+
? (facetResult.iterativeSessions +
|
|
431
|
+
facetResult.multiTaskSessions +
|
|
432
|
+
codexResult.iterativeSessions) /
|
|
433
|
+
totalSessions
|
|
434
|
+
: 0;
|
|
435
|
+
if (ratio >= threshold)
|
|
436
|
+
metThresholdKeys.add(key);
|
|
437
|
+
}
|
|
438
|
+
else if ((metrics[key] ?? 0) >= threshold) {
|
|
439
|
+
metThresholdKeys.add(key);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
const isSuperior = shouldScoreSuperior(section, metThresholdKeys);
|
|
443
|
+
const metThresholds = [...metThresholdKeys];
|
|
444
|
+
const score = isSuperior ? section.superior.score : section.standard.score;
|
|
445
|
+
const label = isSuperior ? section.superior.label : section.standard.label;
|
|
446
|
+
// ── Build evidence and reason ──
|
|
447
|
+
const criteriaList = isSuperior
|
|
448
|
+
? section.superior.criteria
|
|
449
|
+
: section.standard.criteria;
|
|
450
|
+
const evidenceParts = buildEvidenceParts({
|
|
451
|
+
iterativeSessions: facetResult.iterativeSessions,
|
|
452
|
+
codexIterativeSessions: codexResult.iterativeSessions,
|
|
453
|
+
codexMultiTurnSessions: codexResult.multiTurnSessions,
|
|
454
|
+
multiTaskSessions: facetResult.multiTaskSessions,
|
|
455
|
+
correctionCount: claudeResult.correctionCount,
|
|
456
|
+
codexFollowUpCount: codexResult.followUpCount,
|
|
457
|
+
bugsCaught: facetResult.bugsCaught,
|
|
458
|
+
securityCount: keywordResult.securityCount,
|
|
459
|
+
performanceCount: keywordResult.performanceCount,
|
|
460
|
+
codexSignalCount: sectionCodexSignals.length,
|
|
461
|
+
codexDeepSessions: codexResult.deepSessions,
|
|
462
|
+
});
|
|
463
|
+
const reason = `${label} (${score}%): ` +
|
|
464
|
+
criteriaList[0] +
|
|
465
|
+
(evidenceParts.length > 0
|
|
466
|
+
? ". Evidence: " + evidenceParts.join("; ")
|
|
467
|
+
: "") +
|
|
468
|
+
".";
|
|
469
|
+
return {
|
|
470
|
+
id: section.id,
|
|
471
|
+
name: section.name,
|
|
472
|
+
weight: section.weight,
|
|
473
|
+
score,
|
|
474
|
+
label,
|
|
475
|
+
reason,
|
|
476
|
+
metThresholds,
|
|
477
|
+
usageEvidence: buildUsageEvidence({
|
|
478
|
+
claudeSessionCount: claudeSessions.length,
|
|
479
|
+
codexSessionCount: codexSessions.length,
|
|
480
|
+
avgToolUses,
|
|
481
|
+
codexDeepSessions: codexResult.deepSessions,
|
|
482
|
+
frictionSessions: facetResult.frictionSessions,
|
|
483
|
+
}),
|
|
484
|
+
scoreEvidence: buildScoreEvidence(section, metThresholds, metThresholdKeys, isSuperior, metrics),
|
|
485
|
+
signals: collectedSignals,
|
|
486
|
+
metrics,
|
|
487
|
+
summary: buildSummary({
|
|
488
|
+
totalSessions,
|
|
489
|
+
claudeSessionCount: claudeSessions.length,
|
|
490
|
+
codexSessionCount: codexSessions.length,
|
|
491
|
+
iterativeSessions: facetResult.iterativeSessions,
|
|
492
|
+
codexIterativeSessions: codexResult.iterativeSessions,
|
|
493
|
+
codexMultiTurnSessions: codexResult.multiTurnSessions,
|
|
494
|
+
multiTaskSessions: facetResult.multiTaskSessions,
|
|
495
|
+
frictionSessions: facetResult.frictionSessions,
|
|
496
|
+
bugsCaught: facetResult.bugsCaught,
|
|
497
|
+
keywordHits: sectionClaudeSignals.length + sectionCodexSignals.length,
|
|
498
|
+
codexFollowUpCount: codexResult.followUpCount,
|
|
499
|
+
avgToolUses,
|
|
500
|
+
}),
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
//# sourceMappingURL=section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../src/analyzers/section.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ClaudeCodeSession, ClaudeCodeCostRecord, CodexSession, UsageOverview } from "../types.js";
|
|
2
|
+
export declare function analyzeUsage(claudeSessions: ClaudeCodeSession[], claudeCosts: ClaudeCodeCostRecord[], codexSessions: CodexSession[], since: string, until: string): UsageOverview;
|
|
3
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/analyzers/usage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACd,MAAM,aAAa,CAAC;AAiCrB,wBAAgB,YAAY,CAC1B,cAAc,EAAE,iBAAiB,EAAE,EACnC,WAAW,EAAE,oBAAoB,EAAE,EACnC,aAAa,EAAE,YAAY,EAAE,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,aAAa,CA6If"}
|