faf-cli 3.0.1 → 3.0.3

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 (67) hide show
  1. package/README.md +177 -31
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +46 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/auto.d.ts.map +1 -1
  6. package/dist/commands/auto.js +102 -0
  7. package/dist/commands/auto.js.map +1 -1
  8. package/dist/commands/fam.d.ts +15 -0
  9. package/dist/commands/fam.d.ts.map +1 -0
  10. package/dist/commands/fam.js +247 -0
  11. package/dist/commands/fam.js.map +1 -0
  12. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  13. package/dist/compiler/faf-compiler.js +76 -4
  14. package/dist/compiler/faf-compiler.js.map +1 -1
  15. package/dist/core/platform-adapters.d.ts +76 -0
  16. package/dist/core/platform-adapters.d.ts.map +1 -0
  17. package/dist/core/platform-adapters.js +407 -0
  18. package/dist/core/platform-adapters.js.map +1 -0
  19. package/dist/core/universal-intelligence-generator.d.ts +156 -0
  20. package/dist/core/universal-intelligence-generator.d.ts.map +1 -0
  21. package/dist/core/universal-intelligence-generator.js +352 -0
  22. package/dist/core/universal-intelligence-generator.js.map +1 -0
  23. package/dist/family/detectors/n8n.d.ts +10 -0
  24. package/dist/family/detectors/n8n.d.ts.map +1 -0
  25. package/dist/family/detectors/n8n.js +95 -0
  26. package/dist/family/detectors/n8n.js.map +1 -0
  27. package/dist/family/detectors/next.d.ts +8 -0
  28. package/dist/family/detectors/next.d.ts.map +1 -0
  29. package/dist/family/detectors/next.js +86 -0
  30. package/dist/family/detectors/next.js.map +1 -0
  31. package/dist/family/detectors/react.d.ts +8 -0
  32. package/dist/family/detectors/react.d.ts.map +1 -0
  33. package/dist/family/detectors/react.js +73 -0
  34. package/dist/family/detectors/react.js.map +1 -0
  35. package/dist/family/detectors/svelte.d.ts +8 -0
  36. package/dist/family/detectors/svelte.d.ts.map +1 -0
  37. package/dist/family/detectors/svelte.js +90 -0
  38. package/dist/family/detectors/svelte.js.map +1 -0
  39. package/dist/family/detectors/typescript.d.ts +8 -0
  40. package/dist/family/detectors/typescript.d.ts.map +1 -0
  41. package/dist/family/detectors/typescript.js +102 -0
  42. package/dist/family/detectors/typescript.js.map +1 -0
  43. package/dist/family/detectors/vite.d.ts +8 -0
  44. package/dist/family/detectors/vite.d.ts.map +1 -0
  45. package/dist/family/detectors/vite.js +89 -0
  46. package/dist/family/detectors/vite.js.map +1 -0
  47. package/dist/family/index.d.ts +21 -0
  48. package/dist/family/index.d.ts.map +1 -0
  49. package/dist/family/index.js +73 -0
  50. package/dist/family/index.js.map +1 -0
  51. package/dist/family/registry.d.ts +57 -0
  52. package/dist/family/registry.d.ts.map +1 -0
  53. package/dist/family/registry.js +154 -0
  54. package/dist/family/registry.js.map +1 -0
  55. package/dist/family/types.d.ts +94 -0
  56. package/dist/family/types.d.ts.map +1 -0
  57. package/dist/family/types.js +8 -0
  58. package/dist/family/types.js.map +1 -0
  59. package/dist/tests/manual-validation.d.ts +8 -0
  60. package/dist/tests/manual-validation.d.ts.map +1 -0
  61. package/dist/tests/manual-validation.js +114 -0
  62. package/dist/tests/manual-validation.js.map +1 -0
  63. package/dist/utils/file-utils.d.ts +38 -0
  64. package/dist/utils/file-utils.d.ts.map +1 -1
  65. package/dist/utils/file-utils.js +148 -0
  66. package/dist/utils/file-utils.js.map +1 -1
  67. package/package.json +21 -4
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * React Integration Detector
4
+ *
5
+ * Detects React usage and generates React-optimized .faf context
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.reactDetector = void 0;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ exports.reactDetector = {
12
+ name: 'react',
13
+ displayName: 'React',
14
+ tier: 'trophy', // Based on evaluation: React will score 99+
15
+ qualityScore: 99,
16
+ weeklyAdoption: 20_000_000, // ~20M weekly downloads
17
+ mcpServers: ['@react-mcp/server', 'react-mcp-tools'],
18
+ contextContribution: ['frontend', 'ui_library', 'state_management'],
19
+ detect(projectPath) {
20
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
21
+ if (!(0, fs_1.existsSync)(packageJsonPath)) {
22
+ return false;
23
+ }
24
+ try {
25
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
26
+ const allDeps = {
27
+ ...packageJson.dependencies,
28
+ ...packageJson.devDependencies,
29
+ };
30
+ return 'react' in allDeps || 'react-dom' in allDeps;
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ },
36
+ generateContext(projectPath) {
37
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
38
+ let version = 'unknown';
39
+ let hasTypeScript = false;
40
+ if ((0, fs_1.existsSync)(packageJsonPath)) {
41
+ try {
42
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
43
+ const allDeps = {
44
+ ...packageJson.dependencies,
45
+ ...packageJson.devDependencies,
46
+ };
47
+ version = allDeps.react || 'latest';
48
+ hasTypeScript = 'typescript' in allDeps || '@types/react' in allDeps;
49
+ }
50
+ catch {
51
+ // Fallback to defaults
52
+ }
53
+ }
54
+ return {
55
+ stack: {
56
+ frontend: `React ${version}`,
57
+ ui_library: 'React Components',
58
+ state_management: 'React Hooks',
59
+ main_language: hasTypeScript ? 'TypeScript' : 'JavaScript',
60
+ },
61
+ integration: {
62
+ framework: 'react',
63
+ mcp_servers: this.mcpServers,
64
+ recommended_tools: [
65
+ 'React Developer Tools (browser extension)',
66
+ '@react-mcp/server for Claude Desktop integration',
67
+ 'ESLint with react plugin',
68
+ ],
69
+ },
70
+ };
71
+ },
72
+ };
73
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/family/detectors/react.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,2BAA8C;AAC9C,+BAA4B;AAEf,QAAA,aAAa,GAAwB;IAChD,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,OAAO;IACpB,IAAI,EAAE,QAAQ,EAAE,4CAA4C;IAC5D,YAAY,EAAE,EAAE;IAChB,cAAc,EAAE,UAAU,EAAE,wBAAwB;IACpD,UAAU,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;IACpD,mBAAmB,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC;IAEnE,MAAM,CAAC,WAAmB;QACxB,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAE1D,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG;gBACd,GAAG,WAAW,CAAC,YAAY;gBAC3B,GAAG,WAAW,CAAC,eAAe;aAC/B,CAAC;YAEF,OAAO,OAAO,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,eAAe,CAAC,WAAmB;QACjC,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAG,SAAS,CAAC;QACxB,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,IAAI,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG;oBACd,GAAG,WAAW,CAAC,YAAY;oBAC3B,GAAG,WAAW,CAAC,eAAe;iBAC/B,CAAC;gBAEF,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;gBACpC,aAAa,GAAG,YAAY,IAAI,OAAO,IAAI,cAAc,IAAI,OAAO,CAAC;YACvE,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE;gBACL,QAAQ,EAAE,SAAS,OAAO,EAAE;gBAC5B,UAAU,EAAE,kBAAkB;gBAC9B,gBAAgB,EAAE,aAAa;gBAC/B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;aAC3D;YACD,WAAW,EAAE;gBACX,SAAS,EAAE,OAAO;gBAClB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,iBAAiB,EAAE;oBACjB,2CAA2C;oBAC3C,kDAAkD;oBAClD,0BAA0B;iBAC3B;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Svelte Integration Detector
3
+ *
4
+ * Detects Svelte/SvelteKit usage and generates Svelte-optimized .faf context
5
+ */
6
+ import { IntegrationDetector } from '../types.js';
7
+ export declare const svelteDetector: IntegrationDetector;
8
+ //# sourceMappingURL=svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../../src/family/detectors/svelte.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAW,MAAM,aAAa,CAAC;AAI3D,eAAO,MAAM,cAAc,EAAE,mBAuF5B,CAAC"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ /**
3
+ * Svelte Integration Detector
4
+ *
5
+ * Detects Svelte/SvelteKit usage and generates Svelte-optimized .faf context
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.svelteDetector = void 0;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ exports.svelteDetector = {
12
+ name: 'svelte',
13
+ displayName: 'Svelte',
14
+ tier: 'gold', // Based on evaluation: Svelte will score 95+
15
+ qualityScore: 96,
16
+ weeklyAdoption: 400_000, // ~400k weekly downloads
17
+ mcpServers: ['@sveltejs/mcp', 'svelte-kit-mcp'],
18
+ contextContribution: ['frontend', 'ui_library', 'state_management'],
19
+ detect(projectPath) {
20
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
21
+ if (!(0, fs_1.existsSync)(packageJsonPath)) {
22
+ return false;
23
+ }
24
+ try {
25
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
26
+ const allDeps = {
27
+ ...packageJson.dependencies,
28
+ ...packageJson.devDependencies,
29
+ };
30
+ return 'svelte' in allDeps || '@sveltejs/kit' in allDeps;
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ },
36
+ generateContext(projectPath) {
37
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
38
+ let version = 'unknown';
39
+ let isSvelteKit = false;
40
+ let hasTypeScript = false;
41
+ if ((0, fs_1.existsSync)(packageJsonPath)) {
42
+ try {
43
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
44
+ const allDeps = {
45
+ ...packageJson.dependencies,
46
+ ...packageJson.devDependencies,
47
+ };
48
+ version = allDeps.svelte || allDeps['@sveltejs/kit'] || 'latest';
49
+ isSvelteKit = '@sveltejs/kit' in allDeps;
50
+ hasTypeScript = 'typescript' in allDeps || (0, fs_1.existsSync)((0, path_1.join)(projectPath, 'tsconfig.json'));
51
+ }
52
+ catch {
53
+ // Fallback to defaults
54
+ }
55
+ }
56
+ // Check for SvelteKit structure
57
+ const svelteConfigExists = (0, fs_1.existsSync)((0, path_1.join)(projectPath, 'svelte.config.js'));
58
+ const baseContext = {
59
+ stack: {
60
+ frontend: `Svelte ${version}`,
61
+ ui_library: 'Svelte Components',
62
+ state_management: 'Svelte Stores',
63
+ main_language: hasTypeScript ? 'TypeScript' : 'JavaScript',
64
+ },
65
+ integration: {
66
+ framework: 'svelte',
67
+ mcp_servers: this.mcpServers,
68
+ recommended_tools: [
69
+ 'Svelte DevTools',
70
+ '@sveltejs/mcp for Claude Desktop integration',
71
+ 'Vite for build tooling',
72
+ ],
73
+ },
74
+ };
75
+ // Add SvelteKit-specific context
76
+ if (isSvelteKit) {
77
+ baseContext.stack = {
78
+ ...baseContext.stack,
79
+ backend: 'SvelteKit Server Routes',
80
+ build: 'Vite + SvelteKit',
81
+ api_type: 'REST (SvelteKit endpoints)',
82
+ };
83
+ baseContext.project = {
84
+ architecture: 'SvelteKit Full-Stack',
85
+ };
86
+ }
87
+ return baseContext;
88
+ },
89
+ };
90
+ //# sourceMappingURL=svelte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.js","sourceRoot":"","sources":["../../../src/family/detectors/svelte.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TypeScript Integration Detector
3
+ *
4
+ * Detects TypeScript usage and generates TypeScript-optimized .faf context
5
+ */
6
+ import { IntegrationDetector } from '../types.js';
7
+ export declare const typescriptDetector: IntegrationDetector;
8
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/family/detectors/typescript.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAW,MAAM,aAAa,CAAC;AAI3D,eAAO,MAAM,kBAAkB,EAAE,mBAkGhC,CAAC"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * TypeScript Integration Detector
4
+ *
5
+ * Detects TypeScript usage and generates TypeScript-optimized .faf context
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.typescriptDetector = void 0;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ exports.typescriptDetector = {
12
+ name: 'typescript',
13
+ displayName: 'TypeScript',
14
+ tier: 'trophy', // Based on evaluation: TypeScript will score 99+
15
+ qualityScore: 99,
16
+ weeklyAdoption: 40_000_000, // ~40M weekly downloads
17
+ mcpServers: ['typescript-language-server', '@typescript/mcp-tools'],
18
+ contextContribution: ['main_language', 'type_system'],
19
+ detect(projectPath) {
20
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
21
+ const tsconfigPath = (0, path_1.join)(projectPath, 'tsconfig.json');
22
+ // Check for tsconfig.json first (strongest signal)
23
+ if ((0, fs_1.existsSync)(tsconfigPath)) {
24
+ return true;
25
+ }
26
+ // Check package.json dependencies
27
+ if (!(0, fs_1.existsSync)(packageJsonPath)) {
28
+ return false;
29
+ }
30
+ try {
31
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
32
+ const allDeps = {
33
+ ...packageJson.dependencies,
34
+ ...packageJson.devDependencies,
35
+ };
36
+ return 'typescript' in allDeps;
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ },
42
+ generateContext(projectPath) {
43
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
44
+ const tsconfigPath = (0, path_1.join)(projectPath, 'tsconfig.json');
45
+ let version = 'unknown';
46
+ let strictMode = false;
47
+ let target = 'unknown';
48
+ let moduleResolution = 'unknown';
49
+ // Get TypeScript version from package.json
50
+ if ((0, fs_1.existsSync)(packageJsonPath)) {
51
+ try {
52
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
53
+ const allDeps = {
54
+ ...packageJson.dependencies,
55
+ ...packageJson.devDependencies,
56
+ };
57
+ version = allDeps.typescript || 'latest';
58
+ }
59
+ catch {
60
+ // Fallback
61
+ }
62
+ }
63
+ // Get compiler options from tsconfig.json
64
+ if ((0, fs_1.existsSync)(tsconfigPath)) {
65
+ try {
66
+ const tsconfig = JSON.parse((0, fs_1.readFileSync)(tsconfigPath, 'utf-8'));
67
+ const compilerOptions = tsconfig.compilerOptions || {};
68
+ strictMode = compilerOptions.strict === true;
69
+ target = compilerOptions.target || 'ES2015';
70
+ moduleResolution = compilerOptions.moduleResolution || 'node';
71
+ }
72
+ catch {
73
+ // Fallback
74
+ }
75
+ }
76
+ return {
77
+ stack: {
78
+ main_language: `TypeScript ${version}`,
79
+ type_system: strictMode ? 'TypeScript Strict Mode' : 'TypeScript',
80
+ build: 'TypeScript Compiler (tsc)',
81
+ },
82
+ project: {
83
+ typescript_config: {
84
+ strict: strictMode,
85
+ target,
86
+ module_resolution: moduleResolution,
87
+ },
88
+ },
89
+ integration: {
90
+ framework: 'typescript',
91
+ mcp_servers: this.mcpServers,
92
+ recommended_tools: [
93
+ 'typescript-language-server for LSP support',
94
+ '@typescript/mcp-tools for Claude Desktop',
95
+ 'ts-node for development',
96
+ 'ESLint with @typescript-eslint plugin',
97
+ ],
98
+ },
99
+ };
100
+ },
101
+ };
102
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/family/detectors/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Vite Integration Detector
3
+ *
4
+ * Detects Vite usage and generates Vite-optimized .faf context
5
+ */
6
+ import { IntegrationDetector } from '../types.js';
7
+ export declare const viteDetector: IntegrationDetector;
8
+ //# sourceMappingURL=vite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../../../src/family/detectors/vite.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAW,MAAM,aAAa,CAAC;AAI3D,eAAO,MAAM,YAAY,EAAE,mBAwF1B,CAAC"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Vite Integration Detector
4
+ *
5
+ * Detects Vite usage and generates Vite-optimized .faf context
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.viteDetector = void 0;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ exports.viteDetector = {
12
+ name: 'vite',
13
+ displayName: 'Vite',
14
+ tier: 'gold', // Based on evaluation: Vite will score 95+
15
+ qualityScore: 97,
16
+ weeklyAdoption: 9_000_000, // ~9M weekly downloads
17
+ mcpServers: ['vite-mcp-server'],
18
+ contextContribution: ['build', 'package_manager'],
19
+ detect(projectPath) {
20
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
21
+ const viteConfigExists = (0, fs_1.existsSync)((0, path_1.join)(projectPath, 'vite.config.js')) ||
22
+ (0, fs_1.existsSync)((0, path_1.join)(projectPath, 'vite.config.ts'));
23
+ // vite.config.* is strongest signal
24
+ if (viteConfigExists) {
25
+ return true;
26
+ }
27
+ // Check package.json dependencies
28
+ if (!(0, fs_1.existsSync)(packageJsonPath)) {
29
+ return false;
30
+ }
31
+ try {
32
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
33
+ const allDeps = {
34
+ ...packageJson.dependencies,
35
+ ...packageJson.devDependencies,
36
+ };
37
+ return 'vite' in allDeps;
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ },
43
+ generateContext(projectPath) {
44
+ const packageJsonPath = (0, path_1.join)(projectPath, 'package.json');
45
+ let version = 'unknown';
46
+ let plugins = [];
47
+ // Get Vite version and plugins from package.json
48
+ if ((0, fs_1.existsSync)(packageJsonPath)) {
49
+ try {
50
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
51
+ const allDeps = {
52
+ ...packageJson.dependencies,
53
+ ...packageJson.devDependencies,
54
+ };
55
+ version = allDeps.vite || 'latest';
56
+ // Detect common Vite plugins
57
+ const vitePlugins = Object.keys(allDeps).filter((dep) => dep.startsWith('@vitejs/plugin-') || dep.startsWith('vite-plugin-'));
58
+ plugins = vitePlugins.map((plugin) => plugin.replace('@vitejs/plugin-', '').replace('vite-plugin-', ''));
59
+ }
60
+ catch {
61
+ // Fallback
62
+ }
63
+ }
64
+ return {
65
+ stack: {
66
+ build: `Vite ${version}`,
67
+ package_manager: 'npm/pnpm/yarn (Vite compatible)',
68
+ },
69
+ project: {
70
+ build_config: {
71
+ tool: 'vite',
72
+ plugins: plugins.length > 0 ? plugins : ['none detected'],
73
+ hmr: 'enabled',
74
+ optimization: 'production builds',
75
+ },
76
+ },
77
+ integration: {
78
+ framework: 'vite',
79
+ mcp_servers: this.mcpServers,
80
+ recommended_tools: [
81
+ 'vite-mcp-server for Claude Desktop integration',
82
+ 'Vite DevTools (browser extension)',
83
+ '@vitejs/plugin-react or @vitejs/plugin-vue for framework support',
84
+ ],
85
+ },
86
+ };
87
+ },
88
+ };
89
+ //# sourceMappingURL=vite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../../../src/family/detectors/vite.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,2BAA8C;AAC9C,+BAA4B;AAEf,QAAA,YAAY,GAAwB;IAC/C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,MAAM;IACnB,IAAI,EAAE,MAAM,EAAE,2CAA2C;IACzD,YAAY,EAAE,EAAE;IAChB,cAAc,EAAE,SAAS,EAAE,uBAAuB;IAClD,UAAU,EAAE,CAAC,iBAAiB,CAAC;IAC/B,mBAAmB,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAEjD,MAAM,CAAC,WAAmB;QACxB,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GACpB,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC/C,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAElD,oCAAoC;QACpC,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG;gBACd,GAAG,WAAW,CAAC,YAAY;gBAC3B,GAAG,WAAW,CAAC,eAAe;aAC/B,CAAC;YAEF,OAAO,MAAM,IAAI,OAAO,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,eAAe,CAAC,WAAmB;QACjC,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAG,SAAS,CAAC;QACxB,IAAI,OAAO,GAAa,EAAE,CAAC;QAE3B,iDAAiD;QACjD,IAAI,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG;oBACd,GAAG,WAAW,CAAC,YAAY;oBAC3B,GAAG,WAAW,CAAC,eAAe;iBAC/B,CAAC;gBAEF,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;gBAEnC,6BAA6B;gBAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACtD,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CACpE,CAAC;gBACF,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3G,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW;YACb,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE;gBACL,KAAK,EAAE,QAAQ,OAAO,EAAE;gBACxB,eAAe,EAAE,iCAAiC;aACnD;YACD,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;oBACzD,GAAG,EAAE,SAAS;oBACd,YAAY,EAAE,mBAAmB;iBAClC;aACF;YACD,WAAW,EAAE;gBACX,SAAS,EAAE,MAAM;gBACjB,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,iBAAiB,EAAE;oBACjB,gDAAgD;oBAChD,mCAAmC;oBACnC,kEAAkE;iBACnE;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * FAF Integration System
3
+ *
4
+ * Championship-grade integration detection and context generation
5
+ *
6
+ * Phase 1: Core integrations (React, Next, Svelte, TypeScript, Vite, n8n)
7
+ * Minimum quality: 85% (Bronze tier)
8
+ */
9
+ export type { FafFile, IntegrationDetector, IntegrationRegistry } from './types.js';
10
+ export { FafIntegrationRegistry, integrationRegistry } from './registry.js';
11
+ export { reactDetector } from './detectors/react.js';
12
+ export { nextDetector } from './detectors/next.js';
13
+ export { svelteDetector } from './detectors/svelte.js';
14
+ export { typescriptDetector } from './detectors/typescript.js';
15
+ export { viteDetector } from './detectors/vite.js';
16
+ export { n8nDetector } from './detectors/n8n.js';
17
+ export declare function detectAndGenerate(projectPath: string): Promise<{
18
+ detected: import("./types.js").IntegrationDetector[];
19
+ context: Partial<import("./types.js").FafFile>;
20
+ }>;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/family/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGpF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM;;;GAS1D"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * FAF Integration System
4
+ *
5
+ * Championship-grade integration detection and context generation
6
+ *
7
+ * Phase 1: Core integrations (React, Next, Svelte, TypeScript, Vite, n8n)
8
+ * Minimum quality: 85% (Bronze tier)
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.n8nDetector = exports.viteDetector = exports.typescriptDetector = exports.svelteDetector = exports.nextDetector = exports.reactDetector = exports.integrationRegistry = exports.FafIntegrationRegistry = void 0;
45
+ exports.detectAndGenerate = detectAndGenerate;
46
+ // Export registry (primary interface)
47
+ var registry_js_1 = require("./registry.js");
48
+ Object.defineProperty(exports, "FafIntegrationRegistry", { enumerable: true, get: function () { return registry_js_1.FafIntegrationRegistry; } });
49
+ Object.defineProperty(exports, "integrationRegistry", { enumerable: true, get: function () { return registry_js_1.integrationRegistry; } });
50
+ // Export individual detectors (for direct use)
51
+ var react_js_1 = require("./detectors/react.js");
52
+ Object.defineProperty(exports, "reactDetector", { enumerable: true, get: function () { return react_js_1.reactDetector; } });
53
+ var next_js_1 = require("./detectors/next.js");
54
+ Object.defineProperty(exports, "nextDetector", { enumerable: true, get: function () { return next_js_1.nextDetector; } });
55
+ var svelte_js_1 = require("./detectors/svelte.js");
56
+ Object.defineProperty(exports, "svelteDetector", { enumerable: true, get: function () { return svelte_js_1.svelteDetector; } });
57
+ var typescript_js_1 = require("./detectors/typescript.js");
58
+ Object.defineProperty(exports, "typescriptDetector", { enumerable: true, get: function () { return typescript_js_1.typescriptDetector; } });
59
+ var vite_js_1 = require("./detectors/vite.js");
60
+ Object.defineProperty(exports, "viteDetector", { enumerable: true, get: function () { return vite_js_1.viteDetector; } });
61
+ var n8n_js_1 = require("./detectors/n8n.js");
62
+ Object.defineProperty(exports, "n8nDetector", { enumerable: true, get: function () { return n8n_js_1.n8nDetector; } });
63
+ // Convenience function: Detect and generate context in one call
64
+ async function detectAndGenerate(projectPath) {
65
+ const { integrationRegistry } = await Promise.resolve().then(() => __importStar(require('./registry.js')));
66
+ const detected = await integrationRegistry.detectAll(projectPath);
67
+ const context = await integrationRegistry.generateContext(projectPath);
68
+ return {
69
+ detected,
70
+ context,
71
+ };
72
+ }
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/family/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBH,8CASC;AArBD,sCAAsC;AACtC,6CAA4E;AAAnE,qHAAA,sBAAsB,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AAEpD,+CAA+C;AAC/C,iDAAqD;AAA5C,yGAAA,aAAa,OAAA;AACtB,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AACrB,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,2DAA+D;AAAtD,mHAAA,kBAAkB,OAAA;AAC3B,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AACrB,6CAAiD;AAAxC,qGAAA,WAAW,OAAA;AAEpB,gEAAgE;AACzD,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAEvE,OAAO;QACL,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * FAF Integration Registry
3
+ *
4
+ * Central registry for all approved FAF integrations
5
+ * Orchestrates detection and context generation
6
+ */
7
+ import { IntegrationDetector, IntegrationRegistry, FafFile } from './types.js';
8
+ import { reactDetector } from './detectors/react.js';
9
+ import { nextDetector } from './detectors/next.js';
10
+ import { svelteDetector } from './detectors/svelte.js';
11
+ import { typescriptDetector } from './detectors/typescript.js';
12
+ import { viteDetector } from './detectors/vite.js';
13
+ import { n8nDetector } from './detectors/n8n.js';
14
+ /**
15
+ * FAF Integration Registry
16
+ *
17
+ * Championship standard: Only integrations with 85+ quality score
18
+ */
19
+ export declare class FafIntegrationRegistry implements IntegrationRegistry {
20
+ integrations: Map<string, IntegrationDetector>;
21
+ constructor();
22
+ /**
23
+ * Register a new integration
24
+ */
25
+ register(detector: IntegrationDetector): void;
26
+ /**
27
+ * Get integration by name
28
+ */
29
+ get(name: string): IntegrationDetector | undefined;
30
+ /**
31
+ * Detect all integrations present in a project
32
+ */
33
+ detectAll(projectPath: string): Promise<IntegrationDetector[]>;
34
+ /**
35
+ * Generate combined .faf context from all detected integrations
36
+ */
37
+ generateContext(projectPath: string): Promise<Partial<FafFile>>;
38
+ /**
39
+ * Generate human-readable summary of detected integrations
40
+ */
41
+ private generateSummary;
42
+ /**
43
+ * Get all integration names
44
+ */
45
+ list(): string[];
46
+ /**
47
+ * Get integration statistics
48
+ */
49
+ getStats(): {
50
+ total: number;
51
+ byTier: Record<string, number>;
52
+ totalWeeklyAdoption: number;
53
+ };
54
+ }
55
+ export declare const integrationRegistry: FafIntegrationRegistry;
56
+ export { reactDetector, nextDetector, svelteDetector, typescriptDetector, viteDetector, n8nDetector };
57
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/family/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;;IAc/C;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAI7C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIlD;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiBpE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAmDrE;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,mBAAmB,EAAE,MAAM,CAAC;KAC7B;CAiBF;AAGD,eAAO,MAAM,mBAAmB,wBAA+B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}