@amsterdamdatalabs/enact-docs-search 0.1.1 → 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 +74 -4
- package/dist/cli.js +182 -54
- package/dist/cli.js.map +1 -1
- package/dist/dependency-errors.d.ts +3 -0
- package/dist/dependency-errors.d.ts.map +1 -0
- package/dist/dependency-errors.js +26 -0
- package/dist/dependency-errors.js.map +1 -0
- package/dist/doctor.d.ts +17 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +88 -0
- package/dist/doctor.js.map +1 -0
- package/dist/embeddings/embedding-service.d.ts.map +1 -1
- package/dist/embeddings/embedding-service.js +2 -3
- package/dist/embeddings/embedding-service.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 +5 -15
- 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 +9 -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
|
|
|
@@ -9,29 +8,100 @@ Hybrid BM25 and vector search over a repository's `docs/`, `.plans/`, and
|
|
|
9
8
|
npm install -g @amsterdamdatalabs/enact-docs-search
|
|
10
9
|
```
|
|
11
10
|
|
|
11
|
+
Verify the installed version:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
enact-docs-search --version
|
|
15
|
+
```
|
|
16
|
+
|
|
12
17
|
Node.js 22 or newer is required. The first semantic query downloads the local
|
|
13
18
|
`Xenova/all-MiniLM-L6-v2` embedding model into the target repository's
|
|
14
19
|
`.cache/docs/models/` directory. The search index is stored alongside it under
|
|
15
20
|
`.cache/docs/index/`.
|
|
16
21
|
|
|
22
|
+
Semantic search uses `hnswlib-node`, a native Node addon compiled with
|
|
23
|
+
`node-gyp` during installation. The machine installing the CLI therefore needs
|
|
24
|
+
Python 3 and a C/C++ build toolchain: Xcode Command Line Tools on macOS,
|
|
25
|
+
`make`/GCC on Linux, or Python plus Visual Studio Build Tools with the Desktop
|
|
26
|
+
development with C++ workload on Windows. For a global install with npm's
|
|
27
|
+
lifecycle-script policy enabled, use:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g @amsterdamdatalabs/enact-docs-search \
|
|
31
|
+
--allow-scripts=hnswlib-node,onnxruntime-node,sharp,protobufjs \
|
|
32
|
+
--foreground-scripts
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Check the native installation without downloading the embedding model:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
enact-docs-search doctor
|
|
39
|
+
enact-docs-search doctor --json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For a project-scoped install, put the lifecycle approvals in the consuming
|
|
43
|
+
project's root `package.json` (npm does not accept `--allow-scripts` on a
|
|
44
|
+
project-scoped install), then rebuild the native packages:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"allowScripts": {
|
|
49
|
+
"hnswlib-node": true,
|
|
50
|
+
"onnxruntime-node": true,
|
|
51
|
+
"sharp": true,
|
|
52
|
+
"protobufjs": true
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npm rebuild hnswlib-node onnxruntime-node sharp protobufjs --foreground-scripts
|
|
59
|
+
```
|
|
60
|
+
|
|
17
61
|
## Usage
|
|
18
62
|
|
|
19
63
|
Run inside a target repository:
|
|
20
64
|
|
|
21
65
|
```bash
|
|
22
|
-
enact-docs-search
|
|
66
|
+
enact-docs-search how crate boundaries are defined
|
|
67
|
+
enact-docs-search query how crate boundaries are defined
|
|
23
68
|
enact-docs-search index
|
|
24
69
|
enact-docs-search index --force
|
|
25
70
|
enact-docs-search prepare
|
|
26
71
|
```
|
|
27
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
|
+
|
|
28
77
|
Queries automatically provision a missing model and refresh missing or stale
|
|
29
78
|
indexes incrementally. If keyword-only indexing leaves semantic vectors stale,
|
|
30
79
|
the next hybrid or semantic query repairs them automatically before searching.
|
|
31
80
|
`prepare` performs the model bootstrap and a complete semantic index build
|
|
32
|
-
explicitly. Use `enact-docs-search --help` for
|
|
81
|
+
explicitly. Use `enact-docs-search --help` for mode, JSON, and
|
|
33
82
|
exclusion controls.
|
|
34
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
|
+
|
|
35
105
|
The package is also usable through `npx` or `bunx`:
|
|
36
106
|
|
|
37
107
|
```bash
|
package/dist/cli.js
CHANGED
|
@@ -1,53 +1,145 @@
|
|
|
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";
|
|
23
|
+
import { createRequire } from "node:module";
|
|
20
24
|
import { dirname, join } from "node:path";
|
|
25
|
+
import { renderDoctor, runDoctor } from "./doctor.js";
|
|
21
26
|
const EMBEDDING_DIMENSIONS = 384;
|
|
27
|
+
const { version: PACKAGE_VERSION } = createRequire(import.meta.url)("../package.json");
|
|
22
28
|
function usage() {
|
|
23
|
-
return `enact-docs-search — hybrid semantic + keyword search over docs
|
|
29
|
+
return `enact-docs-search — hybrid semantic + keyword search over docs/
|
|
24
30
|
|
|
25
31
|
Usage:
|
|
26
|
-
enact-docs-search index --repo <path> [--
|
|
27
|
-
enact-docs-search prepare --repo <path> [--
|
|
28
|
-
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>]
|
|
36
|
+
enact-docs-search doctor [--json]
|
|
29
37
|
|
|
30
38
|
Options:
|
|
31
39
|
--repo <path> Target repository root. If omitted, auto-detected by
|
|
32
|
-
walking up from the current directory for docs
|
|
33
|
-
.plans/, or .specs/
|
|
34
|
-
--scope <scope> docs | plans | specs | all (default: all)
|
|
40
|
+
walking up from the current directory for docs/
|
|
35
41
|
--mode <mode> hybrid | keyword | semantic (default: hybrid, query only)
|
|
36
|
-
--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
|
|
37
47
|
--force Full rebuild, ignoring the incremental manifest (index/prepare only)
|
|
38
48
|
--keyword-only Skip embedding generation entirely (index only, much faster)
|
|
39
49
|
--exclude <glob> Additional glob to exclude from scanning; repeatable
|
|
40
|
-
--json Emit machine-readable JSON instead of text (query
|
|
50
|
+
--json Emit machine-readable JSON instead of text (query/doctor)
|
|
51
|
+
-V, --version Print version and exit
|
|
41
52
|
|
|
42
53
|
Query automatically incrementally refreshes a missing or stale cache. Use
|
|
43
54
|
index --force only for an explicit full rebuild.
|
|
44
55
|
|
|
45
56
|
Exit codes: 0 = matches found, 1 = no matches, 2 = usage/dependency error.`;
|
|
46
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
|
+
}
|
|
47
138
|
function parseArgs(argv) {
|
|
48
139
|
const parsed = {
|
|
49
140
|
positional: [],
|
|
50
|
-
|
|
141
|
+
explain: false,
|
|
142
|
+
rawRank: false,
|
|
51
143
|
mode: "hybrid",
|
|
52
144
|
limit: 10,
|
|
53
145
|
force: false,
|
|
@@ -59,16 +151,25 @@ function parseArgs(argv) {
|
|
|
59
151
|
const arg = argv[i];
|
|
60
152
|
switch (arg) {
|
|
61
153
|
case "--repo":
|
|
62
|
-
parsed.repo = argv
|
|
63
|
-
break;
|
|
64
|
-
case "--scope":
|
|
65
|
-
parsed.scope = argv[++i];
|
|
154
|
+
parsed.repo = requireValue(argv, ++i, arg);
|
|
66
155
|
break;
|
|
67
156
|
case "--mode":
|
|
68
|
-
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");
|
|
69
170
|
break;
|
|
70
171
|
case "--limit":
|
|
71
|
-
parsed.limit =
|
|
172
|
+
parsed.limit = parsePositiveInteger(argv, ++i, arg);
|
|
72
173
|
break;
|
|
73
174
|
case "--force":
|
|
74
175
|
parsed.force = true;
|
|
@@ -77,7 +178,7 @@ function parseArgs(argv) {
|
|
|
77
178
|
parsed.keywordOnly = true;
|
|
78
179
|
break;
|
|
79
180
|
case "--exclude":
|
|
80
|
-
parsed.exclude.push(argv
|
|
181
|
+
parsed.exclude.push(requireValue(argv, ++i, arg));
|
|
81
182
|
break;
|
|
82
183
|
case "--json":
|
|
83
184
|
parsed.json = true;
|
|
@@ -88,6 +189,8 @@ function parseArgs(argv) {
|
|
|
88
189
|
process.exit(0);
|
|
89
190
|
break;
|
|
90
191
|
default:
|
|
192
|
+
if (arg.startsWith("-"))
|
|
193
|
+
fail(`unknown option '${arg}'`);
|
|
91
194
|
parsed.positional.push(arg);
|
|
92
195
|
}
|
|
93
196
|
}
|
|
@@ -108,28 +211,21 @@ function info(message) {
|
|
|
108
211
|
}
|
|
109
212
|
/**
|
|
110
213
|
* Auto-detect a repo root when --repo is omitted: walk up from cwd looking
|
|
111
|
-
* for a directory that has
|
|
214
|
+
* for a directory that has docs/. Stops at the
|
|
112
215
|
* filesystem root. Returns null if nothing is found, so the caller can fail
|
|
113
216
|
* with a clear message rather than silently picking the wrong directory.
|
|
114
217
|
*/
|
|
115
218
|
function detectRepoRoot(startDir) {
|
|
116
219
|
let dir = startDir;
|
|
117
220
|
for (;;) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return dir;
|
|
121
|
-
}
|
|
221
|
+
if (existsSync(join(dir, DOCS_ROOT)))
|
|
222
|
+
return dir;
|
|
122
223
|
const parent = dirname(dir);
|
|
123
224
|
if (parent === dir)
|
|
124
225
|
return null;
|
|
125
226
|
dir = parent;
|
|
126
227
|
}
|
|
127
228
|
}
|
|
128
|
-
function validateScope(scope) {
|
|
129
|
-
if (!["docs", "plans", "specs", "all"].includes(scope)) {
|
|
130
|
-
fail(`unknown scope '${scope}' (use docs, plans, specs, or all)`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
229
|
function validateMode(mode) {
|
|
134
230
|
if (!["keyword", "semantic", "hybrid"].includes(mode)) {
|
|
135
231
|
fail(`unknown mode '${mode}' (use keyword, semantic, or hybrid)`);
|
|
@@ -139,7 +235,7 @@ function resolveRepo(args) {
|
|
|
139
235
|
if (!args.repo) {
|
|
140
236
|
const detected = detectRepoRoot(process.cwd());
|
|
141
237
|
if (!detected) {
|
|
142
|
-
fail("--repo <path> was not given, and no docs
|
|
238
|
+
fail("--repo <path> was not given, and no docs/ found walking up from " +
|
|
143
239
|
process.cwd() +
|
|
144
240
|
" — pass --repo explicitly");
|
|
145
241
|
}
|
|
@@ -149,13 +245,11 @@ function resolveRepo(args) {
|
|
|
149
245
|
}
|
|
150
246
|
async function cmdIndex(args) {
|
|
151
247
|
resolveRepo(args);
|
|
152
|
-
|
|
153
|
-
info(`root: ${args.repo} (scope: ${args.scope})`);
|
|
248
|
+
info(`root: ${args.repo}`);
|
|
154
249
|
const t0 = Date.now();
|
|
155
250
|
let lastPhase = "";
|
|
156
251
|
const result = await runIndex({
|
|
157
252
|
repoPath: args.repo,
|
|
158
|
-
scope: args.scope,
|
|
159
253
|
force: args.force,
|
|
160
254
|
skipEmbeddings: args.keywordOnly,
|
|
161
255
|
exclude: args.exclude,
|
|
@@ -171,7 +265,7 @@ async function cmdIndex(args) {
|
|
|
171
265
|
},
|
|
172
266
|
});
|
|
173
267
|
process.stderr.write("\n");
|
|
174
|
-
console.log(`enact-docs-search: indexed
|
|
268
|
+
console.log(`enact-docs-search: indexed docs/ — ` +
|
|
175
269
|
`${result.filesScanned} files scanned, ${result.filesChanged} changed, ${result.filesRemoved} removed, ` +
|
|
176
270
|
`${result.chunksIndexed} chunks, ${result.embeddingsGenerated} embeddings ` +
|
|
177
271
|
`(${(Date.now() - t0)}ms)`);
|
|
@@ -179,7 +273,6 @@ async function cmdIndex(args) {
|
|
|
179
273
|
}
|
|
180
274
|
async function cmdPrepare(args) {
|
|
181
275
|
resolveRepo(args);
|
|
182
|
-
validateScope(args.scope);
|
|
183
276
|
await ensureRepoCache(args.repo);
|
|
184
277
|
const embeddingService = new EmbeddingService({
|
|
185
278
|
modelCacheDir: repoModelCacheDir(args.repo),
|
|
@@ -189,35 +282,49 @@ async function cmdPrepare(args) {
|
|
|
189
282
|
await embeddingService.embed("semantic search bootstrap");
|
|
190
283
|
await runIndex({
|
|
191
284
|
repoPath: args.repo,
|
|
192
|
-
scope: args.scope,
|
|
193
285
|
force: args.force,
|
|
194
286
|
exclude: args.exclude,
|
|
195
287
|
allowRemoteModels: true,
|
|
196
288
|
});
|
|
197
289
|
console.log(`enact-docs-search: prepared cache at ${repoCacheRoot(args.repo)}`);
|
|
198
290
|
}
|
|
291
|
+
async function cmdDoctor(args) {
|
|
292
|
+
const report = await runDoctor();
|
|
293
|
+
if (args.json) {
|
|
294
|
+
console.log(JSON.stringify(report, null, 2));
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
console.log(renderDoctor(report));
|
|
298
|
+
}
|
|
299
|
+
if (!report.healthy)
|
|
300
|
+
process.exitCode = 2;
|
|
301
|
+
}
|
|
199
302
|
async function cmdQuery(args) {
|
|
200
|
-
const query = args.positional
|
|
303
|
+
const query = normalizeQuery(args.positional.join(" "));
|
|
201
304
|
if (!query)
|
|
202
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
|
+
}
|
|
203
312
|
resolveRepo(args);
|
|
204
|
-
validateScope(args.scope);
|
|
205
313
|
validateMode(args.mode);
|
|
206
314
|
await ensureRepoCache(args.repo);
|
|
207
315
|
// In --json mode, stdout must be pure JSON for downstream parsers — route
|
|
208
316
|
// this status line to stderr instead of suppressing it outright.
|
|
209
317
|
if (args.json) {
|
|
210
|
-
console.error(`root: ${args.repo} (
|
|
318
|
+
console.error(`root: ${args.repo} (mode: ${args.mode})`);
|
|
211
319
|
}
|
|
212
320
|
else {
|
|
213
|
-
info(`root: ${args.repo} (
|
|
321
|
+
info(`root: ${args.repo} (mode: ${args.mode})`);
|
|
214
322
|
}
|
|
215
323
|
const cacheDir = repoCacheDir(args.repo);
|
|
216
324
|
const manifest = await readManifest(cacheDir);
|
|
217
325
|
// Freshness check (I-08: refresh stale or missing results before serving them).
|
|
218
|
-
const
|
|
219
|
-
const
|
|
220
|
-
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");
|
|
221
328
|
const hasVectorFile = args.mode !== "keyword" && await vectorIndexExists(cacheDir);
|
|
222
329
|
const vectorSidecar = args.mode !== "keyword" ? await readVectorSidecar(cacheDir) : null;
|
|
223
330
|
const needsVectorIndex = args.mode !== "keyword" &&
|
|
@@ -233,7 +340,7 @@ async function cmdQuery(args) {
|
|
|
233
340
|
: freshness.vectorStaleCount > 0
|
|
234
341
|
? `${freshness.vectorStaleCount} stale vector file(s)`
|
|
235
342
|
: "no usable vector index";
|
|
236
|
-
const message = `enact-docs-search: refreshing
|
|
343
|
+
const message = `enact-docs-search: refreshing docs/ index (${reason})`;
|
|
237
344
|
if (args.json)
|
|
238
345
|
console.error(message);
|
|
239
346
|
else
|
|
@@ -241,7 +348,6 @@ async function cmdQuery(args) {
|
|
|
241
348
|
try {
|
|
242
349
|
await runIndex({
|
|
243
350
|
repoPath: args.repo,
|
|
244
|
-
scope: args.scope,
|
|
245
351
|
force: rebuildVectorIndex,
|
|
246
352
|
skipEmbeddings: args.mode === "keyword",
|
|
247
353
|
exclude: args.exclude,
|
|
@@ -263,7 +369,7 @@ async function cmdQuery(args) {
|
|
|
263
369
|
if (args.mode !== "keyword") {
|
|
264
370
|
const hasVectors = await vectorIndexExists(cacheDir);
|
|
265
371
|
if (!hasVectors) {
|
|
266
|
-
fail(
|
|
372
|
+
fail("no vector index after automatic refresh");
|
|
267
373
|
}
|
|
268
374
|
const sidecar = await readVectorSidecar(cacheDir);
|
|
269
375
|
if (!sidecar)
|
|
@@ -287,32 +393,51 @@ async function cmdQuery(args) {
|
|
|
287
393
|
const searchService = new SearchService(docStore, vectorStore, embeddingService);
|
|
288
394
|
const results = await searchService.search(query, {
|
|
289
395
|
mode: args.mode,
|
|
290
|
-
scope: args.scope,
|
|
291
396
|
limit: args.limit,
|
|
292
397
|
highlight,
|
|
293
398
|
repoRoot: args.repo,
|
|
399
|
+
minVectorScore: args.minScore,
|
|
400
|
+
minCoverage: args.minCoverage,
|
|
401
|
+
rawRank: args.rawRank,
|
|
294
402
|
});
|
|
295
403
|
if (args.json) {
|
|
296
|
-
console.log(JSON.stringify({ query, mode: args.mode,
|
|
404
|
+
console.log(JSON.stringify({ query, mode: args.mode, results }, null, 2));
|
|
297
405
|
}
|
|
298
406
|
else {
|
|
299
|
-
printResults(query, results);
|
|
407
|
+
printResults(query, results, args.explain);
|
|
300
408
|
}
|
|
301
409
|
process.exit(results.length > 0 ? 0 : 1);
|
|
302
410
|
}
|
|
303
|
-
|
|
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) {
|
|
304
423
|
console.log(`${results.length} result(s) for "${query}"`);
|
|
305
424
|
if (results.length === 0)
|
|
306
425
|
return;
|
|
307
426
|
results.forEach((r, i) => {
|
|
308
427
|
console.log("");
|
|
309
428
|
const heading = r.headingBreadcrumb?.length ? ` [${r.headingBreadcrumb.join(" > ")}]` : "";
|
|
310
|
-
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));
|
|
311
432
|
console.log(` ${r.snippet ?? ""}`);
|
|
312
433
|
});
|
|
313
434
|
}
|
|
314
435
|
async function main() {
|
|
315
436
|
const [command, ...rest] = process.argv.slice(2);
|
|
437
|
+
if (command === "-V" || command === "--version") {
|
|
438
|
+
console.log(PACKAGE_VERSION);
|
|
439
|
+
process.exit(0);
|
|
440
|
+
}
|
|
316
441
|
if (!command || command === "-h" || command === "--help") {
|
|
317
442
|
console.log(usage());
|
|
318
443
|
process.exit(command ? 0 : 2);
|
|
@@ -328,8 +453,11 @@ async function main() {
|
|
|
328
453
|
case "query":
|
|
329
454
|
await cmdQuery(args);
|
|
330
455
|
break;
|
|
456
|
+
case "doctor":
|
|
457
|
+
await cmdDoctor(args);
|
|
458
|
+
break;
|
|
331
459
|
default:
|
|
332
|
-
|
|
460
|
+
await cmdQuery(parseArgs([command, ...rest]));
|
|
333
461
|
}
|
|
334
462
|
}
|
|
335
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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-errors.d.ts","sourceRoot":"","sources":["../src/dependency-errors.ts"],"names":[],"mappings":"AAIA,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAoBvF;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAOrF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
function messageOf(error) {
|
|
2
|
+
return error instanceof Error ? error.message : String(error);
|
|
3
|
+
}
|
|
4
|
+
export function nativeDependencyRemediation(packageName, error) {
|
|
5
|
+
const detail = messageOf(error);
|
|
6
|
+
const lower = detail.toLowerCase();
|
|
7
|
+
if (lower.includes("node-gyp") || lower.includes("gyp err") || lower.includes("binding.gyp")) {
|
|
8
|
+
return `The native build failed; install Python 3 and the platform C/C++ toolchain, then run \`npm rebuild ${packageName} --foreground-scripts\`.`;
|
|
9
|
+
}
|
|
10
|
+
if (lower.includes("build/release") ||
|
|
11
|
+
lower.includes("dlopen") ||
|
|
12
|
+
lower.includes("invalid elf") ||
|
|
13
|
+
lower.includes("mach-o") ||
|
|
14
|
+
lower.includes("node_module_version") ||
|
|
15
|
+
lower.includes("symbol not found")) {
|
|
16
|
+
return `The native binding is missing or incompatible with this Node.js/platform combination; run \`npm rebuild ${packageName} --foreground-scripts\`.`;
|
|
17
|
+
}
|
|
18
|
+
return `The package may be missing or its lifecycle script may have been blocked; reinstall with \`npm install ${packageName} --foreground-scripts --allow-scripts=${packageName}\`.`;
|
|
19
|
+
}
|
|
20
|
+
export function semanticDependencyMessage(packageName, error) {
|
|
21
|
+
return (`Semantic search could not load ${packageName}.\n` +
|
|
22
|
+
`${nativeDependencyRemediation(packageName, error)}\n` +
|
|
23
|
+
"Run `enact-docs-search doctor` to check the native/runtime dependencies.\n" +
|
|
24
|
+
`Original error: ${messageOf(error)}`);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=dependency-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-errors.js","sourceRoot":"","sources":["../src/dependency-errors.ts"],"names":[],"mappings":"AAAA,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAmB,EAAE,KAAc;IAC7E,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7F,OAAO,sGAAsG,WAAW,0BAA0B,CAAC;IACrJ,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC/B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACrC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAClC,CAAC;QACD,OAAO,2GAA2G,WAAW,0BAA0B,CAAC;IAC1J,CAAC;IAED,OAAO,0GAA0G,WAAW,yCAAyC,WAAW,KAAK,CAAC;AACxL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAmB,EAAE,KAAc;IAC3E,OAAO,CACL,kCAAkC,WAAW,KAAK;QAClD,GAAG,2BAA2B,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI;QACtD,4EAA4E;QAC5E,mBAAmB,SAAS,CAAC,KAAK,CAAC,EAAE,CACtC,CAAC;AACJ,CAAC"}
|
package/dist/doctor.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface DoctorCheck {
|
|
2
|
+
name: string;
|
|
3
|
+
ok: boolean;
|
|
4
|
+
detail: string;
|
|
5
|
+
}
|
|
6
|
+
export interface DoctorReport {
|
|
7
|
+
healthy: boolean;
|
|
8
|
+
node: string;
|
|
9
|
+
platform: NodeJS.Platform;
|
|
10
|
+
arch: string;
|
|
11
|
+
checks: DoctorCheck[];
|
|
12
|
+
}
|
|
13
|
+
export declare function buildToolingGuidance(platform: NodeJS.Platform): string;
|
|
14
|
+
export declare function formatDoctorFailure(name: string, error: unknown, platform?: NodeJS.Platform): string;
|
|
15
|
+
export declare function runDoctor(): Promise<DoctorReport>;
|
|
16
|
+
export declare function renderDoctor(report: DoctorReport): string;
|
|
17
|
+
//# sourceMappingURL=doctor.d.ts.map
|