cc-proficiency 0.2.4 → 0.2.5

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 (104) hide show
  1. package/README.md +21 -0
  2. package/dist/cli/commands/achievements.d.ts.map +1 -1
  3. package/dist/cli/commands/achievements.js +1 -0
  4. package/dist/cli/commands/achievements.js.map +1 -1
  5. package/dist/cli/commands/analyze.d.ts.map +1 -1
  6. package/dist/cli/commands/analyze.js +6 -1
  7. package/dist/cli/commands/analyze.js.map +1 -1
  8. package/dist/cli/commands/config.d.ts.map +1 -1
  9. package/dist/cli/commands/config.js +4 -0
  10. package/dist/cli/commands/config.js.map +1 -1
  11. package/dist/cli/commands/explain.js +1 -1
  12. package/dist/cli/commands/explain.js.map +1 -1
  13. package/dist/cli/commands/init.d.ts.map +1 -1
  14. package/dist/cli/commands/init.js +6 -0
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/leaderboard.d.ts +2 -0
  17. package/dist/cli/commands/leaderboard.d.ts.map +1 -0
  18. package/dist/cli/commands/leaderboard.js +58 -0
  19. package/dist/cli/commands/leaderboard.js.map +1 -0
  20. package/dist/cli/commands/process.d.ts.map +1 -1
  21. package/dist/cli/commands/process.js +12 -4
  22. package/dist/cli/commands/process.js.map +1 -1
  23. package/dist/cli/commands/share.d.ts +2 -0
  24. package/dist/cli/commands/share.d.ts.map +1 -0
  25. package/dist/cli/commands/share.js +129 -0
  26. package/dist/cli/commands/share.js.map +1 -0
  27. package/dist/cli/commands/status.d.ts.map +1 -1
  28. package/dist/cli/commands/status.js +1 -0
  29. package/dist/cli/commands/status.js.map +1 -1
  30. package/dist/cli/index.js +28 -6
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/cli/services/leaderboard.d.ts +11 -0
  33. package/dist/cli/services/leaderboard.d.ts.map +1 -0
  34. package/dist/cli/services/leaderboard.js +120 -0
  35. package/dist/cli/services/leaderboard.js.map +1 -0
  36. package/dist/cli/services/publishing.d.ts +16 -0
  37. package/dist/cli/services/publishing.d.ts.map +1 -1
  38. package/dist/cli/services/publishing.js +62 -37
  39. package/dist/cli/services/publishing.js.map +1 -1
  40. package/dist/cli/services/sessions.d.ts.map +1 -1
  41. package/dist/cli/services/sessions.js +4 -2
  42. package/dist/cli/services/sessions.js.map +1 -1
  43. package/dist/cli/utils/formatting.d.ts.map +1 -1
  44. package/dist/cli/utils/formatting.js +2 -0
  45. package/dist/cli/utils/formatting.js.map +1 -1
  46. package/dist/cli/utils/update-check.d.ts +7 -0
  47. package/dist/cli/utils/update-check.d.ts.map +1 -0
  48. package/dist/cli/utils/update-check.js +122 -0
  49. package/dist/cli/utils/update-check.js.map +1 -0
  50. package/dist/gist/registry.d.ts +26 -0
  51. package/dist/gist/registry.d.ts.map +1 -0
  52. package/dist/gist/registry.js +101 -0
  53. package/dist/gist/registry.js.map +1 -0
  54. package/dist/gist/uploader.d.ts +9 -1
  55. package/dist/gist/uploader.d.ts.map +1 -1
  56. package/dist/gist/uploader.js +47 -1
  57. package/dist/gist/uploader.js.map +1 -1
  58. package/dist/i18n/locales.d.ts.map +1 -1
  59. package/dist/i18n/locales.js +2 -1
  60. package/dist/i18n/locales.js.map +1 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +3 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/parsers/config-detectors.d.ts +29 -0
  66. package/dist/parsers/config-detectors.d.ts.map +1 -0
  67. package/dist/parsers/config-detectors.js +367 -0
  68. package/dist/parsers/config-detectors.js.map +1 -0
  69. package/dist/parsers/config-parser.d.ts +7 -2
  70. package/dist/parsers/config-parser.d.ts.map +1 -1
  71. package/dist/parsers/config-parser.js +31 -229
  72. package/dist/parsers/config-parser.js.map +1 -1
  73. package/dist/renderer/svg.d.ts.map +1 -1
  74. package/dist/renderer/svg.js +3 -1
  75. package/dist/renderer/svg.js.map +1 -1
  76. package/dist/scoring/engine.d.ts +1 -1
  77. package/dist/scoring/engine.d.ts.map +1 -1
  78. package/dist/scoring/engine.js +30 -8
  79. package/dist/scoring/engine.js.map +1 -1
  80. package/dist/scoring/feature-scores.d.ts +27 -0
  81. package/dist/scoring/feature-scores.d.ts.map +1 -0
  82. package/dist/scoring/feature-scores.js +63 -0
  83. package/dist/scoring/feature-scores.js.map +1 -0
  84. package/dist/scoring/rules.d.ts.map +1 -1
  85. package/dist/scoring/rules.js +12 -0
  86. package/dist/scoring/rules.js.map +1 -1
  87. package/dist/scoring/signals.js +2 -0
  88. package/dist/scoring/signals.js.map +1 -1
  89. package/dist/store/achievements.d.ts.map +1 -1
  90. package/dist/store/achievements.js +8 -0
  91. package/dist/store/achievements.js.map +1 -1
  92. package/dist/store/local-store.d.ts +3 -1
  93. package/dist/store/local-store.d.ts.map +1 -1
  94. package/dist/store/local-store.js +21 -3
  95. package/dist/store/local-store.js.map +1 -1
  96. package/dist/store/public-profile.d.ts +12 -0
  97. package/dist/store/public-profile.d.ts.map +1 -0
  98. package/dist/store/public-profile.js +50 -0
  99. package/dist/store/public-profile.js.map +1 -0
  100. package/dist/store/queue.js +1 -1
  101. package/dist/store/queue.js.map +1 -1
  102. package/dist/types.d.ts +54 -0
  103. package/dist/types.d.ts.map +1 -1
  104. package/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchLeaderboard = fetchLeaderboard;
