daftari 1.7.1 → 1.9.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 (59) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +74 -25
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +85 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/search/bm25.d.ts +1 -17
  7. package/dist/search/bm25.d.ts.map +1 -1
  8. package/dist/search/bm25.js +43 -65
  9. package/dist/search/bm25.js.map +1 -1
  10. package/dist/search/embedding-provider.d.ts +8 -0
  11. package/dist/search/embedding-provider.d.ts.map +1 -0
  12. package/dist/search/embedding-provider.js +26 -0
  13. package/dist/search/embedding-provider.js.map +1 -0
  14. package/dist/search/hybrid.d.ts.map +1 -1
  15. package/dist/search/hybrid.js +106 -34
  16. package/dist/search/hybrid.js.map +1 -1
  17. package/dist/search/index-state.d.ts +10 -0
  18. package/dist/search/index-state.d.ts.map +1 -1
  19. package/dist/search/index-state.js +58 -3
  20. package/dist/search/index-state.js.map +1 -1
  21. package/dist/search/providers/local-minilm.d.ts +7 -0
  22. package/dist/search/providers/local-minilm.d.ts.map +1 -0
  23. package/dist/search/providers/local-minilm.js +114 -0
  24. package/dist/search/providers/local-minilm.js.map +1 -0
  25. package/dist/search/providers/openai-3-small.d.ts +5 -0
  26. package/dist/search/providers/openai-3-small.d.ts.map +1 -0
  27. package/dist/search/providers/openai-3-small.js +174 -0
  28. package/dist/search/providers/openai-3-small.js.map +1 -0
  29. package/dist/search/reindex.d.ts +3 -0
  30. package/dist/search/reindex.d.ts.map +1 -1
  31. package/dist/search/reindex.js +189 -39
  32. package/dist/search/reindex.js.map +1 -1
  33. package/dist/search/self-write.d.ts +4 -0
  34. package/dist/search/self-write.d.ts.map +1 -0
  35. package/dist/search/self-write.js +62 -0
  36. package/dist/search/self-write.js.map +1 -0
  37. package/dist/search/vector.d.ts +10 -1
  38. package/dist/search/vector.d.ts.map +1 -1
  39. package/dist/search/vector.js +102 -59
  40. package/dist/search/vector.js.map +1 -1
  41. package/dist/search/watcher.d.ts +18 -0
  42. package/dist/search/watcher.d.ts.map +1 -0
  43. package/dist/search/watcher.js +300 -0
  44. package/dist/search/watcher.js.map +1 -0
  45. package/dist/storage/index-db.d.ts +17 -4
  46. package/dist/storage/index-db.d.ts.map +1 -1
  47. package/dist/storage/index-db.js +329 -28
  48. package/dist/storage/index-db.js.map +1 -1
  49. package/dist/tools/search.d.ts.map +1 -1
  50. package/dist/tools/search.js +11 -3
  51. package/dist/tools/search.js.map +1 -1
  52. package/dist/tools/write.d.ts.map +1 -1
  53. package/dist/tools/write.js +9 -0
  54. package/dist/tools/write.js.map +1 -1
  55. package/dist/utils/config.d.ts +5 -0
  56. package/dist/utils/config.d.ts.map +1 -1
  57. package/dist/utils/config.js +53 -0
  58. package/dist/utils/config.js.map +1 -1
  59. package/package.json +4 -2
