@ragul1233332/docpilot 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 (186) hide show
  1. package/README.md +147 -0
  2. package/dist/ai/anthropic.provider.d.ts +9 -0
  3. package/dist/ai/anthropic.provider.d.ts.map +1 -0
  4. package/dist/ai/anthropic.provider.js +54 -0
  5. package/dist/ai/anthropic.provider.js.map +1 -0
  6. package/dist/ai/openai.provider.d.ts +9 -0
  7. package/dist/ai/openai.provider.d.ts.map +1 -0
  8. package/dist/ai/openai.provider.js +53 -0
  9. package/dist/ai/openai.provider.js.map +1 -0
  10. package/dist/ai/prompts.d.ts +4 -0
  11. package/dist/ai/prompts.d.ts.map +1 -0
  12. package/dist/ai/prompts.js +199 -0
  13. package/dist/ai/prompts.js.map +1 -0
  14. package/dist/ai/provider.d.ts +4 -0
  15. package/dist/ai/provider.d.ts.map +1 -0
  16. package/dist/ai/provider.js +13 -0
  17. package/dist/ai/provider.js.map +1 -0
  18. package/dist/ai/template.provider.d.ts +7 -0
  19. package/dist/ai/template.provider.d.ts.map +1 -0
  20. package/dist/ai/template.provider.js +19 -0
  21. package/dist/ai/template.provider.js.map +1 -0
  22. package/dist/cli/commands/changelog.d.ts +3 -0
  23. package/dist/cli/commands/changelog.d.ts.map +1 -0
  24. package/dist/cli/commands/changelog.js +118 -0
  25. package/dist/cli/commands/changelog.js.map +1 -0
  26. package/dist/cli/commands/doctor.d.ts +3 -0
  27. package/dist/cli/commands/doctor.d.ts.map +1 -0
  28. package/dist/cli/commands/doctor.js +109 -0
  29. package/dist/cli/commands/doctor.js.map +1 -0
  30. package/dist/cli/commands/generate.d.ts +3 -0
  31. package/dist/cli/commands/generate.d.ts.map +1 -0
  32. package/dist/cli/commands/generate.js +82 -0
  33. package/dist/cli/commands/generate.js.map +1 -0
  34. package/dist/cli/commands/scan.d.ts +3 -0
  35. package/dist/cli/commands/scan.d.ts.map +1 -0
  36. package/dist/cli/commands/scan.js +140 -0
  37. package/dist/cli/commands/scan.js.map +1 -0
  38. package/dist/cli/commands/score.d.ts +13 -0
  39. package/dist/cli/commands/score.d.ts.map +1 -0
  40. package/dist/cli/commands/score.js +153 -0
  41. package/dist/cli/commands/score.js.map +1 -0
  42. package/dist/cli/commands/suggest.d.ts +3 -0
  43. package/dist/cli/commands/suggest.d.ts.map +1 -0
  44. package/dist/cli/commands/suggest.js +72 -0
  45. package/dist/cli/commands/suggest.js.map +1 -0
  46. package/dist/cli/commands/sync.d.ts +3 -0
  47. package/dist/cli/commands/sync.d.ts.map +1 -0
  48. package/dist/cli/commands/sync.js +120 -0
  49. package/dist/cli/commands/sync.js.map +1 -0
  50. package/dist/cli/commands/watch.d.ts +3 -0
  51. package/dist/cli/commands/watch.d.ts.map +1 -0
  52. package/dist/cli/commands/watch.js +63 -0
  53. package/dist/cli/commands/watch.js.map +1 -0
  54. package/dist/cli/index.d.ts +2 -0
  55. package/dist/cli/index.d.ts.map +1 -0
  56. package/dist/cli/index.js +35 -0
  57. package/dist/cli/index.js.map +1 -0
  58. package/dist/config/index.d.ts +7 -0
  59. package/dist/config/index.d.ts.map +1 -0
  60. package/dist/config/index.js +76 -0
  61. package/dist/config/index.js.map +1 -0
  62. package/dist/core/constants.d.ts +22 -0
  63. package/dist/core/constants.d.ts.map +1 -0
  64. package/dist/core/constants.js +201 -0
  65. package/dist/core/constants.js.map +1 -0
  66. package/dist/core/errors.d.ts +26 -0
  67. package/dist/core/errors.d.ts.map +1 -0
  68. package/dist/core/errors.js +48 -0
  69. package/dist/core/errors.js.map +1 -0
  70. package/dist/core/registry.d.ts +21 -0
  71. package/dist/core/registry.d.ts.map +1 -0
  72. package/dist/core/registry.js +99 -0
  73. package/dist/core/registry.js.map +1 -0
  74. package/dist/core/schemas.d.ts +170 -0
  75. package/dist/core/schemas.d.ts.map +1 -0
  76. package/dist/core/schemas.js +43 -0
  77. package/dist/core/schemas.js.map +1 -0
  78. package/dist/core/types.d.ts +246 -0
  79. package/dist/core/types.d.ts.map +1 -0
  80. package/dist/core/types.js +5 -0
  81. package/dist/core/types.js.map +1 -0
  82. package/dist/generators/index.d.ts +9 -0
  83. package/dist/generators/index.d.ts.map +1 -0
  84. package/dist/generators/index.js +181 -0
  85. package/dist/generators/index.js.map +1 -0
  86. package/dist/generators/sections/api-docs.d.ts +3 -0
  87. package/dist/generators/sections/api-docs.d.ts.map +1 -0
  88. package/dist/generators/sections/api-docs.js +39 -0
  89. package/dist/generators/sections/api-docs.js.map +1 -0
  90. package/dist/generators/sections/contributing.d.ts +3 -0
  91. package/dist/generators/sections/contributing.d.ts.map +1 -0
  92. package/dist/generators/sections/contributing.js +24 -0
  93. package/dist/generators/sections/contributing.js.map +1 -0
  94. package/dist/generators/sections/deployment.d.ts +3 -0
  95. package/dist/generators/sections/deployment.d.ts.map +1 -0
  96. package/dist/generators/sections/deployment.js +30 -0
  97. package/dist/generators/sections/deployment.js.map +1 -0
  98. package/dist/generators/sections/env-vars.d.ts +3 -0
  99. package/dist/generators/sections/env-vars.d.ts.map +1 -0
  100. package/dist/generators/sections/env-vars.js +18 -0
  101. package/dist/generators/sections/env-vars.js.map +1 -0
  102. package/dist/generators/sections/features.d.ts +4 -0
  103. package/dist/generators/sections/features.d.ts.map +1 -0
  104. package/dist/generators/sections/features.js +34 -0
  105. package/dist/generators/sections/features.js.map +1 -0
  106. package/dist/generators/sections/folder-tree.d.ts +3 -0
  107. package/dist/generators/sections/folder-tree.d.ts.map +1 -0
  108. package/dist/generators/sections/folder-tree.js +43 -0
  109. package/dist/generators/sections/folder-tree.js.map +1 -0
  110. package/dist/generators/sections/installation.d.ts +4 -0
  111. package/dist/generators/sections/installation.d.ts.map +1 -0
  112. package/dist/generators/sections/installation.js +33 -0
  113. package/dist/generators/sections/installation.js.map +1 -0
  114. package/dist/generators/sections/license.d.ts +3 -0
  115. package/dist/generators/sections/license.d.ts.map +1 -0
  116. package/dist/generators/sections/license.js +13 -0
  117. package/dist/generators/sections/license.js.map +1 -0
  118. package/dist/generators/sections/overview.d.ts +4 -0
  119. package/dist/generators/sections/overview.d.ts.map +1 -0
  120. package/dist/generators/sections/overview.js +39 -0
  121. package/dist/generators/sections/overview.js.map +1 -0
  122. package/dist/generators/sections/scripts.d.ts +3 -0
  123. package/dist/generators/sections/scripts.d.ts.map +1 -0
  124. package/dist/generators/sections/scripts.js +18 -0
  125. package/dist/generators/sections/scripts.js.map +1 -0
  126. package/dist/generators/sections/tech-stack.d.ts +4 -0
  127. package/dist/generators/sections/tech-stack.d.ts.map +1 -0
  128. package/dist/generators/sections/tech-stack.js +31 -0
  129. package/dist/generators/sections/tech-stack.js.map +1 -0
  130. package/dist/generators/sections/types.d.ts +13 -0
  131. package/dist/generators/sections/types.d.ts.map +1 -0
  132. package/dist/generators/sections/types.js +2 -0
  133. package/dist/generators/sections/types.js.map +1 -0
  134. package/dist/index.d.ts +3 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +11 -0
  137. package/dist/index.js.map +1 -0
  138. package/dist/scanners/base.d.ts +11 -0
  139. package/dist/scanners/base.d.ts.map +1 -0
  140. package/dist/scanners/base.js +7 -0
  141. package/dist/scanners/base.js.map +1 -0
  142. package/dist/scanners/config-file.scanner.d.ts +11 -0
  143. package/dist/scanners/config-file.scanner.d.ts.map +1 -0
  144. package/dist/scanners/config-file.scanner.js +94 -0
  145. package/dist/scanners/config-file.scanner.js.map +1 -0
  146. package/dist/scanners/env-var.scanner.d.ts +13 -0
  147. package/dist/scanners/env-var.scanner.d.ts.map +1 -0
  148. package/dist/scanners/env-var.scanner.js +144 -0
  149. package/dist/scanners/env-var.scanner.js.map +1 -0
  150. package/dist/scanners/folder-tree.scanner.d.ts +13 -0
  151. package/dist/scanners/folder-tree.scanner.d.ts.map +1 -0
  152. package/dist/scanners/folder-tree.scanner.js +74 -0
  153. package/dist/scanners/folder-tree.scanner.js.map +1 -0
  154. package/dist/scanners/framework.d.ts +12 -0
  155. package/dist/scanners/framework.d.ts.map +1 -0
  156. package/dist/scanners/framework.js +71 -0
  157. package/dist/scanners/framework.js.map +1 -0
  158. package/dist/scanners/git.scanner.d.ts +11 -0
  159. package/dist/scanners/git.scanner.d.ts.map +1 -0
  160. package/dist/scanners/git.scanner.js +92 -0
  161. package/dist/scanners/git.scanner.js.map +1 -0
  162. package/dist/scanners/index.d.ts +10 -0
  163. package/dist/scanners/index.d.ts.map +1 -0
  164. package/dist/scanners/index.js +29 -0
  165. package/dist/scanners/index.js.map +1 -0
  166. package/dist/scanners/package.scanner.d.ts +11 -0
  167. package/dist/scanners/package.scanner.d.ts.map +1 -0
  168. package/dist/scanners/package.scanner.js +70 -0
  169. package/dist/scanners/package.scanner.js.map +1 -0
  170. package/dist/scanners/script.scanner.d.ts +12 -0
  171. package/dist/scanners/script.scanner.d.ts.map +1 -0
  172. package/dist/scanners/script.scanner.js +105 -0
  173. package/dist/scanners/script.scanner.js.map +1 -0
  174. package/dist/utils/files.d.ts +12 -0
  175. package/dist/utils/files.d.ts.map +1 -0
  176. package/dist/utils/files.js +86 -0
  177. package/dist/utils/files.js.map +1 -0
  178. package/dist/utils/logger.d.ts +16 -0
  179. package/dist/utils/logger.d.ts.map +1 -0
  180. package/dist/utils/logger.js +63 -0
  181. package/dist/utils/logger.js.map +1 -0
  182. package/dist/utils/markdown.d.ts +10 -0
  183. package/dist/utils/markdown.d.ts.map +1 -0
  184. package/dist/utils/markdown.js +153 -0
  185. package/dist/utils/markdown.js.map +1 -0
  186. package/package.json +61 -0
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ // ============================================================================
3
+ // DocPilot — Zod Validation Schemas
4
+ // ============================================================================
5
+ const SectionConfigSchema = z.object({
6
+ id: z.string().min(1),
7
+ enabled: z.boolean().default(true),
8
+ order: z.number().int().min(0).max(999),
9
+ customTitle: z.string().optional(),
10
+ aiGenerated: z.boolean().default(false),
11
+ });
12
+ export const DocPilotConfigSchema = z.object({
13
+ version: z.literal('1').default('1'),
14
+ project: z.object({
15
+ name: z.string().default(''),
16
+ description: z.string().default(''),
17
+ type: z.enum(['auto', 'library', 'application', 'cli']).default('auto'),
18
+ }).default({}),
19
+ ai: z.object({
20
+ provider: z.enum(['openai', 'anthropic', 'template', 'auto']).default('auto'),
21
+ model: z.string().optional(),
22
+ temperature: z.number().min(0).max(2).default(0.3),
23
+ }).default({}),
24
+ readme: z.object({
25
+ outputPath: z.string().default('README.md'),
26
+ sections: z.array(SectionConfigSchema).default([]),
27
+ badges: z.boolean().default(true),
28
+ markers: z.boolean().default(true),
29
+ }).default({}),
30
+ sync: z.object({
31
+ enabled: z.boolean().default(true),
32
+ watchPaths: z.array(z.string()).default(['src/**', 'package.json', 'tsconfig.json']),
33
+ ignorePaths: z.array(z.string()).default(['node_modules', 'dist', '.git', 'coverage']),
34
+ debounceMs: z.number().int().min(100).max(30000).default(2000),
35
+ }).default({}),
36
+ });
37
+ export const AIConfigSchema = z.object({
38
+ provider: z.enum(['openai', 'anthropic', 'template', 'auto']).default('auto'),
39
+ apiKey: z.string().optional(),
40
+ model: z.string().optional(),
41
+ temperature: z.number().min(0).max(2).default(0.3),
42
+ });
43
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,246 @@
1
+ export interface ProjectContext {
2
+ rootPath: string;
3
+ packageJson: PackageJsonInfo | null;
4
+ gitInfo: GitInfo | null;
5
+ configFiles: ConfigFileInfo[];
6
+ envVars: EnvVarInfo[];
7
+ folderTree: FolderTreeNode | null;
8
+ scripts: ScriptInfo[];
9
+ detectedFrameworks: FrameworkInfo[];
10
+ routes: RouteInfo[];
11
+ dockerInfo: DockerInfo | null;
12
+ ciInfo: CiInfo | null;
13
+ rawScanResults: Map<string, ScanResult>;
14
+ scanTimestamp: Date;
15
+ }
16
+ export interface IScanner {
17
+ readonly id: string;
18
+ readonly name: string;
19
+ readonly description: string;
20
+ readonly priority: number;
21
+ readonly dependencies: string[];
22
+ isApplicable(context: PartialProjectContext): boolean | Promise<boolean>;
23
+ scan(context: ProjectContext): Promise<ScanResult>;
24
+ }
25
+ export type PartialProjectContext = Partial<ProjectContext>;
26
+ export interface ScanResult {
27
+ scannerId: string;
28
+ data: unknown;
29
+ confidence: number;
30
+ timestamp: Date;
31
+ errors?: string[];
32
+ }
33
+ export interface ISectionGenerator {
34
+ readonly id: string;
35
+ readonly sectionTitle: string;
36
+ readonly headingLevel: number;
37
+ readonly order: number;
38
+ readonly scannerDependencies: string[];
39
+ readonly defaultEnabled: boolean;
40
+ readonly aiGenerated: boolean;
41
+ generate(context: ProjectContext, aiProvider?: IAIProvider | null): Promise<string>;
42
+ isApplicable(context: ProjectContext): boolean;
43
+ }
44
+ export interface IAIProvider {
45
+ readonly name: string;
46
+ readonly available: boolean;
47
+ generateText(request: AIGenerationRequest): Promise<AIGenerationResponse>;
48
+ }
49
+ export interface AIGenerationRequest {
50
+ systemPrompt: string;
51
+ userPrompt: string;
52
+ model?: string;
53
+ temperature?: number;
54
+ maxTokens?: number;
55
+ }
56
+ export interface AIGenerationResponse {
57
+ content: string;
58
+ finishReason: 'stop' | 'length' | 'error';
59
+ usage?: {
60
+ promptTokens: number;
61
+ completionTokens: number;
62
+ };
63
+ }
64
+ export interface ReadmeSection {
65
+ id: string;
66
+ title: string;
67
+ headingLevel: number;
68
+ content: string;
69
+ raw: string;
70
+ startMarker: string;
71
+ endMarker: string;
72
+ hasMarkers: boolean;
73
+ order: number;
74
+ status: 'existing' | 'new' | 'modified' | 'removed' | 'unchanged';
75
+ }
76
+ export interface ReadmeDocument {
77
+ preamble: string;
78
+ sections: ReadmeSection[];
79
+ postamble: string;
80
+ rawContent: string;
81
+ hasDocpilotMarkers: boolean;
82
+ }
83
+ export interface SectionDiff {
84
+ sectionId: string;
85
+ status: 'unchanged' | 'regenerate' | 'insert' | 'remove';
86
+ reason: string;
87
+ oldContent?: string;
88
+ newContent?: string;
89
+ }
90
+ export interface ProjectSnapshot {
91
+ hash: string;
92
+ data: {
93
+ dependencies: Record<string, string>;
94
+ devDependencies: Record<string, string>;
95
+ envVars: string[];
96
+ apiRoutes: RouteInfo[];
97
+ files: string[];
98
+ gitInfo?: GitInfo;
99
+ };
100
+ }
101
+ export interface DocPilotConfig {
102
+ version: '1';
103
+ project: {
104
+ name: string;
105
+ description: string;
106
+ type: 'auto' | 'library' | 'application' | 'cli';
107
+ };
108
+ ai: {
109
+ provider: 'openai' | 'anthropic' | 'template' | 'auto';
110
+ model?: string;
111
+ temperature: number;
112
+ };
113
+ readme: {
114
+ outputPath: string;
115
+ sections: SectionConfig[];
116
+ badges: boolean;
117
+ markers: boolean;
118
+ };
119
+ sync: {
120
+ enabled: boolean;
121
+ watchPaths: string[];
122
+ ignorePaths: string[];
123
+ debounceMs: number;
124
+ };
125
+ }
126
+ export interface SectionConfig {
127
+ id: string;
128
+ enabled: boolean;
129
+ order: number;
130
+ customTitle?: string;
131
+ aiGenerated: boolean;
132
+ }
133
+ export interface FrameworkInfo {
134
+ name: string;
135
+ version?: string;
136
+ category: FrameworkCategory;
137
+ confidence: number;
138
+ evidence: string[];
139
+ }
140
+ export type FrameworkCategory = 'frontend-framework' | 'backend-framework' | 'meta-framework' | 'database' | 'orm' | 'auth' | 'payments' | 'styling' | 'state-management' | 'testing' | 'linting' | 'bundler' | 'runtime' | 'ui-library' | 'css-framework' | 'cloud' | 'ci-cd' | 'monitoring' | 'messaging' | 'language';
141
+ export interface PackageJsonInfo {
142
+ name: string;
143
+ version: string;
144
+ description?: string;
145
+ private?: boolean;
146
+ dependencies: Record<string, string>;
147
+ devDependencies: Record<string, string>;
148
+ peerDependencies: Record<string, string>;
149
+ optionalDependencies: Record<string, string>;
150
+ scripts: Record<string, string>;
151
+ engines?: Record<string, string>;
152
+ license?: string;
153
+ author?: string;
154
+ repository?: string;
155
+ }
156
+ export interface GitInfo {
157
+ currentBranch: string;
158
+ totalCommits: number;
159
+ lastCommitDate?: string;
160
+ lastCommitMessage?: string;
161
+ recentCommits: GitCommit[];
162
+ contributors: string[];
163
+ repositoryUrl?: string;
164
+ isInitialized: boolean;
165
+ }
166
+ export interface GitCommit {
167
+ hash: string;
168
+ author: string;
169
+ date: Date;
170
+ message: string;
171
+ type?: 'feat' | 'fix' | 'chore' | 'docs' | 'refactor' | 'test' | 'style';
172
+ }
173
+ export interface EnvVarInfo {
174
+ name: string;
175
+ detectedValue?: string;
176
+ description?: string;
177
+ required: boolean;
178
+ source: 'env-file' | 'code-reference' | 'docker-compose';
179
+ }
180
+ export interface RouteInfo {
181
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
182
+ path: string;
183
+ handler?: string;
184
+ sourceFile?: string;
185
+ }
186
+ export interface ScriptInfo {
187
+ name: string;
188
+ command: string;
189
+ type: 'npm' | 'make' | 'pip' | 'custom';
190
+ description?: string;
191
+ }
192
+ export interface ConfigFileInfo {
193
+ path: string;
194
+ type: string;
195
+ detectedFeatures: string[];
196
+ }
197
+ export interface DockerInfo {
198
+ hasDockerfile: boolean;
199
+ hasDockerCompose: boolean;
200
+ services: string[];
201
+ baseImage?: string;
202
+ }
203
+ export interface CiInfo {
204
+ provider: 'github-actions' | 'gitlab-ci' | 'circle-ci' | 'travis' | 'jenkins' | 'other';
205
+ configPath: string;
206
+ detectedJobs: string[];
207
+ }
208
+ export interface FolderTreeNode {
209
+ name: string;
210
+ path: string;
211
+ type: 'file' | 'directory';
212
+ children?: FolderTreeNode[];
213
+ }
214
+ export interface AggregatedScanResult {
215
+ projectType: string;
216
+ frameworks: FrameworkInfo[];
217
+ dependencies: {
218
+ production: Array<{
219
+ name: string;
220
+ version: string;
221
+ category?: string;
222
+ }>;
223
+ development: Array<{
224
+ name: string;
225
+ version: string;
226
+ category?: string;
227
+ }>;
228
+ peer: Array<{
229
+ name: string;
230
+ version: string;
231
+ }>;
232
+ optional: Array<{
233
+ name: string;
234
+ version: string;
235
+ }>;
236
+ };
237
+ envVars: EnvVarInfo[];
238
+ scripts: ScriptInfo[];
239
+ folderTree: FolderTreeNode | null;
240
+ routes: RouteInfo[];
241
+ git: GitInfo | null;
242
+ configFiles: ConfigFileInfo[];
243
+ docker: DockerInfo | null;
244
+ ci: CiInfo | null;
245
+ }
246
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ // ============================================================================
2
+ // DocPilot — Core Type Definitions
3
+ // ============================================================================
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E"}
@@ -0,0 +1,9 @@
1
+ import type { ProjectContext, IAIProvider, DocPilotConfig } from '../core/types.js';
2
+ export declare function generateReadme(projectCtx: ProjectContext, config: DocPilotConfig, aiProvider?: IAIProvider | null): Promise<string>;
3
+ export declare function writeReadme(readmeContent: string, outputPath: string): Promise<void>;
4
+ export declare function updateReadmeFromDiff(readmePath: string, sectionsToUpdate: Array<{
5
+ id: string;
6
+ content: string;
7
+ title: string;
8
+ }>, _config: DocPilotConfig): Promise<string>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAwB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAqC1G,wBAAsB,cAAc,CAClC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,cAAc,EACtB,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,MAAM,CAAC,CAqEjB;AAED,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1F;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACvE,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
@@ -0,0 +1,181 @@
1
+ import { createSection, assembleReadme, parseReadme, generateBadges } from '../utils/markdown.js';
2
+ import { readFileSafe, writeFileSafe } from '../utils/files.js';
3
+ import { createSpinner, logSuccess } from '../utils/logger.js';
4
+ import { generateOverview } from './sections/overview.js';
5
+ import { generateFeatures } from './sections/features.js';
6
+ import { generateTechStack } from './sections/tech-stack.js';
7
+ import { generateInstallation } from './sections/installation.js';
8
+ import { generateFolderTree } from './sections/folder-tree.js';
9
+ import { generateScripts } from './sections/scripts.js';
10
+ import { generateEnvVars } from './sections/env-vars.js';
11
+ import { generateApiDocs } from './sections/api-docs.js';
12
+ import { generateDeployment } from './sections/deployment.js';
13
+ import { generateContributing } from './sections/contributing.js';
14
+ import { generateLicense } from './sections/license.js';
15
+ // ============================================================================
16
+ // DocPilot — README Generator Orchestrator
17
+ // ============================================================================
18
+ const SECTION_GENERATORS = {
19
+ 'overview': generateOverview,
20
+ 'features': generateFeatures,
21
+ 'tech-stack': generateTechStack,
22
+ 'installation': generateInstallation,
23
+ 'folder-structure': generateFolderTree,
24
+ 'scripts': generateScripts,
25
+ 'env-vars': generateEnvVars,
26
+ 'api-reference': generateApiDocs,
27
+ 'deployment': generateDeployment,
28
+ 'contributing': generateContributing,
29
+ 'license': generateLicense,
30
+ };
31
+ export async function generateReadme(projectCtx, config, aiProvider) {
32
+ const spinner = createSpinner('Generating README...');
33
+ spinner.start();
34
+ const scanResult = aggregateScanResults(projectCtx);
35
+ // Determine which sections to include
36
+ const enabledSections = config.readme.sections
37
+ .filter(s => s.enabled)
38
+ .sort((a, b) => a.order - b.order);
39
+ const results = [];
40
+ for (const sectionConfig of enabledSections) {
41
+ const generator = SECTION_GENERATORS[sectionConfig.id];
42
+ if (!generator)
43
+ continue;
44
+ const sectionSpinner = createSpinner(` Generating ${sectionConfig.id}...`);
45
+ sectionSpinner.start();
46
+ try {
47
+ const result = await generator({ scanResult, aiProvider, config: config }, projectCtx);
48
+ results.push(result);
49
+ sectionSpinner.succeed();
50
+ }
51
+ catch (error) {
52
+ sectionSpinner.fail();
53
+ const message = error instanceof Error ? error.message : String(error);
54
+ results.push({
55
+ id: sectionConfig.id,
56
+ title: sectionConfig.customTitle || sectionConfig.id,
57
+ content: `> Section generation failed: ${message}`,
58
+ order: sectionConfig.order,
59
+ });
60
+ }
61
+ }
62
+ // Build title and badges
63
+ const projectName = projectCtx.packageJson?.name || 'My Project';
64
+ const badges = config.readme.badges
65
+ ? generateBadges(scanResult.frameworks)
66
+ : '';
67
+ // Assemble README
68
+ const preamble = [
69
+ `# ${projectName}`,
70
+ '',
71
+ projectCtx.packageJson?.description || '',
72
+ '',
73
+ badges,
74
+ '',
75
+ ].filter(Boolean).join('\n');
76
+ // Check if README already exists and merge sections
77
+ let readmeDoc = parseReadme('');
78
+ for (const result of results.sort((a, b) => a.order - b.order)) {
79
+ const section = createSection(result.id, result.title, result.content);
80
+ readmeDoc.sections.push(section);
81
+ }
82
+ readmeDoc.preamble = preamble;
83
+ const fullReadme = assembleReadme(readmeDoc);
84
+ spinner.succeed();
85
+ return fullReadme;
86
+ }
87
+ export async function writeReadme(readmeContent, outputPath) {
88
+ await writeFileSafe(outputPath, readmeContent);
89
+ logSuccess(`README written to ${outputPath}`);
90
+ }
91
+ export async function updateReadmeFromDiff(readmePath, sectionsToUpdate, _config) {
92
+ const existingContent = await readFileSafe(readmePath);
93
+ const baseContent = existingContent || '# Project\n';
94
+ let doc = parseReadme(baseContent);
95
+ for (const update of sectionsToUpdate) {
96
+ const existing = doc.sections.find(s => s.id === update.id);
97
+ if (existing) {
98
+ existing.content = update.content;
99
+ existing.title = update.title;
100
+ existing.status = 'modified';
101
+ }
102
+ else {
103
+ const section = createSection(update.id, update.title, update.content);
104
+ doc.sections.push(section);
105
+ }
106
+ }
107
+ return assembleReadme(doc);
108
+ }
109
+ function aggregateScanResults(ctx) {
110
+ const frameworkData = ctx.rawScanResults.get('framework')?.data ?? { frameworks: [] };
111
+ const packageData = ctx.packageJson;
112
+ const envData = ctx.rawScanResults.get('env-vars')?.data ?? { envVars: [] };
113
+ const scriptData = ctx.rawScanResults.get('scripts')?.data ?? { scripts: [] };
114
+ const gitData = ctx.gitInfo;
115
+ const treeData = ctx.rawScanResults.get('folder-tree')?.data ?? { tree: null };
116
+ const configData = ctx.rawScanResults.get('config-file')?.data ?? { configFiles: [] };
117
+ const deps = packageData?.dependencies ?? {};
118
+ const devDeps = packageData?.devDependencies ?? {};
119
+ // Categorize production deps
120
+ const production = Object.entries(deps).map(([name, version]) => ({
121
+ name,
122
+ version,
123
+ category: categorizeDep(name),
124
+ }));
125
+ const development = Object.entries(devDeps).map(([name, version]) => ({
126
+ name,
127
+ version,
128
+ category: categorizeDep(name),
129
+ }));
130
+ const peer = Object.entries(packageData?.peerDependencies ?? {}).map(([name, version]) => ({ name, version }));
131
+ const optional = Object.entries(packageData?.optionalDependencies ?? {}).map(([name, version]) => ({ name, version }));
132
+ // Infer project type (exclude testing/linting/bundler/dev tools)
133
+ const frameworks = frameworkData.frameworks ?? [];
134
+ const projectFrameworks = frameworks.filter((f) => !['testing', 'linting', 'bundler', 'monitoring'].includes(f.category));
135
+ let projectType = 'Unknown';
136
+ if (projectFrameworks.some((f) => f.name === 'Next.js'))
137
+ projectType = 'Next.js Application';
138
+ else if (projectFrameworks.some((f) => f.name === 'Express'))
139
+ projectType = 'Express API';
140
+ else if (projectFrameworks.some((f) => f.name === 'React'))
141
+ projectType = 'React Application';
142
+ else if (projectFrameworks.some((f) => f.category === 'backend-framework'))
143
+ projectType = 'Backend Service';
144
+ else if (projectFrameworks.some((f) => f.category === 'frontend-framework'))
145
+ projectType = 'Frontend Application';
146
+ else if (projectFrameworks.length > 0)
147
+ projectType = `${projectFrameworks[0]?.name} Project`;
148
+ else if (frameworks.length > 0)
149
+ projectType = 'Software Project';
150
+ else if (packageData)
151
+ projectType = 'Node.js Package';
152
+ return {
153
+ projectType,
154
+ frameworks,
155
+ dependencies: { production, development, peer, optional },
156
+ envVars: envData.envVars ?? [],
157
+ scripts: scriptData.scripts ?? [],
158
+ folderTree: treeData.tree,
159
+ routes: ctx.routes,
160
+ git: gitData,
161
+ configFiles: configData.configFiles ?? [],
162
+ docker: ctx.dockerInfo,
163
+ ci: ctx.ciInfo,
164
+ };
165
+ }
166
+ function categorizeDep(name) {
167
+ const cats = {
168
+ react: 'frontend', vue: 'frontend', angular: 'frontend', svelte: 'frontend',
169
+ next: 'framework', express: 'backend', fastify: 'backend', koa: 'backend',
170
+ prisma: 'database', mongoose: 'database', sequelize: 'database',
171
+ zod: 'validation', joi: 'validation', yup: 'validation',
172
+ vitest: 'testing', jest: 'testing', mocha: 'testing', cypress: 'testing',
173
+ eslint: 'linting', prettier: 'formatting',
174
+ vite: 'bundler', webpack: 'bundler', rollup: 'bundler', esbuild: 'bundler',
175
+ axios: 'http', 'node-fetch': 'http', 'got': 'http',
176
+ stripe: 'payments', 'react-hook-form': 'forms', 'formik': 'forms',
177
+ datefns: 'utilities', 'lodash': 'utilities', 'dayjs': 'utilities',
178
+ };
179
+ return cats[name];
180
+ }
181
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SectionContext, SectionResult } from './types.js';
2
+ export declare function generateApiDocs(context: SectionContext, _projectCtx: any): Promise<SectionResult>;
3
+ //# sourceMappingURL=api-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-docs.d.ts","sourceRoot":"","sources":["../../../src/generators/sections/api-docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhE,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,GAAG,GACf,OAAO,CAAC,aAAa,CAAC,CAuCxB"}
@@ -0,0 +1,39 @@
1
+ import { buildUserPrompt, SYSTEM_PROMPTS } from '../../ai/prompts.js';
2
+ export async function generateApiDocs(context, _projectCtx) {
3
+ const { scanResult, aiProvider } = context;
4
+ const routes = scanResult.routes;
5
+ let content;
6
+ if (routes.length === 0) {
7
+ return {
8
+ id: 'api-reference',
9
+ title: 'API Reference',
10
+ content: 'No API routes detected.',
11
+ order: 80,
12
+ };
13
+ }
14
+ if (aiProvider?.available) {
15
+ const data = {
16
+ routes: routes.map(r => ({ method: r.method, path: r.path, handler: r.handler })),
17
+ };
18
+ const response = await aiProvider.generateText({
19
+ systemPrompt: SYSTEM_PROMPTS.apiReference ?? '',
20
+ userPrompt: buildUserPrompt('api-reference', data),
21
+ temperature: 0.2,
22
+ });
23
+ content = response.content;
24
+ }
25
+ else {
26
+ const table = ['| Method | Path | Description |', '|--------|------|-------------|'];
27
+ for (const route of routes) {
28
+ table.push(`| ${route.method} | \`${route.path}\` | ${route.handler || '-'} |`);
29
+ }
30
+ content = table.join('\n');
31
+ }
32
+ return {
33
+ id: 'api-reference',
34
+ title: 'API Reference',
35
+ content,
36
+ order: 80,
37
+ };
38
+ }
39
+ //# sourceMappingURL=api-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-docs.js","sourceRoot":"","sources":["../../../src/generators/sections/api-docs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAuB,EACvB,WAAgB;IAEhB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,IAAI,OAAe,CAAC;IAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,EAAE,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAClF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC;YAC7C,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,EAAE;YAC/C,UAAU,EAAE,eAAe,CAAC,eAAe,EAAE,IAA0C,CAAC;YACxF,WAAW,EAAE,GAAG;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAa,CAAC,iCAAiC,EAAE,iCAAiC,CAAC,CAAC;QAC/F,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,eAAe;QACtB,OAAO;QACP,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SectionContext, SectionResult } from './types.js';
2
+ export declare function generateContributing(context: SectionContext, _projectCtx: any): Promise<SectionResult>;
3
+ //# sourceMappingURL=contributing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contributing.d.ts","sourceRoot":"","sources":["../../../src/generators/sections/contributing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhE,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,GAAG,GACf,OAAO,CAAC,aAAa,CAAC,CAqBxB"}
@@ -0,0 +1,24 @@
1
+ import { buildFallbackContent } from '../../ai/prompts.js';
2
+ import { buildUserPrompt, SYSTEM_PROMPTS } from '../../ai/prompts.js';
3
+ export async function generateContributing(context, _projectCtx) {
4
+ const { aiProvider } = context;
5
+ let content;
6
+ if (aiProvider?.available) {
7
+ const response = await aiProvider.generateText({
8
+ systemPrompt: SYSTEM_PROMPTS.contributing ?? '',
9
+ userPrompt: buildUserPrompt('contributing', {}),
10
+ temperature: 0.3,
11
+ });
12
+ content = response.content;
13
+ }
14
+ else {
15
+ content = buildFallbackContent('contributing', {});
16
+ }
17
+ return {
18
+ id: 'contributing',
19
+ title: 'Contributing',
20
+ content,
21
+ order: 100,
22
+ };
23
+ }
24
+ //# sourceMappingURL=contributing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contributing.js","sourceRoot":"","sources":["../../../src/generators/sections/contributing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,WAAgB;IAEhB,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC/B,IAAI,OAAe,CAAC;IAEpB,IAAI,UAAU,EAAE,SAAS,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC;YAC7C,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,EAAE;YAC/C,UAAU,EAAE,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC;YAC/C,WAAW,EAAE,GAAG;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACL,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,cAAc;QACrB,OAAO;QACP,KAAK,EAAE,GAAG;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SectionContext, SectionResult } from './types.js';
2
+ export declare function generateDeployment(context: SectionContext, _projectCtx: any): Promise<SectionResult>;
3
+ //# sourceMappingURL=deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/generators/sections/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,GAAG,GACf,OAAO,CAAC,aAAa,CAAC,CAiCxB"}