@mmnto/totem 1.12.0 → 1.14.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 (87) hide show
  1. package/dist/compile-lesson.d.ts +25 -1
  2. package/dist/compile-lesson.d.ts.map +1 -1
  3. package/dist/compile-lesson.js +33 -9
  4. package/dist/compile-lesson.js.map +1 -1
  5. package/dist/compile-lesson.test.js +135 -5
  6. package/dist/compile-lesson.test.js.map +1 -1
  7. package/dist/compiler-schema.d.ts +86 -4
  8. package/dist/compiler-schema.d.ts.map +1 -1
  9. package/dist/compiler-schema.js +34 -2
  10. package/dist/compiler-schema.js.map +1 -1
  11. package/dist/compiler.d.ts +0 -4
  12. package/dist/compiler.d.ts.map +1 -1
  13. package/dist/compiler.js +30 -5
  14. package/dist/compiler.js.map +1 -1
  15. package/dist/compiler.test.js +128 -0
  16. package/dist/compiler.test.js.map +1 -1
  17. package/dist/config-schema.d.ts +440 -0
  18. package/dist/config-schema.d.ts.map +1 -1
  19. package/dist/config-schema.js +24 -0
  20. package/dist/config-schema.js.map +1 -1
  21. package/dist/config-schema.test.js +127 -0
  22. package/dist/config-schema.test.js.map +1 -1
  23. package/dist/drift-detector.d.ts +6 -2
  24. package/dist/drift-detector.d.ts.map +1 -1
  25. package/dist/drift-detector.js +34 -5
  26. package/dist/drift-detector.js.map +1 -1
  27. package/dist/drift-detector.test.js +77 -0
  28. package/dist/drift-detector.test.js.map +1 -1
  29. package/dist/errors.d.ts +1 -1
  30. package/dist/errors.d.ts.map +1 -1
  31. package/dist/errors.js.map +1 -1
  32. package/dist/index.d.ts +4 -4
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +3 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/ingest/pipeline.js +1 -1
  37. package/dist/ingest/pipeline.js.map +1 -1
  38. package/dist/lesson-io.d.ts.map +1 -1
  39. package/dist/lesson-io.js +21 -3
  40. package/dist/lesson-io.js.map +1 -1
  41. package/dist/lesson-io.test.js +48 -0
  42. package/dist/lesson-io.test.js.map +1 -1
  43. package/dist/lesson-pattern.d.ts +22 -0
  44. package/dist/lesson-pattern.d.ts.map +1 -1
  45. package/dist/lesson-pattern.js +95 -7
  46. package/dist/lesson-pattern.js.map +1 -1
  47. package/dist/lesson-pattern.test.js +255 -1
  48. package/dist/lesson-pattern.test.js.map +1 -1
  49. package/dist/rule-engine.d.ts.map +1 -1
  50. package/dist/rule-engine.js +11 -9
  51. package/dist/rule-engine.js.map +1 -1
  52. package/dist/rule-metrics.d.ts +114 -2
  53. package/dist/rule-metrics.d.ts.map +1 -1
  54. package/dist/rule-metrics.js +24 -1
  55. package/dist/rule-metrics.js.map +1 -1
  56. package/dist/rule-metrics.test.js +60 -1
  57. package/dist/rule-metrics.test.js.map +1 -1
  58. package/dist/rule-tester.d.ts +8 -0
  59. package/dist/rule-tester.d.ts.map +1 -1
  60. package/dist/rule-tester.js +19 -1
  61. package/dist/rule-tester.js.map +1 -1
  62. package/dist/rule-tester.test.js +36 -1
  63. package/dist/rule-tester.test.js.map +1 -1
  64. package/dist/semantic-dedup.d.ts +12 -1
  65. package/dist/semantic-dedup.d.ts.map +1 -1
  66. package/dist/semantic-dedup.js +34 -4
  67. package/dist/semantic-dedup.js.map +1 -1
  68. package/dist/semantic-dedup.test.d.ts +2 -0
  69. package/dist/semantic-dedup.test.d.ts.map +1 -0
  70. package/dist/semantic-dedup.test.js +83 -0
  71. package/dist/semantic-dedup.test.js.map +1 -0
  72. package/dist/store/lance-search.d.ts +4 -4
  73. package/dist/store/lance-search.d.ts.map +1 -1
  74. package/dist/store/lance-search.js +27 -12
  75. package/dist/store/lance-search.js.map +1 -1
  76. package/dist/store/lance-search.test.js +109 -27
  77. package/dist/store/lance-search.test.js.map +1 -1
  78. package/dist/store/lance-store.d.ts +17 -2
  79. package/dist/store/lance-store.d.ts.map +1 -1
  80. package/dist/store/lance-store.js +20 -4
  81. package/dist/store/lance-store.js.map +1 -1
  82. package/dist/store/lance-store.test.js +1 -1
  83. package/dist/store/lance-store.test.js.map +1 -1
  84. package/dist/types.d.ts +49 -0
  85. package/dist/types.d.ts.map +1 -1
  86. package/dist/types.js.map +1 -1
  87. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ import * as path from 'node:path';
