ai-vault 3.3.0 → 3.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 (97) hide show
  1. package/README.md +84 -74
  2. package/dist/cli.js +17 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/archive.d.ts +2 -0
  5. package/dist/commands/archive.d.ts.map +1 -1
  6. package/dist/commands/archive.js +80 -46
  7. package/dist/commands/archive.js.map +1 -1
  8. package/dist/commands/import.d.ts.map +1 -1
  9. package/dist/commands/import.js +29 -27
  10. package/dist/commands/import.js.map +1 -1
  11. package/dist/commands/schedule.d.ts.map +1 -1
  12. package/dist/commands/schedule.js +17 -6
  13. package/dist/commands/schedule.js.map +1 -1
  14. package/dist/commands/setup.d.ts.map +1 -1
  15. package/dist/commands/setup.js +295 -95
  16. package/dist/commands/setup.js.map +1 -1
  17. package/dist/commands/status.d.ts.map +1 -1
  18. package/dist/commands/status.js +2 -6
  19. package/dist/commands/status.js.map +1 -1
  20. package/dist/commands/verify.d.ts +14 -0
  21. package/dist/commands/verify.d.ts.map +1 -0
  22. package/dist/commands/verify.js +293 -0
  23. package/dist/commands/verify.js.map +1 -0
  24. package/dist/core/archiver.d.ts +10 -0
  25. package/dist/core/archiver.d.ts.map +1 -1
  26. package/dist/core/archiver.js +74 -4
  27. package/dist/core/archiver.js.map +1 -1
  28. package/dist/core/archiver.spec.js +2 -0
  29. package/dist/core/archiver.spec.js.map +1 -1
  30. package/dist/core/media.d.ts +5 -0
  31. package/dist/core/media.d.ts.map +1 -1
  32. package/dist/core/media.js +6 -0
  33. package/dist/core/media.js.map +1 -1
  34. package/dist/core/storage.d.ts +4 -0
  35. package/dist/core/storage.d.ts.map +1 -1
  36. package/dist/core/storage.js +10 -0
  37. package/dist/core/storage.js.map +1 -1
  38. package/dist/providers/chatgpt/api-provider.d.ts.map +1 -1
  39. package/dist/providers/chatgpt/api-provider.js +8 -82
  40. package/dist/providers/chatgpt/api-provider.js.map +1 -1
  41. package/dist/providers/chatgpt/attachments.d.ts +12 -0
  42. package/dist/providers/chatgpt/attachments.d.ts.map +1 -0
  43. package/dist/providers/chatgpt/attachments.js +124 -0
  44. package/dist/providers/chatgpt/attachments.js.map +1 -0
  45. package/dist/providers/chatgpt/index.d.ts.map +1 -1
  46. package/dist/providers/chatgpt/index.js +8 -129
  47. package/dist/providers/chatgpt/index.js.map +1 -1
  48. package/dist/providers/claude/api-provider.d.ts.map +1 -1
  49. package/dist/providers/claude/api-provider.js +22 -92
  50. package/dist/providers/claude/api-provider.js.map +1 -1
  51. package/dist/providers/claude/errors.d.ts +16 -0
  52. package/dist/providers/claude/errors.d.ts.map +1 -0
  53. package/dist/providers/claude/errors.js +38 -0
  54. package/dist/providers/claude/errors.js.map +1 -0
  55. package/dist/providers/claude/index.d.ts +4 -7
  56. package/dist/providers/claude/index.d.ts.map +1 -1
  57. package/dist/providers/claude/index.js +123 -191
  58. package/dist/providers/claude/index.js.map +1 -1
  59. package/dist/providers/claude/message-parser.d.ts +3 -0
  60. package/dist/providers/claude/message-parser.d.ts.map +1 -0
  61. package/dist/providers/claude/message-parser.js +95 -0
  62. package/dist/providers/claude/message-parser.js.map +1 -0
  63. package/dist/providers/gemini/index.d.ts +56 -0
  64. package/dist/providers/gemini/index.d.ts.map +1 -0
  65. package/dist/providers/gemini/index.js +420 -0
  66. package/dist/providers/gemini/index.js.map +1 -0
  67. package/dist/providers/index.d.ts +2 -1
  68. package/dist/providers/index.d.ts.map +1 -1
  69. package/dist/providers/index.js +3 -2
  70. package/dist/providers/index.js.map +1 -1
  71. package/dist/types/provider.d.ts +4 -0
  72. package/dist/types/provider.d.ts.map +1 -1
  73. package/dist/types/provider.js +8 -0
  74. package/dist/types/provider.js.map +1 -1
  75. package/dist/types/schemas.d.ts +6 -6
  76. package/dist/types/storage.d.ts +4 -0
  77. package/dist/types/storage.d.ts.map +1 -1
  78. package/dist/utils/archive-dir.d.ts +5 -0
  79. package/dist/utils/archive-dir.d.ts.map +1 -0
  80. package/dist/utils/archive-dir.js +15 -0
  81. package/dist/utils/archive-dir.js.map +1 -0
  82. package/dist/utils/cli-ui.d.ts +41 -0
  83. package/dist/utils/cli-ui.d.ts.map +1 -0
  84. package/dist/utils/cli-ui.js +145 -0
  85. package/dist/utils/cli-ui.js.map +1 -0
  86. package/dist/utils/interactive.d.ts +5 -0
  87. package/dist/utils/interactive.d.ts.map +1 -0
  88. package/dist/utils/interactive.js +13 -0
  89. package/dist/utils/interactive.js.map +1 -0
  90. package/dist/utils/scheduler.d.ts.map +1 -1
  91. package/dist/utils/scheduler.js +1 -6
  92. package/dist/utils/scheduler.js.map +1 -1
  93. package/dist/utils/scheduler.spec.js +1 -1
  94. package/dist/utils/scheduler.spec.js.map +1 -1
  95. package/dist/utils/scraper.js +1 -1
  96. package/dist/utils/scraper.js.map +1 -1
  97. package/package.json +1 -1
