quackscore 0.2.5 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/commands/create.d.ts +1 -0
  2. package/dist/commands/create.d.ts.map +1 -1
  3. package/dist/commands/create.js +26 -10
  4. package/dist/commands/create.js.map +1 -1
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +19 -0
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/leaderboard.d.ts +5 -1
  9. package/dist/commands/leaderboard.d.ts.map +1 -1
  10. package/dist/commands/leaderboard.js +57 -29
  11. package/dist/commands/leaderboard.js.map +1 -1
  12. package/dist/commands/profile-options.d.ts +24 -0
  13. package/dist/commands/profile-options.d.ts.map +1 -0
  14. package/dist/commands/profile-options.js +38 -0
  15. package/dist/commands/profile-options.js.map +1 -0
  16. package/dist/commands/remove.d.ts +5 -1
  17. package/dist/commands/remove.d.ts.map +1 -1
  18. package/dist/commands/remove.js +14 -5
  19. package/dist/commands/remove.js.map +1 -1
  20. package/dist/commands/show.d.ts +5 -1
  21. package/dist/commands/show.d.ts.map +1 -1
  22. package/dist/commands/show.js +12 -3
  23. package/dist/commands/show.js.map +1 -1
  24. package/dist/commands/update-summary.d.ts +2 -0
  25. package/dist/commands/update-summary.d.ts.map +1 -1
  26. package/dist/commands/update-summary.js +12 -3
  27. package/dist/commands/update-summary.js.map +1 -1
  28. package/dist/commands/update.d.ts.map +1 -1
  29. package/dist/commands/update.js +148 -68
  30. package/dist/commands/update.js.map +1 -1
  31. package/dist/config/types.d.ts +1 -1
  32. package/dist/config/types.d.ts.map +1 -1
  33. package/dist/config/types.js +14 -0
  34. package/dist/config/types.js.map +1 -1
  35. package/dist/github/client.d.ts +5 -5
  36. package/dist/github/client.d.ts.map +1 -1
  37. package/dist/github/client.js +157 -57
  38. package/dist/github/client.js.map +1 -1
  39. package/dist/index.js +32 -7
  40. package/dist/index.js.map +1 -1
  41. package/dist/llm/analyzer.d.ts +3 -3
  42. package/dist/llm/analyzer.d.ts.map +1 -1
  43. package/dist/llm/analyzer.js.map +1 -1
  44. package/dist/llm/character.d.ts +2 -2
  45. package/dist/llm/character.d.ts.map +1 -1
  46. package/dist/llm/character.js.map +1 -1
  47. package/dist/llm/client.d.ts +2 -2
  48. package/dist/llm/client.d.ts.map +1 -1
  49. package/dist/llm/client.js +1 -1
  50. package/dist/llm/client.js.map +1 -1
  51. package/dist/llm/providers.d.ts +3 -3
  52. package/dist/llm/providers.d.ts.map +1 -1
  53. package/dist/llm/providers.js +25 -6
  54. package/dist/llm/providers.js.map +1 -1
  55. package/dist/report/generate.d.ts.map +1 -1
  56. package/dist/report/generate.js +4 -2
  57. package/dist/report/generate.js.map +1 -1
  58. package/dist/report/leaderboard.d.ts +5 -1
  59. package/dist/report/leaderboard.d.ts.map +1 -1
  60. package/dist/report/leaderboard.js +611 -865
  61. package/dist/report/leaderboard.js.map +1 -1
  62. package/dist/shared/profile-scope.d.ts +19 -0
  63. package/dist/shared/profile-scope.d.ts.map +1 -0
  64. package/dist/shared/profile-scope.js +101 -0
  65. package/dist/shared/profile-scope.js.map +1 -0
  66. package/dist/shared/types.d.ts +28 -0
  67. package/dist/shared/types.d.ts.map +1 -1
  68. package/dist/shared/ui.d.ts +1 -0
  69. package/dist/shared/ui.d.ts.map +1 -1
  70. package/dist/shared/ui.js +3 -0
  71. package/dist/shared/ui.js.map +1 -1
  72. package/dist/storage/index.d.ts +1 -1
  73. package/dist/storage/index.d.ts.map +1 -1
  74. package/dist/storage/index.js +1 -1
  75. package/dist/storage/index.js.map +1 -1
  76. package/dist/storage/leaderboard.d.ts +3 -2
  77. package/dist/storage/leaderboard.d.ts.map +1 -1
  78. package/dist/storage/leaderboard.js +80 -9
  79. package/dist/storage/leaderboard.js.map +1 -1
  80. package/dist/storage/paths.d.ts +5 -0
  81. package/dist/storage/paths.d.ts.map +1 -1
  82. package/dist/storage/paths.js +13 -0
  83. package/dist/storage/paths.js.map +1 -1
  84. package/dist/storage/report.d.ts +4 -2
  85. package/dist/storage/report.d.ts.map +1 -1
  86. package/dist/storage/report.js +25 -8
  87. package/dist/storage/report.js.map +1 -1
  88. package/dist/storage/user.d.ts +2 -1
  89. package/dist/storage/user.d.ts.map +1 -1
  90. package/dist/storage/user.js +27 -10
  91. package/dist/storage/user.js.map +1 -1
  92. package/package.json +13 -6
