@steno-ai/mcp 0.1.17 → 0.1.18

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.
@@ -4,6 +4,10 @@
4
4
  */
5
5
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import type { StorageAdapter, EmbeddingAdapter, LLMAdapter } from '@steno-ai/engine';
7
+ export interface CodebaseScopeConfig {
8
+ scopeId: string;
9
+ domainEntityTypes?: import('@steno-ai/engine').DomainEntityType[];
10
+ }
7
11
  export interface LocalServerConfig {
8
12
  storage: StorageAdapter;
9
13
  embedding: EmbeddingAdapter;
@@ -17,6 +21,8 @@ export interface LocalServerConfig {
17
21
  sessionTimeoutMs?: number;
18
22
  /** Optional field decryptor for direct Supabase queries that bypass the adapter. */
19
23
  decryptField?: (ciphertext: string) => string;
24
+ /** Optional codebase scope — enables steno_index_repo, steno_codebase_recall, steno_architecture */
25
+ codebase?: CodebaseScopeConfig;
20
26
  }
21
27
  export declare function createLocalServer(config: LocalServerConfig): McpServer;
22
28
  //# sourceMappingURL=local-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../src/local-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAkDD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CA85BtE"}
1
+ {"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../src/local-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAErF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;CACnE;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,oGAAoG;IACpG,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AA2ED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAkpCtE"}
@@ -14,6 +14,30 @@ function getEmbeddingCache() {
14
14
  _embeddingCache = new Map();
15
15
  return _embeddingCache;
16
16
  }
17
+ /** Full search result cache — caches complete recall results for 60s */
18
+ const _resultCache = new Map();
19
+ const RESULT_CACHE_TTL_MS = 60_000; // 60 seconds
20
+ function getCachedResult(query, limit) {
21
+ const key = `result:${query}:${limit}`;
22
+ const entry = _resultCache.get(key);
23
+ if (!entry)
24
+ return null;
25
+ if (Date.now() - entry.ts > RESULT_CACHE_TTL_MS) {
26
+ _resultCache.delete(key);
27
+ return null;
28
+ }
29
+ return entry.results;
30
+ }
31
+ function setCachedResult(query, limit, results) {
32
+ const key = `result:${query}:${limit}`;
33
+ _resultCache.set(key, { results, ts: Date.now() });
34
+ // Evict if too large
35
+ if (_resultCache.size > 200) {
36
+ const oldest = [..._resultCache.entries()].sort((a, b) => a[1].ts - b[1].ts).slice(0, 50);
37
+ for (const [k] of oldest)
38
+ _resultCache.delete(k);
39
+ }
40
+ }
17
41
  /** Simple cache adapter that wraps a Map for embedding caching */
18
42
  const embeddingCacheAdapter = {
19
43
  async get(key) {
@@ -71,6 +95,35 @@ CRITICAL RULES:
71
95
  5. Steno memory persists across ALL conversations — it knows things from past sessions that your conversation history does not.
72
96
  6. Use steno_update_status to change priority/roadmap item status when the user starts, completes, or gets blocked on a task.` },
73
97
  });
98
+ // Pre-warm embedding cache — fire common queries in background so first recall is fast
99
+ // This runs async and doesn't block server startup
100
+ (async () => {
101
+ try {
102
+ const warmupQueries = [
103
+ 'user profile preferences habits patterns',
104
+ 'user goals plans priorities roadmap',
105
+ 'user relationships people friends team cofounders',
106
+ 'user schedule meetings events calendar',
107
+ 'user emotions feelings energy coping strategies',
108
+ ];
109
+ const t0 = Date.now();
110
+ // Batch-embed all warmup queries in one API call
111
+ const embeddings = await config.embedding.embedBatch(warmupQueries);
112
+ // Store each in cache
113
+ for (let i = 0; i < warmupQueries.length; i++) {
114
+ const text = warmupQueries[i];
115
+ const encoded = new TextEncoder().encode(text);
116
+ const hash = await crypto.subtle.digest('SHA-256', encoded);
117
+ const hashHex = Array.from(new Uint8Array(hash)).map(b => b.toString(16).padStart(2, '0')).join('').slice(0, 16);
118
+ const key = `emb:${config.embedding.model}:${hashHex}`;
119
+ await embeddingCacheAdapter.set(key, embeddings[i]);
120
+ }
121
+ console.error(`[steno] Pre-warmed ${warmupQueries.length} embedding queries in ${Date.now() - t0}ms`);
122
+ }
123
+ catch (err) {
124
+ console.error('[steno] Pre-warm failed (non-fatal):', err instanceof Error ? err.message : err);
125
+ }
126
+ })();
74
127
  // Lazy import to avoid loading heavy modules at startup
75
128
  let _search = null;
76
129
  let _pipeline = null;
@@ -298,21 +351,35 @@ CRITICAL RULES:
298
351
  query: z.string().describe('What to search for in memory'),
299
352
  limit: z.number().optional().describe('Max results (default 10)'),
300
353
  max_tokens: z.number().optional().describe('Approximate token budget for the response. Results will be truncated from lowest-scored to fit.'),
301
- }, async ({ query, limit, max_tokens }) => {
354
+ fast: z.boolean().optional().describe('Fast mode: vector+keyword only, no graph/triggers/reranking. Sub-300ms. Use for simple lookups.'),
355
+ scope: z.enum(['user', 'codebase']).optional().describe('Memory scope. Default: user (personal). Use codebase for repo/project knowledge.'),
356
+ }, async ({ query, limit, max_tokens, fast, scope: queryScope }) => {
302
357
  // Auto-flush any pending buffered messages before searching
303
358
  const key = bufferKey();
304
359
  const active = activeSessions.get(key);
305
360
  if (active && active.pendingCount > 0) {
306
361
  await flushSession(key);
307
362
  }
308
- const searchFn = await getSearch();
309
- const results = await searchFn({ storage: config.storage, embedding: config.embedding, cache: embeddingCacheAdapter }, {
310
- query,
311
- tenantId: config.tenantId,
312
- scope: config.scope,
313
- scopeId: config.scopeId,
314
- limit: limit ?? 10,
315
- });
363
+ // Resolve scope default to user, allow codebase if configured
364
+ const effectiveScope = queryScope === 'codebase' && config.codebase ? 'codebase' : config.scope;
365
+ const effectiveScopeId = effectiveScope === 'codebase' && config.codebase ? config.codebase.scopeId : config.scopeId;
366
+ // Check result cache first (60s TTL)
367
+ const effectiveLimit = limit ?? 10;
368
+ const cacheKey = `${effectiveScope}:${query}`;
369
+ const cached = getCachedResult(cacheKey, effectiveLimit);
370
+ const results = cached ?? await (async () => {
371
+ const searchFn = await getSearch();
372
+ const r = await searchFn({ storage: config.storage, embedding: config.embedding, cache: embeddingCacheAdapter }, {
373
+ query,
374
+ tenantId: config.tenantId,
375
+ scope: effectiveScope,
376
+ scopeId: effectiveScopeId,
377
+ limit: effectiveLimit,
378
+ fast: fast ?? false,
379
+ });
380
+ setCachedResult(cacheKey, effectiveLimit, r);
381
+ return r;
382
+ })();
316
383
  if (results.results.length === 0) {
317
384
  return { content: [{ type: 'text', text: 'No memories found.' }] };
318
385
  }
@@ -351,7 +418,7 @@ CRITICAL RULES:
351
418
  }
352
419
  // Build dependency map — ONE batch query for ALL dependency edges in this tenant
353
420
  // Include ALL priority fact IDs so edges for injected priorities aren't skipped
354
- const factIdSet = new Set(results.results.map(r => r.fact.id));
421
+ const factIdSet = new Set(results.results.map((r) => r.fact.id));
355
422
  for (const [factId] of priorityLabels)
356
423
  factIdSet.add(factId);
357
424
  const depMap = new Map();
@@ -441,47 +508,52 @@ CRITICAL RULES:
441
508
  }
442
509
  }
443
510
  catch { /* batch edge lookup failed */ }
444
- // Inject missing priority facts that are referenced by edges but not in recall results
445
- // This ensures Priority #1 (root node) always shows up when its children are recalled
446
- const resultFactIds = new Set(results.results.map(r => r.fact.id));
447
- try {
448
- const { data: allPriorities } = await config.storage.client
449
- .from('facts')
450
- .select('*')
451
- .eq('tenant_id', config.tenantId)
452
- .not('metadata->priority_order', 'is', null);
453
- if (allPriorities) {
454
- for (const pf of allPriorities) {
455
- if (!resultFactIds.has(pf.id) && (depMap.has(pf.id) || priorityLabels.has(pf.id))) {
456
- // This priority is referenced but not in results — inject it
457
- // Decrypt content fields that bypass the adapter
458
- if (pf.content)
459
- pf.content = dec(pf.content) ?? pf.content;
460
- if (pf.source_chunk)
461
- pf.source_chunk = dec(pf.source_chunk) ?? pf.source_chunk;
462
- if (pf.original_content)
463
- pf.original_content = dec(pf.original_content) ?? pf.original_content;
464
- const camelFact = Object.fromEntries(Object.entries(pf).map(([k, v]) => [k.replace(/_([a-z])/g, (_, c) => c.toUpperCase()), v]));
465
- results.results.push({
466
- fact: camelFact,
467
- score: 0.1, // Low score since it wasn't directly matched
468
- signals: { vectorScore: 0, keywordScore: 0, graphScore: 0.5, recencyScore: 0, salienceScore: 0, temporalScore: 0 },
469
- });
511
+ // Only inject and boost priority facts when the query is actually about priorities/roadmap
512
+ const priorityKeywords = ['priority', 'priorities', 'roadmap', 'my plan', 'my plans', 'steno plan', 'what am i working on', 'what should i work on', 'backlog', 'next up', 'what are my priorities'];
513
+ const lowerQuery = (query ?? '').toLowerCase();
514
+ const isPriorityQuery = priorityKeywords.some(kw => lowerQuery.includes(kw));
515
+ // Inject missing priority facts only when query is about priorities
516
+ const resultFactIds = new Set(results.results.map((r) => r.fact.id));
517
+ if (isPriorityQuery) {
518
+ try {
519
+ const { data: allPriorities } = await config.storage.client
520
+ .from('facts')
521
+ .select('*')
522
+ .eq('tenant_id', config.tenantId)
523
+ .not('metadata->priority_order', 'is', null);
524
+ if (allPriorities) {
525
+ for (const pf of allPriorities) {
526
+ if (!resultFactIds.has(pf.id) && (depMap.has(pf.id) || priorityLabels.has(pf.id))) {
527
+ if (pf.content)
528
+ pf.content = dec(pf.content) ?? pf.content;
529
+ if (pf.source_chunk)
530
+ pf.source_chunk = dec(pf.source_chunk) ?? pf.source_chunk;
531
+ if (pf.original_content)
532
+ pf.original_content = dec(pf.original_content) ?? pf.original_content;
533
+ const camelFact = Object.fromEntries(Object.entries(pf).map(([k, v]) => [k.replace(/_([a-z])/g, (_, c) => c.toUpperCase()), v]));
534
+ results.results.push({
535
+ fact: camelFact,
536
+ score: 0.1,
537
+ signals: { vectorScore: 0, keywordScore: 0, graphScore: 0.5, recencyScore: 0, salienceScore: 0, temporalScore: 0 },
538
+ });
539
+ }
470
540
  }
471
541
  }
472
542
  }
543
+ catch { /* injection failed */ }
473
544
  }
474
- catch { /* injection failed */ }
475
- // Sort results: priorities first (by priority_order), then regular memories
545
+ // Sort: priorities first ONLY when query is about priorities, otherwise pure score ranking
476
546
  const sortedResults = [...results.results].sort((a, b) => {
477
- const aOrder = a.fact.metadata?.priority_order;
478
- const bOrder = b.fact.metadata?.priority_order;
479
- if (aOrder && bOrder)
480
- return aOrder - bOrder;
481
- if (aOrder)
482
- return -1;
483
- if (bOrder)
484
- return 1;
547
+ if (isPriorityQuery) {
548
+ const aOrder = a.fact.metadata?.priority_order;
549
+ const bOrder = b.fact.metadata?.priority_order;
550
+ if (aOrder && bOrder)
551
+ return aOrder - bOrder;
552
+ if (aOrder)
553
+ return -1;
554
+ if (bOrder)
555
+ return 1;
556
+ }
485
557
  return b.score - a.score;
486
558
  });
487
559
  const enrichedLines = [];
@@ -841,6 +913,162 @@ CRITICAL RULES:
841
913
  ],
842
914
  };
843
915
  });
916
+ // ─── CODEBASE TOOLS (only registered if codebase scope is configured) ───
917
+ if (config.codebase) {
918
+ const codebaseScopeId = config.codebase.scopeId;
919
+ server.tool('steno_index_repo', 'Index a codebase into Steno memory. Walks the repo, parses manifests, analyzes structure, and extracts architectural facts. Use when starting work on a new repo or when the codebase has changed significantly.', {
920
+ repo_path: z.string().describe('Absolute path to the repository root'),
921
+ }, async ({ repo_path }) => {
922
+ try {
923
+ const { indexRepo } = await import('@steno-ai/codebase-indexer');
924
+ const pipeline = await getPipeline();
925
+ const t0 = Date.now();
926
+ const inputs = await indexRepo(repo_path, { tenantId: config.tenantId, scopeId: codebaseScopeId });
927
+ let totalFacts = 0;
928
+ for (const input of inputs) {
929
+ try {
930
+ const result = await pipeline({
931
+ storage: config.storage,
932
+ embedding: config.embedding,
933
+ cheapLLM: config.cheapLLM,
934
+ embeddingModel: config.embeddingModel,
935
+ embeddingDim: config.embeddingDim,
936
+ extractionTier: 'auto',
937
+ domainEntityTypes: config.codebase?.domainEntityTypes ?? config.domainEntityTypes,
938
+ mode: 'codebase',
939
+ }, {
940
+ tenantId: config.tenantId,
941
+ scope: 'codebase',
942
+ scopeId: codebaseScopeId,
943
+ inputType: input.inputType,
944
+ data: input.data,
945
+ });
946
+ totalFacts += result.factsCreated ?? 0;
947
+ }
948
+ catch (err) {
949
+ console.error(`[steno] Index extraction failed for input:`, err instanceof Error ? err.message : err);
950
+ }
951
+ }
952
+ const duration = Date.now() - t0;
953
+ return {
954
+ content: [{
955
+ type: 'text',
956
+ text: `Indexed ${repo_path} in ${(duration / 1000).toFixed(1)}s. Extracted ${inputs.length} inputs → ${totalFacts} facts stored.`,
957
+ }],
958
+ };
959
+ }
960
+ catch (err) {
961
+ return {
962
+ content: [{
963
+ type: 'text',
964
+ text: `Failed to index repo: ${err instanceof Error ? err.message : String(err)}`,
965
+ }],
966
+ };
967
+ }
968
+ });
969
+ server.tool('steno_index_file', 'Index a single file into codebase memory. Use for incremental updates when a specific file has changed.', {
970
+ repo_path: z.string().describe('Absolute path to the repository root'),
971
+ file_path: z.string().describe('Path to the file relative to repo root'),
972
+ content: z.string().describe('The file content'),
973
+ }, async ({ repo_path, file_path, content }) => {
974
+ try {
975
+ const { indexFile } = await import('@steno-ai/codebase-indexer');
976
+ const pipeline = await getPipeline();
977
+ const inputs = await indexFile(repo_path, file_path, content, { tenantId: config.tenantId, scopeId: codebaseScopeId });
978
+ let totalFacts = 0;
979
+ for (const input of inputs) {
980
+ try {
981
+ const result = await pipeline({
982
+ storage: config.storage,
983
+ embedding: config.embedding,
984
+ cheapLLM: config.cheapLLM,
985
+ embeddingModel: config.embeddingModel,
986
+ embeddingDim: config.embeddingDim,
987
+ extractionTier: 'auto',
988
+ domainEntityTypes: config.codebase?.domainEntityTypes ?? config.domainEntityTypes,
989
+ mode: 'codebase',
990
+ }, {
991
+ tenantId: config.tenantId,
992
+ scope: 'codebase',
993
+ scopeId: codebaseScopeId,
994
+ inputType: input.inputType,
995
+ data: input.data,
996
+ });
997
+ totalFacts += result.factsCreated ?? 0;
998
+ }
999
+ catch (err) {
1000
+ console.error(`[steno] File index extraction failed:`, err instanceof Error ? err.message : err);
1001
+ }
1002
+ }
1003
+ return {
1004
+ content: [{
1005
+ type: 'text',
1006
+ text: `Indexed ${file_path} → ${totalFacts} facts extracted.`,
1007
+ }],
1008
+ };
1009
+ }
1010
+ catch (err) {
1011
+ return {
1012
+ content: [{
1013
+ type: 'text',
1014
+ text: `Failed to index file: ${err instanceof Error ? err.message : String(err)}`,
1015
+ }],
1016
+ };
1017
+ }
1018
+ });
1019
+ server.tool('steno_architecture', 'Get a high-level architecture summary of the indexed codebase — packages, frameworks, key patterns, and dependencies. Use when you need to understand the project structure.', {}, async () => {
1020
+ try {
1021
+ const searchFn = await getSearch();
1022
+ const queries = [
1023
+ 'project architecture packages monorepo structure',
1024
+ 'frameworks dependencies technology stack',
1025
+ 'API patterns routes conventions',
1026
+ 'configuration build deploy settings',
1027
+ ];
1028
+ const allFacts = [];
1029
+ const seen = new Set();
1030
+ const results = await Promise.all(queries.map(q => searchFn({ storage: config.storage, embedding: config.embedding, cache: embeddingCacheAdapter }, {
1031
+ query: q,
1032
+ tenantId: config.tenantId,
1033
+ scope: 'codebase',
1034
+ scopeId: codebaseScopeId,
1035
+ limit: 5,
1036
+ fast: true,
1037
+ }).catch(() => ({ results: [] }))));
1038
+ for (const r of results) {
1039
+ for (const item of r.results || []) {
1040
+ if (!seen.has(item.fact.id)) {
1041
+ seen.add(item.fact.id);
1042
+ const content = config.decryptField ? (config.decryptField(item.fact.content) ?? item.fact.content) : item.fact.content;
1043
+ allFacts.push(`- ${content}`);
1044
+ }
1045
+ }
1046
+ }
1047
+ if (allFacts.length === 0) {
1048
+ return {
1049
+ content: [{
1050
+ type: 'text',
1051
+ text: 'No codebase architecture indexed yet. Use steno_index_repo to index a repository first.',
1052
+ }],
1053
+ };
1054
+ }
1055
+ return {
1056
+ content: [{
1057
+ type: 'text',
1058
+ text: `## Codebase Architecture\n\n${allFacts.join('\n')}`,
1059
+ }],
1060
+ };
1061
+ }
1062
+ catch (err) {
1063
+ return {
1064
+ content: [{
1065
+ type: 'text',
1066
+ text: `Failed to retrieve architecture: ${err instanceof Error ? err.message : String(err)}`,
1067
+ }],
1068
+ };
1069
+ }
1070
+ });
1071
+ }
844
1072
  return server;
