@amsterdamdatalabs/enact-docs-search 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +29 -4
  2. package/dist/cli.js +158 -53
  3. package/dist/cli.js.map +1 -1
  4. package/dist/indexing/chunker.d.ts +6 -1
  5. package/dist/indexing/chunker.d.ts.map +1 -1
  6. package/dist/indexing/chunker.js +17 -11
  7. package/dist/indexing/chunker.js.map +1 -1
  8. package/dist/indexing/embedding-text.d.ts +22 -0
  9. package/dist/indexing/embedding-text.d.ts.map +1 -0
  10. package/dist/indexing/embedding-text.js +27 -0
  11. package/dist/indexing/embedding-text.js.map +1 -0
  12. package/dist/indexing/frontmatter.d.ts +48 -0
  13. package/dist/indexing/frontmatter.d.ts.map +1 -0
  14. package/dist/indexing/frontmatter.js +162 -0
  15. package/dist/indexing/frontmatter.js.map +1 -0
  16. package/dist/indexing/indexing-service.d.ts +1 -4
  17. package/dist/indexing/indexing-service.d.ts.map +1 -1
  18. package/dist/indexing/indexing-service.js +24 -12
  19. package/dist/indexing/indexing-service.js.map +1 -1
  20. package/dist/search/authority.d.ts +31 -0
  21. package/dist/search/authority.d.ts.map +1 -0
  22. package/dist/search/authority.js +50 -0
  23. package/dist/search/authority.js.map +1 -0
  24. package/dist/search/relevance.d.ts +80 -0
  25. package/dist/search/relevance.d.ts.map +1 -0
  26. package/dist/search/relevance.js +119 -0
  27. package/dist/search/relevance.js.map +1 -0
  28. package/dist/search/search-service.d.ts +44 -2
  29. package/dist/search/search-service.d.ts.map +1 -1
  30. package/dist/search/search-service.js +181 -23
  31. package/dist/search/search-service.js.map +1 -1
  32. package/dist/search/snippet.d.ts +11 -0
  33. package/dist/search/snippet.d.ts.map +1 -1
  34. package/dist/search/snippet.js +102 -17
  35. package/dist/search/snippet.js.map +1 -1
  36. package/dist/storage/document-store.d.ts +47 -5
  37. package/dist/storage/document-store.d.ts.map +1 -1
  38. package/dist/storage/document-store.js +94 -16
  39. package/dist/storage/document-store.js.map +1 -1
  40. package/dist/storage/persistence.d.ts +6 -10
  41. package/dist/storage/persistence.d.ts.map +1 -1
  42. package/dist/storage/persistence.js +20 -20
  43. package/dist/storage/persistence.js.map +1 -1
  44. package/dist/storage/vector-store.d.ts +2 -3
  45. package/dist/storage/vector-store.d.ts.map +1 -1
  46. package/dist/storage/vector-store.js +3 -11
  47. package/dist/storage/vector-store.js.map +1 -1
  48. package/dist/types.d.ts +2 -7
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/types.js +2 -20
  51. package/dist/types.js.map +1 -1
  52. package/package.json +2 -2
package/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # @amsterdamdatalabs/enact-docs-search
2
2
 
3
- Hybrid BM25 and vector search over a repository's `docs/`, `.plans/`, and
4
- `.specs/` knowledge trees.
3
+ Hybrid BM25 and vector search over a repository's `docs/` knowledge tree.
5
4
 
6
5
  ## Install
7
6
 
@@ -64,19 +63,45 @@ npm rebuild hnswlib-node onnxruntime-node sharp protobufjs --foreground-scripts
64
63
  Run inside a target repository:
65
64
 
66
65
  ```bash
67
- enact-docs-search query "how crate boundaries are defined?"
66
+ enact-docs-search how crate boundaries are defined
67
+ enact-docs-search query how crate boundaries are defined
68
68
  enact-docs-search index
69
69
  enact-docs-search index --force
70
70
  enact-docs-search prepare
71
71
  ```
72
72
 
73
+ The `query` command is optional. Unquoted words are joined into one query;
74
+ quotes remain useful when the shell must preserve punctuation or special
75
+ characters.
76
+
73
77
  Queries automatically provision a missing model and refresh missing or stale
74
78
  indexes incrementally. If keyword-only indexing leaves semantic vectors stale,
75
79
  the next hybrid or semantic query repairs them automatically before searching.
76
80
  `prepare` performs the model bootstrap and a complete semantic index build
