@pan-sec/notebooklm-mcp 2026.2.1 → 2026.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +39 -18
  2. package/dist/auth/auth-manager.d.ts +37 -2
  3. package/dist/auth/auth-manager.d.ts.map +1 -1
  4. package/dist/auth/auth-manager.js +133 -11
  5. package/dist/auth/auth-manager.js.map +1 -1
  6. package/dist/auth/mcp-auth.d.ts +25 -4
  7. package/dist/auth/mcp-auth.d.ts.map +1 -1
  8. package/dist/auth/mcp-auth.js +145 -29
  9. package/dist/auth/mcp-auth.js.map +1 -1
  10. package/dist/compliance/retention-engine.js +1 -1
  11. package/dist/compliance/retention-engine.js.map +1 -1
  12. package/dist/config.d.ts +24 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +56 -8
  15. package/dist/config.js.map +1 -1
  16. package/dist/gemini/gemini-client.d.ts.map +1 -1
  17. package/dist/gemini/gemini-client.js +58 -20
  18. package/dist/gemini/gemini-client.js.map +1 -1
  19. package/dist/index.js +87 -180
  20. package/dist/index.js.map +1 -1
  21. package/dist/notebook-creation/audio-manager.js +2 -2
  22. package/dist/notebook-creation/audio-manager.js.map +1 -1
  23. package/dist/notebook-creation/data-table-manager.d.ts +13 -3
  24. package/dist/notebook-creation/data-table-manager.d.ts.map +1 -1
  25. package/dist/notebook-creation/data-table-manager.js +70 -32
  26. package/dist/notebook-creation/data-table-manager.js.map +1 -1
  27. package/dist/notebook-creation/discover-creation-flow.js +1 -1
  28. package/dist/notebook-creation/discover-creation-flow.js.map +1 -1
  29. package/dist/notebook-creation/discover-quota.js +1 -1
  30. package/dist/notebook-creation/discover-quota.js.map +1 -1
  31. package/dist/notebook-creation/discover-sources.js +1 -1
  32. package/dist/notebook-creation/discover-sources.js.map +1 -1
  33. package/dist/notebook-creation/notebook-creator.d.ts.map +1 -1
  34. package/dist/notebook-creation/notebook-creator.js +49 -26
  35. package/dist/notebook-creation/notebook-creator.js.map +1 -1
  36. package/dist/notebook-creation/notebook-sync.js +1 -1
  37. package/dist/notebook-creation/notebook-sync.js.map +1 -1
  38. package/dist/notebook-creation/selectors.d.ts +21 -16
  39. package/dist/notebook-creation/selectors.d.ts.map +1 -1
  40. package/dist/notebook-creation/selectors.js +37 -20
  41. package/dist/notebook-creation/selectors.js.map +1 -1
  42. package/dist/notebook-creation/source-manager.d.ts.map +1 -1
  43. package/dist/notebook-creation/source-manager.js +29 -6
  44. package/dist/notebook-creation/source-manager.js.map +1 -1
  45. package/dist/notebook-creation/video-manager.d.ts +10 -1
  46. package/dist/notebook-creation/video-manager.d.ts.map +1 -1
  47. package/dist/notebook-creation/video-manager.js +103 -42
  48. package/dist/notebook-creation/video-manager.js.map +1 -1
  49. package/dist/quota/quota-manager.d.ts.map +1 -1
  50. package/dist/quota/quota-manager.js +46 -15
  51. package/dist/quota/quota-manager.js.map +1 -1
  52. package/dist/session/browser-session.d.ts.map +1 -1
  53. package/dist/session/browser-session.js +21 -14
  54. package/dist/session/browser-session.js.map +1 -1
  55. package/dist/tools/definitions/notebook-management.d.ts.map +1 -1
  56. package/dist/tools/definitions/notebook-management.js +64 -0
  57. package/dist/tools/definitions/notebook-management.js.map +1 -1
  58. package/dist/tools/handlers/ask-question.d.ts +18 -0
  59. package/dist/tools/handlers/ask-question.d.ts.map +1 -0
  60. package/dist/tools/handlers/ask-question.js +236 -0
  61. package/dist/tools/handlers/ask-question.js.map +1 -0
  62. package/dist/tools/handlers/audio-video.d.ts +42 -0
  63. package/dist/tools/handlers/audio-video.d.ts.map +1 -0
  64. package/dist/tools/handlers/audio-video.js +356 -0
  65. package/dist/tools/handlers/audio-video.js.map +1 -0
  66. package/dist/tools/handlers/auth.d.ts +41 -0
  67. package/dist/tools/handlers/auth.d.ts.map +1 -0
  68. package/dist/tools/handlers/auth.js +171 -0
  69. package/dist/tools/handlers/auth.js.map +1 -0
  70. package/dist/tools/handlers/gemini.d.ts +142 -0
  71. package/dist/tools/handlers/gemini.d.ts.map +1 -0
  72. package/dist/tools/handlers/gemini.js +626 -0
  73. package/dist/tools/handlers/gemini.js.map +1 -0
  74. package/dist/tools/handlers/index.d.ts +295 -0
  75. package/dist/tools/handlers/index.d.ts.map +1 -0
  76. package/dist/tools/handlers/index.js +197 -0
  77. package/dist/tools/handlers/index.js.map +1 -0
  78. package/dist/tools/handlers/notebook-creation.d.ts +75 -0
  79. package/dist/tools/handlers/notebook-creation.d.ts.map +1 -0
  80. package/dist/tools/handlers/notebook-creation.js +598 -0
  81. package/dist/tools/handlers/notebook-creation.js.map +1 -0
  82. package/dist/tools/handlers/notebook-management.d.ts +64 -0
  83. package/dist/tools/handlers/notebook-management.d.ts.map +1 -0
  84. package/dist/tools/handlers/notebook-management.js +214 -0
  85. package/dist/tools/handlers/notebook-management.js.map +1 -0
  86. package/dist/tools/handlers/session-management.d.ts +68 -0
  87. package/dist/tools/handlers/session-management.d.ts.map +1 -0
  88. package/dist/tools/handlers/session-management.js +238 -0
  89. package/dist/tools/handlers/session-management.js.map +1 -0
  90. package/dist/tools/handlers/system.d.ts +102 -0
  91. package/dist/tools/handlers/system.d.ts.map +1 -0
  92. package/dist/tools/handlers/system.js +275 -0
  93. package/dist/tools/handlers/system.js.map +1 -0
  94. package/dist/tools/handlers/types.d.ts +19 -0
  95. package/dist/tools/handlers/types.d.ts.map +1 -0
  96. package/dist/tools/handlers/types.js +5 -0
  97. package/dist/tools/handlers/types.js.map +1 -0
  98. package/dist/tools/handlers/webhooks.d.ts +34 -0
  99. package/dist/tools/handlers/webhooks.d.ts.map +1 -0
  100. package/dist/tools/handlers/webhooks.js +122 -0
  101. package/dist/tools/handlers/webhooks.js.map +1 -0
  102. package/dist/tools/handlers.d.ts +27 -0
  103. package/dist/tools/handlers.d.ts.map +1 -1
  104. package/dist/tools/handlers.js +226 -5
  105. package/dist/tools/handlers.js.map +1 -1
  106. package/dist/tools/index.d.ts +1 -1
  107. package/dist/tools/index.d.ts.map +1 -1
  108. package/dist/tools/index.js +1 -1
  109. package/dist/tools/index.js.map +1 -1
  110. package/dist/utils/cleanup-manager.d.ts.map +1 -1
  111. package/dist/utils/cleanup-manager.js +8 -10
  112. package/dist/utils/cleanup-manager.js.map +1 -1
  113. package/dist/utils/file-permissions.d.ts.map +1 -1
  114. package/dist/utils/file-permissions.js +41 -6
  115. package/dist/utils/file-permissions.js.map +1 -1
  116. package/docs/improvement-sprint-2026.2.10.md +210 -0
  117. package/package.json +6 -3
