@pan-sec/notebooklm-mcp 2026.3.2 → 2026.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +74 -10
- 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 +0 -1
- package/dist/notebook-creation/audio-manager.js +111 -20
- 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 +7 -1
- package/dist/notebook-creation/data-table-manager.js +59 -3
- 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.d.ts +29 -2
- package/dist/notebook-creation/source-manager.js +0 -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 +0 -1
- package/dist/notebook-creation/video-manager.js +91 -15
- 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
|
@@ -22,6 +22,17 @@ export const GEMINI_LIMITS = {
|
|
|
22
22
|
chunkPages: 500, // Pages per chunk
|
|
23
23
|
chunkSizeBytes: 25 * 1024 * 1024, // 25MB target per chunk
|
|
24
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* Hard DoS-protection ceilings. These are distinct from the chunking thresholds
|
|
27
|
+
* above (which decide *whether* to split a legitimately large file). A file
|
|
28
|
+
* above these ceilings is REJECTED outright — never read fully into memory or
|
|
29
|
+
* parsed — because an untrusted PDF (decompression bomb, deeply-nested object
|
|
30
|
+
* graph, absurd page count) can OOM the process from a single upload.
|
|
31
|
+
*/
|
|
32
|
+
// Reject any file larger than this BEFORE reading it into memory.
|
|
33
|
+
const MAX_ACCEPTED_FILE_SIZE_BYTES = 200 * 1024 * 1024; // 200MB
|
|
34
|
+
// Reject any PDF with more pages than this AFTER load, before walking the graph.
|
|
35
|
+
const MAX_ACCEPTED_PAGES = 10000;
|
|
25
36
|
/**
|
|
26
37
|
* Analyze a PDF to determine if it needs chunking
|
|
27
38
|
*/
|
|
@@ -29,7 +40,12 @@ export async function analyzePdf(filePath) {
|
|
|
29
40
|
const stats = await fs.promises.stat(filePath);
|
|
30
41
|
const fileName = path.basename(filePath);
|
|
31
42
|
const fileSize = stats.size;
|
|
32
|
-
//
|
|
43
|
+
// DoS guard: reject absurdly large files BEFORE reading them into memory.
|
|
44
|
+
if (fileSize > MAX_ACCEPTED_FILE_SIZE_BYTES) {
|
|
45
|
+
throw new Error(`PDF rejected: file size ${formatBytes(fileSize)} exceeds the hard limit of ${formatBytes(MAX_ACCEPTED_FILE_SIZE_BYTES)}`);
|
|
46
|
+
}
|
|
47
|
+
// Files between the chunk threshold and the hard ceiling are legitimately
|
|
48
|
+
// large and get split into chunks (page count is unknown until read).
|
|
33
49
|
if (fileSize > GEMINI_LIMITS.maxFileSizeBytes) {
|
|
34
50
|
const estimatedChunks = Math.ceil(fileSize / GEMINI_LIMITS.chunkSizeBytes);
|
|
35
51
|
return {
|
|
@@ -42,48 +58,48 @@ export async function analyzePdf(filePath) {
|
|
|
42
58
|
reason: `File size ${formatBytes(fileSize)} exceeds 50MB limit`,
|
|
43
59
|
};
|
|
44
60
|
}
|
|
45
|
-
// Read PDF to get page count
|
|
61
|
+
// Read PDF to get page count. Do NOT ignore encryption: refuse to decrypt
|
|
62
|
+
// hostile input. PDFDocument.load throws on encrypted documents when
|
|
63
|
+
// ignoreEncryption is false, which we treat as a fail-closed rejection below.
|
|
64
|
+
let pdfDoc;
|
|
46
65
|
try {
|
|
47
66
|
const pdfBytes = await fs.promises.readFile(filePath);
|
|
48
|
-
|
|
49
|
-
ignoreEncryption:
|
|
67
|
+
pdfDoc = await PDFDocument.load(pdfBytes, {
|
|
68
|
+
ignoreEncryption: false,
|
|
50
69
|
});
|
|
51
|
-
const pageCount = pdfDoc.getPageCount();
|
|
52
|
-
if (pageCount > GEMINI_LIMITS.maxPages) {
|
|
53
|
-
const estimatedChunks = Math.ceil(pageCount / GEMINI_LIMITS.chunkPages);
|
|
54
|
-
return {
|
|
55
|
-
filePath,
|
|
56
|
-
fileName,
|
|
57
|
-
fileSize,
|
|
58
|
-
pageCount,
|
|
59
|
-
needsChunking: true,
|
|
60
|
-
estimatedChunks,
|
|
61
|
-
reason: `Page count ${pageCount} exceeds 1000 page limit`,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
return {
|
|
65
|
-
filePath,
|
|
66
|
-
fileName,
|
|
67
|
-
fileSize,
|
|
68
|
-
pageCount,
|
|
69
|
-
needsChunking: false,
|
|
70
|
-
estimatedChunks: 1,
|
|
71
|
-
};
|
|
72
70
|
}
|
|
73
71
|
catch (error) {
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
|
|
72
|
+
// FAIL CLOSED: an unparseable/encrypted/malformed PDF is rejected rather
|
|
73
|
+
// than passed downstream for Gemini to "handle".
|
|
74
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
75
|
+
log.warning(`Rejecting PDF ${fileName}: could not parse (it may be encrypted or malformed): ${msg}`);
|
|
76
|
+
throw new Error(`PDF rejected: could not parse (it may be encrypted or malformed): ${msg}`);
|
|
77
|
+
}
|
|
78
|
+
const pageCount = pdfDoc.getPageCount();
|
|
79
|
+
// DoS guard: reject PDFs with an absurd page count.
|
|
80
|
+
if (pageCount > MAX_ACCEPTED_PAGES) {
|
|
81
|
+
throw new Error(`PDF rejected: page count ${pageCount} exceeds the hard limit of ${MAX_ACCEPTED_PAGES}`);
|
|
82
|
+
}
|
|
83
|
+
if (pageCount > GEMINI_LIMITS.maxPages) {
|
|
84
|
+
const estimatedChunks = Math.ceil(pageCount / GEMINI_LIMITS.chunkPages);
|
|
77
85
|
return {
|
|
78
86
|
filePath,
|
|
79
87
|
fileName,
|
|
80
88
|
fileSize,
|
|
81
|
-
pageCount
|
|
82
|
-
needsChunking:
|
|
83
|
-
estimatedChunks
|
|
84
|
-
reason: `
|
|
89
|
+
pageCount,
|
|
90
|
+
needsChunking: true,
|
|
91
|
+
estimatedChunks,
|
|
92
|
+
reason: `Page count ${pageCount} exceeds 1000 page limit`,
|
|
85
93
|
};
|
|
86
94
|
}
|
|
95
|
+
return {
|
|
96
|
+
filePath,
|
|
97
|
+
fileName,
|
|
98
|
+
fileSize,
|
|
99
|
+
pageCount,
|
|
100
|
+
needsChunking: false,
|
|
101
|
+
estimatedChunks: 1,
|
|
102
|
+
};
|
|
87
103
|
}
|
|
88
104
|
/**
|
|
89
105
|
* Split a PDF into chunks
|
|
@@ -93,12 +109,22 @@ export async function chunkPdf(filePath) {
|
|
|
93
109
|
const tempDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), "pdf-chunks-"));
|
|
94
110
|
try {
|
|
95
111
|
log.info(`Chunking PDF: ${filePath}`);
|
|
96
|
-
//
|
|
112
|
+
// DoS guard: reject absurdly large files BEFORE reading into memory.
|
|
113
|
+
const stats = await fs.promises.stat(filePath);
|
|
114
|
+
if (stats.size > MAX_ACCEPTED_FILE_SIZE_BYTES) {
|
|
115
|
+
throw new Error(`PDF rejected: file size ${formatBytes(stats.size)} exceeds the hard limit of ${formatBytes(MAX_ACCEPTED_FILE_SIZE_BYTES)}`);
|
|
116
|
+
}
|
|
117
|
+
// Read the original PDF. Do NOT ignore encryption: refuse to decrypt
|
|
118
|
+
// hostile input (load throws on encrypted PDFs when ignoreEncryption=false).
|
|
97
119
|
const pdfBytes = await fs.promises.readFile(filePath);
|
|
98
120
|
const pdfDoc = await PDFDocument.load(pdfBytes, {
|
|
99
|
-
ignoreEncryption:
|
|
121
|
+
ignoreEncryption: false,
|
|
100
122
|
});
|
|
101
123
|
const totalPages = pdfDoc.getPageCount();
|
|
124
|
+
// DoS guard: reject PDFs with an absurd page count before walking the graph.
|
|
125
|
+
if (totalPages > MAX_ACCEPTED_PAGES) {
|
|
126
|
+
throw new Error(`PDF rejected: page count ${totalPages} exceeds the hard limit of ${MAX_ACCEPTED_PAGES}`);
|
|
127
|
+
}
|
|
102
128
|
log.info(`PDF has ${totalPages} pages, splitting into chunks...`);
|
|
103
129
|
const chunks = [];
|
|
104
130
|
let currentPage = 0;
|
|
@@ -194,4 +220,3 @@ function formatBytes(bytes) {
|
|
|
194
220
|
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
195
221
|
return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
|
|
196
222
|
}
|
|
197
|
-
//# sourceMappingURL=pdf-chunker.js.map
|
package/dist/gemini/types.d.ts
CHANGED
package/dist/gemini/types.js
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
33
33
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
34
34
|
import { createRequire } from "module";
|
|
35
35
|
import crypto from "node:crypto";
|
|
36
|
+
import { realpathSync } from "node:fs";
|
|
36
37
|
import { pathToFileURL } from "node:url";
|
|
37
38
|
import { AuthManager } from "./auth/auth-manager.js";
|
|
38
39
|
import { SessionManager } from "./session/session-manager.js";
|
|
@@ -557,8 +558,10 @@ export class NotebookLMMCPServer {
|
|
|
557
558
|
try {
|
|
558
559
|
const breachDetector = getBreachDetector();
|
|
559
560
|
getAuditLogger().onEvent(async (event) => {
|
|
560
|
-
|
|
561
|
-
|
|
561
|
+
// Forward ALL event types to checkEvent; it filters by event_pattern.
|
|
562
|
+
// A pre-filter on eventType dropped non-auth rules (secrets_detected in
|
|
563
|
+
// tool output, prompt_injection, data_export, encryption_error) before
|
|
564
|
+
// pattern matching, leaving those critical/high rules dead (M20).
|
|
562
565
|
try {
|
|
563
566
|
await breachDetector.checkEvent(event.eventName, event.details);
|
|
564
567
|
}
|
|
@@ -574,11 +577,63 @@ export class NotebookLMMCPServer {
|
|
|
574
577
|
// Pipe audit events to SIEM when enabled (I247). exportToSIEM is a no-op
|
|
575
578
|
// when NLMCP_SIEM_ENABLED is not true.
|
|
576
579
|
try {
|
|
580
|
+
// Event types whose SUCCESSFUL operations must still reach the SIEM so the
|
|
581
|
+
// tamper-evident external copy is complete (M21). Without flooring these to
|
|
582
|
+
// at least "warning", successful grant_consent / request_data_erasure /
|
|
583
|
+
// submit_dsar / config / retention events would map to "info" and be dropped
|
|
584
|
+
// by the default min_severity ("warning").
|
|
585
|
+
const SIEM_FLOOR_TYPES = new Set(["compliance", "data_access", "configuration", "retention"]);
|
|
586
|
+
// SIEM export crosses the local-only boundary asserted by the privacy notice
|
|
587
|
+
// ("Local device only"). audit-logger only sanitizes by KEY name, so free-text
|
|
588
|
+
// VALUES (and args_summary content) would egress raw PII to the external SIEM
|
|
589
|
+
// endpoint (L52). Value-scrub here before forwarding: drop known free-text PII
|
|
590
|
+
// fields to a short content hash + length marker, and truncate other long
|
|
591
|
+
// free-text values, so raw PII does not leave the host.
|
|
592
|
+
const SIEM_FREE_TEXT_PII_FIELDS = new Set([
|
|
593
|
+
"description", "reason", "details", "title", "question", "answer", "args_summary",
|
|
594
|
+
]);
|
|
595
|
+
const SIEM_MAX_VALUE_LEN = 120;
|
|
596
|
+
const scrubValueForSIEM = (key, value) => {
|
|
597
|
+
if (typeof value === "string") {
|
|
598
|
+
if (SIEM_FREE_TEXT_PII_FIELDS.has(key.toLowerCase())) {
|
|
599
|
+
const digest = crypto.createHash("sha256").update(value).digest("hex").slice(0, 12);
|
|
600
|
+
return `[scrubbed sha256:${digest} len:${value.length}]`;
|
|
601
|
+
}
|
|
602
|
+
if (value.length > SIEM_MAX_VALUE_LEN) {
|
|
603
|
+
return `${value.slice(0, SIEM_MAX_VALUE_LEN)}…[truncated len:${value.length}]`;
|
|
604
|
+
}
|
|
605
|
+
return value;
|
|
606
|
+
}
|
|
607
|
+
if (Array.isArray(value)) {
|
|
608
|
+
return value.map((item) => scrubValueForSIEM(key, item));
|
|
609
|
+
}
|
|
610
|
+
if (value !== null && typeof value === "object") {
|
|
611
|
+
return scrubDetailsForSIEM(value);
|
|
612
|
+
}
|
|
613
|
+
return value;
|
|
614
|
+
};
|
|
615
|
+
const scrubDetailsForSIEM = (details) => {
|
|
616
|
+
const scrubbed = {};
|
|
617
|
+
for (const [key, value] of Object.entries(details)) {
|
|
618
|
+
scrubbed[key] = scrubValueForSIEM(key, value);
|
|
619
|
+
}
|
|
620
|
+
return scrubbed;
|
|
621
|
+
};
|
|
577
622
|
getAuditLogger().onEvent(async (event) => {
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
623
|
+
let severity;
|
|
624
|
+
if (event.eventType === "security" && typeof event.details.severity === "string") {
|
|
625
|
+
severity = event.details.severity;
|
|
626
|
+
}
|
|
627
|
+
else if (!event.success) {
|
|
628
|
+
severity = "error";
|
|
629
|
+
}
|
|
630
|
+
else if (SIEM_FLOOR_TYPES.has(event.eventType)) {
|
|
631
|
+
severity = "warning";
|
|
632
|
+
}
|
|
633
|
+
else {
|
|
634
|
+
severity = "info";
|
|
635
|
+
}
|
|
636
|
+
await exportToSIEM(event.eventType, event.eventName, severity, `${event.eventType}:${event.eventName}`, "audit-logger", scrubDetailsForSIEM(event.details));
|
|
582
637
|
});
|
|
583
638
|
log.info("📡 SIEM audit export bridge registered");
|
|
584
639
|
}
|
|
@@ -713,10 +768,19 @@ export async function main() {
|
|
|
713
768
|
process.exit(1);
|
|
714
769
|
}
|
|
715
770
|
}
|
|
716
|
-
const isDirectRun =
|
|
717
|
-
|
|
718
|
-
|
|
771
|
+
const isDirectRun = (() => {
|
|
772
|
+
if (!process.argv[1])
|
|
773
|
+
return false;
|
|
774
|
+
try {
|
|
775
|
+
return import.meta.url === pathToFileURL(realpathSync(process.argv[1])).href;
|
|
776
|
+
}
|
|
777
|
+
catch {
|
|
778
|
+
return false;
|
|
779
|
+
}
|
|
780
|
+
})();
|
|
719
781
|
if (isDirectRun) {
|
|
720
782
|
void main();
|
|
721
783
|
}
|
|
722
|
-
|
|
784
|
+
else if (process.argv[1] && process.env.NLMCP_DEBUG) {
|
|
785
|
+
log.debug(`entry-point guard: argv[1]=${process.argv[1]} did not resolve to ${import.meta.url} — main() skipped`);
|
|
786
|
+
}
|
|
@@ -14,6 +14,8 @@ export declare class NotebookLibrary {
|
|
|
14
14
|
private projectInfo;
|
|
15
15
|
private useProjectLibrary;
|
|
16
16
|
private saveTimer;
|
|
17
|
+
/** Pending use-count deltas keyed by notebook id, flushed by the debounced save. (M25) */
|
|
18
|
+
private pendingUseCounts;
|
|
17
19
|
constructor(options?: {
|
|
18
20
|
projectId?: string;
|
|
19
21
|
useProjectLibrary?: boolean;
|
|
@@ -47,7 +49,24 @@ export declare class NotebookLibrary {
|
|
|
47
49
|
*/
|
|
48
50
|
private saveLibrary;
|
|
49
51
|
/**
|
|
50
|
-
*
|
|
52
|
+
* Read the library file from disk without mutating in-memory state.
|
|
53
|
+
* Used inside the lock to pick up changes made by concurrent sessions. (M25)
|
|
54
|
+
*/
|
|
55
|
+
private readLibraryFromDisk;
|
|
56
|
+
/**
|
|
57
|
+
* Atomically apply a read-modify-write to the library file.
|
|
58
|
+
*
|
|
59
|
+
* Holds a cross-process lock, reloads the latest library from disk (so a
|
|
60
|
+
* concurrent session's notebooks aren't clobbered), applies `mutate` to a
|
|
61
|
+
* deep copy, persists it, and only then commits it to this.library. If the
|
|
62
|
+
* write throws, this.library is left untouched. (M25)
|
|
63
|
+
*/
|
|
64
|
+
private mutateLibrary;
|
|
65
|
+
/**
|
|
66
|
+
* Generate a unique ID from a string (slug format).
|
|
67
|
+
* Uniqueness is checked against the supplied library (defaults to the
|
|
68
|
+
* in-memory one) so callers inside mutateLibrary can de-dupe against the
|
|
69
|
+
* freshly-reloaded disk state. (M25)
|
|
51
70
|
*/
|
|
52
71
|
private generateId;
|
|
53
72
|
/**
|
|
@@ -86,6 +105,16 @@ export declare class NotebookLibrary {
|
|
|
86
105
|
* Debounced save — avoids writing to disk on every single query
|
|
87
106
|
*/
|
|
88
107
|
private debouncedSave;
|
|
108
|
+
/**
|
|
109
|
+
* Synchronously flush any pending debounced use-count updates to disk under
|
|
110
|
+
* the cross-process lock, re-applying the accumulated deltas to the latest
|
|
111
|
+
* on-disk library so concurrent sessions' notebooks and counts survive. (M25)
|
|
112
|
+
*/
|
|
113
|
+
flushSave(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Release resources: flush pending writes and detach shutdown handlers. (M25)
|
|
116
|
+
*/
|
|
117
|
+
close(): void;
|
|
89
118
|
/**
|
|
90
119
|
* Get library statistics
|
|
91
120
|
*/
|
|
@@ -95,4 +124,3 @@ export declare class NotebookLibrary {
|
|
|
95
124
|
*/
|
|
96
125
|
searchNotebooks(query: string): NotebookEntry[];
|
|
97
126
|
}
|
|
98
|
-
//# sourceMappingURL=notebook-library.d.ts.map
|