1
2
  /** RRF constant — standard value from the original RRF paper. */
2
3
  const RRF_K = 60;
3
4
  /**
@@ -7,21 +8,21 @@ const RRF_K = 60;
7
8
  */
8
9
  const HYBRID_OVERFETCH_FACTOR = 3;
9
10
  /** Pure vector search (original behavior). */
10
- export async function runVectorSearch(table, embedder, query, typeFilter, maxResults, boundary) {
11
+ export async function runVectorSearch(table, embedder, query, typeFilter, maxResults, sourceContext, boundary) {
11
12
  const [queryVector] = await embedder.embed([query]);
12
13
  let q = table.vectorSearch(queryVector).limit(maxResults);
13
14
  const whereClause = buildWhereClause(typeFilter, boundary);
14
15
  if (whereClause)
15
16
  q = q.where(whereClause);
16
17
  const results = await q.toArray();
17
- return results.map(rowToSearchResult);
18
+ return results.map((row) => rowToSearchResult(row, sourceContext));
18
19
  }
19
20
  /**
20
21
  * Hybrid search: runs vector + FTS in parallel, merges with RRF.
21
22
  * Each leg fetches `maxResults * HYBRID_OVERFETCH_FACTOR` candidates
22
23
  * to give RRF enough diversity to produce `maxResults` fused results.
23
24
  */
24
- export async function runHybridSearch(table, embedder, onWarn, query, typeFilter, maxResults, boundary) {
25
+ export async function runHybridSearch(table, embedder, onWarn, query, typeFilter, maxResults, sourceContext, boundary) {
25
26
  const fetchCount = maxResults * HYBRID_OVERFETCH_FACTOR;
26
27
  const whereClause = buildWhereClause(typeFilter, boundary);
27
28
  const [queryVector] = await embedder.embed([query]);
@@ -31,7 +32,7 @@ export async function runHybridSearch(table, embedder, onWarn, query, typeFilter
31
32
  runFtsLeg(table, onWarn, query, whereClause, fetchCount),
32
33
  ]);
33
34
  // Merge with RRF
34
- return rrfMerge(vectorResults, ftsResults, maxResults);
35
+ return rrfMerge(vectorResults, ftsResults, maxResults, sourceContext);
35
36
  }
36
37
  async function runVectorLeg(table, queryVector, whereClause, limit) {
37
38
  let q = table.vectorSearch(queryVector).limit(limit).withRowId();
@@ -45,11 +46,11 @@ async function runVectorLeg(table, queryVector, whereClause, limit) {
45
46
  }));
46
47
  }
47
48
  /** FTS-only search — no embedder required. For use when embedding is unavailable (offline, no API key). */
