ai-vault 1.3.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.
Files changed (120) hide show
  1. package/README.md +267 -32
  2. package/dist/cli.js +61 -18
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/archive.d.ts +16 -0
  5. package/dist/commands/archive.d.ts.map +1 -0
  6. package/dist/commands/archive.js +176 -0
  7. package/dist/commands/archive.js.map +1 -0
  8. package/dist/commands/import.d.ts +12 -0
  9. package/dist/commands/import.d.ts.map +1 -0
  10. package/dist/commands/import.js +383 -0
  11. package/dist/commands/import.js.map +1 -0
  12. package/dist/commands/list.d.ts +13 -0
  13. package/dist/commands/list.d.ts.map +1 -0
  14. package/dist/commands/list.js +89 -0
  15. package/dist/commands/list.js.map +1 -0
  16. package/dist/commands/schedule.d.ts +16 -0
  17. package/dist/commands/schedule.d.ts.map +1 -0
  18. package/dist/commands/schedule.js +346 -0
  19. package/dist/commands/schedule.js.map +1 -0
  20. package/dist/commands/setup.d.ts +9 -0
  21. package/dist/commands/setup.d.ts.map +1 -0
  22. package/dist/commands/setup.js +355 -0
  23. package/dist/commands/setup.js.map +1 -0
  24. package/dist/core/archiver.d.ts +37 -0
  25. package/dist/core/archiver.d.ts.map +1 -0
  26. package/dist/core/archiver.js +203 -0
  27. package/dist/core/archiver.js.map +1 -0
  28. package/dist/core/archiver.spec.d.ts +5 -0
  29. package/dist/core/archiver.spec.d.ts.map +1 -0
  30. package/dist/core/archiver.spec.js +439 -0
  31. package/dist/core/archiver.spec.js.map +1 -0
  32. package/dist/core/media.d.ts +77 -0
  33. package/dist/core/media.d.ts.map +1 -0
  34. package/dist/core/media.js +286 -0
  35. package/dist/core/media.js.map +1 -0
  36. package/dist/core/media.spec.d.ts +5 -0
  37. package/dist/core/media.spec.d.ts.map +1 -0
  38. package/dist/core/media.spec.js +401 -0
  39. package/dist/core/media.spec.js.map +1 -0
  40. package/dist/core/storage.d.ts +74 -0
  41. package/dist/core/storage.d.ts.map +1 -0
  42. package/dist/core/storage.js +199 -0
  43. package/dist/core/storage.js.map +1 -0
  44. package/dist/core/storage.spec.d.ts +5 -0
  45. package/dist/core/storage.spec.d.ts.map +1 -0
  46. package/dist/core/storage.spec.js +268 -0
  47. package/dist/core/storage.spec.js.map +1 -0
  48. package/dist/providers/base.d.ts +2 -2
  49. package/dist/providers/base.d.ts.map +1 -1
  50. package/dist/providers/chatgpt/index.d.ts +41 -0
  51. package/dist/providers/chatgpt/index.d.ts.map +1 -0
  52. package/dist/providers/chatgpt/index.js +220 -0
  53. package/dist/providers/chatgpt/index.js.map +1 -0
  54. package/dist/providers/chatgpt/index.spec.d.ts +5 -0
  55. package/dist/providers/chatgpt/index.spec.d.ts.map +1 -0
  56. package/dist/providers/chatgpt/index.spec.js +447 -0
  57. package/dist/providers/chatgpt/index.spec.js.map +1 -0
  58. package/dist/providers/grok-web/index.d.ts +36 -0
  59. package/dist/providers/grok-web/index.d.ts.map +1 -0
  60. package/dist/providers/grok-web/index.js +186 -0
  61. package/dist/providers/grok-web/index.js.map +1 -0
  62. package/dist/providers/grok-web/index.spec.d.ts +11 -0
  63. package/dist/providers/grok-web/index.spec.d.ts.map +1 -0
  64. package/dist/providers/grok-web/index.spec.js +260 -0
  65. package/dist/providers/grok-web/index.spec.js.map +1 -0
  66. package/dist/providers/grok-x/index.d.ts +36 -0
  67. package/dist/providers/grok-x/index.d.ts.map +1 -0
  68. package/dist/providers/{grok → grok-x}/index.js +50 -113
  69. package/dist/providers/grok-x/index.js.map +1 -0
  70. package/dist/providers/grok-x/index.spec.d.ts +12 -0
  71. package/dist/providers/grok-x/index.spec.d.ts.map +1 -0
  72. package/dist/providers/grok-x/index.spec.js +251 -0
  73. package/dist/providers/grok-x/index.spec.js.map +1 -0
  74. package/dist/providers/index.d.ts +6 -4
  75. package/dist/providers/index.d.ts.map +1 -1
  76. package/dist/providers/index.js +7 -4
  77. package/dist/providers/index.js.map +1 -1
  78. package/dist/types/index.d.ts +12 -4
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/provider.d.ts +6 -2
  81. package/dist/types/provider.d.ts.map +1 -1
  82. package/dist/types/provider.js.map +1 -1
  83. package/dist/types/schedule.d.ts +50 -0
  84. package/dist/types/schedule.d.ts.map +1 -0
  85. package/dist/types/schedule.js +5 -0
  86. package/dist/types/schedule.js.map +1 -0
  87. package/dist/types/schemas.d.ts +30 -30
  88. package/dist/types/storage.d.ts +85 -0
  89. package/dist/types/storage.d.ts.map +1 -0
  90. package/dist/types/storage.js +5 -0
  91. package/dist/types/storage.js.map +1 -0
  92. package/dist/utils/api-client.js +1 -1
  93. package/dist/utils/api-client.js.map +1 -1
  94. package/dist/utils/api-client.spec.d.ts +5 -0
  95. package/dist/utils/api-client.spec.d.ts.map +1 -0
  96. package/dist/utils/api-client.spec.js +115 -0
  97. package/dist/utils/api-client.spec.js.map +1 -0
  98. package/dist/utils/config.d.ts +45 -0
  99. package/dist/utils/config.d.ts.map +1 -0
  100. package/dist/utils/config.js +69 -0
  101. package/dist/utils/config.js.map +1 -0
  102. package/dist/utils/schedule-manager.d.ts +59 -0
  103. package/dist/utils/schedule-manager.d.ts.map +1 -0
  104. package/dist/utils/schedule-manager.js +152 -0
  105. package/dist/utils/schedule-manager.js.map +1 -0
  106. package/dist/utils/scheduler.d.ts +78 -0
  107. package/dist/utils/scheduler.d.ts.map +1 -0
  108. package/dist/utils/scheduler.js +299 -0
  109. package/dist/utils/scheduler.js.map +1 -0
  110. package/dist/utils/scraper.d.ts.map +1 -1
  111. package/dist/utils/scraper.js +2 -0
  112. package/dist/utils/scraper.js.map +1 -1
  113. package/dist/utils/zip.d.ts +25 -0
  114. package/dist/utils/zip.d.ts.map +1 -0
  115. package/dist/utils/zip.js +90 -0
  116. package/dist/utils/zip.js.map +1 -0
  117. package/package.json +14 -4
  118. package/dist/providers/grok/index.d.ts +0 -47
  119. package/dist/providers/grok/index.d.ts.map +0 -1
  120. package/dist/providers/grok/index.js.map +0 -1
