10x-chat 0.2.3 → 0.3.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 (93) hide show
  1. package/dist/core/bundle.d.ts.map +1 -1
  2. package/dist/core/bundle.js +0 -2
  3. package/dist/core/bundle.js.map +1 -1
  4. package/dist/notebooklm/api/artifacts.d.ts +60 -0
  5. package/dist/notebooklm/api/artifacts.d.ts.map +1 -0
  6. package/dist/notebooklm/api/artifacts.js +1246 -0
  7. package/dist/notebooklm/api/artifacts.js.map +1 -0
  8. package/dist/notebooklm/api/chat.d.ts +21 -0
  9. package/dist/notebooklm/api/chat.d.ts.map +1 -0
  10. package/dist/notebooklm/api/chat.js +353 -0
  11. package/dist/notebooklm/api/chat.js.map +1 -0
  12. package/dist/notebooklm/api/notebooks.d.ts +22 -0
  13. package/dist/notebooklm/api/notebooks.d.ts.map +1 -0
  14. package/dist/notebooklm/api/notebooks.js +109 -0
  15. package/dist/notebooklm/api/notebooks.js.map +1 -0
  16. package/dist/notebooklm/api/notes.d.ts +18 -0
  17. package/dist/notebooklm/api/notes.d.ts.map +1 -0
  18. package/dist/notebooklm/api/notes.js +140 -0
  19. package/dist/notebooklm/api/notes.js.map +1 -0
  20. package/dist/notebooklm/api/research.d.ts +12 -0
  21. package/dist/notebooklm/api/research.d.ts.map +1 -0
  22. package/dist/notebooklm/api/research.js +168 -0
  23. package/dist/notebooklm/api/research.js.map +1 -0
  24. package/dist/notebooklm/api/settings.d.ts +11 -0
  25. package/dist/notebooklm/api/settings.d.ts.map +1 -0
  26. package/dist/notebooklm/api/settings.js +55 -0
  27. package/dist/notebooklm/api/settings.js.map +1 -0
  28. package/dist/notebooklm/api/sharing.d.ts +14 -0
  29. package/dist/notebooklm/api/sharing.d.ts.map +1 -0
  30. package/dist/notebooklm/api/sharing.js +70 -0
  31. package/dist/notebooklm/api/sharing.js.map +1 -0
  32. package/dist/notebooklm/api/sources.d.ts +34 -0
  33. package/dist/notebooklm/api/sources.d.ts.map +1 -0
  34. package/dist/notebooklm/api/sources.js +539 -0
  35. package/dist/notebooklm/api/sources.js.map +1 -0
  36. package/dist/notebooklm/auth.d.ts +30 -0
  37. package/dist/notebooklm/auth.d.ts.map +1 -0
  38. package/dist/notebooklm/auth.js +265 -0
  39. package/dist/notebooklm/auth.js.map +1 -0
  40. package/dist/notebooklm/client.d.ts +29 -0
  41. package/dist/notebooklm/client.d.ts.map +1 -0
  42. package/dist/notebooklm/client.js +94 -0
  43. package/dist/notebooklm/client.js.map +1 -0
  44. package/dist/notebooklm/core.d.ts +52 -0
  45. package/dist/notebooklm/core.d.ts.map +1 -0
  46. package/dist/notebooklm/core.js +330 -0
  47. package/dist/notebooklm/core.js.map +1 -0
  48. package/dist/notebooklm/errors.d.ts +189 -0
  49. package/dist/notebooklm/errors.d.ts.map +1 -0
  50. package/dist/notebooklm/errors.js +325 -0
  51. package/dist/notebooklm/errors.js.map +1 -0
  52. package/dist/notebooklm/index.d.ts +16 -0
  53. package/dist/notebooklm/index.d.ts.map +1 -0
  54. package/dist/notebooklm/index.js +16 -0
  55. package/dist/notebooklm/index.js.map +1 -0
  56. package/dist/notebooklm/paths.d.ts +12 -0
  57. package/dist/notebooklm/paths.d.ts.map +1 -0
  58. package/dist/notebooklm/paths.js +49 -0
  59. package/dist/notebooklm/paths.js.map +1 -0
  60. package/dist/notebooklm/rpc/decoder.d.ts +8 -0
  61. package/dist/notebooklm/rpc/decoder.d.ts.map +1 -0
  62. package/dist/notebooklm/rpc/decoder.js +182 -0
  63. package/dist/notebooklm/rpc/decoder.js.map +1 -0
  64. package/dist/notebooklm/rpc/encoder.d.ts +12 -0
  65. package/dist/notebooklm/rpc/encoder.d.ts.map +1 -0
  66. package/dist/notebooklm/rpc/encoder.js +36 -0
  67. package/dist/notebooklm/rpc/encoder.js.map +1 -0
  68. package/dist/notebooklm/rpc/index.d.ts +4 -0
  69. package/dist/notebooklm/rpc/index.d.ts.map +1 -0
  70. package/dist/notebooklm/rpc/index.js +4 -0
  71. package/dist/notebooklm/rpc/index.js.map +1 -0
  72. package/dist/notebooklm/rpc/types.d.ts +168 -0
  73. package/dist/notebooklm/rpc/types.d.ts.map +1 -0
  74. package/dist/notebooklm/rpc/types.js +206 -0
  75. package/dist/notebooklm/rpc/types.js.map +1 -0
  76. package/dist/notebooklm/types.d.ts +220 -0
  77. package/dist/notebooklm/types.d.ts.map +1 -0
  78. package/dist/notebooklm/types.js +488 -0
  79. package/dist/notebooklm/types.js.map +1 -0
  80. package/dist/providers/index.d.ts +1 -0
  81. package/dist/providers/index.d.ts.map +1 -1
  82. package/dist/providers/index.js +1 -0
  83. package/dist/providers/index.js.map +1 -1
  84. package/dist/providers/notebooklm.d.ts +4 -0
  85. package/dist/providers/notebooklm.d.ts.map +1 -0
  86. package/dist/providers/notebooklm.js +98 -0
  87. package/dist/providers/notebooklm.js.map +1 -0
  88. package/dist/providers/registry.d.ts.map +1 -1
  89. package/dist/providers/registry.js +2 -0
  90. package/dist/providers/registry.js.map +1 -1
  91. package/dist/types.d.ts +1 -1
  92. package/dist/types.d.ts.map +1 -1
  93. package/package.json +1 -1