845
1073
  }
846
1074
  //# sourceMappingURL=local-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-server.js","sourceRoot":"","sources":["../src/local-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-server.js","sourceRoot":"","sources":["../src/local-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,0CAA0C;AACzE,MAAM,eAAe,GAAG,CAAC,CAAC,CAAK,yBAAyB;AACxD,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEhE,qFAAqF;AACrF,IAAI,eAAe,GAA4D,IAAI,CAAC;AACpF,SAAS,iBAAiB;IACxB,IAAI,CAAC,eAAe;QAAE,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;IAClD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,wEAAwE;AACxE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAwC,CAAC;AACrE,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,aAAa;AAEjD,SAAS,eAAe,CAAC,KAAa,EAAE,KAAa;IACnD,MAAM,GAAG,GAAG,UAAU,KAAK,IAAI,KAAK,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAChD,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,KAAa,EAAE,OAAY;IACjE,MAAM,GAAG,GAAG,UAAU,KAAK,IAAI,KAAK,EAAE,CAAC;IACvC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnD,qBAAqB;IACrB,IAAI,YAAY,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,qBAAqB,GAAG;IAC5B,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,kBAAkB;QAClB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,SAAyB,CAAC;IACzC,CAAC;IACD,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ;QAChC,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAA4B,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5E,4DAA4D;QAC5D,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpF,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM;gBAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAW,IAAmB,iBAAiB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,KAAsB,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,KAAK,CAAC,MAAM,KAAmB,CAAC;IAChC,KAAK,CAAC,IAAI,KAAuB,OAAO,IAAI,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,qEAAqE;IACrE,MAAM,GAAG,GAAG,CAAC,KAAgC,EAA6B,EAAE;QAC1E,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACxE,MAAM,KAAK,GAAI,KAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,CAAC;YAAC,OAAO,MAAM,CAAC,YAAY,CAAC,KAAe,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IAC9E,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;QAChB,GAAI,EAAE,YAAY,EAAE;;;;;;;;8HAQsG,EAAU;KACrI,CAAC,CAAC;IAEH,uFAAuF;IACvF,mDAAmD;IACnD,CAAC,KAAK,IAAI,EAAE;QACV,IAAI,CAAC;YACH,MAAM,aAAa,GAAG;gBACpB,0CAA0C;gBAC1C,qCAAqC;gBACrC,mDAAmD;gBACnD,wCAAwC;gBACxC,iDAAiD;aAClD,CAAC;YACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,iDAAiD;YACjD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACpE,sBAAsB;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjH,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;gBACvD,MAAM,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,sBAAsB,aAAa,CAAC,MAAM,yBAAyB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACxG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,wDAAwD;IACxD,IAAI,OAAO,GAAoD,IAAI,CAAC;IACpE,IAAI,SAAS,GAAmE,IAAI,CAAC;IACrF,IAAI,yBAAyB,GAAsE,IAAI,CAAC;IAExG,KAAK,UAAU,SAAS;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC7C,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,UAAU,WAAW;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC7C,SAAS,GAAG,GAAG,CAAC,qBAAqB,CAAC;QACxC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC7C,yBAAyB,GAAG,GAAG,CAAC,wBAAwB,CAAC;QAC3D,CAAC;QACD,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,GAAwD,IAAI,CAAC;IAE5E,KAAK,UAAU,aAAa;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC7C,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC;QAC/B,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,8EAA8E;IAC9E,qEAAqE;IACrE,8EAA8E;IAC9E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;IAExD,+CAA+C;IAC/C,SAAS,SAAS;QAChB,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IAChE,CAAC;IAED,oFAAoF;IACpF,KAAK,UAAU,YAAY,CAAC,GAAW;QACrC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CACtD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAC7D,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACzC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtE,OAAO,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErD,OAAO,CAAC,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,wBAAwB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAEtG,MAAM,WAAW,GAAG,MAAM,WAAW,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B;gBACE,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,cAAc,EAAE,MAAM;gBACtB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC5C,EACD;gBACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,cAAc;gBACzB,IAAI,EAAE,aAAa;aACpB,CACF,CAAC;YAEF,MAAM,MAAM,CAAC,OAAO,CAAC,qBAAqB,CACxC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACvB,MAAM,CAAC,YAAY,CACpB,CAAC;YACF,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;YAExB,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,YAAY,WAAW,MAAM,CAAC,eAAe,cAAc,MAAM,CAAC,YAAY,QAAQ,CAAC,CAAC;QAC9I,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,gFAAgF;YAChF,6EAA6E;YAC7E,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,SAAS,aAAa,CAAC,GAAW;QAChC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,eAAe,EAAE,CAAC;YAC3C,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,EAAE,cAAc,CAAC,CAAC;IACrB,CAAC;IAED,mBAAmB;IACnB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,oSAAoS,EACpS;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KAC7E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;QAC1F,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;QAC7E,IAAI,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,qCAAqC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CACtD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,CACtC,CAAC;gBACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;oBAC/C,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;wBAC9D,OAAO,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;wBACtJ,IAAI,CAAC;4BACH,MAAM,YAAY,GAAG,MAAM,aAAa,EAAE,CAAC;4BAC3C,MAAM,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;wBACzF,CAAC;wBAAC,OAAO,MAAW,EAAE,CAAC;4BACrB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC;wBACnF,CAAC;wBACD,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC3B,MAAM,GAAG,SAAS,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;QAClD,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,SAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACxE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBACxG,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;gBAC5F,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,CAAC;YAED,MAAM,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC1D,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CACtD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,CACtC,CAAC;YACF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;YAEnC,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBACrC,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,UAAU;gBACnB,UAAU;aACX,CAAC,CAAC;YACH,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;YAC/E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QAClG,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,CAAC;QAEnB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,qBAAqB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,YAAY,IAAI,eAAe,sCAAsC;iBACzI,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,IAAI,CACT,aAAa,EACb,2IAA2I,EAC3I,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,EAAE,CAAC;QAC1F,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;QAClC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,KAAK,0CAA0C,EAAE,CAAC;SACvG,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,0LAA0L,EAC1L,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,aAAa,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACrG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,uBAAuB,CAAC;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,OAAO,aAAa,MAAM,EAAE;qBAC/D,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QACxG,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,qTAAqT,EACrT;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACjE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;QAC7I,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;QACxI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;KAC5I,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9D,4DAA4D;QAC5D,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,gEAAgE;QAChE,MAAM,cAAc,GAAG,UAAU,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAChG,MAAM,gBAAgB,GAAG,cAAc,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAErH,qCAAqC;QACrC,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,GAAG,cAAc,IAAI,KAAK,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE;YAC1C,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,MAAM,QAAQ,CACtB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,qBAA4B,EAAE,EAC7F;gBACE,KAAK;gBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,IAAI,IAAI,KAAK;aACpB,CACF,CAAC;YACF,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;QAED,gEAAgE;QAChE,8EAA8E;QAC9E,mFAAmF;QACnF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAO,MAAM,CAAC,OAAe,CAAC,MAAM;iBACpE,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CAAC,uBAAuB,CAAC;iBAC/B,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;iBAChC,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC;oBACzC,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAW,CAAC;wBACxD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,iEAAiE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;wBAC7I,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,aAAa,KAAK,KAAK,SAAS,GAAG,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;QACjD,mEAAmE;QACnE,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,QAA+C,CAAC;YACpE,MAAM,KAAK,GAAG,IAAI,EAAE,cAAoC,CAAC;YACzD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,2DAA2D,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAC9I,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,KAAK,KAAK,SAAS,GAAG,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,gFAAgF;QAChF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc;YAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0E,CAAC;QACjG,SAAS,cAAc,CAAC,EAAU;YAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QACzB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAO,MAAM,CAAC,OAAe,CAAC,MAAM;iBAC5D,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CAAC,6BAA6B,CAAC;iBACrC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;iBAChC,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;YAE1D,IAAI,QAAQ,EAAE,CAAC;gBACb,kFAAkF;gBAClF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;gBAEpD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA+C,CAAC;oBACtE,MAAM,YAAY,GAAI,QAAQ,EAAE,YAAuB,IAAI,IAAI,CAAC,OAAO,CAAC;oBACxE,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAkC,CAAC;oBAElE,yEAAyE;oBACzE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBAAE,SAAS;oBAE7F,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,YAAY,EAAE,CAAC;wBACjD,+CAA+C;wBAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC;wBAC3E,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBACtD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC;wBAC3E,cAAc,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBACzD,6BAA6B;wBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;4BAAE,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;wBAC/E,YAAY,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACpD,CAAC;oBACD,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,YAAY,EAAE,CAAC;wBACnD,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC;wBACrE,cAAc,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnD,gCAAgC;wBAChC,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC;wBAC5E,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACzD,CAAC;oBACD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;wBACjC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAA8B,CAAC;wBAC1D,IAAI,QAAQ,EAAE,CAAC;4BACb,cAAc,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACxD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,6EAA6E;gBAC7E,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;oBAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChD,CAAC;gBAED,uEAAuE;gBACvE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;oBAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACtC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;wBAAE,SAAS;oBAC7D,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;wBAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACxC,IAAI,UAAU,EAAE,CAAC;4BACf,KAAK,MAAM,EAAE,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gCACtC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oCACnE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC;gCAChD,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,6FAA6F;gBAC7F,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;oBACpC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;wBAAE,SAAS;oBACxC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACrC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC;4BAC1C,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACjF,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;oCACrC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;wCACzF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,oCAAoC,CAAC,CAAC;oCACjE,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAE1C,2FAA2F;QAC3F,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QACrM,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7E,oEAAoE;QACpE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAO,MAAM,CAAC,OAAe,CAAC,MAAM;qBACjE,IAAI,CAAC,OAAO,CAAC;qBACb,MAAM,CAAC,GAAG,CAAC;qBACX,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;qBAChC,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC/C,IAAI,aAAa,EAAE,CAAC;oBAClB,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;wBAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;4BAClF,IAAI,EAAE,CAAC,OAAO;gCAAE,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;4BAC3D,IAAI,EAAE,CAAC,YAAY;gCAAE,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC;4BAC/E,IAAI,EAAE,CAAC,gBAAgB;gCAAE,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC;4BAC/F,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACnG,CAAC;4BACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gCACnB,IAAI,EAAE,SAAgB;gCACtB,KAAK,EAAE,GAAG;gCACV,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;6BACnH,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACpC,CAAC;QAED,2FAA2F;QAC3F,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvD,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAI,CAAC,CAAC,IAAI,CAAC,QAAgB,EAAE,cAAoC,CAAC;gBAC9E,MAAM,MAAM,GAAI,CAAC,CAAC,IAAI,CAAC,QAAgB,EAAE,cAAoC,CAAC;gBAC9E,IAAI,MAAM,IAAI,MAAM;oBAAE,OAAO,MAAM,GAAG,MAAM,CAAC;gBAC7C,IAAI,MAAM;oBAAE,OAAO,CAAC,CAAC,CAAC;gBACtB,IAAI,MAAM;oBAAE,OAAO,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,QAA+C,CAAC;YAEpE,uBAAuB;YACvB,IAAI,IAAI,EAAE,SAAS,KAAK,IAAI;gBAAE,SAAS;YAEvC,MAAM,MAAM,GAAG,IAAI,EAAE,MAA4B,CAAC;YAClD,MAAM,aAAa,GAAG,IAAI,EAAE,cAAoC,CAAC;YACjE,MAAM,UAAU,GAAG,IAAI,EAAE,UAAgC,CAAC;YAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEnC,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS;gBAAE,SAAS,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACxG,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5G,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;iBACtC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAK,CAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,UAAU,GAAG,MAAM,IAAI,aAAa,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;YACxC,IAAI,IAAY,CAAC;YACjB,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClF,IAAI,IAAI,eAAe,MAAM,IAAI,SAAS,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC9G,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,IAAI,qBAAqB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;qBACzE,IAAI,MAAM,KAAK,aAAa;oBAAE,IAAI,IAAI,sBAAsB,CAAC;gBAClE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,IAAI,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1E,IAAI,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YAC/G,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,IAAI,IAAI,sBAAsB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrD,CAAC;YACD,IAAI,IAAI,OAAO,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,6DAA6D;QAC7D,IAAI,UAAU,GAAG,aAAa,CAAC;QAC/B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,UAAU,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC9C,IAAI,aAAa,GAAG,UAAU,GAAG,UAAU,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtE,cAAc,GAAG,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;oBAC3D,MAAM;gBACR,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,aAAa,IAAI,UAAU,CAAC;YAC9B,CAAC;YACD,UAAU,GAAG,WAAW,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,cAAc,8CAA8C,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,SAAS,OAAO,CAAC,OAAO,CAAC,MAAM,cAAc,OAAO,CAAC,UAAU,WAAW,IAAI,GAAG,SAAS,EAAE;iBACnG;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,mBAAmB;IACnB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,iFAAiF,EACjF;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KACxD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,EAAE;YACT,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;SACX,CAAC,CAAC;QACV,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,sBAAsB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE;aAC1F;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,gJAAgJ,EAChJ;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;KACpH,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAO,MAAM,CAAC,OAAe,CAAC,MAAM;iBAC3E,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CAAC,uBAAuB,CAAC;iBAC/B,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;iBAChC,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAE/C,IAAI,SAAS;gBAAE,MAAM,SAAS,CAAC;YAE/B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC;YAC9E,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gBAAgB,QAAQ,SAAS,EAAE,CAAC,EAAE,CAAC;YAC3F,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC;YACrD,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;YAElG,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAO,MAAM,CAAC,OAAe,CAAC,MAAM;iBAChE,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;iBACjC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;iBACjB,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEpC,IAAI,WAAW;gBAAE,MAAM,WAAW,CAAC;YAEnC,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAW,CAAC;YACjE,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,iEAAiE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,aAAa,QAAQ,KAAK,SAAS,MAAM,SAAS,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;qBACxI,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QACzG,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,IAAI,CACT,eAAe,EACf,2KAA2K,EAC3K;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACvD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAO,MAAM,CAAC,OAAe,CAAC,MAAM;iBAC1E,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CAAC,uBAAuB,CAAC;iBAC/B,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;iBACjB,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;iBAChC,WAAW,EAAE,CAAC;YAEjB,IAAI,SAAS;gBAAE,MAAM,SAAS,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,OAAO,aAAa,EAAE,CAAC,EAAE,CAAC;YACtF,CAAC;YAED,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAEjG,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAO,MAAM,CAAC,OAAe,CAAC,MAAM;iBAChE,IAAI,CAAC,OAAO,CAAC;iBACb,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;iBACjC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;iBACjB,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEpC,IAAI,WAAW;gBAAE,MAAM,WAAW,CAAC;YAEnC,MAAM,OAAO,GAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,OAAO,MAAM,EAAE,CAAC;aACzE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QACzG,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,IAAI,CACT,aAAa,EACb,yEAAyE,EACzE,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAChD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAC5D,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE1F,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,2BAA2B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,iBAAiB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;iBAC/I;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,IAAI,CACT,eAAe,EACf,oJAAoJ,EACpJ;QACE,UAAU,EAAE,CAAC;aACV,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;aACzE,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,qCAAqC,CAAC;KACnD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CACvD,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,EACd,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;QACF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;QAGnC,MAAM,UAAU,GAMZ;YACF,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,EAAE;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3C,IACE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EACxB,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,IACL,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EACzB,CAAC;gBACD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;iBAAM,IACL,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC1B,CAAC;gBACD,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;iBAAM,IACL,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC5B,CAAC;gBACD,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,UAAsC,CAAC;QAC7D,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;iBACrC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;iBACf,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,IAAI,CACT,aAAa,EACb,6IAA6I,EAC7I;QACE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CAAC,gEAAgE,CAAC;QAC7E,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,cAAc,EAAE,CAAC;aACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,uEAAuE,CAAC;KACrF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3C,sFAAsF;QACtF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC9E,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC;QAEtC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,6BAA6B,IAAI,CAAC,WAAW,uEAAuE;qBAC3H;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAEjF,6CAA6C;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc;YACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrE,CAAC,CAAC,KAAK,CAAC;QAEV,8BAA8B;QAC9B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,cAAc;gBAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAwB,CAAC,CAAC;YAClG,IAAI,IAAI,CAAC,QAAQ,EAAE,cAAc;gBAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAwB,CAAC,CAAC;QACpG,CAAC;QACD,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAErC,qCAAqC;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,YAAY;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAsB,CAAC,CAAC;YACnF,IAAI,IAAI,CAAC,QAAQ,EAAE,YAAY;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAsB,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnE,iEAAiE;YACjE,IACE,IAAI;gBACJ,IAAI,CAAC,SAAS,KAAK,YAAY;gBAC/B,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,EAC1D,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG;YACb,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;YACD,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACpC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY;gBACtC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY;aACvC,CAAC,CAAC;YACH,iBAAiB,EAAE,kBAAkB,CAAC,IAAI;YAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACzB,KAAK;SACN,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEhD,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kNAAkN,EAClN;YACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SACvE,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;gBACrC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEtB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACnG,IAAI,UAAU,GAAG,CAAC,CAAC;gBAEnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B;4BACE,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,cAAc,EAAE,MAAM,CAAC,cAAc;4BACrC,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,cAAc,EAAE,MAAe;4BAC/B,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,IAAI,MAAM,CAAC,iBAAiB;4BACjF,IAAI,EAAE,UAAmB;yBAC1B,EACD;4BACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,KAAK,EAAE,UAAU;4BACjB,OAAO,EAAE,eAAe;4BACxB,SAAS,EAAE,KAAK,CAAC,SAAgB;4BACjC,IAAI,EAAE,KAAK,CAAC,IAAI;yBACjB,CACF,CAAC;wBACF,UAAU,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACxG,CAAC;gBACH,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,MAAM,aAAa,UAAU,gBAAgB;yBAClI,CAAC;iBACH,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;yBAClF,CAAC;iBACH,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,yGAAyG,EACzG;YACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACtE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACjD,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;YAC1C,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;gBAErC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACvH,IAAI,UAAU,GAAG,CAAC,CAAC;gBAEnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B;4BACE,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,cAAc,EAAE,MAAM,CAAC,cAAc;4BACrC,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,cAAc,EAAE,MAAe;4BAC/B,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,IAAI,MAAM,CAAC,iBAAiB;4BACjF,IAAI,EAAE,UAAmB;yBAC1B,EACD;4BACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,KAAK,EAAE,UAAU;4BACjB,OAAO,EAAE,eAAe;4BACxB,SAAS,EAAE,KAAK,CAAC,SAAgB;4BACjC,IAAI,EAAE,KAAK,CAAC,IAAI;yBACjB,CACF,CAAC;wBACF,UAAU,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnG,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,WAAW,SAAS,MAAM,UAAU,mBAAmB;yBAC9D,CAAC;iBACH,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;yBAClF,CAAC;iBACH,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,8KAA8K,EAC9K,EAAE,EACF,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG;oBACd,kDAAkD;oBAClD,0CAA0C;oBAC1C,iCAAiC;oBACjC,qCAAqC;iBACtC,CAAC;gBAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;gBAE/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACd,QAAQ,CACN,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,qBAA4B,EAAE,EAC7F;oBACE,KAAK,EAAE,CAAC;oBACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,UAAU;oBACjB,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,IAAI;iBACX,CACF,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CACjC,CACF,CAAC;gBAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,KAAK,MAAM,IAAI,IAAK,CAAS,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;wBAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BACvB,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;4BACxH,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;wBAChC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,OAAO;wBACL,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,yFAAyF;6BAChG,CAAC;qBACH,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC3D,CAAC;iBACH,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;yBAC7F,CAAC;iBACH,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/local.js CHANGED