package/README.md CHANGED
@@ -24,20 +24,30 @@ 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 (X.AI)** | 🚧 In Progress | ✅ | ✅ | ✅ |
30
- | **ChatGPT** | 📋 Planned | | ✅ | ✅ |
31
- | **Claude** | 📋 Planned | ✅ | ✅ | ✅ |
32
- | **Gemini** | 📋 Planned | ⚠️ Partial | ✅ | ✅ |
33
- | **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
+
36
+ **Note:** Grok has two separate providers due to separate account systems:
37
+
38
+ - `grok-web`: Standalone grok.com platform (cookies authentication)
39
+ - `grok-x`: X-integrated Grok at x.com/grok (cookies authentication)
34
40
 
35
41
  ### Smart Features
36
42
 
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
37
47
  - **Incremental Backups** - Only fetch new/updated conversations
38
48
  - **Media Deduplication** - Don't store the same image twice
39
49
  - **Flexible Scheduling** - Daily, weekly, or custom cron expressions
40
- - **Rich Export Formats** - JSON, Markdown, HTML with metadata
50
+ - **Rich Export Formats** - JSON + Markdown for maximum compatibility
41
51
  - **Automatic Cookie Management** - Extract session cookies from your browser
42
52
  - **Filtering & Targeting** - Date ranges, conversation importance, custom queries
43
53
 
@@ -155,11 +165,14 @@ rmdir /s %USERPROFILE%\ai-vault-data
155
165
  # Interactive setup wizard
156
166
  ai-vault setup
