cmp-standards 3.3.1 → 3.4.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 (54) hide show
  1. package/dist/cli/index.js +85 -2
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/db/migrations.d.ts +1 -1
  4. package/dist/db/migrations.d.ts.map +1 -1
  5. package/dist/db/migrations.js +80 -0
  6. package/dist/db/migrations.js.map +1 -1
  7. package/dist/hooks/cloud-post-tool-use.d.ts +2 -1
  8. package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -1
  9. package/dist/hooks/cloud-post-tool-use.js +15 -1
  10. package/dist/hooks/cloud-post-tool-use.js.map +1 -1
  11. package/dist/hooks/cloud-session-start.d.ts.map +1 -1
  12. package/dist/hooks/cloud-session-start.js +5 -1
  13. package/dist/hooks/cloud-session-start.js.map +1 -1
  14. package/dist/hooks/expert-review.d.ts +2 -1
  15. package/dist/hooks/expert-review.d.ts.map +1 -1
  16. package/dist/hooks/expert-review.js +61 -4
  17. package/dist/hooks/expert-review.js.map +1 -1
  18. package/dist/index.d.ts +6 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +9 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/patterns/feedback-loop.d.ts +4 -4
  23. package/dist/patterns/registry.d.ts +3 -3
  24. package/dist/schema/codewiki-types.d.ts +66 -66
  25. package/dist/schema/docs-types.d.ts +1253 -0
  26. package/dist/schema/docs-types.d.ts.map +1 -0
  27. package/dist/schema/docs-types.js +476 -0
  28. package/dist/schema/docs-types.js.map +1 -0
  29. package/dist/schema/expert-types.d.ts +2 -2
  30. package/dist/schema/opportunity-types.d.ts +67 -23
  31. package/dist/schema/opportunity-types.d.ts.map +1 -1
  32. package/dist/schema/opportunity-types.js +16 -0
  33. package/dist/schema/opportunity-types.js.map +1 -1
  34. package/dist/services/CodeWikiIndexer.d.ts +25 -3
  35. package/dist/services/CodeWikiIndexer.d.ts.map +1 -1
  36. package/dist/services/CodeWikiIndexer.js +185 -21
  37. package/dist/services/CodeWikiIndexer.js.map +1 -1
  38. package/dist/services/DocsGenerator.d.ts +78 -0
  39. package/dist/services/DocsGenerator.d.ts.map +1 -0
  40. package/dist/services/DocsGenerator.js +571 -0
  41. package/dist/services/DocsGenerator.js.map +1 -0
  42. package/dist/services/OpportunityDiscovery.d.ts +1 -0
  43. package/dist/services/OpportunityDiscovery.d.ts.map +1 -1
  44. package/dist/services/OpportunityDiscovery.js +35 -6
  45. package/dist/services/OpportunityDiscovery.js.map +1 -1
  46. package/dist/services/WikiSyncService.d.ts +110 -0
  47. package/dist/services/WikiSyncService.d.ts.map +1 -0
  48. package/dist/services/WikiSyncService.js +278 -0
  49. package/dist/services/WikiSyncService.js.map +1 -0
  50. package/dist/types/index.d.ts +1 -0
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/dist/types/index.js +1 -0
  53. package/dist/types/index.js.map +1 -1
  54. package/package.json +1 -1
