autogit-tool 1.0.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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/ai/prompts.d.ts +10 -0
  4. package/dist/ai/prompts.d.ts.map +1 -0
  5. package/dist/ai/prompts.js +169 -0
  6. package/dist/ai/prompts.js.map +1 -0
  7. package/dist/ai/provider.d.ts +24 -0
  8. package/dist/ai/provider.d.ts.map +1 -0
  9. package/dist/ai/provider.js +305 -0
  10. package/dist/ai/provider.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +228 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/commands/analyze.d.ts +4 -0
  16. package/dist/commands/analyze.d.ts.map +1 -0
  17. package/dist/commands/analyze.js +63 -0
  18. package/dist/commands/analyze.js.map +1 -0
  19. package/dist/commands/config.d.ts +8 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +457 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/docs.d.ts +5 -0
  24. package/dist/commands/docs.d.ts.map +1 -0
  25. package/dist/commands/docs.js +22 -0
  26. package/dist/commands/docs.js.map +1 -0
  27. package/dist/commands/doctor.d.ts +2 -0
  28. package/dist/commands/doctor.d.ts.map +1 -0
  29. package/dist/commands/doctor.js +69 -0
  30. package/dist/commands/doctor.js.map +1 -0
  31. package/dist/commands/github.d.ts +5 -0
  32. package/dist/commands/github.d.ts.map +1 -0
  33. package/dist/commands/github.js +46 -0
  34. package/dist/commands/github.js.map +1 -0
  35. package/dist/commands/init.d.ts +2 -0
  36. package/dist/commands/init.d.ts.map +1 -0
  37. package/dist/commands/init.js +38 -0
  38. package/dist/commands/init.js.map +1 -0
  39. package/dist/commands/linkedin.d.ts +4 -0
  40. package/dist/commands/linkedin.d.ts.map +1 -0
  41. package/dist/commands/linkedin.js +42 -0
  42. package/dist/commands/linkedin.js.map +1 -0
  43. package/dist/commands/login.d.ts +2 -0
  44. package/dist/commands/login.d.ts.map +1 -0
  45. package/dist/commands/login.js +301 -0
  46. package/dist/commands/login.js.map +1 -0
  47. package/dist/commands/publish.d.ts +5 -0
  48. package/dist/commands/publish.d.ts.map +1 -0
  49. package/dist/commands/publish.js +58 -0
  50. package/dist/commands/publish.js.map +1 -0
  51. package/dist/commands/readme.d.ts +5 -0
  52. package/dist/commands/readme.d.ts.map +1 -0
  53. package/dist/commands/readme.js +32 -0
  54. package/dist/commands/readme.js.map +1 -0
  55. package/dist/commands/release.d.ts +5 -0
  56. package/dist/commands/release.d.ts.map +1 -0
  57. package/dist/commands/release.js +56 -0
  58. package/dist/commands/release.js.map +1 -0
  59. package/dist/commands/resume.d.ts +8 -0
  60. package/dist/commands/resume.d.ts.map +1 -0
  61. package/dist/commands/resume.js +228 -0
  62. package/dist/commands/resume.js.map +1 -0
  63. package/dist/config/manager.d.ts +67 -0
  64. package/dist/config/manager.d.ts.map +1 -0
  65. package/dist/config/manager.js +78 -0
  66. package/dist/config/manager.js.map +1 -0
  67. package/dist/index.d.ts +6 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +6 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/pipeline/main-pipeline.d.ts +15 -0
  72. package/dist/pipeline/main-pipeline.d.ts.map +1 -0
  73. package/dist/pipeline/main-pipeline.js +279 -0
  74. package/dist/pipeline/main-pipeline.js.map +1 -0
  75. package/dist/scanner/file-scanner.d.ts +21 -0
  76. package/dist/scanner/file-scanner.d.ts.map +1 -0
  77. package/dist/scanner/file-scanner.js +90 -0
  78. package/dist/scanner/file-scanner.js.map +1 -0
  79. package/dist/scanner/project-analyzer.d.ts +26 -0
  80. package/dist/scanner/project-analyzer.d.ts.map +1 -0
  81. package/dist/scanner/project-analyzer.js +454 -0
  82. package/dist/scanner/project-analyzer.js.map +1 -0
  83. package/dist/services/docs-generator.d.ts +11 -0
  84. package/dist/services/docs-generator.d.ts.map +1 -0
  85. package/dist/services/docs-generator.js +172 -0
  86. package/dist/services/docs-generator.js.map +1 -0
  87. package/dist/services/git-service.d.ts +22 -0
  88. package/dist/services/git-service.d.ts.map +1 -0
  89. package/dist/services/git-service.js +162 -0
  90. package/dist/services/git-service.js.map +1 -0
  91. package/dist/services/github-service.d.ts +44 -0
  92. package/dist/services/github-service.d.ts.map +1 -0
  93. package/dist/services/github-service.js +131 -0
  94. package/dist/services/github-service.js.map +1 -0
  95. package/dist/services/insights.d.ts +24 -0
  96. package/dist/services/insights.d.ts.map +1 -0
  97. package/dist/services/insights.js +140 -0
  98. package/dist/services/insights.js.map +1 -0
  99. package/dist/services/readme-manager.d.ts +11 -0
  100. package/dist/services/readme-manager.d.ts.map +1 -0
  101. package/dist/services/readme-manager.js +180 -0
  102. package/dist/services/readme-manager.js.map +1 -0
  103. package/dist/services/resume-manager.d.ts +29 -0
  104. package/dist/services/resume-manager.d.ts.map +1 -0
  105. package/dist/services/resume-manager.js +186 -0
  106. package/dist/services/resume-manager.js.map +1 -0
  107. package/dist/services/social-generator.d.ts +14 -0
  108. package/dist/services/social-generator.d.ts.map +1 -0
  109. package/dist/services/social-generator.js +93 -0
  110. package/dist/services/social-generator.js.map +1 -0
  111. package/dist/utils/logger.d.ts +19 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +81 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/platform.d.ts +8 -0
  116. package/dist/utils/platform.d.ts.map +1 -0
  117. package/dist/utils/platform.js +27 -0
  118. package/dist/utils/platform.js.map +1 -0
  119. package/package.json +74 -0
