notebooklm-kit 0.0.1 → 2.1.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 (100) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +4102 -0
  3. package/dist/src/auth/auth.d.ts +46 -0
  4. package/dist/src/auth/auth.d.ts.map +1 -0
  5. package/dist/src/auth/auth.js +323 -0
  6. package/dist/src/auth/auth.js.map +1 -0
  7. package/dist/src/auth/refresh.d.ts +150 -0
  8. package/dist/src/auth/refresh.d.ts.map +1 -0
  9. package/dist/src/auth/refresh.js +433 -0
  10. package/dist/src/auth/refresh.js.map +1 -0
  11. package/dist/src/client/notebooklm-client.d.ts +372 -0
  12. package/dist/src/client/notebooklm-client.d.ts.map +1 -0
  13. package/dist/src/client/notebooklm-client.js +550 -0
  14. package/dist/src/client/notebooklm-client.js.map +1 -0
  15. package/dist/src/index.d.ts +50 -0
  16. package/dist/src/index.d.ts.map +1 -0
  17. package/dist/src/index.js +45 -0
  18. package/dist/src/index.js.map +1 -0
  19. package/dist/src/rpc/rpc-client.d.ts +48 -0
  20. package/dist/src/rpc/rpc-client.d.ts.map +1 -0
  21. package/dist/src/rpc/rpc-client.js +94 -0
  22. package/dist/src/rpc/rpc-client.js.map +1 -0
  23. package/dist/src/rpc/rpc-methods.d.ts +127 -0
  24. package/dist/src/rpc/rpc-methods.d.ts.map +1 -0
  25. package/dist/src/rpc/rpc-methods.js +169 -0
  26. package/dist/src/rpc/rpc-methods.js.map +1 -0
  27. package/dist/src/services/artifacts.d.ts +1017 -0
  28. package/dist/src/services/artifacts.d.ts.map +1 -0
  29. package/dist/src/services/artifacts.js +5413 -0
  30. package/dist/src/services/artifacts.js.map +1 -0
  31. package/dist/src/services/generation.d.ts +147 -0
  32. package/dist/src/services/generation.d.ts.map +1 -0
  33. package/dist/src/services/generation.js +479 -0
  34. package/dist/src/services/generation.js.map +1 -0
  35. package/dist/src/services/notebook-language.d.ts +109 -0
  36. package/dist/src/services/notebook-language.d.ts.map +1 -0
  37. package/dist/src/services/notebook-language.js +204 -0
  38. package/dist/src/services/notebook-language.js.map +1 -0
  39. package/dist/src/services/notebooks.d.ts +26 -0
  40. package/dist/src/services/notebooks.d.ts.map +1 -0
  41. package/dist/src/services/notebooks.js +539 -0
  42. package/dist/src/services/notebooks.js.map +1 -0
  43. package/dist/src/services/notes.d.ts +72 -0
  44. package/dist/src/services/notes.d.ts.map +1 -0
  45. package/dist/src/services/notes.js +340 -0
  46. package/dist/src/services/notes.js.map +1 -0
  47. package/dist/src/services/sources.d.ts +1085 -0
  48. package/dist/src/services/sources.d.ts.map +1 -0
  49. package/dist/src/services/sources.js +2675 -0
  50. package/dist/src/services/sources.js.map +1 -0
  51. package/dist/src/types/artifact.d.ts +258 -0
  52. package/dist/src/types/artifact.d.ts.map +1 -0
  53. package/dist/src/types/artifact.js +42 -0
  54. package/dist/src/types/artifact.js.map +1 -0
  55. package/dist/src/types/common.d.ts +226 -0
  56. package/dist/src/types/common.d.ts.map +1 -0
  57. package/dist/src/types/common.js +80 -0
  58. package/dist/src/types/common.js.map +1 -0
  59. package/dist/src/types/languages.d.ts +179 -0
  60. package/dist/src/types/languages.d.ts.map +1 -0
  61. package/dist/src/types/languages.js +254 -0
  62. package/dist/src/types/languages.js.map +1 -0
  63. package/dist/src/types/note.d.ts +41 -0
  64. package/dist/src/types/note.d.ts.map +1 -0
  65. package/dist/src/types/note.js +12 -0
  66. package/dist/src/types/note.js.map +1 -0
  67. package/dist/src/types/notebook.d.ts +81 -0
  68. package/dist/src/types/notebook.d.ts.map +1 -0
  69. package/dist/src/types/notebook.js +5 -0
  70. package/dist/src/types/notebook.js.map +1 -0
  71. package/dist/src/types/source.d.ts +241 -0
  72. package/dist/src/types/source.d.ts.map +1 -0
  73. package/dist/src/types/source.js +60 -0
  74. package/dist/src/types/source.js.map +1 -0
  75. package/dist/src/utils/batch-execute.d.ts +58 -0
  76. package/dist/src/utils/batch-execute.d.ts.map +1 -0
  77. package/dist/src/utils/batch-execute.js +398 -0
  78. package/dist/src/utils/batch-execute.js.map +1 -0
  79. package/dist/src/utils/chunked-decoder.d.ts +11 -0
  80. package/dist/src/utils/chunked-decoder.d.ts.map +1 -0
  81. package/dist/src/utils/chunked-decoder.js +326 -0
  82. package/dist/src/utils/chunked-decoder.js.map +1 -0
  83. package/dist/src/utils/chunked-parser.d.ts +61 -0
  84. package/dist/src/utils/chunked-parser.d.ts.map +1 -0
  85. package/dist/src/utils/chunked-parser.js +609 -0
  86. package/dist/src/utils/chunked-parser.js.map +1 -0
  87. package/dist/src/utils/errors.d.ts +58 -0
  88. package/dist/src/utils/errors.d.ts.map +1 -0
  89. package/dist/src/utils/errors.js +357 -0
  90. package/dist/src/utils/errors.js.map +1 -0
  91. package/dist/src/utils/quota.d.ts +213 -0
  92. package/dist/src/utils/quota.d.ts.map +1 -0
  93. package/dist/src/utils/quota.js +518 -0
  94. package/dist/src/utils/quota.js.map +1 -0
  95. package/dist/src/utils/streaming-client.d.ts +129 -0
  96. package/dist/src/utils/streaming-client.d.ts.map +1 -0
  97. package/dist/src/utils/streaming-client.js +559 -0
  98. package/dist/src/utils/streaming-client.js.map +1 -0
  99. package/package.json +85 -7
  100. package/index.js +0 -2
