mindgraph-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/embeddings/embedder-interface.d.ts +15 -0
  2. package/dist/embeddings/embedder-interface.d.ts.map +1 -0
  3. package/dist/embeddings/embedder-interface.js +2 -0
  4. package/dist/embeddings/embedder-interface.js.map +1 -0
  5. package/dist/embeddings/ollama-embedder.d.ts +21 -0
  6. package/dist/embeddings/ollama-embedder.d.ts.map +1 -0
  7. package/dist/embeddings/ollama-embedder.js +78 -0
  8. package/dist/embeddings/ollama-embedder.js.map +1 -0
  9. package/dist/embeddings/transformers-embedder.d.ts +20 -0
  10. package/dist/embeddings/transformers-embedder.d.ts.map +1 -0
  11. package/dist/embeddings/transformers-embedder.js +61 -0
  12. package/dist/embeddings/transformers-embedder.js.map +1 -0
  13. package/dist/extraction/anthropic-extractor.d.ts +17 -0
  14. package/dist/extraction/anthropic-extractor.d.ts.map +1 -0
  15. package/dist/extraction/anthropic-extractor.js +43 -0
  16. package/dist/extraction/anthropic-extractor.js.map +1 -0
  17. package/dist/extraction/basic-extractor.d.ts +17 -0
  18. package/dist/extraction/basic-extractor.d.ts.map +1 -0
  19. package/dist/extraction/basic-extractor.js +135 -0
  20. package/dist/extraction/basic-extractor.js.map +1 -0
  21. package/dist/extraction/confidence-gate.d.ts +7 -0
  22. package/dist/extraction/confidence-gate.d.ts.map +1 -0
  23. package/dist/extraction/confidence-gate.js +13 -0
  24. package/dist/extraction/confidence-gate.js.map +1 -0
  25. package/dist/extraction/contradiction-detector.d.ts +46 -0
  26. package/dist/extraction/contradiction-detector.d.ts.map +1 -0
  27. package/dist/extraction/contradiction-detector.js +205 -0
  28. package/dist/extraction/contradiction-detector.js.map +1 -0
  29. package/dist/extraction/entity-index.d.ts +31 -0
  30. package/dist/extraction/entity-index.d.ts.map +1 -0
  31. package/dist/extraction/entity-index.js +90 -0
  32. package/dist/extraction/entity-index.js.map +1 -0
  33. package/dist/extraction/entity-resolver.d.ts +28 -0
  34. package/dist/extraction/entity-resolver.d.ts.map +1 -0
  35. package/dist/extraction/entity-resolver.js +111 -0
  36. package/dist/extraction/entity-resolver.js.map +1 -0
  37. package/dist/extraction/extractor-interface.d.ts +51 -0
  38. package/dist/extraction/extractor-interface.d.ts.map +1 -0
  39. package/dist/extraction/extractor-interface.js +2 -0
  40. package/dist/extraction/extractor-interface.js.map +1 -0
  41. package/dist/extraction/llm-extractor.d.ts +21 -0
  42. package/dist/extraction/llm-extractor.d.ts.map +1 -0
  43. package/dist/extraction/llm-extractor.js +97 -0
  44. package/dist/extraction/llm-extractor.js.map +1 -0
  45. package/dist/extraction/ollama-extractor.d.ts +18 -0
  46. package/dist/extraction/ollama-extractor.d.ts.map +1 -0
  47. package/dist/extraction/ollama-extractor.js +50 -0
  48. package/dist/extraction/ollama-extractor.js.map +1 -0
  49. package/dist/extraction/open-loop-detector.d.ts +24 -0
  50. package/dist/extraction/open-loop-detector.d.ts.map +1 -0
  51. package/dist/extraction/open-loop-detector.js +187 -0
  52. package/dist/extraction/open-loop-detector.js.map +1 -0
  53. package/dist/extraction/openai-extractor.d.ts +20 -0
  54. package/dist/extraction/openai-extractor.d.ts.map +1 -0
  55. package/dist/extraction/openai-extractor.js +44 -0
  56. package/dist/extraction/openai-extractor.js.map +1 -0
  57. package/dist/extraction/prompts/entity-extraction.d.ts +2 -0
  58. package/dist/extraction/prompts/entity-extraction.d.ts.map +1 -0
  59. package/dist/extraction/prompts/entity-extraction.js +42 -0
  60. package/dist/extraction/prompts/entity-extraction.js.map +1 -0
  61. package/dist/extraction/prompts/proposition-extraction.d.ts +2 -0
  62. package/dist/extraction/prompts/proposition-extraction.d.ts.map +1 -0
  63. package/dist/extraction/prompts/proposition-extraction.js +39 -0
  64. package/dist/extraction/prompts/proposition-extraction.js.map +1 -0
  65. package/dist/extraction/prompts/thought-extraction.d.ts +2 -0
  66. package/dist/extraction/prompts/thought-extraction.d.ts.map +1 -0
  67. package/dist/extraction/prompts/thought-extraction.js +41 -0
  68. package/dist/extraction/prompts/thought-extraction.js.map +1 -0
  69. package/dist/index.d.ts +41 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +33 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/ingestion/chunk-id.d.ts +27 -0
  74. package/dist/ingestion/chunk-id.d.ts.map +1 -0
  75. package/dist/ingestion/chunk-id.js +45 -0
  76. package/dist/ingestion/chunk-id.js.map +1 -0
  77. package/dist/ingestion/chunker.d.ts +29 -0
  78. package/dist/ingestion/chunker.d.ts.map +1 -0
  79. package/dist/ingestion/chunker.js +182 -0
  80. package/dist/ingestion/chunker.js.map +1 -0
  81. package/dist/ingestion/hasher.d.ts +7 -0
  82. package/dist/ingestion/hasher.d.ts.map +1 -0
  83. package/dist/ingestion/hasher.js +18 -0
  84. package/dist/ingestion/hasher.js.map +1 -0
  85. package/dist/ingestion/pipeline.d.ts +58 -0
  86. package/dist/ingestion/pipeline.d.ts.map +1 -0
  87. package/dist/ingestion/pipeline.js +653 -0
  88. package/dist/ingestion/pipeline.js.map +1 -0
  89. package/dist/models/citation.d.ts +2 -0
  90. package/dist/models/citation.d.ts.map +1 -0
  91. package/dist/models/citation.js +2 -0
  92. package/dist/models/citation.js.map +1 -0
  93. package/dist/models/extraction-result.d.ts +2 -0
  94. package/dist/models/extraction-result.d.ts.map +1 -0
  95. package/dist/models/extraction-result.js +2 -0
  96. package/dist/models/extraction-result.js.map +1 -0
  97. package/dist/models/query-result.d.ts +2 -0
  98. package/dist/models/query-result.d.ts.map +1 -0
  99. package/dist/models/query-result.js +2 -0
  100. package/dist/models/query-result.js.map +1 -0
  101. package/dist/query/answer-builder.d.ts +15 -0
  102. package/dist/query/answer-builder.d.ts.map +1 -0
  103. package/dist/query/answer-builder.js +51 -0
  104. package/dist/query/answer-builder.js.map +1 -0
  105. package/dist/query/citation-builder.d.ts +19 -0
  106. package/dist/query/citation-builder.d.ts.map +1 -0
  107. package/dist/query/citation-builder.js +54 -0
  108. package/dist/query/citation-builder.js.map +1 -0
  109. package/dist/query/graph-data.d.ts +39 -0
  110. package/dist/query/graph-data.d.ts.map +1 -0
  111. package/dist/query/graph-data.js +115 -0
  112. package/dist/query/graph-data.js.map +1 -0
  113. package/dist/query/graph-search.d.ts +43 -0
  114. package/dist/query/graph-search.d.ts.map +1 -0
  115. package/dist/query/graph-search.js +315 -0
  116. package/dist/query/graph-search.js.map +1 -0
  117. package/dist/query/query-engine.d.ts +41 -0
  118. package/dist/query/query-engine.d.ts.map +1 -0
  119. package/dist/query/query-engine.js +178 -0
  120. package/dist/query/query-engine.js.map +1 -0
  121. package/dist/query/semantic-search.d.ts +26 -0
  122. package/dist/query/semantic-search.d.ts.map +1 -0
  123. package/dist/query/semantic-search.js +132 -0
  124. package/dist/query/semantic-search.js.map +1 -0
  125. package/dist/schema/edge-types.d.ts +95 -0
  126. package/dist/schema/edge-types.d.ts.map +1 -0
  127. package/dist/schema/edge-types.js +6 -0
  128. package/dist/schema/edge-types.js.map +1 -0
  129. package/dist/schema/node-types.d.ts +100 -0
  130. package/dist/schema/node-types.d.ts.map +1 -0
  131. package/dist/schema/node-types.js +6 -0
  132. package/dist/schema/node-types.js.map +1 -0
  133. package/dist/schema/types.d.ts +134 -0
  134. package/dist/schema/types.d.ts.map +1 -0
  135. package/dist/schema/types.js +52 -0
  136. package/dist/schema/types.js.map +1 -0
  137. package/dist/schema/validation.d.ts +6 -0
  138. package/dist/schema/validation.d.ts.map +1 -0
  139. package/dist/schema/validation.js +140 -0
  140. package/dist/schema/validation.js.map +1 -0
  141. package/dist/storage/export-import.d.ts +28 -0
  142. package/dist/storage/export-import.d.ts.map +1 -0
  143. package/dist/storage/export-import.js +189 -0
  144. package/dist/storage/export-import.js.map +1 -0
  145. package/dist/storage/memory/memory-adapter.d.ts +36 -0
  146. package/dist/storage/memory/memory-adapter.d.ts.map +1 -0
  147. package/dist/storage/memory/memory-adapter.js +231 -0
  148. package/dist/storage/memory/memory-adapter.js.map +1 -0
  149. package/dist/storage/sqlite/graph-traversal.d.ts +11 -0
  150. package/dist/storage/sqlite/graph-traversal.d.ts.map +1 -0
  151. package/dist/storage/sqlite/graph-traversal.js +79 -0
  152. package/dist/storage/sqlite/graph-traversal.js.map +1 -0
  153. package/dist/storage/sqlite/query-builder.d.ts +8 -0
  154. package/dist/storage/sqlite/query-builder.d.ts.map +1 -0
  155. package/dist/storage/sqlite/query-builder.js +55 -0
  156. package/dist/storage/sqlite/query-builder.js.map +1 -0
  157. package/dist/storage/sqlite/sqlite-adapter.d.ts +53 -0
  158. package/dist/storage/sqlite/sqlite-adapter.d.ts.map +1 -0
  159. package/dist/storage/sqlite/sqlite-adapter.js +497 -0
  160. package/dist/storage/sqlite/sqlite-adapter.js.map +1 -0
  161. package/dist/storage/storage-interface.d.ts +64 -0
  162. package/dist/storage/storage-interface.d.ts.map +1 -0
  163. package/dist/storage/storage-interface.js +2 -0
  164. package/dist/storage/storage-interface.js.map +1 -0
  165. package/dist/utils/retry-fetch.d.ts +20 -0
  166. package/dist/utils/retry-fetch.d.ts.map +1 -0
  167. package/dist/utils/retry-fetch.js +71 -0
  168. package/dist/utils/retry-fetch.js.map +1 -0
  169. package/package.json +28 -0
