@crewx/search 0.1.9 → 0.1.10-rc.2

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 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 "중요한 결정" ./docs --scope=highlights
135
+
136
+ # Result:
137
+ # [8.0] docs/설계서.md [highlightQuotes]
138
+ # Design Spec
139
+
140
+ # Prioritize full body over highlights
141
+ npx search "아키텍처" ./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":";AAgDA,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwE9D"}
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 "중요한 결정" ./docs --scope=highlights
149
+ search "아키텍처" ./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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKrE,qBAAa,YAAY;YAKT,gBAAgB;IAkD9B,OAAO,CAAC,aAAa;IAwCf,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAoE1C,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAiBpE"}
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"}
@@ -39,6 +39,152 @@ 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
+ };
54
+ function stringifyMetadataValue(value) {
55
+ if (value == null)
56
+ return '';
57
+ if (typeof value === 'string')
58
+ return value;
59
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
60
+ return String(value);
61
+ }
62
+ if (value instanceof Date)
63
+ return value.toISOString();
64
+ if (Array.isArray(value)) {
65
+ return value.map((item) => stringifyMetadataValue(item)).filter(Boolean).join(' ');
66
+ }
67
+ if (typeof value === 'object') {
68
+ return Object.values(value)
69
+ .map((item) => stringifyMetadataValue(item))
70
+ .filter(Boolean)
71
+ .join(' ');
72
+ }
73
+ return '';
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
+ }
42
188
  class SearchEngine {
43
189
  async collectDocuments(searchPath, globPattern) {
44
190
  const pattern = path.join(searchPath, globPattern);
@@ -52,11 +198,13 @@ class SearchEngine {
52
198
  const relativePath = path.relative(searchPath, file);
53
199
  let title = '';
54
200
  let body = content;
201
+ let okfFields = {};
55
202
  if (file.endsWith('.md')) {
56
203
  try {
57
204
  const parsed = (0, knowledge_core_1.parseFrontmatter)(content);
58
- title = parsed.data['title'] || parsed.data['summary'] || '';
205
+ title = stringifyMetadataValue(parsed.data['title']) || stringifyMetadataValue(parsed.data['summary']);
59
206
  body = parsed.content;
207
+ okfFields = parseOkfFields(parsed.data, body);
60
208
  }
61
209
  catch {
62
210
  const lines = content.split('\n');
@@ -71,6 +219,8 @@ class SearchEngine {
71
219
  fullPath: file,
72
220
  title,
73
221
  body: body.substring(0, MAX_BODY_SIZE),
222
+ okfTitle: okfFields.okfTitle ?? title,
223
+ ...okfFields,
74
224
  });
75
225
  }
76
226
  catch {
@@ -78,9 +228,10 @@ class SearchEngine {
78
228
  }
79
229
  return { docs, fileCount: files.length };
80
230
  }
81
- runBm25Search(docs, query, limit) {
231
+ runBm25Search(docs, query, limit, scope = 'all', highlightBoost = 1.0) {
82
232
  if (docs.length < 3)
83
233
  return [];
234
+ const weights = buildFieldWeights(scope, highlightBoost);
84
235
  const kcEntries = docs.map((doc, idx) => ({
85
236
  id: String(idx),
86
237
  type: 'document',
@@ -89,22 +240,46 @@ class SearchEngine {
89
240
  date: '',
90
241
  summary: doc.title,
91
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 ?? '',
92
252
  title: doc.title,
93
253
  file: doc.file,
94
254
  fullPath: doc.fullPath,
95
255
  }));
96
- const scored = (0, knowledge_core_1.searchEntries)(kcEntries, query, { title: 3, body: 1 });
97
- const results = scored.map(entry => ({
98
- file: entry['file'],
99
- fullPath: entry['fullPath'],
100
- title: entry['title'],
101
- body: entry.body || '',
102
- score: entry._score,
103
- }));
104
- return results.slice(0, limit);
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
+ });
105
280
  }
106
281
  async search(opts) {
107
- 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;
108
283
  const searchPath = path.resolve(rawPath);
109
284
  const { docs, fileCount } = await this.collectDocuments(searchPath, globPattern);
110
285
  if (fileCount === 0) {
@@ -115,7 +290,7 @@ class SearchEngine {
115
290
  console.log('읽을 수 있는 파일이 없습니다.');
116
291
  process.exit(1);
117
292
  }
118
- const results = this.runBm25Search(docs, query, limit);
293
+ const results = this.runBm25Search(docs, query, limit, scope, highlightBoost);
119
294
  if (results.length === 0) {
120
295
  console.log(`'${query}' 관련 결과를 찾을 수 없습니다.`);
121
296
  process.exit(0);
@@ -125,13 +300,15 @@ class SearchEngine {
125
300
  file: r.file,
126
301
  score: r.score,
127
302
  title: r.title.substring(0, 100),
303
+ matchedField: r.matchedField,
128
304
  })), null, 2));
129
305
  }
130
306
  else {
131
307
  console.log(`\n🔍 검색: "${query}" (${results.length}건, ${fileCount}개 파일 중)\n`);
132
308
  for (const r of results) {
133
309
  const title = r.title.substring(0, 60).replace(/\n/g, ' ');
134
- console.log(`[${r.score}점] ${r.file}`);
310
+ const fieldTag = r.matchedField ? ` [${r.matchedField}]` : '';
311
+ console.log(`[${r.score}점] ${r.file}${fieldTag}`);
135
312
  if (title)
136
313
  console.log(` ${title}`);
137
314
  }
@@ -147,13 +324,13 @@ class SearchEngine {
147
324
  }
148
325
  }
149
326
  async searchAndReturn(opts) {
150
- 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;
151
328
  const searchPath = path.resolve(rawPath);
152
329
  const { docs } = await this.collectDocuments(searchPath, globPattern);
153
330
  if (docs.length === 0) {
154
331
  return [];
155
332
  }
156
- return this.runBm25Search(docs, query, limit);
333
+ return this.runBm25Search(docs, query, limit, scope, highlightBoost);
157
334
  }
158
335
  }
159
336
  exports.SearchEngine = SearchEngine;
@@ -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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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAKA,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;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf"}
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.9",
3
+ "version": "0.1.10-rc.2",
4
4
  "description": "BM25 full-text search engine for CrewX documents and code",
5
5
  "type": "commonjs",
6
6
  "main": "dist/src/engine.js",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "glob": "^10.0.0",
37
37
  "@crewx/shared": "0.0.5",
38
- "@crewx/knowledge-core": "0.1.6"
38
+ "@crewx/knowledge-core": "0.1.17"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^20.0.0",