quackscore 0.2.5 → 0.4.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/README.md +20 -1
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +28 -12
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +19 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/leaderboard.d.ts +5 -1
- package/dist/commands/leaderboard.d.ts.map +1 -1
- package/dist/commands/leaderboard.js +57 -29
- package/dist/commands/leaderboard.js.map +1 -1
- package/dist/commands/mock-report.js +21 -21
- package/dist/commands/mock-report.js.map +1 -1
- package/dist/commands/profile-options.d.ts +24 -0
- package/dist/commands/profile-options.d.ts.map +1 -0
- package/dist/commands/profile-options.js +38 -0
- package/dist/commands/profile-options.js.map +1 -0
- package/dist/commands/remove.d.ts +5 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +14 -5
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/show.d.ts +5 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +12 -3
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/stats.d.ts +7 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +59 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/update-summary.d.ts +2 -0
- package/dist/commands/update-summary.d.ts.map +1 -1
- package/dist/commands/update-summary.js +12 -3
- package/dist/commands/update-summary.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +148 -68
- package/dist/commands/update.js.map +1 -1
- package/dist/config/types.d.ts +1 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +14 -0
- package/dist/config/types.js.map +1 -1
- package/dist/github/client.d.ts +5 -5
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +157 -57
- package/dist/github/client.js.map +1 -1
- package/dist/github/index.d.ts +2 -0
- package/dist/github/index.d.ts.map +1 -1
- package/dist/github/index.js +1 -0
- package/dist/github/index.js.map +1 -1
- package/dist/github/repository-stats.d.ts +8 -0
- package/dist/github/repository-stats.d.ts.map +1 -0
- package/dist/github/repository-stats.js +96 -0
- package/dist/github/repository-stats.js.map +1 -0
- package/dist/index.js +48 -7
- package/dist/index.js.map +1 -1
- package/dist/llm/analyzer.d.ts +3 -3
- package/dist/llm/analyzer.d.ts.map +1 -1
- package/dist/llm/analyzer.js +5 -5
- package/dist/llm/analyzer.js.map +1 -1
- package/dist/llm/character.d.ts +2 -2
- package/dist/llm/character.d.ts.map +1 -1
- package/dist/llm/character.js +3 -3
- package/dist/llm/character.js.map +1 -1
- package/dist/llm/client.d.ts +2 -2
- package/dist/llm/client.d.ts.map +1 -1
- package/dist/llm/client.js +1 -1
- package/dist/llm/client.js.map +1 -1
- package/dist/llm/prompts.d.ts.map +1 -1
- package/dist/llm/prompts.js +13 -1
- package/dist/llm/prompts.js.map +1 -1
- package/dist/llm/providers.d.ts +3 -3
- package/dist/llm/providers.d.ts.map +1 -1
- package/dist/llm/providers.js +25 -6
- package/dist/llm/providers.js.map +1 -1
- package/dist/report/generate.d.ts.map +1 -1
- package/dist/report/generate.js +9 -7
- package/dist/report/generate.js.map +1 -1
- package/dist/report/index.d.ts +1 -0
- package/dist/report/index.d.ts.map +1 -1
- package/dist/report/index.js +1 -0
- package/dist/report/index.js.map +1 -1
- package/dist/report/leaderboard.d.ts +5 -1
- package/dist/report/leaderboard.d.ts.map +1 -1
- package/dist/report/leaderboard.js +611 -865
- package/dist/report/leaderboard.js.map +1 -1
- package/dist/report/repository-stats.d.ts +3 -0
- package/dist/report/repository-stats.d.ts.map +1 -0
- package/dist/report/repository-stats.js +650 -0
- package/dist/report/repository-stats.js.map +1 -0
- package/dist/scoring/index.d.ts +1 -0
- package/dist/scoring/index.d.ts.map +1 -1
- package/dist/scoring/index.js +1 -0
- package/dist/scoring/index.js.map +1 -1
- package/dist/scoring/points.d.ts.map +1 -1
- package/dist/scoring/points.js +5 -10
- package/dist/scoring/points.js.map +1 -1
- package/dist/scoring/repository-stats.d.ts +7 -0
- package/dist/scoring/repository-stats.d.ts.map +1 -0
- package/dist/scoring/repository-stats.js +120 -0
- package/dist/scoring/repository-stats.js.map +1 -0
- package/dist/shared/profile-scope.d.ts +19 -0
- package/dist/shared/profile-scope.d.ts.map +1 -0
- package/dist/shared/profile-scope.js +101 -0
- package/dist/shared/profile-scope.js.map +1 -0
- package/dist/shared/profile-summary.js +6 -6
- package/dist/shared/profile-summary.js.map +1 -1
- package/dist/shared/repository-stats.d.ts +51 -0
- package/dist/shared/repository-stats.d.ts.map +1 -0
- package/dist/shared/repository-stats.js +2 -0
- package/dist/shared/repository-stats.js.map +1 -0
- package/dist/shared/types.d.ts +29 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/ui.d.ts +1 -0
- package/dist/shared/ui.d.ts.map +1 -1
- package/dist/shared/ui.js +3 -0
- package/dist/shared/ui.js.map +1 -1
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -2
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/leaderboard.d.ts +3 -2
- package/dist/storage/leaderboard.d.ts.map +1 -1
- package/dist/storage/leaderboard.js +80 -9
- package/dist/storage/leaderboard.js.map +1 -1
- package/dist/storage/paths.d.ts +6 -0
- package/dist/storage/paths.d.ts.map +1 -1
- package/dist/storage/paths.js +21 -0
- package/dist/storage/paths.js.map +1 -1
- package/dist/storage/report.d.ts +5 -2
- package/dist/storage/report.d.ts.map +1 -1
- package/dist/storage/report.js +38 -8
- package/dist/storage/report.js.map +1 -1
- package/dist/storage/user.d.ts +2 -1
- package/dist/storage/user.d.ts.map +1 -1
- package/dist/storage/user.js +27 -10
- package/dist/storage/user.js.map +1 -1
- package/package.json +13 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { LeaderboardEntry, LeaderboardProfile } from '../shared/types.js';
|
|
1
|
+
import type { LeaderboardEntry, LeaderboardProfile, TeamLeaderboardEntry } from '../shared/types.js';
|
|
2
2
|
export declare function loadLeaderboardProfiles(): LeaderboardProfile[];
|
|
3
|
-
export declare function loadLeaderboard(): LeaderboardEntry[];
|
|
3
|
+
export declare function loadLeaderboard(team?: string): LeaderboardEntry[];
|
|
4
|
+
export declare function loadTeamLeaderboard(): TeamLeaderboardEntry[];
|
|
4
5
|
export declare function saveLeaderboardReport(html: string): string;
|
|
5
6
|
//# sourceMappingURL=leaderboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaderboard.d.ts","sourceRoot":"","sources":["../../src/storage/leaderboard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAY,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"leaderboard.d.ts","sourceRoot":"","sources":["../../src/storage/leaderboard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAY,MAAM,oBAAoB,CAAC;AAgJ/G,wBAAgB,uBAAuB,IAAI,kBAAkB,EAAE,CAkC9D;AAED,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAKjE;AAED,wBAAgB,mBAAmB,IAAI,oBAAoB,EAAE,CA2D5D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1D"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { calculateLevel } from '../scoring/index.js';
|
|
4
|
-
import { ensureStorageDir, LEADERBOARD_FILE, LEADERBOARD_REPORT_FILE, STORAGE_DIR } from './paths.js';
|
|
4
|
+
import { ensureStorageDir, LEADERBOARD_FILE, LEADERBOARD_REPORT_FILE, STORAGE_DIR, profileReportPathByKey } from './paths.js';
|
|
5
5
|
import { diagLog } from '../shared/diagnostics.js';
|
|
6
6
|
import { normalizeTechnologies } from '../shared/technologies.js';
|
|
7
|
+
import { hasTeamMatch, normalizeTeams, normalizeUserDataShape, profileScopeLabel, teamKey } from '../shared/profile-scope.js';
|
|
7
8
|
const IGNORED_JSON_FILES = new Set(['config.json', 'leaderboard.json']);
|
|
8
9
|
function isUserData(value) {
|
|
9
10
|
if (!value || typeof value !== 'object')
|
|
@@ -18,7 +19,7 @@ function isUserData(value) {
|
|
|
18
19
|
}
|
|
19
20
|
function normalizeUserData(data) {
|
|
20
21
|
return {
|
|
21
|
-
...data,
|
|
22
|
+
...normalizeUserDataShape(data),
|
|
22
23
|
prs: data.prs.map((pr) => pr.analysis
|
|
23
24
|
? {
|
|
24
25
|
...pr,
|
|
@@ -34,14 +35,21 @@ function normalizeUserData(data) {
|
|
|
34
35
|
},
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
|
-
function
|
|
38
|
+
function compareProfileEntries(left, right) {
|
|
38
39
|
return right.totalPoints - left.totalPoints
|
|
39
40
|
|| right.analyzedPRs - left.analyzedPRs
|
|
40
41
|
|| Date.parse(right.lastActivityAt ?? right.lastUpdated) - Date.parse(left.lastActivityAt ?? left.lastUpdated)
|
|
41
42
|
|| left.username.localeCompare(right.username);
|
|
42
43
|
}
|
|
44
|
+
function compareTeamEntries(left, right) {
|
|
45
|
+
return right.totalPoints - left.totalPoints
|
|
46
|
+
|| right.memberCount - left.memberCount
|
|
47
|
+
|| right.analyzedPRs - left.analyzedPRs
|
|
48
|
+
|| Date.parse(right.lastActivityAt ?? '') - Date.parse(left.lastActivityAt ?? '')
|
|
49
|
+
|| left.team.localeCompare(right.team);
|
|
50
|
+
}
|
|
43
51
|
function toLeaderboardProfile(storageKey, data) {
|
|
44
|
-
const reportPath =
|
|
52
|
+
const reportPath = profileReportPathByKey(storageKey);
|
|
45
53
|
const primaryArea = Object.entries(data.stats.areas).sort(([, left], [, right]) => right - left)[0]?.[0];
|
|
46
54
|
const contributionDates = data.prs
|
|
47
55
|
.map((pr) => pr.mergedAt)
|
|
@@ -51,6 +59,9 @@ function toLeaderboardProfile(storageKey, data) {
|
|
|
51
59
|
storageKey,
|
|
52
60
|
username: data.username,
|
|
53
61
|
lastUpdated: data.lastUpdated,
|
|
62
|
+
scope: data.scope ?? {},
|
|
63
|
+
scopeLabel: profileScopeLabel(data.scope),
|
|
64
|
+
teams: normalizeTeams(data.teams),
|
|
54
65
|
totalPoints: data.stats.totalPoints,
|
|
55
66
|
level: data.stats.level,
|
|
56
67
|
analyzedPRs: data.stats.analyzedPRs,
|
|
@@ -71,11 +82,13 @@ function toLeaderboardProfile(storageKey, data) {
|
|
|
71
82
|
}),
|
|
72
83
|
};
|
|
73
84
|
}
|
|
74
|
-
function
|
|
85
|
+
function toProfileEntry(profile) {
|
|
75
86
|
if (profile.contributions.length === 0) {
|
|
76
87
|
return {
|
|
77
88
|
storageKey: profile.storageKey,
|
|
78
89
|
username: profile.username,
|
|
90
|
+
scopeLabel: profile.scopeLabel,
|
|
91
|
+
teams: profile.teams,
|
|
79
92
|
totalPoints: profile.totalPoints,
|
|
80
93
|
level: profile.level,
|
|
81
94
|
lastUpdated: profile.lastUpdated,
|
|
@@ -104,6 +117,8 @@ function toLeaderboardEntry(profile) {
|
|
|
104
117
|
return {
|
|
105
118
|
storageKey: profile.storageKey,
|
|
106
119
|
username: profile.username,
|
|
120
|
+
scopeLabel: profile.scopeLabel,
|
|
121
|
+
teams: profile.teams,
|
|
107
122
|
totalPoints,
|
|
108
123
|
level,
|
|
109
124
|
lastUpdated: profile.lastUpdated,
|
|
@@ -137,7 +152,7 @@ export function loadLeaderboardProfiles() {
|
|
|
137
152
|
return [];
|
|
138
153
|
}
|
|
139
154
|
const normalized = normalizeUserData(parsed);
|
|
140
|
-
return [toLeaderboardProfile(
|
|
155
|
+
return [toLeaderboardProfile(fileName.slice(0, -5), normalized)];
|
|
141
156
|
}
|
|
142
157
|
catch (error) {
|
|
143
158
|
diagLog('Skipping unreadable leaderboard profile', {
|
|
@@ -148,10 +163,66 @@ export function loadLeaderboardProfiles() {
|
|
|
148
163
|
}
|
|
149
164
|
});
|
|
150
165
|
}
|
|
151
|
-
export function loadLeaderboard() {
|
|
166
|
+
export function loadLeaderboard(team) {
|
|
152
167
|
return loadLeaderboardProfiles()
|
|
153
|
-
.
|
|
154
|
-
.
|
|
168
|
+
.filter((profile) => hasTeamMatch(profile.teams, team))
|
|
169
|
+
.map(toProfileEntry)
|
|
170
|
+
.sort(compareProfileEntries);
|
|
171
|
+
}
|
|
172
|
+
export function loadTeamLeaderboard() {
|
|
173
|
+
const teams = new Map();
|
|
174
|
+
const teamAreas = new Map();
|
|
175
|
+
for (const profile of loadLeaderboardProfiles()) {
|
|
176
|
+
if (profile.teams.length === 0)
|
|
177
|
+
continue;
|
|
178
|
+
const allTimeEntry = toProfileEntry(profile);
|
|
179
|
+
const areaTotals = profile.contributions.reduce((totals, contribution) => {
|
|
180
|
+
for (const area of contribution.areas) {
|
|
181
|
+
totals[area] = (totals[area] || 0) + contribution.points;
|
|
182
|
+
}
|
|
183
|
+
return totals;
|
|
184
|
+
}, {});
|
|
185
|
+
for (const team of profile.teams) {
|
|
186
|
+
const key = teamKey(team);
|
|
187
|
+
const existing = teams.get(key) ?? {
|
|
188
|
+
team,
|
|
189
|
+
totalPoints: 0,
|
|
190
|
+
level: 1,
|
|
191
|
+
memberCount: 0,
|
|
192
|
+
analyzedPRs: 0,
|
|
193
|
+
primaryArea: undefined,
|
|
194
|
+
lastActivityAt: undefined,
|
|
195
|
+
members: [],
|
|
196
|
+
};
|
|
197
|
+
const areaTotalsForTeam = teamAreas.get(key) ?? {};
|
|
198
|
+
existing.totalPoints += allTimeEntry.totalPoints;
|
|
199
|
+
existing.analyzedPRs += allTimeEntry.analyzedPRs;
|
|
200
|
+
existing.lastActivityAt = !existing.lastActivityAt
|
|
201
|
+
? allTimeEntry.lastActivityAt
|
|
202
|
+
: (Date.parse(allTimeEntry.lastActivityAt ?? '') > Date.parse(existing.lastActivityAt)
|
|
203
|
+
? allTimeEntry.lastActivityAt
|
|
204
|
+
: existing.lastActivityAt);
|
|
205
|
+
existing.members.push({
|
|
206
|
+
storageKey: profile.storageKey,
|
|
207
|
+
username: profile.username,
|
|
208
|
+
scopeLabel: profile.scopeLabel,
|
|
209
|
+
reportPath: profile.reportPath,
|
|
210
|
+
});
|
|
211
|
+
for (const [area, points] of Object.entries(areaTotals)) {
|
|
212
|
+
areaTotalsForTeam[area] = (areaTotalsForTeam[area] || 0) + points;
|
|
213
|
+
}
|
|
214
|
+
existing.primaryArea = Object.entries(areaTotalsForTeam).sort(([, left], [, right]) => right - left)[0]?.[0] ?? existing.primaryArea;
|
|
215
|
+
teams.set(key, existing);
|
|
216
|
+
teamAreas.set(key, areaTotalsForTeam);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return [...teams.values()]
|
|
220
|
+
.map((entry) => ({
|
|
221
|
+
...entry,
|
|
222
|
+
level: calculateLevel(entry.totalPoints).level,
|
|
223
|
+
memberCount: entry.members.length,
|
|
224
|
+
}))
|
|
225
|
+
.sort(compareTeamEntries);
|
|
155
226
|
}
|
|
156
227
|
export function saveLeaderboardReport(html) {
|
|
157
228
|
ensureStorageDir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaderboard.js","sourceRoot":"","sources":["../../src/storage/leaderboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"leaderboard.js","sourceRoot":"","sources":["../../src/storage/leaderboard.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/paths.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import type { ProfileSelector } from '../shared/profile-scope.js';
|
|
1
2
|
export declare const STORAGE_DIR: string;
|
|
2
3
|
export declare const LEADERBOARD_FILE: string;
|
|
3
4
|
export declare const LEADERBOARD_REPORT_FILE: string;
|
|
4
5
|
export declare function ensureStorageDir(): void;
|
|
5
6
|
export declare function userFilePath(username: string): string;
|
|
6
7
|
export declare function userReportPath(username: string): string;
|
|
8
|
+
export declare function profileFilePath(selector: ProfileSelector): string;
|
|
9
|
+
export declare function profileReportPath(selector: ProfileSelector): string;
|
|
10
|
+
export declare function profileFilePathByKey(storageKey: string): string;
|
|
11
|
+
export declare function profileReportPathByKey(storageKey: string): string;
|
|
12
|
+
export declare function repositoryStatsReportPath(org: string, repo: string, team?: string): string;
|
|
7
13
|
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/storage/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAyC,CAAC;AAClE,eAAO,MAAM,gBAAgB,QAA6C,CAAC;AAC3E,eAAO,MAAM,uBAAuB,QAA6C,CAAC;AAElF,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/storage/paths.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,eAAO,MAAM,WAAW,QAAyC,CAAC;AAClE,eAAO,MAAM,gBAAgB,QAA6C,CAAC;AAC3E,eAAO,MAAM,uBAAuB,QAA6C,CAAC;AAElF,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAMD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEjE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEnE;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1F"}
|
package/dist/storage/paths.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import { diagLog } from '../shared/diagnostics.js';
|
|
5
|
+
import { profileStorageKey } from '../shared/profile-scope.js';
|
|
5
6
|
export const STORAGE_DIR = path.join(os.homedir(), '.quackscore');
|
|
6
7
|
export const LEADERBOARD_FILE = path.join(STORAGE_DIR, 'leaderboard.json');
|
|
7
8
|
export const LEADERBOARD_REPORT_FILE = path.join(STORAGE_DIR, 'leaderboard.html');
|
|
@@ -17,4 +18,24 @@ export function userFilePath(username) {
|
|
|
17
18
|
export function userReportPath(username) {
|
|
18
19
|
return path.join(STORAGE_DIR, `${username}.html`);
|
|
19
20
|
}
|
|
21
|
+
function safeFileSegment(value) {
|
|
22
|
+
return value.replace(/[^a-zA-Z0-9._-]+/g, '-').replace(/^-+|-+$/g, '') || 'unknown';
|
|
23
|
+
}
|
|
24
|
+
export function profileFilePath(selector) {
|
|
25
|
+
return path.join(STORAGE_DIR, `${profileStorageKey(selector)}.json`);
|
|
26
|
+
}
|
|
27
|
+
export function profileReportPath(selector) {
|
|
28
|
+
return path.join(STORAGE_DIR, `${profileStorageKey(selector)}.html`);
|
|
29
|
+
}
|
|
30
|
+
export function profileFilePathByKey(storageKey) {
|
|
31
|
+
return path.join(STORAGE_DIR, `${storageKey}.json`);
|
|
32
|
+
}
|
|
33
|
+
export function profileReportPathByKey(storageKey) {
|
|
34
|
+
return path.join(STORAGE_DIR, `${storageKey}.html`);
|
|
35
|
+
}
|
|
36
|
+
export function repositoryStatsReportPath(org, repo, team) {
|
|
37
|
+
const base = `stats-${safeFileSegment(org)}-${safeFileSegment(repo)}`;
|
|
38
|
+
const suffix = team ? `-team-${safeFileSegment(team)}` : '';
|
|
39
|
+
return path.join(STORAGE_DIR, `${base}${suffix}.html`);
|
|
40
|
+
}
|
|
20
41
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/storage/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/storage/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AAElF,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,4BAA4B,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;QACnE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAyB;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAyB;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,IAAY,EAAE,IAAa;IAChF,MAAM,IAAI,GAAG,SAAS,eAAe,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,MAAM,OAAO,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/storage/report.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { ProfileSelector } from '../shared/profile-scope.js';
|
|
2
|
+
import type { ProfileScope } from '../shared/types.js';
|
|
3
|
+
export declare function getUserReportPath(selectorOrUsername: ProfileSelector | string, scope?: ProfileScope): string;
|
|
4
|
+
export declare function saveReport(selectorOrUsername: ProfileSelector | string, html: string, scope?: ProfileScope): string;
|
|
5
|
+
export declare function saveRepositoryStatsReport(org: string, repo: string, team: string | undefined, html: string): string;
|
|
3
6
|
//# sourceMappingURL=report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/storage/report.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/storage/report.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,eAAe,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,MAAM,CAiB5G;AAED,wBAAgB,UAAU,CAAC,kBAAkB,EAAE,eAAe,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,MAAM,CAcnH;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYnH"}
|
package/dist/storage/report.js
CHANGED
|
@@ -1,17 +1,47 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
-
import { ensureStorageDir, userReportPath } from './paths.js';
|
|
2
|
+
import { ensureStorageDir, profileReportPath, repositoryStatsReportPath, userReportPath } from './paths.js';
|
|
3
3
|
import { diagLog } from '../shared/diagnostics.js';
|
|
4
|
-
|
|
4
|
+
import { profileSelector, profileStorageKey } from '../shared/profile-scope.js';
|
|
5
|
+
export function getUserReportPath(selectorOrUsername, scope) {
|
|
5
6
|
ensureStorageDir();
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const selector = typeof selectorOrUsername === 'string'
|
|
8
|
+
? profileSelector(selectorOrUsername, scope)
|
|
9
|
+
: selectorOrUsername;
|
|
10
|
+
const reportPath = profileReportPath(selector);
|
|
11
|
+
const legacyPath = !selector.organisation && !selector.repository ? userReportPath(selector.username) : undefined;
|
|
12
|
+
const resolvedPath = fs.existsSync(reportPath)
|
|
13
|
+
? reportPath
|
|
14
|
+
: (legacyPath && fs.existsSync(legacyPath) ? legacyPath : reportPath);
|
|
15
|
+
diagLog('Resolved user report path', {
|
|
16
|
+
username: selector.username,
|
|
17
|
+
storageKey: profileStorageKey(selector),
|
|
18
|
+
reportPath: resolvedPath,
|
|
19
|
+
legacyFallback: legacyPath && resolvedPath === legacyPath,
|
|
20
|
+
});
|
|
21
|
+
return resolvedPath;
|
|
9
22
|
}
|
|
10
|
-
export function saveReport(
|
|
23
|
+
export function saveReport(selectorOrUsername, html, scope) {
|
|
11
24
|
ensureStorageDir();
|
|
12
|
-
const
|
|
25
|
+
const selector = typeof selectorOrUsername === 'string'
|
|
26
|
+
? profileSelector(selectorOrUsername, scope)
|
|
27
|
+
: selectorOrUsername;
|
|
28
|
+
const reportPath = profileReportPath(selector);
|
|
13
29
|
diagLog('Writing report file', {
|
|
14
|
-
username,
|
|
30
|
+
username: selector.username,
|
|
31
|
+
storageKey: profileStorageKey(selector),
|
|
32
|
+
reportPath,
|
|
33
|
+
htmlLength: html.length,
|
|
34
|
+
});
|
|
35
|
+
fs.writeFileSync(reportPath, html, 'utf-8');
|
|
36
|
+
return reportPath;
|
|
37
|
+
}
|
|
38
|
+
export function saveRepositoryStatsReport(org, repo, team, html) {
|
|
39
|
+
ensureStorageDir();
|
|
40
|
+
const reportPath = repositoryStatsReportPath(org, repo, team);
|
|
41
|
+
diagLog('Writing repository stats report file', {
|
|
42
|
+
org,
|
|
43
|
+
repo,
|
|
44
|
+
team,
|
|
15
45
|
reportPath,
|
|
16
46
|
htmlLength: html.length,
|
|
17
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/storage/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/storage/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIhF,MAAM,UAAU,iBAAiB,CAAC,kBAA4C,EAAE,KAAoB;IAClG,gBAAgB,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,OAAO,kBAAkB,KAAK,QAAQ;QACrD,CAAC,CAAC,eAAe,CAAC,kBAAkB,EAAE,KAAK,CAAC;QAC5C,CAAC,CAAC,kBAAkB,CAAC;IACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAC5C,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACxE,OAAO,CAAC,2BAA2B,EAAE;QACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACvC,UAAU,EAAE,YAAY;QACxB,cAAc,EAAE,UAAU,IAAI,YAAY,KAAK,UAAU;KAC1D,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,kBAA4C,EAAE,IAAY,EAAE,KAAoB;IACzG,gBAAgB,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,OAAO,kBAAkB,KAAK,QAAQ;QACrD,CAAC,CAAC,eAAe,CAAC,kBAAkB,EAAE,KAAK,CAAC;QAC5C,CAAC,CAAC,kBAAkB,CAAC;IACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,CAAC,qBAAqB,EAAE;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACvC,UAAU;QACV,UAAU,EAAE,IAAI,CAAC,MAAM;KACxB,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,IAAY,EAAE,IAAwB,EAAE,IAAY;IACzG,gBAAgB,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,sCAAsC,EAAE;QAC9C,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,UAAU,EAAE,IAAI,CAAC,MAAM;KACxB,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/storage/user.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { UserData } from '../shared/types.js';
|
|
2
|
+
import type { ProfileSelector } from '../shared/profile-scope.js';
|
|
2
3
|
export declare function saveUserData(data: UserData): void;
|
|
3
|
-
export declare function loadUserData(
|
|
4
|
+
export declare function loadUserData(selectorOrUsername: ProfileSelector | string, scope?: UserData['scope']): UserData | null;
|
|
4
5
|
//# sourceMappingURL=user.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/storage/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/storage/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAWnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAcjD;AAED,wBAAgB,YAAY,CAAC,kBAAkB,EAAE,eAAe,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG,IAAI,CAoBrH"}
|
package/dist/storage/user.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
-
import { ensureStorageDir, userFilePath } from './paths.js';
|
|
2
|
+
import { ensureStorageDir, profileFilePath, userFilePath } from './paths.js';
|
|
3
3
|
import { diagLog } from '../shared/diagnostics.js';
|
|
4
4
|
import { normalizeTechnologies } from '../shared/technologies.js';
|
|
5
|
+
import { normalizeProfileScope, normalizeTeams, normalizeUserDataShape, profileSelector, profileStorageKey, } from '../shared/profile-scope.js';
|
|
5
6
|
export function saveUserData(data) {
|
|
6
7
|
ensureStorageDir();
|
|
7
|
-
const filePath = userFilePath(data.username);
|
|
8
8
|
const normalized = normalizeUserData(data);
|
|
9
|
+
const selector = profileSelector(normalized.username, normalized.scope);
|
|
10
|
+
const filePath = profileFilePath(selector);
|
|
9
11
|
diagLog('Writing user data file', {
|
|
10
12
|
username: normalized.username,
|
|
13
|
+
storageKey: profileStorageKey(selector),
|
|
11
14
|
filePath,
|
|
12
15
|
prCount: normalized.prs.length,
|
|
13
16
|
totalPoints: normalized.stats.totalPoints,
|
|
@@ -15,14 +18,26 @@ export function saveUserData(data) {
|
|
|
15
18
|
});
|
|
16
19
|
fs.writeFileSync(filePath, JSON.stringify(normalized, null, 2), 'utf-8');
|
|
17
20
|
}
|
|
18
|
-
export function loadUserData(
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
export function loadUserData(selectorOrUsername, scope) {
|
|
22
|
+
const selector = typeof selectorOrUsername === 'string'
|
|
23
|
+
? profileSelector(selectorOrUsername, scope)
|
|
24
|
+
: selectorOrUsername;
|
|
25
|
+
const file = profileFilePath(selector);
|
|
26
|
+
const legacyFile = !selector.organisation && !selector.repository ? userFilePath(selector.username) : undefined;
|
|
27
|
+
const existingFile = fs.existsSync(file)
|
|
28
|
+
? file
|
|
29
|
+
: (legacyFile && fs.existsSync(legacyFile) ? legacyFile : file);
|
|
30
|
+
diagLog('Loading user data file', {
|
|
31
|
+
username: selector.username,
|
|
32
|
+
storageKey: profileStorageKey(selector),
|
|
33
|
+
filePath: existingFile,
|
|
34
|
+
exists: fs.existsSync(existingFile),
|
|
35
|
+
legacyFallback: legacyFile && existingFile === legacyFile,
|
|
36
|
+
});
|
|
37
|
+
if (!fs.existsSync(existingFile))
|
|
23
38
|
return null;
|
|
24
|
-
const raw = fs.readFileSync(
|
|
25
|
-
diagLog('Loaded user data file contents', { username, bytes: raw.length });
|
|
39
|
+
const raw = fs.readFileSync(existingFile, 'utf-8');
|
|
40
|
+
diagLog('Loaded user data file contents', { username: selector.username, bytes: raw.length });
|
|
26
41
|
return normalizeUserData(JSON.parse(raw));
|
|
27
42
|
}
|
|
28
43
|
function normalizeUserData(data) {
|
|
@@ -33,11 +48,13 @@ function normalizeUserData(data) {
|
|
|
33
48
|
}
|
|
34
49
|
}
|
|
35
50
|
return {
|
|
36
|
-
...data,
|
|
51
|
+
...normalizeUserDataShape(data),
|
|
37
52
|
stats: {
|
|
38
53
|
...data.stats,
|
|
39
54
|
technologies: normalizedTechnologyTotals,
|
|
40
55
|
},
|
|
56
|
+
scope: normalizeProfileScope(data.scope),
|
|
57
|
+
teams: normalizeTeams(data.teams),
|
|
41
58
|
prs: data.prs.map((pr) => pr.analysis
|
|
42
59
|
? {
|
|
43
60
|
...pr,
|
package/dist/storage/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/storage/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/storage/user.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quackscore",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Analyze GitHub activity and generate a Duck RPG-style developer card",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -36,14 +36,21 @@
|
|
|
36
36
|
"url": "https://github.com/BatAndDuck/quackscore/issues"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@ai-sdk/
|
|
40
|
-
"@ai-sdk/
|
|
41
|
-
"@ai-sdk/
|
|
39
|
+
"@ai-sdk/amazon-bedrock": "^4.0.87",
|
|
40
|
+
"@ai-sdk/anthropic": "^3.0.64",
|
|
41
|
+
"@ai-sdk/azure": "^3.0.50",
|
|
42
|
+
"@ai-sdk/deepseek": "^2.0.26",
|
|
43
|
+
"@ai-sdk/google": "^3.0.55",
|
|
44
|
+
"@ai-sdk/google-vertex": "^4.0.98",
|
|
45
|
+
"@ai-sdk/groq": "^3.0.32",
|
|
46
|
+
"@ai-sdk/mistral": "^3.0.27",
|
|
47
|
+
"@ai-sdk/openai": "^3.0.49",
|
|
48
|
+
"@ai-sdk/xai": "^3.0.75",
|
|
42
49
|
"@octokit/rest": "^20.1.1",
|
|
43
|
-
"ai": "^
|
|
50
|
+
"ai": "^6.0.143",
|
|
44
51
|
"chalk": "^5.3.0",
|
|
45
52
|
"commander": "^12.1.0",
|
|
46
|
-
"ollama-ai-provider": "^1.
|
|
53
|
+
"ollama-ai-provider": "^1.2.0",
|
|
47
54
|
"open": "^10.1.0",
|
|
48
55
|
"zod": "^3.23.8"
|
|
49
56
|
},
|