77
- explicitly. Use `enact-docs-search --help` for advanced scope, mode, JSON, and
81
+ explicitly. Use `enact-docs-search --help` for mode, JSON, and
78
82
  exclusion controls.
79
83
 
84
+ ## Ranking
85
+
86
+ Frontmatter is parsed, not indexed as prose. `title` and `description` are
87
+ weighted above heading text, which is weighted above body text, so a document
88
+ whose title answers the query outranks one that mentions it in passing. Results
89
+ collapse to one entry per file.
90
+
91
+ Each result is labelled with what the document says about itself --
92
+ `[stable · operations · 2026-09-15]`. A document marked `status: draft` is
93
+ demoted; one that makes no status claim is left alone. Age decays a result's
94
+ score with a 180-day half-life, floored so an old document is demoted, never
95
+ buried. `--raw-rank` turns this weighting off, and `--explain` prints the score
96
+ and the multiplier behind every result.
97
+
98
+ Results that do not clear a relevance floor are dropped rather than padded out:
99
+ semantic hits need a minimum cosine similarity, and keyword hits must cover
100
+ enough of the query's weight, measured by term rarity so the term that carried
101
+ the query is the one that counts. A query nothing matches exits `1` with no
102
+ results, which is a real answer -- not an empty list dressed up as ten weak
103
+ ones. `--min-score` and `--min-coverage` adjust both floors.
104
+
80
105
  The package is also usable through `npx` or `bunx`:
81
106
 
82
107
  ```bash
package/dist/cli.js CHANGED
@@ -1,21 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * enact-docs-search — hybrid (BM25 + vector) search CLI over a repo's
4
- * docs/.plans/.specs knowledge trees. Takes the target repo as an argument;
4
+ * docs/ knowledge tree. Takes the target repo as an argument;
5
5
  * does not hardcode any particular checkout.
6
6
  *
7
7
  * Usage:
8
- * enact-docs-search index --repo <path> [--scope docs|plans|specs|all] [--force] [--keyword-only]
9
- * enact-docs-search query "<text>" --repo <path> [--scope ...] [--mode hybrid|keyword|semantic] [--limit N]
8
+ * enact-docs-search index --repo <path> [--force] [--keyword-only]
9
+ * enact-docs-search <text...> --repo <path> [--mode hybrid|keyword|semantic] [--limit N]
10
+ * enact-docs-search query "<text>" --repo <path> [--mode hybrid|keyword|semantic] [--limit N]
10
11
  */
11
12
  import { DocumentStore } from "./storage/document-store.js";
12
13
  import { VectorStore, DependencyError as VectorDependencyError } from "./storage/vector-store.js";
13
14
  import { EmbeddingService, DependencyError as EmbeddingDependencyError } from "./embeddings/embedding-service.js";
14
15
  import { SearchService } from "./search/search-service.js";
16
+ import { normalizeQuery, DEFAULT_MIN_VECTOR_SCORE, DEFAULT_MIN_TERM_COVERAGE } from "./search/relevance.js";
17
+ import { extractQueryTerms } from "./search/snippet.js";
15
18
  import { runIndex } from "./indexing/indexing-service.js";
16
19
  import { listMarkdownFiles } from "./adapter/repo-walker.js";
17
20
  import { repoCacheDir, repoCacheRoot, repoModelCacheDir, ensureRepoCache, CachePermissionError, paths, readManifest, readDocumentStoreExport, readVectorSidecar, vectorIndexExists, checkFreshness, EMBEDDING_MODEL_ID, } from "./storage/persistence.js";
18
- import { scopesToRoots } from "./types.js";
21
+ import { DOCS_ROOT } from "./types.js";
19
22
  import { existsSync } from "node:fs";
20
23
  import { createRequire } from "node:module";
21
24
  import { dirname, join } from "node:path";
@@ -23,21 +26,24 @@ import { renderDoctor, runDoctor } from "./doctor.js";
23
26
  const EMBEDDING_DIMENSIONS = 384;
24
27
  const { version: PACKAGE_VERSION } = createRequire(import.meta.url)("../package.json");
25
28
  function usage() {
26
- return `enact-docs-search — hybrid semantic + keyword search over docs/.plans/.specs
29
+ return `enact-docs-search — hybrid semantic + keyword search over docs/
27
30
 
28
31
  Usage:
29
- enact-docs-search index --repo <path> [--scope docs|plans|specs|all] [--force] [--keyword-only] [--exclude <glob>]
30
- enact-docs-search prepare --repo <path> [--scope docs|plans|specs|all] [--force] [--exclude <glob>]
31
- enact-docs-search query "<text>" --repo <path> [--scope docs|plans|specs|all] [--mode hybrid|keyword|semantic] [--limit N] [--exclude <glob>]
32
+ enact-docs-search index --repo <path> [--force] [--keyword-only] [--exclude <glob>]
33
+ enact-docs-search prepare --repo <path> [--force] [--exclude <glob>]
34
+ enact-docs-search <text...> --repo <path> [--mode hybrid|keyword|semantic] [--limit N] [--exclude <glob>]
35
+ enact-docs-search query <text...> --repo <path> [--mode hybrid|keyword|semantic] [--limit N] [--exclude <glob>]
32
36
  enact-docs-search doctor [--json]
33
37
 
34
38
  Options:
35
39
  --repo <path> Target repository root. If omitted, auto-detected by
36
- walking up from the current directory for docs/,
37
- .plans/, or .specs/
38
- --scope <scope> docs | plans | specs | all (default: all)
40
+ walking up from the current directory for docs/
39
41
  --mode <mode> hybrid | keyword | semantic (default: hybrid, query only)
40
- --limit <n> Max results to return (default: 10, query only)
42
+ --limit <n> Max results to return, positive integer (default: 10, query only)
43
+ --min-score <n> Cosine floor for semantic hits, 0-1 (default: ${DEFAULT_MIN_VECTOR_SCORE})
44
+ --min-coverage <n> Fraction of query terms a hit must contain, 0-1 (default: ${DEFAULT_MIN_TERM_COVERAGE})
45
+ --raw-rank Do not apply status/recency weighting
46
+ --explain Show the score and the authority multiplier per result
41
47
  --force Full rebuild, ignoring the incremental manifest (index/prepare only)
42
48
  --keyword-only Skip embedding generation entirely (index only, much faster)
43
49
  --exclude <glob> Additional glob to exclude from scanning; repeatable
@@ -49,10 +55,91 @@ index --force only for an explicit full rebuild.
49
55
 
50
56
  Exit codes: 0 = matches found, 1 = no matches, 2 = usage/dependency error.`;
