@stacksfinder/mcp-server 1.0.2 → 1.2.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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +414 -262
  3. package/dist/compatibility/index.d.ts +11 -0
  4. package/dist/compatibility/index.d.ts.map +1 -0
  5. package/dist/compatibility/index.js +13 -0
  6. package/dist/compatibility/index.js.map +1 -0
  7. package/dist/compatibility/rules.d.ts +29 -0
  8. package/dist/compatibility/rules.d.ts.map +1 -0
  9. package/dist/compatibility/rules.js +419 -0
  10. package/dist/compatibility/rules.js.map +1 -0
  11. package/dist/compatibility/scoring.d.ts +54 -0
  12. package/dist/compatibility/scoring.d.ts.map +1 -0
  13. package/dist/compatibility/scoring.js +209 -0
  14. package/dist/compatibility/scoring.js.map +1 -0
  15. package/dist/compatibility/types.d.ts +176 -0
  16. package/dist/compatibility/types.d.ts.map +1 -0
  17. package/dist/compatibility/types.js +26 -0
  18. package/dist/compatibility/types.js.map +1 -0
  19. package/dist/compatibility/utils.d.ts +82 -0
  20. package/dist/compatibility/utils.d.ts.map +1 -0
  21. package/dist/compatibility/utils.js +269 -0
  22. package/dist/compatibility/utils.js.map +1 -0
  23. package/dist/data/357/200/242/357/200/212cp H:bac_/303/240_guigui_v2stack_finderpackagesmcp-serversrcdatacompatibility_matrix.json H:bac_/303/240_guigui_v2stack_finderpackagesmcp-serverdistdata/357/200/242" +226 -0
  24. package/dist/http.d.ts +7 -0
  25. package/dist/http.d.ts.map +1 -0
  26. package/dist/http.js +69 -0
  27. package/dist/http.js.map +1 -0
  28. package/dist/lib/mcp-compatibility/index.d.ts +33 -0
  29. package/dist/lib/mcp-compatibility/index.d.ts.map +1 -0
  30. package/dist/lib/mcp-compatibility/index.js +35 -0
  31. package/dist/lib/mcp-compatibility/index.js.map +1 -0
  32. package/dist/lib/mcp-compatibility/rules.d.ts +29 -0
  33. package/dist/lib/mcp-compatibility/rules.d.ts.map +1 -0
  34. package/dist/lib/mcp-compatibility/rules.js +419 -0
  35. package/dist/lib/mcp-compatibility/rules.js.map +1 -0
  36. package/dist/lib/mcp-compatibility/scoring.d.ts +54 -0
  37. package/dist/lib/mcp-compatibility/scoring.d.ts.map +1 -0
  38. package/dist/lib/mcp-compatibility/scoring.js +209 -0
  39. package/dist/lib/mcp-compatibility/scoring.js.map +1 -0
  40. package/dist/lib/mcp-compatibility/types.d.ts +176 -0
  41. package/dist/lib/mcp-compatibility/types.d.ts.map +1 -0
  42. package/dist/lib/mcp-compatibility/types.js +26 -0
  43. package/dist/lib/mcp-compatibility/types.js.map +1 -0
  44. package/dist/lib/mcp-compatibility/utils.d.ts +82 -0
  45. package/dist/lib/mcp-compatibility/utils.d.ts.map +1 -0
  46. package/dist/lib/mcp-compatibility/utils.js +269 -0
  47. package/dist/lib/mcp-compatibility/utils.js.map +1 -0
  48. package/dist/server.d.ts.map +1 -1
  49. package/dist/server.js +404 -1
  50. package/dist/server.js.map +1 -1
  51. package/dist/tools/audit.d.ts +246 -0
  52. package/dist/tools/audit.d.ts.map +1 -0
  53. package/dist/tools/audit.js +559 -0
  54. package/dist/tools/audit.js.map +1 -0
  55. package/dist/tools/check-compatibility.d.ts +43 -0
  56. package/dist/tools/check-compatibility.d.ts.map +1 -0
  57. package/dist/tools/check-compatibility.js +133 -0
  58. package/dist/tools/check-compatibility.js.map +1 -0
  59. package/dist/tools/project-kit/analyze-repo.d.ts +50 -0
  60. package/dist/tools/project-kit/analyze-repo.d.ts.map +1 -0
  61. package/dist/tools/project-kit/analyze-repo.js +456 -0
  62. package/dist/tools/project-kit/analyze-repo.js.map +1 -0
  63. package/dist/tools/project-kit/detect-stack.d.ts +16 -0
  64. package/dist/tools/project-kit/detect-stack.d.ts.map +1 -0
  65. package/dist/tools/project-kit/detect-stack.js +572 -0
  66. package/dist/tools/project-kit/detect-stack.js.map +1 -0
  67. package/dist/tools/project-kit/execute-installation.d.ts +50 -0
  68. package/dist/tools/project-kit/execute-installation.d.ts.map +1 -0
  69. package/dist/tools/project-kit/execute-installation.js +440 -0
  70. package/dist/tools/project-kit/execute-installation.js.map +1 -0
  71. package/dist/tools/project-kit/generate.d.ts +70 -0
  72. package/dist/tools/project-kit/generate.d.ts.map +1 -0
  73. package/dist/tools/project-kit/generate.js +455 -0
  74. package/dist/tools/project-kit/generate.js.map +1 -0
  75. package/dist/tools/project-kit/index.d.ts +18 -0
  76. package/dist/tools/project-kit/index.d.ts.map +1 -0
  77. package/dist/tools/project-kit/index.js +21 -0
  78. package/dist/tools/project-kit/index.js.map +1 -0
  79. package/dist/tools/project-kit/installation-types.d.ts +147 -0
  80. package/dist/tools/project-kit/installation-types.d.ts.map +1 -0
  81. package/dist/tools/project-kit/installation-types.js +491 -0
  82. package/dist/tools/project-kit/installation-types.js.map +1 -0
  83. package/dist/tools/project-kit/match-mcps.d.ts +67 -0
  84. package/dist/tools/project-kit/match-mcps.d.ts.map +1 -0
  85. package/dist/tools/project-kit/match-mcps.js +497 -0
  86. package/dist/tools/project-kit/match-mcps.js.map +1 -0
  87. package/dist/tools/project-kit/prepare-installation.d.ts +54 -0
  88. package/dist/tools/project-kit/prepare-installation.d.ts.map +1 -0
  89. package/dist/tools/project-kit/prepare-installation.js +382 -0
  90. package/dist/tools/project-kit/prepare-installation.js.map +1 -0
  91. package/dist/tools/project-kit/types.d.ts +200 -0
  92. package/dist/tools/project-kit/types.d.ts.map +1 -0
  93. package/dist/tools/project-kit/types.js +76 -0
  94. package/dist/tools/project-kit/types.js.map +1 -0
  95. package/dist/tools/recommend.d.ts.map +1 -1
  96. package/dist/tools/recommend.js +9 -4
  97. package/dist/tools/recommend.js.map +1 -1
  98. package/package.json +8 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-repo.js","sourceRoot":"","sources":["../../../src/tools/project-kit/analyze-repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Stack Detection Module
