ai-vault 1.4.0 → 1.5.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.
package/README.md CHANGED
@@ -24,14 +24,14 @@ Your AI interactions are valuable assets. They contain your thoughts, research,
24
24
 
25
25
  ### Supported Platforms
26
26
 
27
- | Platform | Status | API Support | Web Scraping | Media Download |
28
- | ------------------- | -------------- | ----------- | ------------ | -------------- |
29
- | **Grok (grok.com)** | 🚧 In Progress | | ✅ | ✅ |
30
- | **Grok on X** | 🚧 In Progress | ❌ | ✅ | ✅ |
31
- | **ChatGPT** | 📋 Planned | ✅ | ✅ | ✅ |
32
- | **Claude** | 📋 Planned | ✅ | ✅ | ✅ |
33
- | **Gemini** | 📋 Planned | ⚠️ Partial | ✅ | ✅ |
34
- | **Perplexity** | 📋 Planned | ❌ | ✅ | ✅ |
27
+ | Platform | Status | Native Import | Web Scraping | Media Download |
28
+ | ------------------- | ----------- | ------------- | ------------ | -------------- |
29
+ | **Grok (grok.com)** | Complete | | ✅ | ✅ |
30
+ | **Grok on X** | Complete | ❌ | ✅ | ✅ |
31
+ | **ChatGPT** | Complete | ✅ | ✅ | ✅ |
32
+ | **Claude** | 📋 Planned | ✅ | ✅ | ✅ |
33
+ | **Gemini** | 📋 Planned | | ✅ | ✅ |
34
+ | **Perplexity** | 📋 Planned | ❌ | ✅ | ✅ |
35
35
 
36
36
  **Note:** Grok has two separate providers due to separate account systems:
37
37
 
@@ -41,6 +41,9 @@ Your AI interactions are valuable assets. They contain your thoughts, research,
41
41
  ### Smart Features
42
42
 
43
43
  - **Native Import Support** - Import from official platform exports (Grok, ChatGPT, Claude)
44
+ - **ZIP Import** - Import directly from ZIP files or unpacked directories
45
+ - **Auto-Detection** - Automatically detects provider from export format
46
+ - **Complete Media Preservation** - Imports images, DALL-E generations, audio, video files
44
47
  - **Incremental Backups** - Only fetch new/updated conversations
45
48
  - **Media Deduplication** - Don't store the same image twice
46
49
  - **Flexible Scheduling** - Daily, weekly, or custom cron expressions
@@ -239,30 +242,41 @@ ai-vault archive --dry-run
239
242
  Many platforms offer one-time data exports. AI Vault can import these and convert to its standardized format:
240
243
 
241
244
  ```bash
242
- # Import from Grok's native export
243
- ai-vault import --provider grok-web --file ~/Downloads/grok-export/
245
+ # Auto-detect provider from export (recommended)
246
+ ai-vault import --file ~/Downloads/chatgpt-export.zip --yes
247
+
248
+ # Import from unpacked directory
249
+ ai-vault import --file ~/Downloads/grok-export/
244
250
 
245
251
  # Import with custom output directory
246
- ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --output ~/Dropbox/AI-Backups
252
+ ai-vault import --file ~/Downloads/export.zip --output ~/Dropbox/AI-Backups
253
+
254
+ # Manually specify provider (optional)
255
+ ai-vault import --provider grok-web --file ~/Downloads/grok-export/
247
256
 
248
257
  # Skip confirmation prompt
249
- ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --yes
258
+ ai-vault import --file ~/Downloads/export.zip --yes
250
259
  ```
251
260
 
252
261
  **Supported import formats:**
253
262
 
263
+ - **ChatGPT**: Export from settings → Data controls → Export data
264
+ - Supports ZIP files and unpacked directories
265
+ - Automatically imports all media (images, DALL-E generations, audio)
266
+ - Provider auto-detected from `conversations.json`
254
267
  - **Grok (grok.com)**: Export from grok.com → Profile → Data & Privacy → Download your data
255
268
  - Use `--provider grok-web` for standalone Grok conversations
269
+ - Supports ZIP files and unpacked directories
256
270
  - **Grok on X**: Export from x.com/grok (if available)
