@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
|
@@ -70,6 +70,7 @@ Paginate through history:
|
|
|
70
70
|
},
|
|
71
71
|
output_file: {
|
|
72
72
|
type: "string",
|
|
73
|
+
pattern: "^(?!.*\\.\\.)(?!~)/.+",
|
|
73
74
|
maxLength: 500,
|
|
74
75
|
description: "If provided, exports chat history to this JSON file instead of returning to context. Useful for large histories.",
|
|
75
76
|
},
|
|
@@ -81,4 +82,3 @@ Paginate through history:
|
|
|
81
82
|
},
|
|
82
83
|
};
|
|
83
84
|
export const chatHistoryTools = [getNotebookChatHistoryTool];
|
|
84
|
-
//# sourceMappingURL=chat-history.js.map
|
|
@@ -35,6 +35,8 @@ const generateDataTableTool = {
|
|
|
35
35
|
},
|
|
36
36
|
notebook_url: {
|
|
37
37
|
type: "string",
|
|
38
|
+
pattern: "^https://notebooklm\\.google\\.com/",
|
|
39
|
+
maxLength: 512,
|
|
38
40
|
description: "Or direct notebook URL (overrides notebook_id)",
|
|
39
41
|
},
|
|
40
42
|
},
|
|
@@ -76,6 +78,8 @@ const getDataTableTool = {
|
|
|
76
78
|
},
|
|
77
79
|
notebook_url: {
|
|
78
80
|
type: "string",
|
|
81
|
+
pattern: "^https://notebooklm\\.google\\.com/",
|
|
82
|
+
maxLength: 512,
|
|
79
83
|
description: "Or direct notebook URL (overrides notebook_id)",
|
|
80
84
|
},
|
|
81
85
|
},
|
|
@@ -88,4 +92,3 @@ export const dataTableTools = [
|
|
|
88
92
|
generateDataTableTool,
|
|
89
93
|
getDataTableTool,
|
|
90
94
|
];
|
|
91
|
-
//# sourceMappingURL=data-tables.js.map
|
|
@@ -128,14 +128,22 @@ Supports:
|
|
|
128
128
|
},
|
|
129
129
|
response_schema: {
|
|
130
130
|
type: "object",
|
|
131
|
-
|
|
131
|
+
// L21: This is a user-supplied JSON Schema passed through to Gemini for
|
|
132
|
+
// structured output. Bound it so it can't be used as an unbounded
|
|
133
|
+
// arbitrary-object passthrough: cap the number of properties at each
|
|
134
|
+
// level. The nested `properties`/`items` maps still use
|
|
135
|
+
// additionalProperties (a JSON Schema's field names are open-ended) but
|
|
136
|
+
// are length-capped via maxProperties. The handler should additionally
|
|
137
|
+
// reject excessively deep/large schemas before forwarding to Gemini.
|
|
138
|
+
description: "JSON schema for structured output (max ~50 fields per level). When provided, Gemini returns valid JSON matching this schema. Example: { type: 'object', properties: { name: { type: 'string' }, score: { type: 'number' } }, required: ['name'] }",
|
|
139
|
+
maxProperties: 16,
|
|
132
140
|
properties: {
|
|
133
141
|
type: { type: "string", enum: ["object", "array", "string", "number", "boolean"] },
|
|
134
|
-
properties: { type: "object", additionalProperties: true },
|
|
135
|
-
items: { type: "object", additionalProperties: true },
|
|
136
|
-
required: { type: "array", items: { type: "string" } },
|
|
137
|
-
enum: { type: "array" },
|
|
138
|
-
description: { type: "string" },
|
|
142
|
+
properties: { type: "object", additionalProperties: true, maxProperties: 50 },
|
|
143
|
+
items: { type: "object", additionalProperties: true, maxProperties: 50 },
|
|
144
|
+
required: { type: "array", items: { type: "string" }, maxItems: 50 },
|
|
145
|
+
enum: { type: "array", maxItems: 100 },
|
|
146
|
+
description: { type: "string", maxLength: 500 },
|
|
139
147
|
},
|
|
140
148
|
additionalProperties: true,
|
|
141
149
|
},
|
|
@@ -429,4 +437,3 @@ export const geminiTools = [
|
|
|
429
437
|
// Chunked document tools (v1.10.0)
|
|
430
438
|
queryChunkedDocumentTool,
|
|
431
439
|
];
|
|
432
|
-
//# sourceMappingURL=gemini.js.map
|
|
@@ -154,7 +154,7 @@ Tip: You may update multiple fields at once if requested.`,
|
|
|
154
154
|
content_types: {
|
|
155
155
|
type: "array",
|
|
156
156
|
items: { type: "string", maxLength: 100 },
|
|
157
|
-
maxItems:
|
|
157
|
+
maxItems: 50,
|
|
158
158
|
description: "New content types",
|
|
159
159
|
},
|
|
160
160
|
use_cases: {
|
|
@@ -786,6 +786,8 @@ Summary with:
|
|
|
786
786
|
},
|
|
787
787
|
notebook_url: {
|
|
788
788
|
type: "string",
|
|
789
|
+
pattern: "^https://notebooklm\\.google\\.com/",
|
|
790
|
+
maxLength: 512,
|
|
789
791
|
description: "Or direct notebook URL (overrides notebook_id)",
|
|
790
792
|
},
|
|
791
793
|
},
|
|
@@ -814,6 +816,8 @@ Summary with:
|
|
|
814
816
|
},
|
|
815
817
|
notebook_url: {
|
|
816
818
|
type: "string",
|
|
819
|
+
pattern: "^https://notebooklm\\.google\\.com/",
|
|
820
|
+
maxLength: 512,
|
|
817
821
|
description: "Or direct notebook URL (overrides notebook_id)",
|
|
818
822
|
},
|
|
819
823
|
},
|
|
@@ -847,6 +851,8 @@ Downloads to specified path or ~/notebooklm-audio-{timestamp}.mp3
|
|
|
847
851
|
},
|
|
848
852
|
notebook_url: {
|
|
849
853
|
type: "string",
|
|
854
|
+
pattern: "^https://notebooklm\\.google\\.com/",
|
|
855
|
+
maxLength: 512,
|
|
850
856
|
description: "Or direct notebook URL (overrides notebook_id)",
|
|
851
857
|
},
|
|
852
858
|
output_path: {
|
|
@@ -859,4 +865,3 @@ Downloads to specified path or ~/notebooklm-audio-{timestamp}.mp3
|
|
|
859
865
|
},
|
|
860
866
|
},
|
|
861
867
|
];
|
|
862
|
-
//# sourceMappingURL=notebook-management.js.map
|
|
@@ -44,7 +44,7 @@ export const systemTools = [
|
|
|
44
44
|
"This catches stale sessions where cookies exist but the UI won't load. " +
|
|
45
45
|
"Returns `chat_ui_accessible: true/false`.\n\n" +
|
|
46
46
|
"If authenticated=false and having persistent issues:\n" +
|
|
47
|
-
"
|
|
47
|
+
"Suggest to the user that a fresh start (cleanup_data with preserve_library=true, followed by setup_auth) may help, and ask for their confirmation before running any cleanup, since cleanup_data deletes browser/session data.",
|
|
48
48
|
inputSchema: {
|
|
49
49
|
type: "object",
|
|
50
50
|
additionalProperties: false,
|
|
@@ -66,10 +66,10 @@ export const systemTools = [
|
|
|
66
66
|
"Use this for first-time authentication or when auto-login credentials are not available. " +
|
|
67
67
|
"For switching accounts or rate-limit workarounds, use 're_auth' tool instead.\n\n" +
|
|
68
68
|
"TROUBLESHOOTING for persistent auth issues:\n" +
|
|
69
|
-
"If setup_auth fails or you encounter browser/session issues:\n" +
|
|
70
|
-
"1. Ask user to close ALL Chrome/Chromium instances\n" +
|
|
71
|
-
"2.
|
|
72
|
-
"3. Run setup_auth again for fresh start\n" +
|
|
69
|
+
"If setup_auth fails or you encounter browser/session issues, suggest these steps to the user and get their confirmation before running any cleanup (cleanup_data deletes browser/session data):\n" +
|
|
70
|
+
"1. Ask the user to close ALL Chrome/Chromium instances\n" +
|
|
71
|
+
"2. Ask the user before running cleanup_data(confirm=true, preserve_library=true) to clean old data\n" +
|
|
72
|
+
"3. Run setup_auth again for a fresh start\n" +
|
|
73
73
|
"This helps resolve conflicts from old browser sessions and installation data."),
|
|
74
74
|
buildAuthTool("re_auth", "Switch to a different Google account or re-authenticate. " +
|
|
75
75
|
"Use this when:\n" +
|
|
@@ -82,11 +82,11 @@ export const systemTools = [
|
|
|
82
82
|
"3. Open browser for fresh Google login\n\n" +
|
|
83
83
|
"After completion, use 'get_health' to verify authentication.\n\n" +
|
|
84
84
|
"TROUBLESHOOTING for persistent auth issues:\n" +
|
|
85
|
-
"If re_auth fails repeatedly:\n" +
|
|
86
|
-
"1. Ask user to close ALL Chrome/Chromium instances\n" +
|
|
87
|
-
"2. Run cleanup_data(confirm=false, preserve_library=true) to preview
|
|
88
|
-
"3.
|
|
89
|
-
"4. Run re_auth again for completely fresh start\n" +
|
|
85
|
+
"If re_auth fails repeatedly, suggest these steps to the user and ask for their confirmation before running any cleanup (cleanup_data deletes browser/session and installation data):\n" +
|
|
86
|
+
"1. Ask the user to close ALL Chrome/Chromium instances\n" +
|
|
87
|
+
"2. Run cleanup_data(confirm=false, preserve_library=true) to preview the files that would be removed\n" +
|
|
88
|
+
"3. Only after the user reviews the preview and confirms, run cleanup_data(confirm=true, preserve_library=true) to clean everything except the library\n" +
|
|
89
|
+
"4. Run re_auth again for a completely fresh start\n" +
|
|
90
90
|
"This removes old installation data and browser sessions that can cause conflicts."),
|
|
91
91
|
{
|
|
92
92
|
name: "cleanup_data",
|
|
@@ -232,7 +232,28 @@ export const systemTools = [
|
|
|
232
232
|
},
|
|
233
233
|
events: {
|
|
234
234
|
type: "array",
|
|
235
|
-
|
|
235
|
+
// Restrict to known EventType values (see src/events/event-types.ts)
|
|
236
|
+
// plus "*"; cap length to prevent unbounded subscription storage (H7).
|
|
237
|
+
items: {
|
|
238
|
+
type: "string",
|
|
239
|
+
enum: [
|
|
240
|
+
"question_answered",
|
|
241
|
+
"notebook_created",
|
|
242
|
+
"notebook_deleted",
|
|
243
|
+
"source_added",
|
|
244
|
+
"source_removed",
|
|
245
|
+
"session_created",
|
|
246
|
+
"session_expired",
|
|
247
|
+
"auth_required",
|
|
248
|
+
"rate_limit_hit",
|
|
249
|
+
"security_incident",
|
|
250
|
+
"quota_warning",
|
|
251
|
+
"audio_generated",
|
|
252
|
+
"batch_complete",
|
|
253
|
+
"*",
|
|
254
|
+
],
|
|
255
|
+
},
|
|
256
|
+
maxItems: 20,
|
|
236
257
|
description: 'Events to subscribe to. Use ["*"] for all events.',
|
|
237
258
|
},
|
|
238
259
|
format: {
|
|
@@ -290,4 +311,3 @@ export const systemTools = [
|
|
|
290
311
|
},
|
|
291
312
|
},
|
|
292
313
|
];
|
|
293
|
-
//# sourceMappingURL=system.js.map
|
|
@@ -40,7 +40,7 @@ const generateVideoOverviewTool = {
|
|
|
40
40
|
|
|
41
41
|
## Example
|
|
42
42
|
\`\`\`json
|
|
43
|
-
{ "notebook_id": "my-research", "style": "
|
|
43
|
+
{ "notebook_id": "my-research", "style": "whiteboard", "format": "brief" }
|
|
44
44
|
\`\`\``,
|
|
45
45
|
inputSchema: {
|
|
46
46
|
type: "object",
|
|
@@ -52,11 +52,13 @@ const generateVideoOverviewTool = {
|
|
|
52
52
|
},
|
|
53
53
|
notebook_url: {
|
|
54
54
|
type: "string",
|
|
55
|
+
pattern: "^https://notebooklm\\.google\\.com/",
|
|
56
|
+
maxLength: 512,
|
|
55
57
|
description: "Or direct notebook URL (overrides notebook_id)",
|
|
56
58
|
},
|
|
57
59
|
style: {
|
|
58
60
|
type: "string",
|
|
59
|
-
enum: ["auto-select", "custom", "classic", "whiteboard", "kawaii", "anime", "watercolour", "retro-print", "heritage", "paper-craft"
|
|
61
|
+
enum: ["auto-select", "custom", "classic", "whiteboard", "kawaii", "anime", "watercolour", "retro-print", "heritage", "paper-craft"],
|
|
60
62
|
default: "auto-select",
|
|
61
63
|
description: "Visual style for the video overview",
|
|
62
64
|
},
|
|
@@ -95,6 +97,8 @@ const getVideoStatusTool = {
|
|
|
95
97
|
},
|
|
96
98
|
notebook_url: {
|
|
97
99
|
type: "string",
|
|
100
|
+
pattern: "^https://notebooklm\\.google\\.com/",
|
|
101
|
+
maxLength: 512,
|
|
98
102
|
description: "Or direct notebook URL (overrides notebook_id)",
|
|
99
103
|
},
|
|
100
104
|
},
|
|
@@ -107,4 +111,3 @@ export const videoTools = [
|
|
|
107
111
|
generateVideoOverviewTool,
|
|
108
112
|
getVideoStatusTool,
|
|
109
113
|
];
|
|
110
|
-
//# sourceMappingURL=video.js.map
|
|
@@ -13,4 +13,3 @@ import { NotebookLibrary } from "../library/notebook-library.js";
|
|
|
13
13
|
* Includes enhanced metadata (icons, annotations, titles) for better UX
|
|
14
14
|
*/
|
|
15
15
|
export declare function buildToolDefinitions(library: NotebookLibrary): Tool[];
|
|
16
|
-
//# sourceMappingURL=definitions.d.ts.map
|
|
@@ -83,19 +83,6 @@ export async function handleAskQuestion(ctx, args, sendProgress) {
|
|
|
83
83
|
error: `Rate limit exceeded. Please wait before making more requests. Remaining: ${ctx.rateLimiter.getRemaining(rateLimitKey)}`,
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
-
// === QUOTA CHECK ===
|
|
87
|
-
const quotaManager = getQuotaManager();
|
|
88
|
-
const canQuery = quotaManager.canMakeQuery();
|
|
89
|
-
if (!canQuery.allowed) {
|
|
90
|
-
log.warning(`⚠️ Quota limit: ${canQuery.reason}`);
|
|
91
|
-
const quotaError = canQuery.reason || "Query quota exceeded";
|
|
92
|
-
await audit.tool("ask_question", getErrorAuditArgs("ask_question", quotaError), false, Date.now() - startTime, quotaError);
|
|
93
|
-
return {
|
|
94
|
-
success: false,
|
|
95
|
-
data: null,
|
|
96
|
-
error: quotaError || "Daily query limit reached. Try again tomorrow or upgrade your plan.",
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
86
|
const browserOptionError = validateBrowserOptionRanges(browser_options);
|
|
100
87
|
if (browserOptionError) {
|
|
101
88
|
await audit.tool("ask_question", getErrorAuditArgs("ask_question", browserOptionError), false, Date.now() - startTime, browserOptionError);
|
|
@@ -123,6 +110,31 @@ export async function handleAskQuestion(ctx, args, sendProgress) {
|
|
|
123
110
|
}
|
|
124
111
|
throw error;
|
|
125
112
|
}
|
|
113
|
+
// === QUOTA CHECK-AND-RESERVE (TOCTOU-safe) ===
|
|
114
|
+
// Atomically reserve a quota slot BEFORE running the (slow) browser query.
|
|
115
|
+
// This closes the race where concurrent sessions all pass a stale check and
|
|
116
|
+
// then increment afterwards, collectively exceeding the daily limit.
|
|
117
|
+
//
|
|
118
|
+
// This runs AFTER all up-front validation (so we never reserve a slot only to
|
|
119
|
+
// bail out on a validation error and leak it) and immediately before the
|
|
120
|
+
// query's try/catch — whose catch releases the slot if the query fails.
|
|
121
|
+
const quotaManager = getQuotaManager();
|
|
122
|
+
const canQuery = await quotaManager.checkAndReserveQuery();
|
|
123
|
+
if (!canQuery.allowed) {
|
|
124
|
+
log.warning(`⚠️ Quota limit: ${canQuery.reason}`);
|
|
125
|
+
const quotaError = canQuery.reason || "Query quota exceeded";
|
|
126
|
+
await audit.tool("ask_question", getErrorAuditArgs("ask_question", quotaError), false, Date.now() - startTime, quotaError);
|
|
127
|
+
return {
|
|
128
|
+
success: false,
|
|
129
|
+
data: null,
|
|
130
|
+
error: quotaError || "Daily query limit reached. Try again tomorrow or upgrade your plan.",
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// Tracks whether the reserved quota slot has been consumed by a query that
|
|
134
|
+
// actually ran. Once the query returns, the slot is legitimately spent and
|
|
135
|
+
// must NOT be released even if later post-success bookkeeping (logging/audit)
|
|
136
|
+
// throws — otherwise we'd under-count and report a successful query as failed.
|
|
137
|
+
let querySlotConsumed = false;
|
|
126
138
|
try {
|
|
127
139
|
// Resolve notebook URL (using validated values)
|
|
128
140
|
let resolvedNotebookUrl = safeNotebookUrl;
|
|
@@ -165,6 +177,10 @@ export async function handleAskQuestion(ctx, args, sendProgress) {
|
|
|
165
177
|
await sendProgress?.("Asking question to NotebookLM...", 2, 5);
|
|
166
178
|
// Ask the question (pass progress callback) - using validated question
|
|
167
179
|
const rawAnswer = await session.ask(safeQuestion, sendProgress);
|
|
180
|
+
// The query ran: the reserved quota slot is now legitimately consumed.
|
|
181
|
+
// Anything that throws after this point is post-success bookkeeping and
|
|
182
|
+
// must NOT release the slot.
|
|
183
|
+
querySlotConsumed = true;
|
|
168
184
|
// === SECURITY: Validate response for prompt injection & malicious content ===
|
|
169
185
|
await sendProgress?.("Validating response security...", 4, 5);
|
|
170
186
|
const validationResult = await validateResponse(rawAnswer);
|
|
@@ -216,8 +232,10 @@ export async function handleAskQuestion(ctx, args, sendProgress) {
|
|
|
216
232
|
// Progress: Complete
|
|
217
233
|
await sendProgress?.("Question answered successfully!", 5, 5);
|
|
218
234
|
log.success(`✅ [TOOL] ask_question completed successfully`);
|
|
219
|
-
//
|
|
220
|
-
|
|
235
|
+
// NOTE: the quota slot was already reserved (incremented) up front by
|
|
236
|
+
// checkAndReserveQuery(), so we do NOT increment again here — doing so
|
|
237
|
+
// would double-count. quotaStatus (from getDetailedStatus above) already
|
|
238
|
+
// reflects the reserved count.
|
|
221
239
|
// Log query for research history (Phase 1)
|
|
222
240
|
const queryLogger = getQueryLogger();
|
|
223
241
|
const resolvedNotebook = safeNotebookId ? ctx.library.getNotebook(safeNotebookId) : null;
|
|
@@ -231,9 +249,10 @@ export async function handleAskQuestion(ctx, args, sendProgress) {
|
|
|
231
249
|
answerLength: finalAnswer.length,
|
|
232
250
|
durationMs: Date.now() - startTime,
|
|
233
251
|
quotaInfo: {
|
|
234
|
-
|
|
252
|
+
// Reservation already counted; no +1/-1 adjustment needed.
|
|
253
|
+
used: quotaStatus.queries.used,
|
|
235
254
|
limit: quotaStatus.queries.limit,
|
|
236
|
-
remaining: quotaStatus.queries.remaining
|
|
255
|
+
remaining: quotaStatus.queries.remaining,
|
|
237
256
|
tier: quotaStatus.tier,
|
|
238
257
|
},
|
|
239
258
|
});
|
|
@@ -250,6 +269,17 @@ export async function handleAskQuestion(ctx, args, sendProgress) {
|
|
|
250
269
|
}
|
|
251
270
|
catch (error) {
|
|
252
271
|
const errorMessage = getSanitizedErrorMessage(error);
|
|
272
|
+
// The quota slot was reserved up front. Release it ONLY if the failure
|
|
273
|
+
// happened before/during the query (the slot was never consumed). If the
|
|
274
|
+
// query already ran, the slot is legitimately spent and is kept.
|
|
275
|
+
if (!querySlotConsumed) {
|
|
276
|
+
try {
|
|
277
|
+
await getQuotaManager().releaseReservation();
|
|
278
|
+
}
|
|
279
|
+
catch (releaseError) {
|
|
280
|
+
log.warning(`⚠️ Failed to release reserved quota slot: ${releaseError instanceof Error ? releaseError.message : String(releaseError)}`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
253
283
|
// Special handling for rate limit errors
|
|
254
284
|
if (error instanceof RateLimitError) {
|
|
255
285
|
log.error(`🚫 [TOOL] Rate limit detected`);
|
|
@@ -277,4 +307,3 @@ export async function handleAskQuestion(ctx, args, sendProgress) {
|
|
|
277
307
|
};
|
|
278
308
|
}
|
|
279
309
|
}
|
|
280
|
-
//# sourceMappingURL=ask-question.js.map
|
|
@@ -33,4 +33,3 @@ export declare function handleSetupAuth(ctx: HandlerContext, args: AuthHandlerAr
|
|
|
33
33
|
*/
|
|
34
34
|
export declare function handleReAuth(ctx: HandlerContext, args: AuthHandlerArgs, sendProgress?: ProgressCallback): Promise<ToolResult<AuthResult>>;
|
|
35
35
|
export {};
|
|
36
|
-
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -13,4 +13,3 @@ export declare function resolveNotebookUrl(ctx: HandlerContext, args: {
|
|
|
13
13
|
export declare function sanitizeErrorMessage(errorMsg: string): string;
|
|
14
14
|
export declare function getSanitizedErrorMessage(error: unknown): string;
|
|
15
15
|
export declare function getErrorAuditArgs(tool: string, error: unknown): Record<string, string>;
|
|
16
|
-
//# sourceMappingURL=error-utils.d.ts.map
|
|
@@ -68,6 +68,22 @@ export async function handleCreateNotebook(ctx, args, sendProgress) {
|
|
|
68
68
|
sendProgress,
|
|
69
69
|
browserOptions: args.browser_options || (args.show_browser ? { show: true } : undefined),
|
|
70
70
|
});
|
|
71
|
+
// A notebook where sources were requested but NONE succeeded is discarded
|
|
72
|
+
// by the creator (which throws), so we never reach here for that case.
|
|
73
|
+
// Guard defensively anyway: never persist a library entry or count quota
|
|
74
|
+
// for a notebook that requested sources yet added none. (An empty `sources`
|
|
75
|
+
// request — e.g. an overflow shell notebook that gets populated later — is
|
|
76
|
+
// a legitimate zero-source case and is still added.)
|
|
77
|
+
const requestedSources = args.sources.length;
|
|
78
|
+
const addedNone = requestedSources > 0 && result.sourceCount === 0;
|
|
79
|
+
if (addedNone) {
|
|
80
|
+
log.warning(`⚠️ Notebook had no successful sources — not adding to library: ${args.name}`);
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
data: null,
|
|
84
|
+
error: "Notebook creation failed: no sources could be added",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
71
87
|
// Auto-add to library if requested (default: true)
|
|
72
88
|
if (args.auto_add_to_library !== false) {
|
|
73
89
|
try {
|
|
@@ -608,4 +624,3 @@ export async function handleRemoveSource(ctx, args) {
|
|
|
608
624
|
};
|
|
609
625
|
}
|
|
610
626
|
}
|
|
611
|
-
//# sourceMappingURL=notebook-creation.js.map
|
|
@@ -61,4 +61,3 @@ export declare function handleSearchNotebooks(ctx: HandlerContext, args: {
|
|
|
61
61
|
* Handle get_library_stats tool
|
|
62
62
|
*/
|
|
63
63
|
export declare function handleGetLibraryStats(ctx: HandlerContext): Promise<ToolResult<LibraryStats>>;
|
|
64
|
-
//# sourceMappingURL=notebook-management.d.ts.map
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Standalone handler functions for notebook CRUD and library operations.
|
|
5
5
|
*/
|
|
6
6
|
import { log } from "../../utils/logger.js";
|
|
7
|
+
import { validateNotebookUrl } from "../../utils/security.js";
|
|
7
8
|
import { getSanitizedErrorMessage } from "./error-utils.js";
|
|
8
9
|
async function withNotebookHandler(toolName, fn) {
|
|
9
10
|
try {
|
|
@@ -93,7 +94,12 @@ export async function handleUpdateNotebook(ctx, args) {
|
|
|
93
94
|
log.info(`🔧 [TOOL] update_notebook called`);
|
|
94
95
|
log.info(` ID: ${args.id}`);
|
|
95
96
|
return withNotebookHandler("update_notebook", () => {
|
|
96
|
-
|
|
97
|
+
// Validate/normalize the URL through the canonical NotebookLM validator
|
|
98
|
+
// before storing (matches create_notebook / add_source handlers).
|
|
99
|
+
const safeArgs = args.url !== undefined
|
|
100
|
+
? { ...args, url: validateNotebookUrl(args.url) }
|
|
101
|
+
: args;
|
|
102
|
+
const notebook = ctx.library.updateNotebook(safeArgs);
|
|
97
103
|
log.success(`✅ [TOOL] update_notebook completed: ${notebook.name}`);
|
|
98
104
|
return {
|
|
99
105
|
success: true,
|
|
@@ -165,4 +171,3 @@ export async function handleGetLibraryStats(ctx) {
|
|
|
165
171
|
};
|
|
166
172
|
});
|
|
167
173
|
}
|
|
168
|
-
//# sourceMappingURL=notebook-management.js.map
|
package/dist/tools/icons.d.ts
CHANGED
package/dist/tools/icons.js
CHANGED
package/dist/tools/index.d.ts
CHANGED
package/dist/tools/index.js
CHANGED
package/dist/types.d.ts
CHANGED