@veewo/claw-core 0.1.21 → 0.1.23

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.
@@ -0,0 +1,361 @@
1
+ const QUERY_TOKEN_RE = /[\p{L}\p{N}_]+/gu;
2
+ const SHORT_CJK_RE = /[\u3040-\u30ff\u3400-\u9fff\uac00-\ud7af\u3131-\u3163]/u;
3
+ const PURE_HAN_RE = /^[\u4e00-\u9fff]+$/u;
4
+ const ASCII_WORD_RE = /^[a-z]+$/i;
5
+ const STOP_WORDS_EN = new Set([
6
+ "a",
7
+ "an",
8
+ "the",
9
+ "this",
10
+ "that",
11
+ "these",
12
+ "those",
13
+ "i",
14
+ "me",
15
+ "my",
16
+ "we",
17
+ "our",
18
+ "you",
19
+ "your",
20
+ "he",
21
+ "she",
22
+ "it",
23
+ "they",
24
+ "them",
25
+ "is",
26
+ "are",
27
+ "was",
28
+ "were",
29
+ "be",
30
+ "been",
31
+ "being",
32
+ "have",
33
+ "has",
34
+ "had",
35
+ "do",
36
+ "does",
37
+ "did",
38
+ "will",
39
+ "would",
40
+ "could",
41
+ "should",
42
+ "can",
43
+ "may",
44
+ "might",
45
+ "in",
46
+ "on",
47
+ "at",
48
+ "to",
49
+ "for",
50
+ "of",
51
+ "with",
52
+ "by",
53
+ "from",
54
+ "about",
55
+ "into",
56
+ "through",
57
+ "during",
58
+ "before",
59
+ "after",
60
+ "above",
61
+ "below",
62
+ "between",
63
+ "under",
64
+ "over",
65
+ "and",
66
+ "or",
67
+ "but",
68
+ "if",
69
+ "then",
70
+ "because",
71
+ "as",
72
+ "while",
73
+ "when",
74
+ "where",
75
+ "what",
76
+ "which",
77
+ "who",
78
+ "how",
79
+ "why",
80
+ "yesterday",
81
+ "today",
82
+ "tomorrow",
83
+ "earlier",
84
+ "later",
85
+ "recently",
86
+ "ago",
87
+ "just",
88
+ "now",
89
+ "thing",
90
+ "things",
91
+ "stuff",
92
+ "something",
93
+ "anything",
94
+ "everything",
95
+ "nothing",
96
+ "please",
97
+ "help",
98
+ "find",
99
+ "show",
100
+ "get",
101
+ "tell",
102
+ "give",
103
+ ]);
104
+ const STOP_WORDS_ZH = new Set([
105
+ "\u6211",
106
+ "\u6211\u4eec",
107
+ "\u4f60",
108
+ "\u4f60\u4eec",
109
+ "\u4ed6",
110
+ "\u5979",
111
+ "\u5b83",
112
+ "\u4ed6\u4eec",
113
+ "\u8fd9",
114
+ "\u90a3",
115
+ "\u8fd9\u4e2a",
116
+ "\u90a3\u4e2a",
117
+ "\u8fd9\u4e9b",
118
+ "\u90a3\u4e9b",
119
+ "\u7684",
120
+ "\u4e86",
121
+ "\u7740",
122
+ "\u8fc7",
123
+ "\u5f97",
124
+ "\u5730",
125
+ "\u5417",
126
+ "\u5462",
127
+ "\u5427",
128
+ "\u554a",
129
+ "\u5440",
130
+ "\u561b",
131
+ "\u5566",
132
+ "\u662f",
133
+ "\u6709",
134
+ "\u5728",
135
+ "\u88ab",
136
+ "\u628a",
137
+ "\u7ed9",
138
+ "\u8ba9",
139
+ "\u7528",
140
+ "\u5230",
141
+ "\u53bb",
142
+ "\u6765",
143
+ "\u505a",
144
+ "\u8bf4",
145
+ "\u770b",
146
+ "\u627e",
147
+ "\u60f3",
148
+ "\u8981",
149
+ "\u80fd",
150
+ "\u4f1a",
151
+ "\u53ef\u4ee5",
152
+ "\u548c",
153
+ "\u4e0e",
154
+ "\u6216",
155
+ "\u4f46",
156
+ "\u4f46\u662f",
157
+ "\u56e0\u4e3a",
158
+ "\u6240\u4ee5",
159
+ "\u5982\u679c",
160
+ "\u867d\u7136",
161
+ "\u800c",
162
+ "\u4e5f",
163
+ "\u90fd",
164
+ "\u5c31",
165
+ "\u8fd8",
166
+ "\u53c8",
167
+ "\u518d",
168
+ "\u624d",
169
+ "\u53ea",
170
+ "\u4e4b\u524d",
171
+ "\u4ee5\u524d",
172
+ "\u4e4b\u540e",
173
+ "\u4ee5\u540e",
174
+ "\u521a\u624d",
175
+ "\u73b0\u5728",
176
+ "\u6628\u5929",
177
+ "\u4eca\u5929",
178
+ "\u660e\u5929",
179
+ "\u6700\u8fd1",
180
+ "\u4e1c\u897f",
181
+ "\u4e8b\u60c5",
182
+ "\u4e8b",
183
+ "\u4ec0\u4e48",
184
+ "\u54ea\u4e2a",
185
+ "\u54ea\u4e9b",
186
+ "\u600e\u4e48",
187
+ "\u4e3a\u4ec0\u4e48",
188
+ "\u591a\u5c11",
189
+ "\u8bf7",
190
+ "\u5e2e",
191
+ "\u5e2e\u5fd9",
192
+ "\u544a\u8bc9",
193
+ ]);
194
+ const CHINESE_STOP_FRAGMENTS = [
195
+ ...STOP_WORDS_ZH,
196
+ "\u8ddf",
197
+ "\u4e00\u4e0b",
198
+ "\u4e00\u4e0b\u5b50",
199
+ "\u8bf7\u95ee",
200
+ "\u5e2e\u6211",
201
+ "\u7ed9\u6211",
202
+ "\u770b\u770b",
203
+ "\u67e5\u4e0b",
204
+ "\u5173\u4e8e",
205
+ "\u6709\u5173",
206
+ ].sort((left, right) => right.length - left.length);
207
+ const CHINESE_SUFFIX_KEYWORDS = [
208
+ "\u65b9\u6848",
209
+ "\u7cfb\u7edf",
210
+ "\u6a21\u5f0f",
211
+ "\u8bbe\u8ba1",
212
+ "\u5b9e\u73b0",
213
+ "\u6d41\u7a0b",
214
+ "\u89c4\u5219",
215
+ "\u6587\u6863",
216
+ "\u8bf4\u660e",
217
+ "\u529f\u80fd",
218
+ "\u9875\u9762",
219
+ "\u63a5\u53e3",
220
+ ];
221
+ const WEAK_STANDALONE_KEYWORDS = new Set(CHINESE_SUFFIX_KEYWORDS);
222
+ const WEAK_CONVERSATIONAL_KEYWORDS = new Set([
223
+ "\u8ba8\u8bba",
224
+ "\u8bb0\u5f55",
225
+ "\u5386\u53f2",
226
+ "\u4e4b\u524d",
227
+ "\u4e4b\u540e",
228
+ ]);
229
+ export function buildProjectKeywordSearchPlan(raw) {
230
+ const terms = extractProjectKeywordTerms(raw);
231
+ if (terms.length === 0) {
232
+ return [];
233
+ }
234
+ const primary = splitKeywordTerms(terms);
235
+ const plan = [
236
+ {
237
+ query: primary.matchTerms.length > 0 ? buildAndQuery(primary.matchTerms) : null,
238
+ matchedTerms: terms,
239
+ substringTerms: primary.substringTerms,
240
+ },
241
+ ];
242
+ if (terms.length === 1) {
243
+ return plan;
244
+ }
245
+ const strongTerms = terms.filter((term) => !isWeakStandaloneKeyword(term));
246
+ const standaloneWeakTerms = terms.filter((term) => WEAK_STANDALONE_KEYWORDS.has(term));
247
+ if (strongTerms.length > 0 && standaloneWeakTerms.length > 0) {
248
+ for (const weakTerm of standaloneWeakTerms) {
249
+ const combinedTerms = Array.from(new Set([...strongTerms, weakTerm]));
250
+ if (combinedTerms.length <= 1) {
251
+ continue;
252
+ }
253
+ const entry = splitKeywordTerms(combinedTerms);
254
+ plan.push({
255
+ query: entry.matchTerms.length > 0 ? buildAndQuery(entry.matchTerms) : null,
256
+ matchedTerms: combinedTerms,
257
+ substringTerms: entry.substringTerms,
258
+ });
259
+ }
260
+ }
261
+ for (const term of terms) {
262
+ if (isWeakStandaloneKeyword(term)) {
263
+ continue;
264
+ }
265
+ const entry = splitKeywordTerms([term]);
266
+ plan.push({
267
+ query: entry.matchTerms.length > 0 ? buildAndQuery(entry.matchTerms) : null,
268
+ matchedTerms: [term],
269
+ substringTerms: entry.substringTerms,
270
+ });
271
+ }
272
+ return plan;
273
+ }
274
+ export function extractProjectKeywordTerms(raw) {
275
+ const baseTerms = raw
276
+ .match(QUERY_TOKEN_RE)
277
+ ?.map((term) => normalizeProjectKeywordTerm(term))
278
+ .filter((term) => Boolean(term) && !isProjectStopWord(term) && isValidProjectKeyword(term)) ?? [];
279
+ return Array.from(new Set(baseTerms.flatMap((term) => expandProjectKeywordTerm(term)).filter(Boolean)));
280
+ }
281
+ function normalizeProjectKeywordTerm(term) {
282
+ const normalized = term.trim();
283
+ return ASCII_WORD_RE.test(normalized) ? normalized.toLowerCase() : normalized;
284
+ }
285
+ export function buildProjectQueryIntent(raw) {
286
+ const terms = extractProjectKeywordTerms(raw);
287
+ const strongTerms = terms.filter((term) => !isWeakStandaloneKeyword(term));
288
+ const weakTerms = terms.filter((term) => isWeakStandaloneKeyword(term));
289
+ const embeddingTerms = strongTerms.length > 0 ? strongTerms : terms;
290
+ return {
291
+ terms,
292
+ strongTerms,
293
+ weakTerms,
294
+ embeddingText: embeddingTerms.join(" ").trim() || raw.trim(),
295
+ };
296
+ }
297
+ function splitKeywordTerms(terms) {
298
+ const matchTerms = [];
299
+ const substringTerms = [];
300
+ for (const term of terms) {
301
+ if (usesSubstringFallback(term)) {
302
+ substringTerms.push(term);
303
+ continue;
304
+ }
305
+ matchTerms.push(term);
306
+ }
307
+ return { matchTerms, substringTerms };
308
+ }
309
+ function usesSubstringFallback(term) {
310
+ return SHORT_CJK_RE.test(term) && Array.from(term).length < 3;
311
+ }
312
+ function buildAndQuery(terms) {
313
+ return terms.map((term) => `"${term.replaceAll('"', "")}"`).join(" AND ");
314
+ }
315
+ function isWeakStandaloneKeyword(term) {
316
+ return WEAK_STANDALONE_KEYWORDS.has(term) || WEAK_CONVERSATIONAL_KEYWORDS.has(term);
317
+ }
318
+ function expandProjectKeywordTerm(term) {
319
+ if (!PURE_HAN_RE.test(term) || Array.from(term).length <= 4) {
320
+ return [term];
321
+ }
322
+ const normalized = CHINESE_STOP_FRAGMENTS.reduce((value, fragment) => value.replaceAll(fragment, " "), term);
323
+ const segments = normalized
324
+ .split(/\s+/)
325
+ .map((entry) => entry.trim())
326
+ .filter((entry) => Array.from(entry).length >= 2 && !isProjectStopWord(entry));
327
+ if (segments.length === 0) {
328
+ return [term];
329
+ }
330
+ const expanded = segments.flatMap((segment) => splitChineseKeywordSegment(segment));
331
+ return expanded.length > 0 ? expanded : [term];
332
+ }
333
+ function splitChineseKeywordSegment(segment) {
334
+ for (const suffix of CHINESE_SUFFIX_KEYWORDS) {
335
+ if (!segment.endsWith(suffix)) {
336
+ continue;
337
+ }
338
+ const prefix = segment.slice(0, segment.length - suffix.length).trim();
339
+ if (Array.from(prefix).length >= 2) {
340
+ return [prefix, suffix];
341
+ }
342
+ }
343
+ return [segment];
344
+ }
345
+ function isProjectStopWord(term) {
346
+ const normalized = term.trim().toLowerCase();
347
+ return STOP_WORDS_EN.has(normalized) || CHINESE_STOP_FRAGMENTS.includes(term);
348
+ }
349
+ function isValidProjectKeyword(term) {
350
+ if (!term.trim()) {
351
+ return false;
352
+ }
353
+ if (ASCII_WORD_RE.test(term) && term.length < 3) {
354
+ return false;
355
+ }
356
+ if (/^\d+$/u.test(term)) {
357
+ return false;
358
+ }
359
+ return true;
360
+ }
361
+ //# sourceMappingURL=memory-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-query.js","sourceRoot":"","sources":["../../src/memory-query.ts"],"names":[],"mappings":"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"}