@@ -13,6 +13,7 @@
13
13
  * STENO_TENANT_ID (default: auto-created)
14
14
  * STENO_SCOPE_ID (default: "default")
15
15
  */
16
+ import path from 'node:path';
16
17
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
17
18
  import { createLocalServer } from './local-server.js';
18
19
  async function main() {
@@ -167,6 +168,37 @@ async function main() {
167
168
  },
168
169
  ],
169
170
  decryptField: encryption?.decryptField,
171
+ // Enable codebase memory — uses STENO_CODEBASE_SCOPE env var, or auto-detects
172
+ // from the current working directory name (works for any repo)
173
+ codebase: {
174
+ scopeId: process.env.STENO_CODEBASE_SCOPE || path.basename(process.cwd()),
175
+ domainEntityTypes: [
176
+ {
177
+ name: 'architecture_decision',
178
+ description: 'A technical decision about the codebase architecture, framework choice, or design pattern',
179
+ fields: [
180
+ { name: 'status', type: 'string', description: 'proposed, accepted, deprecated, superseded', required: false },
181
+ { name: 'context', type: 'string', description: 'Why this decision was made', required: false },
182
+ ],
183
+ },
184
+ {
185
+ name: 'api_pattern',
186
+ description: 'An API endpoint pattern or convention used in the codebase',
187
+ fields: [
188
+ { name: 'http_method', type: 'string', description: 'GET, POST, PUT, DELETE, PATCH', required: false },
189
+ { name: 'path_pattern', type: 'string', description: 'URL pattern like /api/users/:id', required: false },
190
+ ],
191
+ },
192
+ {
193
+ name: 'code_pattern',
194
+ description: 'A recurring code convention, naming pattern, or architectural pattern in the codebase',
195
+ fields: [
196
+ { name: 'pattern_type', type: 'string', description: 'naming, error_handling, state_management, file_structure', required: false },
197
+ { name: 'scope', type: 'string', description: 'global, package, file', required: false },
198
+ ],
199
+ },
200
+ ],
201
+ },
170
202
  });
