@nacho-labs/mcp-semantic-search 0.1.1 → 0.3.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/dist/index.d.ts CHANGED
@@ -1,14 +1,3 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * MCP Semantic Search Server
4
- *
5
- * Gives AI tools (Claude Code, Cursor, etc.) persistent semantic memory
6
- * powered by local vector embeddings. No API keys, no cloud, no costs.
7
- *
8
- * Usage:
9
- * npx @nacho-labs/mcp-semantic-search
10
- * npx @nacho-labs/mcp-semantic-search --store /path/to/store.json
11
- * npx @nacho-labs/mcp-semantic-search --similarity 0.5
12
- */
13
2
  export {};
14
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -1,241 +1,358 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * MCP Semantic Search Server
4
- *
5
- * Gives AI tools (Claude Code, Cursor, etc.) persistent semantic memory
6
- * powered by local vector embeddings. No API keys, no cloud, no costs.
7
- *
8
- * Usage:
9
- * npx @nacho-labs/mcp-semantic-search
10
- * npx @nacho-labs/mcp-semantic-search --store /path/to/store.json
11
- * npx @nacho-labs/mcp-semantic-search --similarity 0.5
12
- */
13
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
14
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
15
4
  import { z } from 'zod';
16
- import { SemanticSearch } from '@nacho-labs/nachos-embeddings';
17
- import { readFile, writeFile, mkdir } from 'node:fs/promises';
18
- import { existsSync } from 'node:fs';
19
- import { dirname, resolve } from 'node:path';
20
- // --- Configuration via CLI args and env vars ---
5
+ import { EnhancedSemanticSearch } from '@nacho-labs/nachos-embeddings';
6
+ import { resolve } from 'node:path';
21
7
  function getConfig() {
22
8
  const args = process.argv.slice(2);
23
9
  function getArg(name, fallback) {
24
10
  const idx = args.indexOf(`--${name}`);
25
- if (idx !== -1 && idx + 1 < args.length) {
26
- return args[idx + 1];
27
- }
28
- return fallback;
11
+ return idx !== -1 && idx + 1 < args.length ? args[idx + 1] : fallback;
12
+ }
13
+ function getBool(name, fallback) {
14
+ const value = process.env[`MCP_SEMANTIC_${name.toUpperCase()}`] ?? getArg(name, fallback.toString());
15
+ return value === 'true' || value === '1';
16
+ }
17
+ return {
18
+ storePath: resolve(process.env.MCP_SEMANTIC_STORE ?? getArg('store', '.semantic-store.json')),
19
+ minSimilarity: parseFloat(process.env.MCP_SEMANTIC_SIMILARITY ?? getArg('similarity', '0.4')),
20
+ model: process.env.MCP_SEMANTIC_MODEL ?? getArg('model', 'Xenova/all-MiniLM-L6-v2'),
21
+ cacheDir: process.env.MCP_SEMANTIC_CACHE_DIR ?? getArg('cache-dir', '.cache/transformers'),
22
+ autoChunk: getBool('auto-chunk', true),
23
+ deduplicateExact: getBool('deduplicate-exact', true),
24
+ deduplicateSimilarity: parseFloat(process.env.MCP_SEMANTIC_DEDUPLICATE_SIMILARITY ?? getArg('deduplicate-similarity', '0.95')),
25
+ temporalBoost: getBool('temporal-boost', true),
26
+ verbose: getBool('verbose', false),
27
+ // Bedrock provider settings
28
+ provider: (process.env.MCP_SEMANTIC_PROVIDER ?? getArg('provider', 'transformers')),
29
+ bedrockRegion: process.env.MCP_SEMANTIC_BEDROCK_REGION ?? getArg('bedrock-region', 'us-east-1'),
30
+ bedrockModel: process.env.MCP_SEMANTIC_BEDROCK_MODEL ?? getArg('bedrock-model', 'amazon.titan-embed-text-v2:0'),
31
+ bedrockProfile: process.env.MCP_SEMANTIC_BEDROCK_PROFILE ?? getArg('bedrock-profile', ''),
32
+ bedrockDimensions: parseInt(process.env.MCP_SEMANTIC_BEDROCK_DIMENSIONS ?? getArg('bedrock-dimensions', '1024'), 10),
33
+ };
34
+ }
35
+ async function createProvider(config) {
36
+ if (config.provider !== 'bedrock') {
37
+ return undefined; // Use default Transformers.js
29
38
  }
30
- const storePath = resolve(process.env['MCP_SEMANTIC_STORE'] ??
31
- getArg('store', '.semantic-store.json'));
32
- const minSimilarity = parseFloat(process.env['MCP_SEMANTIC_SIMILARITY'] ??
33
- getArg('similarity', '0.6'));
34
- const model = process.env['MCP_SEMANTIC_MODEL'] ??
35
- getArg('model', 'Xenova/all-MiniLM-L6-v2');
36
- const cacheDir = process.env['MCP_SEMANTIC_CACHE_DIR'] ??
37
- getArg('cache-dir', '.cache/transformers');
38
- return { storePath, minSimilarity, model, cacheDir };
39
+ const { BedrockProvider } = await import('@nacho-labs/nachos-embeddings/bedrock');
40
+ return new BedrockProvider({
41
+ region: config.bedrockRegion,
42
+ modelId: config.bedrockModel,
43
+ ...(config.bedrockProfile ? { credentials: { strategy: 'profile', profile: config.bedrockProfile } } : {}),
44
+ modelOptions: { dimensions: config.bedrockDimensions },
45
+ progressLogging: config.verbose,
46
+ });
39
47
  }