@@ -0,0 +1,539 @@
1
+ import { createReadStream } from 'node:fs';
2
+ import { stat } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { setTimeout as sleep } from 'node:timers/promises';
5
+ import { RPCError, SourceAddError, SourceNotFoundError, SourceProcessingError, SourceTimeoutError, ValidationError, } from '../errors.js';
6
+ import { RPCMethod, SourceStatus, UPLOAD_URL } from '../rpc/types.js';
7
+ import { createSourceFulltext, Source, } from '../types.js';
8
+ function isYouTubeUrl(url) {
9
+ try {
10
+ const hostname = new URL(url).hostname.toLowerCase();
11
+ return (hostname === 'youtube.com' || hostname.endsWith('.youtube.com') || hostname === 'youtu.be');
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ async function fetchWithTimeout(url, init, timeoutMs) {
18
+ const controller = new AbortController();
19
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
20
+ try {
21
+ return await fetch(url, {
22
+ ...init,
23
+ signal: controller.signal,
24
+ });
25
+ }
26
+ finally {
27
+ clearTimeout(timer);
28
+ }
29
+ }
30
+ export class SourcesAPI {
31
+ core;
32
+ constructor(core) {
33
+ this.core = core;
34
+ }
35
+ async list(notebookId) {
36
+ const params = [notebookId, null, [2], null, 0];
37
+ const notebook = await this.core.rpcCall(RPCMethod.GET_NOTEBOOK, params, `/notebook/${notebookId}`);
38
+ if (!Array.isArray(notebook) || notebook.length === 0) {
39
+ console.warn(`Empty or invalid notebook response when listing sources for ${notebookId} (API response structure may have changed)`);
40
+ return [];
41
+ }
42
+ const notebookInfo = notebook[0];
43
+ if (!Array.isArray(notebookInfo) || notebookInfo.length <= 1) {
44
+ console.warn(`Unexpected notebook structure for ${notebookId}: expected list with sources at index 1 (API structure may have changed)`);
45
+ return [];
46
+ }
47
+ const sourcesList = notebookInfo[1];
48
+ if (!Array.isArray(sourcesList)) {
49
+ console.warn(`Sources data for ${notebookId} is not a list (type=${typeof sourcesList}), returning empty list (API structure may have changed)`);
50
+ return [];
51
+ }
52
+ const sources = [];
53
+ for (const src of sourcesList) {
54
+ if (!Array.isArray(src) || src.length === 0) {
55
+ continue;
56
+ }
57
+ const sourceIdRaw = Array.isArray(src[0]) ? src[0][0] : src[0];
58
+ const sourceId = typeof sourceIdRaw === 'string' ? sourceIdRaw : String(sourceIdRaw ?? '');
59
+ const title = typeof src[1] === 'string' ? src[1] : null;
60
+ let url = null;
61
+ if (Array.isArray(src[2]) &&
62
+ src[2].length > 7 &&
63
+ Array.isArray(src[2][7]) &&
64
+ src[2][7].length > 0) {
65
+ url = typeof src[2][7][0] === 'string' ? src[2][7][0] : null;
66
+ }
67
+ let createdAt = null;
68
+ if (Array.isArray(src[2]) &&
69
+ src[2].length > 2 &&
70
+ Array.isArray(src[2][2]) &&
71
+ src[2][2].length > 0) {
72
+ const ts = src[2][2][0];
73
+ if (typeof ts === 'number') {
74
+ createdAt = new Date(ts * 1000);
75
+ }
76
+ }
77
+ let status = SourceStatus.READY;
78
+ if (Array.isArray(src[3]) && src[3].length > 1) {
79
+ const statusCode = src[3][1];
80
+ if (statusCode === SourceStatus.PROCESSING ||
81
+ statusCode === SourceStatus.READY ||
82
+ statusCode === SourceStatus.ERROR ||
83
+ statusCode === SourceStatus.PREPARING) {
84
+ status = statusCode;
85
+ }
86
+ }
87
+ let typeCode = null;
88
+ if (Array.isArray(src[2]) && src[2].length > 4 && typeof src[2][4] === 'number') {
89
+ typeCode = src[2][4];
90
+ }
91
+ sources.push(Source.fromApiResponse([
92
+ [sourceId],
93
+ title,
94
+ [null, null, null, null, typeCode, null, null, url ? [url] : []],
95
+ [null, status],
96
+ ]));
97
+ const last = sources[sources.length - 1];
98
+ // Preserve created timestamp from list() path where it is available.
99
+ if (last) {
100
+ last.createdAt = createdAt;
101
+ last.status = status;
102
+ last.isReady = status === SourceStatus.READY;
103
+ last.isProcessing = status === SourceStatus.PROCESSING;
104
+ last.isError = status === SourceStatus.ERROR;
105
+ }
106
+ }
107
+ return sources;
108
+ }
109
+ async get(notebookId, sourceId) {
110
+ const sources = await this.list(notebookId);
111
+ return sources.find((source) => source.id === sourceId) ?? null;
112
+ }
113
+ async waitUntilReady(notebookId, sourceId, timeout = 120, initialInterval = 1, maxInterval = 10, backoffFactor = 1.5) {
114
+ const start = performance.now();
115
+ let interval = initialInterval;
116
+ let lastStatus = null;
117
+ while (true) {
118
+ const elapsed = (performance.now() - start) / 1000;
119
+ if (elapsed >= timeout) {
120
+ throw new SourceTimeoutError(sourceId, timeout, lastStatus);
121
+ }
122
+ const source = await this.get(notebookId, sourceId);
123
+ if (!source) {
124
+ throw new SourceNotFoundError(sourceId);
125
+ }
126
+ lastStatus = source.status;
127
+ if (source.isReady) {
128
+ return source;
129
+ }
130
+ if (source.isError) {
131
+ throw new SourceProcessingError(sourceId, source.status);
132
+ }
133
+ const remaining = timeout - (performance.now() - start) / 1000;
134
+ if (remaining <= 0) {
135
+ throw new SourceTimeoutError(sourceId, timeout, lastStatus);
136
+ }
137
+ const sleepTime = Math.min(interval, remaining);
138
+ await sleep(Math.max(1, Math.floor(sleepTime * 1000)));
139
+ interval = Math.min(interval * backoffFactor, maxInterval);
140
+ }
141
+ }
142
+ async waitForSources(notebookId, sourceIds, timeout = 120, opts = {}) {
143
+ const tasks = sourceIds.map((sourceId) => this.waitUntilReady(notebookId, sourceId, timeout, opts.initialInterval, opts.maxInterval, opts.backoffFactor));
144
+ return Promise.all(tasks);
145
+ }
146
+ async addUrl(notebookId, url, wait = false, waitTimeout = 120) {
147
+ console.debug(`Adding URL source to notebook ${notebookId}: ${url.slice(0, 80)}`);
148
+ const videoId = this.extractYouTubeVideoId(url);
149
+ let result;
150
+ try {
151
+ if (videoId) {
152
+ result = await this.addYouTubeSource(notebookId, url);
153
+ }
154
+ else {
155
+ if (isYouTubeUrl(url)) {
156
+ console.warn(`URL appears to be YouTube but no video ID found: ${url.slice(0, 100)}. Adding as web page.`);
157
+ }
158
+ result = await this.addUrlSource(notebookId, url);
159
+ }
160
+ }
161
+ catch (error) {
162
+ if (error instanceof RPCError) {
163
+ throw new SourceAddError(url, { cause: error });
164
+ }
165
+ throw error;
166
+ }
167
+ if (!Array.isArray(result)) {
168
+ throw new SourceAddError(url, { message: `API returned no data for URL: ${url}` });
169
+ }
170
+ const source = Source.fromApiResponse(result);
171
+ if (wait) {
172
+ return this.waitUntilReady(notebookId, source.id, waitTimeout);
173
+ }
174
+ return source;
175
+ }
176
+ async addText(notebookId, title, content, wait = false, waitTimeout = 120) {
177
+ console.debug(`Adding text source to notebook ${notebookId}: ${title}`);
178
+ const params = [
179
+ [[null, [title, content], null, null, null, null, null, null]],
180
+ notebookId,
181
+ [2],
182
+ null,
183
+ null,
184
+ ];
185
+ let result;
186
+ try {
187
+ result = await this.core.rpcCall(RPCMethod.ADD_SOURCE, params, `/notebook/${notebookId}`);
188
+ }
189
+ catch (error) {
190
+ if (error instanceof RPCError) {
191
+ throw new SourceAddError(title, {
192
+ cause: error,
193
+ message: `Failed to add text source '${title}'`,
194
+ });
195
+ }
196
+ throw error;
197
+ }
198
+ if (!Array.isArray(result)) {
199
+ throw new SourceAddError(title, {
200
+ message: `API returned no data for text source: ${title}`,
201
+ });
202
+ }
203
+ const source = Source.fromApiResponse(result);
204
+ if (wait) {
205
+ return this.waitUntilReady(notebookId, source.id, waitTimeout);
206
+ }
207
+ return source;
208
+ }
209
+ async addFile(notebookId, filePath, _mimeType, wait = false, waitTimeout = 120) {
210
+ console.debug(`Adding file source to notebook ${notebookId}: ${filePath}`);
211
+ const resolved = path.resolve(filePath);
212
+ let fileInfo;
213
+ try {
214
+ fileInfo = await stat(resolved);
215
+ }
216
+ catch {
217
+ throw new Error(`File not found: ${resolved}`);
218
+ }
219
+ if (!fileInfo.isFile()) {
220
+ throw new ValidationError(`Not a regular file: ${resolved}`);
221
+ }
222
+ const filename = path.basename(resolved);
223
+ const fileSize = fileInfo.size;
224
+ const sourceId = await this.registerFileSource(notebookId, filename);
225
+ const uploadUrl = await this.startResumableUpload(notebookId, filename, fileSize, sourceId);
226
+ await this.uploadFileStreaming(uploadUrl, resolved);
227
+ const source = {
228
+ id: sourceId,
229
+ title: filename,
230
+ url: null,
231
+ typeCode: null,
232
+ createdAt: null,
233
+ status: SourceStatus.READY,
234
+ kind: Source.fromApiResponse([sourceId, filename]).kind,
235
+ sourceType: Source.fromApiResponse([sourceId, filename]).sourceType,
236
+ isReady: true,
237
+ isProcessing: false,
238
+ isError: false,
239
+ };
240
+ if (wait) {
241
+ return this.waitUntilReady(notebookId, source.id, waitTimeout);
242
+ }
243
+ return source;
244
+ }
245
+ async addDrive(notebookId, fileId, title, mimeType = 'application/vnd.google-apps.document', wait = false, waitTimeout = 120) {
246
+ console.debug(`Adding Drive source to notebook ${notebookId}: ${title}`);
247
+ const sourceData = [
248
+ [fileId, mimeType, 1, title],
249
+ null,
250
+ null,
251
+ null,
252
+ null,
253
+ null,
254
+ null,
255
+ null,
256
+ null,
257
+ null,
258
+ 1,
259
+ ];
260
+ const params = [
261
+ [sourceData],
262
+ notebookId,
263
+ [2],
264
+ [1, null, null, null, null, null, null, null, null, null, [1]],
265
+ ];
266
+ const result = await this.core.rpcCall(RPCMethod.ADD_SOURCE, params, `/notebook/${notebookId}`, true);
267
+ const source = Source.fromApiResponse(Array.isArray(result) ? result : []);
268
+ if (wait) {
269
+ return this.waitUntilReady(notebookId, source.id, waitTimeout);
270
+ }
271
+ return source;
272
+ }
273
+ async delete(notebookId, sourceId) {
274
+ console.debug(`Deleting source ${sourceId} from notebook ${notebookId}`);
275
+ const params = [[[sourceId]]];
276
+ await this.core.rpcCall(RPCMethod.DELETE_SOURCE, params, `/notebook/${notebookId}`, true);
277
+ return true;
278
+ }
279
+ async rename(notebookId, sourceId, newTitle) {
280
+ console.debug(`Renaming source ${sourceId} to: ${newTitle}`);
281
+ const params = [null, [sourceId], [[[newTitle]]]];
282
+ const result = await this.core.rpcCall(RPCMethod.UPDATE_SOURCE, params, `/notebook/${notebookId}`, true);
283
+ if (Array.isArray(result)) {
284
+ return Source.fromApiResponse(result);
285
+ }
286
+ return Source.fromApiResponse([sourceId, newTitle]);
287
+ }
288
+ async refresh(notebookId, sourceId) {
289
+ const params = [null, [sourceId], [2]];
290
+ await this.core.rpcCall(RPCMethod.REFRESH_SOURCE, params, `/notebook/${notebookId}`, true);
291
+ return true;
292
+ }
293
+ async checkFreshness(notebookId, sourceId) {
294
+ const params = [null, [sourceId], [2]];
295
+ const result = await this.core.rpcCall(RPCMethod.CHECK_SOURCE_FRESHNESS, params, `/notebook/${notebookId}`, true);
296
+ if (result === true) {
297
+ return true;
298
+ }
299
+ if (result === false) {
300
+ return false;
301
+ }
302
+ if (Array.isArray(result)) {
303
+ if (result.length === 0) {
304
+ return true;
305
+ }
306
+ const first = result[0];
307
+ if (Array.isArray(first) && first.length > 1 && first[1] === true) {
308
+ return true;
309
+ }
310
+ }
311
+ return false;
312
+ }
313
+ async getGuide(notebookId, sourceId) {
314
+ const params = [[[[sourceId]]]];
315
+ const result = await this.core.rpcCall(RPCMethod.GET_SOURCE_GUIDE, params, `/notebook/${notebookId}`, true);
316
+ let summary = '';
317
+ let keywords = [];
318
+ if (Array.isArray(result) && result.length > 0) {
319
+ const outer = result[0];
320
+ if (Array.isArray(outer) && outer.length > 0) {
321
+ const inner = outer[0];
322
+ if (Array.isArray(inner)) {
323
+ if (Array.isArray(inner[1]) && inner[1].length > 0 && typeof inner[1][0] === 'string') {
324
+ summary = inner[1][0];
325
+ }
326
+ if (Array.isArray(inner[2]) && inner[2].length > 0 && Array.isArray(inner[2][0])) {
327
+ keywords = inner[2][0].filter((item) => typeof item === 'string');
328
+ }
329
+ }
330
+ }
331
+ }
332
+ return { summary, keywords };
333
+ }
334
+ async getFulltext(notebookId, sourceId) {
335
+ const params = [[sourceId], [2], [2]];
336
+ const result = await this.core.rpcCall(RPCMethod.GET_SOURCE, params, `/notebook/${notebookId}`, true);
337
+ if (!Array.isArray(result)) {
338
+ throw new SourceNotFoundError(`Source ${sourceId} not found in notebook ${notebookId}`);
339
+ }
340
+ let title = '';
341
+ let sourceType = null;
342
+ let url = null;
343
+ let content = '';
344
+ if (Array.isArray(result[0])) {
345
+ const sourceData = result[0];
346
+ if (typeof sourceData[1] === 'string') {
347
+ title = sourceData[1];
348
+ }
349
+ if (Array.isArray(sourceData[2])) {
350
+ if (typeof sourceData[2][4] === 'number') {
351
+ sourceType = sourceData[2][4];
352
+ }
353
+ if (Array.isArray(sourceData[2][7]) &&
354
+ sourceData[2][7].length > 0 &&
355
+ typeof sourceData[2][7][0] === 'string') {
356
+ url = sourceData[2][7][0];
357
+ }
358
+ }
359
+ }
360
+ if (Array.isArray(result[3]) && result[3].length > 0 && Array.isArray(result[3][0])) {
361
+ const texts = this.extractAllText(result[3][0]);
362
+ content = texts.join('\n');
363
+ }
364
+ if (!content) {
365
+ console.warn(`Source ${sourceId} returned empty content (type=${String(sourceType)}, title=${title})`);
366
+ }
367
+ return createSourceFulltext({
368
+ sourceId,
369
+ title,
370
+ content,
371
+ typeCode: sourceType,
372
+ url,
373
+ });
374
+ }
375
+ extractAllText(data, maxDepth = 100) {
376
+ if (maxDepth <= 0) {
377
+ console.warn('Max recursion depth reached in text extraction');
378
+ return [];
379
+ }
380
+ const texts = [];
381
+ for (const item of data) {
382
+ if (typeof item === 'string' && item.length > 0) {
383
+ texts.push(item);
384
+ }
385
+ else if (Array.isArray(item)) {
386
+ texts.push(...this.extractAllText(item, maxDepth - 1));
387
+ }
388
+ }
389
+ return texts;
390
+ }
391
+ extractYouTubeVideoId(url) {
392
+ try {
393
+ const parsed = new URL(url.trim());
394
+ const hostname = parsed.hostname.toLowerCase();
395
+ const youtubeDomains = new Set([
396
+ 'youtube.com',
397
+ 'www.youtube.com',
398
+ 'm.youtube.com',
399
+ 'music.youtube.com',
400
+ 'youtu.be',
401
+ ]);
402
+ if (!youtubeDomains.has(hostname)) {
403
+ return null;
404
+ }
405
+ const videoId = this.extractVideoIdFromParsedUrl(parsed, hostname);
406
+ if (videoId && this.isValidVideoId(videoId)) {
407
+ return videoId;
408
+ }
409
+ return null;
410
+ }
411
+ catch (error) {
412
+ console.debug(`Failed to parse YouTube URL '${url.slice(0, 100)}': ${String(error)}`);
413
+ return null;
414
+ }
415
+ }
416
+ extractVideoIdFromParsedUrl(parsed, hostname) {
417
+ if (hostname === 'youtu.be') {
418
+ const value = parsed.pathname.replace(/^\/+/, '').split('/')[0]?.trim();
419
+ return value || null;
420
+ }
421
+ const pathSegments = parsed.pathname.replace(/^\/+/, '').split('/');
422
+ if (pathSegments.length >= 2 &&
423
+ ['shorts', 'embed', 'live', 'v'].includes(pathSegments[0]?.toLowerCase() ?? '')) {
424
+ const value = pathSegments[1]?.trim();
425
+ return value || null;
426
+ }
427
+ const vParam = parsed.searchParams.get('v');
428
+ return vParam?.trim() || null;
429
+ }
430
+ isValidVideoId(videoId) {
431
+ return Boolean(videoId && /^[a-zA-Z0-9_-]+$/.test(videoId));
432
+ }
433
+ async addYouTubeSource(notebookId, url) {
434
+ const params = [
435
+ [[null, null, null, null, null, null, null, [url], null, null, 1]],
436
+ notebookId,
437
+ [2],
438
+ [1, null, null, null, null, null, null, null, null, null, [1]],
439
+ ];
440
+ return this.core.rpcCall(RPCMethod.ADD_SOURCE, params, `/notebook/${notebookId}`, true);
441
+ }
442
+ async addUrlSource(notebookId, url) {
443
+ const params = [
444
+ [[null, null, [url], null, null, null, null, null]],
445
+ notebookId,
446
+ [2],
447
+ null,
448
+ null,
449
+ ];
450
+ return this.core.rpcCall(RPCMethod.ADD_SOURCE, params, `/notebook/${notebookId}`);
451
+ }
452
+ async registerFileSource(notebookId, filename) {
453
+ const params = [
454
+ [[filename]],
455
+ notebookId,
456
+ [2],
457
+ [1, null, null, null, null, null, null, null, null, null, [1]],
458
+ ];
459
+ const result = await this.core.rpcCall(RPCMethod.ADD_SOURCE_FILE, params, `/notebook/${notebookId}`, true);
460
+ const extractId = (data) => {
461
+ if (typeof data === 'string') {
462
+ return data;
463
+ }
464
+ if (Array.isArray(data) && data.length > 0) {
465
+ return extractId(data[0]);
466
+ }
467
+ return null;
468
+ };
469
+ const sourceId = extractId(result);
470
+ if (sourceId) {
471
+ return sourceId;
472
+ }
473
+ throw new SourceAddError(filename, {
474
+ message: 'Failed to get SOURCE_ID from registration response',
475
+ });
476
+ }
477
+ async startResumableUpload(notebookId, filename, fileSize, sourceId) {
478
+ const url = `${UPLOAD_URL}?authuser=0`;
479
+ const response = await fetchWithTimeout(url, {
480
+ method: 'POST',
481
+ headers: {
482
+ Accept: '*/*',
483
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
484
+ Cookie: this.core.auth.cookieHeader,
485
+ Origin: 'https://notebooklm.google.com',
486
+ Referer: 'https://notebooklm.google.com/',
487
+ 'x-goog-authuser': '0',
488
+ 'x-goog-upload-command': 'start',
489
+ 'x-goog-upload-header-content-length': String(fileSize),
490
+ 'x-goog-upload-protocol': 'resumable',
491
+ },
492
+ body: JSON.stringify({
493
+ PROJECT_ID: notebookId,
494
+ SOURCE_NAME: filename,
495
+ SOURCE_ID: sourceId,
496
+ }),
497
+ }, 60_000);
498
+ if (!response.ok) {
499
+ throw new SourceAddError(filename, {
500
+ message: `Failed to start resumable upload: HTTP ${response.status} ${response.statusText}`,
501
+ });
502
+ }
503
+ const uploadUrl = response.headers.get('x-goog-upload-url');
504
+ if (!uploadUrl) {
505
+ throw new SourceAddError(filename, {
506
+ message: 'Failed to get upload URL from response headers',
507
+ });
508
+ }
509
+ return uploadUrl;
510
+ }
511
+ async uploadFileStreaming(uploadUrl, filePath) {
512
+ const { Readable } = await import('node:stream');
513
+ const nodeStream = createReadStream(filePath, { highWaterMark: 65_536 });
514
+ // Convert Node ReadStream to web ReadableStream for native fetch compatibility
515
+ const webStream = Readable.toWeb(nodeStream);
516
+ const response = await fetchWithTimeout(uploadUrl, {
517
+ method: 'POST',
518
+ headers: {
519
+ Accept: '*/*',
520
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
521
+ Cookie: this.core.auth.cookieHeader,
522
+ Origin: 'https://notebooklm.google.com',
523
+ Referer: 'https://notebooklm.google.com/',
524
+ 'x-goog-authuser': '0',
525
+ 'x-goog-upload-command': 'upload, finalize',
526
+ 'x-goog-upload-offset': '0',
527
+ },
528
+ body: webStream,
529
+ // Required by Node fetch for streamed request bodies.
530
+ duplex: 'half',
531
+ }, 300_000);
532
+ if (!response.ok) {
533
+ throw new SourceAddError(filePath, {
534
+ message: `File upload failed: HTTP ${response.status} ${response.statusText}`,
535
+ });
536
+ }
537
+ }
538
+ }
539
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/notebooklm/api/sources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export interface PlaywrightCookie {
2
+ name: string;
3
+ value: string;
4
+ domain: string;
5
+ path?: string;
6
+ expires?: number;
7
+ httpOnly?: boolean;
8
+ secure?: boolean;
9
+ sameSite?: 'Strict' | 'Lax' | 'None';
10
+ }
11
+ export interface PlaywrightStorageState {
12
+ cookies: PlaywrightCookie[];
13
+ origins?: unknown[];
14
+ }
15
+ export declare function extractCookiesFromStorage(storageState: PlaywrightStorageState): Record<string, string>;
16
+ export declare function extractCsrfFromHtml(html: string, finalUrl?: string): string;
17
+ export declare function extractSessionIdFromHtml(html: string, finalUrl?: string): string;
18
+ export interface AuthTokens {
19
+ cookies: Record<string, string>;
20
+ csrfToken: string;
21
+ sessionId: string;
22
+ cookieHeader: string;
23
+ }
24
+ export declare function loadStorageCookies(profileDir?: string): Promise<PlaywrightCookie[]>;
25
+ export declare function loadAuthFromStorage(profileDir?: string): Promise<Record<string, string>>;
26
+ export declare function fetchTokens(cookies: Record<string, string>): Promise<[string, string]>;
27
+ export declare const AuthTokens: {
28
+ fromStorage(profileDir?: string): Promise<AuthTokens>;
29
+ };
30
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/notebooklm/auth.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB;AAqKD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,sBAAsB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyCxB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAYvE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAY5E;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAuBD,wBAAsB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAUzF;AAED,wBAAsB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAG9F;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+B5F;AAED,eAAO,MAAM,UAAU;6BACU,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAW5D,CAAC"}