@pan-sec/notebooklm-mcp 1.8.0 → 1.10.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.
@@ -7,6 +7,9 @@
7
7
  import { GoogleGenAI } from "@google/genai";
8
8
  import { log } from "../utils/logger.js";
9
9
  import { CONFIG } from "../config.js";
10
+ import { analyzePdf, chunkPdf, cleanupChunks } from "./pdf-chunker.js";
11
+ import fs from "fs";
12
+ import path from "path";
10
13
  // Re-export the agent constant
11
14
  export { DEEP_RESEARCH_AGENT } from "./types.js";
12
15
  /**
@@ -207,5 +210,404 @@ export class GeminiClient {
207
210
  error: r.error,
208
211
  };
209
212
  }
213
+ // ===========================================================================
214
+ // Files API Methods (v1.9.0)
215
+ // ===========================================================================
216
+ /**
217
+ * Upload a document to Gemini Files API
218
+ * Files are retained for 48 hours and can be used in multiple queries
219
+ * Large PDFs (>50MB or >1000 pages) are automatically chunked
220
+ */
221
+ async uploadDocument(options) {
222
+ if (!this.client) {
223
+ throw new Error("Gemini API key not configured. Set GEMINI_API_KEY environment variable.");
224
+ }
225
+ const { filePath, displayName, mimeType } = options;
226
+ // Verify file exists
227
+ if (!fs.existsSync(filePath)) {
228
+ throw new Error(`File not found: ${filePath}`);
229
+ }
230
+ // Get file stats
231
+ const stats = fs.statSync(filePath);
232
+ const fileName = displayName || path.basename(filePath);
233
+ // Auto-detect MIME type if not provided
234
+ const detectedMimeType = mimeType || this.detectMimeType(filePath);
235
+ // Check if this is a PDF that might need chunking
236
+ const isPdf = detectedMimeType === "application/pdf" ||
237
+ filePath.toLowerCase().endsWith(".pdf");
238
+ if (isPdf) {
239
+ const analysis = await analyzePdf(filePath);
240
+ if (analysis.needsChunking) {
241
+ log.info(`Large PDF detected: ${analysis.reason}`);
242
+ log.info(`Splitting into ~${analysis.estimatedChunks} chunks...`);
243
+ return await this.uploadChunkedPdf(filePath, fileName, analysis.pageCount);
244
+ }
245
+ }
246
+ // Standard upload for non-PDF or small PDF files
247
+ log.info(`Uploading document: ${fileName} (${this.formatBytes(stats.size)})`);
248
+ try {
249
+ // Upload file using SDK
250
+ const uploadResult = await this.client.files.upload({
251
+ file: filePath,
252
+ config: {
253
+ displayName: fileName,
254
+ mimeType: detectedMimeType,
255
+ },
256
+ });
257
+ // Poll for processing completion
258
+ let file = await this.waitForFileProcessing(uploadResult.name);
259
+ log.success(`Document uploaded: ${file.name}`);
260
+ return {
261
+ fileName: file.name,
262
+ displayName: file.displayName || fileName,
263
+ uri: file.uri,
264
+ mimeType: file.mimeType,
265
+ sizeBytes: file.sizeBytes,
266
+ expiresAt: file.expirationTime || this.calculateExpiration(),
267
+ state: file.state,
268
+ wasChunked: false,
269
+ };
270
+ }
271
+ catch (error) {
272
+ const msg = error instanceof Error ? error.message : String(error);
273
+ log.error(`Failed to upload document: ${msg}`);
274
+ throw error;
275
+ }
276
+ }
277
+ /**
278
+ * Upload a large PDF by splitting it into chunks
279
+ */
280
+ async uploadChunkedPdf(filePath, displayName, _totalPages) {
281
+ // Chunk the PDF
282
+ const chunkResult = await chunkPdf(filePath);
283
+ if (!chunkResult.success) {
284
+ throw new Error(`Failed to chunk PDF: ${chunkResult.error}`);
285
+ }
286
+ log.info(`Uploading ${chunkResult.chunks.length} chunks...`);
287
+ const uploadedChunks = [];
288
+ const allFileNames = [];
289
+ try {
290
+ // Upload each chunk
291
+ for (const chunk of chunkResult.chunks) {
292
+ log.info(` Uploading chunk ${chunk.chunkIndex + 1}/${chunk.totalChunks} (pages ${chunk.pageStart}-${chunk.pageEnd})...`);
293
+ const uploadResult = await this.client.files.upload({
294
+ file: chunk.filePath,
295
+ config: {
296
+ displayName: `${displayName} (Part ${chunk.chunkIndex + 1}/${chunk.totalChunks})`,
297
+ mimeType: "application/pdf",
298
+ },
299
+ });
300
+ // Wait for processing
301
+ const file = await this.waitForFileProcessing(uploadResult.name);
302
+ uploadedChunks.push({
303
+ fileName: file.name,
304
+ chunkIndex: chunk.chunkIndex,
305
+ totalChunks: chunk.totalChunks,
306
+ pageStart: chunk.pageStart,
307
+ pageEnd: chunk.pageEnd,
308
+ uri: file.uri,
309
+ });
310
+ allFileNames.push(file.name);
311
+ log.success(` Chunk ${chunk.chunkIndex + 1} uploaded: ${file.name}`);
312
+ }
313
+ // Clean up temp chunk files
314
+ await cleanupChunks(chunkResult.chunks);
315
+ // Return result with first chunk as primary
316
+ const firstChunk = uploadedChunks[0];
317
+ log.success(`All ${uploadedChunks.length} chunks uploaded successfully`);
318
+ return {
319
+ fileName: firstChunk.fileName,
320
+ displayName: displayName,
321
+ uri: firstChunk.uri,
322
+ mimeType: "application/pdf",
323
+ sizeBytes: fs.statSync(filePath).size,
324
+ expiresAt: this.calculateExpiration(),
325
+ state: "ACTIVE",
326
+ wasChunked: true,
327
+ totalPages: chunkResult.totalPages,
328
+ chunks: uploadedChunks,
329
+ allFileNames: allFileNames,
330
+ };
331
+ }
332
+ catch (error) {
333
+ // Clean up temp files on error
334
+ await cleanupChunks(chunkResult.chunks);
335
+ throw error;
336
+ }
337
+ }
338
+ /**
339
+ * Wait for file processing to complete
340
+ */
341
+ async waitForFileProcessing(fileName, maxWaitMs = 60000) {
342
+ const startTime = Date.now();
343
+ const pollInterval = 2000; // 2 seconds
344
+ while (Date.now() - startTime < maxWaitMs) {
345
+ const file = await this.getFile(fileName);
346
+ if (file.state === "ACTIVE") {
347
+ return file;
348
+ }
349
+ if (file.state === "FAILED") {
350
+ throw new Error(`File processing failed: ${file.error || "Unknown error"}`);
351
+ }
352
+ // Still processing, wait and retry
353
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
354
+ }
355
+ throw new Error(`File processing timed out after ${maxWaitMs / 1000} seconds`);
356
+ }
357
+ /**
358
+ * Get file metadata
359
+ */
360
+ async getFile(fileName) {
361
+ if (!this.client) {
362
+ throw new Error("Gemini API key not configured.");
363
+ }
364
+ try {
365
+ const response = await this.client.files.get({ name: fileName });
366
+ return this.mapFile(response);
367
+ }
368
+ catch (error) {
369
+ const msg = error instanceof Error ? error.message : String(error);
370
+ log.error(`Failed to get file ${fileName}: ${msg}`);
371
+ throw error;
372
+ }
373
+ }
374
+ /**
375
+ * List all uploaded files
376
+ */
377
+ async listFiles(pageSize = 100, pageToken) {
378
+ if (!this.client) {
379
+ throw new Error("Gemini API key not configured.");
380
+ }
381
+ try {
382
+ const response = await this.client.files.list({
383
+ pageSize,
384
+ pageToken,
385
+ });
386
+ const files = (response.files || []).map((f) => this.mapFile(f));
387
+ return {
388
+ files,
389
+ totalCount: files.length,
390
+ nextPageToken: response.nextPageToken,
391
+ };
392
+ }
393
+ catch (error) {
394
+ const msg = error instanceof Error ? error.message : String(error);
395
+ log.error(`Failed to list files: ${msg}`);
396
+ throw error;
397
+ }
398
+ }
399
+ /**
400
+ * Delete an uploaded file
401
+ */
402
+ async deleteFile(fileName) {
403
+ if (!this.client) {
404
+ throw new Error("Gemini API key not configured.");
405
+ }
406
+ try {
407
+ await this.client.files.delete({ name: fileName });
408
+ log.info(`Deleted file: ${fileName}`);
409
+ }
410
+ catch (error) {
411
+ const msg = error instanceof Error ? error.message : String(error);
412
+ log.error(`Failed to delete file ${fileName}: ${msg}`);
413
+ throw error;
414
+ }
415
+ }
416
+ /**
417
+ * Query an uploaded document
418
+ */
419
+ async queryDocument(options) {
420
+ if (!this.client) {
421
+ throw new Error("Gemini API key not configured. Set GEMINI_API_KEY environment variable.");
422
+ }
423
+ const { fileName, query, model, additionalFiles, generationConfig } = options;
424
+ const modelId = model || CONFIG.geminiDefaultModel || "gemini-2.5-flash";
425
+ log.info(`Querying document ${fileName}: ${query.substring(0, 50)}...`);
426
+ try {
427
+ // Get file metadata for URI
428
+ const file = await this.getFile(fileName);
429
+ if (file.state !== "ACTIVE") {
430
+ throw new Error(`File is not ready for querying. State: ${file.state}`);
431
+ }
432
+ // Build content parts with file references
433
+ const fileParts = [
434
+ { fileData: { fileUri: file.uri, mimeType: file.mimeType } },
435
+ ];
436
+ // Add additional files if specified
437
+ const filesUsed = [fileName];
438
+ if (additionalFiles) {
439
+ for (const additionalFileName of additionalFiles) {
440
+ const additionalFile = await this.getFile(additionalFileName);
441
+ if (additionalFile.state === "ACTIVE") {
442
+ fileParts.push({
443
+ fileData: { fileUri: additionalFile.uri, mimeType: additionalFile.mimeType },
444
+ });
445
+ filesUsed.push(additionalFileName);
446
+ }
447
+ }
448
+ }
449
+ // Generate content with the document
450
+ const response = await this.client.models.generateContent({
451
+ model: modelId,
452
+ contents: [
453
+ {
454
+ role: "user",
455
+ parts: [
456
+ ...fileParts,
457
+ { text: query },
458
+ ],
459
+ },
460
+ ],
461
+ generationConfig: generationConfig ? {
462
+ temperature: generationConfig.temperature,
463
+ maxOutputTokens: generationConfig.maxOutputTokens,
464
+ } : undefined,
465
+ });
466
+ // Extract response text
467
+ const answer = response.response?.text?.() ||
468
+ response.response?.candidates?.[0]?.content?.parts?.[0]?.text ||
469
+ "";
470
+ // Extract usage
471
+ const usage = response.response?.usageMetadata;
472
+ log.success(`Document query completed`);
473
+ return {
474
+ answer,
475
+ model: modelId,
476
+ tokensUsed: usage?.totalTokenCount,
477
+ filesUsed,
478
+ };
479
+ }
480
+ catch (error) {
481
+ const msg = error instanceof Error ? error.message : String(error);
482
+ log.error(`Document query failed: ${msg}`);
483
+ throw error;
484
+ }
485
+ }
486
+ /**
487
+ * Query multiple document chunks and aggregate results
488
+ * This is useful for querying large documents that were split into chunks
489
+ */
490
+ async queryChunkedDocument(fileNames, query, options) {
491
+ if (!this.client) {
492
+ throw new Error("Gemini API key not configured.");
493
+ }
494
+ if (fileNames.length === 0) {
495
+ throw new Error("No file names provided");
496
+ }
497
+ // Single file - just query normally
498
+ if (fileNames.length === 1) {
499
+ return this.queryDocument({
500
+ fileName: fileNames[0],
501
+ query,
502
+ model: options?.model,
503
+ });
504
+ }
505
+ const modelId = options?.model || CONFIG.geminiDefaultModel || "gemini-2.5-flash";
506
+ log.info(`Querying ${fileNames.length} document chunks...`);
507
+ // Query each chunk
508
+ const chunkResults = [];
509
+ let totalTokens = 0;
510
+ for (let i = 0; i < fileNames.length; i++) {
511
+ log.info(` Querying chunk ${i + 1}/${fileNames.length}...`);
512
+ const result = await this.queryDocument({
513
+ fileName: fileNames[i],
514
+ query,
515
+ model: options?.model,
516
+ });
517
+ chunkResults.push({
518
+ chunkIndex: i,
519
+ answer: result.answer,
520
+ });
521
+ totalTokens += result.tokensUsed || 0;
522
+ }
523
+ // Aggregate results using Gemini
524
+ const aggregatePrompt = options?.aggregatePrompt ||
525
+ `You received the following answers from different parts of a large document.
526
+ Please synthesize these into a single, coherent response that addresses the original query.
527
+ Remove any redundancy and present the information in a clear, organized manner.
528
+
529
+ Original query: ${query}
530
+
531
+ Answers from document parts:
532
+ ${chunkResults.map((r, i) => `--- Part ${i + 1} ---\n${r.answer}`).join("\n\n")}
533
+
534
+ Synthesized answer:`;
535
+ log.info(` Aggregating ${chunkResults.length} chunk results...`);
536
+ const aggregateResult = await this.query({
537
+ query: aggregatePrompt,
538
+ model: modelId,
539
+ });
540
+ const answer = aggregateResult.outputs.find(o => o.type === "text")?.text || "";
541
+ totalTokens += aggregateResult.usage?.totalTokens || 0;
542
+ log.success(`Chunked document query completed`);
543
+ return {
544
+ answer,
545
+ model: modelId,
546
+ tokensUsed: totalTokens,
547
+ filesUsed: fileNames,
548
+ };
549
+ }
550
+ /**
551
+ * Map SDK file response to our interface
552
+ */
553
+ mapFile(response) {
554
+ const r = response;
555
+ return {
556
+ name: r.name || "",
557
+ displayName: r.displayName,
558
+ mimeType: r.mimeType || "application/octet-stream",
559
+ sizeBytes: typeof r.sizeBytes === "string" ? parseInt(r.sizeBytes, 10) : r.sizeBytes,
560
+ createTime: r.createTime,
561
+ expirationTime: r.expirationTime,
562
+ state: r.state || "PROCESSING",
563
+ uri: r.uri || "",
564
+ error: r.error?.message,
565
+ };
566
+ }
567
+ /**
568
+ * Detect MIME type from file extension
569
+ */
570
+ detectMimeType(filePath) {
571
+ const ext = path.extname(filePath).toLowerCase();
572
+ const mimeTypes = {
573
+ ".pdf": "application/pdf",
574
+ ".txt": "text/plain",
575
+ ".md": "text/markdown",
576
+ ".html": "text/html",
577
+ ".htm": "text/html",
578
+ ".csv": "text/csv",
579
+ ".json": "application/json",
580
+ ".xml": "application/xml",
581
+ ".doc": "application/msword",
582
+ ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
583
+ ".png": "image/png",
584
+ ".jpg": "image/jpeg",
585
+ ".jpeg": "image/jpeg",
586
+ ".gif": "image/gif",
587
+ ".webp": "image/webp",
588
+ ".mp3": "audio/mpeg",
589
+ ".wav": "audio/wav",
590
+ ".mp4": "video/mp4",
591
+ };
592
+ return mimeTypes[ext] || "application/octet-stream";
593
+ }
594
+ /**
595
+ * Format bytes to human-readable string
596
+ */
597
+ formatBytes(bytes) {
598
+ if (bytes < 1024)
599
+ return `${bytes} B`;
600
+ if (bytes < 1024 * 1024)
601
+ return `${(bytes / 1024).toFixed(1)} KB`;
602
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
603
+ }
604
+ /**
605
+ * Calculate expiration time (48 hours from now)
606
+ */
607
+ calculateExpiration() {
608
+ const expiration = new Date();
609
+ expiration.setHours(expiration.getHours() + 48);
610
+ return expiration.toISOString();
611
+ }
210
612
  }
