@dinyangetoh/codeplug-cli 0.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 (229) hide show
  1. package/README.md +291 -0
  2. package/dist/cli/commands/config.d.ts +4 -0
  3. package/dist/cli/commands/config.d.ts.map +1 -0
  4. package/dist/cli/commands/config.js +35 -0
  5. package/dist/cli/commands/config.js.map +1 -0
  6. package/dist/cli/commands/convention.d.ts +8 -0
  7. package/dist/cli/commands/convention.d.ts.map +1 -0
  8. package/dist/cli/commands/convention.js +92 -0
  9. package/dist/cli/commands/convention.js.map +1 -0
  10. package/dist/cli/commands/conventionPrompts.d.ts +3 -0
  11. package/dist/cli/commands/conventionPrompts.d.ts.map +1 -0
  12. package/dist/cli/commands/conventionPrompts.js +46 -0
  13. package/dist/cli/commands/conventionPrompts.js.map +1 -0
  14. package/dist/cli/commands/docs.d.ts +5 -0
  15. package/dist/cli/commands/docs.d.ts.map +1 -0
  16. package/dist/cli/commands/docs.js +49 -0
  17. package/dist/cli/commands/docs.js.map +1 -0
  18. package/dist/cli/commands/export.d.ts +3 -0
  19. package/dist/cli/commands/export.d.ts.map +1 -0
  20. package/dist/cli/commands/export.js +49 -0
  21. package/dist/cli/commands/export.js.map +1 -0
  22. package/dist/cli/index.d.ts +3 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +114 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/config/ConfigManager.d.ts +15 -0
  27. package/dist/config/ConfigManager.d.ts.map +1 -0
  28. package/dist/config/ConfigManager.js +69 -0
  29. package/dist/config/ConfigManager.js.map +1 -0
  30. package/dist/config/ConventionSchema.d.ts +85 -0
  31. package/dist/config/ConventionSchema.d.ts.map +1 -0
  32. package/dist/config/ConventionSchema.js +22 -0
  33. package/dist/config/ConventionSchema.js.map +1 -0
  34. package/dist/config/defaults.d.ts +13 -0
  35. package/dist/config/defaults.d.ts.map +1 -0
  36. package/dist/config/defaults.js +28 -0
  37. package/dist/config/defaults.js.map +1 -0
  38. package/dist/config/types.d.ts +138 -0
  39. package/dist/config/types.d.ts.map +1 -0
  40. package/dist/config/types.js +2 -0
  41. package/dist/config/types.js.map +1 -0
  42. package/dist/core/analyzer/AstAnalyzer.d.ts +17 -0
  43. package/dist/core/analyzer/AstAnalyzer.d.ts.map +1 -0
  44. package/dist/core/analyzer/AstAnalyzer.js +95 -0
  45. package/dist/core/analyzer/AstAnalyzer.js.map +1 -0
  46. package/dist/core/analyzer/ConventionDetector.d.ts +6 -0
  47. package/dist/core/analyzer/ConventionDetector.d.ts.map +1 -0
  48. package/dist/core/analyzer/ConventionDetector.js +38 -0
  49. package/dist/core/analyzer/ConventionDetector.js.map +1 -0
  50. package/dist/core/analyzer/PatternAggregator.d.ts +11 -0
  51. package/dist/core/analyzer/PatternAggregator.d.ts.map +1 -0
  52. package/dist/core/analyzer/PatternAggregator.js +94 -0
  53. package/dist/core/analyzer/PatternAggregator.js.map +1 -0
  54. package/dist/core/analyzer/visitors/ComponentVisitor.d.ts +6 -0
  55. package/dist/core/analyzer/visitors/ComponentVisitor.d.ts.map +1 -0
  56. package/dist/core/analyzer/visitors/ComponentVisitor.js +80 -0
  57. package/dist/core/analyzer/visitors/ComponentVisitor.js.map +1 -0
  58. package/dist/core/analyzer/visitors/ErrorHandlingVisitor.d.ts +6 -0
  59. package/dist/core/analyzer/visitors/ErrorHandlingVisitor.d.ts.map +1 -0
  60. package/dist/core/analyzer/visitors/ErrorHandlingVisitor.js +48 -0
  61. package/dist/core/analyzer/visitors/ErrorHandlingVisitor.js.map +1 -0
  62. package/dist/core/analyzer/visitors/ImportVisitor.d.ts +6 -0
  63. package/dist/core/analyzer/visitors/ImportVisitor.d.ts.map +1 -0
  64. package/dist/core/analyzer/visitors/ImportVisitor.js +68 -0
  65. package/dist/core/analyzer/visitors/ImportVisitor.js.map +1 -0
  66. package/dist/core/analyzer/visitors/NamingVisitor.d.ts +7 -0
  67. package/dist/core/analyzer/visitors/NamingVisitor.d.ts.map +1 -0
  68. package/dist/core/analyzer/visitors/NamingVisitor.js +88 -0
  69. package/dist/core/analyzer/visitors/NamingVisitor.js.map +1 -0
  70. package/dist/core/analyzer/visitors/StructureVisitor.d.ts +6 -0
  71. package/dist/core/analyzer/visitors/StructureVisitor.d.ts.map +1 -0
  72. package/dist/core/analyzer/visitors/StructureVisitor.js +8 -0
  73. package/dist/core/analyzer/visitors/StructureVisitor.js.map +1 -0
  74. package/dist/core/analyzer/visitors/TestVisitor.d.ts +6 -0
  75. package/dist/core/analyzer/visitors/TestVisitor.d.ts.map +1 -0
  76. package/dist/core/analyzer/visitors/TestVisitor.js +47 -0
  77. package/dist/core/analyzer/visitors/TestVisitor.js.map +1 -0
  78. package/dist/core/analyzer/visitors/types.d.ts +13 -0
  79. package/dist/core/analyzer/visitors/types.d.ts.map +1 -0
  80. package/dist/core/analyzer/visitors/types.js +2 -0
  81. package/dist/core/analyzer/visitors/types.js.map +1 -0
  82. package/dist/core/classifier/ConfidenceGate.d.ts +9 -0
  83. package/dist/core/classifier/ConfidenceGate.d.ts.map +1 -0
  84. package/dist/core/classifier/ConfidenceGate.js +11 -0
  85. package/dist/core/classifier/ConfidenceGate.js.map +1 -0
  86. package/dist/core/classifier/DriftClassifier.d.ts +17 -0
  87. package/dist/core/classifier/DriftClassifier.d.ts.map +1 -0
  88. package/dist/core/classifier/DriftClassifier.js +293 -0
  89. package/dist/core/classifier/DriftClassifier.js.map +1 -0
  90. package/dist/core/exporter/ExportEngine.d.ts +7 -0
  91. package/dist/core/exporter/ExportEngine.d.ts.map +1 -0
  92. package/dist/core/exporter/ExportEngine.js +52 -0
  93. package/dist/core/exporter/ExportEngine.js.map +1 -0
  94. package/dist/core/exporter/FreshnessChecker.d.ts +8 -0
  95. package/dist/core/exporter/FreshnessChecker.d.ts.map +1 -0
  96. package/dist/core/exporter/FreshnessChecker.js +49 -0
  97. package/dist/core/exporter/FreshnessChecker.js.map +1 -0
  98. package/dist/core/exporter/formatters/CiFormatter.d.ts +8 -0
  99. package/dist/core/exporter/formatters/CiFormatter.d.ts.map +1 -0
  100. package/dist/core/exporter/formatters/CiFormatter.js +51 -0
  101. package/dist/core/exporter/formatters/CiFormatter.js.map +1 -0
  102. package/dist/core/exporter/formatters/ClaudeFormatter.d.ts +9 -0
  103. package/dist/core/exporter/formatters/ClaudeFormatter.d.ts.map +1 -0
  104. package/dist/core/exporter/formatters/ClaudeFormatter.js +60 -0
  105. package/dist/core/exporter/formatters/ClaudeFormatter.js.map +1 -0
  106. package/dist/core/exporter/formatters/CopilotFormatter.d.ts +9 -0
  107. package/dist/core/exporter/formatters/CopilotFormatter.d.ts.map +1 -0
  108. package/dist/core/exporter/formatters/CopilotFormatter.js +50 -0
  109. package/dist/core/exporter/formatters/CopilotFormatter.js.map +1 -0
  110. package/dist/core/exporter/formatters/CursorFormatter.d.ts +9 -0
  111. package/dist/core/exporter/formatters/CursorFormatter.d.ts.map +1 -0
  112. package/dist/core/exporter/formatters/CursorFormatter.js +51 -0
  113. package/dist/core/exporter/formatters/CursorFormatter.js.map +1 -0
  114. package/dist/core/exporter/formatters/JsonFormatter.d.ts +8 -0
  115. package/dist/core/exporter/formatters/JsonFormatter.d.ts.map +1 -0
  116. package/dist/core/exporter/formatters/JsonFormatter.js +22 -0
  117. package/dist/core/exporter/formatters/JsonFormatter.js.map +1 -0
  118. package/dist/core/exporter/formatters/types.d.ts +7 -0
  119. package/dist/core/exporter/formatters/types.d.ts.map +1 -0
  120. package/dist/core/exporter/formatters/types.js +2 -0
  121. package/dist/core/exporter/formatters/types.js.map +1 -0
  122. package/dist/core/generator/DocGenerator.d.ts +14 -0
  123. package/dist/core/generator/DocGenerator.d.ts.map +1 -0
  124. package/dist/core/generator/DocGenerator.js +136 -0
  125. package/dist/core/generator/DocGenerator.js.map +1 -0
  126. package/dist/core/generator/PipelineOrchestrator.d.ts +11 -0
  127. package/dist/core/generator/PipelineOrchestrator.d.ts.map +1 -0
  128. package/dist/core/generator/PipelineOrchestrator.js +26 -0
  129. package/dist/core/generator/PipelineOrchestrator.js.map +1 -0
  130. package/dist/core/generator/StalenessTracker.d.ts +13 -0
  131. package/dist/core/generator/StalenessTracker.d.ts.map +1 -0
  132. package/dist/core/generator/StalenessTracker.js +76 -0
  133. package/dist/core/generator/StalenessTracker.js.map +1 -0
  134. package/dist/core/generator/documents/ArchitectureGenerator.d.ts +13 -0
  135. package/dist/core/generator/documents/ArchitectureGenerator.d.ts.map +1 -0
  136. package/dist/core/generator/documents/ArchitectureGenerator.js +101 -0
  137. package/dist/core/generator/documents/ArchitectureGenerator.js.map +1 -0
  138. package/dist/core/generator/documents/ContributingGenerator.d.ts +10 -0
  139. package/dist/core/generator/documents/ContributingGenerator.d.ts.map +1 -0
  140. package/dist/core/generator/documents/ContributingGenerator.js +90 -0
  141. package/dist/core/generator/documents/ContributingGenerator.js.map +1 -0
  142. package/dist/core/generator/documents/ConventionsGenerator.d.ts +8 -0
  143. package/dist/core/generator/documents/ConventionsGenerator.d.ts.map +1 -0
  144. package/dist/core/generator/documents/ConventionsGenerator.js +65 -0
  145. package/dist/core/generator/documents/ConventionsGenerator.js.map +1 -0
  146. package/dist/core/generator/documents/OnboardingGenerator.d.ts +12 -0
  147. package/dist/core/generator/documents/OnboardingGenerator.d.ts.map +1 -0
  148. package/dist/core/generator/documents/OnboardingGenerator.js +116 -0
  149. package/dist/core/generator/documents/OnboardingGenerator.js.map +1 -0
  150. package/dist/core/generator/documents/ReadmeGenerator.d.ts +12 -0
  151. package/dist/core/generator/documents/ReadmeGenerator.d.ts.map +1 -0
  152. package/dist/core/generator/documents/ReadmeGenerator.js +118 -0
  153. package/dist/core/generator/documents/ReadmeGenerator.js.map +1 -0
  154. package/dist/core/generator/documents/types.d.ts +18 -0
  155. package/dist/core/generator/documents/types.d.ts.map +1 -0
  156. package/dist/core/generator/documents/types.js +2 -0
  157. package/dist/core/generator/documents/types.js.map +1 -0
  158. package/dist/core/generator/llm/LlmClient.d.ts +12 -0
  159. package/dist/core/generator/llm/LlmClient.d.ts.map +1 -0
  160. package/dist/core/generator/llm/LlmClient.js +26 -0
  161. package/dist/core/generator/llm/LlmClient.js.map +1 -0
  162. package/dist/core/generator/llm/healthCheck.d.ts +6 -0
  163. package/dist/core/generator/llm/healthCheck.d.ts.map +1 -0
  164. package/dist/core/generator/llm/healthCheck.js +19 -0
  165. package/dist/core/generator/llm/healthCheck.js.map +1 -0
  166. package/dist/core/generator/llm/providerPresets.d.ts +8 -0
  167. package/dist/core/generator/llm/providerPresets.d.ts.map +1 -0
  168. package/dist/core/generator/llm/providerPresets.js +9 -0
  169. package/dist/core/generator/llm/providerPresets.js.map +1 -0
  170. package/dist/core/generator/pipelines/ExtractionPipeline.d.ts +7 -0
  171. package/dist/core/generator/pipelines/ExtractionPipeline.d.ts.map +1 -0
  172. package/dist/core/generator/pipelines/ExtractionPipeline.js +13 -0
  173. package/dist/core/generator/pipelines/ExtractionPipeline.js.map +1 -0
  174. package/dist/core/generator/pipelines/NerPipeline.d.ts +12 -0
  175. package/dist/core/generator/pipelines/NerPipeline.d.ts.map +1 -0
  176. package/dist/core/generator/pipelines/NerPipeline.js +17 -0
  177. package/dist/core/generator/pipelines/NerPipeline.js.map +1 -0
  178. package/dist/core/generator/pipelines/SummarizationPipeline.d.ts +7 -0
  179. package/dist/core/generator/pipelines/SummarizationPipeline.d.ts.map +1 -0
  180. package/dist/core/generator/pipelines/SummarizationPipeline.js +13 -0
  181. package/dist/core/generator/pipelines/SummarizationPipeline.js.map +1 -0
  182. package/dist/core/git/GitIntegration.d.ts +30 -0
  183. package/dist/core/git/GitIntegration.d.ts.map +1 -0
  184. package/dist/core/git/GitIntegration.js +92 -0
  185. package/dist/core/git/GitIntegration.js.map +1 -0
  186. package/dist/core/git/PreCommitHook.d.ts +9 -0
  187. package/dist/core/git/PreCommitHook.d.ts.map +1 -0
  188. package/dist/core/git/PreCommitHook.js +80 -0
  189. package/dist/core/git/PreCommitHook.js.map +1 -0
  190. package/dist/core/scorer/AutoFixer.d.ts +12 -0
  191. package/dist/core/scorer/AutoFixer.d.ts.map +1 -0
  192. package/dist/core/scorer/AutoFixer.js +121 -0
  193. package/dist/core/scorer/AutoFixer.js.map +1 -0
  194. package/dist/core/scorer/ComplianceScorer.d.ts +7 -0
  195. package/dist/core/scorer/ComplianceScorer.d.ts.map +1 -0
  196. package/dist/core/scorer/ComplianceScorer.js +76 -0
  197. package/dist/core/scorer/ComplianceScorer.js.map +1 -0
  198. package/dist/core/scorer/TrendTracker.d.ts +6 -0
  199. package/dist/core/scorer/TrendTracker.d.ts.map +1 -0
  200. package/dist/core/scorer/TrendTracker.js +45 -0
  201. package/dist/core/scorer/TrendTracker.js.map +1 -0
  202. package/dist/core/scorer/ViolationDetector.d.ts +17 -0
  203. package/dist/core/scorer/ViolationDetector.d.ts.map +1 -0
  204. package/dist/core/scorer/ViolationDetector.js +178 -0
  205. package/dist/core/scorer/ViolationDetector.js.map +1 -0
  206. package/dist/models/ModelManager.d.ts +15 -0
  207. package/dist/models/ModelManager.d.ts.map +1 -0
  208. package/dist/models/ModelManager.js +72 -0
  209. package/dist/models/ModelManager.js.map +1 -0
  210. package/dist/models/ModelRegistry.d.ts +12 -0
  211. package/dist/models/ModelRegistry.d.ts.map +1 -0
  212. package/dist/models/ModelRegistry.js +76 -0
  213. package/dist/models/ModelRegistry.js.map +1 -0
  214. package/dist/storage/ConventionStore.d.ts +11 -0
  215. package/dist/storage/ConventionStore.d.ts.map +1 -0
  216. package/dist/storage/ConventionStore.js +37 -0
  217. package/dist/storage/ConventionStore.js.map +1 -0
  218. package/dist/storage/ScoreStore.d.ts +18 -0
  219. package/dist/storage/ScoreStore.d.ts.map +1 -0
  220. package/dist/storage/ScoreStore.js +112 -0
  221. package/dist/storage/ScoreStore.js.map +1 -0
  222. package/dist/storage/ViolationStore.d.ts +11 -0
  223. package/dist/storage/ViolationStore.d.ts.map +1 -0
  224. package/dist/storage/ViolationStore.js +30 -0
  225. package/dist/storage/ViolationStore.js.map +1 -0
  226. package/package.json +75 -0
  227. package/templates/claude/CLAUDE.md.hbs +15 -0
  228. package/templates/copilot/copilot-instructions.md.hbs +13 -0
  229. package/templates/cursor/conventions.mdc.hbs +16 -0
