@pan-sec/notebooklm-mcp 1.9.0 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -209,6 +209,47 @@ Immediately remove files (don't wait for 48h expiration).
209
209
  → File removed
210
210
  ```
211
211
 
212
+ ### Auto-Chunking for Large PDFs (v1.10.0)
213
+
214
+ **No file size limits** — PDFs of any size are automatically handled.
215
+
216
+ When you upload a PDF that exceeds Gemini's limits (50MB or 1000 pages), the system automatically:
217
+
218
+ 1. **Detects** the oversized PDF
219
+ 2. **Splits** it into optimal chunks (500 pages each)
220
+ 3. **Uploads** all chunks in parallel
221
+ 4. **Returns** chunk metadata for querying
222
+
223
+ ```
224
+ upload_document("/research/massive-2000-page-report.pdf")
225
+
226
+ → Returns:
227
+ {
228
+ "wasChunked": true,
229
+ "totalPages": 2000,
230
+ "chunks": [
231
+ { "fileName": "files/abc1", "pageStart": 1, "pageEnd": 500 },
232
+ { "fileName": "files/abc2", "pageStart": 501, "pageEnd": 1000 },
233
+ { "fileName": "files/abc3", "pageStart": 1001, "pageEnd": 1500 },
234
+ { "fileName": "files/abc4", "pageStart": 1501, "pageEnd": 2000 }
235
+ ],
236
+ "allFileNames": ["files/abc1", "files/abc2", "files/abc3", "files/abc4"]
237
+ }
238
+ ```
239
+
240
+ #### `query_chunked_document` — Query All Chunks at Once
241
+
242
+ For chunked documents, use this tool to query all parts and get an aggregated answer:
243
+
244
+ ```
245
+ query_chunked_document(
246
+ file_names: ["files/abc1", "files/abc2", "files/abc3", "files/abc4"],
247
+ query: "What are the key recommendations in this report?"
248
+ )
249
+
250
+ → Queries each chunk, then synthesizes a unified answer
251
+ ```
252
+
212
253
  ### When to Use Document API vs NotebookLM
213
254
 
214
255
  | Scenario | Use |
@@ -218,6 +259,7 @@ Immediately remove files (don't wait for 48h expiration).
218
259
  | Analyzing sensitive documents | **Document API** — 48h auto-delete |
219
260
  | Multi-source research over time | **NotebookLM** — organized notebooks |
220
261
  | CI/CD pipeline document processing | **Document API** — API-native |
262
+ | **Large PDFs (1000+ pages)** | **Document API** — auto-chunking |
221
263
 
222
264
  ---
223
265
 
@@ -44,8 +44,13 @@ export declare class GeminiClient {
44
44
  /**
45
45
  * Upload a document to Gemini Files API
46
46
  * Files are retained for 48 hours and can be used in multiple queries
47
+ * Large PDFs (>50MB or >1000 pages) are automatically chunked
47
48
  */
48
49
  uploadDocument(options: UploadDocumentOptions): Promise<UploadDocumentResult>;
50
+ /**
51
+ * Upload a large PDF by splitting it into chunks
52
+ */
53
+ private uploadChunkedPdf;
49
54
  /**
50
55
  * Wait for file processing to complete
51
56
  */
@@ -66,6 +71,14 @@ export declare class GeminiClient {
66
71
  * Query an uploaded document
67
72
  */
68
73
  queryDocument(options: QueryDocumentOptions): Promise<QueryDocumentResult>;
74
+ /**
75
+ * Query multiple document chunks and aggregate results
76
+ * This is useful for querying large documents that were split into chunks
77
+ */
78
+ queryChunkedDocument(fileNames: string[], query: string, options?: {
79
+ model?: string;
80
+ aggregatePrompt?: string;
81
+ }): Promise<QueryDocumentResult>;
69
82
  /**
70
83
  * Map SDK file response to our interface
71
84
  */
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-client.d.ts","sourceRoot":"","sources":["../../src/gemini/gemini-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EAGnB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EAEV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA4B;gBAE9B,MAAM,CAAC,EAAE,MAAM;IAU3B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+CpE;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwC5E;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAevE;;OAEG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,iBAAiB,CAAC;IAgD7B;;OAEG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7D;;OAEG;IACH,OAAO,CAAC,cAAc;IAkDtB;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoDnF;;OAEG;YACW,qBAAqB;IAsBnC;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAepD;;OAEG;IACG,SAAS,CAAC,QAAQ,SAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyBjF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6EhF;;OAEG;IACH,OAAO,CAAC,OAAO;IA0Bf;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAK5B"}
1
+ {"version":3,"file":"gemini-client.d.ts","sourceRoot":"","sources":["../../src/gemini/gemini-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EAGnB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EAEV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA4B;gBAE9B,MAAM,CAAC,EAAE,MAAM;IAU3B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+CpE;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwC5E;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAevE;;OAEG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,iBAAiB,CAAC;IAgD7B;;OAEG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7D;;OAEG;IACH,OAAO,CAAC,cAAc;IAkDtB;;;;OAIG;IACG,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAqEnF;;OAEG;YACW,gBAAgB;IA2E9B;;OAEG;YACW,qBAAqB;IAsBnC;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAepD;;OAEG;IACG,SAAS,CAAC,QAAQ,SAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyBjF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6EhF;;;OAGG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GACA,OAAO,CAAC,mBAAmB,CAAC;IA2E/B;;OAEG;IACH,OAAO,CAAC,OAAO;IA0Bf;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAK5B"}
@@ -7,6 +7,7 @@
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";
10
11
  import fs from "fs";
11
12
  import path from "path";
12
13
  // Re-export the agent constant
@@ -215,6 +216,7 @@ export class GeminiClient {
215
216
  /**
216
217
  * Upload a document to Gemini Files API
217
218
  * Files are retained for 48 hours and can be used in multiple queries
219
+ * Large PDFs (>50MB or >1000 pages) are automatically chunked
218
220
  */
219
221
  async uploadDocument(options) {
220
222
  if (!this.client) {
@@ -230,6 +232,18 @@ export class GeminiClient {
230
232
  const fileName = displayName || path.basename(filePath);
231
233
  // Auto-detect MIME type if not provided
232
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
233
247
  log.info(`Uploading document: ${fileName} (${this.formatBytes(stats.size)})`);
234
248
  try {
235
249
  // Upload file using SDK
@@ -251,6 +265,7 @@ export class GeminiClient {
251
265
  sizeBytes: file.sizeBytes,
252
266
  expiresAt: file.expirationTime || this.calculateExpiration(),
253
267
  state: file.state,
268
+ wasChunked: false,
254
269
  };
255
270
  }
256
271
  catch (error) {
@@ -259,6 +274,67 @@ export class GeminiClient {
259
274
  throw error;
260
275
  }
261
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
+ }
262
338
  /**
263
339
  * Wait for file processing to complete
264
340
  */
@@ -407,6 +483,70 @@ export class GeminiClient {
407
483
  throw error;
408
484
  }
409
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
+ }
410
550
  /**
411
551
  * Map SDK file response to our interface
412
552
  */
@@ -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"}
@@ -0,0 +1,197 @@
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
+ import { PDFDocument } from "pdf-lib";
11
+ import * as fs from "fs";
12
+ import * as path from "path";
13
+ import * as os from "os";
14
+ import { log } from "../utils/logger.js";
15
+ /**
16
+ * Gemini file limits
17
+ */
18
+ export const GEMINI_LIMITS = {
19
+ maxFileSizeBytes: 50 * 1024 * 1024, // 50MB
20
+ maxPages: 1000,
21
+ // Use conservative chunk sizes to stay well under limits
22
+ chunkPages: 500, // Pages per chunk
23
+ chunkSizeBytes: 25 * 1024 * 1024, // 25MB target per chunk
24
+ };
25
+ /**
26
+ * Analyze a PDF to determine if it needs chunking
27
+ */
28
+ export async function analyzePdf(filePath) {
29
+ const stats = await fs.promises.stat(filePath);
30
+ const fileName = path.basename(filePath);
31
+ const fileSize = stats.size;
32
+ // Check file size first (quick check)
33
+ if (fileSize > GEMINI_LIMITS.maxFileSizeBytes) {
34
+ const estimatedChunks = Math.ceil(fileSize / GEMINI_LIMITS.chunkSizeBytes);
35
+ return {
36
+ filePath,
37
+ fileName,
38
+ fileSize,
39
+ pageCount: -1, // Unknown until we read it
40
+ needsChunking: true,
41
+ estimatedChunks,
42
+ reason: `File size ${formatBytes(fileSize)} exceeds 50MB limit`,
43
+ };
44
+ }
45
+ // Read PDF to get page count
46
+ try {
47
+ const pdfBytes = await fs.promises.readFile(filePath);
48
+ const pdfDoc = await PDFDocument.load(pdfBytes, {
49
+ ignoreEncryption: true,
50
+ });
51
+ const pageCount = pdfDoc.getPageCount();
52
+ if (pageCount > GEMINI_LIMITS.maxPages) {
53
+ const estimatedChunks = Math.ceil(pageCount / GEMINI_LIMITS.chunkPages);
54
+ return {
55
+ filePath,
56
+ fileName,
57
+ fileSize,
58
+ pageCount,
59
+ needsChunking: true,
60
+ estimatedChunks,
61
+ reason: `Page count ${pageCount} exceeds 1000 page limit`,
62
+ };
63
+ }
64
+ return {
65
+ filePath,
66
+ fileName,
67
+ fileSize,
68
+ pageCount,
69
+ needsChunking: false,
70
+ estimatedChunks: 1,
71
+ };
72
+ }
73
+ catch (error) {
74
+ // If we can't read the PDF, assume it doesn't need chunking
75
+ // and let Gemini handle the error
76
+ log.warning(`Could not analyze PDF ${fileName}: ${error}`);
77
+ return {
78
+ filePath,
79
+ fileName,
80
+ fileSize,
81
+ pageCount: -1,
82
+ needsChunking: false,
83
+ estimatedChunks: 1,
84
+ reason: `Could not analyze: ${error}`,
85
+ };
86
+ }
87
+ }
88
+ /**
89
+ * Split a PDF into chunks
90
+ */
91
+ export async function chunkPdf(filePath) {
92
+ const fileName = path.basename(filePath, ".pdf");
93
+ const tempDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), "pdf-chunks-"));
94
+ try {
95
+ log.info(`Chunking PDF: ${filePath}`);
96
+ // Read the original PDF
97
+ const pdfBytes = await fs.promises.readFile(filePath);
98
+ const pdfDoc = await PDFDocument.load(pdfBytes, {
99
+ ignoreEncryption: true,
100
+ });
101
+ const totalPages = pdfDoc.getPageCount();
102
+ log.info(`PDF has ${totalPages} pages, splitting into chunks...`);
103
+ const chunks = [];
104
+ let currentPage = 0;
105
+ let chunkIndex = 0;
106
+ while (currentPage < totalPages) {
107
+ // Calculate chunk range
108
+ const pageStart = currentPage;
109
+ const pageEnd = Math.min(currentPage + GEMINI_LIMITS.chunkPages - 1, totalPages - 1);
110
+ const chunkPageCount = pageEnd - pageStart + 1;
111
+ // Create new PDF for this chunk
112
+ const chunkDoc = await PDFDocument.create();
113
+ const pageIndices = Array.from({ length: chunkPageCount }, (_, i) => pageStart + i);
114
+ const copiedPages = await chunkDoc.copyPages(pdfDoc, pageIndices);
115
+ for (const page of copiedPages) {
116
+ chunkDoc.addPage(page);
117
+ }
118
+ // Save chunk to temp file
119
+ const chunkFileName = `${fileName}_chunk_${chunkIndex + 1}.pdf`;
120
+ const chunkFilePath = path.join(tempDir, chunkFileName);
121
+ const chunkBytes = await chunkDoc.save();
122
+ await fs.promises.writeFile(chunkFilePath, chunkBytes);
123
+ const chunkStats = await fs.promises.stat(chunkFilePath);
124
+ chunks.push({
125
+ chunkIndex,
126
+ totalChunks: -1, // Will update after
127
+ filePath: chunkFilePath,
128
+ fileName: chunkFileName,
129
+ pageStart: pageStart + 1, // 1-indexed for display
130
+ pageEnd: pageEnd + 1,
131
+ pageCount: chunkPageCount,
132
+ fileSize: chunkStats.size,
133
+ });
134
+ log.info(` Chunk ${chunkIndex + 1}: pages ${pageStart + 1}-${pageEnd + 1} (${formatBytes(chunkStats.size)})`);
135
+ currentPage = pageEnd + 1;
136
+ chunkIndex++;
137
+ }
138
+ // Update total chunks count
139
+ for (const chunk of chunks) {
140
+ chunk.totalChunks = chunks.length;
141
+ }
142
+ log.info(`Split into ${chunks.length} chunks, stored in ${tempDir}`);
143
+ return {
144
+ success: true,
145
+ originalFile: filePath,
146
+ chunks,
147
+ totalPages,
148
+ };
149
+ }
150
+ catch (error) {
151
+ const errorMsg = error instanceof Error ? error.message : String(error);
152
+ log.error(`Failed to chunk PDF: ${errorMsg}`);
153
+ // Clean up temp directory on failure
154
+ try {
155
+ await fs.promises.rm(tempDir, { recursive: true });
156
+ }
157
+ catch {
158
+ // Ignore cleanup errors
159
+ }
160
+ return {
161
+ success: false,
162
+ originalFile: filePath,
163
+ chunks: [],
164
+ totalPages: 0,
165
+ error: errorMsg,
166
+ };
167
+ }
168
+ }
169
+ /**
170
+ * Clean up chunk files after upload
171
+ */
172
+ export async function cleanupChunks(chunks) {
173
+ if (chunks.length === 0)
174
+ return;
175
+ // Get the temp directory from the first chunk
176
+ const tempDir = path.dirname(chunks[0].filePath);
177
+ try {
178
+ await fs.promises.rm(tempDir, { recursive: true });
179
+ log.info(`Cleaned up chunk temp directory: ${tempDir}`);
180
+ }
181
+ catch (error) {
182
+ log.warning(`Failed to cleanup chunks: ${error}`);
183
+ }
184
+ }
185
+ /**
186
+ * Format bytes to human readable string
187
+ */
188
+ function formatBytes(bytes) {
189
+ if (bytes < 1024)
190
+ return `${bytes} B`;
191
+ if (bytes < 1024 * 1024)
192
+ return `${(bytes / 1024).toFixed(1)} KB`;
193
+ if (bytes < 1024 * 1024 * 1024)
194
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
195
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
196
+ }
197
+ //# sourceMappingURL=pdf-chunker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-chunker.js","sourceRoot":"","sources":["../../src/gemini/pdf-chunker.ts"],"names":[],"mappings":"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"}