@coreyuan/vector-mind 1.0.49 → 1.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +67 -60
  2. package/dist/activity-log.d.ts +19 -0
  3. package/dist/activity-log.js +106 -0
  4. package/dist/activity-log.js.map +1 -0
  5. package/dist/builtin-conventions.d.ts +2 -1
  6. package/dist/builtin-conventions.js +5 -0
  7. package/dist/builtin-conventions.js.map +1 -1
  8. package/dist/config.d.ts +28 -0
  9. package/dist/config.js +189 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/database-runtime.d.ts +54 -0
  12. package/dist/database-runtime.js +512 -0
  13. package/dist/database-runtime.js.map +1 -0
  14. package/dist/development-warnings.d.ts +93 -0
  15. package/dist/development-warnings.js +589 -0
  16. package/dist/development-warnings.js.map +1 -0
  17. package/dist/file-indexing.d.ts +22 -0
  18. package/dist/file-indexing.js +243 -0
  19. package/dist/file-indexing.js.map +1 -0
  20. package/dist/grep.d.ts +64 -0
  21. package/dist/grep.js +475 -0
  22. package/dist/grep.js.map +1 -0
  23. package/dist/index.js +167 -7279
  24. package/dist/index.js.map +1 -1
  25. package/dist/large-file-split.d.ts +29 -0
  26. package/dist/large-file-split.js +146 -0
  27. package/dist/large-file-split.js.map +1 -0
  28. package/dist/memory-maintenance.d.ts +80 -0
  29. package/dist/memory-maintenance.js +537 -0
  30. package/dist/memory-maintenance.js.map +1 -0
  31. package/dist/memory-mutations.d.ts +23 -0
  32. package/dist/memory-mutations.js +83 -0
  33. package/dist/memory-mutations.js.map +1 -0
  34. package/dist/memory-recall.d.ts +93 -0
  35. package/dist/memory-recall.js +796 -0
  36. package/dist/memory-recall.js.map +1 -0
  37. package/dist/path-filters.d.ts +1 -0
  38. package/dist/path-filters.js +27 -0
  39. package/dist/path-filters.js.map +1 -0
  40. package/dist/path-rules.d.ts +12 -0
  41. package/dist/path-rules.js +208 -0
  42. package/dist/path-rules.js.map +1 -0
  43. package/dist/pending-changes.d.ts +22 -0
  44. package/dist/pending-changes.js +166 -0
  45. package/dist/pending-changes.js.map +1 -0
  46. package/dist/project-files.d.ts +66 -0
  47. package/dist/project-files.js +215 -0
  48. package/dist/project-files.js.map +1 -0
  49. package/dist/root.d.ts +15 -0
  50. package/dist/root.js +191 -0
  51. package/dist/root.js.map +1 -0
  52. package/dist/rtk-tools.d.ts +20 -0
  53. package/dist/rtk-tools.js +318 -0
  54. package/dist/rtk-tools.js.map +1 -0
  55. package/dist/server-instructions.d.ts +1 -0
  56. package/dist/server-instructions.js +88 -0
  57. package/dist/server-instructions.js.map +1 -0
  58. package/dist/symbols.d.ts +2 -0
  59. package/dist/symbols.js +159 -0
  60. package/dist/symbols.js.map +1 -0
  61. package/dist/token-savings.d.ts +40 -0
  62. package/dist/token-savings.js +50 -0
  63. package/dist/token-savings.js.map +1 -0
  64. package/dist/tool-catalog.d.ts +18 -0
  65. package/dist/tool-catalog.js +243 -0
  66. package/dist/tool-catalog.js.map +1 -0
  67. package/dist/tool-handlers/context-recovery.d.ts +6 -0
  68. package/dist/tool-handlers/context-recovery.js +319 -0
  69. package/dist/tool-handlers/context-recovery.js.map +1 -0
  70. package/dist/tool-handlers/context.d.ts +34 -0
  71. package/dist/tool-handlers/context.js +2 -0
  72. package/dist/tool-handlers/context.js.map +1 -0
  73. package/dist/tool-handlers/diagnostics.d.ts +8 -0
  74. package/dist/tool-handlers/diagnostics.js +114 -0
  75. package/dist/tool-handlers/diagnostics.js.map +1 -0
  76. package/dist/tool-handlers/files.d.ts +8 -0
  77. package/dist/tool-handlers/files.js +493 -0
  78. package/dist/tool-handlers/files.js.map +1 -0
  79. package/dist/tool-handlers/large-files.d.ts +4 -0
  80. package/dist/tool-handlers/large-files.js +139 -0
  81. package/dist/tool-handlers/large-files.js.map +1 -0
  82. package/dist/tool-handlers/maintenance.d.ts +4 -0
  83. package/dist/tool-handlers/maintenance.js +160 -0
  84. package/dist/tool-handlers/maintenance.js.map +1 -0
  85. package/dist/tool-handlers/memory-diagnostics.d.ts +5 -0
  86. package/dist/tool-handlers/memory-diagnostics.js +509 -0
  87. package/dist/tool-handlers/memory-diagnostics.js.map +1 -0
  88. package/dist/tool-handlers/memory.d.ts +6 -0
  89. package/dist/tool-handlers/memory.js +334 -0
  90. package/dist/tool-handlers/memory.js.map +1 -0
  91. package/dist/tool-handlers/notes-decisions.d.ts +7 -0
  92. package/dist/tool-handlers/notes-decisions.js +169 -0
  93. package/dist/tool-handlers/notes-decisions.js.map +1 -0
  94. package/dist/tool-handlers/requirements.d.ts +7 -0
  95. package/dist/tool-handlers/requirements.js +357 -0
  96. package/dist/tool-handlers/requirements.js.map +1 -0
  97. package/dist/tool-handlers.d.ts +4 -0
  98. package/dist/tool-handlers.js +105 -0
  99. package/dist/tool-handlers.js.map +1 -0
  100. package/dist/tool-output.d.ts +213 -0
  101. package/dist/tool-output.js +278 -0
  102. package/dist/tool-output.js.map +1 -0
  103. package/dist/tool-schemas.d.ts +434 -0
  104. package/dist/tool-schemas.js +328 -0
  105. package/dist/tool-schemas.js.map +1 -0
  106. package/dist/types.d.ts +61 -0
  107. package/dist/types.js +2 -0
  108. package/dist/types.js.map +1 -0
  109. package/docs/capability-matrix.md +43 -0
  110. package/package.json +11 -10
  111. package/skills/vector-mind-autopilot/SKILL.md +149 -0
  112. package/skills/vector-mind-autopilot/references/claude-desktop-mcp-config.json +9 -0
  113. package/skills/vector-mind-autopilot/references/claude-project-instructions.md +47 -0
  114. package/skills/vector-mind-autopilot/references/universal-system-prompt.md +78 -0