@@ -0,0 +1,420 @@
1
+ /**
2
+ * Gemini Provider
3
+ *
4
+ * Supports:
5
+ * - Cookie-based scraping of gemini.google.com
6
+ *
7
+ * Authentication: Google account cookies from gemini.google.com
8
+ * Method: DOM scraping via BrowserScraper (no public API available)
9
+ */
10
+ import { BaseProvider } from '../base.js';
11
+ import { AuthenticationError, NotFoundError } from '../../types/provider.js';
12
+ import { BrowserScraper } from '../../utils/scraper.js';
13
+ import chalk from 'chalk';
14
+ export class GeminiProvider extends BaseProvider {
15
+ name = 'gemini';
16
+ displayName = 'Gemini';
17
+ supportedAuthMethods = ['cookies'];
18
+ // Single shared page — must not be navigated concurrently
19
+ rateLimit = { maxConcurrent: 1 };
20
+ static CAPTCHA_COOLDOWN_MS = 60 * 60 * 1000; // 60 minutes
21
+ scraper;
22
+ cachedPage;
23
+ // Semaphore set when Google's sorry/CAPTCHA page is detected; expires after 60 minutes
24
+ captchaBlockedUntil = null;
25
+ // Timestamps from listConversations, used by fetchConversation to avoid new Date() fallback
26
+ conversationTimestamps = new Map();
27
+ /** Throws immediately if the CAPTCHA cooldown semaphore is still active. */
28
+ checkCaptchaBlock() {
29
+ if (!this.captchaBlockedUntil)
30
+ return;
31
+ if (Date.now() < this.captchaBlockedUntil.getTime()) {
32
+ const remaining = Math.ceil((this.captchaBlockedUntil.getTime() - Date.now()) / 60_000);
33
+ throw new Error(`Google bot-detection cooldown active — Gemini is blocked for ${remaining} more minute(s) ` +
34
+ `(until ${this.captchaBlockedUntil.toLocaleTimeString()}). Try again later.`);
35
+ }
36
+ // Semaphore has expired; clear it
37
+ this.captchaBlockedUntil = null;
38
+ }
39
+ /** Arms the CAPTCHA semaphore for 60 minutes and logs a warning. */
40
+ triggerCaptchaBlock() {
41
+ this.captchaBlockedUntil = new Date(Date.now() + GeminiProvider.CAPTCHA_COOLDOWN_MS);
42
+ process.stderr.write(`\n⚠ Google CAPTCHA detected. All Gemini operations are blocked until ` +
43
+ `${this.captchaBlockedUntil.toLocaleTimeString()} (60 minutes).\n`);
44
+ }
45
+ /**
46
+ * Get or create a reusable browser page.
47
+ * Does not navigate — callers are responsible for navigating to their target URL.
48
+ */
49
+ async getOrCreatePage() {
50
+ const cachedPage = this.cachedPage;
51
+ if (cachedPage) {
52
+ try {
53
+ await cachedPage.evaluate(() => true);
54
+ return cachedPage;
55
+ }
56
+ catch {
57
+ this.cachedPage = undefined;
58
+ }
59
+ }
60
+ const page = await this.scraper.createPage({
61
+ cookies: this.config.cookies,
62
+ domain: '.google.com',
63
+ });
64
+ this.cachedPage = page;
65
+ return page;
66
+ }
67
+ /**
68
+ * Authenticate with Gemini using Google account cookies
69
+ */
70
+ async authenticate(config) {
71
+ this.config = config;
72
+ if (config.authMethod !== 'cookies') {
73
+ throw new AuthenticationError('Only cookies authentication is supported for Gemini');
74
+ }
75
+ if (!config.cookies) {
76
+ throw new AuthenticationError('Google account cookies are required for Gemini');
77
+ }
78
+ this.scraper = new BrowserScraper();
79
+ await this.scraper.init();
80
+ return this.isAuthenticated();
81
+ }
82
+ /**
83
+ * Check if the current cookies give access to gemini.google.com
84
+ */
85
+ async isAuthenticated() {
86
+ this.requireAuth();
87
+ this.checkCaptchaBlock();
88
+ const page = await this.scraper.createPage({
89
+ cookies: this.config.cookies,
90
+ domain: '.google.com',
91
+ });
92
+ try {
93
+ await page.goto('https://gemini.google.com/app', {
94
+ waitUntil: 'domcontentloaded',
95
+ timeout: 20000,
96
+ });
97
+ const url = page.url();
98
+ if (url.includes('consent.google.com')) {
99
+ throw new AuthenticationError('Redirected to Google consent page. Your cookies are incomplete — export ALL cookies ' +
100
+ 'from gemini.google.com (including SOCS, SAPISID, SID, etc.) using a browser extension ' +
101
+ 'like Cookie-Editor and re-run: ai-vault setup gemini --cookies-file <path>');
102
+ }
103
+ return !url.includes('accounts.google.com');
104
+ }
105
+ finally {
106
+ await page.close();
107
+ }
108
+ }
109
+ /**
110
+ * List conversations via the internal batchexecute API (MaZiqc RPC).
111
+ * Avoids DOM scroll scraping — uses cursor-based pagination from the network API.
112
+ */
113
+ async listConversations(options = {}) {
114
+ this.requireAuth();
115
+ this.checkCaptchaBlock();
116
+ const page = await this.getOrCreatePage();
117
+ try {
118
+ await page.goto('https://gemini.google.com/app', {
119
+ waitUntil: 'domcontentloaded',
120
+ timeout: 30000,
121
+ });
122
+ const listUrl = page.url();
123
+ if (listUrl.includes('google.com/sorry')) {
124
+ this.triggerCaptchaBlock();
125
+ throw new Error('Google bot-detection triggered while listing conversations. ' +
126
+ `Gemini is blocked for 60 minutes (until ${this.captchaBlockedUntil.toLocaleTimeString()}).`);
127
+ }
128
+ if (listUrl.includes('accounts.google.com')) {
129
+ throw new AuthenticationError('Redirected to Google login — cookies may have expired');
130
+ }
131
+ // Extract WIZ_global_data session params required for batchexecute
132
+ const { sid, bl, at } = await page.evaluate(() => {
133
+ const wiz = window.WIZ_global_data ?? {};
134
+ return {
135
+ sid: String(wiz.FdrFJe ?? ''),
136
+ bl: String(wiz.cfb2h ?? ''),
137
+ at: String(wiz.SNlM0e ?? ''),
138
+ };
139
+ });
140
+ if (!sid || !bl || !at) {
141
+ throw new Error('Failed to extract Gemini session parameters from WIZ_global_data — ' +
142
+ 'try re-authenticating with fresh cookies');
143
+ }
144
+ // Execute a batchexecute MaZiqc call from the browser context (cookies are automatic)
145
+ const batchExecute = (fReqJson) => page.evaluate(async ({ sid, bl, at, fReqJson, }) => {
146
+ const reqId = Math.floor(Math.random() * 900000) + 100000;
147
+ const url = `https://gemini.google.com/_/BardChatUi/data/batchexecute` +
148
+ `?rpcids=MaZiqc&source-path=%2Fapp` +
149
+ `&bl=${encodeURIComponent(bl)}&f.sid=${encodeURIComponent(sid)}` +
150
+ `&hl=en&_reqid=${reqId}&rt=c`;
151
+ const resp = await fetch(url, {
152
+ method: 'POST',
153
+ headers: {
154
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
155
+ 'X-Same-Domain': '1',
156
+ },
157
+ body: `f.req=${encodeURIComponent(fReqJson)}&at=${encodeURIComponent(at)}`,
158
+ });
159
+ if (!resp.ok)
160
+ throw new Error(`batchexecute HTTP ${resp.status}`);
161
+ return resp.text();
162
+ }, { sid, bl, at, fReqJson });
163
+ // Parse the streaming batchexecute response to extract conversations and the next cursor.
164
+ // Response format: )]}' followed by SIZE\n[JSON]\n chunks.
165
+ const parseResponse = (text) => {
166
+ const startIdx = text.indexOf('[["wrb.fr","MaZiqc"');
167
+ if (startIdx === -1)
168
+ return { cursor: null, items: [] };
169
+ // Walk forward to find the matching closing bracket, skipping string contents
170
+ let depth = 0;
171
+ let inString = false;
172
+ let escaped = false;
173
+ let endIdx = startIdx;
174
+ for (let i = startIdx; i < text.length; i++) {
175
+ const ch = text[i];
176
+ if (escaped) {
177
+ escaped = false;
178
+ continue;
179
+ }
180
+ if (ch === '\\' && inString) {
181
+ escaped = true;
182
+ continue;
183
+ }
184
+ if (ch === '"') {
185
+ inString = !inString;
186
+ continue;
187
+ }
188
+ if (inString)
189
+ continue;
190
+ if (ch === '[' || ch === '{')
191
+ depth++;
192
+ else if (ch === ']' || ch === '}') {
193
+ if (--depth === 0) {
194
+ endIdx = i;
195
+ break;
196
+ }
197
+ }
198
+ }
199
+ let outer;
200
+ try {
201
+ outer = JSON.parse(text.substring(startIdx, endIdx + 1));
202
+ }
203
+ catch {
204
+ return { cursor: null, items: [] };
205
+ }
206
+ // outer = [["wrb.fr","MaZiqc","INNER_JSON_STRING",...]]
207
+ const entry = outer[0];
208
+ if (!Array.isArray(entry) || entry[1] !== 'MaZiqc' || typeof entry[2] !== 'string') {
209
+ return { cursor: null, items: [] };
210
+ }
211
+ let inner;
212
+ try {
213
+ inner = JSON.parse(entry[2]);
214
+ }
215
+ catch {
216
+ return { cursor: null, items: [] };
217
+ }
218
+ // inner = [null, cursor_or_null, [[conv_array, ...], ...]]
219
+ return {
220
+ cursor: inner[1] ?? null,
221
+ items: Array.isArray(inner[2]) ? inner[2] : [],
222
+ };
223
+ };
224
+ const toSummary = (conv) => {
225
+ // conv[0] = "c_<hex_id>", conv[1] = title, conv[5] = [sec, ns] timestamp
226
+ const rawId = String(conv[0] ?? '');
227
+ const id = rawId.replace(/^c_/, '');
228
+ if (!id)
229
+ return null;
230
+ const title = String(conv[1] ?? 'Untitled').trim() || 'Untitled';
231
+ const tsPair = Array.isArray(conv[5]) ? conv[5] : null;
232
+ const date = tsPair ? new Date(Number(tsPair[0]) * 1000) : new Date();
233
+ return { id, title, messageCount: 0, createdAt: date, updatedAt: date, hasMedia: false };
234
+ };
235
+ const allSummaries = [];
236
+ // 1. Pinned conversations (category flag [1,null,1])
237
+ try {
238
+ const fReq = JSON.stringify([
239
+ [['MaZiqc', JSON.stringify([13, null, [1, null, 1]]), null, 'generic']],
240
+ ]);
241
+ const { items } = parseResponse(await batchExecute(fReq));
242
+ for (const conv of items) {
243
+ const s = toSummary(conv);
244
+ if (s)
245
+ allSummaries.push(s);
246
+ }
247
+ }
248
+ catch {
249
+ // Pinned fetch is best-effort; continue with regular conversations
250
+ }
251
+ // 2. Regular conversations with cursor pagination (category flag [0,null,1])
252
+ const MAX_PAGES = 200;
253
+ let cursor = null;
254
+ let pageCount = 0;
255
+ while (true) {
256
+ if (++pageCount > MAX_PAGES) {
257
+ console.log(chalk.yellow(`\n⚠ Gemini: reached ${MAX_PAGES} pagination pages, stopping.`));
258
+ break;
259
+ }
260
+ const innerArg = cursor === null
261
+ ? JSON.stringify([13, null, [0, null, 1]])
262
+ : JSON.stringify([20, cursor, [0, null, 1]]);
263
+ const fReq = JSON.stringify([[['MaZiqc', innerArg, null, 'generic']]]);
264
+ const { cursor: nextCursor, items } = parseResponse(await batchExecute(fReq));
265
+ for (const conv of items) {
266
+ const s = toSummary(conv);
267
+ if (s)
268
+ allSummaries.push(s);
269
+ }
270
+ if (!nextCursor || nextCursor === cursor)
271
+ break;
272
+ cursor = nextCursor;
273
+ }
274
+ // Deduplicate: pinned conversations can also appear in the regular list
275
+ const dedupedMap = new Map();
276
+ for (const s of allSummaries) {
277
+ if (!dedupedMap.has(s.id))
278
+ dedupedMap.set(s.id, s);
279
+ }
280
+ // Cache timestamps for use in fetchConversation
281
+ for (const s of dedupedMap.values()) {
282
+ this.conversationTimestamps.set(s.id, { createdAt: s.createdAt, updatedAt: s.updatedAt });
283
+ }
284
+ let summaries = Array.from(dedupedMap.values());
285
+ if (options.since)
286
+ summaries = summaries.filter((c) => c.updatedAt >= options.since);
287
+ if (options.until)
288
+ summaries = summaries.filter((c) => c.updatedAt <= options.until);
289
+ if (options.limit)
290
+ summaries = summaries.slice(0, options.limit);
291
+ return summaries;
292
+ }
293
+ catch (error) {
294
+ this.cachedPage = undefined;
295
+ throw error;
296
+ }
297
+ }
298
+ /**
299
+ * Fetch a full conversation by navigating to its URL
300
+ */
301
+ async fetchConversation(id) {
302
+ this.requireAuth();
303
+ this.checkCaptchaBlock();
304
+ const page = await this.getOrCreatePage();
305
+ try {
306
+ await page.goto(`https://gemini.google.com/app/${id}`, {
307
+ waitUntil: 'domcontentloaded',
308
+ timeout: 30000,
309
+ });
310
+ // Brief pause to avoid triggering Google's bot detection
311
+ await page.waitForTimeout(2500);
312
+ const url = page.url();
313
+ if (url.includes('accounts.google.com')) {
314
+ throw new AuthenticationError('Redirected to Google login — cookies may have expired');
315
+ }
316
+ if (url.includes('google.com/sorry')) {
317
+ this.triggerCaptchaBlock();
318
+ throw new Error('Google bot-detection triggered. ' +
319
+ `Gemini is blocked for 60 minutes (until ${this.captchaBlockedUntil.toLocaleTimeString()}).`);
320
+ }
321
+ // Gemini redirects to /app when a conversation is not found
322
+ if (!url.includes(`/app/${id}`)) {
323
+ throw new NotFoundError(`Conversation '${id}' not found`);
324
+ }
325
+ // Wait for the message thread — use 'attached' since Angular animations prevent 'visible'
326
+ await page.waitForSelector('[data-conversation-id], .conversation-container, model-response, user-query', { state: 'attached', timeout: 15000 });
327
+ // Extract messages and title (with timeout to prevent hanging on problematic pages)
328
+ const evalPromise = page.evaluate(({ convId }) => {
329
+ // Collect all turn elements in document order, tagged by role
330
+ const allPairs = [
331
+ ...Array.from(document.querySelectorAll('user-query, [data-role="user"], .user-query-container')).map((el) => ({ el, role: 'user' })),
332
+ ...Array.from(document.querySelectorAll('model-response, [data-role="model"], .model-response-text')).map((el) => ({ el, role: 'assistant' })),
333
+ ].sort((a, b) => a.el.compareDocumentPosition(b.el) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1);
334
+ const messages = allPairs
335
+ .map((p, i) => {
336
+ const content = p.el.textContent?.trim() ?? '';
337
+ return content ? { id: `${convId}-${i}`, role: p.role, content } : null;
338
+ })
339
+ .filter(Boolean);
340
+ // Extract title: prefer <title> tag minus " - Gemini" suffix, then h1
341
+ const isGenericTitle = (t) => /^(Google\s+)?Gemini$/i.test(t) || /^Chats$/i.test(t);
342
+ let title = document.title?.replace(/\s*[-|]\s*Gemini\s*$/, '').trim() || '';
343
+ if (isGenericTitle(title))
344
+ title = '';
345
+ if (!title) {
346
+ title = document.querySelector('h1')?.textContent?.trim() || '';
347
+ }
348
+ if (!title || isGenericTitle(title)) {
349
+ title = `Gemini conversation ${convId}`;
350
+ }
351
+ return { messages, title };
352
+ }, { convId: id });
353
+ let evalTimeoutHandle;
354
+ const evalTimeout = new Promise((_, reject) => {
355
+ evalTimeoutHandle = setTimeout(() => reject(new Error(`Timeout extracting messages from conversation ${id}`)), 30_000);
356
+ });
357
+ let rawMessages, rawTitle;
358
+ try {
359
+ ({ messages: rawMessages, title: rawTitle } = await Promise.race([
360
+ evalPromise,
361
+ evalTimeout,
362
+ ]));
363
+ }
364
+ finally {
365
+ clearTimeout(evalTimeoutHandle);
366
+ }
367
+ // Use timestamps from listConversations if available; fall back to now only as last resort
368
+ const cachedTs = this.conversationTimestamps.get(id);
369
+ const createdAt = cachedTs?.createdAt ?? new Date();
370
+ const updatedAt = cachedTs?.updatedAt ?? new Date();
371
+ const messages = rawMessages.map((m, i) => ({
372
+ id: m.id,
373
+ role: m.role,
374
+ content: m.content,
375
+ // Spread message timestamps evenly across the conversation window if we have real dates
376
+ timestamp: cachedTs
377
+ ? new Date(createdAt.getTime() +
378
+ (i / Math.max(rawMessages.length - 1, 1)) *
379
+ (updatedAt.getTime() - createdAt.getTime()))
380
+ : new Date(),
381
+ }));
382
+ return {
383
+ id,
384
+ provider: this.name,
385
+ title: rawTitle || `Gemini conversation ${id}`,
386
+ messages,
387
+ createdAt,
388
+ updatedAt,
389
+ metadata: {
390
+ messageCount: messages.length,
391
+ characterCount: messages.reduce((sum, m) => sum + m.content.length, 0),
392
+ mediaCount: 0,
393
+ },
394
+ };
395
+ }
396
+ catch (error) {
397
+ this.cachedPage = undefined;
398
+ throw error;
399
+ }
400
+ }
401
+ /**
402
+ * Cleanup browser resources
403
+ */
404
+ async cleanup() {
405
+ if (this.cachedPage) {
406
+ try {
407
+ await this.cachedPage.close();
408
+ }
409
+ catch {
410
+ // ignore
411
+ }
412
+ this.cachedPage = undefined;
413
+ }
414
+ if (this.scraper) {
415
+ await this.scraper.close();
416
+ this.scraper = undefined;
417
+ }
418
+ }
419
+ }
420
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/gemini/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { GrokWebProvider } from './grok-web/index.js';
5
5
  import { GrokXProvider } from './grok-x/index.js';