4
+ const registry_js_1 = require("../../gist/registry.js");
5
+ const local_store_js_1 = require("../../store/local-store.js");
6
+ const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
7
+ function shouldRefreshCache(cache) {
8
+ const age = Date.now() - new Date(cache.fetchedAt).getTime();
9
+ return isNaN(age) || age > CACHE_TTL_MS;
10
+ }
11
+ function profileToEntry(username, profile) {
12
+ try {
13
+ const domains = Array.isArray(profile.domains) ? profile.domains : [];
14
+ const streak = typeof profile.streak === "object" && profile.streak !== null ? profile.streak : { current: 0 };
15
+ const scores = domains.map((d) => typeof d.score === "number" ? d.score : 0);
16
+ const avg = scores.length > 0 ? Math.round(scores.reduce((s, v) => s + v, 0) / scores.length) : 0;
17
+ return {
18
+ username,
19
+ domains,
20
+ averageScore: avg,
21
+ streak: typeof streak.current === "number" ? streak.current : 0,
22
+ achievementCount: typeof profile.achievementCount === "number" ? profile.achievementCount : 0,
23
+ totalSessions: typeof profile.totalSessions === "number" ? profile.totalSessions : 0,
24
+ totalHours: typeof profile.totalHours === "number" ? profile.totalHours : 0,
25
+ memberSince: typeof profile.memberSince === "string" ? profile.memberSince : "",
26
+ };
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * Fetch leaderboard from registry gist + individual public profiles.
34
+ * Falls back to cache if offline.
35
+ */
36
+ function fetchLeaderboard(sortBy = "avg", limit = 20) {
37
+ // Try cache first
38
+ const cache = (0, local_store_js_1.loadLeaderboardCache)();
39
+ const useCache = cache && !shouldRefreshCache(cache);
40
+ if (useCache) {
41
+ return {
42
+ entries: sortEntries(cache.entries, sortBy).slice(0, limit),
43
+ fromCache: true,
44
+ skipped: 0,
45
+ };
46
+ }
47
+ // Fetch fresh data
48
+ const registry = (0, registry_js_1.readRegistry)();
49
+ if (!registry) {
50
+ // Offline or unavailable — fall back to cache
51
+ if (cache) {
52
+ return {
53
+ entries: sortEntries(cache.entries, sortBy).slice(0, limit),
54
+ fromCache: true,
55
+ skipped: 0,
56
+ };
57
+ }
58
+ return { entries: [], fromCache: false, skipped: 0 };
59
+ }
60
+ const entries = [];
61
+ let skipped = 0;
62
+ for (const entry of registry.entries) {
63
+ const profile = (0, registry_js_1.readPublicProfileFromGist)(entry.publicGistId);
64
+ if (!profile) {
65
+ skipped++;
66
+ continue;
67
+ }
68
+ const leaderboardEntry = profileToEntry(entry.username, profile);
69
+ if (leaderboardEntry) {
70
+ entries.push(leaderboardEntry);
71
+ }
72
+ else {
73
+ skipped++;
74
+ }
75
+ }
76
+ // Save to cache
77
+ const newCache = {
78
+ fetchedAt: new Date().toISOString(),
79
+ entries,
80
+ };
81
+ (0, local_store_js_1.saveLeaderboardCache)(newCache);
82
+ return {
83
+ entries: sortEntries(entries, sortBy).slice(0, limit),
84
+ fromCache: false,
85
+ skipped,
86
+ };
87
+ }
88
+ function sortEntries(entries, sortBy) {
89
+ const sorted = [...entries];
90
+ const domainSortKeys = {
91
+ "cc-mastery": "cc-mastery",
92
+ "tool-mcp": "tool-mcp",
93
+ "agentic": "agentic",
94
+ "prompt-craft": "prompt-craft",
95
+ "context-mgmt": "context-mgmt",
96
+ };
97
+ if (sortBy in domainSortKeys) {
98
+ const domainId = domainSortKeys[sortBy];
99
+ sorted.sort((a, b) => {
100
+ const aScore = a.domains.find((d) => d.id === domainId)?.score ?? 0;
101
+ const bScore = b.domains.find((d) => d.id === domainId)?.score ?? 0;
102
+ return bScore - aScore;
103
+ });
104
+ }
105
+ else if (sortBy === "hours") {
106
+ sorted.sort((a, b) => b.totalHours - a.totalHours);
107
+ }
108
+ else if (sortBy === "streak") {
109
+ sorted.sort((a, b) => b.streak - a.streak);
110
+ }
111
+ else if (sortBy === "sessions") {
112
+ sorted.sort((a, b) => b.totalSessions - a.totalSessions);
113
+ }
114
+ else {
115
+ // Default: average score
116
+ sorted.sort((a, b) => b.averageScore - a.averageScore);
117
+ }
118
+ return sorted;
119
+ }
120
+ //# sourceMappingURL=leaderboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaderboard.js","sourceRoot":"","sources":["../../../src/cli/services/leaderboard.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,18 @@
1
+ import type { ProficiencyResult, LocalStore, RemoteStore } from "../../types.js";
2
+ export interface MergeAndPushResult {
3
+ success: boolean;
4
+ error?: string;
5
+ merged?: RemoteStore;
6
+ totals?: {
7
+ sessions: number;
8
+ hours: number;
9
+ projects: number;
10
+ };
11
+ }
12
+ /**
13
+ * Read remote store, merge local data, check achievements, re-render badge,
14
+ * and push SVG + JSON atomically. Used by both cmdPush and cmdProcess.
15
+ */
16
+ export declare function mergeAndPush(store: LocalStore, result: ProficiencyResult, gistId: string, username: string, verbose?: boolean): MergeAndPushResult;
1
17
  export declare function pushToGist(): void;
2
18
  //# sourceMappingURL=publishing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publishing.d.ts","sourceRoot":"","sources":["../../../src/cli/services/publishing.ts"],"names":[],"mappings":"AAQA,wBAAgB,UAAU,IAAI,IAAI,CAoFjC"}
1
+ {"version":3,"file":"publishing.d.ts","sourceRoot":"","sources":["../../../src/cli/services/publishing.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAE9F,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,OAAe,GACvB,kBAAkB,CA8EpB;AAED,wBAAgB,UAAU,IAAI,IAAI,CAmCjC"}
@@ -1,37 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeAndPush = mergeAndPush;
3
4
  exports.pushToGist = pushToGist;
4
5
  const svg_js_1 = require("../../renderer/svg.js");
5
6
  const local_store_js_1 = require("../../store/local-store.js");
6
7
  const uploader_js_1 = require("../../gist/uploader.js");
7
8
  const remote_store_js_1 = require("../../store/remote-store.js");
8
9
  const achievements_js_1 = require("../../store/achievements.js");
10
+ const public_profile_js_1 = require("../../store/public-profile.js");
9
11
  const locale_js_1 = require("../utils/locale.js");
10
- function pushToGist() {
11
- const config = (0, local_store_js_1.loadConfig)();
12
- const store = (0, local_store_js_1.loadStore)();
13
- if (!store.lastResult) {
14
- console.log("No analysis data. Run 'cc-proficiency analyze' first.");
15
- return;
16
- }
17
- const svg = (0, svg_js_1.renderBadge)(store.lastResult, (0, locale_js_1.getConfigLocale)());
18
- (0, local_store_js_1.saveBadge)(svg);
19
- if (!(0, uploader_js_1.isGhAuthenticated)() || !config.gistId) {
20
- if (!(0, uploader_js_1.isGhAuthenticated)()) {
21
- console.log("\u26A0 GitHub CLI not authenticated.");
22
- console.log("To enable: gh auth login && cc-proficiency init");
23
- }
24
- if (!config.gistId) {
25
- console.log("No Gist configured. Run 'cc-proficiency init' first.");
26
- }
27
- console.log("Badge saved locally to: " + (0, local_store_js_1.getBadgePath)());
28
- return;
29
- }
30
- const remoteJson = (0, uploader_js_1.readGistFile)(config.gistId, "cc-proficiency.json");
12
+ /**
13
+ * Read remote store, merge local data, check achievements, re-render badge,
14
+ * and push SVG + JSON atomically. Used by both cmdPush and cmdProcess.
15
+ */
16
+ function mergeAndPush(store, result, gistId, username, verbose = false) {
17
+ const remoteJson = (0, uploader_js_1.readGistFile)(gistId, "cc-proficiency.json");
31
18
  let remote = remoteJson ? (0, remote_store_js_1.parseRemoteStore)(remoteJson) : null;
32
19
  if (!remote)
33
- remote = (0, remote_store_js_1.emptyRemoteStore)(config.username ?? "unknown");
34
- const avgHours = store.lastResult.features.totalHours / Math.max(store.processedSessionIds.length, 1);
20
+ remote = (0, remote_store_js_1.emptyRemoteStore)(username);
21
+ const avgHours = result.features.totalHours / Math.max(store.processedSessionIds.length, 1);
35
22
  const localSessions = store.processedSessionIds.map((id) => {
36
23
  const snap = store.snapshots.find((s) => s.sessionId === id);
37
24
  return {
@@ -40,48 +27,86 @@ function pushToGist() {
40
27
  hours: avgHours,
41
28
  };
42
29
  });
43
- const merged = (0, remote_store_js_1.mergeIntoRemote)(remote, localSessions, store.lastResult);
30
+ const merged = (0, remote_store_js_1.mergeIntoRemote)(remote, localSessions, result);
44
31
  const totals = (0, remote_store_js_1.getTotalStats)(merged);
32
+ const cfg = (0, local_store_js_1.loadConfig)();
45
33
  const ctx = {
46
34
  totalSessions: totals.sessions,
47
35
  totalHours: totals.hours,
48
36
  totalProjects: totals.projects,
49
37
  domains: merged.domains,
50
38
  streak: merged.streak,
51
- features: store.lastResult.features,
39
+ features: result.features,
52
40
  activeDates: merged.streak.activeDates,
41
+ leaderboard: cfg.leaderboard ?? false,
53
42
  };
54
43
  const newAchievements = (0, achievements_js_1.checkAchievements)(ctx, merged.achievements.map((a) => a.id));
55
44
  for (const id of newAchievements) {
56
45
  merged.achievements.push({ id, unlockedAt: new Date().toISOString() });
57
46
  const def = (0, achievements_js_1.getAchievementDef)(id);
58
- if (def)
47
+ if (def && verbose)
59
48
  console.log(` \uD83C\uDFC6 Achievement unlocked: ${def.icon} ${def.name}`);
60
49
  }
61
50
  const thisWeek = (0, remote_store_js_1.getWeekMonday)(new Date().toISOString());
62
51
  const localTrend = {
63
52
  week: thisWeek,
64
- domains: Object.fromEntries(store.lastResult.domains.map((d) => [d.id, d.score])),
65
- hours: store.lastResult.features.totalHours,
66
- sessions: store.lastResult.sessionCount,
53
+ domains: Object.fromEntries(result.domains.map((d) => [d.id, d.score])),
54
+ hours: result.features.totalHours,
55
+ sessions: result.sessionCount,
67
56
  };
68
57
  merged.weeklyTrends = (0, remote_store_js_1.mergeWeeklyTrends)(merged.weeklyTrends, [localTrend]);
69
- store.lastResult.streak = merged.streak.current;
70
- store.lastResult.achievementCount = merged.achievements.length;
71
- const finalSvg = (0, svg_js_1.renderBadge)(store.lastResult, (0, locale_js_1.getConfigLocale)());
58
+ result.streak = merged.streak.current;
59
+ result.achievementCount = merged.achievements.length;
60
+ const finalSvg = (0, svg_js_1.renderBadge)(result, (0, locale_js_1.getConfigLocale)());
72
61
  (0, local_store_js_1.saveBadge)(finalSvg);
73
- const pushResult = (0, uploader_js_1.pushGistFiles)(config.gistId, {
62
+ const pushResult = (0, uploader_js_1.pushGistFiles)(gistId, {
74
63
  "cc-proficiency.svg": finalSvg,
75
64
  "cc-proficiency.json": JSON.stringify(merged, null, 2),
76
65
  });
77
- if (pushResult.success) {
78
- const rawUrl = (0, uploader_js_1.getGistRawUrl)(config.username ?? "", config.gistId);
66
+ if (!pushResult.success) {
67
+ return { success: false, error: pushResult.error };
68
+ }
69
+ if (verbose) {
70
+ const rawUrl = (0, uploader_js_1.getGistRawUrl)(username, gistId);
79
71
  console.log("\u2713 Badge + data pushed to Gist");
80
72
  console.log(` ${rawUrl}`);
81
73
  console.log(` ${totals.sessions} sessions \u00B7 ${totals.hours.toFixed(1)}h \u00B7 ${merged.achievements.length} achievements \u00B7 \uD83D\uDD25 ${merged.streak.current}d streak`);
82
74
  }
83
- else {
84
- console.log(`\u2717 Push failed: ${pushResult.error}`);
75
+ // Auto-update public profile if leaderboard is enabled
76
+ if (cfg.leaderboard && cfg.publicGistId) {
77
+ const publicProfile = (0, public_profile_js_1.buildPublicProfile)(merged);
78
+ const publicResult = (0, uploader_js_1.pushGistFiles)(cfg.publicGistId, {
79
+ "cc-proficiency-public.json": JSON.stringify(publicProfile, null, 2),
80
+ });
81
+ if (!publicResult.success) {
82
+ (0, local_store_js_1.logError)(`Public profile update failed: ${publicResult.error}`);
83
+ }
84
+ }
85
+ return { success: true, merged, totals };
86
+ }
87
+ function pushToGist() {
88
+ const config = (0, local_store_js_1.loadConfig)();
89
+ const store = (0, local_store_js_1.loadStore)();
90
+ if (!store.lastResult) {
91
+ console.log("No analysis data. Run 'cc-proficiency analyze' first.");
92
+ return;
93
+ }
94
+ const svg = (0, svg_js_1.renderBadge)(store.lastResult, (0, locale_js_1.getConfigLocale)());
95
+ (0, local_store_js_1.saveBadge)(svg);
96
+ if (!(0, uploader_js_1.isGhAuthenticated)() || !config.gistId) {
97
+ if (!(0, uploader_js_1.isGhAuthenticated)()) {
98
+ console.log("\u26A0 GitHub CLI not authenticated.");
99
+ console.log("To enable: gh auth login && cc-proficiency init");
100
+ }
101
+ if (!config.gistId) {
102
+ console.log("No Gist configured. Run 'cc-proficiency init' first.");
103
+ }
104
+ console.log("Badge saved locally to: " + (0, local_store_js_1.getBadgePath)());
105
+ return;
106
+ }
107
+ const result = mergeAndPush(store, store.lastResult, config.gistId, config.username ?? "unknown", true);
108
+ if (!result.success) {
109
+ console.log(`\u2717 Push failed: ${result.error}`);
85
110
  }
86
111
  }
87
112
  //# sourceMappingURL=publishing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/cli/services/publishing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishing.js","sourceRoot":"","sources":["../../../src/cli/services/publishing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/cli/services/sessions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAsB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAiC7G;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAuB9G;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,aAAa,EAAE,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GACf,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAGvC"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/cli/services/sessions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAsB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAmC7G;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAuB9G;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,aAAa,EAAE,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,GACf,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAGvC"}
@@ -12,9 +12,11 @@ const engine_js_1 = require("../../scoring/engine.js");
12
12
  const local_store_js_1 = require("../../store/local-store.js");
13
13
  const CLAUDE_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), ".claude");
14
14
  async function gatherData(full) {
15
- const config = (0, config_parser_js_1.parseClaudeConfig)();
15
+ const realStore = (0, local_store_js_1.loadStore)();
16
+ const knownCwds = [...new Set([process.cwd(), ...(realStore.knownProjectCwds ?? [])])];
17
+ const config = (0, config_parser_js_1.parseClaudeConfig)(knownCwds);
16
18
  const sessions = [];
17
- const store = full ? { processedSessionIds: [] } : (0, local_store_js_1.loadStore)();
19
+ const store = full ? { processedSessionIds: [] } : realStore;
18
20
  const projectsDir = (0, node_path_1.join)(CLAUDE_DIR, "projects");
19
21
  if (!(0, node_fs_1.existsSync)(projectsDir))
20
22
  return { sessions, config };
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/cli/services/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/cli/services/sessions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/formatting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAExE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CA4C3D;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAc5D"}
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/formatting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAExE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CA4C3D;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAgB5D"}
@@ -55,6 +55,8 @@ function printSetupChecklist(cl) {
55
55
  ["MCP Servers", cl.hasMcpServers],
56
56
  ["Memory", cl.hasMemory],
57
57
  ["Rules", cl.hasRules],
58
+ ["Agents", cl.hasAgents],
59
+ ["Skills", cl.hasSkills],
58
60
  ];
59
61
  console.log(" Setup:");
60
62
  for (const [label, ok] of items) {
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../src/cli/utils/formatting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../src/cli/utils/formatting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Check for updates and print a notice if a newer version is available.
3
+ * Non-blocking: fetches in background, resolves quickly from cache.
4
+ * Call after CLI output is complete.
5
+ */
6
+ export declare function checkForUpdates(currentVersion: string): Promise<void>;
7
+ //# sourceMappingURL=update-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/update-check.ts"],"names":[],"mappings":"AAwFA;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B3E"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkForUpdates = checkForUpdates;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const node_os_1 = require("node:os");
7
+ const node_https_1 = require("node:https");
8
+ const queue_js_1 = require("../../store/queue.js");
9
+ const STORE_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), ".cc-proficiency");
10
+ const CACHE_FILE = (0, node_path_1.join)(STORE_DIR, "version-check.json");
11
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
12
+ const FETCH_TIMEOUT_MS = 3000; // 3 seconds
13
+ function loadCache() {
14
+ if (!(0, node_fs_1.existsSync)(CACHE_FILE))
15
+ return null;
16
+ try {
17
+ return JSON.parse((0, node_fs_1.readFileSync)(CACHE_FILE, "utf-8"));
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ function saveCache(cache) {
24
+ (0, queue_js_1.ensureStoreDir)();
25
+ try {
26
+ (0, node_fs_1.writeFileSync)(CACHE_FILE, JSON.stringify(cache), "utf-8");
27
+ }
28
+ catch {
29
+ // non-critical
30
+ }
31
+ }
32
+ function compareVersions(a, b) {
33
+ // Strip prerelease/build metadata, compare major.minor.patch only
34
+ const pa = a.split("-")[0].split(".").map(Number);
35
+ const pb = b.split("-")[0].split(".").map(Number);
36
+ for (let i = 0; i < 3; i++) {
37
+ const va = pa[i] ?? 0;
38
+ const vb = pb[i] ?? 0;
39
+ if (isNaN(va) || isNaN(vb))
40
+ return 0; // can't compare, skip
41
+ if (va !== vb)
42
+ return va - vb;
43
+ }
44
+ return 0;
45
+ }
46
+ function fetchLatestVersion() {
47
+ return new Promise((resolve) => {
48
+ let resolved = false;
49
+ const done = (val) => {
50
+ if (resolved)
51
+ return;
52
+ resolved = true;
53
+ clearTimeout(timer);
54
+ resolve(val);
55
+ };
56
+ const timer = setTimeout(() => {
57
+ req.destroy();
58
+ done(null);
59
+ }, FETCH_TIMEOUT_MS);
60
+ const req = (0, node_https_1.get)("https://registry.npmjs.org/cc-proficiency/latest", {
61
+ headers: { "Accept": "application/json" },
62
+ timeout: FETCH_TIMEOUT_MS,
63
+ }, (res) => {
64
+ if (res.statusCode !== 200) {
65
+ res.resume();
66
+ done(null);
67
+ return;
68
+ }
69
+ let data = "";
70
+ res.on("data", (chunk) => { data += chunk.toString(); });
71
+ res.on("end", () => {
72
+ try {
73
+ const pkg = JSON.parse(data);
74
+ done(typeof pkg.version === "string" ? pkg.version : null);
75
+ }
76
+ catch {
77
+ done(null);
78
+ }
79
+ });
80
+ });
81
+ req.on("error", () => done(null));
82
+ req.on("timeout", () => { req.destroy(); done(null); });
83
+ });
84
+ }
85
+ /**
86
+ * Check for updates and print a notice if a newer version is available.
87
+ * Non-blocking: fetches in background, resolves quickly from cache.
88
+ * Call after CLI output is complete.
89
+ */
90
+ async function checkForUpdates(currentVersion) {
91
+ // Skip in non-interactive contexts
92
+ if (process.env.CC_PROFICIENCY_NO_UPDATE_CHECK === "1")
93
+ return;
94
+ if (process.env.CI)
95
+ return;
96
+ if (!process.stdout.isTTY)
97
+ return;
98
+ const cache = loadCache();
99
+ // Use cache if fresh
100
+ if (cache) {
101
+ const age = Date.now() - new Date(cache.checkedAt).getTime();
102
+ if (age >= 0 && age < CHECK_INTERVAL_MS) {
103
+ if (compareVersions(cache.latestVersion, currentVersion) > 0) {
104
+ printNotice(currentVersion, cache.latestVersion);
105
+ }
106
+ return;
107
+ }
108
+ }
109
+ // Fetch in background — don't block
110
+ const latest = await fetchLatestVersion();
111
+ if (!latest)
112
+ return;
113
+ saveCache({ latestVersion: latest, checkedAt: new Date().toISOString() });
114
+ if (compareVersions(latest, currentVersion) > 0) {
115
+ printNotice(currentVersion, latest);
116
+ }
117
+ }
118
+ function printNotice(current, latest) {
119
+ console.log(`\n Update available: v${current} \u2192 v${latest}`);
120
+ console.log(" Run: npm update -g cc-proficiency\n");
121
+ }
122
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../../src/cli/utils/update-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { LeaderboardRegistry, PublicProfile } from "../types.js";
2
+ /**
3
+ * Read the leaderboard registry from the owner's public gist.
4
+ */
5
+ export declare function readRegistry(): LeaderboardRegistry | null;
6
+ /**
7
+ * Read a public profile from a user's public gist.
8
+ */
9
+ export declare function readPublicProfileFromGist(publicGistId: string): PublicProfile | null;
10
+ /**
11
+ * Open a GitHub Issue to join the leaderboard.
12
+ */
13
+ export declare function openJoinIssue(username: string, publicGistId: string): {
14
+ success: boolean;
15
+ issueUrl?: string;
16
+ error?: string;
17
+ };
18
+ /**
19
+ * Open a GitHub Issue to leave the leaderboard.
20
+ */
21
+ export declare function openLeaveIssue(username: string): {
22
+ success: boolean;
23
+ issueUrl?: string;
24
+ error?: string;
25
+ };
26
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/gist/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAUtE;;GAEG;AACH,wBAAgB,YAAY,IAAI,mBAAmB,GAAG,IAAI,CAUzD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAIpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA0BzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBzD"}