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,204 @@
1
+ /**
2
+ * Notebook Language Service
3
+ * Handles getting and setting the notebook's default output language
4
+ *
5
+ * The notebook's default output language is used as the default for:
6
+ * - Artifact creation (audio, video, report, infographics, slide decks)
7
+ * - Chat responses
8
+ * - All other notebook operations
9
+ *
10
+ * If a specific language is provided in artifact creation, it overrides the default.
11
+ */
12
+ import * as RPC from '../rpc/rpc-methods.js';
13
+ import { APIError } from '../utils/errors.js';
14
+ import { isLanguageSupported } from '../types/languages.js';
15
+ /**
16
+ * Service for managing notebook output language
17
+ */
18
+ export class NotebookLanguageService {
19
+ rpc;
20
+ // Cache for notebook languages to avoid repeated RPC calls
21
+ languageCache = new Map();
22
+ constructor(rpc) {
23
+ this.rpc = rpc;
24
+ }
25
+ /**
26
+ * Get the default output language for a notebook
27
+ *
28
+ * **What it does:** Retrieves the notebook's default output language setting.
29
+ * This language is used as the default for all artifact creation, chat responses,
30
+ * and other notebook operations unless overridden.
31
+ *
32
+ * **Input:**
33
+ * - `notebookId` (string, required): The ID of the notebook
34
+ *
35
+ * **Output:** Returns the language code (e.g., 'en', 'de', 'ja')
36
+ *
37
+ * **Note:**
38
+ * - Returns cached language if available (set via `set()` method)
39
+ * - If not cached, defaults to 'en' (English)
40
+ * - The language is cached when set via `set()` method
41
+ *
42
+ * @param notebookId - The notebook ID
43
+ * @returns The default language code
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const language = await sdk.notebookLanguage.get('notebook-id');
48
+ * console.log(`Default language: ${language}`); // 'en', 'de', 'ja', etc.
49
+ * ```
50
+ */
51
+ async get(notebookId) {
52
+ // Check cache first - language is cached when set via set() method
53
+ if (this.languageCache.has(notebookId)) {
54
+ return this.languageCache.get(notebookId);
55
+ }
56
+ // If not cached, default to 'en'
57
+ // The language will be cached when set via set() method
58
+ const defaultLanguage = 'en';
59
+ this.languageCache.set(notebookId, defaultLanguage);
60
+ return defaultLanguage;
61
+ }
62
+ /**
63
+ * Set the default output language for a notebook
64
+ *
65
+ * **What it does:** Sets the notebook's default output language.
66
+ * This language will be used as the default for all artifact creation,
67
+ * chat responses, and other notebook operations.
68
+ *
69
+ * **Input:**
70
+ * - `notebookId` (string, required): The ID of the notebook
71
+ * - `language` (string, required): Language code (e.g., 'en', 'de', 'ja')
72
+ * - Use `NotebookLMLanguage` enum for type safety
73
+ * - Supports 80+ languages
74
+ *
75
+ * **Output:** Returns the updated language code
76
+ *
77
+ * **Note:**
78
+ * - The language setting is persistent and affects all future operations
79
+ * - Cache is updated after successful setting
80
+ * - Uses RPC `hT54vc` (MutateAccount) to update the language
81
+ *
82
+ * @param notebookId - The notebook ID
83
+ * @param language - Language code to set
84
+ * @returns The updated language code
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * import { NotebookLMLanguage } from 'notebooklm-kit';
89
+ *
90
+ * // Set to German
91
+ * await sdk.notebookLanguage.set('notebook-id', NotebookLMLanguage.GERMAN);
92
+ *
93
+ * // Set to Japanese
94
+ * await sdk.notebookLanguage.set('notebook-id', NotebookLMLanguage.JAPANESE);
95
+ *
96
+ * // Set using language code directly
97
+ * await sdk.notebookLanguage.set('notebook-id', 'de');
98
+ * ```
99
+ */
100
+ async set(notebookId, language) {
101
+ // Validate language code
102
+ if (!language || typeof language !== 'string') {
103
+ throw new APIError('Invalid language code. Must be a non-empty string.', undefined, 400);
104
+ }
105
+ // Normalize language code (lowercase)
106
+ const normalizedLang = language.toLowerCase();
107
+ // Validate that it's a supported language (optional check)
108
+ if (!isLanguageSupported(normalizedLang)) {
109
+ console.warn(`Language code '${normalizedLang}' may not be supported. Proceeding anyway.`);
110
+ }
111
+ try {
112
+ // Based on mm55.txt, the RPC call structure is:
113
+ // RPC: hT54vc (MutateAccount)
114
+ // Args: [[null, [[null, null, null, null, ["en"]]]]]
115
+ // The language code is in a nested array at the end
116
+ const args = [
117
+ [
118
+ null,
119
+ [
120
+ [
121
+ null,
122
+ null,
123
+ null,
124
+ null,
125
+ [normalizedLang] // Language code in array
126
+ ]
127
+ ]
128
+ ]
129
+ ];
130
+ // Make the RPC call to set the language
131
+ await this.rpc.call(RPC.RPC_MUTATE_ACCOUNT, // hT54vc
132
+ args, notebookId);
133
+ // Also call ozz5Z RPC (based on mm55.txt, this seems to be a follow-up call)
134
+ // Args: [[[[null, "1", 627]], [null, null, null, null, null, null, null, null, null, [null, null, 1]]], 1]]
135
+ try {
136
+ await this.rpc.call(RPC.RPC_UNKNOWN_POST_SLIDE_DECK, // ozz5Z
137
+ [
138
+ [
139
+ [
140
+ [null, "1", 627]
141
+ ],
142
+ [
143
+ null,
144
+ null,
145
+ null,
146
+ null,
147
+ null,
148
+ null,
149
+ null,
150
+ null,
151
+ null,
152
+ [null, null, 1]
153
+ ]
154
+ ],
155
+ 1
156
+ ], notebookId);
157
+ }
158
+ catch (error) {
159
+ // ozz5Z call is optional, don't fail if it errors
160
+ console.warn('Optional ozz5Z RPC call failed (non-critical):', error);
161
+ }
162
+ // Update cache
163
+ this.languageCache.set(notebookId, normalizedLang);
164
+ return normalizedLang;
165
+ }
166
+ catch (error) {
167
+ // Clear cache on error
168
+ this.languageCache.delete(notebookId);
169
+ throw new APIError(`Failed to set notebook language to '${normalizedLang}': ${error instanceof Error ? error.message : String(error)}`, undefined, 500);
170
+ }
171
+ }
172
+ /**
173
+ * Clear the language cache for a notebook
174
+ * Useful if you want to force a fresh fetch
175
+ *
176
+ * @param notebookId - The notebook ID (optional, clears all if not provided)
177
+ */
178
+ clearCache(notebookId) {
179
+ if (notebookId) {
180
+ this.languageCache.delete(notebookId);
181
+ }
182
+ else {
183
+ this.languageCache.clear();
184
+ }
185
+ }
186
+ /**
187
+ * Get language information with metadata
188
+ *
189
+ * @param notebookId - The notebook ID
190
+ * @returns Language information object
191
+ */
192
+ async getInfo(notebookId) {
193
+ const language = await this.get(notebookId);
194
+ // Import getLanguageInfo dynamically to avoid circular dependencies
195
+ const { getLanguageInfo } = await import('../types/languages.js');
196
+ const info = getLanguageInfo(language);
197
+ return {
198
+ language,
199
+ name: info?.name,
200
+ nativeName: info?.nativeName,
201
+ };
202
+ }
203
+ }
204
+ //# sourceMappingURL=notebook-language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-language.js","sourceRoot":"","sources":["../../../src/services/notebook-language.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { RPCClient } from '../rpc/rpc-client.js';
2
+ import type { Notebook, CreateNotebookOptions, UpdateNotebookOptions, ShareNotebookOptions, ShareNotebookResult, DeleteNotebookResult } from '../types/notebook.js';
3
+ export declare class NotebooksService {
4
+ private rpc;
5
+ private quota?;
6
+ constructor(rpc: RPCClient, quota?: import("../utils/quota.js").QuotaManager | undefined);
7
+ list(): Promise<Notebook[]>;
8
+ get(notebookId: string): Promise<Notebook>;
9
+ create(options: CreateNotebookOptions): Promise<Notebook>;
10
+ update(notebookId: string, options: UpdateNotebookOptions): Promise<Notebook>;
11
+ delete(notebookIds: string | string[]): Promise<DeleteNotebookResult>;
12
+ share(notebookId: string, options: ShareNotebookOptions): Promise<ShareNotebookResult>;
13
+ /**
14
+ * Parse sharing details response from JFMDGd RPC
15
+ */
16
+ private parseSharingResponse;
17
+ private parseListResponse;
18
+ private parseGetResponse;
19
+ /**
20
+ * Set emoji for a notebook using the s0tc2d RPC
21
+ * Based on mm40.txt: emoji is set via s0tc2d with args [notebookId, [[null, null, null, [null, null, emoji]]]]
22
+ */
23
+ private setEmoji;
24
+ private parseCreateResponse;
25
+ }
26
+ //# sourceMappingURL=notebooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebooks.d.ts","sourceRoot":"","sources":["../../../src/services/notebooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAmB,MAAM,sBAAsB,CAAC;AAKrL,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK,CAAC;gBADN,GAAG,EAAE,SAAS,EACd,KAAK,CAAC,EAAE,OAAO,mBAAmB,EAAE,YAAY,YAAA;IAGpD,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAU3B,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsB1C,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8BzD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwD7E,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiBrE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA2J5F;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoG5B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,gBAAgB;IA6GxB;;;OAGG;YACW,QAAQ;IAuBtB,OAAO,CAAC,mBAAmB;CAqD5B"}