@@ -1,17 +1,34 @@
1
1
  import fs from 'fs';
2
- import { ensureStorageDir, userReportPath } from './paths.js';
2
+ import { ensureStorageDir, profileReportPath, userReportPath } from './paths.js';
3
3
  import { diagLog } from '../shared/diagnostics.js';
4
- export function getUserReportPath(username) {
4
+ import { profileSelector, profileStorageKey } from '../shared/profile-scope.js';
5
+ export function getUserReportPath(selectorOrUsername, scope) {
5
6
  ensureStorageDir();
6
- const reportPath = userReportPath(username);
7
- diagLog('Resolved user report path', { username, reportPath });
8
- return reportPath;
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(username, html) {
23
+ export function saveReport(selectorOrUsername, html, scope) {
11
24
  ensureStorageDir();
12
- const reportPath = userReportPath(username);
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),
15
32
  reportPath,
16
33
  htmlLength: html.length,
17
34
  });
@@ -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;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,gBAAgB,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,IAAY;IACvD,gBAAgB,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,CAAC,qBAAqB,EAAE;QAC7B,QAAQ;QACR,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"}
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,cAAc,EAAE,MAAM,YAAY,CAAC;AACjF,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"}
@@ -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(username: string): UserData | null;
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;AAKnD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAYjD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQ9D"}
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"}
@@ -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(username) {
19
- const file = userFilePath(username);
20
- const exists = fs.existsSync(file);
21
- diagLog('Loading user data file', { username, filePath: file, exists });
22
- if (!exists)
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(file, 'utf-8');
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,
@@ -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;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,gBAAgB,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,wBAAwB,EAAE;QAChC,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,QAAQ;QACR,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM;QAC9B,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW;QACzC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK;KAC9B,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,MAAM,0BAA0B,GAA2B,EAAE,CAAC;IAE9D,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;QACjF,KAAK,MAAM,UAAU,IAAI,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAC7D,0BAA0B,CAAC,UAAU,CAAC,GAAG,CAAC,0BAA0B,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;QAClG,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE;YACL,GAAG,IAAI,CAAC,KAAK;YACb,YAAY,EAAE,0BAA0B;SACzC;QACD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACvB,EAAE,CAAC,QAAQ;YACT,CAAC,CAAC;gBACE,GAAG,EAAE;gBACL,QAAQ,EAAE;oBACR,GAAG,EAAE,CAAC,QAAQ;oBACd,YAAY,EAAE,qBAAqB,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;iBAC9D;aACF;YACH,CAAC,CAAC,EAAE,CACP;KACF,CAAC;AACJ,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.2.5",
3
+ "version": "0.3.1",
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/anthropic": "^1.0.0",
40
- "@ai-sdk/google": "^1.0.0",
41
- "@ai-sdk/openai": "^1.0.0",
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": "^4.0.0",
50
+ "ai": "^6.0.143",
44
51
  "chalk": "^5.3.0",
45
52
  "commander": "^12.1.0",
46
- "ollama-ai-provider": "^1.0.0",
53
+ "ollama-ai-provider": "^1.2.0",
47
54
  "open": "^10.1.0",
48
55
  "zod": "^3.23.8"
49
56
  },