quackscore 0.1.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/LICENSE +21 -0
- package/README.md +158 -0
- package/dist/commands/create.d.ts +6 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +165 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +62 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/leaderboard.d.ts +2 -0
- package/dist/commands/leaderboard.d.ts.map +1 -0
- package/dist/commands/leaderboard.js +36 -0
- package/dist/commands/leaderboard.js.map +1 -0
- package/dist/commands/mock-report.d.ts +4 -0
- package/dist/commands/mock-report.d.ts.map +1 -0
- package/dist/commands/mock-report.js +311 -0
- package/dist/commands/mock-report.js.map +1 -0
- package/dist/commands/show.d.ts +2 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +17 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +175 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/manager.d.ts +7 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +29 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/types.d.ts +14 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +21 -0
- package/dist/config/types.js.map +1 -0
- package/dist/github/client.d.ts +8 -0
- package/dist/github/client.d.ts.map +1 -0
- package/dist/github/client.js +241 -0
- package/dist/github/client.js.map +1 -0
- package/dist/github/index.d.ts +3 -0
- package/dist/github/index.d.ts.map +1 -0
- package/dist/github/index.js +2 -0
- package/dist/github/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/analyzer.d.ts +7 -0
- package/dist/llm/analyzer.d.ts.map +1 -0
- package/dist/llm/analyzer.js +249 -0
- package/dist/llm/analyzer.js.map +1 -0
- package/dist/llm/character.d.ts +16 -0
- package/dist/llm/character.d.ts.map +1 -0
- package/dist/llm/character.js +245 -0
- package/dist/llm/character.js.map +1 -0
- package/dist/llm/client.d.ts +5 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +98 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/index.d.ts +4 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +4 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/prompts.d.ts +4 -0
- package/dist/llm/prompts.d.ts.map +1 -0
- package/dist/llm/prompts.js +109 -0
- package/dist/llm/prompts.js.map +1 -0
- package/dist/llm/providers.d.ts +10 -0
- package/dist/llm/providers.d.ts.map +1 -0
- package/dist/llm/providers.js +70 -0
- package/dist/llm/providers.js.map +1 -0
- package/dist/report/generate.d.ts +3 -0
- package/dist/report/generate.d.ts.map +1 -0
- package/dist/report/generate.js +1540 -0
- package/dist/report/generate.js.map +1 -0
- package/dist/report/index.d.ts +2 -0
- package/dist/report/index.d.ts.map +1 -0
- package/dist/report/index.js +2 -0
- package/dist/report/index.js.map +1 -0
- package/dist/scoring/index.d.ts +3 -0
- package/dist/scoring/index.d.ts.map +1 -0
- package/dist/scoring/index.js +3 -0
- package/dist/scoring/index.js.map +1 -0
- package/dist/scoring/points.d.ts +8 -0
- package/dist/scoring/points.d.ts.map +1 -0
- package/dist/scoring/points.js +28 -0
- package/dist/scoring/points.js.map +1 -0
- package/dist/scoring/stats.d.ts +3 -0
- package/dist/scoring/stats.d.ts.map +1 -0
- package/dist/scoring/stats.js +80 -0
- package/dist/scoring/stats.js.map +1 -0
- package/dist/shared/diagnostics.d.ts +8 -0
- package/dist/shared/diagnostics.d.ts.map +1 -0
- package/dist/shared/diagnostics.js +99 -0
- package/dist/shared/diagnostics.js.map +1 -0
- package/dist/shared/pr-summary.d.ts +5 -0
- package/dist/shared/pr-summary.d.ts.map +1 -0
- package/dist/shared/pr-summary.js +272 -0
- package/dist/shared/pr-summary.js.map +1 -0
- package/dist/shared/profile-summary.d.ts +5 -0
- package/dist/shared/profile-summary.d.ts.map +1 -0
- package/dist/shared/profile-summary.js +262 -0
- package/dist/shared/profile-summary.js.map +1 -0
- package/dist/shared/technologies.d.ts +5 -0
- package/dist/shared/technologies.d.ts.map +1 -0
- package/dist/shared/technologies.js +211 -0
- package/dist/shared/technologies.js.map +1 -0
- package/dist/shared/types.d.ts +61 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +14 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/shared/ui.d.ts +7 -0
- package/dist/shared/ui.d.ts.map +1 -0
- package/dist/shared/ui.js +24 -0
- package/dist/shared/ui.js.map +1 -0
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/leaderboard.d.ts +4 -0
- package/dist/storage/leaderboard.d.ts.map +1 -0
- package/dist/storage/leaderboard.js +37 -0
- package/dist/storage/leaderboard.js.map +1 -0
- package/dist/storage/paths.d.ts +6 -0
- package/dist/storage/paths.d.ts.map +1 -0
- package/dist/storage/paths.js +19 -0
- package/dist/storage/paths.js.map +1 -0
- package/dist/storage/report.d.ts +3 -0
- package/dist/storage/report.d.ts.map +1 -0
- package/dist/storage/report.js +21 -0
- package/dist/storage/report.js.map +1 -0
- package/dist/storage/user.d.ts +4 -0
- package/dist/storage/user.d.ts.map +1 -0
- package/dist/storage/user.js +44 -0
- package/dist/storage/user.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/report/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scoring/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scoring/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PRData } from '../shared/types.js';
|
|
2
|
+
export declare const LEVEL_THRESHOLDS: number[];
|
|
3
|
+
export declare function calculatePRPoints(pr: PRData): number;
|
|
4
|
+
export declare function calculateLevel(totalPoints: number): {
|
|
5
|
+
level: number;
|
|
6
|
+
pointsToNextLevel: number;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=points.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"points.d.ts","sourceRoot":"","sources":["../../src/scoring/points.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKjD,eAAO,MAAM,gBAAgB,UAA+E,CAAC;AAE7G,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAahG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Fibonacci-based level thresholds (cumulative total points required per level)
|
|
2
|
+
// Per-level cost: 100, 200, 300, 500, 800, 1300, 2100, 3400, 5500, 8900, 14400, 23300
|
|
3
|
+
// Cumulative: 100, 300, 600, 1100, 1900, 3200, 5300, 8700, 14200, 23100, 37500, 60800
|
|
4
|
+
export const LEVEL_THRESHOLDS = [0, 100, 300, 600, 1100, 1900, 3200, 5300, 8700, 14200, 23100, 37500, 60800];
|
|
5
|
+
export function calculatePRPoints(pr) {
|
|
6
|
+
if (!pr.analysis || pr.analysis.skipped)
|
|
7
|
+
return 0;
|
|
8
|
+
const complexity = pr.analysis.complexity;
|
|
9
|
+
const addPoints = pr.additions * (complexity / 10);
|
|
10
|
+
const delPoints = pr.deletions * (complexity / 10) * 0.5;
|
|
11
|
+
return Math.round(addPoints + delPoints);
|
|
12
|
+
}
|
|
13
|
+
export function calculateLevel(totalPoints) {
|
|
14
|
+
let level = 1;
|
|
15
|
+
for (let i = 1; i < LEVEL_THRESHOLDS.length; i++) {
|
|
16
|
+
if (totalPoints >= LEVEL_THRESHOLDS[i]) {
|
|
17
|
+
level = i + 1;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return { level, pointsToNextLevel: LEVEL_THRESHOLDS[i] - totalPoints };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Beyond defined thresholds — extend fibonacci
|
|
24
|
+
const last = LEVEL_THRESHOLDS[LEVEL_THRESHOLDS.length - 1];
|
|
25
|
+
const secondLast = LEVEL_THRESHOLDS[LEVEL_THRESHOLDS.length - 2];
|
|
26
|
+
return { level, pointsToNextLevel: last + secondLast - totalPoints };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=points.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"points.js","sourceRoot":"","sources":["../../src/scoring/points.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,sFAAsF;AACtF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE7G,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC1C,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,WAAW,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC;QACzE,CAAC;IACH,CAAC;IACD,+CAA+C;IAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/scoring/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAsB,MAAM,oBAAoB,CAAC;AA4BlF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,CA8DzD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { calculateLevel } from './points.js';
|
|
2
|
+
import { diagLog } from '../shared/diagnostics.js';
|
|
3
|
+
import { normalizeTechnologies } from '../shared/technologies.js';
|
|
4
|
+
function getWeekStart(dateStr) {
|
|
5
|
+
const date = new Date(dateStr);
|
|
6
|
+
const day = date.getUTCDay();
|
|
7
|
+
const diff = date.getUTCDate() - day + (day === 0 ? -6 : 1); // Monday
|
|
8
|
+
const monday = new Date(date);
|
|
9
|
+
monday.setUTCDate(diff);
|
|
10
|
+
monday.setUTCHours(0, 0, 0, 0);
|
|
11
|
+
return monday.toISOString().split('T')[0];
|
|
12
|
+
}
|
|
13
|
+
function getTimelineEndDate(prs) {
|
|
14
|
+
let latestMergedAt = 0;
|
|
15
|
+
for (const pr of prs) {
|
|
16
|
+
const mergedAt = Date.parse(pr.mergedAt);
|
|
17
|
+
if (!Number.isNaN(mergedAt) && mergedAt > latestMergedAt) {
|
|
18
|
+
latestMergedAt = mergedAt;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return latestMergedAt > 0 ? new Date(latestMergedAt) : new Date();
|
|
22
|
+
}
|
|
23
|
+
export function aggregateStats(prs) {
|
|
24
|
+
diagLog('Aggregating PR statistics', {
|
|
25
|
+
inputPRCount: prs.length,
|
|
26
|
+
analyzedPRCandidates: prs.filter((pr) => pr.analysis && !pr.analysis.skipped && pr.points != null).length,
|
|
27
|
+
});
|
|
28
|
+
const areas = {};
|
|
29
|
+
const technologies = {};
|
|
30
|
+
const types = {};
|
|
31
|
+
const weeklyMap = {};
|
|
32
|
+
let totalPoints = 0;
|
|
33
|
+
let analyzedPRs = 0;
|
|
34
|
+
for (const pr of prs) {
|
|
35
|
+
if (!pr.analysis || pr.analysis.skipped || pr.points == null)
|
|
36
|
+
continue;
|
|
37
|
+
analyzedPRs++;
|
|
38
|
+
totalPoints += pr.points;
|
|
39
|
+
for (const area of pr.analysis.areas) {
|
|
40
|
+
areas[area] = (areas[area] || 0) + pr.points;
|
|
41
|
+
}
|
|
42
|
+
for (const tech of normalizeTechnologies(pr.analysis.technologies)) {
|
|
43
|
+
technologies[tech] = (technologies[tech] || 0) + pr.points;
|
|
44
|
+
}
|
|
45
|
+
for (const type of pr.analysis.types) {
|
|
46
|
+
types[type] = (types[type] || 0) + pr.points;
|
|
47
|
+
}
|
|
48
|
+
const week = getWeekStart(pr.mergedAt);
|
|
49
|
+
weeklyMap[week] = (weeklyMap[week] || 0) + pr.points;
|
|
50
|
+
}
|
|
51
|
+
const timelineEnd = getTimelineEndDate(prs);
|
|
52
|
+
const weeklyContributions = [];
|
|
53
|
+
for (let i = 29; i >= 0; i--) {
|
|
54
|
+
const d = new Date(timelineEnd);
|
|
55
|
+
d.setUTCDate(d.getUTCDate() - i * 7);
|
|
56
|
+
const week = getWeekStart(d.toISOString());
|
|
57
|
+
weeklyContributions.push({ week, points: weeklyMap[week] || 0 });
|
|
58
|
+
}
|
|
59
|
+
const { level, pointsToNextLevel } = calculateLevel(totalPoints);
|
|
60
|
+
diagLog('Completed statistics aggregation', {
|
|
61
|
+
totalPoints,
|
|
62
|
+
analyzedPRs,
|
|
63
|
+
totalPRs: prs.length,
|
|
64
|
+
level,
|
|
65
|
+
pointsToNextLevel,
|
|
66
|
+
weeklyContributions: weeklyContributions.filter((entry) => entry.points > 0),
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
totalPoints,
|
|
70
|
+
level,
|
|
71
|
+
pointsToNextLevel,
|
|
72
|
+
areas,
|
|
73
|
+
technologies,
|
|
74
|
+
weeklyContributions,
|
|
75
|
+
types,
|
|
76
|
+
totalPRs: prs.length,
|
|
77
|
+
analyzedPRs,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/scoring/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type DiagnosticRecord = Record<string, unknown>;
|
|
2
|
+
export declare function configureDiagnostics(enabled: boolean, context?: DiagnosticRecord): void;
|
|
3
|
+
export declare function isDiagnosticsEnabled(): boolean;
|
|
4
|
+
export declare function diagLog(message: string, data?: unknown): void;
|
|
5
|
+
export declare function diagError(message: string, error: unknown, data?: DiagnosticRecord): void;
|
|
6
|
+
export declare function formatDiagnosticData(data: unknown): string;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/shared/diagnostics.ts"],"names":[],"mappings":"AAEA,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAShD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAoBvF;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAa7D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAOxF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
const SECRET_KEYS = ['token', 'key', 'secret', 'password', 'authorization'];
|
|
3
|
+
const MAX_STRING_LENGTH = 400;
|
|
4
|
+
const MAX_ARRAY_ITEMS = 25;
|
|
5
|
+
let diagnosticsEnabled = false;
|
|
6
|
+
let diagnosticsStartedAt = 0;
|
|
7
|
+
export function configureDiagnostics(enabled, context) {
|
|
8
|
+
diagnosticsEnabled = enabled;
|
|
9
|
+
diagnosticsStartedAt = enabled ? Date.now() : 0;
|
|
10
|
+
if (!diagnosticsEnabled)
|
|
11
|
+
return;
|
|
12
|
+
diagLog('Diagnostics enabled');
|
|
13
|
+
diagLog('Runtime context', {
|
|
14
|
+
cwd: process.cwd(),
|
|
15
|
+
argv: process.argv.slice(2),
|
|
16
|
+
nodeVersion: process.version,
|
|
17
|
+
platform: process.platform,
|
|
18
|
+
arch: process.arch,
|
|
19
|
+
pid: process.pid,
|
|
20
|
+
startedAt: new Date().toISOString(),
|
|
21
|
+
});
|
|
22
|
+
if (context) {
|
|
23
|
+
diagLog('Command context', context);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function isDiagnosticsEnabled() {
|
|
27
|
+
return diagnosticsEnabled;
|
|
28
|
+
}
|
|
29
|
+
export function diagLog(message, data) {
|
|
30
|
+
if (!diagnosticsEnabled)
|
|
31
|
+
return;
|
|
32
|
+
const elapsedMs = diagnosticsStartedAt === 0 ? 0 : Date.now() - diagnosticsStartedAt;
|
|
33
|
+
console.log(chalk.dim(`🔬 [diag +${elapsedMs}ms] ${message}`));
|
|
34
|
+
if (data !== undefined) {
|
|
35
|
+
const formatted = formatDiagnosticData(data)
|
|
36
|
+
.split('\n')
|
|
37
|
+
.map((line) => ` ${line}`)
|
|
38
|
+
.join('\n');
|
|
39
|
+
console.log(chalk.dim(formatted));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function diagError(message, error, data) {
|
|
43
|
+
if (!diagnosticsEnabled)
|
|
44
|
+
return;
|
|
45
|
+
diagLog(message, {
|
|
46
|
+
...(data ?? {}),
|
|
47
|
+
error: serializeError(error),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export function formatDiagnosticData(data) {
|
|
51
|
+
return JSON.stringify(sanitizeValue(data), null, 2);
|
|
52
|
+
}
|
|
53
|
+
function sanitizeValue(value, keyHint) {
|
|
54
|
+
if (value instanceof Error) {
|
|
55
|
+
return serializeError(value);
|
|
56
|
+
}
|
|
57
|
+
if (typeof value === 'string') {
|
|
58
|
+
return sanitizeString(value, keyHint);
|
|
59
|
+
}
|
|
60
|
+
if (typeof value === 'number' || typeof value === 'boolean' || value == null) {
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
const items = value.slice(0, MAX_ARRAY_ITEMS).map((item) => sanitizeValue(item));
|
|
65
|
+
if (value.length > MAX_ARRAY_ITEMS) {
|
|
66
|
+
items.push(`... ${value.length - MAX_ARRAY_ITEMS} more item(s)`);
|
|
67
|
+
}
|
|
68
|
+
return items;
|
|
69
|
+
}
|
|
70
|
+
if (typeof value === 'object') {
|
|
71
|
+
const entries = Object.entries(value).map(([key, nestedValue]) => [
|
|
72
|
+
key,
|
|
73
|
+
sanitizeValue(nestedValue, key),
|
|
74
|
+
]);
|
|
75
|
+
return Object.fromEntries(entries);
|
|
76
|
+
}
|
|
77
|
+
return String(value);
|
|
78
|
+
}
|
|
79
|
+
function sanitizeString(value, keyHint) {
|
|
80
|
+
if (keyHint && SECRET_KEYS.some((secretKey) => keyHint.toLowerCase().includes(secretKey))) {
|
|
81
|
+
return `[redacted:${value.length}]`;
|
|
82
|
+
}
|
|
83
|
+
if (value.length <= MAX_STRING_LENGTH)
|
|
84
|
+
return value;
|
|
85
|
+
return `${value.slice(0, MAX_STRING_LENGTH)}… [truncated ${value.length - MAX_STRING_LENGTH} chars]`;
|
|
86
|
+
}
|
|
87
|
+
function serializeError(error) {
|
|
88
|
+
if (error instanceof Error) {
|
|
89
|
+
return {
|
|
90
|
+
name: error.name,
|
|
91
|
+
message: error.message,
|
|
92
|
+
stack: error.stack,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
value: error,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/shared/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type PRData } from './types.js';
|
|
2
|
+
export declare function extractChangedFiles(diff?: string): string[];
|
|
3
|
+
export declare function getLowValuePRSummaryReason(summary?: string): string | null;
|
|
4
|
+
export declare function buildFallbackPRSummary(pr: PRData): string;
|
|
5
|
+
//# sourceMappingURL=pr-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-summary.d.ts","sourceRoot":"","sources":["../../src/shared/pr-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAkQ3G,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK3D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB1E;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAoBzD"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { AREA_TAXONOMY, CONTRIBUTION_TYPE_TAXONOMY } from './types.js';
|
|
2
|
+
import { TECHNOLOGY_TAXONOMY } from './technologies.js';
|
|
3
|
+
const LOW_VALUE_FILLER_PATTERNS = [
|
|
4
|
+
[/\bwith emphasis on\b/i, 'used taxonomy-list filler'],
|
|
5
|
+
[/\barmed with\b/i, 'listed tooling instead of the change'],
|
|
6
|
+
[/^fixes correctness or runtime issues\b/i, 'described generic issue class instead of concrete work'],
|
|
7
|
+
[/^adds? or extends core capability\b/i, 'described generic capability instead of concrete work'],
|
|
8
|
+
[/^improves? documentation and packaging\b/i, 'described generic improvement instead of concrete work'],
|
|
9
|
+
];
|
|
10
|
+
const GENERIC_TITLE_PATTERNS = [
|
|
11
|
+
[/^improvements?$/i, 'summary collapsed to a generic title'],
|
|
12
|
+
[/^updates?$/i, 'summary collapsed to a generic title'],
|
|
13
|
+
[/^changes?$/i, 'summary collapsed to a generic title'],
|
|
14
|
+
[/^misc(?:ellaneous)?$/i, 'summary collapsed to a generic title'],
|
|
15
|
+
[/^cleanup$/i, 'summary collapsed to a generic title'],
|
|
16
|
+
[/^refactors?$/i, 'summary collapsed to a generic title'],
|
|
17
|
+
[/^docs?$/i, 'summary collapsed to a generic title'],
|
|
18
|
+
];
|
|
19
|
+
const CONVENTIONAL_PREFIX_PATTERN = /^(?:feat|fix|refactor|docs?|test|tests|ci|chore|perf|build)(?:\([^)]+\))?:\s*/i;
|
|
20
|
+
const FILE_SCOPE_RULES = [
|
|
21
|
+
[/(^|\/)src\/features\/audit\/builtin-reviewers\//i, 'built-in reviewer rules'],
|
|
22
|
+
[/(^|\/)docs\/reviewers\.md$/i, 'reviewer guidance'],
|
|
23
|
+
[/(^|\/)src\/features\/system-design\//i, 'system-design analysis'],
|
|
24
|
+
[/(^|\/)src\/core\/prompts\/system-design\.ts$/i, 'system-design prompts'],
|
|
25
|
+
[/(^|\/)src\/core\/runtime\/opencode-cli\/|(^|\/)src\/core\/runtime\/direct\//i, 'OpenCode runtime handling'],
|
|
26
|
+
[/(^|\/)src\/core\/pr-review\//i, 'PR review orchestration'],
|
|
27
|
+
[/(^|\/)\.codeowl\/config\.json$|(^|\/)\.env(?:\.example)?$/i, 'runtime configuration'],
|
|
28
|
+
[/(^|\/)\.github\/workflows\//i, 'CI workflow'],
|
|
29
|
+
[/(^|\/)src\/core\/config\//i, 'configuration loading'],
|
|
30
|
+
[/(^|\/)src\/core\/output\//i, 'report output'],
|
|
31
|
+
[/(^|\/)src\/core\/indexing\//i, 'indexing pipeline'],
|
|
32
|
+
[/(^|\/)src\/core\/validation\/|(^|\/)schemas?\.[a-z0-9]+$/i, 'validation rules'],
|
|
33
|
+
[/(^|\/)test\/|\.test\.[a-z0-9]+$/i, 'test coverage'],
|
|
34
|
+
[/(^|\/)\.claude\/|(^|\/)\.ai-sessions-log$|(^|\/)AGENTS\.md$/i, 'agent instructions and local AI tooling'],
|
|
35
|
+
[/(^|\/)README(?:\.[a-z0-9]+)?$|(^|\/)docs\//i, 'developer documentation'],
|
|
36
|
+
[/(^|\/)package(-lock)?\.json$/i, 'package metadata'],
|
|
37
|
+
];
|
|
38
|
+
function normalizeSpaces(value) {
|
|
39
|
+
return value.replace(/\s+/g, ' ').trim();
|
|
40
|
+
}
|
|
41
|
+
function capitalize(value) {
|
|
42
|
+
if (!value)
|
|
43
|
+
return value;
|
|
44
|
+
return value.charAt(0).toUpperCase() + value.slice(1);
|
|
45
|
+
}
|
|
46
|
+
function compactText(value, maxLength) {
|
|
47
|
+
const normalized = normalizeSpaces(value);
|
|
48
|
+
if (normalized.length <= maxLength)
|
|
49
|
+
return normalized;
|
|
50
|
+
const clipped = normalized.slice(0, maxLength - 3).trimEnd();
|
|
51
|
+
const breakIndex = Math.max(clipped.lastIndexOf('. '), clipped.lastIndexOf('; '), clipped.lastIndexOf(', '), clipped.lastIndexOf(' '));
|
|
52
|
+
const safeIndex = breakIndex > 100 ? breakIndex : clipped.length;
|
|
53
|
+
return `${clipped.slice(0, safeIndex).trimEnd()}...`;
|
|
54
|
+
}
|
|
55
|
+
function countTaxonomyMentions(summary) {
|
|
56
|
+
const normalized = summary.toLowerCase();
|
|
57
|
+
const taxonomyTerms = [...AREA_TAXONOMY, ...CONTRIBUTION_TYPE_TAXONOMY, ...TECHNOLOGY_TAXONOMY];
|
|
58
|
+
return taxonomyTerms.filter((term) => {
|
|
59
|
+
const pattern = new RegExp(`\\b${term.replace(/_/g, '[ _-]?')}\\b`, 'i');
|
|
60
|
+
return pattern.test(normalized);
|
|
61
|
+
}).length;
|
|
62
|
+
}
|
|
63
|
+
function cleanPRTitle(title) {
|
|
64
|
+
return normalizeSpaces(title
|
|
65
|
+
.replace(/^\[[^\]]+\]\s*/g, '')
|
|
66
|
+
.replace(/^draft:\s*/i, '')
|
|
67
|
+
.replace(/[.]+$/, ''));
|
|
68
|
+
}
|
|
69
|
+
function stripConventionalPrefix(title) {
|
|
70
|
+
return title.replace(CONVENTIONAL_PREFIX_PATTERN, '').trim();
|
|
71
|
+
}
|
|
72
|
+
function isBranchLikeTitle(title) {
|
|
73
|
+
const cleaned = cleanPRTitle(title);
|
|
74
|
+
if (CONVENTIONAL_PREFIX_PATTERN.test(cleaned))
|
|
75
|
+
return false;
|
|
76
|
+
return /^[a-z0-9._-]+\/[a-z0-9._-]+(?:\s+[a-z0-9._-]+){0,2}$/i.test(cleaned);
|
|
77
|
+
}
|
|
78
|
+
function getGenericTitleReason(title) {
|
|
79
|
+
const cleaned = cleanPRTitle(title);
|
|
80
|
+
for (const [pattern, reason] of GENERIC_TITLE_PATTERNS) {
|
|
81
|
+
if (pattern.test(cleaned))
|
|
82
|
+
return reason;
|
|
83
|
+
}
|
|
84
|
+
if (isBranchLikeTitle(cleaned)) {
|
|
85
|
+
return 'summary collapsed to a branch name';
|
|
86
|
+
}
|
|
87
|
+
if (/[…]|\.\.\.$/.test(cleaned)) {
|
|
88
|
+
return 'summary was truncated';
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
function naturalList(items) {
|
|
93
|
+
if (items.length === 0)
|
|
94
|
+
return '';
|
|
95
|
+
if (items.length === 1)
|
|
96
|
+
return items[0];
|
|
97
|
+
if (items.length === 2)
|
|
98
|
+
return `${items[0]} and ${items[1]}`;
|
|
99
|
+
return `${items.slice(0, -1).join(', ')}, and ${items[items.length - 1]}`;
|
|
100
|
+
}
|
|
101
|
+
function getFallbackScope(path) {
|
|
102
|
+
const normalized = path.replace(/\\/g, '/');
|
|
103
|
+
if (normalized.startsWith('src/')) {
|
|
104
|
+
const parts = normalized.split('/');
|
|
105
|
+
const scope = parts[2] ?? parts[1];
|
|
106
|
+
if (scope && scope !== 'src') {
|
|
107
|
+
return `${scope.replace(/-/g, ' ')} changes`;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (normalized.startsWith('.github/workflows/'))
|
|
111
|
+
return 'CI workflow';
|
|
112
|
+
if (normalized.endsWith('.md'))
|
|
113
|
+
return 'developer documentation';
|
|
114
|
+
if (normalized.includes('package.json'))
|
|
115
|
+
return 'package metadata';
|
|
116
|
+
if (normalized.includes('.env'))
|
|
117
|
+
return 'runtime configuration';
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
function describeChangedScopes(files) {
|
|
121
|
+
const scopes = [];
|
|
122
|
+
for (const [pattern, label] of FILE_SCOPE_RULES) {
|
|
123
|
+
if (files.some((file) => pattern.test(file))) {
|
|
124
|
+
scopes.push(label);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const file of files) {
|
|
128
|
+
if (scopes.length >= 3)
|
|
129
|
+
break;
|
|
130
|
+
const fallback = getFallbackScope(file);
|
|
131
|
+
if (fallback && !scopes.includes(fallback)) {
|
|
132
|
+
scopes.push(fallback);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return scopes.slice(0, 3);
|
|
136
|
+
}
|
|
137
|
+
function getPrimaryType(pr) {
|
|
138
|
+
return pr.analysis?.types?.[0] ?? null;
|
|
139
|
+
}
|
|
140
|
+
function chooseFallbackVerb(pr, scopes) {
|
|
141
|
+
const type = getPrimaryType(pr);
|
|
142
|
+
if (scopes.includes('runtime configuration') && scopes.includes('CI workflow'))
|
|
143
|
+
return 'Aligned';
|
|
144
|
+
if (scopes.includes('test coverage'))
|
|
145
|
+
return 'Expanded';
|
|
146
|
+
switch (type) {
|
|
147
|
+
case 'bugfix':
|
|
148
|
+
return 'Fixed';
|
|
149
|
+
case 'refactor':
|
|
150
|
+
return 'Refined';
|
|
151
|
+
case 'documentation':
|
|
152
|
+
return 'Updated';
|
|
153
|
+
case 'new_development':
|
|
154
|
+
return 'Expanded';
|
|
155
|
+
default:
|
|
156
|
+
return 'Updated';
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function inferImpact(pr, scopes) {
|
|
160
|
+
const type = getPrimaryType(pr);
|
|
161
|
+
const areas = new Set(pr.analysis?.areas ?? []);
|
|
162
|
+
if (scopes.includes('CI workflow') && /\b(?:integration|unit) tests?\b/i.test(pr.title)) {
|
|
163
|
+
return 'so regressions are caught earlier in automation';
|
|
164
|
+
}
|
|
165
|
+
if (scopes.includes('built-in reviewer rules')) {
|
|
166
|
+
return 'so reviewer behavior is easier to extend consistently';
|
|
167
|
+
}
|
|
168
|
+
if (scopes.includes('system-design analysis')
|
|
169
|
+
|| scopes.includes('system-design prompts')
|
|
170
|
+
|| scopes.includes('report output')) {
|
|
171
|
+
return 'so the design report is more useful and accurate';
|
|
172
|
+
}
|
|
173
|
+
if (scopes.includes('OpenCode runtime handling')) {
|
|
174
|
+
return 'so CLI runs recover more reliably from model timeouts';
|
|
175
|
+
}
|
|
176
|
+
if (scopes.includes('runtime configuration') && scopes.includes('CI workflow')) {
|
|
177
|
+
return 'so local setup and CI follow the same rules';
|
|
178
|
+
}
|
|
179
|
+
if (scopes.includes('agent instructions and local AI tooling')) {
|
|
180
|
+
return 'so contributor workflows stay aligned with the review pipeline';
|
|
181
|
+
}
|
|
182
|
+
if (scopes.includes('developer documentation') || scopes.includes('package metadata')) {
|
|
183
|
+
return 'so release setup is clearer for contributors and users';
|
|
184
|
+
}
|
|
185
|
+
if (scopes.includes('test coverage')) {
|
|
186
|
+
return 'so regressions are easier to catch before release';
|
|
187
|
+
}
|
|
188
|
+
if (areas.has('devops'))
|
|
189
|
+
return 'to reduce configuration drift between environments';
|
|
190
|
+
if (type === 'bugfix')
|
|
191
|
+
return 'to remove a failure-prone path';
|
|
192
|
+
if (type === 'refactor')
|
|
193
|
+
return 'so later changes are easier to make safely';
|
|
194
|
+
if (type === 'new_development')
|
|
195
|
+
return 'so the workflow can handle more real-world cases';
|
|
196
|
+
if (type === 'documentation')
|
|
197
|
+
return 'so contributors can follow the intended workflow more easily';
|
|
198
|
+
return '';
|
|
199
|
+
}
|
|
200
|
+
function buildTitleDrivenSummary(pr, scopes) {
|
|
201
|
+
const cleanedTitle = cleanPRTitle(pr.title);
|
|
202
|
+
const strippedTitle = stripConventionalPrefix(cleanedTitle).replace(/[.…]+$/, '').trim();
|
|
203
|
+
if (!strippedTitle)
|
|
204
|
+
return null;
|
|
205
|
+
if (getGenericTitleReason(cleanedTitle))
|
|
206
|
+
return null;
|
|
207
|
+
if (/replace\s+scopeHints\s+with\s+selectWhen/i.test(strippedTitle) && scopes.includes('built-in reviewer rules')) {
|
|
208
|
+
return 'Replaced scopeHints with selectWhen across built-in reviewer rules';
|
|
209
|
+
}
|
|
210
|
+
if (/retry on SSE timeout/i.test(strippedTitle) && scopes.includes('OpenCode runtime handling')) {
|
|
211
|
+
return 'Added SSE-timeout retries and switched OpenCode defaults to a non-thinking model configuration';
|
|
212
|
+
}
|
|
213
|
+
if (/improve service detection/i.test(strippedTitle) && /node detail/i.test(strippedTitle)) {
|
|
214
|
+
return 'Improved service detection and node details in system-design analysis';
|
|
215
|
+
}
|
|
216
|
+
if (/improve system design report/i.test(strippedTitle)) {
|
|
217
|
+
return 'Refined system-design prompts, indexing, and report output';
|
|
218
|
+
}
|
|
219
|
+
if (/\b(?:integration|unit) tests?\b/i.test(strippedTitle) && scopes.includes('CI workflow')) {
|
|
220
|
+
return 'Improved integration and unit test workflows';
|
|
221
|
+
}
|
|
222
|
+
if (/[…]|\.\.\.$/.test(cleanedTitle) && scopes.length > 0) {
|
|
223
|
+
return `${capitalize(strippedTitle)} in ${scopes[0]}`;
|
|
224
|
+
}
|
|
225
|
+
return capitalize(strippedTitle);
|
|
226
|
+
}
|
|
227
|
+
export function extractChangedFiles(diff) {
|
|
228
|
+
if (!diff)
|
|
229
|
+
return [];
|
|
230
|
+
const matches = [...diff.matchAll(/^diff --git a\/(.+?) b\/.+$/gm)];
|
|
231
|
+
return [...new Set(matches.map((match) => match[1].replace(/\\/g, '/')))];
|
|
232
|
+
}
|
|
233
|
+
export function getLowValuePRSummaryReason(summary) {
|
|
234
|
+
const normalized = normalizeSpaces(summary ?? '');
|
|
235
|
+
if (!normalized)
|
|
236
|
+
return 'summary was empty';
|
|
237
|
+
for (const [pattern, reason] of LOW_VALUE_FILLER_PATTERNS) {
|
|
238
|
+
if (pattern.test(normalized))
|
|
239
|
+
return reason;
|
|
240
|
+
}
|
|
241
|
+
const genericTitleReason = getGenericTitleReason(normalized);
|
|
242
|
+
if (genericTitleReason)
|
|
243
|
+
return genericTitleReason;
|
|
244
|
+
const taxonomyMentions = countTaxonomyMentions(normalized);
|
|
245
|
+
if (taxonomyMentions >= 4) {
|
|
246
|
+
return 'summary was dominated by taxonomy labels';
|
|
247
|
+
}
|
|
248
|
+
if (/\busing\b/i.test(normalized) && taxonomyMentions >= 2) {
|
|
249
|
+
return 'summary focused on tools instead of the change';
|
|
250
|
+
}
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
export function buildFallbackPRSummary(pr) {
|
|
254
|
+
const files = extractChangedFiles(pr.diff);
|
|
255
|
+
const scopes = describeChangedScopes(files);
|
|
256
|
+
const titleDriven = buildTitleDrivenSummary(pr, scopes);
|
|
257
|
+
const impact = inferImpact(pr, scopes);
|
|
258
|
+
const cleanedTitle = cleanPRTitle(pr.title);
|
|
259
|
+
const strippedTitle = stripConventionalPrefix(cleanedTitle).replace(/[.…]+$/, '').trim();
|
|
260
|
+
const shouldAppendImpact = /[…]|\.\.\.$/.test(cleanedTitle) || strippedTitle.split(/\s+/).length < 6;
|
|
261
|
+
if (titleDriven) {
|
|
262
|
+
const withImpact = shouldAppendImpact && impact && !/\b(?:so|to)\b/i.test(titleDriven)
|
|
263
|
+
? `${titleDriven} ${impact}.`
|
|
264
|
+
: `${titleDriven}.`;
|
|
265
|
+
return compactText(withImpact, 200);
|
|
266
|
+
}
|
|
267
|
+
const scopeText = scopes.length > 0 ? naturalList(scopes.slice(0, 2)) : 'the delivery workflow';
|
|
268
|
+
const verb = chooseFallbackVerb(pr, scopes);
|
|
269
|
+
const base = `${verb} ${scopeText}`;
|
|
270
|
+
return compactText(`${base}${impact ? ` ${impact}` : ''}.`, 200);
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=pr-summary.js.map
|