ai-vault 1.2.1

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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +287 -0
  3. package/dist/cli.d.ts +6 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +49 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/providers/_template/index.d.ts +35 -0
  8. package/dist/providers/_template/index.d.ts.map +1 -0
  9. package/dist/providers/_template/index.js +146 -0
  10. package/dist/providers/_template/index.js.map +1 -0
  11. package/dist/providers/base.d.ts +34 -0
  12. package/dist/providers/base.d.ts.map +1 -0
  13. package/dist/providers/base.js +91 -0
  14. package/dist/providers/base.js.map +1 -0
  15. package/dist/providers/grok/index.d.ts +47 -0
  16. package/dist/providers/grok/index.d.ts.map +1 -0
  17. package/dist/providers/grok/index.js +250 -0
  18. package/dist/providers/grok/index.js.map +1 -0
  19. package/dist/providers/index.d.ts +21 -0
  20. package/dist/providers/index.d.ts.map +1 -0
  21. package/dist/providers/index.js +35 -0
  22. package/dist/providers/index.js.map +1 -0
  23. package/dist/types/index.d.ts +141 -0
  24. package/dist/types/index.d.ts.map +1 -0
  25. package/dist/types/index.js +5 -0
  26. package/dist/types/index.js.map +1 -0
  27. package/dist/types/provider.d.ts +85 -0
  28. package/dist/types/provider.d.ts.map +1 -0
  29. package/dist/types/provider.js +25 -0
  30. package/dist/types/provider.js.map +1 -0
  31. package/dist/types/schemas.d.ts +532 -0
  32. package/dist/types/schemas.d.ts.map +1 -0
  33. package/dist/types/schemas.js +106 -0
  34. package/dist/types/schemas.js.map +1 -0
  35. package/dist/utils/api-client.d.ts +54 -0
  36. package/dist/utils/api-client.d.ts.map +1 -0
  37. package/dist/utils/api-client.js +138 -0
  38. package/dist/utils/api-client.js.map +1 -0
  39. package/dist/utils/scraper.d.ts +58 -0
  40. package/dist/utils/scraper.d.ts.map +1 -0
  41. package/dist/utils/scraper.js +146 -0
  42. package/dist/utils/scraper.js.map +1 -0
  43. package/package.json +91 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Abstract base provider class with shared functionality
