@pan-sec/notebooklm-mcp 1.4.0 → 1.7.0

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 (230) hide show
  1. package/README.md +61 -7
  2. package/SECURITY.md +40 -6
  3. package/dist/auth/mcp-auth.d.ts.map +1 -1
  4. package/dist/auth/mcp-auth.js +3 -6
  5. package/dist/auth/mcp-auth.js.map +1 -1
  6. package/dist/compliance/alert-manager.d.ts +120 -0
  7. package/dist/compliance/alert-manager.d.ts.map +1 -0
  8. package/dist/compliance/alert-manager.js +420 -0
  9. package/dist/compliance/alert-manager.js.map +1 -0
  10. package/dist/compliance/breach-detection.d.ts +134 -0
  11. package/dist/compliance/breach-detection.d.ts.map +1 -0
  12. package/dist/compliance/breach-detection.js +456 -0
  13. package/dist/compliance/breach-detection.js.map +1 -0
  14. package/dist/compliance/change-log.d.ts +113 -0
  15. package/dist/compliance/change-log.d.ts.map +1 -0
  16. package/dist/compliance/change-log.js +275 -0
  17. package/dist/compliance/change-log.js.map +1 -0
  18. package/dist/compliance/compliance-logger.d.ts +136 -0
  19. package/dist/compliance/compliance-logger.d.ts.map +1 -0
  20. package/dist/compliance/compliance-logger.js +425 -0
  21. package/dist/compliance/compliance-logger.js.map +1 -0
  22. package/dist/compliance/compliance-tools.d.ts +18 -0
  23. package/dist/compliance/compliance-tools.d.ts.map +1 -0
  24. package/dist/compliance/compliance-tools.js +673 -0
  25. package/dist/compliance/compliance-tools.js.map +1 -0
  26. package/dist/compliance/consent-manager.d.ts +130 -0
  27. package/dist/compliance/consent-manager.d.ts.map +1 -0
  28. package/dist/compliance/consent-manager.js +386 -0
  29. package/dist/compliance/consent-manager.js.map +1 -0
  30. package/dist/compliance/dashboard.d.ts +243 -0
  31. package/dist/compliance/dashboard.d.ts.map +1 -0
  32. package/dist/compliance/dashboard.js +519 -0
  33. package/dist/compliance/dashboard.js.map +1 -0
  34. package/dist/compliance/data-classification.d.ts +117 -0
  35. package/dist/compliance/data-classification.d.ts.map +1 -0
  36. package/dist/compliance/data-classification.js +469 -0
  37. package/dist/compliance/data-classification.js.map +1 -0
  38. package/dist/compliance/data-erasure.d.ts +110 -0
  39. package/dist/compliance/data-erasure.d.ts.map +1 -0
  40. package/dist/compliance/data-erasure.js +501 -0
  41. package/dist/compliance/data-erasure.js.map +1 -0
  42. package/dist/compliance/data-export.d.ts +85 -0
  43. package/dist/compliance/data-export.d.ts.map +1 -0
  44. package/dist/compliance/data-export.js +394 -0
  45. package/dist/compliance/data-export.js.map +1 -0
  46. package/dist/compliance/data-inventory.d.ts +136 -0
  47. package/dist/compliance/data-inventory.d.ts.map +1 -0
  48. package/dist/compliance/data-inventory.js +335 -0
  49. package/dist/compliance/data-inventory.js.map +1 -0
  50. package/dist/compliance/dsar-handler.d.ts +123 -0
  51. package/dist/compliance/dsar-handler.d.ts.map +1 -0
  52. package/dist/compliance/dsar-handler.js +371 -0
  53. package/dist/compliance/dsar-handler.js.map +1 -0
  54. package/dist/compliance/evidence-collector.d.ts +187 -0
  55. package/dist/compliance/evidence-collector.d.ts.map +1 -0
  56. package/dist/compliance/evidence-collector.js +656 -0
  57. package/dist/compliance/evidence-collector.js.map +1 -0
  58. package/dist/compliance/health-monitor.d.ts +111 -0
  59. package/dist/compliance/health-monitor.d.ts.map +1 -0
  60. package/dist/compliance/health-monitor.js +509 -0
  61. package/dist/compliance/health-monitor.js.map +1 -0
  62. package/dist/compliance/incident-manager.d.ts +131 -0
  63. package/dist/compliance/incident-manager.d.ts.map +1 -0
  64. package/dist/compliance/incident-manager.js +418 -0
  65. package/dist/compliance/incident-manager.js.map +1 -0
  66. package/dist/compliance/index.d.ts +32 -0
  67. package/dist/compliance/index.d.ts.map +1 -0
  68. package/dist/compliance/index.js +35 -0
  69. package/dist/compliance/index.js.map +1 -0
  70. package/dist/compliance/policy-docs.d.ts +108 -0
  71. package/dist/compliance/policy-docs.d.ts.map +1 -0
  72. package/dist/compliance/policy-docs.js +464 -0
  73. package/dist/compliance/policy-docs.js.map +1 -0
  74. package/dist/compliance/privacy-notice-text.d.ts +58 -0
  75. package/dist/compliance/privacy-notice-text.d.ts.map +1 -0
  76. package/dist/compliance/privacy-notice-text.js +161 -0
  77. package/dist/compliance/privacy-notice-text.js.map +1 -0
  78. package/dist/compliance/privacy-notice.d.ts +128 -0
  79. package/dist/compliance/privacy-notice.d.ts.map +1 -0
  80. package/dist/compliance/privacy-notice.js +250 -0
  81. package/dist/compliance/privacy-notice.js.map +1 -0
  82. package/dist/compliance/report-generator.d.ts +168 -0
  83. package/dist/compliance/report-generator.d.ts.map +1 -0
  84. package/dist/compliance/report-generator.js +830 -0
  85. package/dist/compliance/report-generator.js.map +1 -0
  86. package/dist/compliance/retention-engine.d.ts +130 -0
  87. package/dist/compliance/retention-engine.d.ts.map +1 -0
  88. package/dist/compliance/retention-engine.js +510 -0
  89. package/dist/compliance/retention-engine.js.map +1 -0
  90. package/dist/compliance/siem-exporter.d.ts +150 -0
  91. package/dist/compliance/siem-exporter.d.ts.map +1 -0
  92. package/dist/compliance/siem-exporter.js +509 -0
  93. package/dist/compliance/siem-exporter.js.map +1 -0
  94. package/dist/compliance/types.d.ts +601 -0
  95. package/dist/compliance/types.d.ts.map +1 -0
  96. package/dist/compliance/types.js +22 -0
  97. package/dist/compliance/types.js.map +1 -0
  98. package/dist/config.d.ts +4 -0
  99. package/dist/config.d.ts.map +1 -1
  100. package/dist/config.js +8 -1
  101. package/dist/config.js.map +1 -1
  102. package/dist/events/event-emitter.d.ts +45 -0
  103. package/dist/events/event-emitter.d.ts.map +1 -0
  104. package/dist/events/event-emitter.js +100 -0
  105. package/dist/events/event-emitter.js.map +1 -0
  106. package/dist/events/event-types.d.ts +124 -0
  107. package/dist/events/event-types.d.ts.map +1 -0
  108. package/dist/events/event-types.js +18 -0
  109. package/dist/events/event-types.js.map +1 -0
  110. package/dist/index.js +59 -2
  111. package/dist/index.js.map +1 -1
  112. package/dist/library/notebook-library.d.ts +25 -2
  113. package/dist/library/notebook-library.d.ts.map +1 -1
  114. package/dist/library/notebook-library.js +144 -3
  115. package/dist/library/notebook-library.js.map +1 -1
  116. package/dist/library/types.d.ts +15 -0
  117. package/dist/library/types.d.ts.map +1 -1
  118. package/dist/notebook-creation/audio-manager.d.ts +56 -0
  119. package/dist/notebook-creation/audio-manager.d.ts.map +1 -0
  120. package/dist/notebook-creation/audio-manager.js +335 -0
  121. package/dist/notebook-creation/audio-manager.js.map +1 -0
  122. package/dist/notebook-creation/discover-creation-flow.d.ts +8 -0
  123. package/dist/notebook-creation/discover-creation-flow.d.ts.map +1 -0
  124. package/dist/notebook-creation/discover-creation-flow.js +177 -0
  125. package/dist/notebook-creation/discover-creation-flow.js.map +1 -0
  126. package/dist/notebook-creation/discover-quota.d.ts +8 -0
  127. package/dist/notebook-creation/discover-quota.d.ts.map +1 -0
  128. package/dist/notebook-creation/discover-quota.js +195 -0
  129. package/dist/notebook-creation/discover-quota.js.map +1 -0
  130. package/dist/notebook-creation/discover-source-dialog.d.ts +8 -0
  131. package/dist/notebook-creation/discover-source-dialog.d.ts.map +1 -0
  132. package/dist/notebook-creation/discover-source-dialog.js +134 -0
  133. package/dist/notebook-creation/discover-source-dialog.js.map +1 -0
  134. package/dist/notebook-creation/discover-sources.d.ts +8 -0
  135. package/dist/notebook-creation/discover-sources.d.ts.map +1 -0
  136. package/dist/notebook-creation/discover-sources.js +273 -0
  137. package/dist/notebook-creation/discover-sources.js.map +1 -0
  138. package/dist/notebook-creation/discover-text-input.d.ts +7 -0
  139. package/dist/notebook-creation/discover-text-input.d.ts.map +1 -0
  140. package/dist/notebook-creation/discover-text-input.js +135 -0
  141. package/dist/notebook-creation/discover-text-input.js.map +1 -0
  142. package/dist/notebook-creation/index.d.ts +12 -0
  143. package/dist/notebook-creation/index.d.ts.map +1 -0
  144. package/dist/notebook-creation/index.js +12 -0
  145. package/dist/notebook-creation/index.js.map +1 -0
  146. package/dist/notebook-creation/notebook-creator.d.ts +95 -0
  147. package/dist/notebook-creation/notebook-creator.d.ts.map +1 -0
  148. package/dist/notebook-creation/notebook-creator.js +689 -0
  149. package/dist/notebook-creation/notebook-creator.js.map +1 -0
  150. package/dist/notebook-creation/notebook-sync.d.ts +93 -0
  151. package/dist/notebook-creation/notebook-sync.d.ts.map +1 -0
  152. package/dist/notebook-creation/notebook-sync.js +370 -0
  153. package/dist/notebook-creation/notebook-sync.js.map +1 -0
  154. package/dist/notebook-creation/run-discovery.d.ts +11 -0
  155. package/dist/notebook-creation/run-discovery.d.ts.map +1 -0
  156. package/dist/notebook-creation/run-discovery.js +151 -0
  157. package/dist/notebook-creation/run-discovery.js.map +1 -0
  158. package/dist/notebook-creation/selector-discovery.d.ts +65 -0
  159. package/dist/notebook-creation/selector-discovery.d.ts.map +1 -0
  160. package/dist/notebook-creation/selector-discovery.js +421 -0
  161. package/dist/notebook-creation/selector-discovery.js.map +1 -0
  162. package/dist/notebook-creation/selectors.d.ts +150 -0
  163. package/dist/notebook-creation/selectors.d.ts.map +1 -0
  164. package/dist/notebook-creation/selectors.js +225 -0
  165. package/dist/notebook-creation/selectors.js.map +1 -0
  166. package/dist/notebook-creation/source-manager.d.ts +73 -0
  167. package/dist/notebook-creation/source-manager.d.ts.map +1 -0
  168. package/dist/notebook-creation/source-manager.js +486 -0
  169. package/dist/notebook-creation/source-manager.js.map +1 -0
  170. package/dist/notebook-creation/test-create.d.ts +8 -0
  171. package/dist/notebook-creation/test-create.d.ts.map +1 -0
  172. package/dist/notebook-creation/test-create.js +72 -0
  173. package/dist/notebook-creation/test-create.js.map +1 -0
  174. package/dist/notebook-creation/types.d.ts +173 -0
  175. package/dist/notebook-creation/types.d.ts.map +1 -0
  176. package/dist/notebook-creation/types.js +5 -0
  177. package/dist/notebook-creation/types.js.map +1 -0
  178. package/dist/quota/index.d.ts +8 -0
  179. package/dist/quota/index.d.ts.map +1 -0
  180. package/dist/quota/index.js +8 -0
  181. package/dist/quota/index.js.map +1 -0
  182. package/dist/quota/quota-manager.d.ts +125 -0
  183. package/dist/quota/quota-manager.d.ts.map +1 -0
  184. package/dist/quota/quota-manager.js +330 -0
  185. package/dist/quota/quota-manager.js.map +1 -0
  186. package/dist/session/session-manager.d.ts +5 -0
  187. package/dist/session/session-manager.d.ts.map +1 -1
  188. package/dist/session/session-manager.js +6 -0
  189. package/dist/session/session-manager.js.map +1 -1
  190. package/dist/session/shared-context-manager.d.ts.map +1 -1
  191. package/dist/session/shared-context-manager.js +2 -1
  192. package/dist/session/shared-context-manager.js.map +1 -1
  193. package/dist/tools/definitions/notebook-management.d.ts.map +1 -1
  194. package/dist/tools/definitions/notebook-management.js +525 -0
  195. package/dist/tools/definitions/notebook-management.js.map +1 -1
  196. package/dist/tools/definitions/system.d.ts.map +1 -1
  197. package/dist/tools/definitions/system.js +158 -0
  198. package/dist/tools/definitions/system.js.map +1 -1
  199. package/dist/tools/handlers.d.ts +225 -0
  200. package/dist/tools/handlers.d.ts.map +1 -1
  201. package/dist/tools/handlers.js +911 -0
  202. package/dist/tools/handlers.js.map +1 -1
  203. package/dist/utils/audit-logger.d.ts +21 -1
  204. package/dist/utils/audit-logger.d.ts.map +1 -1
  205. package/dist/utils/audit-logger.js +53 -4
  206. package/dist/utils/audit-logger.js.map +1 -1
  207. package/dist/utils/crypto.d.ts.map +1 -1
  208. package/dist/utils/crypto.js +8 -15
  209. package/dist/utils/crypto.js.map +1 -1
  210. package/dist/utils/file-permissions.d.ts +85 -0
  211. package/dist/utils/file-permissions.d.ts.map +1 -0
  212. package/dist/utils/file-permissions.js +180 -0
  213. package/dist/utils/file-permissions.js.map +1 -0
  214. package/dist/utils/settings-manager.d.ts.map +1 -1
  215. package/dist/utils/settings-manager.js +6 -11
  216. package/dist/utils/settings-manager.js.map +1 -1
  217. package/dist/webhooks/index.d.ts +8 -0
  218. package/dist/webhooks/index.d.ts.map +1 -0
  219. package/dist/webhooks/index.js +8 -0
  220. package/dist/webhooks/index.js.map +1 -0
  221. package/dist/webhooks/types.d.ts +57 -0
  222. package/dist/webhooks/types.d.ts.map +1 -0
  223. package/dist/webhooks/types.js +5 -0
  224. package/dist/webhooks/types.js.map +1 -0
  225. package/dist/webhooks/webhook-dispatcher.d.ts +120 -0
  226. package/dist/webhooks/webhook-dispatcher.d.ts.map +1 -0
  227. package/dist/webhooks/webhook-dispatcher.js +519 -0
  228. package/dist/webhooks/webhook-dispatcher.js.map +1 -0
  229. package/docs/COMPLIANCE-SPEC.md +1452 -0
  230. package/package.json +30 -4