257
271
  - Use `--provider grok-x` for X-integrated Grok conversations
258
- - **ChatGPT**: _(coming soon)_ Export from settings → Data controls → Export data
259
272
  - **Claude**: _(coming soon)_ Export from settings
260
273
 
261
274
  **Why import vs scraping?**
262
275
 
263
276
  - ✅ Faster - no web automation needed
264
277
  - ✅ More reliable - uses official export format
265
- - ✅ Complete data - includes metadata that might not be visible in UI
278
+ - ✅ Complete data - includes all metadata and media files
279
+ - ✅ Works with ZIP files or unpacked directories
266
280
  - ✅ Works alongside automated scraping for incremental updates
267
281
 
268
282
  ### Schedule Automated Backups
@@ -464,10 +478,19 @@ See [docs/providers.md](docs/providers.md) for a detailed guide.
464
478
  - [x] Project setup and architecture
465
479
  - [x] Storage layer with JSON + Markdown export
466
480
  - [x] Media downloader with SHA256 deduplication
467
- - [x] Native import support (Grok ✓, ChatGPT & Claude coming soon)
481
+ - [x] ZIP import support - Import directly from ZIP files or unpacked directories
482
+ - [x] Provider auto-detection from export file structure
483
+ - [x] Complete media preservation (images, DALL-E generations, audio, video)
484
+ - [x] Native import support:
485
+ - [x] **Grok**: Import from official grok.com exports with media
486
+ - [x] **ChatGPT**: Import from official OpenAI exports with media
468
487
  - [x] Grok provider - two separate implementations:
469
488
  - [x] **grok-web**: Standalone grok.com (cookies + scraping)
470
489
  - [x] **grok-x**: X-integrated Grok at x.com/grok (cookies + scraping)
490
+ - [x] ChatGPT provider:
491
+ - [x] **Native import**: From conversations.json exports
492
+ - [x] **Web scraping**: Cookie-based authentication
493
+ - [x] **Media import**: Images, DALL-E generations, audio files
471
494
  - [x] Smart filtering system:
472
495
  - [x] Date range filtering (since/until)
473
496
  - [x] Search query filtering (title/preview)
@@ -482,11 +505,12 @@ See [docs/providers.md](docs/providers.md) for a detailed guide.
482
505
  ### In Progress 🚧
483
506
 
484
507
  - [ ] Additional provider implementations:
485
- - [ ] ChatGPT provider (import + API + scraping)
486
- - [ ] Claude provider (import + API + scraping)
487
- - [ ] Gemini provider (API + scraping)
508
+ - [ ] Claude provider (import + scraping)
509
+ - [ ] Gemini provider (import + scraping)
488
510
  - [ ] Perplexity provider (scraping)
489
511
 