package/dist/grep.js ADDED
@@ -0,0 +1,475 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { spawnSync } from "node:child_process";
4
+ import { RIPGREP_MAX_BUFFER_BYTES, RIPGREP_RESOLVE_TIMEOUT_MS, RIPGREP_SEARCH_TIMEOUT_MS, } from "./config.js";
5
+ import { IGNORED_PATH_SEGMENTS, NOISE_FILE_BASENAMES, NOISE_FILE_SUFFIXES, shouldIgnoreContentFile, shouldIgnoreDbFilePath, } from "./path-rules.js";
6
+ import { passesPathFilters } from "./path-filters.js";
7
+ function escapeRegExp(literal) {
8
+ return literal.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
9
+ }
10
+ let cachedRipgrepCommand;
11
+ let cachedRipgrepResolveError = null;
12
+ export function hasUppercaseAscii(s) {
13
+ return /[A-Z]/.test(s);
14
+ }
15
+ function extractLongestLiteralFromRegex(pattern) {
16
+ // Best-effort extraction: pull the longest literal run to use as an indexed candidate hint.
17
+ // This is intentionally conservative; if we can't find a reasonable literal anchor, callers
18
+ // should pass `literal_hint` or narrow with include_paths.
19
+ let best = "";
20
+ let cur = "";
21
+ let inClass = false;
22
+ const flush = () => {
23
+ if (cur.length > best.length)
24
+ best = cur;
25
+ cur = "";
26
+ };
27
+ for (let i = 0; i < pattern.length; i++) {
28
+ const ch = pattern[i] ?? "";
29
+ if (!ch)
30
+ break;
31
+ if (inClass) {
32
+ // Skip until the closing bracket.
33
+ if (ch === "]")
34
+ inClass = false;
35
+ flush();
36
+ continue;
37
+ }
38
+ if (ch === "[") {
39
+ inClass = true;
40
+ flush();
41
+ continue;
42
+ }
43
+ if (ch === "\\") {
44
+ const next = pattern[i + 1] ?? "";
45
+ if (!next) {
46
+ flush();
47
+ continue;
48
+ }
49
+ // Common regex escapes that are NOT literal characters.
50
+ if (/[dDsSwWbB0-9]/.test(next)) {
51
+ flush();
52
+ i += 1;
53
+ continue;
54
+ }
55
+ // Treat \x as literal x (e.g. \( \) \. \\).
56
+ cur += next;
57
+ i += 1;
58
+ continue;
59
+ }
60
+ // Regex metacharacters.
61
+ if (".*+?^$|(){}".includes(ch)) {
62
+ flush();
63
+ continue;
64
+ }
65
+ cur += ch;
66
+ }
67
+ flush();
68
+ return best;
69
+ }
70
+ function buildLineStarts(text) {
71
+ const starts = [0];
72
+ for (let i = 0; i < text.length; i++) {
73
+ if (text.charCodeAt(i) === 10)
74
+ starts.push(i + 1); // '\n'
75
+ }
76
+ return starts;
77
+ }
78
+ function lineIndexForOffset(lineStarts, offset) {
79
+ let lo = 0;
80
+ let hi = lineStarts.length - 1;
81
+ while (lo <= hi) {
82
+ const mid = (lo + hi) >> 1;
83
+ const v = lineStarts[mid] ?? 0;
84
+ if (v <= offset)
85
+ lo = mid + 1;
86
+ else
87
+ hi = mid - 1;
88
+ }
89
+ return Math.max(0, lo - 1);
90
+ }
91
+ function compileGrepRegex(opts) {
92
+ const flags = `${opts.caseSensitive ? "" : "i"}gm`;
93
+ const source = opts.mode === "literal" ? escapeRegExp(opts.query) : opts.query;
94
+ return new RegExp(source, flags);
95
+ }
96
+ function trimGrepText(input, maxChars) {
97
+ if (input.length <= maxChars)
98
+ return input;
99
+ return `${input.slice(0, maxChars)}…`;
100
+ }
101
+ function buildGrepPreviewSnippet(lineText, col, maxChars = 500) {
102
+ const clean = lineText.replace(/\r$/, "");
103
+ if (clean.length <= maxChars)
104
+ return clean;
105
+ const matchIndex = Math.max(0, col - 1);
106
+ let start = Math.max(0, matchIndex - Math.floor(maxChars * 0.35));
107
+ if (start + maxChars > clean.length)
108
+ start = Math.max(0, clean.length - maxChars);
109
+ const end = Math.min(clean.length, start + maxChars);
110
+ let snippet = clean.slice(start, end);
111
+ if (start > 0)
112
+ snippet = `…${snippet}`;
113
+ if (end < clean.length)
114
+ snippet = `${snippet}…`;
115
+ return snippet;
116
+ }
117
+ function extractGrepMatchText(opts) {
118
+ const clean = opts.lineText.replace(/\r$/, "");
119
+ const startIndex = Math.max(0, opts.col - 1);
120
+ if (opts.mode === "literal") {
121
+ const slice = clean.slice(startIndex, startIndex + opts.query.length) || opts.query;
122
+ return trimGrepText(slice, 200);
123
+ }
124
+ try {
125
+ const flags = opts.caseSensitive ? "m" : "im";
126
+ const anchored = new RegExp(opts.query, flags);
127
+ const tail = clean.slice(startIndex);
128
+ const found = anchored.exec(tail);
129
+ if (found?.index === 0 && found[0])
130
+ return trimGrepText(found[0], 200);
131
+ }
132
+ catch { }
133
+ const fallback = clean.slice(startIndex, Math.min(clean.length, startIndex + 200));
134
+ return trimGrepText(fallback || opts.query, 200);
135
+ }
136
+ function toProcessText(value) {
137
+ if (typeof value === "string")
138
+ return value;
139
+ if (value == null)
140
+ return "";
141
+ return value.toString("utf8");
142
+ }
143
+ function formatProcessFailure(result) {
144
+ if (result.error)
145
+ return `${result.error.name}: ${result.error.message}`;
146
+ const stderr = toProcessText(result.stderr).trim();
147
+ if (stderr)
148
+ return stderr;
149
+ const stdout = toProcessText(result.stdout).trim();
150
+ if (stdout)
151
+ return stdout;
152
+ if (typeof result.status === "number")
153
+ return `exit ${result.status}`;
154
+ if (result.signal)
155
+ return `signal ${result.signal}`;
156
+ return "unknown failure";
157
+ }
158
+ function buildRipgrepEnv() {
159
+ const env = { ...process.env };
160
+ delete env.RIPGREP_CONFIG_PATH;
161
+ return env;
162
+ }
163
+ function pushUniqueCandidate(candidates, seen, raw) {
164
+ const value = raw?.trim();
165
+ if (!value || seen.has(value))
166
+ return;
167
+ seen.add(value);
168
+ candidates.push(value);
169
+ }
170
+ function listChildDirsSafe(dirPath) {
171
+ try {
172
+ return fs
173
+ .readdirSync(dirPath, { withFileTypes: true })
174
+ .filter((entry) => entry.isDirectory())
175
+ .map((entry) => path.join(dirPath, entry.name));
176
+ }
177
+ catch {
178
+ return [];
179
+ }
180
+ }
181
+ function collectRipgrepCandidates() {
182
+ const candidates = [];
183
+ const seen = new Set();
184
+ const override = process.env.VECTORMIND_RG_PATH?.trim();
185
+ if (override)
186
+ pushUniqueCandidate(candidates, seen, path.resolve(override));
187
+ if (process.platform === "win32") {
188
+ pushUniqueCandidate(candidates, seen, "rg.exe");
189
+ pushUniqueCandidate(candidates, seen, "rg");
190
+ }
191
+ else {
192
+ pushUniqueCandidate(candidates, seen, "rg");
193
+ }
194
+ for (const rawDir of (process.env.PATH ?? "").split(path.delimiter)) {
195
+ const dir = rawDir.trim().replace(/^"+|"+$/g, "");
196
+ if (!dir)
197
+ continue;
198
+ if (process.platform === "win32") {
199
+ pushUniqueCandidate(candidates, seen, path.join(dir, "rg.exe"));
200
+ pushUniqueCandidate(candidates, seen, path.join(dir, "rg"));
201
+ }
202
+ else {
203
+ pushUniqueCandidate(candidates, seen, path.join(dir, "rg"));
204
+ }
205
+ }
206
+ if (process.platform === "win32") {
207
+ const localAppData = process.env.LOCALAPPDATA?.trim();
208
+ const programsDir = localAppData ? path.join(localAppData, "Programs") : "";
209
+ if (programsDir && fs.existsSync(programsDir)) {
210
+ for (const appDir of listChildDirsSafe(programsDir)) {
211
+ pushUniqueCandidate(candidates, seen, path.join(appDir, "resources", "app", "node_modules", "@vscode", "ripgrep", "bin", "rg.exe"));
212
+ pushUniqueCandidate(candidates, seen, path.join(appDir, "resources", "app", "extensions", "kiro.kiro-agent", "node_modules", "@vscode", "ripgrep", "bin", "rg.exe"));
213
+ for (const childDir of listChildDirsSafe(appDir)) {
214
+ pushUniqueCandidate(candidates, seen, path.join(childDir, "resources", "app", "node_modules", "@vscode", "ripgrep", "bin", "rg.exe"));
215
+ }
216
+ }
217
+ }
218
+ }
219
+ return candidates;
220
+ }
221
+ function resolveRipgrepCommand(projectRoot) {
222
+ if (typeof cachedRipgrepCommand !== "undefined") {
223
+ if (cachedRipgrepCommand)
224
+ return { ok: true, command: cachedRipgrepCommand };
225
+ return { ok: false, error: cachedRipgrepResolveError ?? "ripgrep unavailable", attempts: [] };
226
+ }
227
+ const env = buildRipgrepEnv();
228
+ const attempts = [];
229
+ for (const candidate of collectRipgrepCandidates()) {
230
+ const probe = spawnSync(candidate, ["--version"], {
231
+ cwd: projectRoot || undefined,
232
+ env,
233
+ encoding: "utf8",
234
+ windowsHide: true,
235
+ timeout: RIPGREP_RESOLVE_TIMEOUT_MS,
236
+ maxBuffer: 256 * 1024,
237
+ });
238
+ if (probe.status === 0) {
239
+ cachedRipgrepCommand = candidate;
240
+ cachedRipgrepResolveError = null;
241
+ return { ok: true, command: candidate };
242
+ }
243
+ attempts.push(`${candidate}: ${formatProcessFailure(probe)}`);
244
+ }
245
+ cachedRipgrepCommand = null;
246
+ cachedRipgrepResolveError = attempts.slice(0, 8).join(" | ") || "ripgrep unavailable";
247
+ return { ok: false, error: cachedRipgrepResolveError, attempts };
248
+ }
249
+ function appendBuiltInRipgrepExcludes(args) {
250
+ for (const segment of IGNORED_PATH_SEGMENTS) {
251
+ args.push("-g", `!${segment}/**`);
252
+ args.push("-g", `!**/${segment}/**`);
253
+ }
254
+ for (const baseName of NOISE_FILE_BASENAMES) {
255
+ args.push("-g", `!**/${baseName}`);
256
+ }
257
+ for (const suffix of NOISE_FILE_SUFFIXES) {
258
+ args.push("-g", `!**/*${suffix}`);
259
+ }
260
+ }
261
+ export function runRipgrepSearch(opts) {
262
+ const resolved = resolveRipgrepCommand(opts.projectRoot);
263
+ if (!resolved.ok) {
264
+ return { ok: false, unavailable: true, error: resolved.error, attempts: resolved.attempts };
265
+ }
266
+ const args = ["--vimgrep", "--no-heading", "--color", "never", "-m", String(opts.maxResults)];
267
+ args.push(opts.caseSensitive ? "-s" : "-i");
268
+ if (opts.mode === "literal")
269
+ args.push("-F");
270
+ appendBuiltInRipgrepExcludes(args);
271
+ args.push("--", opts.query, ".");
272
+ const result = spawnSync(resolved.command, args, {
273
+ cwd: opts.projectRoot,
274
+ env: buildRipgrepEnv(),
275
+ encoding: "utf8",
276
+ windowsHide: true,
277
+ timeout: RIPGREP_SEARCH_TIMEOUT_MS,
278
+ maxBuffer: RIPGREP_MAX_BUFFER_BYTES,
279
+ });
280
+ if (result.error) {
281
+ return {
282
+ ok: false,
283
+ unavailable: false,
284
+ error: formatProcessFailure(result),
285
+ attempts: [],
286
+ rg_command: resolved.command,
287
+ exit_status: result.status,
288
+ };
289
+ }
290
+ const status = result.status ?? 0;
291
+ if (status !== 0 && status !== 1) {
292
+ return {
293
+ ok: false,
294
+ unavailable: false,
295
+ error: formatProcessFailure(result),
296
+ attempts: [],
297
+ rg_command: resolved.command,
298
+ exit_status: status,
299
+ };
300
+ }
301
+ const matches = [];
302
+ let totalMatches = 0;
303
+ let truncated = false;
304
+ for (const rawLine of toProcessText(result.stdout).split(/\r?\n/)) {
305
+ if (!rawLine)
306
+ continue;
307
+ const parsed = /^(.*?):(\d+):(\d+):(.*)$/.exec(rawLine);
308
+ if (!parsed)
309
+ continue;
310
+ const filePath = path.posix
311
+ .normalize(parsed[1].replace(/\\/g, "/"))
312
+ .replace(/^\.\/+/, "");
313
+ const lineNumber = Number.parseInt(parsed[2] ?? "0", 10);
314
+ const colNumber = Number.parseInt(parsed[3] ?? "0", 10);
315
+ const lineText = (parsed[4] ?? "").replace(/\r$/, "");
316
+ if (!filePath || !Number.isFinite(lineNumber) || !Number.isFinite(colNumber))
317
+ continue;
318
+ if (shouldIgnoreDbFilePath(filePath))
319
+ continue;
320
+ if (shouldIgnoreContentFile(filePath))
321
+ continue;
322
+ if (!passesPathFilters(filePath, opts.includePaths, opts.excludePaths))
323
+ continue;
324
+ totalMatches += 1;
325
+ if (matches.length >= opts.maxResults) {
326
+ truncated = true;
327
+ continue;
328
+ }
329
+ matches.push({
330
+ file_path: filePath,
331
+ kind: "file_match",
332
+ line: lineNumber,
333
+ col: colNumber,
334
+ preview: buildGrepPreviewSnippet(lineText, colNumber),
335
+ match: extractGrepMatchText({
336
+ lineText,
337
+ query: opts.query,
338
+ mode: opts.mode,
339
+ caseSensitive: opts.caseSensitive,
340
+ col: colNumber,
341
+ }),
342
+ });
343
+ }
344
+ return {
345
+ ok: true,
346
+ backend: "ripgrep",
347
+ rg_command: resolved.command,
348
+ matches,
349
+ truncated,
350
+ total_matches: totalMatches,
351
+ };
352
+ }
353
+ export function runIndexedGrepSearch(opts) {
354
+ const hint = (() => {
355
+ if (opts.mode === "literal")
356
+ return opts.query;
357
+ const explicit = opts.literalHint.trim();
358
+ if (explicit)
359
+ return explicit;
360
+ return extractLongestLiteralFromRegex(opts.query);
361
+ })();
362
+ if (opts.mode === "regex" && hint.trim().length < 3) {
363
+ throw new Error("Regex has no sufficiently long literal anchor for indexed narrowing. Provide literal_hint (>= 3 chars) or narrow with include_paths.");
364
+ }
365
+ let re;
366
+ try {
367
+ re = compileGrepRegex({
368
+ query: opts.query,
369
+ mode: opts.mode,
370
+ caseSensitive: opts.caseSensitive,
371
+ });
372
+ }
373
+ catch (err) {
374
+ throw new Error(`Invalid pattern: ${String(err)}`);
375
+ }
376
+ const maxCandidates = opts.maxCandidates ?? Math.min(50_000, Math.max(1000, opts.maxResults * 200));
377
+ const candidates = (() => {
378
+ if (opts.ftsAvailable) {
379
+ const matchQuery = opts.buildFtsMatchQuery(hint);
380
+ const placeholders = opts.kinds.map(() => "?").join(", ");
381
+ const stmt = opts.db.prepare(`
382
+ SELECT
383
+ m.id as id,
384
+ m.kind as kind,
385
+ m.content as content,
386
+ m.file_path as file_path,
387
+ m.start_line as start_line,
388
+ m.end_line as end_line
389
+ FROM ${opts.ftsTableName}
390
+ JOIN memory_items m ON m.id = ${opts.ftsTableName}.rowid
391
+ WHERE ${opts.ftsTableName} MATCH ?
392
+ AND m.kind IN (${placeholders})
393
+ ORDER BY m.file_path ASC, m.start_line ASC, m.id ASC
394
+ LIMIT ?
395
+ `);
396
+ return stmt.all(matchQuery, ...opts.kinds, maxCandidates);
397
+ }
398
+ const needle = opts.mode === "literal" ? opts.query : hint;
399
+ const escaped = opts.escapeLike(needle);
400
+ const like = `%${escaped}%`;
401
+ const placeholders = opts.kinds.map(() => "?").join(", ");
402
+ const stmt = opts.db.prepare(`
403
+ SELECT
404
+ id,
405
+ kind,
406
+ content,
407
+ file_path,
408
+ start_line,
409
+ end_line
410
+ FROM memory_items
411
+ WHERE content LIKE ? ESCAPE '\\'
412
+ AND kind IN (${placeholders})
413
+ ORDER BY file_path ASC, start_line ASC, id ASC
414
+ LIMIT ?
415
+ `);
416
+ return stmt.all(like, ...opts.kinds, maxCandidates);
417
+ })();
418
+ const matches = [];
419
+ let candidatesScanned = 0;
420
+ let truncated = false;
421
+ for (const c of candidates) {
422
+ candidatesScanned += 1;
423
+ if (!c.file_path || c.start_line == null)
424
+ continue;
425
+ if (shouldIgnoreDbFilePath(c.file_path))
426
+ continue;
427
+ if (!passesPathFilters(c.file_path, opts.includePaths, opts.excludePaths))
428
+ continue;
429
+ const content = c.content ?? "";
430
+ const lineStarts = buildLineStarts(content);
431
+ re.lastIndex = 0;
432
+ let m;
433
+ while ((m = re.exec(content)) !== null) {
434
+ const idx = m.index ?? 0;
435
+ const matched = m[0] ?? "";
436
+ if (!matched) {
437
+ if (re.lastIndex >= content.length)
438
+ break;
439
+ re.lastIndex += 1;
440
+ continue;
441
+ }
442
+ const lineIdx = lineIndexForOffset(lineStarts, idx);
443
+ const lineStart = lineStarts[lineIdx] ?? 0;
444
+ const lineEnd = lineIdx + 1 < lineStarts.length
445
+ ? (lineStarts[lineIdx + 1] ?? content.length) - 1
446
+ : content.length;
447
+ const previewRaw = content.slice(lineStart, Math.max(lineStart, lineEnd));
448
+ matches.push({
449
+ file_path: c.file_path,
450
+ kind: c.kind,
451
+ line: c.start_line + lineIdx,
452
+ col: idx - lineStart + 1,
453
+ preview: trimGrepText(previewRaw, 500),
454
+ match: trimGrepText(matched, 200),
455
+ });
456
+ if (matches.length >= opts.maxResults) {
457
+ truncated = true;
458
+ break;
459
+ }
460
+ }
461
+ if (truncated)
462
+ break;
463
+ }
464
+ return {
465
+ backend: "indexed_fallback",
466
+ hint,
467
+ kinds: opts.kinds,
468
+ include_paths: opts.includePaths ?? [],
469
+ exclude_paths: opts.excludePaths ?? [],
470
+ candidates: { total: candidates.length, scanned: candidatesScanned },
471
+ matches,
472
+ truncated,
473
+ };
474
+ }
475
+ //# sourceMappingURL=grep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../src/grep.ts"],"names":[],"mappings":"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"}