3
+ *
4
+ * Detects technologies from project files using pattern matching.
5
+ * Each detection rule parses a specific file type and returns detected technologies.
6
+ */
7
+ import type { DetectionRule, DetectedStack } from './types.js';
8
+ export declare const DETECTION_RULES: DetectionRule[];
9
+ /**
10
+ * Detect technologies from project files.
11
+ */
12
+ export declare function detectStackFromFiles(workspaceRoot: string): Promise<{
13
+ stack: DetectedStack;
14
+ filesAnalyzed: string[];
15
+ }>;
16
+ //# sourceMappingURL=detect-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-stack.d.ts","sourceRoot":"","sources":["../../../src/tools/project-kit/detect-stack.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAa,aAAa,EAAE,aAAa,EAA0B,MAAM,YAAY,CAAC;AAkclG,eAAO,MAAM,eAAe,EAAE,aAAa,EAgF1C,CAAC;AAMF;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1E,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC,CA0BD"}
@@ -0,0 +1,572 @@
1
+ /**
2
+ * Stack Detection Module
3
+ *
4
+ * Detects technologies from project files using pattern matching.
5
+ * Each detection rule parses a specific file type and returns detected technologies.
6
+ */
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import { debug, warn } from '../../utils/logger.js';
10
+ // ============================================================================
11
+ // PACKAGE.JSON PARSER
12
+ // ============================================================================
13
+ function parsePackageJson(content) {
14
+ try {
15
+ const pkg = JSON.parse(content);
16
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
17
+ const detections = [];
18
+ // Frontend frameworks
19
+ const frontendMappings = {
20
+ svelte: 'svelte',
21
+ '@sveltejs/kit': 'sveltekit',
22
+ react: 'react',
23
+ next: 'nextjs',
24
+ vue: 'vue',
25
+ nuxt: 'nuxt',
26
+ '@angular/core': 'angular',
27
+ 'solid-js': 'solidjs',
28
+ astro: 'astro',
29
+ remix: 'remix'
30
+ };
31
+ for (const [pkg, tech] of Object.entries(frontendMappings)) {
32
+ if (deps[pkg]) {
33
+ detections.push({
34
+ type: 'frontend',
35
+ name: tech,
36
+ version: deps[pkg],
37
+ confidence: 1,
38
+ source: 'package.json'
39
+ });
40
+ }
41
+ }
42
+ // Backend/Runtime
43
+ const backendMappings = {
44
+ express: 'express',
45
+ fastify: 'fastify',
46
+ hono: 'hono',
47
+ elysia: 'elysia',
48
+ '@nestjs/core': 'nestjs',
49
+ '@hono/node-server': 'hono',
50
+ koa: 'koa'
51
+ };
52
+ for (const [pkg, tech] of Object.entries(backendMappings)) {
53
+ if (deps[pkg]) {
54
+ detections.push({
55
+ type: 'backend',
56
+ name: tech,
57
+ version: deps[pkg],
58
+ confidence: 1,
59
+ source: 'package.json'
60
+ });
61
+ }
62
+ }
63
+ // ORMs / Database clients
64
+ const ormMappings = {
65
+ 'drizzle-orm': 'drizzle',
66
+ prisma: 'prisma',
67
+ '@prisma/client': 'prisma',
68
+ typeorm: 'typeorm',
69
+ kysely: 'kysely',
70
+ mongoose: 'mongodb'
71
+ };
72
+ for (const [pkg, tech] of Object.entries(ormMappings)) {
73
+ if (deps[pkg]) {
74
+ detections.push({
75
+ type: 'orm',
76
+ name: tech,
77
+ version: deps[pkg],
78
+ confidence: 1,
79
+ source: 'package.json'
80
+ });
81
+ }
82
+ }
83
+ // Auth libraries
84
+ const authMappings = {
85
+ '@clerk/nextjs': 'clerk',
86
+ '@clerk/svelte': 'clerk',
87
+ '@auth/core': 'authjs',
88
+ 'next-auth': 'authjs',
89
+ 'lucia-auth': 'lucia',
90
+ lucia: 'lucia',
91
+ 'better-auth': 'better-auth',
92
+ '@supabase/auth-helpers-sveltekit': 'supabase',
93
+ '@supabase/auth-helpers-nextjs': 'supabase'
94
+ };
95
+ for (const [pkg, tech] of Object.entries(authMappings)) {
96
+ if (deps[pkg]) {
97
+ detections.push({
98
+ type: 'auth',
99
+ name: tech,
100
+ version: deps[pkg],
101
+ confidence: 1,
102
+ source: 'package.json'
103
+ });
104
+ }
105
+ }
106
+ // Payment services
107
+ const paymentMappings = {
108
+ stripe: 'stripe',
109
+ '@stripe/stripe-js': 'stripe',
110
+ '@paddle/paddle-js': 'paddle',
111
+ '@lemonsqueezy/lemonsqueezy.js': 'lemonsqueezy'
112
+ };
113
+ for (const [pkg, tech] of Object.entries(paymentMappings)) {
114
+ if (deps[pkg]) {
115
+ detections.push({
116
+ type: 'payments',
117
+ name: tech,
118
+ version: deps[pkg],
119
+ confidence: 1,
120
+ source: 'package.json'
121
+ });
122
+ }
123
+ }
124
+ // Services (SaaS)
125
+ const serviceMappings = {
126
+ '@supabase/supabase-js': 'supabase',
127
+ '@vercel/analytics': 'vercel',
128
+ '@vercel/og': 'vercel',
129
+ '@vercel/postgres': 'vercel',
130
+ '@sentry/node': 'sentry',
131
+ '@sentry/svelte': 'sentry',
132
+ '@sentry/nextjs': 'sentry',
133
+ resend: 'resend',
134
+ '@neon/serverless': 'neon',
135
+ '@neondatabase/serverless': 'neon',
136
+ '@upstash/redis': 'upstash',
137
+ '@upstash/ratelimit': 'upstash',
138
+ '@planetscale/database': 'planetscale',
139
+ 'posthog-js': 'posthog',
140
+ 'posthog-node': 'posthog',
141
+ '@octokit/rest': 'github',
142
+ '@slack/web-api': 'slack',
143
+ '@notionhq/client': 'notion',
144
+ '@linear/sdk': 'linear',
145
+ openai: 'openai',
146
+ '@anthropic-ai/sdk': 'anthropic',
147
+ cloudflare: 'cloudflare',
148
+ '@aws-sdk/client-s3': 'aws',
149
+ firebase: 'firebase',
150
+ 'firebase-admin': 'firebase',
151
+ '@google-cloud/firestore': 'firebase',
152
+ appwrite: 'appwrite',
153
+ '@playwright/test': 'playwright',
154
+ playwright: 'playwright',
155
+ puppeteer: 'puppeteer'
156
+ };
157
+ for (const [pkg, tech] of Object.entries(serviceMappings)) {
158
+ if (deps[pkg]) {
159
+ detections.push({
160
+ type: 'service',
161
+ name: tech,
162
+ version: deps[pkg],
163
+ confidence: 1,
164
+ source: 'package.json'
165
+ });
166
+ }
167
+ }
168
+ return detections;
169
+ }
170
+ catch {
171
+ warn('Failed to parse package.json');
172
+ return [];
173
+ }
174
+ }
175
+ // ============================================================================
176
+ // ENV FILE PARSER
177
+ // ============================================================================
178
+ function parseEnvFile(content) {
179
+ const detections = [];
180
+ const envMappings = [
181
+ // Database services
182
+ { pattern: /SUPABASE_URL/i, tech: 'supabase', type: 'service' },
183
+ { pattern: /SUPABASE_KEY/i, tech: 'supabase', type: 'service' },
184
+ { pattern: /SUPABASE_ANON_KEY/i, tech: 'supabase', type: 'service' },
185
+ { pattern: /DATABASE_URL.*neon/i, tech: 'neon', type: 'database' },
186
+ { pattern: /DATABASE_URL.*supabase/i, tech: 'supabase', type: 'database' },
187
+ { pattern: /DATABASE_URL.*planetscale/i, tech: 'planetscale', type: 'database' },
188
+ { pattern: /NEON_/i, tech: 'neon', type: 'service' },
189
+ { pattern: /PLANETSCALE_/i, tech: 'planetscale', type: 'service' },
190
+ // Payment services
191
+ { pattern: /STRIPE_SECRET/i, tech: 'stripe', type: 'payments' },
192
+ { pattern: /STRIPE_WEBHOOK/i, tech: 'stripe', type: 'payments' },
193
+ { pattern: /STRIPE_PUBLISHABLE/i, tech: 'stripe', type: 'payments' },
194
+ { pattern: /PADDLE_/i, tech: 'paddle', type: 'payments' },
195
+ { pattern: /LEMONSQUEEZY_/i, tech: 'lemonsqueezy', type: 'payments' },
196
+ // Auth services
197
+ { pattern: /CLERK_/i, tech: 'clerk', type: 'auth' },
198
+ { pattern: /AUTH0_/i, tech: 'auth0', type: 'auth' },
199
+ { pattern: /NEXTAUTH_/i, tech: 'authjs', type: 'auth' },
200
+ // Email/Communication
201
+ { pattern: /RESEND_API/i, tech: 'resend', type: 'service' },
202
+ { pattern: /SENDGRID_/i, tech: 'sendgrid', type: 'service' },
203
+ { pattern: /SLACK_/i, tech: 'slack', type: 'service' },
204
+ { pattern: /DISCORD_/i, tech: 'discord', type: 'service' },
205
+ // Monitoring/Analytics
206
+ { pattern: /SENTRY_DSN/i, tech: 'sentry', type: 'service' },
207
+ { pattern: /POSTHOG_/i, tech: 'posthog', type: 'service' },
208
+ { pattern: /DATADOG_/i, tech: 'datadog', type: 'service' },
209
+ // Productivity/Collaboration
210
+ { pattern: /NOTION_/i, tech: 'notion', type: 'service' },
211
+ { pattern: /LINEAR_/i, tech: 'linear', type: 'service' },
212
+ { pattern: /GITHUB_TOKEN/i, tech: 'github', type: 'service' },
213
+ { pattern: /GITHUB_CLIENT/i, tech: 'github', type: 'service' },
214
+ // AI/LLM
215
+ { pattern: /OPENAI_API/i, tech: 'openai', type: 'service' },
216
+ { pattern: /ANTHROPIC_API/i, tech: 'anthropic', type: 'service' },
217
+ // Hosting
218
+ { pattern: /CLOUDFLARE_/i, tech: 'cloudflare', type: 'hosting' },
219
+ { pattern: /VERCEL_/i, tech: 'vercel', type: 'hosting' },
220
+ { pattern: /NETLIFY_/i, tech: 'netlify', type: 'hosting' },
221
+ { pattern: /FLY_/i, tech: 'fly', type: 'hosting' },
222
+ { pattern: /RAILWAY_/i, tech: 'railway', type: 'hosting' },
223
+ // Cache/Storage
224
+ { pattern: /UPSTASH_/i, tech: 'upstash', type: 'service' },
225
+ { pattern: /REDIS_URL/i, tech: 'redis', type: 'service' },
226
+ { pattern: /AWS_S3/i, tech: 'aws', type: 'service' },
227
+ { pattern: /CLOUDINARY_/i, tech: 'cloudinary', type: 'service' }
228
+ ];
229
+ const seen = new Set();
230
+ for (const { pattern, tech, type } of envMappings) {
231
+ if (pattern.test(content) && !seen.has(`${type}:${tech}`)) {
232
+ seen.add(`${type}:${tech}`);
233
+ detections.push({
234
+ type,
235
+ name: tech,
236
+ confidence: 0.9,
237
+ source: '.env.example'
238
+ });
239
+ }
240
+ }
241
+ return detections;
242
+ }
243
+ // ============================================================================
244
+ // CONFIG FILE PARSERS
245
+ // ============================================================================
246
+ function parseWranglerToml() {
247
+ return [
248
+ {
249
+ type: 'hosting',
250
+ name: 'cloudflare',
251
+ confidence: 1,
252
+ source: 'wrangler.toml'
253
+ }
254
+ ];
255
+ }
256
+ function parseVercelJson() {
257
+ return [
258
+ {
259
+ type: 'hosting',
260
+ name: 'vercel',
261
+ confidence: 1,
262
+ source: 'vercel.json'
263
+ }
264
+ ];
265
+ }
266
+ function parseFlyToml() {
267
+ return [
268
+ {
269
+ type: 'hosting',
270
+ name: 'fly',
271
+ confidence: 1,
272
+ source: 'fly.toml'
273
+ }
274
+ ];
275
+ }
276
+ function parseRailwayToml() {
277
+ return [
278
+ {
279
+ type: 'hosting',
280
+ name: 'railway',
281
+ confidence: 1,
282
+ source: 'railway.toml'
283
+ }
284
+ ];
285
+ }
286
+ function parseNetlifyToml() {
287
+ return [
288
+ {
289
+ type: 'hosting',
290
+ name: 'netlify',
291
+ confidence: 1,
292
+ source: 'netlify.toml'
293
+ }
294
+ ];
295
+ }
296
+ // ============================================================================
297
+ // DOCKER PARSER
298
+ // ============================================================================
299
+ function parseDockerCompose(content) {
300
+ const detections = [];
301
+ const lowerContent = content.toLowerCase();
302
+ const serviceMappings = [
303
+ { keyword: 'postgres', type: 'database', name: 'postgresql' },
304
+ { keyword: 'mysql', type: 'database', name: 'mysql' },
305
+ { keyword: 'mariadb', type: 'database', name: 'mysql' },
306
+ { keyword: 'mongo', type: 'database', name: 'mongodb' },
307
+ { keyword: 'redis', type: 'service', name: 'redis' },
308
+ { keyword: 'elasticsearch', type: 'service', name: 'elasticsearch' },
309
+ { keyword: 'meilisearch', type: 'service', name: 'meilisearch' },
310
+ { keyword: 'rabbitmq', type: 'service', name: 'rabbitmq' },
311
+ { keyword: 'minio', type: 'service', name: 'minio' }
312
+ ];
313
+ for (const { keyword, type, name } of serviceMappings) {
314
+ if (lowerContent.includes(keyword)) {
315
+ detections.push({
316
+ type,
317
+ name,
318
+ confidence: 0.9,
319
+ source: 'docker-compose.yml'
320
+ });
321
+ }
322
+ }
323
+ return detections;
324
+ }
325
+ // ============================================================================
326
+ // ORM CONFIG PARSERS
327
+ // ============================================================================
328
+ function parseDrizzleConfig(content) {
329
+ const detections = [
330
+ {
331
+ type: 'orm',
332
+ name: 'drizzle',
333
+ confidence: 1,
334
+ source: 'drizzle.config.ts'
335
+ }
336
+ ];
337
+ // Detect database from dialect
338
+ if (content.includes("'postgresql'") || content.includes('"postgresql"') || content.includes('pg')) {
339
+ detections.push({
340
+ type: 'database',
341
+ name: 'postgresql',
342
+ confidence: 0.9,
343
+ source: 'drizzle.config.ts'
344
+ });
345
+ }
346
+ if (content.includes("'mysql'") || content.includes('"mysql"')) {
347
+ detections.push({
348
+ type: 'database',
349
+ name: 'mysql',
350
+ confidence: 0.9,
351
+ source: 'drizzle.config.ts'
352
+ });
353
+ }
354
+ if (content.includes("'sqlite'") || content.includes('"sqlite"')) {
355
+ detections.push({
356
+ type: 'database',
357
+ name: 'sqlite',
358
+ confidence: 0.9,
359
+ source: 'drizzle.config.ts'
360
+ });
361
+ }
362
+ return detections;
363
+ }
364
+ function parsePrismaSchema(content) {
365
+ const detections = [
366
+ {
367
+ type: 'orm',
368
+ name: 'prisma',
369
+ confidence: 1,
370
+ source: 'prisma/schema.prisma'
371
+ }
372
+ ];
373
+ // Detect database from provider
374
+ if (content.includes('provider = "postgresql"') || content.includes("provider = 'postgresql'")) {
375
+ detections.push({
376
+ type: 'database',
377
+ name: 'postgresql',
378
+ confidence: 1,
379
+ source: 'prisma/schema.prisma'
380
+ });
381
+ }
382
+ if (content.includes('provider = "mysql"') || content.includes("provider = 'mysql'")) {
383
+ detections.push({
384
+ type: 'database',
385
+ name: 'mysql',
386
+ confidence: 1,
387
+ source: 'prisma/schema.prisma'
388
+ });
389
+ }
390
+ if (content.includes('provider = "mongodb"') || content.includes("provider = 'mongodb'")) {
391
+ detections.push({
392
+ type: 'database',
393
+ name: 'mongodb',
394
+ confidence: 1,
395
+ source: 'prisma/schema.prisma'
396
+ });
397
+ }
398
+ if (content.includes('provider = "sqlite"') || content.includes("provider = 'sqlite'")) {
399
+ detections.push({
400
+ type: 'database',
401
+ name: 'sqlite',
402
+ confidence: 1,
403
+ source: 'prisma/schema.prisma'
404
+ });
405
+ }
406
+ return detections;
407
+ }
408
+ // ============================================================================
409
+ // DETECTION RULES
410
+ // ============================================================================
411
+ export const DETECTION_RULES = [
412
+ // Package.json (highest priority for Node.js ecosystem)
413
+ {
414
+ file: 'package.json',
415
+ priority: 10,
416
+ parser: parsePackageJson
417
+ },
418
+ // ENV files (service detection)
419
+ {
420
+ file: '.env.example',
421
+ priority: 8,
422
+ parser: parseEnvFile
423
+ },
424
+ {
425
+ file: '.env.local.example',
426
+ priority: 8,
427
+ parser: parseEnvFile
428
+ },
429
+ {
430
+ file: '.env.sample',
431
+ priority: 8,
432
+ parser: parseEnvFile
433
+ },
434
+ // Hosting platform configs
435
+ {
436
+ file: 'wrangler.toml',
437
+ priority: 10,
438
+ parser: parseWranglerToml
439
+ },
440
+ {
441
+ file: 'vercel.json',
442
+ priority: 10,
443
+ parser: parseVercelJson
444
+ },
445
+ {
446
+ file: 'fly.toml',
447
+ priority: 10,
448
+ parser: parseFlyToml
449
+ },
450
+ {
451
+ file: 'railway.toml',
452
+ priority: 10,
453
+ parser: parseRailwayToml
454
+ },
455
+ {
456
+ file: 'netlify.toml',
457
+ priority: 10,
458
+ parser: parseNetlifyToml
459
+ },
460
+ // Docker
461
+ {
462
+ file: 'docker-compose.yml',
463
+ priority: 7,
464
+ parser: parseDockerCompose
465
+ },
466
+ {
467
+ file: 'docker-compose.yaml',
468
+ priority: 7,
469
+ parser: parseDockerCompose
470
+ },
471
+ // ORM configs
472
+ {
473
+ file: 'drizzle.config.ts',
474
+ priority: 10,
475
+ parser: parseDrizzleConfig
476
+ },
477
+ {
478
+ file: 'drizzle.config.js',
479
+ priority: 10,
480
+ parser: parseDrizzleConfig
481
+ },
482
+ {
483
+ file: 'prisma/schema.prisma',
484
+ priority: 10,
485
+ parser: parsePrismaSchema
486
+ }
487
+ ];
488
+ // ============================================================================
489
+ // STACK DETECTION
490
+ // ============================================================================
491
+ /**
492
+ * Detect technologies from project files.
493
+ */
494
+ export async function detectStackFromFiles(workspaceRoot) {
495
+ const allDetections = [];
496
+ const filesAnalyzed = [];
497
+ // Run all detection rules
498
+ for (const rule of DETECTION_RULES) {
499
+ const filePath = path.join(workspaceRoot, rule.file);
500
+ try {
501
+ const content = await fs.readFile(filePath, 'utf-8');
502
+ const detections = rule.parser(content);
503
+ if (detections.length > 0) {
504
+ filesAnalyzed.push(rule.file);
505
+ allDetections.push(...detections);
506
+ debug(`Detected ${detections.length} technologies from ${rule.file}`);
507
+ }
508
+ }
509
+ catch {
510
+ // File doesn't exist or can't be read, skip
511
+ }
512
+ }
513
+ // Aggregate detections by type, keeping highest confidence for each tech
514
+ const stack = aggregateDetections(allDetections);
515
+ return { stack, filesAnalyzed };
516
+ }
517
+ /**
518
+ * Aggregate detections into a coherent stack structure.
519
+ * For each category, pick the highest-confidence detection.
520
+ */
521
+ function aggregateDetections(detections) {
522
+ const byType = new Map();
523
+ // Group by type
524
+ for (const detection of detections) {
525
+ const existing = byType.get(detection.type) || [];
526
+ existing.push(detection);
527
+ byType.set(detection.type, existing);
528
+ }
529
+ // Pick highest confidence for each category
530
+ const pickBest = (type) => {
531
+ const candidates = byType.get(type);
532
+ if (!candidates || candidates.length === 0)
533
+ return undefined;
534
+ // Sort by confidence descending
535
+ candidates.sort((a, b) => b.confidence - a.confidence);
536
+ const best = candidates[0];
537
+ return {
538
+ name: best.name,
539
+ version: best.version,
540
+ confidence: best.confidence,
541
+ source: best.source
542
+ };
543
+ };
544
+ // Collect all services (not just the best one)
545
+ const services = [];
546
+ const serviceDetections = byType.get('service') || [];
547
+ const seenServices = new Set();
548
+ for (const detection of serviceDetections) {
549
+ if (!seenServices.has(detection.name)) {
550
+ seenServices.add(detection.name);
551
+ services.push({
552
+ name: detection.name,
553
+ version: detection.version,
554
+ confidence: detection.confidence,
555
+ source: detection.source
556
+ });
557
+ }
558
+ }
559
+ // Sort services by confidence
560
+ services.sort((a, b) => b.confidence - a.confidence);
561
+ return {
562
+ frontend: pickBest('frontend'),
563
+ backend: pickBest('backend'),
564
+ database: pickBest('database'),
565
+ orm: pickBest('orm'),
566
+ auth: pickBest('auth'),
567
+ hosting: pickBest('hosting'),
568
+ payments: pickBest('payments'),
569
+ services
570
+ };
571
+ }
572
+ //# sourceMappingURL=detect-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-stack.js","sourceRoot":"","sources":["../../../src/tools/project-kit/detect-stack.ts"],"names":[],"mappings":"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"}