faf-cli 3.0.5 → 3.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 (167) hide show
  1. package/README.md +238 -24
  2. package/assets/screenshots/package-json+project-faf.png +0 -0
  3. package/dist/big-orange/bigo-push.d.ts +18 -0
  4. package/dist/big-orange/bigo-push.d.ts.map +1 -0
  5. package/dist/big-orange/bigo-push.js +88 -0
  6. package/dist/big-orange/bigo-push.js.map +1 -0
  7. package/dist/big-orange/compare.d.ts +11 -0
  8. package/dist/big-orange/compare.d.ts.map +1 -0
  9. package/dist/big-orange/compare.js +172 -0
  10. package/dist/big-orange/compare.js.map +1 -0
  11. package/dist/big-orange/faf-generator.d.ts +22 -0
  12. package/dist/big-orange/faf-generator.d.ts.map +1 -0
  13. package/dist/big-orange/faf-generator.js +215 -0
  14. package/dist/big-orange/faf-generator.js.map +1 -0
  15. package/dist/big-orange/index.d.ts +7 -0
  16. package/dist/big-orange/index.d.ts.map +1 -0
  17. package/dist/big-orange/index.js +96 -0
  18. package/dist/big-orange/index.js.map +1 -0
  19. package/dist/big-orange/types.d.ts +62 -0
  20. package/dist/big-orange/types.d.ts.map +1 -0
  21. package/dist/big-orange/types.js +7 -0
  22. package/dist/big-orange/types.js.map +1 -0
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js +137 -1
  25. package/dist/cli.js.map +1 -1
  26. package/dist/commands/auto.d.ts.map +1 -1
  27. package/dist/commands/auto.js +69 -12
  28. package/dist/commands/auto.js.map +1 -1
  29. package/dist/commands/bi-sync.d.ts.map +1 -1
  30. package/dist/commands/bi-sync.js +10 -3
  31. package/dist/commands/bi-sync.js.map +1 -1
  32. package/dist/commands/drift.d.ts +16 -0
  33. package/dist/commands/drift.d.ts.map +1 -0
  34. package/dist/commands/drift.js +517 -0
  35. package/dist/commands/drift.js.map +1 -0
  36. package/dist/commands/git.d.ts +25 -0
  37. package/dist/commands/git.d.ts.map +1 -0
  38. package/dist/commands/git.js +355 -0
  39. package/dist/commands/git.js.map +1 -0
  40. package/dist/commands/init.d.ts.map +1 -1
  41. package/dist/commands/init.js +5 -4
  42. package/dist/commands/init.js.map +1 -1
  43. package/dist/commands/migrate.d.ts +11 -0
  44. package/dist/commands/migrate.d.ts.map +1 -0
  45. package/dist/commands/migrate.js +85 -0
  46. package/dist/commands/migrate.js.map +1 -0
  47. package/dist/commands/rename.d.ts +18 -0
  48. package/dist/commands/rename.d.ts.map +1 -0
  49. package/dist/commands/rename.js +211 -0
  50. package/dist/commands/rename.js.map +1 -0
  51. package/dist/commands/taf-init.d.ts +14 -0
  52. package/dist/commands/taf-init.d.ts.map +1 -0
  53. package/dist/commands/taf-init.js +138 -0
  54. package/dist/commands/taf-init.js.map +1 -0
  55. package/dist/commands/taf-log.d.ts +27 -0
  56. package/dist/commands/taf-log.d.ts.map +1 -0
  57. package/dist/commands/taf-log.js +241 -0
  58. package/dist/commands/taf-log.js.map +1 -0
  59. package/dist/commands/taf-stats.d.ts +8 -0
  60. package/dist/commands/taf-stats.d.ts.map +1 -0
  61. package/dist/commands/taf-stats.js +133 -0
  62. package/dist/commands/taf-stats.js.map +1 -0
  63. package/dist/commands/taf-validate.d.ts +8 -0
  64. package/dist/commands/taf-validate.d.ts.map +1 -0
  65. package/dist/commands/taf-validate.js +108 -0
  66. package/dist/commands/taf-validate.js.map +1 -0
  67. package/dist/commands/taf.d.ts +13 -0
  68. package/dist/commands/taf.d.ts.map +1 -0
  69. package/dist/commands/taf.js +85 -0
  70. package/dist/commands/taf.js.map +1 -0
  71. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  72. package/dist/compiler/faf-compiler.js +18 -0
  73. package/dist/compiler/faf-compiler.js.map +1 -1
  74. package/dist/generators/faf-generator-championship.d.ts.map +1 -1
  75. package/dist/generators/faf-generator-championship.js +1 -0
  76. package/dist/generators/faf-generator-championship.js.map +1 -1
  77. package/dist/github/github-extractor.d.ts +56 -0
  78. package/dist/github/github-extractor.d.ts.map +1 -0
  79. package/dist/github/github-extractor.js +328 -0
  80. package/dist/github/github-extractor.js.map +1 -0
  81. package/dist/github/popular-repos.d.ts +43 -0
  82. package/dist/github/popular-repos.d.ts.map +1 -0
  83. package/dist/github/popular-repos.js +205 -0
  84. package/dist/github/popular-repos.js.map +1 -0
  85. package/dist/github/repo-selector.d.ts +48 -0
  86. package/dist/github/repo-selector.d.ts.map +1 -0
  87. package/dist/github/repo-selector.js +277 -0
  88. package/dist/github/repo-selector.js.map +1 -0
  89. package/dist/taf/index.d.ts +17 -0
  90. package/dist/taf/index.d.ts.map +1 -0
  91. package/dist/taf/index.js +57 -0
  92. package/dist/taf/index.js.map +1 -0
  93. package/dist/taf/logger.d.ts +86 -0
  94. package/dist/taf/logger.d.ts.map +1 -0
  95. package/dist/taf/logger.js +135 -0
  96. package/dist/taf/logger.js.map +1 -0
  97. package/dist/taf/parser.d.ts +32 -0
  98. package/dist/taf/parser.d.ts.map +1 -0
  99. package/dist/taf/parser.js +161 -0
  100. package/dist/taf/parser.js.map +1 -0
  101. package/dist/taf/stats.d.ts +31 -0
  102. package/dist/taf/stats.d.ts.map +1 -0
  103. package/dist/taf/stats.js +182 -0
  104. package/dist/taf/stats.js.map +1 -0
  105. package/dist/taf/types.d.ts +66 -0
  106. package/dist/taf/types.d.ts.map +1 -0
  107. package/dist/taf/types.js +9 -0
  108. package/dist/taf/types.js.map +1 -0
  109. package/dist/taf/validator.d.ts +18 -0
  110. package/dist/taf/validator.d.ts.map +1 -0
  111. package/dist/taf/validator.js +148 -0
  112. package/dist/taf/validator.js.map +1 -0
  113. package/dist/utils/file-utils.d.ts +10 -0
  114. package/dist/utils/file-utils.d.ts.map +1 -1
  115. package/dist/utils/file-utils.js +196 -33
  116. package/dist/utils/file-utils.js.map +1 -1
  117. package/dist/utils/native-file-finder.js +1 -1
  118. package/dist/utils/native-file-finder.js.map +1 -1
  119. package/dist/utils/yaml-generator.d.ts +1 -0
  120. package/dist/utils/yaml-generator.d.ts.map +1 -1
  121. package/dist/utils/yaml-generator.js +1 -0
  122. package/dist/utils/yaml-generator.js.map +1 -1
  123. package/package.json +12 -4
  124. package/dist/commands/create.d.ts +0 -13
  125. package/dist/commands/create.d.ts.map +0 -1
  126. package/dist/commands/create.js +0 -78
  127. package/dist/commands/create.js.map +0 -1
  128. package/dist/core/platform-adapters.d.ts +0 -76
  129. package/dist/core/platform-adapters.d.ts.map +0 -1
  130. package/dist/core/platform-adapters.js +0 -407
  131. package/dist/core/platform-adapters.js.map +0 -1
  132. package/dist/core/universal-intelligence-generator.d.ts +0 -156
  133. package/dist/core/universal-intelligence-generator.d.ts.map +0 -1
  134. package/dist/core/universal-intelligence-generator.js +0 -352
  135. package/dist/core/universal-intelligence-generator.js.map +0 -1
  136. package/dist/enrichment/auto-corrector.d.ts +0 -28
  137. package/dist/enrichment/auto-corrector.d.ts.map +0 -1
  138. package/dist/enrichment/auto-corrector.js +0 -106
  139. package/dist/enrichment/auto-corrector.js.map +0 -1
  140. package/dist/enrichment/n8n-analyzer.d.ts +0 -259
  141. package/dist/enrichment/n8n-analyzer.d.ts.map +0 -1
  142. package/dist/enrichment/n8n-analyzer.js +0 -346
  143. package/dist/enrichment/n8n-analyzer.js.map +0 -1
  144. package/dist/enrichment/n8n-faf-generator.d.ts +0 -68
  145. package/dist/enrichment/n8n-faf-generator.d.ts.map +0 -1
  146. package/dist/enrichment/n8n-faf-generator.js +0 -354
  147. package/dist/enrichment/n8n-faf-generator.js.map +0 -1
  148. package/dist/enrichment/question-asker.d.ts +0 -22
  149. package/dist/enrichment/question-asker.d.ts.map +0 -1
  150. package/dist/enrichment/question-asker.js +0 -113
  151. package/dist/enrichment/question-asker.js.map +0 -1
  152. package/dist/enrichment/slot-filler.d.ts +0 -73
  153. package/dist/enrichment/slot-filler.d.ts.map +0 -1
  154. package/dist/enrichment/slot-filler.js +0 -253
  155. package/dist/enrichment/slot-filler.js.map +0 -1
  156. package/dist/scoring/championship-scorer.d.ts +0 -114
  157. package/dist/scoring/championship-scorer.d.ts.map +0 -1
  158. package/dist/scoring/championship-scorer.js +0 -380
  159. package/dist/scoring/championship-scorer.js.map +0 -1
  160. package/dist/scoring/score-calculator.d.ts +0 -29
  161. package/dist/scoring/score-calculator.d.ts.map +0 -1
  162. package/dist/scoring/score-calculator.js +0 -520
  163. package/dist/scoring/score-calculator.js.map +0 -1
  164. package/dist/tests/manual-validation.d.ts +0 -8
  165. package/dist/tests/manual-validation.d.ts.map +0 -1
  166. package/dist/tests/manual-validation.js +0 -114
  167. package/dist/tests/manual-validation.js.map +0 -1