40
48
  const config = getConfig();
41
- // --- Initialize search engine ---
42
- const search = new SemanticSearch({
49
+ const metrics = {
50
+ searches: 0,
51
+ documentsAdded: 0,
52
+ documentsRemoved: 0,
53
+ errors: 0,
54
+ startTime: Date.now(),
55
+ };
56
+ const provider = await createProvider(config);
57
+ const search = new EnhancedSemanticSearch({
58
+ ...(provider ? { provider } : {}),
43
59
  minSimilarity: config.minSimilarity,
44
60
  model: config.model,
45
61
  cacheDir: config.cacheDir,
62
+ autoSave: true,
63
+ storePath: config.storePath,
64
+ autoChunk: config.autoChunk,
65
+ deduplicateExact: config.deduplicateExact,
66
+ deduplicateSimilarity: config.deduplicateSimilarity,
67
+ temporalBoost: config.temporalBoost,
68
+ verbose: config.verbose,
46
69
  });
70
+ async function initWithRetry(maxRetries = 3) {
71
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
72
+ try {
73
+ if (config.verbose) {
74
+ console.error(`[Init] Attempt ${attempt}/${maxRetries}`);
75
+ }
76
+ await search.init();
77
+ if (config.verbose) {
78
+ console.error(`[Init] Loaded ${search.size()} documents`);
79
+ }
80
+ return;
81
+ }
82
+ catch (err) {
83
+ if (attempt === maxRetries) {
84
+ console.error('[Init] Failed after', maxRetries, 'attempts. Internet required on first run (~25MB download).', err);
85
+ throw err;
86
+ }
87
+ console.error(`[Init] Retry in 2s...`, err);
88
+ await new Promise((r) => setTimeout(r, 2000));
89
+ }
90
+ }
91
+ }
47
92
  try {
48
- await search.init();
93
+ await initWithRetry();
49
94
  }
50
- catch (err) {
51
- console.error('Failed to load embedding model.', 'An internet connection is required on first run to download the model (~25MB).', err);
95
+ catch {
52
96
  process.exit(1);
53
97
  }
54
- // Load persisted index
55
- if (existsSync(config.storePath)) {
56
- try {
57
- const raw = await readFile(config.storePath, 'utf-8');
58
- const data = JSON.parse(raw);
59
- if (Array.isArray(data)) {
60
- search.import(data);
98
+ class OpQueue {
99
+ queue = Promise.resolve();
100
+ async run(fn) {
101
+ const prev = this.queue;
102
+ let resolve;
103
+ let reject;
104
+ this.queue = new Promise((res, rej) => {
105
+ resolve = res;
106
+ reject = rej;
107
+ });
108
+ try {
109
+ await prev;
110
+ const result = await fn();
111
+ resolve(result);
112
+ return result;
113
+ }
114
+ catch (err) {
115
+ reject(err);
116
+ metrics.errors++;
117
+ throw err;
61
118
  }
62
- }
63
- catch (err) {
64
- console.error(`Warning: Failed to load store from ${config.storePath}:`, err);
65
119
  }
66
120
  }
67
- async function persist() {
68
- const dir = dirname(config.storePath);
69
- if (!existsSync(dir)) {
70
- await mkdir(dir, { recursive: true });
121
+ const opQueue = new OpQueue();
122
+ const server = new McpServer({ name: 'mcp-semantic-search-enhanced', version: '0.2.0' }, { capabilities: { logging: {} } });
123
+ server.registerTool('semantic_health', {
124
+ title: 'Health Check',
125
+ description: 'Server status, metrics, and configuration',
126
+ inputSchema: z.object({}),
127
+ }, async () => {
128
+ try {
129
+ await search.search('test', { limit: 1 });
130
+ const uptime = Math.floor((Date.now() - metrics.startTime) / 1000);
131
+ const uptimeStr = uptime < 60 ? `${uptime}s` : uptime < 3600 ? `${Math.floor(uptime / 60)}m` : `${Math.floor(uptime / 3600)}h ${Math.floor((uptime % 3600) / 60)}m`;
132
+ return {
133
+ content: [{
134
+ type: 'text',
135
+ text: [
136
+ '✅ Healthy',
137
+ '',
138
+ '📊 Metrics:',
139
+ ` Documents: ${search.size()}`,
140
+ ` Searches: ${metrics.searches}`,
141
+ ` Added: ${metrics.documentsAdded}`,
142
+ ` Removed: ${metrics.documentsRemoved}`,
143
+ ` Errors: ${metrics.errors}`,
144
+ ` Uptime: ${uptimeStr}`,
145
+ '',
146
+ '⚙️ Config:',
147
+ ` Provider: ${config.provider}`,
148
+ ` Model: ${config.provider === 'bedrock' ? config.bedrockModel : config.model}`,
149
+ ` ${config.provider === 'bedrock' ? `Region: ${config.bedrockRegion}` : `Cache: ${config.cacheDir}`}`,
150
+ ` Store: ${config.storePath}`,
151
+ ` Min similarity: ${config.minSimilarity}`,
152
+ ` Auto-chunk: ${config.autoChunk}`,
153
+ ` Dedup: exact=${config.deduplicateExact}, fuzzy=${config.deduplicateSimilarity}`,
154
+ ` Temporal boost: ${config.temporalBoost}`,
155
+ ].join('\n'),
156
+ }],
157
+ };
158
+ }
159
+ catch (err) {
160
+ return {
161
+ content: [{
162
+ type: 'text',
163
+ text: `❌ Unhealthy: ${err instanceof Error ? err.message : String(err)}`,
164
+ }],
165
+ };
71
166
  }
72
- await writeFile(config.storePath, JSON.stringify(search.export()));
73
- }
74
- // --- MCP Server ---
75
- const server = new McpServer({
76
- name: 'mcp-semantic-search',
77
- version: '0.1.0',
78
- }, {
79
- capabilities: {
80
- logging: {},
81
- },
82
167
  });
83
- // Tool: Semantic search
84
168
  server.registerTool('semantic_search', {
85
169
  title: 'Semantic Search',
86
- description: 'Search indexed documents by meaning. Finds relevant content even when the wording differs from the query. Use this to recall past decisions, find related code patterns, or look up previously indexed context.',
170
+ description: 'Search by meaning with optional metadata filters',
87
171
  inputSchema: z.object({
88
- query: z.string().describe('Natural language search query'),
89
- limit: z
90
- .number()
91
- .optional()
92
- .default(5)
93
- .describe('Maximum number of results to return'),
172
+ query: z.string().describe('Search query'),
173
+ limit: z.number().optional().default(5).describe('Max results'),
174
+ minSimilarity: z.number().optional().describe('Min score (0-1)'),
175
+ kind: z.string().optional().describe('Filter by metadata.kind'),
176
+ tags: z.array(z.string()).optional().describe('Filter by metadata.tags'),
177
+ since: z.string().optional().describe('Filter by metadata.timestamp >= ISO date'),
94
178
  }),
95
- }, async ({ query, limit }) => {
96
- const results = await search.search(query, { limit });
97
- if (results.length === 0) {
179
+ }, async ({ query, limit, minSimilarity, kind, tags, since }) => {
180
+ return opQueue.run(async () => {
181
+ const startTime = Date.now();
182
+ const results = await search.search(query, {
183
+ limit,
184
+ ...(minSimilarity !== undefined && { minSimilarity }),
185
+ filter: (meta) => {
186
+ if (kind && meta?.kind !== kind)
187
+ return false;
188
+ if (tags && (!meta?.tags || !tags.some((t) => meta.tags?.includes(t))))
189
+ return false;
190
+ if (since && meta?.timestamp && meta.timestamp < Date.parse(since))
191
+ return false;
192
+ return true;
193
+ },
194
+ });
195
+ metrics.searches++;
196
+ const elapsed = Date.now() - startTime;
197
+ if (results.length === 0) {
198
+ return {
199
+ content: [{
200
+ type: 'text',
201
+ text: `🔍 No results for "${query}" (${elapsed}ms)`,
202
+ }],
203
+ };
204
+ }
205
+ const formatted = results
206
+ .map((r, i) => {
207
+ const preview = r.text.substring(0, 200) + (r.text.length > 200 ? '...' : '');
208
+ const metaStr = r.metadata && Object.keys(r.metadata).length > 0 ? `\n 📎 ${JSON.stringify(r.metadata)}` : '';
209
+ return `${i + 1}. [${(r.similarity * 100).toFixed(0)}%] ${preview}${metaStr}`;
210
+ })
211
+ .join('\n\n');
98
212
  return {
99
- content: [{ type: 'text', text: 'No relevant results found.' }],
213
+ content: [{
214
+ type: 'text',
215
+ text: `🔍 Found ${results.length} in ${elapsed}ms:\n\n${formatted}`,
216
+ }],
100
217
  };
101
- }
102
- const formatted = results
103
- .map((r, i) => `${i + 1}. [${(r.similarity * 100).toFixed(0)}% match] ${r.text}` +
104
- (r.metadata && Object.keys(r.metadata).length > 0
105
- ? `\n metadata: ${JSON.stringify(r.metadata)}`
106
- : ''))
107
- .join('\n\n');
108
- return {
109
- content: [
110
- { type: 'text', text: `Found ${results.length} result(s):\n\n${formatted}` },
111
- ],
112
- };
218
+ });
113
219
  });
114
- // Tool: Index a document
115
220
  server.registerTool('semantic_index', {
116
221
  title: 'Index Document',
117
- description: 'Add a document to the semantic search index for later recall. Use this to remember decisions, patterns, file summaries, conventions, debugging insights, or any context worth recalling later. Documents persist across sessions.',
222
+ description: 'Add document to search index (auto-chunks, deduplicates, persists)',
118
223
  inputSchema: z.object({
119
- id: z
120
- .string()
121
- .describe('Unique document ID. Use descriptive IDs like "adr-012", "auth-pattern", "deploy-steps"'),
122
- text: z.string().describe('The text content to index and make searchable'),
123
- metadata: z
124
- .record(z.string())
125
- .optional()
126
- .describe('Optional key-value metadata (e.g. {"kind": "decision", "date": "2026-02-22"})'),
224
+ id: z.string().describe('Unique ID (e.g., "auth-pattern", "adr-012")'),
225
+ text: z.string().describe('Content to index'),
226
+ metadata: z.record(z.union([z.string(), z.number(), z.boolean(), z.array(z.string())])).optional().describe('Optional metadata'),
127
227
  }),
128
228
  }, async ({ id, text, metadata }) => {
129
- await search.addDocument({ id, text, metadata });
130
- await persist();
131
- return {
132
- content: [
133
- {
134
- type: 'text',
135
- text: `Indexed "${id}" (${search.size()} total documents in store)`,
136
- },
137
- ],
138
- };
229
+ return opQueue.run(async () => {
230
+ const startTime = Date.now();
231
+ await search.addDocument({ id, text, metadata: metadata });
232
+ metrics.documentsAdded++;
233
+ const elapsed = Date.now() - startTime;
234
+ return {
235
+ content: [{
236
+ type: 'text',
237
+ text: [
238
+ `✅ Indexed "${id}" (${elapsed}ms)`,
239
+ `📊 ${search.size()} documents total`,
240
+ `💾 Saved to ${config.storePath}`,
241
+ `🔍 Test: semantic_search("${id}")`,
242
+ ].join('\n'),
243
+ }],
244
+ };
245
+ });
139
246
  });
140
- // Tool: Batch index multiple documents
141
247
  server.registerTool('semantic_index_batch', {
142
- title: 'Batch Index Documents',
143
- description: 'Add multiple documents to the index at once. More efficient than indexing one at a time.',
248
+ title: 'Batch Index',
249
+ description: 'Add multiple documents at once',
144
250
  inputSchema: z.object({
145
251
  documents: z.array(z.object({
146
- id: z.string().describe('Unique document ID'),
147
- text: z.string().describe('Text content to index'),
148
- metadata: z
149
- .record(z.string())
150
- .optional()
151
- .describe('Optional key-value metadata'),
152
- })).describe('Array of documents to index'),
252
+ id: z.string(),
253
+ text: z.string(),
254
+ metadata: z.record(z.union([z.string(), z.number(), z.boolean(), z.array(z.string())])).optional(),
255
+ })),
153
256
  }),
154
257
  }, async ({ documents }) => {
155
- await search.addDocuments(documents);
156
- await persist();
157
- return {
158
- content: [
159
- {
160
- type: 'text',
161
- text: `Indexed ${documents.length} documents (${search.size()} total in store)`,
162
- },
163
- ],
164
- };
258
+ return opQueue.run(async () => {
259
+ const startTime = Date.now();
260
+ await search.addDocuments(documents.map((d) => ({ ...d, metadata: d.metadata })));
261
+ metrics.documentsAdded += documents.length;
262
+ const elapsed = Date.now() - startTime;
263
+ return {
264
+ content: [{
265
+ type: 'text',
266
+ text: [
267
+ `✅ Indexed ${documents.length} documents (${elapsed}ms)`,
268
+ ` ${Math.round(documents.length / (elapsed / 1000))}/sec`,
269
+ `📊 ${search.size()} documents total`,
270
+ ].join('\n'),
271
+ }],
272
+ };
273
+ });
165
274
  });
166
- // Tool: Remove a document
167
275
  server.registerTool('semantic_remove', {
168
276
  title: 'Remove Document',
169
- description: 'Remove a document from the semantic search index by its ID.',
277
+ description: 'Delete by ID',
170
278
  inputSchema: z.object({
171
- id: z.string().describe('Document ID to remove'),
279
+ id: z.string(),
172
280
  }),
173
281
  }, async ({ id }) => {
174
- const removed = search.remove(id);
175
- if (removed)
176
- await persist();
177
- return {
178
- content: [
179
- {
180
- type: 'text',
181
- text: removed
182
- ? `Removed "${id}" (${search.size()} documents remaining)`
183
- : `Document "${id}" not found in index`,
184
- },
185
- ],
186
- };
282
+ return opQueue.run(async () => {
283
+ const removed = await search.remove(id);
284
+ if (removed) {
285
+ metrics.documentsRemoved++;
286
+ }
287
+ return {
288
+ content: [{
289
+ type: 'text',
290
+ text: removed
291
+ ? `✅ Removed "${id}"\n📊 ${search.size()} remaining`
292
+ : `⚠️ "${id}" not found`,
293
+ }],
294
+ };
295
+ });
187
296
  });
188
- // Tool: Get index stats
189
297
  server.registerTool('semantic_stats', {
190
298
  title: 'Index Stats',
191
- description: 'Get information about the semantic search index: document count and storage location.',
299
+ description: 'Detailed index information',
192
300
  inputSchema: z.object({}),
193
301
  }, async () => ({
194
- content: [
195
- {
302
+ content: [{
196
303
  type: 'text',
197
304
  text: [
198
- `Documents indexed: ${search.size()}`,
199
- `Store location: ${config.storePath}`,
200
- `Model: ${config.model}`,
305
+ '📊 Index Stats',
306
+ '',
307
+ `Documents: ${search.size()}`,
308
+ `Provider: ${config.provider}`,
309
+ `Model: ${config.provider === 'bedrock' ? config.bedrockModel : config.model}`,
310
+ `Store: ${config.storePath}`,
201
311
  `Min similarity: ${config.minSimilarity}`,
312
+ '',
313
+ 'Features:',
314
+ ` Auto-chunk: ${config.autoChunk}`,
315
+ ` Dedup (exact): ${config.deduplicateExact}`,
316
+ ` Dedup (fuzzy): ${config.deduplicateSimilarity > 0 ? config.deduplicateSimilarity : 'off'}`,
317
+ ` Temporal boost: ${config.temporalBoost}`,
318
+ '',
319
+ 'Usage:',
320
+ ` Searches: ${metrics.searches}`,
321
+ ` Added: ${metrics.documentsAdded}`,
322
+ ` Removed: ${metrics.documentsRemoved}`,
323
+ ` Errors: ${metrics.errors}`,
202
324
  ].join('\n'),
203
- },
204
- ],
325
+ }],
205
326
  }));
206
- // Tool: Clear all documents
207
327
  server.registerTool('semantic_clear', {
208
328
  title: 'Clear Index',
209
- description: 'Remove ALL documents from the semantic search index. This is irreversible.',
329
+ description: 'Remove all documents (irreversible)',
210
330
  inputSchema: z.object({
211
- confirm: z
212
- .boolean()
213
- .describe('Must be true to confirm clearing all documents'),
331
+ confirm: z.boolean().describe('Must be true'),
214
332
  }),
215
333
  }, async ({ confirm }) => {
216
334
  if (!confirm) {
217
335
  return {
218
- content: [
219
- {
336
+ content: [{
220
337
  type: 'text',
221
- text: 'Clear cancelled. Set confirm: true to clear all documents.',
222
- },
223
- ],
338
+ text: '⚠️ Cancelled. Set confirm: true to proceed',
339
+ }],
224
340
  };
225
341
  }
226
- const count = search.size();
227
- search.clear();
228
- await persist();
229
- return {
230
- content: [
231
- {
232
- type: 'text',
233
- text: `Cleared ${count} documents from the index.`,
234
- },
235
- ],
236
- };
342
+ return opQueue.run(async () => {
343
+ const count = search.size();
344
+ await search.clear();
345
+ return {
346
+ content: [{
347
+ type: 'text',
348
+ text: `✅ Cleared ${count} documents\n💾 Saved to ${config.storePath}`,
349
+ }],
350
+ };
351
+ });
237
352
  });
238
- // --- Start server ---
239
353
  const transport = new StdioServerTransport();
240
354
  await server.connect(transport);
355
+ if (config.verbose) {
356
+ console.error('[Server] Ready');
357
+ }
241
358
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzE,CAAC;IAED,SAAS,OAAO,CAAC,IAAY,EAAE,QAAiB;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrG,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAC7F,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC7F,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC;QACnF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC;QAC1F,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;QACtC,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;QACpD,qBAAqB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAC9H,aAAa,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;QAC9C,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;QAElC,4BAA4B;QAC5B,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAA+B;QACjH,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC;QAC/F,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;QAC/G,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzF,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;KACrH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAoC;IAChE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC,CAAC,8BAA8B;IAClD,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;IAElF,OAAO,IAAI,eAAe,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,aAAa;QAC5B,OAAO,EAAE,MAAM,CAAC,YAAY;QAC5B,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,SAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE;QACtD,eAAe,EAAE,MAAM,CAAC,OAAO;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAU3B,MAAM,OAAO,GAAY;IACvB,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;CACtB,CAAC;AAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;AAE9C,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC;IACxC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;IACzC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnD,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CAAC,CAAC;AAEH,KAAK,UAAU,aAAa,CAAC,UAAU,GAAG,CAAC;IACzC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,UAAU,EAAE,4DAA4D,EAAE,GAAG,CAAC,CAAC;gBACpH,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,CAAC;IACH,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAAC,MAAM,CAAC;IACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO;IACH,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAElC,KAAK,CAAC,GAAG,CAAI,EAAoB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,OAAwD,CAAC;QAC7D,IAAI,MAA4C,CAAC;QAEjD,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1C,OAAO,GAAG,GAAU,CAAC;YACrB,MAAM,GAAG,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC;YACX,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAO,CAAC,GAAG,CAAC,CAAC;YACb,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,OAAO,EAAE,EAC1D,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAClC,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;IACE,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,2CAA2C;IACxD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CAC1B,EACD,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;QAEpK,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,WAAW;wBACX,EAAE;wBACF,aAAa;wBACb,iBAAiB,MAAM,CAAC,IAAI,EAAE,EAAE;wBAChC,gBAAgB,OAAO,CAAC,QAAQ,EAAE;wBAClC,aAAa,OAAO,CAAC,cAAc,EAAE;wBACrC,eAAe,OAAO,CAAC,gBAAgB,EAAE;wBACzC,cAAc,OAAO,CAAC,MAAM,EAAE;wBAC9B,cAAc,SAAS,EAAE;wBACzB,EAAE;wBACF,YAAY;wBACZ,gBAAgB,MAAM,CAAC,QAAQ,EAAE;wBACjC,aAAa,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;wBACjF,MAAM,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,QAAQ,EAAE,EAAE;wBACvG,aAAa,MAAM,CAAC,SAAS,EAAE;wBAC/B,sBAAsB,MAAM,CAAC,aAAa,EAAE;wBAC5C,kBAAkB,MAAM,CAAC,SAAS,EAAE;wBACpC,mBAAmB,MAAM,CAAC,gBAAgB,WAAW,MAAM,CAAC,qBAAqB,EAAE;wBACnF,sBAAsB,MAAM,CAAC,aAAa,EAAE;qBAC7C,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBACzE,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;IACE,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,kDAAkD;IAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC/D,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAClF,CAAC;CACH,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YACzC,KAAK;YACL,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,CAAC;YACrD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;gBAC9C,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACrF,IAAI,KAAK,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjF,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,sBAAsB,KAAK,MAAM,OAAO,KAAK;qBACpD,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,OAAO;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChH,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;QAChF,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,YAAY,OAAO,CAAC,MAAM,OAAO,OAAO,UAAU,SAAS,EAAE;iBACpE,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;IACE,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,oEAAoE;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjI,CAAC;CACH,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAe,EAAE,CAAC,CAAC;QAElE,OAAO,CAAC,cAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEvC,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,cAAc,EAAE,MAAM,OAAO,KAAK;wBAClC,MAAM,MAAM,CAAC,IAAI,EAAE,kBAAkB;wBACrC,eAAe,MAAM,CAAC,SAAS,EAAE;wBACjC,6BAA6B,EAAE,IAAI;qBACpC,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;IACE,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,gCAAgC;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SACnG,CAAC,CAAC;KACJ,CAAC;CACH,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IACtB,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzF,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC,MAAM,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEvC,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,aAAa,SAAS,CAAC,MAAM,eAAe,OAAO,KAAK;wBACxD,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM;wBAC3D,MAAM,MAAM,CAAC,IAAI,EAAE,kBAAkB;qBACtC,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;IACE,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACf,CAAC;CACH,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACf,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,OAAO;wBACX,CAAC,CAAC,cAAc,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,YAAY;wBACpD,CAAC,CAAC,OAAO,EAAE,aAAa;iBAC3B,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;IACE,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CAC1B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,CAAC;YACR,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE;gBACJ,gBAAgB;gBAChB,EAAE;gBACF,cAAc,MAAM,CAAC,IAAI,EAAE,EAAE;gBAC7B,aAAa,MAAM,CAAC,QAAQ,EAAE;gBAC9B,UAAU,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;gBAC9E,UAAU,MAAM,CAAC,SAAS,EAAE;gBAC5B,mBAAmB,MAAM,CAAC,aAAa,EAAE;gBACzC,EAAE;gBACF,WAAW;gBACX,kBAAkB,MAAM,CAAC,SAAS,EAAE;gBACpC,qBAAqB,MAAM,CAAC,gBAAgB,EAAE;gBAC9C,qBAAqB,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,EAAE;gBAC9F,sBAAsB,MAAM,CAAC,aAAa,EAAE;gBAC5C,EAAE;gBACF,QAAQ;gBACR,gBAAgB,OAAO,CAAC,QAAQ,EAAE;gBAClC,aAAa,OAAO,CAAC,cAAc,EAAE;gBACrC,eAAe,OAAO,CAAC,gBAAgB,EAAE;gBACzC,cAAc,OAAO,CAAC,MAAM,EAAE;aAC/B,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC;CACH,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;IACE,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,qCAAqC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC9C,CAAC;CACH,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4CAA4C;iBACnD,CAAC;SACH,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,aAAa,KAAK,2BAA2B,MAAM,CAAC,SAAS,EAAE;iBACtE,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nacho-labs/mcp-semantic-search",
3
- "version": "0.1.1",
4
- "description": "MCP server for local semantic search — give Claude Code, Cursor, and other AI tools persistent memory powered by nachos-embeddings",
3
+ "version": "0.3.0",
4
+ "description": "MCP server for semantic search — give Claude Code, Cursor, and other AI tools persistent memory via local Transformers.js or AWS Bedrock embeddings",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -45,7 +45,9 @@
45
45
  "claude-code",
46
46
  "ai-memory",
47
47
  "local",
48
- "privacy"
48
+ "privacy",
49
+ "bedrock",
50
+ "aws"
49
51
  ],
50
52
  "author": "Nate Richardson <hello@naterichardson.com> (https://naterichardson.com)",
51
53
  "license": "MIT",
@@ -58,10 +60,14 @@
58
60
  },
59
61
  "dependencies": {
60
62
  "@modelcontextprotocol/sdk": "^1.0.0",
61
- "@nacho-labs/nachos-embeddings": "^0.2.0",
63
+ "@nacho-labs/nachos-embeddings": "^0.4.0",
62
64
  "zod": "^3.23.0"
63
65
  },
66
+ "optionalDependencies": {
67
+ "@aws-sdk/client-bedrock-runtime": "^3.0.0"
68
+ },
64
69
  "devDependencies": {
70
+ "@aws-sdk/client-bedrock-runtime": "^3.0.0",
65
71
  "@types/node": "^22.0.0",
66
72
  "typescript": "^5.7.0"
67
73
  }