@roomi-fields/notebooklm-mcp 1.2.1 → 1.3.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
@@ -2,11 +2,16 @@
2
2
 
3
3
  # NotebookLM MCP Server
4
4
 
5
+ > **Forked from** [PleasePrompto/notebooklm-mcp](https://github.com/PleasePrompto/notebooklm-mcp)
6
+
5
7
  **Chat directly with NotebookLM for zero-hallucination answers based on your own notebooks**
6
8
 
7
9
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)](https://www.typescriptlang.org/)
8
10
  [![MCP](https://img.shields.io/badge/MCP-2025-green.svg)](https://modelcontextprotocol.io/)
9
11
  [![npm](https://img.shields.io/npm/v/@roomi-fields/notebooklm-mcp.svg)](https://www.npmjs.com/package/@roomi-fields/notebooklm-mcp)
12
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
13
+ [![Claude Code](https://img.shields.io/badge/Claude_Code-MCP-8A2BE2)](https://claude.ai/claude-code)
14
+ [![n8n](https://img.shields.io/badge/n8n-HTTP_API-orange)](./deployment/docs/04-N8N-INTEGRATION.md)
10
15
  [![GitHub](https://img.shields.io/github/stars/roomi-fields/notebooklm-mcp?style=social)](https://github.com/roomi-fields/notebooklm-mcp)
11
16
 
12
17
  [MCP Installation](#mcp-installation) • [HTTP REST API](#http-rest-api) • [Why NotebookLM](#why-notebooklm-not-local-rag) • [Examples](#real-world-example) • [Documentation](./deployment/docs/)
@@ -15,6 +20,10 @@
15
20
 
16
21
  ---
17
22
 
23
+ > **⚠️ Current Limitation (v1.3.0):** HTTP and MCP stdio modes cannot run simultaneously due to Chrome profile locking. Choose one mode at a time, or see [Chrome Profile Limitation](./docs/CHROME_PROFILE_LIMITATION.md) for details. This will be fixed in v1.4.0 with automatic profile separation.
24
+
25
+ ---
26
+
18
27
  ## 🚀 Two Ways to Use This Server
19
28
 
20
29
  ### 1️⃣ **HTTP REST API** (New! Recommended for n8n, Zapier, Make.com)
@@ -184,6 +193,7 @@ curl -X POST http://localhost:3000/ask \
184
193
  | `POST` | `/ask` | Ask a question to NotebookLM |
185
194
  | `GET` | `/notebooks` | List all notebooks |
186
195
  | `POST` | `/notebooks` | Add notebook (with live validation) |
196
+ | `POST` | `/notebooks/auto-discover` | Auto-generate notebook metadata |
187
197
  | `DELETE` | `/notebooks/:id` | Remove a notebook |
188
198
  | `PUT` | `/notebooks/:id/activate` | Set active notebook |
189
199
  | `GET` | `/sessions` | List active sessions |
@@ -217,6 +227,69 @@ Perfect for n8n workflows:
217
227
 
218
228
  **👉 n8n guide:** [deployment/docs/04-N8N-INTEGRATION.md](./deployment/docs/04-N8N-INTEGRATION.md)
219
229
 
230
+ ---
231
+
232
+ ## 🔍 Auto-Discovery : Self-Organizing Documentation
233
+
234
+ Autonomous resource discovery enables AI orchestrators to find and use relevant documentation without manual intervention.
235
+
236
+ ### How it works
237
+
238
+ **1. Add notebook** (zero manual metadata):
239
+ ```bash
240
+ curl -X POST http://localhost:3000/notebooks/auto-discover \
241
+ -H "Content-Type: application/json" \
242
+ -d '{"url": "https://notebooklm.google.com/notebook/YOUR_ID"}'
243
+ ```
244
+
245
+ **2. System queries NotebookLM** to auto-generate:
246
+ - Kebab-case name (3 words max)
247
+ - Concise description (2 sentences)
248
+ - Relevant tags (8-10 keywords)
249
+
250
+ **3. Orchestrators discover autonomously**:
251
+ - Claude Code finds relevant docs without prompting
252
+ - n8n workflows auto-select documentation
253
+ - Cursor matches context to notebooks
254
+
255
+ ### Progressive disclosure pattern
256
+
257
+ Inspired by [Claude Skills best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices#progressive-disclosure-patterns):
258
+
259
+ - **Level 0** (startup): Lightweight metadata loaded (~500 tokens)
260
+ - **Level 1** (matching): Local tag/description search (0 NotebookLM queries)
261
+ - **Level 2** (deep query): Targeted NotebookLM query only when needed
262
+
263
+ ### Why this matters
264
+
265
+ **Before**: Manual library management, orchestrators can't discover resources autonomously
266
+
267
+ **After**: Self-organizing library, autonomous documentation discovery
268
+
269
+ Perfect for:
270
+ - ✅ Teams with 10+ documentation notebooks
271
+ - ✅ n8n workflows needing dynamic doc access
272
+ - ✅ Claude Code autonomous research
273
+ - ✅ Onboarding new developers without manual setup
274
+
275
+ ### Example workflow
276
+
277
+ ```bash
278
+ # 1. Add documentation notebooks (auto-discover metadata)
279
+ curl -X POST /notebooks/auto-discover -d '{"url": "https://notebooklm.google.com/notebook/n8n-docs"}'
280
+ curl -X POST /notebooks/auto-discover -d '{"url": "https://notebooklm.google.com/notebook/react-guide"}'
281
+
282
+ # 2. Claude Code autonomously discovers relevant notebook
283
+ User: "Build Gmail automation with n8n"
284
+ → System matches: "n8n-docs" (tags: ["n8n", "gmail", "automation"])
285
+ → Query NotebookLM: "Gmail node configuration?"
286
+ → Claude implements with accurate info
287
+
288
+ # 3. Zero hallucinations, zero manual intervention
289
+ ```
290
+
291
+ ---
292
+
220
293
  ### Background Daemon Mode
221
294
 
222
295
  Run the HTTP server as a background process without keeping a terminal window open:
@@ -568,38 +641,51 @@ That said, if you run into problems or have questions, feel free to open an issu
568
641
 
569
642
  ## Roadmap
570
643
 
571
- Future features planned for upcoming releases:
644
+ ### Implemented in v1.3.0
645
+
646
+ **🤖 Auto-Discovery: Autonomous Resource Discovery**
647
+ - ✅ Automatically generate notebook name, description, and tags via NotebookLM
648
+ - ✅ Progressive disclosure pattern inspired by Claude Skills best practices
649
+ - ✅ Zero-friction notebook addition (30 seconds vs 5 minutes)
650
+ - ✅ Validation of auto-generated metadata (kebab-case, description length, tags count)
651
+ - ✅ Orchestrators discover relevant documentation autonomously
652
+
653
+ **👉 See [Auto-Discovery Documentation](./deployment/docs/07-AUTO-DISCOVERY.md) for details**
654
+
655
+ ### 🔜 Planned for v1.4.0+
572
656
 
573
- ### 🚀 Stateless Server Mode
574
- **Goal**: Run the HTTP server without keeping a terminal window open permanently.
657
+ **🔥 Separate Chrome Profiles by Mode (Priority):**
658
+ - Enable HTTP and MCP stdio modes to run simultaneously
659
+ - Automatic profile detection: `chrome_profile_http` vs `chrome_profile_stdio`
660
+ - No user configuration needed - just works
661
+ - Solves Chrome profile locking issue for dual-mode users
662
+ - **👉 See [Chrome Profile Limitation](./docs/CHROME_PROFILE_LIMITATION.md) for details**
575
663
 
576
- **Planned options:**
577
- - **PM2 integration** (Recommended): Cross-platform process manager with auto-restart, monitoring, and logs
578
- - Simple setup: `npm run daemon:start` (uses PM2 with optimized config)
579
- - Automatic startup on system boot
580
- - Built-in log rotation and monitoring
581
- - **Windows Service**: Native Windows service installation via `nssm` or `node-windows`
582
- - **Serverless-ready mode**: Lambda/cold-start compatible with lazy browser session initialization
664
+ **Smart Metadata Refresh:**
665
+ - Auto-detect when notebook content has changed
666
+ - Re-query NotebookLM to update metadata
667
+ - Endpoint: `PATCH /notebooks/:id/refresh`
583
668
 
584
- **Status**: Planned for v1.2.0
669
+ **Semantic Matching:**
670
+ - Use embeddings for advanced notebook matching beyond tags
671
+ - Endpoint: `GET /notebooks/match?query=gmail&semantic=true`
585
672
 
586
- ### 🤖 Auto-fill Notebook Metadata
587
- **Goal**: Automatically generate notebook name, description, and keywords when adding a notebook.
673
+ **Usage Analytics:**
674
+ - Track which notebooks are queried together
675
+ - Suggest related notebooks based on usage patterns
676
+ - Endpoint: `GET /notebooks/:id/related`
588
677
 
589
- **How it works:**
590
- 1. When adding a notebook with empty metadata, automatically ask NotebookLM:
591
- - "If you had to name this notebook in one word, what would it be?"
592
- - "Give me 10 relevant keywords for this content"
593
- - "Describe this notebook in one sentence"
594
- 2. Parse the response and auto-populate metadata fields
595
- 3. Available as both automatic mode (on add) and manual command (`/notebooks/:id/auto-fill`)
678
+ ### 🚀 Previously Implemented
596
679
 
597
- **Benefits:**
598
- - No more manual metadata entry
599
- - Consistent, AI-generated descriptions
600
- - Better notebook organization and searchability
680
+ **✅ PM2 Daemon Mode (v1.1.2):**
681
+ - Cross-platform process manager with auto-restart
682
+ - Commands: `npm run daemon:start`, `daemon:logs`, `daemon:status`
683
+ - Built-in log rotation and monitoring
601
684
 
602
- **Status**: Planned for v1.2.0 or v1.3.0
685
+ **✅ Multi-Notebook Library (v1.1.2):**
686
+ - Live validation of notebooks
687
+ - Duplicate detection
688
+ - Smart notebook selection
603
689
 
604
690
  ### 💡 Have an idea?
605
691
  [Open a discussion](https://github.com/roomi-fields/notebooklm-mcp/discussions) to suggest new features!
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Auto-Discovery Module
3
+ *
4
+ * Automatically generates notebook metadata by querying NotebookLM itself.
5
+ * This enables autonomous resource discovery for AI orchestrators.
6
+ *
7
+ * Progressive Disclosure Pattern (inspired by Claude Skills best practices):
8
+ * - Level 0: Lightweight metadata loaded at startup
9
+ * - Level 1: Local matching without NotebookLM queries
10
+ * - Level 2: Deep query to NotebookLM only when needed
11
+ */
12
+ import { SessionManager } from '../session/session-manager.js';
13
+ /**
14
+ * Metadata structure auto-generated from NotebookLM
15
+ */
16
+ export interface AutoGeneratedMetadata {
17
+ name: string;
18
+ description: string;
19
+ tags: string[];
20
+ }
21
+ /**
22
+ * AutoDiscovery class
23
+ * Queries NotebookLM to auto-generate notebook metadata
24
+ */
25
+ export declare class AutoDiscovery {
26
+ private sessionManager;
27
+ constructor(sessionManager: SessionManager);
28
+ /**
29
+ * Query the notebook to auto-generate its metadata
30
+ * Includes retry logic (max 2 retries with 2s delay)
31
+ *
32
+ * @param notebookUrl NotebookLM notebook URL
33
+ * @param maxRetries Maximum retry attempts (default: 2)
34
+ * @returns Auto-generated metadata
35
+ */
36
+ discoverMetadata(notebookUrl: string, maxRetries?: number): Promise<AutoGeneratedMetadata>;
37
+ /**
38
+ * Generate the discovery prompt for NotebookLM
39
+ *
40
+ * This prompt is CRITICAL - it must be ultra-clear with no ambiguity.
41
+ * NotebookLM will analyze its own content and return structured metadata.
42
+ */
43
+ private generatePrompt;
44
+ /**
45
+ * Parse and validate the NotebookLM response
46
+ *
47
+ * Handles common issues:
48
+ * - Markdown code blocks wrapping JSON
49
+ * - Extra whitespace
50
+ * - Invalid JSON syntax
51
+ */
52
+ private parseResponse;
53
+ /**
54
+ * Validate that metadata respects all rules
55
+ *
56
+ * Throws detailed errors to help debugging
57
+ */
58
+ private validateMetadata;
59
+ /**
60
+ * Simple delay helper for retry logic
61
+ */
62
+ private delay;
63
+ }
64
+ //# sourceMappingURL=auto-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-discovery.d.ts","sourceRoot":"","sources":["../../src/auto-discovery/auto-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAElD;;;;;;;OAOG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,UAAU,SAAI,GACb,OAAO,CAAC,qBAAqB,CAAC;IAoDjC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAiCrB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA2CxB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Auto-Discovery Module
3
+ *
4
+ * Automatically generates notebook metadata by querying NotebookLM itself.
5
+ * This enables autonomous resource discovery for AI orchestrators.
6
+ *
7
+ * Progressive Disclosure Pattern (inspired by Claude Skills best practices):
8
+ * - Level 0: Lightweight metadata loaded at startup
9
+ * - Level 1: Local matching without NotebookLM queries
10
+ * - Level 2: Deep query to NotebookLM only when needed
11
+ */
12
+ import { log } from '../utils/logger.js';
13
+ /**
14
+ * AutoDiscovery class
15
+ * Queries NotebookLM to auto-generate notebook metadata
16
+ */
17
+ export class AutoDiscovery {
18
+ sessionManager;
19
+ constructor(sessionManager) {
20
+ this.sessionManager = sessionManager;
21
+ }
22
+ /**
23
+ * Query the notebook to auto-generate its metadata
24
+ * Includes retry logic (max 2 retries with 2s delay)
25
+ *
26
+ * @param notebookUrl NotebookLM notebook URL
27
+ * @param maxRetries Maximum retry attempts (default: 2)
28
+ * @returns Auto-generated metadata
29
+ */
30
+ async discoverMetadata(notebookUrl, maxRetries = 2) {
31
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
32
+ try {
33
+ log.info(`🔍 Auto-discovering metadata (attempt ${attempt + 1}/${maxRetries + 1})...`);
34
+ // 1. Create session for this notebook
35
+ const session = await this.sessionManager.getOrCreateSession(undefined, notebookUrl);
36
+ // 2. Send discovery prompt
37
+ const prompt = this.generatePrompt();
38
+ log.dim(` Sending discovery prompt to NotebookLM...`);
39
+ const response = await session.ask(prompt);
40
+ log.dim(` Received response (${response.length} chars)`);
41
+ // 3. Parse and validate response
42
+ const metadata = this.parseResponse(response);
43
+ this.validateMetadata(metadata);
44
+ log.success(`✅ Metadata auto-generated successfully`);
45
+ log.dim(` Name: ${metadata.name}`);
46
+ log.dim(` Tags: ${metadata.tags.length} keywords`);
47
+ return metadata;
48
+ }
49
+ catch (error) {
50
+ const errorMessage = error instanceof Error ? error.message : String(error);
51
+ if (attempt === maxRetries) {
52
+ log.error(`❌ Failed to auto-discover metadata after ${maxRetries + 1} attempts`);
53
+ throw new Error(`Auto-discovery failed: ${errorMessage}. Please verify the notebook is accessible.`);
54
+ }
55
+ log.warning(`⚠️ Attempt ${attempt + 1} failed: ${errorMessage}. Retrying in 2s...`);
56
+ await this.delay(2000);
57
+ }
58
+ }
59
+ throw new Error('Auto-discovery failed after all retries');
60
+ }
61
+ /**
62
+ * Generate the discovery prompt for NotebookLM
63
+ *
64
+ * This prompt is CRITICAL - it must be ultra-clear with no ambiguity.
65
+ * NotebookLM will analyze its own content and return structured metadata.
66
+ */
67
+ generatePrompt() {
68
+ return `Analyze your complete content and respond ONLY in this JSON format:
69
+
70
+ {
71
+ "name": "example-notebook-name",
72
+ "description": "First sentence describes main topic. Second sentence adds key details.",
73
+ "tags": ["keyword1", "keyword2", "keyword3", "keyword4", "keyword5", "keyword6", "keyword7", "keyword8"]
74
+ }
75
+
76
+ Rules:
77
+ - name: 3 words maximum, kebab-case format (e.g., "react-hooks-guide", "n8n-api-docs")
78
+ - description: exactly 2 sentences, total length under 150 characters
79
+ - tags: between 8 and 10 keywords covering:
80
+ * Core concepts (3-4 tags like "react", "hooks", "state")
81
+ * Actions/verbs (2-3 tags like "debugging", "testing")
82
+ * Use contexts (2-3 tags like "frontend", "api", "automation")
83
+
84
+ OUTPUT ONLY VALID JSON. NO OTHER TEXT.`;
85
+ }
86
+ /**
87
+ * Parse and validate the NotebookLM response
88
+ *
89
+ * Handles common issues:
90
+ * - Markdown code blocks wrapping JSON
91
+ * - Extra whitespace
92
+ * - Invalid JSON syntax
93
+ */
94
+ parseResponse(response) {
95
+ try {
96
+ // 1. Clean markdown code blocks if present
97
+ let cleaned = response
98
+ .replace(/```json\n?/g, '')
99
+ .replace(/```\n?/g, '')
100
+ .trim();
101
+ // 2. Parse JSON
102
+ const parsed = JSON.parse(cleaned);
103
+ // 3. Ensure required fields exist
104
+ if (!parsed.name || !parsed.description || !parsed.tags) {
105
+ throw new Error('Missing required fields (name, description, or tags)');
106
+ }
107
+ return {
108
+ name: parsed.name,
109
+ description: parsed.description,
110
+ tags: parsed.tags,
111
+ };
112
+ }
113
+ catch (error) {
114
+ if (error instanceof SyntaxError) {
115
+ throw new Error(`Invalid JSON response from NotebookLM. Response: ${response.substring(0, 200)}...`);
116
+ }
117
+ throw error;
118
+ }
119
+ }
120
+ /**
121
+ * Validate that metadata respects all rules
122
+ *
123
+ * Throws detailed errors to help debugging
124
+ */
125
+ validateMetadata(metadata) {
126
+ // Validate name: kebab-case, 3 words max, no spaces
127
+ const nameRegex = /^[a-z0-9]+(-[a-z0-9]+){0,2}$/;
128
+ if (!nameRegex.test(metadata.name)) {
129
+ throw new Error(`Invalid name format: "${metadata.name}". Must be kebab-case with max 3 words (e.g., "my-notebook" or "my-notebook-name")`);
130
+ }
131
+ // Auto-truncate description if too long (NotebookLM doesn't always respect the limit)
132
+ if (metadata.description.length > 150) {
133
+ log.warning(`⚠️ Description too long (${metadata.description.length} chars), truncating to 150...`);
134
+ // Truncate at last complete sentence before 147 chars (leave room for "...")
135
+ let truncated = metadata.description.substring(0, 147);
136
+ const lastPeriod = truncated.lastIndexOf('.');
137
+ if (lastPeriod > 50) {
138
+ // Keep complete sentence if it's not too short
139
+ truncated = truncated.substring(0, lastPeriod + 1);
140
+ }
141
+ else {
142
+ // Otherwise just truncate and add ...
143
+ truncated = truncated.trim() + '...';
144
+ }
145
+ metadata.description = truncated;
146
+ log.dim(` Truncated to: "${truncated}"`);
147
+ }
148
+ // Validate tags: 8-10 elements
149
+ if (metadata.tags.length < 8 || metadata.tags.length > 10) {
150
+ throw new Error(`Invalid tags count: ${metadata.tags.length} (must be 8-10). Tags: ${metadata.tags.join(', ')}`);
151
+ }
152
+ // Validate tags are non-empty strings
153
+ for (const tag of metadata.tags) {
154
+ if (typeof tag !== 'string' || tag.trim().length === 0) {
155
+ throw new Error(`Invalid tag: "${tag}". Tags must be non-empty strings`);
156
+ }
157
+ }
158
+ }
159
+ /**
160
+ * Simple delay helper for retry logic
161
+ */
162
+ delay(ms) {
163
+ return new Promise((resolve) => setTimeout(resolve, ms));
164
+ }
165
+ }
166
+ //# sourceMappingURL=auto-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-discovery.js","sourceRoot":"","sources":["../../src/auto-discovery/auto-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAWzC;;;GAGG;AACH,MAAM,OAAO,aAAa;IACJ;IAApB,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAEtD;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,UAAU,GAAG,CAAC;QAEd,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,GAAG,CAAC,IAAI,CACN,yCAAyC,OAAO,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,MAAM,CAC7E,CAAC;gBAEF,sCAAsC;gBACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAC1D,SAAS,EACT,WAAW,CACZ,CAAC;gBAEF,2BAA2B;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrC,GAAG,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAExD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3C,GAAG,CAAC,GAAG,CAAC,yBAAyB,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC;gBAE3D,iCAAiC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAEhC,GAAG,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;gBACtD,GAAG,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrC,GAAG,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,CAAC;gBAErD,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAEzD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC3B,GAAG,CAAC,KAAK,CACP,4CAA4C,UAAU,GAAG,CAAC,WAAW,CACtE,CAAC;oBACF,MAAM,IAAI,KAAK,CACb,0BAA0B,YAAY,6CAA6C,CACpF,CAAC;gBACJ,CAAC;gBAED,GAAG,CAAC,OAAO,CACT,eAAe,OAAO,GAAG,CAAC,YAAY,YAAY,qBAAqB,CACxE,CAAC;gBACF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACK,cAAc;QACpB,OAAO;;;;;;;;;;;;;;;;uCAgB4B,CAAC;IACtC,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CAAC,QAAgB;QACpC,IAAI,CAAC;YACH,2CAA2C;YAC3C,IAAI,OAAO,GAAG,QAAQ;iBACnB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;iBAC1B,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;iBACtB,IAAI,EAAE,CAAC;YAEV,gBAAgB;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,kCAAkC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CACb,sDAAsD,CACvD,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,oDAAoD,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CACpF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,QAA+B;QACtD,oDAAoD;QACpD,MAAM,SAAS,GAAG,8BAA8B,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,CAAC,IAAI,oFAAoF,CAC3H,CAAC;QACJ,CAAC;QAED,sFAAsF;QACtF,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACtC,GAAG,CAAC,OAAO,CACT,6BAA6B,QAAQ,CAAC,WAAW,CAAC,MAAM,+BAA+B,CACxF,CAAC;YACF,6EAA6E;YAC7E,IAAI,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;gBACpB,+CAA+C;gBAC/C,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC;YACvC,CAAC;YACD,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC;YACjC,GAAG,CAAC,GAAG,CAAC,qBAAqB,SAAS,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,+BAA+B;QAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,CAAC,IAAI,CAAC,MAAM,0BAA0B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,mCAAmC,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -9,6 +9,7 @@ import { AuthManager } from './auth/auth-manager.js';
9
9
  import { SessionManager } from './session/session-manager.js';
10
10
  import { NotebookLibrary } from './library/notebook-library.js';
11
11
  import { ToolHandlers } from './tools/index.js';
12
+ import { AutoDiscovery } from './auto-discovery/auto-discovery.js';
12
13
  import { log } from './utils/logger.js';
13
14
  const app = express();
14
15
  app.use(express.json());
@@ -139,6 +140,73 @@ app.delete('/notebooks/:id', async (req, res) => {
139
140
  });
140
141
  }
141
142
  });
143
+ // Auto-discover notebook metadata
144
+ app.post('/notebooks/auto-discover', async (req, res) => {
145
+ try {
146
+ const { url } = req.body;
147
+ // Validate URL is provided
148
+ if (!url) {
149
+ return res.status(400).json({
150
+ success: false,
151
+ error: 'Missing required field: url'
152
+ });
153
+ }
154
+ // Validate it's a NotebookLM URL
155
+ if (!url.includes('notebooklm.google.com')) {
156
+ return res.status(400).json({
157
+ success: false,
158
+ error: 'Invalid URL: must be a NotebookLM URL (notebooklm.google.com)'
159
+ });
160
+ }
161
+ // Create AutoDiscovery instance and discover metadata
162
+ const autoDiscovery = new AutoDiscovery(sessionManager);
163
+ let metadata;
164
+ try {
165
+ metadata = await autoDiscovery.discoverMetadata(url);
166
+ }
167
+ catch (error) {
168
+ return res.status(500).json({
169
+ success: false,
170
+ error: `Failed to discover metadata: ${error instanceof Error ? error.message : String(error)}`
171
+ });
172
+ }
173
+ // Transform metadata to NotebookLibrary format
174
+ // - tags → topics (rename field)
175
+ // - Add default content_types
176
+ // - Add default use_cases based on first few tags
177
+ const notebookInput = {
178
+ url,
179
+ name: metadata.name,
180
+ description: metadata.description,
181
+ topics: metadata.tags, // tags → topics
182
+ content_types: ['documentation'],
183
+ use_cases: metadata.tags.slice(0, 3), // Use first 3 tags as use cases
184
+ auto_generated: true
185
+ };
186
+ // Add notebook to library
187
+ let notebook;
188
+ try {
189
+ notebook = await library.addNotebook(notebookInput);
190
+ }
191
+ catch (error) {
192
+ return res.status(500).json({
193
+ success: false,
194
+ error: `Failed to add notebook to library: ${error instanceof Error ? error.message : String(error)}`
195
+ });
196
+ }
197
+ // Return success with created notebook
198
+ res.json({
199
+ success: true,
200
+ notebook
201
+ });
202
+ }
203
+ catch (error) {
204
+ res.status(500).json({
205
+ success: false,
206
+ error: error instanceof Error ? error.message : String(error)
207
+ });
208
+ }
209
+ });
142
210
  // Activate notebook (set as active)
143
211
  app.put('/notebooks/:id/activate', async (req, res) => {
144
212
  try {
@@ -182,7 +250,7 @@ app.delete('/sessions/:id', async (req, res) => {
182
250
  const PORT = Number(process.env.HTTP_PORT) || 3000;
183
251
  const HOST = process.env.HTTP_HOST || '0.0.0.0';
184
252
  app.listen(PORT, HOST, () => {
185
- log.success(`🌐 NotebookLM MCP HTTP Server v1.2.1`);
253
+ log.success(`🌐 NotebookLM MCP HTTP Server v1.3.0`);
186
254
  log.success(` Listening on ${HOST}:${PORT}`);
187
255
  log.info('');
188
256
  log.info('📊 Quick Links:');
@@ -1 +1 @@
1
- {"version":3,"file":"http-wrapper.js","sourceRoot":"","sources":["../src/http-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-wrapper.js","sourceRoot":"","sources":["../src/http-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAA8B,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAExB,eAAe;AACf,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC1B,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAC/C,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,iCAAiC,CAAC,CAAC;IAC9E,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;IAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEH,sBAAsB;AACtB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;AACvD,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;AACpD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAE5E,eAAe;AACf,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAEnF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,kCAAkC;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,iBAAiB,CACjD,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,EACjE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YACjC,GAAG,CAAC,IAAI,CAAC,aAAa,OAAO,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;QAC1D,CAAC,CACF,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,aAAa;AACb,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,CAC/C,EAAE,YAAY,EAAE,EAChB,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YACjC,GAAG,CAAC,IAAI,CAAC,aAAa,OAAO,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;QAC1D,CAAC,CACF,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,iBAAiB;AACjB,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,mBAAmB,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAEpF,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yDAAyD;aACjE,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC;YAClD,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI;SAC/D,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kCAAkC;AAClC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACzE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAEzB,2BAA2B;QAC3B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,6BAA6B;aACrC,CAAC,CAAC;QACL,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC3C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,+DAA+D;aACvE,CAAC,CAAC;QACL,CAAC;QAED,sDAAsD;QACtD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAChG,CAAC,CAAC;QACL,CAAC;QAED,+CAA+C;QAC/C,iCAAiC;QACjC,8BAA8B;QAC9B,kDAAkD;QAClD,MAAM,aAAa,GAAG;YACpB,GAAG;YACH,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB;YACvC,aAAa,EAAE,CAAC,eAAe,CAAC;YAChC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gCAAgC;YACtE,cAAc,EAAE,IAAI;SACrB,CAAC;QAEF,0BAA0B;QAC1B,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACtG,CAAC,CAAC;QACL,CAAC;QAED,uCAAuC;QACvC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,oCAAoC;AACpC,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,gBAAgB;AAChB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,gBAAgB;AAChB,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AACnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;AAEhD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IAC1B,GAAG,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACpD,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5B,GAAG,CAAC,IAAI,CAAC,qCAAqC,IAAI,SAAS,CAAC,CAAC;IAC7D,GAAG,CAAC,IAAI,CAAC,qCAAqC,IAAI,MAAM,CAAC,CAAC;IAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC3E,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACjE,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACjE,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACnE,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAChE,GAAG,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACnF,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACnE,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC9D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtG,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IAC/B,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC1D,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACzD,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}