@jcode.labs/ragmir 2.7.0 → 2.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.
- package/README.md +9 -103
- package/dist/access-log.d.ts.map +1 -1
- package/dist/access-log.js +65 -8
- package/dist/access-log.js.map +1 -1
- package/dist/chunking.d.ts.map +1 -1
- package/dist/chunking.js +29 -3
- package/dist/chunking.js.map +1 -1
- package/dist/cli.js +166 -22
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +73 -29
- package/dist/config.js.map +1 -1
- package/dist/defaults.d.ts +1 -0
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +6 -1
- package/dist/defaults.js.map +1 -1
- package/dist/destroy.d.ts.map +1 -1
- package/dist/destroy.js +23 -1
- package/dist/destroy.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +40 -9
- package/dist/doctor.js.map +1 -1
- package/dist/embeddings.d.ts +4 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +62 -14
- package/dist/embeddings.js.map +1 -1
- package/dist/evaluate.d.ts.map +1 -1
- package/dist/evaluate.js +48 -4
- package/dist/evaluate.js.map +1 -1
- package/dist/files.d.ts +8 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +44 -8
- package/dist/files.js.map +1 -1
- package/dist/index-diagnostics.d.ts +1 -1
- package/dist/index-diagnostics.d.ts.map +1 -1
- package/dist/index-diagnostics.js +8 -3
- package/dist/index-diagnostics.js.map +1 -1
- package/dist/index-policy.d.ts +3 -0
- package/dist/index-policy.d.ts.map +1 -0
- package/dist/index-policy.js +28 -0
- package/dist/index-policy.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/ingest.d.ts.map +1 -1
- package/dist/ingest.js +112 -54
- package/dist/ingest.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +15 -3
- package/dist/init.js.map +1 -1
- package/dist/limits.d.ts +9 -0
- package/dist/limits.d.ts.map +1 -0
- package/dist/limits.js +25 -0
- package/dist/limits.js.map +1 -0
- package/dist/mcp.d.ts +3 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +71 -14
- package/dist/mcp.js.map +1 -1
- package/dist/ocr.d.ts +46 -0
- package/dist/ocr.d.ts.map +1 -0
- package/dist/ocr.js +340 -0
- package/dist/ocr.js.map +1 -0
- package/dist/parsing.d.ts.map +1 -1
- package/dist/parsing.js +124 -24
- package/dist/parsing.js.map +1 -1
- package/dist/permissions.d.ts +3 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +13 -0
- package/dist/permissions.js.map +1 -0
- package/dist/query.d.ts +2 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +198 -39
- package/dist/query.js.map +1 -1
- package/dist/research.d.ts.map +1 -1
- package/dist/research.js +33 -4
- package/dist/research.js.map +1 -1
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +110 -14
- package/dist/security.js.map +1 -1
- package/dist/store.d.ts +3 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +71 -72
- package/dist/store.js.map +1 -1
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +13 -1
- package/dist/text.js.map +1 -1
- package/dist/types.d.ts +94 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/examples/document-evidence-benchmark/.ragmir/config.json +2 -1
- package/examples/document-evidence-benchmark/README.md +5 -2
- package/examples/document-evidence-benchmark/golden-queries.json +7 -1
- package/examples/document-evidence-benchmark/raw/contracts/pdf-control-evidence.pdf +32 -0
- package/examples/document-evidence-benchmark/raw/runbooks/incident-response-runbook.md +3 -3
- package/examples/sovereign-rag-demo/.ragmir/config.json +2 -1
- package/examples/sovereign-rag-demo/README.md +9 -1
- package/package.json +3 -3
- package/skills/ragmir/SKILL.md +59 -326
- package/skills/ragmir-audio-summary/SKILL.md +49 -204
package/dist/ingest.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
1
|
import { recordAccess } from "./access-log.js";
|
|
3
2
|
import { chunkDocument } from "./chunking.js";
|
|
4
3
|
import { loadConfig } from "./config.js";
|
|
@@ -6,12 +5,11 @@ import { VECTOR_DISTANCE_METRIC } from "./defaults.js";
|
|
|
6
5
|
import { embedTexts } from "./embeddings.js";
|
|
7
6
|
import { countSkippedByReason, inventorySourceFiles, summarizeUnsupportedExtensions, } from "./files.js";
|
|
8
7
|
import { INDEX_SCHEMA_VERSION } from "./index-diagnostics.js";
|
|
8
|
+
import { indexPolicyFingerprint } from "./index-policy.js";
|
|
9
9
|
import { parseFile } from "./parsing.js";
|
|
10
10
|
import { redactText, totalRedactions } from "./redaction.js";
|
|
11
|
-
import { openRowsTable, readEmptyTextFiles,
|
|
12
|
-
import { normalizeForMatch } from "./text.js";
|
|
11
|
+
import { openRowsTable, readEmptyTextFiles, readIndexManifest, updateRows, writeEmptyTextFiles, writeIndexManifest, writeRows, } from "./store.js";
|
|
13
12
|
import { VERSION } from "./version.js";
|
|
14
|
-
const MAX_AUDIT_ROWS = 100_000;
|
|
15
13
|
const MAX_SOURCE_DIAGNOSTIC_ITEMS = 20;
|
|
16
14
|
const ARCHIVE_PATH_PATTERNS = [
|
|
17
15
|
/(^|[/_-])archive(s)?([/_-]|$)/iu,
|
|
@@ -29,15 +27,36 @@ const MIRROR_PATH_PATTERNS = [
|
|
|
29
27
|
];
|
|
30
28
|
export async function ingest(options = {}) {
|
|
31
29
|
const config = await loadConfig(String(options.cwd ?? process.cwd()));
|
|
32
|
-
const
|
|
30
|
+
const policyFingerprint = indexPolicyFingerprint(config);
|
|
31
|
+
const existingManifest = await readIndexManifest(config);
|
|
32
|
+
const manifestCompatible = !options.rebuild &&
|
|
33
|
+
existingManifest?.schemaVersion === INDEX_SCHEMA_VERSION &&
|
|
34
|
+
existingManifest.indexPolicyFingerprint === policyFingerprint &&
|
|
35
|
+
existingManifest.indexedFiles !== undefined;
|
|
36
|
+
const existingTable = manifestCompatible ? await openRowsTable(config) : null;
|
|
37
|
+
const storedEmptyFiles = manifestCompatible ? await readEmptyTextFiles(config) : [];
|
|
38
|
+
const knownFiles = new Map([...(existingManifest?.indexedFiles ?? []), ...storedEmptyFiles].map((file) => [
|
|
39
|
+
file.relativePath,
|
|
40
|
+
file,
|
|
41
|
+
]));
|
|
42
|
+
const inventory = await inventorySourceFiles(config, { knownFiles });
|
|
33
43
|
const files = inventory.supportedFiles;
|
|
44
|
+
const inventoryMetrics = sourceInventoryMetrics(files);
|
|
34
45
|
const currentFiles = new Map(files.map((file) => [file.relativePath, file]));
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
const policyRebuild = !options.rebuild &&
|
|
47
|
+
existingManifest !== null &&
|
|
48
|
+
(existingManifest.schemaVersion !== INDEX_SCHEMA_VERSION ||
|
|
49
|
+
existingManifest.indexPolicyFingerprint !== policyFingerprint);
|
|
50
|
+
const canReuse = manifestCompatible && existingTable !== null;
|
|
51
|
+
const previousIndexedFiles = canReuse ? (existingManifest.indexedFiles ?? []) : [];
|
|
52
|
+
const previousEmptyFiles = canReuse ? storedEmptyFiles : [];
|
|
53
|
+
const reusableIndexedFiles = previousIndexedFiles.filter((file) => currentFiles.get(file.relativePath)?.checksum === file.checksum);
|
|
54
|
+
const reusableEmptyFiles = previousEmptyFiles.filter((file) => currentFiles.get(file.relativePath)?.checksum === file.checksum);
|
|
55
|
+
const reusableFiles = new Set([
|
|
56
|
+
...reusableIndexedFiles.map((file) => file.relativePath),
|
|
57
|
+
...reusableEmptyFiles.map((file) => file.relativePath),
|
|
58
|
+
]);
|
|
59
|
+
const filesToIndex = files.filter((file) => !reusableFiles.has(file.relativePath));
|
|
41
60
|
const allChunks = [];
|
|
42
61
|
const errors = [];
|
|
43
62
|
const redactionCounts = [];
|
|
@@ -89,10 +108,22 @@ export async function ingest(options = {}) {
|
|
|
89
108
|
});
|
|
90
109
|
}
|
|
91
110
|
}
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
111
|
+
const rebuiltIndexedFiles = indexedFileRecords(rows);
|
|
112
|
+
const indexedFiles = [...reusableIndexedFiles, ...rebuiltIndexedFiles].sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
113
|
+
const chunkCount = indexedFiles.reduce((sum, file) => sum + file.chunkCount, 0);
|
|
114
|
+
const previousPaths = new Set(previousIndexedFiles.map((file) => file.relativePath));
|
|
115
|
+
const currentPaths = new Set(files.map((file) => file.relativePath));
|
|
116
|
+
const replacePaths = [
|
|
117
|
+
...filesToIndex.map((file) => file.relativePath),
|
|
118
|
+
...[...previousPaths].filter((relativePath) => !currentPaths.has(relativePath)),
|
|
119
|
+
];
|
|
120
|
+
const writeResult = !canReuse || chunkCount === 0
|
|
121
|
+
? await writeRows(rows, config)
|
|
122
|
+
: replacePaths.length > 0
|
|
123
|
+
? await updateRows(rows, replacePaths, config)
|
|
124
|
+
: { vectorIndexWarning: null, lexicalIndexWarning: null };
|
|
125
|
+
if (chunkCount > 0) {
|
|
126
|
+
const firstRow = rows[0] ?? (await firstStoredRow(config));
|
|
96
127
|
if (!firstRow) {
|
|
97
128
|
throw new Error("Cannot write an index manifest without indexed rows.");
|
|
98
129
|
}
|
|
@@ -102,35 +133,55 @@ export async function ingest(options = {}) {
|
|
|
102
133
|
ragmirVersion: VERSION,
|
|
103
134
|
embeddingProvider: config.embeddingProvider,
|
|
104
135
|
embeddingModel: config.embeddingModel,
|
|
136
|
+
indexPolicyFingerprint: policyFingerprint,
|
|
105
137
|
vectorDimension: firstRow.vector.length,
|
|
106
138
|
vectorDistanceMetric: VECTOR_DISTANCE_METRIC,
|
|
107
139
|
chunkSize: config.chunkSize,
|
|
108
140
|
chunkOverlap: config.chunkOverlap,
|
|
109
|
-
fileCount:
|
|
110
|
-
chunkCount
|
|
141
|
+
fileCount: indexedFiles.length,
|
|
142
|
+
chunkCount,
|
|
143
|
+
indexedFiles,
|
|
111
144
|
}, config);
|
|
112
145
|
}
|
|
113
|
-
await writeEmptyTextFiles(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
146
|
+
await writeEmptyTextFiles([
|
|
147
|
+
...reusableEmptyFiles,
|
|
148
|
+
...emptyTextFiles.flatMap((relativePath) => {
|
|
149
|
+
const file = currentFiles.get(relativePath);
|
|
150
|
+
return file
|
|
151
|
+
? [
|
|
152
|
+
{
|
|
153
|
+
relativePath,
|
|
154
|
+
checksum: file.checksum,
|
|
155
|
+
bytes: file.bytes,
|
|
156
|
+
mtimeMs: file.mtimeMs,
|
|
157
|
+
},
|
|
158
|
+
]
|
|
159
|
+
: [];
|
|
160
|
+
}),
|
|
161
|
+
], config);
|
|
117
162
|
await recordAccess(config, {
|
|
118
163
|
action: "ingest",
|
|
119
|
-
resultCount:
|
|
164
|
+
resultCount: chunkCount,
|
|
120
165
|
redactions: totalRedactions(redactionCounts),
|
|
121
166
|
});
|
|
122
167
|
return {
|
|
123
|
-
indexedFiles:
|
|
168
|
+
indexedFiles: indexedFiles.length,
|
|
124
169
|
rebuiltFiles: new Set(rows.map((row) => row.relativePath)).size,
|
|
125
170
|
reusedFiles: reusableFiles.size,
|
|
126
|
-
|
|
171
|
+
policyRebuild,
|
|
172
|
+
chunks: chunkCount,
|
|
127
173
|
discoveredFiles: inventory.discoveredFiles,
|
|
128
174
|
supportedFiles: files.length,
|
|
175
|
+
supportedBytes: inventoryMetrics.supportedBytes,
|
|
176
|
+
largestFileBytes: inventoryMetrics.largestFileBytes,
|
|
129
177
|
skippedFiles: inventory.skippedFiles.length + emptyTextFiles.length,
|
|
130
178
|
unsupportedFiles: countSkippedByReason(inventory.skippedFiles, "unsupported-extension"),
|
|
131
179
|
oversizedFiles: countSkippedByReason(inventory.skippedFiles, "oversized"),
|
|
132
180
|
sensitiveFiles: countSkippedByReason(inventory.skippedFiles, "sensitive-name"),
|
|
133
|
-
emptyTextFiles
|
|
181
|
+
emptyTextFiles: [
|
|
182
|
+
...reusableEmptyFiles.map((file) => file.relativePath),
|
|
183
|
+
...emptyTextFiles,
|
|
184
|
+
].sort(),
|
|
134
185
|
unsupportedExtensions: summarizeUnsupportedExtensions(inventory.skippedFiles),
|
|
135
186
|
redactions: totalRedactions(redactionCounts),
|
|
136
187
|
vectorIndexWarning: writeResult.vectorIndexWarning,
|
|
@@ -138,36 +189,41 @@ export async function ingest(options = {}) {
|
|
|
138
189
|
errors,
|
|
139
190
|
};
|
|
140
191
|
}
|
|
141
|
-
function
|
|
142
|
-
const
|
|
192
|
+
function indexedFileRecords(rows) {
|
|
193
|
+
const records = new Map();
|
|
143
194
|
for (const row of rows) {
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
195
|
+
const current = records.get(row.relativePath);
|
|
196
|
+
records.set(row.relativePath, {
|
|
197
|
+
relativePath: row.relativePath,
|
|
198
|
+
checksum: row.checksum,
|
|
199
|
+
chunkCount: (current?.chunkCount ?? 0) + 1,
|
|
200
|
+
bytes: row.bytes,
|
|
201
|
+
mtimeMs: row.mtimeMs,
|
|
202
|
+
});
|
|
147
203
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (fileRows.every((row) => row.checksum === file.checksum &&
|
|
155
|
-
row.embeddingProvider === config.embeddingProvider &&
|
|
156
|
-
row.embeddingModel === config.embeddingModel)) {
|
|
157
|
-
reusableRows.push(...fileRows);
|
|
158
|
-
}
|
|
204
|
+
return [...records.values()];
|
|
205
|
+
}
|
|
206
|
+
async function firstStoredRow(config) {
|
|
207
|
+
const table = await openRowsTable(config);
|
|
208
|
+
if (!table) {
|
|
209
|
+
return null;
|
|
159
210
|
}
|
|
160
|
-
|
|
211
|
+
const [row] = (await table.query().limit(1).toArray());
|
|
212
|
+
return row ?? null;
|
|
161
213
|
}
|
|
162
214
|
export async function audit(cwd = process.cwd()) {
|
|
163
215
|
const config = await loadConfig(cwd);
|
|
164
216
|
const inventory = await inventorySourceFiles(config);
|
|
165
217
|
const files = inventory.supportedFiles;
|
|
218
|
+
const inventoryMetrics = sourceInventoryMetrics(files);
|
|
166
219
|
const supportedFiles = files.map((file) => file.relativePath);
|
|
167
220
|
const table = await openRowsTable(config);
|
|
168
221
|
const emptyTextFiles = await currentEmptyTextFiles(config, files);
|
|
169
222
|
if (!table) {
|
|
170
223
|
return {
|
|
224
|
+
discoveredFiles: inventory.discoveredFiles,
|
|
225
|
+
supportedBytes: inventoryMetrics.supportedBytes,
|
|
226
|
+
largestFileBytes: inventoryMetrics.largestFileBytes,
|
|
171
227
|
indexedFiles: [],
|
|
172
228
|
supportedFiles,
|
|
173
229
|
skippedFiles: inventory.skippedFiles,
|
|
@@ -179,7 +235,7 @@ export async function audit(cwd = process.cwd()) {
|
|
|
179
235
|
totalChunks: 0,
|
|
180
236
|
};
|
|
181
237
|
}
|
|
182
|
-
const rows = (await table.query().
|
|
238
|
+
const rows = (await table.query().select(["relativePath", "checksum"]).toArray());
|
|
183
239
|
const counts = new Map();
|
|
184
240
|
const checksums = new Map();
|
|
185
241
|
for (const row of rows) {
|
|
@@ -194,6 +250,9 @@ export async function audit(cwd = process.cwd()) {
|
|
|
194
250
|
const indexedSet = new Set(counts.keys());
|
|
195
251
|
const currentChecksums = new Map(files.map((file) => [file.relativePath, file.checksum]));
|
|
196
252
|
return {
|
|
253
|
+
discoveredFiles: inventory.discoveredFiles,
|
|
254
|
+
supportedBytes: inventoryMetrics.supportedBytes,
|
|
255
|
+
largestFileBytes: inventoryMetrics.largestFileBytes,
|
|
197
256
|
indexedFiles: [...counts.entries()]
|
|
198
257
|
.sort(([a], [b]) => a.localeCompare(b))
|
|
199
258
|
.map(([source, chunks]) => ({ source, chunks })),
|
|
@@ -216,6 +275,15 @@ export async function audit(cwd = process.cwd()) {
|
|
|
216
275
|
totalChunks: rows.length,
|
|
217
276
|
};
|
|
218
277
|
}
|
|
278
|
+
function sourceInventoryMetrics(files) {
|
|
279
|
+
let supportedBytes = 0;
|
|
280
|
+
let largestFileBytes = 0;
|
|
281
|
+
for (const file of files) {
|
|
282
|
+
supportedBytes += file.bytes;
|
|
283
|
+
largestFileBytes = Math.max(largestFileBytes, file.bytes);
|
|
284
|
+
}
|
|
285
|
+
return { supportedBytes, largestFileBytes };
|
|
286
|
+
}
|
|
219
287
|
function sourceDiagnostics(supportedFiles, skippedFiles) {
|
|
220
288
|
const relativePaths = [
|
|
221
289
|
...supportedFiles.map((file) => file.relativePath),
|
|
@@ -229,17 +297,10 @@ function sourceDiagnostics(supportedFiles, skippedFiles) {
|
|
|
229
297
|
}
|
|
230
298
|
function duplicateCandidates(files) {
|
|
231
299
|
const byChecksum = new Map();
|
|
232
|
-
const byLogicalName = new Map();
|
|
233
300
|
for (const file of files) {
|
|
234
301
|
appendGrouped(byChecksum, `sha256:${file.checksum.slice(0, 12)}`, file.relativePath);
|
|
235
|
-
const logicalName = normalizedLogicalName(file.relativePath);
|
|
236
|
-
if (logicalName.length >= 6) {
|
|
237
|
-
appendGrouped(byLogicalName, `name:${logicalName}`, file.relativePath);
|
|
238
|
-
}
|
|
239
302
|
}
|
|
240
|
-
|
|
241
|
-
const logical = groupedDuplicates(byLogicalName).filter((candidate) => !exact.some((exactCandidate) => candidate.files.every((file) => exactCandidate.files.includes(file))));
|
|
242
|
-
return [...exact, ...logical]
|
|
303
|
+
return groupedDuplicates(byChecksum)
|
|
243
304
|
.sort((a, b) => b.files.length - a.files.length || a.key.localeCompare(b.key))
|
|
244
305
|
.slice(0, MAX_SOURCE_DIAGNOSTIC_ITEMS);
|
|
245
306
|
}
|
|
@@ -260,9 +321,6 @@ function groupedDuplicates(groups) {
|
|
|
260
321
|
.filter(([, files]) => files.length > 1)
|
|
261
322
|
.map(([key, files]) => ({ key, files: [...new Set(files)].sort() }));
|
|
262
323
|
}
|
|
263
|
-
function normalizedLogicalName(relativePath) {
|
|
264
|
-
return normalizeForMatch(path.basename(relativePath, path.extname(relativePath))).replace(/[^a-z0-9]+/gu, "");
|
|
265
|
-
}
|
|
266
324
|
async function currentEmptyTextFiles(config, files) {
|
|
267
325
|
const currentChecksums = new Map(files.map((file) => [file.relativePath, file.checksum]));
|
|
268
326
|
const emptyTextFiles = new Set();
|
package/dist/ingest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"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"}
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAOA,wBAAsB,WAAW,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CxE"}
|
package/dist/init.js
CHANGED
|
@@ -1,27 +1,39 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
-
import {
|
|
2
|
+
import { writeFile } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { CONFIG_PATH, DEFAULT_CONFIG, LEGACY_CONFIG_PATH, RAGMIR_DIR } from "./defaults.js";
|
|
5
5
|
import { ensureRagmirGitignore } from "./gitignore.js";
|
|
6
|
+
import { ensurePrivateDirectory, hardenPrivateFile } from "./permissions.js";
|
|
6
7
|
export async function initProject(cwd = process.cwd()) {
|
|
7
8
|
const root = path.resolve(cwd);
|
|
8
9
|
const ragmirDir = path.join(root, RAGMIR_DIR);
|
|
9
10
|
const rawDir = path.join(root, DEFAULT_CONFIG.rawDir);
|
|
10
11
|
const created = [];
|
|
11
|
-
await
|
|
12
|
+
await ensurePrivateDirectory(ragmirDir);
|
|
13
|
+
if (existsSync(rawDir)) {
|
|
14
|
+
await ensurePrivateDirectory(rawDir);
|
|
15
|
+
}
|
|
12
16
|
const configPath = path.join(root, CONFIG_PATH);
|
|
13
17
|
const legacyConfigPath = path.join(root, LEGACY_CONFIG_PATH);
|
|
14
18
|
const hasConfig = existsSync(configPath);
|
|
15
19
|
const hasLegacyConfig = existsSync(legacyConfigPath);
|
|
20
|
+
if (hasConfig) {
|
|
21
|
+
await hardenPrivateFile(configPath);
|
|
22
|
+
}
|
|
23
|
+
if (hasLegacyConfig) {
|
|
24
|
+
await hardenPrivateFile(legacyConfigPath);
|
|
25
|
+
}
|
|
16
26
|
if (!hasConfig && !hasLegacyConfig) {
|
|
17
|
-
await
|
|
27
|
+
await ensurePrivateDirectory(rawDir);
|
|
18
28
|
await writeFile(configPath, `${JSON.stringify(DEFAULT_CONFIG, null, 2)}\n`, "utf8");
|
|
29
|
+
await hardenPrivateFile(configPath);
|
|
19
30
|
created.push(path.relative(root, configPath));
|
|
20
31
|
}
|
|
21
32
|
if (!hasConfig && !hasLegacyConfig) {
|
|
22
33
|
const readmePath = path.join(rawDir, "README.md");
|
|
23
34
|
if (!existsSync(readmePath)) {
|
|
24
35
|
await writeFile(readmePath, "# Ragmir raw documents\n\nPut local documents to ingest here. Keep this folder ignored by Git.\n", "utf8");
|
|
36
|
+
await hardenPrivateFile(readmePath);
|
|
25
37
|
created.push(path.relative(root, readmePath));
|
|
26
38
|
}
|
|
27
39
|
}
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE5E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACrD,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;IACxC,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;IACpD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IAC3C,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACnF,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAA;QACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,MAAM,SAAS,CACb,UAAU,EACV,kGAAkG,EAClG,MAAM,CACP,CAAA;YACD,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAA;YACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/dist/limits.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Config, IngestionLimitsReport } from "./types.js";
|
|
2
|
+
export declare const MAX_OFFICE_XML_ENTRY_BYTES = 25000000;
|
|
3
|
+
export declare const MAX_OFFICE_TEXT_ENTRY_COUNT = 512;
|
|
4
|
+
export declare const MAX_OFFICE_XML_TOTAL_BYTES = 50000000;
|
|
5
|
+
export declare const MAX_EXTERNAL_TEXT_STDIO_BYTES = 25000000;
|
|
6
|
+
export declare const MAX_PDF_PAGES = 1000;
|
|
7
|
+
export declare const MAX_PDF_TEXT_CHARACTERS = 25000000;
|
|
8
|
+
export declare function ingestionLimits(config: Pick<Config, "maxFileBytes">): IngestionLimitsReport;
|
|
9
|
+
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAE/D,eAAO,MAAM,0BAA0B,WAAa,CAAA;AACpD,eAAO,MAAM,2BAA2B,MAAM,CAAA;AAC9C,eAAO,MAAM,0BAA0B,WAAa,CAAA;AACpD,eAAO,MAAM,6BAA6B,WAAa,CAAA;AACvD,eAAO,MAAM,aAAa,OAAQ,CAAA;AAClC,eAAO,MAAM,uBAAuB,WAAa,CAAA;AAEjD,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,qBAAqB,CAiB3F"}
|
package/dist/limits.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const MAX_OFFICE_XML_ENTRY_BYTES = 25_000_000;
|
|
2
|
+
export const MAX_OFFICE_TEXT_ENTRY_COUNT = 512;
|
|
3
|
+
export const MAX_OFFICE_XML_TOTAL_BYTES = 50_000_000;
|
|
4
|
+
export const MAX_EXTERNAL_TEXT_STDIO_BYTES = 25_000_000;
|
|
5
|
+
export const MAX_PDF_PAGES = 1_000;
|
|
6
|
+
export const MAX_PDF_TEXT_CHARACTERS = 25_000_000;
|
|
7
|
+
export function ingestionLimits(config) {
|
|
8
|
+
return {
|
|
9
|
+
maxFileBytes: config.maxFileBytes,
|
|
10
|
+
maxFiles: null,
|
|
11
|
+
maxCorpusBytes: null,
|
|
12
|
+
maxPdfPages: MAX_PDF_PAGES,
|
|
13
|
+
maxPdfTextCharacters: MAX_PDF_TEXT_CHARACTERS,
|
|
14
|
+
maxOfficeTextEntries: MAX_OFFICE_TEXT_ENTRY_COUNT,
|
|
15
|
+
maxOfficeEntryBytes: MAX_OFFICE_XML_ENTRY_BYTES,
|
|
16
|
+
maxOfficeTotalTextBytes: MAX_OFFICE_XML_TOTAL_BYTES,
|
|
17
|
+
maxExternalTextOutputBytes: MAX_EXTERNAL_TEXT_STDIO_BYTES,
|
|
18
|
+
notes: [
|
|
19
|
+
"Ragmir has no hard file-count or total-corpus-size limit; available disk, memory, embedding throughput, and exact-search latency are the practical constraints.",
|
|
20
|
+
"Files larger than maxFileBytes are skipped before parsing and reported by ingest, audit, and doctor.",
|
|
21
|
+
"PDF, Office/archive, and external extractor limits are hard safety blocks and surface as ingestion errors.",
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAA;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAA;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAA;AACpD,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAA;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAA;AAEjD,MAAM,UAAU,eAAe,CAAC,MAAoC;IAClE,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,aAAa;QAC1B,oBAAoB,EAAE,uBAAuB;QAC7C,oBAAoB,EAAE,2BAA2B;QACjD,mBAAmB,EAAE,0BAA0B;QAC/C,uBAAuB,EAAE,0BAA0B;QACnD,0BAA0B,EAAE,6BAA6B;QACzD,KAAK,EAAE;YACL,iKAAiK;YACjK,sGAAsG;YACtG,4GAA4G;SAC7G;KACF,CAAA;AACH,CAAC"}
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export declare function serveMcp(cwd?: string): Promise<void>;
|
|
2
2
|
export declare function resolveMcpProjectRoot(env?: NodeJS.ProcessEnv, fallback?: string): string;
|
|
3
|
-
export declare function searchOptions(cwd: string, topK: number | undefined, contextRadius?: number | undefined): Promise<{
|
|
3
|
+
export declare function searchOptions(cwd: string, topK: number | undefined, contextRadius?: number | undefined, includePaths?: string[] | undefined, excludePaths?: string[] | undefined): Promise<{
|
|
4
4
|
cwd: string;
|
|
5
5
|
topK?: number;
|
|
6
6
|
contextRadius?: number;
|
|
7
|
+
includePaths?: string[];
|
|
8
|
+
excludePaths?: string[];
|
|
7
9
|
}>;
|
|
8
10
|
export declare function projectRelativeGoldenPath(cwd: string, goldenPath: string): string;
|
|
9
11
|
//# sourceMappingURL=mcp.d.ts.map
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAqDA,wBAAsB,QAAQ,CAAC,GAAG,SAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmN3E;AAED,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,SAAgB,GACvB,MAAM,CAYR;AAaD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,EACnC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,GAClC,OAAO,CAAC;IACT,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB,CAAC,CAmBD;AAmBD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQjF"}
|
package/dist/mcp.js
CHANGED
|
@@ -8,6 +8,7 @@ import { findProjectConfig, loadConfig } from "./config.js";
|
|
|
8
8
|
import { RAGMIR_PROJECT_ROOT_ENV } from "./defaults.js";
|
|
9
9
|
import { evaluateGoldenQueries } from "./evaluate.js";
|
|
10
10
|
import { audit } from "./ingest.js";
|
|
11
|
+
import { ingestionLimits } from "./limits.js";
|
|
11
12
|
import { routePrompt } from "./prompt-routing.js";
|
|
12
13
|
import { ask, search } from "./query.js";
|
|
13
14
|
import { compactResearchReport, compactSearchResults, research } from "./research.js";
|
|
@@ -18,12 +19,16 @@ const queryToolInputSchema = z.object({
|
|
|
18
19
|
query: z.string().min(1),
|
|
19
20
|
topK: z.number().int().positive().optional(),
|
|
20
21
|
contextRadius: z.number().int().min(0).optional(),
|
|
22
|
+
includePaths: z.array(z.string().min(1).max(500)).max(20).optional(),
|
|
23
|
+
excludePaths: z.array(z.string().min(1).max(500)).max(20).optional(),
|
|
21
24
|
});
|
|
22
25
|
const researchToolInputSchema = z.object({
|
|
23
26
|
query: z.string().min(1),
|
|
24
27
|
topK: z.number().int().positive().optional(),
|
|
25
28
|
includeCode: z.boolean().optional(),
|
|
26
29
|
compact: z.boolean().optional(),
|
|
30
|
+
includePaths: z.array(z.string().min(1).max(500)).max(20).optional(),
|
|
31
|
+
excludePaths: z.array(z.string().min(1).max(500)).max(20).optional(),
|
|
27
32
|
});
|
|
28
33
|
const searchToolInputSchema = queryToolInputSchema.extend({
|
|
29
34
|
compact: z.boolean().optional(),
|
|
@@ -51,14 +56,24 @@ export async function serveMcp(cwd = resolveMcpProjectRoot()) {
|
|
|
51
56
|
}, async () => {
|
|
52
57
|
const config = await loadConfig(cwd);
|
|
53
58
|
const chunksIndexed = await countRows(config);
|
|
59
|
+
const strict = config.privacyProfile === "strict";
|
|
54
60
|
const output = {
|
|
55
|
-
projectRoot: config.projectRoot,
|
|
56
|
-
rawDir: config.rawDir,
|
|
57
|
-
storageDir:
|
|
58
|
-
|
|
61
|
+
projectRoot: strict ? "." : config.projectRoot,
|
|
62
|
+
rawDir: strict ? path.relative(config.projectRoot, config.rawDir) : config.rawDir,
|
|
63
|
+
storageDir: strict
|
|
64
|
+
? path.relative(config.projectRoot, config.storageDir)
|
|
65
|
+
: config.storageDir,
|
|
66
|
+
sourcesFile: strict
|
|
67
|
+
? path.relative(config.projectRoot, config.sourcesFile)
|
|
68
|
+
: config.sourcesFile,
|
|
69
|
+
privacyProfile: config.privacyProfile,
|
|
70
|
+
retrievalProfile: config.retrievalProfile,
|
|
59
71
|
embeddingProvider: config.embeddingProvider,
|
|
60
72
|
embeddingModel: config.embeddingModel,
|
|
61
|
-
|
|
73
|
+
embeddingModelRevision: config.embeddingModelRevision,
|
|
74
|
+
embeddingModelPath: strict
|
|
75
|
+
? path.relative(config.projectRoot, config.embeddingModelPath)
|
|
76
|
+
: config.embeddingModelPath,
|
|
62
77
|
transformersAllowRemoteModels: config.transformersAllowRemoteModels,
|
|
63
78
|
llmGeneration: false,
|
|
64
79
|
redactionEnabled: config.redaction.enabled,
|
|
@@ -73,6 +88,7 @@ export async function serveMcp(cwd = resolveMcpProjectRoot()) {
|
|
|
73
88
|
imageOcrTimeoutMs: config.imageOcrTimeoutMs,
|
|
74
89
|
legacyWordCommand: config.legacyWordCommand,
|
|
75
90
|
legacyWordTimeoutMs: config.legacyWordTimeoutMs,
|
|
91
|
+
ingestionLimits: ingestionLimits(config),
|
|
76
92
|
chunksIndexed,
|
|
77
93
|
};
|
|
78
94
|
return textResult(output);
|
|
@@ -86,26 +102,43 @@ export async function serveMcp(cwd = resolveMcpProjectRoot()) {
|
|
|
86
102
|
title: "Ragmir Search",
|
|
87
103
|
description: "Retrieve relevant passages from the local Ragmir knowledge base.",
|
|
88
104
|
inputSchema: searchToolInputSchema,
|
|
89
|
-
}, async ({ query, topK, contextRadius, compact }) => {
|
|
90
|
-
const
|
|
91
|
-
|
|
105
|
+
}, async ({ query, topK, contextRadius, compact, includePaths, excludePaths }) => {
|
|
106
|
+
const config = await loadConfig(cwd);
|
|
107
|
+
const results = await search(query, await searchOptions(cwd, topK, contextRadius, includePaths, excludePaths));
|
|
108
|
+
const compactOutput = compact ?? config.privacyProfile === "strict";
|
|
109
|
+
return textResult(compactOutput ? compactSearchResults(results) : results);
|
|
92
110
|
});
|
|
93
111
|
server.registerTool("ragmir_ask", {
|
|
94
112
|
title: "Ragmir Ask",
|
|
95
113
|
description: "Return cited retrieval context for a question without calling an LLM.",
|
|
96
114
|
inputSchema: queryToolInputSchema,
|
|
97
|
-
}, async ({ query, topK, contextRadius }) =>
|
|
115
|
+
}, async ({ query, topK, contextRadius, includePaths, excludePaths }) => {
|
|
116
|
+
const config = await loadConfig(cwd);
|
|
117
|
+
const options = await searchOptions(cwd, topK, contextRadius, includePaths, excludePaths);
|
|
118
|
+
if (config.privacyProfile === "strict") {
|
|
119
|
+
const results = await search(query, options);
|
|
120
|
+
return textResult({
|
|
121
|
+
answer: "Strict privacy profile returns compact cited retrieval only.",
|
|
122
|
+
sources: compactSearchResults(results),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return textResult(await ask(query, options));
|
|
126
|
+
});
|
|
98
127
|
server.registerTool("ragmir_research", {
|
|
99
128
|
title: "Ragmir Research",
|
|
100
129
|
description: "Run an audit-backed multi-query research pass with cited evidence and optional code matches.",
|
|
101
130
|
inputSchema: researchToolInputSchema,
|
|
102
|
-
}, async ({ query, topK, includeCode, compact }) => {
|
|
103
|
-
const
|
|
131
|
+
}, async ({ query, topK, includeCode, compact, includePaths, excludePaths }) => {
|
|
132
|
+
const config = await loadConfig(cwd);
|
|
133
|
+
const options = await searchOptions(cwd, topK, undefined, includePaths, excludePaths);
|
|
104
134
|
const researchOptions = { cwd };
|
|
105
135
|
addOption(researchOptions, "topK", options.topK);
|
|
106
136
|
addOption(researchOptions, "includeCode", includeCode);
|
|
137
|
+
addOption(researchOptions, "includePaths", options.includePaths);
|
|
138
|
+
addOption(researchOptions, "excludePaths", options.excludePaths);
|
|
107
139
|
const result = await research(query, researchOptions);
|
|
108
|
-
|
|
140
|
+
const compactOutput = compact ?? config.privacyProfile === "strict";
|
|
141
|
+
return textResult(compactOutput ? compactResearchReport(result) : result);
|
|
109
142
|
});
|
|
110
143
|
server.registerTool("ragmir_audit", {
|
|
111
144
|
title: "Ragmir Audit",
|
|
@@ -132,7 +165,29 @@ export async function serveMcp(cwd = resolveMcpProjectRoot()) {
|
|
|
132
165
|
title: "Ragmir Security Audit",
|
|
133
166
|
description: "Show local privacy, provider, redaction, MCP, and gitignore posture.",
|
|
134
167
|
inputSchema: z.object({}),
|
|
135
|
-
}, async () =>
|
|
168
|
+
}, async () => {
|
|
169
|
+
const config = await loadConfig(cwd);
|
|
170
|
+
const report = await securityAudit(cwd);
|
|
171
|
+
if (config.privacyProfile !== "strict") {
|
|
172
|
+
return textResult(report);
|
|
173
|
+
}
|
|
174
|
+
return textResult({
|
|
175
|
+
...report,
|
|
176
|
+
projectRoot: ".",
|
|
177
|
+
providers: {
|
|
178
|
+
...report.providers,
|
|
179
|
+
embeddingModelPath: path.relative(config.projectRoot, report.providers.embeddingModelPath),
|
|
180
|
+
},
|
|
181
|
+
accessLog: {
|
|
182
|
+
...report.accessLog,
|
|
183
|
+
path: path.relative(config.projectRoot, report.accessLog.path),
|
|
184
|
+
},
|
|
185
|
+
storage: {
|
|
186
|
+
...report.storage,
|
|
187
|
+
path: path.relative(config.projectRoot, report.storage.path),
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
});
|
|
136
191
|
server.registerTool("ragmir_usage_report", {
|
|
137
192
|
title: "Ragmir Usage Report",
|
|
138
193
|
description: "Summarize the metadata-only local access log.",
|
|
@@ -167,7 +222,7 @@ function textResult(value) {
|
|
|
167
222
|
],
|
|
168
223
|
};
|
|
169
224
|
}
|
|
170
|
-
export async function searchOptions(cwd, topK, contextRadius) {
|
|
225
|
+
export async function searchOptions(cwd, topK, contextRadius, includePaths, excludePaths) {
|
|
171
226
|
const config = await loadConfig(cwd);
|
|
172
227
|
const boundedTopK = Math.min(topK ?? config.topK, config.mcpMaxTopK);
|
|
173
228
|
const boundedContextRadius = contextRadius === undefined ? undefined : Math.min(Math.max(0, contextRadius), 3);
|
|
@@ -176,6 +231,8 @@ export async function searchOptions(cwd, topK, contextRadius) {
|
|
|
176
231
|
topK: boundedTopK,
|
|
177
232
|
};
|
|
178
233
|
addOption(result, "contextRadius", boundedContextRadius);
|
|
234
|
+
addOption(result, "includePaths", includePaths);
|
|
235
|
+
addOption(result, "excludePaths", excludePaths);
|
|
179
236
|
return result;
|
|
180
237
|
}
|
|
181
238
|
async function evaluationOptions(cwd, goldenPath, topK) {
|