@devflow-tools/knowledge-engine 0.16.27 → 0.16.29
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/context7-fetcher.d.ts +2 -0
- package/dist/context7-fetcher.d.ts.map +1 -1
- package/dist/context7-fetcher.js +35 -2
- package/dist/context7-fetcher.js.map +1 -1
- package/dist/dependency-source-compiler.d.ts +24 -0
- package/dist/dependency-source-compiler.d.ts.map +1 -0
- package/dist/dependency-source-compiler.js +265 -0
- package/dist/dependency-source-compiler.js.map +1 -0
- package/dist/evidence-graph.d.ts +24 -0
- package/dist/evidence-graph.d.ts.map +1 -0
- package/dist/evidence-graph.js +82 -0
- package/dist/evidence-graph.js.map +1 -0
- package/dist/fetcher.d.ts +11 -0
- package/dist/fetcher.d.ts.map +1 -1
- package/dist/fetcher.js +12 -0
- package/dist/fetcher.js.map +1 -1
- package/dist/git-fetcher.d.ts +2 -0
- package/dist/git-fetcher.d.ts.map +1 -1
- package/dist/git-fetcher.js +47 -0
- package/dist/git-fetcher.js.map +1 -1
- package/dist/hybrid-search.d.ts +6 -2
- package/dist/hybrid-search.d.ts.map +1 -1
- package/dist/hybrid-search.js +192 -56
- package/dist/hybrid-search.js.map +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/knowledge-compiler.d.ts +48 -0
- package/dist/knowledge-compiler.d.ts.map +1 -0
- package/dist/knowledge-compiler.js +121 -0
- package/dist/knowledge-compiler.js.map +1 -0
- package/dist/knowledge-engine.d.ts +25 -1
- package/dist/knowledge-engine.d.ts.map +1 -1
- package/dist/knowledge-engine.js +499 -64
- package/dist/knowledge-engine.js.map +1 -1
- package/dist/knowledge-quality.d.ts +3 -0
- package/dist/knowledge-quality.d.ts.map +1 -1
- package/dist/knowledge-quality.js +14 -5
- package/dist/knowledge-quality.js.map +1 -1
- package/dist/knowledge-store.d.ts +61 -0
- package/dist/knowledge-store.d.ts.map +1 -1
- package/dist/knowledge-store.js +448 -1
- package/dist/knowledge-store.js.map +1 -1
- package/dist/markdown-converter.d.ts +1 -1
- package/dist/markdown-converter.js +1 -1
- package/dist/retrieval-scoring-profile.d.ts +20 -0
- package/dist/retrieval-scoring-profile.d.ts.map +1 -0
- package/dist/retrieval-scoring-profile.js +35 -0
- package/dist/retrieval-scoring-profile.js.map +1 -0
- package/dist/source-catalog.d.ts +57 -0
- package/dist/source-catalog.d.ts.map +1 -0
- package/dist/source-catalog.js +351 -0
- package/dist/source-catalog.js.map +1 -0
- package/dist/source-readiness.d.ts +7 -0
- package/dist/source-readiness.d.ts.map +1 -1
- package/dist/source-readiness.js +31 -2
- package/dist/source-readiness.js.map +1 -1
- package/dist/source-selector.d.ts +11 -0
- package/dist/source-selector.d.ts.map +1 -1
- package/dist/source-selector.js +160 -15
- package/dist/source-selector.js.map +1 -1
- package/dist/structural-markdown-chunker.d.ts +33 -0
- package/dist/structural-markdown-chunker.d.ts.map +1 -0
- package/dist/structural-markdown-chunker.js +328 -0
- package/dist/structural-markdown-chunker.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -5
package/dist/knowledge-store.js
CHANGED
|
@@ -5,7 +5,7 @@ import { existsSync, mkdirSync } from 'node:fs';
|
|
|
5
5
|
import { resolveKnowledgeTitle } from './result-quality.js';
|
|
6
6
|
import { KNOWLEDGE_CHUNK_POLICY_VERSION } from './markdown-converter.js';
|
|
7
7
|
import { createHash } from 'node:crypto';
|
|
8
|
-
import { extractApiIdentifiers, inferKnowledgeChunkKind } from './markdown-converter.js';
|
|
8
|
+
import { extractApiIdentifiers, extractCodeBlocks, inferKnowledgeChunkKind } from './markdown-converter.js';
|
|
9
9
|
const KNOWLEDGE_SCHEMA = `
|
|
10
10
|
CREATE TABLE IF NOT EXISTS knowledge_docs (
|
|
11
11
|
id TEXT PRIMARY KEY,
|
|
@@ -58,6 +58,111 @@ CREATE TABLE IF NOT EXISTS knowledge_source_readiness (
|
|
|
58
58
|
updated_at INTEGER NOT NULL
|
|
59
59
|
);
|
|
60
60
|
`;
|
|
61
|
+
const COMPILED_KNOWLEDGE_SCHEMA = `
|
|
62
|
+
CREATE TABLE IF NOT EXISTS knowledge_project_profiles (
|
|
63
|
+
project_root TEXT PRIMARY KEY,
|
|
64
|
+
profile_hash TEXT NOT NULL,
|
|
65
|
+
profile_json TEXT NOT NULL,
|
|
66
|
+
generated_at INTEGER NOT NULL
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
CREATE TABLE IF NOT EXISTS knowledge_source_schemas (
|
|
70
|
+
id TEXT PRIMARY KEY,
|
|
71
|
+
source_id TEXT NOT NULL,
|
|
72
|
+
source_kind TEXT NOT NULL,
|
|
73
|
+
authority TEXT NOT NULL,
|
|
74
|
+
schema_version INTEGER NOT NULL,
|
|
75
|
+
content_hash TEXT NOT NULL,
|
|
76
|
+
schema_json TEXT NOT NULL,
|
|
77
|
+
updated_at INTEGER NOT NULL
|
|
78
|
+
);
|
|
79
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_source_schemas_source
|
|
80
|
+
ON knowledge_source_schemas(source_id, schema_version DESC);
|
|
81
|
+
|
|
82
|
+
CREATE TABLE IF NOT EXISTS knowledge_catalog_snapshots (
|
|
83
|
+
id TEXT PRIMARY KEY,
|
|
84
|
+
project_root TEXT NOT NULL,
|
|
85
|
+
profile_hash TEXT NOT NULL,
|
|
86
|
+
source_id TEXT NOT NULL,
|
|
87
|
+
schema_id TEXT NOT NULL,
|
|
88
|
+
content_hash TEXT NOT NULL,
|
|
89
|
+
entry_json TEXT NOT NULL,
|
|
90
|
+
status TEXT NOT NULL CHECK(status IN ('active', 'inactive')),
|
|
91
|
+
created_at INTEGER NOT NULL,
|
|
92
|
+
activated_at INTEGER,
|
|
93
|
+
UNIQUE(project_root, source_id, content_hash)
|
|
94
|
+
);
|
|
95
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_knowledge_catalog_active_source
|
|
96
|
+
ON knowledge_catalog_snapshots(project_root, source_id) WHERE status = 'active';
|
|
97
|
+
|
|
98
|
+
CREATE TABLE IF NOT EXISTS knowledge_pages (
|
|
99
|
+
id TEXT PRIMARY KEY,
|
|
100
|
+
project_root TEXT NOT NULL,
|
|
101
|
+
source_id TEXT NOT NULL,
|
|
102
|
+
source_schema_id TEXT NOT NULL,
|
|
103
|
+
title TEXT NOT NULL,
|
|
104
|
+
markdown TEXT NOT NULL,
|
|
105
|
+
frontmatter TEXT NOT NULL DEFAULT '{}',
|
|
106
|
+
entities TEXT NOT NULL DEFAULT '[]',
|
|
107
|
+
symbols TEXT NOT NULL DEFAULT '[]',
|
|
108
|
+
links TEXT NOT NULL DEFAULT '[]',
|
|
109
|
+
version TEXT,
|
|
110
|
+
content_hash TEXT NOT NULL,
|
|
111
|
+
provenance TEXT NOT NULL,
|
|
112
|
+
status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('staging', 'active', 'inactive', 'quarantined')),
|
|
113
|
+
compiled_at INTEGER NOT NULL
|
|
114
|
+
);
|
|
115
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_pages_source
|
|
116
|
+
ON knowledge_pages(project_root, source_id, status, content_hash);
|
|
117
|
+
|
|
118
|
+
CREATE TABLE IF NOT EXISTS knowledge_entity_links (
|
|
119
|
+
page_id TEXT NOT NULL REFERENCES knowledge_pages(id) ON DELETE CASCADE,
|
|
120
|
+
chunk_id TEXT NOT NULL DEFAULT '',
|
|
121
|
+
entity TEXT NOT NULL,
|
|
122
|
+
normalized_entity TEXT NOT NULL,
|
|
123
|
+
PRIMARY KEY(page_id, chunk_id, normalized_entity)
|
|
124
|
+
);
|
|
125
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_entity_links_lookup
|
|
126
|
+
ON knowledge_entity_links(normalized_entity, page_id, chunk_id);
|
|
127
|
+
|
|
128
|
+
CREATE TABLE IF NOT EXISTS knowledge_symbol_links (
|
|
129
|
+
page_id TEXT NOT NULL REFERENCES knowledge_pages(id) ON DELETE CASCADE,
|
|
130
|
+
chunk_id TEXT NOT NULL DEFAULT '',
|
|
131
|
+
symbol TEXT NOT NULL,
|
|
132
|
+
normalized_symbol TEXT NOT NULL,
|
|
133
|
+
PRIMARY KEY(page_id, chunk_id, normalized_symbol)
|
|
134
|
+
);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_symbol_links_lookup
|
|
136
|
+
ON knowledge_symbol_links(normalized_symbol, page_id, chunk_id);
|
|
137
|
+
|
|
138
|
+
CREATE TABLE IF NOT EXISTS knowledge_refresh_jobs (
|
|
139
|
+
id TEXT PRIMARY KEY,
|
|
140
|
+
project_root TEXT NOT NULL,
|
|
141
|
+
source_id TEXT NOT NULL,
|
|
142
|
+
input_content_hash TEXT NOT NULL,
|
|
143
|
+
previous_snapshot_id TEXT,
|
|
144
|
+
output_snapshot_id TEXT,
|
|
145
|
+
status TEXT NOT NULL CHECK(status IN ('pending', 'compiling', 'completed', 'failed')),
|
|
146
|
+
error TEXT,
|
|
147
|
+
created_at INTEGER NOT NULL,
|
|
148
|
+
updated_at INTEGER NOT NULL,
|
|
149
|
+
UNIQUE(project_root, source_id, input_content_hash)
|
|
150
|
+
);
|
|
151
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_refresh_jobs_source
|
|
152
|
+
ON knowledge_refresh_jobs(project_root, source_id, updated_at DESC);
|
|
153
|
+
|
|
154
|
+
CREATE TABLE IF NOT EXISTS knowledge_coverage_gaps (
|
|
155
|
+
id TEXT PRIMARY KEY,
|
|
156
|
+
project_root TEXT NOT NULL,
|
|
157
|
+
source_id TEXT NOT NULL,
|
|
158
|
+
kind TEXT NOT NULL,
|
|
159
|
+
gap_json TEXT NOT NULL,
|
|
160
|
+
detected_at INTEGER NOT NULL,
|
|
161
|
+
resolved_at INTEGER
|
|
162
|
+
);
|
|
163
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_coverage_gaps_active
|
|
164
|
+
ON knowledge_coverage_gaps(project_root, source_id, resolved_at, detected_at DESC);
|
|
165
|
+
`;
|
|
61
166
|
const FTS_TRIGGERS = `
|
|
62
167
|
CREATE TRIGGER IF NOT EXISTS kchunks_ai AFTER INSERT ON knowledge_chunks BEGIN
|
|
63
168
|
INSERT INTO knowledge_fts(rowid, id, heading_path, content, code_blocks)
|
|
@@ -87,6 +192,7 @@ export class KnowledgeStore {
|
|
|
87
192
|
sqliteVec.load(this.db);
|
|
88
193
|
this.db.exec(KNOWLEDGE_SCHEMA);
|
|
89
194
|
this.migrateQualitySchema();
|
|
195
|
+
this.migrateCompiledKnowledgeSchema();
|
|
90
196
|
this.ensureTrigramFts();
|
|
91
197
|
this.db.exec(FTS_TRIGGERS);
|
|
92
198
|
}
|
|
@@ -106,6 +212,25 @@ export class KnowledgeStore {
|
|
|
106
212
|
addChunkColumn('source_url', 'ALTER TABLE knowledge_chunks ADD COLUMN source_url TEXT');
|
|
107
213
|
addChunkColumn('content_hash', "ALTER TABLE knowledge_chunks ADD COLUMN content_hash TEXT NOT NULL DEFAULT ''");
|
|
108
214
|
}
|
|
215
|
+
migrateCompiledKnowledgeSchema() {
|
|
216
|
+
this.db.exec(COMPILED_KNOWLEDGE_SCHEMA);
|
|
217
|
+
const chunkColumns = this.db.pragma('table_info(knowledge_chunks)');
|
|
218
|
+
const add = (name, sql) => {
|
|
219
|
+
if (!chunkColumns.some(column => column.name === name))
|
|
220
|
+
this.db.exec(sql);
|
|
221
|
+
};
|
|
222
|
+
add('page_id', 'ALTER TABLE knowledge_chunks ADD COLUMN page_id TEXT');
|
|
223
|
+
add('project_root', "ALTER TABLE knowledge_chunks ADD COLUMN project_root TEXT NOT NULL DEFAULT ''");
|
|
224
|
+
add('heading_breadcrumbs', "ALTER TABLE knowledge_chunks ADD COLUMN heading_breadcrumbs TEXT NOT NULL DEFAULT '[]'");
|
|
225
|
+
add('embedding_text', "ALTER TABLE knowledge_chunks ADD COLUMN embedding_text TEXT NOT NULL DEFAULT ''");
|
|
226
|
+
add('original_start', 'ALTER TABLE knowledge_chunks ADD COLUMN original_start INTEGER');
|
|
227
|
+
add('original_end', 'ALTER TABLE knowledge_chunks ADD COLUMN original_end INTEGER');
|
|
228
|
+
add('entities', "ALTER TABLE knowledge_chunks ADD COLUMN entities TEXT NOT NULL DEFAULT '[]'");
|
|
229
|
+
add('symbols', "ALTER TABLE knowledge_chunks ADD COLUMN symbols TEXT NOT NULL DEFAULT '[]'");
|
|
230
|
+
add('links', "ALTER TABLE knowledge_chunks ADD COLUMN links TEXT NOT NULL DEFAULT '[]'");
|
|
231
|
+
add('oversized_atomic', 'ALTER TABLE knowledge_chunks ADD COLUMN oversized_atomic INTEGER NOT NULL DEFAULT 0');
|
|
232
|
+
add('provenance', "ALTER TABLE knowledge_chunks ADD COLUMN provenance TEXT NOT NULL DEFAULT '{}'");
|
|
233
|
+
}
|
|
109
234
|
ensureTrigramFts() {
|
|
110
235
|
const row = this.db.prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'knowledge_fts'").get();
|
|
111
236
|
if (/tokenize\s*=\s*['\"]?trigram/i.test(row?.sql ?? ''))
|
|
@@ -469,6 +594,300 @@ export class KnowledgeStore {
|
|
|
469
594
|
emptyTitleCount: emptyTitles.count,
|
|
470
595
|
};
|
|
471
596
|
}
|
|
597
|
+
upsertProjectProfile(profile) {
|
|
598
|
+
const existing = this.db.prepare('SELECT profile_hash FROM knowledge_project_profiles WHERE project_root = ?').get(profile.projectRoot);
|
|
599
|
+
if (existing?.profile_hash === profile.profileHash)
|
|
600
|
+
return false;
|
|
601
|
+
this.db.prepare(`
|
|
602
|
+
INSERT INTO knowledge_project_profiles (project_root, profile_hash, profile_json, generated_at)
|
|
603
|
+
VALUES (?, ?, ?, ?)
|
|
604
|
+
ON CONFLICT(project_root) DO UPDATE SET
|
|
605
|
+
profile_hash = excluded.profile_hash,
|
|
606
|
+
profile_json = excluded.profile_json,
|
|
607
|
+
generated_at = excluded.generated_at
|
|
608
|
+
`).run(profile.projectRoot, profile.profileHash, JSON.stringify(profile), profile.generatedAt);
|
|
609
|
+
return true;
|
|
610
|
+
}
|
|
611
|
+
getProjectProfile(projectRoot) {
|
|
612
|
+
const row = this.db.prepare('SELECT profile_json FROM knowledge_project_profiles WHERE project_root = ?').get(projectRoot);
|
|
613
|
+
return row ? JSON.parse(row.profile_json) : null;
|
|
614
|
+
}
|
|
615
|
+
upsertSourceSchema(schema, now = Date.now()) {
|
|
616
|
+
const existing = this.db.prepare('SELECT content_hash FROM knowledge_source_schemas WHERE id = ?').get(schema.id);
|
|
617
|
+
if (existing?.content_hash === schema.contentHash)
|
|
618
|
+
return false;
|
|
619
|
+
this.db.prepare(`
|
|
620
|
+
INSERT INTO knowledge_source_schemas
|
|
621
|
+
(id, source_id, source_kind, authority, schema_version, content_hash, schema_json, updated_at)
|
|
622
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
623
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
624
|
+
source_id = excluded.source_id,
|
|
625
|
+
source_kind = excluded.source_kind,
|
|
626
|
+
authority = excluded.authority,
|
|
627
|
+
schema_version = excluded.schema_version,
|
|
628
|
+
content_hash = excluded.content_hash,
|
|
629
|
+
schema_json = excluded.schema_json,
|
|
630
|
+
updated_at = excluded.updated_at
|
|
631
|
+
`).run(schema.id, schema.sourceId, schema.sourceKind, schema.authority, schema.schemaVersion, schema.contentHash, JSON.stringify(schema), now);
|
|
632
|
+
return true;
|
|
633
|
+
}
|
|
634
|
+
getSourceSchema(id) {
|
|
635
|
+
const row = this.db.prepare('SELECT schema_json FROM knowledge_source_schemas WHERE id = ?').get(id);
|
|
636
|
+
return row ? JSON.parse(row.schema_json) : null;
|
|
637
|
+
}
|
|
638
|
+
listSourceSchemas() {
|
|
639
|
+
return this.db.prepare('SELECT schema_json FROM knowledge_source_schemas ORDER BY source_id, schema_version DESC, id').all().map(row => JSON.parse(row.schema_json));
|
|
640
|
+
}
|
|
641
|
+
activateCatalogEntry(input) {
|
|
642
|
+
const activatedAt = input.activatedAt ?? Date.now();
|
|
643
|
+
const snapshotId = `catalog:${createHash('sha256').update([
|
|
644
|
+
input.projectRoot,
|
|
645
|
+
input.entry.sourceId,
|
|
646
|
+
input.entry.schemaId,
|
|
647
|
+
input.entry.contentHash,
|
|
648
|
+
].join('\0')).digest('hex').slice(0, 32)}`;
|
|
649
|
+
return this.db.transaction(() => {
|
|
650
|
+
const existing = this.db.prepare(`
|
|
651
|
+
SELECT id, status, entry_json FROM knowledge_catalog_snapshots
|
|
652
|
+
WHERE project_root = ? AND source_id = ? AND content_hash = ?
|
|
653
|
+
`).get(input.projectRoot, input.entry.sourceId, input.entry.contentHash);
|
|
654
|
+
const active = this.db.prepare(`
|
|
655
|
+
SELECT id FROM knowledge_catalog_snapshots
|
|
656
|
+
WHERE project_root = ? AND source_id = ? AND status = 'active'
|
|
657
|
+
`).get(input.projectRoot, input.entry.sourceId);
|
|
658
|
+
if (existing?.status === 'active' && active?.id === existing.id) {
|
|
659
|
+
const entryJson = JSON.stringify(input.entry);
|
|
660
|
+
if (existing.entry_json !== entryJson) {
|
|
661
|
+
this.db.prepare(`
|
|
662
|
+
UPDATE knowledge_catalog_snapshots
|
|
663
|
+
SET profile_hash = ?, schema_id = ?, entry_json = ?, activated_at = ?
|
|
664
|
+
WHERE id = ?
|
|
665
|
+
`).run(input.profileHash, input.entry.schemaId, entryJson, activatedAt, existing.id);
|
|
666
|
+
}
|
|
667
|
+
return { snapshotId: existing.id, changed: false };
|
|
668
|
+
}
|
|
669
|
+
this.db.prepare(`
|
|
670
|
+
UPDATE knowledge_catalog_snapshots SET status = 'inactive'
|
|
671
|
+
WHERE project_root = ? AND source_id = ? AND status = 'active'
|
|
672
|
+
`).run(input.projectRoot, input.entry.sourceId);
|
|
673
|
+
if (existing) {
|
|
674
|
+
this.db.prepare(`
|
|
675
|
+
UPDATE knowledge_catalog_snapshots
|
|
676
|
+
SET profile_hash = ?, schema_id = ?, entry_json = ?, status = 'active', activated_at = ?
|
|
677
|
+
WHERE id = ?
|
|
678
|
+
`).run(input.profileHash, input.entry.schemaId, JSON.stringify(input.entry), activatedAt, existing.id);
|
|
679
|
+
return { snapshotId: existing.id, changed: true };
|
|
680
|
+
}
|
|
681
|
+
this.db.prepare(`
|
|
682
|
+
INSERT INTO knowledge_catalog_snapshots
|
|
683
|
+
(id, project_root, profile_hash, source_id, schema_id, content_hash,
|
|
684
|
+
entry_json, status, created_at, activated_at)
|
|
685
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 'active', ?, ?)
|
|
686
|
+
`).run(snapshotId, input.projectRoot, input.profileHash, input.entry.sourceId, input.entry.schemaId, input.entry.contentHash, JSON.stringify(input.entry), activatedAt, activatedAt);
|
|
687
|
+
return { snapshotId, changed: true };
|
|
688
|
+
})();
|
|
689
|
+
}
|
|
690
|
+
listActiveCatalogEntries(projectRoot) {
|
|
691
|
+
return this.db.prepare(`
|
|
692
|
+
SELECT id, entry_json FROM knowledge_catalog_snapshots
|
|
693
|
+
WHERE project_root = ? AND status = 'active'
|
|
694
|
+
ORDER BY source_id
|
|
695
|
+
`).all(projectRoot).map(row => ({
|
|
696
|
+
...JSON.parse(row.entry_json),
|
|
697
|
+
activeRevisionId: row.id,
|
|
698
|
+
}));
|
|
699
|
+
}
|
|
700
|
+
beginRefreshJob(input) {
|
|
701
|
+
const now = input.now ?? Date.now();
|
|
702
|
+
const id = `refresh:${createHash('sha256').update([
|
|
703
|
+
input.projectRoot,
|
|
704
|
+
input.sourceId,
|
|
705
|
+
input.inputContentHash,
|
|
706
|
+
].join('\0')).digest('hex').slice(0, 32)}`;
|
|
707
|
+
const existing = this.db.prepare('SELECT status FROM knowledge_refresh_jobs WHERE id = ?').get(id);
|
|
708
|
+
if (existing?.status === 'completed')
|
|
709
|
+
return { id, status: 'completed', resumed: false };
|
|
710
|
+
const active = this.db.prepare(`
|
|
711
|
+
SELECT id FROM knowledge_catalog_snapshots
|
|
712
|
+
WHERE project_root = ? AND source_id = ? AND status = 'active'
|
|
713
|
+
`).get(input.projectRoot, input.sourceId);
|
|
714
|
+
this.db.prepare(`
|
|
715
|
+
INSERT INTO knowledge_refresh_jobs
|
|
716
|
+
(id, project_root, source_id, input_content_hash, previous_snapshot_id,
|
|
717
|
+
status, created_at, updated_at)
|
|
718
|
+
VALUES (?, ?, ?, ?, ?, 'compiling', ?, ?)
|
|
719
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
720
|
+
status = 'compiling', error = NULL, updated_at = excluded.updated_at
|
|
721
|
+
`).run(id, input.projectRoot, input.sourceId, input.inputContentHash, active?.id ?? null, now, now);
|
|
722
|
+
return { id, status: 'compiling', resumed: existing !== undefined };
|
|
723
|
+
}
|
|
724
|
+
completeRefreshJob(id, outputSnapshotId, now = Date.now()) {
|
|
725
|
+
return this.db.prepare(`
|
|
726
|
+
UPDATE knowledge_refresh_jobs
|
|
727
|
+
SET status = 'completed', output_snapshot_id = ?, error = NULL, updated_at = ?
|
|
728
|
+
WHERE id = ? AND status <> 'completed'
|
|
729
|
+
`).run(outputSnapshotId, now, id).changes === 1;
|
|
730
|
+
}
|
|
731
|
+
failRefreshJob(id, error, now = Date.now()) {
|
|
732
|
+
return this.db.prepare(`
|
|
733
|
+
UPDATE knowledge_refresh_jobs
|
|
734
|
+
SET status = 'failed', error = ?, updated_at = ?
|
|
735
|
+
WHERE id = ? AND status <> 'completed'
|
|
736
|
+
`).run(error.slice(0, 1_000), now, id).changes === 1;
|
|
737
|
+
}
|
|
738
|
+
getRefreshJob(id) {
|
|
739
|
+
return this.db.prepare('SELECT * FROM knowledge_refresh_jobs WHERE id = ?').get(id) ?? null;
|
|
740
|
+
}
|
|
741
|
+
recordCoverageGap(gap) {
|
|
742
|
+
const result = this.db.prepare(`
|
|
743
|
+
INSERT INTO knowledge_coverage_gaps
|
|
744
|
+
(id, project_root, source_id, kind, gap_json, detected_at, resolved_at)
|
|
745
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
746
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
747
|
+
gap_json = excluded.gap_json,
|
|
748
|
+
detected_at = excluded.detected_at,
|
|
749
|
+
resolved_at = excluded.resolved_at
|
|
750
|
+
`).run(gap.id, gap.projectRoot, gap.sourceId, gap.kind, JSON.stringify(gap), gap.detectedAt, gap.resolvedAt ?? null);
|
|
751
|
+
return result.changes === 1;
|
|
752
|
+
}
|
|
753
|
+
resolveCoverageGap(id, resolvedAt = Date.now()) {
|
|
754
|
+
const row = this.db.prepare('SELECT gap_json FROM knowledge_coverage_gaps WHERE id = ? AND resolved_at IS NULL').get(id);
|
|
755
|
+
if (!row)
|
|
756
|
+
return false;
|
|
757
|
+
const gap = JSON.parse(row.gap_json);
|
|
758
|
+
gap.resolvedAt = resolvedAt;
|
|
759
|
+
return this.db.prepare(`
|
|
760
|
+
UPDATE knowledge_coverage_gaps SET resolved_at = ?, gap_json = ? WHERE id = ?
|
|
761
|
+
`).run(resolvedAt, JSON.stringify(gap), id).changes === 1;
|
|
762
|
+
}
|
|
763
|
+
listCoverageGaps(projectRoot, options = {}) {
|
|
764
|
+
const sql = options.includeResolved
|
|
765
|
+
? 'SELECT gap_json FROM knowledge_coverage_gaps WHERE project_root = ? ORDER BY detected_at DESC, id'
|
|
766
|
+
: 'SELECT gap_json FROM knowledge_coverage_gaps WHERE project_root = ? AND resolved_at IS NULL ORDER BY detected_at DESC, id';
|
|
767
|
+
return this.db.prepare(sql).all(projectRoot).map(row => JSON.parse(row.gap_json));
|
|
768
|
+
}
|
|
769
|
+
upsertNormalizedPage(page) {
|
|
770
|
+
if (page.provenance.contentHash !== page.contentHash || page.provenance.immutable !== true) {
|
|
771
|
+
throw new Error(`Knowledge page ${page.id} has invalid immutable provenance`);
|
|
772
|
+
}
|
|
773
|
+
const existing = this.db.prepare('SELECT project_root, source_id, content_hash FROM knowledge_pages WHERE id = ?').get(page.id);
|
|
774
|
+
if (existing && (existing.project_root !== page.projectRoot || existing.source_id !== page.sourceId)) {
|
|
775
|
+
throw new Error(`Knowledge page ${page.id} cannot move across project or source boundaries`);
|
|
776
|
+
}
|
|
777
|
+
if (existing?.content_hash === page.contentHash)
|
|
778
|
+
return false;
|
|
779
|
+
this.db.transaction(() => {
|
|
780
|
+
this.db.prepare(`
|
|
781
|
+
INSERT INTO knowledge_pages
|
|
782
|
+
(id, project_root, source_id, source_schema_id, title, markdown, frontmatter,
|
|
783
|
+
entities, symbols, links, version, content_hash, provenance, status, compiled_at)
|
|
784
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active', ?)
|
|
785
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
786
|
+
source_schema_id = excluded.source_schema_id,
|
|
787
|
+
title = excluded.title,
|
|
788
|
+
markdown = excluded.markdown,
|
|
789
|
+
frontmatter = excluded.frontmatter,
|
|
790
|
+
entities = excluded.entities,
|
|
791
|
+
symbols = excluded.symbols,
|
|
792
|
+
links = excluded.links,
|
|
793
|
+
version = excluded.version,
|
|
794
|
+
content_hash = excluded.content_hash,
|
|
795
|
+
provenance = excluded.provenance,
|
|
796
|
+
status = 'active',
|
|
797
|
+
compiled_at = excluded.compiled_at
|
|
798
|
+
`).run(page.id, page.projectRoot, page.sourceId, page.sourceSchemaId, page.title, page.markdown, JSON.stringify(page.frontmatter), JSON.stringify(page.entities), JSON.stringify(page.symbols), JSON.stringify(page.links), page.version ?? null, page.contentHash, JSON.stringify(page.provenance), page.compiledAt);
|
|
799
|
+
this.replacePageLinks(page);
|
|
800
|
+
})();
|
|
801
|
+
return true;
|
|
802
|
+
}
|
|
803
|
+
replaceCompiledPage(page, chunks) {
|
|
804
|
+
if (chunks.some(chunk => chunk.pageId !== page.id
|
|
805
|
+
|| chunk.projectRoot !== page.projectRoot
|
|
806
|
+
|| chunk.sourceId !== page.sourceId
|
|
807
|
+
|| chunk.provenance.contentHash !== page.contentHash)) {
|
|
808
|
+
throw new Error(`Compiled chunks for ${page.id} do not share page provenance`);
|
|
809
|
+
}
|
|
810
|
+
const oldIds = this.db.prepare('SELECT id FROM knowledge_chunks WHERE page_id = ? OR doc_id = ?').all(page.id, page.id);
|
|
811
|
+
const deleteVector = this.db.prepare('DELETE FROM knowledge_vec WHERE id = ?');
|
|
812
|
+
const insert = this.db.prepare(`
|
|
813
|
+
INSERT INTO knowledge_chunks
|
|
814
|
+
(id, doc_id, chunk_index, heading_path, content, code_blocks, token_count,
|
|
815
|
+
chunk_kind, framework, api_identifiers, source_url, content_hash,
|
|
816
|
+
page_id, project_root, heading_breadcrumbs, embedding_text, original_start,
|
|
817
|
+
original_end, entities, symbols, links, oversized_atomic, provenance)
|
|
818
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
819
|
+
`);
|
|
820
|
+
this.db.transaction(() => {
|
|
821
|
+
this.upsertNormalizedPage(page);
|
|
822
|
+
this.upsertDoc({
|
|
823
|
+
id: page.id,
|
|
824
|
+
source: page.sourceId,
|
|
825
|
+
url: page.provenance.sourceUri,
|
|
826
|
+
title: page.title,
|
|
827
|
+
version: page.version,
|
|
828
|
+
contentHash: page.contentHash,
|
|
829
|
+
chunkPolicyVersion: KNOWLEDGE_CHUNK_POLICY_VERSION,
|
|
830
|
+
});
|
|
831
|
+
for (const row of oldIds)
|
|
832
|
+
deleteVector.run(row.id);
|
|
833
|
+
this.db.prepare('DELETE FROM knowledge_chunks WHERE page_id = ? OR doc_id = ?')
|
|
834
|
+
.run(page.id, page.id);
|
|
835
|
+
const insertEntity = this.db.prepare(`
|
|
836
|
+
INSERT OR IGNORE INTO knowledge_entity_links
|
|
837
|
+
(page_id, chunk_id, entity, normalized_entity) VALUES (?, ?, ?, ?)
|
|
838
|
+
`);
|
|
839
|
+
const insertSymbol = this.db.prepare(`
|
|
840
|
+
INSERT OR IGNORE INTO knowledge_symbol_links
|
|
841
|
+
(page_id, chunk_id, symbol, normalized_symbol) VALUES (?, ?, ?, ?)
|
|
842
|
+
`);
|
|
843
|
+
for (const chunk of chunks) {
|
|
844
|
+
insert.run(chunk.id, page.id, chunk.index, chunk.headingBreadcrumbs.join(' > '), chunk.content, extractCodeBlocks(chunk.content) || null, estimateStoredTokens(chunk.content), chunk.kind, page.sourceId, JSON.stringify(chunk.symbols), page.provenance.sourceUri, chunk.contentHash, page.id, page.projectRoot, JSON.stringify(chunk.headingBreadcrumbs), chunk.embeddingText, chunk.originalStart, chunk.originalEnd, JSON.stringify(chunk.entities), JSON.stringify(chunk.symbols), JSON.stringify(chunk.links), chunk.oversizedAtomic ? 1 : 0, JSON.stringify(chunk.provenance));
|
|
845
|
+
for (const entity of uniqueStrings(chunk.entities)) {
|
|
846
|
+
insertEntity.run(page.id, chunk.id, entity, normalizeKnowledgeLookupKey(entity));
|
|
847
|
+
}
|
|
848
|
+
for (const symbol of uniqueStrings(chunk.symbols)) {
|
|
849
|
+
insertSymbol.run(page.id, chunk.id, symbol, normalizeKnowledgeLookupKey(symbol));
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
})();
|
|
853
|
+
}
|
|
854
|
+
getNormalizedPage(id) {
|
|
855
|
+
const row = this.db.prepare("SELECT * FROM knowledge_pages WHERE id = ? AND status = 'active'").get(id);
|
|
856
|
+
return row ? {
|
|
857
|
+
id: row.id,
|
|
858
|
+
projectRoot: row.project_root,
|
|
859
|
+
sourceId: row.source_id,
|
|
860
|
+
sourceSchemaId: row.source_schema_id,
|
|
861
|
+
title: row.title,
|
|
862
|
+
markdown: row.markdown,
|
|
863
|
+
frontmatter: JSON.parse(row.frontmatter),
|
|
864
|
+
entities: parseStringArray(row.entities),
|
|
865
|
+
symbols: parseStringArray(row.symbols),
|
|
866
|
+
links: parseStringArray(row.links),
|
|
867
|
+
version: row.version ?? undefined,
|
|
868
|
+
contentHash: row.content_hash,
|
|
869
|
+
provenance: JSON.parse(row.provenance),
|
|
870
|
+
compiledAt: row.compiled_at,
|
|
871
|
+
} : null;
|
|
872
|
+
}
|
|
873
|
+
replacePageLinks(page) {
|
|
874
|
+
this.db.prepare('DELETE FROM knowledge_entity_links WHERE page_id = ?').run(page.id);
|
|
875
|
+
this.db.prepare('DELETE FROM knowledge_symbol_links WHERE page_id = ?').run(page.id);
|
|
876
|
+
const insertEntity = this.db.prepare(`
|
|
877
|
+
INSERT OR IGNORE INTO knowledge_entity_links
|
|
878
|
+
(page_id, chunk_id, entity, normalized_entity) VALUES (?, '', ?, ?)
|
|
879
|
+
`);
|
|
880
|
+
const insertSymbol = this.db.prepare(`
|
|
881
|
+
INSERT OR IGNORE INTO knowledge_symbol_links
|
|
882
|
+
(page_id, chunk_id, symbol, normalized_symbol) VALUES (?, '', ?, ?)
|
|
883
|
+
`);
|
|
884
|
+
for (const entity of uniqueStrings(page.entities)) {
|
|
885
|
+
insertEntity.run(page.id, entity, normalizeKnowledgeLookupKey(entity));
|
|
886
|
+
}
|
|
887
|
+
for (const symbol of uniqueStrings(page.symbols)) {
|
|
888
|
+
insertSymbol.run(page.id, symbol, normalizeKnowledgeLookupKey(symbol));
|
|
889
|
+
}
|
|
890
|
+
}
|
|
472
891
|
close() { this.db.close(); }
|
|
473
892
|
}
|
|
474
893
|
function enrichChunkMetadata(chunk, source, url, headingPath) {
|
|
@@ -484,4 +903,32 @@ function isPollutedHeading(value) {
|
|
|
484
903
|
return /(?:^| > )(?:menu|sidebar|table of contents|previous|next|edit this page|on this page)(?:$| > )/iu.test(value)
|
|
485
904
|
|| /#undefined|\[\]\(/iu.test(value);
|
|
486
905
|
}
|
|
906
|
+
function parseStringArray(value) {
|
|
907
|
+
try {
|
|
908
|
+
const parsed = JSON.parse(value);
|
|
909
|
+
return Array.isArray(parsed)
|
|
910
|
+
? parsed.filter((entry) => typeof entry === 'string')
|
|
911
|
+
: [];
|
|
912
|
+
}
|
|
913
|
+
catch {
|
|
914
|
+
return [];
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
function uniqueStrings(values) {
|
|
918
|
+
const seen = new Set();
|
|
919
|
+
return values.filter(value => {
|
|
920
|
+
const key = normalizeKnowledgeLookupKey(value);
|
|
921
|
+
if (!key || seen.has(key))
|
|
922
|
+
return false;
|
|
923
|
+
seen.add(key);
|
|
924
|
+
return true;
|
|
925
|
+
});
|
|
926
|
+
}
|
|
927
|
+
function normalizeKnowledgeLookupKey(value) {
|
|
928
|
+
return value.normalize('NFKC').trim().toLocaleLowerCase('en-US').replace(/\s+/gu, ' ');
|
|
929
|
+
}
|
|
930
|
+
function estimateStoredTokens(value) {
|
|
931
|
+
const cjk = value.match(/[\u3400-\u9fff\uf900-\ufaff]/gu)?.length ?? 0;
|
|
932
|
+
return Math.max(1, cjk + Math.ceil((value.length - cjk) / 4));
|
|
933
|
+
}
|
|
487
934
|
//# sourceMappingURL=knowledge-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../src/knowledge-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../src/knowledge-store.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AA2E5G,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDxB,CAAC;AAEF,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGjC,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;CAepB,CAAC;AAEF,MAAM,OAAO,cAAc;IACjB,EAAE,CAAoB;IAE9B,YAAY,MAAc;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAEO,oBAAoB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAA4B,CAAC;QACxF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAsB,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAA4B,CAAC;QAC/F,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,GAAW,EAAQ,EAAE;YACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;gBAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC,CAAC;QACF,cAAc,CAAC,YAAY,EAAE,qFAAqF,CAAC,CAAC;QACpH,cAAc,CAAC,WAAW,EAAE,wDAAwD,CAAC,CAAC;QACtF,cAAc,CAAC,iBAAiB,EAAE,oFAAoF,CAAC,CAAC;QACxH,cAAc,CAAC,YAAY,EAAE,yDAAyD,CAAC,CAAC;QACxF,cAAc,CAAC,cAAc,EAAE,+EAA+E,CAAC,CAAC;IAClH,CAAC;IAEO,8BAA8B;QACpC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAA4B,CAAC;QAC/F,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,GAAW,EAAQ,EAAE;YAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;gBAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC,CAAC;QACF,GAAG,CAAC,SAAS,EAAE,sDAAsD,CAAC,CAAC;QACvE,GAAG,CAAC,cAAc,EAAE,+EAA+E,CAAC,CAAC;QACrG,GAAG,CAAC,qBAAqB,EAAE,wFAAwF,CAAC,CAAC;QACrH,GAAG,CAAC,gBAAgB,EAAE,iFAAiF,CAAC,CAAC;QACzG,GAAG,CAAC,gBAAgB,EAAE,gEAAgE,CAAC,CAAC;QACxF,GAAG,CAAC,cAAc,EAAE,8DAA8D,CAAC,CAAC;QACpF,GAAG,CAAC,UAAU,EAAE,6EAA6E,CAAC,CAAC;QAC/F,GAAG,CAAC,SAAS,EAAE,4EAA4E,CAAC,CAAC;QAC7F,GAAG,CAAC,OAAO,EAAE,0EAA0E,CAAC,CAAC;QACzF,GAAG,CAAC,kBAAkB,EAAE,qFAAqF,CAAC,CAAC;QAC/G,GAAG,CAAC,YAAY,EAAE,+EAA+E,CAAC,CAAC;IACrG,CAAC;IAEO,gBAAgB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,+EAA+E,CAChF,CAAC,GAAG,EAAkC,CAAC;QACxC,IAAI,+BAA+B,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAAE,OAAO;QAEjE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;OAWZ,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,SAAS,CAAC,GAAsB;QAC9B,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,aAAa,EAAE,GAAG,CAAC,KAAK;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;SACb,CAAC,CAAC;QACH,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3F,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,gIAAgI,CACjI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,GAAG,CAAC,kBAAkB,IAAI,8BAA8B,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3I,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,uIAAuI,CACxI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,GAAG,CAAC,kBAAkB,IAAI,8BAA8B,CAAC,CAAC;QAChK,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW,CAAC,KAA0B;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,4DAA4D,CAC7D,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAsE,CAAC;QACxF,MAAM,WAAW,GAAG,qBAAqB,CAAC;YACxC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,aAAa,EAAE,GAAG,EAAE,KAAK;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,GAAG,EAAE,MAAM;YACnB,GAAG,EAAE,GAAG,EAAE,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACzF,IAAI,iBAAiB,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAChF,IAAI,CAAC,EAAE,CAAC,OAAO,CACb;;;wCAGkC,CACnC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI,EAC5F,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,EACnE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/F,CAAC;IAED,eAAe,CAAC,EAAU,EAAE,SAAuB;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QACzF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACvG,CAAC;IAED,oBAAoB,CAAC,OAAuD;QAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,mEAAmE,CACpE,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC;gBACxC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,eAAe,CAAC,KAIf;QACC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,oCAAoC,KAAK,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,UAAU,CAAC,MAAM,UAAU,CACrG,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,kDAAkD,CACnD,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAA0B,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACjC;;;wCAGkC,CACnC,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAClC,wDAAwD,CACzD,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,MAAM;gBAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAE,CAAC;gBAC3C,WAAW,CAAC,GAAG,CACb,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,EAC1C,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,WAAW,CAClB,CAAC;gBACF,YAAY,CAAC,GAAG,CACd,KAAK,CAAC,EAAE,EACR,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAC1E,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,qBAAqB,CAAC,KAGrB;QACC,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,kDAAkD,CACnD,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAA0B,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACjC;;;wCAGkC,CACnC,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,MAAM;gBAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,WAAW,CAAC,GAAG,CACb,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,EAC1C,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,WAAW,CAClB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,yBAAyB,CAAC,MAAc,EAAE,gBAAwB;QAChE,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAItB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,kBAAkB,CAAC,UAAkB;QACnC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,kFAAkF,CACnF,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;IAClC,CAAC;IAEO,sBAAsB,CAC5B,GAAsB,EACtB,MAA6B;QAE7B,MAAM,KAAK,GAAG,qBAAqB,CAAC;YAClC,aAAa,EAAE,GAAG,CAAC,KAAK;YACxB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;SACb,CAAC,CAAC;QACH,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACpF,OAAO;YACL,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE;YACtB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACzB,MAAM,WAAW,GAAG,qBAAqB,CAAC;oBACxC,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,aAAa,EAAE,KAAK;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,GAAG,EAAE,GAAG,CAAC,GAAG;iBACb,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,EAAE,0BAA0B,CAAC,CAAC;gBACzF,IAAI,iBAAiB,CAAC,WAAW,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,EAAE,yBAAyB,CAAC,CAAC;gBAC1G,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;YACpG,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE,EAAE,OAAkB;QACtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;uDAIoB,YAAY;;OAE5D,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,KAAK,CAAwC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAwC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CACV,SAAuB,EACvB,KAAK,GAAG,EAAE,EACV,OAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QACzF,MAAM,YAAY,GAAG,OAAO,EAAE,MAAM;YAClC,CAAC,CAAC,sBAAsB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAC3D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;QAKzB,YAAY;;KAEf,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,CAA4C,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAQ,CAAC;IACvF,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,KAAK,GAAG,GAAG;QACtC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAItB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,UAIP,EAAE;QACJ,MAAM,UAAU,GAAa,CAAC,qBAAqB,CAAC,CAAC;QACrD,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;QACvC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;QAInB,KAAK;;;KAGR,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAwB,CAAC;IAClD,CAAC;IAED,0BAA0B,CAAC,UAIvB,EAAE;QACJ,MAAM,UAAU,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;cAKb,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;;KAGjC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAwB,CAAC;IAChE,CAAC;IAED,WAAW,CAAC,MAAe;QACzB,MAAM,GAAG,GAAG,MAAM;YAChB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAGf,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAChB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAGf,CAAC,CAAC,GAAG,EAAE,CAAC;QACb,OAAQ,GAAqB,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,eAAe,CAAC,MAAe;QAC7B,MAAM,GAAG,GAAG,MAAM;YAChB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;SAIf,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAChB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;SAIf,CAAC,CAAC,GAAG,EAAE,CAAC;QACb,OAAQ,GAAqB,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,mBAAmB;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAO5B,CAAC,CAAC,GAAG,EAAgE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB,CAAC,mBAAuD,EAAE;QAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;KAa5B,CAAC,CAAC,GAAG,EAGJ,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;KAU9B,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,KAAK,8BAA8B;uBAClE,GAAG,CAAC,UAAU,KAAK,8BAA8B,CAAC;gBACvD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,IAAI,aAAa;oBACrF,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,UAAU,CAAC;gBACf,MAAM,OAAO,GAAG,CAAC,aAAa;oBAC5B,CAAC,CAAC,uBAAuB;oBACzB,CAAC,CAAC,QAAQ,GAAG,IAAI;wBACf,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/C,MAAM,CAAC,GAAG,CACR,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAC3E,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,kBAAkB;QAKhB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,0DAA0D,CAC3D,CAAC,GAAG,EAAsD,CAAC;IAC9D,CAAC;IAED,kBAAkB;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC,GAAG,EAA+B,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;KAM9B,CAAC,CAAC,GAAG,EAAoC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE;YAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC;QACnG,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;KAMnC,CAAC,CAAC,GAAG,EAAuB,CAAC;QAC9B,OAAO;YACL,MAAM;YACN,OAAO;YACP,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,WAAW,EAAE;gBACX,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;gBACpB,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;gBACrB,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC;aACrC;YACD,eAAe,EAAE,WAAW,CAAC,KAAK;SACnC,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,OAAgC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC9B,4EAA4E,CAC7E,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAyC,CAAC;QACnE,IAAI,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QACjE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAOf,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,WAAmB;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,4EAA4E,CAC7E,CAAC,GAAG,CAAC,WAAW,CAAyC,CAAC;QAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAA4B,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,CAAC;IAED,kBAAkB,CAAC,MAA6B,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC9B,gEAAgE,CACjE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAyC,CAAC;QACzD,IAAI,QAAQ,EAAE,YAAY,KAAK,MAAM,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;KAYf,CAAC,CAAC,GAAG,CACJ,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,WAAW,EAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EACtB,GAAG,CACJ,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,EAAU;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,+DAA+D,CAChE,CAAC,GAAG,CAAC,EAAE,CAAwC,CAAC;QACjD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAA0B,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;IAED,iBAAiB;QACf,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CACrB,8FAA8F,CAC/F,CAAC,GAAG,EAAqC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACnD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAA0B,CAAC,CAAC;IAC1D,CAAC;IAED,oBAAoB,CAAC,KAKpB;QACC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,WAAW,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACxD,KAAK,CAAC,WAAW;YACjB,KAAK,CAAC,KAAK,CAAC,QAAQ;YACpB,KAAK,CAAC,KAAK,CAAC,QAAQ;YACpB,KAAK,CAAC,KAAK,CAAC,WAAW;SACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGhC,CAAC,CAAC,GAAG,CACJ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CAAC,QAAQ,EACpB,KAAK,CAAC,KAAK,CAAC,WAAW,CAC0C,CAAC;YACpE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAA+B,CAAC;YAC9E,IAAI,QAAQ,EAAE,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,EAAE,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACtC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;WAIf,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACvF,CAAC;gBACD,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGf,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;SAIf,CAAC,CAAC,GAAG,CACJ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CAAC,QAAQ,EACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAC3B,WAAW,EACX,QAAQ,CAAC,EAAE,CACZ,CAAC;gBACF,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKf,CAAC,CAAC,GAAG,CACJ,UAAU,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CAAC,QAAQ,EACpB,KAAK,CAAC,KAAK,CAAC,QAAQ,EACpB,KAAK,CAAC,KAAK,CAAC,WAAW,EACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAC3B,WAAW,EACX,WAAW,CACZ,CAAC;YACF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,wBAAwB,CAAC,WAAmB;QAC1C,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAIvB,CAAC,CAAC,GAAG,CAAC,WAAW,CAA+C,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5E,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAgC;YAC5D,gBAAgB,EAAE,GAAG,CAAC,EAAE;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,eAAe,CAAC,KAKf;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,WAAW,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YAChD,KAAK,CAAC,WAAW;YACjB,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,gBAAgB;SACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC9B,wDAAwD,CACzD,CAAC,GAAG,CAAC,EAAE,CAA6E,CAAC;QACtF,IAAI,QAAQ,EAAE,MAAM,KAAK,WAAW;YAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG9B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAA+B,CAAC;QACxE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAOf,CAAC,CAAC,GAAG,CACJ,EAAE,EACF,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,gBAAgB,EACtB,MAAM,EAAE,EAAE,IAAI,IAAI,EAClB,GAAG,EACH,GAAG,CACJ,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;IACtE,CAAC;IAED,kBAAkB,CAAC,EAAU,EAAE,gBAAwB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACvE,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAItB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,EAAU,EAAE,KAAa,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACxD,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAItB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,aAAa,CAAC,EAAU;QAYtB,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CACrB,mDAAmD,CACpD,CAAC,GAAG,CAAC,EAAE,CAAiD,IAAI,IAAI,CAAC;IACpE,CAAC;IAED,iBAAiB,CAAC,GAAyB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;KAQ9B,CAAC,CAAC,GAAG,CACJ,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,IAAI,EACR,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACnB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,IAAI,IAAI,CACvB,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,kBAAkB,CAAC,EAAU,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,mFAAmF,CACpF,CAAC,GAAG,CAAC,EAAE,CAAqC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAyB,CAAC;QAC7D,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;QAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEtB,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,gBAAgB,CAAC,WAAmB,EAAE,UAAyC,EAAE;QAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe;YACjC,CAAC,CAAC,mGAAmG;YACrG,CAAC,CAAC,2HAA2H,CAAC;QAChI,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAiC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACtF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAyB,CAAC,CAAC;IACtD,CAAC;IAED,oBAAoB,CAAC,IAA6B;QAChD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,EAAE,mCAAmC,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC9B,gFAAgF,CACjF,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAkF,CAAC;QAChG,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrG,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,EAAE,kDAAkD,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAC9D,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;OAkBf,CAAC,CAAC,GAAG,CACJ,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1B,IAAI,CAAC,OAAO,IAAI,IAAI,EACpB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC/B,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,IAA6B,EAAE,MAAgC;QACjF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;eAC5C,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;eACtC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;eAChC,KAAK,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,iEAAiE,CAClE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAA0B,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAO9B,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,IAAI,CAAC,QAAQ;gBACrB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;gBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,kBAAkB,EAAE,8BAA8B;aACnD,CAAC,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,MAAM;gBAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC;iBAC5E,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGpC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGpC,CAAC,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CACR,KAAK,CAAC,EAAE,EACR,IAAI,CAAC,EAAE,EACP,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EACpC,KAAK,CAAC,OAAO,EACb,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EACxC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EACnC,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7B,IAAI,CAAC,UAAU,CAAC,SAAS,EACzB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,EACxC,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAC3B,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CACjC,CAAC;gBACF,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnF,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,iBAAiB,CAAC,EAAU;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,kEAAkE,CACnE,CAAC,GAAG,CAAC,EAAE,CAKK,CAAC;QACd,OAAO,GAAG,CAAC,CAAC,CAAC;YACX,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAA4B;YACnE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;YACtC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;YAClC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YACjC,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YACtC,UAAU,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAEO,gBAAgB,CAAC,IAA6B;QACpD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGpC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGpC,CAAC,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC7B;AAED,SAAS,mBAAmB,CAC1B,KAA0B,EAC1B,MAA0B,EAC1B,GAAuB,EACvB,WAAmB;IAGnB,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;QACvE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,MAAM;QACpC,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,qBAAqB,CAAC,GAAG,WAAW,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACjG,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,kGAAkG,CAAC,IAAI,CAAC,KAAK,CAAC;WAChH,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;YACtE,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAgB;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC3B,MAAM,GAAG,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -11,7 +11,7 @@ export interface Chunk {
|
|
|
11
11
|
}
|
|
12
12
|
export declare const MIN_CHUNK_CHARS = 500;
|
|
13
13
|
export declare const MAX_CHUNK_CHARS = 3000;
|
|
14
|
-
export declare const KNOWLEDGE_CHUNK_POLICY_VERSION =
|
|
14
|
+
export declare const KNOWLEDGE_CHUNK_POLICY_VERSION = 3;
|
|
15
15
|
export declare const MAX_CHUNK_TOKENS = 3000;
|
|
16
16
|
export declare function extractCodeBlocks(text: string): string;
|
|
17
17
|
export declare function inferKnowledgeChunkKind(headingPath: string, content: string): KnowledgeChunkKind;
|
|
@@ -62,7 +62,7 @@ function isLinkDense(line) {
|
|
|
62
62
|
}
|
|
63
63
|
export const MIN_CHUNK_CHARS = 500;
|
|
64
64
|
export const MAX_CHUNK_CHARS = 3000;
|
|
65
|
-
export const KNOWLEDGE_CHUNK_POLICY_VERSION =
|
|
65
|
+
export const KNOWLEDGE_CHUNK_POLICY_VERSION = 3;
|
|
66
66
|
const TARGET_CHUNK_TOKENS = 1200;
|
|
67
67
|
export const MAX_CHUNK_TOKENS = 3000;
|
|
68
68
|
// Doctor measures stored chunk size in characters. Keep the default path
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type KnowledgeRetrievalChannel = 'exact' | 'bm25' | 'entity' | 'vector';
|
|
2
|
+
export interface KnowledgeRetrievalScoringProfile {
|
|
3
|
+
version: string;
|
|
4
|
+
rrfK: number;
|
|
5
|
+
channelWeights: Record<KnowledgeRetrievalChannel, number>;
|
|
6
|
+
pageTailWeight: number;
|
|
7
|
+
pageTailCap: number;
|
|
8
|
+
graphSeedMinimum: number;
|
|
9
|
+
graphCandidateMinimum: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const KNOWLEDGE_RETRIEVAL_SCORING_PROFILE: KnowledgeRetrievalScoringProfile;
|
|
12
|
+
export declare function weightedReciprocalRankFusion(input: {
|
|
13
|
+
channelRanks: Partial<Record<KnowledgeRetrievalChannel, string[]>>;
|
|
14
|
+
profile?: KnowledgeRetrievalScoringProfile;
|
|
15
|
+
}): Map<string, {
|
|
16
|
+
rawScore: number;
|
|
17
|
+
normalizedScore: number;
|
|
18
|
+
channelRanks: Partial<Record<KnowledgeRetrievalChannel, number>>;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=retrieval-scoring-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retrieval-scoring-profile.d.ts","sourceRoot":"","sources":["../src/retrieval-scoring-profile.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,mCAAmC,EAAE,gCAajD,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,gCAAgC,CAAC;CAC5C,GAAG,GAAG,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC,CAAC;CAClE,CAAC,CAwBD"}
|