211
613
  //# sourceMappingURL=gemini-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-client.js","sourceRoot":"","sources":["../../src/gemini/gemini-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini-client.js","sourceRoot":"","sources":["../../src/gemini/gemini-client.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@
5
5
  */
6
6
  export * from "./types.js";
7
7
  export * from "./gemini-client.js";
8
+ export * from "./pdf-chunker.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
@@ -5,4 +5,5 @@
5
5
  */
6
6
  export * from "./types.js";
7
7
  export * from "./gemini-client.js";
8
+ export * from "./pdf-chunker.js";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * PDF Chunker Utility
3
+ *
4
+ * Splits large PDFs into smaller chunks that fit within Gemini's limits:
5
+ * - Max 50MB per file
6
+ * - Max 1000 pages per file
7
+ *
8
+ * Uses pdf-lib for pure JavaScript PDF manipulation (no system dependencies).
9
+ */
10
+ /**
11
+ * Gemini file limits
12
+ */
13
+ export declare const GEMINI_LIMITS: {
14
+ maxFileSizeBytes: number;
15
+ maxPages: number;
16
+ chunkPages: number;
17
+ chunkSizeBytes: number;
18
+ };
19
+ /**
20
+ * Result of PDF analysis
21
+ */
22
+ export interface PdfAnalysis {
23
+ filePath: string;
24
+ fileName: string;
25
+ fileSize: number;
26
+ pageCount: number;
27
+ needsChunking: boolean;
28
+ estimatedChunks: number;
29
+ reason?: string;
30
+ }
31
+ /**
32
+ * Result of PDF chunking
33
+ */
34
+ export interface PdfChunk {
35
+ chunkIndex: number;
36
+ totalChunks: number;
37
+ filePath: string;
38
+ fileName: string;
39
+ pageStart: number;
40
+ pageEnd: number;
41
+ pageCount: number;
42
+ fileSize: number;
43
+ }
44
+ /**
45
+ * Result of chunking operation
46
+ */
47
+ export interface ChunkingResult {
48
+ success: boolean;
49
+ originalFile: string;
50
+ chunks: PdfChunk[];
51
+ totalPages: number;
52
+ error?: string;
53
+ }
54
+ /**
55
+ * Analyze a PDF to determine if it needs chunking
56
+ */
57
+ export declare function analyzePdf(filePath: string): Promise<PdfAnalysis>;
58
+ /**
59
+ * Split a PDF into chunks
60
+ */
61
+ export declare function chunkPdf(filePath: string): Promise<ChunkingResult>;
62
+ /**
63
+ * Clean up chunk files after upload
64
+ */
65
+ export declare function cleanupChunks(chunks: PdfChunk[]): Promise<void>;
66
+ //# sourceMappingURL=pdf-chunker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-chunker.d.ts","sourceRoot":"","sources":["../../src/gemini/pdf-chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAMzB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgEvE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwGxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrE"}