faf-cli 3.4.6 → 3.4.8

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 (41) hide show
  1. package/README.md +21 -11
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +83 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/antigravity.d.ts +16 -0
  6. package/dist/commands/antigravity.d.ts.map +1 -0
  7. package/dist/commands/antigravity.js +398 -0
  8. package/dist/commands/antigravity.js.map +1 -0
  9. package/dist/commands/conductor.d.ts +15 -0
  10. package/dist/commands/conductor.d.ts.map +1 -0
  11. package/dist/commands/conductor.js +339 -0
  12. package/dist/commands/conductor.js.map +1 -0
  13. package/dist/commands/gemini.d.ts +15 -0
  14. package/dist/commands/gemini.d.ts.map +1 -0
  15. package/dist/commands/gemini.js +357 -0
  16. package/dist/commands/gemini.js.map +1 -0
  17. package/dist/commands/init.d.ts +1 -0
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +24 -1
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  22. package/dist/compiler/faf-compiler.js +5 -0
  23. package/dist/compiler/faf-compiler.js.map +1 -1
  24. package/dist/engines/c-mirror/core/mirror-engine.d.ts +1 -0
  25. package/dist/engines/c-mirror/core/mirror-engine.d.ts.map +1 -1
  26. package/dist/engines/c-mirror/core/mirror-engine.js +45 -3
  27. package/dist/engines/c-mirror/core/mirror-engine.js.map +1 -1
  28. package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts +2 -0
  29. package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts.map +1 -1
  30. package/dist/engines/c-mirror/faf-extensions/faf-mirror.js +19 -5
  31. package/dist/engines/c-mirror/faf-extensions/faf-mirror.js.map +1 -1
  32. package/dist/utils/conductor-parser.d.ts +86 -0
  33. package/dist/utils/conductor-parser.d.ts.map +1 -0
  34. package/dist/utils/conductor-parser.js +292 -0
  35. package/dist/utils/conductor-parser.js.map +1 -0
  36. package/dist/utils/gemini-parser.d.ts +58 -0
  37. package/dist/utils/gemini-parser.d.ts.map +1 -0
  38. package/dist/utils/gemini-parser.js +263 -0
  39. package/dist/utils/gemini-parser.js.map +1 -0
  40. package/package.json +1 -1
  41. package/project.faf +1 -1