6
6
  import { ChatGPTProvider } from './chatgpt/index.js';
7
7
  import { ClaudeProvider } from './claude/index.js';
8
+ import { GeminiProvider } from './gemini/index.js';
8
9
  import type { Provider } from '../types/provider.js';
9
10
  import type { ProviderName } from '../types/index.js';
10
11
  export declare const providers: Record<string, new () => Provider>;
@@ -20,5 +21,5 @@ export declare function getAvailableProviders(): ProviderName[];
20
21
  * Check if a provider is available
21
22
  */
22
23
  export declare function isProviderAvailable(name: string): boolean;
23
- export { GrokWebProvider, GrokXProvider, ChatGPTProvider, ClaudeProvider };
24
+ export { GrokWebProvider, GrokXProvider, ChatGPTProvider, ClaudeProvider, GeminiProvider };
24
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,QAAQ,CAMxD,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAUxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,EAAE,CAEtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,QAAQ,CAMxD,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAUxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,EAAE,CAEtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -5,13 +5,14 @@ import { GrokWebProvider } from './grok-web/index.js';
5
5
  import { GrokXProvider } from './grok-x/index.js';
6
6
  import { ChatGPTProvider } from './chatgpt/index.js';
7
7
  import { ClaudeProvider } from './claude/index.js';
