@roomi-fields/notebooklm-mcp 1.1.2

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 (67) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +548 -0
  3. package/dist/auth/auth-manager.d.ts +139 -0
  4. package/dist/auth/auth-manager.d.ts.map +1 -0
  5. package/dist/auth/auth-manager.js +981 -0
  6. package/dist/auth/auth-manager.js.map +1 -0
  7. package/dist/config.d.ts +89 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +216 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/errors.d.ts +26 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +41 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/http-wrapper.d.ts +8 -0
  16. package/dist/http-wrapper.d.ts.map +1 -0
  17. package/dist/http-wrapper.js +221 -0
  18. package/dist/http-wrapper.js.map +1 -0
  19. package/dist/index.d.ts +32 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +499 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/library/notebook-library.d.ts +81 -0
  24. package/dist/library/notebook-library.d.ts.map +1 -0
  25. package/dist/library/notebook-library.js +362 -0
  26. package/dist/library/notebook-library.js.map +1 -0
  27. package/dist/library/types.d.ts +67 -0
  28. package/dist/library/types.d.ts.map +1 -0
  29. package/dist/library/types.js +8 -0
  30. package/dist/library/types.js.map +1 -0
  31. package/dist/session/browser-session.d.ts +108 -0
  32. package/dist/session/browser-session.d.ts.map +1 -0
  33. package/dist/session/browser-session.js +630 -0
  34. package/dist/session/browser-session.js.map +1 -0
  35. package/dist/session/session-manager.d.ts +76 -0
  36. package/dist/session/session-manager.d.ts.map +1 -0
  37. package/dist/session/session-manager.js +273 -0
  38. package/dist/session/session-manager.js.map +1 -0
  39. package/dist/session/shared-context-manager.d.ts +107 -0
  40. package/dist/session/shared-context-manager.d.ts.map +1 -0
  41. package/dist/session/shared-context-manager.js +447 -0
  42. package/dist/session/shared-context-manager.js.map +1 -0
  43. package/dist/tools/index.d.ts +225 -0
  44. package/dist/tools/index.d.ts.map +1 -0
  45. package/dist/tools/index.js +1396 -0
  46. package/dist/tools/index.js.map +1 -0
  47. package/dist/types.d.ts +82 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +5 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/utils/cleanup-manager.d.ts +133 -0
  52. package/dist/utils/cleanup-manager.d.ts.map +1 -0
  53. package/dist/utils/cleanup-manager.js +673 -0
  54. package/dist/utils/cleanup-manager.js.map +1 -0
  55. package/dist/utils/logger.d.ts +61 -0
  56. package/dist/utils/logger.d.ts.map +1 -0
  57. package/dist/utils/logger.js +92 -0
  58. package/dist/utils/logger.js.map +1 -0
  59. package/dist/utils/page-utils.d.ts +54 -0
  60. package/dist/utils/page-utils.d.ts.map +1 -0
  61. package/dist/utils/page-utils.js +422 -0
  62. package/dist/utils/page-utils.js.map +1 -0
  63. package/dist/utils/stealth-utils.d.ts +135 -0
  64. package/dist/utils/stealth-utils.d.ts.map +1 -0
  65. package/dist/utils/stealth-utils.js +398 -0
  66. package/dist/utils/stealth-utils.js.map +1 -0
  67. package/package.json +71 -0