@@ -4,24 +4,165 @@
4
4
  * Manages a persistent library of NotebookLM notebooks.
5
5
  * Allows Claude to autonomously add, remove, and switch between
6
6
  * multiple notebooks based on the task at hand.
7
+ *
8
+ * Supports per-project libraries based on current working directory.
7
9
  */
8
10
  import fs from "fs";
9
11
  import path from "path";
12
+ import crypto from "crypto";
10
13
  import { CONFIG } from "../config.js";
11
14
  import { log } from "../utils/logger.js";
15
+ import { writeFileSecure, PERMISSION_MODES } from "../utils/file-permissions.js";
16
+ /**
17
+ * Detect project from current working directory
18
+ */
19
+ function detectProject() {
20
+ const cwd = process.cwd();
21
+ // Priority 1: Git repository root
22
+ const gitRoot = findGitRoot(cwd);
23
+ if (gitRoot) {
24
+ return {
25
+ id: hashPath(gitRoot),
26
+ name: path.basename(gitRoot),
27
+ path: gitRoot,
28
+ type: "git",
29
+ };
30
+ }
31
+ // Priority 2: package.json location
32
+ const pkgRoot = findPackageJson(cwd);
33
+ if (pkgRoot) {
34
+ try {
35
+ const pkgPath = path.join(pkgRoot, "package.json");
36
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
37
+ return {
38
+ id: hashPath(pkgRoot),
39
+ name: pkg.name || path.basename(pkgRoot),
40
+ path: pkgRoot,
41
+ type: "npm",
42
+ };
43
+ }
44
+ catch {
45
+ return {
46
+ id: hashPath(pkgRoot),
47
+ name: path.basename(pkgRoot),
48
+ path: pkgRoot,
49
+ type: "npm",
50
+ };
51
+ }
52
+ }
53
+ // Priority 3: Return null (use global library)
54
+ // We don't create project libraries for arbitrary directories
55
+ return null;
56
+ }
57
+ /**
58
+ * Find git repository root by looking for .git directory
59
+ */
60
+ function findGitRoot(startPath) {
61
+ let currentPath = startPath;
62
+ const root = path.parse(currentPath).root;
63
+ while (currentPath !== root) {
64
+ const gitPath = path.join(currentPath, ".git");
65
+ if (fs.existsSync(gitPath)) {
66
+ return currentPath;
67
+ }
68
+ currentPath = path.dirname(currentPath);
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * Find package.json location by walking up
74
+ */
75
+ function findPackageJson(startPath) {
76
+ let currentPath = startPath;
77
+ const root = path.parse(currentPath).root;
78
+ while (currentPath !== root) {
79
+ const pkgPath = path.join(currentPath, "package.json");
80
+ if (fs.existsSync(pkgPath)) {
81
+ return currentPath;
82
+ }
83
+ currentPath = path.dirname(currentPath);
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Generate a short hash of a path for project ID
89
+ */
90
+ function hashPath(filePath) {
91
+ return crypto
92
+ .createHash("sha256")
93
+ .update(filePath)
94
+ .digest("hex")
95
+ .substring(0, 12);
96
+ }
12
97
  export class NotebookLibrary {
13
98
  libraryPath;
14
99
  library;
15
- constructor() {
16
- this.libraryPath = path.join(CONFIG.dataDir, "library.json");
100
+ projectInfo;
101
+ useProjectLibrary;
102
+ constructor(options) {
103
+ // Determine if we should use per-project libraries
104
+ this.useProjectLibrary = options?.useProjectLibrary ?? false;
105
+ // Detect or use provided project
106
+ if (options?.projectId) {
107
+ // Use provided project ID (for future use)
108
+ this.projectInfo = null; // Would need lookup
109
+ this.libraryPath = path.join(CONFIG.dataDir, "projects", options.projectId, "library.json");
110
+ }
111
+ else if (this.useProjectLibrary) {
112
+ // Auto-detect project from cwd
113
+ this.projectInfo = detectProject();
114
+ if (this.projectInfo) {
115
+ this.libraryPath = path.join(CONFIG.dataDir, "projects", this.projectInfo.id, "library.json");
116
+ }
117
+ else {
118
+ this.libraryPath = path.join(CONFIG.dataDir, "library.json");
119
+ }
120
+ }
121
+ else {
122
+ // Use global library
123
+ this.projectInfo = null;
124
+ this.libraryPath = path.join(CONFIG.dataDir, "library.json");
125
+ }
126
+ // Ensure parent directory exists
127
+ const libraryDir = path.dirname(this.libraryPath);
128
+ if (!fs.existsSync(libraryDir)) {
129
+ fs.mkdirSync(libraryDir, { recursive: true, mode: 0o700 });
130
+ }
17
131
  this.library = this.loadLibrary();
18
132
  log.info("📚 NotebookLibrary initialized");
19
133
  log.info(` Library path: ${this.libraryPath}`);
20
134
  log.info(` Notebooks: ${this.library.notebooks.length}`);
135
+ if (this.projectInfo) {
136
+ log.info(` Project: ${this.projectInfo.name} (${this.projectInfo.type})`);
137
+ }
21
138
  if (this.library.active_notebook_id) {
22
139
  log.info(` Active: ${this.library.active_notebook_id}`);
23
140
  }
24
141
  }
142
+ /**
143
+ * Get current project info (if using per-project library)
144
+ */
145
+ getProjectInfo() {
146
+ return this.projectInfo;
147
+ }
148
+ /**
149
+ * Check if using per-project library
150
+ */
151
+ isProjectLibrary() {
152
+ return this.projectInfo !== null;
153
+ }
154
+ /**
155
+ * Get library file path
156
+ */
157
+ getLibraryPath() {
158
+ return this.libraryPath;
159
+ }
160
+ /**
161
+ * Static method to detect project from current directory
162
+ */
163
+ static detectCurrentProject() {
164
+ return detectProject();
165
+ }
25
166
  /**
26
167
  * Load library from disk, or create default if not exists
27
168
  */
@@ -83,7 +224,7 @@ export class NotebookLibrary {
83
224
  try {
84
225
  library.last_modified = new Date().toISOString();
85
226
  const data = JSON.stringify(library, null, 2);
86
- fs.writeFileSync(this.libraryPath, data, "utf-8");
227
+ writeFileSecure(this.libraryPath, data, PERMISSION_MODES.OWNER_READ_WRITE);
87
228
  this.library = library;
88
229
  log.success(` 💾 Library saved (${library.notebooks.length} notebooks)`);
89
230
  }
@@ -1 +1 @@
1
- {"version":3,"file":"notebook-library.js","sourceRoot":"","sources":["../../src/library/notebook-library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notebook-library.js","sourceRoot":"","sources":["../../src/library/notebook-library.ts"],"names":[],"mappings":"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"}
@@ -64,4 +64,19 @@ export interface LibraryStats {
64
64
  total_queries: number;
65
65
  last_modified: string;
66
66
  }
67
+ /**
68
+ * Project information for per-project library support
69
+ */
70
+ export interface ProjectInfo {
71
+ id: string;
72
+ name: string;
73
+ path: string;
74
+ type: "git" | "npm" | "directory";
75
+ }
76
+ /**
77
+ * Extended library with project context
78
+ */
79
+ export interface ProjectLibrary extends Library {
80
+ project?: ProjectInfo;
81
+ }
67
82
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/library/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IAGpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/library/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IAGpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Audio Manager
3
+ *
4
+ * Manages audio overview generation in NotebookLM notebooks.
5
+ * Audio overviews are AI-generated podcast-style summaries of notebook content.
6
+ */
7
+ import { AuthManager } from "../auth/auth-manager.js";
8
+ import { SharedContextManager } from "../session/shared-context-manager.js";
9
+ export interface AudioStatus {
10
+ status: "not_started" | "generating" | "ready" | "failed" | "unknown";
11
+ progress?: number;
12
+ duration?: number;
13
+ estimatedTimeRemaining?: number;
14
+ }
15
+ export interface GenerateAudioResult {
16
+ success: boolean;
17
+ status: AudioStatus;
18
+ error?: string;
19
+ }
20
+ export interface DownloadAudioResult {
21
+ success: boolean;
22
+ filePath?: string;
23
+ size?: number;
24
+ error?: string;
25
+ }
26
+ export declare class AudioManager {
27
+ private authManager;
28
+ private contextManager;
29
+ private page;
30
+ constructor(authManager: AuthManager, contextManager: SharedContextManager);
31
+ /**
32
+ * Navigate to a notebook and ensure we're on the right page
33
+ */
34
+ private navigateToNotebook;
35
+ /**
36
+ * Generate an audio overview for a notebook
37
+ */
38
+ generateAudioOverview(notebookUrl: string): Promise<GenerateAudioResult>;
39
+ /**
40
+ * Check the current audio status for a notebook
41
+ */
42
+ getAudioStatus(notebookUrl: string): Promise<AudioStatus>;
43
+ /**
44
+ * Internal: Check audio status on current page
45
+ */
46
+ private checkAudioStatusInternal;
47
+ /**
48
+ * Download the generated audio file
49
+ */
50
+ downloadAudio(notebookUrl: string, outputPath?: string): Promise<DownloadAudioResult>;
51
+ /**
52
+ * Close the page if open
53
+ */
54
+ private closePage;
55
+ }
56
+ //# sourceMappingURL=audio-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-manager.d.ts","sourceRoot":"","sources":["../../src/notebook-creation/audio-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAM5E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiCD,qBAAa,YAAY;IAIrB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,cAAc;IAJxB,OAAO,CAAC,IAAI,CAAqB;gBAGvB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,oBAAoB;IAG9C;;OAEG;YACW,kBAAkB;IAgBhC;;OAEG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmG9E;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAc/D;;OAEG;YACW,wBAAwB;IA2DtC;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC;IA4G/B;;OAEG;YACW,SAAS;CAUxB"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Audio Manager
3
+ *
4
+ * Manages audio overview generation in NotebookLM notebooks.
5
+ * Audio overviews are AI-generated podcast-style summaries of notebook content.
6
+ */
7
+ import { log } from "../utils/logger.js";
8
+ import { randomDelay } from "../utils/stealth-utils.js";
9
+ import fs from "fs";
10
+ import path from "path";
11
+ // Selectors for audio controls (may need refinement based on actual UI)
12
+ const AUDIO_SELECTORS = {
13
+ // Generate button
14
+ generateButton: {
15
+ primary: 'button[aria-label*="audio" i], button[aria-label*="podcast" i]',
16
+ fallbacks: [
17
+ 'button:has-text("Audio Overview")',
18
+ 'button:has-text("Generate")',
19
+ '[class*="audio-generate"]',
20
+ '[data-testid*="audio"]',
21
+ ],
22
+ },
23
+ // Status indicators
24
+ status: {
25
+ generating: '[class*="generating"], [class*="processing"], [role="progressbar"]',
26
+ ready: '[class*="audio-ready"], [class*="play-button"], audio',
27
+ failed: '[class*="error"], [class*="failed"]',
28
+ },
29
+ // Audio player
30
+ player: {
31
+ container: '[class*="audio-player"], audio, [role="audio"]',
32
+ playButton: 'button[aria-label*="play" i]',
33
+ downloadButton: 'button[aria-label*="download" i], a[download]',
34
+ },
35
+ // Progress
36
+ progress: {
37
+ bar: '[role="progressbar"]',
38
+ text: '[class*="progress-text"], [class*="eta"]',
39
+ },
40
+ };
41
+ export class AudioManager {
42
+ authManager;
43
+ contextManager;
44
+ page = null;
45
+ constructor(authManager, contextManager) {
46
+ this.authManager = authManager;
47
+ this.contextManager = contextManager;
48
+ }
49
+ /**
50
+ * Navigate to a notebook and ensure we're on the right page
51
+ */
52
+ async navigateToNotebook(notebookUrl) {
53
+ const context = await this.contextManager.getOrCreateContext(true);
54
+ const isAuth = await this.authManager.validateCookiesExpiry(context);
55
+ if (!isAuth) {
56
+ throw new Error("Not authenticated. Run setup_auth first.");
57
+ }
58
+ this.page = await context.newPage();
59
+ await this.page.goto(notebookUrl, { waitUntil: "domcontentloaded" });
60
+ await this.page.waitForLoadState("networkidle").catch(() => { });
61
+ await randomDelay(1500, 2500);
62
+ return this.page;
63
+ }
64
+ /**
65
+ * Generate an audio overview for a notebook
66
+ */
67
+ async generateAudioOverview(notebookUrl) {
68
+ log.info(`🎙️ Generating audio overview for: ${notebookUrl}`);
69
+ const page = await this.navigateToNotebook(notebookUrl);
70
+ try {
71
+ // First, check current status
72
+ const currentStatus = await this.checkAudioStatusInternal(page);
73
+ if (currentStatus.status === "generating") {
74
+ log.info(" ⏳ Audio generation already in progress");
75
+ return {
76
+ success: true,
77
+ status: currentStatus,
78
+ };
79
+ }
80
+ if (currentStatus.status === "ready") {
81
+ log.info(" ✅ Audio already generated");
82
+ return {
83
+ success: true,
84
+ status: currentStatus,
85
+ };
86
+ }
87
+ // Try to find and click the generate button
88
+ let generateClicked = false;
89
+ // Try primary selector first
90
+ const primaryBtn = await page.$(AUDIO_SELECTORS.generateButton.primary);
91
+ if (primaryBtn) {
92
+ await primaryBtn.click();
93
+ generateClicked = true;
94
+ }
95
+ else {
96
+ // Try fallbacks
97
+ for (const selector of AUDIO_SELECTORS.generateButton.fallbacks) {
98
+ try {
99
+ const btn = await page.$(selector);
100
+ if (btn) {
101
+ await btn.click();
102
+ generateClicked = true;
103
+ break;
104
+ }
105
+ }
106
+ catch {
107
+ // Continue trying
108
+ }
109
+ }
110
+ }
111
+ // Also try finding by text content
112
+ if (!generateClicked) {
113
+ generateClicked = await page.evaluate(() => {
114
+ // @ts-expect-error - DOM types
115
+ const buttons = document.querySelectorAll("button");
116
+ for (const btn of buttons) {
117
+ const text = btn.textContent?.toLowerCase() || "";
118
+ if (text.includes("audio") || text.includes("podcast") || text.includes("generate")) {
119
+ if (!text.includes("stop") && !text.includes("cancel")) {
120
+ btn.click();
121
+ return true;
122
+ }
123
+ }
124
+ }
125
+ return false;
126
+ });
127
+ }
128
+ if (!generateClicked) {
129
+ log.warning(" ⚠️ Could not find audio generation button");
130
+ return {
131
+ success: false,
132
+ status: { status: "unknown" },
133
+ error: "Could not find audio generation button. The feature may not be available for this notebook.",
134
+ };
135
+ }
136
+ await randomDelay(2000, 3000);
137
+ // Check if generation started
138
+ const newStatus = await this.checkAudioStatusInternal(page);
139
+ if (newStatus.status === "generating" || newStatus.status === "ready") {
140
+ log.success(` ✅ Audio generation ${newStatus.status === "ready" ? "completed" : "started"}`);
141
+ return {
142
+ success: true,
143
+ status: newStatus,
144
+ };
145
+ }
146
+ return {
147
+ success: false,
148
+ status: newStatus,
149
+ error: "Audio generation may have failed to start. Try again or check the notebook.",
150
+ };
151
+ }
152
+ finally {
153
+ await this.closePage();
154
+ }
155
+ }
156
+ /**
157
+ * Check the current audio status for a notebook
158
+ */
159
+ async getAudioStatus(notebookUrl) {
160
+ log.info(`🔍 Checking audio status for: ${notebookUrl}`);
161
+ const page = await this.navigateToNotebook(notebookUrl);
162
+ try {
163
+ const status = await this.checkAudioStatusInternal(page);
164
+ log.info(` Status: ${status.status}`);
165
+ return status;
166
+ }
167
+ finally {
168
+ await this.closePage();
169
+ }
170
+ }
171
+ /**
172
+ * Internal: Check audio status on current page
173
+ */
174
+ async checkAudioStatusInternal(page) {
175
+ return await page.evaluate(() => {
176
+ // Check for generating state
177
+ // @ts-expect-error - DOM types
178
+ const generating = document.querySelector('[class*="generating"], [class*="processing"]');
179
+ // @ts-expect-error - DOM types
180
+ const progressBar = document.querySelector('[role="progressbar"]');
181
+ if (generating || progressBar) {
182
+ let progress = 0;
183
+ if (progressBar) {
184
+ const value = progressBar.getAttribute("aria-valuenow");
185
+ if (value) {
186
+ progress = parseInt(value, 10);
187
+ }
188
+ }
189
+ return {
190
+ status: "generating",
191
+ progress,
192
+ };
193
+ }
194
+ // Check for ready state (audio player or download button)
195
+ // @ts-expect-error - DOM types
196
+ const audioElement = document.querySelector("audio");
197
+ // @ts-expect-error - DOM types
198
+ const playButton = document.querySelector('button[aria-label*="play" i]');
199
+ // @ts-expect-error - DOM types
200
+ const downloadButton = document.querySelector('button[aria-label*="download" i], a[download]');
201
+ if (audioElement || playButton || downloadButton) {
202
+ let duration = 0;
203
+ if (audioElement) {
204
+ duration = audioElement.duration || 0;
205
+ }
206
+ return {
207
+ status: "ready",
208
+ duration,
209
+ };
210
+ }
211
+ // Check for failed state
212
+ // @ts-expect-error - DOM types
213
+ const errorElement = document.querySelector('[class*="error"], [class*="failed"]');
214
+ if (errorElement) {
215
+ return { status: "failed" };
216
+ }
217
+ // Check if audio section exists but not started
218
+ // @ts-expect-error - DOM types
219
+ const audioSection = document.querySelector('[class*="audio"], [aria-label*="audio" i]');
220
+ if (audioSection) {
221
+ return { status: "not_started" };
222
+ }
223
+ return { status: "unknown" };
224
+ });
225
+ }
226
+ /**
227
+ * Download the generated audio file
228
+ */
229
+ async downloadAudio(notebookUrl, outputPath) {
230
+ log.info(`⬇️ Downloading audio from: ${notebookUrl}`);
231
+ const page = await this.navigateToNotebook(notebookUrl);
232
+ try {
233
+ // First check if audio is ready
234
+ const status = await this.checkAudioStatusInternal(page);
235
+ if (status.status !== "ready") {
236
+ return {
237
+ success: false,
238
+ error: `Audio not ready. Current status: ${status.status}`,
239
+ };
240
+ }
241
+ // Look for download button or audio element
242
+ const downloadInfo = await page.evaluate(() => {
243
+ // Look for download button
244
+ // @ts-expect-error - DOM types
245
+ const downloadBtn = document.querySelector('button[aria-label*="download" i], a[download]');
246
+ if (downloadBtn) {
247
+ const href = downloadBtn.href || downloadBtn.getAttribute("data-url");
248
+ return { type: "button", url: href };
249
+ }
250
+ // Look for audio element source
251
+ // @ts-expect-error - DOM types
252
+ const audio = document.querySelector("audio");
253
+ if (audio) {
254
+ const src = audio.src || audio.currentSrc;
255
+ return { type: "audio", url: src };
256
+ }
257
+ return null;
258
+ });
259
+ if (!downloadInfo || !downloadInfo.url) {
260
+ // Try clicking download button directly
261
+ const clicked = await page.evaluate(() => {
262
+ // @ts-expect-error - DOM types
263
+ const buttons = document.querySelectorAll("button, a");
264
+ for (const btn of buttons) {
265
+ const text = btn.textContent?.toLowerCase() || "";
266
+ const aria = btn.getAttribute("aria-label")?.toLowerCase() || "";
267
+ if (text.includes("download") || aria.includes("download")) {
268
+ btn.click();
269
+ return true;
270
+ }
271
+ }
272
+ return false;
273
+ });
274
+ if (clicked) {
275
+ // Wait for download to start
276
+ await randomDelay(2000, 3000);
277
+ // Note: Actual file download handling would require more complex logic
278
+ return {
279
+ success: true,
280
+ error: "Download initiated. Check your downloads folder.",
281
+ };
282
+ }
283
+ return {
284
+ success: false,
285
+ error: "Could not find download button or audio source",
286
+ };
287
+ }
288
+ // Generate output path if not provided
289
+ const finalPath = outputPath || path.join(process.env.HOME || process.env.USERPROFILE || ".", `notebooklm-audio-${Date.now()}.mp3`);
290
+ // Download the file using the page context
291
+ const response = await page.goto(downloadInfo.url);
292
+ if (!response) {
293
+ return {
294
+ success: false,
295
+ error: "Failed to fetch audio file",
296
+ };
297
+ }
298
+ const buffer = await response.body();
299
+ fs.writeFileSync(finalPath, buffer);
300
+ const stats = fs.statSync(finalPath);
301
+ log.success(` ✅ Audio downloaded: ${finalPath} (${stats.size} bytes)`);
302
+ return {
303
+ success: true,
304
+ filePath: finalPath,
305
+ size: stats.size,
306
+ };
307
+ }
308
+ catch (error) {
309
+ const msg = error instanceof Error ? error.message : String(error);
310
+ log.error(` ❌ Failed to download audio: ${msg}`);
311
+ return {
312
+ success: false,
313
+ error: msg,
314
+ };
315
+ }
316
+ finally {
317
+ await this.closePage();
318
+ }
319
+ }
320
+ /**
321
+ * Close the page if open
322
+ */
323
+ async closePage() {
324
+ if (this.page) {
325
+ try {
326
+ await this.page.close();
327
+ }
328
+ catch {
329
+ // Ignore close errors
330
+ }
331
+ this.page = null;
332
+ }
333
+ }
334
+ }
335
+ //# sourceMappingURL=audio-manager.js.map