@jcode.labs/ragmir 2.17.2 → 2.18.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/README.md +53 -6
- package/dist/access-log.d.ts +10 -0
- package/dist/access-log.d.ts.map +1 -1
- package/dist/access-log.js +119 -49
- package/dist/access-log.js.map +1 -1
- package/dist/chunking.d.ts +5 -1
- package/dist/chunking.d.ts.map +1 -1
- package/dist/chunking.js +102 -16
- package/dist/chunking.js.map +1 -1
- package/dist/citation.d.ts +18 -0
- package/dist/citation.d.ts.map +1 -0
- package/dist/citation.js +54 -0
- package/dist/citation.js.map +1 -0
- package/dist/cli-entry.d.ts +3 -0
- package/dist/cli-entry.d.ts.map +1 -0
- package/dist/cli-entry.js +16 -0
- package/dist/cli-entry.js.map +1 -0
- package/dist/cli-fast.d.ts +13 -0
- package/dist/cli-fast.d.ts.map +1 -0
- package/dist/cli-fast.js +145 -0
- package/dist/cli-fast.js.map +1 -0
- package/dist/cli-options.d.ts +3 -0
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +7 -0
- package/dist/cli-options.js.map +1 -1
- package/dist/cli-stdin.d.ts +3 -0
- package/dist/cli-stdin.d.ts.map +1 -0
- package/dist/cli-stdin.js +15 -0
- package/dist/cli-stdin.js.map +1 -0
- package/dist/cli.js +251 -44
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +13 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +155 -10
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +227 -49
- package/dist/config.js.map +1 -1
- package/dist/context-resources.d.ts +4 -2
- package/dist/context-resources.d.ts.map +1 -1
- package/dist/context-resources.js +55 -24
- package/dist/context-resources.js.map +1 -1
- package/dist/defaults.d.ts +27 -0
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +42 -2
- package/dist/defaults.js.map +1 -1
- package/dist/destroy.d.ts +2 -2
- package/dist/destroy.d.ts.map +1 -1
- package/dist/destroy.js +34 -20
- package/dist/destroy.js.map +1 -1
- package/dist/doctor.d.ts +3 -2
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +86 -41
- package/dist/doctor.js.map +1 -1
- package/dist/durable-file.d.ts +13 -0
- package/dist/durable-file.d.ts.map +1 -0
- package/dist/durable-file.js +56 -0
- package/dist/durable-file.js.map +1 -0
- package/dist/embeddings.d.ts +14 -3
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +233 -95
- package/dist/embeddings.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/evaluate.d.ts +4 -3
- package/dist/evaluate.d.ts.map +1 -1
- package/dist/evaluate.js +611 -110
- package/dist/evaluate.js.map +1 -1
- package/dist/files.d.ts +4 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +119 -33
- package/dist/files.js.map +1 -1
- package/dist/generation-retention.d.ts +52 -0
- package/dist/generation-retention.d.ts.map +1 -0
- package/dist/generation-retention.js +318 -0
- package/dist/generation-retention.js.map +1 -0
- package/dist/index-diagnostics.d.ts +3 -2
- package/dist/index-diagnostics.d.ts.map +1 -1
- package/dist/index-diagnostics.js +32 -3
- package/dist/index-diagnostics.js.map +1 -1
- package/dist/index-policy.d.ts.map +1 -1
- package/dist/index-policy.js +3 -0
- package/dist/index-policy.js.map +1 -1
- package/dist/index-write-lock.d.ts +16 -1
- package/dist/index-write-lock.d.ts.map +1 -1
- package/dist/index-write-lock.js +392 -13
- package/dist/index-write-lock.js.map +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/ingest.d.ts +11 -2
- package/dist/ingest.d.ts.map +1 -1
- package/dist/ingest.js +680 -165
- package/dist/ingest.js.map +1 -1
- package/dist/ingestion-metrics.d.ts +58 -0
- package/dist/ingestion-metrics.d.ts.map +1 -0
- package/dist/ingestion-metrics.js +216 -0
- package/dist/ingestion-metrics.js.map +1 -0
- package/dist/ingestion-state.d.ts +11 -2
- package/dist/ingestion-state.d.ts.map +1 -1
- package/dist/ingestion-state.js +480 -49
- package/dist/ingestion-state.js.map +1 -1
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +11 -1
- package/dist/limits.js.map +1 -1
- package/dist/mcp-output.d.ts +44 -4
- package/dist/mcp-output.d.ts.map +1 -1
- package/dist/mcp-output.js +132 -159
- package/dist/mcp-output.js.map +1 -1
- package/dist/mcp-summaries.d.ts +32 -0
- package/dist/mcp-summaries.d.ts.map +1 -0
- package/dist/mcp-summaries.js +227 -0
- package/dist/mcp-summaries.js.map +1 -0
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +85 -46
- package/dist/mcp.js.map +1 -1
- package/dist/ocr-cache.d.ts +15 -0
- package/dist/ocr-cache.d.ts.map +1 -0
- package/dist/ocr-cache.js +90 -0
- package/dist/ocr-cache.js.map +1 -0
- package/dist/ocr.d.ts +31 -0
- package/dist/ocr.d.ts.map +1 -1
- package/dist/ocr.js +193 -17
- package/dist/ocr.js.map +1 -1
- package/dist/parsing.d.ts.map +1 -1
- package/dist/parsing.js +482 -85
- package/dist/parsing.js.map +1 -1
- package/dist/permissions.js +2 -2
- package/dist/permissions.js.map +1 -1
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +10 -11
- package/dist/preview.js.map +1 -1
- package/dist/quality-report.d.ts +12 -0
- package/dist/quality-report.d.ts.map +1 -0
- package/dist/quality-report.js +146 -0
- package/dist/quality-report.js.map +1 -0
- package/dist/query.d.ts +7 -4
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +371 -284
- package/dist/query.js.map +1 -1
- package/dist/ranking.d.ts +38 -0
- package/dist/ranking.d.ts.map +1 -0
- package/dist/ranking.js +278 -0
- package/dist/ranking.js.map +1 -0
- package/dist/redaction.d.ts +6 -1
- package/dist/redaction.d.ts.map +1 -1
- package/dist/redaction.js +118 -4
- package/dist/redaction.js.map +1 -1
- package/dist/research.d.ts +6 -1
- package/dist/research.d.ts.map +1 -1
- package/dist/research.js +330 -130
- package/dist/research.js.map +1 -1
- package/dist/runtime-info.d.ts +3 -0
- package/dist/runtime-info.d.ts.map +1 -0
- package/dist/runtime-info.js +81 -0
- package/dist/runtime-info.js.map +1 -0
- package/dist/security.d.ts +3 -2
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +242 -45
- package/dist/security.js.map +1 -1
- package/dist/semantic-config.d.ts +7 -1
- package/dist/semantic-config.d.ts.map +1 -1
- package/dist/semantic-config.js +30 -4
- package/dist/semantic-config.js.map +1 -1
- package/dist/setup.js +6 -3
- package/dist/setup.js.map +1 -1
- package/dist/skill.js +34 -12
- package/dist/skill.js.map +1 -1
- package/dist/source-fingerprint-cache.d.ts +20 -0
- package/dist/source-fingerprint-cache.d.ts.map +1 -0
- package/dist/source-fingerprint-cache.js +133 -0
- package/dist/source-fingerprint-cache.js.map +1 -0
- package/dist/storage-maintenance.d.ts +46 -0
- package/dist/storage-maintenance.d.ts.map +1 -0
- package/dist/storage-maintenance.js +329 -0
- package/dist/storage-maintenance.js.map +1 -0
- package/dist/store.d.ts +39 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +559 -24
- package/dist/store.js.map +1 -1
- package/dist/text.d.ts +1 -1
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +12 -2
- package/dist/text.js.map +1 -1
- package/dist/types.d.ts +414 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/vector-index.d.ts +42 -0
- package/dist/vector-index.d.ts.map +1 -0
- package/dist/vector-index.js +249 -0
- package/dist/vector-index.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workload.d.ts +22 -0
- package/dist/workload.d.ts.map +1 -0
- package/dist/workload.js +181 -0
- package/dist/workload.js.map +1 -0
- package/examples/document-evidence-benchmark/README.md +3 -2
- package/examples/document-evidence-benchmark/golden-queries.json +1 -1
- package/package.json +36 -11
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { readdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { loadConfig } from "./config.js";
|
|
5
|
+
import { isRecord } from "./guards.js";
|
|
6
|
+
import { withIndexWriteLock } from "./index-write-lock.js";
|
|
7
|
+
import { readIngestionState } from "./ingestion-state.js";
|
|
8
|
+
import { operationSignal } from "./operation.js";
|
|
9
|
+
import { ensurePrivateDirectory } from "./permissions.js";
|
|
10
|
+
import { activeIndexTableName, connectStore } from "./store.js";
|
|
11
|
+
const GENERATION_LEASE_DIRECTORY = "generation-leases";
|
|
12
|
+
const GENERATION_LEASE_SCHEMA_VERSION = 1;
|
|
13
|
+
const GENERATION_LEASE_DURATION_MS = 24 * 60 * 60 * 1_000;
|
|
14
|
+
const GENERATION_ID_PATTERN = /^[0-9a-f]{32}$/iu;
|
|
15
|
+
const MAX_RETAINED_GENERATIONS = 3;
|
|
16
|
+
const MAX_GENERATION_AGE_MS = 7 * 24 * 60 * 60 * 1_000;
|
|
17
|
+
const READER_GRACE_PERIOD_MS = 5 * 60 * 1_000;
|
|
18
|
+
const activeInProcessLeases = new Map();
|
|
19
|
+
export async function collectGenerationGarbage(options = {}) {
|
|
20
|
+
const config = await loadConfig(options.cwd ?? process.cwd());
|
|
21
|
+
const signal = operationSignal(options);
|
|
22
|
+
return withIndexWriteLock(config.storageDir, signal, () => collectGenerationGarbageUnlocked(config, undefined, {
|
|
23
|
+
...(options.dryRun === undefined ? {} : { dryRun: options.dryRun }),
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
export async function collectGenerationGarbageUnlocked(config, connection, options = {}) {
|
|
27
|
+
const activeConnection = connection ?? (await connectStore(config));
|
|
28
|
+
try {
|
|
29
|
+
return await collectWithConnection(config, activeConnection, options);
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
if (!connection) {
|
|
33
|
+
activeConnection.close();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export async function acquireGenerationReadLease(tableName, config) {
|
|
38
|
+
const directory = path.join(config.storageDir, GENERATION_LEASE_DIRECTORY);
|
|
39
|
+
const token = randomUUID();
|
|
40
|
+
const leasePath = path.join(directory, `${token}.json`);
|
|
41
|
+
const now = Date.now();
|
|
42
|
+
const lease = {
|
|
43
|
+
schemaVersion: GENERATION_LEASE_SCHEMA_VERSION,
|
|
44
|
+
token,
|
|
45
|
+
pid: process.pid,
|
|
46
|
+
tableName,
|
|
47
|
+
createdAt: new Date(now).toISOString(),
|
|
48
|
+
expiresAt: new Date(now + GENERATION_LEASE_DURATION_MS).toISOString(),
|
|
49
|
+
};
|
|
50
|
+
incrementInProcessLease(tableName);
|
|
51
|
+
let persisted = false;
|
|
52
|
+
try {
|
|
53
|
+
await ensurePrivateDirectory(directory);
|
|
54
|
+
await writeFile(leasePath, JSON.stringify(lease), {
|
|
55
|
+
encoding: "utf8",
|
|
56
|
+
flag: "wx",
|
|
57
|
+
mode: 0o600,
|
|
58
|
+
});
|
|
59
|
+
persisted = true;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Same-process collection still observes the in-memory lease. A read-only index remains usable.
|
|
63
|
+
}
|
|
64
|
+
let released = false;
|
|
65
|
+
return {
|
|
66
|
+
tableName,
|
|
67
|
+
release: async () => {
|
|
68
|
+
if (released) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
released = true;
|
|
72
|
+
decrementInProcessLease(tableName);
|
|
73
|
+
if (persisted) {
|
|
74
|
+
await rm(leasePath, { force: true });
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export async function withActiveGenerationReadLease(config, operation) {
|
|
80
|
+
while (true) {
|
|
81
|
+
const tableName = await activeIndexTableName(config);
|
|
82
|
+
const lease = await acquireGenerationReadLease(tableName, config);
|
|
83
|
+
const confirmedTableName = await activeIndexTableName(config);
|
|
84
|
+
if (confirmedTableName !== tableName) {
|
|
85
|
+
await lease.release().catch(() => undefined);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
return await operation(tableName);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
await lease.release().catch(() => undefined);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async function collectWithConnection(config, connection, options) {
|
|
97
|
+
const now = options.now ?? new Date();
|
|
98
|
+
const nowMs = now.getTime();
|
|
99
|
+
const activeTableName = await activeIndexTableName(config);
|
|
100
|
+
const state = options.state === undefined ? await readIngestionState(config) : options.state;
|
|
101
|
+
const resumableTableName = resumableGeneration(state, activeTableName);
|
|
102
|
+
const rollbackTableName = rollbackGeneration(state, activeTableName);
|
|
103
|
+
const leaseNames = await activeLeaseTableNames(config, nowMs);
|
|
104
|
+
const warnings = [];
|
|
105
|
+
const candidates = [];
|
|
106
|
+
const tableNames = (await connection.tableNames()).filter((tableName) => isManagedTableName(tableName, config));
|
|
107
|
+
for (const tableName of tableNames) {
|
|
108
|
+
try {
|
|
109
|
+
const table = await connection.openTable(tableName);
|
|
110
|
+
const [stats, tableVersion, versions] = await Promise.all([
|
|
111
|
+
table.stats(),
|
|
112
|
+
table.version(),
|
|
113
|
+
table.listVersions(),
|
|
114
|
+
]);
|
|
115
|
+
const latestTimestamp = versions.reduce((latest, version) => Math.max(latest, version.timestamp.getTime()), 0);
|
|
116
|
+
const lastModifiedMs = latestTimestamp > 0 ? latestTimestamp : nowMs;
|
|
117
|
+
candidates.push({
|
|
118
|
+
tableName,
|
|
119
|
+
bytes: stats.totalBytes,
|
|
120
|
+
tableVersion,
|
|
121
|
+
lastModifiedAt: new Date(lastModifiedMs).toISOString(),
|
|
122
|
+
ageMs: Math.max(0, nowMs - lastModifiedMs),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
warnings.push(`Could not inspect generation "${tableName}" (${errorDetail(error)}).`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const cleanupSafe = candidates.length === 0 ||
|
|
130
|
+
candidates.some((candidate) => candidate.tableName === activeTableName);
|
|
131
|
+
if (!cleanupSafe) {
|
|
132
|
+
warnings.push(`Active generation "${activeTableName}" is missing. Generation cleanup was skipped.`);
|
|
133
|
+
}
|
|
134
|
+
const protectedNames = new Set([activeTableName, resumableTableName, rollbackTableName, ...leaseNames].filter(isString));
|
|
135
|
+
const retainedSlots = Math.max(0, MAX_RETAINED_GENERATIONS - protectedNames.size);
|
|
136
|
+
let retainedCount = 0;
|
|
137
|
+
const generations = candidates
|
|
138
|
+
.sort((left, right) => right.lastModifiedAt.localeCompare(left.lastModifiedAt))
|
|
139
|
+
.map((candidate) => {
|
|
140
|
+
const leased = leaseNames.has(candidate.tableName);
|
|
141
|
+
if (candidate.tableName === activeTableName) {
|
|
142
|
+
return inventoryItem(candidate, "active", "active-manifest", leased);
|
|
143
|
+
}
|
|
144
|
+
if (candidate.tableName === resumableTableName) {
|
|
145
|
+
return inventoryItem(candidate, "resumable", "resumable-ingestion", leased);
|
|
146
|
+
}
|
|
147
|
+
if (candidate.tableName === rollbackTableName) {
|
|
148
|
+
return inventoryItem(candidate, "rollback", "rollback-generation", leased);
|
|
149
|
+
}
|
|
150
|
+
if (leased) {
|
|
151
|
+
return inventoryItem(candidate, "leased", "active-reader-lease", true);
|
|
152
|
+
}
|
|
153
|
+
if (!cleanupSafe) {
|
|
154
|
+
return inventoryItem(candidate, "retained", "retention-count", false);
|
|
155
|
+
}
|
|
156
|
+
if (candidate.ageMs < READER_GRACE_PERIOD_MS) {
|
|
157
|
+
return inventoryItem(candidate, "retained", "reader-grace-period", false);
|
|
158
|
+
}
|
|
159
|
+
if (candidate.ageMs <= MAX_GENERATION_AGE_MS && retainedCount < retainedSlots) {
|
|
160
|
+
retainedCount += 1;
|
|
161
|
+
return inventoryItem(candidate, "retained", "retention-count", false);
|
|
162
|
+
}
|
|
163
|
+
return inventoryItem(candidate, "orphaned", candidate.ageMs > MAX_GENERATION_AGE_MS ? "retention-age" : "retention-limit", false);
|
|
164
|
+
});
|
|
165
|
+
const reclaimableBytes = generations
|
|
166
|
+
.filter((generation) => generation.reclaimable)
|
|
167
|
+
.reduce((sum, generation) => sum + generation.bytes, 0);
|
|
168
|
+
const deletedTables = [];
|
|
169
|
+
let reclaimedBytes = 0;
|
|
170
|
+
if (options.dryRun !== true) {
|
|
171
|
+
const currentLeases = await activeLeaseTableNames(config, nowMs);
|
|
172
|
+
for (const generation of generations) {
|
|
173
|
+
if (!generation.reclaimable || currentLeases.has(generation.tableName)) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
await connection.dropTable(generation.tableName);
|
|
178
|
+
generation.deleted = true;
|
|
179
|
+
deletedTables.push(generation.tableName);
|
|
180
|
+
reclaimedBytes += generation.bytes;
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
warnings.push(`Could not delete generation "${generation.tableName}" (${errorDetail(error)}).`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
schemaVersion: 1,
|
|
189
|
+
dryRun: options.dryRun === true,
|
|
190
|
+
policy: {
|
|
191
|
+
maxRetainedGenerations: MAX_RETAINED_GENERATIONS,
|
|
192
|
+
maxGenerationAgeMs: MAX_GENERATION_AGE_MS,
|
|
193
|
+
readerGracePeriodMs: READER_GRACE_PERIOD_MS,
|
|
194
|
+
},
|
|
195
|
+
activeTableName,
|
|
196
|
+
resumableTableName,
|
|
197
|
+
rollbackTableName,
|
|
198
|
+
generations,
|
|
199
|
+
reclaimableBytes,
|
|
200
|
+
reclaimedBytes,
|
|
201
|
+
deletedTables,
|
|
202
|
+
warning: warnings.length > 0 ? warnings.join(" ") : null,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function inventoryItem(candidate, role, reason, leased) {
|
|
206
|
+
return {
|
|
207
|
+
...candidate,
|
|
208
|
+
role,
|
|
209
|
+
reason,
|
|
210
|
+
leased,
|
|
211
|
+
reclaimable: role === "orphaned",
|
|
212
|
+
deleted: false,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
async function activeLeaseTableNames(config, nowMs) {
|
|
216
|
+
const directory = path.join(config.storageDir, GENERATION_LEASE_DIRECTORY);
|
|
217
|
+
const tableNames = new Set(activeInProcessLeases.keys());
|
|
218
|
+
let entries;
|
|
219
|
+
try {
|
|
220
|
+
entries = await readdir(directory);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
if (isNodeError(error) && error.code === "ENOENT") {
|
|
224
|
+
return tableNames;
|
|
225
|
+
}
|
|
226
|
+
throw error;
|
|
227
|
+
}
|
|
228
|
+
for (const entry of entries) {
|
|
229
|
+
if (!entry.endsWith(".json")) {
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
const leasePath = path.join(directory, entry);
|
|
233
|
+
try {
|
|
234
|
+
const value = JSON.parse(await readFile(leasePath, "utf8"));
|
|
235
|
+
if (!isGenerationLease(value) || !activeLease(value, nowMs)) {
|
|
236
|
+
await rm(leasePath, { force: true });
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
tableNames.add(value.tableName);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
await rm(leasePath, { force: true });
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return tableNames;
|
|
246
|
+
}
|
|
247
|
+
function incrementInProcessLease(tableName) {
|
|
248
|
+
activeInProcessLeases.set(tableName, (activeInProcessLeases.get(tableName) ?? 0) + 1);
|
|
249
|
+
}
|
|
250
|
+
function decrementInProcessLease(tableName) {
|
|
251
|
+
const remaining = (activeInProcessLeases.get(tableName) ?? 1) - 1;
|
|
252
|
+
if (remaining > 0) {
|
|
253
|
+
activeInProcessLeases.set(tableName, remaining);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
activeInProcessLeases.delete(tableName);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function activeLease(lease, nowMs) {
|
|
260
|
+
return Date.parse(lease.expiresAt) > nowMs && processIsAlive(lease.pid);
|
|
261
|
+
}
|
|
262
|
+
function processIsAlive(pid) {
|
|
263
|
+
try {
|
|
264
|
+
process.kill(pid, 0);
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
return isNodeError(error) && error.code === "EPERM";
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
function isGenerationLease(value) {
|
|
272
|
+
return (isRecord(value) &&
|
|
273
|
+
value.schemaVersion === GENERATION_LEASE_SCHEMA_VERSION &&
|
|
274
|
+
typeof value.token === "string" &&
|
|
275
|
+
typeof value.pid === "number" &&
|
|
276
|
+
Number.isInteger(value.pid) &&
|
|
277
|
+
value.pid > 0 &&
|
|
278
|
+
typeof value.tableName === "string" &&
|
|
279
|
+
typeof value.createdAt === "string" &&
|
|
280
|
+
Number.isFinite(Date.parse(value.createdAt)) &&
|
|
281
|
+
typeof value.expiresAt === "string" &&
|
|
282
|
+
Number.isFinite(Date.parse(value.expiresAt)));
|
|
283
|
+
}
|
|
284
|
+
function resumableGeneration(state, activeTableName) {
|
|
285
|
+
if (state?.mode !== "rebuild" ||
|
|
286
|
+
state.tableName === activeTableName ||
|
|
287
|
+
state.status === "completed" ||
|
|
288
|
+
state.status === "completed_with_errors") {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
return state.tableName;
|
|
292
|
+
}
|
|
293
|
+
function rollbackGeneration(state, activeTableName) {
|
|
294
|
+
if (state?.mode !== "rebuild" ||
|
|
295
|
+
state.tableName !== activeTableName ||
|
|
296
|
+
state.previousTableName === null ||
|
|
297
|
+
state.previousTableName === activeTableName) {
|
|
298
|
+
return null;
|
|
299
|
+
}
|
|
300
|
+
return state.previousTableName;
|
|
301
|
+
}
|
|
302
|
+
function isManagedTableName(tableName, config) {
|
|
303
|
+
if (tableName === config.tableName) {
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
const prefix = `${config.tableName}__generation_`;
|
|
307
|
+
return tableName.startsWith(prefix) && GENERATION_ID_PATTERN.test(tableName.slice(prefix.length));
|
|
308
|
+
}
|
|
309
|
+
function isString(value) {
|
|
310
|
+
return typeof value === "string";
|
|
311
|
+
}
|
|
312
|
+
function errorDetail(error) {
|
|
313
|
+
return error instanceof Error ? error.message : String(error);
|
|
314
|
+
}
|
|
315
|
+
function isNodeError(error) {
|
|
316
|
+
return error instanceof Error && "code" in error;
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=generation-retention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation-retention.js","sourceRoot":"","sources":["../src/generation-retention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Config } from "./types.js";
|
|
1
|
+
import type { Config, IndexManifest } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Bumped when the index layout or manifest meaning changes in a way that
|
|
4
4
|
* invalidates previously indexed vectors (new columns, changed semantics, new
|
|
5
5
|
* required metadata). A stored manifest with a lower schemaVersion means the
|
|
6
6
|
* index predates the current code and should be rebuilt.
|
|
7
7
|
*/
|
|
8
|
-
export declare const INDEX_SCHEMA_VERSION =
|
|
8
|
+
export declare const INDEX_SCHEMA_VERSION = 11;
|
|
9
9
|
/**
|
|
10
10
|
* Detect a stale or incompatible index without re-scanning every source file.
|
|
11
11
|
* Returns a human-readable warning when the stored manifest is missing, was
|
|
@@ -17,6 +17,7 @@ export declare const INDEX_SCHEMA_VERSION = 7;
|
|
|
17
17
|
* retrieval is truncating a large corpus and losing recall.
|
|
18
18
|
*/
|
|
19
19
|
export declare function getIndexFreshnessWarning(config: Config): Promise<string | null>;
|
|
20
|
+
export declare function indexFreshnessWarning(config: Config, manifest: IndexManifest | null): string | null;
|
|
20
21
|
/**
|
|
21
22
|
* Warn when the indexed corpus exceeds the hybrid lexical scan limit, because
|
|
22
23
|
* BM25 retrieval then scans only the first N chunks and silently loses recall.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-diagnostics.d.ts","sourceRoot":"","sources":["../src/index-diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index-diagnostics.d.ts","sourceRoot":"","sources":["../src/index-diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAGvD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIrF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,MAAM,GAAG,IAAI,CAkEf;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKvF"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { VECTOR_DISTANCE_METRIC } from "./defaults.js";
|
|
2
2
|
import { indexPolicyFingerprint } from "./index-policy.js";
|
|
3
|
-
import { readIndexManifest } from "./store.js";
|
|
3
|
+
import { indexManifestRecoveryWarning, readIndexManifest } from "./store.js";
|
|
4
|
+
import { vectorModelFingerprint } from "./vector-index.js";
|
|
4
5
|
/**
|
|
5
6
|
* Bumped when the index layout or manifest meaning changes in a way that
|
|
6
7
|
* invalidates previously indexed vectors (new columns, changed semantics, new
|
|
7
8
|
* required metadata). A stored manifest with a lower schemaVersion means the
|
|
8
9
|
* index predates the current code and should be rebuilt.
|
|
9
10
|
*/
|
|
10
|
-
export const INDEX_SCHEMA_VERSION =
|
|
11
|
+
export const INDEX_SCHEMA_VERSION = 11;
|
|
11
12
|
/**
|
|
12
13
|
* Detect a stale or incompatible index without re-scanning every source file.
|
|
13
14
|
* Returns a human-readable warning when the stored manifest is missing, was
|
|
@@ -20,6 +21,13 @@ export const INDEX_SCHEMA_VERSION = 7;
|
|
|
20
21
|
*/
|
|
21
22
|
export async function getIndexFreshnessWarning(config) {
|
|
22
23
|
const manifest = await readIndexManifest(config);
|
|
24
|
+
return indexFreshnessWarning(config, manifest);
|
|
25
|
+
}
|
|
26
|
+
export function indexFreshnessWarning(config, manifest) {
|
|
27
|
+
const recoveryWarning = indexManifestRecoveryWarning(config);
|
|
28
|
+
if (recoveryWarning) {
|
|
29
|
+
return recoveryWarning;
|
|
30
|
+
}
|
|
23
31
|
if (!manifest) {
|
|
24
32
|
return null;
|
|
25
33
|
}
|
|
@@ -32,10 +40,31 @@ export async function getIndexFreshnessWarning(config) {
|
|
|
32
40
|
if (manifest.embeddingModel !== config.embeddingModel) {
|
|
33
41
|
return `Index was built with embedding model "${manifest.embeddingModel}" but the active config uses "${config.embeddingModel}". Rebuild with \`rgr ingest --rebuild\` to refresh vectors.`;
|
|
34
42
|
}
|
|
43
|
+
if (manifest.embeddingModelRevision !== config.embeddingModelRevision) {
|
|
44
|
+
return `Index was built with embedding revision "${manifest.embeddingModelRevision ?? "unknown"}" but the active config uses "${config.embeddingModelRevision}". Rebuild with \`rgr ingest --rebuild\` to refresh vectors.`;
|
|
45
|
+
}
|
|
46
|
+
if (manifest.embeddingModelDigest !== config.embeddingModelDigest) {
|
|
47
|
+
return "Index embedding artifact identity differs from the active config. Rebuild with `rgr ingest --rebuild`.";
|
|
48
|
+
}
|
|
35
49
|
if (manifest.vectorDistanceMetric !== undefined &&
|
|
36
50
|
manifest.vectorDistanceMetric !== VECTOR_DISTANCE_METRIC) {
|
|
37
51
|
return `Index was built with vector distance metric "${manifest.vectorDistanceMetric}" but the active code uses "${VECTOR_DISTANCE_METRIC}". Rebuild with \`rgr ingest --rebuild\`.`;
|
|
38
52
|
}
|
|
53
|
+
if (manifest.chunkCount > 0 && !manifest.vectorIndex) {
|
|
54
|
+
return "Index vector strategy metadata is missing. Rebuild with `rgr ingest --rebuild`.";
|
|
55
|
+
}
|
|
56
|
+
if (manifest.vectorIndex) {
|
|
57
|
+
if (manifest.vectorDimension === undefined ||
|
|
58
|
+
manifest.vectorIndex.dimension !== manifest.vectorDimension ||
|
|
59
|
+
manifest.vectorIndex.distanceMetric !== VECTOR_DISTANCE_METRIC ||
|
|
60
|
+
manifest.vectorIndex.modelFingerprint !==
|
|
61
|
+
vectorModelFingerprint(config, manifest.vectorIndex.dimension)) {
|
|
62
|
+
return "Index vector strategy is incompatible with the active model, dimension, or metric. Rebuild with `rgr ingest --rebuild`.";
|
|
63
|
+
}
|
|
64
|
+
if (manifest.vectorIndex.coverage < 1 || manifest.vectorIndex.unindexedRows > 0) {
|
|
65
|
+
return "Active vector index coverage is incomplete. Run `rgr storage optimize` before searching.";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
39
68
|
if (manifest.chunkSize !== config.chunkSize || manifest.chunkOverlap !== config.chunkOverlap) {
|
|
40
69
|
return `Index was built with chunkSize=${manifest.chunkSize}/chunkOverlap=${manifest.chunkOverlap} but the active config uses chunkSize=${config.chunkSize}/chunkOverlap=${config.chunkOverlap}. Rebuild with \`rgr ingest --rebuild\`.`;
|
|
41
70
|
}
|
|
@@ -54,6 +83,6 @@ export function getLexicalScanWarning(config, chunkCount) {
|
|
|
54
83
|
if (chunkCount <= config.hybridTextScanLimit) {
|
|
55
84
|
return null;
|
|
56
85
|
}
|
|
57
|
-
return `Lexical fallback
|
|
86
|
+
return `Lexical fallback can scan at most ${config.hybridTextScanLimit} of ${chunkCount} chunks when full-text search is unavailable. Search rejects this truncated fallback instead of returning incomplete lexical evidence. Run \`rgr storage optimize\` or rebuild the index; raise \`hybridTextScanLimit\` only for a measured complete-scan fallback.`;
|
|
58
87
|
}
|
|
59
88
|
//# sourceMappingURL=index-diagnostics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-diagnostics.js","sourceRoot":"","sources":["../src/index-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index-diagnostics.js","sourceRoot":"","sources":["../src/index-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-policy.d.ts","sourceRoot":"","sources":["../src/index-policy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index-policy.d.ts","sourceRoot":"","sources":["../src/index-policy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKxC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA0B7D"}
|
package/dist/index-policy.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { PDF_OCR_PARSER_POLICY } from "./ocr-cache.js";
|
|
2
3
|
const INDEX_CONTENT_POLICY_VERSION = 1;
|
|
3
4
|
const CHUNKING_ADAPTER_VERSION = 3;
|
|
4
5
|
export function indexPolicyFingerprint(config) {
|
|
@@ -9,6 +10,7 @@ export function indexPolicyFingerprint(config) {
|
|
|
9
10
|
provider: config.embeddingProvider,
|
|
10
11
|
model: config.embeddingModel,
|
|
11
12
|
revision: config.embeddingModelRevision,
|
|
13
|
+
digest: config.embeddingModelDigest,
|
|
12
14
|
},
|
|
13
15
|
chunking: {
|
|
14
16
|
adapterVersion: CHUNKING_ADAPTER_VERSION,
|
|
@@ -19,6 +21,7 @@ export function indexPolicyFingerprint(config) {
|
|
|
19
21
|
extraction: {
|
|
20
22
|
parserVersion: 2,
|
|
21
23
|
pdfOcrCommand: config.pdfOcrCommand,
|
|
24
|
+
pdfOcrParserPolicy: config.pdfOcrCommand.length > 0 ? PDF_OCR_PARSER_POLICY : null,
|
|
22
25
|
imageOcrCommand: config.imageOcrCommand,
|
|
23
26
|
legacyWordCommand: config.legacyWordCommand,
|
|
24
27
|
},
|
package/dist/index-policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-policy.js","sourceRoot":"","sources":["../src/index-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index-policy.js","sourceRoot":"","sources":["../src/index-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,MAAM,4BAA4B,GAAG,CAAC,CAAA;AACtC,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAElC,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE;YACT,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC,iBAAiB;YAClC,KAAK,EAAE,MAAM,CAAC,cAAc;YAC5B,QAAQ,EAAE,MAAM,CAAC,sBAAsB;YACvC,MAAM,EAAE,MAAM,CAAC,oBAAoB;SACpC;QACD,QAAQ,EAAE;YACR,cAAc,EAAE,wBAAwB;YACxC,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,OAAO,EAAE,MAAM,CAAC,YAAY;SAC7B;QACD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE;YACV,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI;YAClF,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC5C;KACF,CAAA;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1E,CAAC"}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare const INDEX_WRITE_LOCK_DIRECTORY = ".writer-lock";
|
|
2
|
+
export interface IndexWriteLockOwner {
|
|
3
|
+
pid: number;
|
|
4
|
+
hostname: string;
|
|
5
|
+
runId: string;
|
|
6
|
+
ownerToken: string;
|
|
7
|
+
startedAt: string;
|
|
8
|
+
heartbeatAt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface IndexWriteLockOptions {
|
|
11
|
+
waitTimeoutMs?: number;
|
|
12
|
+
pollIntervalMs?: number;
|
|
13
|
+
heartbeatIntervalMs?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function withIndexWriteLock<T>(storageDir: string, signal: AbortSignal | undefined, operation: (owner: IndexWriteLockOwner) => Promise<T>, options?: IndexWriteLockOptions): Promise<T>;
|
|
16
|
+
export declare function readIndexWriteLockOwner(storageDir: string): Promise<IndexWriteLockOwner | null>;
|
|
2
17
|
//# sourceMappingURL=index-write-lock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-write-lock.d.ts","sourceRoot":"","sources":["../src/index-write-lock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index-write-lock.d.ts","sourceRoot":"","sources":["../src/index-write-lock.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,0BAA0B,iBAAiB,CAAA;AAYxD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAOD,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,CAAC,CAAC,EACrD,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,CAAC,CAAC,CAiCZ;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAErC"}
|