48
- export async function runFtsSearch(table, onWarn, query, typeFilter, maxResults, boundary) {
49
+ export async function runFtsSearch(table, onWarn, query, typeFilter, maxResults, sourceContext, boundary) {
49
50
  const whereClause = buildWhereClause(typeFilter, boundary);
50
51
  const rows = await runFtsLeg(table, onWarn, query, whereClause, maxResults);
51
52
  return rows.map(({ row, rank }) => {
52
- const result = rowToSearchResult(row);
53
+ const result = rowToSearchResult(row, sourceContext);
53
54
  // If FTS didn't provide _score, use rank-based scoring (1.0 → 0.0)
54
55
  if (row['_score'] == null) {
55
56
  result.score = 1 / rank;
@@ -108,8 +109,15 @@ function buildWhereClause(typeFilter, boundary) {
108
109
  }
109
110
  return conditions.length > 0 ? conditions.join(' AND ') : undefined;
110
111
  }
111
- /** Convert a raw LanceDB row to a SearchResult. */
112
- function rowToSearchResult(row) {
112
+ /**
113
+ * Convert a raw LanceDB row to a SearchResult.
114
+ *
115
+ * `sourceContext` is **required** (mmnto/totem#1295 — CR outside-diff catch).
116
+ * An optional context with a silent `filePath` fallback for `absoluteFilePath`
117
+ * sent legacy callers down the wrong repo root instead of failing fast.
118
+ * Making the parameter required is the type-level fix for that drift.
119
+ */
120
+ function rowToSearchResult(row, sourceContext) {
113
121
  // Vector search returns _distance (lower = better); FTS returns _score (higher = better)
114
122
  let score = 0;
115
123
  if (row['_distance'] != null) {
@@ -118,21 +126,28 @@ function rowToSearchResult(row) {
118
126
  else if (row['_score'] != null) {
119
127
  score = row['_score'];
120
128
  }
121
- return {
129
+ const filePath = row['filePath'];
130
+ const absoluteFilePath = path.join(sourceContext.absolutePathRoot, filePath);
131
+ const result = {
122
132
  content: row['content'],
123
133
  contextPrefix: row['contextPrefix'],
124
- filePath: row['filePath'],
134
+ filePath,
135
+ absoluteFilePath,
125
136
  type: row['type'],
126
137
  label: row['label'],
127
138
  score,
128
139
  metadata: JSON.parse(row['metadata'] || '{}'),
129
140
  };
141
+ if (sourceContext.sourceRepo) {
142
+ result.sourceRepo = sourceContext.sourceRepo;
143
+ }
144
+ return result;
130
145
  }
131
146
  /**
132
147
  * Reciprocal Rank Fusion — merges two ranked result lists.
133
148
  * score(d) = Σ 1 / (k + rank_in_list) for each list containing d.
134
149
  */
135
- function rrfMerge(listA, listB, limit) {
150
+ function rrfMerge(listA, listB, limit, sourceContext) {
136
151
  const scores = new Map();
137
152
  for (const list of [listA, listB]) {
138
153
  for (const { row, rank, id } of list) {
@@ -144,6 +159,6 @@ function rrfMerge(listA, listB, limit) {
144
159
  return [...scores.values()]
145
160
  .sort((a, b) => b.score - a.score)
146
161
  .slice(0, limit)
147
- .map(({ score, row }) => ({ ...rowToSearchResult(row), score }));
162
+ .map(({ score, row }) => ({ ...rowToSearchResult(row, sourceContext), score }));
148
163
  }
149
164
  //# sourceMappingURL=lance-search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lance-search.js","sourceRoot":"","sources":["../../src/store/lance-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lance-search.js","sourceRoot":"","sources":["../../src/store/lance-search.ts"],"names":[],"mappings":"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"}
@@ -53,13 +53,22 @@ function mockEmbedder(vec = [1, 0, 0]) {
53
53
  embed: async (texts) => texts.map(() => vec),
54
54
  };
55
55
  }
56
+ /**
57
+ * Default SourceContext for tests that don't specifically exercise the
58
+ * source-tagging path. Required by the search functions since
59
+ * mmnto/totem#1295 made sourceContext a required parameter (removing
60
+ * the silent `filePath` fallback that CR flagged as Tenet 4 drift).
61
+ * Tests that DO care about the tagging live in the "source context
62
+ * tagging" describe block and pass their own context.
63
+ */
64
+ const DEFAULT_CTX = { absolutePathRoot: '/test' };
56
65
  // ─── runVectorSearch ────────────────────────────────────
57
66
  describe('runVectorSearch', () => {
58
67
  it('returns results mapped from LanceDB rows', async () => {
59
68
  const table = mockTable({
60
69
  vectorRows: [fakeRow('a', { _distance: 0.5 }), fakeRow('b', { _distance: 1.0 })],
61
70
  });
62
- const results = await runVectorSearch(table, mockEmbedder(), 'test query', undefined, 10);
71
+ const results = await runVectorSearch(table, mockEmbedder(), 'test query', undefined, 10, DEFAULT_CTX);
63
72
  expect(results).toHaveLength(2);
64
73
  expect(results[0].content).toBe('content-a');
65
74
  expect(results[0].score).toBeCloseTo(1 / (1 + 0.5));
@@ -68,26 +77,26 @@ describe('runVectorSearch', () => {
68
77
  });
69
78
  it('returns empty array when table has no matches', async () => {
70
79
  const table = mockTable({ vectorRows: [] });
71
- const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5);
80
+ const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX);
72
81
  expect(results).toHaveLength(0);
73
82
  });
74
83
  it('passes type filter as a WHERE clause', async () => {
75
84
  const table = mockTable({ vectorRows: [] });
76
- await runVectorSearch(table, mockEmbedder(), 'query', 'spec', 5);
85
+ await runVectorSearch(table, mockEmbedder(), 'query', 'spec', 5, DEFAULT_CTX);
77
86
  expect(table._vectorBuilder.where).toHaveBeenCalledOnce();
78
87
  const clause = table._vectorBuilder.where.mock.calls[0][0];
79
88
  expect(clause).toContain("`type` = 'spec'");
80
89
  });
81
90
  it('passes boundary filter as a WHERE LIKE clause', async () => {
82
91
  const table = mockTable({ vectorRows: [] });
83
- await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, 'src/utils');
92
+ await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX, 'src/utils');
84
93
  expect(table._vectorBuilder.where).toHaveBeenCalledOnce();
85
94
  const clause = table._vectorBuilder.where.mock.calls[0][0];
86
95
  expect(clause).toContain("`filePath` LIKE 'src/utils%'");
87
96
  });
88
97
  it('combines type and boundary filters with AND', async () => {
89
98
  const table = mockTable({ vectorRows: [] });
90
- await runVectorSearch(table, mockEmbedder(), 'query', 'code', 5, 'src/');
99
+ await runVectorSearch(table, mockEmbedder(), 'query', 'code', 5, DEFAULT_CTX, 'src/');
91
100
  const clause = table._vectorBuilder.where.mock.calls[0][0];
92
101
  expect(clause).toContain("`type` = 'code'");
93
102
  expect(clause).toContain("`filePath` LIKE 'src/%'");
@@ -95,7 +104,7 @@ describe('runVectorSearch', () => {
95
104
  });
96
105
  it('handles multiple boundary prefixes with OR', async () => {
97
106
  const table = mockTable({ vectorRows: [] });
98
- await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, [
107
+ await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX, [
99
108
  'src/a',
100
109
  'src/b',
101
110
  ]);
@@ -106,32 +115,35 @@ describe('runVectorSearch', () => {
106
115
  });
107
116
  it('does not call where when no filters are provided', async () => {
108
117
  const table = mockTable({ vectorRows: [] });
109
- await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5);
118
+ await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX);
110
119
  expect(table._vectorBuilder.where).not.toHaveBeenCalled();
111
120
  });
112
121
  it('escapes SQL wildcards in boundary prefixes', async () => {
113
122
  const table = mockTable({ vectorRows: [] });
114
- await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, 'src/50%_off');
123
+ await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX, 'src/50%_off');
115
124
  const clause = table._vectorBuilder.where.mock.calls[0][0];
116
125
  // % and _ should be escaped
117
126
  expect(clause).toContain('50\\%\\_off');
118
127
  });
119
128
  it('normalizes Windows backslashes in boundary prefixes', async () => {
120
129
  const table = mockTable({ vectorRows: [] });
121
- await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, 'src\\utils\\foo');
130
+ await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX, 'src\\utils\\foo');
122
131
  const clause = table._vectorBuilder.where.mock.calls[0][0];
123
132
  expect(clause).toContain('src/utils/foo');
124
133
  expect(clause).not.toContain('\\\\');
125
134
  });
126
135
  it('escapes single quotes in boundary prefixes', async () => {
127
136
  const table = mockTable({ vectorRows: [] });
128
- await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, "it's/a/path");
137
+ await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX, "it's/a/path");
129
138
  const clause = table._vectorBuilder.where.mock.calls[0][0];
130
139
  expect(clause).toContain("it''s/a/path");
131
140
  });
132
141
  it('filters out empty boundary strings', async () => {
133
142
  const table = mockTable({ vectorRows: [] });
134
- await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, ['', 'src/']);
143
+ await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX, [
144
+ '',
145
+ 'src/',
146
+ ]);
135
147
  const clause = table._vectorBuilder.where.mock.calls[0][0];
136
148
  expect(clause).toContain("`filePath` LIKE 'src/%'");
137
149
  expect(clause).not.toContain("LIKE '%'");
@@ -140,14 +152,14 @@ describe('runVectorSearch', () => {
140
152
  const table = mockTable({
141
153
  vectorRows: [fakeRow('x', { _distance: null })],
142
154
  });
143
- const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5);
155
+ const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX);
144
156
  expect(results[0].score).toBe(0);
145
157
  });
146
158
  it('parses metadata JSON from row', async () => {
147
159
  const table = mockTable({
148
160
  vectorRows: [fakeRow('m', { metadata: '{"key":"value"}' })],
149
161
  });
150
- const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5);
162
+ const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, DEFAULT_CTX);
151
163
  expect(results[0].metadata).toEqual({ key: 'value' });
152
164
  });
153
165
  });
@@ -159,7 +171,7 @@ describe('runHybridSearch', () => {
159
171
  const ftsRows = [fakeRow('a'), fakeRow('c')];
160
172
  const table = mockTable({ vectorRows, ftsRows });
161
173
  const onWarn = vi.fn();
162
- const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10);
174
+ const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10, DEFAULT_CTX);
163
175
  // 'a' appears in both lists, so it should have the highest RRF score
164
176
  expect(results.length).toBeGreaterThanOrEqual(3);
165
177
  expect(results[0].content).toBe('content-a');
@@ -178,7 +190,7 @@ describe('runHybridSearch', () => {
178
190
  ftsError: new Error('FTS index not found'),
179
191
  });
180
192
  const onWarn = vi.fn();
181
- const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10);
193
+ const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10, DEFAULT_CTX);
182
194
  expect(results).toHaveLength(2);