@@ -0,0 +1,174 @@
1
+ // openai-3-small — OpenAI `text-embedding-3-small` via the public REST API.
2
+ // 1536 dims. Trades local CPU + cold-start latency for paid network calls;
3
+ // the embeddings cache makes the cost a one-time event per chunk text.
4
+ //
5
+ // Trust model: the vault owner sets OPENAI_API_KEY in the environment of the
6
+ // MCP server process. The key is never read from config files or logged.
7
+ // Missing key is a hard config error (see config loader) so a "paid" provider
8
+ // can't silently fall back to free.
9
+ //
10
+ // Transport: native `fetch` (Node 20+ ships it globally). We deliberately
11
+ // don't depend on the `openai` SDK — a 30-line typed wrapper avoids
12
+ // dependency churn and a giant chain of transitive deps for what's a single
13
+ // HTTP endpoint.
14
+ //
15
+ // Batching: 96 inputs per request. OpenAI's documented max is 2048 but
16
+ // smaller batches keep the retry blast radius small (one batch failing
17
+ // doesn't lose 2000 vectors' worth of work) and let onProgress fire often
18
+ // enough to make a multi-thousand-chunk reindex visibly alive.
19
+ //
20
+ // Retries: exponential backoff on 429 / 5xx, max 3 retries. A definitive
21
+ // failure (4xx other than 429, or a 4th attempt failing) returns Result.err;
22
+ // callers degrade to BM25-only. We never throw from embed().
23
+ import { err, ok } from "../../frontmatter/types.js";
24
+ export const OPENAI_3_SMALL_ID = "openai-3-small";
25
+ export const OPENAI_3_SMALL_DIM = 1536;
26
+ const OPENAI_MODEL = "text-embedding-3-small";
27
+ const OPENAI_URL = "https://api.openai.com/v1/embeddings";
28
+ // Per-request batch size. OpenAI accepts up to 2048; we pick smaller so a
29
+ // transient 5xx is cheap to retry and progress reporting feels responsive.
30
+ const BATCH_SIZE = 96;
31
+ // Retry budget. 3 retries with exponential backoff covers the typical 429 /
32
+ // 5xx blip without making a hard failure feel like an indefinite hang.
33
+ const MAX_RETRIES = 3;
34
+ const BASE_BACKOFF_MS = 500;
35
+ function isRetryableStatus(status) {
36
+ return status === 429 || status >= 500;
37
+ }
38
+ // Sleep with backoff. Exposed as a parameter so tests can stub it without
39
+ // waiting real wall time. The first retry waits BASE_BACKOFF_MS, the second
40
+ // 2x, the third 4x — total worst-case ~3.5s before giving up.
41
+ async function delay(ms) {
42
+ return new Promise((resolve) => setTimeout(resolve, ms));
43
+ }
44
+ // Normalise a vector to unit length in place. OpenAI's text-embedding-3-small
45
+ // returns L2-normalized vectors by default, so this is a defense-in-depth
46
+ // no-op for the happy path. We still do it because cosine similarity is
47
+ // stable iff inputs are normalized, and "the API silently returns un-
48
+ // normalized vectors" is exactly the class of upstream change we'd rather
49
+ // not be caught by.
50
+ function l2Normalize(vec) {
51
+ let norm = 0;
52
+ for (let i = 0; i < vec.length; i++) {
53
+ const x = vec[i];
54
+ norm += x * x;
55
+ }
56
+ if (norm === 0)
57
+ return vec;
58
+ const inv = 1 / Math.sqrt(norm);
59
+ for (let i = 0; i < vec.length; i++) {
60
+ vec[i] = vec[i] * inv;
61
+ }
62
+ return vec;
63
+ }
64
+ // One HTTP call to /v1/embeddings for a single batch. Retries on 429/5xx
65
+ // with exponential backoff; surfaces a definitive failure as Result.err.
66
+ async function embedBatch(apiKey, inputs) {
67
+ let attempt = 0;
68
+ let lastError = "unknown";
69
+ while (attempt <= MAX_RETRIES) {
70
+ let response;
71
+ try {
72
+ response = await fetch(OPENAI_URL, {
73
+ method: "POST",
74
+ headers: {
75
+ "content-type": "application/json",
76
+ authorization: `Bearer ${apiKey}`,
77
+ },
78
+ body: JSON.stringify({ input: inputs, model: OPENAI_MODEL }),
79
+ });
80
+ }
81
+ catch (e) {
82
+ // Network-level failure (DNS, connection reset). Retry like a 5xx.
83
+ lastError = e instanceof Error ? e.message : String(e);
84
+ if (attempt < MAX_RETRIES) {
85
+ await delay(BASE_BACKOFF_MS * 2 ** attempt);
86
+ attempt += 1;
87
+ continue;
88
+ }
89
+ return err(new Error(`openai embedding request failed: ${lastError}`));
90
+ }
91
+ if (response.ok) {
92
+ let parsed;
93
+ try {
94
+ parsed = (await response.json());
95
+ }
96
+ catch (e) {
97
+ const reason = e instanceof Error ? e.message : String(e);
98
+ return err(new Error(`openai embedding response not JSON: ${reason}`));
99
+ }
100
+ if (!parsed.data || parsed.data.length !== inputs.length) {
101
+ return err(new Error(`openai embedding response had ${parsed.data?.length ?? 0} vectors ` +
102
+ `for ${inputs.length} inputs`));
103
+ }
104
+ const vectors = [];
105
+ for (const item of parsed.data) {
106
+ if (!Array.isArray(item.embedding) || item.embedding.length !== OPENAI_3_SMALL_DIM) {
107
+ return err(new Error(`openai returned vector of dim ${item.embedding?.length ?? 0}, ` +
108
+ `expected ${OPENAI_3_SMALL_DIM}`));
109
+ }
110
+ const vec = new Float32Array(item.embedding);
111
+ vectors.push(l2Normalize(vec));
112
+ }
113
+ return ok(vectors);
114
+ }
115
+ // Read the body for diagnostics; ignore body-read failures because the
116
+ // status code is the load-bearing signal.
117
+ let body = "";
118
+ try {
119
+ body = await response.text();
120
+ }
121
+ catch {
122
+ // ignore
123
+ }
124
+ lastError = `${response.status} ${response.statusText} ${body}`.trim();
125
+ if (!isRetryableStatus(response.status) || attempt >= MAX_RETRIES) {
126
+ return err(new Error(`openai embedding request failed: ${lastError}`));
127
+ }
128
+ await delay(BASE_BACKOFF_MS * 2 ** attempt);
129
+ attempt += 1;
130
+ }
131
+ return err(new Error(`openai embedding request failed: ${lastError}`));
132
+ }
133
+ // Factory: takes the API key explicitly so the provider object is pure data
134
+ // once constructed. The config loader validates the env var presence and
135
+ // passes the value here; that way a missing key surfaces at config load,
136
+ // not at first embed.
137
+ export function makeOpenAi3SmallProvider(apiKey) {
138
+ if (!apiKey) {
139
+ throw new Error("makeOpenAi3SmallProvider: empty apiKey");
140
+ }
141
+ return {
142
+ id: OPENAI_3_SMALL_ID,
143
+ dim: OPENAI_3_SMALL_DIM,
144
+ // Stateless HTTP — no warm-up cost. Returning ok keeps the warm path
145
+ // uniform across providers so the server's startup wiring doesn't need
146
+ // to special-case the provider.
147
+ async warm() {
148
+ return ok(undefined);
149
+ },
150
+ async embed(texts, onProgress) {
151
+ if (texts.length === 0)
152
+ return ok([]);
153
+ const vectors = [];
154
+ for (let start = 0; start < texts.length; start += BATCH_SIZE) {
155
+ const batch = texts.slice(start, start + BATCH_SIZE);
156
+ const batchResult = await embedBatch(apiKey, batch);
157
+ if (!batchResult.ok)
158
+ return batchResult;
159
+ for (const v of batchResult.value)
160
+ vectors.push(v);
161
+ if (onProgress) {
162
+ try {
163
+ onProgress(vectors.length, texts.length);
164
+ }
165
+ catch {
166
+ // best-effort: a broken reporter must not stop the embed.
167
+ }
168
+ }
169
+ }
170
+ return ok(vectors);
171
+ },
172
+ };
173
+ }
174
+ //# sourceMappingURL=openai-3-small.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-3-small.js","sourceRoot":"","sources":["../../../src/search/providers/openai-3-small.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@ export interface ReindexResult {
6
6
  vectorEnabled: boolean;