8
+ import { GeminiProvider } from './gemini/index.js';
8
9
  // Provider registry
9
10
  export const providers = {
10
11
  'grok-web': GrokWebProvider,
11
12
  'grok-x': GrokXProvider,
12
13
  chatgpt: ChatGPTProvider,
13
14
  claude: ClaudeProvider,
14
- // gemini: GeminiProvider, // Coming soon
15
+ gemini: GeminiProvider,
15
16
  };
16
17
  /**
17
18
  * Get a provider instance by name
@@ -35,5 +36,5 @@ export function getAvailableProviders() {
35
36
  export function isProviderAvailable(name) {
36
37
  return name in providers;
37
38
  }
38
- export { GrokWebProvider, GrokXProvider, ChatGPTProvider, ClaudeProvider };
39
+ export { GrokWebProvider, GrokXProvider, ChatGPTProvider, ClaudeProvider, GeminiProvider };
39
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,oBAAoB;AACpB,MAAM,CAAC,MAAM,SAAS,GAAuC;IAC3D,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,yCAAyC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,qCAAqC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAmB,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,IAAI,SAAS,CAAC;AAC3B,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,oBAAoB;AACpB,MAAM,CAAC,MAAM,SAAS,GAAuC;IAC3D,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,qCAAqC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAmB,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,IAAI,SAAS,CAAC;AAC3B,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -93,4 +93,8 @@ export declare class RateLimitError extends Error {
93
93
  retryAfter?: number | undefined;
94
94
  constructor(message: string, retryAfter?: number | undefined);
95
95
  }
96
+ export declare class PermissionError extends Error {
97
+ code?: string | undefined;
98
+ constructor(message: string, code?: string | undefined);
99
+ }
96
100
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,uCAAuC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;IAEnE,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,2DAA2D;QAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gCAAgC;QAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvD;;;OAGG;IACH,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEtF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAErD;;;;;OAKG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE7E;;;;OAIG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAElE;;OAEG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yBAAyB;AACzB,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAG9B,UAAU,CAAC,EAAE,MAAM;gBAD1B,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,uCAAuC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;IAEnE,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,2DAA2D;QAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gCAAgC;QAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvD;;;OAGG;IACH,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEtF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAErD;;;;;OAKG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE7E;;;;OAIG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAElE;;OAEG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yBAAyB;AACzB,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAG9B,UAAU,CAAC,EAAE,MAAM;gBAD1B,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAED,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,IAAI,CAAC,EAAE,MAAM;gBADpB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA;CAKvB"}
@@ -22,4 +22,12 @@ export class RateLimitError extends Error {
22
22
  this.name = 'RateLimitError';
23
23
  }
24
24
  }
25
+ export class PermissionError extends Error {
26
+ code;
27
+ constructor(message, code) {
28
+ super(message);
29
+ this.code = code;
30
+ this.name = 'PermissionError';
31
+ }
32
+ }
25
33
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkGH,yBAAyB;AACzB,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG9B;IAFT,YACE,OAAe,EACR,UAAmB;QAE1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,eAAU,GAAV,UAAU,CAAS;QAG1B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkGH,yBAAyB;AACzB,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG9B;IAFT,YACE,OAAe,EACR,UAAmB;QAE1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,eAAU,GAAV,UAAU,CAAS;QAG1B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAG/B;IAFT,YACE,OAAe,EACR,IAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,SAAI,GAAJ,IAAI,CAAS;QAGpB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
@@ -59,8 +59,8 @@ export declare const MessageSchema: z.ZodObject<{
59
59
  }>, "many">>;
60
60
  }, "strip", z.ZodTypeAny, {
61
61
  id: string;
62
- role: "assistant" | "user" | "system";
63
62
  content: string;
63
+ role: "assistant" | "user" | "system";
64
64
  timestamp: Date;
65
65
  metadata?: Record<string, any> | undefined;
66
66
  attachments?: {
@@ -74,8 +74,8 @@ export declare const MessageSchema: z.ZodObject<{
74
74
  }[] | undefined;
75
75
  }, {
76
76
  id: string;
77
- role: "assistant" | "user" | "system";
78
77
  content: string;
78
+ role: "assistant" | "user" | "system";
79
79
  timestamp: Date;
80
80
  metadata?: Record<string, any> | undefined;
81
81
  attachments?: {
@@ -125,8 +125,8 @@ export declare const ConversationSchema: z.ZodObject<{
125
125
  }>, "many">>;
126
126
  }, "strip", z.ZodTypeAny, {
127
127
  id: string;
128
- role: "assistant" | "user" | "system";
129
128
  content: string;
129
+ role: "assistant" | "user" | "system";
130
130
  timestamp: Date;
131
131
  metadata?: Record<string, any> | undefined;
132
132
  attachments?: {
@@ -140,8 +140,8 @@ export declare const ConversationSchema: z.ZodObject<{
140
140
  }[] | undefined;
141
141
  }, {
142
142
  id: string;
143
- role: "assistant" | "user" | "system";
144
143
  content: string;
144
+ role: "assistant" | "user" | "system";
145
145
  timestamp: Date;
146
146
  metadata?: Record<string, any> | undefined;
147
147
  attachments?: {
@@ -197,8 +197,8 @@ export declare const ConversationSchema: z.ZodObject<{
197
197
  id: string;
198
198
  messages: {
199
199
  id: string;
200
- role: "assistant" | "user" | "system";
201
200
  content: string;
201
+ role: "assistant" | "user" | "system";
202
202
  timestamp: Date;
203
203
  metadata?: Record<string, any> | undefined;
204
204
  attachments?: {
@@ -230,8 +230,8 @@ export declare const ConversationSchema: z.ZodObject<{
230
230
  id: string;
231
231
  messages: {
232
232
  id: string;
233
- role: "assistant" | "user" | "system";
234
233
  content: string;
234
+ role: "assistant" | "user" | "system";
235
235
  timestamp: Date;
236
236
  metadata?: Record<string, any> | undefined;
237
237
  attachments?: {
@@ -25,6 +25,10 @@ export interface ArchiveOptions {
25
25
  downloadMedia?: boolean;
26
26
  /** Skip already archived conversations */