@@ -0,0 +1,102 @@
1
+ /**
2
+ * System handler functions
3
+ *
4
+ * Handles export_library, get_project_info, get_quota, set_quota_tier, and cleanup_data tools.
5
+ */
6
+ import type { HandlerContext } from "./types.js";
7
+ import type { ToolResult } from "../../types.js";
8
+ export declare function handleExportLibrary(ctx: HandlerContext, args: {
9
+ format?: "json" | "csv";
10
+ output_path?: string;
11
+ }): Promise<ToolResult<{
12
+ file_path: string;
13
+ format: string;
14
+ notebook_count: number;
15
+ size_bytes: number;
16
+ }>>;
17
+ export declare function handleGetProjectInfo(ctx: HandlerContext): Promise<ToolResult<{
18
+ project: {
19
+ id: string;
20
+ name: string;
21
+ path: string;
22
+ type: string;
23
+ } | null;
24
+ library_path: string;
25
+ is_project_library: boolean;
26
+ detected_project: {
27
+ id: string;
28
+ name: string;
29
+ path: string;
30
+ type: string;
31
+ } | null;
32
+ }>>;
33
+ export declare function handleGetQuota(ctx: HandlerContext, args?: {
34
+ sync?: boolean;
35
+ }): Promise<ToolResult<{
36
+ tier: string;
37
+ notebooks: {
38
+ used: number;
39
+ limit: number;
40
+ remaining: number;
41
+ percent: number;
42
+ };
43
+ sources: {
44
+ limit: number;
45
+ };
46
+ queries: {
47
+ used: number;
48
+ limit: number;
49
+ remaining: number;
50
+ percent: number;
51
+ should_stop: boolean;
52
+ reset_time: string;
53
+ };
54
+ warnings: string[];
55
+ auto_detected: boolean;
56
+ last_updated: string;
57
+ synced_from_google: boolean;
58
+ google_quota?: {
59
+ used: number;
60
+ limit: number;
61
+ } | null;
62
+ rate_limit_detected?: boolean;
63
+ }>>;
64
+ export declare function handleSetQuotaTier(_ctx: HandlerContext, args: {
65
+ tier: "free" | "pro" | "ultra";
66
+ }): Promise<ToolResult<{
67
+ tier: string;
68
+ limits: {
69
+ notebooks: number;
70
+ sourcesPerNotebook: number;
71
+ queriesPerDay: number;
72
+ };
73
+ message: string;
74
+ }>>;
75
+ export declare function handleCleanupData(_ctx: HandlerContext, args: {
76
+ confirm: boolean;
77
+ preserve_library?: boolean;
78
+ }): Promise<ToolResult<{
79
+ status: string;
80
+ mode: string;
81
+ preview?: {
82
+ categories: Array<{
83
+ name: string;
84
+ description: string;
85
+ paths: string[];
86
+ totalBytes: number;
87
+ optional: boolean;
88
+ }>;
89
+ totalPaths: number;
90
+ totalSizeBytes: number;
91
+ };
92
+ result?: {
93
+ deletedPaths: string[];
94
+ failedPaths: string[];
95
+ totalSizeBytes: number;
96
+ categorySummary: Record<string, {
97
+ count: number;
98
+ bytes: number;
99
+ }>;
100
+ };
101
+ }>>;
102
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ /**
2
+ * System handler functions
3
+ *
4
+ * Handles export_library, get_project_info, get_quota, set_quota_tier, and cleanup_data tools.
5
+ */
6
+ import { log } from "../../utils/logger.js";
7
+ import { getQuotaManager } from "../../quota/index.js";
8
+ import { CleanupManager } from "../../utils/cleanup-manager.js";
9
+ export async function handleExportLibrary(ctx, args) {
10
+ const format = args.format || "json";
11
+ log.info(`🔧 [TOOL] export_library called`);
12
+ log.info(` Format: ${format}`);
13
+ try {
14
+ const notebooks = ctx.library.listNotebooks();
15
+ const stats = ctx.library.getStats();
16
+ // Generate default output path if not provided
17
+ const date = new Date().toISOString().split("T")[0];
18
+ const homeDir = process.env.HOME || process.env.USERPROFILE || ".";
19
+ const defaultPath = `${homeDir}/notebooklm-library-backup-${date}.${format}`;
20
+ const outputPath = args.output_path || defaultPath;
21
+ let content;
22
+ if (format === "csv") {
23
+ // CSV format: name, url, topics, last_used, use_count
24
+ const headers = ["name", "url", "topics", "description", "last_used", "use_count"];
25
+ const rows = notebooks.map((nb) => [
26
+ `"${(nb.name || "").replace(/"/g, '""')}"`,
27
+ `"${nb.url}"`,
28
+ `"${(nb.topics || []).join("; ")}"`,
29
+ `"${(nb.description || "").replace(/"/g, '""')}"`,
30
+ nb.last_used || "",
31
+ String(nb.use_count || 0),
32
+ ]);
33
+ content = [headers.join(","), ...rows.map((r) => r.join(","))].join("\n");
34
+ }
35
+ else {
36
+ // JSON format: full library data
37
+ content = JSON.stringify({
38
+ exported_at: new Date().toISOString(),
39
+ version: "1.0",
40
+ stats: {
41
+ total_notebooks: stats.total_notebooks,
42
+ total_queries: stats.total_queries,
43
+ },
44
+ notebooks: notebooks,
45
+ }, null, 2);
46
+ }
47
+ // Write file with secure permissions
48
+ const fs = await import("fs");
49
+ fs.writeFileSync(outputPath, content, { mode: 0o600 });
50
+ const fileStats = fs.statSync(outputPath);
51
+ log.success(`✅ [TOOL] export_library completed: ${outputPath}`);
52
+ return {
53
+ success: true,
54
+ data: {
55
+ file_path: outputPath,
56
+ format,
57
+ notebook_count: notebooks.length,
58
+ size_bytes: fileStats.size,
59
+ },
60
+ };
61
+ }
62
+ catch (error) {
63
+ const errorMessage = error instanceof Error ? error.message : String(error);
64
+ log.error(`❌ [TOOL] export_library failed: ${errorMessage}`);
65
+ return {
66
+ success: false,
67
+ error: errorMessage,
68
+ };
69
+ }
70
+ }
71
+ export async function handleGetProjectInfo(ctx) {
72
+ log.info(`🔧 [TOOL] get_project_info called`);
73
+ try {
74
+ // Get info from the library instance
75
+ const projectInfo = ctx.library.getProjectInfo();
76
+ const libraryPath = ctx.library.getLibraryPath();
77
+ const isProjectLibrary = ctx.library.isProjectLibrary();
78
+ // Also detect what project would be detected from cwd
79
+ const { NotebookLibrary: NL } = await import("../../library/notebook-library.js");
80
+ const detectedProject = NL.detectCurrentProject();
81
+ log.success(`✅ [TOOL] get_project_info completed`);
82
+ return {
83
+ success: true,
84
+ data: {
85
+ project: projectInfo,
86
+ library_path: libraryPath,
87
+ is_project_library: isProjectLibrary,
88
+ detected_project: detectedProject,
89
+ },
90
+ };
91
+ }
92
+ catch (error) {
93
+ const errorMessage = error instanceof Error ? error.message : String(error);
94
+ log.error(`❌ [TOOL] get_project_info failed: ${errorMessage}`);
95
+ return {
96
+ success: false,
97
+ error: errorMessage,
98
+ };
99
+ }
100
+ }
101
+ export async function handleGetQuota(ctx, args = {}) {
102
+ const { sync = false } = args;
103
+ log.info(`🔧 [TOOL] get_quota called (sync=${sync})`);
104
+ try {
105
+ const quotaManager = getQuotaManager();
106
+ let syncedFromGoogle = false;
107
+ let googleQuota = null;
108
+ let rateLimitDetected = false;
109
+ // If sync requested, navigate to NotebookLM and scrape quota
110
+ if (sync) {
111
+ log.info("📊 Syncing quota from Google NotebookLM...");
112
+ try {
113
+ // Get the shared context manager from session manager
114
+ const contextManager = ctx.sessionManager.getContextManager();
115
+ const context = await contextManager.getOrCreateContext();
116
+ // Create a new page to check quota
117
+ const page = await context.newPage();
118
+ try {
119
+ // Navigate to NotebookLM homepage
120
+ await page.goto("https://notebooklm.google.com/", {
121
+ waitUntil: "networkidle",
122
+ timeout: 30000,
123
+ });
124
+ // Wait for page to load
125
+ await page.waitForTimeout(2000);
126
+ // Update quota from UI
127
+ const syncResult = await quotaManager.updateFromUI(page);
128
+ syncedFromGoogle = true;
129
+ googleQuota = syncResult.queryUsageFromGoogle;
130
+ rateLimitDetected = syncResult.rateLimitDetected;
131
+ log.success(`✅ Synced quota from Google: ${googleQuota ? `${googleQuota.used}/${googleQuota.limit}` : "usage not displayed in UI"}`);
132
+ }
133
+ finally {
134
+ await page.close();
135
+ }
136
+ }
137
+ catch (syncError) {
138
+ const syncErrorMsg = syncError instanceof Error ? syncError.message : String(syncError);
139
+ log.warning(`⚠️ Could not sync from Google: ${syncErrorMsg}. Using local tracking.`);
140
+ }
141
+ }
142
+ const detailedStatus = quotaManager.getDetailedStatus();
143
+ const settings = quotaManager.getSettings();
144
+ log.success(`✅ [TOOL] get_quota completed (tier: ${detailedStatus.tier}, ${detailedStatus.queries.remaining} queries remaining, synced=${syncedFromGoogle})`);
145
+ return {
146
+ success: true,
147
+ data: {
148
+ tier: detailedStatus.tier,
149
+ notebooks: {
150
+ used: detailedStatus.notebooks.used,
151
+ limit: detailedStatus.notebooks.limit,
152
+ remaining: detailedStatus.notebooks.remaining,
153
+ percent: detailedStatus.notebooks.percentUsed,
154
+ },
155
+ sources: detailedStatus.sources,
156
+ queries: {
157
+ used: detailedStatus.queries.used,
158
+ limit: detailedStatus.queries.limit,
159
+ remaining: detailedStatus.queries.remaining,
160
+ percent: detailedStatus.queries.percentUsed,
161
+ should_stop: detailedStatus.queries.shouldStop,
162
+ reset_time: detailedStatus.queries.resetTime,
163
+ },
164
+ warnings: detailedStatus.warnings,
165
+ auto_detected: settings.autoDetected,
166
+ last_updated: settings.usage.lastUpdated,
167
+ synced_from_google: syncedFromGoogle,
168
+ google_quota: googleQuota,
169
+ rate_limit_detected: rateLimitDetected,
170
+ },
171
+ };
172
+ }
173
+ catch (error) {
174
+ const errorMessage = error instanceof Error ? error.message : String(error);
175
+ log.error(`❌ [TOOL] get_quota failed: ${errorMessage}`);
176
+ return {
177
+ success: false,
178
+ error: errorMessage,
179
+ };
180
+ }
181
+ }
182
+ export async function handleSetQuotaTier(_ctx, args) {
183
+ log.info(`🔧 [TOOL] set_quota_tier called`);
184
+ log.info(` Tier: ${args.tier}`);
185
+ try {
186
+ const quotaManager = getQuotaManager();
187
+ quotaManager.setTier(args.tier);
188
+ const settings = quotaManager.getSettings();
189
+ log.success(`✅ [TOOL] set_quota_tier completed (tier: ${args.tier})`);
190
+ return {
191
+ success: true,
192
+ data: {
193
+ tier: settings.tier,
194
+ limits: {
195
+ notebooks: settings.limits.notebooks,
196
+ sourcesPerNotebook: settings.limits.sourcesPerNotebook,
197
+ queriesPerDay: settings.limits.queriesPerDay,
198
+ },
199
+ message: `License tier set to ${args.tier}. Limits updated accordingly.`,
200
+ },
201
+ };
202
+ }
203
+ catch (error) {
204
+ const errorMessage = error instanceof Error ? error.message : String(error);
205
+ log.error(`❌ [TOOL] set_quota_tier failed: ${errorMessage}`);
206
+ return {
207
+ success: false,
208
+ error: errorMessage,
209
+ };
210
+ }
211
+ }
212
+ export async function handleCleanupData(_ctx, args) {
213
+ const { confirm, preserve_library = false } = args;
214
+ log.info(`🔧 [TOOL] cleanup_data called`);
215
+ log.info(` Confirm: ${confirm}`);
216
+ log.info(` Preserve Library: ${preserve_library}`);
217
+ const cleanupManager = new CleanupManager();
218
+ try {
219
+ // Always run in deep mode
220
+ const mode = "deep";
221
+ if (!confirm) {
222
+ // Preview mode - show what would be deleted
223
+ log.info(` 📋 Generating cleanup preview (mode: ${mode})...`);
224
+ const preview = await cleanupManager.getCleanupPaths(mode, preserve_library);
225
+ const platformInfo = cleanupManager.getPlatformInfo();
226
+ log.info(` Found ${preview.totalPaths.length} items (${cleanupManager.formatBytes(preview.totalSizeBytes)})`);
227
+ log.info(` Platform: ${platformInfo.platform}`);
228
+ return {
229
+ success: true,
230
+ data: {
231
+ status: "preview",
232
+ mode,
233
+ preview: {
234
+ categories: preview.categories,
235
+ totalPaths: preview.totalPaths.length,
236
+ totalSizeBytes: preview.totalSizeBytes,
237
+ },
238
+ },
239
+ };
240
+ }
241
+ else {
242
+ // Cleanup mode - actually delete files
243
+ log.info(` 🗑️ Performing cleanup (mode: ${mode})...`);
244
+ const result = await cleanupManager.performCleanup(mode, preserve_library);
245
+ if (result.success) {
246
+ log.success(`✅ [TOOL] cleanup_data completed - deleted ${result.deletedPaths.length} items`);
247
+ }
248
+ else {
249
+ log.warning(`⚠️ [TOOL] cleanup_data completed with ${result.failedPaths.length} errors`);
250
+ }
251
+ return {
252
+ success: result.success,
253
+ data: {
254
+ status: result.success ? "completed" : "partial",
255
+ mode,
256
+ result: {
257
+ deletedPaths: result.deletedPaths,
258
+ failedPaths: result.failedPaths,
259
+ totalSizeBytes: result.totalSizeBytes,
260
+ categorySummary: result.categorySummary,
261
+ },
262
+ },
263
+ };
264
+ }
265
+ }
266
+ catch (error) {
267
+ const errorMessage = error instanceof Error ? error.message : String(error);
268
+ log.error(`❌ [TOOL] cleanup_data failed: ${errorMessage}`);
269
+ return {
270
+ success: false,
271
+ error: errorMessage,
272
+ };
273
+ }
274
+ }
275
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/tools/handlers/system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared types for handler domain modules
3
+ */
4
+ import type { SessionManager } from "../../session/session-manager.js";
5
+ import type { AuthManager } from "../../auth/auth-manager.js";
6
+ import type { NotebookLibrary } from "../../library/notebook-library.js";
7
+ import type { RateLimiter } from "../../utils/security.js";
8
+ import type { GeminiClient } from "../../gemini/index.js";
9
+ /**
10
+ * Shared context passed to all domain handler functions
11
+ */
12
+ export interface HandlerContext {
13
+ sessionManager: SessionManager;
14
+ authManager: AuthManager;
15
+ library: NotebookLibrary;
16
+ rateLimiter: RateLimiter;
17
+ geminiClient: GeminiClient;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;CAC5B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for handler domain modules
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/handlers/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Webhook handler functions
3
+ *
4
+ * Extracted from handlers.ts — configure, list, test, and remove webhooks.
5
+ */
6
+ import type { HandlerContext } from "./types.js";
7
+ import type { ToolResult } from "../../types.js";
8
+ import { type WebhookConfig, type WebhookStats } from "../../webhooks/index.js";
9
+ export declare function handleConfigureWebhook(_ctx: HandlerContext, args: {
10
+ id?: string;
11
+ name: string;
12
+ url: string;
13
+ enabled?: boolean;
14
+ events?: string[];
15
+ format?: "generic" | "slack" | "discord" | "teams";
16
+ secret?: string;
17
+ }): Promise<ToolResult<WebhookConfig>>;
18
+ export declare function handleListWebhooks(_ctx: HandlerContext): Promise<ToolResult<{
19
+ webhooks: WebhookConfig[];
20
+ stats: WebhookStats;
21
+ }>>;
22
+ export declare function handleTestWebhook(_ctx: HandlerContext, args: {
23
+ id: string;
24
+ }): Promise<ToolResult<{
25
+ success: boolean;
26
+ message: string;
27
+ }>>;
28
+ export declare function handleRemoveWebhook(_ctx: HandlerContext, args: {
29
+ id: string;
30
+ }): Promise<ToolResult<{
31
+ removed: boolean;
32
+ id: string;
33
+ }>>;
34
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/webhooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAwB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGtG,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE;IACJ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CA2CpC;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,CAAC;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC,CAAC,CAkBF;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACnB,OAAO,CAAC,UAAU,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC,CA2BF;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACnB,OAAO,CAAC,UAAU,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CAAC,CA0BF"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Webhook handler functions
3
+ *
4
+ * Extracted from handlers.ts — configure, list, test, and remove webhooks.
5
+ */
6
+ import { log } from "../../utils/logger.js";
7
+ import { getWebhookDispatcher } from "../../webhooks/index.js";
8
+ export async function handleConfigureWebhook(_ctx, args) {
9
+ log.info(`🔧 [TOOL] configure_webhook called`);
10
+ log.info(` Name: ${args.name}`);
11
+ try {
12
+ const dispatcher = getWebhookDispatcher();
13
+ if (args.id) {
14
+ // Update existing
15
+ const updated = dispatcher.updateWebhook({
16
+ id: args.id,
17
+ name: args.name,
18
+ url: args.url,
19
+ enabled: args.enabled,
20
+ events: args.events,
21
+ format: args.format,
22
+ secret: args.secret,
23
+ });
24
+ if (!updated) {
25
+ throw new Error(`Webhook not found: ${args.id}`);
26
+ }
27
+ log.success(`✅ [TOOL] configure_webhook updated: ${updated.name}`);
28
+ return { success: true, data: updated };
29
+ }
30
+ else {
31
+ // Create new
32
+ const webhook = dispatcher.addWebhook({
33
+ name: args.name,
34
+ url: args.url,
35
+ events: args.events,
36
+ format: args.format,
37
+ secret: args.secret,
38
+ });
39
+ log.success(`✅ [TOOL] configure_webhook created: ${webhook.name}`);
40
+ return { success: true, data: webhook };
41
+ }
42
+ }
43
+ catch (error) {
44
+ const errorMessage = error instanceof Error ? error.message : String(error);
45
+ log.error(`❌ [TOOL] configure_webhook failed: ${errorMessage}`);
46
+ return { success: false, error: errorMessage };
47
+ }
48
+ }
49
+ export async function handleListWebhooks(_ctx) {
50
+ log.info(`🔧 [TOOL] list_webhooks called`);
51
+ try {
52
+ const dispatcher = getWebhookDispatcher();
53
+ const webhooks = dispatcher.listWebhooks();
54
+ const stats = dispatcher.getStats();
55
+ log.success(`✅ [TOOL] list_webhooks completed (${webhooks.length} webhooks)`);
56
+ return {
57
+ success: true,
58
+ data: { webhooks, stats },
59
+ };
60
+ }
61
+ catch (error) {
62
+ const errorMessage = error instanceof Error ? error.message : String(error);
63
+ log.error(`❌ [TOOL] list_webhooks failed: ${errorMessage}`);
64
+ return { success: false, error: errorMessage };
65
+ }
66
+ }
67
+ export async function handleTestWebhook(_ctx, args) {
68
+ log.info(`🔧 [TOOL] test_webhook called`);
69
+ log.info(` ID: ${args.id}`);
70
+ try {
71
+ const dispatcher = getWebhookDispatcher();
72
+ const result = await dispatcher.testWebhook(args.id);
73
+ if (result.success) {
74
+ log.success(`✅ [TOOL] test_webhook succeeded`);
75
+ return {
76
+ success: true,
77
+ data: { success: true, message: "Test event delivered successfully" },
78
+ };
79
+ }
80
+ else {
81
+ log.warning(`⚠️ [TOOL] test_webhook failed: ${result.error}`);
82
+ return {
83
+ success: false,
84
+ data: { success: false, message: result.error || "Test failed" },
85
+ error: result.error,
86
+ };
87
+ }
88
+ }
89
+ catch (error) {
90
+ const errorMessage = error instanceof Error ? error.message : String(error);
91
+ log.error(`❌ [TOOL] test_webhook failed: ${errorMessage}`);
92
+ return { success: false, error: errorMessage };
93
+ }
94
+ }
95
+ export async function handleRemoveWebhook(_ctx, args) {
96
+ log.info(`🔧 [TOOL] remove_webhook called`);
97
+ log.info(` ID: ${args.id}`);
98
+ try {
99
+ const dispatcher = getWebhookDispatcher();
100
+ const removed = dispatcher.removeWebhook(args.id);
101
+ if (removed) {
102
+ log.success(`✅ [TOOL] remove_webhook completed`);
103
+ return {
104
+ success: true,
105
+ data: { removed: true, id: args.id },
106
+ };
107
+ }
108
+ else {
109
+ log.warning(`⚠️ [TOOL] Webhook not found: ${args.id}`);
110
+ return {
111
+ success: false,
112
+ error: `Webhook not found: ${args.id}`,
113
+ };
114
+ }
115
+ }
116
+ catch (error) {
117
+ const errorMessage = error instanceof Error ? error.message : String(error);
118
+ log.error(`❌ [TOOL] remove_webhook failed: ${errorMessage}`);
119
+ return { success: false, error: errorMessage };
120
+ }
121
+ }
122
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../../src/tools/handlers/webhooks.ts"],"names":[],"mappings":"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"}
@@ -370,6 +370,33 @@ export declare class ToolHandlers {
370
370
  notebook_url?: string;
371
371
  source: NotebookSource;
372
372
  }): Promise<ToolResult<AddSourceResult>>;
373
+ /**
374
+ * Handle add_folder tool
375
+ *
376
+ * Scans a local directory for supported files and adds them all as sources
377
+ * to a NotebookLM notebook. Auto-splits into multiple notebooks if the file
378
+ * count exceeds the tier's sourcesPerNotebook limit.
379
+ */
380
+ handleAddFolder(args: {
381
+ folder_path: string;
382
+ notebook_id?: string;
383
+ notebook_url?: string;
384
+ recursive?: boolean;
385
+ file_types?: string[];
386
+ dry_run?: boolean;
387
+ notebook_name_prefix?: string;
388
+ }, sendProgress?: ProgressCallback): Promise<ToolResult<{
389
+ files_found: number;
390
+ files_added: number;
391
+ files_failed: number;
392
+ files_skipped: number;
393
+ notebooks_used: string[];
394
+ failed_files: Array<{
395
+ file: string;
396
+ error: string;
397
+ }>;
398
+ dry_run: boolean;
399
+ }>>;
373
400
  /**
374
401
  * Handle remove_source tool
375
402
  *