7
7
  skipped: string[];
8
8
  indexedAt: string;
9
+ embeddedCount: number;
10
+ cacheHits: number;
11
+ orphansRemoved: number;
9
12
  }
10
13
  export interface ReindexOptions {
11
14
  onProgress?: (done: number, total: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"AAaA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAyE/D,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CActE;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAI7B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AA4FD,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CA0CvC;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAQD,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAqE7C"}
1
+ {"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAmH/D,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CActE;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAIlB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAM7B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AA+FD,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CA8GvC;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AASD,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAyG7C"}
@@ -4,17 +4,55 @@
4
4
  // from scratch — there is no incremental update path to drift out of sync.
5
5
  // Called on server start and by the vault_reindex tool / --reindex CLI flag.
6
6
  //
7
- // Embedding is best-effort: every chunk across the whole vault is embedded,
8
- // in fixed-size sub-batches so peak memory stays flat as the vault grows. If
9
- // the model is unavailable the documents (and their BM25 tokens) still index;
10
- // only the vector column is left NULL and vectorEnabled is false.
7
+ // Embedding is content-addressed: each chunk's text is hashed (sha256), and
8
+ // the embeddings table is keyed by (content_hash, model). A reindex hashes
9
+ // every chunk, asks the cache which (hash, model) pairs already exist, and
10
+ // only embeds the misses. Edits to one file re-embed that file's changed
11
+ // chunks; renames, moved paragraphs, and identical text in two files all
12
+ // hit the cache and embed zero. Orphaned cache rows (chunks that no longer
13
+ // reference them) are reaped at the end of the pass.
14
+ //
15
+ // If the model is unavailable the documents (and their BM25 tokens) still
16
+ // index; chunks are written with their content_hash but no embedding row is
17
+ // inserted, so the join in vector.ts comes back null and search degrades to
18
+ // lexical-only.
11
19
  import { stat } from "node:fs/promises";
12
20
  import { parseDocument } from "../frontmatter/parser.js";
13
21
  import { err, ok } from "../frontmatter/types.js";
14
- import { clearIndex, deleteDocument, documentCount, getMeta, insertChunk, insertDocument, openIndexDb, setMeta, } from "../storage/index-db.js";
22
+ import { clearEmbeddingsVec, clearIndex, deleteDocument, documentCount, existingEmbeddingHashes, gcOrphanedEmbeddings, getMeta, insertChunkRow, insertDocument, insertEmbedding, insertEmbeddingVec, openIndexDb, setMeta, } from "../storage/index-db.js";
15
23
  import { listFiles, readFile, resolveVaultPath } from "../storage/local.js";
24
+ import { sha256Hex } from "../utils/hash.js";
16
25
  import { tokenize } from "./bm25.js";
17
- import { chunkText, EMBEDDING_DIM, embed } from "./vector.js";
26
+ import { chunkText, embed, getProvider } from "./vector.js";
27
+ // Opens the index DB with the active embedding provider's dim, so the
28
+ // sqlite-vec virtual table is created (or rebuilt) at the right
29
+ // dimensionality. Every reindex / index-document path opens the DB this
30
+ // way; a caller that doesn't care about vectors (a freshness probe,
31
+ // say) can fall back to `openIndexDb(vault)` which uses a default dim.
32
+ function openIndexForActiveProvider(vaultRoot) {
33
+ return openIndexDb(vaultRoot, getProvider().dim);
34
+ }
35
+ // Repopulates the sqlite-vec mirror from the durable `embeddings` cache
36
+ // for the given model. Called at the end of every full reindex so the vec
37
+ // table always reflects the current vault. The previous mirror contents
38
+ // are dropped wholesale — simpler and faster than a diff for the sizes
39
+ // this index reaches in practice.
40
+ function rebuildEmbeddingsVec(db, modelId) {
41
+ const rebuild = db.transaction(() => {
42
+ clearEmbeddingsVec(db);
43
+ const rows = db
44
+ .prepare(`SELECT e.content_hash AS content_hash, e.embedding AS embedding
45
+ FROM embeddings AS e
46
+ WHERE e.model = ?
47
+ AND e.content_hash IN (SELECT content_hash FROM chunks)`)
48
+ .all(modelId);
49
+ const insert = db.prepare("INSERT INTO embeddings_vec(content_hash, model, embedding) VALUES (?, ?, ?)");
50
+ for (const row of rows) {
51
+ insert.run(row.content_hash, modelId, row.embedding);
52
+ }
53
+ });
54
+ rebuild();
55
+ }
18
56
  // Manifest key in the meta table: JSON object mapping vault-relative path to
19
57
  // mtime in ms. Written at the end of a successful reindex and updated by
20
58
  // indexDocument after each incremental write, so a startup freshness check
@@ -75,7 +113,7 @@ function manifestsMatch(a, b) {
75
113
  // matches the stored value. Used by `main()` to skip a 20+ minute re-embed
76
114
  // pass on every restart of a vault that hasn't changed.
77
115
  export async function isIndexFresh(vaultRoot) {
78
- const dbResult = openIndexDb(vaultRoot);
116
+ const dbResult = openIndexForActiveProvider(vaultRoot);
79
117
  if (!dbResult.ok)
80
118
  return false;
81
119
  const db = dbResult.value;
@@ -112,6 +150,8 @@ async function stageOne(vaultRoot, relPath) {
112
150
  // BM25 indexes title, tags, and body together so a title- or tag-only
113
151
  // match still ranks.
114
152
  const tokens = tokenize(`${fm.title} ${fm.tags.join(" ")} ${body}`);
153
+ const chunks = chunkText(body);
154
+ const hashes = chunks.map((t) => sha256Hex(t));
115
155
  return {
116
156
  doc: {
117
157
  path: relPath,
@@ -128,7 +168,8 @@ async function stageOne(vaultRoot, relPath) {
128
168
  created: fm.created,
129
169
  supersededBy: fm.superseded_by,
130
170
  },
131
- chunks: chunkText(body),
171
+ chunks,
172
+ hashes,
132
173
  };
133
174
  }
134
175
  // Reads and parses every markdown file into the shape the index needs. A file
@@ -149,21 +190,23 @@ async function stageDocuments(vaultRoot) {
149
190
  }
150
191
  return ok({ staged, skipped });
151
192
  }
152
- function writeIndex(db, staged, embeddings) {
193
+ // Inserts the chunk rows in a single transaction. Embeddings are persisted by
194
+ // the caller (with a model identifier) so the chunk write stays oblivious to
195
+ // which model produced the vectors.
196
+ function writeChunkRows(db, staged) {
153
197
  let chunkCount = 0;
154
- let cursor = 0;
155
198
  const write = db.transaction(() => {
156
199
  clearIndex(db);
157
- for (const { doc, chunks } of staged) {
200
+ for (const { doc, chunks, hashes } of staged) {
158
201
  insertDocument(db, doc);
159
202
  chunks.forEach((text, chunkIndex) => {
160
- insertChunk(db, {
203
+ const row = {
161
204
  path: doc.path,
162
205
  chunkIndex,
163
206
  text,
164
- embedding: embeddings[cursor] ?? null,
165
- });
166
- cursor += 1;
207
+ contentHash: hashes[chunkIndex] ?? "",
208
+ };
209
+ insertChunkRow(db, row);
167
210
  chunkCount += 1;
168
211
  });
169
212
  }
@@ -176,25 +219,90 @@ export async function reindexVault(vaultRoot, opts = {}) {
176
219
  if (!staging.ok)
177
220
  return staging;
178
221
  const { staged, skipped } = staging.value;
179
- // One flat list of every chunk's text; embed() processes it in sub-batches.
180
- const allChunkTexts = [];
181
- for (const s of staged)
182
- allChunkTexts.push(...s.chunks);
183
- const embedResult = await embed(allChunkTexts, opts.onProgress);
184
- const vectorEnabled = embedResult.ok;
185
- const embeddings = embedResult.ok
186
- ? embedResult.value
187
- : allChunkTexts.map(() => null);
188
- const dbResult = openIndexDb(vaultRoot);
222
+ // Open the index first so we can ask the embeddings cache which (hash,
223
+ // model) pairs already exist before deciding what to embed. Pass the
224
+ // active provider's dim so the sqlite-vec mirror is sized correctly
225
+ // (rebuilt if a previous reindex used a different provider).
226
+ const dbResult = openIndexForActiveProvider(vaultRoot);
189
227
  if (!dbResult.ok)
190
228
  return dbResult;
191
229
  const db = dbResult.value;
192
230
  const indexedAt = new Date().toISOString();
193
231
  try {
194
- const chunkCount = writeIndex(db, staged, embeddings);
232
+ // Flatten every chunk's text + hash so we can dedupe and query the cache
233
+ // in one shot. A single hash may appear in multiple files (or repeatedly
234
+ // in one file) — embed it once.
235
+ const allHashes = [];
236
+ const allTexts = [];
237
+ for (const s of staged) {
238
+ for (let i = 0; i < s.chunks.length; i++) {
239
+ const h = s.hashes[i] ?? "";
240
+ const t = s.chunks[i] ?? "";
241
+ allHashes.push(h);
242
+ allTexts.push(t);
243
+ }
244
+ }
245
+ const provider = getProvider();
246
+ const cached = existingEmbeddingHashes(db, provider.id, allHashes);
247
+ // Build the deduped miss list. Each unique missing hash gets embedded
248
+ // exactly once; identical chunk text in multiple places shares the row.
249
+ const missTextByHash = new Map();
250
+ for (let i = 0; i < allHashes.length; i++) {
251
+ const h = allHashes[i] ?? "";
252
+ if (cached.has(h))
253
+ continue;
254
+ if (missTextByHash.has(h))
255
+ continue;
256
+ missTextByHash.set(h, allTexts[i] ?? "");
257
+ }
258
+ const missHashes = [...missTextByHash.keys()];
259
+ const missTexts = missHashes.map((h) => missTextByHash.get(h) ?? "");
260
+ const totalChunks = allHashes.length;
261
+ const cacheHits = totalChunks - allHashes.filter((h) => !cached.has(h)).length;
262
+ let vectorEnabled = true;
263
+ if (missTexts.length > 0) {
264
+ const embedResult = await embed(missTexts, opts.onProgress);
265
+ if (embedResult.ok) {
266
+ const writeEmbeds = db.transaction(() => {
267
+ for (let i = 0; i < missHashes.length; i++) {
268
+ const h = missHashes[i] ?? "";
269
+ const vec = embedResult.value[i];
270
+ if (!vec)
271
+ continue;
272
+ insertEmbedding(db, h, provider.id, vec, indexedAt, provider.dim);
273
+ }
274
+ });
275
+ writeEmbeds();
276
+ }
277
+ else {
278
+ // Model unavailable. We still want documents + chunk rows so BM25
279
+ // works; vector ranking simply degrades to nothing for this reindex.
280
+ vectorEnabled = false;
281
+ }
282
+ }
283
+ else if (totalChunks === 0) {
284
+ // No chunks at all (empty vault). Treat as vectorEnabled=true by
285
+ // convention — there is nothing to embed but also nothing failed.
286
+ vectorEnabled = true;
287
+ }
288
+ else {
289
+ // Everything was cached. Vector ranking has data already, so the
290
+ // reindex did not need to load the model — still vector-enabled.
291
+ vectorEnabled = true;
292
+ }
293
+ const chunkCount = writeChunkRows(db, staged);
294
+ const orphansRemoved = gcOrphanedEmbeddings(db);
295
+ // Rebuild the sqlite-vec mirror from the durable `embeddings` cache.
296
+ // The cache is per-(model, content_hash) and is the source of truth;
297
+ // the mirror is a SQL-queryable index of it. We rebuild rather than
298
+ // diff because (a) it's small (one row per active-model chunk) and
299
+ // (b) a vec-table rebuild on provider switch lands here with an empty
300
+ // table, so we need a full repopulation anyway.
301
+ rebuildEmbeddingsVec(db, provider.id);
195
302
  setMeta(db, "indexed_at", indexedAt);
196
303
  setMeta(db, "vector_enabled", String(vectorEnabled));
197
- setMeta(db, "embedding_dim", String(EMBEDDING_DIM));
304
+ setMeta(db, "embedding_dim", String(provider.dim));
305
+ setMeta(db, "embedding_model", provider.id);
198
306
  // Persist a freshness manifest so the next startup can skip this whole
199
307
  // pass when nothing on disk has changed.
200
308
  const manifest = await buildManifest(vaultRoot);
@@ -206,6 +314,9 @@ export async function reindexVault(vaultRoot, opts = {}) {
206
314
  vectorEnabled,
207
315
  skipped,
208
316
  indexedAt,
317
+ embeddedCount: missHashes.length,
318
+ cacheHits,
319
+ orphansRemoved,
209
320
  });
210
321
  }
211
322
  catch (e) {
@@ -220,10 +331,11 @@ export async function reindexVault(vaultRoot, opts = {}) {
220
331
  //
221
332
  // If the index has never been built it falls back to a full reindex, so the
222
333
  // first write to a fresh vault still produces a complete index rather than a
223
- // one-document one. Otherwise it re-stages just `relPath`, evicts its stale
224
- // rows, and re-inserts embedding only that document's chunks.
334
+ // one-document one. Otherwise it re-stages just `relPath`, hashes its chunks,
335
+ // embeds only those whose (hash, model) pair is not already in the embeddings
336
+ // cache, evicts the document's stale chunk rows, and re-inserts.
225
337
  export async function indexDocument(vaultRoot, relPath) {
226
- const dbCheck = openIndexDb(vaultRoot);
338
+ const dbCheck = openIndexForActiveProvider(vaultRoot);
227
339
  if (!dbCheck.ok)
228
340
  return dbCheck;
229
341
  const indexEmpty = documentCount(dbCheck.value) === 0;
@@ -241,28 +353,66 @@ export async function indexDocument(vaultRoot, relPath) {
241
353
  if (!staged) {
242
354
  return err(new Error(`cannot index document: ${relPath}`));
243
355
  }
244
- const { doc, chunks } = staged;
245
- const embedResult = await embed(chunks);
246
- const vectorEnabled = embedResult.ok;
247
- const embeddings = embedResult.ok
248
- ? embedResult.value
249
- : chunks.map(() => null);
250
- const dbResult = openIndexDb(vaultRoot);
356
+ const { doc, chunks, hashes } = staged;
357
+ const dbResult = openIndexForActiveProvider(vaultRoot);
251
358
  if (!dbResult.ok)
252
359
  return dbResult;
253
360
  const db = dbResult.value;
361
+ const createdAt = new Date().toISOString();
254
362
  try {
363
+ const provider = getProvider();
364
+ const cached = existingEmbeddingHashes(db, provider.id, hashes);
365
+ const missTextByHash = new Map();
366
+ for (let i = 0; i < hashes.length; i++) {
367
+ const h = hashes[i] ?? "";
368
+ if (cached.has(h))
369
+ continue;
370
+ if (missTextByHash.has(h))
371
+ continue;
372
+ missTextByHash.set(h, chunks[i] ?? "");
373
+ }
374
+ const missHashes = [...missTextByHash.keys()];
375
+ const missTexts = missHashes.map((h) => missTextByHash.get(h) ?? "");
376
+ let vectorEnabled = true;
377
+ const newlyEmbedded = [];
378
+ if (missTexts.length > 0) {
379
+ const embedResult = await embed(missTexts);
380
+ if (embedResult.ok) {
381
+ const writeEmbeds = db.transaction(() => {
382
+ for (let i = 0; i < missHashes.length; i++) {
383
+ const h = missHashes[i] ?? "";
384
+ const vec = embedResult.value[i];
385
+ if (!vec)
386
+ continue;
387
+ insertEmbedding(db, h, provider.id, vec, createdAt, provider.dim);
388
+ newlyEmbedded.push({ hash: h, vec });
389
+ }
390
+ });
391
+ writeEmbeds();
392
+ }
393
+ else {
394
+ vectorEnabled = false;
395
+ }
396
+ }
255
397
  const write = db.transaction(() => {
256
398
  deleteDocument(db, doc.path);
257
399
  insertDocument(db, doc);
258
400
  chunks.forEach((text, chunkIndex) => {
259
- insertChunk(db, {
401
+ insertChunkRow(db, {
260
402
  path: doc.path,
261
403
  chunkIndex,
262
404
  text,
263
- embedding: embeddings[chunkIndex] ?? null,
405
+ contentHash: hashes[chunkIndex] ?? "",
264
406
  });
265
407
  });
408
+ // Mirror only the newly-embedded vectors into `embeddings_vec`.
409
+ // Hashes that were already cached are already in the vec table from
410
+ // a prior reindex / indexDocument call — re-inserting them would be
411
+ // duplicates. INSERT OR IGNORE isn't supported on vec0 virtual
412
+ // tables, so we keep this list to just the new vectors.
413
+ for (const { hash, vec } of newlyEmbedded) {
414
+ insertEmbeddingVec(db, hash, provider.id, vec);
415
+ }
266
416
  });
267
417
  write();
268
418
  // Keep the freshness manifest in sync with this single write so the next
@@ -1 +1 @@
1
- {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../src/search/reindex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function noteSelfWrite(absPath: string, now?: number): void;
2
+ export declare function consumeSelfWrite(absPath: string, now?: number): boolean;
3
+ export declare function resetSelfWriteState(): void;
4
+ //# sourceMappingURL=self-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-write.d.ts","sourceRoot":"","sources":["../../src/search/self-write.ts"],"names":[],"mappings":"AAwCA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAG7E;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAWnF;AAID,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}