fivocell 4.0.0 → 4.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.
Files changed (163) hide show
  1. package/dist/__tests__/behavior-intelligence-bug.test.d.ts +2 -0
  2. package/dist/__tests__/behavior-intelligence-bug.test.d.ts.map +1 -0
  3. package/dist/__tests__/behavior-intelligence-bug.test.js +21 -0
  4. package/dist/__tests__/behavior-intelligence-bug.test.js.map +1 -0
  5. package/dist/__tests__/code-scanner-arrow-return-type.test.d.ts +2 -0
  6. package/dist/__tests__/code-scanner-arrow-return-type.test.d.ts.map +1 -0
  7. package/dist/__tests__/code-scanner-arrow-return-type.test.js +76 -0
  8. package/dist/__tests__/code-scanner-arrow-return-type.test.js.map +1 -0
  9. package/dist/__tests__/code-scanner-blindspot.test.d.ts +2 -0
  10. package/dist/__tests__/code-scanner-blindspot.test.d.ts.map +1 -0
  11. package/dist/__tests__/code-scanner-blindspot.test.js +18 -0
  12. package/dist/__tests__/code-scanner-blindspot.test.js.map +1 -0
  13. package/dist/__tests__/code-scanner-error-recovery.test.d.ts +2 -0
  14. package/dist/__tests__/code-scanner-error-recovery.test.d.ts.map +1 -0
  15. package/dist/__tests__/code-scanner-error-recovery.test.js +21 -0
  16. package/dist/__tests__/code-scanner-error-recovery.test.js.map +1 -0
  17. package/dist/__tests__/code-scanner-n1-detection.test.d.ts +2 -0
  18. package/dist/__tests__/code-scanner-n1-detection.test.d.ts.map +1 -0
  19. package/dist/__tests__/code-scanner-n1-detection.test.js +113 -0
  20. package/dist/__tests__/code-scanner-n1-detection.test.js.map +1 -0
  21. package/dist/__tests__/code-scanner-nesting.test.d.ts +2 -0
  22. package/dist/__tests__/code-scanner-nesting.test.d.ts.map +1 -0
  23. package/dist/__tests__/code-scanner-nesting.test.js +113 -0
  24. package/dist/__tests__/code-scanner-nesting.test.js.map +1 -0
  25. package/dist/__tests__/code-scanner-null-check.test.d.ts +2 -0
  26. package/dist/__tests__/code-scanner-null-check.test.d.ts.map +1 -0
  27. package/dist/__tests__/code-scanner-null-check.test.js +126 -0
  28. package/dist/__tests__/code-scanner-null-check.test.js.map +1 -0
  29. package/dist/__tests__/code-scanner-sql-fix.test.d.ts +2 -0
  30. package/dist/__tests__/code-scanner-sql-fix.test.d.ts.map +1 -0
  31. package/dist/__tests__/code-scanner-sql-fix.test.js +21 -0
  32. package/dist/__tests__/code-scanner-sql-fix.test.js.map +1 -0
  33. package/dist/__tests__/code-scanner-trust-score.test.d.ts +1 -0
  34. package/dist/__tests__/code-scanner-trust-score.test.d.ts.map +1 -0
  35. package/dist/__tests__/code-scanner-trust-score.test.js +39 -0
  36. package/dist/__tests__/code-scanner-trust-score.test.js.map +1 -0
  37. package/dist/__tests__/code-scanner-validation.test.d.ts +2 -0
  38. package/dist/__tests__/code-scanner-validation.test.d.ts.map +1 -0
  39. package/dist/__tests__/code-scanner-validation.test.js +131 -0
  40. package/dist/__tests__/code-scanner-validation.test.js.map +1 -0
  41. package/dist/__tests__/community-store.test.d.ts +2 -0
  42. package/dist/__tests__/community-store.test.d.ts.map +1 -0
  43. package/dist/__tests__/community-store.test.js +231 -0
  44. package/dist/__tests__/community-store.test.js.map +1 -0
  45. package/dist/__tests__/enhanced-blind-spots.test.d.ts +2 -0
  46. package/dist/__tests__/enhanced-blind-spots.test.d.ts.map +1 -0
  47. package/dist/__tests__/enhanced-blind-spots.test.js +302 -0
  48. package/dist/__tests__/enhanced-blind-spots.test.js.map +1 -0
  49. package/dist/__tests__/knowledge-graph-store.test.d.ts +2 -0
  50. package/dist/__tests__/knowledge-graph-store.test.d.ts.map +1 -0
  51. package/dist/__tests__/knowledge-graph-store.test.js +252 -0
  52. package/dist/__tests__/knowledge-graph-store.test.js.map +1 -0
  53. package/dist/__tests__/live-watcher.test.d.ts +2 -0
  54. package/dist/__tests__/live-watcher.test.d.ts.map +1 -0
  55. package/dist/__tests__/live-watcher.test.js +312 -0
  56. package/dist/__tests__/live-watcher.test.js.map +1 -0
  57. package/dist/__tests__/mcp-cell-tools.test.d.ts +2 -0
  58. package/dist/__tests__/mcp-cell-tools.test.d.ts.map +1 -0
  59. package/dist/__tests__/mcp-cell-tools.test.js +176 -0
  60. package/dist/__tests__/mcp-cell-tools.test.js.map +1 -0
  61. package/dist/__tests__/multi-project.test.d.ts +2 -0
  62. package/dist/__tests__/multi-project.test.d.ts.map +1 -0
  63. package/dist/__tests__/multi-project.test.js +145 -0
  64. package/dist/__tests__/multi-project.test.js.map +1 -0
  65. package/dist/__tests__/pc-scanner-paths.test.d.ts +2 -0
  66. package/dist/__tests__/pc-scanner-paths.test.d.ts.map +1 -0
  67. package/dist/__tests__/pc-scanner-paths.test.js +16 -0
  68. package/dist/__tests__/pc-scanner-paths.test.js.map +1 -0
  69. package/dist/__tests__/prompt-builder-realdata.test.d.ts +2 -0
  70. package/dist/__tests__/prompt-builder-realdata.test.d.ts.map +1 -0
  71. package/dist/__tests__/prompt-builder-realdata.test.js +94 -0
  72. package/dist/__tests__/prompt-builder-realdata.test.js.map +1 -0
  73. package/dist/__tests__/prompt-builder-sessions.test.d.ts +2 -0
  74. package/dist/__tests__/prompt-builder-sessions.test.d.ts.map +1 -0
  75. package/dist/__tests__/prompt-builder-sessions.test.js +124 -0
  76. package/dist/__tests__/prompt-builder-sessions.test.js.map +1 -0
  77. package/dist/__tests__/security.test.d.ts +1 -0
  78. package/dist/__tests__/security.test.d.ts.map +1 -0
  79. package/dist/__tests__/security.test.js +161 -0
  80. package/dist/__tests__/security.test.js.map +1 -0
  81. package/dist/__tests__/session-bridge.test.d.ts +2 -0
  82. package/dist/__tests__/session-bridge.test.d.ts.map +1 -0
  83. package/dist/__tests__/session-bridge.test.js +158 -0
  84. package/dist/__tests__/session-bridge.test.js.map +1 -0
  85. package/dist/__tests__/session-memory-tables.test.d.ts +2 -0
  86. package/dist/__tests__/session-memory-tables.test.d.ts.map +1 -0
  87. package/dist/__tests__/session-memory-tables.test.js +169 -0
  88. package/dist/__tests__/session-memory-tables.test.js.map +1 -0
  89. package/dist/__tests__/staleness-detection.test.d.ts +2 -0
  90. package/dist/__tests__/staleness-detection.test.d.ts.map +1 -0
  91. package/dist/__tests__/staleness-detection.test.js +105 -0
  92. package/dist/__tests__/staleness-detection.test.js.map +1 -0
  93. package/dist/__tests__/team-collaboration.test.d.ts +2 -0
  94. package/dist/__tests__/team-collaboration.test.d.ts.map +1 -0
  95. package/dist/__tests__/team-collaboration.test.js +224 -0
  96. package/dist/__tests__/team-collaboration.test.js.map +1 -0
  97. package/dist/__tests__/tool-specific-format.test.d.ts +2 -0
  98. package/dist/__tests__/tool-specific-format.test.d.ts.map +1 -0
  99. package/dist/__tests__/tool-specific-format.test.js +132 -0
  100. package/dist/__tests__/tool-specific-format.test.js.map +1 -0
  101. package/dist/__tests__/usage-intelligence-store.test.d.ts +2 -0
  102. package/dist/__tests__/usage-intelligence-store.test.d.ts.map +1 -0
  103. package/dist/__tests__/usage-intelligence-store.test.js +266 -0
  104. package/dist/__tests__/usage-intelligence-store.test.js.map +1 -0
  105. package/dist/behavior-intelligence.d.ts.map +1 -1
  106. package/dist/behavior-intelligence.js +12 -1
  107. package/dist/behavior-intelligence.js.map +1 -1
  108. package/dist/cli.js +368 -1
  109. package/dist/cli.js.map +1 -1
  110. package/dist/code-scanner.d.ts.map +1 -1
  111. package/dist/code-scanner.js +301 -97
  112. package/dist/code-scanner.js.map +1 -1
  113. package/dist/core/community-store.d.ts +128 -0
  114. package/dist/core/community-store.d.ts.map +1 -0
  115. package/dist/core/community-store.js +329 -0
  116. package/dist/core/community-store.js.map +1 -0
  117. package/dist/core/database.d.ts +0 -3
  118. package/dist/core/database.d.ts.map +1 -1
  119. package/dist/core/database.js +287 -15
  120. package/dist/core/database.js.map +1 -1
  121. package/dist/core/enhanced-blind-spots.d.ts +27 -0
  122. package/dist/core/enhanced-blind-spots.d.ts.map +1 -0
  123. package/dist/core/enhanced-blind-spots.js +591 -0
  124. package/dist/core/enhanced-blind-spots.js.map +1 -0
  125. package/dist/core/knowledge-graph-store.d.ts +69 -0
  126. package/dist/core/knowledge-graph-store.d.ts.map +1 -0
  127. package/dist/core/knowledge-graph-store.js +269 -0
  128. package/dist/core/knowledge-graph-store.js.map +1 -0
  129. package/dist/core/live-watcher.d.ts +52 -0
  130. package/dist/core/live-watcher.d.ts.map +1 -0
  131. package/dist/core/live-watcher.js +369 -0
  132. package/dist/core/live-watcher.js.map +1 -0
  133. package/dist/core/project-registry.d.ts +24 -0
  134. package/dist/core/project-registry.d.ts.map +1 -0
  135. package/dist/core/project-registry.js +70 -0
  136. package/dist/core/project-registry.js.map +1 -0
  137. package/dist/core/prompt-builder.d.ts +49 -0
  138. package/dist/core/prompt-builder.d.ts.map +1 -1
  139. package/dist/core/prompt-builder.js +482 -67
  140. package/dist/core/prompt-builder.js.map +1 -1
  141. package/dist/core/security.d.ts +23 -0
  142. package/dist/core/security.d.ts.map +1 -0
  143. package/dist/core/security.js +117 -0
  144. package/dist/core/security.js.map +1 -0
  145. package/dist/core/session-memory.d.ts +64 -0
  146. package/dist/core/session-memory.d.ts.map +1 -1
  147. package/dist/core/session-memory.js +111 -0
  148. package/dist/core/session-memory.js.map +1 -1
  149. package/dist/core/usage-intelligence-store.d.ts +126 -0
  150. package/dist/core/usage-intelligence-store.d.ts.map +1 -0
  151. package/dist/core/usage-intelligence-store.js +405 -0
  152. package/dist/core/usage-intelligence-store.js.map +1 -0
  153. package/dist/daemon/server.d.ts.map +1 -1
  154. package/dist/daemon/server.js +936 -17
  155. package/dist/daemon/server.js.map +1 -1
  156. package/dist/knowledge-graph-builder.d.ts.map +1 -1
  157. package/dist/knowledge-graph-builder.js +18 -2
  158. package/dist/knowledge-graph-builder.js.map +1 -1
  159. package/dist/pc-scanner.d.ts +1 -0
  160. package/dist/pc-scanner.d.ts.map +1 -1
  161. package/dist/pc-scanner.js +58 -30
  162. package/dist/pc-scanner.js.map +1 -1
  163. package/package.json +1 -1
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shareCommunityPattern = shareCommunityPattern;
4
+ exports.getCommunityPatterns = getCommunityPatterns;
5
+ exports.voteCommunityPattern = voteCommunityPattern;
6
+ exports.incrementUsage = incrementUsage;
7
+ exports.addCommunityInsight = addCommunityInsight;
8
+ exports.getCommunityInsights = getCommunityInsights;
9
+ exports.addBenchmark = addBenchmark;
10
+ exports.getBenchmarks = getBenchmarks;
11
+ exports.getCommunityStats = getCommunityStats;
12
+ exports.getTechEvolution = getTechEvolution;
13
+ exports.getFailurePatterns = getFailurePatterns;
14
+ exports.validatePrivacy = validatePrivacy;
15
+ exports.createAnonymousId = createAnonymousId;
16
+ const database_1 = require("./database");
17
+ const crypto_1 = require("crypto");
18
+ // ─── Privacy-safe hashing ─────────────────────────────────────────────────
19
+ function anonymousHash(input) {
20
+ return (0, crypto_1.createHash)('sha256').update(input + 'cell-anon-salt-v1').digest('hex').slice(0, 16);
21
+ }
22
+ let _initialized = false;
23
+ function ensureInit() {
24
+ if (_initialized)
25
+ return;
26
+ (0, database_1.initializeDatabase)();
27
+ _initialized = true;
28
+ }
29
+ function sanitizeRule(rule) {
30
+ // Strip anything that looks like code, file paths, or PII
31
+ return rule
32
+ .replace(/\b\w+\.(ts|js|tsx|jsx|py|java|go|rs|cpp|c)\b/gi, '<file>')
33
+ .replace(/(['"])(?:\\.|[^\\])*?\1/g, '<string>')
34
+ .replace(/\b\d+\b/g, '<num>')
35
+ .slice(0, 200);
36
+ }
37
+ // ─── Patterns CRUD ───────────────────────────────────────────────────────
38
+ function shareCommunityPattern(params) {
39
+ const db = (0, database_1.getDb)();
40
+ const warnings = [];
41
+ const sanitized = sanitizeRule(params.rule);
42
+ if (sanitized !== params.rule) {
43
+ warnings.push('Rule was sanitized — code/file paths/numbers removed');
44
+ }
45
+ // PII detection
46
+ const piiCheck = /\b[A-Z][a-z]+ [A-Z][a-z]+\b/.test(params.rule);
47
+ if (piiCheck) {
48
+ warnings.push('Possible name detected — will be anonymized');
49
+ }
50
+ const anonId = params.anonymousId || anonymousHash(`user-${Date.now()}-${Math.random()}`);
51
+ const patternId = `cp-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
52
+ const stmt = db.prepare(`
53
+ INSERT INTO community_patterns (pattern_id, anonymous_id, category, language, framework, rule, success_rate, usage_count, votes, privacy_safe)
54
+ VALUES (?, ?, ?, ?, ?, ?, ?, 1, 0, 1)
55
+ `);
56
+ const result = stmt.run(patternId, anonId, params.category, params.language || '', params.framework || '', sanitized, params.successRate || 0);
57
+ return { id: Number(result.lastInsertRowid), patternId, privacySafe: true, warnings };
58
+ }
59
+ function getCommunityPatterns(filters) {
60
+ const db = (0, database_1.getDb)();
61
+ let sql = 'SELECT * FROM community_patterns WHERE privacy_safe = 1';
62
+ const args = [];
63
+ if (filters?.category) {
64
+ sql += ' AND category = ?';
65
+ args.push(filters.category);
66
+ }
67
+ if (filters?.language) {
68
+ sql += ' AND language = ?';
69
+ args.push(filters.language);
70
+ }
71
+ if (filters?.minVotes !== undefined) {
72
+ sql += ' AND votes >= ?';
73
+ args.push(filters.minVotes);
74
+ }
75
+ sql += ' ORDER BY votes DESC, success_rate DESC LIMIT ?';
76
+ args.push(filters?.limit || 20);
77
+ const rows = db.prepare(sql).all(...args);
78
+ return rows.map(mapPattern);
79
+ }
80
+ function voteCommunityPattern(patternId, upvote) {
81
+ const db = (0, database_1.getDb)();
82
+ const delta = upvote ? 1 : -1;
83
+ const result = db.prepare('UPDATE community_patterns SET votes = votes + ? WHERE pattern_id = ?').run(delta, patternId);
84
+ if (result.changes === 0)
85
+ return { success: false, newVotes: 0 };
86
+ const row = db.prepare('SELECT votes FROM community_patterns WHERE pattern_id = ?').get(patternId);
87
+ return { success: true, newVotes: row?.votes || 0 };
88
+ }
89
+ function incrementUsage(patternId) {
90
+ const db = (0, database_1.getDb)();
91
+ const result = db.prepare('UPDATE community_patterns SET usage_count = usage_count + 1 WHERE pattern_id = ?').run(patternId);
92
+ if (result.changes === 0)
93
+ return { success: false, newCount: 0 };
94
+ const row = db.prepare('SELECT usage_count FROM community_patterns WHERE pattern_id = ?').get(patternId);
95
+ return { success: true, newCount: row?.usage_count || 0 };
96
+ }
97
+ function mapPattern(r) {
98
+ return {
99
+ id: Number(r.id),
100
+ patternId: String(r.pattern_id),
101
+ anonymousId: String(r.anonymous_id),
102
+ category: String(r.category || ''),
103
+ language: String(r.language || ''),
104
+ framework: String(r.framework || ''),
105
+ rule: String(r.rule || ''),
106
+ successRate: Number(r.success_rate || 0),
107
+ usageCount: Number(r.usage_count || 0),
108
+ votes: Number(r.votes || 0),
109
+ privacySafe: r.privacy_safe === 1,
110
+ sharedAt: String(r.shared_at || ''),
111
+ };
112
+ }
113
+ // ─── Insights CRUD ────────────────────────────────────────────────────────
114
+ function addCommunityInsight(insight) {
115
+ const db = (0, database_1.getDb)();
116
+ const result = db.prepare(`
117
+ INSERT INTO community_insights (insight_type, title, description, category, language, severity, evidence)
118
+ VALUES (?, ?, ?, ?, ?, ?, ?)
119
+ `).run(insight.type, insight.title, insight.description || '', insight.category || '', insight.language || '', insight.severity, insight.evidence || '');
120
+ return { id: Number(result.lastInsertRowid) };
121
+ }
122
+ function getCommunityInsights(filters) {
123
+ const db = (0, database_1.getDb)();
124
+ let sql = 'SELECT * FROM community_insights WHERE 1=1';
125
+ const args = [];
126
+ if (filters?.severity) {
127
+ sql += ' AND severity = ?';
128
+ args.push(filters.severity);
129
+ }
130
+ if (filters?.category) {
131
+ sql += ' AND category = ?';
132
+ args.push(filters.category);
133
+ }
134
+ sql += ' ORDER BY created_at DESC LIMIT ?';
135
+ args.push(filters?.limit || 20);
136
+ const rows = db.prepare(sql).all(...args);
137
+ return rows.map((r) => ({
138
+ id: Number(r.id),
139
+ type: String(r.insight_type || ''),
140
+ title: String(r.title || ''),
141
+ description: String(r.description || ''),
142
+ category: String(r.category || ''),
143
+ language: String(r.language || ''),
144
+ severity: String(r.severity || 'info'),
145
+ evidence: String(r.evidence || ''),
146
+ createdAt: String(r.created_at || ''),
147
+ }));
148
+ }
149
+ // ─── Benchmarks CRUD ─────────────────────────────────────────────────────
150
+ function addBenchmark(params) {
151
+ const db = (0, database_1.getDb)();
152
+ const delta = params.userValue !== undefined ? params.userValue - params.value : 0;
153
+ const result = db.prepare(`
154
+ INSERT INTO community_benchmarks (metric, value, user_value, delta, category)
155
+ VALUES (?, ?, ?, ?, ?)
156
+ `).run(params.metric, params.value, params.userValue ?? null, delta, params.category || '');
157
+ return { id: Number(result.lastInsertRowid), delta };
158
+ }
159
+ function getBenchmarks(filters) {
160
+ const db = (0, database_1.getDb)();
161
+ let sql = 'SELECT * FROM community_benchmarks WHERE 1=1';
162
+ const args = [];
163
+ if (filters?.category) {
164
+ sql += ' AND category = ?';
165
+ args.push(filters.category);
166
+ }
167
+ sql += ' ORDER BY created_at DESC LIMIT ?';
168
+ args.push(filters?.limit || 50);
169
+ const rows = db.prepare(sql).all(...args);
170
+ return rows.map((r) => ({
171
+ id: Number(r.id),
172
+ metric: String(r.metric || ''),
173
+ value: Number(r.value || 0),
174
+ userValue: Number(r.user_value || 0),
175
+ delta: Number(r.delta || 0),
176
+ category: String(r.category || ''),
177
+ createdAt: String(r.created_at || ''),
178
+ }));
179
+ }
180
+ // ─── Aggregated stats ─────────────────────────────────────────────────────
181
+ function getCommunityStats() {
182
+ const db = (0, database_1.getDb)();
183
+ const totalPatterns = db.prepare('SELECT COUNT(*) as c FROM community_patterns').get().c;
184
+ const totalInsights = db.prepare('SELECT COUNT(*) as c FROM community_insights').get().c;
185
+ const totalBenchmarks = db.prepare('SELECT COUNT(*) as c FROM community_benchmarks').get().c;
186
+ const totalVotes = db.prepare('SELECT COALESCE(SUM(votes), 0) as s FROM community_patterns').get().s;
187
+ const byCategoryRows = db.prepare('SELECT category, COUNT(*) as c FROM community_patterns GROUP BY category').all();
188
+ const byLanguageRows = db.prepare("SELECT language, COUNT(*) as c FROM community_patterns WHERE language != '' GROUP BY language").all();
189
+ const topPatterns = db.prepare('SELECT * FROM community_patterns ORDER BY votes DESC LIMIT 5').all().map(mapPattern);
190
+ const topInsights = getCommunityInsights({ severity: 'critical', limit: 5 });
191
+ // Recent activity
192
+ const recentPatterns = db.prepare('SELECT COUNT(*) as c, MAX(shared_at) as last FROM community_patterns').get();
193
+ const recentInsights = db.prepare('SELECT COUNT(*) as c, MAX(created_at) as last FROM community_insights').get();
194
+ return {
195
+ totalPatterns,
196
+ totalInsights,
197
+ totalBenchmarks,
198
+ totalVotes,
199
+ byCategory: Object.fromEntries(byCategoryRows.map(r => [r.category, r.c])),
200
+ byLanguage: Object.fromEntries(byLanguageRows.map(r => [r.language, r.c])),
201
+ topPatterns,
202
+ topInsights,
203
+ recentActivity: [
204
+ { type: 'patterns', count: recentPatterns.c, lastAt: recentPatterns.last || '' },
205
+ { type: 'insights', count: recentInsights.c, lastAt: recentInsights.last || '' },
206
+ ],
207
+ };
208
+ }
209
+ // ─── Tech evolution tracking (5.5) ───────────────────────────────────────
210
+ function getTechEvolution() {
211
+ const db = (0, database_1.getDb)();
212
+ // Look at tech_proficiency + community_signals to derive adoption phases
213
+ const proficiency = db.prepare(`
214
+ SELECT technology, signals_count, proficiency_score, last_seen
215
+ FROM tech_proficiency
216
+ ORDER BY proficiency_score DESC
217
+ `).all();
218
+ return proficiency.map((p) => {
219
+ const signals = p.signals_count;
220
+ const score = p.proficiency_score;
221
+ let phase = 'mature';
222
+ let trend30d = 0;
223
+ let trend90d = 0;
224
+ if (signals < 5)
225
+ phase = 'emerging';
226
+ else if (signals < 20)
227
+ phase = 'growing';
228
+ else if (score > 70)
229
+ phase = 'mature';
230
+ // Simple heuristic: more signals = upward trend; fewer = downward
231
+ if (signals > 100)
232
+ trend30d = 15;
233
+ else if (signals > 50)
234
+ trend30d = 8;
235
+ else if (signals > 20)
236
+ trend30d = 3;
237
+ else if (signals < 5)
238
+ trend30d = -2;
239
+ trend90d = trend30d * 2;
240
+ return {
241
+ technology: p.technology,
242
+ currentUsage: signals,
243
+ trend30d,
244
+ trend90d,
245
+ adoptionPhase: phase,
246
+ relatedMigrations: getMigrationsFor(p.technology),
247
+ };
248
+ });
249
+ }
250
+ function getMigrationsFor(tech) {
251
+ const db = (0, database_1.getDb)();
252
+ const rows = db.prepare(`
253
+ SELECT DISTINCT technology FROM tech_proficiency
254
+ WHERE technology != ? AND category = (SELECT category FROM tech_proficiency WHERE technology = ? LIMIT 1)
255
+ LIMIT 3
256
+ `).all(tech, tech);
257
+ return rows.map(r => r.technology);
258
+ }
259
+ // ─── Failure pattern library (5.3) ───────────────────────────────────────
260
+ function getFailurePatterns(filters) {
261
+ const db = (0, database_1.getDb)();
262
+ // Mine error_log + community_insights for failure patterns
263
+ let errorSql = 'SELECT error_type, COUNT(*) as freq FROM error_log';
264
+ const args = [];
265
+ if (filters?.language) {
266
+ errorSql += ' WHERE project = ?';
267
+ args.push(filters.language);
268
+ }
269
+ errorSql += ' GROUP BY error_type ORDER BY freq DESC LIMIT ?';
270
+ args.push(filters?.limit || 10);
271
+ const errors = db.prepare(errorSql).all(...args);
272
+ return errors.map(e => {
273
+ const severity = e.freq > 5 ? 'critical' : e.freq > 2 ? 'warning' : 'info';
274
+ return {
275
+ category: String(e.error_type || 'unknown'),
276
+ language: filters?.language || '',
277
+ description: `${e.error_type} occurred ${e.freq} times in the community`,
278
+ frequency: e.freq,
279
+ severity,
280
+ mitigation: getMitigationFor(String(e.error_type)),
281
+ };
282
+ });
283
+ }
284
+ function getMitigationFor(errorType) {
285
+ const m = {
286
+ 'null_check': 'Always validate inputs at function entry; use optional chaining or guards',
287
+ 'validation': 'Add Zod/Joi/Yup schemas for all user-facing APIs',
288
+ 'n_plus_1': 'Use batch queries or eager loading; check with EXPLAIN',
289
+ 'async_error': 'Wrap awaits in try/catch; never swallow promise rejections',
290
+ 'sql_injection': 'Use parameterized queries exclusively; never concat user input',
291
+ 'race_condition': 'Use mutexes/locks; serialize critical sections',
292
+ 'memory_leak': 'Profile with heap snapshots; clear event listeners',
293
+ };
294
+ return m[errorType] || `Review top Stack Overflow answers for "${errorType}"`;
295
+ }
296
+ function validatePrivacy(rule) {
297
+ const errors = [];
298
+ const warnings = [];
299
+ const sanitized = sanitizeRule(rule);
300
+ // Check for code-looking content
301
+ if (/\bfunction\s+\w+\s*\(/.test(rule)) {
302
+ warnings.push('Contains function definitions — will be abstracted');
303
+ }
304
+ if (/\b(import|export)\s+/.test(rule)) {
305
+ warnings.push('Contains import/export — will be removed');
306
+ }
307
+ if (/\b(const|let|var)\s+\w+\s*=/.test(rule)) {
308
+ warnings.push('Contains variable declarations — will be removed');
309
+ }
310
+ if (/\b[A-Z][a-z]+ [A-Z][a-z]+/.test(rule)) {
311
+ warnings.push('Possible name detected — will be anonymized');
312
+ }
313
+ if (/@[\w.]+/.test(rule)) {
314
+ errors.push('Contains email-like pattern — BLOCKED');
315
+ }
316
+ if (/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/.test(rule)) {
317
+ errors.push('Contains IP address — BLOCKED');
318
+ }
319
+ return {
320
+ safe: errors.length === 0,
321
+ errors,
322
+ warnings,
323
+ sanitized,
324
+ };
325
+ }
326
+ function createAnonymousId() {
327
+ return anonymousHash(`user-${Date.now()}-${Math.random()}`);
328
+ }
329
+ //# sourceMappingURL=community-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community-store.js","sourceRoot":"","sources":["../../src/core/community-store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
1
  import Database from 'better-sqlite3';
2
- export declare function getStore(): {
3
- dbPath: string;
4
- };
5
2
  export declare function getDb(): Database.Database;
6
3
  export declare function closeDb(): void;
7
4
  export declare function initializeDatabase(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAOtC,wBAAgB,QAAQ,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAG7C;AAED,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAQzC;AAED,wBAAgB,OAAO,IAAI,IAAI,CAM9B;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CA6QzC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAQvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiB1D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAmPpD;AAaD,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1D"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAWtC,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAkCzC;AAED,wBAAgB,OAAO,IAAI,IAAI,CAM9B;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CA+fzC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAUvC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiB1D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAmPpD;AAaD,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1D"}