@@ -0,0 +1,571 @@
1
+ /**
2
+ * @file DocsGenerator Service - cmp-standards v3.4
3
+ * @description Automated project documentation generator from CodeWiki data
4
+ *
5
+ * Features:
6
+ * - Aggregates stats from indexed files (file_metadata, code_structure)
7
+ * - Auto-detects features from code patterns
8
+ * - Generates architecture diagrams (Mermaid)
9
+ * - Creates simple explanations for beginners
10
+ * - Stores documentation as project_doc items in Turso
11
+ *
12
+ * Integration:
13
+ * - Consumes data from CodeWikiIndexer
14
+ * - Can be triggered by WikiSyncService after indexing
15
+ * - Provides data for web UI pages
16
+ */
17
+ import { turso, getTurso, create } from '../db/turso-client.js';
18
+ import { getLogger } from '../utils/logger.js';
19
+ import { createProjectDoc, createEmptyStats, createEmptyArchitecture, DEFAULT_FEATURE_PATTERNS, PROJECT_CONFIGS, } from '../schema/docs-types.js';
20
+ const logger = getLogger();
21
+ // =============================================================================
22
+ // DocsGenerator Service
23
+ // =============================================================================
24
+ export class DocsGenerator {
25
+ system;
26
+ featurePatterns;
27
+ generateSimpleExplanation;
28
+ constructor(options) {
29
+ this.system = options.system;
30
+ this.featurePatterns = options.featurePatterns ?? DEFAULT_FEATURE_PATTERNS;
31
+ this.generateSimpleExplanation = options.generateSimpleExplanation ?? true;
32
+ }
33
+ /**
34
+ * Generate full project documentation
35
+ */
36
+ async generate() {
37
+ const errors = [];
38
+ const config = PROJECT_CONFIGS[this.system];
39
+ if (!config) {
40
+ errors.push(`No configuration found for system: ${this.system}`);
41
+ return {
42
+ doc: createProjectDoc(this.system, this.system),
43
+ stored: false,
44
+ errors,
45
+ };
46
+ }
47
+ logger.info(`[DocsGenerator] Generating docs for ${config.name}`);
48
+ try {
49
+ // Fetch CodeWiki data
50
+ const fileMetadata = await this.getFileMetadata();
51
+ const codeStructures = await this.getCodeStructures();
52
+ const codeDependencies = await this.getCodeDependencies();
53
+ logger.info(`[DocsGenerator] Found ${fileMetadata.length} files, ${codeStructures.length} structures, ${codeDependencies.length} dependencies`);
54
+ // Aggregate stats
55
+ const stats = this.aggregateStats(fileMetadata, codeStructures, codeDependencies);
56
+ // Detect features
57
+ const features = this.detectFeatures(fileMetadata, codeStructures, codeDependencies);
58
+ // Detect architecture
59
+ const architecture = this.detectArchitecture(fileMetadata, codeStructures, codeDependencies);
60
+ // Try to read package.json
61
+ const packageInfo = await this.getPackageInfo(config.packageJsonPath);
62
+ // Create doc
63
+ const doc = createProjectDoc(this.system, config.name, {
64
+ slug: config.slug,
65
+ version: packageInfo?.version ?? '0.0.0',
66
+ description: config.description,
67
+ status: config.status,
68
+ category: config.category,
69
+ stats,
70
+ features,
71
+ architecture,
72
+ packageInfo,
73
+ links: config.links,
74
+ simpleExplanation: config.simpleExplanation,
75
+ sourceFileCount: fileMetadata.length,
76
+ });
77
+ // Store in database
78
+ let stored = false;
79
+ try {
80
+ await this.storeDoc(doc);
81
+ stored = true;
82
+ logger.info(`[DocsGenerator] Stored docs for ${config.name}`);
83
+ }
84
+ catch (storeError) {
85
+ const msg = storeError instanceof Error ? storeError.message : String(storeError);
86
+ errors.push(`Failed to store doc: ${msg}`);
87
+ logger.error(`[DocsGenerator] Store error: ${msg}`);
88
+ }
89
+ return { doc, stored, errors };
90
+ }
91
+ catch (error) {
92
+ const msg = error instanceof Error ? error.message : String(error);
93
+ errors.push(`Generation failed: ${msg}`);
94
+ logger.error(`[DocsGenerator] Generate error: ${msg}`);
95
+ return {
96
+ doc: createProjectDoc(this.system, config.name),
97
+ stored: false,
98
+ errors,
99
+ };
100
+ }
101
+ }
102
+ /**
103
+ * Get stored project documentation
104
+ */
105
+ async getStoredDoc() {
106
+ try {
107
+ getTurso();
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ try {
113
+ const items = await turso.query({
114
+ system: this.system,
115
+ type: 'project_doc',
116
+ limit: 1,
117
+ orderBy: 'updated_at',
118
+ orderDir: 'DESC',
119
+ });
120
+ if (items.length === 0)
121
+ return null;
122
+ // turso.query returns items with content property parsed
123
+ const item = items[0];
124
+ return item.content;
125
+ }
126
+ catch (error) {
127
+ logger.error(`[DocsGenerator] Failed to get stored doc: ${error}`);
128
+ return null;
129
+ }
130
+ }
131
+ /**
132
+ * Check if docs need regeneration
133
+ */
134
+ async needsRegeneration() {
135
+ const storedDoc = await this.getStoredDoc();
136
+ if (!storedDoc)
137
+ return true;
138
+ // Get latest indexed file
139
+ try {
140
+ const items = await turso.query({
141
+ system: this.system,
142
+ type: 'file_metadata',
143
+ limit: 1,
144
+ orderBy: 'updated_at',
145
+ orderDir: 'DESC',
146
+ });
147
+ if (items.length === 0)
148
+ return false;
149
+ const item = items[0];
150
+ const lastIndexed = new Date(item.content.lastIndexedAt);
151
+ const lastGenerated = new Date(storedDoc.lastUpdatedAt);
152
+ return lastIndexed > lastGenerated;
153
+ }
154
+ catch {
155
+ return true;
156
+ }
157
+ }
158
+ /**
159
+ * Regenerate docs if needed
160
+ */
161
+ async regenerateIfNeeded() {
162
+ const needs = await this.needsRegeneration();
163
+ if (!needs) {
164
+ logger.debug(`[DocsGenerator] Docs are up to date for ${this.system}`);
165
+ return null;
166
+ }
167
+ return this.generate();
168
+ }
169
+ // ===========================================================================
170
+ // Data Fetching
171
+ // ===========================================================================
172
+ async getFileMetadata() {
173
+ try {
174
+ getTurso();
175
+ }
176
+ catch {
177
+ return [];
178
+ }
179
+ try {
180
+ const items = await turso.query({
181
+ system: this.system,
182
+ type: 'file_metadata',
183
+ limit: 1000,
184
+ });
185
+ return items.map(i => i.content);
186
+ }
187
+ catch {
188
+ return [];
189
+ }
190
+ }
191
+ async getCodeStructures() {
192
+ try {
193
+ getTurso();
194
+ }
195
+ catch {
196
+ return [];
197
+ }
198
+ try {
199
+ const items = await turso.query({
200
+ system: this.system,
201
+ type: 'code_structure',
202
+ limit: 1000,
203
+ });
204
+ return items.map(i => i.content);
205
+ }
206
+ catch {
207
+ return [];
208
+ }
209
+ }
210
+ async getCodeDependencies() {
211
+ try {
212
+ getTurso();
213
+ }
214
+ catch {
215
+ return [];
216
+ }
217
+ try {
218
+ const items = await turso.query({
219
+ system: this.system,
220
+ type: 'code_dependency',
221
+ limit: 5000,
222
+ });
223
+ return items.map(i => i.content);
224
+ }
225
+ catch {
226
+ return [];
227
+ }
228
+ }
229
+ async getPackageInfo(packagePath) {
230
+ if (!packagePath)
231
+ return undefined;
232
+ try {
233
+ const { readFileSync, existsSync } = await import('fs');
234
+ const { resolve } = await import('path');
235
+ const fullPath = resolve(process.cwd(), packagePath);
236
+ if (!existsSync(fullPath))
237
+ return undefined;
238
+ const content = readFileSync(fullPath, 'utf-8');
239
+ const pkg = JSON.parse(content);
240
+ return {
241
+ version: pkg.version ?? '0.0.0',
242
+ dependencies: pkg.dependencies ?? {},
243
+ devDependencies: pkg.devDependencies,
244
+ scripts: pkg.scripts,
245
+ };
246
+ }
247
+ catch {
248
+ return undefined;
249
+ }
250
+ }
251
+ // ===========================================================================
252
+ // Stats Aggregation
253
+ // ===========================================================================
254
+ aggregateStats(metadata, structures, dependencies) {
255
+ const stats = createEmptyStats();
256
+ // Count files and LOC
257
+ stats.totalFiles = metadata.length;
258
+ stats.totalLOC = metadata.reduce((sum, f) => sum + f.loc, 0);
259
+ // Languages
260
+ for (const file of metadata) {
261
+ const lang = file.language;
262
+ stats.languages[lang] = (stats.languages[lang] ?? 0) + file.loc;
263
+ }
264
+ // Frameworks and symbols
265
+ const frameworkSet = new Set();
266
+ for (const struct of structures) {
267
+ if (struct.framework)
268
+ frameworkSet.add(struct.framework);
269
+ stats.totalSymbols += struct.symbols.length;
270
+ if (struct.isComponent)
271
+ stats.components++;
272
+ if (struct.isTest)
273
+ stats.tests++;
274
+ }
275
+ stats.frameworks = Array.from(frameworkSet);
276
+ // Dependencies
277
+ const packageCounts = new Map();
278
+ for (const dep of dependencies) {
279
+ if (dep.isExternal) {
280
+ stats.dependencies.external++;
281
+ if (dep.packageName) {
282
+ packageCounts.set(dep.packageName, (packageCounts.get(dep.packageName) ?? 0) + 1);
283
+ }
284
+ }
285
+ else {
286
+ stats.dependencies.internal++;
287
+ }
288
+ }
289
+ // Top packages
290
+ stats.topPackages = Array.from(packageCounts.entries())
291
+ .sort((a, b) => b[1] - a[1])
292
+ .slice(0, 10)
293
+ .map(([name, usageCount]) => ({ name, usageCount }));
294
+ return stats;
295
+ }
296
+ // ===========================================================================
297
+ // Feature Detection
298
+ // ===========================================================================
299
+ detectFeatures(metadata, structures, dependencies) {
300
+ const features = [];
301
+ const detectedIds = new Set();
302
+ for (const pattern of this.featurePatterns) {
303
+ const matchingFiles = [];
304
+ // Check file patterns
305
+ if (pattern.filePatterns) {
306
+ for (const file of metadata) {
307
+ if (this.matchesGlobPattern(file.relativePath, pattern.filePatterns)) {
308
+ matchingFiles.push(file.relativePath);
309
+ }
310
+ }
311
+ }
312
+ // Check import patterns
313
+ if (pattern.importPatterns) {
314
+ for (const dep of dependencies) {
315
+ if (dep.isExternal && dep.packageName) {
316
+ for (const importPattern of pattern.importPatterns) {
317
+ if (dep.packageName.includes(importPattern) || dep.targetFile.includes(importPattern)) {
318
+ if (!matchingFiles.includes(dep.sourceFile)) {
319
+ matchingFiles.push(dep.sourceFile);
320
+ }
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+ // Check code patterns (in file paths/names as simple heuristic)
327
+ if (pattern.codePatterns) {
328
+ for (const struct of structures) {
329
+ for (const codePattern of pattern.codePatterns) {
330
+ const regex = new RegExp(codePattern, 'i');
331
+ // Check exports and symbols
332
+ const hasMatch = struct.symbols.some(s => regex.test(s.name)) ||
333
+ struct.exports.some(e => regex.test(e.name));
334
+ if (hasMatch && !matchingFiles.includes(struct.filePath)) {
335
+ matchingFiles.push(struct.filePath);
336
+ }
337
+ }
338
+ }
339
+ }
340
+ const minOccurrences = pattern.minOccurrences ?? 1;
341
+ if (matchingFiles.length >= minOccurrences && !detectedIds.has(pattern.id)) {
342
+ detectedIds.add(pattern.id);
343
+ features.push({
344
+ id: pattern.id,
345
+ name: pattern.name,
346
+ description: pattern.description,
347
+ category: pattern.category,
348
+ icon: pattern.icon,
349
+ detectedFrom: matchingFiles[0],
350
+ files: matchingFiles.slice(0, 10),
351
+ confidence: Math.min(matchingFiles.length / 5, 1),
352
+ });
353
+ }
354
+ }
355
+ // Sort by confidence
356
+ return features.sort((a, b) => b.confidence - a.confidence);
357
+ }
358
+ matchesGlobPattern(filePath, patterns) {
359
+ const normalizedPath = filePath.replace(/\\/g, '/');
360
+ for (const pattern of patterns) {
361
+ // Simple glob matching (supports ** and *)
362
+ const regexPattern = pattern
363
+ .replace(/\*\*/g, '{{DOUBLESTAR}}')
364
+ .replace(/\*/g, '[^/]*')
365
+ .replace(/{{DOUBLESTAR}}/g, '.*')
366
+ .replace(/\//g, '[\\\\/]');
367
+ const regex = new RegExp(`^${regexPattern}$`, 'i');
368
+ if (regex.test(normalizedPath)) {
369
+ return true;
370
+ }
371
+ }
372
+ return false;
373
+ }
374
+ // ===========================================================================
375
+ // Architecture Detection
376
+ // ===========================================================================
377
+ detectArchitecture(metadata, structures, dependencies) {
378
+ const architecture = createEmptyArchitecture();
379
+ // Detect layers from directory structure
380
+ const layerPatterns = [
381
+ // Claude Code / Backend
382
+ { name: 'Hooks', description: 'Claude Code integration hooks', pattern: /hooks?\//i },
383
+ { name: 'Services', description: 'Business logic services', pattern: /services?\//i },
384
+ { name: 'Database', description: 'Database layer', pattern: /db\//i },
385
+ { name: 'Schema', description: 'Type definitions and schemas', pattern: /schema\//i },
386
+ { name: 'CLI', description: 'Command-line interface', pattern: /cli\//i },
387
+ { name: 'MCP', description: 'Model Context Protocol', pattern: /mcp\//i },
388
+ { name: 'Utils', description: 'Utility functions', pattern: /utils?\//i },
389
+ // Next.js / Frontend
390
+ { name: 'Components', description: 'UI Components', pattern: /components?\//i },
391
+ { name: 'API Routes', description: 'API routes', pattern: /app\/api\//i },
392
+ { name: 'Pages', description: 'Page components', pattern: /app\/(?!api)/i },
393
+ { name: 'Server', description: 'Server-side code', pattern: /server\//i },
394
+ { name: 'tRPC', description: 'tRPC routers and procedures', pattern: /trpc\//i },
395
+ { name: 'Lib', description: 'Library and utility code', pattern: /lib\//i },
396
+ { name: 'Actions', description: 'Server actions', pattern: /actions?\//i },
397
+ { name: 'Providers', description: 'Context providers', pattern: /providers?\//i },
398
+ { name: 'Stores', description: 'State management', pattern: /stores?\//i },
399
+ { name: 'Types', description: 'Type definitions', pattern: /types?\//i },
400
+ ];
401
+ const layerMap = new Map();
402
+ for (const file of metadata) {
403
+ for (const lp of layerPatterns) {
404
+ if (lp.pattern.test(file.relativePath)) {
405
+ if (!layerMap.has(lp.name)) {
406
+ layerMap.set(lp.name, {
407
+ name: lp.name,
408
+ description: lp.description,
409
+ path: file.relativePath.split(/[/\\]/).slice(0, -1).join('/'),
410
+ fileCount: 0,
411
+ keyFiles: [],
412
+ });
413
+ }
414
+ const layer = layerMap.get(lp.name);
415
+ layer.fileCount++;
416
+ if (layer.keyFiles.length < 5) {
417
+ layer.keyFiles.push(file.relativePath);
418
+ }
419
+ break;
420
+ }
421
+ }
422
+ }
423
+ architecture.layers = Array.from(layerMap.values()).sort((a, b) => b.fileCount - a.fileCount);
424
+ // Detect entry points (files with most exports or index files)
425
+ const exportCounts = new Map();
426
+ for (const struct of structures) {
427
+ const exportCount = struct.exports.length;
428
+ if (exportCount > 0) {
429
+ exportCounts.set(struct.filePath, exportCount);
430
+ }
431
+ }
432
+ // Index files and high-export files are entry points
433
+ const entryPointCandidates = metadata
434
+ .filter(f => f.fileName === 'index.ts' ||
435
+ f.fileName === 'index.tsx' ||
436
+ f.fileName === 'index.js' ||
437
+ (exportCounts.get(f.relativePath) ?? 0) > 5)
438
+ .map(f => f.relativePath)
439
+ .slice(0, 10);
440
+ architecture.entryPoints = entryPointCandidates;
441
+ // Generate Mermaid diagram
442
+ architecture.diagram = this.generateMermaidDiagram(architecture.layers, dependencies);
443
+ // Generate simple diagram
444
+ architecture.simpleDiagram = this.generateSimpleDiagram(architecture.layers);
445
+ return architecture;
446
+ }
447
+ generateMermaidDiagram(layers, dependencies) {
448
+ const lines = ['graph TD'];
449
+ // Add subgraphs for each layer
450
+ for (const layer of layers.slice(0, 6)) {
451
+ const safeId = layer.name.replace(/\s+/g, '_');
452
+ lines.push(` subgraph ${safeId}["${layer.name}"]`);
453
+ // Add key files as nodes
454
+ for (let i = 0; i < Math.min(layer.keyFiles.length, 3); i++) {
455
+ const file = layer.keyFiles[i];
456
+ const fileName = file.split(/[/\\]/).pop()?.replace(/\.[^.]+$/, '') ?? 'unknown';
457
+ const nodeId = `${safeId}_${i}`;
458
+ lines.push(` ${nodeId}["${fileName}"]`);
459
+ }
460
+ lines.push(' end');
461
+ }
462
+ // Add some inter-layer connections based on common patterns
463
+ const layerNames = layers.map(l => l.name.replace(/\s+/g, '_'));
464
+ if (layerNames.includes('Hooks') && layerNames.includes('Services')) {
465
+ lines.push(' Hooks --> Services');
466
+ }
467
+ if (layerNames.includes('Services') && layerNames.includes('Database')) {
468
+ lines.push(' Services --> Database');
469
+ }
470
+ if (layerNames.includes('CLI') && layerNames.includes('Services')) {
471
+ lines.push(' CLI --> Services');
472
+ }
473
+ if (layerNames.includes('API') && layerNames.includes('Services')) {
474
+ lines.push(' API --> Services');
475
+ }
476
+ if (layerNames.includes('Components') && layerNames.includes('Lib')) {
477
+ lines.push(' Components --> Lib');
478
+ }
479
+ return lines.join('\n');
480
+ }
481
+ generateSimpleDiagram(layers) {
482
+ const lines = ['graph LR'];
483
+ const simplifiedLayers = layers.slice(0, 4);
484
+ for (let i = 0; i < simplifiedLayers.length; i++) {
485
+ const layer = simplifiedLayers[i];
486
+ const safeId = layer.name.replace(/\s+/g, '_');
487
+ const icon = this.getLayerIcon(layer.name);
488
+ lines.push(` ${safeId}["${icon} ${layer.name}"]`);
489
+ if (i < simplifiedLayers.length - 1) {
490
+ const nextId = simplifiedLayers[i + 1].name.replace(/\s+/g, '_');
491
+ lines.push(` ${safeId} --> ${nextId}`);
492
+ }
493
+ }
494
+ return lines.join('\n');
495
+ }
496
+ getLayerIcon(layerName) {
497
+ const icons = {
498
+ Hooks: '🪝',
499
+ Services: '⚙️',
500
+ Database: '🗄️',
501
+ Schema: '📋',
502
+ CLI: '💻',
503
+ MCP: '🔌',
504
+ Utils: '🔧',
505
+ Components: '🧩',
506
+ API: '🌐',
507
+ Lib: '📚',
508
+ };
509
+ return icons[layerName] ?? '📁';
510
+ }
511
+ // ===========================================================================
512
+ // Storage
513
+ // ===========================================================================
514
+ async storeDoc(doc) {
515
+ getTurso();
516
+ // Delete existing doc for this project
517
+ try {
518
+ const existing = await turso.query({
519
+ system: this.system,
520
+ type: 'project_doc',
521
+ limit: 10,
522
+ });
523
+ if (existing.length > 0) {
524
+ // Update existing
525
+ const db = getTurso();
526
+ const existingItem = existing[0];
527
+ await db.execute({
528
+ sql: `UPDATE items SET content = ?, updated_at = ? WHERE id = ?`,
529
+ args: [JSON.stringify(doc), new Date().toISOString(), existingItem.id],
530
+ });
531
+ logger.info(`[DocsGenerator] Updated existing doc ${existingItem.id}`);
532
+ return;
533
+ }
534
+ }
535
+ catch (queryErr) {
536
+ logger.warn(`[DocsGenerator] Query for existing doc failed: ${queryErr}`);
537
+ // Continue to create new
538
+ }
539
+ // Create new doc with 'pending' status (safer for constraints)
540
+ try {
541
+ const id = await create('project_doc', this.system, doc, 'pending');
542
+ logger.info(`[DocsGenerator] Created new doc ${id}`);
543
+ }
544
+ catch (createErr) {
545
+ const errMsg = createErr instanceof Error ? createErr.message : String(createErr);
546
+ logger.error(`[DocsGenerator] Create failed: ${errMsg}`);
547
+ throw createErr;
548
+ }
549
+ }
550
+ }
551
+ // =============================================================================
552
+ // Singleton Management
553
+ // =============================================================================
554
+ const instances = new Map();
555
+ /**
556
+ * Get DocsGenerator instance for a system
557
+ */
558
+ export function getDocsGenerator(system) {
559
+ if (!instances.has(system)) {
560
+ instances.set(system, new DocsGenerator({ system }));
561
+ }
562
+ return instances.get(system);
563
+ }
564
+ /**
565
+ * Create new DocsGenerator
566
+ */
567
+ export function createDocsGenerator(options) {
568
+ return new DocsGenerator(options);
569
+ }
570
+ export default DocsGenerator;
571
+ //# sourceMappingURL=DocsGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsGenerator.js","sourceRoot":"","sources":["../../src/services/DocsGenerator.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,7 @@ export declare class OpportunityDiscovery {
50
50
  private calculateSummary;
51
51
  /**
52
52
  * Store opportunities in Turso database
53
+ * Returns storage statistics including success/failure counts
53
54
  */
54
55
  private storeOpportunities;
55
56
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"OpportunityDiscovery.d.ts","sourceRoot":"","sources":["../../src/services/OpportunityDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAIxB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAEhC,MAAM,gCAAgC,CAAA;AA8VvC,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAW;gBAEb,MAAM,EAAE,SAAS;IAI7B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAgElG;;OAEG;YACW,YAAY;IAyB1B;;OAEG;YACW,aAAa;IAkC3B;;OAEG;YACW,WAAW;IAmEzB;;OAEG;YACW,eAAe;IA4D7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAgBhC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;YACW,kBAAkB;IAchC;;OAEG;IACG,SAAS,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAa3D;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAc9F;;OAEG;IACG,YAAY,CAChB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAC1E,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA6CnE;;OAEG;IACH,OAAO,CAAC,cAAc;CAevB;AAQD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAK/E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAElF"}
1
+ {"version":3,"file":"OpportunityDiscovery.d.ts","sourceRoot":"","sources":["../../src/services/OpportunityDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAIxB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAGhC,MAAM,gCAAgC,CAAA;AA+VvC,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAW;gBAEb,MAAM,EAAE,SAAS;IAI7B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAiElG;;OAEG;YACW,YAAY;IAyB1B;;OAEG;YACW,aAAa;IAkC3B;;OAEG;YACW,WAAW;IAmEzB;;OAEG;YACW,eAAe;IA4D7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAgBhC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;;OAGG;YACW,kBAAkB;IAyChC;;OAEG;IACG,SAAS,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAa3D;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAc9F;;OAEG;IACG,YAAY,CAChB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAC1E,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA6CnE;;OAEG;IACH,OAAO,CAAC,cAAc;CAevB;AAQD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAK/E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAElF"}