512
+ **Note:** API support refers to native import from official platform exports, not API-based conversation retrieval (which most platforms don't provide).
513
+
490
514
  ### Planned 📋
491
515
 
492
516
  - [ ] Export to knowledge management tools (Obsidian, Notion, Roam)
package/dist/cli.js CHANGED
@@ -51,7 +51,7 @@ program
51
51
  program
52
52
  .command('import')
53
53
  .description('Import conversations from native platform exports')
54
- .requiredOption('-p, --provider <provider>', 'Provider (grok, chatgpt, claude, etc.)')
54
+ .option('-p, --provider <provider>', 'Provider (grok, chatgpt, claude) - auto-detected if omitted')
55
55
  .requiredOption('-f, --file <path>', 'Path to export file or directory')
56
56
  .option('-o, --output <directory>', 'Output directory (overrides config)')
57
57
  .option('-y, --yes', 'Skip confirmation prompt')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Import Command - Import from native platform exports
3
3
  */
4
4
  interface ImportOptions {
5
- provider: string;
5
+ provider?: string;
6
6
  file: string;
7
7
  output?: string;
8
8
  yes?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFzE"}
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAiDD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwLzE"}
@@ -3,75 +3,205 @@
3
3
  */
4
4
  import * as clack from '@clack/prompts';
5
5
  import chalk from 'chalk';
6
- import { readFileSync, existsSync, statSync, readdirSync } from 'fs';
6
+ import { readFileSync, existsSync, statSync, readdirSync, cpSync, mkdirSync } from 'fs';
7
7
  import { resolve, join } from 'path';
8
+ import path from 'path';
8
9
  import { loadConfig } from '../utils/config.js';
9
10
  import { createArchiver } from '../core/archiver.js';
11
+ import { prepareImportPath } from '../utils/zip.js';
12
+ /**
13
+ * Auto-detect provider from export file structure
14
+ */
15
+ async function detectProvider(filePath) {
16
+ const stat = statSync(filePath);
17
+ if (stat.isDirectory()) {
18
+ const files = readdirSync(filePath);
19
+ // ChatGPT: has conversations.json
20
+ if (files.includes('conversations.json')) {
21
+ return 'chatgpt';
22
+ }
23
+ // Grok: has files with 'grok-backend' or 'prod-grok-backend'
24
+ if (files.some((f) => f.includes('grok-backend') || f.includes('prod-grok-backend'))) {
25
+ return 'grok-web';
26
+ }
27
+ }
28
+ else {
29
+ // Single file - check filename and structure
30
+ const filename = path.basename(filePath);
31
+ if (filename === 'conversations.json') {
32
+ // Peek inside to check structure
33
+ try {
34
+ const content = readFileSync(filePath, 'utf-8');
35
+ const data = JSON.parse(content);
36
+ const first = Array.isArray(data) ? data[0] : data;
37
+ // ChatGPT has 'mapping' field
38
+ if (first && first.mapping) {
39
+ return 'chatgpt';
40
+ }
41
+ // Grok has 'conversations' and 'responses' arrays
42
+ if (first && first.conversations) {
43
+ return 'grok-web';
44
+ }
45
+ }
46
+ catch {
47
+ // Invalid JSON, can't detect
48
+ }
49
+ }
50
+ }
51
+ return null;
52
+ }
10
53
  export async function importCommand(options) {
11
54
  clack.intro(chalk.bold.blue('AI Vault Import'));
12
- const { provider, file } = options;
55
+ const { file } = options;
13
56
  // Validate file exists
14
57
  const filePath = resolve(file);
15
58
  if (!existsSync(filePath)) {
16
59
  clack.log.error(`File or directory not found: ${filePath}`);
17
60
  process.exit(1);
18
61
  }
19
- // Load config for output directory
20
- const config = await loadConfig();
21
- let archiveDir = options.output || config.settings?.archiveDir;
22
- // Expand ~ to home directory
23
- if (archiveDir && archiveDir.startsWith('~')) {
24
- const os = await import('os');
25
- archiveDir = archiveDir.replace(/^~/, os.homedir());
26
- }
27
- clack.log.info(`Provider: ${provider}`);
28
- clack.log.info(`Import from: ${filePath}`);
29
- clack.log.info(`Output: ${archiveDir || '~/ai-vault-data (default)'}`);
30
- console.log();
31
- // Import based on provider
32
- let conversations;
33
- switch (provider.toLowerCase()) {
34
- case 'grok':
35
- ({ conversations } = await importGrok(filePath));
36
- break;
37
- default:
38
- clack.log.error(`Import not yet supported for provider: ${provider}`);
39
- clack.log.info('Supported providers: grok');
40
- process.exit(1);
41
- }
42
- clack.log.success(`Parsed ${conversations.length} conversations`);
43
- console.log();
44
- // Confirm import (skip if --yes flag)
45
- if (!options.yes) {
46
- const confirm = await clack.confirm({
47
- message: `Import ${conversations.length} conversations to archive?`,
48
- });
49
- if (clack.isCancel(confirm) || !confirm) {
50
- clack.cancel('Import cancelled');
51
- process.exit(0);
62
+ // Handle ZIP files or directories
63
+ let processPath;
64
+ let cleanup;
65
+ let isTemporary;
66
+ try {
67
+ ({ processPath, cleanup, isTemporary } = prepareImportPath(filePath));
68
+ if (isTemporary) {
69
+ clack.log.info(`Extracting ZIP file...`);
52
70
  }
71
+ // Auto-detect provider if not specified
72
+ let provider = options.provider;
73
+ if (!provider) {
74
+ const detected = await detectProvider(processPath);
75
+ if (!detected) {
76
+ clack.log.error('Could not auto-detect provider from export format.');
77
+ clack.log.info('Please specify the provider with --provider flag');
78
+ clack.log.info('Supported providers: grok, grok-web, chatgpt');
79
+ process.exit(1);
80
+ }
81
+ provider = detected;
82
+ clack.log.success(`Auto-detected provider: ${provider}`);
83
+ }
84
+ // Load config for output directory
85
+ const config = await loadConfig();
86
+ let archiveDir = options.output || config.settings?.archiveDir;
87
+ // Expand ~ to home directory
88
+ if (archiveDir && archiveDir.startsWith('~')) {
89
+ const os = await import('os');
90
+ archiveDir = archiveDir.replace(/^~/, os.homedir());
91
+ }
92
+ clack.log.info(`Provider: ${provider}`);
93
+ clack.log.info(`Import from: ${filePath}`);
94
+ clack.log.info(`Output: ${archiveDir || '~/ai-vault-data (default)'}`);
95
+ console.log();
96
+ // Import based on provider
97
+ let conversations;
98
+ let sourceMediaDir;
99
+ switch (provider.toLowerCase()) {
100
+ case 'grok':
101
+ case 'grok-web':
102
+ ({ conversations, mediaDir: sourceMediaDir } = await importGrok(processPath));
103
+ break;
104
+ case 'chatgpt':
105
+ ({ conversations, mediaDir: sourceMediaDir } = await importChatGPT(processPath));
106
+ break;
107
+ default:
108
+ clack.log.error(`Import not yet supported for provider: ${provider}`);
109
+ clack.log.info('Supported providers: grok, grok-web, chatgpt');
110
+ process.exit(1);
111
+ }
112
+ // Count total media files
113
+ const totalMedia = conversations.reduce((sum, c) => sum + (c.metadata.mediaCount || 0), 0);
114
+ clack.log.success(`Parsed ${conversations.length} conversations${totalMedia > 0 ? ` with ${totalMedia} media files` : ''}`);
115
+ console.log();
116
+ // Confirm import (skip if --yes flag)
117
+ if (!options.yes) {
118
+ const confirm = await clack.confirm({
119
+ message: `Import ${conversations.length} conversations to archive?`,
120
+ });
121
+ if (clack.isCancel(confirm) || !confirm) {
122
+ clack.cancel('Import cancelled');
123
+ process.exit(0);
124
+ }
125
+ }
126
+ // Save conversations using archiver
127
+ const archiver = createArchiver(archiveDir);
128
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
+ const storage = archiver.storage; // Access storage from archiver
130
+ const spinner = clack.spinner();
131
+ spinner.start('Importing conversations...');
132
+ let imported = 0;
133
+ let errors = 0;
134
+ for (const conversation of conversations) {
135
+ try {
136
+ await storage.saveConversation(conversation);
137
+ imported++;
138
+ spinner.message(`Imported ${imported}/${conversations.length}...`);
139
+ }
140
+ catch (error) {
141
+ errors++;
142
+ console.error(`Failed to import ${conversation.id}:`, error);
143
+ }
144
+ }
145
+ spinner.stop();
146
+ // Copy media files if present
147
+ if (sourceMediaDir && existsSync(sourceMediaDir)) {
148
+ const mediaSpinner = clack.spinner();
149
+ mediaSpinner.start('Copying media files...');
150
+ try {
151
+ // Get provider-specific media directory in archive
152
+ const targetMediaBase = path.join(archiveDir || '~/ai-vault-data', provider, 'media');
153
+ mkdirSync(targetMediaBase, { recursive: true });
154
+ // Copy all media files from source directory
155
+ let mediaFilesCopied = 0;
156
+ const files = readdirSync(sourceMediaDir);
157
+ for (const file of files) {
158
+ const sourcePath = join(sourceMediaDir, file);
159
+ const stat = statSync(sourcePath);
160
+ if (stat.isDirectory()) {
161
+ // Copy entire directory (e.g., dalle-generations, conversation folders)
162
+ const targetPath = join(targetMediaBase, file);
163
+ cpSync(sourcePath, targetPath, { recursive: true });
164
+ // Count files in directory
165
+ const countFiles = (dir) => {
166
+ let count = 0;
167
+ const items = readdirSync(dir);
168
+ for (const item of items) {
169
+ const itemPath = join(dir, item);
170
+ if (statSync(itemPath).isDirectory()) {
171
+ count += countFiles(itemPath);
172
+ }
173
+ else {
174
+ count++;
175
+ }
176
+ }
177
+ return count;
178
+ };
179
+ mediaFilesCopied += countFiles(sourcePath);
180
+ }
181
+ else if (file.startsWith('file-') ||
182
+ /\.(jpg|jpeg|png|gif|webp|mp3|mp4|wav)$/i.test(file)) {
183
+ // Copy individual media files
184
+ const targetPath = join(targetMediaBase, file);
185
+ cpSync(sourcePath, targetPath);
186
+ mediaFilesCopied++;
187
+ }
188
+ }
189
+ mediaSpinner.stop(`✓ Copied ${mediaFilesCopied} media files`);
190
+ }
191
+ catch (error) {
192
+ mediaSpinner.stop('Failed to copy some media files');
193
+ console.error('Media copy error:', error);
194
+ }
195
+ }
196
+ console.log();
197
+ clack.outro(chalk.green(`✓ Import complete! Imported ${imported} conversations${errors > 0 ? ` (${errors} errors)` : ''}`));
53
198
  }
54
- // Save conversations using archiver
55
- const archiver = createArchiver(archiveDir);
56
- const storage = archiver.storage; // Access storage from archiver
57
- const spinner = clack.spinner();
58
- spinner.start('Importing conversations...');
59
- let imported = 0;
60
- let errors = 0;
61
- for (const conversation of conversations) {
62
- try {
63
- await storage.saveConversation(conversation);
64
- imported++;
65
- spinner.message(`Imported ${imported}/${conversations.length}...`);
66
- }
67
- catch (error) {
68
- errors++;
69
- console.error(`Failed to import ${conversation.id}:`, error);
199
+ finally {
200
+ // Clean up temporary files if ZIP was extracted
201
+ if (cleanup) {
202
+ cleanup();
70
203
  }
71
204
  }
72
- spinner.stop();
73
- console.log();
74
- clack.outro(chalk.green(`✓ Import complete! Imported ${imported} conversations${errors > 0 ? ` (${errors} errors)` : ''}`));
75
205
  }
76
206
  /**
77
207
  * Import from Grok's native export format
@@ -109,6 +239,7 @@ async function importGrok(filePath) {
109
239
  const conv = item.conversation;
110
240
  const responses = item.responses || [];
111
241
  // Convert responses to messages
242
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
243
  const messages = responses.map((r) => {
113
244
  const response = r.response;
114
245
  return {
@@ -151,4 +282,102 @@ async function importGrok(filePath) {
151
282
  spinner.stop(`✓ Parsed ${conversations.length} conversations`);
152
283
  return { conversations, mediaDir };
153
284
  }
285
+ /**
286
+ * Import from ChatGPT's native export format
287
+ */
288
+ async function importChatGPT(filePath) {
289
+ const spinner = clack.spinner();
290
+ spinner.start('Reading ChatGPT export...');
291
+ const stat = statSync(filePath);
292
+ let jsonFile;
293
+ let mediaDir;
294
+ if (stat.isDirectory()) {
295
+ // Export is a directory - find conversations.json
296
+ const files = readdirSync(filePath);
297
+ const conversationsJson = files.find((f) => f === 'conversations.json');
298
+ if (!conversationsJson) {
299
+ spinner.stop('Failed');
300
+ throw new Error('Could not find conversations.json in export directory');
301
+ }
302
+ jsonFile = join(filePath, conversationsJson);
303
+ // Check for media files (images, DALL-E generations, audio, etc.)
304
+ const hasMediaFiles = files.some((f) => f.startsWith('file-') ||
305
+ f === 'dalle-generations' ||
306
+ (statSync(join(filePath, f)).isDirectory() && f !== '.' && f !== '..'));
307
+ if (hasMediaFiles) {
308
+ mediaDir = filePath; // Use the export directory as media source
309
+ }
310
+ }
311
+ else {
312
+ // Single JSON file
313
+ jsonFile = filePath;
314
+ }
315
+ spinner.message('Parsing conversations...');
316
+ const content = readFileSync(jsonFile, 'utf-8');
317
+ const data = JSON.parse(content);
318
+ // data is an array of conversation objects
319
+ const conversationsList = Array.isArray(data) ? data : [data];
320
+ const conversations = [];
321
+ for (const conv of conversationsList) {
322
+ const messages = [];
323
+ // The mapping contains message nodes
324
+ const mapping = conv.mapping || {};
325
+ // Build message tree from mapping
326
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
327
+ const messageNodes = [];
328
+ for (const nodeId in mapping) {
329
+ const node = mapping[nodeId];
330
+ if (node.message && node.message.content && node.message.content.parts) {
331
+ messageNodes.push(node);
332
+ }
333
+ }
334
+ // Sort by create_time
335
+ messageNodes.sort((a, b) => {
336
+ const timeA = a.message.create_time || 0;
337
+ const timeB = b.message.create_time || 0;
338
+ return timeA - timeB;
339
+ });
340
+ // Convert to standard message format
341
+ for (const node of messageNodes) {
342
+ const msg = node.message;
343
+ const role = msg.author.role;
344
+ // Skip system messages
345
+ if (role === 'system')
346
+ continue;
347
+ const content = Array.isArray(msg.content.parts)
348
+ ? msg.content.parts.join('\\n')
349
+ : String(msg.content.parts || '');
350
+ if (!content.trim())
351
+ continue;
352
+ messages.push({
353
+ id: msg.id,
354
+ role: role === 'user' ? 'user' : 'assistant',
355
+ content,
356
+ timestamp: new Date((msg.create_time || Date.now() / 1000) * 1000),
357
+ metadata: {
358
+ model: msg.metadata?.model_slug,
359
+ },
360
+ });
361
+ }
362
+ // Skip conversations with no messages
363
+ if (messages.length === 0)
364
+ continue;
365
+ const conversation = {
366
+ id: conv.id,
367
+ provider: 'chatgpt',
368
+ title: conv.title || 'Untitled',
369
+ messages,
370
+ createdAt: new Date(conv.create_time * 1000),
371
+ updatedAt: new Date(conv.update_time * 1000),
372
+ metadata: {
373
+ messageCount: messages.length,
374
+ characterCount: messages.reduce((sum, m) => sum + m.content.length, 0),
375
+ mediaCount: 0, // TODO: Extract media from content
376
+ },
377
+ };
378
+ conversations.push(conversation);
379
+ }
380
+ spinner.stop(`✓ Parsed ${conversations.length} conversations`);
381
+ return { conversations, mediaDir };
382
+ }
154
383
  //# sourceMappingURL=import.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAUpD;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEhC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEpC,kCAAkC;QAClC,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,6DAA6D;QAC7D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;YACrF,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;YACtC,iCAAiC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEnD,8BAA8B;gBAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC3B,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,kDAAkD;gBAClD,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACjC,OAAO,UAAU,CAAC;gBACpB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEhD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,uBAAuB;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kCAAkC;IAClC,IAAI,WAAmB,CAAC;IACxB,IAAI,OAAiC,CAAC;IACtC,IAAI,WAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtE,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC3C,CAAC;QAED,wCAAwC;QACxC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACtE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;gBACnE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,mCAAmC;QACnC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;QAE/D,6BAA6B;QAC7B,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,UAAU,IAAI,2BAA2B,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,2BAA2B;QAC3B,IAAI,aAA6B,CAAC;QAClC,IAAI,cAAkC,CAAC;QAEvC,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU;gBACb,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC9E,MAAM;YACR,KAAK,SAAS;gBACZ,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjF,MAAM;YACR;gBACE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;gBACtE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,0BAA0B;QAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3F,KAAK,CAAC,GAAG,CAAC,OAAO,CACf,UAAU,aAAa,CAAC,MAAM,iBAAiB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CACzG,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,sCAAsC;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;gBAClC,OAAO,EAAE,UAAU,aAAa,CAAC,MAAM,4BAA4B;aACpE,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC5C,8DAA8D;QAC9D,MAAM,OAAO,GAAI,QAAgB,CAAC,OAAO,CAAC,CAAC,+BAA+B;QAE1E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE5C,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAC7C,QAAQ,EAAE,CAAC;gBACX,OAAO,CAAC,OAAO,CAAC,YAAY,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,8BAA8B;QAC9B,IAAI,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,YAAY,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAE7C,IAAI,CAAC;gBACH,mDAAmD;gBACnD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACtF,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEhD,6CAA6C;gBAC7C,IAAI,gBAAgB,GAAG,CAAC,CAAC;gBACzB,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;gBAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;oBAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAElC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;wBACvB,wEAAwE;wBACxE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;wBAC/C,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAEpD,2BAA2B;wBAC3B,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;4BACzC,IAAI,KAAK,GAAG,CAAC,CAAC;4BACd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;4BAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gCACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gCACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oCACrC,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;gCAChC,CAAC;qCAAM,CAAC;oCACN,KAAK,EAAE,CAAC;gCACV,CAAC;4BACH,CAAC;4BACD,OAAO,KAAK,CAAC;wBACf,CAAC,CAAC;wBACF,gBAAgB,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC7C,CAAC;yBAAM,IACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBACxB,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,EACpD,CAAC;wBACD,8BAA8B;wBAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;wBAC/C,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;wBAC/B,gBAAgB,EAAE,CAAC;oBACrB,CAAC;gBACH,CAAC;gBAED,YAAY,CAAC,IAAI,CAAC,YAAY,gBAAgB,cAAc,CAAC,CAAC;YAChE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBACrD,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,KAAK,CACT,+BAA+B,QAAQ,iBAAiB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAClG,CACF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,gDAAgD;QAChD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,QAAgB;IAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,QAAgB,CAAC;IACrB,IAAI,QAA4B,CAAC;IAEjC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,6CAA6C;QAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CACrE,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChG,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEjC,MAAM,aAAa,GAAmB,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAEvC,gCAAgC;QAChC,8DAA8D;QAC9D,MAAM,QAAQ,GAAc,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC5B,OAAO;gBACL,EAAE,EAAE,QAAQ,CAAC,GAAG;gBAChB,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAE,MAAgB,CAAC,CAAC,CAAE,WAAqB;gBAC9E,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;gBAC/B,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW;oBACjD,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC5D,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAErD,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU;YAC/B,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI,CAAC,kBAAkB,IAAI,MAAM;gBACxC,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,SAAS;gBACT,YAAY;gBACZ,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;gBACvC,GAAG,EAAE;oBACH,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,UAAU,EAAE,IAAI,CAAC,WAAW;iBAC7B;aACF;SACF,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAE/D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,QAAgB;IAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE3C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,QAAgB,CAAC;IACrB,IAAI,QAA4B,CAAC;IAEjC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,kDAAkD;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC;QAExE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAE7C,kEAAkE;QAClE,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;YACrB,CAAC,KAAK,mBAAmB;YACzB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CACzE,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,GAAG,QAAQ,CAAC,CAAC,2CAA2C;QAClE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEjC,2CAA2C;IAC3C,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAmB,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,qCAAqC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAEnC,kCAAkC;QAClC,8DAA8D;QAC9D,MAAM,YAAY,GAAU,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACvE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;YACzC,OAAO,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAE7B,uBAAuB;YACvB,IAAI,IAAI,KAAK,QAAQ;gBAAE,SAAS;YAEhC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC9C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAEpC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBAAE,SAAS;YAE9B,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;gBAC5C,OAAO;gBACP,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;gBAClE,QAAQ,EAAE;oBACR,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU;iBAChC;aACF,CAAC,CAAC;QACL,CAAC;QAED,sCAAsC;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEpC,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU;YAC/B,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5C,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5C,QAAQ,EAAE;gBACR,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtE,UAAU,EAAE,CAAC,EAAE,mCAAmC;aACnD;SACF,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAE/D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD5E"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D5E"}