183
195
  expect(onWarn).toHaveBeenCalledOnce();
184
196
  expect(onWarn.mock.calls[0][0]).toContain('FTS search failed');
@@ -186,7 +198,7 @@ describe('runHybridSearch', () => {
186
198
  it('returns empty array when both legs return empty', async () => {
187
199
  const table = mockTable({ vectorRows: [], ftsRows: [] });
188
200
  const onWarn = vi.fn();
189
- const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10);
201
+ const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10, DEFAULT_CTX);
190
202
  expect(results).toHaveLength(0);
191
203
  });
192
204
  it('returns results when only FTS leg has results (vector empty)', async () => {
@@ -195,7 +207,7 @@ describe('runHybridSearch', () => {
195
207
  ftsRows: [fakeRow('x')],
196
208
  });
197
209
  const onWarn = vi.fn();
198
- const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10);
210
+ const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10, DEFAULT_CTX);
199
211
  expect(results).toHaveLength(1);
200
212
  expect(results[0].content).toBe('content-x');
201
213
  });
@@ -205,7 +217,7 @@ describe('runHybridSearch', () => {
205
217
  const ftsRows = Array.from({ length: 5 }, (_, i) => fakeRow(`f${i}`));
206
218
  const table = mockTable({ vectorRows, ftsRows });
207
219
  const onWarn = vi.fn();
208
- const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 3);
220
+ const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 3, DEFAULT_CTX);
209
221
  expect(results).toHaveLength(3);
210
222
  });