@@ -0,0 +1,362 @@
1
+ /**
2
+ * NotebookLM Library Manager
3
+ *
4
+ * Manages a persistent library of NotebookLM notebooks.
5
+ * Allows Claude to autonomously add, remove, and switch between
6
+ * multiple notebooks based on the task at hand.
7
+ */
8
+ import fs from "fs";
9
+ import path from "path";
10
+ import { CONFIG } from "../config.js";
11
+ import { log } from "../utils/logger.js";
12
+ export class NotebookLibrary {
13
+ libraryPath;
14
+ library;
15
+ sessionManager;
16
+ constructor(sessionManager) {
17
+ this.sessionManager = sessionManager;
18
+ this.libraryPath = path.join(CONFIG.dataDir, "library.json");
19
+ this.library = this.loadLibrary();
20
+ log.info("📚 NotebookLibrary initialized");
21
+ log.info(` Library path: ${this.libraryPath}`);
22
+ log.info(` Notebooks: ${this.library.notebooks.length}`);
23
+ if (this.library.active_notebook_id) {
24
+ log.info(` Active: ${this.library.active_notebook_id}`);
25
+ }
26
+ }
27
+ /**
28
+ * Load library from disk, or create default if not exists
29
+ */
30
+ loadLibrary() {
31
+ try {
32
+ if (fs.existsSync(this.libraryPath)) {
33
+ const data = fs.readFileSync(this.libraryPath, "utf-8");
34
+ const library = JSON.parse(data);
35
+ log.success(` ✅ Loaded library with ${library.notebooks.length} notebooks`);
36
+ return library;
37
+ }
38
+ }
39
+ catch (error) {
40
+ log.warning(` ⚠️ Failed to load library: ${error}`);
41
+ }
42
+ // Create default library with current CONFIG as first entry
43
+ log.info(" 🆕 Creating new library...");
44
+ const defaultLibrary = this.createDefaultLibrary();
45
+ this.saveLibrary(defaultLibrary);
46
+ return defaultLibrary;
47
+ }
48
+ /**
49
+ * Create default library from current CONFIG
50
+ */
51
+ createDefaultLibrary() {
52
+ const hasConfig = CONFIG.notebookUrl &&
53
+ CONFIG.notebookDescription &&
54
+ CONFIG.notebookDescription !== "General knowledge base - configure NOTEBOOK_DESCRIPTION to help Claude understand what's in this notebook";
55
+ const notebooks = [];
56
+ if (hasConfig) {
57
+ // Create first entry from CONFIG
58
+ const id = this.generateId(CONFIG.notebookDescription);
59
+ notebooks.push({
60
+ id,
61
+ url: CONFIG.notebookUrl,
62
+ name: CONFIG.notebookDescription.substring(0, 50), // First 50 chars as name
63
+ description: CONFIG.notebookDescription,
64
+ topics: CONFIG.notebookTopics,
65
+ content_types: CONFIG.notebookContentTypes,
66
+ use_cases: CONFIG.notebookUseCases,
67
+ added_at: new Date().toISOString(),
68
+ last_used: new Date().toISOString(),
69
+ use_count: 0,
70
+ tags: [],
71
+ });
72
+ log.success(` ✅ Created default notebook: ${id}`);
73
+ }
74
+ return {
75
+ notebooks,
76
+ active_notebook_id: notebooks.length > 0 ? notebooks[0].id : null,
77
+ last_modified: new Date().toISOString(),
78
+ version: "1.0.0",
79
+ };
80
+ }
81
+ /**
82
+ * Save library to disk
83
+ */
84
+ saveLibrary(library) {
85
+ try {
86
+ library.last_modified = new Date().toISOString();
87
+ const data = JSON.stringify(library, null, 2);
88
+ fs.writeFileSync(this.libraryPath, data, "utf-8");
89
+ this.library = library;
90
+ log.success(` 💾 Library saved (${library.notebooks.length} notebooks)`);
91
+ }
92
+ catch (error) {
93
+ log.error(` ❌ Failed to save library: ${error}`);
94
+ throw error;
95
+ }
96
+ }
97
+ /**
98
+ * Generate a unique ID from a string (slug format)
99
+ */
100
+ generateId(name) {
101
+ const base = name
102
+ .toLowerCase()
103
+ .replace(/[^a-z0-9]+/g, "-")
104
+ .replace(/^-+|-+$/g, "")
105
+ .substring(0, 30);
106
+ // Ensure uniqueness
107
+ let id = base;
108
+ let counter = 1;
109
+ while (this.library.notebooks.some((n) => n.id === id)) {
110
+ id = `${base}-${counter}`;
111
+ counter++;
112
+ }
113
+ return id;
114
+ }
115
+ /**
116
+ * Add a new notebook to the library
117
+ */
118
+ async addNotebook(input) {
119
+ log.info(`📝 Adding notebook: ${input.name}`);
120
+ // Check if a notebook with this name already exists
121
+ const existingWithSameName = this.library.notebooks.find((n) => n.name.toLowerCase() === input.name.toLowerCase());
122
+ if (existingWithSameName) {
123
+ throw new Error(`A notebook with the name '${input.name}' already exists.\n\n` +
124
+ `Existing notebook ID: ${existingWithSameName.id}\n` +
125
+ `URL: ${existingWithSameName.url}\n\n` +
126
+ `Please use a different name, or update the existing notebook instead.\n` +
127
+ `To update: PUT /notebooks/${existingWithSameName.id} with new data\n` +
128
+ `To delete: DELETE /notebooks/${existingWithSameName.id}`);
129
+ }
130
+ // Validate URL format
131
+ if (!this.isValidNotebookUrl(input.url)) {
132
+ throw new Error(`Invalid NotebookLM URL: ${input.url}\n\n` +
133
+ `Expected format: https://notebooklm.google.com/notebook/[notebook-id]\n\n` +
134
+ `Example: https://notebooklm.google.com/notebook/abc-123-def-456\n\n` +
135
+ `To get the URL:\n` +
136
+ `1. Go to https://notebooklm.google.com\n` +
137
+ `2. Open your notebook\n` +
138
+ `3. Copy the URL from the address bar`);
139
+ }
140
+ // Validate notebook exists (live check)
141
+ await this.validateNotebookExists(input.url);
142
+ // Generate ID
143
+ const id = this.generateId(input.name);
144
+ // Create entry
145
+ const notebook = {
146
+ id,
147
+ url: input.url,
148
+ name: input.name,
149
+ description: input.description,
150
+ topics: input.topics,
151
+ content_types: input.content_types || ["documentation", "examples"],
152
+ use_cases: input.use_cases || [
153
+ `Learning about ${input.name}`,
154
+ `Implementing features with ${input.name}`,
155
+ ],
156
+ added_at: new Date().toISOString(),
157
+ last_used: new Date().toISOString(),
158
+ use_count: 0,
159
+ tags: input.tags || [],
160
+ };
161
+ // Add to library
162
+ const updated = { ...this.library };
163
+ updated.notebooks.push(notebook);
164
+ // Set as active if it's the first notebook
165
+ if (updated.notebooks.length === 1) {
166
+ updated.active_notebook_id = id;
167
+ }
168
+ this.saveLibrary(updated);
169
+ log.success(`✅ Notebook added: ${id}`);
170
+ return notebook;
171
+ }
172
+ /**
173
+ * Validate NotebookLM URL format
174
+ */
175
+ isValidNotebookUrl(url) {
176
+ try {
177
+ const urlObj = new URL(url);
178
+ return (urlObj.hostname === "notebooklm.google.com" &&
179
+ urlObj.pathname.startsWith("/notebook/") &&
180
+ urlObj.pathname.length > "/notebook/".length);
181
+ }
182
+ catch {
183
+ return false;
184
+ }
185
+ }
186
+ /**
187
+ * Validate that the notebook exists and is accessible
188
+ * Opens the notebook briefly to check if it loads correctly
189
+ */
190
+ async validateNotebookExists(url) {
191
+ if (!this.sessionManager) {
192
+ log.warning(" ⚠️ SessionManager not available, skipping live validation");
193
+ return;
194
+ }
195
+ log.info(" 🔍 Validating notebook exists (creating temporary session)...");
196
+ const tempSessionId = `validate-${Date.now()}`;
197
+ try {
198
+ // Use SessionManager to create a session (which will validate the notebook)
199
+ await this.sessionManager.getOrCreateSession(tempSessionId, url, true // headless
200
+ );
201
+ log.success(" ✅ Notebook validated successfully!");
202
+ // Close the validation session immediately
203
+ await this.sessionManager.closeSession(tempSessionId);
204
+ }
205
+ catch (error) {
206
+ if (error instanceof Error) {
207
+ // Parse the error to give better feedback
208
+ const errorMsg = error.message;
209
+ if (errorMsg.includes("Could not find NotebookLM chat input")) {
210
+ throw new Error(`Invalid or inaccessible notebook.\n\n` +
211
+ `URL: ${url}\n\n` +
212
+ `The notebook page loaded but the chat interface was not found.\n` +
213
+ `This usually means:\n` +
214
+ `- The notebook doesn't exist\n` +
215
+ `- You don't have access to this notebook\n` +
216
+ `- The notebook ID in the URL is incorrect\n\n` +
217
+ `Please verify the URL by:\n` +
218
+ `1. Go to https://notebooklm.google.com\n` +
219
+ `2. Open the notebook manually\n` +
220
+ `3. Copy the exact URL from the address bar`);
221
+ }
222
+ throw new Error(`Failed to validate notebook:\n${errorMsg}\n\n` +
223
+ `Please verify:\n` +
224
+ `1. The URL is correct: ${url}\n` +
225
+ `2. You have access to this notebook\n` +
226
+ `3. You are authenticated (run setup-auth if needed)`);
227
+ }
228
+ throw error;
229
+ }
230
+ }
231
+ /**
232
+ * List all notebooks in library
233
+ */
234
+ listNotebooks() {
235
+ return this.library.notebooks;
236
+ }
237
+ /**
238
+ * Get a specific notebook by ID
239
+ */
240
+ getNotebook(id) {
241
+ return this.library.notebooks.find((n) => n.id === id) || null;
242
+ }
243
+ /**
244
+ * Get the currently active notebook
245
+ */
246
+ getActiveNotebook() {
247
+ if (!this.library.active_notebook_id) {
248
+ return null;
249
+ }
250
+ return this.getNotebook(this.library.active_notebook_id);
251
+ }
252
+ /**
253
+ * Select a notebook as active
254
+ */
255
+ selectNotebook(id) {
256
+ const notebook = this.getNotebook(id);
257
+ if (!notebook) {
258
+ throw new Error(`Notebook not found: ${id}`);
259
+ }
260
+ log.info(`🎯 Selecting notebook: ${id}`);
261
+ const updated = { ...this.library };
262
+ updated.active_notebook_id = id;
263
+ // Update last_used
264
+ const notebookIndex = updated.notebooks.findIndex((n) => n.id === id);
265
+ updated.notebooks[notebookIndex] = {
266
+ ...notebook,
267
+ last_used: new Date().toISOString(),
268
+ };
269
+ this.saveLibrary(updated);
270
+ log.success(`✅ Active notebook: ${id}`);
271
+ return updated.notebooks[notebookIndex];
272
+ }
273
+ /**
274
+ * Update notebook metadata
275
+ */
276
+ updateNotebook(input) {
277
+ const notebook = this.getNotebook(input.id);
278
+ if (!notebook) {
279
+ throw new Error(`Notebook not found: ${input.id}`);
280
+ }
281
+ log.info(`📝 Updating notebook: ${input.id}`);
282
+ const updated = { ...this.library };
283
+ const index = updated.notebooks.findIndex((n) => n.id === input.id);
284
+ updated.notebooks[index] = {
285
+ ...notebook,
286
+ ...(input.name && { name: input.name }),
287
+ ...(input.description && { description: input.description }),
288
+ ...(input.topics && { topics: input.topics }),
289
+ ...(input.content_types && { content_types: input.content_types }),
290
+ ...(input.use_cases && { use_cases: input.use_cases }),
291
+ ...(input.tags && { tags: input.tags }),
292
+ ...(input.url && { url: input.url }),
293
+ };
294
+ this.saveLibrary(updated);
295
+ log.success(`✅ Notebook updated: ${input.id}`);
296
+ return updated.notebooks[index];
297
+ }
298
+ /**
299
+ * Remove notebook from library
300
+ */
301
+ removeNotebook(id) {
302
+ const notebook = this.getNotebook(id);
303
+ if (!notebook) {
304
+ return false;
305
+ }
306
+ log.info(`🗑️ Removing notebook: ${id}`);
307
+ const updated = { ...this.library };
308
+ updated.notebooks = updated.notebooks.filter((n) => n.id !== id);
309
+ // If we removed the active notebook, select another one
310
+ if (updated.active_notebook_id === id) {
311
+ updated.active_notebook_id =
312
+ updated.notebooks.length > 0 ? updated.notebooks[0].id : null;
313
+ }
314
+ this.saveLibrary(updated);
315
+ log.success(`✅ Notebook removed: ${id}`);
316
+ return true;
317
+ }
318
+ /**
319
+ * Increment use count for a notebook
320
+ */
321
+ incrementUseCount(id) {
322
+ const notebookIndex = this.library.notebooks.findIndex((n) => n.id === id);
323
+ if (notebookIndex === -1) {
324
+ return null;
325
+ }
326
+ const notebook = this.library.notebooks[notebookIndex];
327
+ const updated = { ...this.library };
328
+ const updatedNotebook = {
329
+ ...notebook,
330
+ use_count: notebook.use_count + 1,
331
+ last_used: new Date().toISOString(),
332
+ };
333
+ updated.notebooks[notebookIndex] = updatedNotebook;
334
+ this.saveLibrary(updated);
335
+ return updatedNotebook;
336
+ }
337
+ /**
338
+ * Get library statistics
339
+ */
340
+ getStats() {
341
+ const totalQueries = this.library.notebooks.reduce((sum, n) => sum + n.use_count, 0);
342
+ const mostUsed = this.library.notebooks.reduce((max, n) => n.use_count > (max?.use_count || 0) ? n : max, null);
343
+ return {
344
+ total_notebooks: this.library.notebooks.length,
345
+ active_notebook: this.library.active_notebook_id,
346
+ most_used_notebook: mostUsed?.id || null,
347
+ total_queries: totalQueries,
348
+ last_modified: this.library.last_modified,
349
+ };
350
+ }
351
+ /**
352
+ * Search notebooks by query (searches name, description, topics)
353
+ */
354
+ searchNotebooks(query) {
355
+ const lowerQuery = query.toLowerCase();
356
+ return this.library.notebooks.filter((n) => n.name.toLowerCase().includes(lowerQuery) ||
357
+ n.description.toLowerCase().includes(lowerQuery) ||
358
+ n.topics.some((t) => t.toLowerCase().includes(lowerQuery)) ||
359
+ n.tags?.some((t) => t.toLowerCase().includes(lowerQuery)));
360
+ }
361
+ }
362
+ //# sourceMappingURL=notebook-library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-library.js","sourceRoot":"","sources":["../../src/library/notebook-library.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * NotebookLM Library Types
3
+ *
4
+ * Defines the structure for managing multiple NotebookLM notebooks
5
+ * in a persistent library that Claude can manage autonomously.
6
+ */
7
+ /**
8
+ * Single notebook entry in the library
9
+ */
10
+ export interface NotebookEntry {
11
+ id: string;
12
+ url: string;
13
+ name: string;
14
+ description: string;
15
+ topics: string[];
16
+ content_types: string[];
17
+ use_cases: string[];
18
+ added_at: string;
19
+ last_used: string;
20
+ use_count: number;
21
+ tags?: string[];
22
+ }
23
+ /**
24
+ * The complete notebook library
25
+ */
26
+ export interface Library {
27
+ notebooks: NotebookEntry[];
28
+ active_notebook_id: string | null;
29
+ last_modified: string;
30
+ version: string;
31
+ }
32
+ /**
33
+ * Input for adding a new notebook
34
+ */
35
+ export interface AddNotebookInput {
36
+ url: string;
37
+ name: string;
38
+ description: string;
39
+ topics: string[];
40
+ content_types?: string[];
41
+ use_cases?: string[];
42
+ tags?: string[];
43
+ }
44
+ /**
45
+ * Input for updating a notebook
46
+ */
47
+ export interface UpdateNotebookInput {
48
+ id: string;
49
+ name?: string;
50
+ description?: string;
51
+ topics?: string[];
52
+ content_types?: string[];
53
+ use_cases?: string[];
54
+ tags?: string[];
55
+ url?: string;
56
+ }
57
+ /**
58
+ * Statistics about library usage
59
+ */
60
+ export interface LibraryStats {
61
+ total_notebooks: number;
62
+ active_notebook: string | null;
63
+ most_used_notebook: string | null;
64
+ total_queries: number;
65
+ last_modified: string;
66
+ }
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/library/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IAGpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * NotebookLM Library Types
3
+ *
4
+ * Defines the structure for managing multiple NotebookLM notebooks
5
+ * in a persistent library that Claude can manage autonomously.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/library/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Browser Session
3
+ *
4
+ * Represents a single browser session for NotebookLM interactions.
5
+ *
6
+ * Features:
7
+ * - Human-like question typing
8
+ * - Streaming response detection
9
+ * - Auto-login on session expiry
10
+ * - Session activity tracking
11
+ * - Chat history reset
12
+ *
13
+ * Based on the Python implementation from browser_session.py
14
+ */
15
+ import type { Page } from "patchright";
16
+ import { SharedContextManager } from "./shared-context-manager.js";
17
+ import { AuthManager } from "../auth/auth-manager.js";
18
+ import type { SessionInfo, ProgressCallback } from "../types.js";
19
+ export declare class BrowserSession {
20
+ readonly sessionId: string;
21
+ readonly notebookUrl: string;
22
+ readonly createdAt: number;
23
+ lastActivity: number;
24
+ messageCount: number;
25
+ private context;
26
+ private sharedContextManager;
27
+ private authManager;
28
+ private page;
29
+ private initialized;
30
+ constructor(sessionId: string, sharedContextManager: SharedContextManager, authManager: AuthManager, notebookUrl: string);
31
+ /**
32
+ * Initialize the session by creating a page and navigating to the notebook
33
+ */
34
+ init(): Promise<void>;
35
+ /**
36
+ * Wait for NotebookLM interface to be ready
37
+ *
38
+ * IMPORTANT: Matches Python implementation EXACTLY!
39
+ * - Uses SPECIFIC selectors (textarea.query-box-input)
40
+ * - Checks ONLY for "visible" state (NOT disabled!)
41
+ * - NO placeholder checks (let NotebookLM handle that!)
42
+ *
43
+ * Based on Python _wait_for_ready() from browser_session.py:104-113
44
+ */
45
+ private waitForNotebookLMReady;
46
+ private isPageClosedSafe;
47
+ /**
48
+ * Ensure the session is authenticated, perform auto-login if needed
49
+ */
50
+ private ensureAuthenticated;
51
+ private getOriginFromUrl;
52
+ /**
53
+ * Safely restore sessionStorage when the page is on the expected origin
54
+ */
55
+ private restoreSessionStorage;
56
+ /**
57
+ * Ask a question to NotebookLM
58
+ */
59
+ ask(question: string, sendProgress?: ProgressCallback): Promise<string>;
60
+ /**
61
+ * Find the chat input element
62
+ *
63
+ * IMPORTANT: Matches Python implementation EXACTLY!
64
+ * - Uses SPECIFIC selectors from Python
65
+ * - Checks ONLY visibility (NOT disabled state!)
66
+ *
67
+ * Based on Python ask() method from browser_session.py:166-171
68
+ */
69
+ private findChatInput;
70
+ /**
71
+ * Detect if a rate limit error occurred
72
+ *
73
+ * Searches the page for error messages indicating rate limit/quota exhaustion.
74
+ * Free NotebookLM accounts have 50 queries/day limit.
75
+ *
76
+ * @returns true if rate limit error detected, false otherwise
77
+ */
78
+ private detectRateLimitError;
79
+ /**
80
+ * Reset the chat history (start a new conversation)
81
+ */
82
+ reset(): Promise<void>;
83
+ /**
84
+ * Close the session
85
+ */
86
+ close(): Promise<void>;
87
+ /**
88
+ * Update last activity timestamp
89
+ */
90
+ updateActivity(): void;
91
+ /**
92
+ * Check if session has expired (inactive for too long)
93
+ */
94
+ isExpired(timeoutSeconds: number): boolean;
95
+ /**
96
+ * Get session information
97
+ */
98
+ getInfo(): SessionInfo;
99
+ /**
100
+ * Get the underlying page (for advanced operations)
101
+ */
102
+ getPage(): Page | null;
103
+ /**
104
+ * Check if session is initialized
105
+ */
106
+ isInitialized(): boolean;
107
+ }
108
+ //# sourceMappingURL=browser-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../src/session/browser-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAkB,IAAI,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQtD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjE,qBAAa,cAAc;IACzB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,WAAW,CAAkB;gBAGnC,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM;IAarB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoF3B;;;;;;;;;OASG;YACW,sBAAsB;IAyCpC,OAAO,CAAC,gBAAgB;IAexB;;OAEG;YACW,mBAAmB;IAwEjC,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;YACW,qBAAqB;IA8DnC;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IA6G7E;;;;;;;;OAQG;YACW,aAAa;IA+B3B;;;;;;;OAOG;YACW,oBAAoB;IAuFlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAK1C;;OAEG;IACH,OAAO,IAAI,WAAW;IAatB;;OAEG;IACH,OAAO,IAAI,IAAI,GAAG,IAAI;IAItB;;OAEG;IACH,aAAa,IAAI,OAAO;CAGzB"}