@crewx/search 0.1.10-rc.1 → 0.1.10-rc.100
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/SKILL.md +45 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -1
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +175 -19
- package/dist/src/engine.js.map +1 -1
- package/dist/src/types.d.ts +16 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +3 -3
package/SKILL.md
CHANGED
|
@@ -56,6 +56,35 @@ npx search "database" . --json
|
|
|
56
56
|
| `--glob=<pattern>` | File pattern | `**/*.md` |
|
|
57
57
|
| `--limit=<n>` | Limit result count | 20 |
|
|
58
58
|
| `--json` | JSON format output | false |
|
|
59
|
+
| `--scope=all\|highlights\|body` | Field scoring scope | `all` |
|
|
60
|
+
| `--highlight-boost=<n>` | Extra multiplier for highlight fields | 1.0 |
|
|
61
|
+
|
|
62
|
+
### OKF + Highlight Weighted Search
|
|
63
|
+
|
|
64
|
+
For `.md` documents with OKF frontmatter and `crewx.highlights`, the engine
|
|
65
|
+
decomposes the document into separate scored fields:
|
|
66
|
+
|
|
67
|
+
| Field | Weight | Description |
|
|
68
|
+
|---|---:|---|
|
|
69
|
+
| `okfTitle` | 5 | OKF document title |
|
|
70
|
+
| `highlightQuotes` | 4 | User-highlighted quotes (active only) |
|
|
71
|
+
| `okfDescription` | 3 | OKF description field |
|
|
72
|
+
| `highlightNotes` | 3 | User notes on highlights |
|
|
73
|
+
| `okfTags` | 2 | OKF tags |
|
|
74
|
+
| `highlightIntents` | 2 | Highlight intents (important/risk/question…) |
|
|
75
|
+
| `highlightColors` | 1.5 | Highlight colors |
|
|
76
|
+
| `highlightedHeadings` | 1.5 | Headings where highlights were placed |
|
|
77
|
+
| `okfLinks` | 1 | Markdown link targets in body |
|
|
78
|
+
| `body` | 1 | Full document body |
|
|
79
|
+
|
|
80
|
+
`orphaned`, `deleted`, and `superseded` highlights are excluded from the index.
|
|
81
|
+
Each result includes `matchedField` showing which field drove the match.
|
|
82
|
+
|
|
83
|
+
**Scope modes:**
|
|
84
|
+
|
|
85
|
+
- `--scope=all` (default): all fields with base weights
|
|
86
|
+
- `--scope=highlights`: double the weight of highlight fields (quote/note/intent)
|
|
87
|
+
- `--scope=body`: halve highlight weights, double body weight
|
|
59
88
|
|
|
60
89
|
## grep vs search
|
|
61
90
|
|
|
@@ -99,6 +128,22 @@ npx search "error handling exception" . --glob="**/*.md"
|
|
|
99
128
|
# [2] docs/error-handling.md
|
|
100
129
|
```
|
|
101
130
|
|
|
131
|
+
### OKF Highlight-Scoped Search
|
|
132
|
+
```bash
|
|
133
|
+
# Search only what the user highlighted as important
|
|
134
|
+
npx search "important decision" ./docs --scope=highlights
|
|
135
|
+
|
|
136
|
+
# Result:
|
|
137
|
+
# [8.0] docs/design.md [highlightQuotes]
|
|
138
|
+
# Design Spec
|
|
139
|
+
|
|
140
|
+
# Prioritize full body over highlights
|
|
141
|
+
npx search "architecture" ./docs --scope=body
|
|
142
|
+
|
|
143
|
+
# Apply extra 2x boost on highlights
|
|
144
|
+
npx search "API design" ./docs --highlight-boost=2
|
|
145
|
+
```
|
|
146
|
+
|
|
102
147
|
## How It Works
|
|
103
148
|
|
|
104
149
|
1. **File collection**: Find target files using glob pattern
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AAkDA,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF9D"}
|
package/dist/cli.js
CHANGED
|
@@ -84,6 +84,8 @@ async function main(inputArgs) {
|
|
|
84
84
|
glob: '**/*.md',
|
|
85
85
|
limit: 20,
|
|
86
86
|
json: false,
|
|
87
|
+
scope: 'all',
|
|
88
|
+
highlightBoost: 1.0,
|
|
87
89
|
};
|
|
88
90
|
for (let i = 0; i < args.length; i++) {
|
|
89
91
|
const arg = args[i];
|
|
@@ -98,6 +100,17 @@ async function main(inputArgs) {
|
|
|
98
100
|
else if (arg === '--json') {
|
|
99
101
|
options.json = true;
|
|
100
102
|
}
|
|
103
|
+
else if (arg.startsWith('--scope=')) {
|
|
104
|
+
const scopeVal = arg.split('=')[1];
|
|
105
|
+
if (scopeVal === 'all' || scopeVal === 'highlights' || scopeVal === 'body') {
|
|
106
|
+
options.scope = scopeVal;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (arg.startsWith('--highlight-boost=')) {
|
|
110
|
+
const boost = parseFloat(arg.split('=')[1] ?? '1');
|
|
111
|
+
if (!isNaN(boost) && boost > 0)
|
|
112
|
+
options.highlightBoost = boost;
|
|
113
|
+
}
|
|
101
114
|
else if (!options.query) {
|
|
102
115
|
options.query = arg;
|
|
103
116
|
}
|
|
@@ -120,6 +133,11 @@ Options:
|
|
|
120
133
|
--glob=<pattern> File pattern (default: **/*.md)
|
|
121
134
|
--limit=<n> Max results (default: 20)
|
|
122
135
|
--json JSON output
|
|
136
|
+
--scope=all|highlights|body Field scoring scope (default: all)
|
|
137
|
+
all: OKF metadata + highlights + body
|
|
138
|
+
highlights: boost highlight fields (2x)
|
|
139
|
+
body: prioritize body over highlights
|
|
140
|
+
--highlight-boost=<n> Extra multiplier for highlight fields (default: 1.0)
|
|
123
141
|
--version Show version
|
|
124
142
|
--help, -h Show this help
|
|
125
143
|
|
|
@@ -127,6 +145,8 @@ Examples:
|
|
|
127
145
|
search "API authentication" ./docs
|
|
128
146
|
search "error handling" ./src --glob="**/*.{js,ts}" --limit=10
|
|
129
147
|
search "database connection" . --json
|
|
148
|
+
search "important decision" ./docs --scope=highlights
|
|
149
|
+
search "architecture" ./docs --scope=body
|
|
130
150
|
|
|
131
151
|
For detailed usage guide: search usage
|
|
132
152
|
`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAe,MAAM,SAAS,CAAC;AAkMlF,qBAAa,YAAY;YAKT,gBAAgB;IAuD9B,OAAO,CAAC,aAAa;IAoEf,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAwE1C,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAmBpE"}
|
package/dist/src/engine.js
CHANGED
|
@@ -39,6 +39,18 @@ const path = __importStar(require("path"));
|
|
|
39
39
|
const glob_1 = require("glob");
|
|
40
40
|
const knowledge_core_1 = require("@crewx/knowledge-core");
|
|
41
41
|
const MAX_BODY_SIZE = 10 * 1024 * 1024;
|
|
42
|
+
const BASE_WEIGHTS = {
|
|
43
|
+
okfTitle: 5,
|
|
44
|
+
highlightQuotes: 4,
|
|
45
|
+
okfDescription: 3,
|
|
46
|
+
highlightNotes: 3,
|
|
47
|
+
okfTags: 2,
|
|
48
|
+
highlightIntents: 2,
|
|
49
|
+
highlightColors: 1.5,
|
|
50
|
+
highlightedHeadings: 1.5,
|
|
51
|
+
okfLinks: 1,
|
|
52
|
+
body: 1,
|
|
53
|
+
};
|
|
42
54
|
function stringifyMetadataValue(value) {
|
|
43
55
|
if (value == null)
|
|
44
56
|
return '';
|
|
@@ -60,6 +72,119 @@ function stringifyMetadataValue(value) {
|
|
|
60
72
|
}
|
|
61
73
|
return '';
|
|
62
74
|
}
|
|
75
|
+
function extractMarkdownLinks(body) {
|
|
76
|
+
const linkRe = /\[[^\]]*\]\(([^)]+)\)/g;
|
|
77
|
+
const links = [];
|
|
78
|
+
let m;
|
|
79
|
+
while ((m = linkRe.exec(body)) !== null) {
|
|
80
|
+
if (m[1] && !m[1].startsWith('http'))
|
|
81
|
+
links.push(m[1]);
|
|
82
|
+
}
|
|
83
|
+
return links.join(' ');
|
|
84
|
+
}
|
|
85
|
+
function parseOkfFields(data, body) {
|
|
86
|
+
const result = {};
|
|
87
|
+
if (data['type'])
|
|
88
|
+
result.okfType = String(data['type']);
|
|
89
|
+
if (data['title'])
|
|
90
|
+
result.okfTitle = stringifyMetadataValue(data['title']);
|
|
91
|
+
if (data['description'])
|
|
92
|
+
result.okfDescription = stringifyMetadataValue(data['description']);
|
|
93
|
+
if (data['resource'])
|
|
94
|
+
result.okfResource = String(data['resource']);
|
|
95
|
+
if (data['tags'])
|
|
96
|
+
result.okfTags = stringifyMetadataValue(data['tags']);
|
|
97
|
+
const links = extractMarkdownLinks(body);
|
|
98
|
+
if (links)
|
|
99
|
+
result.okfLinks = links;
|
|
100
|
+
const crewx = data['crewx'];
|
|
101
|
+
if (crewx && typeof crewx === 'object' && !Array.isArray(crewx)) {
|
|
102
|
+
const highlights = crewx['highlights'];
|
|
103
|
+
if (Array.isArray(highlights)) {
|
|
104
|
+
const active = highlights.filter((h) => h !== null &&
|
|
105
|
+
typeof h === 'object' &&
|
|
106
|
+
h.status !== 'orphaned' &&
|
|
107
|
+
h.status !== 'deleted' &&
|
|
108
|
+
h.status !== 'superseded');
|
|
109
|
+
const quotes = active.map(h => h.quote ?? '').filter(Boolean).join(' ');
|
|
110
|
+
const notes = active.map(h => h.note ?? '').filter(Boolean).join(' ');
|
|
111
|
+
const intents = active.map(h => h.intent ?? '').filter(Boolean).join(' ');
|
|
112
|
+
const colors = active.map(h => h.color ?? '').filter(Boolean).join(' ');
|
|
113
|
+
const headings = active
|
|
114
|
+
.map(h => h.context?.heading ?? '')
|
|
115
|
+
.filter(Boolean)
|
|
116
|
+
.join(' ');
|
|
117
|
+
if (quotes)
|
|
118
|
+
result.highlightQuotes = quotes;
|
|
119
|
+
if (notes)
|
|
120
|
+
result.highlightNotes = notes;
|
|
121
|
+
if (intents)
|
|
122
|
+
result.highlightIntents = intents;
|
|
123
|
+
if (colors)
|
|
124
|
+
result.highlightColors = colors;
|
|
125
|
+
if (headings)
|
|
126
|
+
result.highlightedHeadings = headings;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
function buildFieldWeights(scope, highlightBoost) {
|
|
132
|
+
const hb = highlightBoost;
|
|
133
|
+
if (scope === 'highlights') {
|
|
134
|
+
return {
|
|
135
|
+
okfTitle: BASE_WEIGHTS['okfTitle'],
|
|
136
|
+
highlightQuotes: BASE_WEIGHTS['highlightQuotes'] * 2 * hb,
|
|
137
|
+
okfDescription: BASE_WEIGHTS['okfDescription'],
|
|
138
|
+
highlightNotes: BASE_WEIGHTS['highlightNotes'] * 2 * hb,
|
|
139
|
+
okfTags: BASE_WEIGHTS['okfTags'],
|
|
140
|
+
highlightIntents: BASE_WEIGHTS['highlightIntents'] * 2 * hb,
|
|
141
|
+
highlightColors: BASE_WEIGHTS['highlightColors'] * hb,
|
|
142
|
+
highlightedHeadings: BASE_WEIGHTS['highlightedHeadings'] * hb,
|
|
143
|
+
okfLinks: BASE_WEIGHTS['okfLinks'],
|
|
144
|
+
body: BASE_WEIGHTS['body'],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
if (scope === 'body') {
|
|
148
|
+
return {
|
|
149
|
+
okfTitle: BASE_WEIGHTS['okfTitle'],
|
|
150
|
+
highlightQuotes: 1,
|
|
151
|
+
okfDescription: BASE_WEIGHTS['okfDescription'],
|
|
152
|
+
highlightNotes: 1,
|
|
153
|
+
okfTags: BASE_WEIGHTS['okfTags'],
|
|
154
|
+
highlightIntents: 0.5,
|
|
155
|
+
highlightColors: 0.5,
|
|
156
|
+
highlightedHeadings: 0.5,
|
|
157
|
+
okfLinks: BASE_WEIGHTS['okfLinks'],
|
|
158
|
+
body: 2,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
okfTitle: BASE_WEIGHTS['okfTitle'],
|
|
163
|
+
highlightQuotes: BASE_WEIGHTS['highlightQuotes'] * hb,
|
|
164
|
+
okfDescription: BASE_WEIGHTS['okfDescription'],
|
|
165
|
+
highlightNotes: BASE_WEIGHTS['highlightNotes'] * hb,
|
|
166
|
+
okfTags: BASE_WEIGHTS['okfTags'],
|
|
167
|
+
highlightIntents: BASE_WEIGHTS['highlightIntents'] * hb,
|
|
168
|
+
highlightColors: BASE_WEIGHTS['highlightColors'] * hb,
|
|
169
|
+
highlightedHeadings: BASE_WEIGHTS['highlightedHeadings'] * hb,
|
|
170
|
+
okfLinks: BASE_WEIGHTS['okfLinks'],
|
|
171
|
+
body: BASE_WEIGHTS['body'],
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function detectMatchedField(doc, query, weights) {
|
|
175
|
+
const tokens = query.toLowerCase().split(/\s+/).filter(Boolean);
|
|
176
|
+
const sortedFields = Object.entries(weights)
|
|
177
|
+
.sort(([, a], [, b]) => b - a)
|
|
178
|
+
.map(([f]) => f);
|
|
179
|
+
const docRecord = doc;
|
|
180
|
+
for (const field of sortedFields) {
|
|
181
|
+
const value = String(docRecord[field] ?? '').toLowerCase();
|
|
182
|
+
if (value && tokens.some(t => value.includes(t))) {
|
|
183
|
+
return field;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return 'body';
|
|
187
|
+
}
|
|
63
188
|
class SearchEngine {
|
|
64
189
|
async collectDocuments(searchPath, globPattern) {
|
|
65
190
|
const pattern = path.join(searchPath, globPattern);
|
|
@@ -73,11 +198,13 @@ class SearchEngine {
|
|
|
73
198
|
const relativePath = path.relative(searchPath, file);
|
|
74
199
|
let title = '';
|
|
75
200
|
let body = content;
|
|
201
|
+
let okfFields = {};
|
|
76
202
|
if (file.endsWith('.md')) {
|
|
77
203
|
try {
|
|
78
204
|
const parsed = (0, knowledge_core_1.parseFrontmatter)(content);
|
|
79
205
|
title = stringifyMetadataValue(parsed.data['title']) || stringifyMetadataValue(parsed.data['summary']);
|
|
80
206
|
body = parsed.content;
|
|
207
|
+
okfFields = parseOkfFields(parsed.data, body);
|
|
81
208
|
}
|
|
82
209
|
catch {
|
|
83
210
|
const lines = content.split('\n');
|
|
@@ -92,6 +219,8 @@ class SearchEngine {
|
|
|
92
219
|
fullPath: file,
|
|
93
220
|
title,
|
|
94
221
|
body: body.substring(0, MAX_BODY_SIZE),
|
|
222
|
+
okfTitle: okfFields.okfTitle ?? title,
|
|
223
|
+
...okfFields,
|
|
95
224
|
});
|
|
96
225
|
}
|
|
97
226
|
catch {
|
|
@@ -99,9 +228,10 @@ class SearchEngine {
|
|
|
99
228
|
}
|
|
100
229
|
return { docs, fileCount: files.length };
|
|
101
230
|
}
|
|
102
|
-
runBm25Search(docs, query, limit) {
|
|
231
|
+
runBm25Search(docs, query, limit, scope = 'all', highlightBoost = 1.0) {
|
|
103
232
|
if (docs.length < 3)
|
|
104
233
|
return [];
|
|
234
|
+
const weights = buildFieldWeights(scope, highlightBoost);
|
|
105
235
|
const kcEntries = docs.map((doc, idx) => ({
|
|
106
236
|
id: String(idx),
|
|
107
237
|
type: 'document',
|
|
@@ -110,35 +240,59 @@ class SearchEngine {
|
|
|
110
240
|
date: '',
|
|
111
241
|
summary: doc.title,
|
|
112
242
|
body: doc.body,
|
|
243
|
+
okfTitle: doc.okfTitle ?? doc.title,
|
|
244
|
+
okfDescription: doc.okfDescription ?? '',
|
|
245
|
+
okfTags: doc.okfTags ?? '',
|
|
246
|
+
okfLinks: doc.okfLinks ?? '',
|
|
247
|
+
highlightQuotes: doc.highlightQuotes ?? '',
|
|
248
|
+
highlightNotes: doc.highlightNotes ?? '',
|
|
249
|
+
highlightIntents: doc.highlightIntents ?? '',
|
|
250
|
+
highlightColors: doc.highlightColors ?? '',
|
|
251
|
+
highlightedHeadings: doc.highlightedHeadings ?? '',
|
|
113
252
|
title: doc.title,
|
|
114
253
|
file: doc.file,
|
|
115
254
|
fullPath: doc.fullPath,
|
|
116
255
|
}));
|
|
117
|
-
const scored = (0, knowledge_core_1.searchEntries)(kcEntries, query,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
256
|
+
const scored = (0, knowledge_core_1.searchEntries)(kcEntries, query, weights);
|
|
257
|
+
return scored
|
|
258
|
+
.slice(0, limit)
|
|
259
|
+
.map(entry => {
|
|
260
|
+
const doc = docs[Number(entry.id)];
|
|
261
|
+
const result = {
|
|
262
|
+
file: entry['file'],
|
|
263
|
+
fullPath: entry['fullPath'],
|
|
264
|
+
title: entry['title'],
|
|
265
|
+
body: entry.body || '',
|
|
266
|
+
score: entry._score,
|
|
267
|
+
okfTitle: entry['okfTitle'],
|
|
268
|
+
okfDescription: entry['okfDescription'],
|
|
269
|
+
okfTags: entry['okfTags'],
|
|
270
|
+
okfLinks: entry['okfLinks'],
|
|
271
|
+
highlightQuotes: entry['highlightQuotes'],
|
|
272
|
+
highlightNotes: entry['highlightNotes'],
|
|
273
|
+
highlightIntents: entry['highlightIntents'],
|
|
274
|
+
highlightColors: entry['highlightColors'],
|
|
275
|
+
highlightedHeadings: entry['highlightedHeadings'],
|
|
276
|
+
matchedField: doc ? detectMatchedField(doc, query, weights) : 'body',
|
|
277
|
+
};
|
|
278
|
+
return result;
|
|
279
|
+
});
|
|
126
280
|
}
|
|
127
281
|
async search(opts) {
|
|
128
|
-
const { query, searchPath: rawPath = '.', glob: globPattern = '**/*.md', limit = 20, json = false, } = opts;
|
|
282
|
+
const { query, searchPath: rawPath = '.', glob: globPattern = '**/*.md', limit = 20, json = false, scope = 'all', highlightBoost = 1.0, } = opts;
|
|
129
283
|
const searchPath = path.resolve(rawPath);
|
|
130
284
|
const { docs, fileCount } = await this.collectDocuments(searchPath, globPattern);
|
|
131
285
|
if (fileCount === 0) {
|
|
132
|
-
console.log(
|
|
286
|
+
console.log(`No files found: ${path.join(searchPath, globPattern)}`);
|
|
133
287
|
process.exit(1);
|
|
134
288
|
}
|
|
135
289
|
if (docs.length === 0) {
|
|
136
|
-
console.log('
|
|
290
|
+
console.log('No readable files found.');
|
|
137
291
|
process.exit(1);
|
|
138
292
|
}
|
|
139
|
-
const results = this.runBm25Search(docs, query, limit);
|
|
293
|
+
const results = this.runBm25Search(docs, query, limit, scope, highlightBoost);
|
|
140
294
|
if (results.length === 0) {
|
|
141
|
-
console.log(`'${query}'
|
|
295
|
+
console.log(`No results found for '${query}'.`);
|
|
142
296
|
process.exit(0);
|
|
143
297
|
}
|
|
144
298
|
if (json) {
|
|
@@ -146,13 +300,15 @@ class SearchEngine {
|
|
|
146
300
|
file: r.file,
|
|
147
301
|
score: r.score,
|
|
148
302
|
title: r.title.substring(0, 100),
|
|
303
|
+
matchedField: r.matchedField,
|
|
149
304
|
})), null, 2));
|
|
150
305
|
}
|
|
151
306
|
else {
|
|
152
|
-
console.log(`\n🔍
|
|
307
|
+
console.log(`\n🔍 Search: "${query}" (${results.length} results across ${fileCount} files)\n`);
|
|
153
308
|
for (const r of results) {
|
|
154
309
|
const title = r.title.substring(0, 60).replace(/\n/g, ' ');
|
|
155
|
-
|
|
310
|
+
const fieldTag = r.matchedField ? ` [${r.matchedField}]` : '';
|
|
311
|
+
console.log(`[${r.score} pts] ${r.file}${fieldTag}`);
|
|
156
312
|
if (title)
|
|
157
313
|
console.log(` ${title}`);
|
|
158
314
|
}
|
|
@@ -168,13 +324,13 @@ class SearchEngine {
|
|
|
168
324
|
}
|
|
169
325
|
}
|
|
170
326
|
async searchAndReturn(opts) {
|
|
171
|
-
const { query, searchPath: rawPath = '.', glob: globPattern = '**/*.md', limit = 20, } = opts;
|
|
327
|
+
const { query, searchPath: rawPath = '.', glob: globPattern = '**/*.md', limit = 20, scope = 'all', highlightBoost = 1.0, } = opts;
|
|
172
328
|
const searchPath = path.resolve(rawPath);
|
|
173
329
|
const { docs } = await this.collectDocuments(searchPath, globPattern);
|
|
174
330
|
if (docs.length === 0) {
|
|
175
331
|
return [];
|
|
176
332
|
}
|
|
177
|
-
return this.runBm25Search(docs, query, limit);
|
|
333
|
+
return this.runBm25Search(docs, query, limit, scope, highlightBoost);
|
|
178
334
|
}
|
|
179
335
|
}
|
|
180
336
|
exports.SearchEngine = SearchEngine;
|
package/dist/src/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,22 +1,38 @@
|
|
|
1
|
+
export type SearchScope = 'all' | 'highlights' | 'body';
|
|
1
2
|
export interface SearchOptions {
|
|
2
3
|
query: string;
|
|
3
4
|
searchPath?: string;
|
|
4
5
|
glob?: string;
|
|
5
6
|
limit?: number;
|
|
6
7
|
json?: boolean;
|
|
8
|
+
highlightBoost?: number;
|
|
9
|
+
scope?: SearchScope;
|
|
7
10
|
}
|
|
8
11
|
export interface Document {
|
|
9
12
|
file: string;
|
|
10
13
|
fullPath: string;
|
|
11
14
|
title: string;
|
|
12
15
|
body: string;
|
|
16
|
+
okfType?: string;
|
|
17
|
+
okfTitle?: string;
|
|
18
|
+
okfDescription?: string;
|
|
19
|
+
okfResource?: string;
|
|
20
|
+
okfTags?: string;
|
|
21
|
+
okfLinks?: string;
|
|
22
|
+
highlightQuotes?: string;
|
|
23
|
+
highlightNotes?: string;
|
|
24
|
+
highlightIntents?: string;
|
|
25
|
+
highlightColors?: string;
|
|
26
|
+
highlightedHeadings?: string;
|
|
13
27
|
}
|
|
14
28
|
export interface SearchResult extends Document {
|
|
15
29
|
score: number;
|
|
30
|
+
matchedField?: string;
|
|
16
31
|
}
|
|
17
32
|
export interface JsonResult {
|
|
18
33
|
file: string;
|
|
19
34
|
score: number;
|
|
20
35
|
title: string;
|
|
36
|
+
matchedField?: string;
|
|
21
37
|
}
|
|
22
38
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewx/search",
|
|
3
|
-
"version": "0.1.10-rc.
|
|
3
|
+
"version": "0.1.10-rc.100",
|
|
4
4
|
"description": "BM25 full-text search engine for CrewX documents and code",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/src/engine.js",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"glob": "^10.0.0",
|
|
37
|
-
"@crewx/shared": "0.0.
|
|
38
|
-
"@crewx/knowledge-core": "0.1.17-rc.
|
|
37
|
+
"@crewx/shared": "0.0.6",
|
|
38
|
+
"@crewx/knowledge-core": "0.1.17-rc.114"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/node": "^20.0.0",
|