211
223
  it('ranks items appearing in both lists higher than single-list items', async () => {
@@ -214,7 +226,7 @@ describe('runHybridSearch', () => {
214
226
  const ftsRows = [fakeRow('shared')];
215
227
  const table = mockTable({ vectorRows, ftsRows });
216
228
  const onWarn = vi.fn();
217
- const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10);
229
+ const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10, DEFAULT_CTX);
218
230
  // 'shared' = 1/(60+2) + 1/(60+1) = 1/62 + 1/61
219
231
  // 'solo' = 1/(60+1) = 1/61
220
232
  // shared should rank higher
@@ -227,7 +239,7 @@ describe('runHybridSearch', () => {
227
239
  const ftsRows = [fakeRow('only')];
228
240
  const table = mockTable({ vectorRows, ftsRows });
229
241
  const onWarn = vi.fn();
230
- const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10);
242
+ const results = await runHybridSearch(table, mockEmbedder(), onWarn, 'query', undefined, 10, DEFAULT_CTX);
231
243
  expect(results).toHaveLength(1);
232
244
  // Both at rank 1: score = 2 * 1/(60+1) = 2/61
233
245
  expect(results[0].score).toBeCloseTo(2 / 61, 6);
@@ -235,7 +247,7 @@ describe('runHybridSearch', () => {
235
247
  it('passes type filter through to both legs', async () => {
236
248
  const table = mockTable({ vectorRows: [], ftsRows: [] });
237
249
  const onWarn = vi.fn();
238
- await runHybridSearch(table, mockEmbedder(), onWarn, 'query', 'spec', 5);
250
+ await runHybridSearch(table, mockEmbedder(), onWarn, 'query', 'spec', 5, DEFAULT_CTX);
239
251
  // Vector leg should get a where clause
240
252
  expect(table._vectorBuilder.where).toHaveBeenCalled();
241
253
  const vectorClause = table._vectorBuilder.where.mock.calls[0][0];
@@ -255,7 +267,7 @@ describe('runFtsSearch', () => {
255
267
  ];
256
268
  const table = mockTable({ ftsRows });
257
269
  const onWarn = vi.fn();
258
- const results = await runFtsSearch(table, onWarn, 'test query', undefined, 10);
270
+ const results = await runFtsSearch(table, onWarn, 'test query', undefined, 10, DEFAULT_CTX);
259
271
  expect(results).toHaveLength(2);
260
272
  expect(results[0].content).toBe('content-a');
261
273
  expect(results[1].content).toBe('content-b');
@@ -267,7 +279,7 @@ describe('runFtsSearch', () => {
267
279
  ];
268
280
  const table = mockTable({ ftsRows });
269
281
  const onWarn = vi.fn();
270
- const results = await runFtsSearch(table, onWarn, 'query', undefined, 10);
282
+ const results = await runFtsSearch(table, onWarn, 'query', undefined, 10, DEFAULT_CTX);
271
283
  // Rank 1 → score 1/1 = 1.0, Rank 2 → score 1/2 = 0.5
272
284
  expect(results[0].score).toBeCloseTo(1.0);
273
285
  expect(results[1].score).toBeCloseTo(0.5);
@@ -276,13 +288,13 @@ describe('runFtsSearch', () => {
276
288
  const ftsRows = [fakeRow('a', { _distance: undefined, _score: 2.5 })];
277
289
  const table = mockTable({ ftsRows });
278
290
  const onWarn = vi.fn();
279
- const results = await runFtsSearch(table, onWarn, 'query', undefined, 10);
291
+ const results = await runFtsSearch(table, onWarn, 'query', undefined, 10, DEFAULT_CTX);
280
292
  expect(results[0].score).toBeCloseTo(2.5);
281
293
  });
282
294
  it('returns empty on FTS failure and warns', async () => {
283
295
  const table = mockTable({ ftsError: new Error('no FTS index') });
284
296
  const onWarn = vi.fn();
285
- const results = await runFtsSearch(table, onWarn, 'query', undefined, 10);
297
+ const results = await runFtsSearch(table, onWarn, 'query', undefined, 10, DEFAULT_CTX);
286
298
  expect(results).toHaveLength(0);
287
299
  expect(onWarn).toHaveBeenCalledOnce();
288
300
  expect(onWarn.mock.calls[0][0]).toContain('FTS search failed');
@@ -290,7 +302,7 @@ describe('runFtsSearch', () => {
290
302
  it('passes type filter as WHERE clause', async () => {
291
303
  const table = mockTable({ ftsRows: [] });
292
304
  const onWarn = vi.fn();
293
- await runFtsSearch(table, onWarn, 'query', 'lesson', 5);
305
+ await runFtsSearch(table, onWarn, 'query', 'lesson', 5, DEFAULT_CTX);
294
306
  expect(table._ftsBuilder.where).toHaveBeenCalled();
295
307
  const clause = table._ftsBuilder.where.mock.calls[0][0];
296
308
  expect(clause).toContain("`type` = 'lesson'");
@@ -298,10 +310,80 @@ describe('runFtsSearch', () => {
298
310
  it('passes boundary filter as WHERE LIKE clause', async () => {
299
311
  const table = mockTable({ ftsRows: [] });
300
312
  const onWarn = vi.fn();
301
- await runFtsSearch(table, onWarn, 'query', undefined, 5, 'packages/core');
313
+ await runFtsSearch(table, onWarn, 'query', undefined, 5, { absolutePathRoot: '/test' }, 'packages/core');
302
314
  expect(table._ftsBuilder.where).toHaveBeenCalled();
303
315
  const clause = table._ftsBuilder.where.mock.calls[0][0];
304
316
  expect(clause).toContain("`filePath` LIKE 'packages/core%'");
305
317
  });
306
318
  });
319
+ // ─── Source context tagging (mmnto/totem#1294 Phase 1 + #1295 required-context) ──
320
+ //
321
+ // Phase 1 originally tested a "no sourceContext" fallback where
322
+ // `absoluteFilePath === filePath`. CR flagged that test on PR #1295 as
323
+ // locking in silent drift — legacy callers that forgot the context would
324
+ // keep looking healthy instead of failing fast. The fix was to make
325
+ // sourceContext required at the type level (see mmnto/totem#1295 review
326
+ // cycle). The tests below now ONLY exercise the required-context path.
327
+ describe('source context tagging', () => {
328
+ it('runVectorSearch: primary sourceContext (no sourceRepo) → absoluteFilePath joined, sourceRepo absent', async () => {
329
+ const table = mockTable({
330
+ vectorRows: [fakeRow('a', { _distance: 0.5, filePath: 'src/foo.ts' })],
331
+ });
332
+ const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, { absolutePathRoot: '/d/Dev/totem' });
333
+ expect(results).toHaveLength(1);
334
+ expect(results[0].filePath).toBe('src/foo.ts');
335
+ // path.join normalizes to the platform separator; check with posix + win32 forms
336
+ expect(results[0].absoluteFilePath).toMatch(/^[/\\]d[/\\]Dev[/\\]totem[/\\]src[/\\]foo\.ts$/);
337
+ expect(results[0].sourceRepo).toBeUndefined();
338
+ });
339
+ it('runVectorSearch: linked sourceContext → absoluteFilePath joined AND sourceRepo set', async () => {
340
+ const table = mockTable({
341
+ vectorRows: [fakeRow('a', { _distance: 0.5, filePath: 'adr/adr-001.md' })],
342
+ });
343
+ const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, {
344
+ sourceRepo: 'strategy',
345
+ absolutePathRoot: '/d/Dev/totem-strategy',
346
+ });
347
+ expect(results).toHaveLength(1);
348
+ expect(results[0].filePath).toBe('adr/adr-001.md');
349
+ expect(results[0].absoluteFilePath).toMatch(/^[/\\]d[/\\]Dev[/\\]totem-strategy[/\\]adr[/\\]adr-001\.md$/);
350
+ expect(results[0].sourceRepo).toBe('strategy');
351
+ });
352
+ it('runHybridSearch: sourceContext flows through RRF merge to final results', async () => {
353
+ const table = mockTable({
354
+ vectorRows: [fakeRow('a', { _distance: 0.5, filePath: 'src/foo.ts' })],
355
+ ftsRows: [fakeRow('a', { _score: 10, filePath: 'src/foo.ts' })],
356
+ });
357
+ const results = await runHybridSearch(table, mockEmbedder(), () => { }, 'query', undefined, 5, { sourceRepo: 'playground', absolutePathRoot: '/d/Dev/totem-playground' });
358
+ // RRF merges the same row from both legs — should produce one result
359
+ expect(results).toHaveLength(1);
360
+ expect(results[0].sourceRepo).toBe('playground');
361
+ expect(results[0].absoluteFilePath).toMatch(/^[/\\]d[/\\]Dev[/\\]totem-playground[/\\]src[/\\]foo\.ts$/);
362
+ });
363
+ it('runFtsSearch: sourceContext threads through FTS-only path', async () => {
364
+ const table = mockTable({
365
+ ftsRows: [fakeRow('a', { _score: 10, filePath: 'proposals/active/215-mesh.md' })],
366
+ });
367
+ const results = await runFtsSearch(table, () => { }, 'mesh query', undefined, 5, {
368
+ sourceRepo: 'strategy',
369
+ absolutePathRoot: '/d/Dev/totem-strategy',
370
+ });
371
+ expect(results).toHaveLength(1);
372
+ expect(results[0].sourceRepo).toBe('strategy');
373
+ expect(results[0].filePath).toBe('proposals/active/215-mesh.md');
374
+ expect(results[0].absoluteFilePath).toMatch(/^[/\\]d[/\\]Dev[/\\]totem-strategy[/\\]proposals[/\\]active[/\\]215-mesh\.md$/);
375
+ });
376
+ it('runVectorSearch: sourceRepo of empty string is treated as absent', async () => {
377
+ // Edge case: someone passes sourceRepo: '' — should NOT set the tag
378
+ // (mirrors the truthy check in rowToSearchResult)
379
+ const table = mockTable({
380
+ vectorRows: [fakeRow('a', { _distance: 0.5, filePath: 'src/foo.ts' })],
381
+ });
382
+ const results = await runVectorSearch(table, mockEmbedder(), 'query', undefined, 5, {
383
+ sourceRepo: '',
384
+ absolutePathRoot: '/d/Dev/totem',
385
+ });
386
+ expect(results[0].sourceRepo).toBeUndefined();
387
+ });
388
+ });
307
389
  //# sourceMappingURL=lance-search.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lance-search.test.js","sourceRoot":"","sources":["../../src/store/lance-search.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEnF,2DAA2D;AAE3D,2EAA2E;AAC3E,SAAS,OAAO,CAAC,EAAU,EAAE,YAAqC,EAAE;IAClE,OAAO;QACL,OAAO,EAAE,WAAW,EAAE,EAAE;QACxB,aAAa,EAAE,UAAU,EAAE,EAAE;QAC7B,QAAQ,EAAE,OAAO,EAAE,KAAK;QACxB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,SAAS,EAAE,EAAE;QACpB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,GAAG;QACd,MAAM,EAAE,EAAE;QACV,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,SAAS,gBAAgB,CAAC,IAA+B;IACvD,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;YAC9B,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QACF,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;QAChC,SAAS,EAAE,QAAQ;KACpB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mCAAmC;AACnC,SAAS,SAAS,CAAC,IAIlB;IACC,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAExD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;QACxC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;QAC/B,cAAc,EAAE,aAAa;QAC7B,WAAW,EAAE,UAAU;KACxB,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,SAAS,YAAY,CAAC,MAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,MAAM;QACtB,KAAK,EAAE,KAAK,EAAE,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,2DAA2D;AAE3D,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,KAAK,GAAG,SAAS,CAAC;YACtB,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;SACjF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,YAAY,EACZ,SAAS,EACT,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAE1E,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAE1F,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE;YAC3E,OAAO;YACP,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAE5F,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,4BAA4B;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEhG,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAE5F,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC;YACtB,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC;YACtB,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,2DAA2D;AAE3D,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,sEAAsE;QACtE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7C,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,EAAE,CACH,CAAC;QAEF,qEAAqE;QACrE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9C,yCAAyC;QACzC,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAE3D,yEAAyE;QACzE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,SAAS,CAAC;YACtB,UAAU;YACV,QAAQ,EAAE,IAAI,KAAK,CAAC,qBAAqB,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,KAAK,GAAG,SAAS,CAAC;YACtB,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACxB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,2BAA2B;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,qEAAqE;QACrE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,EAAE,CACH,CAAC;QAEF,+CAA+C;QAC/C,6BAA6B;QAC7B,4BAA4B;QAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,eAAe,CACnC,KAAc,EACd,YAAY,EAAE,EACd,MAAM,EACN,OAAO,EACP,SAAS,EACT,EAAE,CACH,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,8CAA8C;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,eAAe,CAAC,KAAc,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAElF,uCAAuC;QACvC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACtD,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QAC5E,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAElD,yCAAyC;QACzC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6DAA6D;AAE7D,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,OAAO,GAAG;YACd,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SACvC,CAAC;QACF,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAc,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAExF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,OAAO,GAAG;YACd,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;SAC1D,CAAC;QACF,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAEnF,qDAAqD;QACrD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAEnF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAEnF,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,YAAY,CAAC,KAAc,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEjE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEvB,MAAM,YAAY,CAAC,KAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QAEnF,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAW,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"lance-search.test.js","sourceRoot":"","sources":["../../src/store/lance-search.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Embedder } from '../embedders/embedder.js';
2
- import type { Chunk, HealthCheckResult, SearchOptions, SearchResult } from '../types.js';
2
+ import type { Chunk, HealthCheckResult, SearchOptions, SearchResult, SourceContext } from '../types.js';
3
3
  /**
4
4
  * Escape a string for use in a LanceDB SQL WHERE clause (single-quoted literal).
5
5
  *
@@ -16,7 +16,22 @@ export declare class LanceStore {
16
16
  private embedder;
17
17
  private hasFtsIndex;
18
18
  private onWarn;
19
- constructor(dbPath: string, embedder: Embedder, onWarn?: (msg: string) => void);
19
+ /**
20
+ * Source repo context injected at construction time. Primary stores use
21
+ * `{ absolutePathRoot: projectRoot }` with no `sourceRepo`; linked stores
22
+ * (mmnto/totem#1294 Cross-Repo Context Mesh) use
23
+ * `{ sourceRepo: '<link name>', absolutePathRoot: '<linked repo root>' }`.
24
+ * Passed down to every `search` / `searchFts` call so every SearchResult
25
+ * gets stamped with the owning store's identity via `rowToSearchResult`.
26
+ *
27
+ * **Required** since mmnto/totem#1295 — CR flagged that an optional
28
+ * context with a silent `filePath` fallback for `absoluteFilePath` sent
29
+ * legacy callers down the wrong repo root instead of failing fast.
30
+ * Making the parameter required closes that class of bug at the type
31
+ * level and forces every call site to state its source explicitly.
32
+ */
33
+ private sourceContext;
34
+ constructor(dbPath: string, embedder: Embedder, sourceContext: SourceContext, onWarn?: (msg: string) => void);
20
35
  /**
21
36
  * Connect to LanceDB. Auto-heals on version mismatch, corruption,
22
37
  * or embedder dimension change by deleting the index and signaling
@@ -1 +1 @@
1
- {"version":3,"file":"lance-store.d.ts","sourceRoot":"","sources":["../../src/store/lance-store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,EAEb,MAAM,aAAa,CAAC;AAKrB;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAwB;gBAE1B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAM9E;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B9B;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrC,8EAA8E;YAChE,oBAAoB;IAalC,gEAAgE;IAChE,OAAO,CAAC,eAAe;IAcvB,6DAA6D;YAC/C,YAAY;IAiB1B,uDAAuD;IACjD,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B5C;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrC,sDAAsD;YACxC,cAAc;IAiB5B,4DAA4D;IAC5D,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA6B7D;;;;OAIG;IACG,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAahE,yEAAyE;IACnE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,qDAAqD;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,kFAAkF;IAC5E,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAOhC,+DAA+D;IACzD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC,oDAAoD;IAC9C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9B,4CAA4C;IACtC,KAAK,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAe/E,mFAAmF;IAC7E,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAShD"}
1
+ {"version":3,"file":"lance-store.d.ts","sourceRoot":"","sources":["../../src/store/lance-store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,EAEd,MAAM,aAAa,CAAC;AAKrB;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAwB;IACtC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,aAAa,CAAgB;gBAGnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAQhC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B9B;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrC,8EAA8E;YAChE,oBAAoB;IAalC,gEAAgE;IAChE,OAAO,CAAC,eAAe;IAcvB,6DAA6D;YAC/C,YAAY;IAiB1B,uDAAuD;IACjD,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B5C;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrC,sDAAsD;YACxC,cAAc;IAiB5B,4DAA4D;IAC5D,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA+B7D;;;;OAIG;IACG,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAchE,yEAAyE;IACnE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,qDAAqD;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,kFAAkF;IAC5E,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAOhC,+DAA+D;IACzD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC,oDAAoD;IAC9C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9B,4CAA4C;IACtC,KAAK,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAe/E,mFAAmF;IAC7E,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAShD"}
@@ -22,9 +22,25 @@ export class LanceStore {
22
22
  embedder;
23
23
  hasFtsIndex = false;
24
24
  onWarn;
25
- constructor(dbPath, embedder, onWarn) {
25
+ /**
26
+ * Source repo context injected at construction time. Primary stores use
27
+ * `{ absolutePathRoot: projectRoot }` with no `sourceRepo`; linked stores
28
+ * (mmnto/totem#1294 Cross-Repo Context Mesh) use
29
+ * `{ sourceRepo: '<link name>', absolutePathRoot: '<linked repo root>' }`.
30
+ * Passed down to every `search` / `searchFts` call so every SearchResult
31
+ * gets stamped with the owning store's identity via `rowToSearchResult`.
32
+ *
33
+ * **Required** since mmnto/totem#1295 — CR flagged that an optional
34
+ * context with a silent `filePath` fallback for `absoluteFilePath` sent
35
+ * legacy callers down the wrong repo root instead of failing fast.
36
+ * Making the parameter required closes that class of bug at the type
37
+ * level and forces every call site to state its source explicitly.
38
+ */
39
+ sourceContext;
40
+ constructor(dbPath, embedder, sourceContext, onWarn) {
26
41
  this.dbPath = dbPath;
27
42
  this.embedder = embedder;
43
+ this.sourceContext = sourceContext;
28
44
  this.onWarn = onWarn ?? (() => { });
29
45
  }
30
46
  /**
@@ -205,9 +221,9 @@ export class LanceStore {
205
221
  const boundary = options.boundary;
206
222
  const useHybrid = (options.hybrid ?? true) && this.hasFtsIndex;
207
223
  if (useHybrid) {
208
- return runHybridSearch(this.table, this.embedder, this.onWarn, options.query, options.typeFilter, maxResults, boundary);
224
+ return runHybridSearch(this.table, this.embedder, this.onWarn, options.query, options.typeFilter, maxResults, this.sourceContext, boundary);
209
225
  }
210
- return runVectorSearch(this.table, this.embedder, options.query, options.typeFilter, maxResults, boundary);
226
+ return runVectorSearch(this.table, this.embedder, options.query, options.typeFilter, maxResults, this.sourceContext, boundary);
211
227
  }
212
228
  /**
213
229
  * FTS-only search — no embedder required.
@@ -217,7 +233,7 @@ export class LanceStore {
217
233
  async searchFts(options) {
218
234
  if (!this.table || !this.hasFtsIndex)
219
235
  return [];
220
- return runFtsSearch(this.table, this.onWarn, options.query, options.typeFilter, options.maxResults ?? 5, options.boundary);
236
+ return runFtsSearch(this.table, this.onWarn, options.query, options.typeFilter, options.maxResults ?? 5, this.sourceContext, options.boundary);
221
237
  }
222
238
  /** Delete all chunks from a specific file (for incremental re-index). */
223
239
  async deleteByFile(filePath) {