@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.
- package/dist/auth/auth-manager.d.ts +0 -1
- package/dist/auth/auth-manager.js +0 -1
- package/dist/auth/mcp-auth.d.ts +0 -1
- package/dist/auth/mcp-auth.js +0 -1
- package/dist/compliance/alert-manager.d.ts +6 -2
- package/dist/compliance/alert-manager.js +40 -10
- package/dist/compliance/breach-detection.d.ts +0 -1
- package/dist/compliance/breach-detection.js +0 -1
- package/dist/compliance/change-log.d.ts +13 -1
- package/dist/compliance/change-log.js +82 -16
- package/dist/compliance/compliance-logger.d.ts +29 -3
- package/dist/compliance/compliance-logger.js +90 -27
- package/dist/compliance/compliance-tools.d.ts +0 -1
- package/dist/compliance/compliance-tools.js +0 -1
- package/dist/compliance/consent-manager.d.ts +0 -1
- package/dist/compliance/consent-manager.js +0 -1
- package/dist/compliance/dashboard.d.ts +4 -3
- package/dist/compliance/dashboard.js +11 -8
- package/dist/compliance/data-classification.d.ts +0 -1
- package/dist/compliance/data-classification.js +0 -1
- package/dist/compliance/data-erasure.d.ts +0 -1
- package/dist/compliance/data-erasure.js +0 -1
- package/dist/compliance/data-export.d.ts +0 -1
- package/dist/compliance/data-export.js +0 -1
- package/dist/compliance/data-inventory.d.ts +0 -1
- package/dist/compliance/data-inventory.js +0 -1
- package/dist/compliance/dsar-handler.d.ts +0 -1
- package/dist/compliance/dsar-handler.js +0 -1
- package/dist/compliance/evidence-collector.d.ts +0 -1
- package/dist/compliance/evidence-collector.js +4 -2
- package/dist/compliance/health-monitor.d.ts +0 -1
- package/dist/compliance/health-monitor.js +0 -1
- package/dist/compliance/incident-manager.d.ts +0 -1
- package/dist/compliance/incident-manager.js +0 -1
- package/dist/compliance/index.d.ts +0 -1
- package/dist/compliance/index.js +0 -1
- package/dist/compliance/policy-docs.d.ts +0 -1
- package/dist/compliance/policy-docs.js +0 -1
- package/dist/compliance/privacy-notice-text.d.ts +0 -1
- package/dist/compliance/privacy-notice-text.js +0 -1
- package/dist/compliance/privacy-notice.d.ts +0 -1
- package/dist/compliance/privacy-notice.js +0 -1
- package/dist/compliance/report-generator.d.ts +7 -1
- package/dist/compliance/report-generator.js +116 -34
- package/dist/compliance/retention-engine.d.ts +0 -1
- package/dist/compliance/retention-engine.js +0 -1
- package/dist/compliance/siem-exporter.d.ts +26 -2
- package/dist/compliance/siem-exporter.js +89 -24
- package/dist/compliance/types.d.ts +0 -1
- package/dist/compliance/types.js +0 -1
- package/dist/config.d.ts +0 -1
- package/dist/config.js +2 -3
- package/dist/errors.d.ts +0 -1
- package/dist/errors.js +0 -1
- package/dist/events/event-emitter.d.ts +9 -1
- package/dist/events/event-emitter.js +47 -8
- package/dist/events/event-types.d.ts +0 -1
- package/dist/events/event-types.js +8 -2
- package/dist/gemini/gemini-client.d.ts +0 -1
- package/dist/gemini/gemini-client.js +237 -45
- package/dist/gemini/index.d.ts +0 -1
- package/dist/gemini/index.js +0 -1
- package/dist/gemini/pdf-chunker.d.ts +0 -1
- package/dist/gemini/pdf-chunker.js +60 -35
- package/dist/gemini/types.d.ts +0 -1
- package/dist/gemini/types.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +60 -7
- package/dist/library/notebook-library.d.ts +30 -2
- package/dist/library/notebook-library.js +345 -85
- package/dist/library/types.d.ts +0 -1
- package/dist/library/types.js +0 -1
- package/dist/logging/index.d.ts +0 -1
- package/dist/logging/index.js +0 -1
- package/dist/logging/query-logger.d.ts +20 -1
- package/dist/logging/query-logger.js +104 -21
- package/dist/notebook-creation/audio-manager.d.ts +7 -16
- package/dist/notebook-creation/audio-manager.js +115 -58
- package/dist/notebook-creation/browser-options.d.ts +0 -1
- package/dist/notebook-creation/browser-options.js +0 -1
- package/dist/notebook-creation/data-table-manager.d.ts +8 -14
- package/dist/notebook-creation/data-table-manager.js +64 -37
- package/dist/notebook-creation/dom-scripts.d.ts +0 -1
- package/dist/notebook-creation/dom-scripts.js +0 -1
- package/dist/notebook-creation/errors.d.ts +0 -1
- package/dist/notebook-creation/errors.js +0 -1
- package/dist/notebook-creation/index.d.ts +0 -1
- package/dist/notebook-creation/index.js +0 -1
- package/dist/notebook-creation/notebook-creator.d.ts +9 -1
- package/dist/notebook-creation/notebook-creator.js +50 -1
- package/dist/notebook-creation/notebook-nav.d.ts +0 -1
- package/dist/notebook-creation/notebook-nav.js +21 -6
- package/dist/notebook-creation/notebook-sync.d.ts +14 -2
- package/dist/notebook-creation/notebook-sync.js +124 -35
- package/dist/notebook-creation/selectors.d.ts +0 -1
- package/dist/notebook-creation/selectors.js +6 -4
- package/dist/notebook-creation/source-manager-shared.d.ts +75 -0
- package/dist/notebook-creation/source-manager-shared.js +86 -0
- package/dist/notebook-creation/source-manager.d.ts +29 -2
- package/dist/notebook-creation/source-manager.js +0 -0
- package/dist/notebook-creation/studio-manager-base.d.ts +57 -0
- package/dist/notebook-creation/studio-manager-base.js +67 -0
- package/dist/notebook-creation/types.d.ts +0 -1
- package/dist/notebook-creation/types.js +0 -1
- package/dist/notebook-creation/video-manager.d.ts +3 -16
- package/dist/notebook-creation/video-manager.js +94 -53
- package/dist/observability/metrics.d.ts +0 -1
- package/dist/observability/metrics.js +0 -1
- package/dist/quota/index.d.ts +0 -1
- package/dist/quota/index.js +0 -1
- package/dist/quota/quota-manager.d.ts +59 -4
- package/dist/quota/quota-manager.js +195 -46
- package/dist/resources/resource-handlers.d.ts +0 -1
- package/dist/resources/resource-handlers.js +33 -3
- package/dist/session/browser-session.d.ts +0 -1
- package/dist/session/browser-session.js +0 -1
- package/dist/session/session-manager.d.ts +0 -1
- package/dist/session/session-manager.js +0 -1
- package/dist/session/session-timeout.d.ts +0 -1
- package/dist/session/session-timeout.js +0 -1
- package/dist/session/shared-context-manager.d.ts +0 -1
- package/dist/session/shared-context-manager.js +0 -1
- package/dist/tools/annotations.d.ts +0 -1
- package/dist/tools/annotations.js +0 -1
- package/dist/tools/definitions/ask-question.d.ts +6 -3
- package/dist/tools/definitions/ask-question.js +12 -8
- package/dist/tools/definitions/chat-history.d.ts +0 -1
- package/dist/tools/definitions/chat-history.js +1 -1
- package/dist/tools/definitions/data-tables.d.ts +0 -1
- package/dist/tools/definitions/data-tables.js +4 -1
- package/dist/tools/definitions/gemini.d.ts +0 -1
- package/dist/tools/definitions/gemini.js +14 -7
- package/dist/tools/definitions/notebook-management.d.ts +0 -1
- package/dist/tools/definitions/notebook-management.js +7 -2
- package/dist/tools/definitions/query-history.d.ts +0 -1
- package/dist/tools/definitions/query-history.js +0 -1
- package/dist/tools/definitions/session-management.d.ts +0 -1
- package/dist/tools/definitions/session-management.js +0 -1
- package/dist/tools/definitions/system.d.ts +0 -1
- package/dist/tools/definitions/system.js +32 -12
- package/dist/tools/definitions/video.d.ts +0 -1
- package/dist/tools/definitions/video.js +6 -3
- package/dist/tools/definitions.d.ts +0 -1
- package/dist/tools/definitions.js +0 -1
- package/dist/tools/handlers/ask-question.d.ts +0 -1
- package/dist/tools/handlers/ask-question.js +47 -18
- package/dist/tools/handlers/audio-video.d.ts +0 -1
- package/dist/tools/handlers/audio-video.js +0 -1
- package/dist/tools/handlers/auth.d.ts +0 -1
- package/dist/tools/handlers/auth.js +0 -1
- package/dist/tools/handlers/error-utils.d.ts +0 -1
- package/dist/tools/handlers/error-utils.js +0 -1
- package/dist/tools/handlers/gemini.d.ts +0 -1
- package/dist/tools/handlers/gemini.js +0 -1
- package/dist/tools/handlers/index.d.ts +0 -1
- package/dist/tools/handlers/index.js +0 -1
- package/dist/tools/handlers/notebook-creation.d.ts +0 -1
- package/dist/tools/handlers/notebook-creation.js +16 -1
- package/dist/tools/handlers/notebook-management.d.ts +0 -1
- package/dist/tools/handlers/notebook-management.js +7 -2
- package/dist/tools/handlers/session-management.d.ts +0 -1
- package/dist/tools/handlers/session-management.js +0 -1
- package/dist/tools/handlers/system.d.ts +0 -1
- package/dist/tools/handlers/system.js +0 -1
- package/dist/tools/handlers/types.d.ts +0 -1
- package/dist/tools/handlers/types.js +0 -1
- package/dist/tools/handlers/webhooks.d.ts +0 -1
- package/dist/tools/handlers/webhooks.js +0 -1
- package/dist/tools/icons.d.ts +0 -1
- package/dist/tools/icons.js +0 -1
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.js +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.js +0 -1
- package/dist/utils/audit-logger.d.ts +11 -1
- package/dist/utils/audit-logger.js +189 -21
- package/dist/utils/cleanup-manager.d.ts +0 -1
- package/dist/utils/cleanup-manager.js +0 -1
- package/dist/utils/cli-handler.d.ts +0 -1
- package/dist/utils/cli-handler.js +0 -1
- package/dist/utils/crypto.d.ts +18 -9
- package/dist/utils/crypto.js +93 -28
- package/dist/utils/file-lock.d.ts +15 -1
- package/dist/utils/file-lock.js +67 -59
- package/dist/utils/file-permissions.d.ts +0 -1
- package/dist/utils/file-permissions.js +35 -7
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.js +0 -1
- package/dist/utils/page-utils.d.ts +0 -1
- package/dist/utils/page-utils.js +32 -28
- package/dist/utils/response-validator.d.ts +0 -1
- package/dist/utils/response-validator.js +18 -15
- package/dist/utils/secrets-scanner.d.ts +0 -1
- package/dist/utils/secrets-scanner.js +32 -7
- package/dist/utils/secure-memory.d.ts +34 -16
- package/dist/utils/secure-memory.js +40 -25
- package/dist/utils/security.d.ts +0 -1
- package/dist/utils/security.js +66 -39
- package/dist/utils/settings-manager.d.ts +9 -1
- package/dist/utils/settings-manager.js +45 -2
- package/dist/utils/stealth-utils.d.ts +0 -1
- package/dist/utils/stealth-utils.js +11 -9
- package/dist/webhooks/index.d.ts +0 -1
- package/dist/webhooks/index.js +0 -1
- package/dist/webhooks/types.d.ts +0 -1
- package/dist/webhooks/types.js +0 -1
- package/dist/webhooks/webhook-dispatcher.d.ts +0 -1
- package/dist/webhooks/webhook-dispatcher.js +0 -1
- package/package.json +5 -4
- package/dist/auth/auth-manager.d.ts.map +0 -1
- package/dist/auth/auth-manager.js.map +0 -1
- package/dist/auth/mcp-auth.d.ts.map +0 -1
- package/dist/auth/mcp-auth.js.map +0 -1
- package/dist/compliance/alert-manager.d.ts.map +0 -1
- package/dist/compliance/alert-manager.js.map +0 -1
- package/dist/compliance/breach-detection.d.ts.map +0 -1
- package/dist/compliance/breach-detection.js.map +0 -1
- package/dist/compliance/change-log.d.ts.map +0 -1
- package/dist/compliance/change-log.js.map +0 -1
- package/dist/compliance/compliance-logger.d.ts.map +0 -1
- package/dist/compliance/compliance-logger.js.map +0 -1
- package/dist/compliance/compliance-tools.d.ts.map +0 -1
- package/dist/compliance/compliance-tools.js.map +0 -1
- package/dist/compliance/consent-manager.d.ts.map +0 -1
- package/dist/compliance/consent-manager.js.map +0 -1
- package/dist/compliance/dashboard.d.ts.map +0 -1
- package/dist/compliance/dashboard.js.map +0 -1
- package/dist/compliance/data-classification.d.ts.map +0 -1
- package/dist/compliance/data-classification.js.map +0 -1
- package/dist/compliance/data-erasure.d.ts.map +0 -1
- package/dist/compliance/data-erasure.js.map +0 -1
- package/dist/compliance/data-export.d.ts.map +0 -1
- package/dist/compliance/data-export.js.map +0 -1
- package/dist/compliance/data-inventory.d.ts.map +0 -1
- package/dist/compliance/data-inventory.js.map +0 -1
- package/dist/compliance/dsar-handler.d.ts.map +0 -1
- package/dist/compliance/dsar-handler.js.map +0 -1
- package/dist/compliance/evidence-collector.d.ts.map +0 -1
- package/dist/compliance/evidence-collector.js.map +0 -1
- package/dist/compliance/health-monitor.d.ts.map +0 -1
- package/dist/compliance/health-monitor.js.map +0 -1
- package/dist/compliance/incident-manager.d.ts.map +0 -1
- package/dist/compliance/incident-manager.js.map +0 -1
- package/dist/compliance/index.d.ts.map +0 -1
- package/dist/compliance/index.js.map +0 -1
- package/dist/compliance/policy-docs.d.ts.map +0 -1
- package/dist/compliance/policy-docs.js.map +0 -1
- package/dist/compliance/privacy-notice-text.d.ts.map +0 -1
- package/dist/compliance/privacy-notice-text.js.map +0 -1
- package/dist/compliance/privacy-notice.d.ts.map +0 -1
- package/dist/compliance/privacy-notice.js.map +0 -1
- package/dist/compliance/report-generator.d.ts.map +0 -1
- package/dist/compliance/report-generator.js.map +0 -1
- package/dist/compliance/retention-engine.d.ts.map +0 -1
- package/dist/compliance/retention-engine.js.map +0 -1
- package/dist/compliance/siem-exporter.d.ts.map +0 -1
- package/dist/compliance/siem-exporter.js.map +0 -1
- package/dist/compliance/types.d.ts.map +0 -1
- package/dist/compliance/types.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/events/event-emitter.d.ts.map +0 -1
- package/dist/events/event-emitter.js.map +0 -1
- package/dist/events/event-types.d.ts.map +0 -1
- package/dist/events/event-types.js.map +0 -1
- package/dist/gemini/gemini-client.d.ts.map +0 -1
- package/dist/gemini/gemini-client.js.map +0 -1
- package/dist/gemini/index.d.ts.map +0 -1
- package/dist/gemini/index.js.map +0 -1
- package/dist/gemini/pdf-chunker.d.ts.map +0 -1
- package/dist/gemini/pdf-chunker.js.map +0 -1
- package/dist/gemini/types.d.ts.map +0 -1
- package/dist/gemini/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/library/notebook-library.d.ts.map +0 -1
- package/dist/library/notebook-library.js.map +0 -1
- package/dist/library/types.d.ts.map +0 -1
- package/dist/library/types.js.map +0 -1
- package/dist/logging/index.d.ts.map +0 -1
- package/dist/logging/index.js.map +0 -1
- package/dist/logging/query-logger.d.ts.map +0 -1
- package/dist/logging/query-logger.js.map +0 -1
- package/dist/notebook-creation/audio-manager.d.ts.map +0 -1
- package/dist/notebook-creation/audio-manager.js.map +0 -1
- package/dist/notebook-creation/browser-options.d.ts.map +0 -1
- package/dist/notebook-creation/browser-options.js.map +0 -1
- package/dist/notebook-creation/data-table-manager.d.ts.map +0 -1
- package/dist/notebook-creation/data-table-manager.js.map +0 -1
- package/dist/notebook-creation/discover-creation-flow.d.ts +0 -2
- package/dist/notebook-creation/discover-creation-flow.d.ts.map +0 -1
- package/dist/notebook-creation/discover-creation-flow.js +0 -177
- package/dist/notebook-creation/discover-creation-flow.js.map +0 -1
- package/dist/notebook-creation/discover-quota.d.ts +0 -2
- package/dist/notebook-creation/discover-quota.d.ts.map +0 -1
- package/dist/notebook-creation/discover-quota.js +0 -194
- package/dist/notebook-creation/discover-quota.js.map +0 -1
- package/dist/notebook-creation/discover-source-dialog.d.ts +0 -8
- package/dist/notebook-creation/discover-source-dialog.d.ts.map +0 -1
- package/dist/notebook-creation/discover-source-dialog.js +0 -134
- package/dist/notebook-creation/discover-source-dialog.js.map +0 -1
- package/dist/notebook-creation/discover-sources.d.ts +0 -8
- package/dist/notebook-creation/discover-sources.d.ts.map +0 -1
- package/dist/notebook-creation/discover-sources.js +0 -272
- package/dist/notebook-creation/discover-sources.js.map +0 -1
- package/dist/notebook-creation/discover-text-input.d.ts +0 -7
- package/dist/notebook-creation/discover-text-input.d.ts.map +0 -1
- package/dist/notebook-creation/discover-text-input.js +0 -135
- package/dist/notebook-creation/discover-text-input.js.map +0 -1
- package/dist/notebook-creation/dom-scripts.d.ts.map +0 -1
- package/dist/notebook-creation/dom-scripts.js.map +0 -1
- package/dist/notebook-creation/errors.d.ts.map +0 -1
- package/dist/notebook-creation/errors.js.map +0 -1
- package/dist/notebook-creation/index.d.ts.map +0 -1
- package/dist/notebook-creation/index.js.map +0 -1
- package/dist/notebook-creation/notebook-creator.d.ts.map +0 -1
- package/dist/notebook-creation/notebook-creator.js.map +0 -1
- package/dist/notebook-creation/notebook-nav.d.ts.map +0 -1
- package/dist/notebook-creation/notebook-nav.js.map +0 -1
- package/dist/notebook-creation/notebook-sync.d.ts.map +0 -1
- package/dist/notebook-creation/notebook-sync.js.map +0 -1
- package/dist/notebook-creation/run-discovery.d.ts +0 -11
- package/dist/notebook-creation/run-discovery.d.ts.map +0 -1
- package/dist/notebook-creation/run-discovery.js +0 -151
- package/dist/notebook-creation/run-discovery.js.map +0 -1
- package/dist/notebook-creation/selector-discovery.d.ts +0 -65
- package/dist/notebook-creation/selector-discovery.d.ts.map +0 -1
- package/dist/notebook-creation/selector-discovery.js +0 -414
- package/dist/notebook-creation/selector-discovery.js.map +0 -1
- package/dist/notebook-creation/selectors.d.ts.map +0 -1
- package/dist/notebook-creation/selectors.js.map +0 -1
- package/dist/notebook-creation/selectors.ts +0 -112
- package/dist/notebook-creation/source-manager.d.ts.map +0 -1
- package/dist/notebook-creation/source-manager.js.map +0 -1
- package/dist/notebook-creation/test-create.d.ts +0 -8
- package/dist/notebook-creation/test-create.d.ts.map +0 -1
- package/dist/notebook-creation/test-create.js +0 -72
- package/dist/notebook-creation/test-create.js.map +0 -1
- package/dist/notebook-creation/types.d.ts.map +0 -1
- package/dist/notebook-creation/types.js.map +0 -1
- package/dist/notebook-creation/video-manager.d.ts.map +0 -1
- package/dist/notebook-creation/video-manager.js.map +0 -1
- package/dist/observability/metrics.d.ts.map +0 -1
- package/dist/observability/metrics.js.map +0 -1
- package/dist/quota/index.d.ts.map +0 -1
- package/dist/quota/index.js.map +0 -1
- package/dist/quota/quota-manager.d.ts.map +0 -1
- package/dist/quota/quota-manager.js.map +0 -1
- package/dist/resources/resource-handlers.d.ts.map +0 -1
- package/dist/resources/resource-handlers.js.map +0 -1
- package/dist/session/browser-session.d.ts.map +0 -1
- package/dist/session/browser-session.js.map +0 -1
- package/dist/session/session-manager.d.ts.map +0 -1
- package/dist/session/session-manager.js.map +0 -1
- package/dist/session/session-timeout.d.ts.map +0 -1
- package/dist/session/session-timeout.js.map +0 -1
- package/dist/session/shared-context-manager.d.ts.map +0 -1
- package/dist/session/shared-context-manager.js.map +0 -1
- package/dist/tools/annotations.d.ts.map +0 -1
- package/dist/tools/annotations.js.map +0 -1
- package/dist/tools/definitions/ask-question.d.ts.map +0 -1
- package/dist/tools/definitions/ask-question.js.map +0 -1
- package/dist/tools/definitions/chat-history.d.ts.map +0 -1
- package/dist/tools/definitions/chat-history.js.map +0 -1
- package/dist/tools/definitions/data-tables.d.ts.map +0 -1
- package/dist/tools/definitions/data-tables.js.map +0 -1
- package/dist/tools/definitions/gemini.d.ts.map +0 -1
- package/dist/tools/definitions/gemini.js.map +0 -1
- package/dist/tools/definitions/notebook-management.d.ts.map +0 -1
- package/dist/tools/definitions/notebook-management.js.map +0 -1
- package/dist/tools/definitions/query-history.d.ts.map +0 -1
- package/dist/tools/definitions/query-history.js.map +0 -1
- package/dist/tools/definitions/session-management.d.ts.map +0 -1
- package/dist/tools/definitions/session-management.js.map +0 -1
- package/dist/tools/definitions/system.d.ts.map +0 -1
- package/dist/tools/definitions/system.js.map +0 -1
- package/dist/tools/definitions/video.d.ts.map +0 -1
- package/dist/tools/definitions/video.js.map +0 -1
- package/dist/tools/definitions.d.ts.map +0 -1
- package/dist/tools/definitions.js.map +0 -1
- package/dist/tools/handlers/ask-question.d.ts.map +0 -1
- package/dist/tools/handlers/ask-question.js.map +0 -1
- package/dist/tools/handlers/audio-video.d.ts.map +0 -1
- package/dist/tools/handlers/audio-video.js.map +0 -1
- package/dist/tools/handlers/auth.d.ts.map +0 -1
- package/dist/tools/handlers/auth.js.map +0 -1
- package/dist/tools/handlers/error-utils.d.ts.map +0 -1
- package/dist/tools/handlers/error-utils.js.map +0 -1
- package/dist/tools/handlers/gemini.d.ts.map +0 -1
- package/dist/tools/handlers/gemini.js.map +0 -1
- package/dist/tools/handlers/index.d.ts.map +0 -1
- package/dist/tools/handlers/index.js.map +0 -1
- package/dist/tools/handlers/notebook-creation.d.ts.map +0 -1
- package/dist/tools/handlers/notebook-creation.js.map +0 -1
- package/dist/tools/handlers/notebook-management.d.ts.map +0 -1
- package/dist/tools/handlers/notebook-management.js.map +0 -1
- package/dist/tools/handlers/session-management.d.ts.map +0 -1
- package/dist/tools/handlers/session-management.js.map +0 -1
- package/dist/tools/handlers/system.d.ts.map +0 -1
- package/dist/tools/handlers/system.js.map +0 -1
- package/dist/tools/handlers/types.d.ts.map +0 -1
- package/dist/tools/handlers/types.js.map +0 -1
- package/dist/tools/handlers/webhooks.d.ts.map +0 -1
- package/dist/tools/handlers/webhooks.js.map +0 -1
- package/dist/tools/handlers.d.ts +0 -666
- package/dist/tools/handlers.d.ts.map +0 -1
- package/dist/tools/handlers.js +0 -2929
- package/dist/tools/handlers.js.map +0 -1
- package/dist/tools/icons.d.ts.map +0 -1
- package/dist/tools/icons.js.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/audit-logger.d.ts.map +0 -1
- package/dist/utils/audit-logger.js.map +0 -1
- package/dist/utils/cert-pinning.d.ts +0 -97
- package/dist/utils/cert-pinning.d.ts.map +0 -1
- package/dist/utils/cert-pinning.js +0 -328
- package/dist/utils/cert-pinning.js.map +0 -1
- package/dist/utils/cleanup-manager.d.ts.map +0 -1
- package/dist/utils/cleanup-manager.js.map +0 -1
- package/dist/utils/cli-handler.d.ts.map +0 -1
- package/dist/utils/cli-handler.js.map +0 -1
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/crypto.js.map +0 -1
- package/dist/utils/file-lock.d.ts.map +0 -1
- package/dist/utils/file-lock.js.map +0 -1
- package/dist/utils/file-permissions.d.ts.map +0 -1
- package/dist/utils/file-permissions.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/page-utils.d.ts.map +0 -1
- package/dist/utils/page-utils.js.map +0 -1
- package/dist/utils/response-validator.d.ts.map +0 -1
- package/dist/utils/response-validator.js.map +0 -1
- package/dist/utils/secrets-scanner.d.ts.map +0 -1
- package/dist/utils/secrets-scanner.js.map +0 -1
- package/dist/utils/secure-memory.d.ts.map +0 -1
- package/dist/utils/secure-memory.js.map +0 -1
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/utils/security.js.map +0 -1
- package/dist/utils/settings-manager.d.ts.map +0 -1
- package/dist/utils/settings-manager.js.map +0 -1
- package/dist/utils/stealth-utils.d.ts.map +0 -1
- package/dist/utils/stealth-utils.js.map +0 -1
- package/dist/utils/tool-validation.d.ts +0 -93
- package/dist/utils/tool-validation.d.ts.map +0 -1
- package/dist/utils/tool-validation.js +0 -277
- package/dist/utils/tool-validation.js.map +0 -1
- package/dist/webhooks/index.d.ts.map +0 -1
- package/dist/webhooks/index.js.map +0 -1
- package/dist/webhooks/types.d.ts.map +0 -1
- package/dist/webhooks/types.js.map +0 -1
- package/dist/webhooks/webhook-dispatcher.d.ts.map +0 -1
- package/dist/webhooks/webhook-dispatcher.js.map +0 -1
- package/docs/COMPLIANCE-SPEC.md +0 -1452
- package/docs/MCP-DIRECTORY-LISTINGS.md +0 -91
- package/docs/SECURITY-FORK-OPPORTUNITIES.md +0 -79
- package/docs/SECURITY_IMPLEMENTATION_PLAN.md +0 -437
- package/docs/archive/ISSUES-legacy-2026-04-24.md +0 -644
- package/docs/configuration.md +0 -94
- package/docs/dependency-risk.md +0 -25
- package/docs/improvement-sprint-2026.2.10.md +0 -210
- package/docs/testing-runbook.md +0 -166
- package/docs/tools.md +0 -34
- package/docs/troubleshooting.md +0 -59
- package/docs/usage-guide.md +0 -246
package/docs/configuration.md
DELETED
|
@@ -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
|
-
|
package/docs/dependency-risk.md
DELETED
|
@@ -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
|
package/docs/testing-runbook.md
DELETED
|
@@ -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.
|
package/docs/troubleshooting.md
DELETED
|
@@ -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.
|