@pan-sec/notebooklm-mcp 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +382 -56
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/gemini/gemini-client.d.ts +86 -0
- package/dist/gemini/gemini-client.d.ts.map +1 -0
- package/dist/gemini/gemini-client.js +473 -0
- package/dist/gemini/gemini-client.js.map +1 -0
- package/dist/gemini/index.d.ts +8 -0
- package/dist/gemini/index.d.ts.map +1 -0
- package/dist/gemini/index.js +8 -0
- package/dist/gemini/index.js.map +1 -0
- package/dist/gemini/types.d.ts +232 -0
- package/dist/gemini/types.d.ts.map +1 -0
- package/dist/gemini/types.js +10 -0
- package/dist/gemini/types.js.map +1 -0
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/definitions/gemini.d.ts +12 -0
- package/dist/tools/definitions/gemini.d.ts.map +1 -0
- package/dist/tools/definitions/gemini.js +300 -0
- package/dist/tools/definitions/gemini.js.map +1 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +2 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers.d.ts +63 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +332 -0
- package/dist/tools/handlers.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/tools/definitions/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAUjE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,CAcrE"}
|
|
@@ -7,6 +7,7 @@ import { askQuestionTool, buildAskQuestionDescription, } from "./definitions/ask
|
|
|
7
7
|
import { notebookManagementTools } from "./definitions/notebook-management.js";
|
|
8
8
|
import { sessionManagementTools } from "./definitions/session-management.js";
|
|
9
9
|
import { systemTools } from "./definitions/system.js";
|
|
10
|
+
import { geminiTools } from "./definitions/gemini.js";
|
|
10
11
|
/**
|
|
11
12
|
* Build Tool Definitions with NotebookLibrary context
|
|
12
13
|
*/
|
|
@@ -21,6 +22,7 @@ export function buildToolDefinitions(library) {
|
|
|
21
22
|
...notebookManagementTools,
|
|
22
23
|
...sessionManagementTools,
|
|
23
24
|
...systemTools,
|
|
25
|
+
...geminiTools,
|
|
24
26
|
];
|
|
25
27
|
}
|
|
26
28
|
//# sourceMappingURL=definitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,eAAe,EACf,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,qEAAqE;IACrE,MAAM,sBAAsB,GAAG;QAC7B,GAAG,eAAe;QAClB,WAAW,EAAE,2BAA2B,CAAC,OAAO,CAAC;KAClD,CAAC;IAEF,OAAO;QACL,sBAAsB;QACtB,GAAG,uBAAuB;QAC1B,GAAG,sBAAsB;QACzB,GAAG,WAAW;KACf,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,eAAe,EACf,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,qEAAqE;IACrE,MAAM,sBAAsB,GAAG;QAC7B,GAAG,eAAe;QAClB,WAAW,EAAE,2BAA2B,CAAC,OAAO,CAAC;KAClD,CAAC;IAEF,OAAO;QACL,sBAAsB;QACtB,GAAG,uBAAuB;QAC1B,GAAG,sBAAsB;QACzB,GAAG,WAAW;QACd,GAAG,WAAW;KACf,CAAC;AACJ,CAAC"}
|
package/dist/tools/handlers.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { type ListSourcesResult, type AddSourceResult, type RemoveSourceResult }
|
|
|
14
14
|
import { type AudioStatus, type GenerateAudioResult, type DownloadAudioResult } from "../notebook-creation/audio-manager.js";
|
|
15
15
|
import type { CreateNotebookInput, CreatedNotebook, NotebookSource } from "../notebook-creation/types.js";
|
|
16
16
|
import { type WebhookConfig, type WebhookStats } from "../webhooks/index.js";
|
|
17
|
+
import { type GeminiInteraction, type DeepResearchResult, type GeminiQueryResult, type GeminiTool, type GeminiModel } from "../gemini/index.js";
|
|
17
18
|
/**
|
|
18
19
|
* MCP Tool Handlers
|
|
19
20
|
*/
|
|
@@ -22,6 +23,7 @@ export declare class ToolHandlers {
|
|
|
22
23
|
private authManager;
|
|
23
24
|
private library;
|
|
24
25
|
private rateLimiter;
|
|
26
|
+
private geminiClient;
|
|
25
27
|
constructor(sessionManager: SessionManager, authManager: AuthManager, library: NotebookLibrary);
|
|
26
28
|
/**
|
|
27
29
|
* Handle ask_question tool
|
|
@@ -430,6 +432,67 @@ export declare class ToolHandlers {
|
|
|
430
432
|
removed: boolean;
|
|
431
433
|
id: string;
|
|
432
434
|
}>>;
|
|
435
|
+
/**
|
|
436
|
+
* Handle deep_research tool
|
|
437
|
+
*
|
|
438
|
+
* Performs comprehensive research using Gemini's Deep Research agent.
|
|
439
|
+
*/
|
|
440
|
+
handleDeepResearch(args: {
|
|
441
|
+
query: string;
|
|
442
|
+
wait_for_completion?: boolean;
|
|
443
|
+
max_wait_seconds?: number;
|
|
444
|
+
}, sendProgress?: ProgressCallback): Promise<ToolResult<DeepResearchResult>>;
|
|
445
|
+
/**
|
|
446
|
+
* Handle gemini_query tool
|
|
447
|
+
*
|
|
448
|
+
* Quick query to Gemini model with optional grounding tools.
|
|
449
|
+
*/
|
|
450
|
+
handleGeminiQuery(args: {
|
|
451
|
+
query: string;
|
|
452
|
+
model?: GeminiModel;
|
|
453
|
+
tools?: GeminiTool[];
|
|
454
|
+
urls?: string[];
|
|
455
|
+
previous_interaction_id?: string;
|
|
456
|
+
}): Promise<ToolResult<GeminiQueryResult>>;
|
|
457
|
+
/**
|
|
458
|
+
* Handle get_research_status tool
|
|
459
|
+
*
|
|
460
|
+
* Check the status of a background deep research task.
|
|
461
|
+
*/
|
|
462
|
+
handleGetResearchStatus(args: {
|
|
463
|
+
interaction_id: string;
|
|
464
|
+
}): Promise<ToolResult<GeminiInteraction>>;
|
|
465
|
+
/**
|
|
466
|
+
* Upload a document to Gemini Files API
|
|
467
|
+
*/
|
|
468
|
+
handleUploadDocument(args: {
|
|
469
|
+
file_path: string;
|
|
470
|
+
display_name?: string;
|
|
471
|
+
}): Promise<ToolResult<import("../gemini/types.js").UploadDocumentResult>>;
|
|
472
|
+
/**
|
|
473
|
+
* Query an uploaded document
|
|
474
|
+
*/
|
|
475
|
+
handleQueryDocument(args: {
|
|
476
|
+
file_name: string;
|
|
477
|
+
query: string;
|
|
478
|
+
model?: string;
|
|
479
|
+
additional_files?: string[];
|
|
480
|
+
}): Promise<ToolResult<import("../gemini/types.js").QueryDocumentResult>>;
|
|
481
|
+
/**
|
|
482
|
+
* List all uploaded documents
|
|
483
|
+
*/
|
|
484
|
+
handleListDocuments(args: {
|
|
485
|
+
page_size?: number;
|
|
486
|
+
}): Promise<ToolResult<import("../gemini/types.js").ListDocumentsResult>>;
|
|
487
|
+
/**
|
|
488
|
+
* Delete an uploaded document
|
|
489
|
+
*/
|
|
490
|
+
handleDeleteDocument(args: {
|
|
491
|
+
file_name: string;
|
|
492
|
+
}): Promise<ToolResult<{
|
|
493
|
+
deleted: boolean;
|
|
494
|
+
fileName: string;
|
|
495
|
+
}>>;
|
|
433
496
|
/**
|
|
434
497
|
* Cleanup all resources (called on server shutdown)
|
|
435
498
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/handlers.js
CHANGED
|
@@ -16,6 +16,7 @@ import { SourceManager } from "../notebook-creation/source-manager.js";
|
|
|
16
16
|
import { AudioManager } from "../notebook-creation/audio-manager.js";
|
|
17
17
|
import { getWebhookDispatcher } from "../webhooks/index.js";
|
|
18
18
|
import { getQuotaManager } from "../quota/index.js";
|
|
19
|
+
import { GeminiClient, } from "../gemini/index.js";
|
|
19
20
|
const FOLLOW_UP_REMINDER = "\n\nEXTREMELY IMPORTANT: Is that ALL you need to know? You can always ask another question using the same session ID! Think about it carefully: before you reply to the user, review their original request and this answer. If anything is still unclear or missing, ask me another question first.";
|
|
20
21
|
/**
|
|
21
22
|
* MCP Tool Handlers
|
|
@@ -25,12 +26,15 @@ export class ToolHandlers {
|
|
|
25
26
|
authManager;
|
|
26
27
|
library;
|
|
27
28
|
rateLimiter;
|
|
29
|
+
geminiClient;
|
|
28
30
|
constructor(sessionManager, authManager, library) {
|
|
29
31
|
this.sessionManager = sessionManager;
|
|
30
32
|
this.authManager = authManager;
|
|
31
33
|
this.library = library;
|
|
32
34
|
// Rate limit: 100 requests per minute per session (protective limit)
|
|
33
35
|
this.rateLimiter = new RateLimiter(100, 60000);
|
|
36
|
+
// Initialize Gemini client (may be unavailable if no API key)
|
|
37
|
+
this.geminiClient = new GeminiClient();
|
|
34
38
|
}
|
|
35
39
|
/**
|
|
36
40
|
* Handle ask_question tool
|
|
@@ -1712,6 +1716,334 @@ export class ToolHandlers {
|
|
|
1712
1716
|
return { success: false, error: errorMessage };
|
|
1713
1717
|
}
|
|
1714
1718
|
}
|
|
1719
|
+
// ==================== GEMINI API HANDLERS ====================
|
|
1720
|
+
/**
|
|
1721
|
+
* Handle deep_research tool
|
|
1722
|
+
*
|
|
1723
|
+
* Performs comprehensive research using Gemini's Deep Research agent.
|
|
1724
|
+
*/
|
|
1725
|
+
async handleDeepResearch(args, sendProgress) {
|
|
1726
|
+
const startTime = Date.now();
|
|
1727
|
+
log.info(`🔧 [TOOL] deep_research called`);
|
|
1728
|
+
log.info(` Query: "${sanitizeForLogging(args.query.substring(0, 100))}"...`);
|
|
1729
|
+
// Check if Gemini is available
|
|
1730
|
+
if (!this.geminiClient.isAvailable()) {
|
|
1731
|
+
log.error(`❌ [TOOL] deep_research failed: Gemini API key not configured`);
|
|
1732
|
+
return {
|
|
1733
|
+
success: false,
|
|
1734
|
+
error: "Gemini API key not configured. Set GEMINI_API_KEY environment variable.",
|
|
1735
|
+
};
|
|
1736
|
+
}
|
|
1737
|
+
try {
|
|
1738
|
+
// Validate query
|
|
1739
|
+
if (!args.query || args.query.trim().length === 0) {
|
|
1740
|
+
throw new Error("Query cannot be empty");
|
|
1741
|
+
}
|
|
1742
|
+
if (args.query.length > 10000) {
|
|
1743
|
+
throw new Error("Query too long (max 10000 characters)");
|
|
1744
|
+
}
|
|
1745
|
+
// Validate max_wait_seconds
|
|
1746
|
+
const maxWaitSeconds = Math.min(args.max_wait_seconds || 300, 600); // Max 10 minutes
|
|
1747
|
+
const maxWaitMs = maxWaitSeconds * 1000;
|
|
1748
|
+
if (sendProgress) {
|
|
1749
|
+
await sendProgress("Starting deep research...", 0, 100);
|
|
1750
|
+
}
|
|
1751
|
+
// Start the research
|
|
1752
|
+
const interaction = await this.geminiClient.deepResearch({
|
|
1753
|
+
query: args.query,
|
|
1754
|
+
background: true,
|
|
1755
|
+
waitForCompletion: args.wait_for_completion !== false,
|
|
1756
|
+
maxWaitMs,
|
|
1757
|
+
progressCallback: sendProgress,
|
|
1758
|
+
});
|
|
1759
|
+
const durationMs = Date.now() - startTime;
|
|
1760
|
+
// Extract the answer
|
|
1761
|
+
const answer = interaction.outputs.find(o => o.type === "text")?.text || "";
|
|
1762
|
+
// Audit log
|
|
1763
|
+
await audit.tool("deep_research", { query: sanitizeForLogging(args.query) }, true, durationMs);
|
|
1764
|
+
log.success(`✅ [TOOL] deep_research completed in ${durationMs}ms`);
|
|
1765
|
+
return {
|
|
1766
|
+
success: true,
|
|
1767
|
+
data: {
|
|
1768
|
+
interactionId: interaction.id,
|
|
1769
|
+
status: interaction.status,
|
|
1770
|
+
answer,
|
|
1771
|
+
tokensUsed: interaction.usage?.totalTokens,
|
|
1772
|
+
durationMs,
|
|
1773
|
+
},
|
|
1774
|
+
};
|
|
1775
|
+
}
|
|
1776
|
+
catch (error) {
|
|
1777
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1778
|
+
const durationMs = Date.now() - startTime;
|
|
1779
|
+
log.error(`❌ [TOOL] deep_research failed: ${errorMessage}`);
|
|
1780
|
+
await audit.tool("deep_research", { query: sanitizeForLogging(args.query) }, false, durationMs, errorMessage);
|
|
1781
|
+
return { success: false, error: errorMessage };
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
/**
|
|
1785
|
+
* Handle gemini_query tool
|
|
1786
|
+
*
|
|
1787
|
+
* Quick query to Gemini model with optional grounding tools.
|
|
1788
|
+
*/
|
|
1789
|
+
async handleGeminiQuery(args) {
|
|
1790
|
+
const startTime = Date.now();
|
|
1791
|
+
log.info(`🔧 [TOOL] gemini_query called`);
|
|
1792
|
+
log.info(` Query: "${sanitizeForLogging(args.query.substring(0, 100))}"...`);
|
|
1793
|
+
log.info(` Model: ${args.model || "default"}`);
|
|
1794
|
+
if (args.tools)
|
|
1795
|
+
log.info(` Tools: ${args.tools.join(", ")}`);
|
|
1796
|
+
// Check if Gemini is available
|
|
1797
|
+
if (!this.geminiClient.isAvailable()) {
|
|
1798
|
+
log.error(`❌ [TOOL] gemini_query failed: Gemini API key not configured`);
|
|
1799
|
+
return {
|
|
1800
|
+
success: false,
|
|
1801
|
+
error: "Gemini API key not configured. Set GEMINI_API_KEY environment variable.",
|
|
1802
|
+
};
|
|
1803
|
+
}
|
|
1804
|
+
try {
|
|
1805
|
+
// Validate query
|
|
1806
|
+
if (!args.query || args.query.trim().length === 0) {
|
|
1807
|
+
throw new Error("Query cannot be empty");
|
|
1808
|
+
}
|
|
1809
|
+
if (args.query.length > 30000) {
|
|
1810
|
+
throw new Error("Query too long (max 30000 characters)");
|
|
1811
|
+
}
|
|
1812
|
+
// If URLs provided, auto-enable url_context
|
|
1813
|
+
let tools = args.tools || [];
|
|
1814
|
+
if (args.urls && args.urls.length > 0 && !tools.includes("url_context")) {
|
|
1815
|
+
tools = [...tools, "url_context"];
|
|
1816
|
+
}
|
|
1817
|
+
// Validate URLs if provided
|
|
1818
|
+
if (args.urls) {
|
|
1819
|
+
for (const url of args.urls) {
|
|
1820
|
+
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
|
1821
|
+
throw new Error(`Invalid URL: ${url} (must start with http:// or https://)`);
|
|
1822
|
+
}
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
const interaction = await this.geminiClient.query({
|
|
1826
|
+
query: args.query,
|
|
1827
|
+
model: args.model,
|
|
1828
|
+
tools,
|
|
1829
|
+
urls: args.urls,
|
|
1830
|
+
previousInteractionId: args.previous_interaction_id,
|
|
1831
|
+
});
|
|
1832
|
+
const durationMs = Date.now() - startTime;
|
|
1833
|
+
// Extract the answer
|
|
1834
|
+
const answer = interaction.outputs.find(o => o.type === "text")?.text || "";
|
|
1835
|
+
// Identify which tools were used
|
|
1836
|
+
const toolsUsed = interaction.outputs
|
|
1837
|
+
.filter(o => o.type === "function_call")
|
|
1838
|
+
.map(o => o.name)
|
|
1839
|
+
.filter((name) => !!name);
|
|
1840
|
+
// Audit log
|
|
1841
|
+
await audit.tool("gemini_query", {
|
|
1842
|
+
query: sanitizeForLogging(args.query),
|
|
1843
|
+
model: args.model,
|
|
1844
|
+
tools: args.tools,
|
|
1845
|
+
}, true, durationMs);
|
|
1846
|
+
log.success(`✅ [TOOL] gemini_query completed in ${durationMs}ms`);
|
|
1847
|
+
return {
|
|
1848
|
+
success: true,
|
|
1849
|
+
data: {
|
|
1850
|
+
interactionId: interaction.id,
|
|
1851
|
+
answer,
|
|
1852
|
+
model: interaction.model || args.model || CONFIG.geminiDefaultModel,
|
|
1853
|
+
tokensUsed: interaction.usage?.totalTokens,
|
|
1854
|
+
toolsUsed: toolsUsed.length > 0 ? toolsUsed : undefined,
|
|
1855
|
+
},
|
|
1856
|
+
};
|
|
1857
|
+
}
|
|
1858
|
+
catch (error) {
|
|
1859
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1860
|
+
const durationMs = Date.now() - startTime;
|
|
1861
|
+
log.error(`❌ [TOOL] gemini_query failed: ${errorMessage}`);
|
|
1862
|
+
await audit.tool("gemini_query", { query: sanitizeForLogging(args.query) }, false, durationMs, errorMessage);
|
|
1863
|
+
return { success: false, error: errorMessage };
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1866
|
+
/**
|
|
1867
|
+
* Handle get_research_status tool
|
|
1868
|
+
*
|
|
1869
|
+
* Check the status of a background deep research task.
|
|
1870
|
+
*/
|
|
1871
|
+
async handleGetResearchStatus(args) {
|
|
1872
|
+
log.info(`🔧 [TOOL] get_research_status called`);
|
|
1873
|
+
log.info(` Interaction ID: ${args.interaction_id}`);
|
|
1874
|
+
// Check if Gemini is available
|
|
1875
|
+
if (!this.geminiClient.isAvailable()) {
|
|
1876
|
+
log.error(`❌ [TOOL] get_research_status failed: Gemini API key not configured`);
|
|
1877
|
+
return {
|
|
1878
|
+
success: false,
|
|
1879
|
+
error: "Gemini API key not configured. Set GEMINI_API_KEY environment variable.",
|
|
1880
|
+
};
|
|
1881
|
+
}
|
|
1882
|
+
try {
|
|
1883
|
+
// Validate interaction_id
|
|
1884
|
+
if (!args.interaction_id || args.interaction_id.trim().length === 0) {
|
|
1885
|
+
throw new Error("Interaction ID cannot be empty");
|
|
1886
|
+
}
|
|
1887
|
+
const interaction = await this.geminiClient.getInteraction(args.interaction_id);
|
|
1888
|
+
log.success(`✅ [TOOL] get_research_status: ${interaction.status}`);
|
|
1889
|
+
return {
|
|
1890
|
+
success: true,
|
|
1891
|
+
data: interaction,
|
|
1892
|
+
};
|
|
1893
|
+
}
|
|
1894
|
+
catch (error) {
|
|
1895
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1896
|
+
log.error(`❌ [TOOL] get_research_status failed: ${errorMessage}`);
|
|
1897
|
+
return { success: false, error: errorMessage };
|
|
1898
|
+
}
|
|
1899
|
+
}
|
|
1900
|
+
// ==================== DOCUMENT TOOLS (v1.9.0) ====================
|
|
1901
|
+
/**
|
|
1902
|
+
* Upload a document to Gemini Files API
|
|
1903
|
+
*/
|
|
1904
|
+
async handleUploadDocument(args) {
|
|
1905
|
+
const startTime = Date.now();
|
|
1906
|
+
log.info(`🔧 [TOOL] upload_document called`);
|
|
1907
|
+
log.info(` File: ${args.file_path}`);
|
|
1908
|
+
// Check if Gemini is available
|
|
1909
|
+
if (!this.geminiClient.isAvailable()) {
|
|
1910
|
+
log.error(`❌ [TOOL] upload_document failed: Gemini API key not configured`);
|
|
1911
|
+
return {
|
|
1912
|
+
success: false,
|
|
1913
|
+
error: "Gemini API key not configured. Set GEMINI_API_KEY environment variable.",
|
|
1914
|
+
};
|
|
1915
|
+
}
|
|
1916
|
+
try {
|
|
1917
|
+
// Validate file path
|
|
1918
|
+
if (!args.file_path || args.file_path.trim().length === 0) {
|
|
1919
|
+
throw new Error("File path cannot be empty");
|
|
1920
|
+
}
|
|
1921
|
+
const result = await this.geminiClient.uploadDocument({
|
|
1922
|
+
filePath: args.file_path,
|
|
1923
|
+
displayName: args.display_name,
|
|
1924
|
+
});
|
|
1925
|
+
const durationMs = Date.now() - startTime;
|
|
1926
|
+
await audit.tool("upload_document", { file: sanitizeForLogging(args.file_path) }, true, durationMs);
|
|
1927
|
+
log.success(`✅ [TOOL] upload_document completed in ${durationMs}ms`);
|
|
1928
|
+
return {
|
|
1929
|
+
success: true,
|
|
1930
|
+
data: result,
|
|
1931
|
+
};
|
|
1932
|
+
}
|
|
1933
|
+
catch (error) {
|
|
1934
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1935
|
+
const durationMs = Date.now() - startTime;
|
|
1936
|
+
await audit.tool("upload_document", { file: sanitizeForLogging(args.file_path) }, false, durationMs, errorMessage);
|
|
1937
|
+
log.error(`❌ [TOOL] upload_document failed: ${errorMessage}`);
|
|
1938
|
+
return { success: false, error: errorMessage };
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1941
|
+
/**
|
|
1942
|
+
* Query an uploaded document
|
|
1943
|
+
*/
|
|
1944
|
+
async handleQueryDocument(args) {
|
|
1945
|
+
const startTime = Date.now();
|
|
1946
|
+
log.info(`🔧 [TOOL] query_document called`);
|
|
1947
|
+
log.info(` File: ${args.file_name}`);
|
|
1948
|
+
log.info(` Query: ${args.query.substring(0, 50)}...`);
|
|
1949
|
+
// Check if Gemini is available
|
|
1950
|
+
if (!this.geminiClient.isAvailable()) {
|
|
1951
|
+
log.error(`❌ [TOOL] query_document failed: Gemini API key not configured`);
|
|
1952
|
+
return {
|
|
1953
|
+
success: false,
|
|
1954
|
+
error: "Gemini API key not configured. Set GEMINI_API_KEY environment variable.",
|
|
1955
|
+
};
|
|
1956
|
+
}
|
|
1957
|
+
try {
|
|
1958
|
+
// Validate inputs
|
|
1959
|
+
if (!args.file_name || args.file_name.trim().length === 0) {
|
|
1960
|
+
throw new Error("File name cannot be empty");
|
|
1961
|
+
}
|
|
1962
|
+
if (!args.query || args.query.trim().length === 0) {
|
|
1963
|
+
throw new Error("Query cannot be empty");
|
|
1964
|
+
}
|
|
1965
|
+
const result = await this.geminiClient.queryDocument({
|
|
1966
|
+
fileName: args.file_name,
|
|
1967
|
+
query: args.query,
|
|
1968
|
+
model: args.model,
|
|
1969
|
+
additionalFiles: args.additional_files,
|
|
1970
|
+
});
|
|
1971
|
+
const durationMs = Date.now() - startTime;
|
|
1972
|
+
await audit.tool("query_document", { file: args.file_name, query: sanitizeForLogging(args.query) }, true, durationMs);
|
|
1973
|
+
log.success(`✅ [TOOL] query_document completed in ${durationMs}ms`);
|
|
1974
|
+
return {
|
|
1975
|
+
success: true,
|
|
1976
|
+
data: result,
|
|
1977
|
+
};
|
|
1978
|
+
}
|
|
1979
|
+
catch (error) {
|
|
1980
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1981
|
+
const durationMs = Date.now() - startTime;
|
|
1982
|
+
await audit.tool("query_document", { file: args.file_name }, false, durationMs, errorMessage);
|
|
1983
|
+
log.error(`❌ [TOOL] query_document failed: ${errorMessage}`);
|
|
1984
|
+
return { success: false, error: errorMessage };
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
/**
|
|
1988
|
+
* List all uploaded documents
|
|
1989
|
+
*/
|
|
1990
|
+
async handleListDocuments(args) {
|
|
1991
|
+
log.info(`🔧 [TOOL] list_documents called`);
|
|
1992
|
+
// Check if Gemini is available
|
|
1993
|
+
if (!this.geminiClient.isAvailable()) {
|
|
1994
|
+
log.error(`❌ [TOOL] list_documents failed: Gemini API key not configured`);
|
|
1995
|
+
return {
|
|
1996
|
+
success: false,
|
|
1997
|
+
error: "Gemini API key not configured. Set GEMINI_API_KEY environment variable.",
|
|
1998
|
+
};
|
|
1999
|
+
}
|
|
2000
|
+
try {
|
|
2001
|
+
const result = await this.geminiClient.listFiles(args.page_size || 100);
|
|
2002
|
+
log.success(`✅ [TOOL] list_documents: ${result.totalCount} files`);
|
|
2003
|
+
return {
|
|
2004
|
+
success: true,
|
|
2005
|
+
data: result,
|
|
2006
|
+
};
|
|
2007
|
+
}
|
|
2008
|
+
catch (error) {
|
|
2009
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
2010
|
+
log.error(`❌ [TOOL] list_documents failed: ${errorMessage}`);
|
|
2011
|
+
return { success: false, error: errorMessage };
|
|
2012
|
+
}
|
|
2013
|
+
}
|
|
2014
|
+
/**
|
|
2015
|
+
* Delete an uploaded document
|
|
2016
|
+
*/
|
|
2017
|
+
async handleDeleteDocument(args) {
|
|
2018
|
+
log.info(`🔧 [TOOL] delete_document called`);
|
|
2019
|
+
log.info(` File: ${args.file_name}`);
|
|
2020
|
+
// Check if Gemini is available
|
|
2021
|
+
if (!this.geminiClient.isAvailable()) {
|
|
2022
|
+
log.error(`❌ [TOOL] delete_document failed: Gemini API key not configured`);
|
|
2023
|
+
return {
|
|
2024
|
+
success: false,
|
|
2025
|
+
error: "Gemini API key not configured. Set GEMINI_API_KEY environment variable.",
|
|
2026
|
+
};
|
|
2027
|
+
}
|
|
2028
|
+
try {
|
|
2029
|
+
// Validate file name
|
|
2030
|
+
if (!args.file_name || args.file_name.trim().length === 0) {
|
|
2031
|
+
throw new Error("File name cannot be empty");
|
|
2032
|
+
}
|
|
2033
|
+
await this.geminiClient.deleteFile(args.file_name);
|
|
2034
|
+
log.success(`✅ [TOOL] delete_document: ${args.file_name} deleted`);
|
|
2035
|
+
return {
|
|
2036
|
+
success: true,
|
|
2037
|
+
data: { deleted: true, fileName: args.file_name },
|
|
2038
|
+
};
|
|
2039
|
+
}
|
|
2040
|
+
catch (error) {
|
|
2041
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
2042
|
+
log.error(`❌ [TOOL] delete_document failed: ${errorMessage}`);
|
|
2043
|
+
return { success: false, error: errorMessage };
|
|
2044
|
+
}
|
|
2045
|
+
}
|
|
2046
|
+
// ==================== CLEANUP ====================
|
|
1715
2047
|
/**
|
|
1716
2048
|
* Cleanup all resources (called on server shutdown)
|
|
1717
2049
|
*/
|