@@ -1,78 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🏎️ faf create - Conversational .faf Creation
4
- * Transform workflow files (n8n, etc.) into RICH .faf documentation
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.createCommand = createCommand;
11
- const colors_1 = require("../fix-once/colors");
12
- const fs_1 = require("fs");
13
- const path_1 = __importDefault(require("path"));
14
- const championship_style_1 = require("../utils/championship-style");
15
- const n8n_faf_generator_1 = require("../enrichment/n8n-faf-generator");
16
- const n8n_analyzer_1 = require("../enrichment/n8n-analyzer");
17
- /**
18
- * Main create command - detects file type and generates .faf
19
- */
20
- async function createCommand(workflowFile, options = {}) {
21
- const startTime = Date.now();
22
- try {
23
- // Resolve full path
24
- const resolvedPath = path_1.default.resolve(workflowFile);
25
- // Check if file exists
26
- const fileExists = await fs_1.promises.stat(resolvedPath).then(() => true).catch(() => false);
27
- if (!fileExists) {
28
- console.log();
29
- console.log(championship_style_1.FAF_COLORS.fafOrange(`⚠️ File not found: ${workflowFile}`));
30
- console.log(championship_style_1.FAF_COLORS.fafWhite(' Please provide a valid workflow file path'));
31
- console.log();
32
- return;
33
- }
34
- // Detect file type
35
- const isN8nWorkflow = await n8n_analyzer_1.N8nWorkflowAnalyzer.detect(resolvedPath);
36
- if (!isN8nWorkflow) {
37
- console.log();
38
- console.log(championship_style_1.FAF_COLORS.fafOrange(`⚠️ Unsupported file type`));
39
- console.log(championship_style_1.FAF_COLORS.fafWhite(' Currently supported:'));
40
- console.log(championship_style_1.FAF_COLORS.fafCyan(' • n8n workflow JSON files'));
41
- console.log();
42
- console.log(championship_style_1.FAF_COLORS.fafWhite(' Coming soon: OpenAI GPT configs, Google OPAL, Make.com'));
43
- console.log();
44
- return;
45
- }
46
- // Generate .faf for n8n workflow
47
- if (!options.quiet) {
48
- console.log();
49
- console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Creating championship .faf from n8n workflow...`));
50
- }
51
- const generator = new n8n_faf_generator_1.N8nFafGenerator();
52
- const outputPath = await generator.generate({
53
- workflowFile: resolvedPath,
54
- outputFile: options.output,
55
- quiet: options.quiet
56
- });
57
- const elapsedTime = Date.now() - startTime;
58
- if (!options.quiet) {
59
- console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.party} Success!`));
60
- console.log();
61
- console.log(championship_style_1.FAF_COLORS.fafWhite(`⚡️ Created in ${elapsedTime}ms`));
62
- console.log();
63
- console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.magic_wand} Next Steps:`));
64
- console.log(championship_style_1.FAF_COLORS.fafCyan(' 1. faf score # See your championship score'));
65
- console.log(championship_style_1.FAF_COLORS.fafCyan(' 2. faf bi-sync # Enable context mirroring'));
66
- console.log(championship_style_1.FAF_COLORS.fafCyan(' 3. faf trust # Build AI confidence'));
67
- console.log();
68
- }
69
- }
70
- catch (error) {
71
- console.log();
72
- console.log(championship_style_1.FAF_COLORS.fafOrange(`⚠️ Creation failed:`));
73
- console.log(colors_1.chalk.red(error instanceof Error ? error.message : String(error)));
74
- console.log();
75
- process.exit(1);
76
- }
77
- }
78
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAiBH,sCAiEC;AAhFD,+CAA2C;AAC3C,2BAAoC;AACpC,gDAAwB;AACxB,oEAAoE;AACpE,uEAAkE;AAClE,6DAAiE;AAOjE;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,YAAoB,EAAE,UAAyB,EAAE;IACnF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,oBAAoB;QACpB,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEhD,uBAAuB;QACvB,MAAM,UAAU,GAAG,MAAM,aAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,mBAAmB;QACnB,MAAM,aAAa,GAAG,MAAM,kCAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAErE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,2DAA2D,CAAC,CAAC,CAAC;YAC9F,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,8BAAS,CAAC,MAAM,kDAAkD,CAAC,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,mCAAe,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC;YAC1C,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAE3C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,iBAAiB,WAAW,IAAI,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,GAAG,8BAAS,CAAC,UAAU,cAAc,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,cAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,76 +0,0 @@
1
- /**
2
- * 🏆 PLATFORM ADAPTERS
3
- *
4
- * Each platform (Opal, Make.com, etc.) is just an input adapter
5
- * The pattern is ALWAYS the same: interrogation → extraction → filtering → generation
6
- * The output is ALWAYS .faf
7
- *
8
- * FOUNDATIONAL FIRST, UNIVERSAL BY DEFAULT
9
- */
10
- import { UniversalIntelligenceGenerator, RawIntelligence, StructuredIntelligence } from './universal-intelligence-generator';
11
- /**
12
- * Google Opal Mini-App Generator
13
- *
14
- * Opal format: Visual node-based mini-apps
15
- * Architecture: User inputs → prompts → AI model calls → outputs
16
- */
17
- export declare class OpalMiniAppGenerator extends UniversalIntelligenceGenerator {
18
- detect(filePath: string): Promise<boolean>;
19
- extract(filePath: string): Promise<RawIntelligence>;
20
- filter(raw: RawIntelligence): Promise<StructuredIntelligence>;
21
- private detectOpalPattern;
22
- private extractInputs;
23
- private extractOutputs;
24
- }
25
- /**
26
- * Make.com Scenario Generator
27
- *
28
- * Make format: Blueprint JSON with 'name', 'flow', and 'metadata'
29
- * Architecture: Triggers → modules (in flow array) → actions
30
- *
31
- * Actual Make.com Blueprint Structure (validated 2025-10-10):
32
- * {
33
- * "name": "Scenario Name",
34
- * "flow": [ // Array of module objects
35
- * {
36
- * "id": 1,
37
- * "module": "gateway:CustomWebHook",
38
- * "version": 1,
39
- * "metadata": { "designer": { "x": 0, "y": 0 } }
40
- * }
41
- * ],
42
- * "metadata": {
43
- * "version": 1,
44
- * "scenario": { "roundtrips": 1, "maxErrors": 3, ... },
45
- * "designer": { "orphans": [] }
46
- * },
47
- * "scheduling": { "type": "indefinitely", "interval": 15 },
48
- * "created": "ISO timestamp",
49
- * "last_edit": "ISO timestamp"
50
- * }
51
- */
52
- export declare class MakeScenarioGenerator extends UniversalIntelligenceGenerator {
53
- detect(filePath: string): Promise<boolean>;
54
- extract(filePath: string): Promise<RawIntelligence>;
55
- filter(raw: RawIntelligence): Promise<StructuredIntelligence>;
56
- private detectMakePattern;
57
- private extractTriggers;
58
- private extractActions;
59
- private extractIntegrations;
60
- }
61
- /**
62
- * Code Project Generator
63
- *
64
- * Handles traditional code projects (package.json, requirements.txt, etc.)
65
- * This is what FAF already does well - just formalizing it in the universal pattern
66
- */
67
- export declare class CodeProjectGenerator extends UniversalIntelligenceGenerator {
68
- detect(filePath: string): Promise<boolean>;
69
- extract(filePath: string): Promise<RawIntelligence>;
70
- filter(raw: RawIntelligence): Promise<StructuredIntelligence>;
71
- }
72
- /**
73
- * Export all adapters for registration
74
- */
75
- export declare const PLATFORM_ADAPTERS: readonly [typeof OpalMiniAppGenerator, typeof MakeScenarioGenerator, typeof CodeProjectGenerator];
76
- //# sourceMappingURL=platform-adapters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-adapters.d.ts","sourceRoot":"","sources":["../../src/core/platform-adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,8BAA8B,EAC9B,eAAe,EACf,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,8BAA8B;IAEhE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuBnD,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgDnE,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;CAGvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,qBAAsB,SAAQ,8BAA8B;IAEjE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2BnD,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiDnE,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,mBAAmB;CAc5B;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,8BAA8B;IAEhE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB1C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBnD,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;CA8CpE;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,mGAIpB,CAAC"}
@@ -1,407 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🏆 PLATFORM ADAPTERS
4
- *
5
- * Each platform (Opal, Make.com, etc.) is just an input adapter
6
- * The pattern is ALWAYS the same: interrogation → extraction → filtering → generation
7
- * The output is ALWAYS .faf
8
- *
9
- * FOUNDATIONAL FIRST, UNIVERSAL BY DEFAULT
10
- */
11
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- var desc = Object.getOwnPropertyDescriptor(m, k);
14
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
- desc = { enumerable: true, get: function() { return m[k]; } };
16
- }
17
- Object.defineProperty(o, k2, desc);
18
- }) : (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- }));
22
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
- Object.defineProperty(o, "default", { enumerable: true, value: v });
24
- }) : function(o, v) {
25
- o["default"] = v;
26
- });
27
- var __importStar = (this && this.__importStar) || (function () {
28
- var ownKeys = function(o) {
29
- ownKeys = Object.getOwnPropertyNames || function (o) {
30
- var ar = [];
31
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
- return ar;
33
- };
34
- return ownKeys(o);
35
- };
36
- return function (mod) {
37
- if (mod && mod.__esModule) return mod;
38
- var result = {};
39
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
- __setModuleDefault(result, mod);
41
- return result;
42
- };
43
- })();
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.PLATFORM_ADAPTERS = exports.CodeProjectGenerator = exports.MakeScenarioGenerator = exports.OpalMiniAppGenerator = void 0;
46
- const universal_intelligence_generator_1 = require("./universal-intelligence-generator");
47
- /**
48
- * Google Opal Mini-App Generator
49
- *
50
- * Opal format: Visual node-based mini-apps
51
- * Architecture: User inputs → prompts → AI model calls → outputs
52
- */
53
- class OpalMiniAppGenerator extends universal_intelligence_generator_1.UniversalIntelligenceGenerator {
54
- async detect(filePath) {
55
- // Detect Opal mini-app config
56
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
57
- try {
58
- const content = await fs.readFile(filePath, 'utf-8');
59
- const json = JSON.parse(content);
60
- // Opal configs have 'steps' and 'model' fields (hypothetical structure)
61
- return !!(json.steps && json.model);
62
- }
63
- catch {
64
- return false;
65
- }
66
- }
67
- async extract(filePath) {
68
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
69
- const content = await fs.readFile(filePath, 'utf-8');
70
- const opalConfig = JSON.parse(content);
71
- return {
72
- data: {
73
- config: opalConfig,
74
- pattern: this.detectOpalPattern(opalConfig),
75
- steps: opalConfig.steps || [],
76
- model: opalConfig.model,
77
- inputs: this.extractInputs(opalConfig),
78
- outputs: this.extractOutputs(opalConfig),
79
- },
80
- confidence: 85,
81
- metadata: {
82
- source_type: 'opal-miniapp',
83
- source_file: filePath,
84
- extracted_at: new Date().toISOString(),
85
- },
86
- };
87
- }
88
- async filter(raw) {
89
- const { config, pattern, steps, model } = raw.data;
90
- const structured = {
91
- project: {
92
- name: config.name || 'Opal Mini-App',
93
- type: 'opal-miniapp',
94
- goal: config.description || 'AI-powered mini-application',
95
- },
96
- architecture: {
97
- pattern,
98
- components: steps.map((s) => s.type || s.action),
99
- },
100
- tech_stack: {
101
- platform: 'Google Opal',
102
- ai_model: model || 'Gemini',
103
- },
104
- human_context: {
105
- who: 'Opal Mini-App Creator',
106
- what: config.name || 'Opal Mini-App',
107
- why: config.description || 'AI-powered task automation',
108
- where: 'Google Opal Platform',
109
- when: 'Development',
110
- how: `Visual workflow with ${steps.length} steps using ${model}`,
111
- },
112
- source_data: raw.data,
113
- scores: this.calculateScores({
114
- project: {
115
- name: config.name,
116
- type: 'opal-miniapp',
117
- goal: config.description,
118
- },
119
- human_context: {
120
- who: 'Opal Mini-App Creator',
121
- what: config.name,
122
- why: config.description,
123
- where: 'Google Opal Platform',
124
- when: 'Development',
125
- how: `Visual workflow with ${steps.length} steps`,
126
- },
127
- }),
128
- generated: new Date().toISOString(),
129
- faf_version: '3.0.1',
130
- };
131
- return structured;
132
- }
133
- detectOpalPattern(config) {
134
- // Pattern detection based on steps
135
- const stepTypes = (config.steps || []).map((s) => s.type || s.action);
136
- if (stepTypes.includes('research') || stepTypes.includes('search')) {
137
- return 'Research Assistant';
138
- }
139
- if (stepTypes.includes('image')) {
140
- return 'Image Generation';
141
- }
142
- if (stepTypes.includes('text')) {
143
- return 'Text Processing';
144
- }
145
- return 'Generic Mini-App';
146
- }
147
- extractInputs(config) {
148
- return (config.inputs || []).map((i) => i.name || i.label);
149
- }
150
- extractOutputs(config) {
151
- return (config.outputs || []).map((o) => o.type || o.format);
152
- }
153
- }
154
- exports.OpalMiniAppGenerator = OpalMiniAppGenerator;
155
- /**
156
- * Make.com Scenario Generator
157
- *
158
- * Make format: Blueprint JSON with 'name', 'flow', and 'metadata'
159
- * Architecture: Triggers → modules (in flow array) → actions
160
- *
161
- * Actual Make.com Blueprint Structure (validated 2025-10-10):
162
- * {
163
- * "name": "Scenario Name",
164
- * "flow": [ // Array of module objects
165
- * {
166
- * "id": 1,
167
- * "module": "gateway:CustomWebHook",
168
- * "version": 1,
169
- * "metadata": { "designer": { "x": 0, "y": 0 } }
170
- * }
171
- * ],
172
- * "metadata": {
173
- * "version": 1,
174
- * "scenario": { "roundtrips": 1, "maxErrors": 3, ... },
175
- * "designer": { "orphans": [] }
176
- * },
177
- * "scheduling": { "type": "indefinitely", "interval": 15 },
178
- * "created": "ISO timestamp",
179
- * "last_edit": "ISO timestamp"
180
- * }
181
- */
182
- class MakeScenarioGenerator extends universal_intelligence_generator_1.UniversalIntelligenceGenerator {
183
- async detect(filePath) {
184
- // Detect Make.com scenario blueprint export
185
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
186
- try {
187
- const content = await fs.readFile(filePath, 'utf-8');
188
- const json = JSON.parse(content);
189
- // Make blueprints have 'name' and 'flow' (array of modules)
190
- return !!(json.name && Array.isArray(json.flow) && json.metadata);
191
- }
192
- catch {
193
- return false;
194
- }
195
- }
196
- async extract(filePath) {
197
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
198
- const content = await fs.readFile(filePath, 'utf-8');
199
- const blueprint = JSON.parse(content);
200
- // Extract modules from flow array
201
- const modules = blueprint.flow || [];
202
- return {
203
- data: {
204
- blueprint,
205
- pattern: this.detectMakePattern(blueprint),
206
- modules,
207
- triggers: this.extractTriggers(modules),
208
- actions: this.extractActions(modules),
209
- integrations: this.extractIntegrations(modules),
210
- scheduling: blueprint.scheduling,
211
- },
212
- confidence: 90,
213
- metadata: {
214
- source_type: 'make-scenario',
215
- source_file: filePath,
216
- extracted_at: new Date().toISOString(),
217
- },
218
- };
219
- }
220
- async filter(raw) {
221
- const { blueprint, pattern, modules, triggers, actions, integrations, scheduling } = raw.data;
222
- const structured = {
223
- project: {
224
- name: blueprint.name || 'Make.com Scenario',
225
- type: 'make-scenario',
226
- goal: `${pattern} connecting ${integrations.length} services`,
227
- },
228
- architecture: {
229
- pattern,
230
- components: modules.map((m) => m.module || m.type),
231
- },
232
- tech_stack: {
233
- platform: 'Make.com',
234
- integrations: integrations.join(', '),
235
- scheduling: scheduling?.type || 'Manual',
236
- },
237
- human_context: {
238
- who: 'Make.com User',
239
- what: blueprint.name || 'Make.com Scenario',
240
- why: `Automate ${pattern.toLowerCase()} workflow`,
241
- where: 'Make.com Cloud Platform',
242
- when: scheduling?.type === 'indefinitely' ? `Every ${scheduling.interval} minutes` : 'Manual trigger',
243
- how: `${modules.length} modules connecting ${integrations.length} services`,
244
- },
245
- source_data: raw.data,
246
- scores: this.calculateScores({
247
- project: {
248
- name: blueprint.name,
249
- type: 'make-scenario',
250
- goal: `${pattern} connecting ${integrations.length} services`,
251
- },
252
- human_context: {
253
- who: 'Make.com User',
254
- what: blueprint.name,
255
- why: `Automate ${pattern.toLowerCase()} workflow`,
256
- where: 'Make.com Cloud Platform',
257
- when: scheduling?.type || 'Manual',
258
- how: `${modules.length} modules`,
259
- },
260
- }),
261
- generated: new Date().toISOString(),
262
- faf_version: '3.0.1',
263
- };
264
- return structured;
265
- }
266
- detectMakePattern(blueprint) {
267
- const modules = blueprint.flow || [];
268
- const moduleTypes = modules.map((m) => m.module || '');
269
- if (moduleTypes.some((t) => t.includes('WebHook'))) {
270
- return 'Webhook-triggered Automation';
271
- }
272
- if (blueprint.scheduling?.type === 'indefinitely') {
273
- return 'Scheduled Automation';
274
- }
275
- if (moduleTypes.some((t) => t.toLowerCase().includes('openai') || t.toLowerCase().includes('anthropic'))) {
276
- return 'AI-powered Automation';
277
- }
278
- if (moduleTypes.some((t) => t.includes('HTTP'))) {
279
- return 'API Integration';
280
- }
281
- return 'General Automation';
282
- }
283
- extractTriggers(modules) {
284
- // First module is typically the trigger in Make.com
285
- return modules.length > 0 ? [modules[0]] : [];
286
- }
287
- extractActions(modules) {
288
- // All modules except the first (trigger)
289
- return modules.slice(1);
290
- }
291
- extractIntegrations(modules) {
292
- const services = new Set();
293
- modules.forEach((m) => {
294
- // Module format: "app:ModuleName" (e.g., "gateway:CustomWebHook")
295
- const moduleName = m.module || '';
296
- const app = moduleName.split(':')[0];
297
- if (app && app !== 'builtin') {
298
- services.add(app);
299
- }
300
- });
301
- return Array.from(services);
302
- }
303
- }
304
- exports.MakeScenarioGenerator = MakeScenarioGenerator;
305
- /**
306
- * Code Project Generator
307
- *
308
- * Handles traditional code projects (package.json, requirements.txt, etc.)
309
- * This is what FAF already does well - just formalizing it in the universal pattern
310
- */
311
- class CodeProjectGenerator extends universal_intelligence_generator_1.UniversalIntelligenceGenerator {
312
- async detect(filePath) {
313
- // Detect if this is a project directory with package.json, requirements.txt, etc.
314
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
315
- const path = await Promise.resolve().then(() => __importStar(require('path')));
316
- try {
317
- const stats = await fs.stat(filePath);
318
- if (!stats.isDirectory())
319
- return false;
320
- // Check for common project files
321
- const files = await fs.readdir(filePath);
322
- return files.some(f => f === 'package.json' ||
323
- f === 'requirements.txt' ||
324
- f === 'Cargo.toml' ||
325
- f === 'go.mod');
326
- }
327
- catch {
328
- return false;
329
- }
330
- }
331
- async extract(filePath) {
332
- // Use existing framework detector
333
- const { detectFramework } = await Promise.resolve().then(() => __importStar(require('../framework-detector')));
334
- const detection = await detectFramework(filePath);
335
- // Use existing TURBO-CAT for format discovery
336
- const { getAllFormats } = await Promise.resolve().then(() => __importStar(require('../utils/turbo-cat-pyramid')));
337
- const formats = getAllFormats();
338
- return {
339
- data: {
340
- framework: detection.framework,
341
- language: detection.language,
342
- ecosystem: detection.ecosystem,
343
- formats: formats.slice(0, 10), // Sample
344
- },
345
- confidence: detection.confidence,
346
- metadata: {
347
- source_type: 'code-project',
348
- source_file: filePath,
349
- extracted_at: new Date().toISOString(),
350
- },
351
- };
352
- }
353
- async filter(raw) {
354
- const { framework, language, ecosystem } = raw.data;
355
- // This would integrate with existing `faf init` flow
356
- // For now, minimal structure:
357
- const structured = {
358
- project: {
359
- name: 'Code Project',
360
- type: 'code-project',
361
- goal: `${framework} application`,
362
- main_language: language,
363
- },
364
- tech_stack: {
365
- framework,
366
- language,
367
- ecosystem,
368
- },
369
- human_context: {
370
- who: 'Developer',
371
- what: `${framework} application`,
372
- why: 'Software development',
373
- where: 'Development',
374
- when: 'In progress',
375
- how: `Using ${framework} with ${language}`,
376
- },
377
- scores: this.calculateScores({
378
- project: {
379
- name: 'Code Project',
380
- type: 'code-project',
381
- goal: `${framework} application`,
382
- },
383
- human_context: {
384
- who: 'Developer',
385
- what: `${framework} application`,
386
- why: 'Software development',
387
- where: 'Development',
388
- when: 'In progress',
389
- how: `Using ${framework}`,
390
- },
391
- }),
392
- generated: new Date().toISOString(),
393
- faf_version: '3.0.1',
394
- };
395
- return structured;
396
- }
397
- }
398
- exports.CodeProjectGenerator = CodeProjectGenerator;
399
- /**
400
- * Export all adapters for registration
401
- */
402
- exports.PLATFORM_ADAPTERS = [
403
- OpalMiniAppGenerator,
404
- MakeScenarioGenerator,
405
- CodeProjectGenerator,
406
- ];
407
- //# sourceMappingURL=platform-adapters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-adapters.js","sourceRoot":"","sources":["../../src/core/platform-adapters.ts"],"names":[],"mappings":"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"}