ai-vault 1.2.2 → 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 +260 -33
- package/dist/cli.js +140 -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
|
|
|
@@ -88,7 +95,18 @@ pnpm install && pnpm run build
|
|
|
88
95
|
|
|
89
96
|
### Updating
|
|
90
97
|
|
|
91
|
-
**
|
|
98
|
+
**Built-in upgrade command (recommended)**
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
ai-vault upgrade
|
|
102
|
+
# or
|
|
103
|
+
ai-vault update
|
|
104
|
+
|
|
105
|
+
# Skip confirmation prompt
|
|
106
|
+
ai-vault upgrade --yes
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Manual update**
|
|
92
110
|
|
|
93
111
|
```bash
|
|
94
112
|
npm update -g ai-vault
|
|
@@ -106,6 +124,8 @@ brew upgrade ai-vault
|
|
|
106
124
|
|
|
107
125
|
```bash
|
|
108
126
|
ai-vault --version
|
|
127
|
+
# or
|
|
128
|
+
ai-vault -v
|
|
109
129
|
```
|
|
110
130
|
|
|
111
131
|
### Uninstalling
|
|
@@ -142,14 +162,20 @@ rmdir /s %USERPROFILE%\ai-vault-data
|
|
|
142
162
|
# Interactive setup wizard
|
|
143
163
|
ai-vault setup
|
|
144
164
|
|
|
145
|
-
#
|
|
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
|
|
146
169
|
ai-vault archive
|
|
147
170
|
|
|
148
171
|
# Schedule automated backups
|
|
149
|
-
ai-vault schedule
|
|
172
|
+
ai-vault schedule add
|
|
150
173
|
|
|
151
174
|
# List archived conversations
|
|
152
175
|
ai-vault list
|
|
176
|
+
|
|
177
|
+
# Check for updates
|
|
178
|
+
ai-vault upgrade
|
|
153
179
|
```
|
|
154
180
|
|
|
155
181
|
## 📖 Usage
|
|
@@ -157,15 +183,30 @@ ai-vault list
|
|
|
157
183
|
### Setup
|
|
158
184
|
|
|
159
185
|
```bash
|
|
186
|
+
# Interactive setup
|
|
160
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
|
|
161
191
|
```
|
|
162
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
|
+
|
|
163
204
|
The interactive wizard will:
|
|
164
205
|
|
|
165
206
|
1. Choose which AI platforms to archive
|
|
166
207
|
2. Configure authentication (API keys or browser cookies)
|
|
167
|
-
3. Set your
|
|
168
|
-
4.
|
|
208
|
+
3. Set your archive directory (default: `~/ai-vault-data`)
|
|
209
|
+
4. Test your connection
|
|
169
210
|
|
|
170
211
|
### Archive Now
|
|
171
212
|
|
|
@@ -174,28 +215,100 @@ The interactive wizard will:
|
|
|
174
215
|
ai-vault archive
|
|
175
216
|
|
|
176
217
|
# Archive specific platform
|
|
177
|
-
ai-vault archive --provider grok
|
|
218
|
+
ai-vault archive --provider grok-web
|
|
178
219
|
|
|
179
220
|
# Archive with date filter
|
|
180
221
|
ai-vault archive --since 2025-01-01
|
|
181
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
|
+
|
|
182
233
|
# Dry run (see what would be archived)
|
|
183
234
|
ai-vault archive --dry-run
|
|
184
235
|
```
|
|
185
236
|
|
|
186
|
-
###
|
|
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:
|
|
187
240
|
|
|
188
241
|
```bash
|
|
189
|
-
#
|
|
190
|
-
ai-vault
|
|
242
|
+
# Import from Grok's native export
|
|
243
|
+
ai-vault import --provider grok-web --file ~/Downloads/grok-export/
|
|
244
|
+
|
|
245
|
+
# Import with custom output directory
|
|
246
|
+
ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --output ~/Dropbox/AI-Backups
|
|
247
|
+
|
|
248
|
+
# Skip confirmation prompt
|
|
249
|
+
ai-vault import --provider grok-web --file ~/Downloads/grok-export/ --yes
|
|
250
|
+
```
|
|
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
|
|
191
267
|
|
|
192
|
-
|
|
193
|
-
|
|
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!
|
|
194
271
|
|
|
195
|
-
|
|
196
|
-
|
|
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
|
|
197
301
|
```
|
|
198
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
|
+
|
|
199
312
|
### List Archived Conversations
|
|
200
313
|
|
|
201
314
|
```bash
|
|
@@ -209,6 +322,95 @@ ai-vault list --provider chatgpt
|
|
|
209
322
|
ai-vault list --search "machine learning"
|
|
210
323
|
```
|
|
211
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
|
+
|
|
212
414
|
## 🏗️ Architecture
|
|
213
415
|
|
|
214
416
|
AI Vault uses a **plugin-based provider architecture** that makes it easy to add new AI platforms:
|
|
@@ -217,7 +419,8 @@ AI Vault uses a **plugin-based provider architecture** that makes it easy to add
|
|
|
217
419
|
src/
|
|
218
420
|
├── providers/ # Pluggable AI platform providers
|
|
219
421
|
│ ├── base.ts # Abstract Provider interface
|
|
220
|
-
│ ├── grok/
|
|
422
|
+
│ ├── grok-web/ # Grok (grok.com) implementation
|
|
423
|
+
│ ├── grok-x/ # Grok on X (x.com/grok) implementation
|
|
221
424
|
│ ├── chatgpt/ # ChatGPT implementation
|
|
222
425
|
│ └── claude/ # Claude implementation
|
|
223
426
|
├── core/ # Core archival logic
|
|
@@ -256,18 +459,42 @@ See [docs/providers.md](docs/providers.md) for a detailed guide.
|
|
|
256
459
|
|
|
257
460
|
## 📋 Roadmap
|
|
258
461
|
|
|
462
|
+
### Completed ✅
|
|
463
|
+
|
|
259
464
|
- [x] Project setup and architecture
|
|
260
|
-
- [
|
|
261
|
-
- [
|
|
262
|
-
- [
|
|
263
|
-
- [
|
|
264
|
-
- [
|
|
265
|
-
- [
|
|
266
|
-
- [
|
|
267
|
-
- [
|
|
268
|
-
- [
|
|
269
|
-
- [
|
|
270
|
-
- [
|
|
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)
|
|
271
498
|
|
|
272
499
|
## 📄 License
|
|
273
500
|
|
package/dist/cli.js
CHANGED
|
@@ -4,46 +4,168 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import chalk from 'chalk';
|
|
7
|
+
import { readFileSync } from 'fs';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { dirname, join } from 'path';
|
|
10
|
+
// Get package.json path
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
|
|
7
14
|
const program = new Command();
|
|
8
15
|
program
|
|
9
16
|
.name('ai-vault')
|
|
10
17
|
.description('Own your data. Comprehensive archival of AI interactions—conversations, images, videos, code artifacts, and metadata—across multiple platforms.')
|
|
11
|
-
.version(
|
|
18
|
+
.version(packageJson.version, '-v, -V, --version', 'Output the current version');
|
|
12
19
|
program
|
|
13
20
|
.command('setup')
|
|
14
21
|
.description('Interactive setup wizard')
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
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);
|
|
18
26
|
});
|
|
19
27
|
program
|
|
20
28
|
.command('archive')
|
|
21
29
|
.description('Archive conversations from configured providers')
|
|
22
30
|
.option('-p, --provider <provider>', 'Specific provider to archive')
|
|
23
|
-
.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')
|
|
24
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')
|
|
25
58
|
.action(async (options) => {
|
|
26
|
-
|
|
27
|
-
|
|
59
|
+
const { importCommand } = await import('./commands/import.js');
|
|
60
|
+
await importCommand(options);
|
|
28
61
|
});
|
|
29
62
|
program
|
|
30
63
|
.command('list')
|
|
31
|
-
.description('List
|
|
32
|
-
.option('-p, --provider <provider>', '
|
|
33
|
-
.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')
|
|
34
70
|
.action(async (options) => {
|
|
35
|
-
|
|
36
|
-
|
|
71
|
+
const { listCommand } = await import('./commands/list.js');
|
|
72
|
+
await listCommand(options);
|
|
37
73
|
});
|
|
38
74
|
program
|
|
39
75
|
.command('schedule')
|
|
40
|
-
.description('
|
|
41
|
-
.
|
|
42
|
-
.option('--
|
|
43
|
-
.option('--
|
|
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
|
+
});
|
|
97
|
+
});
|
|
98
|
+
program
|
|
99
|
+
.command('upgrade')
|
|
100
|
+
.alias('update')
|
|
101
|
+
.description('Check for and install the latest version')
|
|
102
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
44
103
|
.action(async (options) => {
|
|
45
|
-
|
|
46
|
-
|
|
104
|
+
const ora = (await import('ora')).default;
|
|
105
|
+
const axios = (await import('axios')).default;
|
|
106
|
+
const { execSync } = await import('child_process');
|
|
107
|
+
const spinner = ora('Checking for updates...').start();
|
|
108
|
+
try {
|
|
109
|
+
// Check latest version on npm
|
|
110
|
+
const response = await axios.get('https://registry.npmjs.org/ai-vault/latest', {
|
|
111
|
+
timeout: 5000,
|
|
112
|
+
});
|
|
113
|
+
const latestVersion = response.data.version;
|
|
114
|
+
const currentVersion = packageJson.version;
|
|
115
|
+
spinner.stop();
|
|
116
|
+
if (latestVersion === currentVersion) {
|
|
117
|
+
console.log(chalk.green('✓ You are already on the latest version!'));
|
|
118
|
+
console.log(chalk.gray(` Current: v${currentVersion}`));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
console.log(chalk.yellow('\nUpdate available!'));
|
|
122
|
+
console.log(chalk.gray(` Current: v${currentVersion}`));
|
|
123
|
+
console.log(chalk.green(` Latest: v${latestVersion}\n`));
|
|
124
|
+
// Show release notes URL
|
|
125
|
+
console.log(chalk.gray(`Release notes: https://github.com/dotCipher/ai-vault/releases/tag/v${latestVersion}\n`));
|
|
126
|
+
// Prompt for confirmation if -y not provided
|
|
127
|
+
if (!options.yes) {
|
|
128
|
+
console.log(chalk.cyan('Run with --yes to skip this prompt\n'));
|
|
129
|
+
const readline = await import('readline');
|
|
130
|
+
const rl = readline.createInterface({
|
|
131
|
+
input: process.stdin,
|
|
132
|
+
output: process.stdout,
|
|
133
|
+
});
|
|
134
|
+
const answer = await new Promise((resolve) => {
|
|
135
|
+
rl.question(chalk.bold('Upgrade now? (y/N): '), (ans) => {
|
|
136
|
+
rl.close();
|
|
137
|
+
resolve(ans);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
|
|
141
|
+
console.log(chalk.gray('Upgrade cancelled.'));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Perform upgrade
|
|
146
|
+
console.log();
|
|
147
|
+
const upgradeSpinner = ora('Installing latest version...').start();
|
|
148
|
+
try {
|
|
149
|
+
execSync('npm install -g ai-vault@latest', {
|
|
150
|
+
stdio: 'pipe',
|
|
151
|
+
env: { ...process.env, NODE_NO_WARNINGS: '1' },
|
|
152
|
+
});
|
|
153
|
+
upgradeSpinner.succeed(chalk.green(`Successfully upgraded to v${latestVersion}!`));
|
|
154
|
+
console.log(chalk.gray('\nRun `ai-vault --help` to see all commands.'));
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
upgradeSpinner.fail('Upgrade failed');
|
|
158
|
+
console.error(chalk.red('\nError:'), error instanceof Error ? error.message : 'Unknown error');
|
|
159
|
+
console.log(chalk.yellow('\nTry manually: npm install -g ai-vault@latest'));
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
spinner.fail('Failed to check for updates');
|
|
165
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error');
|
|
166
|
+
console.log(chalk.gray('\nCheck manually: https://www.npmjs.com/package/ai-vault'));
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
47
169
|
});
|
|
48
170
|
program.parse();
|
|
49
171
|
//# sourceMappingURL=cli.js.map
|
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;
|
|
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,uBAAuB,EAAE,mDAAmD,CAAC;KACpF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC;KACnE,MAAM,CAAC,0BAA0B,EAAE,qCAAqC,CAAC;KACzE,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;KACzE,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;KACzE,MAAM,CAAC,kBAAkB,EAAE,4CAA4C,CAAC;KACxE,MAAM,CAAC,WAAW,EAAE,oDAAoD,CAAC;KACzE,MAAM,CAAC,cAAc,EAAE,+CAA+C,CAAC;KACvE,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACjE,MAAM,cAAc,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,MAAM;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe,EAAE,OAAO,CAAC,GAAG;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,cAAc,CAAC,2BAA2B,EAAE,wCAAwC,CAAC;KACrF,cAAc,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;KACvE,MAAM,CAAC,0BAA0B,EAAE,qCAAqC,CAAC;KACzE,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,2BAA2B,EAAE,gDAAgD,CAAC;KACrF,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;KACtE,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC3D,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,UAAU,EAAE,oDAAoD,CAAC;KAC1E,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,2BAA2B,EAAE,sBAAsB,CAAC;KAC3D,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;KACtD,MAAM,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;KACtE,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;KAC5E,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,eAAe,CAAC;QACpB,MAAM,EAAE,MAAM,IAAI,MAAM;QACxB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,KAAK,CAAC,QAAQ,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvD,IAAI,CAAC;QACH,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,4CAA4C,EAAE;YAC7E,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;QAE3C,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,cAAc,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,cAAc,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,aAAa,IAAI,CAAC,CAAC,CAAC;QAE3D,yBAAyB;QACzB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,sEAAsE,aAAa,IAAI,CACxF,CACF,CAAC;QAEF,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBACnD,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;oBACtD,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,cAAc,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEnE,IAAI,CAAC;YACH,QAAQ,CAAC,gCAAgC,EAAE;gBACzC,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE;aAC/C,CAAC,CAAC;YACH,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,aAAa,GAAG,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EACrB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -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"}
|