@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.
- package/README.md +39 -18
- package/dist/auth/auth-manager.d.ts +37 -2
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/auth/auth-manager.js +133 -11
- package/dist/auth/auth-manager.js.map +1 -1
- package/dist/auth/mcp-auth.d.ts +25 -4
- package/dist/auth/mcp-auth.d.ts.map +1 -1
- package/dist/auth/mcp-auth.js +145 -29
- package/dist/auth/mcp-auth.js.map +1 -1
- package/dist/compliance/retention-engine.js +1 -1
- package/dist/compliance/retention-engine.js.map +1 -1
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -8
- package/dist/config.js.map +1 -1
- package/dist/gemini/gemini-client.d.ts.map +1 -1
- package/dist/gemini/gemini-client.js +58 -20
- package/dist/gemini/gemini-client.js.map +1 -1
- package/dist/index.js +87 -180
- package/dist/index.js.map +1 -1
- package/dist/notebook-creation/audio-manager.js +2 -2
- package/dist/notebook-creation/audio-manager.js.map +1 -1
- package/dist/notebook-creation/data-table-manager.d.ts +13 -3
- package/dist/notebook-creation/data-table-manager.d.ts.map +1 -1
- package/dist/notebook-creation/data-table-manager.js +70 -32
- package/dist/notebook-creation/data-table-manager.js.map +1 -1
- package/dist/notebook-creation/discover-creation-flow.js +1 -1
- package/dist/notebook-creation/discover-creation-flow.js.map +1 -1
- package/dist/notebook-creation/discover-quota.js +1 -1
- package/dist/notebook-creation/discover-quota.js.map +1 -1
- package/dist/notebook-creation/discover-sources.js +1 -1
- package/dist/notebook-creation/discover-sources.js.map +1 -1
- package/dist/notebook-creation/notebook-creator.d.ts.map +1 -1
- package/dist/notebook-creation/notebook-creator.js +49 -26
- package/dist/notebook-creation/notebook-creator.js.map +1 -1
- package/dist/notebook-creation/notebook-sync.js +1 -1
- package/dist/notebook-creation/notebook-sync.js.map +1 -1
- package/dist/notebook-creation/selectors.d.ts +21 -16
- package/dist/notebook-creation/selectors.d.ts.map +1 -1
- package/dist/notebook-creation/selectors.js +37 -20
- package/dist/notebook-creation/selectors.js.map +1 -1
- package/dist/notebook-creation/source-manager.d.ts.map +1 -1
- package/dist/notebook-creation/source-manager.js +29 -6
- package/dist/notebook-creation/source-manager.js.map +1 -1
- package/dist/notebook-creation/video-manager.d.ts +10 -1
- package/dist/notebook-creation/video-manager.d.ts.map +1 -1
- package/dist/notebook-creation/video-manager.js +103 -42
- package/dist/notebook-creation/video-manager.js.map +1 -1
- package/dist/quota/quota-manager.d.ts.map +1 -1
- package/dist/quota/quota-manager.js +46 -15
- package/dist/quota/quota-manager.js.map +1 -1
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +21 -14
- package/dist/session/browser-session.js.map +1 -1
- package/dist/tools/definitions/notebook-management.d.ts.map +1 -1
- package/dist/tools/definitions/notebook-management.js +64 -0
- package/dist/tools/definitions/notebook-management.js.map +1 -1
- package/dist/tools/handlers/ask-question.d.ts +18 -0
- package/dist/tools/handlers/ask-question.d.ts.map +1 -0
- package/dist/tools/handlers/ask-question.js +236 -0
- package/dist/tools/handlers/ask-question.js.map +1 -0
- package/dist/tools/handlers/audio-video.d.ts +42 -0
- package/dist/tools/handlers/audio-video.d.ts.map +1 -0
- package/dist/tools/handlers/audio-video.js +356 -0
- package/dist/tools/handlers/audio-video.js.map +1 -0
- package/dist/tools/handlers/auth.d.ts +41 -0
- package/dist/tools/handlers/auth.d.ts.map +1 -0
- package/dist/tools/handlers/auth.js +171 -0
- package/dist/tools/handlers/auth.js.map +1 -0
- package/dist/tools/handlers/gemini.d.ts +142 -0
- package/dist/tools/handlers/gemini.d.ts.map +1 -0
- package/dist/tools/handlers/gemini.js +626 -0
- package/dist/tools/handlers/gemini.js.map +1 -0
- package/dist/tools/handlers/index.d.ts +295 -0
- package/dist/tools/handlers/index.d.ts.map +1 -0
- package/dist/tools/handlers/index.js +197 -0
- package/dist/tools/handlers/index.js.map +1 -0
- package/dist/tools/handlers/notebook-creation.d.ts +75 -0
- package/dist/tools/handlers/notebook-creation.d.ts.map +1 -0
- package/dist/tools/handlers/notebook-creation.js +598 -0
- package/dist/tools/handlers/notebook-creation.js.map +1 -0
- package/dist/tools/handlers/notebook-management.d.ts +64 -0
- package/dist/tools/handlers/notebook-management.d.ts.map +1 -0
- package/dist/tools/handlers/notebook-management.js +214 -0
- package/dist/tools/handlers/notebook-management.js.map +1 -0
- package/dist/tools/handlers/session-management.d.ts +68 -0
- package/dist/tools/handlers/session-management.d.ts.map +1 -0
- package/dist/tools/handlers/session-management.js +238 -0
- package/dist/tools/handlers/session-management.js.map +1 -0
- package/dist/tools/handlers/system.d.ts +102 -0
- package/dist/tools/handlers/system.d.ts.map +1 -0
- package/dist/tools/handlers/system.js +275 -0
- package/dist/tools/handlers/system.js.map +1 -0
- package/dist/tools/handlers/types.d.ts +19 -0
- package/dist/tools/handlers/types.d.ts.map +1 -0
- package/dist/tools/handlers/types.js +5 -0
- package/dist/tools/handlers/types.js.map +1 -0
- package/dist/tools/handlers/webhooks.d.ts +34 -0
- package/dist/tools/handlers/webhooks.d.ts.map +1 -0
- package/dist/tools/handlers/webhooks.js +122 -0
- package/dist/tools/handlers/webhooks.js.map +1 -0
- package/dist/tools/handlers.d.ts +27 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +226 -5
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/utils/cleanup-manager.d.ts.map +1 -1
- package/dist/utils/cleanup-manager.js +8 -10
- package/dist/utils/cleanup-manager.js.map +1 -1
- package/dist/utils/file-permissions.d.ts.map +1 -1
- package/dist/utils/file-permissions.js +41 -6
- package/dist/utils/file-permissions.js.map +1 -1
- package/docs/improvement-sprint-2026.2.10.md +210 -0
- 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 @@
|
|
|
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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"}
|
package/dist/tools/handlers.d.ts
CHANGED
|
@@ -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
|
*
|