3
+ */
4
+ import axios from 'axios';
5
+ import fs from 'fs/promises';
6
+ import { createWriteStream } from 'fs';
7
+ import path from 'path';
8
+ import crypto from 'crypto';
9
+ export class BaseProvider {
10
+ config;
11
+ client;
12
+ /**
13
+ * Initialize HTTP client with authentication
14
+ */
15
+ initClient(baseURL, headers = {}) {
16
+ this.client = axios.create({
17
+ baseURL,
18
+ headers: {
19
+ 'User-Agent': 'ai-vault/1.0.0',
20
+ ...headers,
21
+ },
22
+ timeout: 30000,
23
+ });
24
+ }
25
+ /**
26
+ * Default implementation for downloading media files
27
+ */
28
+ async downloadMedia(url, outputPath) {
29
+ const response = await axios.get(url, {
30
+ responseType: 'stream',
31
+ headers: {
32
+ 'User-Agent': 'ai-vault/1.0.0',
33
+ },
34
+ });
35
+ // Ensure output directory exists
36
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
37
+ // Create hash stream for deduplication
38
+ const hash = crypto.createHash('sha256');
39
+ let size = 0;
40
+ return new Promise((resolve, reject) => {
41
+ const writer = createWriteStream(outputPath);
42
+ response.data.on('data', (chunk) => {
43
+ hash.update(chunk);
44
+ size += chunk.length;
45
+ });
46
+ response.data.pipe(writer);
47
+ writer.on('finish', () => {
48
+ const mimeType = response.headers['content-type'] || 'application/octet-stream';
49
+ resolve({
50
+ path: outputPath,
51
+ size,
52
+ mimeType,
53
+ hash: hash.digest('hex'),
54
+ });
55
+ });
56
+ writer.on('error', reject);
57
+ });
58
+ }
59
+ /**
60
+ * Helper to check if authentication is configured
61
+ */
62
+ requireAuth() {
63
+ if (!this.config) {
64
+ throw new Error(`Provider ${this.name} is not configured. Run 'ai-vault setup' first.`);
65
+ }
66
+ }
67
+ /**
68
+ * Helper for exponential backoff retry
69
+ */
70
+ async retry(fn, maxRetries = 3, baseDelay = 1000) {
71
+ let lastError;
72
+ for (let i = 0; i < maxRetries; i++) {
73
+ try {
74
+ return await fn();
75
+ }
76
+ catch (error) {
77
+ lastError = error;
78
+ // Don't retry on authentication errors
79
+ if (lastError.name === 'AuthenticationError') {
80
+ throw lastError;
81
+ }
82
+ if (i < maxRetries - 1) {
83
+ const delay = baseDelay * Math.pow(2, i);
84
+ await new Promise((resolve) => setTimeout(resolve, delay));
85
+ }
86
+ }
87
+ }
88
+ throw lastError;
89
+ }
90
+ }
91
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Grok (X.AI) Provider
3
+ *
4
+ * Supports two methods:
5
+ * 1. X.AI API (api.x.ai) - Requires API key
6
+ * 2. Web scraping (x.com/i/grok) - Requires session cookies
7
+ */
8
+ import { BaseProvider } from '../base';
9
+ import type { ProviderConfig, Conversation } from '../../types';
10
+ import type { ListConversationsOptions, ConversationSummary } from '../../types/provider';
11
+ export declare class GrokProvider extends BaseProvider {
12
+ readonly name: "grok";
13
+ readonly displayName = "Grok (X.AI)";
14
+ readonly supportedAuthMethods: ('api-key' | 'cookies' | 'oauth')[];
15
+ private scraper?;
16
+ private apiClient?;
17
+ private useWebScraping;
18
+ /**
19
+ * Authenticate with Grok
20
+ */
21
+ authenticate(config: ProviderConfig): Promise<boolean>;
22
+ /**
23
+ * Check if currently authenticated
24
+ */
25
+ isAuthenticated(): Promise<boolean>;
26
+ /**
27
+ * List all conversations
28
+ */
29
+ listConversations(options?: ListConversationsOptions): Promise<ConversationSummary[]>;
30
+ /**
31
+ * List conversations via web scraping
32
+ */
33
+ private listConversationsViaScraping;
34
+ /**
35
+ * Fetch complete conversation
36
+ */
37
+ fetchConversation(id: string): Promise<Conversation>;
38
+ /**
39
+ * Fetch conversation via web scraping
40
+ */
41
+ private fetchConversationViaScraping;
42
+ /**
43
+ * Cleanup browser resources
44
+ */
45
+ cleanup(): Promise<void>;
46
+ }
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/grok/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK1F,qBAAa,YAAa,SAAQ,YAAY;IAC5C,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,EAAE,CAA0B;IAE5F,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,cAAc,CAAS;IAE/B;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAyC5D;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BzC;;OAEG;IACG,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAc3F;;OAEG;YACW,4BAA4B;IAmE1C;;OAEG;IACG,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAW1D;;OAEG;YACW,4BAA4B;IAiG1C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Grok (X.AI) Provider
3
+ *
4
+ * Supports two methods:
5
+ * 1. X.AI API (api.x.ai) - Requires API key
6
+ * 2. Web scraping (x.com/i/grok) - Requires session cookies
7
+ */
8
+ import { BaseProvider } from '../base';
9
+ import { AuthenticationError, NotFoundError } from '../../types/provider';
10
+ import { BrowserScraper, autoScroll } from '../../utils/scraper';
11
+ import { createApiClient } from '../../utils/api-client';
12
+ export class GrokProvider extends BaseProvider {
13
+ name = 'grok';
14
+ displayName = 'Grok (X.AI)';
15
+ supportedAuthMethods = ['api-key', 'cookies'];
16
+ scraper;
17
+ apiClient;
18
+ useWebScraping = false;
19
+ /**
20
+ * Authenticate with Grok
21
+ */
22
+ async authenticate(config) {
23
+ this.config = config;
24
+ // Method 1: X.AI API with API key
25
+ if (config.authMethod === 'api-key') {
26
+ if (!config.apiKey) {
27
+ throw new AuthenticationError('API key is required. Get one at https://console.x.ai');
28
+ }
29
+ this.apiClient = createApiClient({
30
+ baseURL: config.customEndpoint || 'https://api.x.ai',
31
+ apiKey: config.apiKey,
32
+ });
33
+ this.useWebScraping = false;
34
+ // Test API authentication
35
+ try {
36
+ await this.apiClient.get('/v1/models');
37
+ return true;
38
+ }
39
+ catch (error) {
40
+ throw error; // ApiClient handles auth errors
41
+ }
42
+ }
43
+ // Method 2: Web scraping with cookies
44
+ if (config.authMethod === 'cookies') {
45
+ if (!config.cookies) {
46
+ throw new AuthenticationError('Session cookies are required');
47
+ }
48
+ this.useWebScraping = true;
49
+ this.scraper = new BrowserScraper();
50
+ await this.scraper.init();
51
+ return this.isAuthenticated();
52
+ }
53
+ throw new AuthenticationError(`Unsupported auth method: ${config.authMethod}`);
54
+ }
55
+ /**
56
+ * Check if currently authenticated
57
+ */
58
+ async isAuthenticated() {
59
+ this.requireAuth();
60
+ if (!this.useWebScraping && this.apiClient) {
61
+ try {
62
+ await this.apiClient.get('/v1/models');
63
+ return true;
64
+ }
65
+ catch {
66
+ return false;
67
+ }
68
+ }
69
+ // Test web scraping authentication
70
+ const page = await this.scraper.createPage({
71
+ cookies: this.config.cookies,
72
+ domain: '.x.com',
73
+ });
74
+ await page.goto('https://x.com/i/grok', { waitUntil: 'networkidle', timeout: 30000 });
75
+ // Check if we're redirected to login
76
+ const url = page.url();
77
+ const isAuthenticated = !url.includes('/login') && !url.includes('/oauth');
78
+ await page.close();
79
+ return isAuthenticated;
80
+ }
81
+ /**
82
+ * List all conversations
83
+ */
84
+ async listConversations(options) {
85
+ this.requireAuth();
86
+ if (this.useWebScraping) {
87
+ return this.listConversationsViaScraping(options);
88
+ }
89
+ // Note: X.AI public API doesn't have list conversations endpoint
90
+ // We'd need to use the Grok SDK or web scraping
91
+ console.warn('X.AI API does not support listing conversations. Using web scraping...');
92
+ this.useWebScraping = true;
93
+ return this.listConversationsViaScraping(options);
94
+ }
95
+ /**
96
+ * List conversations via web scraping
97
+ */
98
+ async listConversationsViaScraping(_options) {
99
+ const page = await this.scraper.createPage({
100
+ cookies: this.config.cookies,
101
+ domain: '.x.com',
102
+ });
103
+ try {
104
+ await page.goto('https://x.com/i/grok', { waitUntil: 'networkidle', timeout: 30000 });
105
+ // Wait for conversations list to load
106
+ await page
107
+ .waitForSelector('[data-testid="conversation-item"], .conversation-list-item', {
108
+ timeout: 10000,
109
+ })
110
+ .catch(() => {
111
+ // Try alternative selectors if standard ones don't work
112
+ });
113
+ // Scroll to load more conversations
114
+ await autoScroll(page);
115
+ // Extract conversation data
116
+ const conversations = await page.evaluate(() => {
117
+ const items = Array.from(document.querySelectorAll('[data-testid="conversation-item"], .conversation-list-item, [data-conversation-id]'));
118
+ return items
119
+ .map((item) => {
120
+ const id = item.getAttribute('data-conversation-id') || item.getAttribute('data-id') || '';
121
+ const titleEl = item.querySelector('.conversation-title, [data-testid="conversation-title"]');
122
+ const title = titleEl?.textContent?.trim() || 'Untitled';
123
+ const previewEl = item.querySelector('.conversation-preview, .message-preview');
124
+ const preview = previewEl?.textContent?.trim();
125
+ const timeEl = item.querySelector('time, .timestamp');
126
+ const timestamp = timeEl?.getAttribute('datetime') || timeEl?.textContent || '';
127
+ return { id, title, preview, timestamp };
128
+ })
129
+ .filter((item) => item.id); // Only keep items with IDs
130
+ });
131
+ await page.close();
132
+ // Transform to ConversationSummary format
133
+ return conversations.map((conv) => ({
134
+ id: conv.id,
135
+ title: conv.title,
136
+ messageCount: 0, // Unknown from list view
137
+ createdAt: conv.timestamp ? new Date(conv.timestamp) : new Date(),
138
+ updatedAt: conv.timestamp ? new Date(conv.timestamp) : new Date(),
139
+ hasMedia: false, // Unknown from list view
140
+ preview: conv.preview,
141
+ }));
142
+ }
143
+ catch (error) {
144
+ await page.close();
145
+ throw new Error(`Failed to list conversations: ${error}`);
146
+ }
147
+ }
148
+ /**
149
+ * Fetch complete conversation
150
+ */
151
+ async fetchConversation(id) {
152
+ this.requireAuth();
153
+ if (this.useWebScraping) {
154
+ return this.fetchConversationViaScraping(id);
155
+ }
156
+ // API method (not available in public API)
157
+ throw new Error('Fetching individual conversations requires web scraping');
158
+ }
159
+ /**
160
+ * Fetch conversation via web scraping
161
+ */
162
+ async fetchConversationViaScraping(id) {
163
+ const page = await this.scraper.createPage({
164
+ cookies: this.config.cookies,
165
+ domain: '.x.com',
166
+ });
167
+ try {
168
+ const url = `https://x.com/i/grok/conversation/${id}`;
169
+ await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
170
+ // Check if conversation exists
171
+ const notFound = await page.$('.error-page, [data-testid="error"]');
172
+ if (notFound) {
173
+ await page.close();
174
+ throw new NotFoundError(`Conversation ${id} not found`);
175
+ }
176
+ // Scroll to load all messages
177
+ await autoScroll(page);
178
+ // Extract conversation data
179
+ const data = await page.evaluate(() => {
180
+ const titleEl = document.querySelector('.conversation-title, h1');
181
+ const title = titleEl?.textContent?.trim() || 'Untitled';
182
+ const messageEls = Array.from(document.querySelectorAll('.message, [data-testid="message"], .chat-message'));
183
+ const messages = messageEls.map((el, idx) => {
184
+ const roleEl = el.querySelector('.message-role, [data-role]');
185
+ const role = roleEl?.getAttribute('data-role') ||
186
+ (el.classList.contains('user-message') ? 'user' : 'assistant');
187
+ const contentEl = el.querySelector('.message-content, .message-text');
188
+ const content = contentEl?.textContent?.trim() || '';
189
+ const timeEl = el.querySelector('time, .timestamp');
190
+ const timestamp = timeEl?.getAttribute('datetime') || new Date().toISOString();
191
+ // Extract media attachments
192
+ const mediaEls = Array.from(el.querySelectorAll('img, video'));
193
+ const attachments = mediaEls.map((media, mediaIdx) => ({
194
+ id: `${idx}-${mediaIdx}`,
195
+ type: media.tagName.toLowerCase(),
196
+ url: media.getAttribute('src') || '',
197
+ }));
198
+ return {
199
+ id: `msg-${idx}`,
200
+ role: role,
201
+ content,
202
+ timestamp,
203
+ attachments: attachments.length > 0 ? attachments : undefined,
204
+ };
205
+ });
206
+ return { title, messages };
207
+ });
208
+ await page.close();
209
+ // Transform to standard format
210
+ const messages = data.messages.map((msg) => ({
211
+ id: msg.id,
212
+ role: msg.role,
213
+ content: msg.content,
214
+ timestamp: new Date(msg.timestamp),
215
+ attachments: msg.attachments?.map((att) => ({
216
+ id: att.id,
217
+ type: att.type,
218
+ url: att.url,
219
+ })),
220
+ }));
221
+ return {
222
+ id,
223
+ provider: this.name,
224
+ title: data.title,
225
+ messages,
226
+ createdAt: messages[0]?.timestamp || new Date(),
227
+ updatedAt: messages[messages.length - 1]?.timestamp || new Date(),
228
+ metadata: {
229
+ messageCount: messages.length,
230
+ characterCount: messages.reduce((sum, m) => sum + m.content.length, 0),
231
+ mediaCount: messages.reduce((sum, m) => sum + (m.attachments?.length || 0), 0),
232
+ },
233
+ };
234
+ }
235
+ catch (error) {
236
+ await page.close();
237
+ throw error;
238
+ }
239
+ }
240
+ /**
241
+ * Cleanup browser resources
242
+ */
243
+ async cleanup() {
244
+ if (this.scraper) {
245
+ await this.scraper.close();
246
+ this.scraper = undefined;
247
+ }
248
+ }
249
+ }
250
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/grok/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Provider registry - all AI platform providers
3
+ */
4
+ import { GrokProvider } from './grok';
5
+ import type { Provider } from '../types/provider';
6
+ import type { ProviderName } from '../types';
7
+ export declare const providers: Record<string, new () => Provider>;
8
+ /**
9
+ * Get a provider instance by name
10
+ */
11
+ export declare function getProvider(name: ProviderName): Provider;
12
+ /**
13
+ * Get all available provider names
14
+ */
15
+ export declare function getAvailableProviders(): ProviderName[];
16
+ /**
17
+ * Check if a provider is available
18
+ */
19
+ export declare function isProviderAvailable(name: string): boolean;
20
+ export { GrokProvider };
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,QAAQ,CAKxD,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,YAAY,EAAE,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Provider registry - all AI platform providers
3
+ */
4
+ import { GrokProvider } from './grok';
5
+ // Provider registry
6
+ export const providers = {
7
+ grok: GrokProvider,
8
+ // chatgpt: ChatGPTProvider, // Coming soon
9
+ // claude: ClaudeProvider, // Coming soon
10
+ // gemini: GeminiProvider, // Coming soon
11
+ };
12
+ /**
13
+ * Get a provider instance by name
14
+ */
15
+ export function getProvider(name) {
16
+ const ProviderClass = providers[name];
17
+ if (!ProviderClass) {
18
+ throw new Error(`Provider '${name}' not found. Available providers: ${Object.keys(providers).join(', ')}`);
19
+ }
20
+ return new ProviderClass();
21
+ }
22
+ /**
23
+ * Get all available provider names
24
+ */
25
+ export function getAvailableProviders() {
26
+ return Object.keys(providers);
27
+ }
28
+ /**
29
+ * Check if a provider is available
30
+ */
31
+ export function isProviderAvailable(name) {
32
+ return name in providers;
33
+ }
34
+ export { GrokProvider };
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,oBAAoB;AACpB,MAAM,CAAC,MAAM,SAAS,GAAuC;IAC3D,IAAI,EAAE,YAAY;IAClB,2CAA2C;IAC3C,yCAAyC;IACzC,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,YAAY,EAAE,CAAC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Core type definitions for AI Vault
3
+ */
4
+ export type ProviderName = 'grok' | 'chatgpt' | 'claude' | 'gemini' | 'perplexity';
5
+ export type AuthMethod = 'api-key' | 'cookies' | 'oauth';
6
+ export interface ProviderConfig {
7
+ name: ProviderName;
8
+ enabled: boolean;
9
+ authMethod: AuthMethod;
10
+ apiKey?: string;
11
+ cookies?: Record<string, string>;
12
+ customEndpoint?: string;
13
+ }
14
+ export interface Message {
15
+ id: string;
16
+ role: 'user' | 'assistant' | 'system';
17
+ content: string;
18
+ timestamp: Date;
19
+ metadata?: MessageMetadata;
20
+ attachments?: Attachment[];
21
+ }
22
+ export interface MessageMetadata {
23
+ model?: string;
24
+ tokenCount?: number;
25
+ thinkingProcess?: string;
26
+ citations?: Citation[];
27
+ [key: string]: any;
28
+ }
29
+ export interface Citation {
30
+ title: string;
31
+ url: string;
32
+ snippet?: string;
33
+ }
34
+ export interface Attachment {
35
+ id: string;
36
+ type: 'image' | 'video' | 'audio' | 'document' | 'code';
37
+ url: string;
38
+ localPath?: string;
39
+ mimeType?: string;
40
+ size?: number;
41
+ metadata?: {
42
+ width?: number;
43
+ height?: number;
44
+ duration?: number;
45
+ [key: string]: any;
46
+ };
47
+ }
48
+ export interface Conversation {
49
+ id: string;
50
+ provider: ProviderName;
51
+ title: string;
52
+ messages: Message[];
53
+ createdAt: Date;
54
+ updatedAt: Date;
55
+ metadata: ConversationMetadata;
56
+ }
57
+ export interface ConversationMetadata {
58
+ tags?: string[];
59
+ archived?: boolean;
60
+ starred?: boolean;
61
+ folder?: string;
62
+ messageCount: number;
63
+ characterCount: number;
64
+ mediaCount: number;
65
+ [key: string]: any;
66
+ }
67
+ export interface ArchiveOptions {
68
+ providers?: ProviderName[];
69
+ since?: Date;
70
+ until?: Date;
71
+ includeMedia?: boolean;
72
+ outputFormat?: OutputFormat[];
73
+ filter?: ConversationFilter;
74
+ dryRun?: boolean;
75
+ }
76
+ export interface ConversationFilter {
77
+ starred?: boolean;
78
+ archived?: boolean;
79
+ minMessages?: number;
80
+ maxMessages?: number;
81
+ searchQuery?: string;
82
+ tags?: string[];
83
+ }
84
+ export type OutputFormat = 'json' | 'markdown' | 'html' | 'txt';
85
+ export interface ArchiveResult {
86
+ provider: ProviderName;
87
+ conversationsArchived: number;
88
+ mediaDownloaded: number;
89
+ errors: ArchiveError[];
90
+ duration: number;
91
+ }
92
+ export interface ArchiveError {
93
+ conversationId?: string;
94
+ message: string;
95
+ stack?: string;
96
+ }
97
+ export interface StorageConfig {
98
+ basePath: string;
99
+ organizationStrategy: 'by-provider' | 'by-date' | 'flat';
100
+ compression?: boolean;
101
+ encryption?: boolean;
102
+ }
103
+ export interface StorageMetadata {
104
+ version: string;
105
+ totalConversations: number;
106
+ totalSize: number;
107
+ lastArchived: Date;
108
+ providers: Record<ProviderName, ProviderStats>;
109
+ }
110
+ export interface ProviderStats {
111
+ conversationCount: number;
112
+ mediaCount: number;
113
+ lastSync: Date;
114
+ }
115
+ export interface VaultConfig {
116
+ version: string;
117
+ storage: StorageConfig;
118
+ providers: ProviderConfig[];
119
+ scheduling?: ScheduleConfig;
120
+ media?: MediaConfig;
121
+ export?: ExportConfig;
122
+ }
123
+ export interface ScheduleConfig {
124
+ enabled: boolean;
125
+ cron?: string;
126
+ timezone?: string;
127
+ providers?: ProviderName[];
128
+ }
129
+ export interface MediaConfig {
130
+ enabled: boolean;
131
+ deduplication: boolean;
132
+ maxFileSize?: number;
133
+ allowedTypes?: string[];
134
+ quality?: 'original' | 'high' | 'medium' | 'low';
135
+ }
136
+ export interface ExportConfig {
137
+ formats: OutputFormat[];
138
+ includeMetadata: boolean;
139
+ prettyPrint: boolean;
140
+ }
141
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core type definitions for AI Vault
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}