skill-creator 0.0.0 → 1.0.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 +148 -19
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +265 -260
- package/dist/cli.js.map +1 -1
- package/dist/commands/addContent.d.ts +5 -0
- package/dist/commands/addContent.d.ts.map +1 -0
- package/dist/commands/addContent.js +74 -0
- package/dist/commands/addContent.js.map +1 -0
- package/dist/commands/buildIndex.d.ts +5 -0
- package/dist/commands/buildIndex.d.ts.map +1 -0
- package/dist/commands/buildIndex.js +17 -0
- package/dist/commands/buildIndex.js.map +1 -0
- package/dist/commands/downloadContext7.d.ts +5 -0
- package/dist/commands/downloadContext7.d.ts.map +1 -0
- package/dist/commands/downloadContext7.js +62 -0
- package/dist/commands/downloadContext7.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +89 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/initCc.d.ts +5 -0
- package/dist/commands/initCc.d.ts.map +1 -0
- package/dist/commands/initCc.js +26 -0
- package/dist/commands/initCc.js.map +1 -0
- package/dist/commands/listContent.d.ts +5 -0
- package/dist/commands/listContent.d.ts.map +1 -0
- package/dist/commands/listContent.js +35 -0
- package/dist/commands/listContent.js.map +1 -0
- package/dist/commands/searchContent.d.ts +5 -0
- package/dist/commands/searchContent.d.ts.map +1 -0
- package/dist/commands/searchContent.js +98 -0
- package/dist/commands/searchContent.js.map +1 -0
- package/dist/commands/shared.d.ts +23 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +92 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/updateContext7.d.ts +5 -0
- package/dist/commands/updateContext7.d.ts.map +1 -0
- package/dist/commands/updateContext7.js +28 -0
- package/dist/commands/updateContext7.js.map +1 -0
- package/dist/core/autoSearchAdapter.d.ts +42 -0
- package/dist/core/autoSearchAdapter.d.ts.map +1 -0
- package/dist/core/autoSearchAdapter.js +116 -0
- package/dist/core/autoSearchAdapter.js.map +1 -0
- package/dist/core/chromaLocalSearch.d.ts +26 -0
- package/dist/core/chromaLocalSearch.d.ts.map +1 -0
- package/dist/core/chromaLocalSearch.js +212 -0
- package/dist/core/chromaLocalSearch.js.map +1 -0
- package/dist/core/chromaLocalSimple.d.ts +24 -0
- package/dist/core/chromaLocalSimple.d.ts.map +1 -0
- package/dist/core/chromaLocalSimple.js +216 -0
- package/dist/core/chromaLocalSimple.js.map +1 -0
- package/dist/core/chromaSearchAdapter.d.ts +86 -0
- package/dist/core/chromaSearchAdapter.d.ts.map +1 -0
- package/dist/core/chromaSearchAdapter.js +477 -0
- package/dist/core/chromaSearchAdapter.js.map +1 -0
- package/dist/core/chromaSearchImproved.d.ts +29 -0
- package/dist/core/chromaSearchImproved.d.ts.map +1 -0
- package/dist/core/chromaSearchImproved.js +259 -0
- package/dist/core/chromaSearchImproved.js.map +1 -0
- package/dist/core/chromaServerManager.d.ts +64 -0
- package/dist/core/chromaServerManager.d.ts.map +1 -0
- package/dist/core/chromaServerManager.js +186 -0
- package/dist/core/chromaServerManager.js.map +1 -0
- package/dist/core/contentManager.d.ts +1 -0
- package/dist/core/contentManager.d.ts.map +1 -1
- package/dist/core/contentManager.js +75 -21
- package/dist/core/contentManager.js.map +1 -1
- package/dist/core/fuseSearch.d.ts +25 -0
- package/dist/core/fuseSearch.d.ts.map +1 -0
- package/dist/core/fuseSearch.js +198 -0
- package/dist/core/fuseSearch.js.map +1 -0
- package/dist/core/fuzzySearch.d.ts +66 -0
- package/dist/core/fuzzySearch.d.ts.map +1 -0
- package/dist/core/fuzzySearch.js +271 -0
- package/dist/core/fuzzySearch.js.map +1 -0
- package/dist/core/fuzzySearchAdapter.d.ts +33 -0
- package/dist/core/fuzzySearchAdapter.d.ts.map +1 -0
- package/dist/core/fuzzySearchAdapter.js +185 -0
- package/dist/core/fuzzySearchAdapter.js.map +1 -0
- package/dist/core/portUtils.d.ts +51 -0
- package/dist/core/portUtils.d.ts.map +1 -0
- package/dist/core/portUtils.js +120 -0
- package/dist/core/portUtils.js.map +1 -0
- package/dist/core/runScript.d.ts +1 -1
- package/dist/core/runScript.d.ts.map +1 -1
- package/dist/core/runScript.js +27 -210
- package/dist/core/runScript.js.map +1 -1
- package/dist/core/searchAdapter.d.ts +48 -0
- package/dist/core/searchAdapter.d.ts.map +1 -0
- package/dist/core/searchAdapter.js +6 -0
- package/dist/core/searchAdapter.js.map +1 -0
- package/dist/core/searchEngineFactory.d.ts +30 -0
- package/dist/core/searchEngineFactory.d.ts.map +1 -0
- package/dist/core/searchEngineFactory.js +41 -0
- package/dist/core/searchEngineFactory.js.map +1 -0
- package/dist/core/simpleLocalSearch.d.ts +50 -0
- package/dist/core/simpleLocalSearch.d.ts.map +1 -0
- package/dist/core/simpleLocalSearch.js +406 -0
- package/dist/core/simpleLocalSearch.js.map +1 -0
- package/dist/core/skillCreator.d.ts +0 -2
- package/dist/core/skillCreator.d.ts.map +1 -1
- package/dist/core/skillCreator.js +20 -92
- package/dist/core/skillCreator.js.map +1 -1
- package/dist/core/unifiedSearch.d.ts +57 -11
- package/dist/core/unifiedSearch.d.ts.map +1 -1
- package/dist/core/unifiedSearch.js +88 -29
- package/dist/core/unifiedSearch.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/search_format/enhancedFormatter.d.ts +109 -0
- package/dist/search_format/enhancedFormatter.d.ts.map +1 -0
- package/dist/search_format/enhancedFormatter.js +262 -0
- package/dist/search_format/enhancedFormatter.js.map +1 -0
- package/dist/search_format/index.d.ts +10 -0
- package/dist/search_format/index.d.ts.map +1 -0
- package/dist/search_format/index.js +22 -0
- package/dist/search_format/index.js.map +1 -0
- package/dist/search_format/listFormatter.d.ts +16 -0
- package/dist/search_format/listFormatter.d.ts.map +1 -0
- package/dist/search_format/listFormatter.js +51 -0
- package/dist/search_format/listFormatter.js.map +1 -0
- package/dist/search_format/types.d.ts +69 -0
- package/dist/search_format/types.d.ts.map +1 -0
- package/dist/search_format/types.js +5 -0
- package/dist/search_format/types.js.map +1 -0
- package/dist/test/testFuzzy.d.ts +3 -0
- package/dist/test/testFuzzy.d.ts.map +1 -0
- package/dist/test/testFuzzy.js +72 -0
- package/dist/test/testFuzzy.js.map +1 -0
- package/dist/test-fuzzy.d.ts +6 -0
- package/dist/test-fuzzy.d.ts.map +1 -0
- package/dist/test-fuzzy.js +65 -0
- package/dist/test-fuzzy.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/package.d.ts +17 -0
- package/dist/utils/package.d.ts.map +1 -1
- package/dist/utils/package.js +51 -14
- package/dist/utils/package.js.map +1 -1
- package/package.json +9 -8
- package/templates/skill-creator.md +65 -153
- package/templates/skill-creator.zh-CN.md +93 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 端口管理工具
|
|
3
|
+
* 用于动态分配和管理 ChromaDB 服务器端口
|
|
4
|
+
*/
|
|
5
|
+
import { createServer } from 'node:net';
|
|
6
|
+
import { createRequire } from 'node:module';
|
|
7
|
+
/**
|
|
8
|
+
* 查找可用的端口
|
|
9
|
+
* @param startPort 起始端口号
|
|
10
|
+
* @param maxPort 最大端口号
|
|
11
|
+
* @returns 可用的端口号
|
|
12
|
+
*/
|
|
13
|
+
export async function findAvailablePort() {
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const tryPort = () => {
|
|
16
|
+
const server = createServer();
|
|
17
|
+
server.listen(0, () => {
|
|
18
|
+
const actualPort = server.address()?.port;
|
|
19
|
+
server.close(() => {
|
|
20
|
+
resolve(actualPort);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
tryPort();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 检查端口是否可用
|
|
29
|
+
* @param port 端口号
|
|
30
|
+
* @returns 端口是否可用
|
|
31
|
+
*/
|
|
32
|
+
export async function isPortAvailable(port) {
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
const server = createServer();
|
|
35
|
+
server.listen(port, () => {
|
|
36
|
+
const actualPort = server.address()?.port;
|
|
37
|
+
server.close(() => {
|
|
38
|
+
resolve(actualPort === port);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
server.on('error', () => {
|
|
42
|
+
resolve(false);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 等待端口上的服务启动
|
|
48
|
+
* @param port 端口号
|
|
49
|
+
* @param timeout 超时时间(毫秒)
|
|
50
|
+
* @returns 服务是否成功启动
|
|
51
|
+
*/
|
|
52
|
+
export async function waitForService(port, timeout = 10000) {
|
|
53
|
+
return new Promise((resolve) => {
|
|
54
|
+
const startTime = Date.now();
|
|
55
|
+
const checkService = () => {
|
|
56
|
+
if (Date.now() - startTime > timeout) {
|
|
57
|
+
resolve(false);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const require = createRequire(import.meta.url);
|
|
61
|
+
const socket = new (require('net').Socket)();
|
|
62
|
+
socket.setTimeout(1000);
|
|
63
|
+
socket.connect(port, 'localhost', () => {
|
|
64
|
+
socket.destroy();
|
|
65
|
+
resolve(true);
|
|
66
|
+
});
|
|
67
|
+
socket.on('error', () => {
|
|
68
|
+
setTimeout(checkService, 500);
|
|
69
|
+
});
|
|
70
|
+
socket.on('timeout', () => {
|
|
71
|
+
socket.destroy();
|
|
72
|
+
setTimeout(checkService, 500);
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
checkService();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 端口管理器类
|
|
80
|
+
*/
|
|
81
|
+
export class PortManager {
|
|
82
|
+
usedPorts = new Set();
|
|
83
|
+
basePort;
|
|
84
|
+
constructor(basePort = 8000) {
|
|
85
|
+
this.basePort = basePort;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 分配一个可用端口
|
|
89
|
+
* @returns 分配的端口号
|
|
90
|
+
*/
|
|
91
|
+
async allocatePort() {
|
|
92
|
+
let port = this.basePort;
|
|
93
|
+
// 找到下一个可用端口
|
|
94
|
+
while (this.usedPorts.has(port) || !(await isPortAvailable(port))) {
|
|
95
|
+
port++;
|
|
96
|
+
}
|
|
97
|
+
this.usedPorts.add(port);
|
|
98
|
+
return port;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 释放端口
|
|
102
|
+
* @param port 要释放的端口号
|
|
103
|
+
*/
|
|
104
|
+
releasePort(port) {
|
|
105
|
+
this.usedPorts.delete(port);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 获取当前已使用的端口数量
|
|
109
|
+
*/
|
|
110
|
+
getUsedPortCount() {
|
|
111
|
+
return this.usedPorts.size;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 清理所有端口
|
|
115
|
+
*/
|
|
116
|
+
cleanup() {
|
|
117
|
+
this.usedPorts.clear();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=portUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portUtils.js","sourceRoot":"","sources":["../../src/core/portUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,UAAU,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;YAE7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;gBACpB,MAAM,UAAU,GAAI,MAAM,CAAC,OAAO,EAAkB,EAAE,IAAI,CAAA;gBAC1D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChB,OAAO,CAAC,UAAU,CAAC,CAAA;gBACrB,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;QAE7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACvB,MAAM,UAAU,GAAI,MAAM,CAAC,OAAO,EAAU,EAAE,IAAI,CAAA;YAClD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,UAAkB,KAAK;IACxE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;gBACrC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACd,OAAM;YACR,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA;YAE5C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAEvB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;gBACrC,MAAM,CAAC,OAAO,EAAE,CAAA;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACxB,MAAM,CAAC,OAAO,EAAE,CAAA;gBAChB,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,YAAY,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,SAAS,GAAgB,IAAI,GAAG,EAAE,CAAA;IAClC,QAAQ,CAAQ;IAExB,YAAY,WAAmB,IAAI;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAExB,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAClE,IAAI,EAAE,CAAA;QACR,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACF"}
|
package/dist/core/runScript.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runScript.d.ts","sourceRoot":"","sources":["../../src/core/runScript.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"runScript.d.ts","sourceRoot":"","sources":["../../src/core/runScript.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7E"}
|
package/dist/core/runScript.js
CHANGED
|
@@ -1,220 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Execute skill scripts
|
|
2
|
+
* Execute skill scripts - simplified version using individual command files
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { searchContent } from '../commands/searchContent.js';
|
|
5
|
+
import { addContent } from '../commands/addContent.js';
|
|
6
|
+
import { downloadContext7 } from '../commands/downloadContext7.js';
|
|
7
|
+
import { init } from '../commands/init.js';
|
|
8
|
+
import { buildIndex } from '../commands/buildIndex.js';
|
|
9
|
+
import { listContent } from '../commands/listContent.js';
|
|
10
|
+
const commands = {
|
|
11
|
+
'search-skill': searchContent,
|
|
12
|
+
add: addContent,
|
|
13
|
+
'add-skill': addContent,
|
|
14
|
+
'download-context7': downloadContext7,
|
|
15
|
+
init: init,
|
|
16
|
+
'build-index': buildIndex,
|
|
17
|
+
'list-content': listContent,
|
|
18
|
+
};
|
|
7
19
|
export async function runScript(script, args) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
20
|
+
// Normalize script name
|
|
21
|
+
const normalizedScript = script.toLowerCase();
|
|
22
|
+
// Find the command
|
|
23
|
+
const command = commands[normalizedScript] || commands[script];
|
|
24
|
+
if (!command) {
|
|
25
|
+
console.error(`❌ Unknown script: ${script}`);
|
|
26
|
+
console.error(`Available scripts: ${Object.keys(commands).join(', ')}`);
|
|
11
27
|
process.exit(1);
|
|
12
28
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
switch (script) {
|
|
16
|
-
case 'search':
|
|
17
|
-
await runSearchScript(config, args);
|
|
18
|
-
break;
|
|
19
|
-
case 'add':
|
|
20
|
-
await runAddScript(config, args);
|
|
21
|
-
break;
|
|
22
|
-
case 'update-context7':
|
|
23
|
-
await runUpdateContext7Script(config, args);
|
|
24
|
-
break;
|
|
25
|
-
case 'build-index':
|
|
26
|
-
await runBuildIndexScript(config, args);
|
|
27
|
-
break;
|
|
28
|
-
case 'list-content':
|
|
29
|
-
await runListContentScript(config, args);
|
|
30
|
-
break;
|
|
31
|
-
default:
|
|
32
|
-
console.error(`❌ Unknown script: ${script}`);
|
|
33
|
-
process.exit(1);
|
|
29
|
+
try {
|
|
30
|
+
await command(args);
|
|
34
31
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
|
|
38
|
-
// Use ChromaDB if available, otherwise fall back to simple search
|
|
39
|
-
const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
|
|
40
|
-
const searchEngine = new UnifiedSearchEngine({
|
|
41
|
-
type: searchType,
|
|
42
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
43
|
-
dbPath: join(process.cwd(), 'assets', 'chroma_db'),
|
|
44
|
-
collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
|
|
45
|
-
});
|
|
46
|
-
// Parse arguments
|
|
47
|
-
const options = parseArgs(args, [
|
|
48
|
-
{ name: 'query', alias: 'q', type: 'string', required: true },
|
|
49
|
-
{ name: 'top-k', type: 'number', default: 5 },
|
|
50
|
-
{ name: 'source', type: 'string', default: 'all' },
|
|
51
|
-
]);
|
|
52
|
-
if (!options.query) {
|
|
53
|
-
console.error('❌ --query is required');
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error(`❌ Error executing ${script}:`, error);
|
|
54
34
|
process.exit(1);
|
|
55
35
|
}
|
|
56
|
-
// Build index if needed
|
|
57
|
-
const referencesDir = join(process.cwd(), 'assets', 'references');
|
|
58
|
-
const hashFile = join(process.cwd(), 'assets', '.last_index_hash');
|
|
59
|
-
await searchEngine.buildIndex(referencesDir, hashFile);
|
|
60
|
-
// Search
|
|
61
|
-
const results = await searchEngine.search(options.query, options['top-k'], options.source !== 'all' ? { source: options.source } : undefined);
|
|
62
|
-
// Display results
|
|
63
|
-
console.log(`\nSearch Results for: '${options.query}'`);
|
|
64
|
-
console.log('='.repeat(50));
|
|
65
|
-
if (results.length === 0) {
|
|
66
|
-
console.log('No results found.');
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
for (let i = 0; i < results.length; i++) {
|
|
70
|
-
const result = results[i];
|
|
71
|
-
console.log(`\n${i + 1}. [Score: ${result.score.toFixed(2)}] ${result.title}`);
|
|
72
|
-
console.log(` Source: ${result.source} (${result.metadata.priority || 'unknown'})`);
|
|
73
|
-
console.log(` File: ${result.file_path}`);
|
|
74
|
-
console.log(` Preview: ${result.content.slice(0, 200).replace(/\n/g, ' ')}...`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
async function runAddScript(config, args) {
|
|
78
|
-
const { ContentManager } = await import('./contentManager.js');
|
|
79
|
-
const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
|
|
80
|
-
const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
|
|
81
|
-
const searchEngine = new UnifiedSearchEngine({
|
|
82
|
-
type: searchType,
|
|
83
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
84
|
-
dbPath: join(process.cwd(), 'assets', 'chroma_db'),
|
|
85
|
-
collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
|
|
86
|
-
});
|
|
87
|
-
const contentManager = new ContentManager({
|
|
88
|
-
searchEngine,
|
|
89
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
90
|
-
});
|
|
91
|
-
// Parse arguments
|
|
92
|
-
const options = parseArgs(args, [
|
|
93
|
-
{ name: 'title', type: 'string', required: true },
|
|
94
|
-
{ name: 'content', type: 'string', required: true },
|
|
95
|
-
{ name: 'force', type: 'boolean' },
|
|
96
|
-
{ name: 'no-update', type: 'boolean' },
|
|
97
|
-
]);
|
|
98
|
-
const result = await contentManager.addUserContent({
|
|
99
|
-
title: options.title,
|
|
100
|
-
content: options.content,
|
|
101
|
-
force: options.force,
|
|
102
|
-
autoUpdate: !options['no-update'],
|
|
103
|
-
});
|
|
104
|
-
console.log(result.message);
|
|
105
|
-
if (result.similarContent && result.similarContent.length > 0) {
|
|
106
|
-
console.log('\nSimilar content found:');
|
|
107
|
-
result.similarContent.forEach((similar, i) => {
|
|
108
|
-
console.log(`\n${i + 1}. [${similar.score.toFixed(2)}] ${similar.title}`);
|
|
109
|
-
console.log(` Source: ${similar.source}`);
|
|
110
|
-
console.log(` Preview: ${similar.preview}`);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
async function runUpdateContext7Script(config, args) {
|
|
115
|
-
const { ContentManager } = await import('./contentManager.js');
|
|
116
|
-
const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
|
|
117
|
-
const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
|
|
118
|
-
const searchEngine = new UnifiedSearchEngine({
|
|
119
|
-
type: searchType,
|
|
120
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
121
|
-
dbPath: join(process.cwd(), 'assets', 'chroma_db'),
|
|
122
|
-
collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
|
|
123
|
-
});
|
|
124
|
-
const contentManager = new ContentManager({
|
|
125
|
-
searchEngine,
|
|
126
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
127
|
-
});
|
|
128
|
-
// Parse arguments
|
|
129
|
-
const options = parseArgs(args, [
|
|
130
|
-
{ name: 'force', type: 'boolean' },
|
|
131
|
-
]);
|
|
132
|
-
const result = await contentManager.updateFromContext7(config.context7LibraryId, options.force);
|
|
133
|
-
console.log(result.message);
|
|
134
|
-
}
|
|
135
|
-
async function runBuildIndexScript(config, args) {
|
|
136
|
-
const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
|
|
137
|
-
const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
|
|
138
|
-
const searchEngine = new UnifiedSearchEngine({
|
|
139
|
-
type: searchType,
|
|
140
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
141
|
-
dbPath: join(process.cwd(), 'assets', 'chroma_db'),
|
|
142
|
-
collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
|
|
143
|
-
});
|
|
144
|
-
// Build index
|
|
145
|
-
const referencesDir = join(process.cwd(), 'assets', 'references');
|
|
146
|
-
const hashFile = join(process.cwd(), 'assets', '.last_index_hash');
|
|
147
|
-
await searchEngine.buildIndex(referencesDir, hashFile);
|
|
148
|
-
// Show stats
|
|
149
|
-
const stats = await searchEngine.getStats();
|
|
150
|
-
console.log(`✓ Index built: ${stats.totalDocuments || 0} documents`);
|
|
151
|
-
}
|
|
152
|
-
async function runListContentScript(config, args) {
|
|
153
|
-
const { ContentManager } = await import('./contentManager.js');
|
|
154
|
-
const { UnifiedSearchEngine } = await import('./unifiedSearch.js');
|
|
155
|
-
const searchType = process.env.USE_CHROMA === 'true' ? 'chroma' : 'simple';
|
|
156
|
-
const searchEngine = new UnifiedSearchEngine({
|
|
157
|
-
type: searchType,
|
|
158
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
159
|
-
dbPath: join(process.cwd(), 'assets', 'chroma_db'),
|
|
160
|
-
collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
|
|
161
|
-
});
|
|
162
|
-
const contentManager = new ContentManager({
|
|
163
|
-
searchEngine,
|
|
164
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
165
|
-
});
|
|
166
|
-
// Parse arguments
|
|
167
|
-
const options = parseArgs(args, [
|
|
168
|
-
{ name: 'source', type: 'string', default: 'all' },
|
|
169
|
-
]);
|
|
170
|
-
// Get stats
|
|
171
|
-
const stats = contentManager.getContentStats();
|
|
172
|
-
console.log(`\nContent Statistics:`);
|
|
173
|
-
console.log(` User files: ${stats.userFiles}`);
|
|
174
|
-
console.log(` Context7 files: ${stats.context7Files}`);
|
|
175
|
-
console.log(` Total: ${stats.totalFiles}\n`);
|
|
176
|
-
// List content
|
|
177
|
-
const sourceFilter = options.source === 'all' ? undefined : options.source;
|
|
178
|
-
const contentList = contentManager.listContent(sourceFilter);
|
|
179
|
-
if (contentList.length === 0) {
|
|
180
|
-
console.log('No content found.');
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
console.log(`${'Title'.padEnd(40)} ${'Source'.padEnd(10)} ${'Size'.padEnd(10)} ${'Modified'.padEnd(20)}`);
|
|
184
|
-
console.log('-'.repeat(80));
|
|
185
|
-
contentList.forEach((item) => {
|
|
186
|
-
console.log(`${item.title.padEnd(40)} ${item.source.padEnd(10)} ${String(item.size).padEnd(10)} ${item.modified.toLocaleString().padEnd(20)}`);
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
function parseArgs(args, definitions) {
|
|
190
|
-
const result = {};
|
|
191
|
-
for (let i = 0; i < args.length; i++) {
|
|
192
|
-
const arg = args[i];
|
|
193
|
-
if (arg.startsWith('--')) {
|
|
194
|
-
const key = arg.slice(2);
|
|
195
|
-
const def = definitions.find(d => d.name === key || d.alias === key);
|
|
196
|
-
if (def) {
|
|
197
|
-
if (def.type === 'boolean') {
|
|
198
|
-
result[key] = true;
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
result[key] = args[++i];
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
else if (arg.startsWith('-')) {
|
|
206
|
-
const key = arg.slice(1);
|
|
207
|
-
const def = definitions.find(d => d.alias === key);
|
|
208
|
-
if (def) {
|
|
209
|
-
if (def.type === 'boolean') {
|
|
210
|
-
result[def.name] = true;
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
result[def.name] = args[++i];
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return result;
|
|
219
36
|
}
|
|
220
37
|
//# sourceMappingURL=runScript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runScript.js","sourceRoot":"","sources":["../../src/core/runScript.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runScript.js","sourceRoot":"","sources":["../../src/core/runScript.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAIxD,MAAM,QAAQ,GAAoC;IAChD,cAAc,EAAE,aAAa;IAC7B,GAAG,EAAE,UAAU;IACf,WAAW,EAAE,UAAU;IACvB,mBAAmB,EAAE,gBAAgB;IACrC,IAAI,EAAE,IAAI;IACV,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,WAAW;CAC5B,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,IAAc;IAC5D,wBAAwB;IACxB,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAE7C,mBAAmB;IACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Engine Adapter Interface
|
|
3
|
+
* Provides a unified interface for different search implementations
|
|
4
|
+
*/
|
|
5
|
+
export interface SearchResult {
|
|
6
|
+
id: string;
|
|
7
|
+
title: string;
|
|
8
|
+
content: string;
|
|
9
|
+
source: 'user' | 'context7';
|
|
10
|
+
file_path: string;
|
|
11
|
+
score: number;
|
|
12
|
+
metadata: any;
|
|
13
|
+
}
|
|
14
|
+
export interface SearchOptions {
|
|
15
|
+
topK?: number;
|
|
16
|
+
where?: Record<string, any>;
|
|
17
|
+
fuzzyThreshold?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface SearchEngine {
|
|
20
|
+
/**
|
|
21
|
+
* Build search index from files
|
|
22
|
+
*/
|
|
23
|
+
buildIndex(referencesDir: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Search for documents matching the query
|
|
26
|
+
*/
|
|
27
|
+
search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Check if the search index is built and ready
|
|
30
|
+
*/
|
|
31
|
+
isBuilt(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Get search engine statistics
|
|
34
|
+
*/
|
|
35
|
+
getStats(): any;
|
|
36
|
+
/**
|
|
37
|
+
* Clear the search index
|
|
38
|
+
*/
|
|
39
|
+
clearIndex(): void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Simple fuzzy search function for testing
|
|
43
|
+
* Should return array of indices, not undefined values
|
|
44
|
+
*/
|
|
45
|
+
export interface FuzzySearchFunction {
|
|
46
|
+
(haystack: string[], needle: string): number[];
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=searchAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchAdapter.d.ts","sourceRoot":"","sources":["../../src/core/searchAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,GAAG,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAEvE;;OAEG;IACH,OAAO,IAAI,OAAO,CAAA;IAElB;;OAEG;IACH,QAAQ,IAAI,GAAG,CAAA;IAEf;;OAEG;IACH,UAAU,IAAI,IAAI,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchAdapter.js","sourceRoot":"","sources":["../../src/core/searchAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Engine Factory
|
|
3
|
+
* Provides a simple way to create appropriate search engines based on options
|
|
4
|
+
*/
|
|
5
|
+
import type { SearchEngine } from './searchAdapter.js';
|
|
6
|
+
import type { SkillConfig } from '../types/index.js';
|
|
7
|
+
export interface SearchEngineOptions {
|
|
8
|
+
/** Search mode: auto, fuzzy, or chroma */
|
|
9
|
+
mode?: 'auto' | 'fuzzy' | 'chroma';
|
|
10
|
+
/** Skill directory for file operations */
|
|
11
|
+
skillDir?: string;
|
|
12
|
+
/** References directory containing documentation */
|
|
13
|
+
referencesDir?: string;
|
|
14
|
+
/** Skill configuration */
|
|
15
|
+
config?: SkillConfig;
|
|
16
|
+
/** Additional options for adapters */
|
|
17
|
+
adapterOptions?: {
|
|
18
|
+
/** Enable ChromaDB fallback on failure */
|
|
19
|
+
enableChromaFallback?: boolean;
|
|
20
|
+
/** ChromaDB startup timeout */
|
|
21
|
+
chromaStartupTimeout?: number;
|
|
22
|
+
/** Auto search quality threshold */
|
|
23
|
+
qualityThreshold?: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build and return appropriate search engine based on options
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildSearchEngine(options?: SearchEngineOptions): Promise<SearchEngine>;
|
|
30
|
+
//# sourceMappingURL=searchEngineFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchEngineFactory.d.ts","sourceRoot":"","sources":["../../src/core/searchEngineFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,sCAAsC;IACtC,cAAc,CAAC,EAAE;QACf,0CAA0C;QAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAA;QAC9B,+BAA+B;QAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,oCAAoC;QACpC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAC1B,CAAA;CACF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,CAmChG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Engine Factory
|
|
3
|
+
* Provides a simple way to create appropriate search engines based on options
|
|
4
|
+
*/
|
|
5
|
+
import { AutoSearchAdapter } from './autoSearchAdapter.js';
|
|
6
|
+
import { FuzzySearchAdapter } from './fuzzySearchAdapter.js';
|
|
7
|
+
import { ChromaSearchAdapter } from './chromaSearchAdapter.js';
|
|
8
|
+
/**
|
|
9
|
+
* Build and return appropriate search engine based on options
|
|
10
|
+
*/
|
|
11
|
+
export async function buildSearchEngine(options = {}) {
|
|
12
|
+
const { mode = 'auto', skillDir = '', referencesDir = '', config, adapterOptions = {} } = options;
|
|
13
|
+
switch (mode) {
|
|
14
|
+
case 'auto':
|
|
15
|
+
if (!config) {
|
|
16
|
+
throw new Error('Config is required for auto mode');
|
|
17
|
+
}
|
|
18
|
+
return new AutoSearchAdapter({
|
|
19
|
+
skillDir,
|
|
20
|
+
collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
|
|
21
|
+
enableChromaFallback: adapterOptions.enableChromaFallback ?? true,
|
|
22
|
+
chromaStartupTimeout: adapterOptions.chromaStartupTimeout ?? 15000,
|
|
23
|
+
qualityThreshold: adapterOptions.qualityThreshold ?? 0.3,
|
|
24
|
+
});
|
|
25
|
+
case 'fuzzy':
|
|
26
|
+
return new FuzzySearchAdapter();
|
|
27
|
+
case 'chroma':
|
|
28
|
+
if (!config) {
|
|
29
|
+
throw new Error('Config is required for chroma mode');
|
|
30
|
+
}
|
|
31
|
+
return new ChromaSearchAdapter({
|
|
32
|
+
skillDir,
|
|
33
|
+
collectionName: `${config.name.replace(/[^a-zA-Z0-9._-]/g, '_')}_docs`,
|
|
34
|
+
startupTimeout: adapterOptions.chromaStartupTimeout ?? 15000,
|
|
35
|
+
enableFallback: adapterOptions.enableChromaFallback ?? true,
|
|
36
|
+
});
|
|
37
|
+
default:
|
|
38
|
+
throw new Error(`Invalid search mode: ${mode}. Use 'auto', 'fuzzy', or 'chroma'.`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=searchEngineFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchEngineFactory.js","sourceRoot":"","sources":["../../src/core/searchEngineFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAuB9D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAA+B,EAAE;IACvE,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;IAEjG,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;YACrD,CAAC;YAED,OAAO,IAAI,iBAAiB,CAAC;gBAC3B,QAAQ;gBACR,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO;gBACtE,oBAAoB,EAAE,cAAc,CAAC,oBAAoB,IAAI,IAAI;gBACjE,oBAAoB,EAAE,cAAc,CAAC,oBAAoB,IAAI,KAAK;gBAClE,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,IAAI,GAAG;aACzD,CAAC,CAAA;QAEJ,KAAK,OAAO;YACV,OAAO,IAAI,kBAAkB,EAAE,CAAA;QAEjC,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,OAAO,IAAI,mBAAmB,CAAC;gBAC7B,QAAQ;gBACR,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO;gBACtE,cAAc,EAAE,cAAc,CAAC,oBAAoB,IAAI,KAAK;gBAC5D,cAAc,EAAE,cAAc,CAAC,oBAAoB,IAAI,IAAI;aAC5D,CAAC,CAAA;QAEJ;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,qCAAqC,CAAC,CAAA;IACtF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简化的本地搜索引擎
|
|
3
|
+
* 模拟 ChromaDB 的本地存储功能,但完全基于文件系统
|
|
4
|
+
* 专为 skill-creator 的嵌入式架构设计
|
|
5
|
+
*/
|
|
6
|
+
import type { SearchResult } from './searchAdapter.js';
|
|
7
|
+
export interface SimpleLocalOptions {
|
|
8
|
+
dbPath: string;
|
|
9
|
+
collectionName: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class SimpleLocalSearchEngine {
|
|
12
|
+
private options;
|
|
13
|
+
private embeddingFunction;
|
|
14
|
+
private collectionData;
|
|
15
|
+
private dataFile;
|
|
16
|
+
constructor(options: SimpleLocalOptions);
|
|
17
|
+
private ensureDirectory;
|
|
18
|
+
private loadCollection;
|
|
19
|
+
private saveCollection;
|
|
20
|
+
private initialize;
|
|
21
|
+
buildIndex(referencesDir: string, hashFile: string): Promise<void>;
|
|
22
|
+
search(query: string, topK?: number, where?: Record<string, unknown>): Promise<SearchResult[]>;
|
|
23
|
+
searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
|
|
24
|
+
getStats(): Promise<{
|
|
25
|
+
totalDocuments: number;
|
|
26
|
+
}>;
|
|
27
|
+
private calculateDirectoryHash;
|
|
28
|
+
private loadDocumentsFromDirectory;
|
|
29
|
+
/**
|
|
30
|
+
* 递归获取目录中的所有文件
|
|
31
|
+
*/
|
|
32
|
+
private getAllFiles;
|
|
33
|
+
/**
|
|
34
|
+
* 从内容中提取标题
|
|
35
|
+
*/
|
|
36
|
+
private extractTitleFromContent;
|
|
37
|
+
/**
|
|
38
|
+
* 从文件路径生成标题
|
|
39
|
+
*/
|
|
40
|
+
private generateTitleFromPath;
|
|
41
|
+
/**
|
|
42
|
+
* 生成文档ID
|
|
43
|
+
*/
|
|
44
|
+
private generateDocumentId;
|
|
45
|
+
/**
|
|
46
|
+
* 创建示例文档(回退方案)
|
|
47
|
+
*/
|
|
48
|
+
private createSampleDocuments;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=simpleLocalSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleLocalSearch.d.ts","sourceRoot":"","sources":["../../src/core/simpleLocalSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAA;AAKrE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;CACvB;AAqED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,OAAO,EAAE,kBAAkB;YAMzB,eAAe;YAQf,cAAc;YAad,cAAc;YAMd,UAAU;IAclB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DlE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAU,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;IA0DpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1E,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;YAiBvC,sBAAsB;YAMtB,0BAA0B;IA+FxC;;OAEG;YACW,WAAW;IA4BzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;YACW,qBAAqB;CA6CpC"}
|