171
203
  // Handle EPIPE gracefully — Claude Desktop may disconnect mid-response
172
204
  process.stdout.on('error', (err) => {
package/dist/local.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steno-ai/mcp",
3
- "version": "0.1.17",
3
+ "version": "0.1.18",
4
4
  "description": "MCP server for Claude Code, Claude Desktop, and other MCP clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -31,11 +31,12 @@
31
31
  "@supabase/supabase-js": "^2.49.0",
32
32
  "openai": "^4.0.0",
33
33
  "zod": "^3.25",
34
- "@steno-ai/engine": "0.1.11",
35
- "@steno-ai/openai-compat-adapter": "0.1.1",
36
- "@steno-ai/supabase-adapter": "0.1.8",
34
+ "@steno-ai/engine": "0.1.12",
35
+ "@steno-ai/openai-adapter": "0.1.2",
36
+ "@steno-ai/codebase-indexer": "0.1.0",
37
37
  "@steno-ai/sqlite-adapter": "0.1.4",
38
- "@steno-ai/openai-adapter": "0.1.2"
38
+ "@steno-ai/openai-compat-adapter": "0.1.1",
39
+ "@steno-ai/supabase-adapter": "0.1.9"
39
40
  },
40
41
  "devDependencies": {
41
42
  "@types/node": "^22",
@@ -6,6 +6,11 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import { z } from 'zod';
7
7
  import type { StorageAdapter, EmbeddingAdapter, LLMAdapter } from '@steno-ai/engine';
8
8
 
9
+ export interface CodebaseScopeConfig {
10
+ scopeId: string;
11
+ domainEntityTypes?: import('@steno-ai/engine').DomainEntityType[];
12
+ }
13
+
9
14
  export interface LocalServerConfig {
10
15
  storage: StorageAdapter;
11
16
  embedding: EmbeddingAdapter;
@@ -19,6 +24,8 @@ export interface LocalServerConfig {
19
24
  sessionTimeoutMs?: number;
20
25
  /** Optional field decryptor for direct Supabase queries that bypass the adapter. */
21
26
  decryptField?: (ciphertext: string) => string;
27
+ /** Optional codebase scope — enables steno_index_repo, steno_codebase_recall, steno_architecture */
28
+ codebase?: CodebaseScopeConfig;
22
29
  }
23
30
 
24
31
  // ---------------------------------------------------------------------------
@@ -41,6 +48,31 @@ function getEmbeddingCache() {
41
48
  return _embeddingCache;
42
49
  }
43
50
 
51
+ /** Full search result cache — caches complete recall results for 60s */
52
+ const _resultCache = new Map<string, { results: any; ts: number }>();
53
+ const RESULT_CACHE_TTL_MS = 60_000; // 60 seconds
54
+
55
+ function getCachedResult(query: string, limit: number): any | null {
56
+ const key = `result:${query}:${limit}`;
57
+ const entry = _resultCache.get(key);
58
+ if (!entry) return null;
59
+ if (Date.now() - entry.ts > RESULT_CACHE_TTL_MS) {
60
+ _resultCache.delete(key);
61
+ return null;
62
+ }
63
+ return entry.results;
64
+ }
65
+
66
+ function setCachedResult(query: string, limit: number, results: any): void {
67
+ const key = `result:${query}:${limit}`;
68
+ _resultCache.set(key, { results, ts: Date.now() });
69
+ // Evict if too large
70
+ if (_resultCache.size > 200) {
71
+ const oldest = [..._resultCache.entries()].sort((a, b) => a[1].ts - b[1].ts).slice(0, 50);
72
+ for (const [k] of oldest) _resultCache.delete(k);
73
+ }
74
+ }
75
+
44
76
  /** Simple cache adapter that wraps a Map for embedding caching */
45
77
  const embeddingCacheAdapter = {
46
78
  async get<T>(key: string): Promise<T | null> {
@@ -92,6 +124,35 @@ CRITICAL RULES:
92
124
  6. Use steno_update_status to change priority/roadmap item status when the user starts, completes, or gets blocked on a task.` } as any),
93
125
  });
94
126
 
127
+ // Pre-warm embedding cache — fire common queries in background so first recall is fast
128
+ // This runs async and doesn't block server startup
129
+ (async () => {
130
+ try {
131
+ const warmupQueries = [
132
+ 'user profile preferences habits patterns',
133
+ 'user goals plans priorities roadmap',
134
+ 'user relationships people friends team cofounders',
135
+ 'user schedule meetings events calendar',
136
+ 'user emotions feelings energy coping strategies',
137
+ ];
138
+ const t0 = Date.now();
139
+ // Batch-embed all warmup queries in one API call
140
+ const embeddings = await config.embedding.embedBatch(warmupQueries);
141
+ // Store each in cache
142
+ for (let i = 0; i < warmupQueries.length; i++) {
143
+ const text = warmupQueries[i]!;
144
+ const encoded = new TextEncoder().encode(text);
145
+ const hash = await crypto.subtle.digest('SHA-256', encoded);
146
+ const hashHex = Array.from(new Uint8Array(hash)).map(b => b.toString(16).padStart(2, '0')).join('').slice(0, 16);
147
+ const key = `emb:${config.embedding.model}:${hashHex}`;
148
+ await embeddingCacheAdapter.set(key, embeddings[i]!);
149
+ }
150
+ console.error(`[steno] Pre-warmed ${warmupQueries.length} embedding queries in ${Date.now() - t0}ms`);
151
+ } catch (err) {
152
+ console.error('[steno] Pre-warm failed (non-fatal):', err instanceof Error ? err.message : err);
153
+ }
154
+ })();
155
+
95
156
  // Lazy import to avoid loading heavy modules at startup
96
157
  let _search: typeof import('@steno-ai/engine').search | null = null;
97
158
  let _pipeline: typeof import('@steno-ai/engine').runExtractionPipeline | null = null;
@@ -375,8 +436,10 @@ CRITICAL RULES:
375
436
  query: z.string().describe('What to search for in memory'),
376
437
  limit: z.number().optional().describe('Max results (default 10)'),
377
438
  max_tokens: z.number().optional().describe('Approximate token budget for the response. Results will be truncated from lowest-scored to fit.'),
439
+ fast: z.boolean().optional().describe('Fast mode: vector+keyword only, no graph/triggers/reranking. Sub-300ms. Use for simple lookups.'),
440
+ scope: z.enum(['user', 'codebase']).optional().describe('Memory scope. Default: user (personal). Use codebase for repo/project knowledge.'),
378
441
  },
379
- async ({ query, limit, max_tokens }) => {
442
+ async ({ query, limit, max_tokens, fast, scope: queryScope }) => {
380
443
  // Auto-flush any pending buffered messages before searching
381
444
  const key = bufferKey();
382
445
  const active = activeSessions.get(key);
@@ -384,17 +447,30 @@ CRITICAL RULES:
384
447
  await flushSession(key);
385
448
  }
386
449
 
387
- const searchFn = await getSearch();
388
- const results = await searchFn(
389
- { storage: config.storage, embedding: config.embedding, cache: embeddingCacheAdapter as any },
390
- {
391
- query,
392
- tenantId: config.tenantId,
393
- scope: config.scope,
394
- scopeId: config.scopeId,
395
- limit: limit ?? 10,
396
- },
397
- );
450
+ // Resolve scope default to user, allow codebase if configured
451
+ const effectiveScope = queryScope === 'codebase' && config.codebase ? 'codebase' : config.scope;
452
+ const effectiveScopeId = effectiveScope === 'codebase' && config.codebase ? config.codebase.scopeId : config.scopeId;
453
+
454
+ // Check result cache first (60s TTL)
455
+ const effectiveLimit = limit ?? 10;
456
+ const cacheKey = `${effectiveScope}:${query}`;
457
+ const cached = getCachedResult(cacheKey, effectiveLimit);
458
+ const results = cached ?? await (async () => {
459
+ const searchFn = await getSearch();
460
+ const r = await searchFn(
461
+ { storage: config.storage, embedding: config.embedding, cache: embeddingCacheAdapter as any },
462
+ {
463
+ query,
464
+ tenantId: config.tenantId,
465
+ scope: effectiveScope,
466
+ scopeId: effectiveScopeId,
467
+ limit: effectiveLimit,
468
+ fast: fast ?? false,
469
+ },
470
+ );
471
+ setCachedResult(cacheKey, effectiveLimit, r);
472
+ return r;
473
+ })();
398
474
 
399
475
  if (results.results.length === 0) {
400
476
  return { content: [{ type: 'text' as const, text: 'No memories found.' }] };
@@ -434,7 +510,7 @@ CRITICAL RULES:
434
510
 
435
511
  // Build dependency map — ONE batch query for ALL dependency edges in this tenant
436
512
  // Include ALL priority fact IDs so edges for injected priorities aren't skipped
437
- const factIdSet = new Set(results.results.map(r => r.fact.id));
513
+ const factIdSet = new Set(results.results.map((r: any) => r.fact.id));
438
514
  for (const [factId] of priorityLabels) factIdSet.add(factId);
439
515
 
440
516
  const depMap = new Map<string, { blocks: string[]; blockedBy: string[]; deadlines: string[] }>();
@@ -527,43 +603,49 @@ CRITICAL RULES:
527
603
  }
528
604
  } catch { /* batch edge lookup failed */ }
529
605
 
530
- // Inject missing priority facts that are referenced by edges but not in recall results
531
- // This ensures Priority #1 (root node) always shows up when its children are recalled
532
- const resultFactIds = new Set(results.results.map(r => r.fact.id));
533
- try {
534
- const { data: allPriorities } = await (config.storage as any).client
535
- .from('facts')
536
- .select('*')
537
- .eq('tenant_id', config.tenantId)
538
- .not('metadata->priority_order', 'is', null);
539
- if (allPriorities) {
540
- for (const pf of allPriorities) {
541
- if (!resultFactIds.has(pf.id) && (depMap.has(pf.id) || priorityLabels.has(pf.id))) {
542
- // This priority is referenced but not in results — inject it
543
- // Decrypt content fields that bypass the adapter
544
- if (pf.content) pf.content = dec(pf.content) ?? pf.content;
545
- if (pf.source_chunk) pf.source_chunk = dec(pf.source_chunk) ?? pf.source_chunk;
546
- if (pf.original_content) pf.original_content = dec(pf.original_content) ?? pf.original_content;
547
- const camelFact = Object.fromEntries(
548
- Object.entries(pf).map(([k, v]) => [k.replace(/_([a-z])/g, (_, c: string) => c.toUpperCase()), v])
549
- );
550
- results.results.push({
551
- fact: camelFact as any,
552
- score: 0.1, // Low score since it wasn't directly matched
553
- signals: { vectorScore: 0, keywordScore: 0, graphScore: 0.5, recencyScore: 0, salienceScore: 0, temporalScore: 0 },
554
- });
606
+ // Only inject and boost priority facts when the query is actually about priorities/roadmap
607
+ const priorityKeywords = ['priority', 'priorities', 'roadmap', 'my plan', 'my plans', 'steno plan', 'what am i working on', 'what should i work on', 'backlog', 'next up', 'what are my priorities'];
608
+ const lowerQuery = (query ?? '').toLowerCase();
609
+ const isPriorityQuery = priorityKeywords.some(kw => lowerQuery.includes(kw));
610
+
611
+ // Inject missing priority facts only when query is about priorities
612
+ const resultFactIds = new Set(results.results.map((r: any) => r.fact.id));
613
+ if (isPriorityQuery) {
614
+ try {
615
+ const { data: allPriorities } = await (config.storage as any).client
616
+ .from('facts')
617
+ .select('*')
618
+ .eq('tenant_id', config.tenantId)
619
+ .not('metadata->priority_order', 'is', null);
620
+ if (allPriorities) {
621
+ for (const pf of allPriorities) {
622
+ if (!resultFactIds.has(pf.id) && (depMap.has(pf.id) || priorityLabels.has(pf.id))) {
623
+ if (pf.content) pf.content = dec(pf.content) ?? pf.content;
624
+ if (pf.source_chunk) pf.source_chunk = dec(pf.source_chunk) ?? pf.source_chunk;
625
+ if (pf.original_content) pf.original_content = dec(pf.original_content) ?? pf.original_content;
626
+ const camelFact = Object.fromEntries(
627
+ Object.entries(pf).map(([k, v]) => [k.replace(/_([a-z])/g, (_, c: string) => c.toUpperCase()), v])
628
+ );
629
+ results.results.push({
630
+ fact: camelFact as any,
631
+ score: 0.1,
632
+ signals: { vectorScore: 0, keywordScore: 0, graphScore: 0.5, recencyScore: 0, salienceScore: 0, temporalScore: 0 },
633
+ });
634
+ }
555
635
  }
556
636
  }
557
- }
558
- } catch { /* injection failed */ }
637
+ } catch { /* injection failed */ }
638
+ }
559
639
 
560
- // Sort results: priorities first (by priority_order), then regular memories
640
+ // Sort: priorities first ONLY when query is about priorities, otherwise pure score ranking
561
641
  const sortedResults = [...results.results].sort((a, b) => {
562
- const aOrder = (a.fact.metadata as any)?.priority_order as number | undefined;
563
- const bOrder = (b.fact.metadata as any)?.priority_order as number | undefined;
564
- if (aOrder && bOrder) return aOrder - bOrder;
565
- if (aOrder) return -1;
566
- if (bOrder) return 1;
642
+ if (isPriorityQuery) {
643
+ const aOrder = (a.fact.metadata as any)?.priority_order as number | undefined;
644
+ const bOrder = (b.fact.metadata as any)?.priority_order as number | undefined;
645
+ if (aOrder && bOrder) return aOrder - bOrder;
646
+ if (aOrder) return -1;
647
+ if (bOrder) return 1;
648
+ }
567
649
  return b.score - a.score;
568
650
  });
569
651
 
@@ -584,7 +666,7 @@ CRITICAL RULES:
584
666
  if (r.fact.documentDate) dateParts.push(`doc: ${new Date(r.fact.documentDate).toISOString().slice(0, 10)}`);
585
667
  const dateStr = dateParts.length > 0 ? `, ${dateParts.join(', ')}` : '';
586
668
  const signals = Object.entries(r.signals)
587
- .filter(([, v]) => v > 0)
669
+ .filter(([, v]) => (v as number) > 0)
588
670
  .map(([k, v]) => `${k.replace('Score', '')}=${(v as number).toFixed(2)}`)
589
671
  .join(', ');
590
672
 
@@ -994,5 +1076,199 @@ CRITICAL RULES:
994
1076
  },
995
1077
  );
996
1078
 
1079
+ // ─── CODEBASE TOOLS (only registered if codebase scope is configured) ───
1080
+ if (config.codebase) {
1081
+ const codebaseScopeId = config.codebase.scopeId;
1082
+
1083
+ server.tool(
1084
+ 'steno_index_repo',
1085
+ 'Index a codebase into Steno memory. Walks the repo, parses manifests, analyzes structure, and extracts architectural facts. Use when starting work on a new repo or when the codebase has changed significantly.',
1086
+ {
1087
+ repo_path: z.string().describe('Absolute path to the repository root'),
1088
+ },
1089
+ async ({ repo_path }) => {
1090
+ try {
1091
+ const { indexRepo } = await import('@steno-ai/codebase-indexer');
1092
+ const pipeline = await getPipeline();
1093
+ const t0 = Date.now();
1094
+
1095
+ const inputs = await indexRepo(repo_path, { tenantId: config.tenantId, scopeId: codebaseScopeId });
1096
+ let totalFacts = 0;
1097
+
1098
+ for (const input of inputs) {
1099
+ try {
1100
+ const result = await pipeline(
1101
+ {
1102
+ storage: config.storage,
1103
+ embedding: config.embedding,
1104
+ cheapLLM: config.cheapLLM,
1105
+ embeddingModel: config.embeddingModel,
1106
+ embeddingDim: config.embeddingDim,
1107
+ extractionTier: 'auto' as const,
1108
+ domainEntityTypes: config.codebase?.domainEntityTypes ?? config.domainEntityTypes,
1109
+ mode: 'codebase' as const,
1110
+ },
1111
+ {
1112
+ tenantId: config.tenantId,
1113
+ scope: 'codebase',
1114
+ scopeId: codebaseScopeId,
1115
+ inputType: input.inputType as any,
1116
+ data: input.data,
1117
+ },
1118
+ );
1119
+ totalFacts += result.factsCreated ?? 0;
1120
+ } catch (err) {
1121
+ console.error(`[steno] Index extraction failed for input:`, err instanceof Error ? err.message : err);
1122
+ }
1123
+ }
1124
+
1125
+ const duration = Date.now() - t0;
1126
+ return {
1127
+ content: [{
1128
+ type: 'text' as const,
1129
+ text: `Indexed ${repo_path} in ${(duration / 1000).toFixed(1)}s. Extracted ${inputs.length} inputs → ${totalFacts} facts stored.`,
1130
+ }],
1131
+ };
1132
+ } catch (err) {
1133
+ return {
1134
+ content: [{
1135
+ type: 'text' as const,
1136
+ text: `Failed to index repo: ${err instanceof Error ? err.message : String(err)}`,
1137
+ }],
1138
+ };
1139
+ }
1140
+ },
1141
+ );
1142
+
1143
+ server.tool(
1144
+ 'steno_index_file',
1145
+ 'Index a single file into codebase memory. Use for incremental updates when a specific file has changed.',
1146
+ {
1147
+ repo_path: z.string().describe('Absolute path to the repository root'),
1148
+ file_path: z.string().describe('Path to the file relative to repo root'),
1149
+ content: z.string().describe('The file content'),
1150
+ },
1151
+ async ({ repo_path, file_path, content }) => {
1152
+ try {
1153
+ const { indexFile } = await import('@steno-ai/codebase-indexer');
1154
+ const pipeline = await getPipeline();
1155
+
1156
+ const inputs = await indexFile(repo_path, file_path, content, { tenantId: config.tenantId, scopeId: codebaseScopeId });
1157
+ let totalFacts = 0;
1158
+
1159
+ for (const input of inputs) {
1160
+ try {
1161
+ const result = await pipeline(
1162
+ {
1163
+ storage: config.storage,
1164
+ embedding: config.embedding,
1165
+ cheapLLM: config.cheapLLM,
1166
+ embeddingModel: config.embeddingModel,
1167
+ embeddingDim: config.embeddingDim,
1168
+ extractionTier: 'auto' as const,
1169
+ domainEntityTypes: config.codebase?.domainEntityTypes ?? config.domainEntityTypes,
1170
+ mode: 'codebase' as const,
1171
+ },
1172
+ {
1173
+ tenantId: config.tenantId,
1174
+ scope: 'codebase',
1175
+ scopeId: codebaseScopeId,
1176
+ inputType: input.inputType as any,
1177
+ data: input.data,
1178
+ },
1179
+ );
1180
+ totalFacts += result.factsCreated ?? 0;
1181
+ } catch (err) {
1182
+ console.error(`[steno] File index extraction failed:`, err instanceof Error ? err.message : err);
1183
+ }
1184
+ }
1185
+
1186
+ return {
1187
+ content: [{
1188
+ type: 'text' as const,
1189
+ text: `Indexed ${file_path} → ${totalFacts} facts extracted.`,
1190
+ }],
1191
+ };
1192
+ } catch (err) {
1193
+ return {
1194
+ content: [{
1195
+ type: 'text' as const,
1196
+ text: `Failed to index file: ${err instanceof Error ? err.message : String(err)}`,
1197
+ }],
1198
+ };
1199
+ }
1200
+ },
1201
+ );
1202
+
1203
+ server.tool(
1204
+ 'steno_architecture',
1205
+ 'Get a high-level architecture summary of the indexed codebase — packages, frameworks, key patterns, and dependencies. Use when you need to understand the project structure.',
1206
+ {},
1207
+ async () => {
1208
+ try {
1209
+ const searchFn = await getSearch();
1210
+ const queries = [
1211
+ 'project architecture packages monorepo structure',
1212
+ 'frameworks dependencies technology stack',
1213
+ 'API patterns routes conventions',
1214
+ 'configuration build deploy settings',
1215
+ ];
1216
+
1217
+ const allFacts: string[] = [];
1218
+ const seen = new Set<string>();
1219
+
1220
+ const results = await Promise.all(
1221
+ queries.map(q =>
1222
+ searchFn(
1223
+ { storage: config.storage, embedding: config.embedding, cache: embeddingCacheAdapter as any },
1224
+ {
1225
+ query: q,
1226
+ tenantId: config.tenantId,
1227
+ scope: 'codebase',
1228
+ scopeId: codebaseScopeId,
1229
+ limit: 5,
1230
+ fast: true,
1231
+ },
1232
+ ).catch(() => ({ results: [] })),
1233
+ ),
1234
+ );
1235
+
1236
+ for (const r of results) {
1237
+ for (const item of (r as any).results || []) {
1238
+ if (!seen.has(item.fact.id)) {
1239
+ seen.add(item.fact.id);
1240
+ const content = config.decryptField ? (config.decryptField(item.fact.content) ?? item.fact.content) : item.fact.content;
1241
+ allFacts.push(`- ${content}`);
1242
+ }
1243
+ }
1244
+ }
1245
+
1246
+ if (allFacts.length === 0) {
1247
+ return {
1248
+ content: [{
1249
+ type: 'text' as const,
1250
+ text: 'No codebase architecture indexed yet. Use steno_index_repo to index a repository first.',
1251
+ }],
1252
+ };
1253
+ }
1254
+
1255
+ return {
1256
+ content: [{
1257
+ type: 'text' as const,
1258
+ text: `## Codebase Architecture\n\n${allFacts.join('\n')}`,
1259
+ }],
1260
+ };
1261
+ } catch (err) {
1262
+ return {
1263
+ content: [{
1264
+ type: 'text' as const,
1265
+ text: `Failed to retrieve architecture: ${err instanceof Error ? err.message : String(err)}`,
1266
+ }],
1267
+ };
1268
+ }
1269
+ },
1270
+ );
1271
+ }
1272
+
997
1273
  return server;