157
167
 
158
- # Run your first archive
168
+ # Option 1: Import from native export (fastest way to start)
169
+ ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --yes
170
+
171
+ # Option 2: Archive via automated scraping
159
172
  ai-vault archive
160
173
 
161
174
  # Schedule automated backups
162
- ai-vault schedule --daily
175
+ ai-vault schedule add
163
176
 
164
177
  # List archived conversations
165
178
  ai-vault list
@@ -173,15 +186,30 @@ ai-vault upgrade
173
186
  ### Setup
174
187
 
175
188
  ```bash
189
+ # Interactive setup
176
190
  ai-vault setup
191
+
192
+ # Setup with cookies from file (easier for cookie-based auth)
193
+ ai-vault setup --cookies-file ~/Downloads/cookies.json
177
194
  ```
178
195
 
196
+ **For cookie-based authentication:**
197
+
198
+ 1. Install [Cookie-Editor](https://chrome.google.com/webstore/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) extension
199
+ 2. Go to the provider's website and log in:
200
+ - **grok-web**: grok.com
201
+ - **grok-x**: x.com/grok
202
+ - Other providers as applicable
203
+ 3. Click Cookie-Editor → Export → JSON
204
+ 4. Save to a file
205
+ 5. Run `ai-vault setup --cookies-file <path>`
206
+
179
207
  The interactive wizard will:
180
208
 
181
209
  1. Choose which AI platforms to archive
182
210
  2. Configure authentication (API keys or browser cookies)
183
- 3. Set your backup preferences
184
- 4. Choose export formats
211
+ 3. Set your archive directory (default: `~/ai-vault-data`)
212
+ 4. Test your connection
185
213
 
186
214
  ### Archive Now
187
215
 
@@ -190,28 +218,111 @@ The interactive wizard will:
190
218
  ai-vault archive
191
219
 
192
220
  # Archive specific platform
193
- ai-vault archive --provider grok
221
+ ai-vault archive --provider grok-web
194
222
 
195
223
  # Archive with date filter
196
224
  ai-vault archive --since 2025-01-01
197
225
 
226
+ # Archive with custom output directory
227
+ ai-vault archive --output ~/Dropbox/AI-Backups
228
+ ai-vault archive -o /mnt/external/backups
229
+
230
+ # Limit number of conversations
231
+ ai-vault archive --limit 10
232
+
233
+ # Skip media downloads (faster, text only)
234
+ ai-vault archive --skip-media
235
+
198
236
  # Dry run (see what would be archived)
199
237
  ai-vault archive --dry-run
200
238
  ```
201
239
 
202
- ### Schedule Automated Backups
240
+ ### Import from Native Exports
241
+
242
+ Many platforms offer one-time data exports. AI Vault can import these and convert to its standardized format:
203
243
 
204
244
  ```bash
205
- # Set up daily backups
206
- ai-vault schedule --daily
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/
207
250
 
208
- # Custom cron expression
209
- ai-vault schedule --cron "0 2 * * *" # Every day at 2 AM
251
+ # Import with custom output directory
252
+ ai-vault import --file ~/Downloads/export.zip --output ~/Dropbox/AI-Backups
210
253
 
211
- # View scheduled jobs
212
- ai-vault schedule --list
254
+ # Manually specify provider (optional)
255
+ ai-vault import --provider grok-web --file ~/Downloads/grok-export/
256
+
257
+ # Skip confirmation prompt
258
+ ai-vault import --file ~/Downloads/export.zip --yes
259
+ ```
260
+
261
+ **Supported import formats:**
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`
267
+ - **Grok (grok.com)**: Export from grok.com → Profile → Data & Privacy → Download your data
268
+ - Use `--provider grok-web` for standalone Grok conversations
269
+ - Supports ZIP files and unpacked directories
270
+ - **Grok on X**: Export from x.com/grok (if available)
271
+ - Use `--provider grok-x` for X-integrated Grok conversations
272
+ - **Claude**: _(coming soon)_ Export from settings
273
+
274
+ **Why import vs scraping?**
275
+
276
+ - ✅ Faster - no web automation needed
277
+ - ✅ More reliable - uses official export format
278
+ - ✅ Complete data - includes all metadata and media files
279
+ - ✅ Works with ZIP files or unpacked directories
280
+ - ✅ Works alongside automated scraping for incremental updates
281
+
282
+ ### Schedule Automated Backups
283
+
284
+ AI Vault uses native OS schedulers (cron on Unix, Task Scheduler on Windows) for automated backups. No long-running daemon required!
285
+
286
+ ```bash
287
+ # Add a new schedule (interactive)
288
+ ai-vault schedule add
289
+
290
+ # Add schedule with options
291
+ ai-vault schedule add --provider grok-web --cron "0 2 * * *" --description "Daily Grok backup"
292
+
293
+ # List all schedules
294
+ ai-vault schedule list
295
+ # or simply
296
+ ai-vault schedule
297
+
298
+ # Show detailed status (includes system scheduler info)
299
+ ai-vault schedule status
300
+
301
+ # Remove a schedule
302
+ ai-vault schedule remove --id abc123
303
+
304
+ # Enable/disable schedules
305
+ ai-vault schedule enable --id abc123
306
+ ai-vault schedule disable --id abc123
307
+
308
+ # Advanced options
309
+ ai-vault schedule add \
310
+ --provider grok-web \
311
+ --cron "0 */6 * * *" \
312
+ --limit 100 \
313
+ --since-days 7 \
314
+ --skip-media
213
315
  ```
214
316
 
317
+ **Schedule Options:**
318
+
319
+ - `--cron`: Cron expression (e.g., `"0 2 * * *"` for daily at 2 AM)
320
+ - `--limit`: Maximum conversations per run
321
+ - `--since-days`: Only archive conversations from last N days
322
+ - `--skip-media`: Skip downloading media files
323
+
324
+ **Logs:** Scheduled runs write logs to `~/.ai-vault/logs/<schedule-id>.log`
325
+
215
326
  ### List Archived Conversations
216
327
 
217
328
  ```bash
@@ -225,6 +336,95 @@ ai-vault list --provider chatgpt
225
336
  ai-vault list --search "machine learning"
226
337
  ```
227
338
 
339
+ ## ⚙️ Configuration
340
+
341
+ ### File Locations
342
+
343
+ **Configuration file:** `~/.ai-vault/config.json`
344
+
345
+ ```json
346
+ {
347
+ "version": "1.0.0",
348
+ "providers": {
349
+ "grok-web": {
350
+ "providerName": "grok-web",
351
+ "authMethod": "cookies",
352
+ "cookies": {
353
+ "auth_token": "your-session-cookie"
354
+ }
355
+ }
356
+ },
357
+ "settings": {
358
+ "archiveDir": "~/ai-vault-data"
359
+ }
360
+ }
361
+ ```
362
+
363
+ **Default archive directory:** `~/ai-vault-data`
364
+
365
+ ```
366
+ ~/ai-vault-data/
367
+ ├── grok-web/ # Standalone grok.com conversations
368
+ │ ├── conversations/
369
+ │ │ └── conv-123/
370
+ │ │ ├── conversation.json
371
+ │ │ └── conversation.md
372
+ │ ├── media/
373
+ │ │ ├── images/
374
+ │ │ ├── videos/
375
+ │ │ └── documents/
376
+ │ ├── index.json
377
+ │ └── media-registry.json
378
+ ├── grok-x/ # X-integrated Grok conversations
379
+ │ └── ... (same structure)
380
+ ├── chatgpt/
381
+ └── claude/
382
+ ```
383
+
384
+ ### Customizing Archive Directory
385
+
386
+ **Three ways to set the output directory** (in priority order):
387
+
388
+ 1. **CLI option** (per-command override):
389
+
390
+ ```bash
391
+ ai-vault archive --output ~/Dropbox/AI-Backups
392
+ ai-vault archive -o /mnt/external/backups
393
+ ```
394
+
395
+ 2. **Config file** (persistent setting):
396
+ Manually edit `~/.ai-vault/config.json`:
397
+
398
+ ```json
399
+ {
400
+ "settings": {
401
+ "archiveDir": "~/Documents/my-ai-archives"
402
+ }
403
+ }
404
+ ```
405
+
406
+ Or set during `ai-vault setup`
407
+
408
+ 3. **Default**: `~/ai-vault-data` (if nothing configured)
409
+
410
+ ### Export Format
411
+
412
+ Conversations are saved in **Markdown** by default:
413
+
414
+ - Human-readable and portable
415
+ - Works with Obsidian, Notion, VS Code, and any text editor
416
+ - Includes full conversation text + metadata
417
+
418
+ To change the format, edit `~/.ai-vault/config.json`:
419
+
420
+ ```json
421
+ {
422
+ "settings": {
423
+ "formats": ["markdown"] // Options: "markdown", "json", or both ["markdown", "json"]
424
+ }
425
+ }
426
+ ```
427
+
228
428
  ## 🏗️ Architecture
229
429
 
230
430
  AI Vault uses a **plugin-based provider architecture** that makes it easy to add new AI platforms:
@@ -233,7 +433,8 @@ AI Vault uses a **plugin-based provider architecture** that makes it easy to add
233
433
  src/
234
434
  ├── providers/ # Pluggable AI platform providers
235
435
  │ ├── base.ts # Abstract Provider interface
236
- │ ├── grok/ # Grok (X.AI) implementation
436
+ │ ├── grok-web/ # Grok (grok.com) implementation
437
+ │ ├── grok-x/ # Grok on X (x.com/grok) implementation
237
438
  │ ├── chatgpt/ # ChatGPT implementation
238
439
  │ └── claude/ # Claude implementation
239
440
  ├── core/ # Core archival logic
@@ -272,18 +473,52 @@ See [docs/providers.md](docs/providers.md) for a detailed guide.
272
473
 
273
474
  ## 📋 Roadmap
274
475
 
476
+ ### Completed ✅
477
+
275
478
  - [x] Project setup and architecture
276
- - [ ] Grok provider (API + scraping)
277
- - [ ] ChatGPT provider
278
- - [ ] Claude provider
279
- - [ ] Media downloader with deduplication
280
- - [ ] Smart filtering system
281
- - [ ] Scheduling with cron/launchd
282
- - [ ] Gemini provider
283
- - [ ] Perplexity provider
284
- - [ ] Export to knowledge management tools (Obsidian, Notion)
285
- - [ ] Search across all archived conversations
286
- - [ ] Web UI for browsing archives
479
+ - [x] Storage layer with JSON + Markdown export
480
+ - [x] Media downloader with SHA256 deduplication
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
487
+ - [x] Grok provider - two separate implementations:
488
+ - [x] **grok-web**: Standalone grok.com (cookies + scraping)
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
494
+ - [x] Smart filtering system:
495
+ - [x] Date range filtering (since/until)
496
+ - [x] Search query filtering (title/preview)
497
+ - [x] Conversation limit controls
498
+ - [x] List command for browsing before archiving
499
+ - [x] Scheduling system:
500
+ - [x] Platform-agnostic (cron on Unix, Task Scheduler on Windows)
501
+ - [x] Full CRUD operations (add, list, remove, enable, disable)
502
+ - [x] Per-provider schedule configuration
503
+ - [x] Logging infrastructure
504
+
505
+ ### In Progress 🚧
506
+
507
+ - [ ] Additional provider implementations:
508
+ - [ ] Claude provider (import + scraping)
509
+ - [ ] Gemini provider (import + scraping)
510
+ - [ ] Perplexity provider (scraping)
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
+
514
+ ### Planned 📋
515
+
516
+ - [ ] Export to knowledge management tools (Obsidian, Notion, Roam)
517
+ - [ ] Full-text search across all archived conversations
518
+ - [ ] Web UI for browsing and exploring archives
519
+ - [ ] Conversation analytics and insights
520
+ - [ ] Automatic tagging and categorization
521
+ - [ ] Differential sync (only download changes)
287
522
 
288
523
  ## 📄 License
289
524
 
package/dist/cli.js CHANGED
@@ -19,38 +19,81 @@ program
19
19
  program
20
20
  .command('setup')
21
21
  .description('Interactive setup wizard')
22
- .action(async () => {
23
- console.log(chalk.blue('Setup wizard coming soon!'));
24
- console.log(chalk.gray('This will help you configure providers and authentication.'));
22
+ .option('--cookies-file <path>', 'Path to cookies JSON file (for cookie-based auth)')
23
+ .action(async (options) => {
24
+ const { setupCommand } = await import('./commands/setup.js');
25
+ await setupCommand(options);
25
26
  });
26
27
  program
27
28
  .command('archive')
28
29
  .description('Archive conversations from configured providers')
29
30
  .option('-p, --provider <provider>', 'Specific provider to archive')
30
- .option('--since <date>', 'Archive conversations since date')
31
+ .option('-o, --output <directory>', 'Output directory (overrides config)')
32
+ .option('--since <date>', 'Archive conversations since date (YYYY-MM-DD)')
33
+ .option('--until <date>', 'Archive conversations until date (YYYY-MM-DD)')
34
+ .option('--limit <number>', 'Maximum number of conversations to archive')
31
35
  .option('--dry-run', 'Preview what would be archived without downloading')
36
+ .option('--skip-media', 'Skip downloading media files (images, videos)')
37
+ .option('--ids <ids...>', 'Specific conversation IDs to archive')
38
+ .action(async (options) => {
39
+ const { archiveCommand } = await import('./commands/archive.js');
40
+ await archiveCommand({
41
+ provider: options.provider,
42
+ outputDir: options.output,
43
+ since: options.since,
44
+ until: options.until,
45
+ limit: options.limit,
46
+ dryRun: options.dryRun,
47
+ skipMedia: options.skipMedia,
48
+ conversationIds: options.ids,
49
+ });
50
+ });
51
+ program
52
+ .command('import')
53
+ .description('Import conversations from native platform exports')
54
+ .option('-p, --provider <provider>', 'Provider (grok, chatgpt, claude) - auto-detected if omitted')
55
+ .requiredOption('-f, --file <path>', 'Path to export file or directory')
56
+ .option('-o, --output <directory>', 'Output directory (overrides config)')
57
+ .option('-y, --yes', 'Skip confirmation prompt')
32
58
  .action(async (options) => {
33
- console.log(chalk.blue('Archive command coming soon!'));
34
- console.log(chalk.gray('Options:'), options);
59
+ const { importCommand } = await import('./commands/import.js');
60
+ await importCommand(options);
35
61
  });
36
62
  program
37
63
  .command('list')
38
- .description('List archived conversations')
39
- .option('-p, --provider <provider>', 'Filter by provider')
40
- .option('--search <query>', 'Search conversations')
64
+ .description('List conversations from configured providers')
65
+ .option('-p, --provider <provider>', 'Provider to list from (grok-web, grok-x, etc.)')
66
+ .option('--search <query>', 'Search conversations by title or preview')
67
+ .option('--since <date>', 'List conversations since date (YYYY-MM-DD)')
68
+ .option('--until <date>', 'List conversations until date (YYYY-MM-DD)')
69
+ .option('--limit <number>', 'Maximum number of conversations to list')
41
70
  .action(async (options) => {
42
- console.log(chalk.blue('List command coming soon!'));
43
- console.log(chalk.gray('Options:'), options);
71
+ const { listCommand } = await import('./commands/list.js');
72
+ await listCommand(options);
44
73
  });
45
74
  program
46
75
  .command('schedule')
47
- .description('Configure automated backup schedule')
48
- .option('--daily', 'Schedule daily backups')
49
- .option('--cron <expression>', 'Custom cron expression')
50
- .option('--list', 'List scheduled jobs')
51
- .action(async (options) => {
52
- console.log(chalk.blue('Schedule command coming soon!'));
53
- console.log(chalk.gray('Options:'), options);
76
+ .description('Manage automated archiving schedules')
77
+ .argument('[action]', 'Action: add, list, remove, enable, disable, status')
78
+ .option('--id <id>', 'Schedule ID (for remove/enable/disable)')
79
+ .option('-p, --provider <provider>', 'Provider to schedule')
80
+ .option('--cron <expression>', 'Cron expression (e.g., "0 2 * * *")')
81
+ .option('--description <text>', 'Schedule description')
82
+ .option('--limit <number>', 'Maximum conversations to archive per run')
83
+ .option('--since-days <days>', 'Only archive conversations from last N days')
84
+ .option('--skip-media', 'Skip downloading media files')
85
+ .action(async (action, options) => {
86
+ const { scheduleCommand } = await import('./commands/schedule.js');
87
+ await scheduleCommand({
88
+ action: action || 'list',
89
+ id: options.id,
90
+ provider: options.provider,
91
+ cron: options.cron,
92
+ description: options.description,
93
+ limit: options.limit,
94
+ sinceDays: options.sinceDays,
95
+ skipMedia: options.skipMedia,
96
+ });
54
97
  });
55
98
  program
56
99
  .command('upgrade')
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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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Archive Command - Archive conversations from providers
3
+ */
4
+ interface ArchiveCommandOptions {
5
+ provider?: string;
6
+ outputDir?: string;
7
+ since?: string;
8
+ until?: string;
9
+ limit?: string;
10
+ dryRun?: boolean;
11
+ skipMedia?: boolean;
12
+ conversationIds?: string[];
13
+ }
14
+ export declare function archiveCommand(options: ArchiveCommandOptions): Promise<void>;
15
+ export {};
16
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2JlF"}