@mmnto/totem 1.108.0 → 1.110.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.
- package/dist/config-schema.d.ts +22 -0
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +6 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/config-schema.test.js +21 -0
- package/dist/config-schema.test.js.map +1 -1
- package/dist/embedders/embedder.d.ts +29 -0
- package/dist/embedders/embedder.d.ts.map +1 -1
- package/dist/embedders/embedder.js +26 -3
- package/dist/embedders/embedder.js.map +1 -1
- package/dist/embedders/embedder.test.js +51 -0
- package/dist/embedders/embedder.test.js.map +1 -1
- package/dist/embedders/gemini-embedder.d.ts +18 -1
- package/dist/embedders/gemini-embedder.d.ts.map +1 -1
- package/dist/embedders/gemini-embedder.js +98 -5
- package/dist/embedders/gemini-embedder.js.map +1 -1
- package/dist/embedders/gemini-embedder.test.js +153 -1
- package/dist/embedders/gemini-embedder.test.js.map +1 -1
- package/dist/embedders/openai-embedder.d.ts +2 -1
- package/dist/embedders/openai-embedder.d.ts.map +1 -1
- package/dist/embedders/openai-embedder.js +21 -4
- package/dist/embedders/openai-embedder.js.map +1 -1
- package/dist/embedders/openai-embedder.test.d.ts +2 -0
- package/dist/embedders/openai-embedder.test.d.ts.map +1 -0
- package/dist/embedders/openai-embedder.test.js +102 -0
- package/dist/embedders/openai-embedder.test.js.map +1 -0
- package/dist/embedders/pacing.d.ts +11 -0
- package/dist/embedders/pacing.d.ts.map +1 -0
- package/dist/embedders/pacing.js +23 -0
- package/dist/embedders/pacing.js.map +1 -0
- package/dist/embedders/pacing.test.d.ts +2 -0
- package/dist/embedders/pacing.test.d.ts.map +1 -0
- package/dist/embedders/pacing.test.js +50 -0
- package/dist/embedders/pacing.test.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ingest/file-resolver.d.ts +14 -0
- package/dist/ingest/file-resolver.d.ts.map +1 -1
- package/dist/ingest/file-resolver.js +27 -9
- package/dist/ingest/file-resolver.js.map +1 -1
- package/dist/ingest/pipeline.d.ts +9 -0
- package/dist/ingest/pipeline.d.ts.map +1 -1
- package/dist/ingest/pipeline.js +315 -29
- package/dist/ingest/pipeline.js.map +1 -1
- package/dist/ingest/pipeline.test.js +397 -0
- package/dist/ingest/pipeline.test.js.map +1 -1
- package/dist/ingest/sync.d.ts +2 -2
- package/dist/ingest/sync.d.ts.map +1 -1
- package/dist/ingest/sync.js +2 -2
- package/dist/ingest/sync.js.map +1 -1
- package/dist/parity-detect.d.ts +12 -0
- package/dist/parity-detect.d.ts.map +1 -1
- package/dist/parity-detect.js +4 -3
- package/dist/parity-detect.js.map +1 -1
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,15 @@ import type { SyncOptions } from '../types.js';
|
|
|
11
11
|
* Throws TotemDatabaseError if the provider has changed.
|
|
12
12
|
*/
|
|
13
13
|
export declare function verifyIndexMeta(totemDir: string, config: TotemConfig): void;
|
|
14
|
+
/**
|
|
15
|
+
* Whether a full re-index epoch is in progress (its dirty marker exists) for
|
|
16
|
+
* the given totem dir (#2562). Exposed for callers that spawn or gate syncs
|
|
17
|
+
* under bounded budgets — e.g. the MCP add-lesson tool's 60s-killed
|
|
18
|
+
* convenience sync, which a promoted paced resume can never finish
|
|
19
|
+
* (falsification round 3, MAJOR 1): such callers should skip and defer to the
|
|
20
|
+
* running epoch instead of timing out against it.
|
|
21
|
+
*/
|
|
22
|
+
export declare function hasFullSyncCheckpoint(totemDir: string): boolean;
|
|
14
23
|
/**
|
|
15
24
|
* One entry in the index-manifest `documents[]` array.
|
|
16
25
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQvD,OAAO,KAAK,EAA6B,WAAW,EAAa,MAAM,aAAa,CAAC;AA+CrF;;;GAGG;AACH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAuB3E;AAuFD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D;AAkBD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AAEjE;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,aAAa,CAUhB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAUD;AAYD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,EAAE,CAGV;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAIhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,EAAE,CAGV"}
|
package/dist/ingest/pipeline.js
CHANGED
|
@@ -9,10 +9,11 @@ import { withLock } from '../lock.js';
|
|
|
9
9
|
import { sanitizeForIngestion } from '../sanitize.js';
|
|
10
10
|
import { LanceStore } from '../store/lance-store.js';
|
|
11
11
|
import { sanitizeForTerminal } from '../terminal-sanitize.js';
|
|
12
|
-
import { getChangedFiles, getHeadSha, resolveFiles } from './file-resolver.js';
|
|
12
|
+
import { getChangedFiles, getChangedFilesDetailed, getHeadSha, resolveFiles, } from './file-resolver.js';
|
|
13
13
|
const EMBED_BATCH_SIZE = 100;
|
|
14
14
|
const SYNC_STATE_FILE = 'cache/sync-state.json';
|
|
15
15
|
const INDEX_META_FILE = 'cache/index-meta.json';
|
|
16
|
+
const FULL_SYNC_CHECKPOINT_FILE = 'cache/full-sync-checkpoint.json';
|
|
16
17
|
function readIndexMeta(totemDir) {
|
|
17
18
|
const metaPath = path.join(totemDir, INDEX_META_FILE);
|
|
18
19
|
try {
|
|
@@ -83,11 +84,79 @@ function readSyncState(totemDir, onProgress) {
|
|
|
83
84
|
return null;
|
|
84
85
|
}
|
|
85
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Atomic JSON write (tmp + rename): a crash mid-write must never leave a torn
|
|
89
|
+
* state file — sync state and the full-sync checkpoint are both trusted by the
|
|
90
|
+
* NEXT run's control flow (#2562), matching the index-manifest write pattern.
|
|
91
|
+
*/
|
|
92
|
+
function writeJsonAtomic(filePath, value) {
|
|
93
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
94
|
+
// PID-unique tmp name: two writers racing under a stolen stale lock must
|
|
95
|
+
// not interleave through one tmp path (falsification round 1, MINOR 6).
|
|
96
|
+
const tmpPath = `${filePath}.${process.pid}.tmp`;
|
|
97
|
+
fs.writeFileSync(tmpPath, JSON.stringify(value, null, 2) + '\n', 'utf-8');
|
|
98
|
+
fs.renameSync(tmpPath, filePath);
|
|
99
|
+
}
|
|
86
100
|
function writeSyncState(totemDir, state) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
101
|
+
writeJsonAtomic(path.join(totemDir, SYNC_STATE_FILE), state);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Read the full-sync checkpoint (#2562). The caller has already established
|
|
105
|
+
* the file EXISTS (existence = the dirty marker); a parse/shape failure here
|
|
106
|
+
* means "dirty but unusable" — the caller restarts the full re-index from
|
|
107
|
+
* zero. A present-but-corrupt checkpoint is never treated as a clean state.
|
|
108
|
+
*/
|
|
109
|
+
function readFullSyncCheckpoint(totemDir, onProgress) {
|
|
110
|
+
const cpPath = path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE);
|
|
111
|
+
try {
|
|
112
|
+
const parsed = JSON.parse(fs.readFileSync(cpPath, 'utf-8'));
|
|
113
|
+
if (parsed &&
|
|
114
|
+
(parsed.startedHeadSha === null || typeof parsed.startedHeadSha === 'string') &&
|
|
115
|
+
typeof parsed.startedAt === 'number' &&
|
|
116
|
+
typeof parsed.indexExclusionHash === 'string' &&
|
|
117
|
+
typeof parsed.embedder?.provider === 'string' &&
|
|
118
|
+
typeof parsed.embedder?.model === 'string' &&
|
|
119
|
+
typeof parsed.embedder?.dimensions === 'number' &&
|
|
120
|
+
Array.isArray(parsed.completedFiles) &&
|
|
121
|
+
parsed.completedFiles.every((f) => typeof f === 'string')) {
|
|
122
|
+
return parsed;
|
|
123
|
+
}
|
|
124
|
+
onProgress?.(`Warning: malformed full-sync checkpoint at ${cpPath} — ignoring its progress.`);
|
|
125
|
+
return null;
|
|
126
|
+
// totem-context: intentional warn+null on an unreadable checkpoint (mmnto-ai/totem#2562) — dirty-but-unusable restarts the full re-index from zero; failing the sync over a torn checkpoint would wedge every subsequent run.
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
onProgress?.(`Warning: failed to read full-sync checkpoint: ${err instanceof Error ? err.message : String(err)}`);
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function writeFullSyncCheckpoint(totemDir, checkpoint) {
|
|
134
|
+
writeJsonAtomic(path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE), checkpoint);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Whether a full re-index epoch is in progress (its dirty marker exists) for
|
|
138
|
+
* the given totem dir (#2562). Exposed for callers that spawn or gate syncs
|
|
139
|
+
* under bounded budgets — e.g. the MCP add-lesson tool's 60s-killed
|
|
140
|
+
* convenience sync, which a promoted paced resume can never finish
|
|
141
|
+
* (falsification round 3, MAJOR 1): such callers should skip and defer to the
|
|
142
|
+
* running epoch instead of timing out against it.
|
|
143
|
+
*/
|
|
144
|
+
export function hasFullSyncCheckpoint(totemDir) {
|
|
145
|
+
return fs.existsSync(path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Best-effort marker delete at successful completion. A failed delete is loud
|
|
149
|
+
* but non-fatal: the next run resumes-full as a near-noop and retries the
|
|
150
|
+
* delete, so correctness converges (#2562).
|
|
151
|
+
*/
|
|
152
|
+
function deleteFullSyncCheckpoint(totemDir, onProgress) {
|
|
153
|
+
try {
|
|
154
|
+
fs.rmSync(path.join(totemDir, FULL_SYNC_CHECKPOINT_FILE), { force: true });
|
|
155
|
+
// totem-context: intentional best-effort delete (mmnto-ai/totem#2562) — a failed marker delete only makes the next run resume-full as a near-noop and retry it; aborting a fully-successful sync over it would be the drift.
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
onProgress?.(`Warning: failed to delete full-sync checkpoint: ${err instanceof Error ? err.message : String(err)}`);
|
|
159
|
+
}
|
|
91
160
|
}
|
|
92
161
|
/** Current schema identifier persisted to `.totem/index-manifest.json`. */
|
|
93
162
|
export const INDEX_MANIFEST_SCHEMA = 'totem-index-manifest-v0.2';
|
|
@@ -175,15 +244,38 @@ async function runSyncInner(config, options) {
|
|
|
175
244
|
const log = onProgress ?? (() => { });
|
|
176
245
|
// 0. Capture HEAD SHA early — before any async work that might race with new commits
|
|
177
246
|
const headSha = getHeadSha(projectRoot, log);
|
|
178
|
-
// 1. Create embedder
|
|
247
|
+
// 1. Create embedder (or take the injected one — tests / embedding hosts).
|
|
248
|
+
// `log` is threaded through so a LazyEmbedder Ollama fallback is AUDIBLE —
|
|
249
|
+
// a silent vector-space switch mid-sync is sensor degradation (#2562).
|
|
179
250
|
const embedding = requireEmbedding(config);
|
|
180
251
|
log('Initializing embedding provider...');
|
|
181
|
-
const embedder = createEmbedder(embedding);
|
|
252
|
+
const embedder = options.embedder ?? createEmbedder(embedding, log);
|
|
253
|
+
// Resume-compatibility fingerprint (#2562): a checkpointed epoch may only
|
|
254
|
+
// continue under the embedder configuration that started it — vectors from
|
|
255
|
+
// two configurations must never mix in one store. Mirrors writeIndexMeta.
|
|
256
|
+
const embedderFingerprint = {
|
|
257
|
+
provider: embedding.provider,
|
|
258
|
+
model: embedding.model ?? 'default',
|
|
259
|
+
dimensions: embedder.dimensions,
|
|
260
|
+
};
|
|
182
261
|
// 2. Connect to store
|
|
183
262
|
const storePath = path.join(projectRoot, config.lanceDir);
|
|
184
263
|
const store = new LanceStore(storePath, embedder, { absolutePathRoot: projectRoot });
|
|
185
264
|
await store.connect();
|
|
186
|
-
|
|
265
|
+
const totemDir = path.join(projectRoot, config.totemDir);
|
|
266
|
+
// 2b (#2562). A live checkpoint marks an unfinished full re-index. It takes
|
|
267
|
+
// precedence over the requested mode — the partial store must complete
|
|
268
|
+
// before any incremental diff can be trusted again — and it subsumes the
|
|
269
|
+
// empty-store heal below (an interrupted full that never flushed).
|
|
270
|
+
let resumeFrom = null;
|
|
271
|
+
if (hasFullSyncCheckpoint(totemDir)) {
|
|
272
|
+
incremental = false;
|
|
273
|
+
resumeFrom = readFullSyncCheckpoint(totemDir, log);
|
|
274
|
+
log(resumeFrom
|
|
275
|
+
? `Previous full re-index did not complete — resuming it (${resumeFrom.completedFiles.length} file(s) checkpointed).`
|
|
276
|
+
: 'Previous full re-index did not complete — restarting it from zero.');
|
|
277
|
+
}
|
|
278
|
+
// 2c. Auto-heal: force full sync when incremental is requested but DB is empty
|
|
187
279
|
if (incremental && (await store.isEmpty())) {
|
|
188
280
|
log('Empty database detected. Forcing full sync...');
|
|
189
281
|
incremental = false;
|
|
@@ -191,7 +283,6 @@ async function runSyncInner(config, options) {
|
|
|
191
283
|
// 3. Resolve files to process. Index exclusion unions both keys:
|
|
192
284
|
// `ignorePatterns` (legacy dual-scope) + `indexIgnorePatterns` (index-only,
|
|
193
285
|
// mmnto-ai/totem#1748) — only the former also gates lint/shield scope.
|
|
194
|
-
const totemDir = path.join(projectRoot, config.totemDir);
|
|
195
286
|
const exclusionPatterns = [...config.ignorePatterns, ...config.indexIgnorePatterns];
|
|
196
287
|
const allFiles = resolveFiles(config.targets, projectRoot, exclusionPatterns, log);
|
|
197
288
|
// Order-normalized hash of the effective exclusion set — persisted below and
|
|
@@ -199,6 +290,26 @@ async function runSyncInner(config, options) {
|
|
|
199
290
|
const indexExclusionHash = hashIndexExclusionSet(exclusionPatterns);
|
|
200
291
|
let filesToProcess;
|
|
201
292
|
let deletedPaths = [];
|
|
293
|
+
// #2562: active-epoch checkpoint (full mode only) — written before the store
|
|
294
|
+
// is destroyed, appended after each successful flush, deleted on success.
|
|
295
|
+
let checkpoint = null;
|
|
296
|
+
let resumedWithoutReset = false;
|
|
297
|
+
const freshCheckpoint = () => ({
|
|
298
|
+
startedHeadSha: headSha,
|
|
299
|
+
startedAt: Date.now(),
|
|
300
|
+
indexExclusionHash,
|
|
301
|
+
embedder: embedderFingerprint,
|
|
302
|
+
completedFiles: [],
|
|
303
|
+
});
|
|
304
|
+
// The dirty marker MUST hit disk before the store is destroyed: a marker
|
|
305
|
+
// write failure aborts loudly with the store intact, so no window exists in
|
|
306
|
+
// which a reset store is unmarked (#2562).
|
|
307
|
+
async function beginFullSync(cp) {
|
|
308
|
+
writeFullSyncCheckpoint(totemDir, cp);
|
|
309
|
+
checkpoint = cp;
|
|
310
|
+
log('Full sync: resetting index...');
|
|
311
|
+
await store.reset();
|
|
312
|
+
}
|
|
202
313
|
if (incremental) {
|
|
203
314
|
// Persisted sync state carries both the diff baseline (lastSyncSha) and the
|
|
204
315
|
// exclusion-set hash used for removal reconciliation (mmnto-ai/totem#2366).
|
|
@@ -212,7 +323,7 @@ async function runSyncInner(config, options) {
|
|
|
212
323
|
const changedPaths = options.changedFiles ?? getChangedFiles(projectRoot, sinceRef, log);
|
|
213
324
|
if (changedPaths === null) {
|
|
214
325
|
log('Git diff failed, falling back to full sync...');
|
|
215
|
-
await
|
|
326
|
+
await beginFullSync(freshCheckpoint());
|
|
216
327
|
filesToProcess = allFiles;
|
|
217
328
|
log(`Full sync (fallback): ${filesToProcess.length} files to process`);
|
|
218
329
|
}
|
|
@@ -261,9 +372,126 @@ async function runSyncInner(config, options) {
|
|
|
261
372
|
` (of ${allFiles.length} total)`);
|
|
262
373
|
}
|
|
263
374
|
}
|
|
375
|
+
else if (resumeFrom) {
|
|
376
|
+
// #2562 resume: NO reset — the interrupted epoch continues. Already-done
|
|
377
|
+
// derives from FOUR signals, not the checkpoint alone:
|
|
378
|
+
// 1. checkpointed (the epoch flushed it);
|
|
379
|
+
// 2. ∩ live (still resolved by the current target set);
|
|
380
|
+
// 3. ∩ actually-in-the-store — the store is ground truth: a store
|
|
381
|
+
// healed/nuked under a live checkpoint must not be trusted from
|
|
382
|
+
// paper (falsification round 1, MAJOR 1);
|
|
383
|
+
// 4. − moved-since-epoch: anything in git's tracked diff against
|
|
384
|
+
// startedHeadSha, PLUS anything whose mtime postdates the epoch
|
|
385
|
+
// start. The mtime arm applies to EVERY file, not only untracked
|
|
386
|
+
// ones (falsification round 2, F3: submodule and assume-unchanged
|
|
387
|
+
// files appear in neither git list, so an untracked-only mtime arm
|
|
388
|
+
// silently kept them stale) — a false-positive eviction is just a
|
|
389
|
+
// harmless re-embed. Untracked files are deliberately NOT evicted by
|
|
390
|
+
// git-list membership (it is permanent — round 1, MAJOR 2), and a
|
|
391
|
+
// non-git epoch (null startedHeadSha) has an empty tracked set, so
|
|
392
|
+
// the mtime arm carries it alone (MAJOR 4).
|
|
393
|
+
// The epoch diff never derives from options.changedFiles — a caller's
|
|
394
|
+
// diff window says nothing about what the crashed epoch covered.
|
|
395
|
+
const detailed = resumeFrom.startedHeadSha
|
|
396
|
+
? getChangedFilesDetailed(projectRoot, resumeFrom.startedHeadSha, log)
|
|
397
|
+
: { tracked: [], untracked: [] };
|
|
398
|
+
if (detailed === null) {
|
|
399
|
+
log('Cannot diff against the interrupted epoch — restarting the full re-index from zero.');
|
|
400
|
+
await beginFullSync(freshCheckpoint());
|
|
401
|
+
filesToProcess = allFiles;
|
|
402
|
+
log(`Full sync: ${filesToProcess.length} files to process`);
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
let indexedRaw = null;
|
|
406
|
+
try {
|
|
407
|
+
indexedRaw = await store.getDistinctPaths();
|
|
408
|
+
// totem-context: intentional warn+degrade on a getDistinctPaths failure (mmnto-ai/totem#2562, falsification round 2 F7 + round 3 MINOR 9a) — the completed set collapses to EMPTY below (every file re-embeds via delete-first, same cost as a reset-restart) but the table is NOT destroyed over a possibly-transient read failure, and the checkpoint's paper progress is RETAINED untrusted so a second crash does not erase a prior epoch's flushed work.
|
|
409
|
+
}
|
|
410
|
+
catch (err) {
|
|
411
|
+
log(`Warning: cannot verify the checkpoint against the store (getDistinctPaths failed: ${err instanceof Error ? err.message : String(err)}) — re-embedding everything without trusting the checkpoint.`);
|
|
412
|
+
}
|
|
413
|
+
const epochStart = resumeFrom.startedAt;
|
|
414
|
+
const byRel = new Map(allFiles.map((f) => [normalizeRel(f.relativePath), f]));
|
|
415
|
+
const tracked = new Set(detailed.tracked.map(normalizeRel));
|
|
416
|
+
const movedSinceEpoch = (rel) => {
|
|
417
|
+
if (tracked.has(rel))
|
|
418
|
+
return true;
|
|
419
|
+
const file = byRel.get(rel);
|
|
420
|
+
if (!file)
|
|
421
|
+
return true;
|
|
422
|
+
try {
|
|
423
|
+
return fs.statSync(file.absolutePath).mtimeMs > epochStart;
|
|
424
|
+
// totem-context: intentional treat-as-moved on a stat failure (mmnto-ai/totem#2562) — the file re-embeds (idempotent via delete-first) or the read site skips a vanished file loudly.
|
|
425
|
+
}
|
|
426
|
+
catch {
|
|
427
|
+
return true;
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
const indexed = indexedRaw === null ? null : new Set(indexedRaw.map(normalizeRel));
|
|
431
|
+
const completed = new Set(indexed === null
|
|
432
|
+
? []
|
|
433
|
+
: resumeFrom.completedFiles
|
|
434
|
+
.map(normalizeRel)
|
|
435
|
+
.filter((rel) => byRel.has(rel) && indexed.has(rel) && !movedSinceEpoch(rel)));
|
|
436
|
+
filesToProcess = allFiles.filter((f) => !completed.has(normalizeRel(f.relativePath)));
|
|
437
|
+
// EFFECTIVE-vs-effective identity gate (falsification rounds 2–4). The
|
|
438
|
+
// epoch may only continue under the embedder identity that will
|
|
439
|
+
// ACTUALLY serve this run's embeds — config-vs-stamped is wrong in both
|
|
440
|
+
// directions (a silent fallback would mix vector spaces at the first
|
|
441
|
+
// insert; a persistent fallback would restart-loop forever). The
|
|
442
|
+
// exemption is RESOLUTION FAILURE with zero work remaining (round 3
|
|
443
|
+
// MINOR 10: an epoch that merely needs its marker cleared must not
|
|
444
|
+
// wedge behind a missing embedder) — NOT zero work itself: a resolvable
|
|
445
|
+
// mismatch must restart even with nothing left, or clearing the marker
|
|
446
|
+
// would rewrite index-meta to the new identity and launder the
|
|
447
|
+
// DATABASE_MISMATCH evidence the next incremental needs (round 4,
|
|
448
|
+
// MAJOR 1 — probed: dimension change + zero-work resume ⇒ silent mixed
|
|
449
|
+
// store).
|
|
450
|
+
let identityOk = true;
|
|
451
|
+
let effectiveNow = null;
|
|
452
|
+
try {
|
|
453
|
+
effectiveNow = (await embedder.resolveEffective?.()) ?? embedderFingerprint;
|
|
454
|
+
}
|
|
455
|
+
catch (err) {
|
|
456
|
+
if (filesToProcess.length > 0)
|
|
457
|
+
throw err; // work remains ⇒ fail loud, state intact
|
|
458
|
+
log(`Nothing left to embed and no embedder resolved (${err instanceof Error ? err.message : String(err)}) — clearing the marker unverified.`);
|
|
459
|
+
}
|
|
460
|
+
if (effectiveNow !== null) {
|
|
461
|
+
const fp = resumeFrom.embedder;
|
|
462
|
+
if (fp.provider !== effectiveNow.provider ||
|
|
463
|
+
fp.model !== effectiveNow.model ||
|
|
464
|
+
fp.dimensions !== effectiveNow.dimensions) {
|
|
465
|
+
log(`The embedder serving this run (${effectiveNow.provider}/${effectiveNow.model}) differs from the interrupted epoch's (${fp.provider}/${fp.model}) — its progress is unusable; restarting from zero.`);
|
|
466
|
+
identityOk = false;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
if (!identityOk) {
|
|
470
|
+
await beginFullSync(freshCheckpoint());
|
|
471
|
+
filesToProcess = allFiles;
|
|
472
|
+
log(`Full sync: ${filesToProcess.length} files to process`);
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
// Carry forward the verified entries, re-keyed to the current run's
|
|
476
|
+
// resolved paths — EXCEPT when the store was unreadable: then the
|
|
477
|
+
// paper progress is retained untrusted (round 3, MINOR 9a) so a
|
|
478
|
+
// second crash does not erase a prior epoch's flushed work; the next
|
|
479
|
+
// resume re-verifies it against a hopefully-readable store.
|
|
480
|
+
// startedHeadSha stays the ORIGINAL epoch SHA so every later resume
|
|
481
|
+
// re-diffs the full window (superset-safe).
|
|
482
|
+
const carried = indexed === null
|
|
483
|
+
? [...resumeFrom.completedFiles]
|
|
484
|
+
: allFiles.map((f) => f.relativePath).filter((rel) => completed.has(normalizeRel(rel)));
|
|
485
|
+
checkpoint = { ...resumeFrom, indexExclusionHash, completedFiles: carried };
|
|
486
|
+
writeFullSyncCheckpoint(totemDir, checkpoint);
|
|
487
|
+
resumedWithoutReset = true;
|
|
488
|
+
log(`Resuming full re-index: ${filesToProcess.length} file(s) remaining of ${allFiles.length} ` +
|
|
489
|
+
`(${completed.size} verified already embedded). Delete ${config.totemDir}/${FULL_SYNC_CHECKPOINT_FILE} to restart from scratch.`);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}
|
|
264
493
|
else {
|
|
265
|
-
|
|
266
|
-
await store.reset();
|
|
494
|
+
await beginFullSync(freshCheckpoint());
|
|
267
495
|
filesToProcess = allFiles;
|
|
268
496
|
log(`Full sync: ${filesToProcess.length} files to process`);
|
|
269
497
|
}
|
|
@@ -288,6 +516,7 @@ async function runSyncInner(config, options) {
|
|
|
288
516
|
// 4. Chunk files and stream to LanceDB in batches (bounded memory)
|
|
289
517
|
let totalChunks = 0;
|
|
290
518
|
let buffer = [];
|
|
519
|
+
let pendingFiles = [];
|
|
291
520
|
async function flushBuffer() {
|
|
292
521
|
if (buffer.length === 0)
|
|
293
522
|
return;
|
|
@@ -295,21 +524,71 @@ async function runSyncInner(config, options) {
|
|
|
295
524
|
totalChunks += buffer.length;
|
|
296
525
|
log(` Embedded ${totalChunks} chunks so far`);
|
|
297
526
|
buffer = [];
|
|
527
|
+
// #2562: chunks buffer at whole-file boundaries and store.insert embeds
|
|
528
|
+
// before any row lands, so a successful flush means every pending file is
|
|
529
|
+
// complete in the store — checkpoint them. An append failure is
|
|
530
|
+
// survivable: the file re-embeds on resume via the delete-first path.
|
|
531
|
+
const cp = checkpoint;
|
|
532
|
+
if (cp && pendingFiles.length > 0) {
|
|
533
|
+
cp.completedFiles.push(...pendingFiles);
|
|
534
|
+
// Persist the EFFECTIVE embedder identity once known (falsification
|
|
535
|
+
// round 1, MAJOR 3): a LazyEmbedder that silently fell back to Ollama
|
|
536
|
+
// must not leave a checkpoint fingerprinted as the configured provider,
|
|
537
|
+
// or the next resume would mix vector spaces across the epoch.
|
|
538
|
+
const effective = embedder.describeEffective?.();
|
|
539
|
+
if (effective)
|
|
540
|
+
cp.embedder = effective;
|
|
541
|
+
try {
|
|
542
|
+
writeFullSyncCheckpoint(totemDir, cp);
|
|
543
|
+
// totem-context: intentional warn+continue on a checkpoint-append failure (mmnto-ai/totem#2562) — the flushed chunks are safe in the store; worst case the file re-embeds on resume via the delete-first path.
|
|
544
|
+
}
|
|
545
|
+
catch (err) {
|
|
546
|
+
log(` Warning: failed to update full-sync checkpoint: ${err instanceof Error ? err.message : String(err)}`);
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
pendingFiles = [];
|
|
298
550
|
}
|
|
299
551
|
for (const file of filesToProcess) {
|
|
300
552
|
const safeRel = sanitizeForTerminal(file.relativePath);
|
|
301
553
|
log(`Chunking ${safeRel}...`);
|
|
554
|
+
// A file whose CURRENT state legitimately yields no rows (emptied of
|
|
555
|
+
// chunkable content, or swapped to a symlink the guard refuses) must
|
|
556
|
+
// still purge its OLD rows when re-processing in place — the baseline
|
|
557
|
+
// advances past the change at the end of this run, so no later
|
|
558
|
+
// incremental diff revisits it and the stale rows would be searchable
|
|
559
|
+
// forever (#2569 Greptile round: stale-rows-on-skip). The transient
|
|
560
|
+
// read-error skip below deliberately does NOT purge: deleting on a
|
|
561
|
+
// maybe-transient failure would LOSE good rows, worse than stale ones.
|
|
562
|
+
const purgeStaleRows = async () => {
|
|
563
|
+
if (incremental || resumedWithoutReset) {
|
|
564
|
+
await store.deleteByFile(file.relativePath);
|
|
565
|
+
}
|
|
566
|
+
};
|
|
567
|
+
// Symlink guard at the READ site (mmnto-ai/totem#2354, #2356 review):
|
|
568
|
+
// resolveFiles skips symlinks at discovery, but this read happens later,
|
|
569
|
+
// so a path swapped to a symlink after resolution would still be followed
|
|
570
|
+
// by readFileSync. Re-check here and skip — closes the discovery→read
|
|
571
|
+
// TOCTOU gap. The purge runs OUTSIDE the read-error catches (#2569 CR
|
|
572
|
+
// round 2): caught there, a purge failure would be mislabeled a read
|
|
573
|
+
// error and silently downgraded to a skip — permanent staleness. Outside
|
|
574
|
+
// them it fails loud and CONVERGES: the marker/stale baseline makes the
|
|
575
|
+
// next run re-evict the file and retry the delete.
|
|
576
|
+
let isSymlink;
|
|
577
|
+
try {
|
|
578
|
+
isSymlink = fs.lstatSync(file.absolutePath).isSymbolicLink();
|
|
579
|
+
// totem-context: intentional skip — a per-file stat failure (vanished/raced file, permission) logs and skips just that file so sync continues over the rest; aborting the whole sync over one unreadable file would be the drift, not the skip.
|
|
580
|
+
}
|
|
581
|
+
catch (err) {
|
|
582
|
+
log(` Skipping (read error: ${sanitizeForTerminal(err instanceof Error ? err.message : String(err))}): ${safeRel}`);
|
|
583
|
+
continue;
|
|
584
|
+
}
|
|
585
|
+
if (isSymlink) {
|
|
586
|
+
log(` Skipping symlink (not indexed): ${safeRel}`);
|
|
587
|
+
await purgeStaleRows();
|
|
588
|
+
continue;
|
|
589
|
+
}
|
|
302
590
|
let content;
|
|
303
591
|
try {
|
|
304
|
-
// Symlink guard at the READ site (mmnto-ai/totem#2354, #2356 review):
|
|
305
|
-
// resolveFiles skips symlinks at discovery, but this read happens later,
|
|
306
|
-
// so a path swapped to a symlink after resolution would still be followed
|
|
307
|
-
// by readFileSync. Re-check here and skip — closes the discovery→read
|
|
308
|
-
// TOCTOU gap.
|
|
309
|
-
if (fs.lstatSync(file.absolutePath).isSymbolicLink()) {
|
|
310
|
-
log(` Skipping symlink (not indexed): ${safeRel}`);
|
|
311
|
-
continue;
|
|
312
|
-
}
|
|
313
592
|
content = fs.readFileSync(file.absolutePath, 'utf-8');
|
|
314
593
|
// totem-context: intentional skip — a per-file read failure (vanished/raced file, permission, decode) logs and skips just that file so sync continues over the rest; aborting the whole sync over one unreadable file would be the drift, not the skip.
|
|
315
594
|
}
|
|
@@ -321,12 +600,14 @@ async function runSyncInner(config, options) {
|
|
|
321
600
|
const chunks = chunker.chunk(content, file.relativePath, file.target.type);
|
|
322
601
|
if (chunks.length === 0) {
|
|
323
602
|
log(` No chunks extracted from ${file.relativePath}`);
|
|
603
|
+
await purgeStaleRows();
|
|
324
604
|
continue;
|
|
325
605
|
}
|
|
326
|
-
//
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
606
|
+
// Delete old chunks for this file before inserting new ones — incremental
|
|
607
|
+
// re-embeds in place, and a #2562 resume (no reset) can hold this file's
|
|
608
|
+
// chunks already (changed-since-epoch, or a flush whose checkpoint append
|
|
609
|
+
// failed). Idempotent either way.
|
|
610
|
+
await purgeStaleRows();
|
|
330
611
|
// Sanitize chunk content before embedding (adversarial ingestion scrubbing)
|
|
331
612
|
// Deduplicate warnings per file to avoid log spam on files with widespread issues
|
|
332
613
|
const warnedMessages = new Set();
|
|
@@ -346,6 +627,7 @@ async function runSyncInner(config, options) {
|
|
|
346
627
|
chunk.contextPrefix = sanitizeForIngestion(chunk.contextPrefix, sanitizeOpts);
|
|
347
628
|
}
|
|
348
629
|
buffer.push(...chunks);
|
|
630
|
+
pendingFiles.push(file.relativePath);
|
|
349
631
|
log(` ${chunks.length} chunks from ${file.relativePath}`);
|
|
350
632
|
// Flush when buffer reaches batch size to keep memory bounded
|
|
351
633
|
if (buffer.length >= EMBED_BATCH_SIZE) {
|
|
@@ -372,6 +654,13 @@ async function runSyncInner(config, options) {
|
|
|
372
654
|
if (headSha) {
|
|
373
655
|
writeSyncState(totemDir, { lastSyncSha: headSha, timestamp: Date.now(), indexExclusionHash });
|
|
374
656
|
}
|
|
657
|
+
// #2562: the epoch is complete — clear the dirty marker only AFTER the fresh
|
|
658
|
+
// baseline is on disk. A crash between the two writes leaves marker + fresh
|
|
659
|
+
// baseline, which the next run resumes as a near-noop; the reverse order
|
|
660
|
+
// would leave a clean-claiming baseline over a still-marked store.
|
|
661
|
+
if (checkpoint) {
|
|
662
|
+
deleteFullSyncCheckpoint(totemDir, log);
|
|
663
|
+
}
|
|
375
664
|
// Persist index metadata for dimension mismatch detection
|
|
376
665
|
writeIndexMeta(totemDir, {
|
|
377
666
|
provider: embedding.provider,
|
|
@@ -386,10 +675,7 @@ async function runSyncInner(config, options) {
|
|
|
386
675
|
const writtenAt = new Date();
|
|
387
676
|
const docs = await store.manifestDocuments(writtenAt);
|
|
388
677
|
const manifest = buildIndexManifest({ documents: docs, headSha, writtenAt });
|
|
389
|
-
|
|
390
|
-
const tmpManifestPath = manifestPath + '.tmp';
|
|
391
|
-
fs.writeFileSync(tmpManifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
|
|
392
|
-
fs.renameSync(tmpManifestPath, manifestPath);
|
|
678
|
+
writeJsonAtomic(path.join(totemDir, 'index-manifest.json'), manifest);
|
|
393
679
|
}
|
|
394
680
|
catch (err) {
|
|
395
681
|
const detail = err instanceof Error ? err.message : typeof err === 'string' ? err : 'unknown error';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/ingest/pipeline.ts"],"names":[],"mappings":"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"}
|