@@ -0,0 +1,454 @@
1
+ import { existsSync, readFileSync } from 'fs';
2
+ import { join, basename } from 'path';
3
+ import { readFileContent, findFile } from './file-scanner.js';
4
+ export function analyzeProject(rootDir, scan) {
5
+ const analysis = {
6
+ name: basename(rootDir),
7
+ languages: [],
8
+ frameworks: [],
9
+ libraries: [],
10
+ packageManager: null,
11
+ buildSystem: null,
12
+ testFramework: null,
13
+ entryPoints: [],
14
+ features: [],
15
+ architecture: 'unknown',
16
+ database: [],
17
+ apis: [],
18
+ envVars: [],
19
+ deployment: [],
20
+ license: null,
21
+ cicd: [],
22
+ hasGit: existsSync(join(rootDir, '.git')),
23
+ hasReadme: false,
24
+ readmePath: null,
25
+ description: null,
26
+ version: null,
27
+ };
28
+ // Detect README
29
+ const readmeFile = scan.files.find(f => /^readme(\.(md|txt|rst))?$/i.test(f.name));
30
+ if (readmeFile) {
31
+ analysis.hasReadme = true;
32
+ analysis.readmePath = readmeFile.path;
33
+ }
34
+ // Detect languages
35
+ detectLanguages(scan, analysis);
36
+ // Detect package managers and frameworks
37
+ detectNodeProject(rootDir, scan, analysis);
38
+ detectPythonProject(rootDir, scan, analysis);
39
+ detectRustProject(rootDir, scan, analysis);
40
+ detectGoProject(rootDir, scan, analysis);
41
+ detectJavaProject(rootDir, scan, analysis);
42
+ detectDotNetProject(rootDir, scan, analysis);
43
+ // Detect CI/CD
44
+ detectCICD(rootDir, scan, analysis);
45
+ // Detect deployment
46
+ detectDeployment(rootDir, scan, analysis);
47
+ // Detect databases
48
+ detectDatabases(rootDir, scan, analysis);
49
+ // Detect APIs
50
+ detectAPIs(scan, analysis);
51
+ // Detect environment variables
52
+ detectEnvVars(rootDir, scan, analysis);
53
+ // Detect license
54
+ detectLicense(rootDir, scan, analysis);
55
+ // Detect architecture
56
+ detectArchitecture(scan, analysis);
57
+ // Detect test framework
58
+ detectTestFramework(rootDir, scan, analysis);
59
+ return analysis;
60
+ }
61
+ function detectLanguages(scan, analysis) {
62
+ const extMap = {
63
+ '.ts': 'TypeScript', '.tsx': 'TypeScript',
64
+ '.js': 'JavaScript', '.jsx': 'JavaScript', '.mjs': 'JavaScript',
65
+ '.py': 'Python',
66
+ '.rs': 'Rust',
67
+ '.go': 'Go',
68
+ '.java': 'Java', '.kt': 'Kotlin',
69
+ '.cs': 'C#',
70
+ '.rb': 'Ruby',
71
+ '.php': 'PHP',
72
+ '.swift': 'Swift',
73
+ '.c': 'C', '.h': 'C',
74
+ '.cpp': 'C++', '.hpp': 'C++', '.cc': 'C++',
75
+ '.dart': 'Dart',
76
+ '.ex': 'Elixir', '.exs': 'Elixir',
77
+ '.scala': 'Scala',
78
+ '.vue': 'Vue',
79
+ '.svelte': 'Svelte',
80
+ };
81
+ const langCounts = new Map();
82
+ for (const file of scan.files) {
83
+ const lang = extMap[file.extension];
84
+ if (lang) {
85
+ langCounts.set(lang, (langCounts.get(lang) || 0) + 1);
86
+ }
87
+ }
88
+ analysis.languages = [...langCounts.entries()]
89
+ .sort((a, b) => b[1] - a[1])
90
+ .map(([lang]) => lang);
91
+ }
92
+ function detectNodeProject(rootDir, scan, analysis) {
93
+ const pkgPath = join(rootDir, 'package.json');
94
+ if (!existsSync(pkgPath))
95
+ return;
96
+ try {
97
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
98
+ analysis.name = pkg.name || analysis.name;
99
+ analysis.description = pkg.description || null;
100
+ analysis.version = pkg.version || null;
101
+ const allDeps = {
102
+ ...pkg.dependencies,
103
+ ...pkg.devDependencies,
104
+ };
105
+ // Package manager
106
+ if (existsSync(join(rootDir, 'pnpm-lock.yaml'))) {
107
+ analysis.packageManager = 'pnpm';
108
+ }
109
+ else if (existsSync(join(rootDir, 'yarn.lock'))) {
110
+ analysis.packageManager = 'yarn';
111
+ }
112
+ else if (existsSync(join(rootDir, 'bun.lockb'))) {
113
+ analysis.packageManager = 'bun';
114
+ }
115
+ else {
116
+ analysis.packageManager = 'npm';
117
+ }
118
+ // Frameworks
119
+ const frameworkMap = {
120
+ 'react': 'React', 'next': 'Next.js', 'nuxt': 'Nuxt',
121
+ 'vue': 'Vue', 'angular': 'Angular', 'svelte': 'Svelte',
122
+ 'express': 'Express', 'fastify': 'Fastify', 'koa': 'Koa',
123
+ 'nestjs': 'NestJS', '@nestjs/core': 'NestJS',
124
+ 'gatsby': 'Gatsby', 'remix': 'Remix', 'astro': 'Astro',
125
+ 'electron': 'Electron', 'react-native': 'React Native',
126
+ 'hono': 'Hono', 'elysia': 'Elysia',
127
+ };
128
+ for (const [dep, framework] of Object.entries(frameworkMap)) {
129
+ if (allDeps[dep]) {
130
+ analysis.frameworks.push(framework);
131
+ }
132
+ }
133
+ // Libraries
134
+ const importantLibs = [
135
+ 'tailwindcss', 'prisma', 'drizzle-orm', 'typeorm', 'sequelize',
136
+ 'mongoose', 'redis', 'socket.io', 'graphql', 'trpc',
137
+ 'zod', 'joi', 'yup', 'axios', 'jest', 'vitest', 'mocha',
138
+ 'cypress', 'playwright', 'storybook', 'webpack', 'vite',
139
+ 'esbuild', 'turbo', 'lerna', 'docker', 'kubernetes',
140
+ ];
141
+ for (const lib of importantLibs) {
142
+ if (allDeps[lib] || allDeps[`@${lib}`]) {
143
+ analysis.libraries.push(lib);
144
+ }
145
+ }
146
+ // Build system
147
+ if (allDeps['vite'])
148
+ analysis.buildSystem = 'Vite';
149
+ else if (allDeps['webpack'])
150
+ analysis.buildSystem = 'Webpack';
151
+ else if (allDeps['esbuild'])
152
+ analysis.buildSystem = 'esbuild';
153
+ else if (allDeps['turbo'] || existsSync(join(rootDir, 'turbo.json')))
154
+ analysis.buildSystem = 'Turborepo';
155
+ else if (pkg.scripts?.build)
156
+ analysis.buildSystem = 'npm scripts';
157
+ // Entry points
158
+ if (pkg.main)
159
+ analysis.entryPoints.push(pkg.main);
160
+ if (pkg.module)
161
+ analysis.entryPoints.push(pkg.module);
162
+ }
163
+ catch {
164
+ // Invalid package.json
165
+ }
166
+ }
167
+ function detectPythonProject(rootDir, scan, analysis) {
168
+ const hasPyproject = existsSync(join(rootDir, 'pyproject.toml'));
169
+ const hasSetupPy = existsSync(join(rootDir, 'setup.py'));
170
+ const hasRequirements = existsSync(join(rootDir, 'requirements.txt'));
171
+ const hasPipfile = existsSync(join(rootDir, 'Pipfile'));
172
+ const hasPoetry = existsSync(join(rootDir, 'poetry.lock'));
173
+ if (!hasPyproject && !hasSetupPy && !hasRequirements && !hasPipfile)
174
+ return;
175
+ if (hasPoetry)
176
+ analysis.packageManager = 'poetry';
177
+ else if (hasPipfile)
178
+ analysis.packageManager = 'pipenv';
179
+ else if (hasPyproject)
180
+ analysis.packageManager = 'pip (pyproject.toml)';
181
+ else
182
+ analysis.packageManager = 'pip';
183
+ // Read requirements to detect frameworks
184
+ let deps = '';
185
+ if (hasRequirements) {
186
+ deps = readFileContent(join(rootDir, 'requirements.txt')) || '';
187
+ }
188
+ const pyFrameworks = {
189
+ 'django': 'Django', 'flask': 'Flask', 'fastapi': 'FastAPI',
190
+ 'streamlit': 'Streamlit', 'pytorch': 'PyTorch', 'tensorflow': 'TensorFlow',
191
+ 'pandas': 'Pandas', 'numpy': 'NumPy', 'scipy': 'SciPy',
192
+ 'celery': 'Celery', 'scrapy': 'Scrapy',
193
+ };
194
+ for (const [dep, framework] of Object.entries(pyFrameworks)) {
195
+ if (deps.toLowerCase().includes(dep)) {
196
+ analysis.frameworks.push(framework);
197
+ }
198
+ }
199
+ // Check for manage.py (Django)
200
+ if (findFile(scan, 'manage.py')) {
201
+ if (!analysis.frameworks.includes('Django')) {
202
+ analysis.frameworks.push('Django');
203
+ }
204
+ }
205
+ }
206
+ function detectRustProject(rootDir, scan, analysis) {
207
+ const cargoPath = join(rootDir, 'Cargo.toml');
208
+ if (!existsSync(cargoPath))
209
+ return;
210
+ analysis.packageManager = 'cargo';
211
+ analysis.buildSystem = 'Cargo';
212
+ const content = readFileContent(cargoPath) || '';
213
+ if (content.includes('actix'))
214
+ analysis.frameworks.push('Actix');
215
+ if (content.includes('axum'))
216
+ analysis.frameworks.push('Axum');
217
+ if (content.includes('rocket'))
218
+ analysis.frameworks.push('Rocket');
219
+ if (content.includes('tokio'))
220
+ analysis.libraries.push('Tokio');
221
+ if (content.includes('serde'))
222
+ analysis.libraries.push('Serde');
223
+ const nameMatch = content.match(/name\s*=\s*"([^"]+)"/);
224
+ if (nameMatch)
225
+ analysis.name = nameMatch[1];
226
+ const versionMatch = content.match(/version\s*=\s*"([^"]+)"/);
227
+ if (versionMatch)
228
+ analysis.version = versionMatch[1];
229
+ }
230
+ function detectGoProject(rootDir, scan, analysis) {
231
+ const goModPath = join(rootDir, 'go.mod');
232
+ if (!existsSync(goModPath))
233
+ return;
234
+ analysis.packageManager = 'go modules';
235
+ analysis.buildSystem = 'go build';
236
+ const content = readFileContent(goModPath) || '';
237
+ if (content.includes('gin-gonic'))
238
+ analysis.frameworks.push('Gin');
239
+ if (content.includes('echo'))
240
+ analysis.frameworks.push('Echo');
241
+ if (content.includes('fiber'))
242
+ analysis.frameworks.push('Fiber');
243
+ if (content.includes('gorm'))
244
+ analysis.libraries.push('GORM');
245
+ }
246
+ function detectJavaProject(rootDir, scan, analysis) {
247
+ if (existsSync(join(rootDir, 'pom.xml'))) {
248
+ analysis.packageManager = 'Maven';
249
+ analysis.buildSystem = 'Maven';
250
+ const content = readFileContent(join(rootDir, 'pom.xml')) || '';
251
+ if (content.includes('spring-boot'))
252
+ analysis.frameworks.push('Spring Boot');
253
+ if (content.includes('quarkus'))
254
+ analysis.frameworks.push('Quarkus');
255
+ }
256
+ else if (existsSync(join(rootDir, 'build.gradle')) || existsSync(join(rootDir, 'build.gradle.kts'))) {
257
+ analysis.packageManager = 'Gradle';
258
+ analysis.buildSystem = 'Gradle';
259
+ }
260
+ }
261
+ function detectDotNetProject(rootDir, scan, analysis) {
262
+ const csprojFiles = scan.files.filter(f => f.extension === '.csproj');
263
+ if (csprojFiles.length === 0)
264
+ return;
265
+ analysis.packageManager = 'NuGet';
266
+ analysis.buildSystem = 'dotnet';
267
+ for (const file of csprojFiles) {
268
+ const content = readFileContent(file.path) || '';
269
+ if (content.includes('Microsoft.AspNetCore'))
270
+ analysis.frameworks.push('ASP.NET Core');
271
+ if (content.includes('Blazor'))
272
+ analysis.frameworks.push('Blazor');
273
+ }
274
+ }
275
+ function detectCICD(rootDir, scan, analysis) {
276
+ if (existsSync(join(rootDir, '.github', 'workflows')))
277
+ analysis.cicd.push('GitHub Actions');
278
+ if (existsSync(join(rootDir, '.gitlab-ci.yml')))
279
+ analysis.cicd.push('GitLab CI');
280
+ if (existsSync(join(rootDir, 'Jenkinsfile')))
281
+ analysis.cicd.push('Jenkins');
282
+ if (existsSync(join(rootDir, '.circleci')))
283
+ analysis.cicd.push('CircleCI');
284
+ if (existsSync(join(rootDir, '.travis.yml')))
285
+ analysis.cicd.push('Travis CI');
286
+ if (existsSync(join(rootDir, 'azure-pipelines.yml')))
287
+ analysis.cicd.push('Azure Pipelines');
288
+ if (existsSync(join(rootDir, 'bitbucket-pipelines.yml')))
289
+ analysis.cicd.push('Bitbucket Pipelines');
290
+ }
291
+ function detectDeployment(rootDir, scan, analysis) {
292
+ if (existsSync(join(rootDir, 'Dockerfile')) || existsSync(join(rootDir, 'docker-compose.yml'))) {
293
+ analysis.deployment.push('Docker');
294
+ }
295
+ if (existsSync(join(rootDir, 'vercel.json')) || existsSync(join(rootDir, '.vercel'))) {
296
+ analysis.deployment.push('Vercel');
297
+ }
298
+ if (existsSync(join(rootDir, 'netlify.toml')))
299
+ analysis.deployment.push('Netlify');
300
+ if (existsSync(join(rootDir, 'fly.toml')))
301
+ analysis.deployment.push('Fly.io');
302
+ if (existsSync(join(rootDir, 'render.yaml')))
303
+ analysis.deployment.push('Render');
304
+ if (existsSync(join(rootDir, 'Procfile')))
305
+ analysis.deployment.push('Heroku');
306
+ if (scan.files.some(f => f.name.includes('terraform')))
307
+ analysis.deployment.push('Terraform');
308
+ if (existsSync(join(rootDir, 'serverless.yml')))
309
+ analysis.deployment.push('Serverless Framework');
310
+ if (existsSync(join(rootDir, 'sam.yaml')) || existsSync(join(rootDir, 'template.yaml'))) {
311
+ analysis.deployment.push('AWS SAM');
312
+ }
313
+ }
314
+ function detectDatabases(rootDir, scan, analysis) {
315
+ const allContent = scan.files
316
+ .filter(f => ['.json', '.toml', '.yaml', '.yml', '.env', '.ts', '.js', '.py'].includes(f.extension))
317
+ .slice(0, 30)
318
+ .map(f => readFileContent(f.path, 10000) || '')
319
+ .join('\n')
320
+ .toLowerCase();
321
+ if (allContent.includes('postgres') || allContent.includes('pg_'))
322
+ analysis.database.push('PostgreSQL');
323
+ if (allContent.includes('mysql') || allContent.includes('mariadb'))
324
+ analysis.database.push('MySQL');
325
+ if (allContent.includes('mongodb') || allContent.includes('mongoose'))
326
+ analysis.database.push('MongoDB');
327
+ if (allContent.includes('redis'))
328
+ analysis.database.push('Redis');
329
+ if (allContent.includes('sqlite'))
330
+ analysis.database.push('SQLite');
331
+ if (allContent.includes('dynamodb'))
332
+ analysis.database.push('DynamoDB');
333
+ if (allContent.includes('supabase'))
334
+ analysis.database.push('Supabase');
335
+ if (allContent.includes('firebase') || allContent.includes('firestore'))
336
+ analysis.database.push('Firebase');
337
+ }
338
+ function detectAPIs(scan, analysis) {
339
+ const routePatterns = [
340
+ /app\.(get|post|put|delete|patch)\s*\(/,
341
+ /router\.(get|post|put|delete|patch)\s*\(/,
342
+ /@(Get|Post|Put|Delete|Patch)\(/,
343
+ /path\s*\(\s*["']/,
344
+ ];
345
+ const apiFiles = scan.files.filter(f => f.relativePath.includes('route') ||
346
+ f.relativePath.includes('api') ||
347
+ f.relativePath.includes('controller') ||
348
+ f.relativePath.includes('endpoint'));
349
+ for (const file of apiFiles.slice(0, 20)) {
350
+ const content = readFileContent(file.path, 50000);
351
+ if (!content)
352
+ continue;
353
+ for (const pattern of routePatterns) {
354
+ const matches = content.match(new RegExp(pattern, 'g'));
355
+ if (matches) {
356
+ analysis.apis.push(file.relativePath);
357
+ break;
358
+ }
359
+ }
360
+ }
361
+ if (scan.files.some(f => f.name === 'openapi.yaml' || f.name === 'swagger.json')) {
362
+ analysis.features.push('OpenAPI/Swagger');
363
+ }
364
+ if (scan.files.some(f => f.extension === '.graphql' || f.name.includes('schema.graphql'))) {
365
+ analysis.features.push('GraphQL');
366
+ }
367
+ }
368
+ function detectEnvVars(rootDir, scan, analysis) {
369
+ const envFiles = ['.env.example', '.env.sample', '.env.template', '.env.local'];
370
+ for (const envFile of envFiles) {
371
+ const envPath = join(rootDir, envFile);
372
+ const content = readFileContent(envPath);
373
+ if (content) {
374
+ const vars = content.split('\n')
375
+ .filter(line => line.includes('=') && !line.startsWith('#'))
376
+ .map(line => line.split('=')[0].trim())
377
+ .filter(v => v.length > 0);
378
+ analysis.envVars.push(...vars);
379
+ }
380
+ }
381
+ // Also check .env if it exists (just get keys, not values)
382
+ const envContent = readFileContent(join(rootDir, '.env'));
383
+ if (envContent && analysis.envVars.length === 0) {
384
+ const vars = envContent.split('\n')
385
+ .filter(line => line.includes('=') && !line.startsWith('#'))
386
+ .map(line => line.split('=')[0].trim())
387
+ .filter(v => v.length > 0);
388
+ analysis.envVars.push(...vars);
389
+ }
390
+ // Deduplicate
391
+ analysis.envVars = [...new Set(analysis.envVars)];
392
+ }
393
+ function detectLicense(rootDir, scan, analysis) {
394
+ const licenseFile = scan.files.find(f => /^license(\.md|\.txt)?$/i.test(f.name));
395
+ if (licenseFile) {
396
+ const content = readFileContent(licenseFile.path, 5000) || '';
397
+ if (content.includes('MIT'))
398
+ analysis.license = 'MIT';
399
+ else if (content.includes('Apache'))
400
+ analysis.license = 'Apache-2.0';
401
+ else if (content.includes('GNU GENERAL PUBLIC'))
402
+ analysis.license = 'GPL-3.0';
403
+ else if (content.includes('BSD'))
404
+ analysis.license = 'BSD';
405
+ else if (content.includes('ISC'))
406
+ analysis.license = 'ISC';
407
+ else
408
+ analysis.license = 'Other';
409
+ }
410
+ }
411
+ function detectArchitecture(scan, analysis) {
412
+ const dirs = scan.directories.map(d => d.toLowerCase());
413
+ if (dirs.some(d => d.includes('microservice'))) {
414
+ analysis.architecture = 'Microservices';
415
+ }
416
+ else if (dirs.some(d => d.includes('packages/') || d.includes('apps/'))) {
417
+ analysis.architecture = 'Monorepo';
418
+ }
419
+ else if (dirs.some(d => d.includes('src/components')) && dirs.some(d => d.includes('src/pages') || d.includes('src/app'))) {
420
+ analysis.architecture = 'Component-based SPA';
421
+ }
422
+ else if (dirs.some(d => d.includes('controllers')) && dirs.some(d => d.includes('models'))) {
423
+ analysis.architecture = 'MVC';
424
+ }
425
+ else if (dirs.some(d => d.includes('domain')) && dirs.some(d => d.includes('application'))) {
426
+ analysis.architecture = 'Clean Architecture';
427
+ }
428
+ else if (analysis.frameworks.length > 0) {
429
+ analysis.architecture = 'Framework-based';
430
+ }
431
+ else {
432
+ analysis.architecture = 'Single module';
433
+ }
434
+ }
435
+ function detectTestFramework(rootDir, scan, analysis) {
436
+ const testDirs = scan.directories.filter(d => d.includes('test') || d.includes('spec') || d.includes('__tests__'));
437
+ const testFiles = scan.files.filter(f => f.name.includes('.test.') || f.name.includes('.spec.') || f.name.includes('_test.'));
438
+ if (analysis.libraries.includes('jest') || findFile(scan, 'jest.config.ts') || findFile(scan, 'jest.config.js')) {
439
+ analysis.testFramework = 'Jest';
440
+ }
441
+ else if (analysis.libraries.includes('vitest') || findFile(scan, 'vitest.config.ts')) {
442
+ analysis.testFramework = 'Vitest';
443
+ }
444
+ else if (analysis.libraries.includes('mocha')) {
445
+ analysis.testFramework = 'Mocha';
446
+ }
447
+ else if (findFile(scan, 'pytest.ini') || findFile(scan, 'conftest.py')) {
448
+ analysis.testFramework = 'Pytest';
449
+ }
450
+ else if (testFiles.length > 0) {
451
+ analysis.testFramework = 'Unknown';
452
+ }
453
+ }
454
+ //# sourceMappingURL=project-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-analyzer.js","sourceRoot":"","sources":["../../src/scanner/project-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ProjectAnalysis } from '../scanner/project-analyzer.js';
2
+ import type { ScanResult } from '../scanner/file-scanner.js';
3
+ export interface DocFile {
4
+ name: string;
5
+ path: string;
6
+ content: string;
7
+ exists: boolean;
8
+ }
9
+ export declare function generateDocs(rootDir: string, analysis: ProjectAnalysis, scan: ScanResult, useAI: boolean, regenerate?: boolean): Promise<DocFile[]>;
10
+ export declare function writeDocs(docs: DocFile[]): void;
11
+ //# sourceMappingURL=docs-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-generator.d.ts","sourceRoot":"","sources":["../../src/services/docs-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAK7D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,OAAO,EACd,UAAU,UAAQ,GACjB,OAAO,CAAC,OAAO,EAAE,CAAC,CAkCpB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI/C"}