@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.
- package/README.md +29 -4
- package/dist/cli.js +158 -53
- package/dist/cli.js.map +1 -1
- package/dist/indexing/chunker.d.ts +6 -1
- package/dist/indexing/chunker.d.ts.map +1 -1
- package/dist/indexing/chunker.js +17 -11
- package/dist/indexing/chunker.js.map +1 -1
- package/dist/indexing/embedding-text.d.ts +22 -0
- package/dist/indexing/embedding-text.d.ts.map +1 -0
- package/dist/indexing/embedding-text.js +27 -0
- package/dist/indexing/embedding-text.js.map +1 -0
- package/dist/indexing/frontmatter.d.ts +48 -0
- package/dist/indexing/frontmatter.d.ts.map +1 -0
- package/dist/indexing/frontmatter.js +162 -0
- package/dist/indexing/frontmatter.js.map +1 -0
- package/dist/indexing/indexing-service.d.ts +1 -4
- package/dist/indexing/indexing-service.d.ts.map +1 -1
- package/dist/indexing/indexing-service.js +24 -12
- package/dist/indexing/indexing-service.js.map +1 -1
- package/dist/search/authority.d.ts +31 -0
- package/dist/search/authority.d.ts.map +1 -0
- package/dist/search/authority.js +50 -0
- package/dist/search/authority.js.map +1 -0
- package/dist/search/relevance.d.ts +80 -0
- package/dist/search/relevance.d.ts.map +1 -0
- package/dist/search/relevance.js +119 -0
- package/dist/search/relevance.js.map +1 -0
- package/dist/search/search-service.d.ts +44 -2
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/search/search-service.js +181 -23
- package/dist/search/search-service.js.map +1 -1
- package/dist/search/snippet.d.ts +11 -0
- package/dist/search/snippet.d.ts.map +1 -1
- package/dist/search/snippet.js +102 -17
- package/dist/search/snippet.js.map +1 -1
- package/dist/storage/document-store.d.ts +47 -5
- package/dist/storage/document-store.d.ts.map +1 -1
- package/dist/storage/document-store.js +94 -16
- package/dist/storage/document-store.js.map +1 -1
- package/dist/storage/persistence.d.ts +6 -10
- package/dist/storage/persistence.d.ts.map +1 -1
- package/dist/storage/persistence.js +20 -20
- package/dist/storage/persistence.js.map +1 -1
- package/dist/storage/vector-store.d.ts +2 -3
- package/dist/storage/vector-store.d.ts.map +1 -1
- package/dist/storage/vector-store.js +3 -11
- package/dist/storage/vector-store.js.map +1 -1
- package/dist/types.d.ts +2 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -20
- package/dist/types.js.map +1 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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> [--
|
|
9
|
-
* enact-docs-search
|
|
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 {
|
|
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
|
|
29
|
+
return `enact-docs-search — hybrid semantic + keyword search over docs/
|
|
27
30
|
|
|
28
31
|
Usage:
|
|
29
|
-
enact-docs-search index --repo <path> [--
|
|
30
|
-
enact-docs-search prepare --repo <path> [--
|
|
31
|
-
enact-docs-search
|
|
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
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
-
|
|
124
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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} (
|
|
318
|
+
console.error(`root: ${args.repo} (mode: ${args.mode})`);
|
|
227
319
|
}
|
|
228
320
|
else {
|
|
229
|
-
info(`root: ${args.repo} (
|
|
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
|
|
235
|
-
const
|
|
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
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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":"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"}
|
|
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;
|
|
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"}
|
package/dist/indexing/chunker.js
CHANGED
|
@@ -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
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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":"AAAA;;;;;;;;GAQG;AA0BH,MAAM,eAAe,GAAiB;IACpC,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,OAAO;IACV,OAAO,CAAe;IAE9B,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,OAAe,EAAE,QAAgB;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,qBAAqB,CAAC;QAE3C,MAAM,QAAQ,GAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEzE,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YAE9B,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACzD,CAAC;IAEO,0BAA0B,CAAC,OAAe,EAAE,QAAgB;QAClE,IAAI,CAAC,GAAG,QAAQ,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAE3B,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;gBACzC,CAAC,EAAE,CAAC;YACN,CAAC;YAED,IAAI,CAAC,IAAI,GAAG;gBAAE,MAAM;YAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAE9D,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9B,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/indexing/chunker.ts"],"names":[],"mappings":"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"}
|