@pan-sec/notebooklm-mcp 2026.3.3 → 2026.4.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 (470) hide show
  1. package/dist/auth/auth-manager.d.ts +0 -1
  2. package/dist/auth/auth-manager.js +0 -1
  3. package/dist/auth/mcp-auth.d.ts +0 -1
  4. package/dist/auth/mcp-auth.js +0 -1
  5. package/dist/compliance/alert-manager.d.ts +6 -2
  6. package/dist/compliance/alert-manager.js +40 -10
  7. package/dist/compliance/breach-detection.d.ts +0 -1
  8. package/dist/compliance/breach-detection.js +0 -1
  9. package/dist/compliance/change-log.d.ts +13 -1
  10. package/dist/compliance/change-log.js +82 -16
  11. package/dist/compliance/compliance-logger.d.ts +29 -3
  12. package/dist/compliance/compliance-logger.js +90 -27
  13. package/dist/compliance/compliance-tools.d.ts +0 -1
  14. package/dist/compliance/compliance-tools.js +0 -1
  15. package/dist/compliance/consent-manager.d.ts +0 -1
  16. package/dist/compliance/consent-manager.js +0 -1
  17. package/dist/compliance/dashboard.d.ts +4 -3
  18. package/dist/compliance/dashboard.js +11 -8
  19. package/dist/compliance/data-classification.d.ts +0 -1
  20. package/dist/compliance/data-classification.js +0 -1
  21. package/dist/compliance/data-erasure.d.ts +0 -1
  22. package/dist/compliance/data-erasure.js +0 -1
  23. package/dist/compliance/data-export.d.ts +0 -1
  24. package/dist/compliance/data-export.js +0 -1
  25. package/dist/compliance/data-inventory.d.ts +0 -1
  26. package/dist/compliance/data-inventory.js +0 -1
  27. package/dist/compliance/dsar-handler.d.ts +0 -1
  28. package/dist/compliance/dsar-handler.js +0 -1
  29. package/dist/compliance/evidence-collector.d.ts +0 -1
  30. package/dist/compliance/evidence-collector.js +4 -2
  31. package/dist/compliance/health-monitor.d.ts +0 -1
  32. package/dist/compliance/health-monitor.js +0 -1
  33. package/dist/compliance/incident-manager.d.ts +0 -1
  34. package/dist/compliance/incident-manager.js +0 -1
  35. package/dist/compliance/index.d.ts +0 -1
  36. package/dist/compliance/index.js +0 -1
  37. package/dist/compliance/policy-docs.d.ts +0 -1
  38. package/dist/compliance/policy-docs.js +0 -1
  39. package/dist/compliance/privacy-notice-text.d.ts +0 -1
  40. package/dist/compliance/privacy-notice-text.js +0 -1
  41. package/dist/compliance/privacy-notice.d.ts +0 -1
  42. package/dist/compliance/privacy-notice.js +0 -1
  43. package/dist/compliance/report-generator.d.ts +7 -1
  44. package/dist/compliance/report-generator.js +116 -34
  45. package/dist/compliance/retention-engine.d.ts +0 -1
  46. package/dist/compliance/retention-engine.js +0 -1
  47. package/dist/compliance/siem-exporter.d.ts +26 -2
  48. package/dist/compliance/siem-exporter.js +89 -24
  49. package/dist/compliance/types.d.ts +0 -1
  50. package/dist/compliance/types.js +0 -1
  51. package/dist/config.d.ts +0 -1
  52. package/dist/config.js +2 -3
  53. package/dist/errors.d.ts +0 -1
  54. package/dist/errors.js +0 -1
  55. package/dist/events/event-emitter.d.ts +9 -1
  56. package/dist/events/event-emitter.js +47 -8
  57. package/dist/events/event-types.d.ts +0 -1
  58. package/dist/events/event-types.js +8 -2
  59. package/dist/gemini/gemini-client.d.ts +0 -1
  60. package/dist/gemini/gemini-client.js +237 -45
  61. package/dist/gemini/index.d.ts +0 -1
  62. package/dist/gemini/index.js +0 -1
  63. package/dist/gemini/pdf-chunker.d.ts +0 -1
  64. package/dist/gemini/pdf-chunker.js +60 -35
  65. package/dist/gemini/types.d.ts +0 -1
  66. package/dist/gemini/types.js +0 -1
  67. package/dist/index.d.ts +0 -1
  68. package/dist/index.js +60 -7
  69. package/dist/library/notebook-library.d.ts +30 -2
  70. package/dist/library/notebook-library.js +345 -85
  71. package/dist/library/types.d.ts +0 -1
  72. package/dist/library/types.js +0 -1
  73. package/dist/logging/index.d.ts +0 -1
  74. package/dist/logging/index.js +0 -1
  75. package/dist/logging/query-logger.d.ts +20 -1
  76. package/dist/logging/query-logger.js +104 -21
  77. package/dist/notebook-creation/audio-manager.d.ts +7 -16
  78. package/dist/notebook-creation/audio-manager.js +115 -58
  79. package/dist/notebook-creation/browser-options.d.ts +0 -1
  80. package/dist/notebook-creation/browser-options.js +0 -1
  81. package/dist/notebook-creation/data-table-manager.d.ts +8 -14
  82. package/dist/notebook-creation/data-table-manager.js +64 -37
  83. package/dist/notebook-creation/dom-scripts.d.ts +0 -1
  84. package/dist/notebook-creation/dom-scripts.js +0 -1
  85. package/dist/notebook-creation/errors.d.ts +0 -1
  86. package/dist/notebook-creation/errors.js +0 -1
  87. package/dist/notebook-creation/index.d.ts +0 -1
  88. package/dist/notebook-creation/index.js +0 -1
  89. package/dist/notebook-creation/notebook-creator.d.ts +9 -1
  90. package/dist/notebook-creation/notebook-creator.js +50 -1
  91. package/dist/notebook-creation/notebook-nav.d.ts +0 -1
  92. package/dist/notebook-creation/notebook-nav.js +21 -6
  93. package/dist/notebook-creation/notebook-sync.d.ts +14 -2
  94. package/dist/notebook-creation/notebook-sync.js +124 -35
  95. package/dist/notebook-creation/selectors.d.ts +0 -1
  96. package/dist/notebook-creation/selectors.js +6 -4
  97. package/dist/notebook-creation/source-manager-shared.d.ts +75 -0
  98. package/dist/notebook-creation/source-manager-shared.js +86 -0
  99. package/dist/notebook-creation/source-manager.d.ts +29 -2
  100. package/dist/notebook-creation/source-manager.js +0 -0
  101. package/dist/notebook-creation/studio-manager-base.d.ts +57 -0
  102. package/dist/notebook-creation/studio-manager-base.js +67 -0
  103. package/dist/notebook-creation/types.d.ts +0 -1
  104. package/dist/notebook-creation/types.js +0 -1
  105. package/dist/notebook-creation/video-manager.d.ts +3 -16
  106. package/dist/notebook-creation/video-manager.js +94 -53
  107. package/dist/observability/metrics.d.ts +0 -1
  108. package/dist/observability/metrics.js +0 -1
  109. package/dist/quota/index.d.ts +0 -1
  110. package/dist/quota/index.js +0 -1
  111. package/dist/quota/quota-manager.d.ts +59 -4
  112. package/dist/quota/quota-manager.js +195 -46
  113. package/dist/resources/resource-handlers.d.ts +0 -1
  114. package/dist/resources/resource-handlers.js +33 -3
  115. package/dist/session/browser-session.d.ts +0 -1
  116. package/dist/session/browser-session.js +0 -1
  117. package/dist/session/session-manager.d.ts +0 -1
  118. package/dist/session/session-manager.js +0 -1
  119. package/dist/session/session-timeout.d.ts +0 -1
  120. package/dist/session/session-timeout.js +0 -1
  121. package/dist/session/shared-context-manager.d.ts +0 -1
  122. package/dist/session/shared-context-manager.js +0 -1
  123. package/dist/tools/annotations.d.ts +0 -1
  124. package/dist/tools/annotations.js +0 -1
  125. package/dist/tools/definitions/ask-question.d.ts +6 -3
  126. package/dist/tools/definitions/ask-question.js +12 -8
  127. package/dist/tools/definitions/chat-history.d.ts +0 -1
  128. package/dist/tools/definitions/chat-history.js +1 -1
  129. package/dist/tools/definitions/data-tables.d.ts +0 -1
  130. package/dist/tools/definitions/data-tables.js +4 -1
  131. package/dist/tools/definitions/gemini.d.ts +0 -1
  132. package/dist/tools/definitions/gemini.js +14 -7
  133. package/dist/tools/definitions/notebook-management.d.ts +0 -1
  134. package/dist/tools/definitions/notebook-management.js +7 -2
  135. package/dist/tools/definitions/query-history.d.ts +0 -1
  136. package/dist/tools/definitions/query-history.js +0 -1
  137. package/dist/tools/definitions/session-management.d.ts +0 -1
  138. package/dist/tools/definitions/session-management.js +0 -1
  139. package/dist/tools/definitions/system.d.ts +0 -1
  140. package/dist/tools/definitions/system.js +32 -12
  141. package/dist/tools/definitions/video.d.ts +0 -1
  142. package/dist/tools/definitions/video.js +6 -3
  143. package/dist/tools/definitions.d.ts +0 -1
  144. package/dist/tools/definitions.js +0 -1
  145. package/dist/tools/handlers/ask-question.d.ts +0 -1
  146. package/dist/tools/handlers/ask-question.js +47 -18
  147. package/dist/tools/handlers/audio-video.d.ts +0 -1
  148. package/dist/tools/handlers/audio-video.js +0 -1
  149. package/dist/tools/handlers/auth.d.ts +0 -1
  150. package/dist/tools/handlers/auth.js +0 -1
  151. package/dist/tools/handlers/error-utils.d.ts +0 -1
  152. package/dist/tools/handlers/error-utils.js +0 -1
  153. package/dist/tools/handlers/gemini.d.ts +0 -1
  154. package/dist/tools/handlers/gemini.js +0 -1
  155. package/dist/tools/handlers/index.d.ts +0 -1
  156. package/dist/tools/handlers/index.js +0 -1
  157. package/dist/tools/handlers/notebook-creation.d.ts +0 -1
  158. package/dist/tools/handlers/notebook-creation.js +16 -1
  159. package/dist/tools/handlers/notebook-management.d.ts +0 -1
  160. package/dist/tools/handlers/notebook-management.js +7 -2
  161. package/dist/tools/handlers/session-management.d.ts +0 -1
  162. package/dist/tools/handlers/session-management.js +0 -1
  163. package/dist/tools/handlers/system.d.ts +0 -1
  164. package/dist/tools/handlers/system.js +0 -1
  165. package/dist/tools/handlers/types.d.ts +0 -1
  166. package/dist/tools/handlers/types.js +0 -1
  167. package/dist/tools/handlers/webhooks.d.ts +0 -1
  168. package/dist/tools/handlers/webhooks.js +0 -1
  169. package/dist/tools/icons.d.ts +0 -1
  170. package/dist/tools/icons.js +0 -1
  171. package/dist/tools/index.d.ts +0 -1
  172. package/dist/tools/index.js +0 -1
  173. package/dist/types.d.ts +0 -1
  174. package/dist/types.js +0 -1
  175. package/dist/utils/audit-logger.d.ts +11 -1
  176. package/dist/utils/audit-logger.js +189 -21
  177. package/dist/utils/cleanup-manager.d.ts +0 -1
  178. package/dist/utils/cleanup-manager.js +0 -1
  179. package/dist/utils/cli-handler.d.ts +0 -1
  180. package/dist/utils/cli-handler.js +0 -1
  181. package/dist/utils/crypto.d.ts +18 -9
  182. package/dist/utils/crypto.js +93 -28
  183. package/dist/utils/file-lock.d.ts +15 -1
  184. package/dist/utils/file-lock.js +67 -59
  185. package/dist/utils/file-permissions.d.ts +0 -1
  186. package/dist/utils/file-permissions.js +35 -7
  187. package/dist/utils/logger.d.ts +0 -1
  188. package/dist/utils/logger.js +0 -1
  189. package/dist/utils/page-utils.d.ts +0 -1
  190. package/dist/utils/page-utils.js +32 -28
  191. package/dist/utils/response-validator.d.ts +0 -1
  192. package/dist/utils/response-validator.js +18 -15
  193. package/dist/utils/secrets-scanner.d.ts +0 -1
  194. package/dist/utils/secrets-scanner.js +32 -7
  195. package/dist/utils/secure-memory.d.ts +34 -16
  196. package/dist/utils/secure-memory.js +40 -25
  197. package/dist/utils/security.d.ts +0 -1
  198. package/dist/utils/security.js +66 -39
  199. package/dist/utils/settings-manager.d.ts +9 -1
  200. package/dist/utils/settings-manager.js +45 -2
  201. package/dist/utils/stealth-utils.d.ts +0 -1
  202. package/dist/utils/stealth-utils.js +11 -9
  203. package/dist/webhooks/index.d.ts +0 -1
  204. package/dist/webhooks/index.js +0 -1
  205. package/dist/webhooks/types.d.ts +0 -1
  206. package/dist/webhooks/types.js +0 -1
  207. package/dist/webhooks/webhook-dispatcher.d.ts +0 -1
  208. package/dist/webhooks/webhook-dispatcher.js +0 -1
  209. package/package.json +5 -4
  210. package/dist/auth/auth-manager.d.ts.map +0 -1
  211. package/dist/auth/auth-manager.js.map +0 -1
  212. package/dist/auth/mcp-auth.d.ts.map +0 -1
  213. package/dist/auth/mcp-auth.js.map +0 -1
  214. package/dist/compliance/alert-manager.d.ts.map +0 -1
  215. package/dist/compliance/alert-manager.js.map +0 -1
  216. package/dist/compliance/breach-detection.d.ts.map +0 -1
  217. package/dist/compliance/breach-detection.js.map +0 -1
  218. package/dist/compliance/change-log.d.ts.map +0 -1
  219. package/dist/compliance/change-log.js.map +0 -1
  220. package/dist/compliance/compliance-logger.d.ts.map +0 -1
  221. package/dist/compliance/compliance-logger.js.map +0 -1
  222. package/dist/compliance/compliance-tools.d.ts.map +0 -1
  223. package/dist/compliance/compliance-tools.js.map +0 -1
  224. package/dist/compliance/consent-manager.d.ts.map +0 -1
  225. package/dist/compliance/consent-manager.js.map +0 -1
  226. package/dist/compliance/dashboard.d.ts.map +0 -1
  227. package/dist/compliance/dashboard.js.map +0 -1
  228. package/dist/compliance/data-classification.d.ts.map +0 -1
  229. package/dist/compliance/data-classification.js.map +0 -1
  230. package/dist/compliance/data-erasure.d.ts.map +0 -1
  231. package/dist/compliance/data-erasure.js.map +0 -1
  232. package/dist/compliance/data-export.d.ts.map +0 -1
  233. package/dist/compliance/data-export.js.map +0 -1
  234. package/dist/compliance/data-inventory.d.ts.map +0 -1
  235. package/dist/compliance/data-inventory.js.map +0 -1
  236. package/dist/compliance/dsar-handler.d.ts.map +0 -1
  237. package/dist/compliance/dsar-handler.js.map +0 -1
  238. package/dist/compliance/evidence-collector.d.ts.map +0 -1
  239. package/dist/compliance/evidence-collector.js.map +0 -1
  240. package/dist/compliance/health-monitor.d.ts.map +0 -1
  241. package/dist/compliance/health-monitor.js.map +0 -1
  242. package/dist/compliance/incident-manager.d.ts.map +0 -1
  243. package/dist/compliance/incident-manager.js.map +0 -1
  244. package/dist/compliance/index.d.ts.map +0 -1
  245. package/dist/compliance/index.js.map +0 -1
  246. package/dist/compliance/policy-docs.d.ts.map +0 -1
  247. package/dist/compliance/policy-docs.js.map +0 -1
  248. package/dist/compliance/privacy-notice-text.d.ts.map +0 -1
  249. package/dist/compliance/privacy-notice-text.js.map +0 -1
  250. package/dist/compliance/privacy-notice.d.ts.map +0 -1
  251. package/dist/compliance/privacy-notice.js.map +0 -1
  252. package/dist/compliance/report-generator.d.ts.map +0 -1
  253. package/dist/compliance/report-generator.js.map +0 -1
  254. package/dist/compliance/retention-engine.d.ts.map +0 -1
  255. package/dist/compliance/retention-engine.js.map +0 -1
  256. package/dist/compliance/siem-exporter.d.ts.map +0 -1
  257. package/dist/compliance/siem-exporter.js.map +0 -1
  258. package/dist/compliance/types.d.ts.map +0 -1
  259. package/dist/compliance/types.js.map +0 -1
  260. package/dist/config.d.ts.map +0 -1
  261. package/dist/config.js.map +0 -1
  262. package/dist/errors.d.ts.map +0 -1
  263. package/dist/errors.js.map +0 -1
  264. package/dist/events/event-emitter.d.ts.map +0 -1
  265. package/dist/events/event-emitter.js.map +0 -1
  266. package/dist/events/event-types.d.ts.map +0 -1
  267. package/dist/events/event-types.js.map +0 -1
  268. package/dist/gemini/gemini-client.d.ts.map +0 -1
  269. package/dist/gemini/gemini-client.js.map +0 -1
  270. package/dist/gemini/index.d.ts.map +0 -1
  271. package/dist/gemini/index.js.map +0 -1
  272. package/dist/gemini/pdf-chunker.d.ts.map +0 -1
  273. package/dist/gemini/pdf-chunker.js.map +0 -1
  274. package/dist/gemini/types.d.ts.map +0 -1
  275. package/dist/gemini/types.js.map +0 -1
  276. package/dist/index.d.ts.map +0 -1
  277. package/dist/index.js.map +0 -1
  278. package/dist/library/notebook-library.d.ts.map +0 -1
  279. package/dist/library/notebook-library.js.map +0 -1
  280. package/dist/library/types.d.ts.map +0 -1
  281. package/dist/library/types.js.map +0 -1
  282. package/dist/logging/index.d.ts.map +0 -1
  283. package/dist/logging/index.js.map +0 -1
  284. package/dist/logging/query-logger.d.ts.map +0 -1
  285. package/dist/logging/query-logger.js.map +0 -1
  286. package/dist/notebook-creation/audio-manager.d.ts.map +0 -1
  287. package/dist/notebook-creation/audio-manager.js.map +0 -1
  288. package/dist/notebook-creation/browser-options.d.ts.map +0 -1
  289. package/dist/notebook-creation/browser-options.js.map +0 -1
  290. package/dist/notebook-creation/data-table-manager.d.ts.map +0 -1
  291. package/dist/notebook-creation/data-table-manager.js.map +0 -1
  292. package/dist/notebook-creation/discover-creation-flow.d.ts +0 -2
  293. package/dist/notebook-creation/discover-creation-flow.d.ts.map +0 -1
  294. package/dist/notebook-creation/discover-creation-flow.js +0 -177
  295. package/dist/notebook-creation/discover-creation-flow.js.map +0 -1
  296. package/dist/notebook-creation/discover-quota.d.ts +0 -2
  297. package/dist/notebook-creation/discover-quota.d.ts.map +0 -1
  298. package/dist/notebook-creation/discover-quota.js +0 -194
  299. package/dist/notebook-creation/discover-quota.js.map +0 -1
  300. package/dist/notebook-creation/discover-source-dialog.d.ts +0 -8
  301. package/dist/notebook-creation/discover-source-dialog.d.ts.map +0 -1
  302. package/dist/notebook-creation/discover-source-dialog.js +0 -134
  303. package/dist/notebook-creation/discover-source-dialog.js.map +0 -1
  304. package/dist/notebook-creation/discover-sources.d.ts +0 -8
  305. package/dist/notebook-creation/discover-sources.d.ts.map +0 -1
  306. package/dist/notebook-creation/discover-sources.js +0 -272
  307. package/dist/notebook-creation/discover-sources.js.map +0 -1
  308. package/dist/notebook-creation/discover-text-input.d.ts +0 -7
  309. package/dist/notebook-creation/discover-text-input.d.ts.map +0 -1
  310. package/dist/notebook-creation/discover-text-input.js +0 -135
  311. package/dist/notebook-creation/discover-text-input.js.map +0 -1
  312. package/dist/notebook-creation/dom-scripts.d.ts.map +0 -1
  313. package/dist/notebook-creation/dom-scripts.js.map +0 -1
  314. package/dist/notebook-creation/errors.d.ts.map +0 -1
  315. package/dist/notebook-creation/errors.js.map +0 -1
  316. package/dist/notebook-creation/index.d.ts.map +0 -1
  317. package/dist/notebook-creation/index.js.map +0 -1
  318. package/dist/notebook-creation/notebook-creator.d.ts.map +0 -1
  319. package/dist/notebook-creation/notebook-creator.js.map +0 -1
  320. package/dist/notebook-creation/notebook-nav.d.ts.map +0 -1
  321. package/dist/notebook-creation/notebook-nav.js.map +0 -1
  322. package/dist/notebook-creation/notebook-sync.d.ts.map +0 -1
  323. package/dist/notebook-creation/notebook-sync.js.map +0 -1
  324. package/dist/notebook-creation/run-discovery.d.ts +0 -11
  325. package/dist/notebook-creation/run-discovery.d.ts.map +0 -1
  326. package/dist/notebook-creation/run-discovery.js +0 -151
  327. package/dist/notebook-creation/run-discovery.js.map +0 -1
  328. package/dist/notebook-creation/selector-discovery.d.ts +0 -65
  329. package/dist/notebook-creation/selector-discovery.d.ts.map +0 -1
  330. package/dist/notebook-creation/selector-discovery.js +0 -414
  331. package/dist/notebook-creation/selector-discovery.js.map +0 -1
  332. package/dist/notebook-creation/selectors.d.ts.map +0 -1
  333. package/dist/notebook-creation/selectors.js.map +0 -1
  334. package/dist/notebook-creation/selectors.ts +0 -112
  335. package/dist/notebook-creation/source-manager.d.ts.map +0 -1
  336. package/dist/notebook-creation/source-manager.js.map +0 -1
  337. package/dist/notebook-creation/test-create.d.ts +0 -8
  338. package/dist/notebook-creation/test-create.d.ts.map +0 -1
  339. package/dist/notebook-creation/test-create.js +0 -72
  340. package/dist/notebook-creation/test-create.js.map +0 -1
  341. package/dist/notebook-creation/types.d.ts.map +0 -1
  342. package/dist/notebook-creation/types.js.map +0 -1
  343. package/dist/notebook-creation/video-manager.d.ts.map +0 -1
  344. package/dist/notebook-creation/video-manager.js.map +0 -1
  345. package/dist/observability/metrics.d.ts.map +0 -1
  346. package/dist/observability/metrics.js.map +0 -1
  347. package/dist/quota/index.d.ts.map +0 -1
  348. package/dist/quota/index.js.map +0 -1
  349. package/dist/quota/quota-manager.d.ts.map +0 -1
  350. package/dist/quota/quota-manager.js.map +0 -1
  351. package/dist/resources/resource-handlers.d.ts.map +0 -1
  352. package/dist/resources/resource-handlers.js.map +0 -1
  353. package/dist/session/browser-session.d.ts.map +0 -1
  354. package/dist/session/browser-session.js.map +0 -1
  355. package/dist/session/session-manager.d.ts.map +0 -1
  356. package/dist/session/session-manager.js.map +0 -1
  357. package/dist/session/session-timeout.d.ts.map +0 -1
  358. package/dist/session/session-timeout.js.map +0 -1
  359. package/dist/session/shared-context-manager.d.ts.map +0 -1
  360. package/dist/session/shared-context-manager.js.map +0 -1
  361. package/dist/tools/annotations.d.ts.map +0 -1
  362. package/dist/tools/annotations.js.map +0 -1
  363. package/dist/tools/definitions/ask-question.d.ts.map +0 -1
  364. package/dist/tools/definitions/ask-question.js.map +0 -1
  365. package/dist/tools/definitions/chat-history.d.ts.map +0 -1
  366. package/dist/tools/definitions/chat-history.js.map +0 -1
  367. package/dist/tools/definitions/data-tables.d.ts.map +0 -1
  368. package/dist/tools/definitions/data-tables.js.map +0 -1
  369. package/dist/tools/definitions/gemini.d.ts.map +0 -1
  370. package/dist/tools/definitions/gemini.js.map +0 -1
  371. package/dist/tools/definitions/notebook-management.d.ts.map +0 -1
  372. package/dist/tools/definitions/notebook-management.js.map +0 -1
  373. package/dist/tools/definitions/query-history.d.ts.map +0 -1
  374. package/dist/tools/definitions/query-history.js.map +0 -1
  375. package/dist/tools/definitions/session-management.d.ts.map +0 -1
  376. package/dist/tools/definitions/session-management.js.map +0 -1
  377. package/dist/tools/definitions/system.d.ts.map +0 -1
  378. package/dist/tools/definitions/system.js.map +0 -1
  379. package/dist/tools/definitions/video.d.ts.map +0 -1
  380. package/dist/tools/definitions/video.js.map +0 -1
  381. package/dist/tools/definitions.d.ts.map +0 -1
  382. package/dist/tools/definitions.js.map +0 -1
  383. package/dist/tools/handlers/ask-question.d.ts.map +0 -1
  384. package/dist/tools/handlers/ask-question.js.map +0 -1
  385. package/dist/tools/handlers/audio-video.d.ts.map +0 -1
  386. package/dist/tools/handlers/audio-video.js.map +0 -1
  387. package/dist/tools/handlers/auth.d.ts.map +0 -1
  388. package/dist/tools/handlers/auth.js.map +0 -1
  389. package/dist/tools/handlers/error-utils.d.ts.map +0 -1
  390. package/dist/tools/handlers/error-utils.js.map +0 -1
  391. package/dist/tools/handlers/gemini.d.ts.map +0 -1
  392. package/dist/tools/handlers/gemini.js.map +0 -1
  393. package/dist/tools/handlers/index.d.ts.map +0 -1
  394. package/dist/tools/handlers/index.js.map +0 -1
  395. package/dist/tools/handlers/notebook-creation.d.ts.map +0 -1
  396. package/dist/tools/handlers/notebook-creation.js.map +0 -1
  397. package/dist/tools/handlers/notebook-management.d.ts.map +0 -1
  398. package/dist/tools/handlers/notebook-management.js.map +0 -1
  399. package/dist/tools/handlers/session-management.d.ts.map +0 -1
  400. package/dist/tools/handlers/session-management.js.map +0 -1
  401. package/dist/tools/handlers/system.d.ts.map +0 -1
  402. package/dist/tools/handlers/system.js.map +0 -1
  403. package/dist/tools/handlers/types.d.ts.map +0 -1
  404. package/dist/tools/handlers/types.js.map +0 -1
  405. package/dist/tools/handlers/webhooks.d.ts.map +0 -1
  406. package/dist/tools/handlers/webhooks.js.map +0 -1
  407. package/dist/tools/handlers.d.ts +0 -666
  408. package/dist/tools/handlers.d.ts.map +0 -1
  409. package/dist/tools/handlers.js +0 -2929
  410. package/dist/tools/handlers.js.map +0 -1
  411. package/dist/tools/icons.d.ts.map +0 -1
  412. package/dist/tools/icons.js.map +0 -1
  413. package/dist/tools/index.d.ts.map +0 -1
  414. package/dist/tools/index.js.map +0 -1
  415. package/dist/types.d.ts.map +0 -1
  416. package/dist/types.js.map +0 -1
  417. package/dist/utils/audit-logger.d.ts.map +0 -1
  418. package/dist/utils/audit-logger.js.map +0 -1
  419. package/dist/utils/cert-pinning.d.ts +0 -97
  420. package/dist/utils/cert-pinning.d.ts.map +0 -1
  421. package/dist/utils/cert-pinning.js +0 -328
  422. package/dist/utils/cert-pinning.js.map +0 -1
  423. package/dist/utils/cleanup-manager.d.ts.map +0 -1
  424. package/dist/utils/cleanup-manager.js.map +0 -1
  425. package/dist/utils/cli-handler.d.ts.map +0 -1
  426. package/dist/utils/cli-handler.js.map +0 -1
  427. package/dist/utils/crypto.d.ts.map +0 -1
  428. package/dist/utils/crypto.js.map +0 -1
  429. package/dist/utils/file-lock.d.ts.map +0 -1
  430. package/dist/utils/file-lock.js.map +0 -1
  431. package/dist/utils/file-permissions.d.ts.map +0 -1
  432. package/dist/utils/file-permissions.js.map +0 -1
  433. package/dist/utils/logger.d.ts.map +0 -1
  434. package/dist/utils/logger.js.map +0 -1
  435. package/dist/utils/page-utils.d.ts.map +0 -1
  436. package/dist/utils/page-utils.js.map +0 -1
  437. package/dist/utils/response-validator.d.ts.map +0 -1
  438. package/dist/utils/response-validator.js.map +0 -1
  439. package/dist/utils/secrets-scanner.d.ts.map +0 -1
  440. package/dist/utils/secrets-scanner.js.map +0 -1
  441. package/dist/utils/secure-memory.d.ts.map +0 -1
  442. package/dist/utils/secure-memory.js.map +0 -1
  443. package/dist/utils/security.d.ts.map +0 -1
  444. package/dist/utils/security.js.map +0 -1
  445. package/dist/utils/settings-manager.d.ts.map +0 -1
  446. package/dist/utils/settings-manager.js.map +0 -1
  447. package/dist/utils/stealth-utils.d.ts.map +0 -1
  448. package/dist/utils/stealth-utils.js.map +0 -1
  449. package/dist/utils/tool-validation.d.ts +0 -93
  450. package/dist/utils/tool-validation.d.ts.map +0 -1
  451. package/dist/utils/tool-validation.js +0 -277
  452. package/dist/utils/tool-validation.js.map +0 -1
  453. package/dist/webhooks/index.d.ts.map +0 -1
  454. package/dist/webhooks/index.js.map +0 -1
  455. package/dist/webhooks/types.d.ts.map +0 -1
  456. package/dist/webhooks/types.js.map +0 -1
  457. package/dist/webhooks/webhook-dispatcher.d.ts.map +0 -1
  458. package/dist/webhooks/webhook-dispatcher.js.map +0 -1
  459. package/docs/COMPLIANCE-SPEC.md +0 -1452
  460. package/docs/MCP-DIRECTORY-LISTINGS.md +0 -91
  461. package/docs/SECURITY-FORK-OPPORTUNITIES.md +0 -79
  462. package/docs/SECURITY_IMPLEMENTATION_PLAN.md +0 -437
  463. package/docs/archive/ISSUES-legacy-2026-04-24.md +0 -644
  464. package/docs/configuration.md +0 -94
  465. package/docs/dependency-risk.md +0 -25
  466. package/docs/improvement-sprint-2026.2.10.md +0 -210
  467. package/docs/testing-runbook.md +0 -166
  468. package/docs/tools.md +0 -34
  469. package/docs/troubleshooting.md +0 -59
  470. package/docs/usage-guide.md +0 -246