51
57
  }
58
+ /**
59
+ * Read the value for a flag at the end of argv with nothing after it
60
+ * (`--limit` with no argument at all). Letting that `undefined` flow
61
+ * downstream produces NaN (see parseNumberFlag) rather than a usage error.
62
+ * Shared by both the string and numeric value readers below; the numeric
63
+ * one stops here deliberately, because a leading '-' is a legitimate
64
+ * negative number for it to reject on range, not on shape.
65
+ */
66
+ function requireRawValue(argv, i, flag) {
67
+ const value = argv[i];
68
+ if (value === undefined)
69
+ fail(`${flag} requires a value`);
70
+ return value;
71
+ }
72
+ /**
73
+ * Read the value for a flag whose argument is always a string (never a
74
+ * negative number), so a value that itself looks like another option is
75
+ * never legitimate. Two ways this goes wrong, both confirmed:
76
+ * 1. A flag at the end of argv (`--repo` with nothing after it) —
77
+ * handled by requireRawValue.
78
+ * 2. A flag immediately followed by another flag (`--repo --force`) has
79
+ * no dangling gap to detect, but the "value" is really the next
80
+ * option, not an argument for this one. Confirmed: this silently took
81
+ * "--force" as the repo path (creating a literal `--force` directory
82
+ * on disk) while --force itself vanished, unconsumed. Same failure as
83
+ * (1) wearing a different disguise, so it gets the same fail-loud
84
+ * treatment rather than a best-effort guess.
85
+ */
86
+ function requireValue(argv, i, flag) {
87
+ const value = requireRawValue(argv, i, flag);
88
+ if (value.startsWith("-"))
89
+ fail(`${flag} requires a value, got option-like '${value}' instead`);
90
+ return value;
91
+ }
92
+ /**
93
+ * Numeric flags must fail loudly, not silently. `Number(undefined)` and
94
+ * `Number("abc")` both produce NaN, which then compares false against every
95
+ * threshold (`score >= NaN` is always false) and empties `slice(0, NaN)` —
96
+ * the tool reports a confident "0 result(s)" for what was actually a typo.
97
+ * Validating here, before search ever runs, keeps that lie out of the exit
98
+ * code (2 = usage error) and out of the result count (which means 1 = no
99
+ * matches, honestly). Uses requireRawValue, not requireValue: '-0.35' is a
100
+ * legitimate negative number here, to be rejected on range below, not
101
+ * mistaken for a swallowed option.
102
+ */
103
+ function parseNumberFlag(argv, i, flag) {
104
+ const raw = requireRawValue(argv, i, flag);
105
+ const value = Number(raw);
106
+ if (!Number.isFinite(value))
107
+ fail(`${flag} must be a number, got '${raw}'`);
108
+ return value;
109
+ }
110
+ /**
111
+ * `--min-score` and `--min-coverage` are both gate thresholds bounded to
112
+ * [0, 1]: cosine similarity is clamped to that range in VectorStore, and
113
+ * IDF-weighted coverage is a fraction of the query's weight (see
114
+ * relevance.ts). A value outside that range can never pass or can never
115
+ * matter, so it is a usage mistake, not a legitimate strict/lax setting.
116
+ */
117
+ function parseUnitFraction(argv, i, flag, unit) {
118
+ const raw = argv[i];
119
+ const value = parseNumberFlag(argv, i, flag);
120
+ if (value < 0 || value > 1) {
121
+ fail(`${flag} must be between 0 and 1 (${unit}), got '${raw}'`);
122
+ }
123
+ return value;
124
+ }
125
+ /**
126
+ * `--limit` feeds `slice(0, limit)` and an overfetch multiplier. Zero,
127
+ * negative, and fractional counts are all usage mistakes rather than valid
128
+ * "give me nothing" or "give me half a result" requests.
129
+ */
130
+ function parsePositiveInteger(argv, i, flag) {
131
+ const raw = argv[i];
132
+ const value = parseNumberFlag(argv, i, flag);
133
+ if (!Number.isInteger(value) || value < 1) {
134
+ fail(`${flag} must be a positive integer, got '${raw}'`);
135
+ }
136
+ return value;
137
+ }
52
138
  function parseArgs(argv) {
53
139
  const parsed = {
54
140
  positional: [],
55
- scope: "all",
141
+ explain: false,
142
+ rawRank: false,
56
143
  mode: "hybrid",
57
144
  limit: 10,
58
145
  force: false,
@@ -64,16 +151,25 @@ function parseArgs(argv) {
64
151
  const arg = argv[i];
65
152
  switch (arg) {
66
153
  case "--repo":
67
- parsed.repo = argv[++i];
68
- break;
69
- case "--scope":
70
- parsed.scope = argv[++i];
154
+ parsed.repo = requireValue(argv, ++i, arg);
71
155
  break;
72
156
  case "--mode":
73
- parsed.mode = argv[++i];
157
+ parsed.mode = requireValue(argv, ++i, arg);
158
+ break;
159
+ case "--explain":
160
+ parsed.explain = true;
161
+ break;
162
+ case "--raw-rank":
163
+ parsed.rawRank = true;
164
+ break;
165
+ case "--min-score":
166
+ parsed.minScore = parseUnitFraction(argv, ++i, arg, "cosine similarity");
167
+ break;
168
+ case "--min-coverage":
169
+ parsed.minCoverage = parseUnitFraction(argv, ++i, arg, "fraction of query weight");
74
170
  break;
75
171
  case "--limit":
76
- parsed.limit = Number(argv[++i]);
172
+ parsed.limit = parsePositiveInteger(argv, ++i, arg);
77
173
  break;
78
174
  case "--force":
79
175
  parsed.force = true;
@@ -82,7 +178,7 @@ function parseArgs(argv) {
82
178
  parsed.keywordOnly = true;
83
179
  break;
84
180
  case "--exclude":
85
- parsed.exclude.push(argv[++i]);
181
+ parsed.exclude.push(requireValue(argv, ++i, arg));
86
182
  break;
87
183
  case "--json":
88
184
  parsed.json = true;
@@ -93,6 +189,8 @@ function parseArgs(argv) {
93
189
  process.exit(0);
94
190
  break;
95
191
  default:
192
+ if (arg.startsWith("-"))
193
+ fail(`unknown option '${arg}'`);
96
194
  parsed.positional.push(arg);
97
195
  }
98
196
  }
@@ -113,28 +211,21 @@ function info(message) {
113
211
  }
114
212
  /**
115
213
  * Auto-detect a repo root when --repo is omitted: walk up from cwd looking
116
- * for a directory that has any of docs/, .plans/, or .specs/. Stops at the
214
+ * for a directory that has docs/. Stops at the
117
215
  * filesystem root. Returns null if nothing is found, so the caller can fail
118
216
  * with a clear message rather than silently picking the wrong directory.
119
217
  */
120
218
  function detectRepoRoot(startDir) {
121
219
  let dir = startDir;
122
220
  for (;;) {
123
- for (const marker of ["docs", ".plans", ".specs"]) {
124
- if (existsSync(join(dir, marker)))
125
- return dir;
126
- }
221
+ if (existsSync(join(dir, DOCS_ROOT)))
222
+ return dir;
127
223
  const parent = dirname(dir);
128
224
  if (parent === dir)
129
225
  return null;
130
226
  dir = parent;
131
227
  }
132
228
  }
133
- function validateScope(scope) {
134
- if (!["docs", "plans", "specs", "all"].includes(scope)) {
135
- fail(`unknown scope '${scope}' (use docs, plans, specs, or all)`);
136
- }
137
- }
138
229
  function validateMode(mode) {
139
230
  if (!["keyword", "semantic", "hybrid"].includes(mode)) {
140
231
  fail(`unknown mode '${mode}' (use keyword, semantic, or hybrid)`);
@@ -144,7 +235,7 @@ function resolveRepo(args) {
144
235
  if (!args.repo) {
145
236
  const detected = detectRepoRoot(process.cwd());
146
237
  if (!detected) {
147
- fail("--repo <path> was not given, and no docs/, .plans/, or .specs/ found walking up from " +
238
+ fail("--repo <path> was not given, and no docs/ found walking up from " +
148
239
  process.cwd() +
149
240
  " — pass --repo explicitly");
150
241
  }
@@ -154,13 +245,11 @@ function resolveRepo(args) {
154
245
  }
155
246
  async function cmdIndex(args) {
156
247
  resolveRepo(args);
157
- validateScope(args.scope);
158
- info(`root: ${args.repo} (scope: ${args.scope})`);
248
+ info(`root: ${args.repo}`);
159
249
  const t0 = Date.now();
160
250
  let lastPhase = "";
161
251
  const result = await runIndex({
162
252
  repoPath: args.repo,
163
- scope: args.scope,
164
253
  force: args.force,
165
254
  skipEmbeddings: args.keywordOnly,
166
255
  exclude: args.exclude,
@@ -176,7 +265,7 @@ async function cmdIndex(args) {
176
265
  },
177
266
  });
178
267
  process.stderr.write("\n");
179
- console.log(`enact-docs-search: indexed scope='${result.scope}' — ` +
268
+ console.log(`enact-docs-search: indexed docs/ — ` +
180
269
  `${result.filesScanned} files scanned, ${result.filesChanged} changed, ${result.filesRemoved} removed, ` +
181
270
  `${result.chunksIndexed} chunks, ${result.embeddingsGenerated} embeddings ` +
182
271
  `(${(Date.now() - t0)}ms)`);
@@ -184,7 +273,6 @@ async function cmdIndex(args) {
184
273
  }
185
274
  async function cmdPrepare(args) {
186
275
  resolveRepo(args);
187
- validateScope(args.scope);
188
276
  await ensureRepoCache(args.repo);
189
277
  const embeddingService = new EmbeddingService({
190
278
  modelCacheDir: repoModelCacheDir(args.repo),
@@ -194,7 +282,6 @@ async function cmdPrepare(args) {
194
282
  await embeddingService.embed("semantic search bootstrap");
195
283
  await runIndex({
196
284
  repoPath: args.repo,
197
- scope: args.scope,
198
285
  force: args.force,
199
286
  exclude: args.exclude,
200
287
  allowRemoteModels: true,
@@ -213,27 +300,31 @@ async function cmdDoctor(args) {
213
300
  process.exitCode = 2;
214
301
  }
215
302
  async function cmdQuery(args) {
216
- const query = args.positional[0];
303
+ const query = normalizeQuery(args.positional.join(" "));
217
304
  if (!query)
218
305
  fail("a query string is required");
306
+ // Every term was a stopword. Searching anyway returns whatever the index
307
+ // ranks highest for filler words -- a confident answer to a question that
308
+ // was never asked. Say so instead.
309
+ if (extractQueryTerms(query).length === 0) {
310
+ fail(`no searchable terms in "${query}" -- every word is a stopword`);
311
+ }
219
312
  resolveRepo(args);
220
- validateScope(args.scope);
221
313
  validateMode(args.mode);
222
314
  await ensureRepoCache(args.repo);
223
315
  // In --json mode, stdout must be pure JSON for downstream parsers — route
224
316
  // this status line to stderr instead of suppressing it outright.
225
317
  if (args.json) {
226
- console.error(`root: ${args.repo} (scope: ${args.scope}, mode: ${args.mode})`);
318
+ console.error(`root: ${args.repo} (mode: ${args.mode})`);
227
319
  }
228
320
  else {
229
- info(`root: ${args.repo} (scope: ${args.scope}, mode: ${args.mode})`);
321
+ info(`root: ${args.repo} (mode: ${args.mode})`);
230
322
  }
231
323
  const cacheDir = repoCacheDir(args.repo);
232
324
  const manifest = await readManifest(cacheDir);
233
325
  // Freshness check (I-08: refresh stale or missing results before serving them).
234
- const roots = scopesToRoots(args.scope);
235
- const currentFiles = await listMarkdownFiles(args.repo, roots, { exclude: args.exclude });
236
- const freshness = checkFreshness(manifest, args.scope, currentFiles, args.mode !== "keyword");
326
+ const currentFiles = await listMarkdownFiles(args.repo, [DOCS_ROOT], { exclude: args.exclude });
327
+ const freshness = checkFreshness(manifest, currentFiles, args.mode !== "keyword");
237
328
  const hasVectorFile = args.mode !== "keyword" && await vectorIndexExists(cacheDir);
238
329
  const vectorSidecar = args.mode !== "keyword" ? await readVectorSidecar(cacheDir) : null;
239
330
  const needsVectorIndex = args.mode !== "keyword" &&
@@ -249,7 +340,7 @@ async function cmdQuery(args) {
249
340
  : freshness.vectorStaleCount > 0
250
341
  ? `${freshness.vectorStaleCount} stale vector file(s)`
251
342
  : "no usable vector index";
252
- const message = `enact-docs-search: refreshing ${args.scope} index (${reason})`;
343
+ const message = `enact-docs-search: refreshing docs/ index (${reason})`;
253
344
  if (args.json)
254
345
  console.error(message);
255
346
  else
@@ -257,7 +348,6 @@ async function cmdQuery(args) {
257
348
  try {
258
349
  await runIndex({
259
350
  repoPath: args.repo,
260
- scope: args.scope,
261
351
  force: rebuildVectorIndex,
262
352
  skipEmbeddings: args.mode === "keyword",
263
353
  exclude: args.exclude,
@@ -279,7 +369,7 @@ async function cmdQuery(args) {
279
369
  if (args.mode !== "keyword") {
280
370
  const hasVectors = await vectorIndexExists(cacheDir);
281
371
  if (!hasVectors) {
282
- fail(`no vector index for scope '${args.scope}' after automatic refresh`);
372
+ fail("no vector index after automatic refresh");
283
373
  }
284
374
  const sidecar = await readVectorSidecar(cacheDir);
285
375
  if (!sidecar)
@@ -303,27 +393,42 @@ async function cmdQuery(args) {
303
393
  const searchService = new SearchService(docStore, vectorStore, embeddingService);
304
394
  const results = await searchService.search(query, {
305
395
  mode: args.mode,
306
- scope: args.scope,
307
396
  limit: args.limit,
308
397
  highlight,
309
398
  repoRoot: args.repo,
399
+ minVectorScore: args.minScore,
400
+ minCoverage: args.minCoverage,
401
+ rawRank: args.rawRank,
310
402
  });
311
403
  if (args.json) {
312
- console.log(JSON.stringify({ query, mode: args.mode, scope: args.scope, results }, null, 2));
404
+ console.log(JSON.stringify({ query, mode: args.mode, results }, null, 2));
313
405
  }
314
406
  else {
315
- printResults(query, results);
407
+ printResults(query, results, args.explain);
316
408
  }
317
409
  process.exit(results.length > 0 ? 0 : 1);
318
410
  }
319
- function printResults(query, results) {
411
+ /** `[stable · operations · 2026-09-15]` — the document's own claims about itself. */
412
+ function metaLabel(r) {
413
+ const day = r.lastUpdate?.slice(0, 10);
414
+ const parts = [r.status, r.documentType, day].filter(Boolean);
415
+ return parts.length ? ` [${parts.join(" · ")}]` : "";
416
+ }
417
+ function explainLabel(r) {
418
+ const base = r.baseScore ?? 0;
419
+ const authority = r.authority ?? 1;
420
+ return ` score ${base.toFixed(4)} x${authority.toFixed(3)} = ${(base * authority).toFixed(4)}`;
421
+ }
422
+ function printResults(query, results, explain) {
320
423
  console.log(`${results.length} result(s) for "${query}"`);
321
424
  if (results.length === 0)
322
425
  return;
323
426
  results.forEach((r, i) => {
324
427
  console.log("");
325
428
  const heading = r.headingBreadcrumb?.length ? ` [${r.headingBreadcrumb.join(" > ")}]` : "";
326
- console.log(`${i + 1}. ${r.filePath}:${r.startLine}${heading}`);
429
+ console.log(`${i + 1}. ${r.filePath}:${r.startLine}${heading}${metaLabel(r)}`);
430
+ if (explain)
431
+ console.log(explainLabel(r));
327
432
  console.log(` ${r.snippet ?? ""}`);
328
433
  });
329
434
  }
@@ -352,7 +457,7 @@ async function main() {
352
457
  await cmdDoctor(args);
353
458
  break;
354
459
  default:
355
- fail(`unknown command '${command}' (use 'index', 'prepare', 'query', or 'doctor')`);
460
+ await cmdQuery(parseArgs([command, ...rest]));
356
461
  }
357
462
  }
358
463
  main().catch((error) => {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,eAAe,IAAI,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,KAAK,EACL,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAEpF,CAAC;AAEF,SAAS,KAAK;IACZ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;2EAwBkE,CAAC;AAC5E,CAAC;AAcD,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,MAAM,GAAe;QACzB,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,KAAK;KACZ,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAU,CAAC;gBAClC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAe,CAAC;gBACtC,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;gBACpB,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,MAAM;YACR;gBACE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;wBAKwB;AACxB,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,SAAS,CAAC;QACR,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAAE,OAAO,GAAG,CAAC;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,kBAAkB,KAAK,oCAAoC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,iBAAiB,IAAI,sCAAsC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB;IACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CACF,uFAAuF;gBACrF,OAAO,CAAC,GAAG,EAAE;gBACb,2BAA2B,CAC9B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC,IAAK,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAgB;IACtC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAElD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC5B,QAAQ,EAAE,IAAI,CAAC,IAAK;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,cAAc,EAAE,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YAChB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBACxC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACpI,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,OAAO,CAAC,GAAG,CACT,qCAAqC,MAAM,CAAC,KAAK,MAAM;QACrD,GAAG,MAAM,CAAC,YAAY,mBAAmB,MAAM,CAAC,YAAY,aAAa,MAAM,CAAC,YAAY,YAAY;QACxG,GAAG,MAAM,CAAC,aAAa,YAAY,MAAM,CAAC,mBAAmB,cAAc;QAC3E,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAC7B,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,+BAA+B,aAAa,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAgB;IACxC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,eAAe,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;IAElC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC5C,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAK,CAAC;QAC5C,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;IACH,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACpC,MAAM,gBAAgB,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE1D,MAAM,QAAQ,CAAC;QACb,QAAQ,EAAE,IAAI,CAAC,IAAK;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,aAAa,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAgB;IACvC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAgB;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC/C,WAAW,CAAC,IAAI,CAAC,CAAC;IAClB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,eAAe,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;IAClC,0EAA0E;IAC1E,iEAAiE;IACjE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,gFAAgF;IAChF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAE9F,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACnF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS;QAC9C,CAAC,CAAC,aAAa,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,gBAAgB,GAAG,CAAC;YACjE,QAAQ,EAAE,cAAc,KAAK,kBAAkB,CAAC,CAAC;IACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC;IACtF,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,IAAI,gBAAgB,CAAC;IAE5F,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY;YACnC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC;gBACxB,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,kBAAkB;gBAC3C,CAAC,CAAC,SAAS,CAAC,gBAAgB,GAAG,CAAC;oBAC9B,CAAC,CAAC,GAAG,SAAS,CAAC,gBAAgB,uBAAuB;oBACtD,CAAC,CAAC,wBAAwB,CAAC;QACjC,MAAM,OAAO,GAAG,iCAAiC,IAAI,CAAC,KAAK,WAAW,MAAM,GAAG,CAAC;QAChF,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;YACjC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC;gBACb,QAAQ,EAAE,IAAI,CAAC,IAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,kBAAkB;gBACzB,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;gBACvC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qBAAqB,IAAI,KAAK,YAAY,wBAAwB,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBACjI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,IAAI,SAAS,CAAC,CAAC;IAEvD,IAAI,gBAAgB,GAA4B,IAAI,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAE1E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,8BAA8B,IAAI,CAAC,KAAK,2BAA2B,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAEvF,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,OAAQ,CAAC,CAAC;YACtE,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;gBACtC,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAK,CAAC;gBAC5C,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC;YACH,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qBAAqB,IAAI,KAAK,YAAY,wBAAwB,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBACjI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvF,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE;QAChD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS;QACT,QAAQ,EAAE,IAAI,CAAC,IAAI;KACpB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,OAAuB;IAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,mBAAmB,KAAK,GAAG,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,OAAO,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR;YACE,IAAI,CAAC,oBAAoB,OAAO,kDAAkD,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,IAAI,KAAK,YAAY,oBAAoB;QAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,+CAAgD,KAAe,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -44,8 +44,13 @@ export declare class Chunker {
44
44
  private findFirstNonHeadingContent;
45
45
  /**
46
46
  * Split a document into chunks.
47
+ *
48
+ * `lineOffset` is the number of lines removed from the top of the file
49
+ * before chunking (a stripped frontmatter block). It is added to every
50
+ * `startLine` so citations point at the file on disk, not at the trimmed
51
+ * body this method actually sees.
47
52
  */
48
- chunk(content: string, filePath: string): Chunk[];
53
+ chunk(content: string, filePath: string, lineOffset?: number): Chunk[];
49
54
  private findBreakPoint;
50
55
  private findCodeBlockBoundary;
51
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/indexing/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,KAAK;IACpB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;CACxB;AAOD;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM;IAI/C;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAqBjE,OAAO,CAAC,0BAA0B;IAiClC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE;IAuEjD,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,qBAAqB;CAoB9B"}
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/indexing/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,KAAK;IACpB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;CACxB;AAOD;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM;IAI/C;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAqBjE,OAAO,CAAC,0BAA0B;IAmClC;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,KAAK,EAAE;IAuEjE,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,qBAAqB;CAoB9B"}
@@ -57,14 +57,15 @@ export class Chunker {
57
57
  else if (line.trim() === "") {
58
58
  i = lineEnd === -1 ? len : lineEnd + 1;
59
59
  }
60
- else if (line.startsWith("---") && i === 0) {
61
- const frontmatterEnd = content.indexOf("\n---", i + 3);
62
- if (frontmatterEnd !== -1) {
63
- i = frontmatterEnd + 4;
64
- }
65
- else {
66
- break;
67
- }
60
+ else if (/^-{3,}\s*$/.test(line)) {
61
+ // A standalone rule is decoration, so skip the line and keep looking
62
+ // for the heading that labels this chunk. This branch used to treat a
63
+ // leading `---` as a frontmatter opener and jump to the next `---`,
64
+ // which swallowed the heading directly below it -- and with two rules
65
+ // in a document, labelled the chunk with a heading from further down.
66
+ // Frontmatter no longer reaches the chunker (it is stripped before
67
+ // chunking), so a `---` here can only ever be a horizontal rule.
68
+ i = lineEnd === -1 ? len : lineEnd + 1;
68
69
  }
69
70
  else {
70
71
  break;
@@ -74,8 +75,13 @@ export class Chunker {
74
75
  }
75
76
  /**
76
77
  * Split a document into chunks.
78
+ *
79
+ * `lineOffset` is the number of lines removed from the top of the file
80
+ * before chunking (a stripped frontmatter block). It is added to every
81
+ * `startLine` so citations point at the file on disk, not at the trimmed
82
+ * body this method actually sees.
77
83
  */
78
- chunk(content, filePath) {
84
+ chunk(content, filePath, lineOffset = 0) {
79
85
  const trimmed = content.trim();
80
86
  if (!trimmed) {
81
87
  return [];
@@ -89,7 +95,7 @@ export class Chunker {
89
95
  chunkIndex: 0,
90
96
  startPos: 0,
91
97
  endPos: normalized.length,
92
- startLine: 1,
98
+ startLine: 1 + lineOffset,
93
99
  headingBreadcrumb: this.getHeadingBreadcrumb(normalized, 0),
94
100
  },
95
101
  ];
@@ -122,7 +128,7 @@ export class Chunker {
122
128
  chunkIndex,
123
129
  startPos: position,
124
130
  endPos: actualEnd,
125
- startLine: lineNumberAt(normalized, position),
131
+ startLine: lineNumberAt(normalized, position) + lineOffset,
126
132
  headingBreadcrumb: this.getHeadingBreadcrumb(normalized, position),
127
133
  });
128
134
  const advance = actualEnd - position - overlapSize;
@@ -1 +1 @@
1
- {"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/indexing/chunker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/indexing/chunker.ts"],"names":[],"mappings":"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"}