ai-vault 1.3.0 → 1.4.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 +243 -32
- package/dist/cli.js +61 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/archive.d.ts +16 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +176 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/import.d.ts +12 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +154 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/list.d.ts +13 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +89 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/schedule.d.ts +16 -0
- package/dist/commands/schedule.d.ts.map +1 -0
- package/dist/commands/schedule.js +346 -0
- package/dist/commands/schedule.js.map +1 -0
- package/dist/commands/setup.d.ts +9 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +233 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/core/archiver.d.ts +37 -0
- package/dist/core/archiver.d.ts.map +1 -0
- package/dist/core/archiver.js +203 -0
- package/dist/core/archiver.js.map +1 -0
- package/dist/core/archiver.spec.d.ts +5 -0
- package/dist/core/archiver.spec.d.ts.map +1 -0
- package/dist/core/archiver.spec.js +439 -0
- package/dist/core/archiver.spec.js.map +1 -0
- package/dist/core/media.d.ts +77 -0
- package/dist/core/media.d.ts.map +1 -0
- package/dist/core/media.js +286 -0
- package/dist/core/media.js.map +1 -0
- package/dist/core/media.spec.d.ts +5 -0
- package/dist/core/media.spec.d.ts.map +1 -0
- package/dist/core/media.spec.js +401 -0
- package/dist/core/media.spec.js.map +1 -0
- package/dist/core/storage.d.ts +74 -0
- package/dist/core/storage.d.ts.map +1 -0
- package/dist/core/storage.js +199 -0
- package/dist/core/storage.js.map +1 -0
- package/dist/core/storage.spec.d.ts +5 -0
- package/dist/core/storage.spec.d.ts.map +1 -0
- package/dist/core/storage.spec.js +268 -0
- package/dist/core/storage.spec.js.map +1 -0
- package/dist/providers/base.d.ts +2 -2
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/grok-web/index.d.ts +36 -0
- package/dist/providers/grok-web/index.d.ts.map +1 -0
- package/dist/providers/grok-web/index.js +186 -0
- package/dist/providers/grok-web/index.js.map +1 -0
- package/dist/providers/grok-web/index.spec.d.ts +11 -0
- package/dist/providers/grok-web/index.spec.d.ts.map +1 -0
- package/dist/providers/grok-web/index.spec.js +260 -0
- package/dist/providers/grok-web/index.spec.js.map +1 -0
- package/dist/providers/grok-x/index.d.ts +36 -0
- package/dist/providers/grok-x/index.d.ts.map +1 -0
- package/dist/providers/{grok → grok-x}/index.js +50 -113
- package/dist/providers/grok-x/index.js.map +1 -0
- package/dist/providers/grok-x/index.spec.d.ts +12 -0
- package/dist/providers/grok-x/index.spec.d.ts.map +1 -0
- package/dist/providers/grok-x/index.spec.js +251 -0
- package/dist/providers/grok-x/index.spec.js.map +1 -0
- package/dist/providers/index.d.ts +5 -4
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +5 -3
- package/dist/providers/index.js.map +1 -1
- package/dist/types/index.d.ts +12 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/provider.d.ts +6 -2
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/types/provider.js.map +1 -1
- package/dist/types/schedule.d.ts +50 -0
- package/dist/types/schedule.d.ts.map +1 -0
- package/dist/types/schedule.js +5 -0
- package/dist/types/schedule.js.map +1 -0
- package/dist/types/schemas.d.ts +30 -30
- package/dist/types/storage.d.ts +85 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/storage.js +5 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/utils/api-client.js +1 -1
- package/dist/utils/api-client.js.map +1 -1
- package/dist/utils/api-client.spec.d.ts +5 -0
- package/dist/utils/api-client.spec.d.ts.map +1 -0
- package/dist/utils/api-client.spec.js +115 -0
- package/dist/utils/api-client.spec.js.map +1 -0
- package/dist/utils/config.d.ts +45 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +69 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/schedule-manager.d.ts +59 -0
- package/dist/utils/schedule-manager.d.ts.map +1 -0
- package/dist/utils/schedule-manager.js +152 -0
- package/dist/utils/schedule-manager.js.map +1 -0
- package/dist/utils/scheduler.d.ts +78 -0
- package/dist/utils/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduler.js +299 -0
- package/dist/utils/scheduler.js.map +1 -0
- package/package.json +12 -4
- package/dist/providers/grok/index.d.ts +0 -47
- package/dist/providers/grok/index.d.ts.map +0 -1
- package/dist/providers/grok/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -24,20 +24,27 @@ Your AI interactions are valuable assets. They contain your thoughts, research,
|
|
|
24
24
|
|
|
25
25
|
### Supported Platforms
|
|
26
26
|
|
|
27
|
-
| Platform
|
|
28
|
-
|
|
|
29
|
-
| **Grok (
|
|
30
|
-
| **
|
|
31
|
-
| **
|
|
32
|
-
| **
|
|
33
|
-
| **
|
|
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 | ❌ | ✅ | ✅ |
|
|
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)
|
|
37
44
|
- **Incremental Backups** - Only fetch new/updated conversations
|
|
38
45
|
- **Media Deduplication** - Don't store the same image twice
|
|
39
46
|
- **Flexible Scheduling** - Daily, weekly, or custom cron expressions
|
|
40
|
-
- **Rich Export Formats** - JSON
|
|
47
|
+
- **Rich Export Formats** - JSON + Markdown for maximum compatibility
|
|
41
48
|
- **Automatic Cookie Management** - Extract session cookies from your browser
|
|
42
49
|
- **Filtering & Targeting** - Date ranges, conversation importance, custom queries
|
|
43
50
|
|
|
@@ -155,11 +162,14 @@ rmdir /s %USERPROFILE%\ai-vault-data
|
|
|
155
162
|
# Interactive setup wizard
|
|
156
163
|
ai-vault setup
|
|
157
164
|
|
|
158
|
-
#
|
|
165
|
+
# Option 1: Import from native export (fastest way to start)
|
|
166
|
+
ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --yes
|
|
167
|
+
|
|
168
|
+
# Option 2: Archive via automated scraping
|
|
159
169
|
ai-vault archive
|
|
160
170
|
|
|
161
171
|
# Schedule automated backups
|
|
162
|
-
ai-vault schedule
|
|
172
|
+
ai-vault schedule add
|
|
163
173
|
|
|
164
174
|
# List archived conversations
|
|
165
175
|
ai-vault list
|
|
@@ -173,15 +183,30 @@ ai-vault upgrade
|
|
|
173
183
|
### Setup
|
|
174
184
|
|
|
175
185
|
```bash
|
|
186
|
+
# Interactive setup
|
|
176
187
|
ai-vault setup
|
|
188
|
+
|
|
189
|
+
# Setup with cookies from file (easier for cookie-based auth)
|
|
190
|
+
ai-vault setup --cookies-file ~/Downloads/cookies.json
|
|
177
191
|
```
|
|
178
192
|
|
|
193
|
+
**For cookie-based authentication:**
|
|
194
|
+
|
|
195
|
+
1. Install [Cookie-Editor](https://chrome.google.com/webstore/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) extension
|
|
196
|
+
2. Go to the provider's website and log in:
|
|
197
|
+
- **grok-web**: grok.com
|
|
198
|
+
- **grok-x**: x.com/grok
|
|
199
|
+
- Other providers as applicable
|
|
200
|
+
3. Click Cookie-Editor → Export → JSON
|
|
201
|
+
4. Save to a file
|
|
202
|
+
5. Run `ai-vault setup --cookies-file <path>`
|
|
203
|
+
|
|
179
204
|
The interactive wizard will:
|
|
180
205
|
|
|
181
206
|
1. Choose which AI platforms to archive
|
|
182
207
|
2. Configure authentication (API keys or browser cookies)
|
|
183
|
-
3. Set your
|
|
184
|
-
4.
|
|
208
|
+
3. Set your archive directory (default: `~/ai-vault-data`)
|
|
209
|
+
4. Test your connection
|
|
185
210
|
|
|
186
211
|
### Archive Now
|
|
187
212
|
|
|
@@ -190,28 +215,100 @@ The interactive wizard will:
|
|
|
190
215
|
ai-vault archive
|
|
191
216
|
|
|
192
217
|
# Archive specific platform
|
|
193
|
-
ai-vault archive --provider grok
|
|
218
|
+
ai-vault archive --provider grok-web
|
|
194
219
|
|
|
195
220
|
# Archive with date filter
|
|
196
221
|
ai-vault archive --since 2025-01-01
|
|
197
222
|
|
|
223
|
+
# Archive with custom output directory
|
|
224
|
+
ai-vault archive --output ~/Dropbox/AI-Backups
|
|
225
|
+
ai-vault archive -o /mnt/external/backups
|
|
226
|
+
|
|
227
|
+
# Limit number of conversations
|
|
228
|
+
ai-vault archive --limit 10
|
|
229
|
+
|
|
230
|
+
# Skip media downloads (faster, text only)
|
|
231
|
+
ai-vault archive --skip-media
|
|
232
|
+
|
|
198
233
|
# Dry run (see what would be archived)
|
|
199
234
|
ai-vault archive --dry-run
|
|
200
235
|
```
|
|
201
236
|
|
|
202
|
-
###
|
|
237
|
+
### Import from Native Exports
|
|
238
|
+
|
|
239
|
+
Many platforms offer one-time data exports. AI Vault can import these and convert to its standardized format:
|
|
203
240
|
|
|
204
241
|
```bash
|
|
205
|
-
#
|
|
206
|
-
ai-vault
|
|
242
|
+
# Import from Grok's native export
|
|
243
|
+
ai-vault import --provider grok-web --file ~/Downloads/grok-export/
|
|
207
244
|
|
|
208
|
-
#
|
|
209
|
-
ai-vault
|
|
245
|
+
# Import with custom output directory
|
|
246
|
+
ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --output ~/Dropbox/AI-Backups
|
|
210
247
|
|
|
211
|
-
#
|
|
212
|
-
ai-vault
|
|
248
|
+
# Skip confirmation prompt
|
|
249
|
+
ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --yes
|
|
213
250
|
```
|
|
214
251
|
|
|
252
|
+
**Supported import formats:**
|
|
253
|
+
|
|
254
|
+
- **Grok (grok.com)**: Export from grok.com → Profile → Data & Privacy → Download your data
|
|
255
|
+
- Use `--provider grok-web` for standalone Grok conversations
|
|
256
|
+
- **Grok on X**: Export from x.com/grok (if available)
|
|
257
|
+
- Use `--provider grok-x` for X-integrated Grok conversations
|
|
258
|
+
- **ChatGPT**: _(coming soon)_ Export from settings → Data controls → Export data
|
|
259
|
+
- **Claude**: _(coming soon)_ Export from settings
|
|
260
|
+
|
|
261
|
+
**Why import vs scraping?**
|
|
262
|
+
|
|
263
|
+
- ✅ Faster - no web automation needed
|
|
264
|
+
- ✅ More reliable - uses official export format
|
|
265
|
+
- ✅ Complete data - includes metadata that might not be visible in UI
|
|
266
|
+
- ✅ Works alongside automated scraping for incremental updates
|
|
267
|
+
|
|
268
|
+
### Schedule Automated Backups
|
|
269
|
+
|
|
270
|
+
AI Vault uses native OS schedulers (cron on Unix, Task Scheduler on Windows) for automated backups. No long-running daemon required!
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Add a new schedule (interactive)
|
|
274
|
+
ai-vault schedule add
|
|
275
|
+
|
|
276
|
+
# Add schedule with options
|
|
277
|
+
ai-vault schedule add --provider grok-web --cron "0 2 * * *" --description "Daily Grok backup"
|
|
278
|
+
|
|
279
|
+
# List all schedules
|
|
280
|
+
ai-vault schedule list
|
|
281
|
+
# or simply
|
|
282
|
+
ai-vault schedule
|
|
283
|
+
|
|
284
|
+
# Show detailed status (includes system scheduler info)
|
|
285
|
+
ai-vault schedule status
|
|
286
|
+
|
|
287
|
+
# Remove a schedule
|
|
288
|
+
ai-vault schedule remove --id abc123
|
|
289
|
+
|
|
290
|
+
# Enable/disable schedules
|
|
291
|
+
ai-vault schedule enable --id abc123
|
|
292
|
+
ai-vault schedule disable --id abc123
|
|
293
|
+
|
|
294
|
+
# Advanced options
|
|
295
|
+
ai-vault schedule add \
|
|
296
|
+
--provider grok-web \
|
|
297
|
+
--cron "0 */6 * * *" \
|
|
298
|
+
--limit 100 \
|
|
299
|
+
--since-days 7 \
|
|
300
|
+
--skip-media
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Schedule Options:**
|
|
304
|
+
|
|
305
|
+
- `--cron`: Cron expression (e.g., `"0 2 * * *"` for daily at 2 AM)
|
|
306
|
+
- `--limit`: Maximum conversations per run
|
|
307
|
+
- `--since-days`: Only archive conversations from last N days
|
|
308
|
+
- `--skip-media`: Skip downloading media files
|
|
309
|
+
|
|
310
|
+
**Logs:** Scheduled runs write logs to `~/.ai-vault/logs/<schedule-id>.log`
|
|
311
|
+
|
|
215
312
|
### List Archived Conversations
|
|
216
313
|
|
|
217
314
|
```bash
|
|
@@ -225,6 +322,95 @@ ai-vault list --provider chatgpt
|
|
|
225
322
|
ai-vault list --search "machine learning"
|
|
226
323
|
```
|
|
227
324
|
|
|
325
|
+
## ⚙️ Configuration
|
|
326
|
+
|
|
327
|
+
### File Locations
|
|
328
|
+
|
|
329
|
+
**Configuration file:** `~/.ai-vault/config.json`
|
|
330
|
+
|
|
331
|
+
```json
|
|
332
|
+
{
|
|
333
|
+
"version": "1.0.0",
|
|
334
|
+
"providers": {
|
|
335
|
+
"grok-web": {
|
|
336
|
+
"providerName": "grok-web",
|
|
337
|
+
"authMethod": "cookies",
|
|
338
|
+
"cookies": {
|
|
339
|
+
"auth_token": "your-session-cookie"
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"settings": {
|
|
344
|
+
"archiveDir": "~/ai-vault-data"
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**Default archive directory:** `~/ai-vault-data`
|
|
350
|
+
|
|
351
|
+
```
|
|
352
|
+
~/ai-vault-data/
|
|
353
|
+
├── grok-web/ # Standalone grok.com conversations
|
|
354
|
+
│ ├── conversations/
|
|
355
|
+
│ │ └── conv-123/
|
|
356
|
+
│ │ ├── conversation.json
|
|
357
|
+
│ │ └── conversation.md
|
|
358
|
+
│ ├── media/
|
|
359
|
+
│ │ ├── images/
|
|
360
|
+
│ │ ├── videos/
|
|
361
|
+
│ │ └── documents/
|
|
362
|
+
│ ├── index.json
|
|
363
|
+
│ └── media-registry.json
|
|
364
|
+
├── grok-x/ # X-integrated Grok conversations
|
|
365
|
+
│ └── ... (same structure)
|
|
366
|
+
├── chatgpt/
|
|
367
|
+
└── claude/
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Customizing Archive Directory
|
|
371
|
+
|
|
372
|
+
**Three ways to set the output directory** (in priority order):
|
|
373
|
+
|
|
374
|
+
1. **CLI option** (per-command override):
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
ai-vault archive --output ~/Dropbox/AI-Backups
|
|
378
|
+
ai-vault archive -o /mnt/external/backups
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
2. **Config file** (persistent setting):
|
|
382
|
+
Manually edit `~/.ai-vault/config.json`:
|
|
383
|
+
|
|
384
|
+
```json
|
|
385
|
+
{
|
|
386
|
+
"settings": {
|
|
387
|
+
"archiveDir": "~/Documents/my-ai-archives"
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Or set during `ai-vault setup`
|
|
393
|
+
|
|
394
|
+
3. **Default**: `~/ai-vault-data` (if nothing configured)
|
|
395
|
+
|
|
396
|
+
### Export Format
|
|
397
|
+
|
|
398
|
+
Conversations are saved in **Markdown** by default:
|
|
399
|
+
|
|
400
|
+
- Human-readable and portable
|
|
401
|
+
- Works with Obsidian, Notion, VS Code, and any text editor
|
|
402
|
+
- Includes full conversation text + metadata
|
|
403
|
+
|
|
404
|
+
To change the format, edit `~/.ai-vault/config.json`:
|
|
405
|
+
|
|
406
|
+
```json
|
|
407
|
+
{
|
|
408
|
+
"settings": {
|
|
409
|
+
"formats": ["markdown"] // Options: "markdown", "json", or both ["markdown", "json"]
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
```
|
|
413
|
+
|
|
228
414
|
## 🏗️ Architecture
|
|
229
415
|
|
|
230
416
|
AI Vault uses a **plugin-based provider architecture** that makes it easy to add new AI platforms:
|
|
@@ -233,7 +419,8 @@ AI Vault uses a **plugin-based provider architecture** that makes it easy to add
|
|
|
233
419
|
src/
|
|
234
420
|
├── providers/ # Pluggable AI platform providers
|
|
235
421
|
│ ├── base.ts # Abstract Provider interface
|
|
236
|
-
│ ├── grok/
|
|
422
|
+
│ ├── grok-web/ # Grok (grok.com) implementation
|
|
423
|
+
│ ├── grok-x/ # Grok on X (x.com/grok) implementation
|
|
237
424
|
│ ├── chatgpt/ # ChatGPT implementation
|
|
238
425
|
│ └── claude/ # Claude implementation
|
|
239
426
|
├── core/ # Core archival logic
|
|
@@ -272,18 +459,42 @@ See [docs/providers.md](docs/providers.md) for a detailed guide.
|
|
|
272
459
|
|
|
273
460
|
## 📋 Roadmap
|
|
274
461
|
|
|
462
|
+
### Completed ✅
|
|
463
|
+
|
|
275
464
|
- [x] Project setup and architecture
|
|
276
|
-
- [
|
|
277
|
-
- [
|
|
278
|
-
- [
|
|
279
|
-
- [
|
|
280
|
-
- [
|
|
281
|
-
- [
|
|
282
|
-
- [
|
|
283
|
-
- [
|
|
284
|
-
- [
|
|
285
|
-
- [
|
|
286
|
-
- [
|
|
465
|
+
- [x] Storage layer with JSON + Markdown export
|
|
466
|
+
- [x] Media downloader with SHA256 deduplication
|
|
467
|
+
- [x] Native import support (Grok ✓, ChatGPT & Claude coming soon)
|
|
468
|
+
- [x] Grok provider - two separate implementations:
|
|
469
|
+
- [x] **grok-web**: Standalone grok.com (cookies + scraping)
|
|
470
|
+
- [x] **grok-x**: X-integrated Grok at x.com/grok (cookies + scraping)
|
|
471
|
+
- [x] Smart filtering system:
|
|
472
|
+
- [x] Date range filtering (since/until)
|
|
473
|
+
- [x] Search query filtering (title/preview)
|
|
474
|
+
- [x] Conversation limit controls
|
|
475
|
+
- [x] List command for browsing before archiving
|
|
476
|
+
- [x] Scheduling system:
|
|
477
|
+
- [x] Platform-agnostic (cron on Unix, Task Scheduler on Windows)
|
|
478
|
+
- [x] Full CRUD operations (add, list, remove, enable, disable)
|
|
479
|
+
- [x] Per-provider schedule configuration
|
|
480
|
+
- [x] Logging infrastructure
|
|
481
|
+
|
|
482
|
+
### In Progress 🚧
|
|
483
|
+
|
|
484
|
+
- [ ] Additional provider implementations:
|
|
485
|
+
- [ ] ChatGPT provider (import + API + scraping)
|
|
486
|
+
- [ ] Claude provider (import + API + scraping)
|
|
487
|
+
- [ ] Gemini provider (API + scraping)
|
|
488
|
+
- [ ] Perplexity provider (scraping)
|
|
489
|
+
|
|
490
|
+
### Planned 📋
|
|
491
|
+
|
|
492
|
+
- [ ] Export to knowledge management tools (Obsidian, Notion, Roam)
|
|
493
|
+
- [ ] Full-text search across all archived conversations
|
|
494
|
+
- [ ] Web UI for browsing and exploring archives
|
|
495
|
+
- [ ] Conversation analytics and insights
|
|
496
|
+
- [ ] Automatic tagging and categorization
|
|
497
|
+
- [ ] Differential sync (only download changes)
|
|
287
498
|
|
|
288
499
|
## 📄 License
|
|
289
500
|
|
package/dist/cli.js
CHANGED
|
@@ -19,38 +19,81 @@ program
|
|
|
19
19
|
program
|
|
20
20
|
.command('setup')
|
|
21
21
|
.description('Interactive setup wizard')
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
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('--
|
|
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
|
+
.requiredOption('-p, --provider <provider>', 'Provider (grok, chatgpt, claude, etc.)')
|
|
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
|
-
|
|
34
|
-
|
|
59
|
+
const { importCommand } = await import('./commands/import.js');
|
|
60
|
+
await importCommand(options);
|
|
35
61
|
});
|
|
36
62
|
program
|
|
37
63
|
.command('list')
|
|
38
|
-
.description('List
|
|
39
|
-
.option('-p, --provider <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
|
-
|
|
43
|
-
|
|
71
|
+
const { listCommand } = await import('./commands/list.js');
|
|
72
|
+
await listCommand(options);
|
|
44
73
|
});
|
|
45
74
|
program
|
|
46
75
|
.command('schedule')
|
|
47
|
-
.description('
|
|
48
|
-
.
|
|
49
|
-
.option('--
|
|
50
|
-
.option('--
|
|
51
|
-
.
|
|
52
|
-
|
|
53
|
-
|
|
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":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,wBAAwB;AACxB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CACV,iJAAiJ,CAClJ;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;AAEnF,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,
|
|
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"}
|