@@ -1,94 +0,0 @@
1
- ## Configuration
2
-
3
- **No config files needed!** The server works out of the box with sensible defaults.
4
-
5
- ### Configuration Priority (highest to lowest):
6
- 1. **Tool Parameters** - Claude passes settings like `browser_options` at runtime
7
- 2. **Environment Variables** - Optional overrides for advanced users
8
- 3. **Hardcoded Defaults** - Sensible defaults that work for most users
9
-
10
- ---
11
-
12
- ## Tool Parameters (Runtime Configuration)
13
-
14
- Claude can control browser behavior via the `browser_options` parameter in tools like `ask_question`, `setup_auth`, and `re_auth`:
15
-
16
- ```typescript
17
- browser_options: {
18
- show: boolean, // Show browser window (overrides headless)
19
- headless: boolean, // Run in headless mode (default: true)
20
- timeout_ms: number, // Browser timeout in ms (default: 30000)
21
-
22
- stealth: {
23
- enabled: boolean, // Master switch (default: true)
24
- random_delays: boolean, // Random delays between actions (default: true)
25
- human_typing: boolean, // Human-like typing (default: true)
26
- mouse_movements: boolean, // Realistic mouse movements (default: true)
27
- typing_wpm_min: number, // Min typing speed (default: 160)
28
- typing_wpm_max: number, // Max typing speed (default: 240)
29
- delay_min_ms: number, // Min delay between actions (default: 100)
30
- delay_max_ms: number, // Max delay between actions (default: 400)
31
- },
32
-
33
- viewport: {
34
- width: number, // Viewport width (default: 1024)
35
- height: number, // Viewport height (default: 768)
36
- }
37
- }
38
- ```
39
-
40
- **Example usage:**
41
- - "Research this and show me the browser" → Sets `show: true`
42
- - "Use slow typing for this query" → Adjusts typing WPM via stealth settings
43
-
44
- ---
45
-
46
- ## Environment Variables (Optional)
47
-
48
- For advanced users who want to set global defaults:
49
- - Auth
50
- - `AUTO_LOGIN_ENABLED` — `true|false` (default `false`)
51
- - `LOGIN_EMAIL`, `LOGIN_PASSWORD` — for auto‑login if enabled
52
- - `AUTO_LOGIN_TIMEOUT_MS` (default `120000`)
53
- - Stealth / Human-like behavior
54
- - `STEALTH_ENABLED` — `true|false` (default `true`) — Master switch for all stealth features
55
- - `STEALTH_RANDOM_DELAYS` — `true|false` (default `true`)
56
- - `STEALTH_HUMAN_TYPING` — `true|false` (default `true`)
57
- - `STEALTH_MOUSE_MOVEMENTS` — `true|false` (default `true`)
58
- - Typing speed (human‑like)
59
- - `TYPING_WPM_MIN` (default 160), `TYPING_WPM_MAX` (default 240)
60
- - Delays (human‑like)
61
- - `MIN_DELAY_MS` (default 100), `MAX_DELAY_MS` (default 400)
62
- - Browser
63
- - `HEADLESS` (default `true`), `BROWSER_TIMEOUT` (ms, default `30000`)
64
- - Sessions
65
- - `MAX_SESSIONS` (default 10), `SESSION_TIMEOUT` (s, default 900)
66
- - Multi‑instance profile strategy
67
- - `NOTEBOOK_PROFILE_STRATEGY` — `auto|single|isolated` (default `auto`)
68
- - `NOTEBOOK_CLONE_PROFILE` — clone base profile into isolated dir (default `false`)
69
- - Cleanup (to prevent disk bloat)
70
- - `NOTEBOOK_CLEANUP_ON_STARTUP` (default `true`)
71
- - `NOTEBOOK_CLEANUP_ON_SHUTDOWN` (default `true`)
72
- - `NOTEBOOK_INSTANCE_TTL_HOURS` (default `72`)
73
- - `NOTEBOOK_INSTANCE_MAX_COUNT` (default `20`)
74
- - Library metadata (optional hints)
75
- - `NOTEBOOK_DESCRIPTION`, `NOTEBOOK_TOPICS`, `NOTEBOOK_CONTENT_TYPES`, `NOTEBOOK_USE_CASES`
76
- - `NOTEBOOK_URL` — optional; leave empty and manage notebooks via the library
77
-
78
- ---
79
-
80
- ## Storage Paths
81
-
82
- The server uses platform-specific paths via [env-paths](https://github.com/sindresorhus/env-paths)
83
- - **Linux**: `~/.local/share/notebooklm-mcp/`
84
- - **macOS**: `~/Library/Application Support/notebooklm-mcp/`
85
- - **Windows**: `%LOCALAPPDATA%\notebooklm-mcp\`
86
-
87
- **What's stored:**
88
- - `chrome_profile/` - Persistent Chrome browser profile with login session
89
- - `browser_state/` - Browser context state and cookies
90
- - `library.json` - Your notebook library with metadata
91
- - `chrome_profile_instances/` - Isolated Chrome profiles for concurrent sessions
92
-
93
- **No config.json file** - Configuration is purely via environment variables or tool parameters!
94
-
@@ -1,25 +0,0 @@
1
- # Dependency Risk Notes
2
-
3
- ## Patchright
4
-
5
- This project uses `patchright` for browser automation because NotebookLM flows
6
- depend on Playwright-compatible browser control with stealth-oriented behavior.
7
- Treat it as a higher-risk dependency than ordinary runtime libraries:
8
-
9
- - It is a Playwright fork, so upstream security fixes may not land at the same
10
- time as Playwright releases.
11
- - Browser automation packages can run install scripts that fetch browser
12
- binaries or drivers.
13
- - Keep it exact-pinned in `package.json` and review updates manually.
14
- - CI installs dependencies with `npm ci --ignore-scripts`; browser binaries
15
- should be provisioned explicitly in controlled environments.
16
- - Production deployments should run the MCP server in a least-privilege
17
- container or sandbox with a dedicated browser profile directory and no access
18
- to unrelated host files.
19
-
20
- When upgrading `patchright`, verify:
21
-
22
- 1. The package tarball integrity in `package-lock.json` changes only as expected.
23
- 2. Notebook creation, source upload, auth setup, and session reuse tests pass.
24
- 3. Any browser installation step is run explicitly, not via automatic package
25
- lifecycle scripts in CI.
@@ -1,210 +0,0 @@
1
- # NotebookLM MCP Server — Improvement Sprint v2026.2.10
2
-
3
- ## Overview
4
-
5
- A comprehensive 5-phase improvement project covering security hardening, code architecture, reliability, CI/CD, and testing. Informed by a full codebase audit (architecture, security sentinel, code quality review) and validated by a 4-agent review team (Skeptic, Sentinel, Architect, Librarian).
6
-
7
- **Result:** 168 tests passing, clean TypeScript build, 2 critical security bugs caught and fixed during review.
8
-
9
- ---
10
-
11
- ## Phase 1: Quick Wins (CI, Docker, Cleanup)
12
-
13
- ### 1A. Tests added to CI pipeline
14
- - **File:** `.github/workflows/ci.yml`
15
- - Added `npm test` step after the build step
16
-
17
- ### 1B. `.dockerignore` created
18
- - **New file:** `.dockerignore`
19
- - Excludes: `node_modules/`, `dist/`, `.git/`, `*.tar.gz`, `tests/`, `docs/`, `medusa-env/`, `.mcpregistry_*`, `.env*`, IDE files, OS files, Python artifacts
20
-
21
- ### 1C. Multi-stage Docker build
22
- - **File:** `Dockerfile`
23
- - **Stage 1 (builder):** install all deps, build TypeScript
24
- - **Stage 2 (runtime):** copy only `dist/`, `package.json`, `package-lock.json`, `npm ci --omit=dev`, install patchright
25
- - Keeps image ~40-60% smaller, dev dependencies never reach production
26
-
27
- ---
28
-
29
- ## Phase 2: Security Hardening
30
-
31
- ### 2A. MCP auth secure-by-default
32
- - **File:** `src/auth/mcp-auth.ts`
33
- - Auth is now **enabled by default** — no configuration needed for secure operation
34
- - Explicit opt-out via `NLMCP_AUTH_DISABLED=true` (case-insensitive via `parseBoolean`)
35
- - Legacy `NLMCP_AUTH_ENABLED=true` still honored for backwards compatibility
36
- - Clear warning logged when auth is disabled; conflict warning when both env vars set
37
-
38
- ### 2B. Exponential backoff for auth lockout
39
- - **File:** `src/auth/mcp-auth.ts`
40
- - After lockout expires, `lockoutCount` persists to drive escalation
41
- - Backoff: 5min -> 15min -> 45min -> 4hr (capped at `MAX_LOCKOUT_MS`)
42
- - Formula: `baseDuration * 3^(lockoutCount - 1)`, capped at 4 hours
43
-
44
- ### 2C. Credentials wrapped in SecureCredential
45
- - **File:** `src/config.ts`
46
- - `LOGIN_PASSWORD` and `GEMINI_API_KEY` wrapped in `SecureCredential` with 30-min TTL
47
- - Original env vars deleted from `process.env` after reading
48
- - **CONFIG.loginPassword blanked to `""`** — consumers must use `getSecureLoginPassword()`
49
- - **CONFIG.geminiApiKey set to `null`** — consumers must use `getSecureGeminiApiKey()`
50
- - `browser-session.ts` and `gemini-client.ts` updated to use secure accessors
51
- - Graceful handling when credential expires (clear error message, not unhandled throw)
52
-
53
- ### 2D. Filesystem tools gated behind auth
54
- - **Files:** `src/index.ts`, `src/auth/mcp-auth.ts`
55
- - `add_folder`, `cleanup_data`, `export_library` require auth even when globally disabled
56
- - `authenticateMCPRequest()` passes `forceAuth` flag through to `validateToken()`
57
- - **Critical fix:** `validateToken()` accepts `forceValidation` parameter to bypass the `!enabled` short-circuit — prevents any-token-passes bypass
58
-
59
- ### 2E. Config value range validation
60
- - **File:** `src/config.ts`
61
- - Added `clampInteger(value, min, max)` helper
62
- - Applied to: `maxSessions` (1-50), `sessionTimeout` (60-86400), `browserTimeout` (5000-300000)
63
- - Exported `parseBoolean`, `parseInteger`, `parseArray` for testability and reuse
64
-
65
- ---
66
-
67
- ## Phase 3: Code Quality & Architecture
68
-
69
- ### 3A. Handler split — 3,611 lines -> 9 domain modules
70
- - **From:** `src/tools/handlers.ts` (deleted after split)
71
- - **To:** `src/tools/handlers/` directory:
72
-
73
- | Module | Handlers | Lines |
74
- |--------|----------|-------|
75
- | `types.ts` | `HandlerContext` interface | ~20 |
76
- | `ask-question.ts` | `handleAskQuestion` | ~260 |
77
- | `session-management.ts` | list/close/reset/health | ~300 |
78
- | `auth.ts` | setup_auth, re_auth | ~230 |
79
- | `notebook-management.ts` | list/get/add/update/remove/select/search/stats | ~220 |
80
- | `notebook-creation.ts` | create/batch/sync/sources/folder | ~680 |
81
- | `system.ts` | export/project_info/quota/cleanup | ~370 |
82
- | `audio-video.ts` | audio/video/data-table tools | ~380 |
83
- | `webhooks.ts` | configure/list/test/remove | ~160 |
84
- | `gemini.ts` | deep_research/query/documents/history | ~780 |
85
- | `index.ts` | `ToolHandlers` facade class | ~280 |
86
-
87
- - Each domain function receives `ctx: HandlerContext` (sessionManager, authManager, library, rateLimiter, geminiClient)
88
- - Facade class delegates all 48 methods to domain functions
89
- - Type inference via `Parameters<typeof fn>[1]` prevents type drift
90
-
91
- ### 3B. Tool registry pattern
92
- - **File:** `src/index.ts`
93
- - Replaced ~500-line switch/case with `Map<string, ToolHandler>` registry
94
- - **Built once** as class-level field in `setupHandlers()` (not per-request)
95
- - ~60 lines for all 48 tools
96
-
97
- ### 3C. Locale-agnostic selectors
98
- - **File:** `src/session/browser-session.ts`
99
- - Replaced German-locale hardcoded `textarea[aria-label="Feld fur Anfragen"]`
100
- - New fallback chain: `textarea[aria-label]`, `textarea[class*="query"]`, `.chat-input textarea`
101
-
102
- ### 3D. Gemini SDK type annotations
103
- - **File:** `src/gemini/gemini-client.ts`
104
- - Added explicit comment explaining why `as any` is needed (SDK v1.41.0 lacks Interactions API types)
105
-
106
- ### 3E. Configurable FOLLOW_UP_REMINDER
107
- - **Files:** `src/config.ts`, `src/tools/handlers/ask-question.ts`
108
- - `NLMCP_FOLLOW_UP_REMINDER` env var (default: current text)
109
- - `NLMCP_FOLLOW_UP_ENABLED=true/false` to disable entirely
110
- - Added `responseTimeout` and `followUpReminder`/`followUpEnabled` to Config interface
111
-
112
- ---
113
-
114
- ## Phase 4: Robustness & Reliability
115
-
116
- ### 4A. Gemini API retry with exponential backoff
117
- - **File:** `src/gemini/gemini-client.ts`
118
- - Added `retryWithBackoff(fn, { maxRetries: 3, baseDelay: 1000 })` utility
119
- - Retries on: HTTP 429, 500, 502, 503, network errors
120
- - Does NOT retry on: 400, 401, 403, 404
121
-
122
- ### 4B. Configurable NotebookLM response timeout
123
- - **File:** `src/session/browser-session.ts`, `src/config.ts`
124
- - Replaced hardcoded `120000` with `CONFIG.responseTimeout`
125
- - Configurable via `NLMCP_RESPONSE_TIMEOUT_MS` (default: 120000)
126
-
127
- ### 4C. Better error handling for file permissions
128
- - **File:** `src/utils/file-permissions.ts`
129
- - Permission failures now log via `log.warning()` and create audit events
130
- - Lazy imports to break circular dependency (audit-logger -> config -> file-permissions)
131
- - Stale "no logger available" comment replaced with actual logging call
132
-
133
- ---
134
-
135
- ## Phase 5: Testing
136
-
137
- ### 5A. Security utility tests — `tests/security.test.ts`
138
- - 25 tests covering:
139
- - `validateNotebookUrl` — valid URLs, invalid domains, non-HTTPS, dangerous protocols, empty/null input
140
- - `validateQuestion` — empty, max length, trimming, null/undefined
141
- - `RateLimiter` — under limit, at limit, independent keys, window expiry, clear
142
-
143
- ### 5B. Config parsing tests — `tests/config.test.ts`
144
- - 32 tests covering:
145
- - `parseBoolean` — true/false/1/0/undefined/unrecognized/case-insensitive
146
- - `parseInteger` — valid/undefined/non-numeric/floats
147
- - `parseArray` — comma-separated/trim/filter empty/undefined/single values
148
- - Range clamping via CONFIG defaults
149
- - `applyBrowserOptions` — show/headless/timeout/stealth/viewport/legacy/precedence
150
- - New CONFIG defaults (responseTimeout, followUpEnabled, followUpReminder)
151
-
152
- ---
153
-
154
- ## Post-Review Fixes (4-Agent Validation)
155
-
156
- Issues found and fixed by the Skeptic, Sentinel, Architect, and Librarian agents:
157
-
158
- | Fix | Severity | Description |
159
- |-----|----------|-------------|
160
- | forceAuth bypass | **CRITICAL** | `validateToken()` returned true when auth disabled, making forceAuth useless. Added `forceValidation` parameter. |
161
- | Plaintext creds in CONFIG | **CRITICAL** | `CONFIG.loginPassword` held plaintext despite SecureCredential wrapping. Blanked CONFIG fields, updated all consumers. |
162
- | Dead handlers.ts | **CRITICAL** | 3,611-line file still compiled by tsconfig glob. Deleted. |
163
- | toolRegistry per-request | **HIGH** | Map with 48 entries rebuilt on every tool call. Promoted to class field. |
164
- | Misleading auth log | **HIGH** | "Auth disabled" logged even when auth was actually enabled (conflicting env vars). |
165
- | parseInt inconsistency | **HIGH** | Bare `parseInt` in mcp-auth.ts bypassed NaN guard. Switched to `parseInteger`. |
166
- | Auth disable case-sensitivity | **MEDIUM** | `=== "true"` strict check. Now uses `parseBoolean()` for consistency. |
167
- | Stale no-logger comment | **HIGH** | Comment said "no logger" but lazy import mechanism was available. Fixed. |
168
- | Backoff comment | **LOW** | Said "3rd: 1hr" but actual value is 45min. Corrected. |
169
-
170
- ---
171
-
172
- ## New Environment Variables
173
-
174
- | Variable | Default | Description |
175
- |----------|---------|-------------|
176
- | `NLMCP_AUTH_DISABLED` | `false` | Explicitly disable MCP auth (not recommended) |
177
- | `NLMCP_RESPONSE_TIMEOUT_MS` | `120000` | NotebookLM response timeout in ms |
178
- | `NLMCP_FOLLOW_UP_REMINDER` | _(built-in text)_ | Custom follow-up reminder text |
179
- | `NLMCP_FOLLOW_UP_ENABLED` | `true` | Enable/disable follow-up reminder |
180
-
181
- ---
182
-
183
- ## Files Modified
184
-
185
- | File | Changes |
186
- |------|---------|
187
- | `.github/workflows/ci.yml` | Added test step |
188
- | `.dockerignore` | **New** |
189
- | `.gitignore` | Added `docs/` |
190
- | `Dockerfile` | Multi-stage build |
191
- | `src/auth/mcp-auth.ts` | Secure-by-default, exponential backoff, forceValidation, parseBoolean/parseInteger |
192
- | `src/config.ts` | SecureCredential wrapping, range clamping, new config fields, exported parsers |
193
- | `src/index.ts` | Tool registry, forceAuth for filesystem tools |
194
- | `src/session/browser-session.ts` | Locale-agnostic selectors, configurable timeout, secure password accessor |
195
- | `src/gemini/gemini-client.ts` | Retry with backoff, secure API key accessor |
196
- | `src/utils/file-permissions.ts` | Lazy logging, audit events on failure |
197
- | `src/tools/handlers.ts` | **Deleted** (split into handlers/) |
198
- | `src/tools/handlers/` | **New** — 11 files (types, index, 9 domain modules) |
199
- | `src/tools/index.ts` | Re-export from handlers/ |
200
- | `tests/security.test.ts` | **New** — 25 tests |
201
- | `tests/config.test.ts` | **New** — 32 tests |
202
-
203
- ---
204
-
205
- ## Verification
206
-
207
- - `npm run build` — TypeScript compiles clean
208
- - `npm test` — 168 tests pass (6 test files)
209
- - `node dist/index.js config` — server starts without errors
210
- - Tool count: 48 tools registered in registry
@@ -1,166 +0,0 @@
1
- # Authenticated Testing Runbook
2
-
3
- This runbook is the baseline sequence for future NotebookLM MCP testing in a real authenticated browser session.
4
-
5
- ## Goal
6
-
7
- Use a visible Chrome session to capture valid NotebookLM auth, verify the local repo is healthy, and run a minimal smoke test flow before broader manual or agent-driven testing.
8
-
9
- ## 1. Local Repo Preflight
10
-
11
- Run these from the repo root:
12
-
13
- ```bash
14
- npx tsc --noEmit
15
- npx vitest run
16
- npx stryker run --dryRunOnly
17
- npm audit --json
18
- ```
19
-
20
- Expected result:
21
- - TypeScript passes
22
- - Vitest passes
23
- - Stryker dry-run passes
24
- - `npm audit` reports 0 vulnerabilities
25
-
26
- ## 2. Start Visible Chrome Auth
27
-
28
- Use the standalone auth flow from the repo root:
29
-
30
- ```bash
31
- node auth-now.mjs
32
- ```
33
-
34
- What it does:
35
- - Opens visible Chrome using the persistent NotebookLM profile
36
- - Waits for manual Google login
37
- - Saves encrypted browser state to the local auth store
38
-
39
- Expected success signal in the terminal:
40
- - `NotebookLM detected`
41
- - `Saved encrypted state.json.pqenc`
42
- - `Auth complete`
43
-
44
- Expected saved file on Linux:
45
-
46
- ```text
47
- ~/.local/share/notebooklm-mcp/browser_state/state.json.pqenc
48
- ```
49
-
50
- ## 3. Verify Auth Artifact
51
-
52
- Confirm the encrypted state file exists and is freshly updated:
53
-
54
- ```bash
55
- stat ~/.local/share/notebooklm-mcp/browser_state/state.json.pqenc
56
- ```
57
-
58
- Expected result:
59
- - File exists
60
- - Permissions are `0600`
61
- - Modify time matches the recent auth session
62
-
63
- ## 4. MCP Health Check
64
-
65
- After auth is saved, verify the MCP server can use it.
66
-
67
- Important:
68
- - Browser auth and MCP auth are separate.
69
- - If you are testing through a direct stdio harness instead of your normal MCP client, you must also provide a valid `NLMCP_AUTH_TOKEN`.
70
- - For ad hoc local smoke tests, prefer a temporary in-process token over rotating the persisted token.
71
-
72
- Recommended prompt:
73
-
74
- ```text
75
- Run get_health with deep_check enabled and report auth status, chat_ui_accessible, and any warnings.
76
- ```
77
-
78
- Expected result:
79
- - `authenticated: true`
80
- - `chat_ui_accessible: true`
81
-
82
- If this fails, do not continue to notebook smoke tests until auth is repaired.
83
-
84
- ## 5. Notebook Smoke Test Sequence
85
-
86
- Run this exact sequence in the MCP client:
87
-
88
- 1. `get_health(deep_check=true)`
89
- 2. `list_notebooks`
90
- 3. `select_notebook` on a known safe test notebook
91
- 4. `ask_question` with a low-risk prompt such as:
92
-
93
- ```text
94
- Summarize the main topics covered in this notebook in 3 bullets.
95
- ```
96
-
97
- 5. `get_quota(sync=true)` if quota behavior matters for the session
98
-
99
- Success criteria:
100
- - Notebook list loads
101
- - Notebook selection succeeds
102
- - `ask_question` returns a grounded answer
103
- - No auth-expired or browser-closed errors occur
104
-
105
- For direct test harnesses:
106
- - Inject a temporary `NLMCP_AUTH_TOKEN` into the server process
107
- - Pass the same token in MCP request metadata
108
- - Do not rotate the saved token unless you actually need to replace your client configuration
109
-
110
- ## 6. Optional Creation Flow Test
111
-
112
- Only run this when creation is in scope for the session:
113
-
114
- 1. `create_notebook` with a disposable test name
115
- 2. `add_source` or `add_folder` with a safe local fixture
116
- 3. `list_sources`
117
- 4. Optional: `generate_audio_overview`, `generate_video_overview`, or `generate_data_table`
118
-
119
- Cleanup:
120
- - Remove disposable test notebooks or clearly label them as temporary
121
-
122
- ## 7. Recovery Paths
123
-
124
- If auth is stale or broken:
125
-
126
- 1. Close all Chrome/Chromium windows
127
- 2. Re-run visible auth:
128
-
129
- ```bash
130
- node auth-now.mjs
131
- ```
132
-
133
- If persistent profile/session issues remain:
134
-
135
- 1. Close all Chrome/Chromium windows
136
- 2. Preview cleanup with library preservation
137
- 3. Confirm cleanup
138
- 4. Re-run auth
139
- 5. Re-run `get_health(deep_check=true)`
140
-
141
- Recommended agent prompt:
142
-
143
- ```text
144
- Repair NotebookLM auth without deleting my library, then verify with get_health deep_check.
145
- ```
146
-
147
- ## 8. Session Notes Template
148
-
149
- Record these for each authenticated test pass:
150
-
151
- - Date:
152
- - Branch/commit:
153
- - Auth method: `node auth-now.mjs`
154
- - Auth artifact updated: yes/no
155
- - `get_health(deep_check=true)`: pass/fail
156
- - Notebook smoke test: pass/fail
157
- - Creation flow test: pass/fail/not run
158
- - Quota check: pass/fail/not run
159
- - Issues found:
160
-
161
- ## Notes
162
-
163
- - Prefer visible auth for all interactive login work.
164
- - Do not use headless auth flows.
165
- - `cleanup_data` is a recovery tool, not a default auth step.
166
- - Keep at least one safe disposable notebook available for smoke testing.
package/docs/tools.md DELETED
@@ -1,34 +0,0 @@
1
- ## Tools
2
-
3
- ### Core
4
- - `ask_question`
5
- - Parameters: `question` (string, required), optional `session_id`, `notebook_id`, `notebook_url`, `show_browser`.
6
- - Returns NotebookLM's answer plus the follow-up reminder.
7
- - `list_sessions`, `close_session`, `reset_session`
8
- - Inspect or manage active browser sessions.
9
- - `get_health`
10
- - Summaries auth status, active sessions, and configuration.
11
- - `setup_auth`
12
- - Opens the persistent Chrome profile so you can log in manually.
13
- - `re_auth`
14
- - Switch to a different Google account or re-authenticate.
15
- - Use when NotebookLM rate limit is reached (50 queries/day for free accounts).
16
- - Closes all sessions, clears auth data, and opens browser for fresh login.
17
-
18
- ### Notebook library
19
- - `add_notebook` – Safe conversational add; expects confirmation before writing.
20
- - `list_notebooks` – Returns id, name, topics, URL, metadata for every entry.
21
- - `get_notebook` – Fetch a single notebook by id.
22
- - `select_notebook` – Set the active default notebook.
23
- - `update_notebook` – Modify metadata fields.
24
- - `remove_notebook` – Removes entries from the library (not the original NotebookLM notebook).
25
- - `search_notebooks` – Simple query across name/description/topics/tags.
26
- - `get_library_stats` – Aggregate statistics (total notebooks, usage counts, etc.).
27
-
28
- ### Resources
29
- - `notebooklm://library`
30
- - JSON representation of the full library: active notebook, stats, individual notebooks.
31
- - `notebooklm://library/{id}`
32
- - Fetch metadata for a specific notebook. The `{id}` completion pulls from the library automatically.
33
-
34
- **Remember:** Every `ask_question` response ends with a reminder that nudges your agent to keep asking until the user’s task is fully addressed.
@@ -1,59 +0,0 @@
1
- ## Troubleshooting
2
-
3
- ### Fresh start / Deep cleanup
4
- If you're experiencing persistent issues, corrupted data, or want to start completely fresh:
5
-
6
- **⚠️ CRITICAL: Close ALL Chrome/Chromium instances before cleanup!** Open browsers can prevent cleanup and cause issues.
7
-
8
- **Recommended workflow:**
9
- 1. Close all Chrome/Chromium windows and instances
10
- 2. Ask: "Run NotebookLM cleanup and preserve my library"
11
- 3. Review the preview - you'll see exactly what will be deleted
12
- 4. Confirm deletion
13
- 5. Re-authenticate: "Open NotebookLM auth setup"
14
-
15
- **What gets cleaned:**
16
- - Browser data, cache, Chrome profiles
17
- - Temporary files and logs
18
- - Old installation data
19
- - **Preserved:** Your notebook library (when using preserve option)
20
-
21
- **Useful for:**
22
- - Authentication problems
23
- - Browser session conflicts
24
- - Corrupted browser profiles
25
- - Clean reinstalls
26
- - Switching between accounts
27
-
28
- ### Browser closed / `newPage` errors
29
- - Symptom: `browserContext.newPage: Target page/context/browser has been closed`.
30
- - Fix: The server auto‑recovers (recreates context and page). Re‑run the tool.
31
-
32
- ### Profile lock / `ProcessSingleton` errors
33
- - Cause: Another Chrome is using the base profile.
34
- - Fix: `NOTEBOOK_PROFILE_STRATEGY=auto` (default) falls back to isolated per‑instance profiles; or set `isolated`.
35
-
36
- ### Authentication issues
37
- **Quick fix:** Ask the agent to repair authentication; it will run `get_health` → `setup_auth` → `get_health`.
38
-
39
- **For persistent auth failures:**
40
- 1. Close ALL Chrome/Chromium instances
41
- 2. Ask: "Run NotebookLM cleanup with library preservation"
42
- 3. After cleanup completes, ask: "Open NotebookLM auth setup"
43
- 4. This creates a completely fresh browser session while keeping your notebooks
44
-
45
- **Auto-login (optional):**
46
- - Set `AUTO_LOGIN_ENABLED=true` with `LOGIN_EMAIL`, `LOGIN_PASSWORD` environment variables
47
- - For automation workflows only
48
-
49
- ### Typing speed too slow/fast
50
- - Adjust `TYPING_WPM_MIN`/`MAX`; or disable stealth typing by setting `STEALTH_ENABLED=false`.
51
-
52
- ### Rate limit reached
53
- - Symptom: "NotebookLM rate limit reached (50 queries/day for free accounts)".
54
- - Fix: Use `re_auth` tool to switch to a different Google account, or wait until tomorrow.
55
- - Upgrade: Google AI Pro/Ultra gives 5x higher limits.
56
-
57
- ### No notebooks found
58
- - Ask to add the NotebookLM link you need.
59
- - Ask to list the stored notebooks, then choose the one to activate.