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,326 @@
1
+ /**
2
+ * Chunked response decoder for batchexecute format
3
+ * Handles the complex chunked format with size indicators
4
+ */
5
+ /**
6
+ * Parse chunked response from batchexecute
7
+ * Format: <chunk-length>\n<chunk-data>\n<chunk-length>\n<chunk-data>...
8
+ */
9
+ export function parseChunkedResponse(raw, debug = false) {
10
+ const log = (_msg) => {
11
+ // Debug logging disabled
12
+ };
13
+ // Remove prefix if present
14
+ let data = raw.trim().replace(/^\)\]\}'/, '');
15
+ const lines = data.split('\n');
16
+ const chunks = [];
17
+ let collecting = false;
18
+ let chunkSize = 0;
19
+ let chunkData = [];
20
+ log(`Processing ${lines.length} lines`);
21
+ for (let i = 0; i < lines.length; i++) {
22
+ const line = lines[i];
23
+ // Skip empty lines when not collecting
24
+ if (!collecting && line.trim() === '') {
25
+ continue;
26
+ }
27
+ // If not collecting, this should be a chunk size
28
+ if (!collecting) {
29
+ const size = parseInt(line.trim(), 10);
30
+ if (isNaN(size)) {
31
+ // Not a number - might be direct JSON
32
+ if (line.trim().startsWith('{') || line.trim().startsWith('[')) {
33
+ chunks.push(line);
34
+ log(`Found direct JSON chunk: ${line.substring(0, 100)}...`);
35
+ }
36
+ continue;
37
+ }
38
+ chunkSize = size;
39
+ collecting = true;
40
+ chunkData = [];
41
+ log(`Expecting chunk of ${chunkSize} bytes`);
42
+ continue;
43
+ }
44
+ // Collecting chunk data
45
+ chunkData.push(line);
46
+ const currentSize = chunkData.join('\n').length;
47
+ // Check if we've collected enough data
48
+ if (currentSize >= chunkSize) {
49
+ const chunk = chunkData.join('\n');
50
+ chunks.push(chunk);
51
+ log(`Collected full chunk (${currentSize} bytes)`);
52
+ collecting = false;
53
+ chunkSize = 0;
54
+ chunkData = [];
55
+ }
56
+ }
57
+ // Handle partial chunk
58
+ if (collecting && chunkData.length > 0) {
59
+ const chunk = chunkData.join('\n');
60
+ chunks.push(chunk);
61
+ log(`Added partial chunk (${chunk.length} of ${chunkSize} bytes)`);
62
+ }
63
+ // If no chunks but we have data, treat all as one chunk
64
+ if (chunks.length === 0 && lines.length > 0) {
65
+ const allData = lines.join('\n');
66
+ if (allData.trim()) {
67
+ chunks.push(allData);
68
+ log('Treating all lines as single chunk');
69
+ }
70
+ }
71
+ log(`Found ${chunks.length} chunks`);
72
+ // Process chunks
73
+ return processChunks(chunks, debug);
74
+ }
75
+ /**
76
+ * Process chunks and extract RPC responses
77
+ */
78
+ function processChunks(chunks, debug = false) {
79
+ const log = (_msg) => {
80
+ // Debug logging disabled
81
+ };
82
+ if (chunks.length === 0) {
83
+ throw new Error('No chunks found');
84
+ }
85
+ const allResponses = [];
86
+ for (const chunk of chunks) {
87
+ // Check for numeric-only responses (error codes)
88
+ const trimmed = chunk.trim();
89
+ if (/^\d+$/.test(trimmed) && trimmed.length <= 10) {
90
+ const code = parseInt(trimmed, 10);
91
+ // Skip success codes
92
+ if (code !== 0 && code !== 1) {
93
+ log(`Found numeric error code: ${code}`);
94
+ allResponses.push({
95
+ index: 0,
96
+ id: 'numeric',
97
+ data: code,
98
+ });
99
+ }
100
+ continue;
101
+ }
102
+ // Try to parse as JSON
103
+ try {
104
+ let data;
105
+ // Try parsing as array of arrays
106
+ try {
107
+ data = JSON.parse(chunk);
108
+ }
109
+ catch {
110
+ // Try unescaping and parsing
111
+ const unescaped = chunk.replace(/\\"/g, '"').replace(/\\\\/g, '\\');
112
+ data = JSON.parse(unescaped);
113
+ }
114
+ // Handle different formats
115
+ let responseArrays;
116
+ if (Array.isArray(data)) {
117
+ if (data.length > 0 && Array.isArray(data[0])) {
118
+ responseArrays = data;
119
+ }
120
+ else {
121
+ responseArrays = [data];
122
+ }
123
+ }
124
+ else {
125
+ continue;
126
+ }
127
+ // Extract responses
128
+ const responses = extractResponses(responseArrays);
129
+ allResponses.push(...responses);
130
+ }
131
+ catch (error) {
132
+ // Try manual extraction if JSON parsing fails
133
+ if (chunk.includes('wrb.fr')) {
134
+ log(`JSON parse failed, trying manual extraction`);
135
+ const response = extractWRBResponse(chunk);
136
+ if (response) {
137
+ allResponses.push(response);
138
+ }
139
+ }
140
+ }
141
+ }
142
+ if (allResponses.length === 0) {
143
+ throw new Error('No valid responses found in chunks');
144
+ }
145
+ return allResponses;
146
+ }
147
+ /**
148
+ * Extract RPC responses from parsed data
149
+ */
150
+ function extractResponses(data) {
151
+ const responses = [];
152
+ for (const rpcData of data) {
153
+ if (rpcData.length < 3) {
154
+ continue;
155
+ }
156
+ // Check for wrb.fr response type
157
+ const rpcType = rpcData[0];
158
+ if (rpcType !== 'wrb.fr') {
159
+ continue;
160
+ }
161
+ const id = rpcData[1];
162
+ if (!id) {
163
+ continue;
164
+ }
165
+ const response = {
166
+ id,
167
+ index: 0,
168
+ data: null,
169
+ };
170
+ // Try position 2 for data
171
+ let responseData = null;
172
+ if (rpcData[2] !== null && rpcData[2] !== undefined) {
173
+ if (typeof rpcData[2] === 'string') {
174
+ response.data = rpcData[2];
175
+ responseData = rpcData[2];
176
+ }
177
+ else {
178
+ responseData = rpcData[2];
179
+ }
180
+ }
181
+ // If position 2 is null, try position 5
182
+ if (responseData === null && rpcData.length > 5 && rpcData[5] !== null) {
183
+ responseData = rpcData[5];
184
+ }
185
+ // Set data
186
+ if (responseData !== null && response.data === null) {
187
+ response.data = responseData;
188
+ }
189
+ // Parse index from position 6
190
+ if (rpcData.length > 6) {
191
+ if (rpcData[6] === 'generic') {
192
+ response.index = 0;
193
+ }
194
+ else if (typeof rpcData[6] === 'string') {
195
+ response.index = parseInt(rpcData[6], 10) || 0;
196
+ }
197
+ }
198
+ responses.push(response);
199
+ }
200
+ return responses;
201
+ }
202
+ /**
203
+ * Manually extract wrb.fr response from unparseable chunk
204
+ */
205
+ function extractWRBResponse(chunk) {
206
+ // Try to parse as JSON first
207
+ try {
208
+ const data = JSON.parse(chunk);
209
+ if (Array.isArray(data)) {
210
+ const responses = extractResponses([data]);
211
+ if (responses.length > 0) {
212
+ return responses[0];
213
+ }
214
+ }
215
+ }
216
+ catch {
217
+ // Continue with manual extraction
218
+ }
219
+ // Find wrb.fr
220
+ const wrbIndex = chunk.indexOf('wrb.fr');
221
+ if (wrbIndex < 0) {
222
+ return null;
223
+ }
224
+ // Try to extract ID (comes after wrb.fr)
225
+ let idStart = wrbIndex + 6; // length of "wrb.fr"
226
+ while (idStart < chunk.length && (chunk[idStart] === ',' || chunk[idStart] === '"' || chunk[idStart] === ' ')) {
227
+ idStart++;
228
+ }
229
+ let idEnd = idStart;
230
+ while (idEnd < chunk.length && chunk[idEnd] !== '"' && chunk[idEnd] !== ',' && chunk[idEnd] !== ' ') {
231
+ idEnd++;
232
+ }
233
+ if (idStart >= idEnd) {
234
+ return null;
235
+ }
236
+ const id = chunk.substring(idStart, idEnd);
237
+ // Look for JSON data after ID
238
+ const dataStart = chunk.indexOf('{', idEnd);
239
+ if (dataStart >= 0) {
240
+ const dataEnd = findJSONEnd(chunk, dataStart, '{', '}');
241
+ if (dataEnd > dataStart) {
242
+ const jsonData = chunk.substring(dataStart, dataEnd);
243
+ try {
244
+ const parsed = JSON.parse(jsonData);
245
+ return {
246
+ index: 0,
247
+ id,
248
+ data: parsed,
249
+ };
250
+ }
251
+ catch {
252
+ // Return with raw string data
253
+ return {
254
+ index: 0,
255
+ id,
256
+ data: jsonData,
257
+ };
258
+ }
259
+ }
260
+ }
261
+ // Try array format
262
+ const arrayStart = chunk.indexOf('[', idEnd);
263
+ if (arrayStart >= 0) {
264
+ const arrayEnd = findJSONEnd(chunk, arrayStart, '[', ']');
265
+ if (arrayEnd > arrayStart) {
266
+ const jsonData = chunk.substring(arrayStart, arrayEnd);
267
+ try {
268
+ const parsed = JSON.parse(jsonData);
269
+ return {
270
+ index: 0,
271
+ id,
272
+ data: parsed,
273
+ };
274
+ }
275
+ catch {
276
+ return {
277
+ index: 0,
278
+ id,
279
+ data: jsonData,
280
+ };
281
+ }
282
+ }
283
+ }
284
+ // No data found
285
+ return {
286
+ index: 0,
287
+ id,
288
+ data: null,
289
+ };
290
+ }
291
+ /**
292
+ * Find the end of a JSON object or array
293
+ */
294
+ function findJSONEnd(s, start, openChar, closeChar) {
295
+ let count = 0;
296
+ let inQuotes = false;
297
+ let escaped = false;
298
+ for (let i = start; i < s.length; i++) {
299
+ const c = s[i];
300
+ if (escaped) {
301
+ escaped = false;
302
+ continue;
303
+ }
304
+ if (c === '\\' && inQuotes) {
305
+ escaped = true;
306
+ continue;
307
+ }
308
+ if (c === '"') {
309
+ inQuotes = !inQuotes;
310
+ continue;
311
+ }
312
+ if (!inQuotes) {
313
+ if (c === openChar) {
314
+ count++;
315
+ }
316
+ else if (c === closeChar) {
317
+ count--;
318
+ if (count === 0) {
319
+ return i + 1;
320
+ }
321
+ }
322
+ }
323
+ }
324
+ return s.length;
325
+ }
326
+ //# sourceMappingURL=chunked-decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunked-decoder.js","sourceRoot":"","sources":["../../../src/utils/chunked-decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Chunked response parser for NotebookLM's special response format
3
+ * Handles the complex chunked format used by NotebookLM API responses
4
+ */
5
+ /**
6
+ * Chunked response parser
7
+ * Specialized parser for NotebookLM's chunked response format
8
+ */
9
+ export declare class ChunkedResponseParser {
10
+ private raw;
11
+ private debug;
12
+ private rawChunks;
13
+ private cleanedData;
14
+ constructor(raw: string, debug?: boolean);
15
+ /**
16
+ * Parse list of projects from response
17
+ */
18
+ parseListProjectsResponse(): any[];
19
+ /**
20
+ * Check if response is an empty list (metadata-only)
21
+ */
22
+ private checkEmptyResponse;
23
+ /**
24
+ * Check if data structure contains project-like data
25
+ */
26
+ private containsProjectData;
27
+ /**
28
+ * Extract and clean chunks from raw response
29
+ */
30
+ private extractChunks;
31
+ /**
32
+ * Parse using standard JSON techniques
33
+ */
34
+ private parseStandardJSON;
35
+ /**
36
+ * Parse projects array into notebook objects
37
+ */
38
+ private parseProjectsArray;
39
+ /**
40
+ * Parse as object format
41
+ */
42
+ private parseAsObject;
43
+ /**
44
+ * Parse using regex patterns
45
+ */
46
+ private parseWithRegex;
47
+ /**
48
+ * Parse using direct scanning
49
+ * NOTE: This is a fallback method and should use strict filtering to avoid including sources
50
+ */
51
+ private parseDirectScan;
52
+ private isNumeric;
53
+ private isUUIDLike;
54
+ private escapeRegex;
55
+ private logDebug;
56
+ }
57
+ /**
58
+ * Create a chunked response parser
59
+ */
60
+ export declare function createChunkedParser(raw: string, debug?: boolean): ChunkedResponseParser;
61
+ //# sourceMappingURL=chunked-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunked-parser.d.ts","sourceRoot":"","sources":["../../../src/utils/chunked-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK;IALf,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAc;gBAGvB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,OAAe;IAGhC;;OAEG;IACH,yBAAyB,IAAI,GAAG,EAAE;IA2DlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkIzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkK1B;;OAEG;IACH,OAAO,CAAC,aAAa;IA+BrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyEtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA2FvB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;CAKjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,qBAAqB,CAE9F"}