@@ -0,0 +1,339 @@
1
+ "use strict";
2
+ /**
3
+ * faf conductor - Google Conductor Interop Commands
4
+ *
5
+ * Bidirectional interoperability between FAF and Google's Conductor format.
6
+ * Positions FAF as the universal AI-context interchange format.
7
+ *
8
+ * Commands:
9
+ * - faf conductor import Import conductor/ → project.faf
10
+ * - faf conductor export Export project.faf → conductor/
11
+ * - faf conductor sync Bidirectional sync
12
+ *
13
+ * @see /specs/FAF-CONDUCTOR-INTEROP.md
14
+ */
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.conductorCommand = conductorCommand;
20
+ const colors_1 = require("../fix-once/colors");
21
+ const fs_1 = require("fs");
22
+ const path_1 = __importDefault(require("path"));
23
+ const championship_style_1 = require("../utils/championship-style");
24
+ const file_utils_1 = require("../utils/file-utils");
25
+ const yaml_1 = require("../fix-once/yaml");
26
+ const conductor_parser_1 = require("../utils/conductor-parser");
27
+ // ============================================================================
28
+ // Main Command Router
29
+ // ============================================================================
30
+ async function conductorCommand(args) {
31
+ const subcommand = args[0];
32
+ const subcommandArgs = args.slice(1);
33
+ switch (subcommand) {
34
+ case 'import':
35
+ await runConductorImport(subcommandArgs);
36
+ break;
37
+ case 'export':
38
+ await runConductorExport(subcommandArgs);
39
+ break;
40
+ case 'sync':
41
+ await runConductorSync(subcommandArgs);
42
+ break;
43
+ case undefined:
44
+ case 'help':
45
+ case '--help':
46
+ case '-h':
47
+ showConductorHelp();
48
+ break;
49
+ default:
50
+ console.error(colors_1.chalk.red(`\n❌ Unknown conductor command: ${subcommand}`));
51
+ console.log('\nAvailable commands:');
52
+ showConductorHelp();
53
+ process.exit(1);
54
+ }
55
+ }
56
+ function parseImportArgs(args) {
57
+ const options = {};
58
+ for (let i = 0; i < args.length; i++) {
59
+ const arg = args[i];
60
+ if (arg === '--path' && args[i + 1]) {
61
+ options.path = args[++i];
62
+ }
63
+ else if (arg === '--merge' || arg === '-m') {
64
+ options.merge = true;
65
+ }
66
+ else if (arg === '--output' && args[i + 1]) {
67
+ options.output = args[++i];
68
+ }
69
+ }
70
+ return options;
71
+ }
72
+ async function runConductorImport(args) {
73
+ const options = parseImportArgs(args);
74
+ const conductorPath = options.path || path_1.default.join(process.cwd(), 'conductor');
75
+ const outputPath = options.output || path_1.default.join(process.cwd(), 'project.faf');
76
+ console.log();
77
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Importing Conductor format...`));
78
+ console.log(colors_1.chalk.gray(` Source: ${conductorPath}`));
79
+ console.log();
80
+ // Check if conductor directory exists
81
+ try {
82
+ const stat = await fs_1.promises.stat(conductorPath);
83
+ if (!stat.isDirectory()) {
84
+ console.log(colors_1.chalk.red(`❌ Not a directory: ${conductorPath}`));
85
+ return;
86
+ }
87
+ }
88
+ catch {
89
+ console.log(colors_1.chalk.red(`❌ Conductor directory not found: ${conductorPath}`));
90
+ console.log();
91
+ console.log(colors_1.chalk.gray('Expected structure:'));
92
+ console.log(colors_1.chalk.gray(' conductor/'));
93
+ console.log(colors_1.chalk.gray(' ├── product.md'));
94
+ console.log(colors_1.chalk.gray(' ├── tech-stack.md'));
95
+ console.log(colors_1.chalk.gray(' ├── workflow.md'));
96
+ console.log(colors_1.chalk.gray(' └── product-guidelines.md'));
97
+ console.log();
98
+ return;
99
+ }
100
+ // Import
101
+ const result = await (0, conductor_parser_1.conductorImport)(conductorPath);
102
+ if (!result.success) {
103
+ console.log(colors_1.chalk.red(`❌ Import failed - no files found`));
104
+ return;
105
+ }
106
+ // Show warnings
107
+ if (result.warnings.length > 0) {
108
+ console.log(colors_1.chalk.yellow(`⚠️ Warnings:`));
109
+ result.warnings.forEach(w => console.log(colors_1.chalk.yellow(` - ${w}`)));
110
+ console.log();
111
+ }
112
+ // Show processed files
113
+ console.log(colors_1.chalk.green(`☑️ Files processed:`));
114
+ result.filesProcessed.forEach(f => console.log(colors_1.chalk.gray(` - ${f}`)));
115
+ console.log();
116
+ // Handle merge option
117
+ if (options.merge && await (0, file_utils_1.fileExists)(outputPath)) {
118
+ try {
119
+ const existingContent = await fs_1.promises.readFile(outputPath, 'utf-8');
120
+ const existingFaf = (0, yaml_1.parse)(existingContent);
121
+ // Merge - conductor values override where they exist
122
+ const merged = {
123
+ ...existingFaf,
124
+ project: {
125
+ ...existingFaf.project,
126
+ ...result.faf.project,
127
+ stack: {
128
+ ...existingFaf.project?.stack,
129
+ ...result.faf.project.stack,
130
+ },
131
+ },
132
+ metadata: {
133
+ ...existingFaf.metadata,
134
+ conductor_import: result.faf.metadata.imported,
135
+ },
136
+ };
137
+ await fs_1.promises.writeFile(outputPath, (0, yaml_1.stringify)(merged));
138
+ console.log(colors_1.chalk.green(`☑️ Merged into: ${outputPath}`));
139
+ }
140
+ catch (err) {
141
+ console.log(colors_1.chalk.red(`❌ Merge failed: ${err}`));
142
+ return;
143
+ }
144
+ }
145
+ else {
146
+ // Convert to FAF YAML format
147
+ const fafContent = {
148
+ version: '1.0',
149
+ type: 'conductor-import',
150
+ project: result.faf.project,
151
+ metadata: result.faf.metadata,
152
+ };
153
+ await fs_1.promises.writeFile(outputPath, (0, yaml_1.stringify)(fafContent));
154
+ console.log(colors_1.chalk.green(`☑️ Created: ${outputPath}`));
155
+ }
156
+ console.log();
157
+ console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.trophy} Conductor import complete!`));
158
+ console.log(colors_1.chalk.gray(' FAF is now your universal AI-context format.'));
159
+ console.log();
160
+ }
161
+ function parseExportArgs(args) {
162
+ const options = {};
163
+ for (let i = 0; i < args.length; i++) {
164
+ const arg = args[i];
165
+ if (arg === '--path' && args[i + 1]) {
166
+ options.path = args[++i];
167
+ }
168
+ else if (arg === '--only' && args[i + 1]) {
169
+ options.only = args[++i].split(',');
170
+ }
171
+ else if (arg === '--force' || arg === '-f') {
172
+ options.force = true;
173
+ }
174
+ }
175
+ return options;
176
+ }
177
+ async function runConductorExport(args) {
178
+ const options = parseExportArgs(args);
179
+ const outputPath = options.path || path_1.default.join(process.cwd(), 'conductor');
180
+ console.log();
181
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Exporting to Conductor format...`));
182
+ console.log();
183
+ // Find FAF file
184
+ const fafPath = await (0, file_utils_1.findFafFile)(process.cwd());
185
+ if (!fafPath) {
186
+ console.log(colors_1.chalk.red(`❌ No .faf file found in current directory`));
187
+ console.log(colors_1.chalk.gray(' Run "faf init" first to create one.'));
188
+ console.log();
189
+ return;
190
+ }
191
+ console.log(colors_1.chalk.gray(` Source: ${fafPath}`));
192
+ console.log(colors_1.chalk.gray(` Output: ${outputPath}`));
193
+ console.log();
194
+ // Check if conductor directory exists
195
+ if (await (0, file_utils_1.fileExists)(outputPath) && !options.force) {
196
+ console.log(colors_1.chalk.yellow(`⚠️ conductor/ directory already exists`));
197
+ console.log(colors_1.chalk.gray(' Use --force to overwrite'));
198
+ console.log();
199
+ return;
200
+ }
201
+ // Read FAF file
202
+ let fafContent;
203
+ try {
204
+ const content = await fs_1.promises.readFile(fafPath, 'utf-8');
205
+ fafContent = (0, yaml_1.parse)(content);
206
+ }
207
+ catch (err) {
208
+ console.log(colors_1.chalk.red(`❌ Failed to read FAF file: ${err}`));
209
+ return;
210
+ }
211
+ // Convert to conductor format
212
+ const fafData = {
213
+ project: {
214
+ name: fafContent.project?.name || fafContent.name || 'Unknown',
215
+ description: fafContent.project?.description || fafContent.description || '',
216
+ type: fafContent.type || 'unknown',
217
+ goals: fafContent.project?.goals || [],
218
+ stack: {
219
+ languages: fafContent.project?.stack?.languages || fafContent.languages || [],
220
+ frameworks: fafContent.project?.stack?.frameworks || fafContent.frameworks || [],
221
+ databases: fafContent.project?.stack?.databases || fafContent.databases || [],
222
+ infrastructure: fafContent.project?.stack?.infrastructure || fafContent.infrastructure || [],
223
+ },
224
+ rules: fafContent.project?.rules || fafContent.rules || [],
225
+ guidelines: fafContent.project?.guidelines || fafContent.guidelines || [],
226
+ },
227
+ metadata: {
228
+ source: 'faf',
229
+ imported: new Date().toISOString(),
230
+ },
231
+ };
232
+ // Export
233
+ const result = await (0, conductor_parser_1.conductorExport)(fafData, outputPath);
234
+ if (!result.success) {
235
+ console.log(colors_1.chalk.red(`❌ Export failed`));
236
+ result.warnings.forEach(w => console.log(colors_1.chalk.yellow(` - ${w}`)));
237
+ return;
238
+ }
239
+ // Show generated files
240
+ console.log(colors_1.chalk.green(`☑️ Files generated:`));
241
+ result.filesGenerated.forEach(f => console.log(colors_1.chalk.gray(` - conductor/${f}`)));
242
+ console.log();
243
+ console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.trophy} Conductor export complete!`));
244
+ console.log(colors_1.chalk.gray(' Your project now works with Gemini CLI Conductor extension.'));
245
+ console.log();
246
+ }
247
+ function parseSyncArgs(args) {
248
+ const options = { source: 'faf' };
249
+ for (let i = 0; i < args.length; i++) {
250
+ const arg = args[i];
251
+ if (arg === '--source' && args[i + 1]) {
252
+ const src = args[++i];
253
+ if (src === 'faf' || src === 'conductor') {
254
+ options.source = src;
255
+ }
256
+ }
257
+ else if (arg === '--path' && args[i + 1]) {
258
+ options.path = args[++i];
259
+ }
260
+ }
261
+ return options;
262
+ }
263
+ async function runConductorSync(args) {
264
+ const options = parseSyncArgs(args);
265
+ const conductorPath = options.path || path_1.default.join(process.cwd(), 'conductor');
266
+ console.log();
267
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Syncing FAF <-> Conductor...`));
268
+ console.log(colors_1.chalk.gray(` Source of truth: ${options.source}`));
269
+ console.log();
270
+ const hasConductor = await (0, conductor_parser_1.detectConductor)(process.cwd());
271
+ const fafPath = await (0, file_utils_1.findFafFile)(process.cwd());
272
+ if (options.source === 'conductor') {
273
+ // Conductor is source of truth
274
+ if (!hasConductor) {
275
+ console.log(colors_1.chalk.red(`❌ No conductor/ directory found`));
276
+ return;
277
+ }
278
+ // Import from conductor
279
+ await runConductorImport(['--path', conductorPath, '--merge']);
280
+ }
281
+ else {
282
+ // FAF is source of truth (default)
283
+ if (!fafPath) {
284
+ console.log(colors_1.chalk.red(`❌ No .faf file found`));
285
+ return;
286
+ }
287
+ // Export to conductor
288
+ await runConductorExport(['--path', conductorPath, '--force']);
289
+ }
290
+ console.log(colors_1.chalk.green(`☑️ Sync complete!`));
291
+ console.log();
292
+ }
293
+ // ============================================================================
294
+ // Help
295
+ // ============================================================================
296
+ function showConductorHelp() {
297
+ console.log();
298
+ console.log(championship_style_1.FAF_COLORS.fafOrange('faf conductor') + ' - Google Conductor Interop');
299
+ console.log();
300
+ console.log(colors_1.chalk.cyan('Commands:'));
301
+ console.log(' faf conductor import Import conductor/ directory to project.faf');
302
+ console.log(' faf conductor export Export project.faf to conductor/ directory');
303
+ console.log(' faf conductor sync Bidirectional sync between formats');
304
+ console.log();
305
+ console.log(colors_1.chalk.cyan('Import Options:'));
306
+ console.log(' --path <dir> Conductor directory path (default: ./conductor)');
307
+ console.log(' --merge, -m Merge with existing .faf instead of overwrite');
308
+ console.log(' --output <file> Output file path (default: ./project.faf)');
309
+ console.log();
310
+ console.log(colors_1.chalk.cyan('Export Options:'));
311
+ console.log(' --path <dir> Output directory (default: ./conductor)');
312
+ console.log(' --only <list> Export specific sections (comma-separated)');
313
+ console.log(' --force, -f Overwrite existing conductor/ directory');
314
+ console.log();
315
+ console.log(colors_1.chalk.cyan('Sync Options:'));
316
+ console.log(' --source <faf|conductor> Source of truth (default: faf)');
317
+ console.log(' --path <dir> Conductor directory path');
318
+ console.log();
319
+ console.log(colors_1.chalk.cyan('Examples:'));
320
+ console.log(' faf conductor import # Import ./conductor to project.faf');
321
+ console.log(' faf conductor import --path ./my-conductor # Import from custom path');
322
+ console.log(' faf conductor import --merge # Merge with existing .faf');
323
+ console.log();
324
+ console.log(' faf conductor export # Export to ./conductor');
325
+ console.log(' faf conductor export --path ./output # Export to custom path');
326
+ console.log(' faf conductor export --force # Overwrite existing');
327
+ console.log();
328
+ console.log(' faf conductor sync # Sync (FAF is source of truth)');
329
+ console.log(' faf conductor sync --source conductor # Sync (Conductor is source)');
330
+ console.log();
331
+ console.log(colors_1.chalk.gray('About:'));
332
+ console.log(colors_1.chalk.gray(' FAF supports Google Gemini CLI Conductor extension format.'));
333
+ console.log(colors_1.chalk.gray(' This enables bidirectional interoperability - use FAF as'));
334
+ console.log(colors_1.chalk.gray(' your universal AI-context interchange format.'));
335
+ console.log();
336
+ console.log(colors_1.chalk.gray(' Learn more: https://faf.one/docs/conductor'));
337
+ console.log();
338
+ }
339
+ //# sourceMappingURL=conductor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conductor.js","sourceRoot":"","sources":["../../src/commands/conductor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * faf gemini - Gemini CLI / Antigravity Interop Commands
3
+ *
4
+ * Bidirectional interoperability between FAF and GEMINI.md files.
5
+ * Works with both Gemini CLI and Google Antigravity IDE.
6
+ *
7
+ * Commands:
8
+ * - faf gemini import Import GEMINI.md → project.faf
9
+ * - faf gemini export Export project.faf → GEMINI.md
10
+ * - faf gemini sync Bidirectional sync
11
+ *
12
+ * @see https://google-gemini.github.io/gemini-cli/docs/cli/gemini-md.html
13
+ */
14
+ export declare function geminiCommand(args: string[]): Promise<void>;
15
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/commands/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAmBH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BjE"}