27
27
  skipExisting?: boolean;
28
+ /** Only download conversations not yet in local archive */
29
+ onlyNew?: boolean;
30
+ /** Add a random delay (1–30s) between fetching each conversation */
31
+ randomDelay?: boolean;
28
32
  /** Dry run (don't actually save anything) */
29
33
  dryRun?: boolean;
30
34
  /** Maximum number of conversations to archive */
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/types/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,kCAAkC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,iDAAiD;IACjD,KAAK,CAAC,EAAE,IAAI,CAAC;IAEb,iDAAiD;IACjD,KAAK,CAAC,EAAE,IAAI,CAAC;IAEb,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,qBAAqB,EAAE,MAAM,CAAC;IAE9B,sDAAsD;IACtD,oBAAoB,EAAE,MAAM,CAAC;IAE7B,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IAExB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IAErB,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;IAExB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,iBAAiB;IACjB,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;IAE/B,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,qBAAqB;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,CAAC,EAAE,EAAE,MAAM,GAAG;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QAEb,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,UAAU,EAAE;QACV,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,IAAI,EAAE,MAAM,CAAC;YACb,eAAe,EAAE,MAAM,EAAE,CAAC;YAC1B,QAAQ,EAAE;gBACR,CAAC,SAAS,EAAE,MAAM,GAAG;oBACnB,IAAI,EAAE,MAAM,CAAC;oBACb,eAAe,EAAE,MAAM,EAAE,CAAC;iBAC3B,CAAC;aACH,CAAC;SACH,CAAC;KACH,CAAC;IACF,8CAA8C;IAC9C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/types/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,kCAAkC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,iDAAiD;IACjD,KAAK,CAAC,EAAE,IAAI,CAAC;IAEb,iDAAiD;IACjD,KAAK,CAAC,EAAE,IAAI,CAAC;IAEb,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,qBAAqB,EAAE,MAAM,CAAC;IAE9B,sDAAsD;IACtD,oBAAoB,EAAE,MAAM,CAAC;IAE7B,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IAExB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IAErB,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;IAExB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,iBAAiB;IACjB,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;IAE/B,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,qBAAqB;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,CAAC,EAAE,EAAE,MAAM,GAAG;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QAEb,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,UAAU,EAAE;QACV,CAAC,WAAW,EAAE,MAAM,GAAG;YACrB,IAAI,EAAE,MAAM,CAAC;YACb,eAAe,EAAE,MAAM,EAAE,CAAC;YAC1B,QAAQ,EAAE;gBACR,CAAC,SAAS,EAAE,MAAM,GAAG;oBACnB,IAAI,EAAE,MAAM,CAAC;oBACb,eAAe,EAAE,MAAM,EAAE,CAAC;iBAC3B,CAAC;aACH,CAAC;SACH,CAAC;KACH,CAAC;IACF,8CAA8C;IAC9C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Resolve the archive directory with sensible defaults and ~ expansion.
3
+ */
4
+ export declare function resolveArchiveDir(configuredDir?: string): string;
5
+ //# sourceMappingURL=archive-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive-dir.d.ts","sourceRoot":"","sources":["../../src/utils/archive-dir.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAWhE"}