@devflow-tools/knowledge-engine 0.16.27 → 0.16.28

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.
Files changed (70) hide show
  1. package/dist/context7-fetcher.d.ts +2 -0
  2. package/dist/context7-fetcher.d.ts.map +1 -1
  3. package/dist/context7-fetcher.js +35 -2
  4. package/dist/context7-fetcher.js.map +1 -1
  5. package/dist/dependency-source-compiler.d.ts +24 -0
  6. package/dist/dependency-source-compiler.d.ts.map +1 -0
  7. package/dist/dependency-source-compiler.js +265 -0
  8. package/dist/dependency-source-compiler.js.map +1 -0
  9. package/dist/evidence-graph.d.ts +24 -0
  10. package/dist/evidence-graph.d.ts.map +1 -0
  11. package/dist/evidence-graph.js +82 -0
  12. package/dist/evidence-graph.js.map +1 -0
  13. package/dist/fetcher.d.ts +11 -0
  14. package/dist/fetcher.d.ts.map +1 -1
  15. package/dist/fetcher.js +12 -0
  16. package/dist/fetcher.js.map +1 -1
  17. package/dist/git-fetcher.d.ts +2 -0
  18. package/dist/git-fetcher.d.ts.map +1 -1
  19. package/dist/git-fetcher.js +47 -0
  20. package/dist/git-fetcher.js.map +1 -1
  21. package/dist/hybrid-search.d.ts +6 -2
  22. package/dist/hybrid-search.d.ts.map +1 -1
  23. package/dist/hybrid-search.js +192 -56
  24. package/dist/hybrid-search.js.map +1 -1
  25. package/dist/index.d.ts +14 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +9 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/knowledge-compiler.d.ts +48 -0
  30. package/dist/knowledge-compiler.d.ts.map +1 -0
  31. package/dist/knowledge-compiler.js +121 -0
  32. package/dist/knowledge-compiler.js.map +1 -0
  33. package/dist/knowledge-engine.d.ts +25 -1
  34. package/dist/knowledge-engine.d.ts.map +1 -1
  35. package/dist/knowledge-engine.js +446 -64
  36. package/dist/knowledge-engine.js.map +1 -1
  37. package/dist/knowledge-quality.d.ts +3 -0
  38. package/dist/knowledge-quality.d.ts.map +1 -1
  39. package/dist/knowledge-quality.js +14 -5
  40. package/dist/knowledge-quality.js.map +1 -1
  41. package/dist/knowledge-store.d.ts +61 -0
  42. package/dist/knowledge-store.d.ts.map +1 -1
  43. package/dist/knowledge-store.js +448 -1
  44. package/dist/knowledge-store.js.map +1 -1
  45. package/dist/markdown-converter.d.ts +1 -1
  46. package/dist/markdown-converter.js +1 -1
  47. package/dist/retrieval-scoring-profile.d.ts +20 -0
  48. package/dist/retrieval-scoring-profile.d.ts.map +1 -0
  49. package/dist/retrieval-scoring-profile.js +35 -0
  50. package/dist/retrieval-scoring-profile.js.map +1 -0
  51. package/dist/source-catalog.d.ts +57 -0
  52. package/dist/source-catalog.d.ts.map +1 -0
  53. package/dist/source-catalog.js +351 -0
  54. package/dist/source-catalog.js.map +1 -0
  55. package/dist/source-readiness.d.ts +7 -0
  56. package/dist/source-readiness.d.ts.map +1 -1
  57. package/dist/source-readiness.js +31 -2
  58. package/dist/source-readiness.js.map +1 -1
  59. package/dist/source-selector.d.ts +11 -0
  60. package/dist/source-selector.d.ts.map +1 -1
  61. package/dist/source-selector.js +160 -15
  62. package/dist/source-selector.js.map +1 -1
  63. package/dist/structural-markdown-chunker.d.ts +33 -0
  64. package/dist/structural-markdown-chunker.d.ts.map +1 -0
  65. package/dist/structural-markdown-chunker.js +328 -0
  66. package/dist/structural-markdown-chunker.js.map +1 -0
  67. package/dist/types.d.ts +1 -1
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/types.js.map +1 -1
  70. package/package.json +5 -5
@@ -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":"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,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAwDzF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDxB,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,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,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,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"}
1
+ {"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../src/knowledge-store.ts"],"names":[],"mappings":"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"}
@@ -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 = 2;
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 = 2;
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"}