@@ -0,0 +1,76 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
3
+ import { existsSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { CODEPLUG_DIR, DOC_HASHES_FILE } from '../../config/defaults.js';
6
+ const TRACKED_DOCS = [
7
+ 'README.md',
8
+ 'ARCHITECTURE.md',
9
+ 'CONVENTIONS.md',
10
+ 'CONTRIBUTING.md',
11
+ 'ONBOARDING.md',
12
+ ];
13
+ export class StalenessTracker {
14
+ projectRoot;
15
+ hashFilePath;
16
+ dirPath;
17
+ constructor(projectRoot) {
18
+ this.projectRoot = projectRoot;
19
+ this.dirPath = join(projectRoot, CODEPLUG_DIR);
20
+ this.hashFilePath = join(this.dirPath, DOC_HASHES_FILE);
21
+ }
22
+ async check() {
23
+ const saved = await this.loadHashes();
24
+ const currentHash = await this.computeSourceHash();
25
+ return TRACKED_DOCS.map((name) => {
26
+ const docPath = join(this.projectRoot, name);
27
+ if (!existsSync(docPath)) {
28
+ return { name, stale: true, reason: 'Document does not exist' };
29
+ }
30
+ const savedHash = saved[name];
31
+ if (!savedHash) {
32
+ return { name, stale: true, reason: 'No generation record found' };
33
+ }
34
+ if (savedHash !== currentHash) {
35
+ return { name, stale: true, reason: 'Source code changed since last generation' };
36
+ }
37
+ return { name, stale: false };
38
+ });
39
+ }
40
+ async update(docName, hash) {
41
+ const saved = await this.loadHashes();
42
+ saved[docName] = hash;
43
+ await this.saveHashes(saved);
44
+ }
45
+ async computeSourceHash() {
46
+ const { globby } = await import('globby');
47
+ const files = await globby(['**/*.{ts,tsx,js,jsx,mjs,cjs}'], {
48
+ cwd: this.projectRoot,
49
+ gitignore: true,
50
+ ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.codeplug/**'],
51
+ absolute: false,
52
+ });
53
+ files.sort();
54
+ const hash = createHash('sha256');
55
+ for (const file of files) {
56
+ const content = await readFile(join(this.projectRoot, file), 'utf-8');
57
+ hash.update(file);
58
+ hash.update(content);
59
+ }
60
+ return hash.digest('hex');
61
+ }
62
+ async loadHashes() {
63
+ if (!existsSync(this.hashFilePath)) {
64
+ return {};
65
+ }
66
+ const raw = await readFile(this.hashFilePath, 'utf-8');
67
+ return JSON.parse(raw);
68
+ }
69
+ async saveHashes(record) {
70
+ if (!existsSync(this.dirPath)) {
71
+ await mkdir(this.dirPath, { recursive: true });
72
+ }
73
+ await writeFile(this.hashFilePath, JSON.stringify(record, null, 2), 'utf-8');
74
+ }
75
+ }
76
+ //# sourceMappingURL=StalenessTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StalenessTracker.js","sourceRoot":"","sources":["../../../src/core/generator/StalenessTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMzE,MAAM,YAAY,GAAG;IACnB,WAAW;IACX,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;CAChB,CAAC;AAEF,MAAM,OAAO,gBAAgB;IAIP;IAHZ,YAAY,CAAS;IACrB,OAAO,CAAS;IAExB,YAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEnD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;YAClE,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;YACrE,CAAC;YACD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC;YACpF,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,IAAY;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QACtB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,MAAM,MAAM,CACxB,CAAC,8BAA8B,CAAC,EAChC;YACE,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAC;YAC9E,QAAQ,EAAE,KAAK;SAChB,CACF,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAqB;QAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { DocumentGenerator, GenerationContext } from './types.js';
2
+ export declare class ArchitectureGenerator implements DocumentGenerator {
3
+ generate(ctx: GenerationContext): Promise<string>;
4
+ private buildOverview;
5
+ private countDirs;
6
+ private buildDirectoryMap;
7
+ private renderTree;
8
+ private buildComponentRelationships;
9
+ private buildDataFlow;
10
+ private buildDesignDecisions;
11
+ private enhanceWithLlm;
12
+ }
13
+ //# sourceMappingURL=ArchitectureGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitectureGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/documents/ArchitectureGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAE3F,qBAAa,qBAAsB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvD,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,oBAAoB;YAYd,cAAc;CAc7B"}
@@ -0,0 +1,101 @@
1
+ import { basename } from 'node:path';
2
+ export class ArchitectureGenerator {
3
+ async generate(ctx) {
4
+ const projectName = basename(ctx.projectRoot);
5
+ const sections = [];
6
+ sections.push(`# ${projectName} — Architecture\n`);
7
+ sections.push(this.buildOverview(ctx));
8
+ sections.push(this.buildDirectoryMap(ctx.analysis.folderStructure));
9
+ sections.push(this.buildComponentRelationships(ctx));
10
+ sections.push(this.buildDataFlow(ctx));
11
+ sections.push(this.buildDesignDecisions(ctx));
12
+ const template = sections.join('\n');
13
+ if (ctx.llmAvailable && ctx.llmClient) {
14
+ return this.enhanceWithLlm(ctx, template);
15
+ }
16
+ return template;
17
+ }
18
+ buildOverview(ctx) {
19
+ const { analysis } = ctx;
20
+ return [
21
+ '## System Overview\n',
22
+ `The project contains ${analysis.fileCount} source files organized across ${this.countDirs(analysis.folderStructure)} directories.`,
23
+ '',
24
+ ].join('\n');
25
+ }
26
+ countDirs(node) {
27
+ let count = node.children.length;
28
+ for (const child of node.children) {
29
+ count += this.countDirs(child);
30
+ }
31
+ return count;
32
+ }
33
+ buildDirectoryMap(root) {
34
+ const lines = ['## Directory Structure\n', '```'];
35
+ lines.push(...this.renderTree(root, 0, 4));
36
+ lines.push('```', '');
37
+ return lines.join('\n');
38
+ }
39
+ renderTree(node, depth, maxDepth) {
40
+ if (depth > maxDepth)
41
+ return [];
42
+ const indent = ' '.repeat(depth);
43
+ const lines = [`${indent}${node.name}/ (${node.fileCount} files)`];
44
+ for (const child of node.children) {
45
+ lines.push(...this.renderTree(child, depth + 1, maxDepth));
46
+ }
47
+ return lines;
48
+ }
49
+ buildComponentRelationships(ctx) {
50
+ const structural = ctx.analysis.patterns.filter((p) => p.dimension === 'structure' || p.dimension === 'component');
51
+ if (structural.length === 0)
52
+ return '';
53
+ const lines = ['## Component Relationships\n'];
54
+ for (const p of structural) {
55
+ lines.push(`- **${p.pattern}** — seen ${p.frequency}/${p.total} times (${(p.confidence * 100).toFixed(0)}% confidence)`);
56
+ }
57
+ lines.push('');
58
+ return lines.join('\n');
59
+ }
60
+ buildDataFlow(ctx) {
61
+ const apiPatterns = ctx.analysis.patterns.filter((p) => p.dimension === 'api' || p.dimension === 'state');
62
+ if (apiPatterns.length === 0) {
63
+ return [
64
+ '## Data Flow\n',
65
+ 'No API or state management patterns detected. Refer to source code for data flow details.',
66
+ '',
67
+ ].join('\n');
68
+ }
69
+ const lines = ['## Data Flow\n'];
70
+ for (const p of apiPatterns) {
71
+ lines.push(`- **${p.pattern}**: ${p.examples.slice(0, 2).join(', ') || 'N/A'}`);
72
+ }
73
+ lines.push('');
74
+ return lines.join('\n');
75
+ }
76
+ buildDesignDecisions(ctx) {
77
+ const highConf = ctx.analysis.patterns.filter((p) => p.confidence >= 0.8);
78
+ if (highConf.length === 0)
79
+ return '';
80
+ const lines = ['## Design Decisions\n'];
81
+ for (const p of highConf.slice(0, 5)) {
82
+ lines.push(`- **${p.dimension}**: ${p.pattern}`);
83
+ }
84
+ lines.push('');
85
+ return lines.join('\n');
86
+ }
87
+ async enhanceWithLlm(ctx, template) {
88
+ const prompt = [
89
+ `Improve this ARCHITECTURE.md for a ${ctx.audience} audience in a ${ctx.style} style.`,
90
+ 'Add mermaid diagrams where appropriate to illustrate component relationships and data flow.',
91
+ 'Return only the final markdown.\n',
92
+ template,
93
+ ].join('\n');
94
+ return ctx.llmClient.generate(prompt, {
95
+ systemPrompt: 'You are a software architect writing clear documentation.',
96
+ temperature: 0.3,
97
+ maxTokens: 3000,
98
+ });
99
+ }
100
+ }
101
+ //# sourceMappingURL=ArchitectureGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitectureGenerator.js","sourceRoot":"","sources":["../../../../src/core/generator/documents/ArchitectureGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DocumentGenerator, GenerationContext } from './types.js';
2
+ export declare class ContributingGenerator implements DocumentGenerator {
3
+ generate(ctx: GenerationContext): Promise<string>;
4
+ private buildSetup;
5
+ private buildWorkflow;
6
+ private buildCodingStandards;
7
+ private buildPrProcess;
8
+ private enhanceWithLlm;
9
+ }
10
+ //# sourceMappingURL=ContributingGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributingGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/documents/ContributingGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAE3F,qBAAa,qBAAsB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBvD,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,cAAc;YAYR,cAAc;CAa7B"}
@@ -0,0 +1,90 @@
1
+ import { basename } from 'node:path';
2
+ export class ContributingGenerator {
3
+ async generate(ctx) {
4
+ const projectName = basename(ctx.projectRoot);
5
+ const sections = [];
6
+ sections.push(`# Contributing to ${projectName}\n`);
7
+ sections.push(this.buildSetup(projectName));
8
+ sections.push(this.buildWorkflow());
9
+ sections.push(this.buildCodingStandards(ctx));
10
+ sections.push(this.buildPrProcess());
11
+ const template = sections.join('\n');
12
+ if (ctx.llmAvailable && ctx.llmClient) {
13
+ return this.enhanceWithLlm(ctx, template);
14
+ }
15
+ return template;
16
+ }
17
+ buildSetup(projectName) {
18
+ return [
19
+ '## Setup\n',
20
+ '```bash',
21
+ 'git clone <repository-url>',
22
+ `cd ${projectName}`,
23
+ 'npm install',
24
+ 'npm run build',
25
+ 'npm test',
26
+ '```',
27
+ '',
28
+ ].join('\n');
29
+ }
30
+ buildWorkflow() {
31
+ return [
32
+ '## Development Workflow\n',
33
+ '1. Create a feature branch from `main`',
34
+ '2. Make your changes with clear, atomic commits',
35
+ '3. Write or update tests for your changes',
36
+ '4. Ensure all tests pass and linting is clean',
37
+ '5. Open a pull request against `main`',
38
+ '',
39
+ ].join('\n');
40
+ }
41
+ buildCodingStandards(ctx) {
42
+ const confirmed = ctx.conventions.filter((c) => c.confirmed);
43
+ if (confirmed.length === 0) {
44
+ return [
45
+ '## Coding Standards\n',
46
+ 'Follow the existing patterns in the codebase. Run `codeplug conventions audit` to check compliance.',
47
+ '',
48
+ ].join('\n');
49
+ }
50
+ const lines = ['## Coding Standards\n'];
51
+ const byDimension = new Map();
52
+ for (const c of confirmed) {
53
+ const list = byDimension.get(c.dimension) ?? [];
54
+ list.push(c.rule);
55
+ byDimension.set(c.dimension, list);
56
+ }
57
+ for (const [dim, rules] of byDimension) {
58
+ lines.push(`### ${dim}\n`);
59
+ for (const rule of rules) {
60
+ lines.push(`- ${rule}`);
61
+ }
62
+ lines.push('');
63
+ }
64
+ return lines.join('\n');
65
+ }
66
+ buildPrProcess() {
67
+ return [
68
+ '## Pull Request Process\n',
69
+ '1. Fill out the PR template completely',
70
+ '2. Request review from at least one maintainer',
71
+ '3. Address all review comments',
72
+ '4. Ensure CI passes before merging',
73
+ '5. Squash and merge when approved',
74
+ '',
75
+ ].join('\n');
76
+ }
77
+ async enhanceWithLlm(ctx, template) {
78
+ const prompt = [
79
+ `Improve this CONTRIBUTING.md for a ${ctx.audience} audience in a ${ctx.style} style.`,
80
+ 'Make it welcoming and actionable. Return only the final markdown.\n',
81
+ template,
82
+ ].join('\n');
83
+ return ctx.llmClient.generate(prompt, {
84
+ systemPrompt: 'You are a technical writer creating contributor documentation.',
85
+ temperature: 0.3,
86
+ maxTokens: 2000,
87
+ });
88
+ }
89
+ }
90
+ //# sourceMappingURL=ContributingGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributingGenerator.js","sourceRoot":"","sources":["../../../../src/core/generator/documents/ContributingGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DocumentGenerator, GenerationContext } from './types.js';
2
+ export declare class ConventionsGenerator implements DocumentGenerator {
3
+ generate(ctx: GenerationContext): Promise<string>;
4
+ private buildIntro;
5
+ private buildConventionList;
6
+ private enhanceWithLlm;
7
+ }
8
+ //# sourceMappingURL=ConventionsGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConventionsGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/documents/ConventionsGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAE3F,qBAAa,oBAAqB,YAAW,iBAAiB;IACtD,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAevD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,mBAAmB;YAmCb,cAAc;CAa7B"}
@@ -0,0 +1,65 @@
1
+ export class ConventionsGenerator {
2
+ async generate(ctx) {
3
+ const sections = [];
4
+ sections.push('# Conventions\n');
5
+ sections.push(this.buildIntro(ctx));
6
+ sections.push(this.buildConventionList(ctx.conventions));
7
+ const template = sections.join('\n');
8
+ if (ctx.llmAvailable && ctx.llmClient) {
9
+ return this.enhanceWithLlm(ctx, template);
10
+ }
11
+ return template;
12
+ }
13
+ buildIntro(ctx) {
14
+ const confirmed = ctx.conventions.filter((c) => c.confirmed).length;
15
+ return [
16
+ `This document describes **${ctx.conventions.length}** conventions detected in the codebase`,
17
+ `(${confirmed} confirmed).\n`,
18
+ ].join(' ');
19
+ }
20
+ buildConventionList(conventions) {
21
+ if (conventions.length === 0) {
22
+ return 'No conventions have been detected yet. Run `codeplug conventions init` to analyze the codebase.\n';
23
+ }
24
+ const grouped = new Map();
25
+ for (const c of conventions) {
26
+ const list = grouped.get(c.dimension) ?? [];
27
+ list.push(c);
28
+ grouped.set(c.dimension, list);
29
+ }
30
+ const lines = [];
31
+ for (const [dimension, items] of grouped) {
32
+ lines.push(`## ${dimension}\n`);
33
+ for (const c of items) {
34
+ lines.push(`### ${c.rule}\n`);
35
+ lines.push(`| Property | Value |`);
36
+ lines.push(`|----------|-------|`);
37
+ lines.push(`| **Severity** | ${c.severity} |`);
38
+ lines.push(`| **Confidence** | ${(c.confidence * 100).toFixed(0)}% |`);
39
+ lines.push(`| **Confirmed** | ${c.confirmed ? 'Yes' : 'No'} |`);
40
+ if (c.examples.length > 0) {
41
+ lines.push('');
42
+ lines.push('**Examples:**\n');
43
+ for (const ex of c.examples.slice(0, 3)) {
44
+ lines.push(`- \`${ex}\``);
45
+ }
46
+ }
47
+ lines.push('');
48
+ }
49
+ }
50
+ return lines.join('\n');
51
+ }
52
+ async enhanceWithLlm(ctx, template) {
53
+ const prompt = [
54
+ `Improve this CONVENTIONS.md for a ${ctx.audience} audience in a ${ctx.style} style.`,
55
+ 'Make descriptions concise and actionable. Return only the final markdown.\n',
56
+ template,
57
+ ].join('\n');
58
+ return ctx.llmClient.generate(prompt, {
59
+ systemPrompt: 'You are a technical writer documenting coding conventions.',
60
+ temperature: 0.3,
61
+ maxTokens: 2000,
62
+ });
63
+ }
64
+ }
65
+ //# sourceMappingURL=ConventionsGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConventionsGenerator.js","sourceRoot":"","sources":["../../../../src/core/generator/documents/ConventionsGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DocumentGenerator, GenerationContext } from './types.js';
2
+ export declare class OnboardingGenerator implements DocumentGenerator {
3
+ generate(ctx: GenerationContext): Promise<string>;
4
+ private buildProjectOverview;
5
+ private buildEnvironmentSetup;
6
+ private buildKeyConcepts;
7
+ private buildArchitectureTour;
8
+ private describePurpose;
9
+ private buildCommonTasks;
10
+ private enhanceWithLlm;
11
+ }
12
+ //# sourceMappingURL=OnboardingGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnboardingGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/documents/OnboardingGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAE3F,qBAAa,mBAAoB,YAAW,iBAAiB;IACrD,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvD,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,gBAAgB;YAaV,cAAc;CAa7B"}
@@ -0,0 +1,116 @@
1
+ import { basename } from 'node:path';
2
+ export class OnboardingGenerator {
3
+ async generate(ctx) {
4
+ const projectName = basename(ctx.projectRoot);
5
+ const sections = [];
6
+ sections.push(`# Onboarding — ${projectName}\n`);
7
+ sections.push(this.buildProjectOverview(ctx));
8
+ sections.push(this.buildEnvironmentSetup(projectName));
9
+ sections.push(this.buildKeyConcepts(ctx));
10
+ sections.push(this.buildArchitectureTour(ctx));
11
+ sections.push(this.buildCommonTasks());
12
+ const template = sections.join('\n');
13
+ if (ctx.llmAvailable && ctx.llmClient) {
14
+ return this.enhanceWithLlm(ctx, template);
15
+ }
16
+ return template;
17
+ }
18
+ buildProjectOverview(ctx) {
19
+ const { analysis } = ctx;
20
+ return [
21
+ '## Project Overview\n',
22
+ `This project contains ${analysis.fileCount} source files.`,
23
+ `${ctx.conventions.length} coding conventions have been identified.`,
24
+ '',
25
+ ].join('\n');
26
+ }
27
+ buildEnvironmentSetup(projectName) {
28
+ return [
29
+ '## Environment Setup\n',
30
+ '### Prerequisites\n',
31
+ '- Node.js >= 20.0.0',
32
+ '- npm or yarn',
33
+ '',
34
+ '### Installation\n',
35
+ '```bash',
36
+ 'git clone <repository-url>',
37
+ `cd ${projectName}`,
38
+ 'npm install',
39
+ '```',
40
+ '',
41
+ '### Verify Setup\n',
42
+ '```bash',
43
+ 'npm run build',
44
+ 'npm test',
45
+ '```',
46
+ '',
47
+ ].join('\n');
48
+ }
49
+ buildKeyConcepts(ctx) {
50
+ const dimensions = [...new Set(ctx.analysis.patterns.map((p) => p.dimension))];
51
+ if (dimensions.length === 0)
52
+ return '';
53
+ const lines = ['## Key Concepts\n'];
54
+ for (const dim of dimensions) {
55
+ const patterns = ctx.analysis.patterns.filter((p) => p.dimension === dim);
56
+ lines.push(`### ${dim}\n`);
57
+ for (const p of patterns.slice(0, 3)) {
58
+ lines.push(`- ${p.pattern} (${(p.confidence * 100).toFixed(0)}% confidence)`);
59
+ }
60
+ lines.push('');
61
+ }
62
+ return lines.join('\n');
63
+ }
64
+ buildArchitectureTour(ctx) {
65
+ const root = ctx.analysis.folderStructure;
66
+ if (root.children.length === 0)
67
+ return '';
68
+ const lines = ['## Architecture Tour\n'];
69
+ lines.push('Key directories:\n');
70
+ for (const child of root.children) {
71
+ lines.push(`- **${child.name}/** — ${child.fileCount} files${this.describePurpose(child)}`);
72
+ }
73
+ lines.push('');
74
+ return lines.join('\n');
75
+ }
76
+ describePurpose(node) {
77
+ const name = node.name.toLowerCase();
78
+ const purposes = {
79
+ src: ' (source code)',
80
+ lib: ' (library code)',
81
+ test: ' (tests)',
82
+ tests: ' (tests)',
83
+ config: ' (configuration)',
84
+ docs: ' (documentation)',
85
+ scripts: ' (build/utility scripts)',
86
+ public: ' (static assets)',
87
+ assets: ' (static assets)',
88
+ };
89
+ return purposes[name] ?? '';
90
+ }
91
+ buildCommonTasks() {
92
+ return [
93
+ '## Common Tasks\n',
94
+ '| Task | Command |',
95
+ '|------|---------|',
96
+ '| Build | `npm run build` |',
97
+ '| Run tests | `npm test` |',
98
+ '| Lint | `npm run lint` |',
99
+ '| Dev mode | `npm run dev` |',
100
+ '',
101
+ ].join('\n');
102
+ }
103
+ async enhanceWithLlm(ctx, template) {
104
+ const prompt = [
105
+ `Improve this ONBOARDING.md for a ${ctx.audience} audience in a ${ctx.style} style.`,
106
+ 'Make it friendly and thorough for new team members. Return only the final markdown.\n',
107
+ template,
108
+ ].join('\n');
109
+ return ctx.llmClient.generate(prompt, {
110
+ systemPrompt: 'You are a technical writer creating onboarding documentation for new developers.',
111
+ temperature: 0.3,
112
+ maxTokens: 2500,
113
+ });
114
+ }
115
+ }
116
+ //# sourceMappingURL=OnboardingGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnboardingGenerator.js","sourceRoot":"","sources":["../../../../src/core/generator/documents/OnboardingGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DocumentGenerator, GenerationContext } from './types.js';
2
+ export declare class ReadmeGenerator implements DocumentGenerator {
3
+ generate(ctx: GenerationContext): Promise<string>;
4
+ private buildDescription;
5
+ private buildQuickStart;
6
+ private buildFolderStructure;
7
+ private renderTree;
8
+ private buildTechStack;
9
+ private buildConventionsSummary;
10
+ private enhanceWithLlm;
11
+ }
12
+ //# sourceMappingURL=ReadmeGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadmeGenerator.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/documents/ReadmeGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAE3F,qBAAa,eAAgB,YAAW,iBAAiB;IACjD,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvD,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,uBAAuB;YAsBjB,cAAc;CAc7B"}