@roomi-fields/notebooklm-mcp 1.3.6 → 1.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.
- package/README.md +69 -34
- package/dist/accounts/account-manager.d.ts +163 -0
- package/dist/accounts/account-manager.d.ts.map +1 -0
- package/dist/accounts/account-manager.js +614 -0
- package/dist/accounts/account-manager.js.map +1 -0
- package/dist/accounts/auto-login-manager.d.ts +62 -0
- package/dist/accounts/auto-login-manager.d.ts.map +1 -0
- package/dist/accounts/auto-login-manager.js +537 -0
- package/dist/accounts/auto-login-manager.js.map +1 -0
- package/dist/accounts/crypto.d.ts +45 -0
- package/dist/accounts/crypto.d.ts.map +1 -0
- package/dist/accounts/crypto.js +138 -0
- package/dist/accounts/crypto.js.map +1 -0
- package/dist/accounts/index.d.ts +14 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +14 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/types.d.ts +103 -0
- package/dist/accounts/types.d.ts.map +1 -0
- package/dist/accounts/types.js +7 -0
- package/dist/accounts/types.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +9 -2
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/auth/auth-manager.js +60 -6
- package/dist/auth/auth-manager.js.map +1 -1
- package/dist/auto-discovery/auto-discovery.d.ts.map +1 -1
- package/dist/auto-discovery/auto-discovery.js +2 -1
- package/dist/auto-discovery/auto-discovery.js.map +1 -1
- package/dist/cli/accounts.d.ts +13 -0
- package/dist/cli/accounts.d.ts.map +1 -0
- package/dist/cli/accounts.js +195 -0
- package/dist/cli/accounts.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/content/content-generator.d.ts +153 -0
- package/dist/content/content-generator.d.ts.map +1 -0
- package/dist/content/content-generator.js +637 -0
- package/dist/content/content-generator.js.map +1 -0
- package/dist/content/content-manager.d.ts +364 -0
- package/dist/content/content-manager.d.ts.map +1 -0
- package/dist/content/content-manager.js +3846 -0
- package/dist/content/content-manager.js.map +1 -0
- package/dist/content/content-templates.d.ts +183 -0
- package/dist/content/content-templates.d.ts.map +1 -0
- package/dist/content/content-templates.js +719 -0
- package/dist/content/content-templates.js.map +1 -0
- package/dist/content/index.d.ts +14 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +14 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/types.d.ts +285 -0
- package/dist/content/types.d.ts.map +1 -0
- package/dist/content/types.js +10 -0
- package/dist/content/types.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/http-wrapper.d.ts +7 -0
- package/dist/http-wrapper.d.ts.map +1 -1
- package/dist/http-wrapper.js +449 -29
- package/dist/http-wrapper.js.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/library/notebook-library.d.ts +4 -0
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +20 -3
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/session/browser-session.d.ts +35 -8
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +242 -28
- package/dist/session/browser-session.js.map +1 -1
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +46 -14
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts +3 -3
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +8 -7
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/stdio-http-proxy.d.ts +24 -0
- package/dist/stdio-http-proxy.d.ts.map +1 -0
- package/dist/stdio-http-proxy.js +592 -0
- package/dist/stdio-http-proxy.js.map +1 -0
- package/dist/tools/index.d.ts +106 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1028 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +81 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/citation-extractor.d.ts +66 -0
- package/dist/utils/citation-extractor.d.ts.map +1 -0
- package/dist/utils/citation-extractor.js +492 -0
- package/dist/utils/citation-extractor.js.map +1 -0
- package/dist/utils/page-utils.d.ts +8 -0
- package/dist/utils/page-utils.d.ts.map +1 -1
- package/dist/utils/page-utils.js +112 -8
- package/dist/utils/page-utils.js.map +1 -1
- package/docs/ARCHITECTURE_MIGRATION_STUDY.md +894 -0
- package/docs/CHROME_PROFILE_LIMITATION.md +15 -1
- package/docs/MULTI_ACCOUNT_SYSTEM.md +304 -0
- package/package.json +10 -10
- package/dist/__tests__/cleanup-manager.test.d.ts +0 -2
- package/dist/__tests__/cleanup-manager.test.d.ts.map +0 -1
- package/dist/__tests__/cleanup-manager.test.js +0 -341
- package/dist/__tests__/cleanup-manager.test.js.map +0 -1
- package/dist/__tests__/config-parsing.test.d.ts +0 -2
- package/dist/__tests__/config-parsing.test.d.ts.map +0 -1
- package/dist/__tests__/config-parsing.test.js +0 -338
- package/dist/__tests__/config-parsing.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -267
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -166
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/logger.test.d.ts +0 -2
- package/dist/__tests__/logger.test.d.ts.map +0 -1
- package/dist/__tests__/logger.test.js +0 -324
- package/dist/__tests__/logger.test.js.map +0 -1
- package/dist/__tests__/page-utils.test.d.ts +0 -2
- package/dist/__tests__/page-utils.test.d.ts.map +0 -1
- package/dist/__tests__/page-utils.test.js +0 -349
- package/dist/__tests__/page-utils.test.js.map +0 -1
- package/dist/__tests__/setup-verification.test.d.ts +0 -2
- package/dist/__tests__/setup-verification.test.d.ts.map +0 -1
- package/dist/__tests__/setup-verification.test.js +0 -15
- package/dist/__tests__/setup-verification.test.js.map +0 -1
- package/dist/__tests__/stealth-utils.test.d.ts +0 -2
- package/dist/__tests__/stealth-utils.test.d.ts.map +0 -1
- package/dist/__tests__/stealth-utils.test.js +0 -413
- package/dist/__tests__/stealth-utils.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -2
- package/dist/__tests__/types.test.d.ts.map +0 -1
- package/dist/__tests__/types.test.js +0 -461
- package/dist/__tests__/types.test.js.map +0 -1
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* Based on the Python implementation from browser_session.py
|
|
14
14
|
*/
|
|
15
15
|
import { humanType, randomDelay } from '../utils/stealth-utils.js';
|
|
16
|
-
import { waitForLatestAnswer, snapshotAllResponses } from '../utils/page-utils.js';
|
|
16
|
+
import { waitForLatestAnswer, snapshotAllResponses, isRateLimitMessage, } from '../utils/page-utils.js';
|
|
17
|
+
import { extractCitations, } from '../utils/citation-extractor.js';
|
|
17
18
|
import { CONFIG } from '../config.js';
|
|
18
19
|
import { log } from '../utils/logger.js';
|
|
19
20
|
import { RateLimitError } from '../errors.js';
|
|
@@ -28,11 +29,14 @@ export class BrowserSession {
|
|
|
28
29
|
authManager;
|
|
29
30
|
page = null;
|
|
30
31
|
initialized = false;
|
|
31
|
-
|
|
32
|
+
/** Headless mode override - true=headless, false=visible, undefined=use config default */
|
|
33
|
+
overrideHeadless;
|
|
34
|
+
constructor(sessionId, sharedContextManager, authManager, notebookUrl, overrideHeadless) {
|
|
32
35
|
this.sessionId = sessionId;
|
|
33
36
|
this.sharedContextManager = sharedContextManager;
|
|
34
37
|
this.authManager = authManager;
|
|
35
38
|
this.notebookUrl = notebookUrl;
|
|
39
|
+
this.overrideHeadless = overrideHeadless;
|
|
36
40
|
this.createdAt = Date.now();
|
|
37
41
|
this.lastActivity = Date.now();
|
|
38
42
|
this.messageCount = 0;
|
|
@@ -48,8 +52,8 @@ export class BrowserSession {
|
|
|
48
52
|
}
|
|
49
53
|
log.info(`🚀 Initializing session ${this.sessionId}...`);
|
|
50
54
|
try {
|
|
51
|
-
// Ensure a valid shared context
|
|
52
|
-
this.context = await this.sharedContextManager.getOrCreateContext();
|
|
55
|
+
// Ensure a valid shared context (pass overrideHeadless to maintain visibility mode)
|
|
56
|
+
this.context = await this.sharedContextManager.getOrCreateContext(this.overrideHeadless);
|
|
53
57
|
// Create new page (tab) in the shared context (with auto-recovery)
|
|
54
58
|
try {
|
|
55
59
|
this.page = await this.context.newPage();
|
|
@@ -58,7 +62,7 @@ export class BrowserSession {
|
|
|
58
62
|
const msg = String(e instanceof Error ? e.message : e);
|
|
59
63
|
if (/has been closed|Target .* closed|Browser has been closed|Context .* closed/i.test(msg)) {
|
|
60
64
|
log.warning(' ♻️ Context was closed. Recreating and retrying newPage...');
|
|
61
|
-
this.context = await this.sharedContextManager.getOrCreateContext();
|
|
65
|
+
this.context = await this.sharedContextManager.getOrCreateContext(this.overrideHeadless);
|
|
62
66
|
this.page = await this.context.newPage();
|
|
63
67
|
}
|
|
64
68
|
else {
|
|
@@ -121,32 +125,33 @@ export class BrowserSession {
|
|
|
121
125
|
/**
|
|
122
126
|
* Wait for NotebookLM interface to be ready
|
|
123
127
|
*
|
|
124
|
-
* IMPORTANT:
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* - NO placeholder checks (let NotebookLM handle that!)
|
|
128
|
-
*
|
|
129
|
-
* Based on Python _wait_for_ready() from browser_session.py:104-113
|
|
128
|
+
* IMPORTANT: Wait for BOTH:
|
|
129
|
+
* 1. Chat input to be visible
|
|
130
|
+
* 2. Page content to be fully loaded (no skeleton UI)
|
|
130
131
|
*/
|
|
131
132
|
async waitForNotebookLMReady() {
|
|
132
133
|
if (!this.page) {
|
|
133
134
|
throw new Error('Page not initialized');
|
|
134
135
|
}
|
|
135
136
|
try {
|
|
136
|
-
// PRIMARY:
|
|
137
|
+
// PRIMARY: Wait for chat input
|
|
137
138
|
log.info(' ⏳ Waiting for chat input (textarea.query-box-input)...');
|
|
138
139
|
await this.page.waitForSelector('textarea.query-box-input', {
|
|
139
|
-
timeout:
|
|
140
|
-
state: 'visible',
|
|
140
|
+
timeout: 15000,
|
|
141
|
+
state: 'visible',
|
|
141
142
|
});
|
|
142
143
|
log.success(' ✅ Chat input ready!');
|
|
144
|
+
// CRITICAL: Wait for page content to load (no skeleton UI)
|
|
145
|
+
log.info(' ⏳ Waiting for page content to load...');
|
|
146
|
+
await this.waitForContentLoaded();
|
|
147
|
+
log.success(' ✅ Page content loaded!');
|
|
143
148
|
}
|
|
144
149
|
catch {
|
|
145
|
-
// FALLBACK:
|
|
150
|
+
// FALLBACK: Try alternative selector
|
|
146
151
|
try {
|
|
147
152
|
log.info(' ⏳ Trying fallback selector (aria-label)...');
|
|
148
153
|
await this.page.waitForSelector('textarea[aria-label="Feld für Anfragen"]', {
|
|
149
|
-
timeout: 5000,
|
|
154
|
+
timeout: 5000,
|
|
150
155
|
state: 'visible',
|
|
151
156
|
});
|
|
152
157
|
log.success(' ✅ Chat input ready (fallback)!');
|
|
@@ -167,6 +172,57 @@ export class BrowserSession {
|
|
|
167
172
|
}
|
|
168
173
|
}
|
|
169
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Wait for page content to be fully loaded (no skeleton/loading UI)
|
|
177
|
+
* This ensures NotebookLM has finished loading sources and is ready to answer
|
|
178
|
+
*/
|
|
179
|
+
async waitForContentLoaded() {
|
|
180
|
+
if (!this.page)
|
|
181
|
+
return;
|
|
182
|
+
const maxWaitMs = 15000;
|
|
183
|
+
const pollIntervalMs = 500;
|
|
184
|
+
const startTime = Date.now();
|
|
185
|
+
while (Date.now() - startTime < maxWaitMs) {
|
|
186
|
+
// Check if skeleton UI is still visible
|
|
187
|
+
const hasSkeletonUI = await this.page.evaluate(`
|
|
188
|
+
(() => {
|
|
189
|
+
// Look for skeleton/loading indicators
|
|
190
|
+
const skeletonSelectors = [
|
|
191
|
+
'.skeleton',
|
|
192
|
+
'[class*="skeleton"]',
|
|
193
|
+
'[class*="loading"]',
|
|
194
|
+
'.mat-progress-bar',
|
|
195
|
+
'.loading-indicator',
|
|
196
|
+
'.shimmer',
|
|
197
|
+
'[class*="shimmer"]',
|
|
198
|
+
];
|
|
199
|
+
|
|
200
|
+
for (const selector of skeletonSelectors) {
|
|
201
|
+
const elements = document.querySelectorAll(selector);
|
|
202
|
+
for (const el of elements) {
|
|
203
|
+
const style = window.getComputedStyle(el);
|
|
204
|
+
if (style.display !== 'none' && style.visibility !== 'hidden') {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Also check for placeholder bars (common in loading states)
|
|
211
|
+
const placeholderBars = document.querySelectorAll('[style*="background"][style*="animate"]');
|
|
212
|
+
if (placeholderBars.length > 0) return true;
|
|
213
|
+
|
|
214
|
+
return false;
|
|
215
|
+
})()
|
|
216
|
+
`);
|
|
217
|
+
if (!hasSkeletonUI) {
|
|
218
|
+
// Also wait a small additional delay to be safe
|
|
219
|
+
await randomDelay(500, 800);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
await this.page.waitForTimeout(pollIntervalMs);
|
|
223
|
+
}
|
|
224
|
+
log.warning(' ⚠️ Timeout waiting for content to load, proceeding anyway...');
|
|
225
|
+
}
|
|
170
226
|
isPageClosedSafe() {
|
|
171
227
|
if (!this.page)
|
|
172
228
|
return true;
|
|
@@ -295,15 +351,27 @@ export class BrowserSession {
|
|
|
295
351
|
return;
|
|
296
352
|
}
|
|
297
353
|
if (await applyToPage()) {
|
|
298
|
-
|
|
354
|
+
cleanup();
|
|
299
355
|
}
|
|
300
356
|
};
|
|
357
|
+
// Cleanup function to remove listener and prevent memory leak
|
|
358
|
+
const cleanup = () => {
|
|
359
|
+
this.page?.off('framenavigated', handleNavigation);
|
|
360
|
+
this.page?.off('close', cleanup);
|
|
361
|
+
};
|
|
301
362
|
this.page.on('framenavigated', handleNavigation);
|
|
363
|
+
// Also cleanup if page closes before restoration completes
|
|
364
|
+
this.page.once('close', cleanup);
|
|
302
365
|
}
|
|
303
366
|
/**
|
|
304
367
|
* Ask a question to NotebookLM
|
|
368
|
+
*
|
|
369
|
+
* @param question The question to ask
|
|
370
|
+
* @param sendProgress Progress callback for status updates
|
|
371
|
+
* @param sourceFormat Optional format for source citation extraction
|
|
372
|
+
* @returns AskResult with answer and optional citation data
|
|
305
373
|
*/
|
|
306
|
-
async ask(question, sendProgress) {
|
|
374
|
+
async ask(question, sendProgress, sourceFormat = 'none') {
|
|
307
375
|
const askOnce = async () => {
|
|
308
376
|
if (!this.initialized || !this.page || this.isPageClosedSafe()) {
|
|
309
377
|
log.warning(` ℹ️ Session not initialized or page missing → re-initializing...`);
|
|
@@ -326,6 +394,23 @@ export class BrowserSession {
|
|
|
326
394
|
log.info(` 📸 Snapshotting existing responses...`);
|
|
327
395
|
const existingResponses = await snapshotAllResponses(page);
|
|
328
396
|
log.success(` ✅ Captured ${existingResponses.length} existing responses`);
|
|
397
|
+
// Ensure sources are selected before asking
|
|
398
|
+
await this.ensureSourcesSelected();
|
|
399
|
+
// Check for rate limit BEFORE trying to submit a question
|
|
400
|
+
log.info(` 🔍 Checking for rate limit before asking...`);
|
|
401
|
+
if (await this.detectRateLimitError()) {
|
|
402
|
+
throw new RateLimitError('NotebookLM daily limit reached - switching to another account');
|
|
403
|
+
}
|
|
404
|
+
// DEBUG: Take screenshot before asking to see UI state
|
|
405
|
+
try {
|
|
406
|
+
const debugPath = process.env.LOCALAPPDATA || 'C:\\Users\\romai\\AppData\\Local';
|
|
407
|
+
const screenshotPath = `${debugPath}\\notebooklm-mcp\\Data\\debug-before-ask.png`;
|
|
408
|
+
await page.screenshot({ path: screenshotPath, fullPage: true });
|
|
409
|
+
log.info(` 📸 Debug screenshot saved: ${screenshotPath}`);
|
|
410
|
+
}
|
|
411
|
+
catch (e) {
|
|
412
|
+
log.warning(` ⚠️ Could not save debug screenshot: ${e}`);
|
|
413
|
+
}
|
|
329
414
|
// Find the chat input
|
|
330
415
|
const inputSelector = await this.findChatInput();
|
|
331
416
|
if (!inputSelector) {
|
|
@@ -346,6 +431,16 @@ export class BrowserSession {
|
|
|
346
431
|
await page.keyboard.press('Enter');
|
|
347
432
|
// Small pause after submit
|
|
348
433
|
await randomDelay(1000, 1500);
|
|
434
|
+
// DEBUG: Take screenshot after submitting question
|
|
435
|
+
try {
|
|
436
|
+
const debugPath = process.env.LOCALAPPDATA || 'C:\\Users\\romai\\AppData\\Local';
|
|
437
|
+
const screenshotPath = `${debugPath}\\notebooklm-mcp\\Data\\debug-after-submit.png`;
|
|
438
|
+
await page.screenshot({ path: screenshotPath, fullPage: true });
|
|
439
|
+
log.info(` 📸 Debug screenshot (after submit) saved: ${screenshotPath}`);
|
|
440
|
+
}
|
|
441
|
+
catch (e) {
|
|
442
|
+
log.warning(` ⚠️ Could not save debug screenshot: ${e}`);
|
|
443
|
+
}
|
|
349
444
|
// Wait for the response with streaming detection
|
|
350
445
|
log.info(` ⏳ Waiting for response (with streaming detection)...`);
|
|
351
446
|
await sendProgress?.('Waiting for NotebookLM response (streaming detection active)...', 3, 5);
|
|
@@ -359,7 +454,12 @@ export class BrowserSession {
|
|
|
359
454
|
if (!answer) {
|
|
360
455
|
throw new Error('Timeout waiting for response from NotebookLM');
|
|
361
456
|
}
|
|
362
|
-
// Check
|
|
457
|
+
// Check if the answer itself is a rate limit message
|
|
458
|
+
if (isRateLimitMessage(answer)) {
|
|
459
|
+
log.warning(` ⚠️ Rate limit detected in response: "${answer.substring(0, 50)}..."`);
|
|
460
|
+
throw new RateLimitError('NotebookLM daily limit reached - switching to another account');
|
|
461
|
+
}
|
|
462
|
+
// Check for rate limit errors in page elements AFTER receiving answer
|
|
363
463
|
log.info(` 🔍 Checking for rate limit errors...`);
|
|
364
464
|
if (await this.detectRateLimitError()) {
|
|
365
465
|
throw new RateLimitError('NotebookLM rate limit reached (50 queries/day for free accounts)');
|
|
@@ -368,7 +468,24 @@ export class BrowserSession {
|
|
|
368
468
|
this.messageCount++;
|
|
369
469
|
this.updateActivity();
|
|
370
470
|
log.success(`✅ [${this.sessionId}] Received answer (${answer.length} chars, ${this.messageCount} total messages)`);
|
|
371
|
-
|
|
471
|
+
// Extract citations if requested (no additional API calls - just DOM interaction)
|
|
472
|
+
let citationResult;
|
|
473
|
+
if (sourceFormat !== 'none') {
|
|
474
|
+
await sendProgress?.('Extracting source citations...', 4, 5);
|
|
475
|
+
// Find the response container for citation extraction
|
|
476
|
+
const responseContainer = await page.$('.to-user-container:last-child .message-text-content');
|
|
477
|
+
citationResult = await extractCitations(page, answer, responseContainer, sourceFormat);
|
|
478
|
+
if (citationResult.success && citationResult.citations.length > 0) {
|
|
479
|
+
log.success(` 📚 Extracted ${citationResult.citations.length} source citations`);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
// Return result with optional citation data
|
|
483
|
+
const result = {
|
|
484
|
+
answer: citationResult?.formattedAnswer || answer,
|
|
485
|
+
originalAnswer: answer,
|
|
486
|
+
citationResult: sourceFormat !== 'none' ? citationResult : undefined,
|
|
487
|
+
};
|
|
488
|
+
return result;
|
|
372
489
|
};
|
|
373
490
|
try {
|
|
374
491
|
return await askOnce();
|
|
@@ -460,19 +577,35 @@ export class BrowserSession {
|
|
|
460
577
|
'.alert-error',
|
|
461
578
|
'.toast-error',
|
|
462
579
|
];
|
|
463
|
-
// Keywords that indicate rate limiting
|
|
580
|
+
// Keywords that indicate rate limiting (English + French)
|
|
581
|
+
// IMPORTANT: Be specific! Generic terms like "quota" can appear anywhere on the page
|
|
464
582
|
const keywords = [
|
|
465
583
|
'rate limit',
|
|
466
584
|
'limit exceeded',
|
|
467
585
|
'quota exhausted',
|
|
468
|
-
'daily limit',
|
|
469
|
-
'limit
|
|
586
|
+
'daily limit reached',
|
|
587
|
+
'daily discussion limit',
|
|
470
588
|
'too many requests',
|
|
471
|
-
'
|
|
472
|
-
'
|
|
473
|
-
|
|
474
|
-
'
|
|
589
|
+
'query limit reached',
|
|
590
|
+
'request limit reached',
|
|
591
|
+
// French keywords - SPECIFIC phrases only
|
|
592
|
+
'limite quotidienne de discussions',
|
|
593
|
+
'atteint la limite quotidienne',
|
|
594
|
+
'vous avez atteint la limite',
|
|
595
|
+
'revenez plus tard',
|
|
475
596
|
];
|
|
597
|
+
// FIRST: Check entire page body for rate limit messages (most reliable)
|
|
598
|
+
try {
|
|
599
|
+
const bodyText = await this.page.evaluate(`document.body.innerText`);
|
|
600
|
+
const bodyLower = bodyText.toLowerCase();
|
|
601
|
+
if (keywords.some((k) => bodyLower.includes(k))) {
|
|
602
|
+
log.error(`🚫 Rate limit detected in page body!`);
|
|
603
|
+
return true;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
catch {
|
|
607
|
+
// Continue with specific selectors
|
|
608
|
+
}
|
|
476
609
|
// Check error containers for rate limit messages
|
|
477
610
|
for (const selector of errorSelectors) {
|
|
478
611
|
try {
|
|
@@ -495,11 +628,30 @@ export class BrowserSession {
|
|
|
495
628
|
continue;
|
|
496
629
|
}
|
|
497
630
|
}
|
|
498
|
-
//
|
|
631
|
+
// Check chat input for rate limit messages (placeholder, value, or disabled state)
|
|
499
632
|
try {
|
|
500
633
|
const inputSelector = 'textarea.query-box-input';
|
|
501
634
|
const input = await this.page.$(inputSelector);
|
|
502
635
|
if (input) {
|
|
636
|
+
// Check placeholder text (rate limit message often appears here)
|
|
637
|
+
const placeholder = await input.getAttribute('placeholder');
|
|
638
|
+
if (placeholder) {
|
|
639
|
+
const placeholderLower = placeholder.toLowerCase();
|
|
640
|
+
if (keywords.some((k) => placeholderLower.includes(k))) {
|
|
641
|
+
log.error(`🚫 Rate limit detected in input placeholder: "${placeholder.substring(0, 80)}..."`);
|
|
642
|
+
return true;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
// Check input value (sometimes the message is in the field itself)
|
|
646
|
+
const inputValue = await input.inputValue();
|
|
647
|
+
if (inputValue) {
|
|
648
|
+
const valueLower = inputValue.toLowerCase();
|
|
649
|
+
if (keywords.some((k) => valueLower.includes(k))) {
|
|
650
|
+
log.error(`🚫 Rate limit detected in input value: "${inputValue.substring(0, 80)}..."`);
|
|
651
|
+
return true;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
// Check if input is disabled
|
|
503
655
|
const isDisabled = await input.evaluate((el) => {
|
|
504
656
|
return el.disabled || el.hasAttribute('disabled');
|
|
505
657
|
});
|
|
@@ -528,6 +680,64 @@ export class BrowserSession {
|
|
|
528
680
|
}
|
|
529
681
|
return false;
|
|
530
682
|
}
|
|
683
|
+
/**
|
|
684
|
+
* Ensure all sources are selected (checkbox checked)
|
|
685
|
+
* NotebookLM requires sources to be selected to answer questions
|
|
686
|
+
*/
|
|
687
|
+
async ensureSourcesSelected() {
|
|
688
|
+
if (!this.page)
|
|
689
|
+
return;
|
|
690
|
+
try {
|
|
691
|
+
log.info(` 📋 Ensuring sources are selected...`);
|
|
692
|
+
// Look for "Select all sources" checkbox (French: "Sélectionner toutes les sources")
|
|
693
|
+
const selectAllSelectors = [
|
|
694
|
+
'text=/Sélectionner toutes les sources/i',
|
|
695
|
+
'text=/Select all sources/i',
|
|
696
|
+
'text=/Select all/i',
|
|
697
|
+
'text=/Tout sélectionner/i',
|
|
698
|
+
// Checkbox before the "Select all" text
|
|
699
|
+
'mat-checkbox:near(:text("Sélectionner"))',
|
|
700
|
+
'mat-checkbox:near(:text("Select all"))',
|
|
701
|
+
// First checkbox in sources panel (usually "select all")
|
|
702
|
+
'.sources-list mat-checkbox:first-child',
|
|
703
|
+
'[class*="source"] mat-checkbox:first-of-type',
|
|
704
|
+
];
|
|
705
|
+
for (const selector of selectAllSelectors) {
|
|
706
|
+
try {
|
|
707
|
+
const checkbox = this.page.locator(selector).first();
|
|
708
|
+
if (await checkbox.isVisible({ timeout: 2000 })) {
|
|
709
|
+
// Check if already selected
|
|
710
|
+
const isChecked = await checkbox
|
|
711
|
+
.evaluate((el) => {
|
|
712
|
+
// Check various ways to determine if checked
|
|
713
|
+
const checkboxEl = el.querySelector('input[type="checkbox"]') || el;
|
|
714
|
+
return (checkboxEl.checked ||
|
|
715
|
+
el.classList?.contains('mat-mdc-checkbox-checked') ||
|
|
716
|
+
el.getAttribute('aria-checked') === 'true');
|
|
717
|
+
})
|
|
718
|
+
.catch(() => false);
|
|
719
|
+
if (!isChecked) {
|
|
720
|
+
log.info(` ☑️ Clicking "Select all sources"...`);
|
|
721
|
+
await checkbox.click();
|
|
722
|
+
await randomDelay(500, 800);
|
|
723
|
+
}
|
|
724
|
+
else {
|
|
725
|
+
log.info(` ✅ Sources already selected`);
|
|
726
|
+
}
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
catch {
|
|
731
|
+
continue;
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
// Fallback: Try clicking on the sources panel header to select all
|
|
735
|
+
log.info(` 🔍 "Select all" not found, trying to verify sources manually...`);
|
|
736
|
+
}
|
|
737
|
+
catch (error) {
|
|
738
|
+
log.warning(` ⚠️ Could not ensure sources selected: ${error}`);
|
|
739
|
+
}
|
|
740
|
+
}
|
|
531
741
|
/**
|
|
532
742
|
* Reset the chat history (start a new conversation)
|
|
533
743
|
*/
|
|
@@ -598,8 +808,12 @@ export class BrowserSession {
|
|
|
598
808
|
}
|
|
599
809
|
/**
|
|
600
810
|
* Check if session has expired (inactive for too long)
|
|
811
|
+
* @param timeoutSeconds - Timeout in seconds. 0 means never expires.
|
|
601
812
|
*/
|
|
602
813
|
isExpired(timeoutSeconds) {
|
|
814
|
+
if (timeoutSeconds <= 0) {
|
|
815
|
+
return false; // 0 or negative timeout means never expires
|
|
816
|
+
}
|
|
603
817
|
const inactiveSeconds = (Date.now() - this.lastActivity) / 1000;
|
|
604
818
|
return inactiveSeconds > timeoutSeconds;
|
|
605
819
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-session.js","sourceRoot":"","sources":["../../src/session/browser-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-session.js","sourceRoot":"","sources":["../../src/session/browser-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { AuthManager } from '../auth/auth-manager.js';
|
|
15
15
|
import { BrowserSession } from './browser-session.js';
|
|
16
|
+
import { SharedContextManager } from './shared-context-manager.js';
|
|
16
17
|
import type { SessionInfo } from '../types.js';
|
|
17
18
|
export declare class SessionManager {
|
|
18
19
|
private authManager;
|
|
19
20
|
private sharedContextManager;
|
|
20
21
|
private sessions;
|
|
22
|
+
private pendingSessions;
|
|
21
23
|
private maxSessions;
|
|
22
24
|
private sessionTimeout;
|
|
23
25
|
private cleanupInterval?;
|
|
@@ -62,6 +64,10 @@ export declare class SessionManager {
|
|
|
62
64
|
* Get all sessions info
|
|
63
65
|
*/
|
|
64
66
|
getAllSessionsInfo(): SessionInfo[];
|
|
67
|
+
/**
|
|
68
|
+
* Get the shared context manager (for direct browser access)
|
|
69
|
+
*/
|
|
70
|
+
getSharedContextManager(): SharedContextManager;
|
|
65
71
|
/**
|
|
66
72
|
* Get aggregate stats
|
|
67
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAE7B,WAAW,EAAE,WAAW;IAqBpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;;OAMG;IACG,kBAAkB,CACtB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,cAAc,CAAC;IAmH1B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIpD;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBvD;;OAEG;IACG,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB5D;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAsChD;;OAEG;YACW,oBAAoB;IA+BlC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BvC;;OAEG;IACH,kBAAkB,IAAI,WAAW,EAAE;IAInC;;OAEG;IACH,uBAAuB,IAAI,oBAAoB;IAI/C;;OAEG;IACH,QAAQ,IAAI;QACV,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC;KACxB;CAcF"}
|
|
@@ -20,6 +20,7 @@ export class SessionManager {
|
|
|
20
20
|
authManager;
|
|
21
21
|
sharedContextManager;
|
|
22
22
|
sessions = new Map();
|
|
23
|
+
pendingSessions = new Set(); // Track sessions being created to prevent race conditions
|
|
23
24
|
maxSessions;
|
|
24
25
|
sessionTimeout;
|
|
25
26
|
cleanupInterval;
|
|
@@ -71,7 +72,8 @@ export class SessionManager {
|
|
|
71
72
|
if (this.sharedContextManager.needsHeadlessModeChange(overrideHeadless)) {
|
|
72
73
|
log.warning(`🔄 Browser visibility changed - closing all sessions to recreate browser context...`);
|
|
73
74
|
const currentMode = this.sharedContextManager.getCurrentHeadlessMode();
|
|
74
|
-
|
|
75
|
+
// Fix: overrideHeadless=true means headless, false means visible
|
|
76
|
+
log.info(` Switching from ${currentMode ? 'HEADLESS' : 'VISIBLE'} to ${overrideHeadless ? 'HEADLESS' : 'VISIBLE'}`);
|
|
75
77
|
// Close all sessions (they all use the same context)
|
|
76
78
|
await this.closeAllSessions();
|
|
77
79
|
log.success(` ✅ All sessions closed, browser context will be recreated with new mode`);
|
|
@@ -91,24 +93,44 @@ export class SessionManager {
|
|
|
91
93
|
return session;
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
|
-
// Check if
|
|
95
|
-
if (this.
|
|
96
|
-
log.warning(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
// Check if session is being created by another concurrent request (race condition prevention)
|
|
97
|
+
if (this.pendingSessions.has(sessionId)) {
|
|
98
|
+
log.warning(`⏳ Session ${sessionId} is being created, waiting...`);
|
|
99
|
+
// Wait up to 30 seconds for the session to be created
|
|
100
|
+
for (let i = 0; i < 60; i++) {
|
|
101
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
102
|
+
if (this.sessions.has(sessionId)) {
|
|
103
|
+
const session = this.sessions.get(sessionId);
|
|
104
|
+
session.updateActivity();
|
|
105
|
+
log.success(`♻️ Reusing session ${sessionId} after wait`);
|
|
106
|
+
return session;
|
|
107
|
+
}
|
|
108
|
+
if (!this.pendingSessions.has(sessionId)) {
|
|
109
|
+
break; // Session creation failed, try again
|
|
110
|
+
}
|
|
100
111
|
}
|
|
101
112
|
}
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
if (overrideHeadless !== undefined) {
|
|
105
|
-
log.info(` Show browser: ${overrideHeadless}`);
|
|
106
|
-
}
|
|
113
|
+
// Mark session as pending to prevent concurrent creation
|
|
114
|
+
this.pendingSessions.add(sessionId);
|
|
107
115
|
try {
|
|
116
|
+
// Check if we need to free up space
|
|
117
|
+
if (this.sessions.size >= this.maxSessions) {
|
|
118
|
+
log.warning(`⚠️ Max sessions (${this.maxSessions}) reached, cleaning up...`);
|
|
119
|
+
const freed = await this.cleanupOldestSession();
|
|
120
|
+
if (!freed) {
|
|
121
|
+
throw new Error(`Max sessions (${this.maxSessions}) reached and no inactive sessions to clean up`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Create new session
|
|
125
|
+
log.info(`🆕 Creating new session ${sessionId}...`);
|
|
126
|
+
if (overrideHeadless !== undefined) {
|
|
127
|
+
// overrideHeadless=false means visible browser, true means headless
|
|
128
|
+
log.info(` Browser mode: ${overrideHeadless ? 'headless' : 'visible'}`);
|
|
129
|
+
}
|
|
108
130
|
// Ensure the shared context exists (ONE fingerprint for all sessions!)
|
|
109
131
|
await this.sharedContextManager.getOrCreateContext(overrideHeadless);
|
|
110
|
-
// Create and initialize session
|
|
111
|
-
const session = new BrowserSession(sessionId, this.sharedContextManager, this.authManager, targetUrl);
|
|
132
|
+
// Create and initialize session (pass overrideHeadless so init() uses the same mode)
|
|
133
|
+
const session = new BrowserSession(sessionId, this.sharedContextManager, this.authManager, targetUrl, overrideHeadless);
|
|
112
134
|
await session.init();
|
|
113
135
|
this.sessions.set(sessionId, session);
|
|
114
136
|
log.success(`✅ Session ${sessionId} created (${this.sessions.size}/${this.maxSessions} active)`);
|
|
@@ -118,6 +140,10 @@ export class SessionManager {
|
|
|
118
140
|
log.error(`❌ Failed to create session: ${error}`);
|
|
119
141
|
throw error;
|
|
120
142
|
}
|
|
143
|
+
finally {
|
|
144
|
+
// Always remove from pending, whether success or failure
|
|
145
|
+
this.pendingSessions.delete(sessionId);
|
|
146
|
+
}
|
|
121
147
|
}
|
|
122
148
|
/**
|
|
123
149
|
* Get an existing session by ID
|
|
@@ -254,6 +280,12 @@ export class SessionManager {
|
|
|
254
280
|
getAllSessionsInfo() {
|
|
255
281
|
return Array.from(this.sessions.values()).map((session) => session.getInfo());
|
|
256
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Get the shared context manager (for direct browser access)
|
|
285
|
+
*/
|
|
286
|
+
getSharedContextManager() {
|
|
287
|
+
return this.sharedContextManager;
|
|
288
|
+
}
|
|
257
289
|
/**
|
|
258
290
|
* Get aggregate stats
|
|
259
291
|
*/
|