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,539 @@
1
+ import * as RPC from '../rpc/rpc-methods.js';
2
+ import { NotebookLMError } from '../types/common.js';
3
+ import { APIError } from '../utils/errors.js';
4
+ import { createChunkedParser } from '../utils/chunked-parser.js';
5
+ export class NotebooksService {
6
+ rpc;
7
+ quota;
8
+ constructor(rpc, quota) {
9
+ this.rpc = rpc;
10
+ this.quota = quota;
11
+ }
12
+ async list() {
13
+ // Use wXbhsf RPC for listing my notebooks (recently viewed)
14
+ // Args format: [null, 1, null, [2]]
15
+ const args = [null, 1, null, [2]];
16
+ const response = await this.rpc.call(RPC.RPC_LIST_MY_NOTEBOOKS, args);
17
+ const notebooks = this.parseListResponse(response);
18
+ // Filter out "OpenStax's Biology" notebook (not in user's expected list)
19
+ return notebooks.filter(nb => !nb.title.includes("OpenStax's Biology"));
20
+ }
21
+ async get(notebookId) {
22
+ if (!notebookId || typeof notebookId !== 'string') {
23
+ throw new APIError('Invalid notebook ID format', undefined, 400);
24
+ }
25
+ // Call both RPCs in parallel to get full notebook data + sharing details
26
+ const [projectResponse, sharingResponse] = await Promise.all([
27
+ this.rpc.call(RPC.RPC_GET_PROJECT, [notebookId, null, [2], null, 0], notebookId),
28
+ this.rpc.call(RPC.RPC_GET_SHARING_DETAILS, [notebookId, [2]], notebookId).catch(() => null), // Sharing data is optional, don't fail if unavailable
29
+ ]);
30
+ return this.parseGetResponse(projectResponse, notebookId, sharingResponse);
31
+ }
32
+ async create(options) {
33
+ let { title = '', emoji } = options;
34
+ if (!title || title.trim() === '') {
35
+ title = `Untitled Notebook ${new Date().toLocaleDateString()}`;
36
+ }
37
+ if (title.length > 100) {
38
+ throw new APIError('Notebook title exceeds maximum length (100 characters)', undefined, 400);
39
+ }
40
+ this.quota?.checkQuota('createNotebook');
41
+ const response = await this.rpc.call(RPC.RPC_CREATE_PROJECT, [title, null, null, [2], [1, null, null, null, null, null, null, null, null, [1]]]);
42
+ const notebook = this.parseCreateResponse(response, title);
43
+ this.quota?.recordUsage('createNotebook');
44
+ // Set emoji if provided
45
+ if (emoji) {
46
+ await this.setEmoji(notebook.projectId, emoji);
47
+ notebook.emoji = emoji;
48
+ }
49
+ return notebook;
50
+ }
51
+ async update(notebookId, options) {
52
+ // Trim notebook ID to remove any trailing spaces
53
+ notebookId = notebookId.trim();
54
+ if (!notebookId || typeof notebookId !== 'string') {
55
+ throw new APIError('Invalid notebook ID format', undefined, 400);
56
+ }
57
+ // Validate: at least one field must be provided (title, description, or emoji)
58
+ if (!options.title && !options.description && !options.emoji) {
59
+ throw new APIError('At least one field (title, description, or emoji) must be provided', undefined, 400);
60
+ }
61
+ if (options.title && options.title.length > 100) {
62
+ throw new APIError('Notebook title exceeds maximum length (100 characters)', undefined, 400);
63
+ }
64
+ // Set emoji if provided (supports: emoji only, title + emoji, or emoji + description)
65
+ if (options.emoji !== undefined) {
66
+ await this.setEmoji(notebookId, options.emoji);
67
+ }
68
+ // Update title and/or description if provided (supports: title only, description only, or title + description)
69
+ if (options.title !== undefined || options.description !== undefined) {
70
+ const updateArray = [null, null, null, null];
71
+ if (options.title !== undefined) {
72
+ updateArray[3] = [null, options.title];
73
+ }
74
+ const updates = [updateArray];
75
+ const response = await this.rpc.call(RPC.RPC_UPDATE_PROJECT, [notebookId, updates], notebookId);
76
+ const notebook = this.parseGetResponse(response, notebookId, null);
77
+ // Ensure emoji is set in the returned notebook if it was updated
78
+ if (options.emoji !== undefined) {
79
+ notebook.emoji = options.emoji;
80
+ }
81
+ return notebook;
82
+ }
83
+ // If only emoji was updated (no title or description), fetch the notebook and update emoji in response
84
+ const notebook = await this.get(notebookId);
85
+ if (options.emoji !== undefined) {
86
+ notebook.emoji = options.emoji;
87
+ }
88
+ return notebook;
89
+ }
90
+ async delete(notebookIds) {
91
+ const ids = Array.isArray(notebookIds) ? notebookIds : [notebookIds];
92
+ for (const id of ids) {
93
+ if (!id || typeof id !== 'string') {
94
+ throw new APIError('Invalid notebook ID format', undefined, 400);
95
+ }
96
+ }
97
+ await this.rpc.call(RPC.RPC_DELETE_PROJECTS, [ids, [2]]);
98
+ return {
99
+ deleted: ids,
100
+ count: ids.length,
101
+ };
102
+ }
103
+ async share(notebookId, options) {
104
+ if (!notebookId || typeof notebookId !== 'string') {
105
+ throw new APIError('Invalid notebook ID format', undefined, 400);
106
+ }
107
+ // Trim notebookId to prevent issues with trailing spaces
108
+ const trimmedNotebookId = notebookId.trim();
109
+ // accessType: 1 = anyone with link, 2 = restricted (default)
110
+ // Default to restricted (2) unless explicitly set to anyone with link (1)
111
+ const accessType = options.accessType || 2;
112
+ // Notify should only be used when there are user permission changes (adding/removing/updating users)
113
+ // When only changing access type (restricted vs anyone with link), notify is not relevant
114
+ const hasUserChanges = options.users && options.users.length > 0;
115
+ const notify = hasUserChanges ? (options.notify !== false ? 1 : 0) : 0;
116
+ // Validate: must have users OR accessType === 1 (anyone with link)
117
+ if (!options.users && accessType !== 1) {
118
+ throw new APIError('At least one sharing option (users or accessType=1 for anyone with link) must be provided', undefined, 400);
119
+ }
120
+ let shareData;
121
+ if (options.users && options.users.length > 0) {
122
+ const users = [];
123
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
124
+ for (const user of options.users) {
125
+ if (!user.email || typeof user.email !== 'string') {
126
+ throw new APIError('Invalid user email format', undefined, 400);
127
+ }
128
+ if (!emailRegex.test(user.email.trim())) {
129
+ throw new APIError(`Invalid email address: ${user.email}`, undefined, 400);
130
+ }
131
+ if (![2, 3, 4].includes(user.role)) {
132
+ throw new APIError('Invalid user role. Must be 2 (editor), 3 (viewer), or 4 (remove)', undefined, 400);
133
+ }
134
+ users.push([user.email.trim(), null, user.role]);
135
+ }
136
+ shareData = [trimmedNotebookId, users];
137
+ }
138
+ else if (accessType === 1) {
139
+ // Structure: [notebookId, null, [1]] where [1] enables link sharing
140
+ shareData = [trimmedNotebookId, null, [1]];
141
+ }
142
+ else {
143
+ throw new APIError('Invalid share options', undefined, 400);
144
+ }
145
+ // Call JFMDGd first to get sharing details (prerequisite for sharing)
146
+ // This initializes the sharing state for the notebook
147
+ try {
148
+ await this.rpc.call(RPC.RPC_GET_SHARING_DETAILS, [trimmedNotebookId, [2]], trimmedNotebookId);
149
+ }
150
+ catch (error) {
151
+ // Ignore errors from the prerequisite call - it may not always be necessary
152
+ // but we call it to match the browser behavior
153
+ }
154
+ const args = [[shareData], notify, null, [accessType]];
155
+ const response = await this.rpc.call(RPC.RPC_SHARE_PROJECT, args, trimmedNotebookId);
156
+ // QDyure response can be:
157
+ // - Empty array [] = success (no share URL in response, construct from notebook ID)
158
+ // - Array with share URL = success with URL
159
+ // - Error response = failure
160
+ let shareUrl = '';
161
+ let success = false;
162
+ if (Array.isArray(response)) {
163
+ if (response.length === 0) {
164
+ // Empty array means success - construct share URL from notebook ID
165
+ success = true;
166
+ shareUrl = `https://notebooklm.google.com/notebook/${trimmedNotebookId}`;
167
+ }
168
+ else {
169
+ // Response contains data
170
+ const data = response[0];
171
+ if (Array.isArray(data)) {
172
+ shareUrl = data[0] || '';
173
+ success = data[1] === true || (data.length > 0 && data[0] !== null);
174
+ }
175
+ else if (typeof data === 'string') {
176
+ shareUrl = data;
177
+ success = true;
178
+ }
179
+ else if (data?.shareUrl) {
180
+ shareUrl = data.shareUrl;
181
+ success = data.success !== false;
182
+ }
183
+ else {
184
+ // Fallback: construct from notebook ID
185
+ shareUrl = `https://notebooklm.google.com/notebook/${trimmedNotebookId}`;
186
+ success = true;
187
+ }
188
+ }
189
+ }
190
+ else if (response && typeof response === 'object') {
191
+ shareUrl = response.shareUrl || `https://notebooklm.google.com/notebook/${trimmedNotebookId}`;
192
+ success = response.success !== false;
193
+ }
194
+ else {
195
+ // Fallback: construct from notebook ID
196
+ shareUrl = `https://notebooklm.google.com/notebook/${trimmedNotebookId}`;
197
+ success = true;
198
+ }
199
+ // If shareUrl is still empty, construct from notebook ID
200
+ if (!shareUrl) {
201
+ shareUrl = `https://notebooklm.google.com/notebook/${trimmedNotebookId}`;
202
+ }
203
+ // If share failed, return minimal result
204
+ if (!success) {
205
+ return {
206
+ shareUrl,
207
+ success: false,
208
+ notebookId: trimmedNotebookId,
209
+ accessType,
210
+ isShared: false,
211
+ };
212
+ }
213
+ // Fetch updated sharing details after successful share
214
+ let sharingDetails = {
215
+ shareUrl,
216
+ success: true,
217
+ notebookId: trimmedNotebookId,
218
+ accessType,
219
+ isShared: accessType === 1 || !!(options.users && options.users.length > 0),
220
+ };
221
+ try {
222
+ const sharingResponse = await this.rpc.call(RPC.RPC_GET_SHARING_DETAILS, [trimmedNotebookId, [2]], trimmedNotebookId);
223
+ const parsedSharing = this.parseSharingResponse(sharingResponse, trimmedNotebookId);
224
+ sharingDetails = {
225
+ ...sharingDetails,
226
+ ...parsedSharing,
227
+ shareUrl: parsedSharing.shareUrl || shareUrl, // Use parsed URL if available, otherwise use constructed one
228
+ };
229
+ }
230
+ catch (error) {
231
+ // If we can't fetch sharing details, return what we have
232
+ // The share operation succeeded, so we return success with basic info
233
+ }
234
+ return sharingDetails;
235
+ }
236
+ /**
237
+ * Parse sharing details response from JFMDGd RPC
238
+ */
239
+ parseSharingResponse(response, notebookId) {
240
+ try {
241
+ let sharingData = response;
242
+ // Handle different response formats
243
+ if (Array.isArray(response)) {
244
+ if (response.length > 0 && Array.isArray(response[0])) {
245
+ sharingData = response[0];
246
+ }
247
+ else {
248
+ sharingData = response;
249
+ }
250
+ }
251
+ // Extract sharing information
252
+ // Structure: [[users], [isShared], 1000] or [users_array, isShared_array, ...]
253
+ // Users array: [["email", role, [], ["name", "avatar"]], ...]
254
+ // Each user: ["email", role, [], ["name", "avatar"]]
255
+ let usersData = [];
256
+ let isShared = false;
257
+ let accessType = 2;
258
+ // Handle structure: [[users], [isShared], 1000]
259
+ if (Array.isArray(sharingData) && sharingData.length >= 2) {
260
+ // First element is users array
261
+ if (Array.isArray(sharingData[0])) {
262
+ usersData = sharingData[0];
263
+ }
264
+ // Second element is [isShared] or isShared boolean
265
+ if (Array.isArray(sharingData[1])) {
266
+ isShared = sharingData[1][0] === true;
267
+ }
268
+ else if (typeof sharingData[1] === 'boolean') {
269
+ isShared = sharingData[1];
270
+ }
271
+ }
272
+ // Fallback: try to extract from object format
273
+ if (usersData.length === 0 && sharingData?.users) {
274
+ usersData = Array.isArray(sharingData.users) ? sharingData.users : [];
275
+ }
276
+ if (!isShared && sharingData?.isShared) {
277
+ isShared = sharingData.isShared === true;
278
+ }
279
+ // Extract shareUrl - may not be in this response, construct from notebookId
280
+ const shareUrl = sharingData?.shareUrl || `https://notebooklm.google.com/notebook/${notebookId}`;
281
+ // Access type: 1 = anyone with link, 2 = restricted
282
+ // We need to infer from the sharing state - if there are users and link is enabled
283
+ // For now, default to restricted (2) unless we can determine otherwise
284
+ const accessTypeRaw = sharingData?.accessType || sharingData?.[3] || 2;
285
+ accessType = (accessTypeRaw === 1 || accessTypeRaw === 2) ? accessTypeRaw : 2;
286
+ // Parse users array
287
+ // Format: [["email", role, [], ["name", "avatar"]], ...]
288
+ // Role is at index 1, not index 2!
289
+ const users = [];
290
+ if (Array.isArray(usersData)) {
291
+ for (const userEntry of usersData) {
292
+ if (Array.isArray(userEntry) && userEntry.length >= 2) {
293
+ // Format: ["email", role, [], ["name", "avatar"]]
294
+ const email = userEntry[0];
295
+ const role = userEntry[1]; // Role is at index 1!
296
+ if (typeof email === 'string' && (role === 1 || role === 2 || role === 3)) {
297
+ // Map role: 1 = owner, 2 = editor, 3 = viewer
298
+ // We only return editor (2) or viewer (3), not owner (1)
299
+ if (role === 2 || role === 3) {
300
+ users.push({ email, role: role });
301
+ }
302
+ }
303
+ }
304
+ else if (typeof userEntry === 'object' && userEntry?.email) {
305
+ // Format: { email, role, ... }
306
+ const email = userEntry.email;
307
+ const role = userEntry.role;
308
+ if (typeof email === 'string' && (role === 2 || role === 3)) {
309
+ users.push({ email, role });
310
+ }
311
+ }
312
+ }
313
+ }
314
+ return {
315
+ shareUrl,
316
+ accessType,
317
+ isShared,
318
+ users: users.length > 0 ? users : undefined,
319
+ };
320
+ }
321
+ catch (error) {
322
+ // Return minimal info if parsing fails
323
+ return {
324
+ shareUrl: `https://notebooklm.google.com/notebook/${notebookId}`,
325
+ accessType: 2,
326
+ isShared: false,
327
+ };
328
+ }
329
+ }
330
+ parseListResponse(response) {
331
+ try {
332
+ let responseStr = '';
333
+ if (typeof response === 'string') {
334
+ responseStr = response;
335
+ }
336
+ else if (Array.isArray(response) && response.length > 0) {
337
+ if (typeof response[0] === 'string') {
338
+ responseStr = response[0];
339
+ }
340
+ else {
341
+ responseStr = JSON.stringify(response);
342
+ }
343
+ }
344
+ else {
345
+ responseStr = JSON.stringify(response);
346
+ }
347
+ // Enable debug mode for notebook list parsing (can be disabled with NOTEBOOKLM_DEBUG=false)
348
+ const debugMode = process.env.NOTEBOOKLM_DEBUG !== 'false';
349
+ const parser = createChunkedParser(responseStr, debugMode);
350
+ const projects = parser.parseListProjectsResponse();
351
+ return projects.map((p) => ({
352
+ projectId: p.projectId || '',
353
+ title: p.title || '',
354
+ emoji: p.emoji || '📄',
355
+ sourceCount: p.sourceCount !== undefined ? p.sourceCount : 0,
356
+ }));
357
+ }
358
+ catch (error) {
359
+ throw new NotebookLMError(`Failed to parse notebooks list: ${error.message}`);
360
+ }
361
+ }
362
+ parseGetResponse(response, notebookId, sharingResponse) {
363
+ try {
364
+ let parsedResponse = response;
365
+ if (typeof response === 'string') {
366
+ parsedResponse = JSON.parse(response);
367
+ }
368
+ if (Array.isArray(parsedResponse) && parsedResponse.length > 0) {
369
+ let data = parsedResponse;
370
+ if (Array.isArray(parsedResponse[0])) {
371
+ data = parsedResponse[0];
372
+ }
373
+ const title = data[0] || '';
374
+ const emoji = data[1] || '📄';
375
+ const sources = [];
376
+ if (Array.isArray(data[1])) {
377
+ for (const sourceData of data[1]) {
378
+ if (Array.isArray(sourceData) && sourceData.length > 0) {
379
+ if (Array.isArray(sourceData[0]) && sourceData[0].length > 0) {
380
+ const sourceId = sourceData[0][0];
381
+ const filename = sourceData[1] || 'Untitled';
382
+ if (typeof sourceId === 'string') {
383
+ sources.push({
384
+ sourceId,
385
+ title: filename,
386
+ });
387
+ }
388
+ }
389
+ }
390
+ }
391
+ }
392
+ // Extract analytics data
393
+ const sourceCount = sources.length;
394
+ // Try to extract lastAccessed from various possible locations in the response
395
+ let lastAccessed;
396
+ // Check metadata field (data[5] or data[6] based on proto)
397
+ if (data[5] && typeof data[5] === 'object') {
398
+ const metadata = data[5];
399
+ // Check for modified_time (field 6) or last_accessed
400
+ if (metadata[6] && typeof metadata[6] === 'number') {
401
+ // Timestamp in seconds
402
+ lastAccessed = new Date(metadata[6] * 1000).toISOString();
403
+ }
404
+ else if (metadata.lastAccessed) {
405
+ lastAccessed = typeof metadata.lastAccessed === 'string'
406
+ ? metadata.lastAccessed
407
+ : new Date(metadata.lastAccessed).toISOString();
408
+ }
409
+ else if (metadata.modified_time) {
410
+ lastAccessed = typeof metadata.modified_time === 'string'
411
+ ? metadata.modified_time
412
+ : new Date(metadata.modified_time).toISOString();
413
+ }
414
+ }
415
+ // Check if lastAccessed is directly in the data array
416
+ if (!lastAccessed && data.length > 6) {
417
+ const possibleTimestamp = data[6] || data[7];
418
+ if (possibleTimestamp) {
419
+ if (typeof possibleTimestamp === 'number') {
420
+ lastAccessed = new Date(possibleTimestamp * 1000).toISOString();
421
+ }
422
+ else if (typeof possibleTimestamp === 'string') {
423
+ lastAccessed = possibleTimestamp;
424
+ }
425
+ }
426
+ }
427
+ // Parse sharing data if available
428
+ let sharing;
429
+ if (sharingResponse) {
430
+ const sharingData = Array.isArray(sharingResponse) ? sharingResponse[0] : sharingResponse;
431
+ if (sharingData) {
432
+ sharing = {
433
+ isShared: sharingData[0] === true || sharingData?.isShared === true,
434
+ shareUrl: sharingData[1] || sharingData?.shareUrl,
435
+ shareId: sharingData?.shareId,
436
+ publicAccess: sharingData?.publicAccess,
437
+ allowedUsers: sharingData[2] || sharingData?.permissions || sharingData?.allowedUsers,
438
+ };
439
+ }
440
+ }
441
+ // Return optimized notebook data
442
+ // Don't include sources array - use sources service for that
443
+ // Only include sourceCount for analytics
444
+ return {
445
+ projectId: notebookId,
446
+ title,
447
+ emoji,
448
+ sourceCount: sourceCount > 0 ? sourceCount : undefined,
449
+ lastAccessed,
450
+ sharing,
451
+ };
452
+ }
453
+ return {
454
+ projectId: notebookId,
455
+ title: '',
456
+ emoji: '📄',
457
+ };
458
+ }
459
+ catch (error) {
460
+ throw new NotebookLMError(`Failed to parse notebook data: ${error.message}`);
461
+ }
462
+ }
463
+ /**
464
+ * Set emoji for a notebook using the s0tc2d RPC
465
+ * Based on mm40.txt: emoji is set via s0tc2d with args [notebookId, [[null, null, null, [null, null, emoji]]]]
466
+ */
467
+ async setEmoji(notebookId, emoji) {
468
+ if (!emoji || typeof emoji !== 'string') {
469
+ throw new APIError('Invalid emoji format', undefined, 400);
470
+ }
471
+ // Emoji should be a single Unicode character (can be a multi-byte emoji)
472
+ // Validate it's not empty after trimming
473
+ const trimmedEmoji = emoji.trim();
474
+ if (!trimmedEmoji) {
475
+ throw new APIError('Emoji cannot be empty', undefined, 400);
476
+ }
477
+ // RPC call structure from mm40.txt:
478
+ // s0tc2d RPC with args: [notebookId, [[null, null, null, [null, null, emoji]]]]
479
+ const args = [notebookId, [[null, null, null, [null, null, trimmedEmoji]]]];
480
+ try {
481
+ await this.rpc.call(RPC.RPC_UPDATE_PROJECT, args, notebookId);
482
+ }
483
+ catch (error) {
484
+ throw new APIError(`Failed to set emoji: ${error.message}`, undefined, 500);
485
+ }
486
+ }
487
+ parseCreateResponse(response, title) {
488
+ try {
489
+ let projectId = '';
490
+ let emoji = '📄';
491
+ let parsedResponse = response;
492
+ if (typeof response === 'string') {
493
+ try {
494
+ parsedResponse = JSON.parse(response);
495
+ }
496
+ catch {
497
+ parsedResponse = response;
498
+ }
499
+ }
500
+ if (Array.isArray(parsedResponse)) {
501
+ if (parsedResponse.length > 2 && typeof parsedResponse[2] === 'string') {
502
+ projectId = parsedResponse[2];
503
+ }
504
+ else {
505
+ const findId = (data) => {
506
+ if (typeof data === 'string' && data.match(/^[a-f0-9-]{36}$/)) {
507
+ return data;
508
+ }
509
+ if (Array.isArray(data)) {
510
+ for (const item of data) {
511
+ const id = findId(item);
512
+ if (id)
513
+ return id;
514
+ }
515
+ }
516
+ return null;
517
+ };
518
+ projectId = findId(parsedResponse) || '';
519
+ }
520
+ // Extract emoji from response if available (typically at index 3)
521
+ if (parsedResponse.length > 3 && typeof parsedResponse[3] === 'string') {
522
+ emoji = parsedResponse[3];
523
+ }
524
+ }
525
+ if (!projectId) {
526
+ throw new Error('Could not extract project ID from response');
527
+ }
528
+ return {
529
+ projectId,
530
+ title,
531
+ emoji,
532
+ };
533
+ }
534
+ catch (error) {
535
+ throw new NotebookLMError(`Failed to parse created notebook: ${error.message}`);
536
+ }
537
+ }
538
+ }
539
+ //# sourceMappingURL=notebooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebooks.js","sourceRoot":"","sources":["../../../src/services/notebooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Notes service
3
+ * Handles note operations
4
+ */
5
+ import { RPCClient } from '../rpc/rpc-client.js';
6
+ import type { Note, CreateNoteOptions, UpdateNoteOptions } from '../types/note.js';
7
+ /**
8
+ * Service for note operations
9
+ */
10
+ export declare class NotesService {
11
+ private rpc;
12
+ private quota?;
13
+ constructor(rpc: RPCClient, quota?: import("../utils/quota.js").QuotaManager | undefined);
14
+ /**
15
+ * Get notes for a notebook
16
+ *
17
+ * @param notebookId - The notebook ID
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const notes = await client.notes.list('notebook-id');
22
+ * console.log(`Found ${notes.length} notes`);
23
+ * ```
24
+ */
25
+ list(notebookId: string): Promise<Note[]>;
26
+ /**
27
+ * Create a new note
28
+ *
29
+ * @param notebookId - The notebook ID
30
+ * @param options - Note options
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const note = await client.notes.create('notebook-id', {
35
+ * title: 'My Note',
36
+ * content: 'Note content here',
37
+ * });
38
+ * ```
39
+ */
40
+ create(notebookId: string, options: CreateNoteOptions): Promise<Note>;
41
+ /**
42
+ * Update a note
43
+ *
44
+ * @param notebookId - The notebook ID
45
+ * @param noteId - The note ID
46
+ * @param options - Update options
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const note = await client.notes.update('notebook-id', 'note-id', {
51
+ * title: 'Updated Title',
52
+ * content: 'Updated content',
53
+ * });
54
+ * ```
55
+ */
56
+ update(notebookId: string, noteId: string, options: UpdateNoteOptions): Promise<Note>;
57
+ /**
58
+ * Delete notes
59
+ *
60
+ * @param notebookId - The notebook ID
61
+ * @param noteIds - Note IDs to delete
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * await client.notes.delete('notebook-id', ['note-id-1', 'note-id-2']);
66
+ * ```
67
+ */
68
+ delete(notebookId: string, noteIds: string | string[]): Promise<void>;
69
+ private parseListResponse;
70
+ private parseNoteResponse;
71
+ }
72
+ //# sourceMappingURL=notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../../src/services/notes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGnF;;GAEG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK,CAAC;gBADN,GAAG,EAAE,SAAS,EACd,KAAK,CAAC,EAAE,OAAO,mBAAmB,EAAE,YAAY,YAAA;IAG1D;;;;;;;;;;OAUG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAU/C;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3E;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3F;;;;;;;;;;OAUG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3E,OAAO,CAAC,iBAAiB;IAmIzB,OAAO,CAAC,iBAAiB;CAmH1B"}