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.
- package/README.md +21 -11
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +83 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/antigravity.d.ts +16 -0
- package/dist/commands/antigravity.d.ts.map +1 -0
- package/dist/commands/antigravity.js +398 -0
- package/dist/commands/antigravity.js.map +1 -0
- package/dist/commands/conductor.d.ts +15 -0
- package/dist/commands/conductor.d.ts.map +1 -0
- package/dist/commands/conductor.js +339 -0
- package/dist/commands/conductor.js.map +1 -0
- package/dist/commands/gemini.d.ts +15 -0
- package/dist/commands/gemini.d.ts.map +1 -0
- package/dist/commands/gemini.js +357 -0
- package/dist/commands/gemini.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +24 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/compiler/faf-compiler.d.ts.map +1 -1
- package/dist/compiler/faf-compiler.js +5 -0
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/engines/c-mirror/core/mirror-engine.d.ts +1 -0
- package/dist/engines/c-mirror/core/mirror-engine.d.ts.map +1 -1
- package/dist/engines/c-mirror/core/mirror-engine.js +45 -3
- package/dist/engines/c-mirror/core/mirror-engine.js.map +1 -1
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts +2 -0
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts.map +1 -1
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.js +19 -5
- package/dist/engines/c-mirror/faf-extensions/faf-mirror.js.map +1 -1
- package/dist/utils/conductor-parser.d.ts +86 -0
- package/dist/utils/conductor-parser.d.ts.map +1 -0
- package/dist/utils/conductor-parser.js +292 -0
- package/dist/utils/conductor-parser.js.map +1 -0
- package/dist/utils/gemini-parser.d.ts +58 -0
- package/dist/utils/gemini-parser.d.ts.map +1 -0
- package/dist/utils/gemini-parser.js +263 -0
- package/dist/utils/gemini-parser.js.map +1 -0
- package/package.json +1 -1
- 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"}
|