998
1274
  }
package/src/local.ts CHANGED
@@ -13,6 +13,7 @@
13
13
  * STENO_TENANT_ID (default: auto-created)
14
14
  * STENO_SCOPE_ID (default: "default")
15
15
  */
16
+ import path from 'node:path';
16
17
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
17
18
  import { createLocalServer } from './local-server.js';
18
19
 
@@ -188,6 +189,37 @@ async function main(): Promise<void> {
188
189
  },
189
190
  ],
190
191
  decryptField: encryption?.decryptField,
192
+ // Enable codebase memory — uses STENO_CODEBASE_SCOPE env var, or auto-detects
193
+ // from the current working directory name (works for any repo)
194
+ codebase: {
195
+ scopeId: process.env.STENO_CODEBASE_SCOPE || path.basename(process.cwd()),
196
+ domainEntityTypes: [
197
+ {
198
+ name: 'architecture_decision',
199
+ description: 'A technical decision about the codebase architecture, framework choice, or design pattern',
200
+ fields: [
201
+ { name: 'status', type: 'string' as const, description: 'proposed, accepted, deprecated, superseded', required: false },
202
+ { name: 'context', type: 'string' as const, description: 'Why this decision was made', required: false },
203
+ ],
204
+ },
205
+ {
206
+ name: 'api_pattern',
207
+ description: 'An API endpoint pattern or convention used in the codebase',
208
+ fields: [
209
+ { name: 'http_method', type: 'string' as const, description: 'GET, POST, PUT, DELETE, PATCH', required: false },
210
+ { name: 'path_pattern', type: 'string' as const, description: 'URL pattern like /api/users/:id', required: false },
211
+ ],
212
+ },
213
+ {
214
+ name: 'code_pattern',
215
+ description: 'A recurring code convention, naming pattern, or architectural pattern in the codebase',
216
+ fields: [
217
+ { name: 'pattern_type', type: 'string' as const, description: 'naming, error_handling, state_management, file_structure', required: false },
218
+ { name: 'scope', type: 'string' as const, description: 'global, package, file', required: false },
219
+ ],
220
+ },
221
+ ],
222
+ },
191
223
  });
192
224
 
193
225
  // Handle EPIPE gracefully — Claude Desktop may disconnect mid-response