@@ -0,0 +1,132 @@
1
+ import { RelType } from '../schema/types.js';
2
+ /**
3
+ * Hybrid semantic + full-text search.
4
+ * Combines vector similarity with FTS5 for best results.
5
+ */
6
+ export class SemanticSearch {
7
+ constructor(storage, embedder) {
8
+ this.storage = storage;
9
+ this.embedder = embedder;
10
+ }
11
+ async search(query, options = {}) {
12
+ const topK = options.topK ?? 10;
13
+ const threshold = options.threshold ?? 0.3;
14
+ const hybridWeight = options.hybridWeight ?? 0.7;
15
+ const [vectorResults, ftsResults] = await Promise.allSettled([
16
+ this.vectorSearch(query, topK * 2, threshold),
17
+ this.ftsSearch(query, topK * 2),
18
+ ]);
19
+ const vecResults = vectorResults.status === 'fulfilled' ? vectorResults.value : [];
20
+ const textResults = ftsResults.status === 'fulfilled' ? ftsResults.value : [];
21
+ // Merge and re-rank
22
+ const merged = this.mergeResults(vecResults, textResults, hybridWeight, topK * 2);
23
+ // Apply ranking heuristics
24
+ const ranked = await this.applyRankingHeuristics(query, merged);
25
+ return ranked.slice(0, topK);
26
+ }
27
+ /**
28
+ * TypeScript-side ranking heuristics for "smart search" without FTS5.
29
+ */
30
+ async applyRankingHeuristics(query, results) {
31
+ const queryLower = query.toLowerCase();
32
+ const queryTerms = queryLower.split(/\s+/).filter((w) => w.length > 2);
33
+ const now = Date.now();
34
+ const boosted = await Promise.all(results.map(async (result) => {
35
+ let boost = 0;
36
+ // Heading boost (+20%): query terms appear in chunk heading
37
+ const chunkNode = await this.storage.getNode(result.chunkId);
38
+ if (chunkNode) {
39
+ const heading = chunkNode.data.heading ?? '';
40
+ if (heading) {
41
+ const headingLower = heading.toLowerCase();
42
+ const headingMatch = queryTerms.some((t) => headingLower.includes(t));
43
+ if (headingMatch)
44
+ boost += 0.20;
45
+ }
46
+ // Recency boost (+10% decaying over 30 days)
47
+ const updatedAt = chunkNode.updatedAt;
48
+ if (updatedAt) {
49
+ const ageMs = now - new Date(updatedAt).getTime();
50
+ const ageDays = ageMs / (1000 * 60 * 60 * 24);
51
+ if (ageDays < 30) {
52
+ boost += 0.10 * (1 - ageDays / 30);
53
+ }
54
+ }
55
+ }
56
+ // Phrase match boost (+15%): exact query phrase in text
57
+ const textLower = result.text.toLowerCase();
58
+ if (textLower.includes(queryLower)) {
59
+ boost += 0.15;
60
+ }
61
+ // Proposition density boost (+10%): chunk has DERIVED_FROM edges
62
+ const derivedEdges = await this.storage.queryEdges({
63
+ targetId: result.chunkId,
64
+ relType: RelType.DERIVED_FROM,
65
+ });
66
+ if (derivedEdges.length > 0) {
67
+ boost += 0.10;
68
+ }
69
+ return {
70
+ ...result,
71
+ score: result.score * (1 + boost),
72
+ };
73
+ }));
74
+ return boosted.sort((a, b) => b.score - a.score);
75
+ }
76
+ async vectorSearch(query, topK, threshold) {
77
+ if (!this.embedder)
78
+ return [];
79
+ const queryVector = await this.embedder.embed(query);
80
+ return this.storage.similaritySearch({
81
+ vector: queryVector,
82
+ topK,
83
+ threshold,
84
+ });
85
+ }
86
+ async ftsSearch(query, limit) {
87
+ // Convert natural language query to FTS5 query
88
+ const ftsQuery = query
89
+ .split(/\s+/)
90
+ .filter((w) => w.length > 2)
91
+ .map((w) => `"${w}"`)
92
+ .join(' OR ');
93
+ if (!ftsQuery)
94
+ return [];
95
+ return this.storage.fullTextSearch({ query: ftsQuery, limit });
96
+ }
97
+ mergeResults(vectorResults, ftsResults, vectorWeight, topK) {
98
+ const merged = new Map();
99
+ // Normalize vector scores (already 0-1 for cosine similarity)
100
+ for (const result of vectorResults) {
101
+ merged.set(result.chunkId, {
102
+ ...result,
103
+ combinedScore: result.score * vectorWeight,
104
+ });
105
+ }
106
+ // Normalize FTS scores and combine
107
+ const maxFtsScore = Math.max(...ftsResults.map((r) => r.score), 1);
108
+ const ftsWeight = 1 - vectorWeight;
109
+ for (const result of ftsResults) {
110
+ const existing = merged.get(result.chunkId);
111
+ const normalizedFtsScore = result.score / maxFtsScore;
112
+ if (existing) {
113
+ existing.combinedScore += normalizedFtsScore * ftsWeight;
114
+ }
115
+ else {
116
+ merged.set(result.chunkId, {
117
+ ...result,
118
+ combinedScore: normalizedFtsScore * ftsWeight,
119
+ });
120
+ }
121
+ }
122
+ // Sort by combined score and return top K
123
+ return Array.from(merged.values())
124
+ .sort((a, b) => b.combinedScore - a.combinedScore)
125
+ .slice(0, topK)
126
+ .map(({ combinedScore, ...result }) => ({
127
+ ...result,
128
+ score: combinedScore,
129
+ }));
130
+ }
131
+ }
132
+ //# sourceMappingURL=semantic-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-search.js","sourceRoot":"","sources":["../../src/query/semantic-search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AAQhE;;;GAGG;AACH,MAAM,OAAO,cAAc;IACzB,YACU,OAAuB,EACvB,QAAkC;QADlC,YAAO,GAAP,OAAO,CAAgB;QACvB,aAAQ,GAAR,QAAQ,CAA0B;IACzC,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAiC,EAAE;QAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC;QAEjD,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,UAAU,GACd,aAAa,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,WAAW,GACf,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5D,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAElF,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAClC,KAAa,EACb,OAAuB;QAEvB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,4DAA4D;YAC5D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,GAAK,SAAS,CAAC,IAAgC,CAAC,OAAkB,IAAI,EAAE,CAAC;gBACtF,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;oBAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtE,IAAI,YAAY;wBAAE,KAAK,IAAI,IAAI,CAAC;gBAClC,CAAC;gBAED,6CAA6C;gBAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;gBACtC,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;oBAClD,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC9C,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;wBACjB,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,wDAAwD;YACxD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnC,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,iEAAiE;YACjE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBACjD,QAAQ,EAAE,MAAM,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,YAAY;aAC9B,CAAC,CAAC;YACH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,OAAO;gBACL,GAAG,MAAM;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,KAAa,EACb,IAAY,EACZ,SAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACnC,MAAM,EAAE,WAAW;YACnB,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,KAAa;QAClD,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,KAAK;aACnB,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAEO,YAAY,CAClB,aAA6B,EAC7B,UAA0B,EAC1B,YAAoB,EACpB,IAAY;QAEZ,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoD,CAAC;QAE3E,8DAA8D;QAC9D,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBACzB,GAAG,MAAM;gBACT,aAAa,EAAE,MAAM,CAAC,KAAK,GAAG,YAAY;aAC3C,CAAC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,CAAC,GAAG,YAAY,CAAC;QAEnC,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;YAEtD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,aAAa,IAAI,kBAAkB,GAAG,SAAS,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;oBACzB,GAAG,MAAM;oBACT,aAAa,EAAE,kBAAkB,GAAG,SAAS;iBAC9C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;aACjD,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;aACd,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACtC,GAAG,MAAM;YACT,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC,CAAC;IACR,CAAC;CACF"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Per-edge-type property interfaces.
3
+ * These define the shape of `GraphEdge.data` for each RelType.
4
+ */
5
+ import type { Provenance } from './types.js';
6
+ export interface HasChunkEdgeData {
7
+ index: number;
8
+ }
9
+ export interface DerivedFromEdgeData {
10
+ provenance: Provenance;
11
+ extractionMethod: 'basic' | 'ollama' | 'api';
12
+ extractedAt: string;
13
+ }
14
+ export interface MentionsEdgeData {
15
+ count: number;
16
+ spans: Array<{
17
+ start: number;
18
+ end: number;
19
+ }>;
20
+ }
21
+ export interface AboutEdgeData {
22
+ relevance: number;
23
+ }
24
+ export interface RelatedToEdgeData {
25
+ reason: string;
26
+ strength: number;
27
+ }
28
+ export interface IsAEdgeData {
29
+ confidence: number;
30
+ }
31
+ export interface PartOfEdgeData {
32
+ confidence: number;
33
+ }
34
+ export interface AliasOfEdgeData {
35
+ canonical: boolean;
36
+ }
37
+ export interface BelievesEdgeData {
38
+ confidence: number;
39
+ asOf: string;
40
+ }
41
+ export interface EndorsesEdgeData {
42
+ confidence: number;
43
+ asOf: string;
44
+ }
45
+ export interface SupportsEdgeData {
46
+ strength: number;
47
+ explanation: string;
48
+ }
49
+ export interface ContradictsEdgeData {
50
+ strength: number;
51
+ method: 'negation_heuristic' | 'llm_judge';
52
+ sharedTargets: string[];
53
+ evidence: {
54
+ p1Span?: string;
55
+ p2Span?: string;
56
+ };
57
+ explanation: string;
58
+ }
59
+ export interface QualifiesEdgeData {
60
+ condition: string;
61
+ }
62
+ export interface PrecedesEdgeData {
63
+ timeGap?: string;
64
+ }
65
+ export interface CausesEdgeData {
66
+ mechanism: string;
67
+ confidence: number;
68
+ }
69
+ export interface LocatedInEdgeData {
70
+ since?: string;
71
+ }
72
+ export interface OccurredAtEdgeData {
73
+ date?: string;
74
+ }
75
+ export interface AuthoredByEdgeData {
76
+ role: string;
77
+ }
78
+ export interface ParticipatedInEdgeData {
79
+ role: string;
80
+ }
81
+ export interface FeelsEdgeData {
82
+ intensity: number;
83
+ date: string;
84
+ }
85
+ export interface TriggeredByEdgeData {
86
+ mechanism: string;
87
+ }
88
+ export interface HasStepEdgeData {
89
+ stepIndex: number;
90
+ }
91
+ export interface NextStepEdgeData {
92
+ transition: string;
93
+ }
94
+ export type EdgeData = HasChunkEdgeData | DerivedFromEdgeData | MentionsEdgeData | AboutEdgeData | RelatedToEdgeData | IsAEdgeData | PartOfEdgeData | AliasOfEdgeData | BelievesEdgeData | EndorsesEdgeData | SupportsEdgeData | ContradictsEdgeData | QualifiesEdgeData | PrecedesEdgeData | CausesEdgeData | LocatedInEdgeData | OccurredAtEdgeData | AuthoredByEdgeData | ParticipatedInEdgeData | FeelsEdgeData | TriggeredByEdgeData | HasStepEdgeData | NextStepEdgeData | Record<string, unknown>;
95
+ //# sourceMappingURL=edge-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-types.d.ts","sourceRoot":"","sources":["../../src/schema/edge-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Per-edge-type property interfaces.
3
+ * These define the shape of `GraphEdge.data` for each RelType.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=edge-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-types.js","sourceRoot":"","sources":["../../src/schema/edge-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Per-node-type property interfaces.
3
+ * These define the shape of `GraphNode.data` for each NodeType.
4
+ */
5
+ export interface NoteData {
6
+ title: string;
7
+ path: string;
8
+ contentHash: string;
9
+ wordCount: number;
10
+ tags: string[];
11
+ aliases: string[];
12
+ frontmatter: Record<string, unknown>;
13
+ }
14
+ export interface ChunkData {
15
+ notePath: string;
16
+ text: string;
17
+ heading: string | null;
18
+ headingLevel: number;
19
+ startOffset: number;
20
+ endOffset: number;
21
+ index: number;
22
+ contentHash: string;
23
+ }
24
+ export interface EntityData {
25
+ name: string;
26
+ entityType: 'person' | 'organization' | 'product' | 'work' | 'other';
27
+ aliases: string[];
28
+ description: string;
29
+ confidence: number;
30
+ typeCounts?: Record<string, number>;
31
+ }
32
+ export interface ConceptData {
33
+ name: string;
34
+ domain: string;
35
+ description: string;
36
+ aliases: string[];
37
+ confidence: number;
38
+ }
39
+ export interface LocationData {
40
+ name: string;
41
+ locationType: 'city' | 'country' | 'region' | 'address' | 'place' | 'other';
42
+ coordinates?: {
43
+ lat: number;
44
+ lng: number;
45
+ };
46
+ confidence: number;
47
+ }
48
+ export interface EventData {
49
+ name: string;
50
+ description: string;
51
+ date?: string;
52
+ dateGranularity?: 'day' | 'month' | 'year' | 'approximate';
53
+ participants: string[];
54
+ confidence: number;
55
+ }
56
+ export interface PropositionData {
57
+ statement: string;
58
+ domain: string;
59
+ confidence: number;
60
+ isNegated: boolean;
61
+ statementHash: string;
62
+ status?: 'assertion' | 'question' | 'uncertain' | 'todo';
63
+ }
64
+ export interface ThoughtData {
65
+ statement: string;
66
+ stance: 'for' | 'against' | 'neutral';
67
+ subject: string;
68
+ confidence: number;
69
+ implications: string[];
70
+ }
71
+ export interface AgentData {
72
+ name: string;
73
+ agentType: 'self' | 'person' | 'source';
74
+ description: string;
75
+ }
76
+ export interface EmotionData {
77
+ name: string;
78
+ valence: number;
79
+ arousal: number;
80
+ }
81
+ export interface EmotionalEventData {
82
+ emotion: string;
83
+ intensity: number;
84
+ trigger: string;
85
+ context: string;
86
+ date?: string;
87
+ }
88
+ export interface ReasoningChainData {
89
+ topic: string;
90
+ conclusion: string;
91
+ strength: number;
92
+ }
93
+ export interface ReasoningStepData {
94
+ stepIndex: number;
95
+ claim: string;
96
+ evidence: string;
97
+ stepType: 'premise' | 'inference' | 'conclusion';
98
+ }
99
+ export type NodeData = NoteData | ChunkData | EntityData | ConceptData | LocationData | EventData | PropositionData | ThoughtData | AgentData | EmotionData | EmotionalEventData | ReasoningChainData | ReasoningStepData;
100
+ //# sourceMappingURL=node-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-types.d.ts","sourceRoot":"","sources":["../../src/schema/node-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Per-node-type property interfaces.
3
+ * These define the shape of `GraphNode.data` for each NodeType.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=node-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-types.js","sourceRoot":"","sources":["../../src/schema/node-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,134 @@
1
+ export declare enum NodeType {
2
+ Note = "NOTE",
3
+ Chunk = "CHUNK",
4
+ Entity = "ENTITY",
5
+ Concept = "CONCEPT",
6
+ Location = "LOCATION",
7
+ Event = "EVENT",
8
+ Proposition = "PROPOSITION",
9
+ Thought = "THOUGHT",
10
+ Agent = "AGENT",
11
+ Emotion = "EMOTION",
12
+ EmotionalEvent = "EMOTIONAL_EVENT",
13
+ ReasoningChain = "REASONING_CHAIN",
14
+ ReasoningStep = "REASONING_STEP"
15
+ }
16
+ export declare enum RelType {
17
+ HAS_CHUNK = "HAS_CHUNK",
18
+ DERIVED_FROM = "DERIVED_FROM",
19
+ MENTIONS = "MENTIONS",
20
+ ABOUT = "ABOUT",
21
+ RELATED_TO = "RELATED_TO",
22
+ IS_A = "IS_A",
23
+ PART_OF = "PART_OF",
24
+ ALIAS_OF = "ALIAS_OF",
25
+ BELIEVES = "BELIEVES",
26
+ ENDORSES = "ENDORSES",
27
+ SUPPORTS = "SUPPORTS",
28
+ CONTRADICTS = "CONTRADICTS",
29
+ QUALIFIES = "QUALIFIES",
30
+ PRECEDES = "PRECEDES",
31
+ CAUSES = "CAUSES",
32
+ LOCATED_IN = "LOCATED_IN",
33
+ OCCURRED_AT = "OCCURRED_AT",
34
+ AUTHORED_BY = "AUTHORED_BY",
35
+ PARTICIPATED_IN = "PARTICIPATED_IN",
36
+ FEELS = "FEELS",
37
+ TRIGGERED_BY = "TRIGGERED_BY",
38
+ HAS_STEP = "HAS_STEP",
39
+ NEXT_STEP = "NEXT_STEP"
40
+ }
41
+ export interface GraphNode {
42
+ id: string;
43
+ nodeType: NodeType;
44
+ data: Record<string, unknown>;
45
+ createdAt: string;
46
+ updatedAt: string;
47
+ }
48
+ export interface GraphEdge {
49
+ id: string;
50
+ sourceId: string;
51
+ targetId: string;
52
+ relType: RelType;
53
+ data: Record<string, unknown>;
54
+ createdAt: string;
55
+ }
56
+ export interface Provenance {
57
+ notePath: string;
58
+ chunkId: string;
59
+ startOffset: number;
60
+ endOffset: number;
61
+ quoteText: string;
62
+ quoteHash: string;
63
+ }
64
+ export interface EmbeddingRecord {
65
+ chunkId: string;
66
+ vector: Float32Array;
67
+ modelId: string;
68
+ dimensions: number;
69
+ createdAt: string;
70
+ }
71
+ export interface SearchResult {
72
+ chunkId: string;
73
+ nodeId: string;
74
+ score: number;
75
+ text: string;
76
+ notePath: string;
77
+ }
78
+ export interface Citation {
79
+ notePath: string;
80
+ startOffset: number;
81
+ endOffset: number;
82
+ quoteText: string;
83
+ chunkId: string;
84
+ }
85
+ export interface BeliefEntry {
86
+ propositionId: string;
87
+ statement: string;
88
+ confidence: number;
89
+ stance: 'for' | 'against' | 'neutral';
90
+ noteDate: string;
91
+ citations: Citation[];
92
+ }
93
+ export interface ContradictionPair {
94
+ propositionA: BeliefEntry;
95
+ propositionB: BeliefEntry;
96
+ edgeId: string;
97
+ }
98
+ export interface QueryResult {
99
+ answer: string;
100
+ citations: Citation[];
101
+ beliefs?: BeliefEntry[];
102
+ contradictions?: ContradictionPair[];
103
+ beliefCard?: BeliefCard;
104
+ openLoops?: OpenLoop[];
105
+ }
106
+ export interface BeliefCardEntry {
107
+ propositionId: string;
108
+ statement: string;
109
+ confidence: number;
110
+ firstSeen: string;
111
+ lastSeen: string;
112
+ citations: Citation[];
113
+ contradictionCount: number;
114
+ }
115
+ export interface BeliefCard {
116
+ topic: string;
117
+ entries: BeliefCardEntry[];
118
+ totalPropositions: number;
119
+ avgConfidence: number;
120
+ dateRange: {
121
+ from: string;
122
+ to: string;
123
+ };
124
+ }
125
+ export interface OpenLoop {
126
+ id: string;
127
+ statement: string;
128
+ status: 'question' | 'todo' | 'uncertain' | 'wonder';
129
+ topic?: string;
130
+ occurrences: number;
131
+ mostRecentDate: string;
132
+ citations: Citation[];
133
+ }
134
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ // ─── Node Type & Relationship Enums ────────────────────────────────
2
+ export var NodeType;
3
+ (function (NodeType) {
4
+ NodeType["Note"] = "NOTE";
5
+ NodeType["Chunk"] = "CHUNK";
6
+ NodeType["Entity"] = "ENTITY";
7
+ NodeType["Concept"] = "CONCEPT";
8
+ NodeType["Location"] = "LOCATION";
9
+ NodeType["Event"] = "EVENT";
10
+ NodeType["Proposition"] = "PROPOSITION";
11
+ NodeType["Thought"] = "THOUGHT";
12
+ NodeType["Agent"] = "AGENT";
13
+ NodeType["Emotion"] = "EMOTION";
14
+ NodeType["EmotionalEvent"] = "EMOTIONAL_EVENT";
15
+ NodeType["ReasoningChain"] = "REASONING_CHAIN";
16
+ NodeType["ReasoningStep"] = "REASONING_STEP";
17
+ })(NodeType || (NodeType = {}));
18
+ export var RelType;
19
+ (function (RelType) {
20
+ // Structural
21
+ RelType["HAS_CHUNK"] = "HAS_CHUNK";
22
+ RelType["DERIVED_FROM"] = "DERIVED_FROM";
23
+ // Entity relations
24
+ RelType["MENTIONS"] = "MENTIONS";
25
+ RelType["ABOUT"] = "ABOUT";
26
+ RelType["RELATED_TO"] = "RELATED_TO";
27
+ RelType["IS_A"] = "IS_A";
28
+ RelType["PART_OF"] = "PART_OF";
29
+ RelType["ALIAS_OF"] = "ALIAS_OF";
30
+ // Belief / epistemic
31
+ RelType["BELIEVES"] = "BELIEVES";
32
+ RelType["ENDORSES"] = "ENDORSES";
33
+ RelType["SUPPORTS"] = "SUPPORTS";
34
+ RelType["CONTRADICTS"] = "CONTRADICTS";
35
+ RelType["QUALIFIES"] = "QUALIFIES";
36
+ // Temporal / causal
37
+ RelType["PRECEDES"] = "PRECEDES";
38
+ RelType["CAUSES"] = "CAUSES";
39
+ // Location
40
+ RelType["LOCATED_IN"] = "LOCATED_IN";
41
+ RelType["OCCURRED_AT"] = "OCCURRED_AT";
42
+ // Agent relations
43
+ RelType["AUTHORED_BY"] = "AUTHORED_BY";
44
+ RelType["PARTICIPATED_IN"] = "PARTICIPATED_IN";
45
+ // Emotion (M3)
46
+ RelType["FEELS"] = "FEELS";
47
+ RelType["TRIGGERED_BY"] = "TRIGGERED_BY";
48
+ // Reasoning (M4)
49
+ RelType["HAS_STEP"] = "HAS_STEP";
50
+ RelType["NEXT_STEP"] = "NEXT_STEP";
51
+ })(RelType || (RelType = {}));
52
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,MAAM,CAAN,IAAY,QAcX;AAdD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,6BAAiB,CAAA;IACjB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,uCAA2B,CAAA;IAC3B,+BAAmB,CAAA;IACnB,2BAAe,CAAA;IACf,+BAAmB,CAAA;IACnB,8CAAkC,CAAA;IAClC,8CAAkC,CAAA;IAClC,4CAAgC,CAAA;AAClC,CAAC,EAdW,QAAQ,KAAR,QAAQ,QAcnB;AAED,MAAM,CAAN,IAAY,OAuCX;AAvCD,WAAY,OAAO;IACjB,aAAa;IACb,kCAAuB,CAAA;IACvB,wCAA6B,CAAA;IAE7B,mBAAmB;IACnB,gCAAqB,CAAA;IACrB,0BAAe,CAAA;IACf,oCAAyB,CAAA;IACzB,wBAAa,CAAA;IACb,8BAAmB,CAAA;IACnB,gCAAqB,CAAA;IAErB,qBAAqB;IACrB,gCAAqB,CAAA;IACrB,gCAAqB,CAAA;IACrB,gCAAqB,CAAA;IACrB,sCAA2B,CAAA;IAC3B,kCAAuB,CAAA;IAEvB,oBAAoB;IACpB,gCAAqB,CAAA;IACrB,4BAAiB,CAAA;IAEjB,WAAW;IACX,oCAAyB,CAAA;IACzB,sCAA2B,CAAA;IAE3B,kBAAkB;IAClB,sCAA2B,CAAA;IAC3B,8CAAmC,CAAA;IAEnC,eAAe;IACf,0BAAe,CAAA;IACf,wCAA6B,CAAA;IAE7B,iBAAiB;IACjB,gCAAqB,CAAA;IACrB,kCAAuB,CAAA;AACzB,CAAC,EAvCW,OAAO,KAAP,OAAO,QAuClB"}
@@ -0,0 +1,6 @@
1
+ import { type GraphNode, type GraphEdge, type Provenance } from './types.js';
2
+ export declare function passesConfidenceGate(data: Record<string, unknown>, threshold?: number): boolean;
3
+ export declare function validateNode(node: GraphNode): string[];
4
+ export declare function validateEdge(edge: GraphEdge, sourceNode?: GraphNode, targetNode?: GraphNode): string[];
5
+ export declare function validateProvenance(prov: Provenance): string[];
6
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/schema/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAMhG,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,GAAE,MAAqC,GAC/C,OAAO,CAKT;AAoBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAmBtD;AAyCD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,UAAU,CAAC,EAAE,SAAS,EACtB,UAAU,CAAC,EAAE,SAAS,GACrB,MAAM,EAAE,CAwCV;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAc7D"}