File size: 2,449 Bytes
5a81b95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const homeDir = require('os').homedir();
const localScanner = new LocalFileScanner({
    rootPaths: [
        `${homeDir}\\Documents`,
        `${homeDir}\\Downloads`,
        `${homeDir}\\Desktop`
    ],
    extensions: ['.txt', '.md', '.pdf', '.docx', '.xlsx', '.csv', '.json'],
    maxDepth: 3,
    maxFileSize: 10 * 1024 * 1024,
    excludePatterns: ['node_modules', '.git', 'dist', 'build', '$RECYCLE.BIN']
});
await dataIngestionEngine.registerAdapter(localScanner, 'Local file system scanner', false);

const browserReader = new BrowserHistoryReader();
await dataIngestionEngine.registerAdapter(browserReader, 'Browser history reader', false);

const outlookReader = new OutlookEmailReader();
await dataIngestionEngine.registerAdapter(outlookReader, 'Outlook email reader', true);

const oneDriveAdapter = new OneDriveAdapter();
await dataIngestionEngine.registerAdapter(oneDriveAdapter, 'OneDrive adapter', true);

const teamsAdapter = new TeamsAdapter();
await dataIngestionEngine.registerAdapter(teamsAdapter, 'Teams adapter', true);

const sharePointAdapter = new SharePointAdapter();
await dataIngestionEngine.registerAdapter(sharePointAdapter, 'SharePoint adapter', true);

const twitterAdapter = new TwitterAdapter();
await dataIngestionEngine.registerAdapter(twitterAdapter, 'Twitter adapter', true);

const gmailAdapter = new GmailAdapter();
await dataIngestionEngine.registerAdapter(gmailAdapter, 'Gmail adapter', true);

const calendarAdapter = new GoogleCalendarAdapter();
await dataIngestionEngine.registerAdapter(calendarAdapter, 'Google Calendar adapter', true);

const keepAdapter = new GoogleKeepAdapter();
await dataIngestionEngine.registerAdapter(keepAdapter, 'Google Keep adapter', true);

const mapsAdapter = new GoogleMapsAdapter();
await dataIngestionEngine.registerAdapter(mapsAdapter, 'Google Maps adapter', true);

// Advise about pending approvals
const pending = dataSourceConfig.getPendingApprovals();
if (pending.length > 0) {
    console.log('⚠️ Pending data source approvals:');
    pending.forEach(p => console.log(` - ${p.name}: ${p.description || 'No description'}`));
    // Auto-approve for demo purposes
    for (const p of pending) {
        await dataSourceConfig.approve(p.name);
    }
}

// Start ingestion
await dataIngestionEngine.ingestAll();
console.log('✅ Ingestion run completed');
}

main().catch(err => {
    console.error('❌ Ingestion script failed:', err);
    process.exit(1);
});