@@ -0,0 +1,550 @@
1
+ /**
2
+ * Main NotebookLM Client
3
+ * Provides high-level interface for NotebookLM operations
4
+ */
5
+ import { RPCClient } from '../rpc/rpc-client.js';
6
+ import { NotebooksService } from '../services/notebooks.js';
7
+ import { SourcesService } from '../services/sources.js';
8
+ import { NotesService } from '../services/notes.js';
9
+ import { ArtifactsService } from '../services/artifacts.js';
10
+ import { GenerationService } from '../services/generation.js';
11
+ import { NotebookLanguageService } from '../services/notebook-language.js';
12
+ import { AutoRefreshManager, defaultAutoRefreshConfig } from '../auth/refresh.js';
13
+ import { getCredentials } from '../auth/auth.js';
14
+ import { QuotaManager } from '../utils/quota.js';
15
+ /**
16
+ * NotebookLM Client
17
+ *
18
+ * Main entry point for interacting with Google NotebookLM API.
19
+ * Provides a simple, organized interface to all NotebookLM features.
20
+ *
21
+ * **Features:**
22
+ * - **Notebooks:** Create, list, update, delete notebooks
23
+ * - **Sources:** Add URLs, text, files, YouTube videos, Google Drive files, web search
24
+ * - **Notes:** Create and manage notes within notebooks
25
+ * - **Artifacts:** Generate quizzes, flashcards, study guides, mind maps, infographics, slides, reports, audio, video
26
+ * - **Generation:** Chat with notebooks, generate guides, outlines, and reports
27
+ * - **Auto-Refresh:** Automatically keeps sessions alive (enabled by default)
28
+ * - **Quota Management:** Tracks and enforces NotebookLM usage limits
29
+ *
30
+ * **Usage:**
31
+ * ```typescript
32
+ * const sdk = new NotebookLMClient({
33
+ * authToken: process.env.NOTEBOOKLM_AUTH_TOKEN!,
34
+ * cookies: process.env.NOTEBOOKLM_COOKIES!,
35
+ * });
36
+ *
37
+ * // Access services
38
+ * const notebooks = await sdk.notebooks.list();
39
+ * const notebook = await sdk.notebooks.create({ title: 'My Research' });
40
+ * await sdk.sources.addFromURL(notebook.projectId, { url: 'https://example.com' });
41
+ * const response = await sdk.generation.chat(notebook.projectId, 'Summarize this');
42
+ * ```
43
+ *
44
+ * **Service Organization:**
45
+ * - `sdk.notebooks` - Notebook/project operations
46
+ * - `sdk.sources` - Source management (URLs, files, YouTube, Drive, web search)
47
+ * - `sdk.notes` - Note operations
48
+ * - `sdk.artifacts` - Artifact creation and management
49
+ * - `sdk.generation` - Chat and content generation
50
+ *
51
+ * **Auto-Refresh:**
52
+ * Credentials are automatically refreshed every 10 minutes (configurable) to keep sessions alive.
53
+ * Set `autoRefresh: false` to disable, or customize with `autoRefresh: { interval: 5 * 60 * 1000 }`.
54
+ *
55
+ * **Quota Management:**
56
+ * The SDK automatically tracks and enforces NotebookLM limits (100 notebooks, 50 chats/day, etc.).
57
+ * Use `sdk.getUsage()` to check current usage and `sdk.getRemaining('chats')` for remaining quota.
58
+ *
59
+ * **Cleanup:**
60
+ * Always call `sdk.dispose()` when done to stop auto-refresh and clean up resources.
61
+ */
62
+ export class NotebookLMClient {
63
+ rpcClient;
64
+ refreshManager;
65
+ quotaManager;
66
+ config;
67
+ credentials;
68
+ initialized = false;
69
+ _notebooks;
70
+ _sources;
71
+ _notes;
72
+ _artifacts;
73
+ _generation;
74
+ _notebookLanguage;
75
+ /**
76
+ * Notebook operations
77
+ * Create, list, get, update, delete notebooks
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * const notebooks = await sdk.notebooks.list();
82
+ * const notebook = await sdk.notebooks.create({ title: 'Research', emoji: '📚' });
83
+ * await sdk.notebooks.update(notebook.projectId, { title: 'Updated Title' });
84
+ * ```
85
+ */
86
+ get notebooks() {
87
+ if (!this._notebooks) {
88
+ throw new Error('SDK not initialized. Call await sdk.connect() first.');
89
+ }
90
+ return this._notebooks;
91
+ }
92
+ /**
93
+ * Source operations
94
+ * Add sources from URLs, text, files, YouTube, Google Drive, web search
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * await sdk.sources.addFromURL('notebook-id', { url: 'https://example.com' });
99
+ * await sdk.sources.addFromText('notebook-id', { title: 'Notes', content: '...' });
100
+ * await sdk.sources.addYouTube('notebook-id', { urlOrId: 'video-id' });
101
+ * ```
102
+ */
103
+ get sources() {
104
+ if (!this._sources) {
105
+ throw new Error('SDK not initialized. Call await sdk.connect() first.');
106
+ }
107
+ return this._sources;
108
+ }
109
+ /**
110
+ * Note operations
111
+ * Create, list, update, delete notes within notebooks
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * const notes = await sdk.notes.list('notebook-id');
116
+ * const note = await sdk.notes.create('notebook-id', { title: 'Note', content: '...' });
117
+ * ```
118
+ */
119
+ get notes() {
120
+ if (!this._notes) {
121
+ throw new Error('SDK not initialized. Call await sdk.connect() first.');
122
+ }
123
+ return this._notes;
124
+ }
125
+ /**
126
+ * Artifact operations
127
+ * Create and manage artifacts: quizzes, flashcards, study guides, mind maps,
128
+ * infographics, slide decks, reports, audio overviews, video overviews
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * const quiz = await sdk.artifacts.create('notebook-id', ArtifactType.QUIZ, {
133
+ * instructions: 'Create 10 questions',
134
+ * });
135
+ * const audio = await sdk.artifacts.create('notebook-id', ArtifactType.AUDIO, {
136
+ * instructions: 'Focus on key findings',
137
+ * });
138
+ * ```
139
+ */
140
+ get artifacts() {
141
+ if (!this._artifacts) {
142
+ throw new Error('SDK not initialized. Call await sdk.connect() first.');
143
+ }
144
+ return this._artifacts;
145
+ }
146
+ /**
147
+ * Generation operations
148
+ * Chat with notebooks, generate guides, outlines, reports
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * const response = await sdk.generation.chat('notebook-id', 'What are the key findings?');
153
+ * const guide = await sdk.generation.generateNotebookGuide('notebook-id');
154
+ * ```
155
+ */
156
+ get generation() {
157
+ if (!this._generation) {
158
+ throw new Error('SDK not initialized. Call await sdk.connect() first.');
159
+ }
160
+ return this._generation;
161
+ }
162
+ /**
163
+ * Notebook language operations
164
+ * Get and set the notebook's default output language
165
+ *
166
+ * The notebook's default output language is used as the default for:
167
+ * - Artifact creation (audio, video, report, infographics, slide decks)
168
+ * - Chat responses
169
+ * - All other notebook operations
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * import { NotebookLMLanguage } from 'notebooklm-kit';
174
+ *
175
+ * // Get current default language
176
+ * const language = await sdk.notebookLanguage.get('notebook-id');
177
+ *
178
+ * // Set default language to German
179
+ * await sdk.notebookLanguage.set('notebook-id', NotebookLMLanguage.GERMAN);
180
+ *
181
+ * // Now all artifacts will default to German unless overridden
182
+ * const quiz = await sdk.artifacts.create('notebook-id', ArtifactType.QUIZ, {
183
+ * // language will default to German
184
+ * });
185
+ * ```
186
+ */
187
+ get notebookLanguage() {
188
+ if (!this._notebookLanguage) {
189
+ throw new Error('SDK not initialized. Call await sdk.connect() first.');
190
+ }
191
+ return this._notebookLanguage;
192
+ }
193
+ /**
194
+ * Create a new NotebookLM client
195
+ *
196
+ * **Auto-Refresh Configuration:**
197
+ *
198
+ * The SDK automatically keeps your session alive by refreshing credentials periodically.
199
+ * This prevents session expiration during long-running operations.
200
+ *
201
+ * - **Default behavior:** Auto-refresh is enabled by default with a 10-minute interval
202
+ * - **Custom interval:** Set `autoRefresh: { enabled: true, interval: 5 * 60 * 1000 }` for 5 minutes
203
+ * - **Disable:** Set `autoRefresh: false` to disable automatic refresh
204
+ * - **Initial refresh:** Credentials are refreshed immediately when the client is created
205
+ * - **Background refresh:** Subsequent refreshes happen automatically at the configured interval
206
+ *
207
+ * **Refresh Intervals:**
208
+ * - Recommended: 5-10 minutes (300,000 - 600,000 ms)
209
+ * - Minimum: 1 minute (60,000 ms) - not recommended as it may be too frequent
210
+ * - Maximum: 30 minutes (1,800,000 ms) - sessions may expire before refresh
211
+ *
212
+ * **Example configurations:**
213
+ * ```typescript
214
+ * // Default: Auto-refresh enabled, 10-minute interval
215
+ * const client = new NotebookLMClient({
216
+ * authToken: '...',
217
+ * cookies: '...',
218
+ * });
219
+ *
220
+ * // Custom 5-minute interval
221
+ * const client = new NotebookLMClient({
222
+ * authToken: '...',
223
+ * cookies: '...',
224
+ * autoRefresh: {
225
+ * enabled: true,
226
+ * interval: 5 * 60 * 1000, // 5 minutes
227
+ * },
228
+ * });
229
+ *
230
+ * // Disable auto-refresh
231
+ * const client = new NotebookLMClient({
232
+ * authToken: '...',
233
+ * cookies: '...',
234
+ * autoRefresh: false,
235
+ * });
236
+ * ```
237
+ *
238
+ * @param config - Client configuration
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * const client = new NotebookLMClient({
243
+ * authToken: process.env.NOTEBOOKLM_AUTH_TOKEN!,
244
+ * cookies: process.env.NOTEBOOKLM_COOKIES!,
245
+ * });
246
+ *
247
+ * const notebooks = await client.notebooks.list();
248
+ * ```
249
+ */
250
+ constructor(config = {}) {
251
+ // Auto-enable debug mode from environment variable if not explicitly set
252
+ // Supports: NOTEBOOKLM_DEBUG=true, DEBUG=true, or NODE_ENV=development
253
+ const envDebug = process.env.NOTEBOOKLM_DEBUG === 'true' ||
254
+ process.env.DEBUG === 'true' ||
255
+ process.env.NODE_ENV === 'development';
256
+ // Store config for lazy initialization
257
+ // If debug is not explicitly set in config, use environment variable
258
+ this.config = {
259
+ ...config,
260
+ debug: config.debug !== undefined ? config.debug : envDebug,
261
+ };
262
+ this.quotaManager = new QuotaManager(config.enforceQuotas === true, // Default to false
263
+ config.plan || 'standard' // Default to standard plan
264
+ );
265
+ // Services will be initialized when connect() is called
266
+ }
267
+ /**
268
+ * Connect / Initialize the client
269
+ * Loads credentials (from config, env, saved, or auto-login) and sets up services
270
+ * This must be called before using any services
271
+ *
272
+ * @example
273
+ * ```typescript
274
+ * const sdk = new NotebookLMClient({});
275
+ * await sdk.connect();
276
+ * const notebooks = await sdk.notebooks.list();
277
+ * ```
278
+ */
279
+ async connect() {
280
+ if (this.initialized) {
281
+ return;
282
+ }
283
+ // Get credentials (from config, env, saved, or auto-login)
284
+ const credentials = await getCredentials({
285
+ authToken: this.config.authToken,
286
+ cookies: this.config.cookies,
287
+ }, {
288
+ email: this.config.auth?.email,
289
+ password: this.config.auth?.password,
290
+ headless: this.config.auth?.headless ?? true,
291
+ debug: this.config.debug,
292
+ });
293
+ this.credentials = credentials;
294
+ // Create RPC client with credentials
295
+ this.rpcClient = new RPCClient({
296
+ authToken: credentials.authToken,
297
+ cookies: credentials.cookies,
298
+ debug: this.config.debug,
299
+ authUser: this.config.authUser,
300
+ headers: this.config.headers,
301
+ urlParams: this.config.urlParams,
302
+ maxRetries: this.config.maxRetries,
303
+ retryDelay: this.config.retryDelay,
304
+ retryMaxDelay: this.config.retryMaxDelay,
305
+ });
306
+ // Create services
307
+ this._notebooks = new NotebooksService(this.rpcClient, this.quotaManager);
308
+ this._sources = new SourcesService(this.rpcClient, this.quotaManager);
309
+ this._notes = new NotesService(this.rpcClient, this.quotaManager);
310
+ this._artifacts = new ArtifactsService(this.rpcClient, this.quotaManager);
311
+ this._generation = new GenerationService(this.rpcClient, this.quotaManager);
312
+ this._notebookLanguage = new NotebookLanguageService(this.rpcClient);
313
+ // Setup auto-refresh if enabled
314
+ if (this.config.autoRefresh !== false) {
315
+ const autoRefreshConfig = this.config.autoRefresh;
316
+ const refreshConfig = typeof autoRefreshConfig === 'boolean' || autoRefreshConfig === undefined
317
+ ? defaultAutoRefreshConfig()
318
+ : {
319
+ enabled: autoRefreshConfig.enabled !== false,
320
+ strategy: autoRefreshConfig.strategy || 'auto',
321
+ interval: autoRefreshConfig.interval || 10 * 60 * 1000,
322
+ refreshAhead: autoRefreshConfig.refreshAhead || 5 * 60 * 1000,
323
+ checkInterval: autoRefreshConfig.checkInterval || 60 * 1000,
324
+ gsessionId: autoRefreshConfig.gsessionId,
325
+ authToken: credentials.authToken,
326
+ debug: this.config.debug,
327
+ onCredentialsUpdate: (updated) => {
328
+ // Update credentials and RPC client when refreshed
329
+ this.credentials = updated;
330
+ if (this.rpcClient) {
331
+ this.rpcClient.updateCookies(updated.cookies);
332
+ }
333
+ },
334
+ };
335
+ this.refreshManager = new AutoRefreshManager(credentials.cookies, refreshConfig);
336
+ // Start auto-refresh asynchronously
337
+ this.refreshManager.start().catch(error => {
338
+ if (this.config.debug) {
339
+ console.error('Failed to start auto-refresh:', error.message);
340
+ }
341
+ });
342
+ }
343
+ this.initialized = true;
344
+ }
345
+ /**
346
+ * Ensure client is connected (called before operations)
347
+ */
348
+ async ensureConnected() {
349
+ if (!this.initialized) {
350
+ await this.connect();
351
+ }
352
+ }
353
+ /**
354
+ * Get RPC client (ensures connection)
355
+ */
356
+ async getRPCClientInternal() {
357
+ await this.ensureConnected();
358
+ if (!this.rpcClient) {
359
+ throw new Error('RPC client not initialized');
360
+ }
361
+ return this.rpcClient;
362
+ }
363
+ // ========================================================================
364
+ // Advanced Access Methods
365
+ // ========================================================================
366
+ /**
367
+ * Get the underlying RPC client
368
+ * For advanced use cases where you need direct RPC access
369
+ *
370
+ * @returns The RPC client instance
371
+ */
372
+ async getRPCClient() {
373
+ return this.getRPCClientInternal();
374
+ }
375
+ /**
376
+ * Execute a raw RPC call
377
+ * For advanced use cases where you need to call an RPC method directly
378
+ *
379
+ * @param rpcId - The RPC method ID (e.g., from RPCMethods)
380
+ * @param args - Arguments for the RPC call
381
+ * @param notebookId - Optional notebook ID for context
382
+ * @returns The RPC response
383
+ *
384
+ * @example
385
+ * ```typescript
386
+ * import { RPCMethods } from 'notebooklm-kit';
387
+ *
388
+ * const response = await sdk.rpc(
389
+ * RPCMethods.RPC_LIST_PROJECTS,
390
+ * []
391
+ * );
392
+ * ```
393
+ */
394
+ async rpc(rpcId, args, notebookId) {
395
+ const rpc = await this.getRPCClientInternal();
396
+ return rpc.call(rpcId, args, notebookId);
397
+ }
398
+ // ========================================================================
399
+ // Auto-Refresh Methods
400
+ // ========================================================================
401
+ /**
402
+ * Get the refresh manager (if auto-refresh is enabled)
403
+ *
404
+ * @returns The auto-refresh manager, or undefined if disabled
405
+ */
406
+ getRefreshManager() {
407
+ return this.refreshManager;
408
+ }
409
+ /**
410
+ * Manually refresh credentials
411
+ * Useful for keeping long-running sessions alive or testing refresh functionality
412
+ *
413
+ * @throws Error if auto-refresh is not enabled
414
+ *
415
+ * @example
416
+ * ```typescript
417
+ * // Manual refresh
418
+ * await sdk.refreshCredentials();
419
+ *
420
+ * // Check if refresh is running
421
+ * const manager = sdk.getRefreshManager();
422
+ * if (manager?.isRunning()) {
423
+ * console.log('Auto-refresh is active');
424
+ * }
425
+ * ```
426
+ */
427
+ async refreshCredentials() {
428
+ if (this.refreshManager) {
429
+ await this.refreshManager.refresh();
430
+ }
431
+ else {
432
+ throw new Error('Auto-refresh not enabled. Set autoRefresh: true in config.');
433
+ }
434
+ }
435
+ // ========================================================================
436
+ // Quota Management Methods
437
+ // ========================================================================
438
+ /**
439
+ * Get quota manager
440
+ * For advanced quota management and custom tracking
441
+ *
442
+ * @returns The quota manager instance
443
+ */
444
+ getQuotaManager() {
445
+ return this.quotaManager;
446
+ }
447
+ /**
448
+ * Get current usage statistics
449
+ * Returns daily and monthly usage for all tracked resources
450
+ *
451
+ * @returns Usage data including daily chats, audio, video, artifacts, etc.
452
+ *
453
+ * @example
454
+ * ```typescript
455
+ * const usage = sdk.getUsage();
456
+ * console.log(`Chats: ${usage.daily.chats}/50`);
457
+ * console.log(`Audio: ${usage.daily.audioOverviews}/3`);
458
+ * console.log(`Video: ${usage.daily.videoOverviews}/3`);
459
+ * console.log(`Quizzes: ${usage.daily.quizzes}/10`);
460
+ * console.log(`Flashcards: ${usage.daily.flashcards}/10`);
461
+ * console.log(`Reports: ${usage.daily.reports}/10`);
462
+ * console.log(`Notebooks: ${usage.notebooks.total}/100`);
463
+ * ```
464
+ */
465
+ getUsage() {
466
+ return this.quotaManager.getUsage();
467
+ }
468
+ /**
469
+ * Get remaining quota for a resource
470
+ *
471
+ * @param resource - Resource name: 'chats', 'audioOverviews', 'videoOverviews',
472
+ * 'quizzes', 'flashcards', 'reports', 'createNotebook', etc.
473
+ * @returns Number of remaining uses for the resource
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * const remainingChats = sdk.getRemaining('chats');
478
+ * const remainingAudio = sdk.getRemaining('audioOverviews');
479
+ *
480
+ * console.log(`${remainingChats} chats remaining today`);
481
+ * console.log(`${remainingAudio} audio overviews remaining today`);
482
+ *
483
+ * if (remainingChats === 0) {
484
+ * console.log('Daily chat limit reached');
485
+ * }
486
+ * ```
487
+ */
488
+ getRemaining(resource) {
489
+ return this.quotaManager.getRemaining(resource);
490
+ }
491
+ // ========================================================================
492
+ // Cleanup Methods
493
+ // ========================================================================
494
+ /**
495
+ * Dispose of the client and stop auto-refresh
496
+ * Call this when you're done with the client to clean up resources.
497
+ * This stops the background auto-refresh timer.
498
+ *
499
+ * @example
500
+ * ```typescript
501
+ * const sdk = new NotebookLMClient({ ... });
502
+ * await sdk.connect();
503
+ *
504
+ * // Use the client...
505
+ * await sdk.notebooks.list();
506
+ *
507
+ * // Clean up when done
508
+ * sdk.dispose();
509
+ * ```
510
+ */
511
+ dispose() {
512
+ if (this.refreshManager) {
513
+ this.refreshManager.stop();
514
+ this.refreshManager = undefined;
515
+ }
516
+ this.initialized = false;
517
+ }
518
+ }
519
+ /**
520
+ * Create a NotebookLM client with environment variables
521
+ * Reads NOTEBOOKLM_AUTH_TOKEN and NOTEBOOKLM_COOKIES from environment
522
+ * Note: Only works in Node.js environment
523
+ *
524
+ * @example
525
+ * ```typescript
526
+ * const client = createNotebookLMClient();
527
+ * const notebooks = await client.notebooks.list();
528
+ * ```
529
+ */
530
+ export function createNotebookLMClient(config) {
531
+ // Safe access to process.env for Node.js environments
532
+ const getEnv = (key) => {
533
+ try {
534
+ // Use globalThis to safely access process in Node.js
535
+ const proc = globalThis.process;
536
+ return proc?.env?.[key] || '';
537
+ }
538
+ catch {
539
+ return '';
540
+ }
541
+ };
542
+ const authToken = config?.authToken || getEnv('NOTEBOOKLM_AUTH_TOKEN');
543
+ const cookies = config?.cookies || getEnv('NOTEBOOKLM_COOKIES');
544
+ return new NotebookLMClient({
545
+ authToken,
546
+ cookies,
547
+ ...config,
548
+ });
549
+ }
550
+ //# sourceMappingURL=notebooklm-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebooklm-client.js","sourceRoot":"","sources":["../../../src/client/notebooklm-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * NotebookLM Kit - TypeScript SDK for NotebookLM API
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export { NotebookLMClient, createNotebookLMClient } from './client/notebooklm-client.js';
7
+ export { NotebooksService } from './services/notebooks.js';
8
+ export { SourcesService } from './services/sources.js';
9
+ export { NotesService } from './services/notes.js';
10
+ export { ArtifactsService } from './services/artifacts.js';
11
+ export { GenerationService } from './services/generation.js';
12
+ export { NotebookLanguageService } from './services/notebook-language.js';
13
+ export type { NotebookLanguageInfo } from './services/notebook-language.js';
14
+ export { fetchQuizData } from './services/artifacts.js';
15
+ export { fetchFlashcardData } from './services/artifacts.js';
16
+ export type { ParsedFlashcardData } from './services/artifacts.js';
17
+ export { downloadAudioFile } from './services/artifacts.js';
18
+ export { downloadSlidesFile } from './services/artifacts.js';
19
+ export { createReport, reportToDocs, reportToSheets, getReportContent, formatReportAsMarkdown, formatReportAsText, formatReportAsHTML, formatReportAsJSON, } from './services/artifacts.js';
20
+ export type { CreateReportOptions, ReportContent } from './services/artifacts.js';
21
+ export { fetchInfographic } from './services/artifacts.js';
22
+ export type { InfographicImageData, FetchInfographicOptions } from './services/artifacts.js';
23
+ export type { NotebookLMConfig, RPCCall, RPCResponse, BatchExecuteConfig, } from './types/common.js';
24
+ export { NotebookLMError, NotebookLMAuthError, NotebookLMNetworkError, NotebookLMParseError, } from './types/common.js';
25
+ export type { Notebook, CreateNotebookOptions, UpdateNotebookOptions, SharingSettings, ShareNotebookOptions, ShareNotebookResult, DeleteNotebookResult, } from './types/notebook.js';
26
+ export type { Source, SourceInput, AddSourceFromURLOptions, AddSourceFromTextOptions, AddSourceFromFileOptions, SourceProcessingStatus, SourceContent, SourceFreshness, DiscoveredSource, DiscoveredWebSource, DiscoveredDriveSource, SearchWebSourcesOptions, AddDiscoveredSourcesOptions, AddGoogleDriveSourceOptions, AddYouTubeSourceOptions, BatchAddSourcesOptions, SearchWebAndWaitOptions, WebSearchResult, } from './types/source.js';
27
+ export { ResearchMode, SearchSourceType } from './types/source.js';
28
+ export { SourceType, SourceStatus, } from './types/source.js';
29
+ export type { Note, CreateNoteOptions, UpdateNoteOptions, } from './types/note.js';
30
+ export { NoteType, } from './types/note.js';
31
+ export type { AudioOverview, CreateAudioOverviewOptions, ShareAudioResult, } from './services/artifacts.js';
32
+ export { ShareOption, } from './services/artifacts.js';
33
+ export { NotebookLMLanguage, getLanguageInfo, isLanguageSupported, getSupportedLanguages, COMMON_LANGUAGES, type LanguageInfo, } from './types/languages.js';
34
+ export type { VideoOverview, CreateVideoOverviewOptions, } from './services/artifacts.js';
35
+ export type { GetVideoOptions, } from './services/artifacts.js';
36
+ export type { Artifact, CreateArtifactOptions, QuizData, FlashcardData, AudioArtifact, VideoArtifact, } from './types/artifact.js';
37
+ export { ArtifactType, ArtifactState, } from './types/artifact.js';
38
+ export * as RPCMethods from './rpc/rpc-methods.js';
39
+ export { RPCClient } from './rpc/rpc-client.js';
40
+ export type { RPCClientConfig } from './rpc/rpc-client.js';
41
+ export { BatchExecuteClient } from './utils/batch-execute.js';
42
+ export { ErrorType, APIError, getErrorCode, isErrorResponse, addErrorCode, listErrorCodes, } from './utils/errors.js';
43
+ export type { ErrorCode } from './utils/errors.js';
44
+ export { getCredentials, autoLogin, saveCredentials, loadCredentials, deleteCredentials, } from './auth/auth.js';
45
+ export type { Credentials, AuthConfig } from './auth/auth.js';
46
+ export { RefreshClient, AutoRefreshManager, extractGSessionId, parseAuthToken, defaultAutoRefreshConfig, } from './auth/refresh.js';
47
+ export type { AutoRefreshConfig } from './auth/refresh.js';
48
+ export { QuotaManager, RateLimitError, validateTextSource, validateFileSize, NOTEBOOKLM_LIMITS, PLAN_LIMITS, } from './utils/quota.js';
49
+ export type { UsageData, NotebookLMPlan, PlanLimits } from './utils/quota.js';
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * NotebookLM Kit - TypeScript SDK for NotebookLM API
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ // Main client
7
+ export { NotebookLMClient, createNotebookLMClient } from './client/notebooklm-client.js';
8
+ // Services
9
+ export { NotebooksService } from './services/notebooks.js';
10
+ export { SourcesService } from './services/sources.js';
11
+ export { NotesService } from './services/notes.js';
12
+ export { ArtifactsService } from './services/artifacts.js';
13
+ export { GenerationService } from './services/generation.js';
14
+ export { NotebookLanguageService } from './services/notebook-language.js';
15
+ // Artifact functions are now in ArtifactsService - use artifacts.get() or artifacts.download() instead
16
+ // Legacy exports below are kept for backward compatibility but will be removed
17
+ export { fetchQuizData } from './services/artifacts.js';
18
+ export { fetchFlashcardData } from './services/artifacts.js';
19
+ export { downloadAudioFile } from './services/artifacts.js';
20
+ export { downloadSlidesFile } from './services/artifacts.js';
21
+ export { createReport, reportToDocs, reportToSheets, getReportContent, formatReportAsMarkdown, formatReportAsText, formatReportAsHTML, formatReportAsJSON, } from './services/artifacts.js';
22
+ export { fetchInfographic } from './services/artifacts.js';
23
+ export { NotebookLMError, NotebookLMAuthError, NotebookLMNetworkError, NotebookLMParseError, } from './types/common.js';
24
+ export { ResearchMode, SearchSourceType } from './types/source.js';
25
+ export { SourceType, SourceStatus, } from './types/source.js';
26
+ export { NoteType, } from './types/note.js';
27
+ export { ShareOption, } from './services/artifacts.js';
28
+ // Legacy exports removed - use ArtifactState from artifacts.ts and NotebookLMLanguage from languages.js instead
29
+ // Language support
30
+ export { NotebookLMLanguage, getLanguageInfo, isLanguageSupported, getSupportedLanguages, COMMON_LANGUAGES, } from './types/languages.js';
31
+ export { ArtifactType, ArtifactState, } from './types/artifact.js';
32
+ // RPC methods (for advanced use)
33
+ export * as RPCMethods from './rpc/rpc-methods.js';
34
+ // RPC client (for advanced use)
35
+ export { RPCClient } from './rpc/rpc-client.js';
36
+ // Batch execute client (for advanced use)
37
+ export { BatchExecuteClient } from './utils/batch-execute.js';
38
+ // Error utilities (for advanced use)
39
+ export { ErrorType, APIError, getErrorCode, isErrorResponse, addErrorCode, listErrorCodes, } from './utils/errors.js';
40
+ // Auth utilities (auto-login and credential refresh)
41
+ export { getCredentials, autoLogin, saveCredentials, loadCredentials, deleteCredentials, } from './auth/auth.js';
42
+ export { RefreshClient, AutoRefreshManager, extractGSessionId, parseAuthToken, defaultAutoRefreshConfig, } from './auth/refresh.js';
43
+ // Quota management
44
+ export { QuotaManager, RateLimitError, validateTextSource, validateFileSize, NOTEBOOKLM_LIMITS, PLAN_LIMITS, } from './utils/quota.js';
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc;AACd,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,uGAAuG;AACvG,+EAA+E;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAW3D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAgC3B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EACL,UAAU,EACV,YAAY,GACb,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EACL,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EACL,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,gHAAgH;AAEhH,mBAAmB;AACnB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AA0B9B,OAAO,EACL,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,iCAAiC;AACjC,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AAEnD,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,0CAA0C;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,qCAAqC;AACrC,OAAO,EACL,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,qDAAqD;AACrD,OAAO,EACL,cAAc,EACd,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,kBAAkB,CAAC"}