@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,151 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Run NotebookLM UI Selector Discovery
4
- *
5
- * This script launches a browser, navigates NotebookLM's interface,
6
- * and discovers CSS selectors for notebook creation elements.
7
- *
8
- * Usage: npx ts-node src/notebook-creation/run-discovery.ts
9
- */
10
- import { AuthManager } from "../auth/auth-manager.js";
11
- import { SharedContextManager } from "../session/shared-context-manager.js";
12
- import { discoverSelectors } from "./selector-discovery.js";
13
- import { log } from "../utils/logger.js";
14
- import { CONFIG } from "../config.js";
15
- import fs from "fs";
16
- import path from "path";
17
- async function main() {
18
- log.info("šŸš€ Starting NotebookLM UI Selector Discovery");
19
- log.info(" This will open a browser and analyze the NotebookLM interface.");
20
- log.info("");
21
- // Initialize managers
22
- const authManager = new AuthManager();
23
- const contextManager = new SharedContextManager(authManager);
24
- try {
25
- // Get browser context (visible for debugging)
26
- log.info("🌐 Getting browser context (visible mode)...");
27
- const context = await contextManager.getOrCreateContext(false); // false = show browser
28
- // Check authentication
29
- log.info("šŸ” Checking authentication...");
30
- const isAuthenticated = await authManager.validateCookiesExpiry(context);
31
- if (!isAuthenticated) {
32
- log.warning("āš ļø Not authenticated or session expired!");
33
- log.warning(" Please login first using setup_auth tool.");
34
- log.info(" Run the MCP server and use the setup_auth tool.");
35
- process.exit(1);
36
- }
37
- log.success("āœ… Authenticated!");
38
- // Run discovery
39
- log.info("\nšŸ” Running selector discovery...\n");
40
- const result = await discoverSelectors(context);
41
- // Save results to file
42
- const outputPath = path.join(CONFIG.dataDir, "discovered-selectors.json");
43
- fs.mkdirSync(path.dirname(outputPath), { recursive: true });
44
- fs.writeFileSync(outputPath, JSON.stringify(result, null, 2));
45
- log.success(`\nāœ… Discovery complete! Results saved to: ${outputPath}`);
46
- // Generate selectors.ts content
47
- if (Object.keys(result.selectors).length > 0) {
48
- const selectorsCode = generateSelectorsCode(result);
49
- const selectorsPath = path.join(path.dirname(new URL(import.meta.url).pathname), "selectors.ts");
50
- fs.writeFileSync(selectorsPath, selectorsCode);
51
- log.success(`šŸ“ Generated selectors.ts at: ${selectorsPath}`);
52
- }
53
- // Print summary
54
- printSummary(result);
55
- }
56
- catch (error) {
57
- log.error(`āŒ Discovery failed: ${error instanceof Error ? error.message : String(error)}`);
58
- process.exit(1);
59
- }
60
- finally {
61
- // Keep browser open briefly for inspection
62
- log.info("\nā³ Keeping browser open for 5 seconds for inspection...");
63
- await new Promise((resolve) => setTimeout(resolve, 5000));
64
- await contextManager.closeContext();
65
- log.info("šŸ‘‹ Done!");
66
- }
67
- }
68
- /**
69
- * Generate selectors.ts code from discovery results
70
- */
71
- function generateSelectorsCode(result) {
72
- const lines = [
73
- '/**',
74
- ' * NotebookLM UI Selectors',
75
- ' *',
76
- ` * Auto-generated on ${result.discoveredAt}`,
77
- ' * by selector-discovery.ts',
78
- ' *',
79
- ' * These selectors are used for notebook creation automation.',
80
- ' */',
81
- '',
82
- 'export const NOTEBOOKLM_SELECTORS = {',
83
- ];
84
- for (const [key, info] of Object.entries(result.selectors)) {
85
- if (info && typeof info === 'object' && 'primary' in info) {
86
- const selectorInfo = info;
87
- lines.push(` /** ${selectorInfo.description} */`);
88
- lines.push(` ${key}: {`);
89
- lines.push(` primary: ${JSON.stringify(selectorInfo.primary)},`);
90
- lines.push(` fallbacks: ${JSON.stringify(selectorInfo.fallbacks)},`);
91
- lines.push(` confirmed: ${selectorInfo.confirmed},`);
92
- lines.push(` },`);
93
- lines.push('');
94
- }
95
- }
96
- lines.push('} as const;');
97
- lines.push('');
98
- lines.push('export type SelectorKey = keyof typeof NOTEBOOKLM_SELECTORS;');
99
- lines.push('');
100
- lines.push('/**');
101
- lines.push(' * Get selector with fallbacks');
102
- lines.push(' */');
103
- lines.push('export function getSelector(key: SelectorKey): string[] {');
104
- lines.push(' const info = NOTEBOOKLM_SELECTORS[key];');
105
- lines.push(' return [info.primary, ...info.fallbacks].filter(Boolean);');
106
- lines.push('}');
107
- lines.push('');
108
- return lines.join('\n');
109
- }
110
- /**
111
- * Print discovery summary
112
- */
113
- function printSummary(result) {
114
- log.info("\n" + "=".repeat(60));
115
- log.info("šŸ“Š DISCOVERY SUMMARY");
116
- log.info("=".repeat(60));
117
- const found = [];
118
- const notFound = [];
119
- for (const [key, info] of Object.entries(result.selectors)) {
120
- if (info && typeof info === 'object' && 'primary' in info) {
121
- const selectorInfo = info;
122
- if (selectorInfo.primary) {
123
- found.push(key);
124
- }
125
- else {
126
- notFound.push(key);
127
- }
128
- }
129
- }
130
- log.info(`\nāœ… Found (${found.length}):`);
131
- for (const key of found) {
132
- log.info(` - ${key}`);
133
- }
134
- if (notFound.length > 0) {
135
- log.warning(`\nāš ļø Not Found (${notFound.length}):`);
136
- for (const key of notFound) {
137
- log.warning(` - ${key}`);
138
- }
139
- }
140
- log.info("\n" + "=".repeat(60));
141
- if (notFound.length > 0) {
142
- log.info("\nšŸ’” Manual inspection may be needed for missing selectors.");
143
- log.info(" The browser was kept open briefly for visual inspection.");
144
- }
145
- }
146
- // Run main
147
- main().catch((error) => {
148
- log.error(`Fatal error: ${error}`);
149
- process.exit(1);
150
- });
151
- //# sourceMappingURL=run-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-discovery.js","sourceRoot":"","sources":["../../src/notebook-creation/run-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Automated UI selector discovery for NotebookLM
3
- *
4
- * This tool navigates NotebookLM's interface and discovers CSS selectors
5
- * for elements needed to create notebooks programmatically.
6
- */
7
- import type { BrowserContext } from "patchright";
8
- import type { ElementInfo, DiscoveryResult } from "./types.js";
9
- /**
10
- * Discovers UI selectors for NotebookLM's notebook creation workflow
11
- */
12
- export declare class SelectorDiscovery {
13
- private context;
14
- private page;
15
- constructor(context: BrowserContext);
16
- /**
17
- * Run the full discovery process
18
- */
19
- discover(): Promise<DiscoveryResult>;
20
- /**
21
- * Navigate to NotebookLM homepage
22
- */
23
- private navigateToHome;
24
- /**
25
- * Dump all interactive elements on the current page
26
- */
27
- dumpInteractiveElements(): Promise<ElementInfo[]>;
28
- /**
29
- * Find a selector matching keywords
30
- */
31
- private findSelector;
32
- /**
33
- * Find input element selector
34
- */
35
- private findInputSelector;
36
- /**
37
- * Find textarea selector
38
- */
39
- private findTextareaSelector;
40
- /**
41
- * Find file input element
42
- */
43
- private findFileInput;
44
- /**
45
- * Build a CSS selector for an element
46
- */
47
- private buildSelector;
48
- /**
49
- * Try to click the new notebook button
50
- */
51
- private tryClickNewNotebook;
52
- /**
53
- * Try to click an element by selector
54
- */
55
- private tryClick;
56
- /**
57
- * Log discovery results summary
58
- */
59
- private logDiscoveryResults;
60
- }
61
- /**
62
- * Run selector discovery and return results
63
- */
64
- export declare function discoverSelectors(context: BrowserContext): Promise<DiscoveryResult>;
65
- //# sourceMappingURL=selector-discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selector-discovery.d.ts","sourceRoot":"","sources":["../../src/notebook-creation/selector-discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAQ,cAAc,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;AAgE7E;;GAEG;AACH,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,IAAI,CAAqB;gBAEb,OAAO,EAAE,cAAc;IAE3C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;IAiJ1C;;OAEG;YACW,cAAc;IAc5B;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAmDvD;;OAEG;IACH,OAAO,CAAC,YAAY;IAyDpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;YACW,aAAa;IAsC3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;YACW,mBAAmB;IA6CjC;;OAEG;YACW,QAAQ;IAiBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAyB5B;AAMD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAGzF"}
@@ -1,414 +0,0 @@
1
- /**
2
- * Automated UI selector discovery for NotebookLM
3
- *
4
- * This tool navigates NotebookLM's interface and discovers CSS selectors
5
- * for elements needed to create notebooks programmatically.
6
- */
7
- import { log } from "../utils/logger.js";
8
- import { randomDelay, realisticClick } from "../utils/stealth-utils.js";
9
- import { CONFIG, NOTEBOOKLM_URL } from "../config.js";
10
- /**
11
- * Keywords to identify UI elements by their text/aria-label
12
- */
13
- const ELEMENT_KEYWORDS = {
14
- newNotebook: ["new", "create", "notebook", "+", "add notebook"],
15
- addSource: ["add source", "add", "source", "+", "upload"],
16
- urlSource: ["url", "website", "web", "link", "webpage"],
17
- textSource: ["text", "paste", "copy", "clipboard"],
18
- fileSource: ["file", "upload", "pdf", "document", "drive"],
19
- submit: ["add", "submit", "done", "create", "save", "ok", "confirm"],
20
- cancel: ["cancel", "close", "back", "x"],
21
- };
22
- /**
23
- * Discovers UI selectors for NotebookLM's notebook creation workflow
24
- */
25
- export class SelectorDiscovery {
26
- context;
27
- page = null;
28
- constructor(context) {
29
- this.context = context;
30
- }
31
- /**
32
- * Run the full discovery process
33
- */
34
- async discover() {
35
- const result = {
36
- selectors: {},
37
- homepageElements: [],
38
- creationElements: [],
39
- sourceElements: [],
40
- discoveredAt: new Date().toISOString(),
41
- errors: [],
42
- };
43
- try {
44
- // Create a new page for discovery
45
- this.page = await this.context.newPage();
46
- log.info("šŸ” Starting NotebookLM UI selector discovery...");
47
- // Phase 1: Discover homepage elements
48
- log.info("šŸ“„ Phase 1: Analyzing homepage...");
49
- await this.navigateToHome();
50
- result.homepageElements = await this.dumpInteractiveElements();
51
- result.selectors.newNotebookButton = this.findSelector(result.homepageElements, ELEMENT_KEYWORDS.newNotebook, "New notebook button");
52
- // Phase 2: Navigate to notebook creation and discover elements
53
- log.info("šŸ“„ Phase 2: Analyzing notebook creation UI...");
54
- const clickedNew = await this.tryClickNewNotebook(result.selectors.newNotebookButton);
55
- if (clickedNew) {
56
- await randomDelay(1500, 2500);
57
- result.creationElements = await this.dumpInteractiveElements();
58
- // Find notebook name input
59
- result.selectors.notebookNameInput = this.findInputSelector(result.creationElements, ["name", "title", "notebook"], "Notebook name input");
60
- // Find add source button
61
- result.selectors.addSourceButton = this.findSelector(result.creationElements, ELEMENT_KEYWORDS.addSource, "Add source button");
62
- }
63
- // Phase 3: Try to access source addition UI
64
- log.info("šŸ“„ Phase 3: Analyzing source addition UI...");
65
- if (result.selectors.addSourceButton?.primary) {
66
- const clickedAddSource = await this.tryClick(result.selectors.addSourceButton.primary);
67
- if (clickedAddSource) {
68
- await randomDelay(1000, 2000);
69
- result.sourceElements = await this.dumpInteractiveElements();
70
- // Find source type options
71
- result.selectors.urlSourceOption = this.findSelector(result.sourceElements, ELEMENT_KEYWORDS.urlSource, "URL source option");
72
- result.selectors.textSourceOption = this.findSelector(result.sourceElements, ELEMENT_KEYWORDS.textSource, "Text source option");
73
- result.selectors.fileSourceOption = this.findSelector(result.sourceElements, ELEMENT_KEYWORDS.fileSource, "File source option");
74
- // Find file input element
75
- result.selectors.fileInput = await this.findFileInput();
76
- // Find URL input
77
- result.selectors.urlInput = this.findInputSelector(result.sourceElements, ["url", "link", "website", "http"], "URL input field");
78
- // Find text input
79
- result.selectors.textInput = this.findTextareaSelector(result.sourceElements, ["text", "paste", "content"], "Text input area");
80
- // Find submit button
81
- result.selectors.submitButton = this.findSelector(result.sourceElements, ELEMENT_KEYWORDS.submit, "Submit/Add button");
82
- }
83
- }
84
- // Phase 4: Look for status indicators
85
- log.info("šŸ“„ Phase 4: Identifying status indicators...");
86
- const allElements = [
87
- ...result.homepageElements,
88
- ...result.creationElements,
89
- ...result.sourceElements,
90
- ];
91
- result.selectors.processingIndicator = this.findSelector(allElements, ["loading", "processing", "uploading", "progress", "spinner"], "Processing indicator");
92
- result.selectors.successIndicator = this.findSelector(allElements, ["success", "done", "complete", "added", "āœ“", "check"], "Success indicator");
93
- result.selectors.errorMessage = this.findSelector(allElements, ["error", "failed", "invalid", "warning"], "Error message");
94
- log.success("āœ… Discovery complete!");
95
- this.logDiscoveryResults(result);
96
- }
97
- catch (error) {
98
- const errorMsg = error instanceof Error ? error.message : String(error);
99
- log.error(`āŒ Discovery error: ${errorMsg}`);
100
- result.errors.push(errorMsg);
101
- }
102
- finally {
103
- if (this.page) {
104
- await this.page.close().catch(() => { });
105
- }
106
- }
107
- return result;
108
- }
109
- /**
110
- * Navigate to NotebookLM homepage
111
- */
112
- async navigateToHome() {
113
- if (!this.page)
114
- throw new Error("Page not initialized");
115
- await this.page.goto(NOTEBOOKLM_URL, {
116
- waitUntil: "domcontentloaded",
117
- timeout: CONFIG.browserTimeout,
118
- });
119
- await randomDelay(2000, 3000);
120
- // Wait for page to be interactive
121
- await this.page.waitForLoadState("networkidle").catch(() => { });
122
- }
123
- /**
124
- * Dump all interactive elements on the current page
125
- */
126
- async dumpInteractiveElements() {
127
- if (!this.page)
128
- return [];
129
- const results = await this.page.evaluate(() => {
130
- const browser = globalThis;
131
- const elements = browser.document.querySelectorAll('button, input, textarea, [role="button"], [role="menuitem"], ' +
132
- '[role="option"], a[href], [tabindex="0"], [onclick], ' +
133
- '[data-action], .clickable, [aria-haspopup]');
134
- return Array.from(elements).map((el) => {
135
- const rect = el.getBoundingClientRect();
136
- const computedStyle = browser.window.getComputedStyle(el);
137
- const isVisible = rect.width > 0 &&
138
- rect.height > 0 &&
139
- computedStyle.visibility !== "hidden" &&
140
- computedStyle.display !== "none" &&
141
- computedStyle.opacity !== "0";
142
- const attrs = Array.from(el.attributes || []);
143
- const dataAttrs = {};
144
- for (const attr of attrs) {
145
- if (attr.name && attr.name.startsWith("data-")) {
146
- dataAttrs[attr.name] = attr.value;
147
- }
148
- }
149
- return {
150
- tag: el.tagName?.toLowerCase() || "",
151
- id: el.id || "",
152
- classes: typeof el.className === 'string' ? el.className : "",
153
- ariaLabel: el.getAttribute?.("aria-label") || null,
154
- text: el.textContent?.trim().slice(0, 100) || null,
155
- dataAttrs,
156
- role: el.getAttribute?.("role") || null,
157
- isVisible,
158
- boundingBox: isVisible ? {
159
- x: rect.x,
160
- y: rect.y,
161
- width: rect.width,
162
- height: rect.height,
163
- } : undefined,
164
- };
165
- });
166
- });
167
- return results;
168
- }
169
- /**
170
- * Find a selector matching keywords
171
- */
172
- findSelector(elements, keywords, description) {
173
- const matches = [];
174
- for (const el of elements) {
175
- if (!el.isVisible)
176
- continue;
177
- let score = 0;
178
- const textLower = (el.text || "").toLowerCase();
179
- const ariaLower = (el.ariaLabel || "").toLowerCase();
180
- const classLower = (el.classes || "").toLowerCase();
181
- for (const keyword of keywords) {
182
- const kw = keyword.toLowerCase();
183
- if (textLower.includes(kw))
184
- score += 3;
185
- if (ariaLower.includes(kw))
186
- score += 4;
187
- if (classLower.includes(kw))
188
- score += 2;
189
- if (el.id.toLowerCase().includes(kw))
190
- score += 3;
191
- // Check data attributes
192
- for (const [, value] of Object.entries(el.dataAttrs)) {
193
- if (value.toLowerCase().includes(kw))
194
- score += 2;
195
- }
196
- }
197
- if (score > 0) {
198
- matches.push({
199
- element: el,
200
- score,
201
- selector: this.buildSelector(el),
202
- });
203
- }
204
- }
205
- // Sort by score descending
206
- matches.sort((a, b) => b.score - a.score);
207
- if (matches.length === 0) {
208
- return {
209
- primary: "",
210
- fallbacks: [],
211
- description,
212
- confirmed: false,
213
- };
214
- }
215
- return {
216
- primary: matches[0].selector,
217
- fallbacks: matches.slice(1, 4).map((m) => m.selector),
218
- description,
219
- confirmed: false,
220
- };
221
- }
222
- /**
223
- * Find input element selector
224
- */
225
- findInputSelector(elements, keywords, description) {
226
- const inputs = elements.filter((el) => el.tag === "input" || el.tag === "textarea");
227
- if (inputs.length === 0) {
228
- // Fall back to general search
229
- return this.findSelector(elements, keywords, description);
230
- }
231
- return this.findSelector(inputs, keywords, description);
232
- }
233
- /**
234
- * Find textarea selector
235
- */
236
- findTextareaSelector(elements, keywords, description) {
237
- const textareas = elements.filter((el) => el.tag === "textarea");
238
- if (textareas.length === 0) {
239
- return this.findSelector(elements, keywords, description);
240
- }
241
- return this.findSelector(textareas, keywords, description);
242
- }
243
- /**
244
- * Find file input element
245
- */
246
- async findFileInput() {
247
- if (!this.page) {
248
- return {
249
- primary: "",
250
- fallbacks: [],
251
- description: "File input element",
252
- confirmed: false,
253
- };
254
- }
255
- // Look for file input directly
256
- const fileInputs = await this.page.$$('input[type="file"]');
257
- if (fileInputs.length > 0) {
258
- // Try to get a more specific selector
259
- const selector = await this.page.evaluate((el) => {
260
- const input = el;
261
- if (input.id)
262
- return `#${input.id}`;
263
- if (input.name)
264
- return `input[type="file"][name="${input.name}"]`;
265
- return 'input[type="file"]';
266
- }, fileInputs[0]);
267
- return {
268
- primary: selector,
269
- fallbacks: ['input[type="file"]'],
270
- description: "File input element",
271
- confirmed: true,
272
- };
273
- }
274
- return {
275
- primary: 'input[type="file"]',
276
- fallbacks: [],
277
- description: "File input element",
278
- confirmed: false,
279
- };
280
- }
281
- /**
282
- * Build a CSS selector for an element
283
- */
284
- buildSelector(el) {
285
- // Priority: ID > unique class > aria-label > data attribute > tag + position
286
- if (el.id) {
287
- return `#${cssEscape(el.id)}`;
288
- }
289
- if (el.ariaLabel) {
290
- return `[aria-label="${cssEscape(el.ariaLabel)}"]`;
291
- }
292
- // Try to use a unique class
293
- const classes = (el.classes || "").split(/\s+/).filter(Boolean);
294
- for (const cls of classes) {
295
- // Skip generic classes
296
- if (cls.length > 3 && !["button", "btn", "input", "text"].includes(cls.toLowerCase())) {
297
- return `.${cssEscape(cls)}`;
298
- }
299
- }
300
- // Use data attribute if available
301
- for (const [attr, value] of Object.entries(el.dataAttrs)) {
302
- if (value) {
303
- return `[${attr}="${cssEscape(value)}"]`;
304
- }
305
- }
306
- // Fall back to role
307
- if (el.role) {
308
- return `[role="${el.role}"]`;
309
- }
310
- // Last resort: tag
311
- return el.tag;
312
- }
313
- /**
314
- * Try to click the new notebook button
315
- */
316
- async tryClickNewNotebook(selectorInfo) {
317
- if (!this.page || !selectorInfo?.primary)
318
- return false;
319
- const selectors = [selectorInfo.primary, ...selectorInfo.fallbacks];
320
- for (const selector of selectors) {
321
- try {
322
- const element = await this.page.$(selector);
323
- if (element && await element.isVisible()) {
324
- await realisticClick(this.page, selector, true);
325
- return true;
326
- }
327
- }
328
- catch (err) {
329
- log.debug(`selector-discovery: clicking new-notebook button selector: ${err instanceof Error ? err.message : String(err)}`);
330
- continue;
331
- }
332
- }
333
- // Try common patterns for "new" buttons
334
- const commonPatterns = [
335
- 'button:has-text("New")',
336
- 'button:has-text("Create")',
337
- '[aria-label*="new" i]',
338
- '[aria-label*="create" i]',
339
- 'button[data-action="create"]',
340
- '.create-button',
341
- '.new-button',
342
- ];
343
- for (const pattern of commonPatterns) {
344
- try {
345
- const element = await this.page.$(pattern);
346
- if (element && await element.isVisible()) {
347
- await element.click();
348
- return true;
349
- }
350
- }
351
- catch (err) {
352
- log.debug(`selector-discovery: clicking common create/new pattern: ${err instanceof Error ? err.message : String(err)}`);
353
- continue;
354
- }
355
- }
356
- return false;
357
- }
358
- /**
359
- * Try to click an element by selector
360
- */
361
- async tryClick(selector) {
362
- if (!this.page)
363
- return false;
364
- try {
365
- const element = await this.page.$(selector);
366
- if (element && await element.isVisible()) {
367
- await element.click();
368
- return true;
369
- }
370
- }
371
- catch (err) {
372
- log.debug(`selector-discovery: clicking element in tryClick: ${err instanceof Error ? err.message : String(err)}`);
373
- return false;
374
- }
375
- return false;
376
- }
377
- /**
378
- * Log discovery results summary
379
- */
380
- logDiscoveryResults(result) {
381
- log.info("\nšŸ“Š Discovery Results Summary:");
382
- log.info(` Homepage elements: ${result.homepageElements.length}`);
383
- log.info(` Creation UI elements: ${result.creationElements.length}`);
384
- log.info(` Source UI elements: ${result.sourceElements.length}`);
385
- log.info("\nšŸŽÆ Discovered Selectors:");
386
- for (const [key, info] of Object.entries(result.selectors)) {
387
- if (info && typeof info === 'object' && 'primary' in info) {
388
- const selectorInfo = info;
389
- const status = selectorInfo.primary ? "āœ“" : "āœ—";
390
- log.info(` ${status} ${key}: ${selectorInfo.primary || "(not found)"}`);
391
- if (selectorInfo.fallbacks.length > 0) {
392
- log.info(` Fallbacks: ${selectorInfo.fallbacks.join(", ")}`);
393
- }
394
- }
395
- }
396
- if (result.errors.length > 0) {
397
- log.warning("\nāš ļø Errors encountered:");
398
- for (const err of result.errors) {
399
- log.warning(` - ${err}`);
400
- }
401
- }
402
- }
403
- }
404
- function cssEscape(value) {
405
- return value.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1");
406
- }
407
- /**
408
- * Run selector discovery and return results
409
- */
410
- export async function discoverSelectors(context) {
411
- const discovery = new SelectorDiscovery(context);
412
- return await discovery.discover();
413
- }
414
- //# sourceMappingURL=selector-discovery.js.map